@propbinder/mobile-design 0.2.57 → 0.2.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -63
- package/assets/fonts/brockmann-medium-webfont.woff2 +0 -0
- package/assets/fonts/brockmann-mediumitalic-webfont.woff2 +0 -0
- package/assets/fonts/brockmann-regular-webfont.woff2 +0 -0
- package/assets/fonts/brockmann-regularitalic-webfont.woff2 +0 -0
- package/assets/fonts/brockmann-semibold-webfont.woff2 +0 -0
- package/assets/fonts/brockmann-semibolditalic-webfont.woff2 +0 -0
- package/fesm2022/propbinder-mobile-design.mjs +11268 -9514
- package/fesm2022/propbinder-mobile-design.mjs.map +1 -1
- package/index.d.ts +337 -29
- package/package.json +1 -1
- package/styles/ionic.css +954 -955
- package/styles/mobile-common.css +150 -150
- package/styles/mobile-page-base.css +333 -333
package/index.d.ts
CHANGED
|
@@ -403,6 +403,11 @@ declare class DsMobileBottomSheetHeaderComponent {
|
|
|
403
403
|
* @default false
|
|
404
404
|
*/
|
|
405
405
|
rightButtonDisabled: boolean;
|
|
406
|
+
/**
|
|
407
|
+
* Show loading spinner on right button
|
|
408
|
+
* @default false
|
|
409
|
+
*/
|
|
410
|
+
rightButtonLoading: boolean;
|
|
406
411
|
/**
|
|
407
412
|
* Emitted when left button is clicked
|
|
408
413
|
*/
|
|
@@ -412,7 +417,7 @@ declare class DsMobileBottomSheetHeaderComponent {
|
|
|
412
417
|
*/
|
|
413
418
|
rightButtonClick: EventEmitter<void>;
|
|
414
419
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileBottomSheetHeaderComponent, never>;
|
|
415
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileBottomSheetHeaderComponent, "ds-mobile-bottom-sheet-header", never, { "title": { "alias": "title"; "required": false; }; "leftButtonLabel": { "alias": "leftButtonLabel"; "required": false; }; "rightButtonLabel": { "alias": "rightButtonLabel"; "required": false; }; "rightButtonDisabled": { "alias": "rightButtonDisabled"; "required": false; }; }, { "leftButtonClick": "leftButtonClick"; "rightButtonClick": "rightButtonClick"; }, never, never, true, never>;
|
|
420
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileBottomSheetHeaderComponent, "ds-mobile-bottom-sheet-header", never, { "title": { "alias": "title"; "required": false; }; "leftButtonLabel": { "alias": "leftButtonLabel"; "required": false; }; "rightButtonLabel": { "alias": "rightButtonLabel"; "required": false; }; "rightButtonDisabled": { "alias": "rightButtonDisabled"; "required": false; }; "rightButtonLoading": { "alias": "rightButtonLoading"; "required": false; }; }, { "leftButtonClick": "leftButtonClick"; "rightButtonClick": "rightButtonClick"; }, never, never, true, never>;
|
|
416
421
|
}
|
|
417
422
|
|
|
418
423
|
/**
|
|
@@ -474,6 +479,21 @@ declare class DsMobileConfirmationSheetComponent {
|
|
|
474
479
|
* @default 'Luk'
|
|
475
480
|
*/
|
|
476
481
|
buttonText: string;
|
|
482
|
+
/**
|
|
483
|
+
* Whether the action is destructive (renders button in error/red color)
|
|
484
|
+
* @default false
|
|
485
|
+
*/
|
|
486
|
+
destructive: boolean;
|
|
487
|
+
/**
|
|
488
|
+
* Whether to show a cancel button below the action button
|
|
489
|
+
* @default false
|
|
490
|
+
*/
|
|
491
|
+
showCancelButton: boolean;
|
|
492
|
+
/**
|
|
493
|
+
* Cancel button text
|
|
494
|
+
* @default 'Annuller'
|
|
495
|
+
*/
|
|
496
|
+
cancelButtonText: string;
|
|
477
497
|
/**
|
|
478
498
|
* Whether to show the illustration
|
|
479
499
|
* @default true
|
|
@@ -498,8 +518,9 @@ declare class DsMobileConfirmationSheetComponent {
|
|
|
498
518
|
* Handle button click - dismisses the sheet
|
|
499
519
|
*/
|
|
500
520
|
handleButtonClick(): Promise<void>;
|
|
521
|
+
handleCancel(): Promise<void>;
|
|
501
522
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileConfirmationSheetComponent, never>;
|
|
502
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileConfirmationSheetComponent, "ds-mobile-confirmation-sheet", never, { "title": { "alias": "title"; "required": true; }; "message": { "alias": "message"; "required": true; }; "buttonText": { "alias": "buttonText"; "required": false; }; "showIllustration": { "alias": "showIllustration"; "required": false; }; "illustrationVariant": { "alias": "illustrationVariant"; "required": false; }; "illustrationSize": { "alias": "illustrationSize"; "required": false; }; }, {}, ["summaryTemplate"], never, true, never>;
|
|
523
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileConfirmationSheetComponent, "ds-mobile-confirmation-sheet", never, { "title": { "alias": "title"; "required": true; }; "message": { "alias": "message"; "required": true; }; "buttonText": { "alias": "buttonText"; "required": false; }; "destructive": { "alias": "destructive"; "required": false; }; "showCancelButton": { "alias": "showCancelButton"; "required": false; }; "cancelButtonText": { "alias": "cancelButtonText"; "required": false; }; "showIllustration": { "alias": "showIllustration"; "required": false; }; "illustrationVariant": { "alias": "illustrationVariant"; "required": false; }; "illustrationSize": { "alias": "illustrationSize"; "required": false; }; }, {}, ["summaryTemplate"], never, true, never>;
|
|
503
524
|
}
|
|
504
525
|
|
|
505
526
|
/**
|
|
@@ -519,6 +540,8 @@ declare class DsMobilePostCreateBottomSheetComponent implements AfterViewInit, O
|
|
|
519
540
|
textareaInput?: ElementRef<HTMLTextAreaElement>;
|
|
520
541
|
fileInput?: ElementRef<HTMLInputElement>;
|
|
521
542
|
private whitelabelService;
|
|
543
|
+
private mediaPicker;
|
|
544
|
+
readonly isNative: boolean;
|
|
522
545
|
autoFocus: boolean;
|
|
523
546
|
isReadonly: boolean;
|
|
524
547
|
isEditMode: boolean;
|
|
@@ -554,6 +577,7 @@ declare class DsMobilePostCreateBottomSheetComponent implements AfterViewInit, O
|
|
|
554
577
|
handleCancel(): Promise<void>;
|
|
555
578
|
handlePost(): Promise<void>;
|
|
556
579
|
handleAddImage(): Promise<void>;
|
|
580
|
+
handleTakePhoto(): Promise<void>;
|
|
557
581
|
handleRemoveImage(index: number): void;
|
|
558
582
|
handleAddAttachment(): void;
|
|
559
583
|
handleFileSelect(event: Event): void;
|
|
@@ -738,6 +762,8 @@ declare class DsMobilePageMainComponent extends MobilePageBase implements AfterV
|
|
|
738
762
|
title: _angular_core.InputSignal<string>;
|
|
739
763
|
headerTitle: _angular_core.InputSignal<string>;
|
|
740
764
|
headerSubtitle: _angular_core.InputSignal<string>;
|
|
765
|
+
/** When true, the header logo plays a slide-in-from-top animation on first reveal */
|
|
766
|
+
firstEntry: _angular_core.InputSignal<boolean>;
|
|
741
767
|
avatarType: _angular_core.InputSignal<"initials" | "photo" | "icon">;
|
|
742
768
|
avatarInitials: _angular_core.InputSignal<string>;
|
|
743
769
|
avatarSrc: _angular_core.InputSignal<string>;
|
|
@@ -817,7 +843,7 @@ declare class DsMobilePageMainComponent extends MobilePageBase implements AfterV
|
|
|
817
843
|
*/
|
|
818
844
|
handleRefresh(event: any): Promise<void>;
|
|
819
845
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobilePageMainComponent, never>;
|
|
820
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobilePageMainComponent, "ds-mobile-page-main", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "headerTitle": { "alias": "headerTitle"; "required": false; "isSignal": true; }; "headerSubtitle": { "alias": "headerSubtitle"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarIconName": { "alias": "avatarIconName"; "required": false; "isSignal": true; }; "showRefresh": { "alias": "showRefresh"; "required": false; "isSignal": true; }; "showCondensedHeader": { "alias": "showCondensedHeader"; "required": false; "isSignal": true; }; "scrollThreshold": { "alias": "scrollThreshold"; "required": false; "isSignal": true; }; "headerFadeDistance": { "alias": "headerFadeDistance"; "required": false; "isSignal": true; }; "contentPadding": { "alias": "contentPadding"; "required": false; "isSignal": true; }; "profileMenuItems": { "alias": "profileMenuItems"; "required": false; "isSignal": true; }; }, { "avatarClick": "avatarClick"; "profileActionSelected": "profileActionSelected"; "refresh": "refresh"; "scroll": "scroll"; }, never, ["[header-content]", "[offline-indicator]", "*"], true, never>;
|
|
846
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobilePageMainComponent, "ds-mobile-page-main", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "headerTitle": { "alias": "headerTitle"; "required": false; "isSignal": true; }; "headerSubtitle": { "alias": "headerSubtitle"; "required": false; "isSignal": true; }; "firstEntry": { "alias": "firstEntry"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarIconName": { "alias": "avatarIconName"; "required": false; "isSignal": true; }; "showRefresh": { "alias": "showRefresh"; "required": false; "isSignal": true; }; "showCondensedHeader": { "alias": "showCondensedHeader"; "required": false; "isSignal": true; }; "scrollThreshold": { "alias": "scrollThreshold"; "required": false; "isSignal": true; }; "headerFadeDistance": { "alias": "headerFadeDistance"; "required": false; "isSignal": true; }; "contentPadding": { "alias": "contentPadding"; "required": false; "isSignal": true; }; "profileMenuItems": { "alias": "profileMenuItems"; "required": false; "isSignal": true; }; }, { "avatarClick": "avatarClick"; "profileActionSelected": "profileActionSelected"; "refresh": "refresh"; "scroll": "scroll"; }, never, ["[header-content]", "[offline-indicator]", "*"], true, never>;
|
|
821
847
|
}
|
|
822
848
|
|
|
823
849
|
interface InlineTabItem {
|
|
@@ -2004,6 +2030,7 @@ declare class DsMobileDropdownComponent {
|
|
|
2004
2030
|
declare class DsMobileMessageComposerComponent implements AfterViewInit, OnDestroy {
|
|
2005
2031
|
private cdr;
|
|
2006
2032
|
constructor(cdr: ChangeDetectorRef);
|
|
2033
|
+
private mediaPicker;
|
|
2007
2034
|
/**
|
|
2008
2035
|
* Avatar initials
|
|
2009
2036
|
*/
|
|
@@ -2072,10 +2099,35 @@ declare class DsMobileMessageComposerComponent implements AfterViewInit, OnDestr
|
|
|
2072
2099
|
* Attachments signal
|
|
2073
2100
|
*/
|
|
2074
2101
|
attachments: _angular_core.WritableSignal<AttachmentData[]>;
|
|
2102
|
+
/**
|
|
2103
|
+
* Snapshot of attachments kept alive during the section's exit animation so
|
|
2104
|
+
* the items remain visible while the container collapses.
|
|
2105
|
+
*/
|
|
2106
|
+
private attachmentSnapshot;
|
|
2107
|
+
isAttachmentSectionExiting: _angular_core.WritableSignal<boolean>;
|
|
2108
|
+
/** IDs of items currently playing their exit animation */
|
|
2109
|
+
exitingAttachmentIds: _angular_core.WritableSignal<Set<string>>;
|
|
2110
|
+
/** Items to render — real list normally, snapshot during exit animation */
|
|
2111
|
+
attachmentsForDisplay: _angular_core.Signal<AttachmentData[]>;
|
|
2112
|
+
/** Section stays in DOM while there are items OR while the exit is playing */
|
|
2113
|
+
showAttachmentSection: _angular_core.Signal<boolean>;
|
|
2114
|
+
/** Section is in expanded (visible) state only when real items still exist AND we're not collapsing */
|
|
2115
|
+
attachmentSectionExpanded: _angular_core.Signal<boolean>;
|
|
2075
2116
|
/**
|
|
2076
2117
|
* Attachment menu open state
|
|
2077
2118
|
*/
|
|
2078
2119
|
isAttachmentMenuOpen: _angular_core.WritableSignal<boolean>;
|
|
2120
|
+
/**
|
|
2121
|
+
* Tracks whether the viewport is in the mobile breakpoint (< 768px).
|
|
2122
|
+
* Updated via matchMedia so it reacts to window resize without polling.
|
|
2123
|
+
*/
|
|
2124
|
+
private readonly mql;
|
|
2125
|
+
private readonly isMobileViewport;
|
|
2126
|
+
private readonly mqListener;
|
|
2127
|
+
/** Only open the slide-up panel on mobile viewports */
|
|
2128
|
+
isPanelOpen: _angular_core.Signal<boolean>;
|
|
2129
|
+
/** Only open the dropdown on desktop viewports */
|
|
2130
|
+
isDropdownOpen: _angular_core.Signal<boolean>;
|
|
2079
2131
|
/**
|
|
2080
2132
|
* Editing message state (optional)
|
|
2081
2133
|
*/
|
|
@@ -2222,15 +2274,19 @@ declare class DsMobileMessageComposerComponent implements AfterViewInit, OnDestr
|
|
|
2222
2274
|
closeAttachmentMenu(event?: MouseEvent): void;
|
|
2223
2275
|
/**
|
|
2224
2276
|
* Handle add photo button click from menu
|
|
2225
|
-
* Uses
|
|
2226
|
-
* Allows multiple photo selection
|
|
2277
|
+
* Uses MediaPickerService to open photo library
|
|
2227
2278
|
*/
|
|
2228
2279
|
handleAddPhoto(event?: MouseEvent): Promise<void>;
|
|
2280
|
+
/**
|
|
2281
|
+
* Handle camera button click from menu
|
|
2282
|
+
* Uses MediaPickerService to open device camera
|
|
2283
|
+
*/
|
|
2284
|
+
handleTakePhoto(event?: MouseEvent): Promise<void>;
|
|
2229
2285
|
/**
|
|
2230
2286
|
* Handle add file button click from menu
|
|
2231
|
-
*
|
|
2287
|
+
* On native: uses MediaPickerService. On web: triggers hidden file input.
|
|
2232
2288
|
*/
|
|
2233
|
-
handleAddFile(event?: MouseEvent): void
|
|
2289
|
+
handleAddFile(event?: MouseEvent): Promise<void>;
|
|
2234
2290
|
/**
|
|
2235
2291
|
* Detect file type from file name or mime type
|
|
2236
2292
|
*/
|
|
@@ -2256,6 +2312,25 @@ declare class DsMobileMessageComposerComponent implements AfterViewInit, OnDestr
|
|
|
2256
2312
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileMessageComposerComponent, "ds-mobile-message-composer", never, { "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "sendButtonLabel": { "alias": "sendButtonLabel"; "required": false; "isSignal": true; }; "attachmentButtonLabel": { "alias": "attachmentButtonLabel"; "required": false; "isSignal": true; }; "showAttachmentButton": { "alias": "showAttachmentButton"; "required": false; "isSignal": true; }; "editIndicatorText": { "alias": "editIndicatorText"; "required": false; "isSignal": true; }; "replyIndicatorText": { "alias": "replyIndicatorText"; "required": false; "isSignal": true; }; "enableMentions": { "alias": "enableMentions"; "required": false; "isSignal": true; }; "mentionUsers": { "alias": "mentionUsers"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "autoFocus"; "required": false; "isSignal": true; }; }, { "messageSent": "messageSent"; "editCancelled": "editCancelled"; "replyCancelled": "replyCancelled"; "mentionSelected": "mentionSelected"; "attachmentClicked": "attachmentClicked"; "attachmentsChanged": "attachmentsChanged"; }, never, never, true, never>;
|
|
2257
2313
|
}
|
|
2258
2314
|
|
|
2315
|
+
/**
|
|
2316
|
+
* DsMobileMediaActionsPanelComponent
|
|
2317
|
+
*
|
|
2318
|
+
* Expandable media action panel rendered inline in the message composer footer.
|
|
2319
|
+
* Displays Photo / Camera / File actions as large tap-target tiles with a
|
|
2320
|
+
* smooth slide-up animation.
|
|
2321
|
+
*
|
|
2322
|
+
* Intentionally hidden via CSS on viewports >= 768 px (desktop), where the
|
|
2323
|
+
* existing dropdown is shown instead.
|
|
2324
|
+
*/
|
|
2325
|
+
declare class DsMobileMediaActionsPanelComponent {
|
|
2326
|
+
items: _angular_core.InputSignal<DsMobileDropdownItem[]>;
|
|
2327
|
+
isOpen: _angular_core.InputSignal<boolean>;
|
|
2328
|
+
itemSelected: _angular_core.OutputEmitterRef<DsMobileDropdownItem>;
|
|
2329
|
+
handleClick(item: DsMobileDropdownItem): void;
|
|
2330
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileMediaActionsPanelComponent, never>;
|
|
2331
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileMediaActionsPanelComponent, "ds-mobile-media-actions-panel", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; }, { "itemSelected": "itemSelected"; }, never, never, true, never>;
|
|
2332
|
+
}
|
|
2333
|
+
|
|
2259
2334
|
/**
|
|
2260
2335
|
* Chat attachment interface
|
|
2261
2336
|
*/
|
|
@@ -4309,6 +4384,23 @@ declare class DsMobileLoaderOverlayComponent {
|
|
|
4309
4384
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileLoaderOverlayComponent, "ds-mobile-loader-overlay", never, { "spinnerSize": { "alias": "spinnerSize"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4310
4385
|
}
|
|
4311
4386
|
|
|
4387
|
+
/**
|
|
4388
|
+
* DsMobileAppLoadingComponent — dev app mirror.
|
|
4389
|
+
* See projects/mobile-design-lib/src/components/app-loading for the authoritative source.
|
|
4390
|
+
*
|
|
4391
|
+
* Phases:
|
|
4392
|
+
* - Default (isExiting=false): Shows a centered ring spinner with the logomark at 1.2x scale.
|
|
4393
|
+
* - isExiting=true: Plays exit animation — logo + ring fly upward, backdrop fades.
|
|
4394
|
+
* Emits exitComplete when the backdrop fade animation ends.
|
|
4395
|
+
*/
|
|
4396
|
+
declare class DsMobileAppLoadingComponent {
|
|
4397
|
+
isExiting: _angular_core.InputSignal<boolean>;
|
|
4398
|
+
exitComplete: _angular_core.OutputEmitterRef<void>;
|
|
4399
|
+
onAnimEnd(event: AnimationEvent): void;
|
|
4400
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileAppLoadingComponent, never>;
|
|
4401
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileAppLoadingComponent, "ds-mobile-app-loading", never, { "isExiting": { "alias": "isExiting"; "required": false; "isSignal": true; }; }, { "exitComplete": "exitComplete"; }, never, never, true, never>;
|
|
4402
|
+
}
|
|
4403
|
+
|
|
4312
4404
|
/**
|
|
4313
4405
|
* Configuration options for modal presentation
|
|
4314
4406
|
*/
|
|
@@ -5313,9 +5405,13 @@ declare class DsMobileCardInlineContactComponent {
|
|
|
5313
5405
|
*/
|
|
5314
5406
|
name: _angular_core.InputSignal<string>;
|
|
5315
5407
|
/**
|
|
5316
|
-
* Avatar initials (usually 1-2 letters)
|
|
5408
|
+
* Avatar initials (usually 1-2 letters). Not needed when imageUrl is provided.
|
|
5317
5409
|
*/
|
|
5318
5410
|
initials: _angular_core.InputSignal<string>;
|
|
5411
|
+
/**
|
|
5412
|
+
* Image URL for the leading slot. When provided, renders an image instead of initials avatar.
|
|
5413
|
+
*/
|
|
5414
|
+
imageUrl: _angular_core.InputSignal<string>;
|
|
5319
5415
|
/**
|
|
5320
5416
|
* Contact person name (optional)
|
|
5321
5417
|
*/
|
|
@@ -5338,13 +5434,21 @@ declare class DsMobileCardInlineContactComponent {
|
|
|
5338
5434
|
* Whether to show chevron icon
|
|
5339
5435
|
*/
|
|
5340
5436
|
showChevron: _angular_core.InputSignal<boolean>;
|
|
5437
|
+
/**
|
|
5438
|
+
* Whether to show an edit button in the trailing slot
|
|
5439
|
+
*/
|
|
5440
|
+
showEditButton: _angular_core.InputSignal<boolean>;
|
|
5341
5441
|
/**
|
|
5342
5442
|
* Emits when the contact item is clicked (if clickable)
|
|
5343
5443
|
*/
|
|
5344
5444
|
contactClick: _angular_core.OutputEmitterRef<void>;
|
|
5445
|
+
/**
|
|
5446
|
+
* Emits when the edit button is clicked
|
|
5447
|
+
*/
|
|
5448
|
+
editClick: _angular_core.OutputEmitterRef<void>;
|
|
5345
5449
|
handleContactClick(): void;
|
|
5346
5450
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileCardInlineContactComponent, never>;
|
|
5347
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileCardInlineContactComponent, "ds-mobile-card-inline-contact", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "initials": { "alias": "initials"; "required": true; "isSignal": true; }; "contactPerson": { "alias": "contactPerson"; "required": false; "isSignal": true; }; "phoneNumber": { "alias": "phoneNumber"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "showChevron": { "alias": "showChevron"; "required": false; "isSignal": true; }; }, { "contactClick": "contactClick"; }, never, never, true, never>;
|
|
5451
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileCardInlineContactComponent, "ds-mobile-card-inline-contact", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "contactPerson": { "alias": "contactPerson"; "required": false; "isSignal": true; }; "phoneNumber": { "alias": "phoneNumber"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "showChevron": { "alias": "showChevron"; "required": false; "isSignal": true; }; "showEditButton": { "alias": "showEditButton"; "required": false; "isSignal": true; }; }, { "contactClick": "contactClick"; "editClick": "editClick"; }, never, never, true, never>;
|
|
5348
5452
|
}
|
|
5349
5453
|
|
|
5350
5454
|
/**
|
|
@@ -5847,6 +5951,8 @@ interface NewInquiryData {
|
|
|
5847
5951
|
*/
|
|
5848
5952
|
declare class DsMobileNewInquiryModalComponent implements OnInit, AfterViewInit {
|
|
5849
5953
|
private modalController;
|
|
5954
|
+
private mediaPicker;
|
|
5955
|
+
readonly isNative: boolean;
|
|
5850
5956
|
titleInputRef?: ElementRef<HTMLElement>;
|
|
5851
5957
|
descriptionInputRef?: ElementRef<HTMLElement>;
|
|
5852
5958
|
titleInput?: DsTextareaComponent;
|
|
@@ -5887,6 +5993,12 @@ declare class DsMobileNewInquiryModalComponent implements OnInit, AfterViewInit
|
|
|
5887
5993
|
* Attachments array (replaces photos)
|
|
5888
5994
|
*/
|
|
5889
5995
|
attachments: _angular_core.WritableSignal<AttachmentData[]>;
|
|
5996
|
+
private attachmentSnapshot;
|
|
5997
|
+
isAttachmentSectionExiting: _angular_core.WritableSignal<boolean>;
|
|
5998
|
+
exitingAttachmentIds: _angular_core.WritableSignal<Set<string>>;
|
|
5999
|
+
attachmentsForDisplay: _angular_core.Signal<AttachmentData[]>;
|
|
6000
|
+
showAttachmentSection: _angular_core.Signal<boolean>;
|
|
6001
|
+
attachmentSectionExpanded: _angular_core.Signal<boolean>;
|
|
5890
6002
|
/**
|
|
5891
6003
|
* Form validation state
|
|
5892
6004
|
*/
|
|
@@ -5918,25 +6030,27 @@ declare class DsMobileNewInquiryModalComponent implements OnInit, AfterViewInit
|
|
|
5918
6030
|
*/
|
|
5919
6031
|
validateForm(): void;
|
|
5920
6032
|
/**
|
|
5921
|
-
* Add a new photo from
|
|
6033
|
+
* Add a new photo from library
|
|
5922
6034
|
*/
|
|
5923
6035
|
addPhoto(): Promise<void>;
|
|
6036
|
+
/**
|
|
6037
|
+
* Take a photo using the device camera
|
|
6038
|
+
*/
|
|
6039
|
+
takePhoto(): Promise<void>;
|
|
5924
6040
|
/**
|
|
5925
6041
|
* Remove an attachment
|
|
5926
6042
|
*/
|
|
5927
6043
|
removeAttachment(attachmentId: string): void;
|
|
5928
6044
|
/**
|
|
5929
6045
|
* Handle attachment button click
|
|
6046
|
+
* On native: uses MediaPickerService. On web: triggers hidden file input.
|
|
5930
6047
|
*/
|
|
5931
|
-
handleAddAttachment(): void
|
|
6048
|
+
handleAddAttachment(): Promise<void>;
|
|
5932
6049
|
/**
|
|
5933
6050
|
* Detect file type from file name or mime type
|
|
6051
|
+
* @deprecated Use mediaPicker.detectFileType() for new code
|
|
5934
6052
|
*/
|
|
5935
6053
|
private detectFileType;
|
|
5936
|
-
/**
|
|
5937
|
-
* Format file size for display
|
|
5938
|
-
*/
|
|
5939
|
-
private formatFileSize;
|
|
5940
6054
|
/**
|
|
5941
6055
|
* Handle file selection from file input
|
|
5942
6056
|
*/
|
|
@@ -6281,6 +6395,8 @@ interface NewFacilityData {
|
|
|
6281
6395
|
declare class DsMobileFacilityCreationModalComponent implements OnInit, AfterViewInit {
|
|
6282
6396
|
private modalController;
|
|
6283
6397
|
private bottomSheetService;
|
|
6398
|
+
private mediaPicker;
|
|
6399
|
+
readonly isNative: boolean;
|
|
6284
6400
|
titleInputRef?: ElementRef<HTMLElement>;
|
|
6285
6401
|
descriptionInputRef?: ElementRef<HTMLElement>;
|
|
6286
6402
|
titleInput?: DsTextareaComponent;
|
|
@@ -6321,6 +6437,12 @@ declare class DsMobileFacilityCreationModalComponent implements OnInit, AfterVie
|
|
|
6321
6437
|
* Attachments array
|
|
6322
6438
|
*/
|
|
6323
6439
|
attachments: _angular_core.WritableSignal<AttachmentData[]>;
|
|
6440
|
+
private attachmentSnapshot;
|
|
6441
|
+
isAttachmentSectionExiting: _angular_core.WritableSignal<boolean>;
|
|
6442
|
+
exitingAttachmentIds: _angular_core.WritableSignal<Set<string>>;
|
|
6443
|
+
attachmentsForDisplay: _angular_core.Signal<AttachmentData[]>;
|
|
6444
|
+
showAttachmentSection: _angular_core.Signal<boolean>;
|
|
6445
|
+
attachmentSectionExpanded: _angular_core.Signal<boolean>;
|
|
6324
6446
|
/**
|
|
6325
6447
|
* Who can book signal
|
|
6326
6448
|
*/
|
|
@@ -6384,25 +6506,27 @@ declare class DsMobileFacilityCreationModalComponent implements OnInit, AfterVie
|
|
|
6384
6506
|
*/
|
|
6385
6507
|
openAccessSheet(): Promise<void>;
|
|
6386
6508
|
/**
|
|
6387
|
-
* Add a new photo from
|
|
6509
|
+
* Add a new photo from library
|
|
6388
6510
|
*/
|
|
6389
6511
|
addPhoto(): Promise<void>;
|
|
6512
|
+
/**
|
|
6513
|
+
* Take a photo using the device camera
|
|
6514
|
+
*/
|
|
6515
|
+
takePhoto(): Promise<void>;
|
|
6390
6516
|
/**
|
|
6391
6517
|
* Remove an attachment
|
|
6392
6518
|
*/
|
|
6393
6519
|
removeAttachment(attachmentId: string): void;
|
|
6394
6520
|
/**
|
|
6395
6521
|
* Handle attachment button click
|
|
6522
|
+
* On native: uses MediaPickerService. On web: triggers hidden file input.
|
|
6396
6523
|
*/
|
|
6397
|
-
handleAddAttachment(): void
|
|
6524
|
+
handleAddAttachment(): Promise<void>;
|
|
6398
6525
|
/**
|
|
6399
6526
|
* Detect file type from file name or mime type
|
|
6527
|
+
* @deprecated Use mediaPicker.detectFileType() for new code
|
|
6400
6528
|
*/
|
|
6401
6529
|
private detectFileType;
|
|
6402
|
-
/**
|
|
6403
|
-
* Format file size for display
|
|
6404
|
-
*/
|
|
6405
|
-
private formatFileSize;
|
|
6406
6530
|
/**
|
|
6407
6531
|
* Handle file selection from file input
|
|
6408
6532
|
*/
|
|
@@ -7229,6 +7353,7 @@ declare class DsMobileHandbookFolderMiniComponent {
|
|
|
7229
7353
|
*/
|
|
7230
7354
|
declare class DsTextInputComponent implements ControlValueAccessor {
|
|
7231
7355
|
type: _angular_core.InputSignal<"search" | "text" | "url" | "email" | "tel" | "password">;
|
|
7356
|
+
label: _angular_core.InputSignal<string>;
|
|
7232
7357
|
placeholder: _angular_core.InputSignal<string>;
|
|
7233
7358
|
disabled: _angular_core.InputSignal<boolean>;
|
|
7234
7359
|
readonly: _angular_core.InputSignal<boolean>;
|
|
@@ -7243,6 +7368,7 @@ declare class DsTextInputComponent implements ControlValueAccessor {
|
|
|
7243
7368
|
blur: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
7244
7369
|
focus: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
7245
7370
|
errorCleared: _angular_core.OutputEmitterRef<void>;
|
|
7371
|
+
private inputElRef;
|
|
7246
7372
|
private _value;
|
|
7247
7373
|
value: _angular_core.Signal<string>;
|
|
7248
7374
|
inputId: string;
|
|
@@ -7259,8 +7385,9 @@ declare class DsTextInputComponent implements ControlValueAccessor {
|
|
|
7259
7385
|
registerOnChange(fn: (value: string) => void): void;
|
|
7260
7386
|
registerOnTouched(fn: () => void): void;
|
|
7261
7387
|
setDisabledState(isDisabled: boolean): void;
|
|
7388
|
+
focusInput(): void;
|
|
7262
7389
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsTextInputComponent, never>;
|
|
7263
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsTextInputComponent, "ds-text-input", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "autoClearError": { "alias": "autoClearError"; "required": false; "isSignal": true; }; "validator": { "alias": "validator"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "blur": "blur"; "focus": "focus"; "errorCleared": "errorCleared"; }, never, never, true, never>;
|
|
7390
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsTextInputComponent, "ds-text-input", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "autoClearError": { "alias": "autoClearError"; "required": false; "isSignal": true; }; "validator": { "alias": "validator"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "blur": "blur"; "focus": "focus"; "errorCleared": "errorCleared"; }, never, never, true, never>;
|
|
7264
7391
|
}
|
|
7265
7392
|
|
|
7266
7393
|
/**
|
|
@@ -7517,7 +7644,7 @@ declare class DsMobileOfflineBannerComponent {
|
|
|
7517
7644
|
* Inlines SVG and uses CSS variables to adapt colors to your theme.
|
|
7518
7645
|
*
|
|
7519
7646
|
* **Features:**
|
|
7520
|
-
* - Predefined variants (post, inquiry) for common empty states
|
|
7647
|
+
* - Predefined variants (post, inquiry, family) for common empty states
|
|
7521
7648
|
* - Automatic color adaptation using CSS variables
|
|
7522
7649
|
* - Preserves all SVG details (textures, filters, gradients, shadows)
|
|
7523
7650
|
* - White radial gradient overlay for depth effect
|
|
@@ -7540,9 +7667,9 @@ declare class DsMobileIllustrationComponent {
|
|
|
7540
7667
|
private sanitizer;
|
|
7541
7668
|
/**
|
|
7542
7669
|
* Predefined illustration variant
|
|
7543
|
-
* Available variants: 'post', 'inquiry', 'confirmation'
|
|
7670
|
+
* Available variants: 'post', 'inquiry', 'confirmation', 'family'
|
|
7544
7671
|
*/
|
|
7545
|
-
variant: _angular_core.InputSignal<"post" | "inquiry" | "confirmation">;
|
|
7672
|
+
variant: _angular_core.InputSignal<"post" | "inquiry" | "confirmation" | "family">;
|
|
7546
7673
|
/**
|
|
7547
7674
|
* Illustration size (width and height)
|
|
7548
7675
|
* @default '120px'
|
|
@@ -7796,6 +7923,42 @@ declare class MobileHandbookPageComponent {
|
|
|
7796
7923
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileHandbookPageComponent, "app-mobile-handbook-page", never, {}, {}, never, never, true, never>;
|
|
7797
7924
|
}
|
|
7798
7925
|
|
|
7926
|
+
type LoadingPhase = 'loading' | 'exiting' | 'idle';
|
|
7927
|
+
/**
|
|
7928
|
+
* PageLoadingService
|
|
7929
|
+
*
|
|
7930
|
+
* Coordinates the three-phase full-screen loading state between a page
|
|
7931
|
+
* component (which knows when its data is ready) and the layout component
|
|
7932
|
+
* (which owns the tab bar and overlay rendering).
|
|
7933
|
+
*
|
|
7934
|
+
* Phase flow:
|
|
7935
|
+
* loading → (setLoading(false)) → exiting → (animationend) → idle
|
|
7936
|
+
*
|
|
7937
|
+
* Pages call setLoading(true/false) — the animation sequence is transparent
|
|
7938
|
+
* to callers. The layout listens to isExiting() and calls onExitComplete()
|
|
7939
|
+
* after the overlay's exit animation fires animationend.
|
|
7940
|
+
*/
|
|
7941
|
+
declare class PageLoadingService {
|
|
7942
|
+
readonly phase: _angular_core.WritableSignal<LoadingPhase>;
|
|
7943
|
+
readonly isLoading: _angular_core.Signal<boolean>;
|
|
7944
|
+
readonly isExiting: _angular_core.Signal<boolean>;
|
|
7945
|
+
/** True when any full-screen overlay should cover the tab bar */
|
|
7946
|
+
readonly isCoveringScreen: _angular_core.Signal<boolean>;
|
|
7947
|
+
readonly hasError: _angular_core.WritableSignal<boolean>;
|
|
7948
|
+
setLoading(value: boolean): void;
|
|
7949
|
+
/** Called by the layout when the overlay's exit animation completes */
|
|
7950
|
+
onExitComplete(): void;
|
|
7951
|
+
/**
|
|
7952
|
+
* True only during the window right after the loading overlay exits.
|
|
7953
|
+
* Used to gate homeReveal and logoSlideIn so they don't replay on
|
|
7954
|
+
* subsequent navigations back to the page.
|
|
7955
|
+
*/
|
|
7956
|
+
readonly isRevealAnimation: _angular_core.WritableSignal<boolean>;
|
|
7957
|
+
setError(): void;
|
|
7958
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageLoadingService, never>;
|
|
7959
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<PageLoadingService>;
|
|
7960
|
+
}
|
|
7961
|
+
|
|
7799
7962
|
declare class TrackingPermissionService {
|
|
7800
7963
|
private readonly trackingPromptRequestedKey;
|
|
7801
7964
|
private readonly platform;
|
|
@@ -7813,6 +7976,56 @@ declare class TrackingPermissionService {
|
|
|
7813
7976
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TrackingPermissionService>;
|
|
7814
7977
|
}
|
|
7815
7978
|
|
|
7979
|
+
type FamilyMemberStatus = 'active' | 'pending' | 'expired';
|
|
7980
|
+
type ContactType = 'email' | 'phone';
|
|
7981
|
+
interface FamilyMember {
|
|
7982
|
+
id: string;
|
|
7983
|
+
name: string;
|
|
7984
|
+
initials: string;
|
|
7985
|
+
email?: string;
|
|
7986
|
+
phone?: string;
|
|
7987
|
+
status: FamilyMemberStatus;
|
|
7988
|
+
expiresAt?: Date;
|
|
7989
|
+
invitedAt?: Date;
|
|
7990
|
+
}
|
|
7991
|
+
interface FamilyInvite {
|
|
7992
|
+
token: string;
|
|
7993
|
+
inviterName: string;
|
|
7994
|
+
inviterInitials: string;
|
|
7995
|
+
propertyAddress: string;
|
|
7996
|
+
propertyPhotoUrl: string;
|
|
7997
|
+
inviteeName: string;
|
|
7998
|
+
inviteeEmail: string;
|
|
7999
|
+
expiresAt: Date;
|
|
8000
|
+
status: 'pending' | 'accepted' | 'expired';
|
|
8001
|
+
}
|
|
8002
|
+
|
|
8003
|
+
declare class FamilyAccessService {
|
|
8004
|
+
readonly maxMembers = 2;
|
|
8005
|
+
readonly inviteExpiryHours = 72;
|
|
8006
|
+
private _members;
|
|
8007
|
+
private _isLoading;
|
|
8008
|
+
private _resendConfirmed;
|
|
8009
|
+
private _acceptedInviteContext;
|
|
8010
|
+
readonly members: _angular_core.Signal<FamilyMember[]>;
|
|
8011
|
+
readonly isLoading: _angular_core.Signal<boolean>;
|
|
8012
|
+
readonly resendConfirmed: _angular_core.Signal<string | null>;
|
|
8013
|
+
readonly isEmpty: _angular_core.Signal<boolean>;
|
|
8014
|
+
readonly hasReachedLimit: _angular_core.Signal<boolean>;
|
|
8015
|
+
readonly acceptedInviteContext: _angular_core.Signal<FamilyInvite | null>;
|
|
8016
|
+
loadMembers(): Promise<void>;
|
|
8017
|
+
inviteMember(name: string, contact: string, type: ContactType): Promise<void>;
|
|
8018
|
+
removeMember(memberId: string): Promise<void>;
|
|
8019
|
+
revokeInvite(memberId: string): Promise<void>;
|
|
8020
|
+
resendInvite(memberId: string): Promise<void>;
|
|
8021
|
+
loadInvite(token: string): Promise<FamilyInvite>;
|
|
8022
|
+
acceptInvite(token: string, invite: FamilyInvite): Promise<void>;
|
|
8023
|
+
clearAcceptedInviteContext(): void;
|
|
8024
|
+
requestNewInvite(token: string): Promise<void>;
|
|
8025
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FamilyAccessService, never>;
|
|
8026
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FamilyAccessService>;
|
|
8027
|
+
}
|
|
8028
|
+
|
|
7816
8029
|
declare class MobileHomePageComponent implements OnInit {
|
|
7817
8030
|
private router;
|
|
7818
8031
|
userService: UserService;
|
|
@@ -7820,7 +8033,9 @@ declare class MobileHomePageComponent implements OnInit {
|
|
|
7820
8033
|
private postModal;
|
|
7821
8034
|
private trackingPermissionService;
|
|
7822
8035
|
private bottomSheet;
|
|
8036
|
+
familyAccessService: FamilyAccessService;
|
|
7823
8037
|
pageComponent: DsMobilePageMainComponent;
|
|
8038
|
+
protected pageLoading: PageLoadingService;
|
|
7824
8039
|
recentPosts: _angular_core.Signal<_propbinder_mobile_design.Post[]>;
|
|
7825
8040
|
private allInquiries;
|
|
7826
8041
|
openInquiries: _angular_core.Signal<{
|
|
@@ -7830,8 +8045,9 @@ declare class MobileHomePageComponent implements OnInit {
|
|
|
7830
8045
|
status: "open";
|
|
7831
8046
|
timestamp: string;
|
|
7832
8047
|
}[]>;
|
|
7833
|
-
constructor(router: Router, userService: UserService, postsService: PostsService, postModal: DsMobilePostDetailModalService, trackingPermissionService: TrackingPermissionService, bottomSheet: DsMobileBottomSheetService);
|
|
8048
|
+
constructor(router: Router, userService: UserService, postsService: PostsService, postModal: DsMobilePostDetailModalService, trackingPermissionService: TrackingPermissionService, bottomSheet: DsMobileBottomSheetService, familyAccessService: FamilyAccessService);
|
|
7834
8049
|
ngOnInit(): void;
|
|
8050
|
+
private simulateLoad;
|
|
7835
8051
|
handleRefresh(event: any): void;
|
|
7836
8052
|
openPost(postId: string, focusComment?: boolean): Promise<void>;
|
|
7837
8053
|
openInquiryDetail(inquiryId: string): void;
|
|
@@ -7923,10 +8139,12 @@ declare class MobileInquiryDetailPageComponent {
|
|
|
7923
8139
|
declare class MobileTabsExampleComponent implements OnInit {
|
|
7924
8140
|
userService: UserService;
|
|
7925
8141
|
private router;
|
|
8142
|
+
private navCtrl;
|
|
7926
8143
|
private whitelabelDemoModal;
|
|
7927
8144
|
private trackingPermissionService;
|
|
8145
|
+
readonly pageLoading: PageLoadingService;
|
|
7928
8146
|
private trackedProfileMenuItems;
|
|
7929
|
-
constructor(userService: UserService, router: Router);
|
|
8147
|
+
constructor(userService: UserService, router: Router, navCtrl: NavController);
|
|
7930
8148
|
ngOnInit(): void;
|
|
7931
8149
|
tabs: TabConfig[];
|
|
7932
8150
|
/**
|
|
@@ -7945,6 +8163,8 @@ declare class MobileTabsExampleComponent implements OnInit {
|
|
|
7945
8163
|
* Mobile actions are handled globally in AppComponent via UserService.
|
|
7946
8164
|
*/
|
|
7947
8165
|
handleProfileAction(result: ActionResult): void;
|
|
8166
|
+
/** Called by the error overlay retry button — clears error and re-navigates to home */
|
|
8167
|
+
handleRetry(): void;
|
|
7948
8168
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileTabsExampleComponent, never>;
|
|
7949
8169
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileTabsExampleComponent, "app-mobile-tabs-example", never, {}, {}, never, never, true, never>;
|
|
7950
8170
|
}
|
|
@@ -8089,6 +8309,59 @@ declare class SignInPageComponent implements AfterViewInit, OnDestroy {
|
|
|
8089
8309
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SignInPageComponent, "app-sign-in", never, {}, {}, never, never, true, never>;
|
|
8090
8310
|
}
|
|
8091
8311
|
|
|
8312
|
+
declare class FamilyAccessPageComponent implements OnInit {
|
|
8313
|
+
readonly service: FamilyAccessService;
|
|
8314
|
+
private bottomSheet;
|
|
8315
|
+
toastMessage: _angular_core.WritableSignal<string | null>;
|
|
8316
|
+
ngOnInit(): void;
|
|
8317
|
+
showToast(message: string): void;
|
|
8318
|
+
statusLabel(member: FamilyMember): string;
|
|
8319
|
+
handleResend(member: FamilyMember): Promise<void>;
|
|
8320
|
+
confirmRevoke(member: FamilyMember): Promise<void>;
|
|
8321
|
+
openMemberActions(member: FamilyMember): Promise<void>;
|
|
8322
|
+
openInviteSheet(): Promise<void>;
|
|
8323
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FamilyAccessPageComponent, never>;
|
|
8324
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FamilyAccessPageComponent, "app-family-access-page", never, {}, {}, never, never, true, never>;
|
|
8325
|
+
}
|
|
8326
|
+
|
|
8327
|
+
declare class AcceptInvitePageComponent implements OnInit {
|
|
8328
|
+
private route;
|
|
8329
|
+
private router;
|
|
8330
|
+
private familyAccessService;
|
|
8331
|
+
isLoading: _angular_core.WritableSignal<boolean>;
|
|
8332
|
+
isAccepting: _angular_core.WritableSignal<boolean>;
|
|
8333
|
+
isRequesting: _angular_core.WritableSignal<boolean>;
|
|
8334
|
+
requestSent: _angular_core.WritableSignal<boolean>;
|
|
8335
|
+
invite: _angular_core.WritableSignal<FamilyInvite | null>;
|
|
8336
|
+
isExpired: _angular_core.Signal<boolean>;
|
|
8337
|
+
pageTitle: _angular_core.Signal<string>;
|
|
8338
|
+
ngOnInit(): Promise<void>;
|
|
8339
|
+
accept(): Promise<void>;
|
|
8340
|
+
requestResend(): Promise<void>;
|
|
8341
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AcceptInvitePageComponent, never>;
|
|
8342
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AcceptInvitePageComponent, "app-accept-invite-page", never, {}, {}, never, never, true, never>;
|
|
8343
|
+
}
|
|
8344
|
+
|
|
8345
|
+
declare class CreateAccountPageComponent {
|
|
8346
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CreateAccountPageComponent, never>;
|
|
8347
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CreateAccountPageComponent, "app-create-account-page", never, {}, {}, never, never, true, never>;
|
|
8348
|
+
}
|
|
8349
|
+
|
|
8350
|
+
declare class AvatarUploadPageComponent {
|
|
8351
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarUploadPageComponent, never>;
|
|
8352
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarUploadPageComponent, "app-avatar-upload-page", never, {}, {}, never, never, true, never>;
|
|
8353
|
+
}
|
|
8354
|
+
|
|
8355
|
+
declare class InviteSuccessPageComponent {
|
|
8356
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InviteSuccessPageComponent, never>;
|
|
8357
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InviteSuccessPageComponent, "app-invite-success-page", never, {}, {}, never, never, true, never>;
|
|
8358
|
+
}
|
|
8359
|
+
|
|
8360
|
+
declare class SignInToAcceptPageComponent {
|
|
8361
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SignInToAcceptPageComponent, never>;
|
|
8362
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SignInToAcceptPageComponent, "app-sign-in-to-accept-page", never, {}, {}, never, never, true, never>;
|
|
8363
|
+
}
|
|
8364
|
+
|
|
8092
8365
|
/**
|
|
8093
8366
|
* Whitelabel Demo Modal Component
|
|
8094
8367
|
*
|
|
@@ -8202,5 +8475,40 @@ declare const customPageTransition: (_: HTMLElement, opts: any) => Animation;
|
|
|
8202
8475
|
*/
|
|
8203
8476
|
declare const customBackTransition: (_: HTMLElement, opts: any) => Animation;
|
|
8204
8477
|
|
|
8205
|
-
|
|
8206
|
-
|
|
8478
|
+
interface MediaPickerResult {
|
|
8479
|
+
attachments: AttachmentData[];
|
|
8480
|
+
}
|
|
8481
|
+
declare class MediaPickerService {
|
|
8482
|
+
/**
|
|
8483
|
+
* Opens the native photo library picker (multi-select, up to `limit` items).
|
|
8484
|
+
* Uses @capawesome/capacitor-file-picker which maps to the Android Photo Picker
|
|
8485
|
+
* on API 33+ and UIImagePickerController/PHPickerViewController on iOS.
|
|
8486
|
+
* No runtime permission required on Android 13+.
|
|
8487
|
+
*/
|
|
8488
|
+
pickFromLibrary(limit?: number): Promise<MediaPickerResult>;
|
|
8489
|
+
/**
|
|
8490
|
+
* Opens the device camera directly.
|
|
8491
|
+
*
|
|
8492
|
+
* iOS: triggers NSCameraUsageDescription permission dialog on first use
|
|
8493
|
+
* (privacy string already set in Info.plist).
|
|
8494
|
+
* Android: launches the stock Camera app as a separate Activity —
|
|
8495
|
+
* no CAMERA permission needed in AndroidManifest.xml.
|
|
8496
|
+
*
|
|
8497
|
+
* Returns a single image (camera is always single-shot).
|
|
8498
|
+
*/
|
|
8499
|
+
takePhoto(): Promise<MediaPickerResult>;
|
|
8500
|
+
/**
|
|
8501
|
+
* Opens the system file picker for documents.
|
|
8502
|
+
* On native, uses FilePicker.pickFiles() with broad MIME types.
|
|
8503
|
+
* On web, returns empty — the caller is responsible for triggering
|
|
8504
|
+
* a hidden <input type="file"> in that case.
|
|
8505
|
+
*/
|
|
8506
|
+
pickFiles(limit?: number): Promise<MediaPickerResult>;
|
|
8507
|
+
formatFileSize(bytes: number): string;
|
|
8508
|
+
detectFileType(fileName: string): AttachmentData['type'];
|
|
8509
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MediaPickerService, never>;
|
|
8510
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<MediaPickerService>;
|
|
8511
|
+
}
|
|
8512
|
+
|
|
8513
|
+
export { AcceptInvitePageComponent, ActionCommentComponent, ActionLikeComponent, AvatarUploadPageComponent, BaseModalService, ContentRowComponent, CreateAccountPageComponent, DsAppIconComponent, DsAvatarWithBadgeComponent, DsLogoComponent, DsMobileAccessSheetComponent, DsMobileActionListItemComponent, DsMobileActionsBottomSheetComponent, DsMobileAppLoadingComponent, DsMobileAttachmentPreviewComponent, DsMobileBookingConfirmationWrapperComponent, DsMobileBookingModalComponent, DsMobileBookingModalService, DsMobileBookingSummaryComponent, DsMobileBottomSheetHeaderComponent, DsMobileBottomSheetService, DsMobileBottomSheetWrapperComponent, DsMobileCardInlineBannerComponent, DsMobileCardInlineComponent, DsMobileCardInlineContactComponent, DsMobileCardInlineFileComponent, DsMobileChatModalComponent, DsMobileChatModalService, DsMobileActionsBottomSheetComponent as DsMobileCommentActionsBottomSheetComponent, DsMobileCommentComponent, DsMobileConfirmationSheetComponent, DsMobileContactListItemComponent, DsMobileContentComponent, DsMobileDropdownComponent, DsMobileEmptyStateComponent, DsMobileFabComponent, DsMobileFacilityCreationConfirmationWrapperComponent, DsMobileFacilityCreationModalComponent, DsMobileFacilityCreationModalService, DsMobileFacilityDetailModalComponent, DsMobileFacilityDetailModalService, DsMobileFileAttachmentComponent, DsMobileHandbookDetailModalComponent, DsMobileHandbookDetailModalService, DsMobileHandbookFolderComponent, DsMobileHandbookFolderMiniComponent, DsMobileHeaderContentComponent, DsMobileHeaderContentTileComponent, DsMobileIllustrationComponent, DsMobileInlinePhotoComponent, DsMobileInlineTabsComponent, DsMobileInteractiveListItemBookingComponent, DsMobileInteractiveListItemInquiryComponent, DsMobileInteractiveListItemMessageComponent, DsMobileInteractiveListItemPostComponent, DsMobileLightboxImageComponent as DsMobileLightboxComponent, DsMobileLightboxFooterComponent, DsMobileLightboxHeaderComponent, DsMobileLightboxImageComponent, DsMobileLightboxPdfComponent, DsMobileLightboxService, DsMobileListItemComponent, DsMobileListItemStaticComponent, DsMobileLoaderOverlayComponent, DsMobileLongPressDirective, DsMobileMediaActionsPanelComponent, DsMobileMessageBubbleComponent, DsMobileMessageComposerComponent, DsMobileModalBaseComponent, DsMobileModalService, DsMobileNewInquiryModalComponent, DsMobileNewInquiryModalService, DsMobileOfflineBannerComponent, DsMobilePageDetailsComponent, DsMobilePageMainComponent, DsMobileActionsBottomSheetComponent as DsMobilePostActionsBottomSheetComponent, DsMobilePostComposerComponent, DsMobilePostCreateBottomSheetComponent, DsMobilePostDetailModalComponent, DsMobilePostDetailModalService, DsMobilePriceSheetComponent, DsMobileProfileActionsSheetComponent, DsMobilePropertyBannerComponent, DsMobileSectionComponent, DsMobileSwiperComponent, DsMobileSwiperWithNavComponent, DsMobileSystemMessageBannerComponent, DsMobileTabBarComponent, DsMobileTabsComponent, DsMobileWhenCanBookSheetComponent, DsMobileWhoCanBookSheetComponent, DsTextInputComponent, FamilyAccessPageComponent, FamilyAccessService, InviteSuccessPageComponent, MediaPickerService, MobileBookingPageComponent, MobileCommunityPageComponent, MobileHandbookPageComponent, MobileHomePageComponent, MobileInquiriesPageComponent, MobileInquiryDetailPageComponent, MobileModalBase, MobilePageBase, MobilePostDetailPageComponent, MobileTabsExampleComponent, PageLoadingService, PostActionsComponent, PostAttachmentsComponent, PostContentComponent, PostCreatePageComponent, PostMediaComponent, PostPdfAttachmentComponent, PostTextComponent, PostsService, SectionHeaderComponent, SignInPageComponent, SignInToAcceptPageComponent, TileContentComponent, TileIconComponent, TileLabelComponent, TileValueComponent, TrackingPermissionService, UserService, WhitelabelDemoModalComponent, WhitelabelDemoModalService, WhitelabelService, customBackTransition, customPageTransition };
|
|
8514
|
+
export type { ActionGroup, ActionItem, ActionResult, AppIconSize, AttachmentData, AttachmentFileType, AttachmentItem, AvatarSize, AvatarType, BadgePosition, BookingModalOptions, BookingResult, BottomSheetOptions, ChatAttachment, ChatMessage, ChatModalData, ChatParticipant, Comment, ActionResult as CommentActionResult, CommentData, ContactItem, ContactType, ContentWidth, DateOption, DropdownAlign, DropdownPosition, DsMobileDropdownItem, FacilityCreationModalOptions, FacilityDetailData, FamilyInvite, FamilyMember, FamilyMemberStatus, HandbookDetailData, HandbookItem, InlineTabItem, InquiryPhoto, Language, LightboxAuthor, LightboxImage, LightboxImageOptions, LightboxMediaFile, LightboxMediaType, LightboxOptions, LightboxPdf, LightboxPdfOptions, LoadingPhase, LogoSize, LogoVariant, MediaPickerResult, ModalOptions, NetworkStatus, NewFacilityData, NewInquiryData, NewInquiryModalOptions, Post, ActionResult as PostActionResult, PostDetailData, TabConfig, TimeSlot, WhitelabelConfig };
|