Compare commits

..

14 Commits

Author SHA1 Message Date
63c9ae97d4 1.0.74 2020-11-25 15:42:56 +00:00
a83239e0d9 fix(core): update 2020-11-25 15:42:55 +00:00
8da64f1b50 1.0.73 2020-11-25 15:14:48 +00:00
2d4c0e4e49 fix(core): update 2020-11-25 15:14:48 +00:00
1c8f7fa59e 1.0.72 2020-11-25 14:56:09 +00:00
a613c0aca2 fix(core): update 2020-11-25 14:56:08 +00:00
127564cd71 1.0.71 2020-11-25 14:43:23 +00:00
e077bf5b25 fix(core): update 2020-11-25 14:43:23 +00:00
64a3f57813 1.0.70 2020-11-24 20:57:42 +00:00
1315e8c3f6 fix(core): update 2020-11-24 20:57:41 +00:00
d059862841 1.0.69 2020-11-24 19:48:14 +00:00
ad34affb9e fix(core): update 2020-11-24 19:48:14 +00:00
011b3fb76a 1.0.68 2020-11-24 19:23:07 +00:00
47099d02b5 fix(core): update 2020-11-24 19:23:06 +00:00
5 changed files with 39 additions and 22 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "@designestate/dees-domtools",
"version": "1.0.67",
"version": "1.0.74",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "@designestate/dees-domtools",
"version": "1.0.67",
"version": "1.0.74",
"private": false,
"description": "tools to simplify complex css structures",
"main": "dist_ts/index.js",

View File

@ -5,23 +5,20 @@ export class ElementInstrumenter {
connectedElements = new plugins.lik.ObjectMap<LitElement>();
public instrumentElement(elementArg: LitElement) {
const originalConnectedCallback = elementArg.connectedCallback;
const originalDisconnectedCallback = elementArg.disconnectedCallback;
if (!elementArg.parentElement) {
elementArg.connectedCallback = () => {
const addToConnectedElementsFunc = (eventArg: CustomEvent) => {
this.connectedElements.add(elementArg);
originalConnectedCallback.apply(elementArg);
};
} else {
const removeFromConnectedElementsFunc = eventArg => {
this.connectedElements.remove(elementArg);
elementArg.removeEventListener('domtools-connected', addToConnectedElementsFunc);
elementArg.removeEventListener('domtools-disconnected', removeFromConnectedElementsFunc);
};
elementArg.addEventListener('domtools-connected', addToConnectedElementsFunc);
elementArg.addEventListener('domtools-disconnected', removeFromConnectedElementsFunc);
if (elementArg.parentElement) {
this.connectedElements.add(elementArg);
}
elementArg.disconnectedCallback = () => {
this.connectedElements.remove(elementArg);
originalDisconnectedCallback.apply(elementArg);
};
}
public async forEachelement(eachFuncArg: (elementArg: LitElement) => Promise<void>) {

View File

@ -5,13 +5,23 @@ import * as plugins from './domtools.plugins';
export class ThemeManager {
public domtoolsRef: DomTools;
goBrightBoolean = false;
public goBrightBoolean = false;
public preferredColorSchemeMediaMatch = window.matchMedia('(prefers-color-scheme: light)');
constructor(domtoolsRefArg: DomTools) {
this.domtoolsRef = domtoolsRefArg;
// lets take care of elements being added that need to know of the current theme
this.domtoolsRef.elementInstrumenter.connectedElements.eventSubject.subscribe(async eventData => {
await this.setThemeStatusForElement(eventData.payload, this.goBrightBoolean);
});
// lets care
this.goBrightBoolean = this.preferredColorSchemeMediaMatch.matches;
this.preferredColorSchemeMediaMatch.addEventListener('change', eventArg => {
this.goBrightBoolean = eventArg.matches;
this.updateAllConnectedElements();
});
}
private async setThemeStatusForElement (elementArg: LitElement, goBrightBool: boolean) {
@ -21,15 +31,24 @@ export class ThemeManager {
}
}
public goBright() {
private async updateAllConnectedElements() {
this.domtoolsRef.elementInstrumenter.forEachelement(async elementArg => {
await this.setThemeStatusForElement(elementArg, true);
await this.setThemeStatusForElement(elementArg, this.goBrightBoolean);
});
}
public goBright() {
this.goBrightBoolean = true;
this.updateAllConnectedElements();
}
public goDark() {
this.domtoolsRef.elementInstrumenter.forEachelement(async elementArg => {
await this.setThemeStatusForElement(elementArg, false);
});
this.goBrightBoolean = false;
this.updateAllConnectedElements();
}
public toggleDarkBright() {
this.goBrightBoolean = !this.goBrightBoolean;
this.updateAllConnectedElements();
}
}

View File

@ -10,6 +10,7 @@ import { html, LitElement } from 'lit-element';
export const styles = html`
<style>
* {
transition: background 0.1s, color 0.1s;
font-family: 'Roboto', sans-serif;
box-sizing: border-box;
}