mis-crystal-design-system 18.0.25 → 18.1.0-signal-test
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/action-list/action-list.component.d.ts +17 -15
- package/async-search-dropdown/async-dropdown.component.d.ts +43 -61
- package/button/button.component.d.ts +35 -13
- package/button/button.directive.d.ts +10 -8
- package/button/button.directive.scss +13 -15
- package/checkbox/checkbox.component.d.ts +15 -12
- package/chip/chip.component.d.ts +9 -11
- package/datepicker_v2/models/dp-config.model.d.ts +1 -0
- package/datepicker_v2/tz-datepicker.directive.d.ts +15 -18
- package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +42 -21
- package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +12 -14
- package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +46 -23
- package/drawer/drawer-body/drawer-body.component.d.ts +2 -2
- package/drawer/drawer.scss +1 -1
- package/dropdown/calculate-container-height.directive.d.ts +7 -8
- package/dropdown/dropdown.component.d.ts +41 -49
- package/dynamic-form/dynamic-form.component.d.ts +20 -16
- package/esm2022/action-list/action-list.component.mjs +113 -90
- package/esm2022/async-search-dropdown/async-dropdown.component.mjs +257 -327
- package/esm2022/button/button.component.mjs +56 -49
- package/esm2022/button/button.directive.mjs +36 -40
- package/esm2022/checkbox/checkbox.component.mjs +75 -70
- package/esm2022/chip/chip.component.mjs +20 -33
- package/esm2022/datepicker_v2/models/dp-config.model.mjs +1 -1
- package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +42 -71
- package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +203 -173
- package/esm2022/datepicker_v2/utils/index.mjs +2 -1
- package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +26 -51
- package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +283 -236
- package/esm2022/drawer/drawer-body/drawer-body.component.mjs +8 -7
- package/esm2022/dropdown/calculate-container-height.directive.mjs +25 -22
- package/esm2022/dropdown/dropdown.component.mjs +163 -187
- package/esm2022/dynamic-form/dynamic-form.component.mjs +119 -73
- package/esm2022/fab/fab.component.mjs +30 -34
- package/esm2022/filter/filter-panel/filter-panel.component.mjs +61 -59
- package/esm2022/input/directives/input/input.directive.mjs +22 -26
- package/esm2022/input/mis-input.component.mjs +42 -46
- package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +42 -52
- package/esm2022/loader/loader.component.mjs +8 -11
- package/esm2022/mobile-filter/mobile-filter.component.mjs +62 -62
- package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +11 -9
- package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +235 -281
- package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +250 -287
- package/esm2022/phone-input/phone-input.component.mjs +21 -43
- package/esm2022/public-api.mjs +1 -1
- package/esm2022/radio-button/radio-button.component.mjs +15 -27
- package/esm2022/ske-loader/ske-loader.component.mjs +15 -29
- package/esm2022/slider/slider.component.mjs +23 -33
- package/esm2022/slider/slider.module.mjs +4 -11
- package/esm2022/snackbar/snackbar/snackbar.component.mjs +21 -15
- package/esm2022/snackbar/snackbar.service.mjs +3 -2
- package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +231 -344
- package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +77 -105
- package/esm2022/star-rating/star-rating.component.mjs +58 -72
- package/esm2022/switch/switch.component.mjs +34 -36
- package/esm2022/table/actions-cell/actions-cell.component.mjs +56 -55
- package/esm2022/table/custom-table-cell.directive.mjs +22 -18
- package/esm2022/table/filter/filter.component.mjs +60 -42
- package/esm2022/table/sort-icons.directive.mjs +16 -8
- package/esm2022/table/sub-table/sub-table.component.mjs +42 -45
- package/esm2022/table/table.component.mjs +182 -166
- package/esm2022/timepicker/timepicker.component.mjs +245 -160
- package/esm2022/timepicker/timepicker.directive.mjs +3 -2
- package/esm2022/timerangepicker/timerangepicker.component.mjs +200 -159
- package/esm2022/toast/toast.component.mjs +7 -8
- package/esm2022/toast/toast.data.service.mjs +15 -9
- package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +12 -12
- package/esm2022/tooltip/tooltip.directive.mjs +4 -4
- package/esm2022/virtual-scroll/virtual-scroll.component.mjs +57 -59
- package/fab/fab.component.d.ts +12 -8
- package/fesm2022/mis-crystal-design-system-action-list.mjs +112 -89
- package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +254 -325
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-button.mjs +89 -86
- package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-checkbox.mjs +74 -69
- package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-chip.mjs +19 -32
- package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +243 -241
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +306 -284
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-drawer.mjs +7 -6
- package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dropdown.mjs +184 -205
- package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +119 -73
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-fab.mjs +29 -33
- package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-filter.mjs +60 -58
- package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input-stepper.mjs +41 -51
- package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input.mjs +62 -71
- package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-loader.mjs +7 -10
- package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +61 -61
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-modal.mjs +10 -8
- package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +233 -279
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +249 -286
- package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-phone-input.mjs +20 -42
- package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-radio-button.mjs +14 -26
- package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs +14 -28
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-slider.mjs +25 -42
- package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-snackbar.mjs +22 -15
- package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +305 -446
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-star-rating.mjs +57 -71
- package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-switch.mjs +33 -35
- package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +368 -324
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timepicker.mjs +246 -160
- package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +199 -158
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-toast.mjs +19 -14
- package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-tooltip.mjs +14 -14
- package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +57 -59
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system.mjs.map +1 -1
- package/filter/filter-panel/filter-panel.component.d.ts +14 -14
- package/input/directives/input/input.directive.d.ts +6 -10
- package/input/mis-input.component.d.ts +12 -13
- package/input/mis-input.component.scss +18 -18
- package/input-stepper/input-stepper/input-stepper.component.d.ts +8 -7
- package/loader/loader.component.d.ts +3 -6
- package/mobile-filter/mobile-filter.component.d.ts +15 -15
- package/modal/modal.scss +1 -1
- package/modal/module-wrapper/module-wrapper.component.d.ts +2 -3
- package/multi-select-dropdown/multi-select-dropdown.component.d.ts +89 -51
- package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +99 -56
- package/package.json +17 -23
- package/phone-input/phone-input.component.d.ts +16 -18
- package/radio-button/radio-button.component.d.ts +9 -11
- package/ske-loader/ske-loader.component.d.ts +8 -11
- package/slider/slider.component.d.ts +8 -11
- package/slider/slider.module.d.ts +1 -2
- package/snackbar/snackbar/snackbar.component.d.ts +3 -3
- package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +35 -35
- package/specificdatepicker/tz-specificdatepicker.directive.d.ts +24 -28
- package/star-rating/star-rating.component.d.ts +18 -18
- package/styles/mis-color-constants.scss +0 -204
- package/styles/mis-icons.scss +56 -56
- package/styles/mis-old-icon-styles.scss +21 -21
- package/switch/switch.component.d.ts +8 -10
- package/table/actions-cell/actions-cell.component.d.ts +14 -14
- package/table/custom-table-cell.directive.d.ts +3 -3
- package/table/filter/filter.component.d.ts +9 -9
- package/table/sub-table/sub-table.component.d.ts +5 -5
- package/table/table.component.d.ts +38 -35
- package/timepicker/timepicker.component.d.ts +29 -28
- package/timerangepicker/timerangepicker.component.d.ts +36 -33
- package/toast/toast.data.service.d.ts +1 -1
- package/tooltip/tooltip-container/tooltip.component.d.ts +4 -4
- package/virtual-scroll/virtual-scroll.component.d.ts +8 -9
- package/dynamic-theme/branding.types.d.ts +0 -84
- package/dynamic-theme/dynamic-theme.module.d.ts +0 -9
- package/dynamic-theme/dynamic-theme.service.d.ts +0 -89
- package/dynamic-theme/index.d.ts +0 -1
- package/dynamic-theme/public_api.d.ts +0 -3
- package/esm2022/dynamic-theme/branding.types.mjs +0 -93
- package/esm2022/dynamic-theme/dynamic-theme.module.mjs +0 -25
- package/esm2022/dynamic-theme/dynamic-theme.service.mjs +0 -193
- package/esm2022/dynamic-theme/index.mjs +0 -2
- package/esm2022/dynamic-theme/mis-crystal-design-system-dynamic-theme.mjs +0 -5
- package/esm2022/dynamic-theme/public_api.mjs +0 -4
- package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs +0 -313
- package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs.map +0 -1
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, NgModule } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject } from 'rxjs';
|
|
4
|
-
|
|
5
|
-
var BrandingTypes;
|
|
6
|
-
(function (BrandingTypes) {
|
|
7
|
-
BrandingTypes.defaultTheme = {
|
|
8
|
-
// Brand
|
|
9
|
-
brandPrimary: "#0937B2",
|
|
10
|
-
brandPrimaryLight: "#3C68D0",
|
|
11
|
-
brandPrimaryDark: "#062A99",
|
|
12
|
-
brandPrimaryDarker: "#041F80",
|
|
13
|
-
brandPrimaryLighter: "#638FE7",
|
|
14
|
-
brandPrimaryLightest: "#CBDDFB",
|
|
15
|
-
brandPrimaryHover: "#F0F3FA",
|
|
16
|
-
brandPrimaryActive: "#DAE1F3",
|
|
17
|
-
brandSecondary: "#ED711C",
|
|
18
|
-
brandSecondaryLight: "#F09E65",
|
|
19
|
-
brandSecondaryDark: "#B23600",
|
|
20
|
-
brandSecondaryLighter: "#FFC6F2",
|
|
21
|
-
brandAccent: "#10ADAE",
|
|
22
|
-
brandAccentLight: "#16CBBC",
|
|
23
|
-
brandAccentDark: "#035F6B",
|
|
24
|
-
brandAccentLighter: "#ACDADA",
|
|
25
|
-
// Semantic
|
|
26
|
-
brandSuccess: "#38AF49",
|
|
27
|
-
brandSuccessLight: "#4CAF50",
|
|
28
|
-
brandSuccessDark: "#216531",
|
|
29
|
-
brandSuccessLighter: "#E4F5E9",
|
|
30
|
-
brandSuccessLightest: "#F1FFF3",
|
|
31
|
-
brandError: "#B00020",
|
|
32
|
-
brandErrorLight: "#F04E4E",
|
|
33
|
-
brandErrorDark: "#A60060",
|
|
34
|
-
brandErrorLighter: "#FAE1EA",
|
|
35
|
-
brandErrorLightest: "#FDF2F2",
|
|
36
|
-
brandWarning: "#FF9D00",
|
|
37
|
-
brandWarningLight: "#D4900C",
|
|
38
|
-
brandWarningDark: "#624000",
|
|
39
|
-
brandWarningLighter: "#F4E7C3",
|
|
40
|
-
brandWarningLightest: "#FAEFED",
|
|
41
|
-
brandInfo: "#0091FF",
|
|
42
|
-
brandInfoLight: "#35A1FF",
|
|
43
|
-
brandInfoDark: "#0087B2",
|
|
44
|
-
brandInfoLighter: "#CFECF9",
|
|
45
|
-
// Text
|
|
46
|
-
textPrimary: "#181F33",
|
|
47
|
-
textSecondary: "#6A737D",
|
|
48
|
-
textTertiary: "#929DAB",
|
|
49
|
-
textDisabled: "#C8CDD3",
|
|
50
|
-
textPrimary87: "rgba(24, 31, 51, 0.87)",
|
|
51
|
-
textPrimary60: "rgba(24, 31, 51, 0.60)",
|
|
52
|
-
textPrimary38: "rgba(24, 31, 51, 0.38)",
|
|
53
|
-
textPrimary12: "rgba(24, 31, 51, 0.12)",
|
|
54
|
-
// Background
|
|
55
|
-
bgPrimary: "#FFFFFF",
|
|
56
|
-
bgSecondary: "#FAFAFA",
|
|
57
|
-
bgTertiary: "#F5F5F5",
|
|
58
|
-
bgOverlay: "rgba(0, 0, 0, 0.32)",
|
|
59
|
-
bgOverlayLight: "rgba(0, 0, 0, 0.12)",
|
|
60
|
-
bgOverlayLighter: "rgba(0, 0, 0, 0.08)",
|
|
61
|
-
bgOverlayLightest: "rgba(0, 0, 0, 0.04)",
|
|
62
|
-
// Border
|
|
63
|
-
borderPrimary: "#E0E0E0",
|
|
64
|
-
borderSecondary: "#D6DCE2",
|
|
65
|
-
borderTertiary: "#C8CDD3",
|
|
66
|
-
borderLight: "#F1F4F8",
|
|
67
|
-
borderPrimary12: "rgba(0, 0, 0, 0.12)",
|
|
68
|
-
borderPrimary08: "rgba(0, 0, 0, 0.08)",
|
|
69
|
-
borderPrimary06: "rgba(0, 0, 0, 0.06)",
|
|
70
|
-
// Shadows
|
|
71
|
-
shadowPrimary: "rgba(0, 0, 0, 0.12)",
|
|
72
|
-
shadowSecondary: "rgba(0, 0, 0, 0.08)",
|
|
73
|
-
shadowTertiary: "rgba(0, 0, 0, 0.04)",
|
|
74
|
-
shadowLight: "rgba(0, 0, 0, 0.06)",
|
|
75
|
-
// Status
|
|
76
|
-
statusAvailable: "#929DAB",
|
|
77
|
-
statusUnavailable: "#CCD3DA",
|
|
78
|
-
statusHotseat: "#857BFF",
|
|
79
|
-
statusMultiteam: "#10ADAE",
|
|
80
|
-
statusSelected: "#10ADAE",
|
|
81
|
-
statusUpcoming: "#D4900C",
|
|
82
|
-
statusRoom: "#38AF49",
|
|
83
|
-
statusRoomBooked: "#B23600",
|
|
84
|
-
statusRoomUnavailable: "#181F33",
|
|
85
|
-
// Team
|
|
86
|
-
teamColor1: "#F8C52E",
|
|
87
|
-
teamColor2: "#FA8E20",
|
|
88
|
-
teamColor3: "#987CDD",
|
|
89
|
-
teamColor4: "#16CBBC",
|
|
90
|
-
teamColor5: "#E65010",
|
|
91
|
-
teamColor6: "#A60060",
|
|
92
|
-
teamColor7: "#ED323B",
|
|
93
|
-
teamColor8: "#35A1FF",
|
|
94
|
-
teamColor9: "#80D348",
|
|
95
|
-
};
|
|
96
|
-
})(BrandingTypes || (BrandingTypes = {}));
|
|
97
|
-
|
|
98
|
-
class DynamicThemeService {
|
|
99
|
-
constructor() {
|
|
100
|
-
this.currentThemeSubject = new BehaviorSubject(BrandingTypes.defaultTheme);
|
|
101
|
-
this.currentTheme$ = this.currentThemeSubject.asObservable();
|
|
102
|
-
// Initialize with default theme on service creation
|
|
103
|
-
this.applyTheme(BrandingTypes.defaultTheme);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Apply a complete theme configuration to the root element
|
|
107
|
-
* @param theme - ThemeColors object containing all color values
|
|
108
|
-
*/
|
|
109
|
-
applyTheme(theme) {
|
|
110
|
-
const root = document.documentElement;
|
|
111
|
-
Object.entries(theme).forEach(([camelName, value]) => {
|
|
112
|
-
const cssVar = `--${this.camelToKebabCase(camelName)}`;
|
|
113
|
-
root.style.setProperty(cssVar, String(value));
|
|
114
|
-
});
|
|
115
|
-
// Update the current theme subject
|
|
116
|
-
this.currentThemeSubject.next(theme);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Apply partial theme updates (only specified colors will be updated)
|
|
120
|
-
* @param partialTheme - Partial ThemeColors object with only the colors to update
|
|
121
|
-
*/
|
|
122
|
-
applyPartialTheme(partialTheme) {
|
|
123
|
-
const root = document.documentElement;
|
|
124
|
-
Object.entries(partialTheme).forEach(([camelName, value]) => {
|
|
125
|
-
if (value !== undefined) {
|
|
126
|
-
const cssVar = `--${this.camelToKebabCase(camelName)}`;
|
|
127
|
-
root.style.setProperty(cssVar, String(value));
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
// Update the current theme with merged values
|
|
131
|
-
const currentTheme = this.currentThemeSubject.value;
|
|
132
|
-
const updatedTheme = { ...currentTheme, ...partialTheme };
|
|
133
|
-
this.currentThemeSubject.next(updatedTheme);
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Set a single color property
|
|
137
|
-
* @param colorKey - The camelCase key of the color property
|
|
138
|
-
* @param colorValue - The color value (hex, rgb, rgba, etc.)
|
|
139
|
-
*/
|
|
140
|
-
setColorProperty(colorKey, colorValue) {
|
|
141
|
-
const root = document.documentElement;
|
|
142
|
-
const cssVar = `--${this.camelToKebabCase(colorKey)}`;
|
|
143
|
-
root.style.setProperty(cssVar, colorValue);
|
|
144
|
-
// Update the current theme
|
|
145
|
-
const currentTheme = this.currentThemeSubject.value;
|
|
146
|
-
const updatedTheme = { ...currentTheme, [colorKey]: colorValue };
|
|
147
|
-
this.currentThemeSubject.next(updatedTheme);
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Get the current theme colors
|
|
151
|
-
* @returns Current ThemeColors object
|
|
152
|
-
*/
|
|
153
|
-
getCurrentTheme() {
|
|
154
|
-
return this.currentThemeSubject.value;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Get a specific color value from the current theme
|
|
158
|
-
* @param colorKey - The camelCase key of the color property
|
|
159
|
-
* @returns The color value as string
|
|
160
|
-
*/
|
|
161
|
-
getColorProperty(colorKey) {
|
|
162
|
-
return this.currentThemeSubject.value[colorKey];
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Reset theme to default values
|
|
166
|
-
*/
|
|
167
|
-
resetToDefault() {
|
|
168
|
-
this.applyTheme(BrandingTypes.defaultTheme);
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Remove a specific CSS custom property from the root element
|
|
172
|
-
* @param colorKey - The camelCase key of the color property to remove
|
|
173
|
-
*/
|
|
174
|
-
removeColorProperty(colorKey) {
|
|
175
|
-
const root = document.documentElement;
|
|
176
|
-
const cssVar = `--${this.camelToKebabCase(colorKey)}`;
|
|
177
|
-
root.style.removeProperty(cssVar);
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Get all CSS custom properties currently set on the root element
|
|
181
|
-
* @returns Object with CSS variable names as keys and their values
|
|
182
|
-
*/
|
|
183
|
-
getAllCSSVariables() {
|
|
184
|
-
const root = document.documentElement;
|
|
185
|
-
const computedStyle = getComputedStyle(root);
|
|
186
|
-
const cssVars = {};
|
|
187
|
-
// Get all CSS custom properties that start with our prefix
|
|
188
|
-
for (let i = 0; i < computedStyle.length; i++) {
|
|
189
|
-
const property = computedStyle[i];
|
|
190
|
-
if (property.startsWith('--brand-') ||
|
|
191
|
-
property.startsWith('--text-') ||
|
|
192
|
-
property.startsWith('--bg-') ||
|
|
193
|
-
property.startsWith('--border-') ||
|
|
194
|
-
property.startsWith('--shadow-') ||
|
|
195
|
-
property.startsWith('--status-') ||
|
|
196
|
-
property.startsWith('--team-color-')) {
|
|
197
|
-
cssVars[property] = computedStyle.getPropertyValue(property).trim();
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
return cssVars;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Apply theme with validation
|
|
204
|
-
* @param theme - ThemeColors object to validate and apply
|
|
205
|
-
* @returns boolean indicating if the theme was successfully applied
|
|
206
|
-
*/
|
|
207
|
-
applyThemeWithValidation(theme) {
|
|
208
|
-
try {
|
|
209
|
-
// Basic validation - check if all required properties exist
|
|
210
|
-
const requiredKeys = Object.keys(BrandingTypes.defaultTheme);
|
|
211
|
-
const themeKeys = Object.keys(theme);
|
|
212
|
-
const missingKeys = requiredKeys.filter(key => !themeKeys.includes(key));
|
|
213
|
-
if (missingKeys.length > 0) {
|
|
214
|
-
console.warn('DynamicThemeService: Missing theme properties:', missingKeys);
|
|
215
|
-
// Apply with default values for missing keys
|
|
216
|
-
const completeTheme = { ...BrandingTypes.defaultTheme, ...theme };
|
|
217
|
-
this.applyTheme(completeTheme);
|
|
218
|
-
return false;
|
|
219
|
-
}
|
|
220
|
-
this.applyTheme(theme);
|
|
221
|
-
return true;
|
|
222
|
-
}
|
|
223
|
-
catch (error) {
|
|
224
|
-
console.error('DynamicThemeService: Error applying theme:', error);
|
|
225
|
-
return false;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Convert camelCase to kebab-case for CSS custom properties
|
|
230
|
-
* @param camelCase - The camelCase string to convert
|
|
231
|
-
* @returns kebab-case string
|
|
232
|
-
*/
|
|
233
|
-
camelToKebabCase(camelCase) {
|
|
234
|
-
return camelCase.replace(/([A-Z])/g, '-$1').toLowerCase();
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Convert kebab-case to camelCase
|
|
238
|
-
* @param kebabCase - The kebab-case string to convert
|
|
239
|
-
* @returns camelCase string
|
|
240
|
-
*/
|
|
241
|
-
kebabToCamelCase(kebabCase) {
|
|
242
|
-
return kebabCase.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Create a theme preset from current applied theme
|
|
246
|
-
* @param presetName - Name for the theme preset
|
|
247
|
-
* @returns Theme preset object
|
|
248
|
-
*/
|
|
249
|
-
createThemePreset(presetName) {
|
|
250
|
-
return {
|
|
251
|
-
name: presetName,
|
|
252
|
-
theme: { ...this.getCurrentTheme() }
|
|
253
|
-
};
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Export current theme as JSON string
|
|
257
|
-
* @returns JSON string representation of current theme
|
|
258
|
-
*/
|
|
259
|
-
exportThemeAsJSON() {
|
|
260
|
-
return JSON.stringify(this.getCurrentTheme(), null, 2);
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Import theme from JSON string
|
|
264
|
-
* @param jsonString - JSON string representation of theme
|
|
265
|
-
* @returns boolean indicating success
|
|
266
|
-
*/
|
|
267
|
-
importThemeFromJSON(jsonString) {
|
|
268
|
-
try {
|
|
269
|
-
const theme = JSON.parse(jsonString);
|
|
270
|
-
return this.applyThemeWithValidation(theme);
|
|
271
|
-
}
|
|
272
|
-
catch (error) {
|
|
273
|
-
console.error('DynamicThemeService: Error importing theme from JSON:', error);
|
|
274
|
-
return false;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
static { this.ɵfac = function DynamicThemeService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicThemeService)(); }; }
|
|
278
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DynamicThemeService, factory: DynamicThemeService.ɵfac, providedIn: 'root' }); }
|
|
279
|
-
}
|
|
280
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicThemeService, [{
|
|
281
|
-
type: Injectable,
|
|
282
|
-
args: [{
|
|
283
|
-
providedIn: 'root'
|
|
284
|
-
}]
|
|
285
|
-
}], () => [], null); })();
|
|
286
|
-
|
|
287
|
-
class DynamicThemeModule {
|
|
288
|
-
constructor(themeService) {
|
|
289
|
-
this.themeService = themeService;
|
|
290
|
-
// Initialize the theme service when module is loaded
|
|
291
|
-
// This ensures the default theme is applied
|
|
292
|
-
}
|
|
293
|
-
static { this.ɵfac = function DynamicThemeModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicThemeModule)(i0.ɵɵinject(DynamicThemeService)); }; }
|
|
294
|
-
static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: DynamicThemeModule }); }
|
|
295
|
-
static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
|
|
296
|
-
DynamicThemeService
|
|
297
|
-
] }); }
|
|
298
|
-
}
|
|
299
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicThemeModule, [{
|
|
300
|
-
type: NgModule,
|
|
301
|
-
args: [{
|
|
302
|
-
providers: [
|
|
303
|
-
DynamicThemeService
|
|
304
|
-
]
|
|
305
|
-
}]
|
|
306
|
-
}], () => [{ type: DynamicThemeService }], null); })();
|
|
307
|
-
|
|
308
|
-
/**
|
|
309
|
-
* Generated bundle index. Do not edit.
|
|
310
|
-
*/
|
|
311
|
-
|
|
312
|
-
export { BrandingTypes, DynamicThemeModule, DynamicThemeService };
|
|
313
|
-
//# sourceMappingURL=mis-crystal-design-system-dynamic-theme.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-dynamic-theme.mjs","sources":["../../../projects/mis-components/dynamic-theme/branding.types.ts","../../../projects/mis-components/dynamic-theme/dynamic-theme.service.ts","../../../projects/mis-components/dynamic-theme/dynamic-theme.module.ts","../../../projects/mis-components/dynamic-theme/mis-crystal-design-system-dynamic-theme.ts"],"sourcesContent":["export namespace BrandingTypes {\n\n export interface ThemeColors {\n // Brand\n brandPrimary: string;\n brandPrimaryLight: string;\n brandPrimaryDark: string;\n brandPrimaryDarker: string;\n brandPrimaryLighter: string;\n brandPrimaryLightest: string;\n brandPrimaryHover: string;\n brandPrimaryActive: string;\n\n brandSecondary: string;\n brandSecondaryLight: string;\n brandSecondaryDark: string;\n brandSecondaryLighter: string;\n\n brandAccent: string;\n brandAccentLight: string;\n brandAccentDark: string;\n brandAccentLighter: string;\n\n // Semantic\n brandSuccess: string;\n brandSuccessLight: string;\n brandSuccessDark: string;\n brandSuccessLighter: string;\n brandSuccessLightest: string;\n\n brandError: string;\n brandErrorLight: string;\n brandErrorDark: string;\n brandErrorLighter: string;\n brandErrorLightest: string;\n\n brandWarning: string;\n brandWarningLight: string;\n brandWarningDark: string;\n brandWarningLighter: string;\n brandWarningLightest: string;\n\n brandInfo: string;\n brandInfoLight: string;\n brandInfoDark: string;\n brandInfoLighter: string;\n\n // Text\n textPrimary: string;\n textSecondary: string;\n textTertiary: string;\n textDisabled: string;\n\n textPrimary87: string;\n textPrimary60: string;\n textPrimary38: string;\n textPrimary12: string;\n\n // Background\n bgPrimary: string;\n bgSecondary: string;\n bgTertiary: string;\n bgOverlay: string;\n bgOverlayLight: string;\n bgOverlayLighter: string;\n bgOverlayLightest: string;\n\n // Border\n borderPrimary: string;\n borderSecondary: string;\n borderTertiary: string;\n borderLight: string;\n borderPrimary12: string;\n borderPrimary08: string;\n borderPrimary06: string;\n\n // Shadows\n shadowPrimary: string;\n shadowSecondary: string;\n shadowTertiary: string;\n shadowLight: string;\n\n // Status\n statusAvailable: string;\n statusUnavailable: string;\n statusHotseat: string;\n statusMultiteam: string;\n statusSelected: string;\n statusUpcoming: string;\n statusRoom: string;\n statusRoomBooked: string;\n statusRoomUnavailable: string;\n\n // Team\n teamColor1: string;\n teamColor2: string;\n teamColor3: string;\n teamColor4: string;\n teamColor5: string;\n teamColor6: string;\n teamColor7: string;\n teamColor8: string;\n teamColor9: string;\n }\n \n export const defaultTheme: ThemeColors = {\n // Brand\n brandPrimary: \"#0937B2\",\n brandPrimaryLight: \"#3C68D0\",\n brandPrimaryDark: \"#062A99\",\n brandPrimaryDarker: \"#041F80\",\n brandPrimaryLighter: \"#638FE7\",\n brandPrimaryLightest: \"#CBDDFB\",\n brandPrimaryHover: \"#F0F3FA\",\n brandPrimaryActive: \"#DAE1F3\",\n \n brandSecondary: \"#ED711C\",\n brandSecondaryLight: \"#F09E65\",\n brandSecondaryDark: \"#B23600\",\n brandSecondaryLighter: \"#FFC6F2\",\n \n brandAccent: \"#10ADAE\",\n brandAccentLight: \"#16CBBC\",\n brandAccentDark: \"#035F6B\",\n brandAccentLighter: \"#ACDADA\",\n \n // Semantic\n brandSuccess: \"#38AF49\",\n brandSuccessLight: \"#4CAF50\",\n brandSuccessDark: \"#216531\",\n brandSuccessLighter: \"#E4F5E9\",\n brandSuccessLightest: \"#F1FFF3\",\n \n brandError: \"#B00020\",\n brandErrorLight: \"#F04E4E\",\n brandErrorDark: \"#A60060\",\n brandErrorLighter: \"#FAE1EA\",\n brandErrorLightest: \"#FDF2F2\",\n \n brandWarning: \"#FF9D00\",\n brandWarningLight: \"#D4900C\",\n brandWarningDark: \"#624000\",\n brandWarningLighter: \"#F4E7C3\",\n brandWarningLightest: \"#FAEFED\",\n \n brandInfo: \"#0091FF\",\n brandInfoLight: \"#35A1FF\",\n brandInfoDark: \"#0087B2\",\n brandInfoLighter: \"#CFECF9\",\n \n // Text\n textPrimary: \"#181F33\",\n textSecondary: \"#6A737D\",\n textTertiary: \"#929DAB\",\n textDisabled: \"#C8CDD3\",\n \n textPrimary87: \"rgba(24, 31, 51, 0.87)\",\n textPrimary60: \"rgba(24, 31, 51, 0.60)\",\n textPrimary38: \"rgba(24, 31, 51, 0.38)\",\n textPrimary12: \"rgba(24, 31, 51, 0.12)\",\n \n // Background\n bgPrimary: \"#FFFFFF\",\n bgSecondary: \"#FAFAFA\",\n bgTertiary: \"#F5F5F5\",\n bgOverlay: \"rgba(0, 0, 0, 0.32)\",\n bgOverlayLight: \"rgba(0, 0, 0, 0.12)\",\n bgOverlayLighter: \"rgba(0, 0, 0, 0.08)\",\n bgOverlayLightest: \"rgba(0, 0, 0, 0.04)\",\n \n // Border\n borderPrimary: \"#E0E0E0\",\n borderSecondary: \"#D6DCE2\",\n borderTertiary: \"#C8CDD3\",\n borderLight: \"#F1F4F8\",\n borderPrimary12: \"rgba(0, 0, 0, 0.12)\",\n borderPrimary08: \"rgba(0, 0, 0, 0.08)\",\n borderPrimary06: \"rgba(0, 0, 0, 0.06)\",\n \n // Shadows\n shadowPrimary: \"rgba(0, 0, 0, 0.12)\",\n shadowSecondary: \"rgba(0, 0, 0, 0.08)\",\n shadowTertiary: \"rgba(0, 0, 0, 0.04)\",\n shadowLight: \"rgba(0, 0, 0, 0.06)\",\n \n // Status\n statusAvailable: \"#929DAB\",\n statusUnavailable: \"#CCD3DA\",\n statusHotseat: \"#857BFF\",\n statusMultiteam: \"#10ADAE\",\n statusSelected: \"#10ADAE\",\n statusUpcoming: \"#D4900C\",\n statusRoom: \"#38AF49\",\n statusRoomBooked: \"#B23600\",\n statusRoomUnavailable: \"#181F33\",\n \n // Team\n teamColor1: \"#F8C52E\",\n teamColor2: \"#FA8E20\",\n teamColor3: \"#987CDD\",\n teamColor4: \"#16CBBC\",\n teamColor5: \"#E65010\",\n teamColor6: \"#A60060\",\n teamColor7: \"#ED323B\",\n teamColor8: \"#35A1FF\",\n teamColor9: \"#80D348\",\n };\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { BrandingTypes } from './branding.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicThemeService {\n private currentThemeSubject = new BehaviorSubject<BrandingTypes.ThemeColors>(BrandingTypes.defaultTheme);\n public currentTheme$: Observable<BrandingTypes.ThemeColors> = this.currentThemeSubject.asObservable();\n\n constructor() {\n // Initialize with default theme on service creation\n this.applyTheme(BrandingTypes.defaultTheme);\n }\n\n /**\n * Apply a complete theme configuration to the root element\n * @param theme - ThemeColors object containing all color values\n */\n applyTheme(theme: BrandingTypes.ThemeColors): void {\n const root = document.documentElement;\n \n Object.entries(theme).forEach(([camelName, value]) => {\n const cssVar = `--${this.camelToKebabCase(camelName)}`;\n root.style.setProperty(cssVar, String(value));\n });\n\n // Update the current theme subject\n this.currentThemeSubject.next(theme);\n }\n\n /**\n * Apply partial theme updates (only specified colors will be updated)\n * @param partialTheme - Partial ThemeColors object with only the colors to update\n */\n applyPartialTheme(partialTheme: Partial<BrandingTypes.ThemeColors>): void {\n const root = document.documentElement;\n \n Object.entries(partialTheme).forEach(([camelName, value]) => {\n if (value !== undefined) {\n const cssVar = `--${this.camelToKebabCase(camelName)}`;\n root.style.setProperty(cssVar, String(value));\n }\n });\n\n // Update the current theme with merged values\n const currentTheme = this.currentThemeSubject.value;\n const updatedTheme = { ...currentTheme, ...partialTheme };\n this.currentThemeSubject.next(updatedTheme);\n }\n\n /**\n * Set a single color property\n * @param colorKey - The camelCase key of the color property\n * @param colorValue - The color value (hex, rgb, rgba, etc.)\n */\n setColorProperty(colorKey: keyof BrandingTypes.ThemeColors, colorValue: string): void {\n const root = document.documentElement;\n const cssVar = `--${this.camelToKebabCase(colorKey)}`;\n root.style.setProperty(cssVar, colorValue);\n\n // Update the current theme\n const currentTheme = this.currentThemeSubject.value;\n const updatedTheme = { ...currentTheme, [colorKey]: colorValue };\n this.currentThemeSubject.next(updatedTheme);\n }\n\n /**\n * Get the current theme colors\n * @returns Current ThemeColors object\n */\n getCurrentTheme(): BrandingTypes.ThemeColors {\n return this.currentThemeSubject.value;\n }\n\n /**\n * Get a specific color value from the current theme\n * @param colorKey - The camelCase key of the color property\n * @returns The color value as string\n */\n getColorProperty(colorKey: keyof BrandingTypes.ThemeColors): string {\n return this.currentThemeSubject.value[colorKey];\n }\n\n /**\n * Reset theme to default values\n */\n resetToDefault(): void {\n this.applyTheme(BrandingTypes.defaultTheme);\n }\n\n /**\n * Remove a specific CSS custom property from the root element\n * @param colorKey - The camelCase key of the color property to remove\n */\n removeColorProperty(colorKey: keyof BrandingTypes.ThemeColors): void {\n const root = document.documentElement;\n const cssVar = `--${this.camelToKebabCase(colorKey)}`;\n root.style.removeProperty(cssVar);\n }\n\n /**\n * Get all CSS custom properties currently set on the root element\n * @returns Object with CSS variable names as keys and their values\n */\n getAllCSSVariables(): Record<string, string> {\n const root = document.documentElement;\n const computedStyle = getComputedStyle(root);\n const cssVars: Record<string, string> = {};\n\n // Get all CSS custom properties that start with our prefix\n for (let i = 0; i < computedStyle.length; i++) {\n const property = computedStyle[i];\n if (property.startsWith('--brand-') || \n property.startsWith('--text-') || \n property.startsWith('--bg-') || \n property.startsWith('--border-') || \n property.startsWith('--shadow-') || \n property.startsWith('--status-') || \n property.startsWith('--team-color-')) {\n cssVars[property] = computedStyle.getPropertyValue(property).trim();\n }\n }\n\n return cssVars;\n }\n\n /**\n * Apply theme with validation\n * @param theme - ThemeColors object to validate and apply\n * @returns boolean indicating if the theme was successfully applied\n */\n applyThemeWithValidation(theme: BrandingTypes.ThemeColors): boolean {\n try {\n // Basic validation - check if all required properties exist\n const requiredKeys = Object.keys(BrandingTypes.defaultTheme) as (keyof BrandingTypes.ThemeColors)[];\n const themeKeys = Object.keys(theme) as (keyof BrandingTypes.ThemeColors)[];\n \n const missingKeys = requiredKeys.filter(key => !themeKeys.includes(key));\n \n if (missingKeys.length > 0) {\n console.warn('DynamicThemeService: Missing theme properties:', missingKeys);\n // Apply with default values for missing keys\n const completeTheme = { ...BrandingTypes.defaultTheme, ...theme };\n this.applyTheme(completeTheme);\n return false;\n }\n\n this.applyTheme(theme);\n return true;\n } catch (error) {\n console.error('DynamicThemeService: Error applying theme:', error);\n return false;\n }\n }\n\n /**\n * Convert camelCase to kebab-case for CSS custom properties\n * @param camelCase - The camelCase string to convert\n * @returns kebab-case string\n */\n private camelToKebabCase(camelCase: string): string {\n return camelCase.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n\n /**\n * Convert kebab-case to camelCase\n * @param kebabCase - The kebab-case string to convert\n * @returns camelCase string\n */\n private kebabToCamelCase(kebabCase: string): string {\n return kebabCase.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());\n }\n\n /**\n * Create a theme preset from current applied theme\n * @param presetName - Name for the theme preset\n * @returns Theme preset object\n */\n createThemePreset(presetName: string): { name: string; theme: BrandingTypes.ThemeColors } {\n return {\n name: presetName,\n theme: { ...this.getCurrentTheme() }\n };\n }\n\n /**\n * Export current theme as JSON string\n * @returns JSON string representation of current theme\n */\n exportThemeAsJSON(): string {\n return JSON.stringify(this.getCurrentTheme(), null, 2);\n }\n\n /**\n * Import theme from JSON string\n * @param jsonString - JSON string representation of theme\n * @returns boolean indicating success\n */\n importThemeFromJSON(jsonString: string): boolean {\n try {\n const theme = JSON.parse(jsonString) as BrandingTypes.ThemeColors;\n return this.applyThemeWithValidation(theme);\n } catch (error) {\n console.error('DynamicThemeService: Error importing theme from JSON:', error);\n return false;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DynamicThemeService } from './dynamic-theme.service';\n\n@NgModule({\n providers: [\n DynamicThemeService\n ]\n})\nexport class DynamicThemeModule {\n constructor(private themeService: DynamicThemeService) {\n // Initialize the theme service when module is loaded\n // This ensures the default theme is applied\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DynamicThemeService"],"mappings":"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"}
|