valtech-components 2.0.192 → 2.0.194
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 +67 -13
- package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +15 -1
- package/esm2022/lib/components/atoms/avatar/types.mjs +1 -1
- package/esm2022/lib/components/atoms/box/box.component.mjs +17 -1
- package/esm2022/lib/components/atoms/box/types.mjs +1 -1
- package/esm2022/lib/components/atoms/button/button.component.mjs +15 -1
- package/esm2022/lib/components/atoms/display/display.component.mjs +11 -1
- package/esm2022/lib/components/atoms/display/types.mjs +1 -1
- package/esm2022/lib/components/atoms/divider/divider.component.mjs +11 -2
- package/esm2022/lib/components/atoms/divider/types.mjs +1 -1
- package/esm2022/lib/components/atoms/href/href.component.mjs +12 -1
- package/esm2022/lib/components/atoms/href/types.mjs +1 -1
- package/esm2022/lib/components/atoms/icon/icon.component.mjs +11 -1
- package/esm2022/lib/components/atoms/icon/types.mjs +1 -1
- package/esm2022/lib/components/atoms/image/image.component.mjs +13 -3
- package/esm2022/lib/components/atoms/image/types.mjs +1 -1
- package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +11 -1
- package/esm2022/lib/components/atoms/progress-bar/types.mjs +1 -1
- package/esm2022/lib/components/atoms/text/text.component.mjs +11 -1
- package/esm2022/lib/components/atoms/text/types.mjs +1 -1
- package/esm2022/lib/components/atoms/title/title.component.mjs +11 -1
- package/esm2022/lib/components/atoms/title/types.mjs +1 -1
- package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +11 -1
- package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +15 -1
- package/esm2022/lib/components/molecules/button-group/types.mjs +1 -1
- package/esm2022/lib/components/molecules/card/card.component.mjs +15 -1
- package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +9 -1
- package/esm2022/lib/components/molecules/comment-input/comment-input.component.mjs +11 -1
- package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +11 -1
- package/esm2022/lib/components/molecules/content-loader/types.mjs +1 -1
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +11 -1
- package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +11 -1
- package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +11 -1
- package/esm2022/lib/components/molecules/expandable-text/types.mjs +1 -1
- package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +16 -6
- package/esm2022/lib/components/molecules/hint/hint.component.mjs +11 -1
- package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +11 -1
- package/esm2022/lib/components/molecules/link/link.component.mjs +12 -1
- package/esm2022/lib/components/molecules/link/types.mjs +1 -1
- package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +11 -1
- package/esm2022/lib/components/molecules/links-cake/types.mjs +1 -1
- package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +31 -3
- package/esm2022/lib/components/molecules/notes-box/types.mjs +1 -1
- package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +11 -1
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +11 -1
- package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +11 -1
- package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +11 -1
- package/esm2022/lib/components/molecules/progress-status/types.mjs +1 -1
- package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +12 -1
- package/esm2022/lib/components/molecules/prompter/types.mjs +1 -1
- package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +11 -1
- package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +27 -5
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +11 -1
- package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +13 -3
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +14 -17
- package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +11 -1
- package/esm2022/lib/components/molecules/title-block/types.mjs +1 -1
- package/esm2022/lib/components/organisms/banner/banner.component.mjs +25 -3
- package/esm2022/lib/components/organisms/banner/types.mjs +1 -1
- package/esm2022/lib/components/organisms/footer/footer.component.mjs +23 -2
- package/esm2022/lib/components/organisms/footer/types.mjs +1 -1
- package/esm2022/lib/components/organisms/header/header.component.mjs +20 -1
- package/esm2022/lib/components/organisms/header/types.mjs +1 -1
- package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +31 -1
- package/esm2022/lib/components/organisms/item-list/types.mjs +1 -1
- package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +20 -1
- package/esm2022/lib/components/organisms/no-content/types.mjs +1 -1
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +46 -12
- package/esm2022/lib/components/organisms/toolbar/types.mjs +1 -1
- package/esm2022/lib/components/organisms/wizard/types.mjs +4 -1
- package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +44 -1
- package/esm2022/lib/services/download.service.mjs +18 -1
- package/esm2022/lib/services/icons.service.mjs +8 -1
- package/esm2022/lib/services/in-app-browser.service.mjs +12 -1
- package/esm2022/lib/services/local-storage.service.mjs +22 -1
- package/esm2022/lib/services/navigation.service.mjs +22 -1
- package/esm2022/lib/services/theme.service.mjs +46 -2
- package/esm2022/lib/services/toast.service.mjs +14 -2
- package/esm2022/lib/shared/utils/dom.mjs +11 -1
- package/esm2022/lib/shared/utils/styles.mjs +13 -1
- package/esm2022/lib/shared/utils/text.mjs +11 -1
- package/fesm2022/valtech-components.mjs +812 -47
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/avatar/avatar.component.d.ts +11 -0
- package/lib/components/atoms/avatar/types.d.ts +8 -0
- package/lib/components/atoms/box/box.component.d.ts +13 -0
- package/lib/components/atoms/box/types.d.ts +10 -0
- package/lib/components/atoms/button/button.component.d.ts +12 -0
- package/lib/components/atoms/display/display.component.d.ts +7 -0
- package/lib/components/atoms/display/types.d.ts +7 -0
- package/lib/components/atoms/divider/divider.component.d.ts +17 -0
- package/lib/components/atoms/divider/types.d.ts +7 -0
- package/lib/components/atoms/href/href.component.d.ts +10 -0
- package/lib/components/atoms/href/types.d.ts +10 -0
- package/lib/components/atoms/icon/icon.component.d.ts +7 -0
- package/lib/components/atoms/icon/types.d.ts +7 -0
- package/lib/components/atoms/image/image.component.d.ts +14 -0
- package/lib/components/atoms/image/types.d.ts +14 -0
- package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +10 -0
- package/lib/components/atoms/progress-bar/types.d.ts +10 -0
- package/lib/components/atoms/text/text.component.d.ts +8 -0
- package/lib/components/atoms/text/types.d.ts +8 -0
- package/lib/components/atoms/title/title.component.d.ts +9 -0
- package/lib/components/atoms/title/types.d.ts +9 -0
- package/lib/components/molecules/alert-box/alert-box.component.d.ts +7 -0
- package/lib/components/molecules/button-group/button-group.component.d.ts +10 -0
- package/lib/components/molecules/button-group/types.d.ts +7 -0
- package/lib/components/molecules/card/card.component.d.ts +14 -0
- package/lib/components/molecules/comment-input/comment-input.component.d.ts +6 -0
- package/lib/components/molecules/content-loader/content-loader.component.d.ts +8 -0
- package/lib/components/molecules/content-loader/types.d.ts +8 -0
- package/lib/components/molecules/date-input/date-input.component.d.ts +6 -0
- package/lib/components/molecules/email-input/email-input.component.d.ts +6 -0
- package/lib/components/molecules/expandable-text/expandable-text.component.d.ts +8 -0
- package/lib/components/molecules/expandable-text/types.d.ts +8 -0
- package/lib/components/molecules/file-input/file-input.component.d.ts +6 -1
- package/lib/components/molecules/hint/hint.component.d.ts +6 -0
- package/lib/components/molecules/hour-input/hour-input.component.d.ts +5 -0
- package/lib/components/molecules/link/link.component.d.ts +10 -0
- package/lib/components/molecules/link/types.d.ts +10 -0
- package/lib/components/molecules/links-cake/links-cake.component.d.ts +7 -0
- package/lib/components/molecules/links-cake/types.d.ts +7 -0
- package/lib/components/molecules/notes-box/notes-box.component.d.ts +11 -0
- package/lib/components/molecules/notes-box/types.d.ts +11 -0
- package/lib/components/molecules/number-input/number-input.component.d.ts +6 -0
- package/lib/components/molecules/password-input/password-input.component.d.ts +7 -1
- package/lib/components/molecules/pin-input/pin-input.component.d.ts +5 -0
- package/lib/components/molecules/progress-status/progress-status.component.d.ts +9 -0
- package/lib/components/molecules/progress-status/types.d.ts +10 -0
- package/lib/components/molecules/prompter/prompter.component.d.ts +12 -0
- package/lib/components/molecules/prompter/types.d.ts +12 -0
- package/lib/components/molecules/radio-input/radio-input.component.d.ts +6 -0
- package/lib/components/molecules/searchbar/searchbar.component.d.ts +14 -2
- package/lib/components/molecules/select-input/select-input.component.d.ts +8 -0
- package/lib/components/molecules/select-search/select-search.component.d.ts +9 -2
- package/lib/components/molecules/text-input/text-input.component.d.ts +7 -0
- package/lib/components/molecules/title-block/title-block.component.d.ts +8 -0
- package/lib/components/molecules/title-block/types.d.ts +8 -0
- package/lib/components/organisms/banner/types.d.ts +14 -0
- package/lib/components/organisms/footer/footer.component.d.ts +24 -0
- package/lib/components/organisms/footer/types.d.ts +10 -0
- package/lib/components/organisms/header/header.component.d.ts +10 -0
- package/lib/components/organisms/header/types.d.ts +10 -0
- package/lib/components/organisms/item-list/item-list.component.d.ts +20 -0
- package/lib/components/organisms/item-list/types.d.ts +43 -0
- package/lib/components/organisms/no-content/no-content.component.d.ts +10 -0
- package/lib/components/organisms/no-content/types.d.ts +10 -0
- package/lib/components/organisms/toolbar/toolbar.component.d.ts +40 -3
- package/lib/components/organisms/toolbar/types.d.ts +15 -0
- package/lib/components/organisms/wizard/types.d.ts +22 -0
- package/lib/components/organisms/wizard/wizard.component.d.ts +32 -0
- package/lib/services/download.service.d.ts +13 -0
- package/lib/services/icons.service.d.ts +3 -0
- package/lib/services/in-app-browser.service.d.ts +7 -0
- package/lib/services/local-storage.service.d.ts +21 -0
- package/lib/services/navigation.service.d.ts +24 -0
- package/lib/services/theme.service.d.ts +42 -0
- package/lib/services/toast.service.d.ts +12 -0
- package/lib/shared/utils/dom.d.ts +10 -0
- package/lib/shared/utils/styles.d.ts +12 -0
- package/lib/shared/utils/text.d.ts +10 -0
- package/package.json +1 -1
- package/src/lib/components/styles/overrides.scss +12 -4
- package/src/lib/components/styles/variables.scss +1 -0
- package/styles/fonts.scss +0 -35
- package/src/lib/assets/fonts/Khula-Bold.ttf +0 -0
- package/src/lib/assets/fonts/Khula-ExtraBold.ttf +0 -0
- package/src/lib/assets/fonts/Khula-Light.ttf +0 -0
- package/src/lib/assets/fonts/Khula-Regular.ttf +0 -0
- package/src/lib/assets/fonts/Khula-SemiBold.ttf +0 -0
- package/src/lib/assets/fonts/OFL.txt +0 -93
|
@@ -2,14 +2,27 @@ import { inject, Injectable } from '@angular/core';
|
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
3
|
import { InAppBrowserService } from './in-app-browser.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Service for navigation and routing within the application.
|
|
7
|
+
* Supports navigation with data transfer, in-app browser, and opening links in new tabs.
|
|
8
|
+
*/
|
|
5
9
|
export class NavigationService {
|
|
6
10
|
constructor() {
|
|
7
11
|
this.router = inject(Router);
|
|
8
12
|
this.inAppBrowser = inject(InAppBrowserService);
|
|
9
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Opens a URL using the in-app browser service.
|
|
16
|
+
* @param url The URL to open
|
|
17
|
+
*/
|
|
10
18
|
navigateInApp(url) {
|
|
11
19
|
this.inAppBrowser.openWithInAppBrowser(url);
|
|
12
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Navigates to a route and transfers data using Angular Router state.
|
|
23
|
+
* @param route The route to navigate to
|
|
24
|
+
* @param dataTransfer The data to transfer
|
|
25
|
+
*/
|
|
13
26
|
navigateWithData(route, dataTransfer) {
|
|
14
27
|
const navigationExtras = {
|
|
15
28
|
state: {
|
|
@@ -18,12 +31,20 @@ export class NavigationService {
|
|
|
18
31
|
};
|
|
19
32
|
this.router.navigate([route], navigationExtras);
|
|
20
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Navigates to a URL using Angular Router.
|
|
36
|
+
* @param url The URL to navigate to
|
|
37
|
+
*/
|
|
21
38
|
navigateByUrl(url) {
|
|
22
39
|
this.router
|
|
23
40
|
.navigateByUrl(url)
|
|
24
41
|
.then(response => { })
|
|
25
42
|
.catch(error => { });
|
|
26
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Opens a URL in a new browser tab.
|
|
46
|
+
* @param url The URL to open
|
|
47
|
+
*/
|
|
27
48
|
openInNewTab(url) {
|
|
28
49
|
window.open(url, '_blank', 'noopener,noreferrer');
|
|
29
50
|
}
|
|
@@ -36,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
36
57
|
providedIn: 'root',
|
|
37
58
|
}]
|
|
38
59
|
}], ctorParameters: () => [] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBb0IsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRS9EOzs7R0FHRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFRNUI7UUFIQSxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFNUIsQ0FBQztJQUVoQjs7O09BR0c7SUFDSCxhQUFhLENBQUMsR0FBVztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLFlBQWlCO1FBQy9DLE1BQU0sZ0JBQWdCLEdBQXFCO1lBQ3pDLEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsWUFBWTthQUNuQjtTQUNGLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxNQUFNO2FBQ1IsYUFBYSxDQUFDLEdBQUcsQ0FBQzthQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRSxDQUFDLENBQUM7YUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxHQUFXO1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7K0dBbERVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJbkFwcEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnLi9pbi1hcHAtYnJvd3Nlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBuYXZpZ2F0aW9uIGFuZCByb3V0aW5nIHdpdGhpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBTdXBwb3J0cyBuYXZpZ2F0aW9uIHdpdGggZGF0YSB0cmFuc2ZlciwgaW4tYXBwIGJyb3dzZXIsIGFuZCBvcGVuaW5nIGxpbmtzIGluIG5ldyB0YWJzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2Uge1xuICAvKipcbiAgICogQXJiaXRyYXJ5IGRhdGEgdG8gYmUgdHJhbnNmZXJyZWQgZHVyaW5nIG5hdmlnYXRpb24uXG4gICAqL1xuICBkYXRhOiBhbnk7XG4gIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBpbkFwcEJyb3dzZXIgPSBpbmplY3QoSW5BcHBCcm93c2VyU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIFVSTCB1c2luZyB0aGUgaW4tYXBwIGJyb3dzZXIgc2VydmljZS5cbiAgICogQHBhcmFtIHVybCBUaGUgVVJMIHRvIG9wZW5cbiAgICovXG4gIG5hdmlnYXRlSW5BcHAodXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmluQXBwQnJvd3Nlci5vcGVuV2l0aEluQXBwQnJvd3Nlcih1cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byBhIHJvdXRlIGFuZCB0cmFuc2ZlcnMgZGF0YSB1c2luZyBBbmd1bGFyIFJvdXRlciBzdGF0ZS5cbiAgICogQHBhcmFtIHJvdXRlIFRoZSByb3V0ZSB0byBuYXZpZ2F0ZSB0b1xuICAgKiBAcGFyYW0gZGF0YVRyYW5zZmVyIFRoZSBkYXRhIHRvIHRyYW5zZmVyXG4gICAqL1xuICBuYXZpZ2F0ZVdpdGhEYXRhKHJvdXRlOiBzdHJpbmcsIGRhdGFUcmFuc2ZlcjogYW55KSB7XG4gICAgY29uc3QgbmF2aWdhdGlvbkV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgIHN0YXRlOiB7XG4gICAgICAgIGRhdGE6IGRhdGFUcmFuc2ZlcixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0sIG5hdmlnYXRpb25FeHRyYXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byBhIFVSTCB1c2luZyBBbmd1bGFyIFJvdXRlci5cbiAgICogQHBhcmFtIHVybCBUaGUgVVJMIHRvIG5hdmlnYXRlIHRvXG4gICAqL1xuICBuYXZpZ2F0ZUJ5VXJsKHVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5yb3V0ZXJcbiAgICAgIC5uYXZpZ2F0ZUJ5VXJsKHVybClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHt9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIFVSTCBpbiBhIG5ldyBicm93c2VyIHRhYi5cbiAgICogQHBhcmFtIHVybCBUaGUgVVJMIHRvIG9wZW5cbiAgICovXG4gIG9wZW5Jbk5ld1RhYih1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service for managing application themes (light, dark, auto).
|
|
3
|
+
* Handles user preferences, system theme detection, and theme toggling.
|
|
4
|
+
* Uses localStorage to persist the selected theme.
|
|
5
|
+
*/
|
|
1
6
|
import { Injectable } from '@angular/core';
|
|
2
7
|
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import { LocalStorageService } from './local-storage.service';
|
|
4
8
|
import { THEME } from '../shared/constants/storage';
|
|
9
|
+
import { LocalStorageService } from './local-storage.service';
|
|
5
10
|
import * as i0 from "@angular/core";
|
|
6
11
|
export var ThemeOption;
|
|
7
12
|
(function (ThemeOption) {
|
|
@@ -11,12 +16,33 @@ export var ThemeOption;
|
|
|
11
16
|
})(ThemeOption || (ThemeOption = {}));
|
|
12
17
|
export class ThemeService {
|
|
13
18
|
constructor() {
|
|
19
|
+
/**
|
|
20
|
+
* Indicates if the light theme is active.
|
|
21
|
+
*/
|
|
14
22
|
this.lightToggle = false;
|
|
23
|
+
/**
|
|
24
|
+
* Indicates if the dark theme is active.
|
|
25
|
+
*/
|
|
15
26
|
this.darkToggle = false;
|
|
27
|
+
/**
|
|
28
|
+
* Indicates if the auto theme is active.
|
|
29
|
+
*/
|
|
16
30
|
this.autoToggle = false;
|
|
31
|
+
/**
|
|
32
|
+
* The current selected theme option.
|
|
33
|
+
*/
|
|
17
34
|
this.currentOption = ThemeOption.AUTO;
|
|
35
|
+
/**
|
|
36
|
+
* Enum with all available theme options.
|
|
37
|
+
*/
|
|
18
38
|
this.themeOptions = ThemeOption;
|
|
39
|
+
/**
|
|
40
|
+
* Whether the system prefers dark mode.
|
|
41
|
+
*/
|
|
19
42
|
this.prefersDark = false;
|
|
43
|
+
/**
|
|
44
|
+
* The default theme option.
|
|
45
|
+
*/
|
|
20
46
|
this.default = ThemeOption.AUTO;
|
|
21
47
|
const current = LocalStorageService.get(THEME);
|
|
22
48
|
console.log('💡 ThemeConfig current::: ', current);
|
|
@@ -51,20 +77,38 @@ export class ThemeService {
|
|
|
51
77
|
this.toggleTheme(ThemeOption.LIGHT, true);
|
|
52
78
|
this.toggleTheme(ThemeOption.DARK, false);
|
|
53
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Returns true if the system prefers dark mode.
|
|
82
|
+
*/
|
|
54
83
|
get IsDark() {
|
|
55
84
|
return this.prefersDark;
|
|
56
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Gets the current theme option.
|
|
88
|
+
*/
|
|
57
89
|
get Theme() {
|
|
58
90
|
return this.theme.value;
|
|
59
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Sets the current theme option and persists it.
|
|
94
|
+
*/
|
|
60
95
|
set Theme(theme) {
|
|
61
96
|
this.theme.next(theme);
|
|
62
97
|
LocalStorageService.set(THEME, theme);
|
|
63
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Toggles a theme class on the document body.
|
|
101
|
+
* @param name The theme name
|
|
102
|
+
* @param shouldAdd Whether to add or remove the class
|
|
103
|
+
*/
|
|
64
104
|
toggleTheme(name, shouldAdd) {
|
|
65
105
|
console.log('toggleTheme::: ', name, shouldAdd);
|
|
66
106
|
document.body.classList.toggle(name, shouldAdd);
|
|
67
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Sets the user theme preference and updates toggles and theme classes.
|
|
110
|
+
* @param option The selected theme option
|
|
111
|
+
*/
|
|
68
112
|
toggleUserPreference(option) {
|
|
69
113
|
this.currentOption = option;
|
|
70
114
|
this.Theme = option;
|
|
@@ -97,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
97
141
|
providedIn: 'root',
|
|
98
142
|
}]
|
|
99
143
|
}], ctorParameters: () => [] });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFcEQsTUFBTSxDQUFOLElBQVksV0FJWDtBQUpELFdBQVksV0FBVztJQUNyQiw4QkFBZSxDQUFBO0lBQ2YsNEJBQWEsQ0FBQTtJQUNiLDRCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsV0FBVyxLQUFYLFdBQVcsUUFJdEI7QUFLRCxNQUFNLE9BQU8sWUFBWTtJQVV2QjtRQVRBLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixrQkFBYSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDakMsaUJBQVksR0FBRyxXQUFXLENBQUM7UUFDM0IsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsWUFBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFJekIsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFjLEtBQUssQ0FBQyxDQUFDO1FBQzVELE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGVBQWUsQ0FBYyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxh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LENBQUMsS0FBSyxDQUFDO1FBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLEtBQUssV0FBVyxDQUFDLElBQUksQ0FBQztRQUU5QyxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxXQUFXLENBQUMsS0FBSztnQkFDcEIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLFdBQVcsQ0FBQyxJQUFJO2dCQUNuQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsTUFBTTtZQUNSLEtBQUssV0FBVyxDQUFDLElBQUk7Z0JBQ25CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNyQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDOUIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMvQixDQUFDO2dCQUNELE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQzsrR0ExRlUsWUFBWTttSEFBWixZQUFZLGNBRlgsTUFBTTs7NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBUSEVNRSB9IGZyb20gJy4uL3NoYXJlZC9jb25zdGFudHMvc3RvcmFnZSc7XG5cbmV4cG9ydCBlbnVtIFRoZW1lT3B0aW9uIHtcbiAgTElHSFQgPSAnbGlnaHQnLFxuICBEQVJLID0gJ2RhcmsnLFxuICBBVVRPID0gJ2F1dG8nLFxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGhlbWVTZXJ2aWNlIHtcbiAgbGlnaHRUb2dnbGUgPSBmYWxzZTtcbiAgZGFya1RvZ2dsZSA9IGZhbHNlO1xuICBhdXRvVG9nZ2xlID0gZmFsc2U7XG4gIGN1cnJlbnRPcHRpb24gPSBUaGVtZU9wdGlvbi5BVVRPO1xuICB0aGVtZU9wdGlvbnMgPSBUaGVtZU9wdGlvbjtcbiAgcHJlZmVyc0RhcmsgPSBmYWxzZTtcbiAgZGVmYXVsdCA9IFRoZW1lT3B0aW9uLkFVVE87XG4gIHRoZW1lOiBCZWhhdmlvclN1YmplY3Q8VGhlbWVPcHRpb24+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBMb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldDxUaGVtZU9wdGlvbj4oVEhFTUUpO1xuICAgIGNvbnNvbGUubG9nKCfwn5KhIFRoZW1lQ29uZmlnIGN1cnJlbnQ6OjogJywgY3VycmVudCk7XG4gICAgdGhpcy50aGVtZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGhlbWVPcHRpb24+KGN1cnJlbnQgfHwgdGhpcy5kZWZhdWx0KTtcbiAgICB0aGlzLmN1cnJlbnRPcHRpb24gPSB0aGlzLlRoZW1lO1xuICAgIGNvbnNvbGUubG9nKCfwn5KhIFRoZW1lQ29uZmlnIHRoaXMuY3VycmVudE9wdGlvbjo6OiAnLCB0aGlzLmN1cnJlbnRPcHRpb24pO1xuICAgIHRoaXMudG9nZ2xlVXNlclByZWZlcmVuY2UodGhpcy5jdXJyZW50T3B0aW9uKTtcblxuICAgIGNvbnN0IHByZWZlcnNEYXJrUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpO1xuICAgIHRoaXMucHJlZmVyc0RhcmsgPSBwcmVmZXJzRGFya1F1ZXJ5Lm1hdGNoZXM7XG4gICAgdGhpcy5oYW5kbGVBdXRvQ29uZmlndXJhdGlvbigpO1xuXG4gICAgcHJlZmVyc0RhcmtRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBtZWRpYVF1ZXJ5ID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5KhIFRoZW1lQ29uZmlnIGFkZEV2ZW50TGlzdGVuZXIgY2hhbmdlOjo6ICcsIG1lZGlhUXVlcnkpO1xuICAgICAgdGhpcy5wcmVmZXJzRGFyayA9IG1lZGlhUXVlcnkubWF0Y2hlcztcbiAgICAgIHRoaXMuaGFuZGxlQXV0b0NvbmZpZ3VyYXRpb24oKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQXV0b0NvbmZpZ3VyYXRpb24oKSB7XG4gICAgaWYgKHRoaXMucHJlZmVyc0RhcmsgJiYgdGhpcy5jdXJyZW50T3B0aW9uID09PSBUaGVtZU9wdGlvbi5BVVRPKSB7XG4gICAgICBjb25zb2xlLmxvZygn8J+SoSBUaGVtZUNvbmZpZyBwcmVmZXJzRGFyazo6OiAnLCB0aGlzLnByZWZlcnNEYXJrKTtcbiAgICAgIHRoaXMudG9nZ2xlVXNlclByZWZlcmVuY2UoVGhlbWVPcHRpb24uQVVUTyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5wcmVmZXJzRGFyayAmJiB0aGlzLmN1cnJlbnRPcHRpb24gPT09IFRoZW1lT3B0aW9uLkFVVE8pIHtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5KhIFRoZW1lQ29uZmlnIHByZWZlcnNEYXJrOjo6ICcsIHRoaXMucHJlZmVyc0RhcmspO1xuICAgICAgdGhpcy50b2dnbGVVc2VyUHJlZmVyZW5jZShUaGVtZU9wdGlvbi5BVVRPKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURhcmtQcmVmZXJlbmNlKCkge1xuICAgIHRoaXMudG9nZ2xlVGhlbWUoVGhlbWVPcHRpb24uREFSSywgdHJ1ZSk7XG4gICAgdGhpcy50b2dnbGVUaGVtZShUaGVtZU9wdGlvbi5MSUdIVCwgZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVMaWdodFByZWZlcmVuY2UoKSB7XG4gICAgdGhpcy50b2dnbGVUaGVtZShUaGVtZU9wdGlvbi5MSUdIVCwgdHJ1ZSk7XG4gICAgdGhpcy50b2dnbGVUaGVtZShUaGVtZU9wdGlvbi5EQVJLLCBmYWxzZSk7XG4gIH1cblxuICBnZXQgSXNEYXJrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByZWZlcnNEYXJrO1xuICB9XG5cbiAgZ2V0IFRoZW1lKCk6IFRoZW1lT3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy50aGVtZS52YWx1ZTtcbiAgfVxuXG4gIHNldCBUaGVtZSh0aGVtZTogVGhlbWVPcHRpb24pIHtcbiAgICB0aGlzLnRoZW1lLm5leHQodGhlbWUpO1xuICAgIExvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0PFRoZW1lT3B0aW9uPihUSEVNRSwgdGhlbWUpO1xuICB9XG5cbiAgdG9nZ2xlVGhlbWUobmFtZTogc3RyaW5nLCBzaG91bGRBZGQ6IGJvb2xlYW4pIHtcbiAgICBjb25zb2xlLmxvZygndG9nZ2xlVGhlbWU6OjogJywgbmFtZSwgc2hvdWxkQWRkKTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUobmFtZSwgc2hvdWxkQWRkKTtcbiAgfVxuXG4gIHRvZ2dsZVVzZXJQcmVmZXJlbmNlKG9wdGlvbjogVGhlbWVPcHRpb24pIHtcbiAgICB0aGlzLmN1cnJlbnRPcHRpb24gPSBvcHRpb247XG4gICAgdGhpcy5UaGVtZSA9IG9wdGlvbjtcbiAgICB0aGlzLmxpZ2h0VG9nZ2xlID0gb3B0aW9uID09PSBUaGVtZU9wdGlvbi5MSUdIVDtcbiAgICB0aGlzLmRhcmtUb2dnbGUgPSBvcHRpb24gPT09IFRoZW1lT3B0aW9uLkRBUks7XG4gICAgdGhpcy5hdXRvVG9nZ2xlID0gb3B0aW9uID09PSBUaGVtZU9wdGlvbi5BVVRPO1xuXG4gICAgc3dpdGNoIChvcHRpb24pIHtcbiAgICAgIGNhc2UgVGhlbWVPcHRpb24uTElHSFQ6XG4gICAgICAgIHRoaXMuaGFuZGxlTGlnaHRQcmVmZXJlbmNlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUaGVtZU9wdGlvbi5EQVJLOlxuICAgICAgICB0aGlzLmhhbmRsZURhcmtQcmVmZXJlbmNlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUaGVtZU9wdGlvbi5BVVRPOlxuICAgICAgICBpZiAodGhpcy5wcmVmZXJzRGFyaykge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRGFya1ByZWZlcmVuY2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUxpZ2h0UHJlZmVyZW5jZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRTlELE1BQU0sQ0FBTixJQUFZLFdBSVg7QUFKRCxXQUFZLFdBQVc7SUFDckIsOEJBQWUsQ0FBQTtJQUNmLDRCQUFhLENBQUE7SUFDYiw0QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLFdBQVcsS0FBWCxXQUFXLFFBSXRCO0FBS0QsTUFBTSxPQUFPLFlBQVk7SUFrQ3ZCO1FBakNBOztXQUVHO1FBQ0gsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEI7O1dBRUc7UUFDSCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25COztXQUVHO1FBQ0gsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQjs7V0FFRztRQUNILGtCQUFhLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNqQzs7V0FFRztRQUNILGlCQUFZLEdBQUcsV0FBVyxDQUFDO1FBQzNCOztXQUVHO1FBQ0gsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEI7O1dBRUc7UUFDSCxZQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQU96QixNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQWMsS0FBSyxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxPQUFPLENBQUMsQ0FBQztR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QUM7SUFFRDs7O09BR0c7SUFDSCxvQkFBb0IsQ0FBQyxNQUFtQjtRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLEtBQUssV0FBVyxDQUFDLElBQUksQ0FBQztRQUU5QyxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxXQUFXLENBQUMsS0FBSztnQkFDcEIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLFdBQVcsQ0FBQyxJQUFJO2dCQUNuQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsTUFBTTtZQUNSLEtBQUssV0FBVyxDQUFDLElBQUk7Z0JBQ25CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNyQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDOUIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMvQixDQUFDO2dCQUNELE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQzsrR0FwSVUsWUFBWTttSEFBWixZQUFZLGNBRlgsTUFBTTs7NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlcnZpY2UgZm9yIG1hbmFnaW5nIGFwcGxpY2F0aW9uIHRoZW1lcyAobGlnaHQsIGRhcmssIGF1dG8pLlxuICogSGFuZGxlcyB1c2VyIHByZWZlcmVuY2VzLCBzeXN0ZW0gdGhlbWUgZGV0ZWN0aW9uLCBhbmQgdGhlbWUgdG9nZ2xpbmcuXG4gKiBVc2VzIGxvY2FsU3RvcmFnZSB0byBwZXJzaXN0IHRoZSBzZWxlY3RlZCB0aGVtZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRIRU1FIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnN0YW50cy9zdG9yYWdlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5cbmV4cG9ydCBlbnVtIFRoZW1lT3B0aW9uIHtcbiAgTElHSFQgPSAnbGlnaHQnLFxuICBEQVJLID0gJ2RhcmsnLFxuICBBVVRPID0gJ2F1dG8nLFxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGhlbWVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGlnaHQgdGhlbWUgaXMgYWN0aXZlLlxuICAgKi9cbiAgbGlnaHRUb2dnbGUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgZGFyayB0aGVtZSBpcyBhY3RpdmUuXG4gICAqL1xuICBkYXJrVG9nZ2xlID0gZmFsc2U7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGF1dG8gdGhlbWUgaXMgYWN0aXZlLlxuICAgKi9cbiAgYXV0b1RvZ2dsZSA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgc2VsZWN0ZWQgdGhlbWUgb3B0aW9uLlxuICAgKi9cbiAgY3VycmVudE9wdGlvbiA9IFRoZW1lT3B0aW9uLkFVVE87XG4gIC8qKlxuICAgKiBFbnVtIHdpdGggYWxsIGF2YWlsYWJsZSB0aGVtZSBvcHRpb25zLlxuICAgKi9cbiAgdGhlbWVPcHRpb25zID0gVGhlbWVPcHRpb247XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzeXN0ZW0gcHJlZmVycyBkYXJrIG1vZGUuXG4gICAqL1xuICBwcmVmZXJzRGFyayA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdGhlbWUgb3B0aW9uLlxuICAgKi9cbiAgZGVmYXVsdCA9IFRoZW1lT3B0aW9uLkFVVE87XG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIGZvciB0aGUgY3VycmVudCB0aGVtZS5cbiAgICovXG4gIHRoZW1lOiBCZWhhdmlvclN1YmplY3Q8VGhlbWVPcHRpb24+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBMb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldDxUaGVtZU9wdGlvbj4oVEhFTUUpO1xuICAgIGNvbnNvbGUubG9nKCfwn5KhIFRoZW1lQ29uZmlnIGN1cnJlbnQ6OjogJywgY3VycmVudCk7XG4gICAgdGhpcy50aGVtZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGhlbWVPcHRpb24+KGN1cnJlbnQgfHwgdGhpcy5kZWZhdWx0KTtcbiAgICB0aGlzLmN1cnJlbnRPcHRpb24gPSB0aGlzLlRoZW1lO1xuICAgIGNvbnNvbGUubG9nKCfwn5KhIFRoZW1lQ29uZmlnIHRoaXMuY3VycmVudE9wdGlvbjo6OiAnLCB0aGlzLmN1cnJlbnRPcHRpb24pO1xuICAgIHRoaXMudG9nZ2xlVXNlclByZWZlcmVuY2UodGhpcy5jdXJyZW50T3B0aW9uKTtcblxuICAgIGNvbnN0IHByZWZlcnNEYXJrUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpO1xuICAgIHRoaXMucHJlZmVyc0RhcmsgPSBwcmVmZXJzRGFya1F1ZXJ5Lm1hdGNoZXM7XG4gICAgdGhpcy5oYW5kbGVBdXRvQ29uZmlndXJhdGlvbigpO1xuXG4gICAgcHJlZmVyc0RhcmtRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBtZWRpYVF1ZXJ5ID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5KhIFRoZW1lQ29uZmlnIGFkZEV2ZW50TGlzdGVuZXIgY2hhbmdlOjo6ICcsIG1lZGlhUXVlcnkpO1xuICAgICAgdGhpcy5wcmVmZXJzRGFyayA9IG1lZGlhUXVlcnkubWF0Y2hlcztcbiAgICAgIHRoaXMuaGFuZGxlQXV0b0NvbmZpZ3VyYXRpb24oKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQXV0b0NvbmZpZ3VyYXRpb24oKSB7XG4gICAgaWYgKHRoaXMucHJlZmVyc0RhcmsgJiYgdGhpcy5jdXJyZW50T3B0aW9uID09PSBUaGVtZU9wdGlvbi5BVVRPKSB7XG4gICAgICBjb25zb2xlLmxvZygn8J+SoSBUaGVtZUNvbmZpZyBwcmVmZXJzRGFyazo6OiAnLCB0aGlzLnByZWZlcnNEYXJrKTtcbiAgICAgIHRoaXMudG9nZ2xlVXNlclByZWZlcmVuY2UoVGhlbWVPcHRpb24uQVVUTyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5wcmVmZXJzRGFyayAmJiB0aGlzLmN1cnJlbnRPcHRpb24gPT09IFRoZW1lT3B0aW9uLkFVVE8pIHtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5KhIFRoZW1lQ29uZmlnIHByZWZlcnNEYXJrOjo6ICcsIHRoaXMucHJlZmVyc0RhcmspO1xuICAgICAgdGhpcy50b2dnbGVVc2VyUHJlZmVyZW5jZShUaGVtZU9wdGlvbi5BVVRPKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURhcmtQcmVmZXJlbmNlKCkge1xuICAgIHRoaXMudG9nZ2xlVGhlbWUoVGhlbWVPcHRpb24uREFSSywgdHJ1ZSk7XG4gICAgdGhpcy50b2dnbGVUaGVtZShUaGVtZU9wdGlvbi5MSUdIVCwgZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVMaWdodFByZWZlcmVuY2UoKSB7XG4gICAgdGhpcy50b2dnbGVUaGVtZShUaGVtZU9wdGlvbi5MSUdIVCwgdHJ1ZSk7XG4gICAgdGhpcy50b2dnbGVUaGVtZShUaGVtZU9wdGlvbi5EQVJLLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBzeXN0ZW0gcHJlZmVycyBkYXJrIG1vZGUuXG4gICAqL1xuICBnZXQgSXNEYXJrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByZWZlcnNEYXJrO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgdGhlbWUgb3B0aW9uLlxuICAgKi9cbiAgZ2V0IFRoZW1lKCk6IFRoZW1lT3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy50aGVtZS52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjdXJyZW50IHRoZW1lIG9wdGlvbiBhbmQgcGVyc2lzdHMgaXQuXG4gICAqL1xuICBzZXQgVGhlbWUodGhlbWU6IFRoZW1lT3B0aW9uKSB7XG4gICAgdGhpcy50aGVtZS5uZXh0KHRoZW1lKTtcbiAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldDxUaGVtZU9wdGlvbj4oVEhFTUUsIHRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIGEgdGhlbWUgY2xhc3Mgb24gdGhlIGRvY3VtZW50IGJvZHkuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSB0aGVtZSBuYW1lXG4gICAqIEBwYXJhbSBzaG91bGRBZGQgV2hldGhlciB0byBhZGQgb3IgcmVtb3ZlIHRoZSBjbGFzc1xuICAgKi9cbiAgdG9nZ2xlVGhlbWUobmFtZTogc3RyaW5nLCBzaG91bGRBZGQ6IGJvb2xlYW4pIHtcbiAgICBjb25zb2xlLmxvZygndG9nZ2xlVGhlbWU6OjogJywgbmFtZSwgc2hvdWxkQWRkKTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUobmFtZSwgc2hvdWxkQWRkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB1c2VyIHRoZW1lIHByZWZlcmVuY2UgYW5kIHVwZGF0ZXMgdG9nZ2xlcyBhbmQgdGhlbWUgY2xhc3Nlcy5cbiAgICogQHBhcmFtIG9wdGlvbiBUaGUgc2VsZWN0ZWQgdGhlbWUgb3B0aW9uXG4gICAqL1xuICB0b2dnbGVVc2VyUHJlZmVyZW5jZShvcHRpb246IFRoZW1lT3B0aW9uKSB7XG4gICAgdGhpcy5jdXJyZW50T3B0aW9uID0gb3B0aW9uO1xuICAgIHRoaXMuVGhlbWUgPSBvcHRpb247XG4gICAgdGhpcy5saWdodFRvZ2dsZSA9IG9wdGlvbiA9PT0gVGhlbWVPcHRpb24uTElHSFQ7XG4gICAgdGhpcy5kYXJrVG9nZ2xlID0gb3B0aW9uID09PSBUaGVtZU9wdGlvbi5EQVJLO1xuICAgIHRoaXMuYXV0b1RvZ2dsZSA9IG9wdGlvbiA9PT0gVGhlbWVPcHRpb24uQVVUTztcblxuICAgIHN3aXRjaCAob3B0aW9uKSB7XG4gICAgICBjYXNlIFRoZW1lT3B0aW9uLkxJR0hUOlxuICAgICAgICB0aGlzLmhhbmRsZUxpZ2h0UHJlZmVyZW5jZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVGhlbWVPcHRpb24uREFSSzpcbiAgICAgICAgdGhpcy5oYW5kbGVEYXJrUHJlZmVyZW5jZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVGhlbWVPcHRpb24uQVVUTzpcbiAgICAgICAgaWYgKHRoaXMucHJlZmVyc0RhcmspIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZURhcmtQcmVmZXJlbmNlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVMaWdodFByZWZlcmVuY2UoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@ionic/angular";
|
|
4
|
+
/**
|
|
5
|
+
* Service for displaying toast notifications using Ionic's ToastController.
|
|
6
|
+
* Provides methods to show and present toasts with custom options.
|
|
7
|
+
*/
|
|
4
8
|
export class ToastService {
|
|
5
9
|
constructor(toastController) {
|
|
6
10
|
this.toastController = toastController;
|
|
7
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Presents a toast notification with the given options.
|
|
14
|
+
* @param request Toast options (message, duration, position, color, etc.)
|
|
15
|
+
*/
|
|
8
16
|
async presentToast(request) {
|
|
9
17
|
const toast = await this.toastController.create({
|
|
10
18
|
message: request.message,
|
|
@@ -14,12 +22,16 @@ export class ToastService {
|
|
|
14
22
|
});
|
|
15
23
|
await toast.present();
|
|
16
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Shows a toast notification and logs the result.
|
|
27
|
+
* @param request Toast options (message, duration, position, color, etc.)
|
|
28
|
+
*/
|
|
17
29
|
show(request) {
|
|
18
30
|
this.presentToast(request)
|
|
19
31
|
.then(() => {
|
|
20
32
|
console.info('Toast created');
|
|
21
33
|
})
|
|
22
|
-
.catch(
|
|
34
|
+
.catch(error => {
|
|
23
35
|
console.error(JSON.stringify(error));
|
|
24
36
|
});
|
|
25
37
|
}
|
|
@@ -32,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
32
44
|
providedIn: 'root',
|
|
33
45
|
}]
|
|
34
46
|
}], ctorParameters: () => [{ type: i1.ToastController }] });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRzNDOzs7R0FHRztBQUlILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUFHLENBQUM7SUFFeEQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFxQjtRQUN0QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1lBQzlDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7WUFDMUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztTQUNyQixDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLE9BQXFCO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO2FBQ3ZCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0E5QlUsWUFBWTttSEFBWixZQUFZLGNBRlgsTUFBTTs7NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdENvbnRyb2xsZXIsIFRvYXN0T3B0aW9ucyB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBkaXNwbGF5aW5nIHRvYXN0IG5vdGlmaWNhdGlvbnMgdXNpbmcgSW9uaWMncyBUb2FzdENvbnRyb2xsZXIuXG4gKiBQcm92aWRlcyBtZXRob2RzIHRvIHNob3cgYW5kIHByZXNlbnQgdG9hc3RzIHdpdGggY3VzdG9tIG9wdGlvbnMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyKSB7fVxuXG4gIC8qKlxuICAgKiBQcmVzZW50cyBhIHRvYXN0IG5vdGlmaWNhdGlvbiB3aXRoIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgKiBAcGFyYW0gcmVxdWVzdCBUb2FzdCBvcHRpb25zIChtZXNzYWdlLCBkdXJhdGlvbiwgcG9zaXRpb24sIGNvbG9yLCBldGMuKVxuICAgKi9cbiAgYXN5bmMgcHJlc2VudFRvYXN0KHJlcXVlc3Q6IFRvYXN0T3B0aW9ucykge1xuICAgIGNvbnN0IHRvYXN0ID0gYXdhaXQgdGhpcy50b2FzdENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIG1lc3NhZ2U6IHJlcXVlc3QubWVzc2FnZSxcbiAgICAgIGR1cmF0aW9uOiByZXF1ZXN0LmR1cmF0aW9uLFxuICAgICAgcG9zaXRpb246IHJlcXVlc3QucG9zaXRpb24sXG4gICAgICBjb2xvcjogcmVxdWVzdC5jb2xvcixcbiAgICB9KTtcblxuICAgIGF3YWl0IHRvYXN0LnByZXNlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyBhIHRvYXN0IG5vdGlmaWNhdGlvbiBhbmQgbG9ncyB0aGUgcmVzdWx0LlxuICAgKiBAcGFyYW0gcmVxdWVzdCBUb2FzdCBvcHRpb25zIChtZXNzYWdlLCBkdXJhdGlvbiwgcG9zaXRpb24sIGNvbG9yLCBldGMuKVxuICAgKi9cbiAgc2hvdyhyZXF1ZXN0OiBUb2FzdE9wdGlvbnMpIHtcbiAgICB0aGlzLnByZXNlbnRUb2FzdChyZXF1ZXN0KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmluZm8oJ1RvYXN0IGNyZWF0ZWQnKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yKSk7XG4gICAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scrolls smoothly to the top of the element with the given id.
|
|
3
|
+
* @param id The id of the element to scroll to
|
|
4
|
+
*/
|
|
1
5
|
export const goToTop = (id) => {
|
|
2
6
|
const element = document.getElementById(id);
|
|
3
7
|
if (element) {
|
|
@@ -8,10 +12,16 @@ export const goToTop = (id) => {
|
|
|
8
12
|
});
|
|
9
13
|
}
|
|
10
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Checks if the bottom of the given ElementRef is within the viewport.
|
|
17
|
+
* Useful for determining if a form or element is fully visible.
|
|
18
|
+
* @param elementRef The Angular ElementRef to check
|
|
19
|
+
* @returns True if the element's bottom is at or above the window's bottom
|
|
20
|
+
*/
|
|
11
21
|
export const isAtEnd = (elementRef) => {
|
|
12
22
|
const formElement = elementRef.nativeElement;
|
|
13
23
|
const rect = formElement.getBoundingClientRect();
|
|
14
24
|
const windowHeight = window.innerHeight;
|
|
15
25
|
return rect.bottom <= windowHeight;
|
|
16
26
|
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3V0aWxzL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFVLEVBQVEsRUFBRTtJQUMxQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixPQUFPLENBQUMsY0FBYyxDQUFDO1lBQ3JCLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLFNBQVM7WUFDakIsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBc0IsRUFBVyxFQUFFO0lBQ3pELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDN0MsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDO0FBQ3JDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBTY3JvbGxzIHNtb290aGx5IHRvIHRoZSB0b3Agb2YgdGhlIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4gaWQuXG4gKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBlbGVtZW50IHRvIHNjcm9sbCB0b1xuICovXG5leHBvcnQgY29uc3QgZ29Ub1RvcCA9IChpZDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gIGlmIChlbGVtZW50KSB7XG4gICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICBibG9jazogJ3N0YXJ0JyxcbiAgICAgIGlubGluZTogJ25lYXJlc3QnLFxuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgIH0pO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYm90dG9tIG9mIHRoZSBnaXZlbiBFbGVtZW50UmVmIGlzIHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gKiBVc2VmdWwgZm9yIGRldGVybWluaW5nIGlmIGEgZm9ybSBvciBlbGVtZW50IGlzIGZ1bGx5IHZpc2libGUuXG4gKiBAcGFyYW0gZWxlbWVudFJlZiBUaGUgQW5ndWxhciBFbGVtZW50UmVmIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbGVtZW50J3MgYm90dG9tIGlzIGF0IG9yIGFib3ZlIHRoZSB3aW5kb3cncyBib3R0b21cbiAqL1xuZXhwb3J0IGNvbnN0IGlzQXRFbmQgPSAoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBmb3JtRWxlbWVudCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgY29uc3QgcmVjdCA9IGZvcm1FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gIHJldHVybiByZWN0LmJvdHRvbSA8PSB3aW5kb3dIZWlnaHQ7XG59O1xuIl19
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves a color string to a valid CSS value for use in styles.
|
|
3
|
+
* Supports Ionic color names, CSS variables, and custom colors.
|
|
4
|
+
*
|
|
5
|
+
* @param color The color name, CSS variable, or custom color string
|
|
6
|
+
* @returns A valid CSS color value
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* resolveColor('primary'); // returns 'var(--ion-color-primary)'
|
|
10
|
+
* resolveColor('--my-custom-color'); // returns 'var(--my-custom-color)'
|
|
11
|
+
* resolveColor('#ff0000'); // returns '#ff0000'
|
|
12
|
+
*/
|
|
1
13
|
export function resolveColor(color) {
|
|
2
14
|
// Si el color empieza con "--", se asume que es una variable CSS válida
|
|
3
15
|
if (color.startsWith('--')) {
|
|
@@ -22,4 +34,4 @@ export function resolveColor(color) {
|
|
|
22
34
|
// Si no es una variable CSS ni un color de Ionic, devolver el color tal cual
|
|
23
35
|
return color;
|
|
24
36
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3V0aWxzL3N0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYTtJQUN4Qyx3RUFBd0U7SUFDeEUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTyxPQUFPLEtBQUssR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsTUFBTSxXQUFXLEdBQUc7UUFDbEIsU0FBUztRQUNULFdBQVc7UUFDWCxVQUFVO1FBQ1YsU0FBUztRQUNULFNBQVM7UUFDVCxRQUFRO1FBQ1IsT0FBTztRQUNQLFFBQVE7UUFDUixNQUFNO0tBQ1AsQ0FBQztJQUVGLDZDQUE2QztJQUM3QyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxPQUFPLG1CQUFtQixLQUFLLEdBQUcsQ0FBQztJQUNyQyxDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVzb2x2ZXMgYSBjb2xvciBzdHJpbmcgdG8gYSB2YWxpZCBDU1MgdmFsdWUgZm9yIHVzZSBpbiBzdHlsZXMuXG4gKiBTdXBwb3J0cyBJb25pYyBjb2xvciBuYW1lcywgQ1NTIHZhcmlhYmxlcywgYW5kIGN1c3RvbSBjb2xvcnMuXG4gKlxuICogQHBhcmFtIGNvbG9yIFRoZSBjb2xvciBuYW1lLCBDU1MgdmFyaWFibGUsIG9yIGN1c3RvbSBjb2xvciBzdHJpbmdcbiAqIEByZXR1cm5zIEEgdmFsaWQgQ1NTIGNvbG9yIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIHJlc29sdmVDb2xvcigncHJpbWFyeScpOyAvLyByZXR1cm5zICd2YXIoLS1pb24tY29sb3ItcHJpbWFyeSknXG4gKiByZXNvbHZlQ29sb3IoJy0tbXktY3VzdG9tLWNvbG9yJyk7IC8vIHJldHVybnMgJ3ZhcigtLW15LWN1c3RvbS1jb2xvciknXG4gKiByZXNvbHZlQ29sb3IoJyNmZjAwMDAnKTsgLy8gcmV0dXJucyAnI2ZmMDAwMCdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb2xvcihjb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gU2kgZWwgY29sb3IgZW1waWV6YSBjb24gXCItLVwiLCBzZSBhc3VtZSBxdWUgZXMgdW5hIHZhcmlhYmxlIENTUyB2w6FsaWRhXG4gIGlmIChjb2xvci5zdGFydHNXaXRoKCctLScpKSB7XG4gICAgcmV0dXJuIGB2YXIoJHtjb2xvcn0pYDtcbiAgfVxuXG4gIC8vIExpc3RhIGRlIGNvbG9yZXMgcHJlZGVmaW5pZG9zIGRlIElvbmljXG4gIGNvbnN0IGlvbmljQ29sb3JzID0gW1xuICAgICdwcmltYXJ5JyxcbiAgICAnc2Vjb25kYXJ5JyxcbiAgICAndGVydGlhcnknLFxuICAgICdzdWNjZXNzJyxcbiAgICAnd2FybmluZycsXG4gICAgJ2RhbmdlcicsXG4gICAgJ2xpZ2h0JyxcbiAgICAnbWVkaXVtJyxcbiAgICAnZGFyaycsXG4gIF07XG5cbiAgLy8gVmVyaWZpY2FyIHNpIGVsIGNvbG9yIGVzIHVuIGNvbG9yIGRlIElvbmljXG4gIGlmIChpb25pY0NvbG9ycy5pbmNsdWRlcyhjb2xvcikpIHtcbiAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgO1xuICB9XG5cbiAgLy8gU2kgbm8gZXMgdW5hIHZhcmlhYmxlIENTUyBuaSB1biBjb2xvciBkZSBJb25pYywgZGV2b2x2ZXIgZWwgY29sb3IgdGFsIGN1YWxcbiAgcmV0dXJuIGNvbG9yO1xufVxuIl19
|
|
@@ -1,2 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Removes diacritical marks (accents) from a string using Unicode normalization.
|
|
3
|
+
* Useful for text search and comparison.
|
|
4
|
+
*
|
|
5
|
+
* @param text The input string
|
|
6
|
+
* @returns The normalized string without diacritical marks
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* replaceSpecialChars('canción') // returns 'cancion'
|
|
10
|
+
*/
|
|
1
11
|
export const replaceSpecialChars = (text) => text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC91dGlscy90ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlbW92ZXMgZGlhY3JpdGljYWwgbWFya3MgKGFjY2VudHMpIGZyb20gYSBzdHJpbmcgdXNpbmcgVW5pY29kZSBub3JtYWxpemF0aW9uLlxuICogVXNlZnVsIGZvciB0ZXh0IHNlYXJjaCBhbmQgY29tcGFyaXNvbi5cbiAqXG4gKiBAcGFyYW0gdGV4dCBUaGUgaW5wdXQgc3RyaW5nXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBzdHJpbmcgd2l0aG91dCBkaWFjcml0aWNhbCBtYXJrc1xuICpcbiAqIEBleGFtcGxlXG4gKiByZXBsYWNlU3BlY2lhbENoYXJzKCdjYW5jacOzbicpIC8vIHJldHVybnMgJ2NhbmNpb24nXG4gKi9cbmV4cG9ydCBjb25zdCByZXBsYWNlU3BlY2lhbENoYXJzID0gKHRleHQ6IHN0cmluZykgPT5cbiAgdGV4dC5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcbiJdfQ==
|