@propbinder/mobile-design 0.2.37 → 0.2.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/propbinder-mobile-design.mjs +725 -331
- package/fesm2022/propbinder-mobile-design.mjs.map +1 -1
- package/index.d.ts +112 -14
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
|
|
9
9
|
import { Router, ActivatedRoute } from '@angular/router';
|
|
10
10
|
import * as rxjs from 'rxjs';
|
|
11
11
|
import * as _propbinder_mobile_design from '@propbinder/mobile-design';
|
|
12
|
+
import { AppTrackingStatus } from 'capacitor-plugin-app-tracking-transparency';
|
|
12
13
|
import { Animation } from '@ionic/angular';
|
|
13
14
|
|
|
14
15
|
/**
|
|
@@ -910,7 +911,7 @@ declare class WhitelabelService {
|
|
|
910
911
|
readonly logoUrl: _angular_core.Signal<string>;
|
|
911
912
|
readonly logoMarkUrl: _angular_core.Signal<string>;
|
|
912
913
|
readonly logoAlt: _angular_core.Signal<string>;
|
|
913
|
-
readonly logoSize: _angular_core.Signal<"
|
|
914
|
+
readonly logoSize: _angular_core.Signal<"md" | "sm" | "lg" | "xl">;
|
|
914
915
|
readonly logoHeight: _angular_core.Signal<number>;
|
|
915
916
|
readonly appIconSurface: _angular_core.Signal<string>;
|
|
916
917
|
readonly appIconContent: _angular_core.Signal<string>;
|
|
@@ -1291,7 +1292,7 @@ declare class DsMobileSectionComponent {
|
|
|
1291
1292
|
*/
|
|
1292
1293
|
handleLinkClick(): void;
|
|
1293
1294
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileSectionComponent, never>;
|
|
1294
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileSectionComponent, "ds-mobile-section", never, { "headline": { "alias": "headline"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "linkText": { "alias": "linkText"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "contentGap": { "alias": "contentGap"; "required": false; "isSignal": true; }; "showBorder": { "alias": "showBorder"; "required": false; "isSignal": true; }; "overflow": { "alias": "overflow"; "required": false; "isSignal": true; }; }, { "linkClick": "linkClick"; }, never, ["*"], true, never>;
|
|
1295
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileSectionComponent, "ds-mobile-section", never, { "headline": { "alias": "headline"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "linkText": { "alias": "linkText"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "contentGap": { "alias": "contentGap"; "required": false; "isSignal": true; }; "showBorder": { "alias": "showBorder"; "required": false; "isSignal": true; }; "overflow": { "alias": "overflow"; "required": false; "isSignal": true; }; }, { "linkClick": "linkClick"; }, never, ["[header-action]", "*"], true, never>;
|
|
1295
1296
|
}
|
|
1296
1297
|
|
|
1297
1298
|
/**
|
|
@@ -1862,9 +1863,15 @@ declare class DsMobileDropdownComponent {
|
|
|
1862
1863
|
private elementRef;
|
|
1863
1864
|
constructor();
|
|
1864
1865
|
/**
|
|
1865
|
-
* Content projection for custom item template
|
|
1866
|
+
* Content projection for custom item template (per-item renderer)
|
|
1866
1867
|
*/
|
|
1867
1868
|
customItemTemplate?: TemplateRef<any>;
|
|
1869
|
+
/**
|
|
1870
|
+
* Content projection for fully custom popover content.
|
|
1871
|
+
* When provided, the item list is bypassed entirely and this template
|
|
1872
|
+
* is rendered directly inside the popover — use for pickers, forms, etc.
|
|
1873
|
+
*/
|
|
1874
|
+
customContent?: TemplateRef<any>;
|
|
1868
1875
|
/**
|
|
1869
1876
|
* Optional trigger element ID for Ionic Popover positioning
|
|
1870
1877
|
*/
|
|
@@ -1875,7 +1882,8 @@ declare class DsMobileDropdownComponent {
|
|
|
1875
1882
|
*/
|
|
1876
1883
|
keepFocusOn: _angular_core.InputSignal<ElementRef<any> | undefined>;
|
|
1877
1884
|
/**
|
|
1878
|
-
* Array of dropdown items to display
|
|
1885
|
+
* Array of dropdown items to display.
|
|
1886
|
+
* Not required when using the #customContent slot.
|
|
1879
1887
|
*/
|
|
1880
1888
|
items: _angular_core.InputSignal<DsMobileDropdownItem[]>;
|
|
1881
1889
|
/**
|
|
@@ -1906,6 +1914,12 @@ declare class DsMobileDropdownComponent {
|
|
|
1906
1914
|
* ARIA label for the dropdown menu
|
|
1907
1915
|
*/
|
|
1908
1916
|
ariaLabel: _angular_core.InputSignal<string>;
|
|
1917
|
+
/**
|
|
1918
|
+
* Maximum width of the popover.
|
|
1919
|
+
* Defaults to '192px' (standard dropdown width).
|
|
1920
|
+
* Override when using #customContent that requires more space (e.g. '280px' for a picker).
|
|
1921
|
+
*/
|
|
1922
|
+
maxWidth: _angular_core.InputSignal<string>;
|
|
1909
1923
|
/**
|
|
1910
1924
|
* Emits when an item is selected
|
|
1911
1925
|
*/
|
|
@@ -1922,7 +1936,7 @@ declare class DsMobileDropdownComponent {
|
|
|
1922
1936
|
* Computed offset Y for Ionic Popover
|
|
1923
1937
|
* Uses CSS variable for precise control
|
|
1924
1938
|
*/
|
|
1925
|
-
offsetY: _angular_core.Signal<"4px" | "
|
|
1939
|
+
offsetY: _angular_core.Signal<"-4px" | "4px">;
|
|
1926
1940
|
/**
|
|
1927
1941
|
* Computed offset X for Ionic Popover
|
|
1928
1942
|
* Negative value to shift left by trigger position + add 20px left margin
|
|
@@ -1937,7 +1951,7 @@ declare class DsMobileDropdownComponent {
|
|
|
1937
1951
|
*/
|
|
1938
1952
|
handleItemClick(item: DsMobileDropdownItem, event: MouseEvent): void;
|
|
1939
1953
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileDropdownComponent, never>;
|
|
1940
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileDropdownComponent, "ds-mobile-dropdown", never, { "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "keepFocusOn": { "alias": "keepFocusOn"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required":
|
|
1954
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileDropdownComponent, "ds-mobile-dropdown", never, { "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "keepFocusOn": { "alias": "keepFocusOn"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; }, { "itemSelected": "itemSelected"; "closed": "closed"; }, ["customItemTemplate", "customContent"], never, true, never>;
|
|
1941
1955
|
}
|
|
1942
1956
|
|
|
1943
1957
|
/**
|
|
@@ -2185,7 +2199,7 @@ declare class DsMobileMessageComposerComponent implements AfterViewInit, OnDestr
|
|
|
2185
2199
|
closeAttachmentMenu(event?: MouseEvent): void;
|
|
2186
2200
|
/**
|
|
2187
2201
|
* Handle add photo button click from menu
|
|
2188
|
-
* Uses
|
|
2202
|
+
* Uses Capawesome File Picker API to open photo library directly
|
|
2189
2203
|
* Allows multiple photo selection
|
|
2190
2204
|
*/
|
|
2191
2205
|
handleAddPhoto(event?: MouseEvent): Promise<void>;
|
|
@@ -3561,6 +3575,10 @@ declare class DsMobileSwiperComponent implements AfterViewInit, OnDestroy {
|
|
|
3561
3575
|
* Navigate to next slide
|
|
3562
3576
|
*/
|
|
3563
3577
|
slideNext(): void;
|
|
3578
|
+
/**
|
|
3579
|
+
* Navigate to a specific slide by index
|
|
3580
|
+
*/
|
|
3581
|
+
slideTo(index: number, speed?: number): void;
|
|
3564
3582
|
/**
|
|
3565
3583
|
* Check if at the beginning
|
|
3566
3584
|
*/
|
|
@@ -5953,6 +5971,11 @@ declare class DsMobileBookingModalComponent implements AfterViewInit {
|
|
|
5953
5971
|
private modalController;
|
|
5954
5972
|
facilityId: string;
|
|
5955
5973
|
facilityTitle: string;
|
|
5974
|
+
/**
|
|
5975
|
+
* Number of days ahead available for booking selection.
|
|
5976
|
+
* Defaults to 60 (2 months). Override via componentProps when opening the modal.
|
|
5977
|
+
*/
|
|
5978
|
+
daysAhead: number;
|
|
5956
5979
|
swiperComponent?: DsMobileSwiperComponent;
|
|
5957
5980
|
dateOptions: _angular_core.WritableSignal<DateOption[]>;
|
|
5958
5981
|
timeSlots: _angular_core.WritableSignal<TimeSlot[]>;
|
|
@@ -5965,6 +5988,20 @@ declare class DsMobileBookingModalComponent implements AfterViewInit {
|
|
|
5965
5988
|
* After view init - force swiper update to fix initial positioning
|
|
5966
5989
|
*/
|
|
5967
5990
|
ngAfterViewInit(): void;
|
|
5991
|
+
/**
|
|
5992
|
+
* Returns true if the given date should be disabled in both the swiper and the datepicker.
|
|
5993
|
+
* Weekends are disabled. Index-based mock disabling (i===3, i===7) is swiper-only and
|
|
5994
|
+
* not representable as a date rule, so it is intentionally excluded here.
|
|
5995
|
+
*/
|
|
5996
|
+
private isDateUnavailable;
|
|
5997
|
+
/**
|
|
5998
|
+
* Computed signal that returns a fresh disabled-date function whenever dateOptions()
|
|
5999
|
+
* changes. Returning a new function reference causes the datepicker's own isDateDisabled
|
|
6000
|
+
* input to update, which triggers its internal computed to re-run and re-render all
|
|
6001
|
+
* calendar cells with the correct disabled state.
|
|
6002
|
+
* The disabledSet is pre-built once per computation for O(1) per-cell lookups.
|
|
6003
|
+
*/
|
|
6004
|
+
dateDisabledFn: _angular_core.Signal<(date: Date) => boolean>;
|
|
5968
6005
|
/**
|
|
5969
6006
|
* Generate mock date and time data
|
|
5970
6007
|
*/
|
|
@@ -5981,6 +6018,11 @@ declare class DsMobileBookingModalComponent implements AfterViewInit {
|
|
|
5981
6018
|
* Handle time slot selection
|
|
5982
6019
|
*/
|
|
5983
6020
|
selectTime(selectedSlot: TimeSlot): void;
|
|
6021
|
+
/**
|
|
6022
|
+
* Called when the datepicker overlay emits a date selection.
|
|
6023
|
+
* Finds the matching DateOption in the swiper, selects it, and auto-scrolls to it.
|
|
6024
|
+
*/
|
|
6025
|
+
jumpToDate(date: Date | null): void;
|
|
5984
6026
|
/**
|
|
5985
6027
|
* Handle confirm button click
|
|
5986
6028
|
*/
|
|
@@ -5990,7 +6032,7 @@ declare class DsMobileBookingModalComponent implements AfterViewInit {
|
|
|
5990
6032
|
*/
|
|
5991
6033
|
handleClose(): Promise<void>;
|
|
5992
6034
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileBookingModalComponent, never>;
|
|
5993
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileBookingModalComponent, "ds-mobile-booking-modal", never, { "facilityId": { "alias": "facilityId"; "required": false; }; "facilityTitle": { "alias": "facilityTitle"; "required": false; }; }, {}, never, never, true, never>;
|
|
6035
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileBookingModalComponent, "ds-mobile-booking-modal", never, { "facilityId": { "alias": "facilityId"; "required": false; }; "facilityTitle": { "alias": "facilityTitle"; "required": false; }; "daysAhead": { "alias": "daysAhead"; "required": false; }; }, {}, never, never, true, never>;
|
|
5994
6036
|
}
|
|
5995
6037
|
|
|
5996
6038
|
/**
|
|
@@ -6017,9 +6059,10 @@ declare class DsMobileBookingModalService extends BaseModalService {
|
|
|
6017
6059
|
* @param facilityId The ID of the facility to book
|
|
6018
6060
|
* @param facilityTitle The display name of the facility
|
|
6019
6061
|
* @param facilityThumbnail Optional thumbnail image URL
|
|
6062
|
+
* @param daysAhead Number of days ahead available for selection (defaults to 14)
|
|
6020
6063
|
* @returns Promise that resolves when the booking flow is complete
|
|
6021
6064
|
*/
|
|
6022
|
-
open(facilityId: string, facilityTitle: string, facilityThumbnail?: string): Promise<void>;
|
|
6065
|
+
open(facilityId: string, facilityTitle: string, facilityThumbnail?: string, daysAhead?: number): Promise<void>;
|
|
6023
6066
|
/**
|
|
6024
6067
|
* Dismiss all open modals
|
|
6025
6068
|
*/
|
|
@@ -6366,20 +6409,54 @@ declare class DsMobileWhoCanBookSheetComponent {
|
|
|
6366
6409
|
* DsMobileWhenCanBookSheetComponent
|
|
6367
6410
|
*
|
|
6368
6411
|
* Bottom sheet for selecting when a facility can be booked (days, time range, duration).
|
|
6412
|
+
* "Vælg selv" opens a drum-roll IonPopover on mobile, or inline number inputs on desktop.
|
|
6369
6413
|
*/
|
|
6370
|
-
declare class DsMobileWhenCanBookSheetComponent {
|
|
6414
|
+
declare class DsMobileWhenCanBookSheetComponent implements OnInit {
|
|
6371
6415
|
private modalController;
|
|
6416
|
+
private platformId;
|
|
6417
|
+
isDesktop: _angular_core.WritableSignal<boolean>;
|
|
6372
6418
|
selectedDays: _angular_core.WritableSignal<Set<string>>;
|
|
6373
6419
|
startTime: _angular_core.WritableSignal<string>;
|
|
6374
6420
|
endTime: _angular_core.WritableSignal<string>;
|
|
6375
6421
|
selectedDuration: _angular_core.WritableSignal<string>;
|
|
6422
|
+
/**
|
|
6423
|
+
* Maximum number of days available in the "Vælg selv" picker/inputs.
|
|
6424
|
+
* Defaults to 30 (one full month). Override via componentProps when opening the sheet.
|
|
6425
|
+
*/
|
|
6426
|
+
maxDays: _angular_core.InputSignal<number>;
|
|
6427
|
+
pickerOpen: _angular_core.WritableSignal<boolean>;
|
|
6428
|
+
customDays: _angular_core.WritableSignal<number>;
|
|
6429
|
+
customHours: _angular_core.WritableSignal<number>;
|
|
6430
|
+
customMinutes: _angular_core.WritableSignal<number>;
|
|
6431
|
+
customDurationLabel: _angular_core.Signal<string>;
|
|
6432
|
+
showInlineInputs: _angular_core.Signal<boolean>;
|
|
6376
6433
|
days: string[];
|
|
6377
6434
|
durations: {
|
|
6378
6435
|
value: string;
|
|
6379
6436
|
label: string;
|
|
6380
6437
|
}[];
|
|
6438
|
+
daysOptions: _angular_core.Signal<number[]>;
|
|
6439
|
+
hours: number[];
|
|
6440
|
+
minuteOptions: number[];
|
|
6381
6441
|
isValid: _angular_core.Signal<string | false>;
|
|
6382
6442
|
constructor(modalController: ModalController);
|
|
6443
|
+
ngOnInit(): void;
|
|
6444
|
+
/**
|
|
6445
|
+
* Handle duration chip selection.
|
|
6446
|
+
* On mobile, opening "Vælg selv" triggers the IonPopover via its trigger id.
|
|
6447
|
+
* On desktop, it shows the inline inputs.
|
|
6448
|
+
*/
|
|
6449
|
+
selectDuration(value: string): void;
|
|
6450
|
+
/**
|
|
6451
|
+
* Normalizes days/hours/minutes so values never overflow their units.
|
|
6452
|
+
* e.g. 0d 48t 0min → 2d 0t 0min; 0d 0t 75min → 0d 1t 15min.
|
|
6453
|
+
* Caps days at maxDays().
|
|
6454
|
+
*/
|
|
6455
|
+
normalize(): void;
|
|
6456
|
+
/**
|
|
6457
|
+
* Called when the mobile picker popover is dismissed — normalize and commit.
|
|
6458
|
+
*/
|
|
6459
|
+
onPickerDismiss(): void;
|
|
6383
6460
|
/**
|
|
6384
6461
|
* Toggle day selection
|
|
6385
6462
|
*/
|
|
@@ -6393,7 +6470,7 @@ declare class DsMobileWhenCanBookSheetComponent {
|
|
|
6393
6470
|
*/
|
|
6394
6471
|
dismiss(): void;
|
|
6395
6472
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileWhenCanBookSheetComponent, never>;
|
|
6396
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileWhenCanBookSheetComponent, "ds-mobile-when-can-book-sheet", never, {}, {}, never, never, true, never>;
|
|
6473
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileWhenCanBookSheetComponent, "ds-mobile-when-can-book-sheet", never, { "maxDays": { "alias": "maxDays"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6397
6474
|
}
|
|
6398
6475
|
|
|
6399
6476
|
/**
|
|
@@ -7086,7 +7163,7 @@ declare class DsMobileFabComponent implements AfterViewInit, OnDestroy {
|
|
|
7086
7163
|
* Note: FAB is always 56px circular, but this affects the icon size
|
|
7087
7164
|
* @default 'md'
|
|
7088
7165
|
*/
|
|
7089
|
-
size: _angular_core.InputSignal<"
|
|
7166
|
+
size: _angular_core.InputSignal<"md" | "sm" | "lg">;
|
|
7090
7167
|
/**
|
|
7091
7168
|
* ARIA label for accessibility
|
|
7092
7169
|
* @required - Always provide a descriptive label
|
|
@@ -7575,11 +7652,29 @@ declare class MobileHandbookPageComponent {
|
|
|
7575
7652
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileHandbookPageComponent, "app-mobile-handbook-page", never, {}, {}, never, never, true, never>;
|
|
7576
7653
|
}
|
|
7577
7654
|
|
|
7578
|
-
declare class
|
|
7655
|
+
declare class TrackingPermissionService {
|
|
7656
|
+
private readonly trackingPromptRequestedKey;
|
|
7657
|
+
private readonly platform;
|
|
7658
|
+
private readonly trackingSettingsReminder;
|
|
7659
|
+
readonly showTrackingSettingsReminder: _angular_core.Signal<boolean>;
|
|
7660
|
+
requestOnFirstHomeEntry(): Promise<void>;
|
|
7661
|
+
getTrackingStatus(): Promise<AppTrackingStatus | null>;
|
|
7662
|
+
openAppSettings(): Promise<void>;
|
|
7663
|
+
shouldShowSettingsReminder(): boolean;
|
|
7664
|
+
refreshTrackingStatus(): Promise<void>;
|
|
7665
|
+
private isNativeIos;
|
|
7666
|
+
private hasRequestedTrackingPrompt;
|
|
7667
|
+
private setTrackingPromptRequested;
|
|
7668
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TrackingPermissionService, never>;
|
|
7669
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TrackingPermissionService>;
|
|
7670
|
+
}
|
|
7671
|
+
|
|
7672
|
+
declare class MobileHomePageComponent implements OnInit {
|
|
7579
7673
|
private router;
|
|
7580
7674
|
userService: UserService;
|
|
7581
7675
|
private postsService;
|
|
7582
7676
|
private postModal;
|
|
7677
|
+
private trackingPermissionService;
|
|
7583
7678
|
pageComponent: DsMobilePageMainComponent;
|
|
7584
7679
|
recentPosts: _angular_core.Signal<_propbinder_mobile_design.Post[]>;
|
|
7585
7680
|
private allInquiries;
|
|
@@ -7590,7 +7685,8 @@ declare class MobileHomePageComponent {
|
|
|
7590
7685
|
status: "open";
|
|
7591
7686
|
timestamp: string;
|
|
7592
7687
|
}[]>;
|
|
7593
|
-
constructor(router: Router, userService: UserService, postsService: PostsService, postModal: DsMobilePostDetailModalService);
|
|
7688
|
+
constructor(router: Router, userService: UserService, postsService: PostsService, postModal: DsMobilePostDetailModalService, trackingPermissionService: TrackingPermissionService);
|
|
7689
|
+
ngOnInit(): void;
|
|
7594
7690
|
handleRefresh(event: any): void;
|
|
7595
7691
|
openPost(postId: string, focusComment?: boolean): Promise<void>;
|
|
7596
7692
|
openInquiryDetail(inquiryId: string): void;
|
|
@@ -7682,6 +7778,8 @@ declare class MobileTabsExampleComponent implements OnInit {
|
|
|
7682
7778
|
userService: UserService;
|
|
7683
7779
|
private router;
|
|
7684
7780
|
private whitelabelDemoModal;
|
|
7781
|
+
private trackingPermissionService;
|
|
7782
|
+
private trackedProfileMenuItems;
|
|
7685
7783
|
constructor(userService: UserService, router: Router);
|
|
7686
7784
|
ngOnInit(): void;
|
|
7687
7785
|
tabs: TabConfig[];
|