mis-crystal-design-system 18.1.0-signal-test-1 → 18.1.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/async-search-dropdown/async-dropdown.component.d.ts +3 -3
- package/button/button.component.d.ts +0 -2
- package/button/button.directive.scss +71 -0
- package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +4 -0
- package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +9 -5
- package/drawer/drawer.scss +20 -0
- package/dropdown/dropdown.component.d.ts +1 -1
- package/dynamic-theme/branding.types.d.ts +84 -0
- package/dynamic-theme/dynamic-theme.module.d.ts +9 -0
- package/dynamic-theme/dynamic-theme.service.d.ts +89 -0
- package/dynamic-theme/index.d.ts +1 -0
- package/dynamic-theme/public_api.d.ts +3 -0
- package/esm2022/action-list/action-list.component.mjs +2 -2
- package/esm2022/async-search-dropdown/async-dropdown.component.mjs +10 -10
- package/esm2022/button/button.component.mjs +8 -16
- package/esm2022/checkbox/checkbox.component.mjs +4 -4
- package/esm2022/chip/chip.component.mjs +4 -4
- package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +17 -10
- package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +89 -34
- package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +6 -3
- package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +317 -142
- package/esm2022/drawer/drawer-body/drawer-body.component.mjs +4 -4
- package/esm2022/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form.component.mjs +2 -2
- package/esm2022/dynamic-theme/branding.types.mjs +93 -0
- package/esm2022/dynamic-theme/dynamic-theme.module.mjs +25 -0
- package/esm2022/dynamic-theme/dynamic-theme.service.mjs +193 -0
- package/esm2022/dynamic-theme/index.mjs +2 -0
- package/esm2022/dynamic-theme/mis-crystal-design-system-dynamic-theme.mjs +5 -0
- package/esm2022/dynamic-theme/public_api.mjs +4 -0
- package/esm2022/fab/fab.component.mjs +6 -6
- package/esm2022/filter/filter-panel/filter-panel.component.mjs +30 -29
- package/esm2022/input/directives/input/input.directive.mjs +28 -10
- package/esm2022/input/mis-input.component.mjs +19 -13
- package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +5 -5
- package/esm2022/loader/loader.component.mjs +13 -7
- package/esm2022/mobile-filter/mobile-filter.component.mjs +2 -2
- package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +4 -4
- package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +12 -7
- package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +2 -2
- package/esm2022/phone-input/phone-input.component.mjs +4 -4
- package/esm2022/public-api.mjs +1 -1
- package/esm2022/radio-button/radio-button.component.mjs +4 -4
- package/esm2022/ske-loader/ske-loader.component.mjs +4 -4
- package/esm2022/slider/slider.component.mjs +4 -4
- package/esm2022/snackbar/snackbar/snackbar.component.mjs +4 -4
- package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +25 -21
- package/esm2022/star-rating/star-rating.component.mjs +2 -2
- package/esm2022/switch/switch.component.mjs +4 -6
- package/esm2022/table/actions-cell/actions-cell.component.mjs +2 -2
- package/esm2022/table/filter/filter.component.mjs +2 -2
- package/esm2022/table/sub-table/sub-table.component.mjs +19 -6
- package/esm2022/table/table.component.mjs +53 -29
- package/esm2022/timepicker/timepicker.component.mjs +2 -2
- package/esm2022/toast/toast.component.mjs +6 -6
- package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +4 -4
- package/esm2022/virtual-scroll/virtual-scroll.component.mjs +4 -4
- package/fesm2022/mis-crystal-design-system-action-list.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +9 -9
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-button.mjs +7 -15
- package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-checkbox.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-chip.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +103 -41
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +321 -143
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-drawer.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dropdown.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs +313 -0
- package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs.map +1 -0
- package/fesm2022/mis-crystal-design-system-fab.mjs +5 -5
- package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-filter.mjs +29 -28
- package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input-stepper.mjs +4 -4
- package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input.mjs +45 -21
- package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-loader.mjs +12 -6
- package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-modal.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +11 -6
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-phone-input.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-radio-button.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-slider.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-snackbar.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +24 -20
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-star-rating.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-switch.mjs +3 -5
- package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +74 -38
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timepicker.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-toast.mjs +5 -5
- package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-tooltip.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +3 -3
- 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 +1 -1
- package/input/directives/input/input.directive.d.ts +3 -4
- package/input/mis-input.component.d.ts +3 -6
- package/input/mis-input.component.scss +188 -0
- package/loader/loader.component.d.ts +7 -1
- package/modal/modal.scss +9 -0
- package/package.json +13 -7
- package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +2 -2
- package/styles/fonts/icomoon.eot +0 -0
- package/styles/fonts/icomoon.svg +315 -0
- package/styles/fonts/icomoon.ttf +0 -0
- package/styles/fonts/icomoon.woff +0 -0
- package/styles/mis-borders-backgrounds.scss +764 -0
- package/styles/mis-color-constants.scss +353 -0
- package/styles/mis-flex.scss +321 -0
- package/styles/mis-fonts.scss +124 -0
- package/styles/mis-icons.scss +1054 -0
- package/styles/mis-mixins.scss +46 -0
- package/styles/mis-old-icon-styles.scss +498 -0
- package/styles/mis-spacing-sizing.scss +2590 -0
- package/styles/mis-typography.scss +462 -0
|
@@ -0,0 +1,313 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, signal, computed, Component,
|
|
2
|
+
import { input, signal, computed, Component, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import { trigger, transition, style, animate, state } from '@angular/animations';
|
|
4
4
|
import * as i1 from '@angular/common';
|
|
5
5
|
import { CommonModule } from '@angular/common';
|
|
@@ -102,7 +102,7 @@ class FabComponent {
|
|
|
102
102
|
i0.ɵɵtemplate(0, FabComponent_div_0_Template, 5, 5, "div", 0);
|
|
103
103
|
} if (rf & 2) {
|
|
104
104
|
i0.ɵɵproperty("ngIf", ctx.show());
|
|
105
|
-
} }, dependencies: [i1.NgForOf, i1.NgIf, i1.NgStyle], styles: [".fab-wrapper[_ngcontent-%COMP%]{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%]{position:relative;padding:0 0 16px 8px}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%] .fab-tooltip[_ngcontent-%COMP%]{position:absolute;background-color
|
|
105
|
+
} }, dependencies: [i1.NgForOf, i1.NgIf, i1.NgStyle], styles: ["[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.fab-wrapper[_ngcontent-%COMP%]{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%]{position:relative;padding:0 0 16px 8px}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%] .fab-tooltip[_ngcontent-%COMP%]{position:absolute;background-color:var(--text-primary, #181F33);border-radius:4px;color:var(--bg-primary, #FFFFFF);padding:8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;right:100%;top:calc(50% - 8px);transform:translateY(-50%)}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%] .fab-button[_ngcontent-%COMP%]{width:40px;height:40px;cursor:pointer;border-radius:50%;display:flex;justify-content:center;align-items:center}.fab-wrapper[_ngcontent-%COMP%] .fab-container[_ngcontent-%COMP%]{border-radius:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;width:56px;height:56px}.add-img[_ngcontent-%COMP%]{height:24px;width:24px}"], data: { animation: [
|
|
106
106
|
trigger("slideUpFab", [
|
|
107
107
|
transition(":enter", [
|
|
108
108
|
style({ transform: "translateY(50px)", opacity: 0 }),
|
|
@@ -116,11 +116,11 @@ class FabComponent {
|
|
|
116
116
|
transition("rotated => default", animate("300ms ease-out")),
|
|
117
117
|
transition("default => rotated", animate("200ms ease-in"))
|
|
118
118
|
])
|
|
119
|
-
] }
|
|
119
|
+
] } }); }
|
|
120
120
|
}
|
|
121
121
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FabComponent, [{
|
|
122
122
|
type: Component,
|
|
123
|
-
args: [{ selector: "mis-fab",
|
|
123
|
+
args: [{ selector: "mis-fab", animations: [
|
|
124
124
|
trigger("slideUpFab", [
|
|
125
125
|
transition(":enter", [
|
|
126
126
|
style({ transform: "translateY(50px)", opacity: 0 }),
|
|
@@ -134,7 +134,7 @@ class FabComponent {
|
|
|
134
134
|
transition("rotated => default", animate("300ms ease-out")),
|
|
135
135
|
transition("default => rotated", animate("200ms ease-in"))
|
|
136
136
|
])
|
|
137
|
-
], template: "<div class=\"fab-wrapper\" *ngIf=\"show()\">\n <div class=\"fab-items\" *ngIf=\"isOpen()\" @slideUpFab>\n <div class=\"fab-item\" *ngFor=\"let item of items().reverse(); let i = index\" (click)=\"clickItem(item)\">\n <div *ngIf=\"item.label\" class=\"fab-tooltip\">\n {{ item.label }}\n </div>\n <div\n class=\"fab-button\"\n [ngStyle]=\"{\n backgroundColor: item.backgroundColor || '#0937B2'\n }\"\n >\n <img [src]=\"item.icon\" class=\"add-img\" />\n </div>\n </div>\n </div>\n <div\n class=\"fab-container\"\n [ngStyle]=\"{\n backgroundColor: isOpen() ? computedOptions().backgroundColorOpened : computedOptions().backgroundColorClosed\n }\"\n (click)=\"toogleFab()\"\n >\n <svg\n [@rotateButton]=\"isOpen() ? 'rotated' : 'default'\"\n class=\"add-img\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1424 5.15607C13.1424 4.51759 12.6313 4 12.0009 4C11.3704 4 10.8594 4.51759 10.8594 5.15607V10.8421H5.14149C4.51106 10.8421 4 11.3597 4 11.9982C4 12.6367 4.51106 13.1543 5.14149 13.1543H10.8594V18.8439C10.8594 19.4824 11.3704 20 12.0009 20C12.6313 20 13.1424 19.4824 13.1424 18.8439V13.1543H18.8585C19.4889 13.1543 20 12.6367 20 11.9982C20 11.3597 19.4889 10.8421 18.8585 10.8421H13.1424V5.15607Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n</div>\n", styles: [".fab-wrapper{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper .fab-item{position:relative;padding:0 0 16px 8px}.fab-wrapper .fab-item .fab-tooltip{position:absolute;background-color
|
|
137
|
+
], template: "<div class=\"fab-wrapper\" *ngIf=\"show()\">\n <div class=\"fab-items\" *ngIf=\"isOpen()\" @slideUpFab>\n <div class=\"fab-item\" *ngFor=\"let item of items().reverse(); let i = index\" (click)=\"clickItem(item)\">\n <div *ngIf=\"item.label\" class=\"fab-tooltip\">\n {{ item.label }}\n </div>\n <div\n class=\"fab-button\"\n [ngStyle]=\"{\n backgroundColor: item.backgroundColor || '#0937B2'\n }\"\n >\n <img [src]=\"item.icon\" class=\"add-img\" />\n </div>\n </div>\n </div>\n <div\n class=\"fab-container\"\n [ngStyle]=\"{\n backgroundColor: isOpen() ? computedOptions().backgroundColorOpened : computedOptions().backgroundColorClosed\n }\"\n (click)=\"toogleFab()\"\n >\n <svg\n [@rotateButton]=\"isOpen() ? 'rotated' : 'default'\"\n class=\"add-img\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1424 5.15607C13.1424 4.51759 12.6313 4 12.0009 4C11.3704 4 10.8594 4.51759 10.8594 5.15607V10.8421H5.14149C4.51106 10.8421 4 11.3597 4 11.9982C4 12.6367 4.51106 13.1543 5.14149 13.1543H10.8594V18.8439C10.8594 19.4824 11.3704 20 12.0009 20C12.6313 20 13.1424 19.4824 13.1424 18.8439V13.1543H18.8585C19.4889 13.1543 20 12.6367 20 11.9982C20 11.3597 19.4889 10.8421 18.8585 10.8421H13.1424V5.15607Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n</div>\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.fab-wrapper{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper .fab-item{position:relative;padding:0 0 16px 8px}.fab-wrapper .fab-item .fab-tooltip{position:absolute;background-color:var(--text-primary, #181F33);border-radius:4px;color:var(--bg-primary, #FFFFFF);padding:8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;right:100%;top:calc(50% - 8px);transform:translateY(-50%)}.fab-wrapper .fab-item .fab-button{width:40px;height:40px;cursor:pointer;border-radius:50%;display:flex;justify-content:center;align-items:center}.fab-wrapper .fab-container{border-radius:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;width:56px;height:56px}.add-img{height:24px;width:24px}\n"] }]
|
|
138
138
|
}], () => [{ type: i0.ElementRef }], { clickout: [{
|
|
139
139
|
type: HostListener,
|
|
140
140
|
args: ["document:click", ["$event"]]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-fab.mjs","sources":["../../../projects/mis-components/fab/fab.component.ts","../../../projects/mis-components/fab/fab.component.html","../../../projects/mis-components/fab/fab.module.ts","../../../projects/mis-components/fab/mis-crystal-design-system-fab.ts"],"sourcesContent":["/** @format */\n\nimport { Component, ElementRef, HostListener, OnDestroy, ChangeDetectionStrategy, input, signal, WritableSignal, computed } from \"@angular/core\";\nimport { trigger, transition, style, animate, state } from \"@angular/animations\";\n\nexport type FabOptions = {\n backgroundColorClosed?: string;\n backgroundColorOpened?: string;\n size?: number;\n};\n\nexport type FabItem = {\n label?: string;\n icon: string;\n backgroundColor?: string;\n id?: string;\n click?: () => any;\n};\n\nexport type FabItems = FabItem[];\n\n@Component({\n selector: \"mis-fab\",\n templateUrl: \"./fab.component.html\",\n styleUrls: [\"./fab.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\"slideUpFab\", [\n transition(\":enter\", [\n style({ transform: \"translateY(50px)\", opacity: 0 }),\n animate(\"300ms ease-out\", style({ transform: \"translateY(0px)\", opacity: 1 }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ transform: \"translateY(70px)\", opacity: 0 }))])\n ]),\n trigger(\"rotateButton\", [\n state(\"default\", style({ transform: \"rotate(0)\" })),\n state(\"rotated\", style({ transform: \"rotate(45deg)\" })),\n transition(\"rotated => default\", animate(\"300ms ease-out\")),\n transition(\"default => rotated\", animate(\"200ms ease-in\"))\n ])\n ]\n})\nexport class FabComponent implements OnDestroy {\n show = input<boolean>(false);\n options = input<FabOptions>({});\n items = input<FabItems>([]);\n\n isOpen: WritableSignal<boolean> = signal(false);\n\n // Computed signal for options with defaults\n computedOptions = computed(() => {\n const currentOptions = this.options();\n return {\n size: 56,\n backgroundColorClosed: \"#0937B2\",\n backgroundColorOpened: \"#3a5fc1\",\n ...currentOptions\n };\n });\n\n constructor(private eRef: ElementRef) {}\n\n @HostListener(\"document:click\", [\"$event\"])\n clickout(event: any) {\n if (!this.eRef.nativeElement.contains(event.target)) {\n this.closeFab();\n }\n }\n\n ngOnDestroy(): void {}\n\n clickItem(item: FabItem) {\n this.closeFab();\n item.click?.();\n }\n\n closeFab() {\n this.isOpen.set(false);\n }\n\n toogleFab() {\n this.isOpen.set(!this.isOpen());\n }\n}\n","<div class=\"fab-wrapper\" *ngIf=\"show()\">\n <div class=\"fab-items\" *ngIf=\"isOpen()\" @slideUpFab>\n <div class=\"fab-item\" *ngFor=\"let item of items().reverse(); let i = index\" (click)=\"clickItem(item)\">\n <div *ngIf=\"item.label\" class=\"fab-tooltip\">\n {{ item.label }}\n </div>\n <div\n class=\"fab-button\"\n [ngStyle]=\"{\n backgroundColor: item.backgroundColor || '#0937B2'\n }\"\n >\n <img [src]=\"item.icon\" class=\"add-img\" />\n </div>\n </div>\n </div>\n <div\n class=\"fab-container\"\n [ngStyle]=\"{\n backgroundColor: isOpen() ? computedOptions().backgroundColorOpened : computedOptions().backgroundColorClosed\n }\"\n (click)=\"toogleFab()\"\n >\n <svg\n [@rotateButton]=\"isOpen() ? 'rotated' : 'default'\"\n class=\"add-img\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1424 5.15607C13.1424 4.51759 12.6313 4 12.0009 4C11.3704 4 10.8594 4.51759 10.8594 5.15607V10.8421H5.14149C4.51106 10.8421 4 11.3597 4 11.9982C4 12.6367 4.51106 13.1543 5.14149 13.1543H10.8594V18.8439C10.8594 19.4824 11.3704 20 12.0009 20C12.6313 20 13.1424 19.4824 13.1424 18.8439V13.1543H18.8585C19.4889 13.1543 20 12.6367 20 11.9982C20 11.3597 19.4889 10.8421 18.8585 10.8421H13.1424V5.15607Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n</div>\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FabComponent } from \"./fab.component\";\n\n@NgModule({\n declarations: [FabComponent],\n imports: [CommonModule],\n exports: [FabComponent]\n})\nexport class FabModule {\n static forRoot(): ModuleWithProviders<FabModule> {\n return { ngModule: FabModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;;ICGM,EAA4C,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC1C,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;IADJ,EACF,CAAA,SAAA,EAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,OAAA,CAAA,KAAA,EAAA,GAAA,CAAA,CAAA;;;;IAHF,EAAsG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAA1B,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4DAAA,GAAA,EAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,yBAAe,CAAC,CAAA,EAAA,CAAA,CAAA;IACnG,EAA4C,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAG5C,EAKC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACC,EAAyC,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AAE7C,IADE,iBAAM,EACF,CAAA;;;IAXE,EAAgB,CAAA,SAAA,EAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,KAAA,CAAA,CAAA;IAKpB,EAEE,CAAA,SAAA,EAAA,CAAA;IAFF,EAEE,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,OAAA,CAAA,eAAA,IAAA,SAAA,CAAA,CAAA,CAAA;IAEG,EAAiB,CAAA,SAAA,EAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,KAAA,EAAA,OAAA,CAAA,IAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;;;IAX5B,EAAoD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClD,EAAsG,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAaxG,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAdkC,EAAW,CAAA,UAAA,CAAA,aAAA,EAAA,SAAA,CAAA,CAAA;IACV,EAAsB,CAAA,SAAA,EAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,EAAA,CAAA,OAAA,EAAA,CAAA,CAAA;;;;IAFjE,EAAwC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACtC,EAAoD,CAAA,UAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAepD,EAMC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AADC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,gDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,kBAAW,CAAC,CAAA,EAAA,CAAA,CAAA;;IAErB,EAQC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACC,EAKE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACJ,EAAM,CAAA,YAAA,EAAA,EACF,EACF,CAAA;;;IAvCoB,EAAc,CAAA,SAAA,EAAA,CAAA;IAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,EAAA,CAAA,CAAA;IAiBpC,EAEE,CAAA,SAAA,EAAA,CAAA;IAFF,EAEE,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,MAAA,EAAA,GAAA,MAAA,CAAA,eAAA,EAAA,CAAA,qBAAA,GAAA,MAAA,CAAA,eAAA,EAAA,CAAA,qBAAA,CAAA,CAAA,CAAA;IAIA,EAAkD,CAAA,SAAA,EAAA,CAAA;IAAlD,EAAkD,CAAA,UAAA,CAAA,eAAA,EAAA,MAAA,CAAA,MAAA,EAAA,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;;MDkB3C,YAAY,CAAA;AAkBvB,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAjBpC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAa,EAAE,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAW,EAAE,CAAC,CAAC;AAE5B,QAAA,IAAA,CAAA,MAAM,GAA4B,MAAM,CAAC,KAAK,CAAC,CAAC;;AAGhD,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,OAAO;AACL,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,qBAAqB,EAAE,SAAS;AAChC,gBAAA,qBAAqB,EAAE,SAAS;AAChC,gBAAA,GAAG,cAAc;aAClB,CAAC;AACJ,SAAC,CAAC,CAAC;KAEqC;AAGxC,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;KACF;AAED,IAAA,WAAW,MAAW;AAEtB,IAAA,SAAS,CAAC,IAAa,EAAA;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC;KAChB;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxB;IAED,SAAS,GAAA;QACP,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KACjC;6GAxCU,YAAY,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA;oEAAZ,YAAY,EAAA,SAAA,EAAA,CAAA,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AAAZ,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qCAAA,CAAA,MAAA,EAAA,EAAA,OAAA,oBAAgB,CAAJ,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,CAAA;;YC1CzB,EAAwC,CAAA,UAAA,CAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;YAAd,EAAY,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AD0BxB,SAAA,EAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,IAAA,EAAA,EAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,CAAA,y6BAAA,CAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA;gBACV,OAAO,CAAC,YAAY,EAAE;oBACpB,UAAU,CAAC,QAAQ,EAAE;wBACnB,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACpD,wBAAA,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;qBAC/E,CAAC;oBACF,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBACxG,CAAC;gBACF,OAAO,CAAC,cAAc,EAAE;oBACtB,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;oBACnD,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;AACvD,oBAAA,UAAU,CAAC,oBAAoB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC3D,oBAAA,UAAU,CAAC,oBAAoB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;iBAC3D,CAAC;AACH,aAAA,EAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;iFAEU,YAAY,EAAA,CAAA;cArBxB,SAAS;AACE,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAGF,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA;oBACV,OAAO,CAAC,YAAY,EAAE;wBACpB,UAAU,CAAC,QAAQ,EAAE;4BACnB,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACpD,4BAAA,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;yBAC/E,CAAC;wBACF,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;qBACxG,CAAC;oBACF,OAAO,CAAC,cAAc,EAAE;wBACtB,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;wBACnD,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;AACvD,wBAAA,UAAU,CAAC,oBAAoB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC3D,wBAAA,UAAU,CAAC,oBAAoB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;qBAC3D,CAAC;AACH,iBAAA,EAAA,QAAA,EAAA,6hDAAA,EAAA,MAAA,EAAA,CAAA,2rBAAA,CAAA,EAAA,CAAA;2CAuBD,QAAQ,EAAA,CAAA;kBADP,YAAY;mBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;kFApB/B,YAAY,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MEjCZ,SAAS,CAAA;AACpB,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;KAC/C;0GAHU,SAAS,GAAA,CAAA,EAAA,CAAA,EAAA;mEAAT,SAAS,EAAA,CAAA,CAAA,EAAA;uEAHV,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;iFAGX,SAAS,EAAA,CAAA;cALrB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,YAAY,CAAC;gBAC5B,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,SAAS,EAJL,EAAA,YAAA,EAAA,CAAA,YAAY,CACjB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACPxB;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"mis-crystal-design-system-fab.mjs","sources":["../../../projects/mis-components/fab/fab.component.ts","../../../projects/mis-components/fab/fab.component.html","../../../projects/mis-components/fab/fab.module.ts","../../../projects/mis-components/fab/mis-crystal-design-system-fab.ts"],"sourcesContent":["/** @format */\n\nimport { Component, ElementRef, HostListener, OnDestroy, ChangeDetectionStrategy, input, signal, WritableSignal, computed } from \"@angular/core\";\nimport { trigger, transition, style, animate, state } from \"@angular/animations\";\n\nexport type FabOptions = {\n backgroundColorClosed?: string;\n backgroundColorOpened?: string;\n size?: number;\n};\n\nexport type FabItem = {\n label?: string;\n icon: string;\n backgroundColor?: string;\n id?: string;\n click?: () => any;\n};\n\nexport type FabItems = FabItem[];\n\n@Component({\n selector: \"mis-fab\",\n templateUrl: \"./fab.component.html\",\n styleUrls: [\"./fab.component.scss\"],\n animations: [\n trigger(\"slideUpFab\", [\n transition(\":enter\", [\n style({ transform: \"translateY(50px)\", opacity: 0 }),\n animate(\"300ms ease-out\", style({ transform: \"translateY(0px)\", opacity: 1 }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ transform: \"translateY(70px)\", opacity: 0 }))])\n ]),\n trigger(\"rotateButton\", [\n state(\"default\", style({ transform: \"rotate(0)\" })),\n state(\"rotated\", style({ transform: \"rotate(45deg)\" })),\n transition(\"rotated => default\", animate(\"300ms ease-out\")),\n transition(\"default => rotated\", animate(\"200ms ease-in\"))\n ])\n ]\n})\nexport class FabComponent implements OnDestroy {\n show = input<boolean>(false);\n options = input<FabOptions>({});\n items = input<FabItems>([]);\n\n isOpen: WritableSignal<boolean> = signal(false);\n\n // Computed signal for options with defaults\n computedOptions = computed(() => {\n const currentOptions = this.options();\n return {\n size: 56,\n backgroundColorClosed: \"#0937B2\",\n backgroundColorOpened: \"#3a5fc1\",\n ...currentOptions\n };\n });\n\n constructor(private eRef: ElementRef) {}\n\n @HostListener(\"document:click\", [\"$event\"])\n clickout(event: any) {\n if (!this.eRef.nativeElement.contains(event.target)) {\n this.closeFab();\n }\n }\n\n ngOnDestroy(): void {}\n\n clickItem(item: FabItem) {\n this.closeFab();\n item.click?.();\n }\n\n closeFab() {\n this.isOpen.set(false);\n }\n\n toogleFab() {\n this.isOpen.set(!this.isOpen());\n }\n}\n","<div class=\"fab-wrapper\" *ngIf=\"show()\">\n <div class=\"fab-items\" *ngIf=\"isOpen()\" @slideUpFab>\n <div class=\"fab-item\" *ngFor=\"let item of items().reverse(); let i = index\" (click)=\"clickItem(item)\">\n <div *ngIf=\"item.label\" class=\"fab-tooltip\">\n {{ item.label }}\n </div>\n <div\n class=\"fab-button\"\n [ngStyle]=\"{\n backgroundColor: item.backgroundColor || '#0937B2'\n }\"\n >\n <img [src]=\"item.icon\" class=\"add-img\" />\n </div>\n </div>\n </div>\n <div\n class=\"fab-container\"\n [ngStyle]=\"{\n backgroundColor: isOpen() ? computedOptions().backgroundColorOpened : computedOptions().backgroundColorClosed\n }\"\n (click)=\"toogleFab()\"\n >\n <svg\n [@rotateButton]=\"isOpen() ? 'rotated' : 'default'\"\n class=\"add-img\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1424 5.15607C13.1424 4.51759 12.6313 4 12.0009 4C11.3704 4 10.8594 4.51759 10.8594 5.15607V10.8421H5.14149C4.51106 10.8421 4 11.3597 4 11.9982C4 12.6367 4.51106 13.1543 5.14149 13.1543H10.8594V18.8439C10.8594 19.4824 11.3704 20 12.0009 20C12.6313 20 13.1424 19.4824 13.1424 18.8439V13.1543H18.8585C19.4889 13.1543 20 12.6367 20 11.9982C20 11.3597 19.4889 10.8421 18.8585 10.8421H13.1424V5.15607Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n</div>\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FabComponent } from \"./fab.component\";\n\n@NgModule({\n declarations: [FabComponent],\n imports: [CommonModule],\n exports: [FabComponent]\n})\nexport class FabModule {\n static forRoot(): ModuleWithProviders<FabModule> {\n return { ngModule: FabModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|