Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c726cd5af8 | |||
| 8d60911b34 | |||
| 217ea3e9d4 | |||
| 8263a4fe73 | |||
| 340582e042 | |||
| a8e07f9682 | |||
| aa37652b6d | |||
| 7e26cd39d7 |
27
changelog.md
27
changelog.md
@@ -1,5 +1,32 @@
|
||||
# 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
|
||||
|
||||
|
||||
12
package.json
12
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@design.estate/dees-element",
|
||||
"version": "2.0.45",
|
||||
"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,13 +10,13 @@
|
||||
"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.6.4",
|
||||
"@git.zone/tsbundle": "^2.4.0",
|
||||
"@git.zone/tstest": "^2.3.1",
|
||||
"@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"
|
||||
},
|
||||
@@ -24,7 +24,7 @@
|
||||
"@design.estate/dees-domtools": "^2.3.3",
|
||||
"@push.rocks/isounique": "^1.0.5",
|
||||
"@push.rocks/smartrx": "^3.0.10",
|
||||
"lit": "^3.3.0"
|
||||
"lit": "^3.3.1"
|
||||
},
|
||||
"browserslist": [
|
||||
"last 1 chrome versions"
|
||||
|
||||
3849
pnpm-lock.yaml
generated
3849
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.44',
|
||||
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) {
|
||||
|
||||
@@ -26,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