@propbinder/mobile-design 0.2.21 → 0.2.23
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/fesm2022/propbinder-mobile-design.mjs +120 -186
- package/fesm2022/propbinder-mobile-design.mjs.map +1 -1
- package/index.d.ts +22 -26
- package/package.json +1 -1
- package/styles/ionic.css +48 -42
|
@@ -1212,10 +1212,15 @@ class DsMobileListItemComponent {
|
|
|
1212
1212
|
// (but not the host element itself)
|
|
1213
1213
|
const target = event.target;
|
|
1214
1214
|
const closestInteractive = target.closest('button, a, input, select, textarea, [role="button"]');
|
|
1215
|
-
//
|
|
1215
|
+
// Only block if the interactive element is a REAL child action (like a button in trailing slot),
|
|
1216
|
+
// but NOT if it's just the host itself or something inside leading/main that shouldn't block.
|
|
1216
1217
|
if (closestInteractive && closestInteractive !== event.currentTarget) {
|
|
1217
|
-
//
|
|
1218
|
-
|
|
1218
|
+
// If the target is inside content-leading or content-main, we generally want to allow the click
|
|
1219
|
+
const isInsidePrimaryContent = !!target.closest('[content-leading], [content-main], .structured-title, .structured-subtitle');
|
|
1220
|
+
if (!isInsidePrimaryContent) {
|
|
1221
|
+
// console.log('[ListItem] Click ignored - came from interactive child in trailing/unknown slot:', closestInteractive);
|
|
1222
|
+
return;
|
|
1223
|
+
}
|
|
1219
1224
|
}
|
|
1220
1225
|
if (!this.longPressTriggered) {
|
|
1221
1226
|
// console.log('[ListItem] Emitting itemClick');
|
|
@@ -1446,7 +1451,7 @@ class DsMobileBottomSheetWrapperComponent {
|
|
|
1446
1451
|
<div class="bottom-sheet-wrapper">
|
|
1447
1452
|
<ng-content></ng-content>
|
|
1448
1453
|
</div>
|
|
1449
|
-
`, isInline: true, styles: [":host{display:block;background:var(--color-background-neutral-primary, #ffffff);background:#fff}.bottom-sheet-wrapper{display:flex;flex-direction:column;background:var(--color-background-neutral-primary, #ffffff);background:#fff;padding-bottom:
|
|
1454
|
+
`, isInline: true, styles: [":host{display:block;background:var(--color-background-neutral-primary, #ffffff);background:#fff}.bottom-sheet-wrapper{display:flex;flex-direction:column;background:var(--color-background-neutral-primary, #ffffff);background:#fff;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px);overflow:hidden;width:100%;height:auto;min-height:unset}:host ::ng-deep .view-container:not(.is-animating){height:auto!important;min-height:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
1450
1455
|
}
|
|
1451
1456
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileBottomSheetWrapperComponent, decorators: [{
|
|
1452
1457
|
type: Component,
|
|
@@ -1454,7 +1459,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1454
1459
|
<div class="bottom-sheet-wrapper">
|
|
1455
1460
|
<ng-content></ng-content>
|
|
1456
1461
|
</div>
|
|
1457
|
-
`, styles: [":host{display:block;background:var(--color-background-neutral-primary, #ffffff);background:#fff}.bottom-sheet-wrapper{display:flex;flex-direction:column;background:var(--color-background-neutral-primary, #ffffff);background:#fff;padding-bottom:
|
|
1462
|
+
`, styles: [":host{display:block;background:var(--color-background-neutral-primary, #ffffff);background:#fff}.bottom-sheet-wrapper{display:flex;flex-direction:column;background:var(--color-background-neutral-primary, #ffffff);background:#fff;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px);overflow:hidden;width:100%;height:auto;min-height:unset}:host ::ng-deep .view-container:not(.is-animating){height:auto!important;min-height:0!important}\n"] }]
|
|
1458
1463
|
}] });
|
|
1459
1464
|
|
|
1460
1465
|
/**
|
|
@@ -2499,9 +2504,12 @@ class DsMobileProfileActionsSheetComponent {
|
|
|
2499
2504
|
<ds-mobile-bottom-sheet-wrapper>
|
|
2500
2505
|
<div class="profile-sheet-content" #sheetWrapper>
|
|
2501
2506
|
<!-- View Container with CSS Animation -->
|
|
2502
|
-
<div class="view-container" #viewContainer
|
|
2507
|
+
<div class="view-container" #viewContainer
|
|
2508
|
+
[class.show-language]="currentView() === 'language'"
|
|
2509
|
+
[class.is-animating]="isAnimating()"
|
|
2510
|
+
[style.height.px]="isAnimating() ? containerHeight() : null">
|
|
2503
2511
|
<!-- Main Actions View -->
|
|
2504
|
-
<div class="view main-view">
|
|
2512
|
+
<div class="view main-view" [class.active]="currentView() === 'main'">
|
|
2505
2513
|
<div class="actions-list">
|
|
2506
2514
|
@for (group of actionGroups; track $index; let isLast = $last) {
|
|
2507
2515
|
<!-- Action Group -->
|
|
@@ -2538,7 +2546,7 @@ class DsMobileProfileActionsSheetComponent {
|
|
|
2538
2546
|
</div>
|
|
2539
2547
|
|
|
2540
2548
|
<!-- Language Selection View -->
|
|
2541
|
-
<div class="view language-view">
|
|
2549
|
+
<div class="view language-view" [class.active]="currentView() === 'language'">
|
|
2542
2550
|
<!-- Header with back and done buttons -->
|
|
2543
2551
|
<ion-header>
|
|
2544
2552
|
<ion-toolbar>
|
|
@@ -2572,7 +2580,7 @@ class DsMobileProfileActionsSheetComponent {
|
|
|
2572
2580
|
</div>
|
|
2573
2581
|
</div>
|
|
2574
2582
|
</ds-mobile-bottom-sheet-wrapper>
|
|
2575
|
-
`, isInline: true, styles: [":host{display:block;height:auto}.profile-sheet-content{overflow:hidden;width:100%}.view-container{display:grid;grid-template-columns:50% 50%;width:200%;transform:translate(0);transition:transform .3s cubic-bezier(.4,0,.2,1),height .3s cubic-bezier(.4,0,.2,1),opacity .15s ease-in-out;overflow:hidden}.view-container.show-language{transform:translate(-50%)}.view{width:100%}.main-view{padding-top:16px}.actions-list{display:flex;flex-direction:column}.action-group{display:flex;flex-direction:column;padding:0 16px}.language-view{display:flex;flex-direction:column}ion-header{box-shadow:none}:host ::ng-deep .header-ios ion-toolbar:last-of-type{--border-width: 0 !important}ion-toolbar{--background: var(--color-background-neutral-primary, #ffffff);--border-width: 0 !important;--border-color: var(--color-border-default, #e5e7eb) !important;--padding-top: 12px;--padding-bottom: 8px;--min-height: 56px;border-bottom:1px solid var(--color-border-default, #e5e7eb)!important}ion-toolbar::part(native){border-bottom:1px solid var(--color-border-default, #e5e7eb)!important}ion-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:22px;letter-spacing:-.4px;color:var(--color-text-primary, #1a1a1a)}ion-buttons[slot=start] ds-button{--border-radius: 100px}ion-buttons[slot=start] ds-button::ng-deep button{border-radius:100px}ion-buttons[slot=end] ds-button{--border-radius: 100px}ion-buttons[slot=end] ds-button::ng-deep button{border-radius:100px}.language-list{padding:8px 16px}.language-flag{width:24px;height:24px;object-fit:cover}.radio-wrapper{display:flex;align-items:center;justify-content:center}.radio-indicator{width:20px;height:20px;border:2px solid var(--color-border-default, #d1d5db);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0}.radio-indicator.radio-checked{border-color:var(--color-accent, #7c3aed)}.radio-inner{width:10px;height:10px;border-radius:50%;background:transparent;transition:background .2s ease}.radio-checked .radio-inner{background:var(--color-accent, #7c3aed)}.trailing-content{display:flex;align-items:center;gap:8px}.subtitle-flag{width:16px;height:16px;object-fit:cover;border-radius:2px}.subtitle{font-size:15px;color:var(--color-text-subtle, #6b7280);line-height:20px}.chevron-icon{color:var(--color-text-secondary, #737373)}.check-icon{color:var(--color-primary-base, #7c3aed)}::ng-deep ds-mobile-action-list-item ds-mobile-list-item{--color-background-primary: transparent;--color-background-neutral-primary-hover: var(--color-background-neutral-secondary, #f5f5f5)}::ng-deep ds-mobile-action-list-item ds-mobile-list-item .list-item-inner:before{z-index:0!important}::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-leading,::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-main,::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-trailing{position:relative;z-index:1}ds-mobile-action-list-item.destructive{--text-color-default-primary: var(--color-error-base, #ef4444)}.destructive-icon{color:var(--color-error-base, #ef4444)}.action-group-divider{height:1px;background:var(--color-border-subtle, #e5e5e5);margin:8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsMobileActionListItemComponent, selector: "ds-mobile-action-list-item", inputs: ["title", "showDivider", "disabled"], outputs: ["itemClick"] }, { kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: DsMobileBottomSheetWrapperComponent, selector: "ds-mobile-bottom-sheet-wrapper" }] });
|
|
2583
|
+
`, isInline: true, styles: [":host{display:block;height:auto}.profile-sheet-content{overflow:hidden;width:100%}.view-container{display:grid;grid-template-columns:50% 50%;width:200%;transform:translate(0);transition:transform .3s cubic-bezier(.4,0,.2,1),height .3s cubic-bezier(.4,0,.2,1),opacity .15s ease-in-out;overflow:hidden}.view-container.show-language{transform:translate(-50%)}.view{width:100%}.view-container:not(.is-animating) .view:not(.active){height:0!important;overflow:hidden!important}.main-view{padding-top:16px}.actions-list{display:flex;flex-direction:column}.action-group{display:flex;flex-direction:column;padding:0 16px}.language-view{display:flex;flex-direction:column}ion-header{box-shadow:none}:host ::ng-deep .header-ios ion-toolbar:last-of-type{--border-width: 0 !important}ion-toolbar{--background: var(--color-background-neutral-primary, #ffffff);--border-width: 0 !important;--border-color: var(--color-border-default, #e5e7eb) !important;--padding-top: 12px;--padding-bottom: 8px;--min-height: 56px;border-bottom:1px solid var(--color-border-default, #e5e7eb)!important}ion-toolbar::part(native){border-bottom:1px solid var(--color-border-default, #e5e7eb)!important}ion-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:22px;letter-spacing:-.4px;color:var(--color-text-primary, #1a1a1a)}ion-buttons[slot=start] ds-button{--border-radius: 100px}ion-buttons[slot=start] ds-button::ng-deep button{border-radius:100px}ion-buttons[slot=end] ds-button{--border-radius: 100px}ion-buttons[slot=end] ds-button::ng-deep button{border-radius:100px}.language-list{padding:8px 16px}.language-flag{width:24px;height:24px;object-fit:cover}.radio-wrapper{display:flex;align-items:center;justify-content:center}.radio-indicator{width:20px;height:20px;border:2px solid var(--color-border-default, #d1d5db);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0}.radio-indicator.radio-checked{border-color:var(--color-accent, #7c3aed)}.radio-inner{width:10px;height:10px;border-radius:50%;background:transparent;transition:background .2s ease}.radio-checked .radio-inner{background:var(--color-accent, #7c3aed)}.trailing-content{display:flex;align-items:center;gap:8px}.subtitle-flag{width:16px;height:16px;object-fit:cover;border-radius:2px}.subtitle{font-size:15px;color:var(--color-text-subtle, #6b7280);line-height:20px}.chevron-icon{color:var(--color-text-secondary, #737373)}.check-icon{color:var(--color-primary-base, #7c3aed)}::ng-deep ds-mobile-action-list-item ds-mobile-list-item{--color-background-primary: transparent;--color-background-neutral-primary-hover: var(--color-background-neutral-secondary, #f5f5f5)}::ng-deep ds-mobile-action-list-item ds-mobile-list-item .list-item-inner:before{z-index:0!important}::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-leading,::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-main,::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-trailing{position:relative;z-index:1}ds-mobile-action-list-item.destructive{--text-color-default-primary: var(--color-error-base, #ef4444)}.destructive-icon{color:var(--color-error-base, #ef4444)}.action-group-divider{height:1px;background:var(--color-border-subtle, #e5e5e5);margin:8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsMobileActionListItemComponent, selector: "ds-mobile-action-list-item", inputs: ["title", "showDivider", "disabled"], outputs: ["itemClick"] }, { kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: DsMobileBottomSheetWrapperComponent, selector: "ds-mobile-bottom-sheet-wrapper" }] });
|
|
2576
2584
|
}
|
|
2577
2585
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileProfileActionsSheetComponent, decorators: [{
|
|
2578
2586
|
type: Component,
|
|
@@ -2580,9 +2588,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2580
2588
|
<ds-mobile-bottom-sheet-wrapper>
|
|
2581
2589
|
<div class="profile-sheet-content" #sheetWrapper>
|
|
2582
2590
|
<!-- View Container with CSS Animation -->
|
|
2583
|
-
<div class="view-container" #viewContainer
|
|
2591
|
+
<div class="view-container" #viewContainer
|
|
2592
|
+
[class.show-language]="currentView() === 'language'"
|
|
2593
|
+
[class.is-animating]="isAnimating()"
|
|
2594
|
+
[style.height.px]="isAnimating() ? containerHeight() : null">
|
|
2584
2595
|
<!-- Main Actions View -->
|
|
2585
|
-
<div class="view main-view">
|
|
2596
|
+
<div class="view main-view" [class.active]="currentView() === 'main'">
|
|
2586
2597
|
<div class="actions-list">
|
|
2587
2598
|
@for (group of actionGroups; track $index; let isLast = $last) {
|
|
2588
2599
|
<!-- Action Group -->
|
|
@@ -2619,7 +2630,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2619
2630
|
</div>
|
|
2620
2631
|
|
|
2621
2632
|
<!-- Language Selection View -->
|
|
2622
|
-
<div class="view language-view">
|
|
2633
|
+
<div class="view language-view" [class.active]="currentView() === 'language'">
|
|
2623
2634
|
<!-- Header with back and done buttons -->
|
|
2624
2635
|
<ion-header>
|
|
2625
2636
|
<ion-toolbar>
|
|
@@ -2653,7 +2664,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2653
2664
|
</div>
|
|
2654
2665
|
</div>
|
|
2655
2666
|
</ds-mobile-bottom-sheet-wrapper>
|
|
2656
|
-
`, styles: [":host{display:block;height:auto}.profile-sheet-content{overflow:hidden;width:100%}.view-container{display:grid;grid-template-columns:50% 50%;width:200%;transform:translate(0);transition:transform .3s cubic-bezier(.4,0,.2,1),height .3s cubic-bezier(.4,0,.2,1),opacity .15s ease-in-out;overflow:hidden}.view-container.show-language{transform:translate(-50%)}.view{width:100%}.main-view{padding-top:16px}.actions-list{display:flex;flex-direction:column}.action-group{display:flex;flex-direction:column;padding:0 16px}.language-view{display:flex;flex-direction:column}ion-header{box-shadow:none}:host ::ng-deep .header-ios ion-toolbar:last-of-type{--border-width: 0 !important}ion-toolbar{--background: var(--color-background-neutral-primary, #ffffff);--border-width: 0 !important;--border-color: var(--color-border-default, #e5e7eb) !important;--padding-top: 12px;--padding-bottom: 8px;--min-height: 56px;border-bottom:1px solid var(--color-border-default, #e5e7eb)!important}ion-toolbar::part(native){border-bottom:1px solid var(--color-border-default, #e5e7eb)!important}ion-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:22px;letter-spacing:-.4px;color:var(--color-text-primary, #1a1a1a)}ion-buttons[slot=start] ds-button{--border-radius: 100px}ion-buttons[slot=start] ds-button::ng-deep button{border-radius:100px}ion-buttons[slot=end] ds-button{--border-radius: 100px}ion-buttons[slot=end] ds-button::ng-deep button{border-radius:100px}.language-list{padding:8px 16px}.language-flag{width:24px;height:24px;object-fit:cover}.radio-wrapper{display:flex;align-items:center;justify-content:center}.radio-indicator{width:20px;height:20px;border:2px solid var(--color-border-default, #d1d5db);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0}.radio-indicator.radio-checked{border-color:var(--color-accent, #7c3aed)}.radio-inner{width:10px;height:10px;border-radius:50%;background:transparent;transition:background .2s ease}.radio-checked .radio-inner{background:var(--color-accent, #7c3aed)}.trailing-content{display:flex;align-items:center;gap:8px}.subtitle-flag{width:16px;height:16px;object-fit:cover;border-radius:2px}.subtitle{font-size:15px;color:var(--color-text-subtle, #6b7280);line-height:20px}.chevron-icon{color:var(--color-text-secondary, #737373)}.check-icon{color:var(--color-primary-base, #7c3aed)}::ng-deep ds-mobile-action-list-item ds-mobile-list-item{--color-background-primary: transparent;--color-background-neutral-primary-hover: var(--color-background-neutral-secondary, #f5f5f5)}::ng-deep ds-mobile-action-list-item ds-mobile-list-item .list-item-inner:before{z-index:0!important}::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-leading,::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-main,::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-trailing{position:relative;z-index:1}ds-mobile-action-list-item.destructive{--text-color-default-primary: var(--color-error-base, #ef4444)}.destructive-icon{color:var(--color-error-base, #ef4444)}.action-group-divider{height:1px;background:var(--color-border-subtle, #e5e5e5);margin:8px 0}\n"] }]
|
|
2667
|
+
`, styles: [":host{display:block;height:auto}.profile-sheet-content{overflow:hidden;width:100%}.view-container{display:grid;grid-template-columns:50% 50%;width:200%;transform:translate(0);transition:transform .3s cubic-bezier(.4,0,.2,1),height .3s cubic-bezier(.4,0,.2,1),opacity .15s ease-in-out;overflow:hidden}.view-container.show-language{transform:translate(-50%)}.view{width:100%}.view-container:not(.is-animating) .view:not(.active){height:0!important;overflow:hidden!important}.main-view{padding-top:16px}.actions-list{display:flex;flex-direction:column}.action-group{display:flex;flex-direction:column;padding:0 16px}.language-view{display:flex;flex-direction:column}ion-header{box-shadow:none}:host ::ng-deep .header-ios ion-toolbar:last-of-type{--border-width: 0 !important}ion-toolbar{--background: var(--color-background-neutral-primary, #ffffff);--border-width: 0 !important;--border-color: var(--color-border-default, #e5e7eb) !important;--padding-top: 12px;--padding-bottom: 8px;--min-height: 56px;border-bottom:1px solid var(--color-border-default, #e5e7eb)!important}ion-toolbar::part(native){border-bottom:1px solid var(--color-border-default, #e5e7eb)!important}ion-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:22px;letter-spacing:-.4px;color:var(--color-text-primary, #1a1a1a)}ion-buttons[slot=start] ds-button{--border-radius: 100px}ion-buttons[slot=start] ds-button::ng-deep button{border-radius:100px}ion-buttons[slot=end] ds-button{--border-radius: 100px}ion-buttons[slot=end] ds-button::ng-deep button{border-radius:100px}.language-list{padding:8px 16px}.language-flag{width:24px;height:24px;object-fit:cover}.radio-wrapper{display:flex;align-items:center;justify-content:center}.radio-indicator{width:20px;height:20px;border:2px solid var(--color-border-default, #d1d5db);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0}.radio-indicator.radio-checked{border-color:var(--color-accent, #7c3aed)}.radio-inner{width:10px;height:10px;border-radius:50%;background:transparent;transition:background .2s ease}.radio-checked .radio-inner{background:var(--color-accent, #7c3aed)}.trailing-content{display:flex;align-items:center;gap:8px}.subtitle-flag{width:16px;height:16px;object-fit:cover;border-radius:2px}.subtitle{font-size:15px;color:var(--color-text-subtle, #6b7280);line-height:20px}.chevron-icon{color:var(--color-text-secondary, #737373)}.check-icon{color:var(--color-primary-base, #7c3aed)}::ng-deep ds-mobile-action-list-item ds-mobile-list-item{--color-background-primary: transparent;--color-background-neutral-primary-hover: var(--color-background-neutral-secondary, #f5f5f5)}::ng-deep ds-mobile-action-list-item ds-mobile-list-item .list-item-inner:before{z-index:0!important}::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-leading,::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-main,::ng-deep ds-mobile-action-list-item ds-mobile-list-item .content-trailing{position:relative;z-index:1}ds-mobile-action-list-item.destructive{--text-color-default-primary: var(--color-error-base, #ef4444)}.destructive-icon{color:var(--color-error-base, #ef4444)}.action-group-divider{height:1px;background:var(--color-border-subtle, #e5e5e5);margin:8px 0}\n"] }]
|
|
2657
2668
|
}], ctorParameters: () => [{ type: i1.ModalController }, { type: i0.Injector }], propDecorators: { actionGroups: [{
|
|
2658
2669
|
type: Input
|
|
2659
2670
|
}], currentLanguage: [{
|
|
@@ -11799,21 +11810,14 @@ class MobileModalBase {
|
|
|
11799
11810
|
* - Any custom CSS padding value
|
|
11800
11811
|
*
|
|
11801
11812
|
* @default '0'
|
|
11802
|
-
*
|
|
11803
|
-
* @example
|
|
11804
|
-
* ```html
|
|
11805
|
-
* <!-- Default: sections handle padding -->
|
|
11806
|
-
* <ds-mobile-modal-base headerTitle="Details">
|
|
11807
|
-
* <ds-mobile-section headline="Info">...</ds-mobile-section>
|
|
11808
|
-
* </ds-mobile-modal-base>
|
|
11809
|
-
*
|
|
11810
|
-
* <!-- Legacy: content without sections -->
|
|
11811
|
-
* <ds-mobile-modal-base headerTitle="Details" contentPadding="20px">
|
|
11812
|
-
* <div>Padded content</div>
|
|
11813
|
-
* </ds-mobile-modal-base>
|
|
11814
|
-
* ```
|
|
11815
11813
|
*/
|
|
11816
11814
|
contentPadding = input('0', ...(ngDevMode ? [{ debugName: "contentPadding" }] : []));
|
|
11815
|
+
/**
|
|
11816
|
+
* Enable auto-height behavior for bottom sheets
|
|
11817
|
+
* When true, sets [fullscreen]="false" on ion-content and enforces flex: 0 0 auto
|
|
11818
|
+
* @default false
|
|
11819
|
+
*/
|
|
11820
|
+
isAutoHeight = input(false, ...(ngDevMode ? [{ debugName: "isAutoHeight" }] : []));
|
|
11817
11821
|
/**
|
|
11818
11822
|
* Emitted when modal is closed
|
|
11819
11823
|
*/
|
|
@@ -12059,14 +12063,14 @@ class MobileModalBase {
|
|
|
12059
12063
|
});
|
|
12060
12064
|
}
|
|
12061
12065
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileModalBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
12062
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: MobileModalBase, isStandalone: true, inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, headerTitle: { classPropertyName: "headerTitle", publicName: "headerTitle", isSignal: true, isRequired: false, transformFunction: null }, headerMeta: { classPropertyName: "headerMeta", publicName: "headerMeta", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, enableKeyboardHandling: { classPropertyName: "enableKeyboardHandling", publicName: "enableKeyboardHandling", isSignal: true, isRequired: false, transformFunction: null }, hasFixedBottom: { classPropertyName: "hasFixedBottom", publicName: "hasFixedBottom", isSignal: true, isRequired: false, transformFunction: null }, contentPadding: { classPropertyName: "contentPadding", publicName: "contentPadding", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", keyboardWillShow: "keyboardWillShow", keyboardWillHide: "keyboardWillHide" }, viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, read: IonContent }], ngImport: i0 });
|
|
12066
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: MobileModalBase, isStandalone: true, inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, headerTitle: { classPropertyName: "headerTitle", publicName: "headerTitle", isSignal: true, isRequired: false, transformFunction: null }, headerMeta: { classPropertyName: "headerMeta", publicName: "headerMeta", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, enableKeyboardHandling: { classPropertyName: "enableKeyboardHandling", publicName: "enableKeyboardHandling", isSignal: true, isRequired: false, transformFunction: null }, hasFixedBottom: { classPropertyName: "hasFixedBottom", publicName: "hasFixedBottom", isSignal: true, isRequired: false, transformFunction: null }, contentPadding: { classPropertyName: "contentPadding", publicName: "contentPadding", isSignal: true, isRequired: false, transformFunction: null }, isAutoHeight: { classPropertyName: "isAutoHeight", publicName: "isAutoHeight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", keyboardWillShow: "keyboardWillShow", keyboardWillHide: "keyboardWillHide" }, viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, read: IonContent }], ngImport: i0 });
|
|
12063
12067
|
}
|
|
12064
12068
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileModalBase, decorators: [{
|
|
12065
12069
|
type: Directive
|
|
12066
12070
|
}], propDecorators: { ionContent: [{
|
|
12067
12071
|
type: ViewChild,
|
|
12068
12072
|
args: [IonContent, { read: IonContent }]
|
|
12069
|
-
}], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], headerTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTitle", required: false }] }], headerMeta: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerMeta", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], enableKeyboardHandling: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableKeyboardHandling", required: false }] }], hasFixedBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasFixedBottom", required: false }] }], contentPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentPadding", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], keyboardWillShow: [{ type: i0.Output, args: ["keyboardWillShow"] }], keyboardWillHide: [{ type: i0.Output, args: ["keyboardWillHide"] }] } });
|
|
12073
|
+
}], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], headerTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTitle", required: false }] }], headerMeta: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerMeta", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], enableKeyboardHandling: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableKeyboardHandling", required: false }] }], hasFixedBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasFixedBottom", required: false }] }], contentPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentPadding", required: false }] }], isAutoHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAutoHeight", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], keyboardWillShow: [{ type: i0.Output, args: ["keyboardWillShow"] }], keyboardWillHide: [{ type: i0.Output, args: ["keyboardWillHide"] }] } });
|
|
12070
12074
|
|
|
12071
12075
|
/**
|
|
12072
12076
|
* DsMobileModalBaseComponent
|
|
@@ -12198,10 +12202,7 @@ class DsMobileModalBaseComponent extends MobileModalBase {
|
|
|
12198
12202
|
if (showHeaderValue === false)
|
|
12199
12203
|
return false;
|
|
12200
12204
|
// Auto-detect: show header if there's any header content
|
|
12201
|
-
return !!(this.headerTitle() ||
|
|
12202
|
-
this.headerMeta() ||
|
|
12203
|
-
this.hasContentInSlot(this.headerLeading) ||
|
|
12204
|
-
this.hasContentInSlot(this.headerMain));
|
|
12205
|
+
return !!(this.headerTitle() || this.headerMeta() || this.hasContentInSlot(this.headerLeading) || this.hasContentInSlot(this.headerMain));
|
|
12205
12206
|
}
|
|
12206
12207
|
/**
|
|
12207
12208
|
* Check if a content child slot has actual content
|
|
@@ -12210,13 +12211,12 @@ class DsMobileModalBaseComponent extends MobileModalBase {
|
|
|
12210
12211
|
if (!slot)
|
|
12211
12212
|
return false;
|
|
12212
12213
|
const element = slot.nativeElement;
|
|
12213
|
-
return element && (element.childNodes.length > 0 ||
|
|
12214
|
-
element.textContent?.trim().length > 0);
|
|
12214
|
+
return element && (element.childNodes.length > 0 || element.textContent?.trim().length > 0);
|
|
12215
12215
|
}
|
|
12216
12216
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileModalBaseComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
12217
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileModalBaseComponent, isStandalone: true, selector: "ds-mobile-modal-base", inputs: { showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--modal-content-padding": "contentPadding()" } }, queries: [{ propertyName: "customLoadingState", first: true, predicate: ["[loading-state]"], descendants: true, read: ElementRef }, { propertyName: "customErrorState", first: true, predicate: ["[error-state]"], descendants: true, read: ElementRef }, { propertyName: "headerLeading", first: true, predicate: ["[header-leading]"], descendants: true, read: ElementRef }, { propertyName: "headerMain", first: true, predicate: ["[header-main]"], descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, read: IonContent }], usesInheritance: true, ngImport: i0, template: `
|
|
12218
|
-
<ion-content [fullscreen]="
|
|
12219
|
-
<div class="modal-wrapper" [class.headerless]="!shouldShowHeader()">
|
|
12217
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileModalBaseComponent, isStandalone: true, selector: "ds-mobile-modal-base", inputs: { showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--modal-content-padding": "contentPadding()", "class.is-auto-height": "isAutoHeight()" } }, queries: [{ propertyName: "customLoadingState", first: true, predicate: ["[loading-state]"], descendants: true, read: ElementRef }, { propertyName: "customErrorState", first: true, predicate: ["[error-state]"], descendants: true, read: ElementRef }, { propertyName: "headerLeading", first: true, predicate: ["[header-leading]"], descendants: true, read: ElementRef }, { propertyName: "headerMain", first: true, predicate: ["[header-main]"], descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, read: IonContent }], usesInheritance: true, ngImport: i0, template: `
|
|
12218
|
+
<ion-content [fullscreen]="!isAutoHeight()" [scrollY]="!isAutoHeight()" class="modal-base-content" [class.is-auto-height]="isAutoHeight()">
|
|
12219
|
+
<div class="modal-wrapper" [class.headerless]="!shouldShowHeader()" [class.is-auto-height]="isAutoHeight()">
|
|
12220
12220
|
<!-- Header (conditional) -->
|
|
12221
12221
|
@if (shouldShowHeader()) {
|
|
12222
12222
|
<div class="modal-header">
|
|
@@ -12225,7 +12225,7 @@ class DsMobileModalBaseComponent extends MobileModalBase {
|
|
|
12225
12225
|
<div class="header-leading">
|
|
12226
12226
|
<ng-content select="[header-leading]"></ng-content>
|
|
12227
12227
|
</div>
|
|
12228
|
-
|
|
12228
|
+
|
|
12229
12229
|
<!-- Main (title + meta or custom) -->
|
|
12230
12230
|
<div class="header-main">
|
|
12231
12231
|
@if (headerTitle()) {
|
|
@@ -12236,30 +12236,16 @@ class DsMobileModalBaseComponent extends MobileModalBase {
|
|
|
12236
12236
|
}
|
|
12237
12237
|
<ng-content select="[header-main]"></ng-content>
|
|
12238
12238
|
</div>
|
|
12239
|
-
|
|
12239
|
+
|
|
12240
12240
|
<!-- Close button (in header) -->
|
|
12241
|
-
<ds-icon-button
|
|
12242
|
-
icon="remixCloseLine"
|
|
12243
|
-
variant="secondary"
|
|
12244
|
-
size="lg"
|
|
12245
|
-
(clicked)="close()"
|
|
12246
|
-
class="close-button"
|
|
12247
|
-
[attr.aria-label]="closeButtonLabel()"
|
|
12248
|
-
/>
|
|
12241
|
+
<ds-icon-button icon="remixCloseLine" variant="secondary" size="lg" (clicked)="close()" class="close-button" [attr.aria-label]="closeButtonLabel()" />
|
|
12249
12242
|
</div>
|
|
12250
12243
|
</div>
|
|
12251
12244
|
}
|
|
12252
|
-
|
|
12245
|
+
|
|
12253
12246
|
<!-- Absolute close button (when header is hidden) -->
|
|
12254
12247
|
@if (!shouldShowHeader()) {
|
|
12255
|
-
<ds-icon-button
|
|
12256
|
-
icon="remixCloseLine"
|
|
12257
|
-
variant="secondary"
|
|
12258
|
-
size="lg"
|
|
12259
|
-
(clicked)="close()"
|
|
12260
|
-
class="close-button-absolute"
|
|
12261
|
-
[attr.aria-label]="closeButtonLabel()"
|
|
12262
|
-
/>
|
|
12248
|
+
<ds-icon-button icon="remixCloseLine" variant="secondary" size="lg" (clicked)="close()" class="close-button-absolute" [attr.aria-label]="closeButtonLabel()" />
|
|
12263
12249
|
}
|
|
12264
12250
|
|
|
12265
12251
|
<!-- Content Container -->
|
|
@@ -12268,7 +12254,7 @@ class DsMobileModalBaseComponent extends MobileModalBase {
|
|
|
12268
12254
|
<div class="custom-loading-slot" [class.state-hidden]="!(loading() && hasCustomLoadingState)">
|
|
12269
12255
|
<ng-content select="[loading-state]"></ng-content>
|
|
12270
12256
|
</div>
|
|
12271
|
-
|
|
12257
|
+
|
|
12272
12258
|
<!-- Default Loading State -->
|
|
12273
12259
|
@if (loading() && !hasCustomLoadingState) {
|
|
12274
12260
|
<div class="modal-loading-state">
|
|
@@ -12276,12 +12262,12 @@ class DsMobileModalBaseComponent extends MobileModalBase {
|
|
|
12276
12262
|
<p class="loading-text">Loading...</p>
|
|
12277
12263
|
</div>
|
|
12278
12264
|
}
|
|
12279
|
-
|
|
12265
|
+
|
|
12280
12266
|
<!-- Custom Error State Slot - always present -->
|
|
12281
12267
|
<div class="custom-error-slot" [class.state-hidden]="!(error() && !loading() && hasCustomErrorState)">
|
|
12282
12268
|
<ng-content select="[error-state]"></ng-content>
|
|
12283
12269
|
</div>
|
|
12284
|
-
|
|
12270
|
+
|
|
12285
12271
|
<!-- Default Error State -->
|
|
12286
12272
|
@if (error() && !loading() && !hasCustomErrorState) {
|
|
12287
12273
|
<div class="modal-error-state">
|
|
@@ -12290,7 +12276,7 @@ class DsMobileModalBaseComponent extends MobileModalBase {
|
|
|
12290
12276
|
<p class="error-state-description">{{ error() }}</p>
|
|
12291
12277
|
</div>
|
|
12292
12278
|
}
|
|
12293
|
-
|
|
12279
|
+
|
|
12294
12280
|
<!-- Main content - always rendered but hidden when loading/error -->
|
|
12295
12281
|
<div class="modal-main-content" [class.content-hidden]="loading() || !!error()">
|
|
12296
12282
|
<ng-content></ng-content>
|
|
@@ -12300,24 +12286,20 @@ class DsMobileModalBaseComponent extends MobileModalBase {
|
|
|
12300
12286
|
</ion-content>
|
|
12301
12287
|
|
|
12302
12288
|
<!-- Fixed Bottom Component / Footer (slides with keyboard) -->
|
|
12303
|
-
<div class="modal-fixed-bottom" [class.bottom-hidden]="!hasFixedBottom() || loading() || error()">
|
|
12289
|
+
<div class="modal-fixed-bottom" [class.bottom-hidden]="!hasFixedBottom() || loading() || error()" [class.is-auto-height]="isAutoHeight()">
|
|
12304
12290
|
<ng-content select="[fixed-bottom]"></ng-content>
|
|
12305
12291
|
<ng-content select="[footer]"></ng-content>
|
|
12306
12292
|
</div>
|
|
12307
|
-
`, isInline: true, styles: [":host{display:block;position:relative;height:100%;width:100%}.modal-base-content{--background: var(--color-background-neutral-primary, #ffffff)}.modal-wrapper{display:flex;flex-direction:column;width:100%;background:var(--color-background-neutral-primary, #ffffff)}.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-sm);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}.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:
|
|
12293
|
+
`, 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-sm);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"] }] });
|
|
12308
12294
|
}
|
|
12309
12295
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileModalBaseComponent, decorators: [{
|
|
12310
12296
|
type: Component,
|
|
12311
|
-
args: [{ selector: 'ds-mobile-modal-base', standalone: true, imports: [
|
|
12312
|
-
|
|
12313
|
-
|
|
12314
|
-
DsIconButtonComponent,
|
|
12315
|
-
DsIconComponent
|
|
12316
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], host: {
|
|
12317
|
-
'[style.--modal-content-padding]': 'contentPadding()'
|
|
12297
|
+
args: [{ selector: 'ds-mobile-modal-base', standalone: true, imports: [CommonModule, IonContent, DsIconButtonComponent, DsIconComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], host: {
|
|
12298
|
+
'[style.--modal-content-padding]': 'contentPadding()',
|
|
12299
|
+
'[class.is-auto-height]': 'isAutoHeight()',
|
|
12318
12300
|
}, template: `
|
|
12319
|
-
<ion-content [fullscreen]="
|
|
12320
|
-
<div class="modal-wrapper" [class.headerless]="!shouldShowHeader()">
|
|
12301
|
+
<ion-content [fullscreen]="!isAutoHeight()" [scrollY]="!isAutoHeight()" class="modal-base-content" [class.is-auto-height]="isAutoHeight()">
|
|
12302
|
+
<div class="modal-wrapper" [class.headerless]="!shouldShowHeader()" [class.is-auto-height]="isAutoHeight()">
|
|
12321
12303
|
<!-- Header (conditional) -->
|
|
12322
12304
|
@if (shouldShowHeader()) {
|
|
12323
12305
|
<div class="modal-header">
|
|
@@ -12326,7 +12308,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
12326
12308
|
<div class="header-leading">
|
|
12327
12309
|
<ng-content select="[header-leading]"></ng-content>
|
|
12328
12310
|
</div>
|
|
12329
|
-
|
|
12311
|
+
|
|
12330
12312
|
<!-- Main (title + meta or custom) -->
|
|
12331
12313
|
<div class="header-main">
|
|
12332
12314
|
@if (headerTitle()) {
|
|
@@ -12337,30 +12319,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
12337
12319
|
}
|
|
12338
12320
|
<ng-content select="[header-main]"></ng-content>
|
|
12339
12321
|
</div>
|
|
12340
|
-
|
|
12322
|
+
|
|
12341
12323
|
<!-- Close button (in header) -->
|
|
12342
|
-
<ds-icon-button
|
|
12343
|
-
icon="remixCloseLine"
|
|
12344
|
-
variant="secondary"
|
|
12345
|
-
size="lg"
|
|
12346
|
-
(clicked)="close()"
|
|
12347
|
-
class="close-button"
|
|
12348
|
-
[attr.aria-label]="closeButtonLabel()"
|
|
12349
|
-
/>
|
|
12324
|
+
<ds-icon-button icon="remixCloseLine" variant="secondary" size="lg" (clicked)="close()" class="close-button" [attr.aria-label]="closeButtonLabel()" />
|
|
12350
12325
|
</div>
|
|
12351
12326
|
</div>
|
|
12352
12327
|
}
|
|
12353
|
-
|
|
12328
|
+
|
|
12354
12329
|
<!-- Absolute close button (when header is hidden) -->
|
|
12355
12330
|
@if (!shouldShowHeader()) {
|
|
12356
|
-
<ds-icon-button
|
|
12357
|
-
icon="remixCloseLine"
|
|
12358
|
-
variant="secondary"
|
|
12359
|
-
size="lg"
|
|
12360
|
-
(clicked)="close()"
|
|
12361
|
-
class="close-button-absolute"
|
|
12362
|
-
[attr.aria-label]="closeButtonLabel()"
|
|
12363
|
-
/>
|
|
12331
|
+
<ds-icon-button icon="remixCloseLine" variant="secondary" size="lg" (clicked)="close()" class="close-button-absolute" [attr.aria-label]="closeButtonLabel()" />
|
|
12364
12332
|
}
|
|
12365
12333
|
|
|
12366
12334
|
<!-- Content Container -->
|
|
@@ -12369,7 +12337,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
12369
12337
|
<div class="custom-loading-slot" [class.state-hidden]="!(loading() && hasCustomLoadingState)">
|
|
12370
12338
|
<ng-content select="[loading-state]"></ng-content>
|
|
12371
12339
|
</div>
|
|
12372
|
-
|
|
12340
|
+
|
|
12373
12341
|
<!-- Default Loading State -->
|
|
12374
12342
|
@if (loading() && !hasCustomLoadingState) {
|
|
12375
12343
|
<div class="modal-loading-state">
|
|
@@ -12377,12 +12345,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
12377
12345
|
<p class="loading-text">Loading...</p>
|
|
12378
12346
|
</div>
|
|
12379
12347
|
}
|
|
12380
|
-
|
|
12348
|
+
|
|
12381
12349
|
<!-- Custom Error State Slot - always present -->
|
|
12382
12350
|
<div class="custom-error-slot" [class.state-hidden]="!(error() && !loading() && hasCustomErrorState)">
|
|
12383
12351
|
<ng-content select="[error-state]"></ng-content>
|
|
12384
12352
|
</div>
|
|
12385
|
-
|
|
12353
|
+
|
|
12386
12354
|
<!-- Default Error State -->
|
|
12387
12355
|
@if (error() && !loading() && !hasCustomErrorState) {
|
|
12388
12356
|
<div class="modal-error-state">
|
|
@@ -12391,7 +12359,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
12391
12359
|
<p class="error-state-description">{{ error() }}</p>
|
|
12392
12360
|
</div>
|
|
12393
12361
|
}
|
|
12394
|
-
|
|
12362
|
+
|
|
12395
12363
|
<!-- Main content - always rendered but hidden when loading/error -->
|
|
12396
12364
|
<div class="modal-main-content" [class.content-hidden]="loading() || !!error()">
|
|
12397
12365
|
<ng-content></ng-content>
|
|
@@ -12401,11 +12369,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
12401
12369
|
</ion-content>
|
|
12402
12370
|
|
|
12403
12371
|
<!-- Fixed Bottom Component / Footer (slides with keyboard) -->
|
|
12404
|
-
<div class="modal-fixed-bottom" [class.bottom-hidden]="!hasFixedBottom() || loading() || error()">
|
|
12372
|
+
<div class="modal-fixed-bottom" [class.bottom-hidden]="!hasFixedBottom() || loading() || error()" [class.is-auto-height]="isAutoHeight()">
|
|
12405
12373
|
<ng-content select="[fixed-bottom]"></ng-content>
|
|
12406
12374
|
<ng-content select="[footer]"></ng-content>
|
|
12407
12375
|
</div>
|
|
12408
|
-
`, styles: [":host{display:block;position:relative;height:100%;width:100%}.modal-base-content{--background: var(--color-background-neutral-primary, #ffffff)}.modal-wrapper{display:flex;flex-direction:column;width:100%;background:var(--color-background-neutral-primary, #ffffff)}.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-sm);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}.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:
|
|
12376
|
+
`, 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-sm);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"] }]
|
|
12409
12377
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { ionContent: [{
|
|
12410
12378
|
type: ViewChild,
|
|
12411
12379
|
args: [IonContent, { read: IonContent }]
|
|
@@ -14901,6 +14869,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
14901
14869
|
* ```
|
|
14902
14870
|
*/
|
|
14903
14871
|
class DsMobileNewInquiryModalComponent {
|
|
14872
|
+
modalController = inject(ModalController);
|
|
14904
14873
|
titleInputRef;
|
|
14905
14874
|
titleInput;
|
|
14906
14875
|
fileInput;
|
|
@@ -14998,9 +14967,9 @@ class DsMobileNewInquiryModalComponent {
|
|
|
14998
14967
|
id: `photo-${Date.now()}`,
|
|
14999
14968
|
src: image.webPath,
|
|
15000
14969
|
type: 'image',
|
|
15001
|
-
name: `Photo ${this.attachments().length + 1}
|
|
14970
|
+
name: `Photo ${this.attachments().length + 1}`,
|
|
15002
14971
|
};
|
|
15003
|
-
this.attachments.update(attachments => [...attachments, newAttachment]);
|
|
14972
|
+
this.attachments.update((attachments) => [...attachments, newAttachment]);
|
|
15004
14973
|
}
|
|
15005
14974
|
}
|
|
15006
14975
|
catch (error) {
|
|
@@ -15012,7 +14981,7 @@ class DsMobileNewInquiryModalComponent {
|
|
|
15012
14981
|
* Remove an attachment
|
|
15013
14982
|
*/
|
|
15014
14983
|
removeAttachment(attachmentId) {
|
|
15015
|
-
this.attachments.update(attachments => attachments.filter(a => a.id !== attachmentId));
|
|
14984
|
+
this.attachments.update((attachments) => attachments.filter((a) => a.id !== attachmentId));
|
|
15016
14985
|
}
|
|
15017
14986
|
/**
|
|
15018
14987
|
* Handle attachment button click
|
|
@@ -15063,7 +15032,7 @@ class DsMobileNewInquiryModalComponent {
|
|
|
15063
15032
|
const k = 1024;
|
|
15064
15033
|
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
15065
15034
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
15066
|
-
return Math.round(bytes / Math.pow(k, i) * 100) / 100 + ' ' + sizes[i];
|
|
15035
|
+
return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + ' ' + sizes[i];
|
|
15067
15036
|
}
|
|
15068
15037
|
/**
|
|
15069
15038
|
* Handle file selection from file input
|
|
@@ -15077,7 +15046,7 @@ class DsMobileNewInquiryModalComponent {
|
|
|
15077
15046
|
// Process each selected file (up to the limit)
|
|
15078
15047
|
const remainingSlots = 6 - this.attachments().length;
|
|
15079
15048
|
const filesToProcess = Array.from(files).slice(0, remainingSlots);
|
|
15080
|
-
filesToProcess.forEach(file => {
|
|
15049
|
+
filesToProcess.forEach((file) => {
|
|
15081
15050
|
const fileType = this.detectFileType(file);
|
|
15082
15051
|
// Create a data URL for preview
|
|
15083
15052
|
const reader = new FileReader();
|
|
@@ -15089,9 +15058,9 @@ class DsMobileNewInquiryModalComponent {
|
|
|
15089
15058
|
src: result,
|
|
15090
15059
|
type: fileType,
|
|
15091
15060
|
name: file.name,
|
|
15092
|
-
size: this.formatFileSize(file.size)
|
|
15061
|
+
size: this.formatFileSize(file.size),
|
|
15093
15062
|
};
|
|
15094
|
-
this.attachments.update(attachments => [...attachments, newAttachment]);
|
|
15063
|
+
this.attachments.update((attachments) => [...attachments, newAttachment]);
|
|
15095
15064
|
}
|
|
15096
15065
|
};
|
|
15097
15066
|
reader.readAsDataURL(file);
|
|
@@ -15111,13 +15080,14 @@ class DsMobileNewInquiryModalComponent {
|
|
|
15111
15080
|
const inquiryData = {
|
|
15112
15081
|
title: this.title.trim(),
|
|
15113
15082
|
description: this.description.trim(),
|
|
15114
|
-
attachments: this.attachments()
|
|
15083
|
+
attachments: this.attachments(),
|
|
15115
15084
|
};
|
|
15116
15085
|
console.log('[NewInquiryModal] Submitting inquiry:', inquiryData);
|
|
15117
15086
|
if (this.onSubmit) {
|
|
15118
15087
|
await this.onSubmit(inquiryData);
|
|
15119
15088
|
}
|
|
15120
|
-
// Success -
|
|
15089
|
+
// Success - close the modal
|
|
15090
|
+
this.modalController.dismiss();
|
|
15121
15091
|
}
|
|
15122
15092
|
catch (error) {
|
|
15123
15093
|
console.error('[NewInquiryModal] Error submitting inquiry:', error);
|
|
@@ -15135,8 +15105,9 @@ class DsMobileNewInquiryModalComponent {
|
|
|
15135
15105
|
[showHeader]="false"
|
|
15136
15106
|
[hasFixedBottom]="true"
|
|
15137
15107
|
[enableKeyboardHandling]="true"
|
|
15138
|
-
|
|
15139
|
-
|
|
15108
|
+
[isAutoHeight]="true"
|
|
15109
|
+
closeButtonLabel="Close"
|
|
15110
|
+
>
|
|
15140
15111
|
<!-- Form Content -->
|
|
15141
15112
|
<ds-mobile-section>
|
|
15142
15113
|
<!-- Title Field (Large Ghost Textarea) -->
|
|
@@ -15169,10 +15140,7 @@ class DsMobileNewInquiryModalComponent {
|
|
|
15169
15140
|
<div class="attachment-previews-section">
|
|
15170
15141
|
<div class="image-previews">
|
|
15171
15142
|
@for (attachment of attachments(); track attachment.id) {
|
|
15172
|
-
<ds-mobile-attachment-preview
|
|
15173
|
-
[attachment]="attachment"
|
|
15174
|
-
(remove)="removeAttachment($event)"
|
|
15175
|
-
/>
|
|
15143
|
+
<ds-mobile-attachment-preview [attachment]="attachment" (remove)="removeAttachment($event)" />
|
|
15176
15144
|
}
|
|
15177
15145
|
</div>
|
|
15178
15146
|
</div>
|
|
@@ -15183,13 +15151,7 @@ class DsMobileNewInquiryModalComponent {
|
|
|
15183
15151
|
<div class="submit-content">
|
|
15184
15152
|
<!-- Upload Actions (Left) -->
|
|
15185
15153
|
<div class="upload-actions">
|
|
15186
|
-
<ds-icon-button
|
|
15187
|
-
icon="remixImageLine"
|
|
15188
|
-
variant="secondary"
|
|
15189
|
-
size="md"
|
|
15190
|
-
(clicked)="addPhoto()"
|
|
15191
|
-
[disabled]="attachments().length >= 6"
|
|
15192
|
-
aria-label="Add photo">
|
|
15154
|
+
<ds-icon-button icon="remixImageLine" variant="secondary" size="md" (clicked)="addPhoto()" [disabled]="attachments().length >= 6" aria-label="Add photo">
|
|
15193
15155
|
</ds-icon-button>
|
|
15194
15156
|
<ds-icon-button
|
|
15195
15157
|
icon="remixAttachmentLine"
|
|
@@ -15197,34 +15159,21 @@ class DsMobileNewInquiryModalComponent {
|
|
|
15197
15159
|
size="md"
|
|
15198
15160
|
(clicked)="handleAddAttachment()"
|
|
15199
15161
|
[disabled]="attachments().length >= 6"
|
|
15200
|
-
aria-label="Add attachment"
|
|
15162
|
+
aria-label="Add attachment"
|
|
15163
|
+
>
|
|
15201
15164
|
</ds-icon-button>
|
|
15202
|
-
|
|
15165
|
+
|
|
15203
15166
|
<!-- Hidden file input for file selection -->
|
|
15204
|
-
<input
|
|
15205
|
-
#fileInput
|
|
15206
|
-
type="file"
|
|
15207
|
-
accept="*/*"
|
|
15208
|
-
multiple
|
|
15209
|
-
(change)="handleFileSelect($event)"
|
|
15210
|
-
style="display: none;"
|
|
15211
|
-
aria-hidden="true"
|
|
15212
|
-
/>
|
|
15167
|
+
<input #fileInput type="file" accept="*/*" multiple (change)="handleFileSelect($event)" style="display: none;" aria-hidden="true" />
|
|
15213
15168
|
</div>
|
|
15214
15169
|
|
|
15215
15170
|
<!-- Submit Button (Right) -->
|
|
15216
|
-
<ds-button
|
|
15217
|
-
variant="primary"
|
|
15218
|
-
size="lg"
|
|
15219
|
-
[disabled]="!isFormValid() || isSubmitting()"
|
|
15220
|
-
(clicked)="handleSubmit()">
|
|
15221
|
-
Submit
|
|
15222
|
-
</ds-button>
|
|
15171
|
+
<ds-button variant="primary" size="lg" [disabled]="!isFormValid() || isSubmitting()" (clicked)="handleSubmit()"> Submit </ds-button>
|
|
15223
15172
|
</div>
|
|
15224
15173
|
</div>
|
|
15225
15174
|
</div>
|
|
15226
15175
|
</ds-mobile-modal-base>
|
|
15227
|
-
`, isInline: true, styles: [".author-details{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.author-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.author-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}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.lightbox-context .author-name,.overlay-context .author-name{color:#fffffff2}.lightbox-context .author-meta,.overlay-context .author-meta{color:#ffffffb3}.lightbox-context .author-meta .separator,.overlay-context .author-meta .separator{color:#ffffff80}.section-headline{font-size:var(--font-size-base);font-weight:600;color:var(--text-color-default-primary);padding:16px 0;margin:0;letter-spacing:-.2px;display:flex;align-items:center;gap:6px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--text-color-default-primary, #202227);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--text-color-default-secondary, #545B66);margin:0}.ghost-input-clean ::ng-deep .ds-input,.ghost-input-clean ::ng-deep .ds-textarea,.ghost-input-clean ::ng-deep .textarea-container{outline:none!important;border:none!important}.ghost-input-clean ::ng-deep .ds-input:hover,.ghost-input-clean ::ng-deep .ds-textarea:hover,.ghost-input-clean ::ng-deep .textarea-container:hover,.ghost-input-clean ::ng-deep .ds-input:focus,.ghost-input-clean ::ng-deep .ds-textarea:focus,.ghost-input-clean ::ng-deep .textarea-container:focus,.ghost-input-clean ::ng-deep .ds-input:focus-within,.ghost-input-clean ::ng-deep .ds-textarea:focus-within,.ghost-input-clean ::ng-deep .textarea-container:focus-within{outline:none!important;border:none!important;box-shadow:none!important}.ghost-input-clean ::ng-deep textarea{outline:none!important;border:none!important;box-shadow:none!important;resize:none!important}.ghost-input-clean ::ng-deep textarea:hover,.ghost-input-clean ::ng-deep textarea:focus{outline:none!important;border:none!important;box-shadow:none!important}\n", ".inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;max-height:200px;overflow-y:auto;resize:none;box-sizing:border-box;padding-right:52px}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;
|
|
15176
|
+
`, isInline: true, styles: [".author-details{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.author-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.author-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}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.lightbox-context .author-name,.overlay-context .author-name{color:#fffffff2}.lightbox-context .author-meta,.overlay-context .author-meta{color:#ffffffb3}.lightbox-context .author-meta .separator,.overlay-context .author-meta .separator{color:#ffffff80}.section-headline{font-size:var(--font-size-base);font-weight:600;color:var(--text-color-default-primary);padding:16px 0;margin:0;letter-spacing:-.2px;display:flex;align-items:center;gap:6px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--text-color-default-primary, #202227);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--text-color-default-secondary, #545B66);margin:0}.ghost-input-clean ::ng-deep .ds-input,.ghost-input-clean ::ng-deep .ds-textarea,.ghost-input-clean ::ng-deep .textarea-container{outline:none!important;border:none!important}.ghost-input-clean ::ng-deep .ds-input:hover,.ghost-input-clean ::ng-deep .ds-textarea:hover,.ghost-input-clean ::ng-deep .textarea-container:hover,.ghost-input-clean ::ng-deep .ds-input:focus,.ghost-input-clean ::ng-deep .ds-textarea:focus,.ghost-input-clean ::ng-deep .textarea-container:focus,.ghost-input-clean ::ng-deep .ds-input:focus-within,.ghost-input-clean ::ng-deep .ds-textarea:focus-within,.ghost-input-clean ::ng-deep .textarea-container:focus-within{outline:none!important;border:none!important;box-shadow:none!important}.ghost-input-clean ::ng-deep textarea{outline:none!important;border:none!important;box-shadow:none!important;resize:none!important}.ghost-input-clean ::ng-deep textarea:hover,.ghost-input-clean ::ng-deep textarea:focus{outline:none!important;border:none!important;box-shadow:none!important}\n", ".inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;max-height:200px;overflow-y:auto;resize:none;box-sizing:border-box;padding-right:52px}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.image-previews::-webkit-scrollbar{display:none}.submit-container{padding:16px 20px}.submit-content{display:flex;align-items:center;justify-content:space-between;gap:16px}.upload-actions{display:flex;align-items:center;gap:8px}.upload-actions ds-icon-button::ng-deep button{width:44px;height:44px;border-radius:50%}.submit-content ds-button::ng-deep button{border-radius:100px}.inquiry-description-input{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep .textarea-container{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep textarea{flex:1;min-height:80px;resize:none}@media (min-width: 768px){.submit-container{padding:20px 32px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsTextareaComponent, selector: "ds-textarea", inputs: ["variant", "placeholder", "disabled", "readonly", "required", "ghost", "rows", "cols", "maxlength", "minlength", "ariaLabel", "ariaDescribedBy", "ariaLabelledBy"], outputs: ["valueChange", "focused", "blurred"] }, { 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: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["showHeader"] }, { kind: "component", type: DsMobileAttachmentPreviewComponent, selector: "ds-mobile-attachment-preview", inputs: ["attachment"], outputs: ["remove"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }] });
|
|
15228
15177
|
}
|
|
15229
15178
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileNewInquiryModalComponent, decorators: [{
|
|
15230
15179
|
type: Component,
|
|
@@ -15236,7 +15185,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
15236
15185
|
DsIconButtonComponent,
|
|
15237
15186
|
DsMobileModalBaseComponent,
|
|
15238
15187
|
DsMobileAttachmentPreviewComponent,
|
|
15239
|
-
DsMobileSectionComponent
|
|
15188
|
+
DsMobileSectionComponent,
|
|
15240
15189
|
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: `
|
|
15241
15190
|
<ds-mobile-modal-base
|
|
15242
15191
|
[loading]="loading"
|
|
@@ -15244,8 +15193,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
15244
15193
|
[showHeader]="false"
|
|
15245
15194
|
[hasFixedBottom]="true"
|
|
15246
15195
|
[enableKeyboardHandling]="true"
|
|
15247
|
-
|
|
15248
|
-
|
|
15196
|
+
[isAutoHeight]="true"
|
|
15197
|
+
closeButtonLabel="Close"
|
|
15198
|
+
>
|
|
15249
15199
|
<!-- Form Content -->
|
|
15250
15200
|
<ds-mobile-section>
|
|
15251
15201
|
<!-- Title Field (Large Ghost Textarea) -->
|
|
@@ -15278,10 +15228,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
15278
15228
|
<div class="attachment-previews-section">
|
|
15279
15229
|
<div class="image-previews">
|
|
15280
15230
|
@for (attachment of attachments(); track attachment.id) {
|
|
15281
|
-
<ds-mobile-attachment-preview
|
|
15282
|
-
[attachment]="attachment"
|
|
15283
|
-
(remove)="removeAttachment($event)"
|
|
15284
|
-
/>
|
|
15231
|
+
<ds-mobile-attachment-preview [attachment]="attachment" (remove)="removeAttachment($event)" />
|
|
15285
15232
|
}
|
|
15286
15233
|
</div>
|
|
15287
15234
|
</div>
|
|
@@ -15292,13 +15239,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
15292
15239
|
<div class="submit-content">
|
|
15293
15240
|
<!-- Upload Actions (Left) -->
|
|
15294
15241
|
<div class="upload-actions">
|
|
15295
|
-
<ds-icon-button
|
|
15296
|
-
icon="remixImageLine"
|
|
15297
|
-
variant="secondary"
|
|
15298
|
-
size="md"
|
|
15299
|
-
(clicked)="addPhoto()"
|
|
15300
|
-
[disabled]="attachments().length >= 6"
|
|
15301
|
-
aria-label="Add photo">
|
|
15242
|
+
<ds-icon-button icon="remixImageLine" variant="secondary" size="md" (clicked)="addPhoto()" [disabled]="attachments().length >= 6" aria-label="Add photo">
|
|
15302
15243
|
</ds-icon-button>
|
|
15303
15244
|
<ds-icon-button
|
|
15304
15245
|
icon="remixAttachmentLine"
|
|
@@ -15306,34 +15247,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
15306
15247
|
size="md"
|
|
15307
15248
|
(clicked)="handleAddAttachment()"
|
|
15308
15249
|
[disabled]="attachments().length >= 6"
|
|
15309
|
-
aria-label="Add attachment"
|
|
15250
|
+
aria-label="Add attachment"
|
|
15251
|
+
>
|
|
15310
15252
|
</ds-icon-button>
|
|
15311
|
-
|
|
15253
|
+
|
|
15312
15254
|
<!-- Hidden file input for file selection -->
|
|
15313
|
-
<input
|
|
15314
|
-
#fileInput
|
|
15315
|
-
type="file"
|
|
15316
|
-
accept="*/*"
|
|
15317
|
-
multiple
|
|
15318
|
-
(change)="handleFileSelect($event)"
|
|
15319
|
-
style="display: none;"
|
|
15320
|
-
aria-hidden="true"
|
|
15321
|
-
/>
|
|
15255
|
+
<input #fileInput type="file" accept="*/*" multiple (change)="handleFileSelect($event)" style="display: none;" aria-hidden="true" />
|
|
15322
15256
|
</div>
|
|
15323
15257
|
|
|
15324
15258
|
<!-- Submit Button (Right) -->
|
|
15325
|
-
<ds-button
|
|
15326
|
-
variant="primary"
|
|
15327
|
-
size="lg"
|
|
15328
|
-
[disabled]="!isFormValid() || isSubmitting()"
|
|
15329
|
-
(clicked)="handleSubmit()">
|
|
15330
|
-
Submit
|
|
15331
|
-
</ds-button>
|
|
15259
|
+
<ds-button variant="primary" size="lg" [disabled]="!isFormValid() || isSubmitting()" (clicked)="handleSubmit()"> Submit </ds-button>
|
|
15332
15260
|
</div>
|
|
15333
15261
|
</div>
|
|
15334
15262
|
</div>
|
|
15335
15263
|
</ds-mobile-modal-base>
|
|
15336
|
-
`, styles: [".author-details{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.author-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.author-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}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.lightbox-context .author-name,.overlay-context .author-name{color:#fffffff2}.lightbox-context .author-meta,.overlay-context .author-meta{color:#ffffffb3}.lightbox-context .author-meta .separator,.overlay-context .author-meta .separator{color:#ffffff80}.section-headline{font-size:var(--font-size-base);font-weight:600;color:var(--text-color-default-primary);padding:16px 0;margin:0;letter-spacing:-.2px;display:flex;align-items:center;gap:6px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--text-color-default-primary, #202227);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--text-color-default-secondary, #545B66);margin:0}.ghost-input-clean ::ng-deep .ds-input,.ghost-input-clean ::ng-deep .ds-textarea,.ghost-input-clean ::ng-deep .textarea-container{outline:none!important;border:none!important}.ghost-input-clean ::ng-deep .ds-input:hover,.ghost-input-clean ::ng-deep .ds-textarea:hover,.ghost-input-clean ::ng-deep .textarea-container:hover,.ghost-input-clean ::ng-deep .ds-input:focus,.ghost-input-clean ::ng-deep .ds-textarea:focus,.ghost-input-clean ::ng-deep .textarea-container:focus,.ghost-input-clean ::ng-deep .ds-input:focus-within,.ghost-input-clean ::ng-deep .ds-textarea:focus-within,.ghost-input-clean ::ng-deep .textarea-container:focus-within{outline:none!important;border:none!important;box-shadow:none!important}.ghost-input-clean ::ng-deep textarea{outline:none!important;border:none!important;box-shadow:none!important;resize:none!important}.ghost-input-clean ::ng-deep textarea:hover,.ghost-input-clean ::ng-deep textarea:focus{outline:none!important;border:none!important;box-shadow:none!important}\n", ".inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;max-height:200px;overflow-y:auto;resize:none;box-sizing:border-box;padding-right:52px}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;
|
|
15264
|
+
`, styles: [".author-details{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.author-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.author-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}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.lightbox-context .author-name,.overlay-context .author-name{color:#fffffff2}.lightbox-context .author-meta,.overlay-context .author-meta{color:#ffffffb3}.lightbox-context .author-meta .separator,.overlay-context .author-meta .separator{color:#ffffff80}.section-headline{font-size:var(--font-size-base);font-weight:600;color:var(--text-color-default-primary);padding:16px 0;margin:0;letter-spacing:-.2px;display:flex;align-items:center;gap:6px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--text-color-default-primary, #202227);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--text-color-default-secondary, #545B66);margin:0}.ghost-input-clean ::ng-deep .ds-input,.ghost-input-clean ::ng-deep .ds-textarea,.ghost-input-clean ::ng-deep .textarea-container{outline:none!important;border:none!important}.ghost-input-clean ::ng-deep .ds-input:hover,.ghost-input-clean ::ng-deep .ds-textarea:hover,.ghost-input-clean ::ng-deep .textarea-container:hover,.ghost-input-clean ::ng-deep .ds-input:focus,.ghost-input-clean ::ng-deep .ds-textarea:focus,.ghost-input-clean ::ng-deep .textarea-container:focus,.ghost-input-clean ::ng-deep .ds-input:focus-within,.ghost-input-clean ::ng-deep .ds-textarea:focus-within,.ghost-input-clean ::ng-deep .textarea-container:focus-within{outline:none!important;border:none!important;box-shadow:none!important}.ghost-input-clean ::ng-deep textarea{outline:none!important;border:none!important;box-shadow:none!important;resize:none!important}.ghost-input-clean ::ng-deep textarea:hover,.ghost-input-clean ::ng-deep textarea:focus{outline:none!important;border:none!important;box-shadow:none!important}\n", ".inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;max-height:200px;overflow-y:auto;resize:none;box-sizing:border-box;padding-right:52px}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.image-previews::-webkit-scrollbar{display:none}.submit-container{padding:16px 20px}.submit-content{display:flex;align-items:center;justify-content:space-between;gap:16px}.upload-actions{display:flex;align-items:center;gap:8px}.upload-actions ds-icon-button::ng-deep button{width:44px;height:44px;border-radius:50%}.submit-content ds-button::ng-deep button{border-radius:100px}.inquiry-description-input{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep .textarea-container{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep textarea{flex:1;min-height:80px;resize:none}@media (min-width: 768px){.submit-container{padding:20px 32px}}\n"] }]
|
|
15337
15265
|
}], propDecorators: { titleInputRef: [{
|
|
15338
15266
|
type: ViewChild,
|
|
15339
15267
|
args: ['titleInput', { read: ElementRef }]
|
|
@@ -15367,16 +15295,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
15367
15295
|
*
|
|
15368
15296
|
* @example
|
|
15369
15297
|
* ```typescript
|
|
15370
|
-
* constructor(private
|
|
15298
|
+
* constructor(private newInquiryModal: DsMobileNewInquiryModalService) {}
|
|
15371
15299
|
*
|
|
15372
|
-
* async createNewInquiry() {
|
|
15373
|
-
*
|
|
15300
|
+
* async createNewInquiry(): Promise<void> {
|
|
15301
|
+
* console.log('[InquiriesPage] FAB clicked, opening modal...');
|
|
15302
|
+
*
|
|
15303
|
+
* await this.newInquiryModal.open({
|
|
15374
15304
|
* onSubmit: async (data) => {
|
|
15375
15305
|
* console.log('Creating inquiry:', data);
|
|
15376
15306
|
* // Call your API to create the inquiry
|
|
15377
15307
|
* await this.apiService.createInquiry(data);
|
|
15378
15308
|
* // Close the modal
|
|
15379
|
-
* await this.
|
|
15309
|
+
* await this.newInquiryModal.close();
|
|
15380
15310
|
* }
|
|
15381
15311
|
* });
|
|
15382
15312
|
* }
|
|
@@ -15400,10 +15330,14 @@ class DsMobileNewInquiryModalService extends BaseModalService {
|
|
|
15400
15330
|
error: options?.error,
|
|
15401
15331
|
}, {
|
|
15402
15332
|
keyboardClose: false, // Don't close on keyboard hide for this modal
|
|
15333
|
+
cssClass: ['ds-modal-base', 'auto-height'],
|
|
15334
|
+
breakpoints: [0, 1],
|
|
15335
|
+
initialBreakpoint: 1,
|
|
15336
|
+
handle: false,
|
|
15403
15337
|
});
|
|
15404
|
-
|
|
15338
|
+
console.log('[NewInquiryModal] Modal created, presenting...');
|
|
15405
15339
|
await modal.present();
|
|
15406
|
-
|
|
15340
|
+
console.log('[NewInquiryModal] Modal presented');
|
|
15407
15341
|
}
|
|
15408
15342
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileNewInquiryModalService, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15409
15343
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileNewInquiryModalService, providedIn: 'root' });
|
|
@@ -16518,7 +16452,7 @@ class DsMobileFabComponent {
|
|
|
16518
16452
|
/**
|
|
16519
16453
|
* Emitted when the FAB is clicked
|
|
16520
16454
|
*/
|
|
16521
|
-
|
|
16455
|
+
clicked = output();
|
|
16522
16456
|
ngAfterViewInit() {
|
|
16523
16457
|
// Only calculate position on mobile (not desktop)
|
|
16524
16458
|
if (!this.platform.is('desktop')) {
|
|
@@ -16558,14 +16492,14 @@ class DsMobileFabComponent {
|
|
|
16558
16492
|
*/
|
|
16559
16493
|
handleClick() {
|
|
16560
16494
|
if (!this.disabled()) {
|
|
16561
|
-
this.
|
|
16495
|
+
this.clicked.emit();
|
|
16562
16496
|
}
|
|
16563
16497
|
}
|
|
16564
16498
|
ngOnDestroy() {
|
|
16565
16499
|
this.resizeObserver?.disconnect();
|
|
16566
16500
|
}
|
|
16567
16501
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileFabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16568
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: DsMobileFabComponent, isStandalone: true, selector: "ds-mobile-fab", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: {
|
|
16502
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: DsMobileFabComponent, isStandalone: true, selector: "ds-mobile-fab", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { properties: { "class.fab-bottom-right": "position() === \"bottom-right\"", "class.fab-bottom-left": "position() === \"bottom-left\"", "class.fab-bottom-center": "position() === \"bottom-center\"" } }, ngImport: i0, template: `
|
|
16569
16503
|
<div class="fab-container">
|
|
16570
16504
|
<ds-icon-button
|
|
16571
16505
|
[icon]="icon()"
|
|
@@ -16573,7 +16507,7 @@ class DsMobileFabComponent {
|
|
|
16573
16507
|
[size]="size()"
|
|
16574
16508
|
[ariaLabel]="ariaLabel()"
|
|
16575
16509
|
[disabled]="disabled()"
|
|
16576
|
-
(
|
|
16510
|
+
(clicked)="handleClick()"
|
|
16577
16511
|
class="fab-button">
|
|
16578
16512
|
</ds-icon-button>
|
|
16579
16513
|
</div>
|
|
@@ -16593,12 +16527,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
16593
16527
|
[size]="size()"
|
|
16594
16528
|
[ariaLabel]="ariaLabel()"
|
|
16595
16529
|
[disabled]="disabled()"
|
|
16596
|
-
(
|
|
16530
|
+
(clicked)="handleClick()"
|
|
16597
16531
|
class="fab-button">
|
|
16598
16532
|
</ds-icon-button>
|
|
16599
16533
|
</div>
|
|
16600
16534
|
`, styles: [":host{display:block;position:fixed;z-index:1000;pointer-events:none}.fab-container{position:relative;pointer-events:none;animation:fabEnter .3s cubic-bezier(.4,0,.2,1) forwards}@keyframes fabEnter{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}:host(.fab-bottom-right){bottom:var(--fab-calculated-bottom, 84px);right:20px}:host(.fab-bottom-left){bottom:var(--fab-calculated-bottom, 84px);left:20px}:host(.fab-bottom-center){bottom:var(--fab-calculated-bottom, 84px);left:50%;transform:translate(-50%)}@supports (padding-right: env(safe-area-inset-right)){:host(.fab-bottom-right){right:calc(20px + env(safe-area-inset-right))}}@supports (padding-left: env(safe-area-inset-left)){:host(.fab-bottom-left){left:calc(20px + env(safe-area-inset-left))}}@media (min-width: 768px){:host-context(.plt-desktop).fab-bottom-right{bottom:40px;right:40px}:host-context(.plt-desktop).fab-bottom-left{bottom:40px;left:40px}:host-context(.plt-desktop).fab-bottom-center{bottom:40px}@supports (padding-right: env(safe-area-inset-right)){:host-context(.plt-desktop).fab-bottom-right{right:calc(40px + env(safe-area-inset-right))}}@supports (padding-left: env(safe-area-inset-left)){:host-context(.plt-desktop).fab-bottom-left{left:calc(40px + env(safe-area-inset-left))}}}.fab-button{pointer-events:auto;display:block}.fab-button::ng-deep button{width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;border-radius:50%!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important;background:var(--color-accent)!important;color:var(--color-on-accent)!important;border:none!important;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f;transition:all .2s cubic-bezier(.4,0,.2,1)}.fab-button::ng-deep button:hover:not(:disabled){background:var(--color-accent-hover)!important;box-shadow:0 5px 7px -2px #0003,0 8px 14px #00000024,0 2px 22px #0000001f;transform:scale(1.05)}.fab-button::ng-deep button:active:not(:disabled){background:var(--color-accent-active)!important;box-shadow:0 2px 4px -1px #0003,0 4px 8px #00000024,0 1px 14px #0000001f;transform:scale(.95)}.fab-button::ng-deep button:disabled{opacity:.5;cursor:not-allowed;box-shadow:0 2px 4px -1px #0000001a,0 4px 8px #00000014,0 1px 14px #0000000f}.fab-button::ng-deep button .btn__icon,.fab-button::ng-deep button .btn__icon svg{color:var(--color-on-accent)!important;fill:var(--color-on-accent)!important}.fab-button::ng-deep button .btn__icon{display:flex!important;align-items:center!important;justify-content:center!important;flex-shrink:0!important}.fab-button::ng-deep button .btn__icon svg{width:24px!important;height:24px!important}\n"] }]
|
|
16601
|
-
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }],
|
|
16535
|
+
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], clicked: [{ type: i0.Output, args: ["clicked"] }] } });
|
|
16602
16536
|
|
|
16603
16537
|
/**
|
|
16604
16538
|
* DsMobileOfflineBannerComponent
|
|
@@ -18987,7 +18921,7 @@ class MobileInquiriesPageComponent {
|
|
|
18987
18921
|
}, 1000);
|
|
18988
18922
|
}
|
|
18989
18923
|
async createNewInquiry() {
|
|
18990
|
-
console.log('
|
|
18924
|
+
console.log('[InquiriesPage] FAB clicked, opening modal...');
|
|
18991
18925
|
await this.newInquiryModal.open({
|
|
18992
18926
|
onSubmit: async (data) => {
|
|
18993
18927
|
console.log('New inquiry submitted:', data);
|
|
@@ -19076,9 +19010,9 @@ class MobileInquiriesPageComponent {
|
|
|
19076
19010
|
icon="remixAddLine"
|
|
19077
19011
|
position="bottom-right"
|
|
19078
19012
|
ariaLabel="Create new inquiry"
|
|
19079
|
-
(
|
|
19013
|
+
(clicked)="createNewInquiry()">
|
|
19080
19014
|
</ds-mobile-fab>
|
|
19081
|
-
`, isInline: true, styles: [".inquiry-list-wrapper{display:flex;flex-direction:column;margin-top:-12px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin-top:-16px;z-index:4}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}\n"], dependencies: [{ kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileIllustrationComponent, selector: "ds-mobile-illustration", inputs: ["variant", "size"] }, { kind: "component", type: DsMobileInteractiveListItemInquiryComponent, selector: "ds-mobile-interactive-list-item-inquiry", inputs: ["title", "description", "status", "statusLabel", "timestamp", "iconName", "iconColor", "variant", "clickable", "showChevron", "enableLongPress"], outputs: ["inquiryClick", "longPress"] }, { kind: "component", type: DsMobileInlineTabsComponent, selector: "ds-mobile-inline-tabs", inputs: ["tabs", "activeTab"], outputs: ["tabChange"] }, { kind: "component", type: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }, { kind: "component", type: DsMobileFabComponent, selector: "ds-mobile-fab", inputs: ["icon", "position", "size", "ariaLabel", "disabled"], outputs: ["
|
|
19015
|
+
`, isInline: true, styles: [".inquiry-list-wrapper{display:flex;flex-direction:column;margin-top:-12px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin-top:-16px;z-index:4}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}\n"], dependencies: [{ kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileIllustrationComponent, selector: "ds-mobile-illustration", inputs: ["variant", "size"] }, { kind: "component", type: DsMobileInteractiveListItemInquiryComponent, selector: "ds-mobile-interactive-list-item-inquiry", inputs: ["title", "description", "status", "statusLabel", "timestamp", "iconName", "iconColor", "variant", "clickable", "showChevron", "enableLongPress"], outputs: ["inquiryClick", "longPress"] }, { kind: "component", type: DsMobileInlineTabsComponent, selector: "ds-mobile-inline-tabs", inputs: ["tabs", "activeTab"], outputs: ["tabChange"] }, { kind: "component", type: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }, { kind: "component", type: DsMobileFabComponent, selector: "ds-mobile-fab", inputs: ["icon", "position", "size", "ariaLabel", "disabled"], outputs: ["clicked"] }] });
|
|
19082
19016
|
}
|
|
19083
19017
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileInquiriesPageComponent, decorators: [{
|
|
19084
19018
|
type: Component,
|
|
@@ -19159,7 +19093,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
19159
19093
|
icon="remixAddLine"
|
|
19160
19094
|
position="bottom-right"
|
|
19161
19095
|
ariaLabel="Create new inquiry"
|
|
19162
|
-
(
|
|
19096
|
+
(clicked)="createNewInquiry()">
|
|
19163
19097
|
</ds-mobile-fab>
|
|
19164
19098
|
`, styles: [".inquiry-list-wrapper{display:flex;flex-direction:column;margin-top:-12px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin-top:-16px;z-index:4}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}\n"] }]
|
|
19165
19099
|
}], ctorParameters: () => [{ type: UserService }, { type: i1.NavController }, { type: DsMobileNewInquiryModalService }], propDecorators: { pageComponent: [{
|