@propbinder/mobile-design 0.2.57 → 0.2.62
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 +11279 -9513
- package/fesm2022/propbinder-mobile-design.mjs.map +1 -1
- package/index.d.ts +338 -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
|
*/
|
|
@@ -4519,6 +4611,7 @@ declare class DsMobileModalService {
|
|
|
4519
4611
|
*/
|
|
4520
4612
|
declare abstract class MobileModalBase implements OnInit, OnDestroy {
|
|
4521
4613
|
protected modalController: ModalController;
|
|
4614
|
+
private platform;
|
|
4522
4615
|
/**
|
|
4523
4616
|
* Reference to IonContent for accessing scroll element
|
|
4524
4617
|
*/
|
|
@@ -5313,9 +5406,13 @@ declare class DsMobileCardInlineContactComponent {
|
|
|
5313
5406
|
*/
|
|
5314
5407
|
name: _angular_core.InputSignal<string>;
|
|
5315
5408
|
/**
|
|
5316
|
-
* Avatar initials (usually 1-2 letters)
|
|
5409
|
+
* Avatar initials (usually 1-2 letters). Not needed when imageUrl is provided.
|
|
5317
5410
|
*/
|
|
5318
5411
|
initials: _angular_core.InputSignal<string>;
|
|
5412
|
+
/**
|
|
5413
|
+
* Image URL for the leading slot. When provided, renders an image instead of initials avatar.
|
|
5414
|
+
*/
|
|
5415
|
+
imageUrl: _angular_core.InputSignal<string>;
|
|
5319
5416
|
/**
|
|
5320
5417
|
* Contact person name (optional)
|
|
5321
5418
|
*/
|
|
@@ -5338,13 +5435,21 @@ declare class DsMobileCardInlineContactComponent {
|
|
|
5338
5435
|
* Whether to show chevron icon
|
|
5339
5436
|
*/
|
|
5340
5437
|
showChevron: _angular_core.InputSignal<boolean>;
|
|
5438
|
+
/**
|
|
5439
|
+
* Whether to show an edit button in the trailing slot
|
|
5440
|
+
*/
|
|
5441
|
+
showEditButton: _angular_core.InputSignal<boolean>;
|
|
5341
5442
|
/**
|
|
5342
5443
|
* Emits when the contact item is clicked (if clickable)
|
|
5343
5444
|
*/
|
|
5344
5445
|
contactClick: _angular_core.OutputEmitterRef<void>;
|
|
5446
|
+
/**
|
|
5447
|
+
* Emits when the edit button is clicked
|
|
5448
|
+
*/
|
|
5449
|
+
editClick: _angular_core.OutputEmitterRef<void>;
|
|
5345
5450
|
handleContactClick(): void;
|
|
5346
5451
|
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>;
|
|
5452
|
+
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
5453
|
}
|
|
5349
5454
|
|
|
5350
5455
|
/**
|
|
@@ -5847,6 +5952,8 @@ interface NewInquiryData {
|
|
|
5847
5952
|
*/
|
|
5848
5953
|
declare class DsMobileNewInquiryModalComponent implements OnInit, AfterViewInit {
|
|
5849
5954
|
private modalController;
|
|
5955
|
+
private mediaPicker;
|
|
5956
|
+
readonly isNative: boolean;
|
|
5850
5957
|
titleInputRef?: ElementRef<HTMLElement>;
|
|
5851
5958
|
descriptionInputRef?: ElementRef<HTMLElement>;
|
|
5852
5959
|
titleInput?: DsTextareaComponent;
|
|
@@ -5887,6 +5994,12 @@ declare class DsMobileNewInquiryModalComponent implements OnInit, AfterViewInit
|
|
|
5887
5994
|
* Attachments array (replaces photos)
|
|
5888
5995
|
*/
|
|
5889
5996
|
attachments: _angular_core.WritableSignal<AttachmentData[]>;
|
|
5997
|
+
private attachmentSnapshot;
|
|
5998
|
+
isAttachmentSectionExiting: _angular_core.WritableSignal<boolean>;
|
|
5999
|
+
exitingAttachmentIds: _angular_core.WritableSignal<Set<string>>;
|
|
6000
|
+
attachmentsForDisplay: _angular_core.Signal<AttachmentData[]>;
|
|
6001
|
+
showAttachmentSection: _angular_core.Signal<boolean>;
|
|
6002
|
+
attachmentSectionExpanded: _angular_core.Signal<boolean>;
|
|
5890
6003
|
/**
|
|
5891
6004
|
* Form validation state
|
|
5892
6005
|
*/
|
|
@@ -5918,25 +6031,27 @@ declare class DsMobileNewInquiryModalComponent implements OnInit, AfterViewInit
|
|
|
5918
6031
|
*/
|
|
5919
6032
|
validateForm(): void;
|
|
5920
6033
|
/**
|
|
5921
|
-
* Add a new photo from
|
|
6034
|
+
* Add a new photo from library
|
|
5922
6035
|
*/
|
|
5923
6036
|
addPhoto(): Promise<void>;
|
|
6037
|
+
/**
|
|
6038
|
+
* Take a photo using the device camera
|
|
6039
|
+
*/
|
|
6040
|
+
takePhoto(): Promise<void>;
|
|
5924
6041
|
/**
|
|
5925
6042
|
* Remove an attachment
|
|
5926
6043
|
*/
|
|
5927
6044
|
removeAttachment(attachmentId: string): void;
|
|
5928
6045
|
/**
|
|
5929
6046
|
* Handle attachment button click
|
|
6047
|
+
* On native: uses MediaPickerService. On web: triggers hidden file input.
|
|
5930
6048
|
*/
|
|
5931
|
-
handleAddAttachment(): void
|
|
6049
|
+
handleAddAttachment(): Promise<void>;
|
|
5932
6050
|
/**
|
|
5933
6051
|
* Detect file type from file name or mime type
|
|
6052
|
+
* @deprecated Use mediaPicker.detectFileType() for new code
|
|
5934
6053
|
*/
|
|
5935
6054
|
private detectFileType;
|
|
5936
|
-
/**
|
|
5937
|
-
* Format file size for display
|
|
5938
|
-
*/
|
|
5939
|
-
private formatFileSize;
|
|
5940
6055
|
/**
|
|
5941
6056
|
* Handle file selection from file input
|
|
5942
6057
|
*/
|
|
@@ -6281,6 +6396,8 @@ interface NewFacilityData {
|
|
|
6281
6396
|
declare class DsMobileFacilityCreationModalComponent implements OnInit, AfterViewInit {
|
|
6282
6397
|
private modalController;
|
|
6283
6398
|
private bottomSheetService;
|
|
6399
|
+
private mediaPicker;
|
|
6400
|
+
readonly isNative: boolean;
|
|
6284
6401
|
titleInputRef?: ElementRef<HTMLElement>;
|
|
6285
6402
|
descriptionInputRef?: ElementRef<HTMLElement>;
|
|
6286
6403
|
titleInput?: DsTextareaComponent;
|
|
@@ -6321,6 +6438,12 @@ declare class DsMobileFacilityCreationModalComponent implements OnInit, AfterVie
|
|
|
6321
6438
|
* Attachments array
|
|
6322
6439
|
*/
|
|
6323
6440
|
attachments: _angular_core.WritableSignal<AttachmentData[]>;
|
|
6441
|
+
private attachmentSnapshot;
|
|
6442
|
+
isAttachmentSectionExiting: _angular_core.WritableSignal<boolean>;
|
|
6443
|
+
exitingAttachmentIds: _angular_core.WritableSignal<Set<string>>;
|
|
6444
|
+
attachmentsForDisplay: _angular_core.Signal<AttachmentData[]>;
|
|
6445
|
+
showAttachmentSection: _angular_core.Signal<boolean>;
|
|
6446
|
+
attachmentSectionExpanded: _angular_core.Signal<boolean>;
|
|
6324
6447
|
/**
|
|
6325
6448
|
* Who can book signal
|
|
6326
6449
|
*/
|
|
@@ -6384,25 +6507,27 @@ declare class DsMobileFacilityCreationModalComponent implements OnInit, AfterVie
|
|
|
6384
6507
|
*/
|
|
6385
6508
|
openAccessSheet(): Promise<void>;
|
|
6386
6509
|
/**
|
|
6387
|
-
* Add a new photo from
|
|
6510
|
+
* Add a new photo from library
|
|
6388
6511
|
*/
|
|
6389
6512
|
addPhoto(): Promise<void>;
|
|
6513
|
+
/**
|
|
6514
|
+
* Take a photo using the device camera
|
|
6515
|
+
*/
|
|
6516
|
+
takePhoto(): Promise<void>;
|
|
6390
6517
|
/**
|
|
6391
6518
|
* Remove an attachment
|
|
6392
6519
|
*/
|
|
6393
6520
|
removeAttachment(attachmentId: string): void;
|
|
6394
6521
|
/**
|
|
6395
6522
|
* Handle attachment button click
|
|
6523
|
+
* On native: uses MediaPickerService. On web: triggers hidden file input.
|
|
6396
6524
|
*/
|
|
6397
|
-
handleAddAttachment(): void
|
|
6525
|
+
handleAddAttachment(): Promise<void>;
|
|
6398
6526
|
/**
|
|
6399
6527
|
* Detect file type from file name or mime type
|
|
6528
|
+
* @deprecated Use mediaPicker.detectFileType() for new code
|
|
6400
6529
|
*/
|
|
6401
6530
|
private detectFileType;
|
|
6402
|
-
/**
|
|
6403
|
-
* Format file size for display
|
|
6404
|
-
*/
|
|
6405
|
-
private formatFileSize;
|
|
6406
6531
|
/**
|
|
6407
6532
|
* Handle file selection from file input
|
|
6408
6533
|
*/
|
|
@@ -7229,6 +7354,7 @@ declare class DsMobileHandbookFolderMiniComponent {
|
|
|
7229
7354
|
*/
|
|
7230
7355
|
declare class DsTextInputComponent implements ControlValueAccessor {
|
|
7231
7356
|
type: _angular_core.InputSignal<"search" | "text" | "url" | "email" | "tel" | "password">;
|
|
7357
|
+
label: _angular_core.InputSignal<string>;
|
|
7232
7358
|
placeholder: _angular_core.InputSignal<string>;
|
|
7233
7359
|
disabled: _angular_core.InputSignal<boolean>;
|
|
7234
7360
|
readonly: _angular_core.InputSignal<boolean>;
|
|
@@ -7243,6 +7369,7 @@ declare class DsTextInputComponent implements ControlValueAccessor {
|
|
|
7243
7369
|
blur: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
7244
7370
|
focus: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
7245
7371
|
errorCleared: _angular_core.OutputEmitterRef<void>;
|
|
7372
|
+
private inputElRef;
|
|
7246
7373
|
private _value;
|
|
7247
7374
|
value: _angular_core.Signal<string>;
|
|
7248
7375
|
inputId: string;
|
|
@@ -7259,8 +7386,9 @@ declare class DsTextInputComponent implements ControlValueAccessor {
|
|
|
7259
7386
|
registerOnChange(fn: (value: string) => void): void;
|
|
7260
7387
|
registerOnTouched(fn: () => void): void;
|
|
7261
7388
|
setDisabledState(isDisabled: boolean): void;
|
|
7389
|
+
focusInput(): void;
|
|
7262
7390
|
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>;
|
|
7391
|
+
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
7392
|
}
|
|
7265
7393
|
|
|
7266
7394
|
/**
|
|
@@ -7517,7 +7645,7 @@ declare class DsMobileOfflineBannerComponent {
|
|
|
7517
7645
|
* Inlines SVG and uses CSS variables to adapt colors to your theme.
|
|
7518
7646
|
*
|
|
7519
7647
|
* **Features:**
|
|
7520
|
-
* - Predefined variants (post, inquiry) for common empty states
|
|
7648
|
+
* - Predefined variants (post, inquiry, family) for common empty states
|
|
7521
7649
|
* - Automatic color adaptation using CSS variables
|
|
7522
7650
|
* - Preserves all SVG details (textures, filters, gradients, shadows)
|
|
7523
7651
|
* - White radial gradient overlay for depth effect
|
|
@@ -7540,9 +7668,9 @@ declare class DsMobileIllustrationComponent {
|
|
|
7540
7668
|
private sanitizer;
|
|
7541
7669
|
/**
|
|
7542
7670
|
* Predefined illustration variant
|
|
7543
|
-
* Available variants: 'post', 'inquiry', 'confirmation'
|
|
7671
|
+
* Available variants: 'post', 'inquiry', 'confirmation', 'family'
|
|
7544
7672
|
*/
|
|
7545
|
-
variant: _angular_core.InputSignal<"post" | "inquiry" | "confirmation">;
|
|
7673
|
+
variant: _angular_core.InputSignal<"post" | "inquiry" | "confirmation" | "family">;
|
|
7546
7674
|
/**
|
|
7547
7675
|
* Illustration size (width and height)
|
|
7548
7676
|
* @default '120px'
|
|
@@ -7796,6 +7924,42 @@ declare class MobileHandbookPageComponent {
|
|
|
7796
7924
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileHandbookPageComponent, "app-mobile-handbook-page", never, {}, {}, never, never, true, never>;
|
|
7797
7925
|
}
|
|
7798
7926
|
|
|
7927
|
+
type LoadingPhase = 'loading' | 'exiting' | 'idle';
|
|
7928
|
+
/**
|
|
7929
|
+
* PageLoadingService
|
|
7930
|
+
*
|
|
7931
|
+
* Coordinates the three-phase full-screen loading state between a page
|
|
7932
|
+
* component (which knows when its data is ready) and the layout component
|
|
7933
|
+
* (which owns the tab bar and overlay rendering).
|
|
7934
|
+
*
|
|
7935
|
+
* Phase flow:
|
|
7936
|
+
* loading → (setLoading(false)) → exiting → (animationend) → idle
|
|
7937
|
+
*
|
|
7938
|
+
* Pages call setLoading(true/false) — the animation sequence is transparent
|
|
7939
|
+
* to callers. The layout listens to isExiting() and calls onExitComplete()
|
|
7940
|
+
* after the overlay's exit animation fires animationend.
|
|
7941
|
+
*/
|
|
7942
|
+
declare class PageLoadingService {
|
|
7943
|
+
readonly phase: _angular_core.WritableSignal<LoadingPhase>;
|
|
7944
|
+
readonly isLoading: _angular_core.Signal<boolean>;
|
|
7945
|
+
readonly isExiting: _angular_core.Signal<boolean>;
|
|
7946
|
+
/** True when any full-screen overlay should cover the tab bar */
|
|
7947
|
+
readonly isCoveringScreen: _angular_core.Signal<boolean>;
|
|
7948
|
+
readonly hasError: _angular_core.WritableSignal<boolean>;
|
|
7949
|
+
setLoading(value: boolean): void;
|
|
7950
|
+
/** Called by the layout when the overlay's exit animation completes */
|
|
7951
|
+
onExitComplete(): void;
|
|
7952
|
+
/**
|
|
7953
|
+
* True only during the window right after the loading overlay exits.
|
|
7954
|
+
* Used to gate homeReveal and logoSlideIn so they don't replay on
|
|
7955
|
+
* subsequent navigations back to the page.
|
|
7956
|
+
*/
|
|
7957
|
+
readonly isRevealAnimation: _angular_core.WritableSignal<boolean>;
|
|
7958
|
+
setError(): void;
|
|
7959
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageLoadingService, never>;
|
|
7960
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<PageLoadingService>;
|
|
7961
|
+
}
|
|
7962
|
+
|
|
7799
7963
|
declare class TrackingPermissionService {
|
|
7800
7964
|
private readonly trackingPromptRequestedKey;
|
|
7801
7965
|
private readonly platform;
|
|
@@ -7813,6 +7977,56 @@ declare class TrackingPermissionService {
|
|
|
7813
7977
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TrackingPermissionService>;
|
|
7814
7978
|
}
|
|
7815
7979
|
|
|
7980
|
+
type FamilyMemberStatus = 'active' | 'pending' | 'expired';
|
|
7981
|
+
type ContactType = 'email' | 'phone';
|
|
7982
|
+
interface FamilyMember {
|
|
7983
|
+
id: string;
|
|
7984
|
+
name: string;
|
|
7985
|
+
initials: string;
|
|
7986
|
+
email?: string;
|
|
7987
|
+
phone?: string;
|
|
7988
|
+
status: FamilyMemberStatus;
|
|
7989
|
+
expiresAt?: Date;
|
|
7990
|
+
invitedAt?: Date;
|
|
7991
|
+
}
|
|
7992
|
+
interface FamilyInvite {
|
|
7993
|
+
token: string;
|
|
7994
|
+
inviterName: string;
|
|
7995
|
+
inviterInitials: string;
|
|
7996
|
+
propertyAddress: string;
|
|
7997
|
+
propertyPhotoUrl: string;
|
|
7998
|
+
inviteeName: string;
|
|
7999
|
+
inviteeEmail: string;
|
|
8000
|
+
expiresAt: Date;
|
|
8001
|
+
status: 'pending' | 'accepted' | 'expired';
|
|
8002
|
+
}
|
|
8003
|
+
|
|
8004
|
+
declare class FamilyAccessService {
|
|
8005
|
+
readonly maxMembers = 2;
|
|
8006
|
+
readonly inviteExpiryHours = 72;
|
|
8007
|
+
private _members;
|
|
8008
|
+
private _isLoading;
|
|
8009
|
+
private _resendConfirmed;
|
|
8010
|
+
private _acceptedInviteContext;
|
|
8011
|
+
readonly members: _angular_core.Signal<FamilyMember[]>;
|
|
8012
|
+
readonly isLoading: _angular_core.Signal<boolean>;
|
|
8013
|
+
readonly resendConfirmed: _angular_core.Signal<string | null>;
|
|
8014
|
+
readonly isEmpty: _angular_core.Signal<boolean>;
|
|
8015
|
+
readonly hasReachedLimit: _angular_core.Signal<boolean>;
|
|
8016
|
+
readonly acceptedInviteContext: _angular_core.Signal<FamilyInvite | null>;
|
|
8017
|
+
loadMembers(): Promise<void>;
|
|
8018
|
+
inviteMember(name: string, contact: string, type: ContactType): Promise<void>;
|
|
8019
|
+
removeMember(memberId: string): Promise<void>;
|
|
8020
|
+
revokeInvite(memberId: string): Promise<void>;
|
|
8021
|
+
resendInvite(memberId: string): Promise<void>;
|
|
8022
|
+
loadInvite(token: string): Promise<FamilyInvite>;
|
|
8023
|
+
acceptInvite(token: string, invite: FamilyInvite): Promise<void>;
|
|
8024
|
+
clearAcceptedInviteContext(): void;
|
|
8025
|
+
requestNewInvite(token: string): Promise<void>;
|
|
8026
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FamilyAccessService, never>;
|
|
8027
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FamilyAccessService>;
|
|
8028
|
+
}
|
|
8029
|
+
|
|
7816
8030
|
declare class MobileHomePageComponent implements OnInit {
|
|
7817
8031
|
private router;
|
|
7818
8032
|
userService: UserService;
|
|
@@ -7820,7 +8034,9 @@ declare class MobileHomePageComponent implements OnInit {
|
|
|
7820
8034
|
private postModal;
|
|
7821
8035
|
private trackingPermissionService;
|
|
7822
8036
|
private bottomSheet;
|
|
8037
|
+
familyAccessService: FamilyAccessService;
|
|
7823
8038
|
pageComponent: DsMobilePageMainComponent;
|
|
8039
|
+
protected pageLoading: PageLoadingService;
|
|
7824
8040
|
recentPosts: _angular_core.Signal<_propbinder_mobile_design.Post[]>;
|
|
7825
8041
|
private allInquiries;
|
|
7826
8042
|
openInquiries: _angular_core.Signal<{
|
|
@@ -7830,8 +8046,9 @@ declare class MobileHomePageComponent implements OnInit {
|
|
|
7830
8046
|
status: "open";
|
|
7831
8047
|
timestamp: string;
|
|
7832
8048
|
}[]>;
|
|
7833
|
-
constructor(router: Router, userService: UserService, postsService: PostsService, postModal: DsMobilePostDetailModalService, trackingPermissionService: TrackingPermissionService, bottomSheet: DsMobileBottomSheetService);
|
|
8049
|
+
constructor(router: Router, userService: UserService, postsService: PostsService, postModal: DsMobilePostDetailModalService, trackingPermissionService: TrackingPermissionService, bottomSheet: DsMobileBottomSheetService, familyAccessService: FamilyAccessService);
|
|
7834
8050
|
ngOnInit(): void;
|
|
8051
|
+
private simulateLoad;
|
|
7835
8052
|
handleRefresh(event: any): void;
|
|
7836
8053
|
openPost(postId: string, focusComment?: boolean): Promise<void>;
|
|
7837
8054
|
openInquiryDetail(inquiryId: string): void;
|
|
@@ -7923,10 +8140,12 @@ declare class MobileInquiryDetailPageComponent {
|
|
|
7923
8140
|
declare class MobileTabsExampleComponent implements OnInit {
|
|
7924
8141
|
userService: UserService;
|
|
7925
8142
|
private router;
|
|
8143
|
+
private navCtrl;
|
|
7926
8144
|
private whitelabelDemoModal;
|
|
7927
8145
|
private trackingPermissionService;
|
|
8146
|
+
readonly pageLoading: PageLoadingService;
|
|
7928
8147
|
private trackedProfileMenuItems;
|
|
7929
|
-
constructor(userService: UserService, router: Router);
|
|
8148
|
+
constructor(userService: UserService, router: Router, navCtrl: NavController);
|
|
7930
8149
|
ngOnInit(): void;
|
|
7931
8150
|
tabs: TabConfig[];
|
|
7932
8151
|
/**
|
|
@@ -7945,6 +8164,8 @@ declare class MobileTabsExampleComponent implements OnInit {
|
|
|
7945
8164
|
* Mobile actions are handled globally in AppComponent via UserService.
|
|
7946
8165
|
*/
|
|
7947
8166
|
handleProfileAction(result: ActionResult): void;
|
|
8167
|
+
/** Called by the error overlay retry button — clears error and re-navigates to home */
|
|
8168
|
+
handleRetry(): void;
|
|
7948
8169
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileTabsExampleComponent, never>;
|
|
7949
8170
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileTabsExampleComponent, "app-mobile-tabs-example", never, {}, {}, never, never, true, never>;
|
|
7950
8171
|
}
|
|
@@ -8089,6 +8310,59 @@ declare class SignInPageComponent implements AfterViewInit, OnDestroy {
|
|
|
8089
8310
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SignInPageComponent, "app-sign-in", never, {}, {}, never, never, true, never>;
|
|
8090
8311
|
}
|
|
8091
8312
|
|
|
8313
|
+
declare class FamilyAccessPageComponent implements OnInit {
|
|
8314
|
+
readonly service: FamilyAccessService;
|
|
8315
|
+
private bottomSheet;
|
|
8316
|
+
toastMessage: _angular_core.WritableSignal<string | null>;
|
|
8317
|
+
ngOnInit(): void;
|
|
8318
|
+
showToast(message: string): void;
|
|
8319
|
+
statusLabel(member: FamilyMember): string;
|
|
8320
|
+
handleResend(member: FamilyMember): Promise<void>;
|
|
8321
|
+
confirmRevoke(member: FamilyMember): Promise<void>;
|
|
8322
|
+
openMemberActions(member: FamilyMember): Promise<void>;
|
|
8323
|
+
openInviteSheet(): Promise<void>;
|
|
8324
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FamilyAccessPageComponent, never>;
|
|
8325
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FamilyAccessPageComponent, "app-family-access-page", never, {}, {}, never, never, true, never>;
|
|
8326
|
+
}
|
|
8327
|
+
|
|
8328
|
+
declare class AcceptInvitePageComponent implements OnInit {
|
|
8329
|
+
private route;
|
|
8330
|
+
private router;
|
|
8331
|
+
private familyAccessService;
|
|
8332
|
+
isLoading: _angular_core.WritableSignal<boolean>;
|
|
8333
|
+
isAccepting: _angular_core.WritableSignal<boolean>;
|
|
8334
|
+
isRequesting: _angular_core.WritableSignal<boolean>;
|
|
8335
|
+
requestSent: _angular_core.WritableSignal<boolean>;
|
|
8336
|
+
invite: _angular_core.WritableSignal<FamilyInvite | null>;
|
|
8337
|
+
isExpired: _angular_core.Signal<boolean>;
|
|
8338
|
+
pageTitle: _angular_core.Signal<string>;
|
|
8339
|
+
ngOnInit(): Promise<void>;
|
|
8340
|
+
accept(): Promise<void>;
|
|
8341
|
+
requestResend(): Promise<void>;
|
|
8342
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AcceptInvitePageComponent, never>;
|
|
8343
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AcceptInvitePageComponent, "app-accept-invite-page", never, {}, {}, never, never, true, never>;
|
|
8344
|
+
}
|
|
8345
|
+
|
|
8346
|
+
declare class CreateAccountPageComponent {
|
|
8347
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CreateAccountPageComponent, never>;
|
|
8348
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CreateAccountPageComponent, "app-create-account-page", never, {}, {}, never, never, true, never>;
|
|
8349
|
+
}
|
|
8350
|
+
|
|
8351
|
+
declare class AvatarUploadPageComponent {
|
|
8352
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarUploadPageComponent, never>;
|
|
8353
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarUploadPageComponent, "app-avatar-upload-page", never, {}, {}, never, never, true, never>;
|
|
8354
|
+
}
|
|
8355
|
+
|
|
8356
|
+
declare class InviteSuccessPageComponent {
|
|
8357
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InviteSuccessPageComponent, never>;
|
|
8358
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InviteSuccessPageComponent, "app-invite-success-page", never, {}, {}, never, never, true, never>;
|
|
8359
|
+
}
|
|
8360
|
+
|
|
8361
|
+
declare class SignInToAcceptPageComponent {
|
|
8362
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SignInToAcceptPageComponent, never>;
|
|
8363
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SignInToAcceptPageComponent, "app-sign-in-to-accept-page", never, {}, {}, never, never, true, never>;
|
|
8364
|
+
}
|
|
8365
|
+
|
|
8092
8366
|
/**
|
|
8093
8367
|
* Whitelabel Demo Modal Component
|
|
8094
8368
|
*
|
|
@@ -8202,5 +8476,40 @@ declare const customPageTransition: (_: HTMLElement, opts: any) => Animation;
|
|
|
8202
8476
|
*/
|
|
8203
8477
|
declare const customBackTransition: (_: HTMLElement, opts: any) => Animation;
|
|
8204
8478
|
|
|
8205
|
-
|
|
8206
|
-
|
|
8479
|
+
interface MediaPickerResult {
|
|
8480
|
+
attachments: AttachmentData[];
|
|
8481
|
+
}
|
|
8482
|
+
declare class MediaPickerService {
|
|
8483
|
+
/**
|
|
8484
|
+
* Opens the native photo library picker (multi-select, up to `limit` items).
|
|
8485
|
+
* Uses @capawesome/capacitor-file-picker which maps to the Android Photo Picker
|
|
8486
|
+
* on API 33+ and UIImagePickerController/PHPickerViewController on iOS.
|
|
8487
|
+
* No runtime permission required on Android 13+.
|
|
8488
|
+
*/
|
|
8489
|
+
pickFromLibrary(limit?: number): Promise<MediaPickerResult>;
|
|
8490
|
+
/**
|
|
8491
|
+
* Opens the device camera directly.
|
|
8492
|
+
*
|
|
8493
|
+
* iOS: triggers NSCameraUsageDescription permission dialog on first use
|
|
8494
|
+
* (privacy string already set in Info.plist).
|
|
8495
|
+
* Android: launches the stock Camera app as a separate Activity —
|
|
8496
|
+
* no CAMERA permission needed in AndroidManifest.xml.
|
|
8497
|
+
*
|
|
8498
|
+
* Returns a single image (camera is always single-shot).
|
|
8499
|
+
*/
|
|
8500
|
+
takePhoto(): Promise<MediaPickerResult>;
|
|
8501
|
+
/**
|
|
8502
|
+
* Opens the system file picker for documents.
|
|
8503
|
+
* On native, uses FilePicker.pickFiles() with broad MIME types.
|
|
8504
|
+
* On web, returns empty — the caller is responsible for triggering
|
|
8505
|
+
* a hidden <input type="file"> in that case.
|
|
8506
|
+
*/
|
|
8507
|
+
pickFiles(limit?: number): Promise<MediaPickerResult>;
|
|
8508
|
+
formatFileSize(bytes: number): string;
|
|
8509
|
+
detectFileType(fileName: string): AttachmentData['type'];
|
|
8510
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MediaPickerService, never>;
|
|
8511
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<MediaPickerService>;
|
|
8512
|
+
}
|
|
8513
|
+
|
|
8514
|
+
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 };
|
|
8515
|
+
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 };
|