@propbinder/mobile-design 0.2.30 → 0.2.33
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.
|
@@ -49,7 +49,7 @@ const DEFAULT_CONFIG = {
|
|
|
49
49
|
signInBgGradientEnd: '#8A9BFF', // Gradient bottom color
|
|
50
50
|
signInContentColor: '#1a1a1a', // Default dark text color
|
|
51
51
|
organizationName: 'Propbinder',
|
|
52
|
-
organizationId: 'default'
|
|
52
|
+
organizationId: 'default',
|
|
53
53
|
};
|
|
54
54
|
/**
|
|
55
55
|
* WhitelabelService
|
|
@@ -92,11 +92,16 @@ class WhitelabelService {
|
|
|
92
92
|
}
|
|
93
93
|
// Otherwise calculate height based on logoSize
|
|
94
94
|
switch (size) {
|
|
95
|
-
case 'sm':
|
|
96
|
-
|
|
97
|
-
case '
|
|
98
|
-
|
|
99
|
-
|
|
95
|
+
case 'sm':
|
|
96
|
+
return 24;
|
|
97
|
+
case 'md':
|
|
98
|
+
return 28;
|
|
99
|
+
case 'lg':
|
|
100
|
+
return 32;
|
|
101
|
+
case 'xl':
|
|
102
|
+
return 36;
|
|
103
|
+
default:
|
|
104
|
+
return 28;
|
|
100
105
|
}
|
|
101
106
|
}, ...(ngDevMode ? [{ debugName: "logoHeight" }] : []));
|
|
102
107
|
appIconSurface = computed(() => this._config().appIconSurface, ...(ngDevMode ? [{ debugName: "appIconSurface" }] : []));
|
|
@@ -154,9 +159,7 @@ class WhitelabelService {
|
|
|
154
159
|
if (isOnSignInPage) {
|
|
155
160
|
// On sign-in page - use sign-in background color
|
|
156
161
|
const config = this._config();
|
|
157
|
-
const backgroundColor = config.signInBgType === 'gradient'
|
|
158
|
-
? config.signInBgGradientStart
|
|
159
|
-
: config.signInBgSolid;
|
|
162
|
+
const backgroundColor = config.signInBgType === 'gradient' ? config.signInBgGradientStart : config.signInBgSolid;
|
|
160
163
|
const style = this.getStatusBarStyleForColor(backgroundColor);
|
|
161
164
|
StatusBar.setBackgroundColor({ color: backgroundColor }).catch(() => { });
|
|
162
165
|
StatusBar.setStyle({ style }).catch(() => { });
|
|
@@ -176,9 +179,9 @@ class WhitelabelService {
|
|
|
176
179
|
* Call this early in app initialization (app.config.ts or app.component.ts)
|
|
177
180
|
*/
|
|
178
181
|
initialize(config) {
|
|
179
|
-
this._config.update(current => ({
|
|
182
|
+
this._config.update((current) => ({
|
|
180
183
|
...current,
|
|
181
|
-
...config
|
|
184
|
+
...config,
|
|
182
185
|
}));
|
|
183
186
|
}
|
|
184
187
|
/**
|
|
@@ -193,7 +196,7 @@ class WhitelabelService {
|
|
|
193
196
|
// const response = await fetch(`/api/whitelabel/${organizationId || 'default'}`);
|
|
194
197
|
// const config = await response.json();
|
|
195
198
|
// this.initialize(config);
|
|
196
|
-
console.log('Loading whitelabel config from API for:', organizationId);
|
|
199
|
+
//console.log('Loading whitelabel config from API for:', organizationId);
|
|
197
200
|
// Example: Different configs for different organizations
|
|
198
201
|
if (organizationId === 'demo-client') {
|
|
199
202
|
this.initialize({
|
|
@@ -209,7 +212,7 @@ class WhitelabelService {
|
|
|
209
212
|
headerAccent: 'rgba(255, 255, 255, 0.15)',
|
|
210
213
|
onHeaderAccent: '#FFFFFF',
|
|
211
214
|
organizationName: 'Demo Client',
|
|
212
|
-
organizationId: 'demo-client'
|
|
215
|
+
organizationId: 'demo-client',
|
|
213
216
|
});
|
|
214
217
|
}
|
|
215
218
|
else if (organizationId === 'cobblestone') {
|
|
@@ -233,7 +236,7 @@ class WhitelabelService {
|
|
|
233
236
|
signInBgGradientEnd: '#BDC3C7',
|
|
234
237
|
signInContentColor: '#1a1a1a',
|
|
235
238
|
organizationName: 'Cobblestone',
|
|
236
|
-
organizationId: 'cobblestone'
|
|
239
|
+
organizationId: 'cobblestone',
|
|
237
240
|
});
|
|
238
241
|
}
|
|
239
242
|
// Add more organization-specific configs as needed
|
|
@@ -253,9 +256,9 @@ class WhitelabelService {
|
|
|
253
256
|
* Update only the brand colors
|
|
254
257
|
*/
|
|
255
258
|
updateColors(colors) {
|
|
256
|
-
this._config.update(current => ({
|
|
259
|
+
this._config.update((current) => ({
|
|
257
260
|
...current,
|
|
258
|
-
...colors
|
|
261
|
+
...colors,
|
|
259
262
|
}));
|
|
260
263
|
}
|
|
261
264
|
/**
|
|
@@ -269,11 +272,13 @@ class WhitelabelService {
|
|
|
269
272
|
*/
|
|
270
273
|
hexToRgb(hex) {
|
|
271
274
|
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
272
|
-
return result
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
275
|
+
return result
|
|
276
|
+
? {
|
|
277
|
+
r: parseInt(result[1], 16),
|
|
278
|
+
g: parseInt(result[2], 16),
|
|
279
|
+
b: parseInt(result[3], 16),
|
|
280
|
+
}
|
|
281
|
+
: null;
|
|
277
282
|
}
|
|
278
283
|
/**
|
|
279
284
|
* Calculate relative luminance of a color (WCAG standard)
|
|
@@ -419,7 +424,7 @@ class WhitelabelService {
|
|
|
419
424
|
}
|
|
420
425
|
// Update tab button selected color directly
|
|
421
426
|
// CSS variable inheritance doesn't always work dynamically with Ionic components
|
|
422
|
-
document.querySelectorAll('ion-tab-button').forEach(tabButton => {
|
|
427
|
+
document.querySelectorAll('ion-tab-button').forEach((tabButton) => {
|
|
423
428
|
tabButton.style.setProperty('--color-selected', accent);
|
|
424
429
|
});
|
|
425
430
|
// ============================================
|
|
@@ -536,21 +541,21 @@ class WhitelabelService {
|
|
|
536
541
|
}
|
|
537
542
|
// Update native StatusBar color (Capacitor - Android only, iOS ignores this)
|
|
538
543
|
this.updateNativeStatusBar(headerSurface);
|
|
539
|
-
console.log('Applied whitelabel colors:', {
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
});
|
|
544
|
+
// console.log('Applied whitelabel colors:', {
|
|
545
|
+
// appIconSurface,
|
|
546
|
+
// appIconContent,
|
|
547
|
+
// accent,
|
|
548
|
+
// accentHover,
|
|
549
|
+
// accentActive,
|
|
550
|
+
// onAccent,
|
|
551
|
+
// headerSurface,
|
|
552
|
+
// headerContent,
|
|
553
|
+
// headerAccent,
|
|
554
|
+
// headerAccentHover,
|
|
555
|
+
// headerAccentActive,
|
|
556
|
+
// onHeaderAccent,
|
|
557
|
+
// signInContentColor
|
|
558
|
+
// });
|
|
554
559
|
}
|
|
555
560
|
}
|
|
556
561
|
/**
|
|
@@ -574,7 +579,7 @@ class WhitelabelService {
|
|
|
574
579
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: WhitelabelService, decorators: [{
|
|
575
580
|
type: Injectable,
|
|
576
581
|
args: [{
|
|
577
|
-
providedIn: 'root'
|
|
582
|
+
providedIn: 'root',
|
|
578
583
|
}]
|
|
579
584
|
}], ctorParameters: () => [] });
|
|
580
585
|
|
|
@@ -5538,15 +5543,15 @@ class DsMobileContentComponent {
|
|
|
5538
5543
|
*/
|
|
5539
5544
|
layout = input('stacked', ...(ngDevMode ? [{ debugName: "layout" }] : []));
|
|
5540
5545
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5541
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: DsMobileContentComponent, isStandalone: true, selector: "ds-mobile-content", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.layout-stacked": "layout() === \"stacked\"", "class.layout-grid-2": "layout() === \"grid-2\"", "class.layout-grid-3": "layout() === \"grid-3\"" } }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [":host{display:flex;flex-direction:column;gap:
|
|
5546
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: DsMobileContentComponent, isStandalone: true, selector: "ds-mobile-content", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.layout-stacked": "layout() === \"stacked\"", "class.layout-grid-2": "layout() === \"grid-2\"", "class.layout-grid-3": "layout() === \"grid-3\"" } }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [":host{display:flex;flex-direction:column;gap:16px;max-width:640px;margin:0 auto}:host.layout-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}:host.layout-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}@media (max-width: 768px){:host.layout-grid-2,:host.layout-grid-3{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
5542
5547
|
}
|
|
5543
5548
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileContentComponent, decorators: [{
|
|
5544
5549
|
type: Component,
|
|
5545
5550
|
args: [{ selector: 'ds-mobile-content', standalone: true, imports: [CommonModule], host: {
|
|
5546
5551
|
'[class.layout-stacked]': 'layout() === "stacked"',
|
|
5547
5552
|
'[class.layout-grid-2]': 'layout() === "grid-2"',
|
|
5548
|
-
'[class.layout-grid-3]': 'layout() === "grid-3"'
|
|
5549
|
-
}, template: `<ng-content />`, styles: [":host{display:flex;flex-direction:column;gap:
|
|
5553
|
+
'[class.layout-grid-3]': 'layout() === "grid-3"',
|
|
5554
|
+
}, template: `<ng-content />`, styles: [":host{display:flex;flex-direction:column;gap:16px;max-width:640px;margin:0 auto}:host.layout-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}:host.layout-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}@media (max-width: 768px){:host.layout-grid-2,:host.layout-grid-3{grid-template-columns:1fr}}\n"] }]
|
|
5550
5555
|
}], propDecorators: { layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }] } });
|
|
5551
5556
|
/**
|
|
5552
5557
|
* SectionHeaderComponent
|
|
@@ -5565,7 +5570,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
5565
5570
|
args: [{ selector: 'section-header', standalone: true, host: {
|
|
5566
5571
|
'[class.w-half]': 'width() === "half"',
|
|
5567
5572
|
'[class.w-third]': 'width() === "third"',
|
|
5568
|
-
'[class.w-full]': 'width() === "full"'
|
|
5573
|
+
'[class.w-full]': 'width() === "full"',
|
|
5569
5574
|
}, template: `<ng-content />`, styles: [":host{height:20px;border-radius:8px;background:var(--color-background-neutral-tertiary);display:block}:host.w-half{width:50%}:host.w-third{width:33%}:host.w-full{width:100%}\n"] }]
|
|
5570
5575
|
}], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }] } });
|
|
5571
5576
|
/**
|
|
@@ -13327,7 +13332,7 @@ class DsMobileModalBaseComponent extends MobileModalBase {
|
|
|
13327
13332
|
<ng-content select="[fixed-bottom]"></ng-content>
|
|
13328
13333
|
<ng-content select="[footer]"></ng-content>
|
|
13329
13334
|
</div>
|
|
13330
|
-
`, isInline: true, styles: [":host{display:block;position:relative;height:100%;width:100%}:host(.is-auto-height){height:auto}.modal-base-content{--background: var(--color-background-neutral-primary, #ffffff)}.modal-base-content.is-auto-height{--height: auto;height:auto!important;flex:0 0 auto;display:block;contain:none!important}.modal-base-content.is-auto-height::part(scroll){position:relative!important;display:block!important;height:auto!important;overflow:visible!important}.modal-wrapper{display:flex;flex-direction:column;width:100%;background:var(--color-background-neutral-primary, #ffffff)}.modal-wrapper.is-auto-height{flex:0 0 auto}.modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:16px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px}.header-leading{flex-shrink:0;display:flex;align-items:center}.header-leading:empty{display:none}.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:6px}.close-button{flex-shrink:0;border-radius:50%}.close-button::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.close-button-absolute{position:absolute;top:16px;right:16px;z-index:100;flex-shrink:0;border-radius:50%}.close-button-absolute::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.modal-content-container{display:flex;flex-direction:column;width:100%;max-width:640px;margin:0 auto;flex:1;position:relative;padding-bottom:var(--fixed-bottom-height, 0px);transition:padding-bottom .3s ease-out}:host-context(ion-modal.auto-height) .modal-content-container,.modal-wrapper.is-auto-height .modal-content-container{flex:0 0 auto}.modal-wrapper.headerless .modal-content-container{padding-top:0}.modal-main-content{display:flex;flex-direction:column;width:100%;padding-top:0;padding-left:var(--modal-content-padding, 20px);padding-right:var(--modal-content-padding, 20px);padding-bottom:var(--modal-content-padding, 20px)}.modal-main-content.content-hidden,.state-hidden{display:none}.custom-loading-slot,.custom-error-slot{width:100%}.modal-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.modal-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.modal-fixed-bottom{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;background:var(--color-background-neutral-primary, #ffffff);box-shadow:0 300px 0 300px var(--color-background-neutral-primary, #ffffff);transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s cubic-bezier(.215,.61,.355,1);max-width:100vw;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px)}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@supports (padding: env(safe-area-inset-bottom)){.modal-content-container{padding-bottom:env(safe-area-inset-bottom)}}@media (prefers-reduced-motion: reduce){.modal-fixed-bottom{transition:none}.loading-spinner{animation:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: DsIconButtonComponent, selector: "ds-icon-button", inputs: ["variant", "size", "icon", "disabled", "loading", "pressed", "expanded", "ariaLabel", "tooltip", "tooltipDisabled", "tooltipPlacement"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }] });
|
|
13335
|
+
`, isInline: true, styles: [":host{display:block;position:relative;height:100%;width:100%}:host(.is-auto-height){height:auto}.modal-base-content{--background: var(--color-background-neutral-primary, #ffffff)}.modal-base-content.is-auto-height{--height: auto;height:auto!important;flex:0 0 auto;display:block;contain:none!important}.modal-base-content.is-auto-height::part(scroll){position:relative!important;display:block!important;height:auto!important;overflow:visible!important}.modal-wrapper{display:flex;flex-direction:column;width:100%;background:var(--color-background-neutral-primary, #ffffff)}.modal-wrapper.is-auto-height{flex:0 0 auto}.modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:16px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px}.header-leading{flex-shrink:0;display:flex;align-items:center}.header-leading:empty{display:none}.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:6px}.close-button{flex-shrink:0;border-radius:50%}.close-button::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.close-button-absolute{position:absolute;top:16px;right:16px;z-index:100;flex-shrink:0;border-radius:50%}.close-button-absolute::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.modal-content-container{display:flex;flex-direction:column;width:100%;max-width:640px;margin:0 auto;flex:1;position:relative;padding-bottom:var(--fixed-bottom-height, 0px);transition:padding-bottom .3s ease-out}:host-context(ion-modal.auto-height) .modal-content-container,.modal-wrapper.is-auto-height .modal-content-container{flex:0 0 auto}.modal-wrapper.headerless .modal-content-container{padding-top:0}.modal-main-content{display:flex;flex-direction:column;width:100%;padding-top:0;padding-left:var(--modal-content-padding, 20px);padding-right:var(--modal-content-padding, 20px);padding-bottom:var(--modal-content-padding, 20px)}.modal-main-content.content-hidden,.state-hidden{display:none}.custom-loading-slot,.custom-error-slot{width:100%}.modal-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.modal-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.modal-fixed-bottom{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;background:var(--color-background-neutral-primary, #ffffff);box-shadow:0 300px 0 300px var(--color-background-neutral-primary, #ffffff);transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s cubic-bezier(.215,.61,.355,1);max-width:100vw;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px)}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff);padding-bottom:var(--keyboard-height, 0px);transition:padding-bottom .3s cubic-bezier(.215,.61,.355,1)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@supports (padding: env(safe-area-inset-bottom)){.modal-content-container{padding-bottom:env(safe-area-inset-bottom)}}@media (prefers-reduced-motion: reduce){.modal-fixed-bottom{transition:none}.loading-spinner{animation:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: DsIconButtonComponent, selector: "ds-icon-button", inputs: ["variant", "size", "icon", "disabled", "loading", "pressed", "expanded", "ariaLabel", "tooltip", "tooltipDisabled", "tooltipPlacement"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }] });
|
|
13331
13336
|
}
|
|
13332
13337
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileModalBaseComponent, decorators: [{
|
|
13333
13338
|
type: Component,
|
|
@@ -13416,7 +13421,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
13416
13421
|
<ng-content select="[fixed-bottom]"></ng-content>
|
|
13417
13422
|
<ng-content select="[footer]"></ng-content>
|
|
13418
13423
|
</div>
|
|
13419
|
-
`, styles: [":host{display:block;position:relative;height:100%;width:100%}:host(.is-auto-height){height:auto}.modal-base-content{--background: var(--color-background-neutral-primary, #ffffff)}.modal-base-content.is-auto-height{--height: auto;height:auto!important;flex:0 0 auto;display:block;contain:none!important}.modal-base-content.is-auto-height::part(scroll){position:relative!important;display:block!important;height:auto!important;overflow:visible!important}.modal-wrapper{display:flex;flex-direction:column;width:100%;background:var(--color-background-neutral-primary, #ffffff)}.modal-wrapper.is-auto-height{flex:0 0 auto}.modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:16px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px}.header-leading{flex-shrink:0;display:flex;align-items:center}.header-leading:empty{display:none}.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:6px}.close-button{flex-shrink:0;border-radius:50%}.close-button::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.close-button-absolute{position:absolute;top:16px;right:16px;z-index:100;flex-shrink:0;border-radius:50%}.close-button-absolute::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.modal-content-container{display:flex;flex-direction:column;width:100%;max-width:640px;margin:0 auto;flex:1;position:relative;padding-bottom:var(--fixed-bottom-height, 0px);transition:padding-bottom .3s ease-out}:host-context(ion-modal.auto-height) .modal-content-container,.modal-wrapper.is-auto-height .modal-content-container{flex:0 0 auto}.modal-wrapper.headerless .modal-content-container{padding-top:0}.modal-main-content{display:flex;flex-direction:column;width:100%;padding-top:0;padding-left:var(--modal-content-padding, 20px);padding-right:var(--modal-content-padding, 20px);padding-bottom:var(--modal-content-padding, 20px)}.modal-main-content.content-hidden,.state-hidden{display:none}.custom-loading-slot,.custom-error-slot{width:100%}.modal-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.modal-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.modal-fixed-bottom{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;background:var(--color-background-neutral-primary, #ffffff);box-shadow:0 300px 0 300px var(--color-background-neutral-primary, #ffffff);transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s cubic-bezier(.215,.61,.355,1);max-width:100vw;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px)}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@supports (padding: env(safe-area-inset-bottom)){.modal-content-container{padding-bottom:env(safe-area-inset-bottom)}}@media (prefers-reduced-motion: reduce){.modal-fixed-bottom{transition:none}.loading-spinner{animation:none}}\n"] }]
|
|
13424
|
+
`, styles: [":host{display:block;position:relative;height:100%;width:100%}:host(.is-auto-height){height:auto}.modal-base-content{--background: var(--color-background-neutral-primary, #ffffff)}.modal-base-content.is-auto-height{--height: auto;height:auto!important;flex:0 0 auto;display:block;contain:none!important}.modal-base-content.is-auto-height::part(scroll){position:relative!important;display:block!important;height:auto!important;overflow:visible!important}.modal-wrapper{display:flex;flex-direction:column;width:100%;background:var(--color-background-neutral-primary, #ffffff)}.modal-wrapper.is-auto-height{flex:0 0 auto}.modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:16px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px}.header-leading{flex-shrink:0;display:flex;align-items:center}.header-leading:empty{display:none}.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:6px}.close-button{flex-shrink:0;border-radius:50%}.close-button::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.close-button-absolute{position:absolute;top:16px;right:16px;z-index:100;flex-shrink:0;border-radius:50%}.close-button-absolute::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.modal-content-container{display:flex;flex-direction:column;width:100%;max-width:640px;margin:0 auto;flex:1;position:relative;padding-bottom:var(--fixed-bottom-height, 0px);transition:padding-bottom .3s ease-out}:host-context(ion-modal.auto-height) .modal-content-container,.modal-wrapper.is-auto-height .modal-content-container{flex:0 0 auto}.modal-wrapper.headerless .modal-content-container{padding-top:0}.modal-main-content{display:flex;flex-direction:column;width:100%;padding-top:0;padding-left:var(--modal-content-padding, 20px);padding-right:var(--modal-content-padding, 20px);padding-bottom:var(--modal-content-padding, 20px)}.modal-main-content.content-hidden,.state-hidden{display:none}.custom-loading-slot,.custom-error-slot{width:100%}.modal-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.modal-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.modal-fixed-bottom{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;background:var(--color-background-neutral-primary, #ffffff);box-shadow:0 300px 0 300px var(--color-background-neutral-primary, #ffffff);transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s cubic-bezier(.215,.61,.355,1);max-width:100vw;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px)}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff);padding-bottom:var(--keyboard-height, 0px);transition:padding-bottom .3s cubic-bezier(.215,.61,.355,1)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@supports (padding: env(safe-area-inset-bottom)){.modal-content-container{padding-bottom:env(safe-area-inset-bottom)}}@media (prefers-reduced-motion: reduce){.modal-fixed-bottom{transition:none}.loading-spinner{animation:none}}\n"] }]
|
|
13420
13425
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { ionContent: [{
|
|
13421
13426
|
type: ViewChild,
|
|
13422
13427
|
args: [IonContent, { read: IonContent }]
|
|
@@ -16358,6 +16363,7 @@ class DsMobileNewInquiryModalService extends BaseModalService {
|
|
|
16358
16363
|
breakpoints: [0, 1],
|
|
16359
16364
|
initialBreakpoint: 1,
|
|
16360
16365
|
handle: false,
|
|
16366
|
+
presentingElement: undefined,
|
|
16361
16367
|
});
|
|
16362
16368
|
console.log('[NewInquiryModal] Modal created, presenting...');
|
|
16363
16369
|
await modal.present();
|
|
@@ -24092,36 +24098,36 @@ class MobileTabsExampleComponent {
|
|
|
24092
24098
|
label: 'Hjem',
|
|
24093
24099
|
route: 'home',
|
|
24094
24100
|
icon: 'remixHomeSmile2Line',
|
|
24095
|
-
iconActive: 'remixHomeSmile2Fill'
|
|
24101
|
+
iconActive: 'remixHomeSmile2Fill',
|
|
24096
24102
|
},
|
|
24097
24103
|
{
|
|
24098
24104
|
id: 'inquiries',
|
|
24099
24105
|
label: 'Henvendelser',
|
|
24100
24106
|
route: 'inquiries',
|
|
24101
24107
|
icon: 'remixFileList3Line',
|
|
24102
|
-
iconActive: 'remixFileList3Fill'
|
|
24108
|
+
iconActive: 'remixFileList3Fill',
|
|
24103
24109
|
},
|
|
24104
24110
|
{
|
|
24105
24111
|
id: 'announcements',
|
|
24106
24112
|
label: 'Fællesskab',
|
|
24107
24113
|
route: 'announcements',
|
|
24108
24114
|
icon: 'remixCommunityLine',
|
|
24109
|
-
iconActive: 'remixCommunityFill'
|
|
24115
|
+
iconActive: 'remixCommunityFill',
|
|
24110
24116
|
},
|
|
24111
24117
|
{
|
|
24112
24118
|
id: 'booking',
|
|
24113
24119
|
label: 'Booking',
|
|
24114
24120
|
route: 'booking',
|
|
24115
24121
|
icon: 'remixCalendarCheckLine',
|
|
24116
|
-
iconActive: 'remixCalendarCheckFill'
|
|
24122
|
+
iconActive: 'remixCalendarCheckFill',
|
|
24117
24123
|
},
|
|
24118
24124
|
{
|
|
24119
24125
|
id: 'handbook',
|
|
24120
24126
|
label: 'Håndbog',
|
|
24121
24127
|
route: 'handbook',
|
|
24122
24128
|
icon: 'remixBook2Line',
|
|
24123
|
-
iconActive: 'remixBook2Fill'
|
|
24124
|
-
}
|
|
24129
|
+
iconActive: 'remixBook2Fill',
|
|
24130
|
+
},
|
|
24125
24131
|
];
|
|
24126
24132
|
/**
|
|
24127
24133
|
* Profile menu items configuration.
|
|
@@ -24137,21 +24143,21 @@ class MobileTabsExampleComponent {
|
|
|
24137
24143
|
action: 'profile',
|
|
24138
24144
|
title: 'Min profil',
|
|
24139
24145
|
icon: 'remixUser3Line',
|
|
24140
|
-
destructive: false
|
|
24146
|
+
destructive: false,
|
|
24141
24147
|
},
|
|
24142
24148
|
{
|
|
24143
24149
|
action: 'settings',
|
|
24144
24150
|
title: 'Indstillinger',
|
|
24145
24151
|
icon: 'remixSettings3Line',
|
|
24146
|
-
destructive: false
|
|
24152
|
+
destructive: false,
|
|
24147
24153
|
},
|
|
24148
24154
|
{
|
|
24149
24155
|
action: 'appearance',
|
|
24150
24156
|
title: 'Udseende',
|
|
24151
24157
|
icon: 'remixPaletteLine',
|
|
24152
|
-
destructive: false
|
|
24153
|
-
}
|
|
24154
|
-
]
|
|
24158
|
+
destructive: false,
|
|
24159
|
+
},
|
|
24160
|
+
],
|
|
24155
24161
|
},
|
|
24156
24162
|
{
|
|
24157
24163
|
actions: [
|
|
@@ -24162,9 +24168,9 @@ class MobileTabsExampleComponent {
|
|
|
24162
24168
|
flagIcon: '/Assets/country-flags/denmark.svg',
|
|
24163
24169
|
icon: 'remixGlobalLine',
|
|
24164
24170
|
destructive: false,
|
|
24165
|
-
showChevron: true
|
|
24166
|
-
}
|
|
24167
|
-
]
|
|
24171
|
+
showChevron: true,
|
|
24172
|
+
},
|
|
24173
|
+
],
|
|
24168
24174
|
},
|
|
24169
24175
|
{
|
|
24170
24176
|
actions: [
|
|
@@ -24172,10 +24178,10 @@ class MobileTabsExampleComponent {
|
|
|
24172
24178
|
action: 'logout',
|
|
24173
24179
|
title: 'Log ud',
|
|
24174
24180
|
icon: 'remixLogoutBoxLine',
|
|
24175
|
-
destructive: true
|
|
24176
|
-
}
|
|
24177
|
-
]
|
|
24178
|
-
}
|
|
24181
|
+
destructive: true,
|
|
24182
|
+
},
|
|
24183
|
+
],
|
|
24184
|
+
},
|
|
24179
24185
|
];
|
|
24180
24186
|
}
|
|
24181
24187
|
/**
|
|
@@ -24214,10 +24220,11 @@ class MobileTabsExampleComponent {
|
|
|
24214
24220
|
[avatarInitials]="userService.avatarInitials()"
|
|
24215
24221
|
[avatarType]="userService.avatarType()"
|
|
24216
24222
|
[profileMenuItems]="profileMenuItems"
|
|
24217
|
-
(profileActionSelected)="handleProfileAction($event)"
|
|
24223
|
+
(profileActionSelected)="handleProfileAction($event)"
|
|
24224
|
+
>
|
|
24218
24225
|
</ds-mobile-tab-bar>
|
|
24219
24226
|
</ion-tabs>
|
|
24220
|
-
`, isInline: true, styles: [":host{display:block;height:
|
|
24227
|
+
`, isInline: true, styles: [":host{display:block;height:100dvh;width:100vw;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonTabs, selector: "ion-tabs" }, { kind: "component", type: DsMobileTabBarComponent, selector: "ds-mobile-tab-bar", inputs: ["tabs", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected"] }] });
|
|
24221
24228
|
}
|
|
24222
24229
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileTabsExampleComponent, decorators: [{
|
|
24223
24230
|
type: Component,
|
|
@@ -24230,10 +24237,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
24230
24237
|
[avatarInitials]="userService.avatarInitials()"
|
|
24231
24238
|
[avatarType]="userService.avatarType()"
|
|
24232
24239
|
[profileMenuItems]="profileMenuItems"
|
|
24233
|
-
(profileActionSelected)="handleProfileAction($event)"
|
|
24240
|
+
(profileActionSelected)="handleProfileAction($event)"
|
|
24241
|
+
>
|
|
24234
24242
|
</ds-mobile-tab-bar>
|
|
24235
24243
|
</ion-tabs>
|
|
24236
|
-
`, styles: [":host{display:block;height:
|
|
24244
|
+
`, styles: [":host{display:block;height:100dvh;width:100vw;position:relative}\n"] }]
|
|
24237
24245
|
}], ctorParameters: () => [{ type: UserService }, { type: i1$4.Router }] });
|
|
24238
24246
|
|
|
24239
24247
|
class MobileBookingPageComponent {
|