@propbinder/mobile-design 0.2.48 → 0.2.52

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/index.d.ts CHANGED
@@ -738,7 +738,7 @@ declare class DsMobilePageMainComponent extends MobilePageBase implements AfterV
738
738
  title: _angular_core.InputSignal<string>;
739
739
  headerTitle: _angular_core.InputSignal<string>;
740
740
  headerSubtitle: _angular_core.InputSignal<string>;
741
- avatarType: _angular_core.InputSignal<"photo" | "initials" | "icon">;
741
+ avatarType: _angular_core.InputSignal<"initials" | "photo" | "icon">;
742
742
  avatarInitials: _angular_core.InputSignal<string>;
743
743
  avatarSrc: _angular_core.InputSignal<string>;
744
744
  avatarIconName: _angular_core.InputSignal<string>;
@@ -918,7 +918,7 @@ declare class WhitelabelService {
918
918
  readonly logoUrl: _angular_core.Signal<string>;
919
919
  readonly logoMarkUrl: _angular_core.Signal<string>;
920
920
  readonly logoAlt: _angular_core.Signal<string>;
921
- readonly logoSize: _angular_core.Signal<"sm" | "md" | "lg" | "xl">;
921
+ readonly logoSize: _angular_core.Signal<"md" | "sm" | "lg" | "xl">;
922
922
  readonly logoHeight: _angular_core.Signal<number>;
923
923
  readonly appIconSurface: _angular_core.Signal<string>;
924
924
  readonly appIconContent: _angular_core.Signal<string>;
@@ -1584,7 +1584,7 @@ declare class DsMobileCommentComponent {
1584
1584
  /**
1585
1585
  * Avatar type
1586
1586
  */
1587
- avatarType: _angular_core.InputSignal<"photo" | "initials" | "icon">;
1587
+ avatarType: _angular_core.InputSignal<"initials" | "photo" | "icon">;
1588
1588
  /**
1589
1589
  * Whether the comment is clickable
1590
1590
  */
@@ -1597,6 +1597,14 @@ declare class DsMobileCommentComponent {
1597
1597
  */
1598
1598
  moreActions: _angular_core.InputSignal<boolean | undefined>;
1599
1599
  shouldShowMoreButton: _angular_core.Signal<boolean>;
1600
+ /**
1601
+ * Label for the reply action button
1602
+ */
1603
+ replyLabel: _angular_core.InputSignal<string>;
1604
+ /**
1605
+ * Label for the edit action button
1606
+ */
1607
+ editLabel: _angular_core.InputSignal<string>;
1600
1608
  /**
1601
1609
  * Whether this comment belongs to the current user
1602
1610
  */
@@ -1683,7 +1691,7 @@ declare class DsMobileCommentComponent {
1683
1691
  */
1684
1692
  handleMoreButtonClick(event: Event): void;
1685
1693
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileCommentComponent, never>;
1686
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileCommentComponent, "ds-mobile-comment", never, { "authorName": { "alias": "authorName"; "required": true; "isSignal": true; }; "authorRole": { "alias": "authorRole"; "required": true; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": true; "isSignal": true; }; "content": { "alias": "content"; "required": true; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "moreActions": { "alias": "moreActions"; "required": false; "isSignal": true; }; "isOwnComment": { "alias": "isOwnComment"; "required": false; "isSignal": true; }; "isLiked": { "alias": "isLiked"; "required": false; "isSignal": true; }; "likeCount": { "alias": "likeCount"; "required": false; "isSignal": true; }; }, { "likeToggled": "likeToggled"; "commentClick": "commentClick"; "replyClick": "replyClick"; "editClick": "editClick"; "longPress": "longPress"; }, never, never, true, never>;
1694
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileCommentComponent, "ds-mobile-comment", never, { "authorName": { "alias": "authorName"; "required": true; "isSignal": true; }; "authorRole": { "alias": "authorRole"; "required": true; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": true; "isSignal": true; }; "content": { "alias": "content"; "required": true; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "moreActions": { "alias": "moreActions"; "required": false; "isSignal": true; }; "replyLabel": { "alias": "replyLabel"; "required": false; "isSignal": true; }; "editLabel": { "alias": "editLabel"; "required": false; "isSignal": true; }; "isOwnComment": { "alias": "isOwnComment"; "required": false; "isSignal": true; }; "isLiked": { "alias": "isLiked"; "required": false; "isSignal": true; }; "likeCount": { "alias": "likeCount"; "required": false; "isSignal": true; }; }, { "likeToggled": "likeToggled"; "commentClick": "commentClick"; "replyClick": "replyClick"; "editClick": "editClick"; "longPress": "longPress"; }, never, never, true, never>;
1687
1695
  }
1688
1696
 
1689
1697
  /**
@@ -1711,7 +1719,7 @@ declare class DsMobilePostComposerComponent {
1711
1719
  /**
1712
1720
  * Avatar type
1713
1721
  */
1714
- avatarType: _angular_core.InputSignal<"photo" | "initials" | "icon">;
1722
+ avatarType: _angular_core.InputSignal<"initials" | "photo" | "icon">;
1715
1723
  /**
1716
1724
  * Avatar photo source (for photo type)
1717
1725
  */
@@ -2003,7 +2011,7 @@ declare class DsMobileMessageComposerComponent implements AfterViewInit, OnDestr
2003
2011
  /**
2004
2012
  * Avatar type
2005
2013
  */
2006
- avatarType: _angular_core.InputSignal<"photo" | "initials" | "icon">;
2014
+ avatarType: _angular_core.InputSignal<"initials" | "photo" | "icon">;
2007
2015
  /**
2008
2016
  * Avatar photo source (for photo type)
2009
2017
  */
@@ -2324,7 +2332,7 @@ declare class DsMobileMessageBubbleComponent {
2324
2332
  /**
2325
2333
  * Avatar type
2326
2334
  */
2327
- avatarType: _angular_core.InputSignal<"photo" | "initials" | "icon">;
2335
+ avatarType: _angular_core.InputSignal<"initials" | "photo" | "icon">;
2328
2336
  /**
2329
2337
  * Avatar photo source (for photo type)
2330
2338
  */
@@ -2851,7 +2859,7 @@ declare class DsMobileInteractiveListItemPostComponent {
2851
2859
  /**
2852
2860
  * Avatar type
2853
2861
  */
2854
- avatarType: _angular_core.InputSignal<"photo" | "initials" | "icon">;
2862
+ avatarType: _angular_core.InputSignal<"initials" | "photo" | "icon">;
2855
2863
  /**
2856
2864
  * Avatar photo source (for photo type)
2857
2865
  */
@@ -3189,7 +3197,7 @@ declare class DsMobileInteractiveListItemMessageComponent {
3189
3197
  /**
3190
3198
  * Avatar type
3191
3199
  */
3192
- avatarType: _angular_core.InputSignal<"photo" | "initials" | "icon">;
3200
+ avatarType: _angular_core.InputSignal<"initials" | "photo" | "icon">;
3193
3201
  /**
3194
3202
  * Avatar photo source (for photo type)
3195
3203
  */
@@ -4582,7 +4590,7 @@ declare abstract class MobileModalBase implements OnInit, OnDestroy {
4582
4590
  * - 'overlay': keyboard/footer overlays lower content (no auto scroll push)
4583
4591
  * @default 'follow'
4584
4592
  */
4585
- keyboardContentBehavior: _angular_core.InputSignal<"overlay" | "follow">;
4593
+ keyboardContentBehavior: _angular_core.InputSignal<"follow" | "overlay">;
4586
4594
  /**
4587
4595
  * Emitted when modal is closed
4588
4596
  */
@@ -5582,7 +5590,7 @@ declare class DsMobileChatModalComponent implements OnInit, AfterViewInit {
5582
5590
  participant: _angular_core.WritableSignal<ChatParticipant>;
5583
5591
  messages: _angular_core.WritableSignal<ChatMessage[]>;
5584
5592
  currentUserInitials: _angular_core.WritableSignal<string>;
5585
- currentUserAvatarType: _angular_core.WritableSignal<"photo" | "initials" | "icon">;
5593
+ currentUserAvatarType: _angular_core.WritableSignal<"initials" | "photo" | "icon">;
5586
5594
  currentUserAvatarSrc: _angular_core.WritableSignal<string>;
5587
5595
  autoFocus: _angular_core.WritableSignal<boolean>;
5588
5596
  /**
@@ -6062,6 +6070,10 @@ declare class DsMobileBookingModalComponent implements AfterViewInit {
6062
6070
  * Defaults to 60 (2 months). Override via componentProps when opening the modal.
6063
6071
  */
6064
6072
  daysAhead: number;
6073
+ selectFromCalendarText: string;
6074
+ confirmBookingText: string;
6075
+ availableDates?: DateOption[];
6076
+ availableTimeSlots?: Record<string, TimeSlot[]>;
6065
6077
  swiperComponent?: DsMobileSwiperComponent;
6066
6078
  dateOptions: _angular_core.WritableSignal<DateOption[]>;
6067
6079
  timeSlots: _angular_core.WritableSignal<TimeSlot[]>;
@@ -6089,11 +6101,11 @@ declare class DsMobileBookingModalComponent implements AfterViewInit {
6089
6101
  */
6090
6102
  dateDisabledFn: _angular_core.Signal<(date: Date) => boolean>;
6091
6103
  /**
6092
- * Generate mock date and time data
6104
+ * Generate mock date and time data or use provided available data
6093
6105
  */
6094
6106
  private generateMockData;
6095
6107
  /**
6096
- * Generate time slots based on selected date
6108
+ * Generate time slots based on selected date and dynamic available timeslots
6097
6109
  */
6098
6110
  private generateTimeSlots;
6099
6111
  /**
@@ -6118,7 +6130,7 @@ declare class DsMobileBookingModalComponent implements AfterViewInit {
6118
6130
  */
6119
6131
  handleClose(): Promise<void>;
6120
6132
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileBookingModalComponent, never>;
6121
- 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>;
6133
+ 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; }; "selectFromCalendarText": { "alias": "selectFromCalendarText"; "required": false; }; "confirmBookingText": { "alias": "confirmBookingText"; "required": false; }; "availableDates": { "alias": "availableDates"; "required": false; }; "availableTimeSlots": { "alias": "availableTimeSlots"; "required": false; }; }, {}, never, never, true, never>;
6122
6134
  }
6123
6135
 
6124
6136
  /**
@@ -6133,22 +6145,34 @@ declare class DsMobileBookingModalComponent implements AfterViewInit {
6133
6145
  * constructor(private bookingModalService: DsMobileBookingModalService) {}
6134
6146
  *
6135
6147
  * async openBooking() {
6136
- * await this.bookingModalService.open('facility-1', 'Boremaskinen');
6148
+ * await this.bookingModalService.open({
6149
+ * facilityId: 'facility-1',
6150
+ * facilityTitle: 'Boremaskinen'
6151
+ * });
6137
6152
  * }
6138
6153
  * ```
6139
6154
  */
6155
+ interface BookingModalOptions {
6156
+ facilityId: string;
6157
+ facilityTitle: string;
6158
+ facilityThumbnail?: string;
6159
+ daysAhead?: number;
6160
+ availableDates?: DateOption[];
6161
+ availableTimeSlots?: Record<string, TimeSlot[]>;
6162
+ labels?: {
6163
+ selectFromCalendar?: string;
6164
+ confirmBooking?: string;
6165
+ };
6166
+ }
6140
6167
  declare class DsMobileBookingModalService extends BaseModalService {
6141
6168
  constructor(modalController: ModalController);
6142
6169
  /**
6143
6170
  * Open the booking modal for a facility
6144
6171
  *
6145
- * @param facilityId The ID of the facility to book
6146
- * @param facilityTitle The display name of the facility
6147
- * @param facilityThumbnail Optional thumbnail image URL
6148
- * @param daysAhead Number of days ahead available for selection (defaults to 14)
6172
+ * @param options The booking modal options including dynamic data and texts
6149
6173
  * @returns Promise that resolves when the booking flow is complete
6150
6174
  */
6151
- open(facilityId: string, facilityTitle: string, facilityThumbnail?: string, daysAhead?: number): Promise<void>;
6175
+ open(options: BookingModalOptions): Promise<void>;
6152
6176
  /**
6153
6177
  * Dismiss all open modals
6154
6178
  */
@@ -7191,7 +7215,7 @@ declare class DsMobileHandbookFolderMiniComponent {
7191
7215
  * ```
7192
7216
  */
7193
7217
  declare class DsTextInputComponent implements ControlValueAccessor {
7194
- type: _angular_core.InputSignal<"search" | "text" | "email" | "tel" | "url" | "password">;
7218
+ type: _angular_core.InputSignal<"search" | "text" | "url" | "email" | "tel" | "password">;
7195
7219
  placeholder: _angular_core.InputSignal<string>;
7196
7220
  disabled: _angular_core.InputSignal<boolean>;
7197
7221
  readonly: _angular_core.InputSignal<boolean>;
@@ -7199,7 +7223,7 @@ declare class DsTextInputComponent implements ControlValueAccessor {
7199
7223
  hasError: _angular_core.InputSignal<boolean>;
7200
7224
  errorMessage: _angular_core.InputSignal<string>;
7201
7225
  autocomplete: _angular_core.InputSignal<string>;
7202
- inputmode: _angular_core.InputSignal<"search" | "text" | "email" | "tel" | "url" | "numeric" | undefined>;
7226
+ inputmode: _angular_core.InputSignal<"search" | "text" | "url" | "numeric" | "email" | "tel" | undefined>;
7203
7227
  autoClearError: _angular_core.InputSignal<boolean>;
7204
7228
  validator: _angular_core.InputSignal<((value: string) => boolean) | null>;
7205
7229
  valueChange: _angular_core.OutputEmitterRef<string>;
@@ -7270,7 +7294,7 @@ declare class DsMobileFabComponent implements AfterViewInit, OnDestroy {
7270
7294
  * Note: FAB is always 56px circular, but this affects the icon size
7271
7295
  * @default 'md'
7272
7296
  */
7273
- size: _angular_core.InputSignal<"sm" | "md" | "lg">;
7297
+ size: _angular_core.InputSignal<"md" | "sm" | "lg">;
7274
7298
  /**
7275
7299
  * ARIA label for accessibility
7276
7300
  * @required - Always provide a descriptive label
@@ -7564,7 +7588,7 @@ declare class UserService {
7564
7588
  private _avatarSrc;
7565
7589
  private _profileMenuItems;
7566
7590
  readonly avatarInitials: _angular_core.Signal<string>;
7567
- readonly avatarType: _angular_core.Signal<"photo" | "initials" | "icon">;
7591
+ readonly avatarType: _angular_core.Signal<"initials" | "photo" | "icon">;
7568
7592
  readonly avatarSrc: _angular_core.Signal<string>;
7569
7593
  readonly profileMenuItems: _angular_core.Signal<ActionGroup[] | undefined>;
7570
7594
  private profileActionSelectedSubject;
@@ -8166,4 +8190,4 @@ declare const customPageTransition: (_: HTMLElement, opts: any) => Animation;
8166
8190
  declare const customBackTransition: (_: HTMLElement, opts: any) => Animation;
8167
8191
 
8168
8192
  export { ActionCommentComponent, ActionLikeComponent, BaseModalService, ContentRowComponent, DsAppIconComponent, DsAvatarWithBadgeComponent, DsLogoComponent, DsMobileAccessSheetComponent, DsMobileActionListItemComponent, DsMobileActionsBottomSheetComponent, 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, 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, MobileBookingPageComponent, MobileCommunityPageComponent, MobileHandbookPageComponent, MobileHomePageComponent, MobileInquiriesPageComponent, MobileInquiryDetailPageComponent, MobileModalBase, MobilePageBase, MobilePostDetailPageComponent, MobileTabsExampleComponent, PostActionsComponent, PostAttachmentsComponent, PostContentComponent, PostCreatePageComponent, PostMediaComponent, PostPdfAttachmentComponent, PostTextComponent, PostsService, SectionHeaderComponent, SignInPageComponent, TileContentComponent, TileIconComponent, TileLabelComponent, TileValueComponent, TrackingPermissionService, UserService, WhitelabelDemoModalComponent, WhitelabelDemoModalService, WhitelabelService, customBackTransition, customPageTransition };
8169
- export type { ActionGroup, ActionItem, ActionResult, AppIconSize, AttachmentData, AttachmentFileType, AttachmentItem, AvatarSize, AvatarType, BadgePosition, BookingResult, BottomSheetOptions, ChatAttachment, ChatMessage, ChatModalData, ChatParticipant, Comment, ActionResult as CommentActionResult, CommentData, ContactItem, ContentWidth, DateOption, DropdownAlign, DropdownPosition, DsMobileDropdownItem, FacilityCreationModalOptions, FacilityDetailData, HandbookDetailData, HandbookItem, InlineTabItem, InquiryPhoto, Language, LightboxAuthor, LightboxImage, LightboxImageOptions, LightboxMediaFile, LightboxMediaType, LightboxOptions, LightboxPdf, LightboxPdfOptions, LogoSize, LogoVariant, ModalOptions, NetworkStatus, NewFacilityData, NewInquiryData, NewInquiryModalOptions, Post, ActionResult as PostActionResult, PostDetailData, TabConfig, TimeSlot, WhitelabelConfig };
8193
+ 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, ContentWidth, DateOption, DropdownAlign, DropdownPosition, DsMobileDropdownItem, FacilityCreationModalOptions, FacilityDetailData, HandbookDetailData, HandbookItem, InlineTabItem, InquiryPhoto, Language, LightboxAuthor, LightboxImage, LightboxImageOptions, LightboxMediaFile, LightboxMediaType, LightboxOptions, LightboxPdf, LightboxPdfOptions, LogoSize, LogoVariant, ModalOptions, NetworkStatus, NewFacilityData, NewInquiryData, NewInquiryModalOptions, Post, ActionResult as PostActionResult, PostDetailData, TabConfig, TimeSlot, WhitelabelConfig };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@propbinder/mobile-design",
3
- "version": "0.2.48",
3
+ "version": "0.2.52",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.0 || ^21.0.0",
6
6
  "@angular/core": "^20.3.0 || ^21.0.0"
package/styles/ionic.css CHANGED
@@ -18,6 +18,31 @@
18
18
  /* Mobile common styles */
19
19
  /* Note: mobile-common.css is included in @propbinder/design-system/styles/globals.css */
20
20
 
21
+ /* Italic font faces (upright weights are declared in @propbinder/design-system/styles/globals.css) */
22
+ @font-face {
23
+ font-family: "Brockmann";
24
+ src: url("/Brockmann/brockmann-regularitalic-webfont.woff2") format("woff2");
25
+ font-weight: 400;
26
+ font-style: italic;
27
+ font-display: swap;
28
+ }
29
+
30
+ @font-face {
31
+ font-family: "Brockmann";
32
+ src: url("/Brockmann/brockmann-mediumitalic-webfont.woff2") format("woff2");
33
+ font-weight: 500;
34
+ font-style: italic;
35
+ font-display: swap;
36
+ }
37
+
38
+ @font-face {
39
+ font-family: "Brockmann";
40
+ src: url("/Brockmann/brockmann-semibolditalic-webfont.woff2") format("woff2");
41
+ font-weight: 600;
42
+ font-style: italic;
43
+ font-display: swap;
44
+ }
45
+
21
46
  /* Ionic-Specific CSS Variables */
22
47
  :root {
23
48
  /* Mobile-specific brand color for headers/backgrounds */