Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c726cd5af8 | |||
| 8d60911b34 | |||
| 217ea3e9d4 | |||
| 8263a4fe73 | |||
| 340582e042 | |||
| a8e07f9682 | |||
| aa37652b6d | |||
| 7e26cd39d7 | |||
| 05cc971c0b | |||
| 8d39592d23 | |||
| 0d6f9b7f19 | |||
| 8fc1a4ae5d | |||
| 82d672abc2 | |||
| 387b415de9 |
128
.gitlab-ci.yml
128
.gitlab-ci.yml
@@ -1,128 +0,0 @@
|
||||
# gitzone ci_default
|
||||
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
|
||||
cache:
|
||||
paths:
|
||||
- .npmci_cache/
|
||||
key: '$CI_BUILD_STAGE'
|
||||
|
||||
stages:
|
||||
- security
|
||||
- test
|
||||
- release
|
||||
- metadata
|
||||
|
||||
before_script:
|
||||
- pnpm install -g pnpm
|
||||
- pnpm install -g @shipzone/npmci
|
||||
- npmci npm prepare
|
||||
|
||||
# ====================
|
||||
# security stage
|
||||
# ====================
|
||||
# ====================
|
||||
# security stage
|
||||
# ====================
|
||||
auditProductionDependencies:
|
||||
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
stage: security
|
||||
script:
|
||||
- npmci command npm config set registry https://registry.npmjs.org
|
||||
- npmci command pnpm audit --audit-level=high --prod
|
||||
tags:
|
||||
- lossless
|
||||
- docker
|
||||
allow_failure: true
|
||||
|
||||
auditDevDependencies:
|
||||
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
stage: security
|
||||
script:
|
||||
- npmci command npm config set registry https://registry.npmjs.org
|
||||
- npmci command pnpm audit --audit-level=high --dev
|
||||
tags:
|
||||
- lossless
|
||||
- docker
|
||||
allow_failure: true
|
||||
|
||||
# ====================
|
||||
# test stage
|
||||
# ====================
|
||||
|
||||
testStable:
|
||||
stage: test
|
||||
script:
|
||||
- npmci node install stable
|
||||
- npmci npm install
|
||||
- npmci npm test
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
|
||||
testBuild:
|
||||
stage: test
|
||||
script:
|
||||
- npmci node install stable
|
||||
- npmci npm install
|
||||
- npmci npm build
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
|
||||
release:
|
||||
stage: release
|
||||
script:
|
||||
- npmci node install stable
|
||||
- npmci npm publish
|
||||
only:
|
||||
- tags
|
||||
tags:
|
||||
- lossless
|
||||
- docker
|
||||
- notpriv
|
||||
|
||||
# ====================
|
||||
# metadata stage
|
||||
# ====================
|
||||
codequality:
|
||||
stage: metadata
|
||||
allow_failure: true
|
||||
only:
|
||||
- tags
|
||||
script:
|
||||
- npmci command npm install -g typescript
|
||||
- npmci npm prepare
|
||||
- npmci npm install
|
||||
tags:
|
||||
- lossless
|
||||
- docker
|
||||
- priv
|
||||
|
||||
trigger:
|
||||
stage: metadata
|
||||
script:
|
||||
- npmci trigger
|
||||
only:
|
||||
- tags
|
||||
tags:
|
||||
- lossless
|
||||
- docker
|
||||
- notpriv
|
||||
|
||||
pages:
|
||||
stage: metadata
|
||||
script:
|
||||
- npmci node install stable
|
||||
- npmci npm install
|
||||
- npmci command npm run buildDocs
|
||||
tags:
|
||||
- lossless
|
||||
- docker
|
||||
- notpriv
|
||||
only:
|
||||
- tags
|
||||
artifacts:
|
||||
expire_in: 1 week
|
||||
paths:
|
||||
- public
|
||||
allow_failure: true
|
||||
42
changelog.md
42
changelog.md
@@ -1,5 +1,47 @@
|
||||
# Changelog
|
||||
|
||||
## 2025-11-16 - 2.1.3 - fix(CssManager)
|
||||
Make CssManager a singleton and export the shared instance via getSingleton; update tests and dependencies
|
||||
|
||||
- Convert CssManager to a singleton by adding a private static instance and a public static getSingleton() method.
|
||||
- Use CssManager.getSingleton() for the exported cssManager in ts/index.ts to ensure a single shared instance across the app.
|
||||
- Add a Chromium-focused test (test.chromium.ts) and remove the browser-specific test file.
|
||||
- Bump devDependencies (@git.zone/tsbuild, @git.zone/tsbundle, @git.zone/tstest) and update lit to ^3.3.1.
|
||||
- Add readme.hints.md documenting the CssManager singleton pattern and supported access patterns.
|
||||
|
||||
## 2025-07-06 - 2.1.2 - fix(build)
|
||||
Update build script in package.json to include 'tsfolders' in tsbuild command
|
||||
|
||||
- Changed build script from 'tsbuild --web --allowimplicitany && tsbundle npm' to 'tsbuild tsfolders --web --allowimplicitany && tsbundle npm'
|
||||
|
||||
## 2025-07-06 - 2.1.1 - fix(documentation)
|
||||
Refine project documentation and metadata for clarity
|
||||
|
||||
- Update readme examples to better illustrate custom element usage
|
||||
- Clarify CssManager theming and API usage in documentation
|
||||
- Ensure package.json and commitinfo reflect accurate project details
|
||||
|
||||
## 2025-07-06 - 2.1.0 - feat(DeesElement)
|
||||
Add invocation of the themeChanged hook in connectedCallback
|
||||
|
||||
- Now calls themeChanged (if defined) when the theme changes, enabling custom handlers for theme switches
|
||||
- Improves lifecycle management by allowing extensions to react to bright/dark mode changes
|
||||
|
||||
## 2025-06-20 - 2.0.44 - fix(ci)
|
||||
Remove obsolete GitLab CI configuration
|
||||
|
||||
- Deleted the .gitlab-ci.yml file to remove outdated CI configuration from the repository.
|
||||
|
||||
## 2025-06-20 - 2.0.43 - fix(dependencies)
|
||||
Bump build and runtime dependencies to newer versions for improved tooling and compatibility.
|
||||
|
||||
- Bumped @git.zone/tsbuild from ^2.3.2 to ^2.6.4
|
||||
- Bumped @git.zone/tsbundle from ^2.2.5 to ^2.4.0
|
||||
- Bumped @git.zone/tstest from ^1.0.96 to ^2.3.1
|
||||
- Bumped @push.rocks/tapbundle from ^5.6.3 to ^6.0.3
|
||||
- Bumped @design.estate/dees-domtools from ^2.3.2 to ^2.3.3
|
||||
- Bumped @push.rocks/smartrx from ^3.0.7 to ^3.0.10
|
||||
|
||||
## 2025-04-18 - 2.0.42 - fix(directives)
|
||||
Add explicit type annotations to subscribeWithTemplate directive export
|
||||
|
||||
|
||||
18
package.json
18
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@design.estate/dees-element",
|
||||
"version": "2.0.42",
|
||||
"version": "2.1.3",
|
||||
"private": false,
|
||||
"description": "A library for creating custom elements extending the lit element class with additional functionalities.",
|
||||
"main": "dist_ts/index.js",
|
||||
@@ -10,21 +10,21 @@
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"test": "(tstest test/ --web)",
|
||||
"build": "(tsbuild --web --allowimplicitany && tsbundle npm)",
|
||||
"build": "(tsbuild tsfolders --web --allowimplicitany && tsbundle npm)",
|
||||
"buildDocs": "tsdoc"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@git.zone/tsbuild": "^2.3.2",
|
||||
"@git.zone/tsbundle": "^2.2.5",
|
||||
"@git.zone/tstest": "^1.0.96",
|
||||
"@push.rocks/tapbundle": "^5.6.3",
|
||||
"@git.zone/tsbuild": "^2.7.1",
|
||||
"@git.zone/tsbundle": "^2.5.1",
|
||||
"@git.zone/tstest": "^2.7.0",
|
||||
"@push.rocks/tapbundle": "^6.0.3",
|
||||
"@types/node": "^22.14.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@design.estate/dees-domtools": "^2.3.2",
|
||||
"@design.estate/dees-domtools": "^2.3.3",
|
||||
"@push.rocks/isounique": "^1.0.5",
|
||||
"@push.rocks/smartrx": "^3.0.7",
|
||||
"lit": "^3.3.0"
|
||||
"@push.rocks/smartrx": "^3.0.10",
|
||||
"lit": "^3.3.1"
|
||||
},
|
||||
"browserslist": [
|
||||
"last 1 chrome versions"
|
||||
|
||||
5898
pnpm-lock.yaml
generated
5898
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -1 +1,15 @@
|
||||
|
||||
# Project Hints
|
||||
|
||||
## CssManager Singleton Pattern
|
||||
|
||||
**Location:** `ts/classes.cssmanager.ts`
|
||||
|
||||
The `CssManager` class uses a singleton pattern:
|
||||
- **Static method:** `CssManager.getSingleton()` - Returns the singleton instance
|
||||
- **Exported instance:** `cssManager` (from `ts/index.ts`) - Uses `getSingleton()` internally
|
||||
|
||||
Both access patterns are supported for backward compatibility:
|
||||
- `cssManager.method()` - Legacy pattern (still works)
|
||||
- `CssManager.getSingleton().method()` - Preferred pattern
|
||||
|
||||
The singleton ensures only one instance manages CSS variables and theme changes throughout the application.
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@design.estate/dees-element',
|
||||
version: '2.0.42',
|
||||
version: '2.1.3',
|
||||
description: 'A library for creating custom elements extending the lit element class with additional functionalities.'
|
||||
}
|
||||
|
||||
@@ -9,6 +9,21 @@ export interface IBdVarTriplet {
|
||||
}
|
||||
|
||||
export class CssManager {
|
||||
// STATIC
|
||||
private static instance: CssManager | null = null;
|
||||
|
||||
/**
|
||||
* Returns the singleton instance of CssManager
|
||||
*/
|
||||
public static getSingleton(): CssManager {
|
||||
if (!CssManager.instance) {
|
||||
CssManager.instance = new CssManager();
|
||||
}
|
||||
return CssManager.instance;
|
||||
}
|
||||
|
||||
|
||||
// INSTANCE
|
||||
public domtoolsPromise = domtools.DomTools.setupDomTools();
|
||||
public goBright: boolean = false;
|
||||
public bdVarTripletStore: IBdVarTriplet[] = [];
|
||||
|
||||
@@ -25,11 +25,22 @@ export class DeesElement extends plugins.lit.LitElement {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the theme changes between bright and dark.
|
||||
* Override this method to handle theme changes.
|
||||
* @param goBright - true if switching to bright theme, false if switching to dark theme
|
||||
*/
|
||||
protected themeChanged?(goBright: boolean): void;
|
||||
|
||||
public async connectedCallback() {
|
||||
super.connectedCallback();
|
||||
const domtools = await this.domtoolsPromise;
|
||||
this.themeSubscription = domtools.themeManager.themeObservable.subscribe((goBrightArg) => {
|
||||
this.goBright = goBrightArg;
|
||||
// Call themeChanged if it's defined
|
||||
if (this.themeChanged) {
|
||||
this.themeChanged(goBrightArg);
|
||||
}
|
||||
});
|
||||
this.rxSubscriptions.push(this.themeSubscription);
|
||||
for (const startupFunction of this.startupFunctions) {
|
||||
|
||||
@@ -2,6 +2,9 @@ import { CssManager } from './classes.cssmanager.js';
|
||||
|
||||
// lit exports
|
||||
export { html, type TemplateResult, css, unsafeCSS, render, type CSSResult } from 'lit';
|
||||
|
||||
export { html as static, unsafeStatic } from 'lit/static-html.js';
|
||||
|
||||
export { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
||||
|
||||
export { customElement } from 'lit/decorators/custom-element.js';
|
||||
@@ -23,7 +26,7 @@ export { directives };
|
||||
/**
|
||||
* a singleton instance of CssManager
|
||||
*/
|
||||
export const cssManager = new CssManager();
|
||||
export const cssManager = CssManager.getSingleton();
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user