@propbinder/mobile-design 0.4.0 → 0.4.41
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.
|
@@ -1923,23 +1923,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
1923
1923
|
*/
|
|
1924
1924
|
class DsMobileActionsBottomSheetComponent {
|
|
1925
1925
|
modalController;
|
|
1926
|
-
/**
|
|
1927
|
-
* Custom action groups to display (overrides isOwnContent)
|
|
1928
|
-
*/
|
|
1926
|
+
/** Custom action groups to display (overrides isOwnContent). Set via Ionic componentProps. */
|
|
1929
1927
|
customActionGroups;
|
|
1930
|
-
/**
|
|
1931
|
-
* Whether this content belongs to the current user (for preset content actions)
|
|
1932
|
-
*/
|
|
1928
|
+
/** Whether this content belongs to the current user (for preset content actions). */
|
|
1933
1929
|
isOwnContent = false;
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
*/
|
|
1937
|
-
actionGroups = computed(() => {
|
|
1938
|
-
// Use custom action groups if provided
|
|
1939
|
-
if (this.customActionGroups) {
|
|
1930
|
+
get actionGroups() {
|
|
1931
|
+
if (this.customActionGroups?.length) {
|
|
1940
1932
|
return this.customActionGroups;
|
|
1941
1933
|
}
|
|
1942
|
-
// Otherwise fall back to preset content actions
|
|
1943
1934
|
if (this.isOwnContent) {
|
|
1944
1935
|
// Own content: Group 1 (Edit, Delete) + Group 2 (Like, Reply)
|
|
1945
1936
|
return [
|
|
@@ -1998,7 +1989,7 @@ class DsMobileActionsBottomSheetComponent {
|
|
|
1998
1989
|
},
|
|
1999
1990
|
];
|
|
2000
1991
|
}
|
|
2001
|
-
}
|
|
1992
|
+
}
|
|
2002
1993
|
constructor(modalController) {
|
|
2003
1994
|
this.modalController = modalController;
|
|
2004
1995
|
}
|
|
@@ -2013,7 +2004,7 @@ class DsMobileActionsBottomSheetComponent {
|
|
|
2013
2004
|
<ds-mobile-bottom-sheet-wrapper>
|
|
2014
2005
|
<!-- Actions List -->
|
|
2015
2006
|
<div class="actions-list">
|
|
2016
|
-
@for (group of actionGroups
|
|
2007
|
+
@for (group of actionGroups; track $index; let isLast = $last) {
|
|
2017
2008
|
<!-- Action Group -->
|
|
2018
2009
|
<div class="action-group">
|
|
2019
2010
|
@for (actionItem of group.actions; track actionItem.action; let isLastInGroup = $last) {
|
|
@@ -2042,7 +2033,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
2042
2033
|
<ds-mobile-bottom-sheet-wrapper>
|
|
2043
2034
|
<!-- Actions List -->
|
|
2044
2035
|
<div class="actions-list">
|
|
2045
|
-
@for (group of actionGroups
|
|
2036
|
+
@for (group of actionGroups; track $index; let isLast = $last) {
|
|
2046
2037
|
<!-- Action Group -->
|
|
2047
2038
|
<div class="action-group">
|
|
2048
2039
|
@for (actionItem of group.actions; track actionItem.action; let isLastInGroup = $last) {
|
|
@@ -2110,6 +2101,11 @@ function disableModalShadowPointerEvents(modal) {
|
|
|
2110
2101
|
}, { once: true });
|
|
2111
2102
|
}
|
|
2112
2103
|
|
|
2104
|
+
var modalShadowFix = /*#__PURE__*/Object.freeze({
|
|
2105
|
+
__proto__: null,
|
|
2106
|
+
disableModalShadowPointerEvents: disableModalShadowPointerEvents
|
|
2107
|
+
});
|
|
2108
|
+
|
|
2113
2109
|
/**
|
|
2114
2110
|
* DsMobileBottomSheetService
|
|
2115
2111
|
*
|
|
@@ -4602,6 +4598,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
4602
4598
|
class UserService {
|
|
4603
4599
|
// User identity
|
|
4604
4600
|
_displayName = signal('', ...(ngDevMode ? [{ debugName: "_displayName" }] : []));
|
|
4601
|
+
_email = signal('lars.m@email.dk', ...(ngDevMode ? [{ debugName: "_email" }] : []));
|
|
4602
|
+
_phone = signal('+45 28 91 44 02', ...(ngDevMode ? [{ debugName: "_phone" }] : []));
|
|
4605
4603
|
_address = signal('', ...(ngDevMode ? [{ debugName: "_address" }] : []));
|
|
4606
4604
|
// User avatar configuration
|
|
4607
4605
|
_avatarInitials = signal('LM', ...(ngDevMode ? [{ debugName: "_avatarInitials" }] : []));
|
|
@@ -4611,6 +4609,8 @@ class UserService {
|
|
|
4611
4609
|
_profileMenuItems = signal(undefined, ...(ngDevMode ? [{ debugName: "_profileMenuItems" }] : []));
|
|
4612
4610
|
// Readonly computed values
|
|
4613
4611
|
displayName = this._displayName.asReadonly();
|
|
4612
|
+
email = this._email.asReadonly();
|
|
4613
|
+
phone = this._phone.asReadonly();
|
|
4614
4614
|
address = this._address.asReadonly();
|
|
4615
4615
|
avatarInitials = this._avatarInitials.asReadonly();
|
|
4616
4616
|
avatarType = this._avatarType.asReadonly();
|
|
@@ -4622,6 +4622,12 @@ class UserService {
|
|
|
4622
4622
|
setDisplayName(name) {
|
|
4623
4623
|
this._displayName.set(name);
|
|
4624
4624
|
}
|
|
4625
|
+
setEmail(email) {
|
|
4626
|
+
this._email.set(email);
|
|
4627
|
+
}
|
|
4628
|
+
setPhone(phone) {
|
|
4629
|
+
this._phone.set(phone);
|
|
4630
|
+
}
|
|
4625
4631
|
setAddress(address) {
|
|
4626
4632
|
this._address.set(address);
|
|
4627
4633
|
}
|
|
@@ -11628,6 +11634,11 @@ class MobileModalBase {
|
|
|
11628
11634
|
* @default 'follow'
|
|
11629
11635
|
*/
|
|
11630
11636
|
keyboardContentBehavior = input('follow', ...(ngDevMode ? [{ debugName: "keyboardContentBehavior" }] : []));
|
|
11637
|
+
/**
|
|
11638
|
+
* Show border below the header
|
|
11639
|
+
* @default true
|
|
11640
|
+
*/
|
|
11641
|
+
showHeaderBorder = input(true, ...(ngDevMode ? [{ debugName: "showHeaderBorder" }] : []));
|
|
11631
11642
|
/**
|
|
11632
11643
|
* Optional interceptor called instead of the default dismiss when the close button is tapped.
|
|
11633
11644
|
* Return a function to take over close behavior (e.g. navigate back within the modal).
|
|
@@ -11930,14 +11941,14 @@ class MobileModalBase {
|
|
|
11930
11941
|
return fixedBottomHeight + keyboardHeight;
|
|
11931
11942
|
}
|
|
11932
11943
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: MobileModalBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
11933
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.23", 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 }, keyboardContentBehavior: { classPropertyName: "keyboardContentBehavior", publicName: "keyboardContentBehavior", isSignal: true, isRequired: false, transformFunction: null }, onCloseRequest: { classPropertyName: "onCloseRequest", publicName: "onCloseRequest", 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 });
|
|
11944
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.23", 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 }, keyboardContentBehavior: { classPropertyName: "keyboardContentBehavior", publicName: "keyboardContentBehavior", isSignal: true, isRequired: false, transformFunction: null }, showHeaderBorder: { classPropertyName: "showHeaderBorder", publicName: "showHeaderBorder", isSignal: true, isRequired: false, transformFunction: null }, onCloseRequest: { classPropertyName: "onCloseRequest", publicName: "onCloseRequest", 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 });
|
|
11934
11945
|
}
|
|
11935
11946
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: MobileModalBase, decorators: [{
|
|
11936
11947
|
type: Directive
|
|
11937
11948
|
}], propDecorators: { ionContent: [{
|
|
11938
11949
|
type: ViewChild,
|
|
11939
11950
|
args: [IonContent, { read: IonContent }]
|
|
11940
|
-
}], 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 }] }], keyboardContentBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyboardContentBehavior", required: false }] }], onCloseRequest: [{ type: i0.Input, args: [{ isSignal: true, alias: "onCloseRequest", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], keyboardWillShow: [{ type: i0.Output, args: ["keyboardWillShow"] }], keyboardWillHide: [{ type: i0.Output, args: ["keyboardWillHide"] }] } });
|
|
11951
|
+
}], 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 }] }], keyboardContentBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyboardContentBehavior", required: false }] }], showHeaderBorder: [{ type: i0.Input, args: [{ isSignal: true, alias: "showHeaderBorder", required: false }] }], onCloseRequest: [{ type: i0.Input, args: [{ isSignal: true, alias: "onCloseRequest", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], keyboardWillShow: [{ type: i0.Output, args: ["keyboardWillShow"] }], keyboardWillHide: [{ type: i0.Output, args: ["keyboardWillHide"] }] } });
|
|
11941
11952
|
|
|
11942
11953
|
/**
|
|
11943
11954
|
* DsMobileModalBaseComponent
|
|
@@ -12113,7 +12124,7 @@ class DsMobileModalBaseComponent extends MobileModalBase {
|
|
|
12113
12124
|
<div class="modal-wrapper" [class.headerless]="!shouldShowHeader()" [class.is-auto-height]="isAutoHeight()">
|
|
12114
12125
|
<!-- Header (conditional) -->
|
|
12115
12126
|
@if (shouldShowHeader()) {
|
|
12116
|
-
<div class="modal-header" [class.no-leading-content]="!hasHeaderLeadingContent()">
|
|
12127
|
+
<div class="modal-header" [class.no-leading-content]="!hasHeaderLeadingContent()" [class.no-border]="!showHeaderBorder()">
|
|
12117
12128
|
<div class="header-content">
|
|
12118
12129
|
<!-- Leading slot (avatar, icon) - always rendered, CSS handles empty state -->
|
|
12119
12130
|
<div class="header-leading">
|
|
@@ -12200,7 +12211,7 @@ class DsMobileModalBaseComponent extends MobileModalBase {
|
|
|
12200
12211
|
<ng-content select="[fixed-bottom]"></ng-content>
|
|
12201
12212
|
<ng-content select="[footer]"></ng-content>
|
|
12202
12213
|
</div>
|
|
12203
|
-
`, 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}.modal-header.no-leading-content{padding-left:20px}.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-trailing{flex-shrink:0;display:flex;align-items:center;gap:4px}.header-trailing:empty{display:none}.modal-header.no-leading-content .header-content,.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}button.modal-title--interactive{display:block;width:100%;font:inherit;font-weight:600;letter-spacing:inherit;line-height:20px;text-align:left;background:none;border:none;padding:0;margin:0;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button.modal-title--interactive:focus-visible{outline:2px solid var(--color-accent, #6b5ff5);outline-offset:2px;border-radius:4px}.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}.header-below:empty{display:none}.header-below{margin-top:12px}.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}: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:max(8px,calc(var(--app-safe-bottom, 0px) - 24px))}:host-context(.plt-android) .modal-fixed-bottom{padding-bottom:max(8px,var(--app-safe-bottom, 0px));transform:none;transition:none}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff);padding-bottom:var(--keyboard-height, 0px);transition:padding-bottom .3s cubic-bezier(.215,.61,.355,1)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@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"] }] });
|
|
12214
|
+
`, 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}.modal-header.no-border{border-bottom:none}.modal-header.no-leading-content{padding-left:20px}.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-trailing{flex-shrink:0;display:flex;align-items:center;gap:4px}.header-trailing:empty{display:none}.modal-header.no-leading-content .header-content,.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}button.modal-title--interactive{display:block;width:100%;font:inherit;font-weight:600;letter-spacing:inherit;line-height:20px;text-align:left;background:none;border:none;padding:0;margin:0;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button.modal-title--interactive:focus-visible{outline:2px solid var(--color-accent, #6b5ff5);outline-offset:2px;border-radius:4px}.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}.header-below:empty{display:none}.header-below{margin-top:12px}.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}: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:max(8px,calc(var(--app-safe-bottom, 0px) - 24px))}:host-context(.plt-android) .modal-fixed-bottom{padding-bottom:max(8px,var(--app-safe-bottom, 0px));transform:none;transition:none}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff);padding-bottom:var(--keyboard-height, 0px);transition:padding-bottom .3s cubic-bezier(.215,.61,.355,1)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@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"] }] });
|
|
12204
12215
|
}
|
|
12205
12216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: DsMobileModalBaseComponent, decorators: [{
|
|
12206
12217
|
type: Component,
|
|
@@ -12218,7 +12229,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
12218
12229
|
<div class="modal-wrapper" [class.headerless]="!shouldShowHeader()" [class.is-auto-height]="isAutoHeight()">
|
|
12219
12230
|
<!-- Header (conditional) -->
|
|
12220
12231
|
@if (shouldShowHeader()) {
|
|
12221
|
-
<div class="modal-header" [class.no-leading-content]="!hasHeaderLeadingContent()">
|
|
12232
|
+
<div class="modal-header" [class.no-leading-content]="!hasHeaderLeadingContent()" [class.no-border]="!showHeaderBorder()">
|
|
12222
12233
|
<div class="header-content">
|
|
12223
12234
|
<!-- Leading slot (avatar, icon) - always rendered, CSS handles empty state -->
|
|
12224
12235
|
<div class="header-leading">
|
|
@@ -12305,7 +12316,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
12305
12316
|
<ng-content select="[fixed-bottom]"></ng-content>
|
|
12306
12317
|
<ng-content select="[footer]"></ng-content>
|
|
12307
12318
|
</div>
|
|
12308
|
-
`, 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}.modal-header.no-leading-content{padding-left:20px}.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-trailing{flex-shrink:0;display:flex;align-items:center;gap:4px}.header-trailing:empty{display:none}.modal-header.no-leading-content .header-content,.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}button.modal-title--interactive{display:block;width:100%;font:inherit;font-weight:600;letter-spacing:inherit;line-height:20px;text-align:left;background:none;border:none;padding:0;margin:0;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button.modal-title--interactive:focus-visible{outline:2px solid var(--color-accent, #6b5ff5);outline-offset:2px;border-radius:4px}.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}.header-below:empty{display:none}.header-below{margin-top:12px}.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}: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:max(8px,calc(var(--app-safe-bottom, 0px) - 24px))}:host-context(.plt-android) .modal-fixed-bottom{padding-bottom:max(8px,var(--app-safe-bottom, 0px));transform:none;transition:none}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff);padding-bottom:var(--keyboard-height, 0px);transition:padding-bottom .3s cubic-bezier(.215,.61,.355,1)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@media (prefers-reduced-motion: reduce){.modal-fixed-bottom{transition:none}.loading-spinner{animation:none}}\n"] }]
|
|
12319
|
+
`, 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}.modal-header.no-border{border-bottom:none}.modal-header.no-leading-content{padding-left:20px}.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-trailing{flex-shrink:0;display:flex;align-items:center;gap:4px}.header-trailing:empty{display:none}.modal-header.no-leading-content .header-content,.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}button.modal-title--interactive{display:block;width:100%;font:inherit;font-weight:600;letter-spacing:inherit;line-height:20px;text-align:left;background:none;border:none;padding:0;margin:0;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button.modal-title--interactive:focus-visible{outline:2px solid var(--color-accent, #6b5ff5);outline-offset:2px;border-radius:4px}.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}.header-below:empty{display:none}.header-below{margin-top:12px}.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}: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:max(8px,calc(var(--app-safe-bottom, 0px) - 24px))}:host-context(.plt-android) .modal-fixed-bottom{padding-bottom:max(8px,var(--app-safe-bottom, 0px));transform:none;transition:none}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff);padding-bottom:var(--keyboard-height, 0px);transition:padding-bottom .3s cubic-bezier(.215,.61,.355,1)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@media (prefers-reduced-motion: reduce){.modal-fixed-bottom{transition:none}.loading-spinner{animation:none}}\n"] }]
|
|
12309
12320
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { headerTitleInteractive: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTitleInteractive", required: false }] }], textLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "textLoading", required: false }] }], textErrorTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "textErrorTitle", required: false }] }], titleClick: [{ type: i0.Output, args: ["titleClick"] }], ionContent: [{
|
|
12310
12321
|
type: ViewChild,
|
|
12311
12322
|
args: [IonContent, { read: IonContent }]
|
|
@@ -13541,7 +13552,6 @@ const DEFAULT_PANEL_LABELS = {
|
|
|
13541
13552
|
groupNamePlaceholder: 'Gruppenavn',
|
|
13542
13553
|
takePhoto: 'Tag et billede',
|
|
13543
13554
|
chooseFromLibrary: 'Vælg fra bibliotek',
|
|
13544
|
-
deletePhoto: 'Slet billede',
|
|
13545
13555
|
};
|
|
13546
13556
|
class DsMobileChatGroupPanelsComponent {
|
|
13547
13557
|
modalCtrl = inject(ModalController);
|
|
@@ -13944,7 +13954,7 @@ class DsMobileChatGroupPanelsComponent {
|
|
|
13944
13954
|
</ds-mobile-action-list-item>
|
|
13945
13955
|
@if (editAvatarUrl()) {
|
|
13946
13956
|
<ds-mobile-action-list-item
|
|
13947
|
-
[title]="
|
|
13957
|
+
[title]="'Slet billede'"
|
|
13948
13958
|
[showDivider]="false"
|
|
13949
13959
|
(itemClick)="deleteImage()">
|
|
13950
13960
|
<ds-icon action-icon name="remixDeleteBinLine" size="24px" />
|
|
@@ -14167,7 +14177,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
14167
14177
|
</ds-mobile-action-list-item>
|
|
14168
14178
|
@if (editAvatarUrl()) {
|
|
14169
14179
|
<ds-mobile-action-list-item
|
|
14170
|
-
[title]="
|
|
14180
|
+
[title]="'Slet billede'"
|
|
14171
14181
|
[showDivider]="false"
|
|
14172
14182
|
(itemClick)="deleteImage()">
|
|
14173
14183
|
<ds-icon action-icon name="remixDeleteBinLine" size="24px" />
|
|
@@ -17152,6 +17162,7 @@ class DsMobileChatModalComponent {
|
|
|
17152
17162
|
[loading]="loading"
|
|
17153
17163
|
[error]="localError() || error"
|
|
17154
17164
|
[showHeader]="true"
|
|
17165
|
+
[showHeaderBorder]="groupPanelView() === 'chat' || groupPanelView() === 'add-members'"
|
|
17155
17166
|
[headerTitle]="groupHeaderTitle()"
|
|
17156
17167
|
[headerMeta]="groupHeaderMeta()"
|
|
17157
17168
|
[headerTitleInteractive]="groupHeaderTitleInteractive()"
|
|
@@ -17408,7 +17419,7 @@ class DsMobileChatModalComponent {
|
|
|
17408
17419
|
</ds-mobile-message-composer>
|
|
17409
17420
|
</div>
|
|
17410
17421
|
</ds-mobile-modal-base>
|
|
17411
|
-
`, 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;padding:0!important}:host ::ng-deep ds-textarea.ghost-input-clean .textarea-container{padding:0!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", ":host ::ng-deep .modal-content-container{padding-top:0}
|
|
17422
|
+
`, 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;padding:0!important}:host ::ng-deep ds-textarea.ghost-input-clean .textarea-container{padding:0!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", ":host ::ng-deep .modal-content-container{padding-top:0}.chat-messages-container{display:flex;flex-direction:column;width:100%}.chat-system-line{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.35;color:var(--text-color-default-tertiary, #737373);text-align:center;margin:8px 24px}.chat-avatar-section{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 0 0;background:var(--color-background-neutral-primary, #ffffff)}.chat-avatar-info{display:flex;flex-direction:column;align-items:center;gap:4px}.chat-avatar-name{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a)}.chat-avatar-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;color:var(--color-text-secondary, #666666)}.chat-avatar-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:4px}.messages-list{display:flex;flex-direction:column;width:100%;padding:16px 0 0;align-items:stretch}.messages-list ds-mobile-message-bubble{width:100%;display:flex}.timestamp-header{display:flex;justify-content:center;margin:16px 0 8px}.timestamp-text{font-family:Brockmann,sans-serif;font-size:12px;font-weight:400;color:var(--color-text-secondary);padding:4px 12px}.message-file-attachments{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;padding:0 20px 0 60px;max-width:100%}.message-file-attachments.own-message{padding:0 0 0 96px;align-items:flex-end}.message-file-attachments ds-mobile-card-inline-file{max-width:280px;width:100%}.message-image-attachment{width:96px;height:96px;cursor:pointer;border-radius:12px;overflow:hidden;position:relative;transition:transform .2s ease;border:1px solid var(--border-color-default, #e5e5e5)}.message-image-attachment:active{transform:scale(.98)}.message-image-attachment .inline-image{width:100%;height:100%;display:block;-o-object-fit:cover;object-fit:cover}.group-settings-back-btn{flex-shrink:0;border-radius:50%}.group-settings-back-btn::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}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsAvatarWithBadgeComponent, selector: "ds-avatar-with-badge", inputs: ["type", "size", "initials", "src", "iconName", "showBadge", "badgePosition"] }, { kind: "component", type: DsMobileVendorAvatarComponent, selector: "ds-mobile-vendor-avatar", inputs: ["name", "logo", "size"] }, { kind: "component", type: DsMobileMessageComposerComponent, selector: "ds-mobile-message-composer", inputs: ["avatarInitials", "avatarType", "avatarSrc", "placeholder", "sendButtonLabel", "attachmentButtonLabel", "showAttachmentButton", "showAiButton", "editIndicatorText", "replyIndicatorText", "enableMentions", "mentionUsers", "showInternalToggle", "internalToggleLabel", "replyLabel", "internalMessageDescription", "autoFocus"], outputs: ["messageSent", "editCancelled", "replyCancelled", "mentionSelected", "attachmentClicked", "attachmentsChanged", "aiClick"] }, { kind: "component", type: DsMobileMessageBubbleComponent, selector: "ds-mobile-message-bubble", inputs: ["content", "isOwnMessage", "senderName", "isInternal", "internalMessageBadgeText", "timestamp", "showTimestamp", "avatarInitials", "avatarType", "avatarSrc", "showAvatar", "clusterPosition", "attachments", "clickable", "isNewMessage", "isDeleted", "showEditedHint", "editedHintText"], outputs: ["attachmentClick", "longPress", "messageClick"] }, { kind: "component", type: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["headerTitleInteractive", "textLoading", "textErrorTitle", "showHeader"], outputs: ["titleClick"] }, { kind: "component", type: DsMobileCardInlineFileComponent, selector: "ds-mobile-card-inline-file", inputs: ["fileName", "fileSize", "variant", "layout", "fileUrl"], outputs: ["fileClick"] }, { kind: "component", type: DsMobileSystemMessageBannerComponent, selector: "ds-mobile-system-message-banner", inputs: ["message", "iconName", "afterTimestamp"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { 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: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "paddingDesktop", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileGroupAvatarStackComponent, selector: "ds-mobile-group-avatar-stack", inputs: ["members", "customAvatarUrl", "size", "layout", "currentUserId"] }, { kind: "component", type: DsMobileListSearchComponent, selector: "ds-mobile-list-search", inputs: ["placeholder", "ariaLabel", "value", "showDivider"], outputs: ["valueChange"] }, { kind: "component", type: DsMobileChatGroupPanelsComponent, selector: "ds-mobile-chat-group-panels", inputs: ["panelView", "group", "membersForStack", "participantName", "currentUserId", "isAdmin", "canEditGroupDetails", "canAddGroupMembers", "canLeaveGroup", "canRemoveMember", "canMessageMember", "allTenantsForPicker", "searchQuery", "labels"], outputs: ["navigateTo", "renameGroup", "setGroupAvatarUrl", "addMembers", "removeMember", "messageMember", "leaveGroup"] }] });
|
|
17412
17423
|
}
|
|
17413
17424
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: DsMobileChatModalComponent, decorators: [{
|
|
17414
17425
|
type: Component,
|
|
@@ -17435,6 +17446,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
17435
17446
|
[loading]="loading"
|
|
17436
17447
|
[error]="localError() || error"
|
|
17437
17448
|
[showHeader]="true"
|
|
17449
|
+
[showHeaderBorder]="groupPanelView() === 'chat' || groupPanelView() === 'add-members'"
|
|
17438
17450
|
[headerTitle]="groupHeaderTitle()"
|
|
17439
17451
|
[headerMeta]="groupHeaderMeta()"
|
|
17440
17452
|
[headerTitleInteractive]="groupHeaderTitleInteractive()"
|
|
@@ -17691,7 +17703,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
17691
17703
|
</ds-mobile-message-composer>
|
|
17692
17704
|
</div>
|
|
17693
17705
|
</ds-mobile-modal-base>
|
|
17694
|
-
`, 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;padding:0!important}:host ::ng-deep ds-textarea.ghost-input-clean .textarea-container{padding:0!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", ":host ::ng-deep .modal-content-container{padding-top:0}
|
|
17706
|
+
`, 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;padding:0!important}:host ::ng-deep ds-textarea.ghost-input-clean .textarea-container{padding:0!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", ":host ::ng-deep .modal-content-container{padding-top:0}.chat-messages-container{display:flex;flex-direction:column;width:100%}.chat-system-line{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.35;color:var(--text-color-default-tertiary, #737373);text-align:center;margin:8px 24px}.chat-avatar-section{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 0 0;background:var(--color-background-neutral-primary, #ffffff)}.chat-avatar-info{display:flex;flex-direction:column;align-items:center;gap:4px}.chat-avatar-name{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a)}.chat-avatar-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;color:var(--color-text-secondary, #666666)}.chat-avatar-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:4px}.messages-list{display:flex;flex-direction:column;width:100%;padding:16px 0 0;align-items:stretch}.messages-list ds-mobile-message-bubble{width:100%;display:flex}.timestamp-header{display:flex;justify-content:center;margin:16px 0 8px}.timestamp-text{font-family:Brockmann,sans-serif;font-size:12px;font-weight:400;color:var(--color-text-secondary);padding:4px 12px}.message-file-attachments{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;padding:0 20px 0 60px;max-width:100%}.message-file-attachments.own-message{padding:0 0 0 96px;align-items:flex-end}.message-file-attachments ds-mobile-card-inline-file{max-width:280px;width:100%}.message-image-attachment{width:96px;height:96px;cursor:pointer;border-radius:12px;overflow:hidden;position:relative;transition:transform .2s ease;border:1px solid var(--border-color-default, #e5e5e5)}.message-image-attachment:active{transform:scale(.98)}.message-image-attachment .inline-image{width:100%;height:100%;display:block;-o-object-fit:cover;object-fit:cover}.group-settings-back-btn{flex-shrink:0;border-radius:50%}.group-settings-back-btn::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}\n"] }]
|
|
17695
17707
|
}], ctorParameters: () => [{ type: DsMobileLightboxService }], propDecorators: { chatData: [{
|
|
17696
17708
|
type: Input
|
|
17697
17709
|
}], loading: [{
|
|
@@ -19365,7 +19377,7 @@ class DsMobileInteractiveListItemBookingComponent {
|
|
|
19365
19377
|
getStatusVariant() {
|
|
19366
19378
|
const status = this.availabilityStatus();
|
|
19367
19379
|
if (status === 'available-today')
|
|
19368
|
-
return '
|
|
19380
|
+
return 'success';
|
|
19369
19381
|
if (status === 'available-from')
|
|
19370
19382
|
return 'warning';
|
|
19371
19383
|
return 'grey';
|
|
@@ -19457,7 +19469,7 @@ class DsMobileInteractiveListItemBookingComponent {
|
|
|
19457
19469
|
</div>
|
|
19458
19470
|
}
|
|
19459
19471
|
</ds-mobile-list-item>
|
|
19460
|
-
`, isInline: true, styles: [":host{display:block}:host:first-child{--item-padding-top: 0}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.booking-thumbnail{position:relative;flex-shrink:0;width:64px;height:64px;border-radius:12px;overflow:hidden;background:var(--color-surface-secondary, #f5f5f5);display:flex;align-items:center;justify-content:center}.booking-thumbnail img{width:100%;height:100%;object-fit:cover}.booking-thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-color-default-tertiary, #737373)}.booking-content{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.booking-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.booking-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.booking-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66);display:flex;align-items:center;gap:8px;margin-top:4px}.booking-status{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-status.available-today{color:var(--color-
|
|
19472
|
+
`, isInline: true, styles: [":host{display:block}:host:first-child{--item-padding-top: 0}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.booking-thumbnail{position:relative;flex-shrink:0;width:64px;height:64px;border-radius:12px;overflow:hidden;background:var(--color-surface-secondary, #f5f5f5);display:flex;align-items:center;justify-content:center}.booking-thumbnail img{width:100%;height:100%;object-fit:cover}.booking-thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-color-default-tertiary, #737373)}.booking-content{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.booking-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.booking-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.booking-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66);display:flex;align-items:center;gap:8px;margin-top:4px}.booking-status{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-status.available-today{color:var(--color-success-base, #158452)}.booking-status.available-from{color:var(--color-warning, #f59e0b)}.booking-status.unavailable{color:var(--text-color-default-tertiary, #737373)}.booking-datetime{display:flex;align-items:center;gap:4px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-trailing{display:flex;align-items:center;color:var(--color-text-tertiary, #a3a3a3)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsShapeIndicatorComponent, selector: "ds-shape-indicator", inputs: ["shape", "variant", "label"] }, { kind: "component", type: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "flushTop", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "moreActions", "moreButtonAriaLabel", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }, { kind: "component", type: DsMobileGlassSpinnerComponent, selector: "ds-mobile-glass-spinner", inputs: ["spinnerSize", "borderRadius"] }] });
|
|
19461
19473
|
}
|
|
19462
19474
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: DsMobileInteractiveListItemBookingComponent, decorators: [{
|
|
19463
19475
|
type: Component,
|
|
@@ -19537,7 +19549,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
19537
19549
|
</div>
|
|
19538
19550
|
}
|
|
19539
19551
|
</ds-mobile-list-item>
|
|
19540
|
-
`, styles: [":host{display:block}:host:first-child{--item-padding-top: 0}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.booking-thumbnail{position:relative;flex-shrink:0;width:64px;height:64px;border-radius:12px;overflow:hidden;background:var(--color-surface-secondary, #f5f5f5);display:flex;align-items:center;justify-content:center}.booking-thumbnail img{width:100%;height:100%;object-fit:cover}.booking-thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-color-default-tertiary, #737373)}.booking-content{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.booking-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.booking-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.booking-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66);display:flex;align-items:center;gap:8px;margin-top:4px}.booking-status{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-status.available-today{color:var(--color-
|
|
19552
|
+
`, styles: [":host{display:block}:host:first-child{--item-padding-top: 0}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.booking-thumbnail{position:relative;flex-shrink:0;width:64px;height:64px;border-radius:12px;overflow:hidden;background:var(--color-surface-secondary, #f5f5f5);display:flex;align-items:center;justify-content:center}.booking-thumbnail img{width:100%;height:100%;object-fit:cover}.booking-thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-color-default-tertiary, #737373)}.booking-content{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.booking-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.booking-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.booking-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66);display:flex;align-items:center;gap:8px;margin-top:4px}.booking-status{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-status.available-today{color:var(--color-success-base, #158452)}.booking-status.available-from{color:var(--color-warning, #f59e0b)}.booking-status.unavailable{color:var(--text-color-default-tertiary, #737373)}.booking-datetime{display:flex;align-items:center;gap:4px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-trailing{display:flex;align-items:center;color:var(--color-text-tertiary, #a3a3a3)}\n"] }]
|
|
19541
19553
|
}], ctorParameters: () => [], propDecorators: { thumbnail: [{ type: i0.Input, args: [{ isSignal: true, alias: "thumbnail", required: false }] }], facilityTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "facilityTitle", required: true }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], bookingDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "bookingDate", required: false }] }], bookingTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "bookingTime", required: false }] }], availabilityStatus: [{ type: i0.Input, args: [{ isSignal: true, alias: "availabilityStatus", required: false }] }], statusLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusLabel", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], showChevron: [{ type: i0.Input, args: [{ isSignal: true, alias: "showChevron", required: false }] }], enableLongPress: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLongPress", required: false }] }], moreActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "moreActions", required: false }] }], bookingClick: [{ type: i0.Output, args: ["bookingClick"] }], longPress: [{ type: i0.Output, args: ["longPress"] }] } });
|
|
19542
19554
|
|
|
19543
19555
|
/**
|
|
@@ -31329,6 +31341,465 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
31329
31341
|
`, styles: [".settings-content{padding:20px}\n"] }]
|
|
31330
31342
|
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], prefs: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefs", required: false }] }] } });
|
|
31331
31343
|
|
|
31344
|
+
class ProfileModalComponent {
|
|
31345
|
+
userService = inject(UserService);
|
|
31346
|
+
modalController = inject(ModalController);
|
|
31347
|
+
closeInterceptor = () => this.close();
|
|
31348
|
+
editingName = signal(false, ...(ngDevMode ? [{ debugName: "editingName" }] : []));
|
|
31349
|
+
editingEmail = signal(false, ...(ngDevMode ? [{ debugName: "editingEmail" }] : []));
|
|
31350
|
+
editingPhone = signal(false, ...(ngDevMode ? [{ debugName: "editingPhone" }] : []));
|
|
31351
|
+
keyboardOffset = signal(false, ...(ngDevMode ? [{ debugName: "keyboardOffset" }] : []));
|
|
31352
|
+
hasChanges = signal(false, ...(ngDevMode ? [{ debugName: "hasChanges" }] : []));
|
|
31353
|
+
originalName = '';
|
|
31354
|
+
originalEmail = '';
|
|
31355
|
+
originalPhone = '';
|
|
31356
|
+
originalAvatarSrc = '';
|
|
31357
|
+
originalAvatarType = 'initials';
|
|
31358
|
+
originalAvatarInitials = '';
|
|
31359
|
+
nameInputRef;
|
|
31360
|
+
emailInputRef;
|
|
31361
|
+
phoneInputRef;
|
|
31362
|
+
photoFileInputRef;
|
|
31363
|
+
constructor() {
|
|
31364
|
+
this.originalName = this.userService.displayName();
|
|
31365
|
+
this.originalEmail = this.userService.email();
|
|
31366
|
+
this.originalPhone = this.userService.phone();
|
|
31367
|
+
this.originalAvatarSrc = this.userService.avatarSrc();
|
|
31368
|
+
this.originalAvatarType = this.userService.avatarType();
|
|
31369
|
+
this.originalAvatarInitials = this.userService.avatarInitials();
|
|
31370
|
+
}
|
|
31371
|
+
checkForChanges() {
|
|
31372
|
+
this.hasChanges.set(this.userService.displayName() !== this.originalName ||
|
|
31373
|
+
this.userService.email() !== this.originalEmail ||
|
|
31374
|
+
this.userService.phone() !== this.originalPhone ||
|
|
31375
|
+
this.userService.avatarSrc() !== this.originalAvatarSrc ||
|
|
31376
|
+
this.userService.avatarType() !== this.originalAvatarType);
|
|
31377
|
+
}
|
|
31378
|
+
async close() {
|
|
31379
|
+
if (!this.hasChanges()) {
|
|
31380
|
+
await this.modalController.dismiss();
|
|
31381
|
+
return;
|
|
31382
|
+
}
|
|
31383
|
+
const action = await this.showUnsavedChangesSheet();
|
|
31384
|
+
if (!action)
|
|
31385
|
+
return;
|
|
31386
|
+
if (action === 'discard') {
|
|
31387
|
+
this.userService.setDisplayName(this.originalName);
|
|
31388
|
+
this.userService.setEmail(this.originalEmail);
|
|
31389
|
+
this.userService.setPhone(this.originalPhone);
|
|
31390
|
+
this.userService.setAvatarSrc(this.originalAvatarSrc);
|
|
31391
|
+
this.userService.setAvatarType(this.originalAvatarType);
|
|
31392
|
+
this.userService.setAvatarInitials(this.originalAvatarInitials);
|
|
31393
|
+
}
|
|
31394
|
+
await this.modalController.dismiss();
|
|
31395
|
+
}
|
|
31396
|
+
async showUnsavedChangesSheet() {
|
|
31397
|
+
const { DsMobileConfirmationSheetComponent } = await Promise.resolve().then(function () { return dsMobileConfirmationSheet; });
|
|
31398
|
+
const { disableModalShadowPointerEvents } = await Promise.resolve().then(function () { return modalShadowFix; });
|
|
31399
|
+
const sheet = await this.modalController.create({
|
|
31400
|
+
component: DsMobileConfirmationSheetComponent,
|
|
31401
|
+
componentProps: {
|
|
31402
|
+
title: 'Du har ændringer der ikke er gemt',
|
|
31403
|
+
message: 'Vil du gemme eller kassere dine ændringer?',
|
|
31404
|
+
buttonText: 'Gem ændringer',
|
|
31405
|
+
showIllustration: false,
|
|
31406
|
+
secondaryButtonText: 'Kassér ændringer',
|
|
31407
|
+
secondaryButtonVariant: 'secondary',
|
|
31408
|
+
},
|
|
31409
|
+
breakpoints: [0, 1],
|
|
31410
|
+
initialBreakpoint: 1,
|
|
31411
|
+
handle: true,
|
|
31412
|
+
cssClass: ['ds-bottom-sheet', 'auto-height'],
|
|
31413
|
+
backdropDismiss: false,
|
|
31414
|
+
showBackdrop: true,
|
|
31415
|
+
});
|
|
31416
|
+
await sheet.present();
|
|
31417
|
+
disableModalShadowPointerEvents(sheet);
|
|
31418
|
+
const result = await sheet.onDidDismiss();
|
|
31419
|
+
if (result.role === 'confirm')
|
|
31420
|
+
return 'save';
|
|
31421
|
+
if (result.role === 'backdrop')
|
|
31422
|
+
return 'discard';
|
|
31423
|
+
return null;
|
|
31424
|
+
}
|
|
31425
|
+
startEdit(field) {
|
|
31426
|
+
if (field === 'name') {
|
|
31427
|
+
this.editingName.set(true);
|
|
31428
|
+
this.keyboardOffset.set(false);
|
|
31429
|
+
setTimeout(() => this.nameInputRef?.nativeElement.focus());
|
|
31430
|
+
}
|
|
31431
|
+
else if (field === 'email') {
|
|
31432
|
+
this.editingEmail.set(true);
|
|
31433
|
+
this.keyboardOffset.set(false);
|
|
31434
|
+
setTimeout(() => this.emailInputRef?.nativeElement.focus());
|
|
31435
|
+
}
|
|
31436
|
+
else {
|
|
31437
|
+
this.editingPhone.set(true);
|
|
31438
|
+
this.keyboardOffset.set(true);
|
|
31439
|
+
setTimeout(() => this.phoneInputRef?.nativeElement.focus());
|
|
31440
|
+
}
|
|
31441
|
+
}
|
|
31442
|
+
saveName(event) {
|
|
31443
|
+
const val = event.target.value.trim();
|
|
31444
|
+
if (val) {
|
|
31445
|
+
this.userService.setDisplayName(val);
|
|
31446
|
+
const parts = val.split(' ');
|
|
31447
|
+
const initials = parts.length >= 2
|
|
31448
|
+
? (parts[0][0] + parts[parts.length - 1][0]).toUpperCase()
|
|
31449
|
+
: val.substring(0, 2).toUpperCase();
|
|
31450
|
+
this.userService.setAvatarInitials(initials);
|
|
31451
|
+
}
|
|
31452
|
+
this.keyboardOffset.set(false);
|
|
31453
|
+
this.editingName.set(false);
|
|
31454
|
+
this.checkForChanges();
|
|
31455
|
+
}
|
|
31456
|
+
saveEmail(event) {
|
|
31457
|
+
const val = event.target.value.trim();
|
|
31458
|
+
if (val)
|
|
31459
|
+
this.userService.setEmail(val);
|
|
31460
|
+
this.keyboardOffset.set(false);
|
|
31461
|
+
this.editingEmail.set(false);
|
|
31462
|
+
this.checkForChanges();
|
|
31463
|
+
}
|
|
31464
|
+
savePhone(event) {
|
|
31465
|
+
const val = event.target.value.trim();
|
|
31466
|
+
if (val)
|
|
31467
|
+
this.userService.setPhone(val);
|
|
31468
|
+
this.keyboardOffset.set(false);
|
|
31469
|
+
this.editingPhone.set(false);
|
|
31470
|
+
this.checkForChanges();
|
|
31471
|
+
}
|
|
31472
|
+
async openPhotoActions() {
|
|
31473
|
+
const photoActions = [
|
|
31474
|
+
{
|
|
31475
|
+
actions: [
|
|
31476
|
+
{ action: 'take-photo', title: 'Take a picture', icon: 'remixCamera3Line' },
|
|
31477
|
+
{ action: 'choose-library', title: 'Choose from library', icon: 'remixImageLine' },
|
|
31478
|
+
],
|
|
31479
|
+
},
|
|
31480
|
+
];
|
|
31481
|
+
if (this.userService.avatarSrc()) {
|
|
31482
|
+
photoActions[0].actions.push({
|
|
31483
|
+
action: 'delete-photo',
|
|
31484
|
+
title: 'Delete photo',
|
|
31485
|
+
icon: 'remixDeleteBinLine',
|
|
31486
|
+
destructive: true,
|
|
31487
|
+
});
|
|
31488
|
+
}
|
|
31489
|
+
const sheet = await this.modalController.create({
|
|
31490
|
+
component: DsMobileActionsBottomSheetComponent,
|
|
31491
|
+
componentProps: { customActionGroups: photoActions },
|
|
31492
|
+
breakpoints: [0, 1],
|
|
31493
|
+
initialBreakpoint: 1,
|
|
31494
|
+
handle: true,
|
|
31495
|
+
cssClass: ['ds-bottom-sheet', 'auto-height'],
|
|
31496
|
+
backdropDismiss: true,
|
|
31497
|
+
});
|
|
31498
|
+
await sheet.present();
|
|
31499
|
+
disableModalShadowPointerEvents(sheet);
|
|
31500
|
+
const result = await sheet.onWillDismiss();
|
|
31501
|
+
if (!result.data?.action)
|
|
31502
|
+
return;
|
|
31503
|
+
const input = this.photoFileInputRef?.nativeElement;
|
|
31504
|
+
if (!input)
|
|
31505
|
+
return;
|
|
31506
|
+
switch (result.data.action) {
|
|
31507
|
+
case 'take-photo':
|
|
31508
|
+
input.setAttribute('capture', 'environment');
|
|
31509
|
+
input.click();
|
|
31510
|
+
break;
|
|
31511
|
+
case 'choose-library':
|
|
31512
|
+
input.removeAttribute('capture');
|
|
31513
|
+
input.click();
|
|
31514
|
+
break;
|
|
31515
|
+
case 'delete-photo':
|
|
31516
|
+
this.userService.setAvatarSrc('');
|
|
31517
|
+
this.userService.setAvatarType('initials');
|
|
31518
|
+
this.checkForChanges();
|
|
31519
|
+
break;
|
|
31520
|
+
}
|
|
31521
|
+
}
|
|
31522
|
+
onPhotoSelected(event) {
|
|
31523
|
+
const file = event.target.files?.[0];
|
|
31524
|
+
if (!file)
|
|
31525
|
+
return;
|
|
31526
|
+
const url = URL.createObjectURL(file);
|
|
31527
|
+
this.userService.setAvatarSrc(url);
|
|
31528
|
+
this.userService.setAvatarType('photo');
|
|
31529
|
+
event.target.value = '';
|
|
31530
|
+
this.checkForChanges();
|
|
31531
|
+
}
|
|
31532
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: ProfileModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
31533
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.23", type: ProfileModalComponent, isStandalone: true, selector: "app-profile-modal", viewQueries: [{ propertyName: "nameInputRef", first: true, predicate: ["nameInput"], descendants: true }, { propertyName: "emailInputRef", first: true, predicate: ["emailInput"], descendants: true }, { propertyName: "phoneInputRef", first: true, predicate: ["phoneInput"], descendants: true }, { propertyName: "photoFileInputRef", first: true, predicate: ["photoFileInput"], descendants: true }], ngImport: i0, template: `
|
|
31534
|
+
<ds-mobile-modal-base headerTitle="My profile" [showHeader]="true" [showHeaderBorder]="false" [enableKeyboardHandling]="true" [onCloseRequest]="closeInterceptor">
|
|
31535
|
+
<div header-leading>
|
|
31536
|
+
<ds-icon-button
|
|
31537
|
+
class="back-btn"
|
|
31538
|
+
icon="remixArrowLeftSLine"
|
|
31539
|
+
variant="secondary"
|
|
31540
|
+
size="lg"
|
|
31541
|
+
(clicked)="close()"
|
|
31542
|
+
aria-label="Tilbage"
|
|
31543
|
+
/>
|
|
31544
|
+
</div>
|
|
31545
|
+
|
|
31546
|
+
<div class="profile-content" [class.keyboard-offset]="keyboardOffset()">
|
|
31547
|
+
|
|
31548
|
+
<!-- Hero -->
|
|
31549
|
+
<div class="profile-hero">
|
|
31550
|
+
<button
|
|
31551
|
+
type="button"
|
|
31552
|
+
class="profile-hero-avatar"
|
|
31553
|
+
(click)="openPhotoActions()"
|
|
31554
|
+
aria-label="Edit profile photo"
|
|
31555
|
+
>
|
|
31556
|
+
<ds-avatar-with-badge
|
|
31557
|
+
[type]="userService.avatarType()"
|
|
31558
|
+
[initials]="userService.avatarInitials()"
|
|
31559
|
+
[src]="userService.avatarSrc()"
|
|
31560
|
+
size="xl"
|
|
31561
|
+
[showBadge]="false"
|
|
31562
|
+
/>
|
|
31563
|
+
<span class="profile-hero-avatar-edit" aria-hidden="true">
|
|
31564
|
+
<ds-icon name="remixEditLine" size="14px" />
|
|
31565
|
+
</span>
|
|
31566
|
+
</button>
|
|
31567
|
+
<div class="profile-hero-text">
|
|
31568
|
+
<h2 class="profile-hero-name">{{ userService.displayName() }}</h2>
|
|
31569
|
+
<p class="profile-hero-email">{{ userService.email() }}</p>
|
|
31570
|
+
</div>
|
|
31571
|
+
</div>
|
|
31572
|
+
|
|
31573
|
+
<!-- Fields -->
|
|
31574
|
+
<div class="field-group">
|
|
31575
|
+
|
|
31576
|
+
<!-- Full name -->
|
|
31577
|
+
<div class="field">
|
|
31578
|
+
<p class="field-label">Full name</p>
|
|
31579
|
+
<div class="field-pill" [class.editing]="editingName()" (click)="!editingName() && startEdit('name')">
|
|
31580
|
+
@if (!editingName()) {
|
|
31581
|
+
<p class="field-pill-value">{{ userService.displayName() }}</p>
|
|
31582
|
+
} @else {
|
|
31583
|
+
<input
|
|
31584
|
+
#nameInput
|
|
31585
|
+
type="text"
|
|
31586
|
+
class="field-pill-input"
|
|
31587
|
+
[value]="userService.displayName()"
|
|
31588
|
+
(blur)="saveName($event)"
|
|
31589
|
+
(keydown.enter)="nameInputRef?.nativeElement?.blur()"
|
|
31590
|
+
/>
|
|
31591
|
+
}
|
|
31592
|
+
<ds-icon name="remixEditLine" size="16px" class="field-pill-chevron" [class.hidden]="editingName()" />
|
|
31593
|
+
</div>
|
|
31594
|
+
</div>
|
|
31595
|
+
|
|
31596
|
+
<!-- Email address -->
|
|
31597
|
+
<div class="field">
|
|
31598
|
+
<p class="field-label">Email address</p>
|
|
31599
|
+
<div class="field-pill" [class.editing]="editingEmail()" (click)="!editingEmail() && startEdit('email')">
|
|
31600
|
+
@if (!editingEmail()) {
|
|
31601
|
+
<p class="field-pill-value">{{ userService.email() }}</p>
|
|
31602
|
+
} @else {
|
|
31603
|
+
<input
|
|
31604
|
+
#emailInput
|
|
31605
|
+
type="email"
|
|
31606
|
+
class="field-pill-input"
|
|
31607
|
+
[value]="userService.email()"
|
|
31608
|
+
(blur)="saveEmail($event)"
|
|
31609
|
+
(keydown.enter)="emailInputRef?.nativeElement?.blur()"
|
|
31610
|
+
/>
|
|
31611
|
+
}
|
|
31612
|
+
<ds-icon name="remixEditLine" size="16px" class="field-pill-chevron" [class.hidden]="editingEmail()" />
|
|
31613
|
+
</div>
|
|
31614
|
+
</div>
|
|
31615
|
+
|
|
31616
|
+
<!-- Phone -->
|
|
31617
|
+
<div class="field">
|
|
31618
|
+
<p class="field-label">Phone</p>
|
|
31619
|
+
<div class="field-pill" [class.editing]="editingPhone()" (click)="!editingPhone() && startEdit('phone')">
|
|
31620
|
+
@if (!editingPhone()) {
|
|
31621
|
+
<p class="field-pill-value">{{ userService.phone() }}</p>
|
|
31622
|
+
} @else {
|
|
31623
|
+
<input
|
|
31624
|
+
#phoneInput
|
|
31625
|
+
type="tel"
|
|
31626
|
+
class="field-pill-input"
|
|
31627
|
+
[value]="userService.phone()"
|
|
31628
|
+
(blur)="savePhone($event)"
|
|
31629
|
+
(keydown.enter)="phoneInputRef?.nativeElement?.blur()"
|
|
31630
|
+
/>
|
|
31631
|
+
}
|
|
31632
|
+
<ds-icon name="remixEditLine" size="16px" class="field-pill-chevron" [class.hidden]="editingPhone()" />
|
|
31633
|
+
</div>
|
|
31634
|
+
</div>
|
|
31635
|
+
|
|
31636
|
+
<!-- Address (read-only) -->
|
|
31637
|
+
<div class="field">
|
|
31638
|
+
<p class="field-label">Adress</p>
|
|
31639
|
+
<div class="field-pill field-pill--readonly">
|
|
31640
|
+
<p class="field-pill-value">{{ userService.address() }}</p>
|
|
31641
|
+
</div>
|
|
31642
|
+
</div>
|
|
31643
|
+
|
|
31644
|
+
</div>
|
|
31645
|
+
</div>
|
|
31646
|
+
|
|
31647
|
+
<input
|
|
31648
|
+
#photoFileInput
|
|
31649
|
+
type="file"
|
|
31650
|
+
accept="image/*"
|
|
31651
|
+
class="visually-hidden"
|
|
31652
|
+
(change)="onPhotoSelected($event)"
|
|
31653
|
+
/>
|
|
31654
|
+
|
|
31655
|
+
</ds-mobile-modal-base>
|
|
31656
|
+
`, isInline: true, styles: [":host ::ng-deep .modal-header{border-bottom:none}:host ::ng-deep .header-main{text-align:center}.back-btn{flex-shrink:0;border-radius:50%}.back-btn::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}.profile-content{padding:0 20px;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px));transition:transform .3s ease}.profile-content.keyboard-offset{transform:translateY(-24px)}.profile-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:16px 24px;gap:12px}.profile-hero-avatar{position:relative;display:inline-block;padding:0;border:none;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}.profile-hero-avatar-edit{position:absolute;bottom:-4px;right:-4px;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--color-background-neutral-secondary, #f6f7f8);box-shadow:0 0 0 2px var(--color-background-primary, #ffffff);color:var(--color-text-secondary, #6C6F7A);pointer-events:none}.profile-hero-text{display:flex;flex-direction:column;align-items:center;gap:4px}.profile-hero-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-lg, 20px);font-weight:600;line-height:24px;letter-spacing:-.8px;color:var(--color-text-primary, #202227);margin:0;max-width:164px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-hero-email{font-family:Brockmann,sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:-.56px;color:#737373;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field-group{display:flex;flex-direction:column;gap:16px;padding:16px 0}.field{display:flex;flex-direction:column;gap:4px}.field-label{font-family:Brockmann,sans-serif;font-size:14px;font-weight:500;line-height:18px;letter-spacing:-.56px;color:var(--base-600, #545b66);margin:0}.field-pill{display:flex;align-items:center;gap:4px;background:#f6f7f8;border-radius:100px;padding:16px;cursor:pointer;-webkit-tap-highlight-color:transparent}.field-pill--readonly{cursor:default}.field-pill-value{flex:1;min-width:0;font-family:Brockmann,sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:-.56px;color:var(--color-text-primary, #202227);margin:0}.field-pill--readonly .field-pill-value{color:var(--content-default-disabled-grey, #7c8694)}.field-pill-chevron{flex-shrink:0;color:var(--color-text-secondary, #6C6F7A);transition:opacity .2s ease,transform .2s ease}.field-pill-chevron.hidden{opacity:0;transform:scale(.5);pointer-events:none}.field-pill-input{flex:1;min-width:0;background:none;border:none;font-family:Brockmann,sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:-.56px;color:var(--color-text-primary, #202227);outline:none;padding:0;margin:0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"], dependencies: [{ kind: "component", type: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["headerTitleInteractive", "textLoading", "textErrorTitle", "showHeader"], outputs: ["titleClick"] }, { kind: "component", type: DsAvatarWithBadgeComponent, selector: "ds-avatar-with-badge", inputs: ["type", "size", "initials", "src", "iconName", "showBadge", "badgePosition"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsIconButtonComponent, selector: "ds-icon-button", inputs: ["variant", "size", "icon", "disabled", "loading", "pressed", "expanded", "ariaLabel", "tooltip", "tooltipDisabled", "tooltipPlacement"], outputs: ["clicked", "focused", "blurred"] }] });
|
|
31657
|
+
}
|
|
31658
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: ProfileModalComponent, decorators: [{
|
|
31659
|
+
type: Component,
|
|
31660
|
+
args: [{ selector: 'app-profile-modal', standalone: true, imports: [
|
|
31661
|
+
DsMobileModalBaseComponent,
|
|
31662
|
+
DsAvatarWithBadgeComponent,
|
|
31663
|
+
DsIconComponent,
|
|
31664
|
+
DsIconButtonComponent,
|
|
31665
|
+
], template: `
|
|
31666
|
+
<ds-mobile-modal-base headerTitle="My profile" [showHeader]="true" [showHeaderBorder]="false" [enableKeyboardHandling]="true" [onCloseRequest]="closeInterceptor">
|
|
31667
|
+
<div header-leading>
|
|
31668
|
+
<ds-icon-button
|
|
31669
|
+
class="back-btn"
|
|
31670
|
+
icon="remixArrowLeftSLine"
|
|
31671
|
+
variant="secondary"
|
|
31672
|
+
size="lg"
|
|
31673
|
+
(clicked)="close()"
|
|
31674
|
+
aria-label="Tilbage"
|
|
31675
|
+
/>
|
|
31676
|
+
</div>
|
|
31677
|
+
|
|
31678
|
+
<div class="profile-content" [class.keyboard-offset]="keyboardOffset()">
|
|
31679
|
+
|
|
31680
|
+
<!-- Hero -->
|
|
31681
|
+
<div class="profile-hero">
|
|
31682
|
+
<button
|
|
31683
|
+
type="button"
|
|
31684
|
+
class="profile-hero-avatar"
|
|
31685
|
+
(click)="openPhotoActions()"
|
|
31686
|
+
aria-label="Edit profile photo"
|
|
31687
|
+
>
|
|
31688
|
+
<ds-avatar-with-badge
|
|
31689
|
+
[type]="userService.avatarType()"
|
|
31690
|
+
[initials]="userService.avatarInitials()"
|
|
31691
|
+
[src]="userService.avatarSrc()"
|
|
31692
|
+
size="xl"
|
|
31693
|
+
[showBadge]="false"
|
|
31694
|
+
/>
|
|
31695
|
+
<span class="profile-hero-avatar-edit" aria-hidden="true">
|
|
31696
|
+
<ds-icon name="remixEditLine" size="14px" />
|
|
31697
|
+
</span>
|
|
31698
|
+
</button>
|
|
31699
|
+
<div class="profile-hero-text">
|
|
31700
|
+
<h2 class="profile-hero-name">{{ userService.displayName() }}</h2>
|
|
31701
|
+
<p class="profile-hero-email">{{ userService.email() }}</p>
|
|
31702
|
+
</div>
|
|
31703
|
+
</div>
|
|
31704
|
+
|
|
31705
|
+
<!-- Fields -->
|
|
31706
|
+
<div class="field-group">
|
|
31707
|
+
|
|
31708
|
+
<!-- Full name -->
|
|
31709
|
+
<div class="field">
|
|
31710
|
+
<p class="field-label">Full name</p>
|
|
31711
|
+
<div class="field-pill" [class.editing]="editingName()" (click)="!editingName() && startEdit('name')">
|
|
31712
|
+
@if (!editingName()) {
|
|
31713
|
+
<p class="field-pill-value">{{ userService.displayName() }}</p>
|
|
31714
|
+
} @else {
|
|
31715
|
+
<input
|
|
31716
|
+
#nameInput
|
|
31717
|
+
type="text"
|
|
31718
|
+
class="field-pill-input"
|
|
31719
|
+
[value]="userService.displayName()"
|
|
31720
|
+
(blur)="saveName($event)"
|
|
31721
|
+
(keydown.enter)="nameInputRef?.nativeElement?.blur()"
|
|
31722
|
+
/>
|
|
31723
|
+
}
|
|
31724
|
+
<ds-icon name="remixEditLine" size="16px" class="field-pill-chevron" [class.hidden]="editingName()" />
|
|
31725
|
+
</div>
|
|
31726
|
+
</div>
|
|
31727
|
+
|
|
31728
|
+
<!-- Email address -->
|
|
31729
|
+
<div class="field">
|
|
31730
|
+
<p class="field-label">Email address</p>
|
|
31731
|
+
<div class="field-pill" [class.editing]="editingEmail()" (click)="!editingEmail() && startEdit('email')">
|
|
31732
|
+
@if (!editingEmail()) {
|
|
31733
|
+
<p class="field-pill-value">{{ userService.email() }}</p>
|
|
31734
|
+
} @else {
|
|
31735
|
+
<input
|
|
31736
|
+
#emailInput
|
|
31737
|
+
type="email"
|
|
31738
|
+
class="field-pill-input"
|
|
31739
|
+
[value]="userService.email()"
|
|
31740
|
+
(blur)="saveEmail($event)"
|
|
31741
|
+
(keydown.enter)="emailInputRef?.nativeElement?.blur()"
|
|
31742
|
+
/>
|
|
31743
|
+
}
|
|
31744
|
+
<ds-icon name="remixEditLine" size="16px" class="field-pill-chevron" [class.hidden]="editingEmail()" />
|
|
31745
|
+
</div>
|
|
31746
|
+
</div>
|
|
31747
|
+
|
|
31748
|
+
<!-- Phone -->
|
|
31749
|
+
<div class="field">
|
|
31750
|
+
<p class="field-label">Phone</p>
|
|
31751
|
+
<div class="field-pill" [class.editing]="editingPhone()" (click)="!editingPhone() && startEdit('phone')">
|
|
31752
|
+
@if (!editingPhone()) {
|
|
31753
|
+
<p class="field-pill-value">{{ userService.phone() }}</p>
|
|
31754
|
+
} @else {
|
|
31755
|
+
<input
|
|
31756
|
+
#phoneInput
|
|
31757
|
+
type="tel"
|
|
31758
|
+
class="field-pill-input"
|
|
31759
|
+
[value]="userService.phone()"
|
|
31760
|
+
(blur)="savePhone($event)"
|
|
31761
|
+
(keydown.enter)="phoneInputRef?.nativeElement?.blur()"
|
|
31762
|
+
/>
|
|
31763
|
+
}
|
|
31764
|
+
<ds-icon name="remixEditLine" size="16px" class="field-pill-chevron" [class.hidden]="editingPhone()" />
|
|
31765
|
+
</div>
|
|
31766
|
+
</div>
|
|
31767
|
+
|
|
31768
|
+
<!-- Address (read-only) -->
|
|
31769
|
+
<div class="field">
|
|
31770
|
+
<p class="field-label">Adress</p>
|
|
31771
|
+
<div class="field-pill field-pill--readonly">
|
|
31772
|
+
<p class="field-pill-value">{{ userService.address() }}</p>
|
|
31773
|
+
</div>
|
|
31774
|
+
</div>
|
|
31775
|
+
|
|
31776
|
+
</div>
|
|
31777
|
+
</div>
|
|
31778
|
+
|
|
31779
|
+
<input
|
|
31780
|
+
#photoFileInput
|
|
31781
|
+
type="file"
|
|
31782
|
+
accept="image/*"
|
|
31783
|
+
class="visually-hidden"
|
|
31784
|
+
(change)="onPhotoSelected($event)"
|
|
31785
|
+
/>
|
|
31786
|
+
|
|
31787
|
+
</ds-mobile-modal-base>
|
|
31788
|
+
`, styles: [":host ::ng-deep .modal-header{border-bottom:none}:host ::ng-deep .header-main{text-align:center}.back-btn{flex-shrink:0;border-radius:50%}.back-btn::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}.profile-content{padding:0 20px;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px));transition:transform .3s ease}.profile-content.keyboard-offset{transform:translateY(-24px)}.profile-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:16px 24px;gap:12px}.profile-hero-avatar{position:relative;display:inline-block;padding:0;border:none;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}.profile-hero-avatar-edit{position:absolute;bottom:-4px;right:-4px;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--color-background-neutral-secondary, #f6f7f8);box-shadow:0 0 0 2px var(--color-background-primary, #ffffff);color:var(--color-text-secondary, #6C6F7A);pointer-events:none}.profile-hero-text{display:flex;flex-direction:column;align-items:center;gap:4px}.profile-hero-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-lg, 20px);font-weight:600;line-height:24px;letter-spacing:-.8px;color:var(--color-text-primary, #202227);margin:0;max-width:164px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-hero-email{font-family:Brockmann,sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:-.56px;color:#737373;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field-group{display:flex;flex-direction:column;gap:16px;padding:16px 0}.field{display:flex;flex-direction:column;gap:4px}.field-label{font-family:Brockmann,sans-serif;font-size:14px;font-weight:500;line-height:18px;letter-spacing:-.56px;color:var(--base-600, #545b66);margin:0}.field-pill{display:flex;align-items:center;gap:4px;background:#f6f7f8;border-radius:100px;padding:16px;cursor:pointer;-webkit-tap-highlight-color:transparent}.field-pill--readonly{cursor:default}.field-pill-value{flex:1;min-width:0;font-family:Brockmann,sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:-.56px;color:var(--color-text-primary, #202227);margin:0}.field-pill--readonly .field-pill-value{color:var(--content-default-disabled-grey, #7c8694)}.field-pill-chevron{flex-shrink:0;color:var(--color-text-secondary, #6C6F7A);transition:opacity .2s ease,transform .2s ease}.field-pill-chevron.hidden{opacity:0;transform:scale(.5);pointer-events:none}.field-pill-input{flex:1;min-width:0;background:none;border:none;font-family:Brockmann,sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:-.56px;color:var(--color-text-primary, #202227);outline:none;padding:0;margin:0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"] }]
|
|
31789
|
+
}], ctorParameters: () => [], propDecorators: { nameInputRef: [{
|
|
31790
|
+
type: ViewChild,
|
|
31791
|
+
args: ['nameInput']
|
|
31792
|
+
}], emailInputRef: [{
|
|
31793
|
+
type: ViewChild,
|
|
31794
|
+
args: ['emailInput']
|
|
31795
|
+
}], phoneInputRef: [{
|
|
31796
|
+
type: ViewChild,
|
|
31797
|
+
args: ['phoneInput']
|
|
31798
|
+
}], photoFileInputRef: [{
|
|
31799
|
+
type: ViewChild,
|
|
31800
|
+
args: ['photoFileInput']
|
|
31801
|
+
}] } });
|
|
31802
|
+
|
|
31332
31803
|
// Mobile Page Components
|
|
31333
31804
|
|
|
31334
31805
|
class MobileCommunityPageComponent {
|
|
@@ -31640,6 +32111,7 @@ class MobileCommunityPageComponent {
|
|
|
31640
32111
|
[notificationCount]="notificationService.unreadCount()"
|
|
31641
32112
|
[avatarInitials]="userService.avatarInitials()"
|
|
31642
32113
|
[avatarType]="userService.avatarType()"
|
|
32114
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
31643
32115
|
[contentLoading]="isLoading()"
|
|
31644
32116
|
[contentLoadingVariant]="'card'"
|
|
31645
32117
|
(notificationClick)="handleNotificationClick()"
|
|
@@ -31900,6 +32372,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
31900
32372
|
[notificationCount]="notificationService.unreadCount()"
|
|
31901
32373
|
[avatarInitials]="userService.avatarInitials()"
|
|
31902
32374
|
[avatarType]="userService.avatarType()"
|
|
32375
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
31903
32376
|
[contentLoading]="isLoading()"
|
|
31904
32377
|
[contentLoadingVariant]="'card'"
|
|
31905
32378
|
(notificationClick)="handleNotificationClick()"
|
|
@@ -32411,7 +32884,7 @@ class MobileHandbookPageComponent {
|
|
|
32411
32884
|
}
|
|
32412
32885
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: MobileHandbookPageComponent, deps: [{ token: UserService }], target: i0.ɵɵFactoryTarget.Component });
|
|
32413
32886
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.23", type: MobileHandbookPageComponent, isStandalone: true, selector: "app-mobile-handbook-page", viewQueries: [{ propertyName: "pageComponent", first: true, predicate: ["pageComponent"], descendants: true }], ngImport: i0, template: `
|
|
32414
|
-
<ds-mobile-page-main #pageComponent title="Håndbog" [notificationCount]="notificationService.unreadCount()" [avatarInitials]="userService.avatarInitials()" [avatarType]="userService.avatarType()" [contentLoading]="isLoading()" [contentLoadingVariant]="'handbook'" (notificationClick)="handleNotificationClick()" (refresh)="handleRefresh($event)">
|
|
32887
|
+
<ds-mobile-page-main #pageComponent title="Håndbog" [notificationCount]="notificationService.unreadCount()" [avatarInitials]="userService.avatarInitials()" [avatarType]="userService.avatarType()" [avatarSrc]="userService.avatarSrc()" [contentLoading]="isLoading()" [contentLoadingVariant]="'handbook'" (notificationClick)="handleNotificationClick()" (refresh)="handleRefresh($event)">
|
|
32415
32888
|
<!-- Offline indicator -->
|
|
32416
32889
|
@if (pageComponent.isOffline()) {
|
|
32417
32890
|
<ds-mobile-offline-banner offline-indicator title="Ingen internetforbindelse" message="Nogle funktioner kan være utilgængelige"> </ds-mobile-offline-banner>
|
|
@@ -32437,7 +32910,7 @@ class MobileHandbookPageComponent {
|
|
|
32437
32910
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: MobileHandbookPageComponent, decorators: [{
|
|
32438
32911
|
type: Component,
|
|
32439
32912
|
args: [{ selector: 'app-mobile-handbook-page', standalone: true, imports: [DsMobilePageMainComponent, DsMobileSectionComponent, DsMobileHandbookFolderComponent, DsMobileOfflineBannerComponent], template: `
|
|
32440
|
-
<ds-mobile-page-main #pageComponent title="Håndbog" [notificationCount]="notificationService.unreadCount()" [avatarInitials]="userService.avatarInitials()" [avatarType]="userService.avatarType()" [contentLoading]="isLoading()" [contentLoadingVariant]="'handbook'" (notificationClick)="handleNotificationClick()" (refresh)="handleRefresh($event)">
|
|
32913
|
+
<ds-mobile-page-main #pageComponent title="Håndbog" [notificationCount]="notificationService.unreadCount()" [avatarInitials]="userService.avatarInitials()" [avatarType]="userService.avatarType()" [avatarSrc]="userService.avatarSrc()" [contentLoading]="isLoading()" [contentLoadingVariant]="'handbook'" (notificationClick)="handleNotificationClick()" (refresh)="handleRefresh($event)">
|
|
32441
32914
|
<!-- Offline indicator -->
|
|
32442
32915
|
@if (pageComponent.isOffline()) {
|
|
32443
32916
|
<ds-mobile-offline-banner offline-indicator title="Ingen internetforbindelse" message="Nogle funktioner kan være utilgængelige"> </ds-mobile-offline-banner>
|
|
@@ -33239,6 +33712,7 @@ class MobileHomePageComponent {
|
|
|
33239
33712
|
[notificationCount]="notificationService.unreadCount()"
|
|
33240
33713
|
[avatarInitials]="userService.avatarInitials()"
|
|
33241
33714
|
[avatarType]="userService.avatarType()"
|
|
33715
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
33242
33716
|
(notificationClick)="handleNotificationClick()"
|
|
33243
33717
|
(refresh)="handleRefresh($event)"
|
|
33244
33718
|
>
|
|
@@ -33451,6 +33925,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
33451
33925
|
[notificationCount]="notificationService.unreadCount()"
|
|
33452
33926
|
[avatarInitials]="userService.avatarInitials()"
|
|
33453
33927
|
[avatarType]="userService.avatarType()"
|
|
33928
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
33454
33929
|
(notificationClick)="handleNotificationClick()"
|
|
33455
33930
|
(refresh)="handleRefresh($event)"
|
|
33456
33931
|
>
|
|
@@ -33726,6 +34201,7 @@ class MobileInquiriesPageComponent {
|
|
|
33726
34201
|
[notificationCount]="notificationService.unreadCount()"
|
|
33727
34202
|
[avatarInitials]="userService.avatarInitials()"
|
|
33728
34203
|
[avatarType]="userService.avatarType()"
|
|
34204
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
33729
34205
|
[contentLoading]="isLoading()"
|
|
33730
34206
|
[contentLoadingVariant]="'list'"
|
|
33731
34207
|
(notificationClick)="handleNotificationClick()"
|
|
@@ -33801,6 +34277,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
33801
34277
|
[notificationCount]="notificationService.unreadCount()"
|
|
33802
34278
|
[avatarInitials]="userService.avatarInitials()"
|
|
33803
34279
|
[avatarType]="userService.avatarType()"
|
|
34280
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
33804
34281
|
[contentLoading]="isLoading()"
|
|
33805
34282
|
[contentLoadingVariant]="'list'"
|
|
33806
34283
|
(notificationClick)="handleNotificationClick()"
|
|
@@ -36112,33 +36589,10 @@ class MobileTabsExampleComponent {
|
|
|
36112
36589
|
* NOTE: Desktop only - called directly from tab bar.
|
|
36113
36590
|
* Mobile actions are handled globally in AppComponent via UserService.
|
|
36114
36591
|
*/
|
|
36115
|
-
handleProfileAction(
|
|
36116
|
-
|
|
36117
|
-
|
|
36118
|
-
|
|
36119
|
-
animation: customPageTransition
|
|
36120
|
-
});
|
|
36121
|
-
}
|
|
36122
|
-
if (result.action === 'manage-admins') {
|
|
36123
|
-
this.navCtrl.navigateForward(['/community-admins'], {
|
|
36124
|
-
animation: customPageTransition
|
|
36125
|
-
});
|
|
36126
|
-
}
|
|
36127
|
-
// Handle appearance action here (opens modal)
|
|
36128
|
-
if (result.action === 'appearance') {
|
|
36129
|
-
console.log('Opening whitelabel demo...');
|
|
36130
|
-
// Small delay to ensure bottom sheet is fully dismissed
|
|
36131
|
-
setTimeout(async () => {
|
|
36132
|
-
try {
|
|
36133
|
-
await this.whitelabelDemoModal.open();
|
|
36134
|
-
}
|
|
36135
|
-
catch (error) {
|
|
36136
|
-
console.error('Failed to open whitelabel demo modal:', error);
|
|
36137
|
-
}
|
|
36138
|
-
}, 100);
|
|
36139
|
-
}
|
|
36140
|
-
// Notify globally so AppComponent can handle navigation
|
|
36141
|
-
this.userService.notifyProfileAction(result);
|
|
36592
|
+
handleProfileAction(_result) {
|
|
36593
|
+
// All profile actions are handled globally in AppComponent via UserService.
|
|
36594
|
+
// ds-mobile-page-main already calls notifyProfileAction() internally,
|
|
36595
|
+
// so no forwarding is needed here.
|
|
36142
36596
|
}
|
|
36143
36597
|
handleMoreMenuAction(item) {
|
|
36144
36598
|
if (item.route) {
|
|
@@ -36208,6 +36662,7 @@ class MobileTabsExampleComponent {
|
|
|
36208
36662
|
[notificationCount]="notificationService.unreadCount()"
|
|
36209
36663
|
[avatarInitials]="userService.avatarInitials()"
|
|
36210
36664
|
[avatarType]="userService.avatarType()"
|
|
36665
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
36211
36666
|
[profileMenuItems]="profileMenuItems"
|
|
36212
36667
|
(notificationClick)="handleNotificationClick()"
|
|
36213
36668
|
(profileActionSelected)="handleProfileAction($event)"
|
|
@@ -36252,6 +36707,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
36252
36707
|
[notificationCount]="notificationService.unreadCount()"
|
|
36253
36708
|
[avatarInitials]="userService.avatarInitials()"
|
|
36254
36709
|
[avatarType]="userService.avatarType()"
|
|
36710
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
36255
36711
|
[profileMenuItems]="profileMenuItems"
|
|
36256
36712
|
(notificationClick)="handleNotificationClick()"
|
|
36257
36713
|
(profileActionSelected)="handleProfileAction($event)"
|
|
@@ -36799,6 +37255,7 @@ class MobileBookingPageComponent {
|
|
|
36799
37255
|
[notificationCount]="notificationService.unreadCount()"
|
|
36800
37256
|
[avatarInitials]="userService.avatarInitials()"
|
|
36801
37257
|
[avatarType]="userService.avatarType()"
|
|
37258
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
36802
37259
|
(notificationClick)="handleNotificationClick()"
|
|
36803
37260
|
(refresh)="handleRefresh($event)">
|
|
36804
37261
|
|
|
@@ -36924,6 +37381,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
36924
37381
|
[notificationCount]="notificationService.unreadCount()"
|
|
36925
37382
|
[avatarInitials]="userService.avatarInitials()"
|
|
36926
37383
|
[avatarType]="userService.avatarType()"
|
|
37384
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
36927
37385
|
(notificationClick)="handleNotificationClick()"
|
|
36928
37386
|
(refresh)="handleRefresh($event)">
|
|
36929
37387
|
|
|
@@ -37947,6 +38405,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
37947
38405
|
|
|
37948
38406
|
class DsMobileInviteMemberSheetComponent {
|
|
37949
38407
|
modalController;
|
|
38408
|
+
elementRef = inject(ElementRef);
|
|
37950
38409
|
nameInput;
|
|
37951
38410
|
viewContainer;
|
|
37952
38411
|
sheetWrapper;
|
|
@@ -37966,6 +38425,10 @@ class DsMobileInviteMemberSheetComponent {
|
|
|
37966
38425
|
this.modalController = modalController;
|
|
37967
38426
|
}
|
|
37968
38427
|
ngAfterViewInit() {
|
|
38428
|
+
const ionModal = this.elementRef.nativeElement.closest('ion-modal');
|
|
38429
|
+
if (ionModal) {
|
|
38430
|
+
ionModal.canDismiss = (_data, role) => this.handleCanDismiss(role);
|
|
38431
|
+
}
|
|
37969
38432
|
if (this.nameInput) {
|
|
37970
38433
|
this.isReadonly = false;
|
|
37971
38434
|
setTimeout(() => {
|
|
@@ -38072,6 +38535,43 @@ class DsMobileInviteMemberSheetComponent {
|
|
|
38072
38535
|
delay(ms) {
|
|
38073
38536
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
38074
38537
|
}
|
|
38538
|
+
async handleCanDismiss(role) {
|
|
38539
|
+
if (role === 'success' || role === 'cancel') {
|
|
38540
|
+
return true;
|
|
38541
|
+
}
|
|
38542
|
+
if (this.currentView() === 'step2') {
|
|
38543
|
+
const action = await this.showDiscardConfirmationSheet();
|
|
38544
|
+
if (action !== 'discard')
|
|
38545
|
+
return false;
|
|
38546
|
+
}
|
|
38547
|
+
return true;
|
|
38548
|
+
}
|
|
38549
|
+
async showDiscardConfirmationSheet() {
|
|
38550
|
+
const { DsMobileConfirmationSheetComponent } = await Promise.resolve().then(function () { return dsMobileConfirmationSheet; });
|
|
38551
|
+
const sheet = await this.modalController.create({
|
|
38552
|
+
component: DsMobileConfirmationSheetComponent,
|
|
38553
|
+
componentProps: {
|
|
38554
|
+
title: 'Du har ændringer der ikke er gemt',
|
|
38555
|
+
message: 'Er du sikker på, at du vil kassere invitationen?',
|
|
38556
|
+
buttonText: 'Kassér invitation',
|
|
38557
|
+
showIllustration: false,
|
|
38558
|
+
secondaryButtonText: 'Bliv og rediger',
|
|
38559
|
+
secondaryButtonVariant: 'secondary',
|
|
38560
|
+
},
|
|
38561
|
+
breakpoints: [0, 1],
|
|
38562
|
+
initialBreakpoint: 1,
|
|
38563
|
+
handle: true,
|
|
38564
|
+
cssClass: ['ds-bottom-sheet', 'auto-height'],
|
|
38565
|
+
backdropDismiss: false,
|
|
38566
|
+
showBackdrop: true,
|
|
38567
|
+
});
|
|
38568
|
+
await sheet.present();
|
|
38569
|
+
disableModalShadowPointerEvents(sheet);
|
|
38570
|
+
const result = await sheet.onDidDismiss();
|
|
38571
|
+
if (result.role === 'confirm')
|
|
38572
|
+
return 'discard';
|
|
38573
|
+
return null;
|
|
38574
|
+
}
|
|
38075
38575
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: DsMobileInviteMemberSheetComponent, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component });
|
|
38076
38576
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.23", type: DsMobileInviteMemberSheetComponent, isStandalone: true, selector: "ds-mobile-invite-member-sheet", viewQueries: [{ propertyName: "nameInput", first: true, predicate: ["nameInput"], descendants: true }, { propertyName: "viewContainer", first: true, predicate: ["viewContainer"], descendants: true, read: ElementRef }, { propertyName: "sheetWrapper", first: true, predicate: ["sheetWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: `
|
|
38077
38577
|
<div class="sheet-content" #sheetWrapper>
|
|
@@ -38853,6 +39353,7 @@ class TenantChatPageComponent {
|
|
|
38853
39353
|
[notificationCount]="notificationService.unreadCount()"
|
|
38854
39354
|
[avatarInitials]="userService.avatarInitials()"
|
|
38855
39355
|
[avatarType]="userService.avatarType()"
|
|
39356
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
38856
39357
|
(notificationClick)="handleNotificationClick()"
|
|
38857
39358
|
(refresh)="handleRefresh($event)">
|
|
38858
39359
|
|
|
@@ -38929,6 +39430,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
38929
39430
|
[notificationCount]="notificationService.unreadCount()"
|
|
38930
39431
|
[avatarInitials]="userService.avatarInitials()"
|
|
38931
39432
|
[avatarType]="userService.avatarType()"
|
|
39433
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
38932
39434
|
(notificationClick)="handleNotificationClick()"
|
|
38933
39435
|
(refresh)="handleRefresh($event)">
|
|
38934
39436
|
|
|
@@ -39137,6 +39639,7 @@ class ServicesPageComponent {
|
|
|
39137
39639
|
[notificationCount]="notificationService.unreadCount()"
|
|
39138
39640
|
[avatarInitials]="userService.avatarInitials()"
|
|
39139
39641
|
[avatarType]="userService.avatarType()"
|
|
39642
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
39140
39643
|
(notificationClick)="handleNotificationClick()"
|
|
39141
39644
|
(refresh)="handleRefresh($event)"
|
|
39142
39645
|
>
|
|
@@ -39186,6 +39689,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
39186
39689
|
[notificationCount]="notificationService.unreadCount()"
|
|
39187
39690
|
[avatarInitials]="userService.avatarInitials()"
|
|
39188
39691
|
[avatarType]="userService.avatarType()"
|
|
39692
|
+
[avatarSrc]="userService.avatarSrc()"
|
|
39189
39693
|
(notificationClick)="handleNotificationClick()"
|
|
39190
39694
|
(refresh)="handleRefresh($event)"
|
|
39191
39695
|
>
|
|
@@ -39260,6 +39764,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
39260
39764
|
}]
|
|
39261
39765
|
}], ctorParameters: () => [{ type: i1.ModalController }] });
|
|
39262
39766
|
|
|
39767
|
+
class ProfileModalService {
|
|
39768
|
+
modalController;
|
|
39769
|
+
constructor(modalController) {
|
|
39770
|
+
this.modalController = modalController;
|
|
39771
|
+
}
|
|
39772
|
+
async open() {
|
|
39773
|
+
const modal = await this.modalController.create({
|
|
39774
|
+
component: ProfileModalComponent,
|
|
39775
|
+
cssClass: 'ds-modal-base',
|
|
39776
|
+
mode: 'ios',
|
|
39777
|
+
presentingElement: document.querySelector('ion-router-outlet') || undefined,
|
|
39778
|
+
backdropDismiss: true,
|
|
39779
|
+
showBackdrop: true,
|
|
39780
|
+
animated: true,
|
|
39781
|
+
});
|
|
39782
|
+
await modal.present();
|
|
39783
|
+
}
|
|
39784
|
+
async close(data) {
|
|
39785
|
+
return this.modalController.dismiss(data);
|
|
39786
|
+
}
|
|
39787
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: ProfileModalService, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
39788
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: ProfileModalService, providedIn: 'root' });
|
|
39789
|
+
}
|
|
39790
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImport: i0, type: ProfileModalService, decorators: [{
|
|
39791
|
+
type: Injectable,
|
|
39792
|
+
args: [{
|
|
39793
|
+
providedIn: 'root',
|
|
39794
|
+
}]
|
|
39795
|
+
}], ctorParameters: () => [{ type: i1.ModalController }] });
|
|
39796
|
+
|
|
39263
39797
|
/**
|
|
39264
39798
|
* Services Barrel File
|
|
39265
39799
|
*
|
|
@@ -39283,5 +39817,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.23", ngImpo
|
|
|
39283
39817
|
* Generated bundle index. Do not edit.
|
|
39284
39818
|
*/
|
|
39285
39819
|
|
|
39286
|
-
export { AcceptInvitePageComponent, ActionCommentComponent, ActionLikeComponent, AvatarUploadPageComponent, BaseModalService, ContentRowComponent, CreateAccountPageComponent, DEFAULT_NOTIFICATION_PREFS, DEFAULT_SERVICE_PAGE_LABELS, DsAppIconComponent, DsAvatarWithBadgeComponent, DsLogoComponent, DsMobileAccessSheetComponent, DsMobileActionListItemComponent, DsMobileActionsBottomSheetComponent, DsMobileAddGroupTenantsModalComponent, DsMobileAppLoadingComponent, DsMobileAttachmentPreviewComponent, DsMobileBookingCancelConfirmationComponent, DsMobileBookingConfirmationWrapperComponent, DsMobileBookingDetailSheetComponent, DsMobileBookingDetailSheetService, DsMobileBookingModalComponent, DsMobileBookingModalService, DsMobileBookingSummaryComponent, DsMobileBottomSheetHeaderComponent, DsMobileBottomSheetService, DsMobileBottomSheetWrapperComponent, DsMobileCapacitySheetComponent, DsMobileCardInlineBannerComponent, DsMobileCardInlineComponent, DsMobileCardInlineContactComponent, DsMobileCardInlineFileComponent, DsMobileChatModalComponent, DsMobileChatModalService, DsMobileActionsBottomSheetComponent as DsMobileCommentActionsBottomSheetComponent, DsMobileCommentComponent, DsMobileCommunityAdminPickerComponent, DsMobileCommunityAdminsModalComponent, DsMobileConfirmationSheetComponent, DsMobileContactListItemComponent, DsMobileContentComponent, DsMobileCountBadgeComponent, DsMobileCreateGroupModalComponent, DsMobileDropdownComponent, DsMobileEditGroupModalComponent, DsMobileEmptyStateComponent, DsMobileFabComponent, DsMobileFacilityArchiveConfirmationComponent, DsMobileFacilityCreationConfirmationWrapperComponent, DsMobileFacilityCreationModalComponent, DsMobileFacilityCreationModalService, DsMobileFacilityDeleteConfirmationComponent, DsMobileFacilityDetailModalComponent, DsMobileFacilityDetailModalService, DsMobileFileAttachmentComponent, DsMobileGlassSpinnerComponent, DsMobileGroupAvatarStackComponent, DsMobileGroupMembersModalComponent, DsMobileHandbookDetailModalComponent, DsMobileHandbookDetailModalService, DsMobileHandbookFolderComponent, DsMobileHandbookFolderMiniComponent, DsMobileHeaderContentComponent, DsMobileHeaderContentTileComponent, DsMobileIllustrationComponent, DsMobileImagePlaceholderComponent, DsMobileInlinePhotoComponent, DsMobileInlineTabsComponent, DsMobileInteractiveListItemBookingComponent, DsMobileInteractiveListItemInquiryComponent, DsMobileInteractiveListItemMessageComponent, DsMobileInteractiveListItemPostComponent, DsMobileLightboxImageComponent as DsMobileLightboxComponent, DsMobileLightboxFooterComponent, DsMobileLightboxHeaderComponent, DsMobileLightboxImageComponent, DsMobileLightboxImageWithDescriptionComponent, DsMobileLightboxPdfComponent, DsMobileLightboxService, DsMobileListItemComponent, DsMobileListItemStaticComponent, DsMobileListSearchComponent, DsMobileLoaderOverlayComponent, DsMobileLongPressDirective, DsMobileMediaActionsPanelComponent, DsMobileMessageBubbleComponent, DsMobileMessageComposerComponent, DsMobileModalBaseComponent, DsMobileModalService, DsMobileNewInquiryModalComponent, DsMobileNewInquiryModalService, DsMobileNotificationButtonComponent, DsMobileNotificationModalComponent, DsMobileNotificationModalService, DsMobileNotificationPromptComponent, DsMobileOfflineBannerComponent, DsMobilePageDetailsComponent, DsMobilePageMainComponent, DsMobilePillComponent, DsMobileActionsBottomSheetComponent as DsMobilePostActionsBottomSheetComponent, DsMobilePostComposerComponent, DsMobilePostCreateBottomSheetComponent, DsMobilePostDetailModalComponent, DsMobilePostDetailModalService, DsMobilePriceSheetComponent, DsMobileProfileActionsSheetComponent, DsMobilePromptBottomSheetComponent, DsMobilePropertyBannerComponent, DsMobileRichTextEditorComponent, DsMobileSectionComponent, DsMobileServiceVendorModalService, DsMobileServiceVendorSheetComponent, DsMobileSwiperComponent, DsMobileSwiperWithNavComponent, DsMobileSystemMessageBannerComponent, DsMobileTabBarComponent, DsMobileTabsComponent, DsMobileTenantPickerModalComponent, DsMobileToggleComponent, DsMobileWhenCanBookSheetComponent, DsMobileWhoCanBookSheetComponent, DsTextInputComponent, FamilyAccessPageComponent, FamilyAccessService, InquiriesService, InviteSuccessPageComponent, MediaPickerService, MobileBookingPageComponent, MobileCommunityPageComponent, MobileHandbookPageComponent, MobileHomePageComponent, MobileInquiriesPageComponent, MobileInquiryDetailPageComponent, MobileModalBase, MobilePageBase, MobilePostDetailPageComponent, MobileTabsExampleComponent, NOTIFICATION_ICON_MAP, NotificationPromptService, NotificationService, PUSH_BACKEND_ADAPTER, PageLoadingService, PeerChatLauncherService, PeerMessagingService, PostActionsComponent, PostAttachmentsComponent, PostContentComponent, PostCreatePageComponent, PostMediaComponent, PostPdfAttachmentComponent, PostTextComponent, PostsService, PushNotificationService, RelativeTimePipe, SAMPLE_NOTIFICATIONS, SectionHeaderComponent, ServicesPageComponent, SettingsModalComponent, SettingsModalService, SignInPageComponent, SignInToAcceptPageComponent, TenantChatPageComponent, TileContentComponent, TileIconComponent, TileLabelComponent, TileValueComponent, TrackingPermissionService, UserService, VENDOR_MODAL_SERVICE, WhitelabelDemoModalComponent, WhitelabelDemoModalService, WhitelabelService, customBackTransition, customPageTransition, dateBucket, extractPushPayload, isPeerDirectConversation, isPeerGroupConversation, notificationItemFromPush, peerTenantToParticipant, pushPayloadToNotificationItem };
|
|
39820
|
+
export { AcceptInvitePageComponent, ActionCommentComponent, ActionLikeComponent, AvatarUploadPageComponent, BaseModalService, ContentRowComponent, CreateAccountPageComponent, DEFAULT_NOTIFICATION_PREFS, DEFAULT_SERVICE_PAGE_LABELS, DsAppIconComponent, DsAvatarWithBadgeComponent, DsLogoComponent, DsMobileAccessSheetComponent, DsMobileActionListItemComponent, DsMobileActionsBottomSheetComponent, DsMobileAddGroupTenantsModalComponent, DsMobileAppLoadingComponent, DsMobileAttachmentPreviewComponent, DsMobileBookingCancelConfirmationComponent, DsMobileBookingConfirmationWrapperComponent, DsMobileBookingDetailSheetComponent, DsMobileBookingDetailSheetService, DsMobileBookingModalComponent, DsMobileBookingModalService, DsMobileBookingSummaryComponent, DsMobileBottomSheetHeaderComponent, DsMobileBottomSheetService, DsMobileBottomSheetWrapperComponent, DsMobileCapacitySheetComponent, DsMobileCardInlineBannerComponent, DsMobileCardInlineComponent, DsMobileCardInlineContactComponent, DsMobileCardInlineFileComponent, DsMobileChatModalComponent, DsMobileChatModalService, DsMobileActionsBottomSheetComponent as DsMobileCommentActionsBottomSheetComponent, DsMobileCommentComponent, DsMobileCommunityAdminPickerComponent, DsMobileCommunityAdminsModalComponent, DsMobileConfirmationSheetComponent, DsMobileContactListItemComponent, DsMobileContentComponent, DsMobileCountBadgeComponent, DsMobileCreateGroupModalComponent, DsMobileDropdownComponent, DsMobileEditGroupModalComponent, DsMobileEmptyStateComponent, DsMobileFabComponent, DsMobileFacilityArchiveConfirmationComponent, DsMobileFacilityCreationConfirmationWrapperComponent, DsMobileFacilityCreationModalComponent, DsMobileFacilityCreationModalService, DsMobileFacilityDeleteConfirmationComponent, DsMobileFacilityDetailModalComponent, DsMobileFacilityDetailModalService, DsMobileFileAttachmentComponent, DsMobileGlassSpinnerComponent, DsMobileGroupAvatarStackComponent, DsMobileGroupMembersModalComponent, DsMobileHandbookDetailModalComponent, DsMobileHandbookDetailModalService, DsMobileHandbookFolderComponent, DsMobileHandbookFolderMiniComponent, DsMobileHeaderContentComponent, DsMobileHeaderContentTileComponent, DsMobileIllustrationComponent, DsMobileImagePlaceholderComponent, DsMobileInlinePhotoComponent, DsMobileInlineTabsComponent, DsMobileInteractiveListItemBookingComponent, DsMobileInteractiveListItemInquiryComponent, DsMobileInteractiveListItemMessageComponent, DsMobileInteractiveListItemPostComponent, DsMobileLightboxImageComponent as DsMobileLightboxComponent, DsMobileLightboxFooterComponent, DsMobileLightboxHeaderComponent, DsMobileLightboxImageComponent, DsMobileLightboxImageWithDescriptionComponent, DsMobileLightboxPdfComponent, DsMobileLightboxService, DsMobileListItemComponent, DsMobileListItemStaticComponent, DsMobileListSearchComponent, DsMobileLoaderOverlayComponent, DsMobileLongPressDirective, DsMobileMediaActionsPanelComponent, DsMobileMessageBubbleComponent, DsMobileMessageComposerComponent, DsMobileModalBaseComponent, DsMobileModalService, DsMobileNewInquiryModalComponent, DsMobileNewInquiryModalService, DsMobileNotificationButtonComponent, DsMobileNotificationModalComponent, DsMobileNotificationModalService, DsMobileNotificationPromptComponent, DsMobileOfflineBannerComponent, DsMobilePageDetailsComponent, DsMobilePageMainComponent, DsMobilePillComponent, DsMobileActionsBottomSheetComponent as DsMobilePostActionsBottomSheetComponent, DsMobilePostComposerComponent, DsMobilePostCreateBottomSheetComponent, DsMobilePostDetailModalComponent, DsMobilePostDetailModalService, DsMobilePriceSheetComponent, DsMobileProfileActionsSheetComponent, DsMobilePromptBottomSheetComponent, DsMobilePropertyBannerComponent, DsMobileRichTextEditorComponent, DsMobileSectionComponent, DsMobileServiceVendorModalService, DsMobileServiceVendorSheetComponent, DsMobileSwiperComponent, DsMobileSwiperWithNavComponent, DsMobileSystemMessageBannerComponent, DsMobileTabBarComponent, DsMobileTabsComponent, DsMobileTenantPickerModalComponent, DsMobileToggleComponent, DsMobileWhenCanBookSheetComponent, DsMobileWhoCanBookSheetComponent, DsTextInputComponent, FamilyAccessPageComponent, FamilyAccessService, InquiriesService, InviteSuccessPageComponent, MediaPickerService, MobileBookingPageComponent, MobileCommunityPageComponent, MobileHandbookPageComponent, MobileHomePageComponent, MobileInquiriesPageComponent, MobileInquiryDetailPageComponent, MobileModalBase, MobilePageBase, MobilePostDetailPageComponent, MobileTabsExampleComponent, NOTIFICATION_ICON_MAP, NotificationPromptService, NotificationService, PUSH_BACKEND_ADAPTER, PageLoadingService, PeerChatLauncherService, PeerMessagingService, PostActionsComponent, PostAttachmentsComponent, PostContentComponent, PostCreatePageComponent, PostMediaComponent, PostPdfAttachmentComponent, PostTextComponent, PostsService, ProfileModalComponent, ProfileModalService, PushNotificationService, RelativeTimePipe, SAMPLE_NOTIFICATIONS, SectionHeaderComponent, ServicesPageComponent, SettingsModalComponent, SettingsModalService, SignInPageComponent, SignInToAcceptPageComponent, TenantChatPageComponent, TileContentComponent, TileIconComponent, TileLabelComponent, TileValueComponent, TrackingPermissionService, UserService, VENDOR_MODAL_SERVICE, WhitelabelDemoModalComponent, WhitelabelDemoModalService, WhitelabelService, customBackTransition, customPageTransition, dateBucket, extractPushPayload, isPeerDirectConversation, isPeerGroupConversation, notificationItemFromPush, peerTenantToParticipant, pushPayloadToNotificationItem };
|
|
39287
39821
|
//# sourceMappingURL=propbinder-mobile-design.mjs.map
|