@propbinder/mobile-design 0.2.56 → 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 +11270 -9515
- package/fesm2022/propbinder-mobile-design.mjs.map +1 -1
- package/index.d.ts +341 -31
- 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 {
|
|
@@ -918,7 +944,7 @@ declare class WhitelabelService {
|
|
|
918
944
|
readonly logoUrl: _angular_core.Signal<string>;
|
|
919
945
|
readonly logoMarkUrl: _angular_core.Signal<string>;
|
|
920
946
|
readonly logoAlt: _angular_core.Signal<string>;
|
|
921
|
-
readonly logoSize: _angular_core.Signal<"
|
|
947
|
+
readonly logoSize: _angular_core.Signal<"sm" | "md" | "lg" | "xl">;
|
|
922
948
|
readonly logoHeight: _angular_core.Signal<number>;
|
|
923
949
|
readonly appIconSurface: _angular_core.Signal<string>;
|
|
924
950
|
readonly appIconContent: _angular_core.Signal<string>;
|
|
@@ -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
|
*/
|
|
@@ -6705,6 +6829,8 @@ interface FacilityDetailData {
|
|
|
6705
6829
|
availableTimeSlots?: Record<string, TimeSlot[]>;
|
|
6706
6830
|
/** Fallback to mock data for testing */
|
|
6707
6831
|
useMockData?: boolean;
|
|
6832
|
+
/** Callback executed when booking is confirmed */
|
|
6833
|
+
onSubmit?: (result: BookingResult) => Promise<void>;
|
|
6708
6834
|
}
|
|
6709
6835
|
/**
|
|
6710
6836
|
* DsMobileFacilityDetailModalComponent
|
|
@@ -7227,6 +7353,7 @@ declare class DsMobileHandbookFolderMiniComponent {
|
|
|
7227
7353
|
*/
|
|
7228
7354
|
declare class DsTextInputComponent implements ControlValueAccessor {
|
|
7229
7355
|
type: _angular_core.InputSignal<"search" | "text" | "url" | "email" | "tel" | "password">;
|
|
7356
|
+
label: _angular_core.InputSignal<string>;
|
|
7230
7357
|
placeholder: _angular_core.InputSignal<string>;
|
|
7231
7358
|
disabled: _angular_core.InputSignal<boolean>;
|
|
7232
7359
|
readonly: _angular_core.InputSignal<boolean>;
|
|
@@ -7241,6 +7368,7 @@ declare class DsTextInputComponent implements ControlValueAccessor {
|
|
|
7241
7368
|
blur: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
7242
7369
|
focus: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
7243
7370
|
errorCleared: _angular_core.OutputEmitterRef<void>;
|
|
7371
|
+
private inputElRef;
|
|
7244
7372
|
private _value;
|
|
7245
7373
|
value: _angular_core.Signal<string>;
|
|
7246
7374
|
inputId: string;
|
|
@@ -7257,8 +7385,9 @@ declare class DsTextInputComponent implements ControlValueAccessor {
|
|
|
7257
7385
|
registerOnChange(fn: (value: string) => void): void;
|
|
7258
7386
|
registerOnTouched(fn: () => void): void;
|
|
7259
7387
|
setDisabledState(isDisabled: boolean): void;
|
|
7388
|
+
focusInput(): void;
|
|
7260
7389
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsTextInputComponent, never>;
|
|
7261
|
-
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>;
|
|
7262
7391
|
}
|
|
7263
7392
|
|
|
7264
7393
|
/**
|
|
@@ -7305,7 +7434,7 @@ declare class DsMobileFabComponent implements AfterViewInit, OnDestroy {
|
|
|
7305
7434
|
* Note: FAB is always 56px circular, but this affects the icon size
|
|
7306
7435
|
* @default 'md'
|
|
7307
7436
|
*/
|
|
7308
|
-
size: _angular_core.InputSignal<"
|
|
7437
|
+
size: _angular_core.InputSignal<"sm" | "md" | "lg">;
|
|
7309
7438
|
/**
|
|
7310
7439
|
* ARIA label for accessibility
|
|
7311
7440
|
* @required - Always provide a descriptive label
|
|
@@ -7515,7 +7644,7 @@ declare class DsMobileOfflineBannerComponent {
|
|
|
7515
7644
|
* Inlines SVG and uses CSS variables to adapt colors to your theme.
|
|
7516
7645
|
*
|
|
7517
7646
|
* **Features:**
|
|
7518
|
-
* - Predefined variants (post, inquiry) for common empty states
|
|
7647
|
+
* - Predefined variants (post, inquiry, family) for common empty states
|
|
7519
7648
|
* - Automatic color adaptation using CSS variables
|
|
7520
7649
|
* - Preserves all SVG details (textures, filters, gradients, shadows)
|
|
7521
7650
|
* - White radial gradient overlay for depth effect
|
|
@@ -7538,9 +7667,9 @@ declare class DsMobileIllustrationComponent {
|
|
|
7538
7667
|
private sanitizer;
|
|
7539
7668
|
/**
|
|
7540
7669
|
* Predefined illustration variant
|
|
7541
|
-
* Available variants: 'post', 'inquiry', 'confirmation'
|
|
7670
|
+
* Available variants: 'post', 'inquiry', 'confirmation', 'family'
|
|
7542
7671
|
*/
|
|
7543
|
-
variant: _angular_core.InputSignal<"post" | "inquiry" | "confirmation">;
|
|
7672
|
+
variant: _angular_core.InputSignal<"post" | "inquiry" | "confirmation" | "family">;
|
|
7544
7673
|
/**
|
|
7545
7674
|
* Illustration size (width and height)
|
|
7546
7675
|
* @default '120px'
|
|
@@ -7794,6 +7923,42 @@ declare class MobileHandbookPageComponent {
|
|
|
7794
7923
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileHandbookPageComponent, "app-mobile-handbook-page", never, {}, {}, never, never, true, never>;
|
|
7795
7924
|
}
|
|
7796
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
|
+
|
|
7797
7962
|
declare class TrackingPermissionService {
|
|
7798
7963
|
private readonly trackingPromptRequestedKey;
|
|
7799
7964
|
private readonly platform;
|
|
@@ -7811,6 +7976,56 @@ declare class TrackingPermissionService {
|
|
|
7811
7976
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TrackingPermissionService>;
|
|
7812
7977
|
}
|
|
7813
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
|
+
|
|
7814
8029
|
declare class MobileHomePageComponent implements OnInit {
|
|
7815
8030
|
private router;
|
|
7816
8031
|
userService: UserService;
|
|
@@ -7818,7 +8033,9 @@ declare class MobileHomePageComponent implements OnInit {
|
|
|
7818
8033
|
private postModal;
|
|
7819
8034
|
private trackingPermissionService;
|
|
7820
8035
|
private bottomSheet;
|
|
8036
|
+
familyAccessService: FamilyAccessService;
|
|
7821
8037
|
pageComponent: DsMobilePageMainComponent;
|
|
8038
|
+
protected pageLoading: PageLoadingService;
|
|
7822
8039
|
recentPosts: _angular_core.Signal<_propbinder_mobile_design.Post[]>;
|
|
7823
8040
|
private allInquiries;
|
|
7824
8041
|
openInquiries: _angular_core.Signal<{
|
|
@@ -7828,8 +8045,9 @@ declare class MobileHomePageComponent implements OnInit {
|
|
|
7828
8045
|
status: "open";
|
|
7829
8046
|
timestamp: string;
|
|
7830
8047
|
}[]>;
|
|
7831
|
-
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);
|
|
7832
8049
|
ngOnInit(): void;
|
|
8050
|
+
private simulateLoad;
|
|
7833
8051
|
handleRefresh(event: any): void;
|
|
7834
8052
|
openPost(postId: string, focusComment?: boolean): Promise<void>;
|
|
7835
8053
|
openInquiryDetail(inquiryId: string): void;
|
|
@@ -7921,10 +8139,12 @@ declare class MobileInquiryDetailPageComponent {
|
|
|
7921
8139
|
declare class MobileTabsExampleComponent implements OnInit {
|
|
7922
8140
|
userService: UserService;
|
|
7923
8141
|
private router;
|
|
8142
|
+
private navCtrl;
|
|
7924
8143
|
private whitelabelDemoModal;
|
|
7925
8144
|
private trackingPermissionService;
|
|
8145
|
+
readonly pageLoading: PageLoadingService;
|
|
7926
8146
|
private trackedProfileMenuItems;
|
|
7927
|
-
constructor(userService: UserService, router: Router);
|
|
8147
|
+
constructor(userService: UserService, router: Router, navCtrl: NavController);
|
|
7928
8148
|
ngOnInit(): void;
|
|
7929
8149
|
tabs: TabConfig[];
|
|
7930
8150
|
/**
|
|
@@ -7943,6 +8163,8 @@ declare class MobileTabsExampleComponent implements OnInit {
|
|
|
7943
8163
|
* Mobile actions are handled globally in AppComponent via UserService.
|
|
7944
8164
|
*/
|
|
7945
8165
|
handleProfileAction(result: ActionResult): void;
|
|
8166
|
+
/** Called by the error overlay retry button — clears error and re-navigates to home */
|
|
8167
|
+
handleRetry(): void;
|
|
7946
8168
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileTabsExampleComponent, never>;
|
|
7947
8169
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileTabsExampleComponent, "app-mobile-tabs-example", never, {}, {}, never, never, true, never>;
|
|
7948
8170
|
}
|
|
@@ -8087,6 +8309,59 @@ declare class SignInPageComponent implements AfterViewInit, OnDestroy {
|
|
|
8087
8309
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SignInPageComponent, "app-sign-in", never, {}, {}, never, never, true, never>;
|
|
8088
8310
|
}
|
|
8089
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
|
+
|
|
8090
8365
|
/**
|
|
8091
8366
|
* Whitelabel Demo Modal Component
|
|
8092
8367
|
*
|
|
@@ -8200,5 +8475,40 @@ declare const customPageTransition: (_: HTMLElement, opts: any) => Animation;
|
|
|
8200
8475
|
*/
|
|
8201
8476
|
declare const customBackTransition: (_: HTMLElement, opts: any) => Animation;
|
|
8202
8477
|
|
|
8203
|
-
|
|
8204
|
-
|
|
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 };
|