@cedx/base 0.24.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ReadMe.md +1 -1
- package/lib/UI/Components/LoadingIndicator.d.ts.map +1 -1
- package/lib/UI/Components/LoadingIndicator.js +0 -2
- package/lib/UI/Components/TabActivator.d.ts +4 -0
- package/lib/UI/Components/TabActivator.d.ts.map +1 -1
- package/lib/UI/Components/TabActivator.js +10 -7
- package/lib/UI/Components/ThemeDropdown.d.ts.map +1 -1
- package/lib/UI/Components/ThemeDropdown.js +2 -2
- package/lib/UI/Components/Toast.d.ts.map +1 -1
- package/lib/UI/Components/Toast.js +16 -5
- package/lib/UI/Components/Toaster.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/Client/UI/Components/LoadingIndicator.ts +0 -2
- package/src/Client/UI/Components/TabActivator.ts +11 -6
- package/src/Client/UI/Components/ThemeDropdown.ts +4 -3
- package/src/Client/UI/Components/Toast.ts +21 -5
- package/src/Client/UI/Components/Toaster.ts +3 -2
package/ReadMe.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Cédric Belin's Base
|
|
2
|
-
   
|
|
3
3
|
|
|
4
4
|
Base library by [Cédric Belin](https://cedric-belin.fr), full stack developer,
|
|
5
5
|
implemented in [C#](https://learn.microsoft.com/en-us/dotnet/csharp) and [TypeScript](https://www.typescriptlang.org).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingIndicator.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/LoadingIndicator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;;IAEhD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAAY;IAc9C;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAO/F;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;;OAGG;IACH,IAAI,CAAC,OAAO,GAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"LoadingIndicator.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/LoadingIndicator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;;IAEhD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAAY;IAc9C;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAO/F;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;;OAGG;IACH,IAAI,CAAC,OAAO,GAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,IAAI;IAS3C;;OAEG;IACH,IAAI,IAAI,IAAI;CAaZ;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,gBAAgB,CAAC;KACtC;CACD"}
|
|
@@ -66,7 +66,6 @@ export class LoadingIndicator extends HTMLElement {
|
|
|
66
66
|
this.#requestCount = 0;
|
|
67
67
|
this.classList.add("hide");
|
|
68
68
|
this.classList.remove("show");
|
|
69
|
-
document.body.classList.remove("loading");
|
|
70
69
|
}
|
|
71
70
|
}
|
|
72
71
|
/**
|
|
@@ -76,7 +75,6 @@ export class LoadingIndicator extends HTMLElement {
|
|
|
76
75
|
this.#requestCount++;
|
|
77
76
|
this.classList.remove("hide");
|
|
78
77
|
this.classList.add("show");
|
|
79
|
-
document.body.classList.add("loading");
|
|
80
78
|
}
|
|
81
79
|
/**
|
|
82
80
|
* Updates the value indicating whether to apply a transition.
|
|
@@ -3,6 +3,10 @@ import { StorageArea } from "../StorageArea.js";
|
|
|
3
3
|
* A component that activates a tab, based on its index saved in the web storage.
|
|
4
4
|
*/
|
|
5
5
|
export declare class TabActivator extends HTMLElement {
|
|
6
|
+
/**
|
|
7
|
+
* Creates a new tab activator.
|
|
8
|
+
*/
|
|
9
|
+
constructor();
|
|
6
10
|
/**
|
|
7
11
|
* The index of the active tab.
|
|
8
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabActivator.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/TabActivator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C;;GAEG;AACH,qBAAa,YAAa,SAAQ,WAAW;
|
|
1
|
+
{"version":3,"file":"TabActivator.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/TabActivator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C;;GAEG;AACH,qBAAa,YAAa,SAAQ,WAAW;IAE5C;;OAEG;;IAeH;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAG3B;IACD,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,EAE/B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,UAAU,CAAC,OAAO,CAEhC;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,WAAW,CAG7B;IACD,IAAI,WAAW,CAAC,KAAK,EAAE,WAAW,EAEjC;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAGvB;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,CAElC;IAED;;OAEG;IACH,iBAAiB,IAAI,IAAI;CAGzB;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,eAAe,EAAE,YAAY,CAAC;KAC9B;CACD"}
|
|
@@ -4,6 +4,15 @@ import { StorageArea } from "../StorageArea.js";
|
|
|
4
4
|
* A component that activates a tab, based on its index saved in the web storage.
|
|
5
5
|
*/
|
|
6
6
|
export class TabActivator extends HTMLElement {
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new tab activator.
|
|
9
|
+
*/
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
12
|
+
const { tabs } = this;
|
|
13
|
+
for (let index = 0; index < tabs.length; index++)
|
|
14
|
+
tabs.item(index).addEventListener("show.bs.tab", () => this.activeTabIndex = index);
|
|
15
|
+
}
|
|
7
16
|
/**
|
|
8
17
|
* Registers the component.
|
|
9
18
|
*/
|
|
@@ -56,12 +65,6 @@ export class TabActivator extends HTMLElement {
|
|
|
56
65
|
* Method invoked when this component is connected.
|
|
57
66
|
*/
|
|
58
67
|
connectedCallback() {
|
|
59
|
-
|
|
60
|
-
for (let index = 0; index < tabs.length; index++) {
|
|
61
|
-
const tab = tabs.item(index);
|
|
62
|
-
tab.addEventListener("click", () => this.activeTabIndex = index);
|
|
63
|
-
if (index == activeTabIndex)
|
|
64
|
-
Tab.getOrCreateInstance(tab).show();
|
|
65
|
-
}
|
|
68
|
+
Tab.getOrCreateInstance(this.tabs.item(this.activeTabIndex)).show();
|
|
66
69
|
}
|
|
67
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeDropdown.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/ThemeDropdown.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,QAAQ,EAAU,MAAM,gBAAgB,CAAC;AAEjD;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAW;;IAE7C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAAsC;IAYxE;;OAEG;;
|
|
1
|
+
{"version":3,"file":"ThemeDropdown.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/ThemeDropdown.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,QAAQ,EAAU,MAAM,gBAAgB,CAAC;AAEjD;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAW;;IAE7C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAAsC;IAYxE;;OAEG;;IAcH;;OAEG;IACH,IAAI,SAAS,IAAI,SAAS,CAGzB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,EAE7B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAGvB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAE3B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAGvB;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAS/F;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAQzB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAK5B;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,IAAI,IAAI,IAAI;CAgDZ;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,gBAAgB,EAAE,aAAa,CAAC;KAChC;CACD"}
|
|
@@ -141,7 +141,7 @@ export class ThemeDropdown extends HTMLElement {
|
|
|
141
141
|
*/
|
|
142
142
|
#setAppTheme(event) {
|
|
143
143
|
event.preventDefault();
|
|
144
|
-
this.appTheme = event.currentTarget.
|
|
144
|
+
this.appTheme = event.currentTarget.value;
|
|
145
145
|
this.save();
|
|
146
146
|
}
|
|
147
147
|
/**
|
|
@@ -157,7 +157,7 @@ export class ThemeDropdown extends HTMLElement {
|
|
|
157
157
|
*/
|
|
158
158
|
#updateAppTheme(value) {
|
|
159
159
|
this.querySelector(".dropdown-toggle > .icon").textContent = getIcon(value);
|
|
160
|
-
this.querySelector(
|
|
160
|
+
this.querySelector(`.dropdown-menu button[value="${value}"]`).appendChild(this.querySelector(".dropdown-item > .icon"));
|
|
161
161
|
this.#applyToDocument();
|
|
162
162
|
}
|
|
163
163
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/Toast.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAiB,MAAM,eAAe,CAAC;AAEtD;;GAEG;AACH,qBAAa,KAAM,SAAQ,WAAW;;IAErC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAA0E;IAkC5G;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;IAED;;OAEG;IACH,IAAI,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAE/B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAExB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAGrB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAGzB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAE7B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAC,IAAI,CAGtB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAC,IAAI,EAG1B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAa/F;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,iBAAiB,IAAI,IAAI;IASzB;;OAEG;IACH,oBAAoB,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/Toast.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAiB,MAAM,eAAe,CAAC;AAEtD;;GAEG;AACH,qBAAa,KAAM,SAAQ,WAAW;;IAErC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAA0E;IAkC5G;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;IAED;;OAEG;IACH,IAAI,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAE/B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAExB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAGrB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAGzB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAE7B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAC,IAAI,CAGtB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAC,IAAI,EAG1B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAa/F;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,iBAAiB,IAAI,IAAI;IASzB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAS5B;;OAEG;IACH,IAAI,IAAI,IAAI;CAoGZ;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,cAAc,EAAE,KAAK,CAAC;KACtB;CACD"}
|
|
@@ -168,10 +168,10 @@ export class Toast extends HTMLElement {
|
|
|
168
168
|
* Method invoked when this component is connected.
|
|
169
169
|
*/
|
|
170
170
|
connectedCallback() {
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
this.#toast = new BootstrapToast(
|
|
171
|
+
const root = this.firstElementChild;
|
|
172
|
+
root.addEventListener("hide.bs.toast", this.#stopTimer);
|
|
173
|
+
root.addEventListener("show.bs.toast", this.#startTimer);
|
|
174
|
+
this.#toast = new BootstrapToast(root);
|
|
175
175
|
if (this.open)
|
|
176
176
|
this.show();
|
|
177
177
|
}
|
|
@@ -179,7 +179,10 @@ export class Toast extends HTMLElement {
|
|
|
179
179
|
* Method invoked when this component is disconnected.
|
|
180
180
|
*/
|
|
181
181
|
disconnectedCallback() {
|
|
182
|
-
|
|
182
|
+
const root = this.firstElementChild;
|
|
183
|
+
root.removeEventListener("hide.bs.toast", () => this.#stopTimer);
|
|
184
|
+
root.removeEventListener("show.bs.toast", () => this.#startTimer);
|
|
185
|
+
this.#stopTimer();
|
|
183
186
|
this.#toast.dispose();
|
|
184
187
|
}
|
|
185
188
|
/**
|
|
@@ -205,6 +208,14 @@ export class Toast extends HTMLElement {
|
|
|
205
208
|
}
|
|
206
209
|
return this.#formatter.format(Math.ceil(-elapsed), Toast.#timeUnits[index]);
|
|
207
210
|
}
|
|
211
|
+
/**
|
|
212
|
+
* Starts the timer.
|
|
213
|
+
*/
|
|
214
|
+
#startTimer = () => this.#timer = window.setInterval(() => this.#updateElapsedTime(), 1_000);
|
|
215
|
+
/**
|
|
216
|
+
* Stops the timer.
|
|
217
|
+
*/
|
|
218
|
+
#stopTimer = () => clearInterval(this.#timer);
|
|
208
219
|
/**
|
|
209
220
|
* Updates the value indicating whether to automatically hide this toast.
|
|
210
221
|
* @param value The new value.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/Toaster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAQ,MAAM,gBAAgB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,MAAM;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,gBAAgB,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,qBAAa,OAAQ,SAAQ,WAAW;;IAEvC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAAgB;IAOlD;;OAEG;;
|
|
1
|
+
{"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/Toaster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAQ,MAAM,gBAAgB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,MAAM;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,gBAAgB,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,qBAAa,OAAQ,SAAQ,WAAW;;IAEvC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAAgB;IAOlD;;OAEG;;IAcH;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAGrB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAGzB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAE7B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAC,IAAI,CAGtB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAC,IAAI,EAG1B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAGvB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAE3B;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAO/F;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAI1E;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CA4BzB;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,OAAO,CAAC;KAC7B;CACD"}
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"name": "@cedx/base",
|
|
8
8
|
"repository": "cedx/base",
|
|
9
9
|
"type": "module",
|
|
10
|
-
"version": "0.
|
|
10
|
+
"version": "0.26.0",
|
|
11
11
|
"devDependencies": {
|
|
12
12
|
"@playwright/browser-chromium": "^1.55.0",
|
|
13
13
|
"@types/bootstrap": "^5.2.10",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"mocha": "^11.7.1",
|
|
22
22
|
"playwright": "^1.55.0",
|
|
23
23
|
"serve-handler": "^6.1.6",
|
|
24
|
-
"typedoc": "^0.28.
|
|
24
|
+
"typedoc": "^0.28.12",
|
|
25
25
|
"typescript": "^5.9.2",
|
|
26
26
|
"typescript-eslint": "^8.41.0"
|
|
27
27
|
},
|
|
@@ -70,7 +70,6 @@ export class LoadingIndicator extends HTMLElement {
|
|
|
70
70
|
this.#requestCount = 0;
|
|
71
71
|
this.classList.add("hide");
|
|
72
72
|
this.classList.remove("show");
|
|
73
|
-
document.body.classList.remove("loading");
|
|
74
73
|
}
|
|
75
74
|
}
|
|
76
75
|
|
|
@@ -81,7 +80,6 @@ export class LoadingIndicator extends HTMLElement {
|
|
|
81
80
|
this.#requestCount++;
|
|
82
81
|
this.classList.remove("hide");
|
|
83
82
|
this.classList.add("show");
|
|
84
|
-
document.body.classList.add("loading");
|
|
85
83
|
}
|
|
86
84
|
|
|
87
85
|
/**
|
|
@@ -6,6 +6,16 @@ import {StorageArea} from "../StorageArea.js";
|
|
|
6
6
|
*/
|
|
7
7
|
export class TabActivator extends HTMLElement {
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new tab activator.
|
|
11
|
+
*/
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
const {tabs} = this;
|
|
15
|
+
for (let index = 0; index < tabs.length; index++)
|
|
16
|
+
tabs.item(index).addEventListener("show.bs.tab", () => this.activeTabIndex = index);
|
|
17
|
+
}
|
|
18
|
+
|
|
9
19
|
/**
|
|
10
20
|
* Registers the component.
|
|
11
21
|
*/
|
|
@@ -64,12 +74,7 @@ export class TabActivator extends HTMLElement {
|
|
|
64
74
|
* Method invoked when this component is connected.
|
|
65
75
|
*/
|
|
66
76
|
connectedCallback(): void {
|
|
67
|
-
|
|
68
|
-
for (let index = 0; index < tabs.length; index++) {
|
|
69
|
-
const tab = tabs.item(index);
|
|
70
|
-
tab.addEventListener("click", () => this.activeTabIndex = index);
|
|
71
|
-
if (index == activeTabIndex) Tab.getOrCreateInstance(tab).show();
|
|
72
|
-
}
|
|
77
|
+
Tab.getOrCreateInstance(this.tabs.item(this.activeTabIndex)).show();
|
|
73
78
|
}
|
|
74
79
|
}
|
|
75
80
|
|
|
@@ -27,7 +27,8 @@ export class ThemeDropdown extends HTMLElement {
|
|
|
27
27
|
*/
|
|
28
28
|
constructor() {
|
|
29
29
|
super();
|
|
30
|
-
for (const button of this.querySelectorAll(".dropdown-menu button"))
|
|
30
|
+
for (const button of this.querySelectorAll(".dropdown-menu button"))
|
|
31
|
+
button.addEventListener("click", this.#setAppTheme.bind(this));
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
/**
|
|
@@ -151,7 +152,7 @@ export class ThemeDropdown extends HTMLElement {
|
|
|
151
152
|
*/
|
|
152
153
|
#setAppTheme(event: Event): void {
|
|
153
154
|
event.preventDefault();
|
|
154
|
-
this.appTheme = (event.currentTarget as
|
|
155
|
+
this.appTheme = (event.currentTarget as HTMLButtonElement).value as AppTheme;
|
|
155
156
|
this.save();
|
|
156
157
|
}
|
|
157
158
|
|
|
@@ -169,7 +170,7 @@ export class ThemeDropdown extends HTMLElement {
|
|
|
169
170
|
*/
|
|
170
171
|
#updateAppTheme(value: AppTheme): void {
|
|
171
172
|
this.querySelector(".dropdown-toggle > .icon")!.textContent = getIcon(value);
|
|
172
|
-
this.querySelector(
|
|
173
|
+
this.querySelector(`.dropdown-menu button[value="${value}"]`)!.appendChild(this.querySelector(".dropdown-item > .icon")!);
|
|
173
174
|
this.#applyToDocument();
|
|
174
175
|
}
|
|
175
176
|
|
|
@@ -172,11 +172,11 @@ export class Toast extends HTMLElement {
|
|
|
172
172
|
* Method invoked when this component is connected.
|
|
173
173
|
*/
|
|
174
174
|
connectedCallback(): void {
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
175
|
+
const root = this.firstElementChild!;
|
|
176
|
+
root.addEventListener("hide.bs.toast", this.#stopTimer);
|
|
177
|
+
root.addEventListener("show.bs.toast", this.#startTimer);
|
|
178
178
|
|
|
179
|
-
this.#toast = new BootstrapToast(
|
|
179
|
+
this.#toast = new BootstrapToast(root);
|
|
180
180
|
if (this.open) this.show();
|
|
181
181
|
}
|
|
182
182
|
|
|
@@ -184,7 +184,11 @@ export class Toast extends HTMLElement {
|
|
|
184
184
|
* Method invoked when this component is disconnected.
|
|
185
185
|
*/
|
|
186
186
|
disconnectedCallback(): void {
|
|
187
|
-
|
|
187
|
+
const root = this.firstElementChild!;
|
|
188
|
+
root.removeEventListener("hide.bs.toast", () => this.#stopTimer);
|
|
189
|
+
root.removeEventListener("show.bs.toast", () => this.#startTimer);
|
|
190
|
+
|
|
191
|
+
this.#stopTimer();
|
|
188
192
|
this.#toast.dispose();
|
|
189
193
|
}
|
|
190
194
|
|
|
@@ -215,6 +219,18 @@ export class Toast extends HTMLElement {
|
|
|
215
219
|
return this.#formatter.format(Math.ceil(-elapsed), Toast.#timeUnits[index]);
|
|
216
220
|
}
|
|
217
221
|
|
|
222
|
+
/**
|
|
223
|
+
* Starts the timer.
|
|
224
|
+
*/
|
|
225
|
+
readonly #startTimer: () => void = () =>
|
|
226
|
+
this.#timer = window.setInterval(() => this.#updateElapsedTime(), 1_000);
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Stops the timer.
|
|
230
|
+
*/
|
|
231
|
+
readonly #stopTimer: () => void = () =>
|
|
232
|
+
clearInterval(this.#timer);
|
|
233
|
+
|
|
218
234
|
/**
|
|
219
235
|
* Updates the value indicating whether to automatically hide this toast.
|
|
220
236
|
* @param value The new value.
|
|
@@ -60,14 +60,15 @@ export class Toaster extends HTMLElement {
|
|
|
60
60
|
/**
|
|
61
61
|
* The template for a toast.
|
|
62
62
|
*/
|
|
63
|
-
readonly #toastTemplate
|
|
63
|
+
readonly #toastTemplate = this.querySelector("template")!.content;
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
66
|
* Creates a new toaster.
|
|
67
67
|
*/
|
|
68
68
|
constructor() {
|
|
69
69
|
super();
|
|
70
|
-
for (const toast of this.querySelectorAll("toaster-item"))
|
|
70
|
+
for (const toast of this.querySelectorAll("toaster-item"))
|
|
71
|
+
toast.addEventListener("hidden.bs.toast", () => toast.remove());
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
/**
|