@propbinder/mobile-design 0.2.97 → 0.2.98

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.
@@ -22880,6 +22880,10 @@ class DsMobileCardInlineContactComponent {
22880
22880
  * Phone number (optional)
22881
22881
  */
22882
22882
  phoneNumber = input('', ...(ngDevMode ? [{ debugName: "phoneNumber" }] : []));
22883
+ /**
22884
+ * Email address (optional)
22885
+ */
22886
+ email = input('', ...(ngDevMode ? [{ debugName: "email" }] : []));
22883
22887
  /**
22884
22888
  * Layout variant
22885
22889
  * - 'default' - Standard padding and column layout
@@ -22910,7 +22914,7 @@ class DsMobileCardInlineContactComponent {
22910
22914
  this.contactClick.emit();
22911
22915
  }
22912
22916
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileCardInlineContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22913
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileCardInlineContactComponent, isStandalone: true, selector: "ds-mobile-card-inline-contact", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, initials: { classPropertyName: "initials", publicName: "initials", isSignal: true, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: true, isRequired: false, transformFunction: null }, contactPerson: { classPropertyName: "contactPerson", publicName: "contactPerson", isSignal: true, isRequired: false, transformFunction: null }, phoneNumber: { classPropertyName: "phoneNumber", publicName: "phoneNumber", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, showChevron: { classPropertyName: "showChevron", publicName: "showChevron", isSignal: true, isRequired: false, transformFunction: null }, showEditButton: { classPropertyName: "showEditButton", publicName: "showEditButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contactClick: "contactClick", editClick: "editClick" }, ngImport: i0, template: `
22917
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileCardInlineContactComponent, isStandalone: true, selector: "ds-mobile-card-inline-contact", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, initials: { classPropertyName: "initials", publicName: "initials", isSignal: true, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: true, isRequired: false, transformFunction: null }, contactPerson: { classPropertyName: "contactPerson", publicName: "contactPerson", isSignal: true, isRequired: false, transformFunction: null }, phoneNumber: { classPropertyName: "phoneNumber", publicName: "phoneNumber", isSignal: true, isRequired: false, transformFunction: null }, email: { classPropertyName: "email", publicName: "email", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, showChevron: { classPropertyName: "showChevron", publicName: "showChevron", isSignal: true, isRequired: false, transformFunction: null }, showEditButton: { classPropertyName: "showEditButton", publicName: "showEditButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contactClick: "contactClick", editClick: "editClick" }, ngImport: i0, template: `
22914
22918
  <ds-mobile-card-inline
22915
22919
  [variant]="layout()"
22916
22920
  [disabled]="!clickable()"
@@ -22931,17 +22935,23 @@ class DsMobileCardInlineContactComponent {
22931
22935
  <div content-main class="item-content">
22932
22936
  <div class="item-name">{{ name() }}</div>
22933
22937
 
22934
- @if (contactPerson() || phoneNumber()) {
22938
+ @if (contactPerson() || phoneNumber() || email()) {
22935
22939
  <div class="item-meta">
22936
22940
  @if (contactPerson()) {
22937
22941
  <span>{{ contactPerson() }}</span>
22938
22942
  }
22939
- @if (contactPerson() && phoneNumber()) {
22943
+ @if (contactPerson() && (phoneNumber() || email())) {
22940
22944
  <span>·</span>
22941
22945
  }
22942
22946
  @if (phoneNumber()) {
22943
22947
  <span>{{ phoneNumber() }}</span>
22944
22948
  }
22949
+ @if (phoneNumber() && email()) {
22950
+ <span>·</span>
22951
+ }
22952
+ @if (email()) {
22953
+ <span>{{ email() }}</span>
22954
+ }
22945
22955
  </div>
22946
22956
  }
22947
22957
  </div>
@@ -22981,17 +22991,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
22981
22991
  <div content-main class="item-content">
22982
22992
  <div class="item-name">{{ name() }}</div>
22983
22993
 
22984
- @if (contactPerson() || phoneNumber()) {
22994
+ @if (contactPerson() || phoneNumber() || email()) {
22985
22995
  <div class="item-meta">
22986
22996
  @if (contactPerson()) {
22987
22997
  <span>{{ contactPerson() }}</span>
22988
22998
  }
22989
- @if (contactPerson() && phoneNumber()) {
22999
+ @if (contactPerson() && (phoneNumber() || email())) {
22990
23000
  <span>·</span>
22991
23001
  }
22992
23002
  @if (phoneNumber()) {
22993
23003
  <span>{{ phoneNumber() }}</span>
22994
23004
  }
23005
+ @if (phoneNumber() && email()) {
23006
+ <span>·</span>
23007
+ }
23008
+ @if (email()) {
23009
+ <span>{{ email() }}</span>
23010
+ }
22995
23011
  </div>
22996
23012
  }
22997
23013
  </div>
@@ -23007,7 +23023,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
23007
23023
  }
23008
23024
  </ds-mobile-card-inline>
23009
23025
  `, styles: [".item-image{width:36px;height:36px;border-radius:8px;object-fit:cover;flex-shrink:0;background:var(--color-background-neutral-tertiary, #E5E7EB)}:host ::ng-deep .item-trailing ds-icon-button .btn{border-radius:50%}\n"] }]
23010
- }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], initials: [{ type: i0.Input, args: [{ isSignal: true, alias: "initials", required: false }] }], imageUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageUrl", required: false }] }], contactPerson: [{ type: i0.Input, args: [{ isSignal: true, alias: "contactPerson", required: false }] }], phoneNumber: [{ type: i0.Input, args: [{ isSignal: true, alias: "phoneNumber", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], showChevron: [{ type: i0.Input, args: [{ isSignal: true, alias: "showChevron", required: false }] }], showEditButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showEditButton", required: false }] }], contactClick: [{ type: i0.Output, args: ["contactClick"] }], editClick: [{ type: i0.Output, args: ["editClick"] }] } });
23026
+ }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], initials: [{ type: i0.Input, args: [{ isSignal: true, alias: "initials", required: false }] }], imageUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageUrl", required: false }] }], contactPerson: [{ type: i0.Input, args: [{ isSignal: true, alias: "contactPerson", required: false }] }], phoneNumber: [{ type: i0.Input, args: [{ isSignal: true, alias: "phoneNumber", required: false }] }], email: [{ type: i0.Input, args: [{ isSignal: true, alias: "email", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], showChevron: [{ type: i0.Input, args: [{ isSignal: true, alias: "showChevron", required: false }] }], showEditButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showEditButton", required: false }] }], contactClick: [{ type: i0.Output, args: ["contactClick"] }], editClick: [{ type: i0.Output, args: ["editClick"] }] } });
23011
23027
 
23012
23028
  /**
23013
23029
  * DsMobileNewInquiryModalComponent
@@ -27752,6 +27768,15 @@ class DsMobileHandbookDetailModalComponent {
27752
27768
  * Error state - when set, shows error message
27753
27769
  */
27754
27770
  error;
27771
+ // Translations
27772
+ textItems = 'emner';
27773
+ textClose = 'Luk';
27774
+ textEmptyTitle = 'Ingen emner endnu';
27775
+ textEmptyDescription = 'Denne mappe er tom';
27776
+ textCall = 'Ring';
27777
+ textCopyPhone = 'Kopier nummer';
27778
+ textEmail = 'Skriv e-mail';
27779
+ textCopyEmail = 'Kopier e-mail';
27755
27780
  // Signal for reactive handbook data
27756
27781
  handbook = signal({
27757
27782
  title: '',
@@ -27820,26 +27845,27 @@ class DsMobileHandbookDetailModalComponent {
27820
27845
  * Handle contact click - shows bottom sheet with call and copy actions
27821
27846
  */
27822
27847
  async handleContactClick(contact) {
27823
- // Only show actions if there's a phone number
27824
- if (!contact.phoneNumber) {
27848
+ // Only show actions if there's a phone number or email
27849
+ if (!contact.phoneNumber && !contact.email) {
27825
27850
  return;
27826
27851
  }
27827
- const actionGroups = [
27828
- {
27852
+ const actionGroups = [];
27853
+ if (contact.phoneNumber) {
27854
+ actionGroups.push({
27829
27855
  actions: [
27830
- {
27831
- action: 'call',
27832
- title: 'Ring',
27833
- icon: 'remixPhoneLine',
27834
- },
27835
- {
27836
- action: 'copy',
27837
- title: 'Kopier nummer',
27838
- icon: 'remixFileCopyLine',
27839
- },
27856
+ { action: 'call', title: this.textCall, icon: 'remixPhoneLine' },
27857
+ { action: 'copy_phone', title: this.textCopyPhone, icon: 'remixFileCopyLine' },
27840
27858
  ],
27841
- },
27842
- ];
27859
+ });
27860
+ }
27861
+ if (contact.email) {
27862
+ actionGroups.push({
27863
+ actions: [
27864
+ { action: 'email', title: this.textEmail, icon: 'remixMailLine' },
27865
+ { action: 'copy_email', title: this.textCopyEmail, icon: 'remixFileCopyLine' },
27866
+ ],
27867
+ });
27868
+ }
27843
27869
  const sheet = await this.modalController.create({
27844
27870
  component: DsMobileActionsBottomSheetComponent,
27845
27871
  componentProps: {
@@ -27863,27 +27889,34 @@ class DsMobileHandbookDetailModalComponent {
27863
27889
  async handleContactAction(action, contact) {
27864
27890
  switch (action) {
27865
27891
  case 'call':
27866
- // Open phone dialer with the contact's phone number
27867
- if (contact.phoneNumber) {
27892
+ if (contact.phoneNumber)
27868
27893
  window.location.href = `tel:${contact.phoneNumber}`;
27869
- }
27870
27894
  break;
27895
+ case 'copy_phone':
27871
27896
  case 'copy':
27872
- // Copy phone number to clipboard
27873
27897
  if (contact.phoneNumber) {
27874
27898
  try {
27875
- // Try modern Clipboard API first
27876
27899
  await navigator.clipboard.writeText(contact.phoneNumber);
27877
- console.log('Phone number copied to clipboard:', contact.phoneNumber);
27878
- // TODO: Show toast notification if you have a toast service
27879
27900
  }
27880
27901
  catch (err) {
27881
- console.error('Failed to copy phone number:', err);
27882
- // Fallback: Try older execCommand method
27883
27902
  this.fallbackCopyToClipboard(contact.phoneNumber);
27884
27903
  }
27885
27904
  }
27886
27905
  break;
27906
+ case 'email':
27907
+ if (contact.email)
27908
+ window.location.href = `mailto:${contact.email}`;
27909
+ break;
27910
+ case 'copy_email':
27911
+ if (contact.email) {
27912
+ try {
27913
+ await navigator.clipboard.writeText(contact.email);
27914
+ }
27915
+ catch (err) {
27916
+ this.fallbackCopyToClipboard(contact.email);
27917
+ }
27918
+ }
27919
+ break;
27887
27920
  }
27888
27921
  }
27889
27922
  /**
@@ -27920,8 +27953,8 @@ class DsMobileHandbookDetailModalComponent {
27920
27953
  // Attachment action is now handled by DsMobileCardInlineFileComponent via fileUrl input
27921
27954
  }
27922
27955
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileHandbookDetailModalComponent, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component });
27923
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileHandbookDetailModalComponent, isStandalone: true, selector: "ds-mobile-handbook-detail-modal", inputs: { handbookData: "handbookData", loading: "loading", error: "error" }, ngImport: i0, template: `
27924
- <ds-mobile-modal-base [loading]="loading" [error]="error" [headerTitle]="handbook().title" [headerMeta]="handbook().itemCount + ' emner'" closeButtonLabel="Luk">
27956
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileHandbookDetailModalComponent, isStandalone: true, selector: "ds-mobile-handbook-detail-modal", inputs: { handbookData: "handbookData", loading: "loading", error: "error", textItems: "textItems", textClose: "textClose", textEmptyTitle: "textEmptyTitle", textEmptyDescription: "textEmptyDescription", textCall: "textCall", textCopyPhone: "textCopyPhone", textEmail: "textEmail", textCopyEmail: "textCopyEmail" }, ngImport: i0, template: `
27957
+ <ds-mobile-modal-base [loading]="loading" [error]="error" [headerTitle]="handbook().title" [headerMeta]="handbook().itemCount + ' ' + textItems" [closeButtonLabel]="textClose">
27925
27958
  <!-- Header Folder Icon -->
27926
27959
  <ds-mobile-handbook-folder-mini header-leading [variant]="handbook().variant" [customColor]="handbook().customColor" [iconName]="handbook().iconName">
27927
27960
  </ds-mobile-handbook-folder-mini>
@@ -27955,6 +27988,7 @@ class DsMobileHandbookDetailModalComponent {
27955
27988
  [initials]="contact.initials"
27956
27989
  [contactPerson]="contact.contactPerson || ''"
27957
27990
  [phoneNumber]="contact.phoneNumber || ''"
27991
+ [email]="contact.email || ''"
27958
27992
  [clickable]="true"
27959
27993
  (contactClick)="handleContactClick(contact)"
27960
27994
  >
@@ -27982,13 +28016,13 @@ class DsMobileHandbookDetailModalComponent {
27982
28016
  <ds-mobile-section>
27983
28017
  <div class="handbook-empty-state">
27984
28018
  <img src="/Assets/Empty%20state-chat.png" alt="No items yet" class="empty-state-image" />
27985
- <h3 class="empty-state-title">No items yet</h3>
27986
- <p class="empty-state-description">This folder is empty</p>
28019
+ <h3 class="empty-state-title">{{ textEmptyTitle }}</h3>
28020
+ <p class="empty-state-description">{{ textEmptyDescription }}</p>
27987
28021
  </div>
27988
28022
  </ds-mobile-section>
27989
28023
  }
27990
28024
  </ds-mobile-modal-base>
27991
- `, isInline: true, styles: [".handbook-detail-container{display:flex;flex-direction:column;width:100%;flex:1}.handbook-item{width:100%;display:flex;flex-direction:column;gap:24px;padding:0;border-bottom:none}.handbook-item.last-item{border-bottom:none}.item-text-group{display:flex;flex-direction:column;gap:8px}.item-title{font-family:Brockmann,sans-serif;font-size:16px;font-weight:600;line-height:24px;color:var(--color-text-primary, #1a1a1a);margin:0}.item-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:22px;color:var(--color-text-primary, #1a1a1a);margin:0}::ng-deep .item-description p{margin:0 0 12px}::ng-deep .item-description p:last-child{margin-bottom:0}::ng-deep .item-description strong,::ng-deep .item-description b{font-weight:600}::ng-deep .item-description em,::ng-deep .item-description i{font-style:italic}::ng-deep .item-description u{text-decoration:underline;text-underline-offset:2px}::ng-deep .item-description h1,::ng-deep .item-description h2,::ng-deep .item-description h3,::ng-deep .item-description h4{font-family:Brockmann,sans-serif;font-weight:600;line-height:1.4;color:var(--color-text-primary, #1a1a1a);margin:0;padding-top:16px;padding-bottom:4px}::ng-deep .item-description h1:first-child,::ng-deep .item-description h2:first-child,::ng-deep .item-description h3:first-child,::ng-deep .item-description h4:first-child{padding-top:0}::ng-deep .item-description h1{font-size:var(--font-size-xl, 20px)}::ng-deep .item-description h2{font-size:var(--font-size-lg, 18px)}::ng-deep .item-description h3,::ng-deep .item-description h4{font-size:var(--font-size-base, 16px)}::ng-deep .item-description ul,::ng-deep .item-description ol{padding-left:20px;margin:0 0 12px}::ng-deep .item-description ul:last-child,::ng-deep .item-description ol:last-child{margin-bottom:0}::ng-deep .item-description li{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:22px;color:var(--color-text-primary, #1a1a1a);margin-bottom:4px}::ng-deep .item-description li:last-child{margin-bottom:0}.item-image{width:100%;max-width:100%;height:280px;-o-object-fit:cover;object-fit:cover;border-radius:12px;display:block}.contacts-attachments-group{display:flex;flex-direction:column;gap:8px}.handbook-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-image{width:96px;height:96px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a)}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373)}@supports (padding: env(safe-area-inset-bottom)){.handbook-detail-container{padding-bottom:calc(20px + env(safe-area-inset-bottom))}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsMobileHandbookFolderMiniComponent, selector: "ds-mobile-handbook-folder-mini", inputs: ["variant", "customColor", "iconName"] }, { kind: "component", type: DsMobileCardInlineFileComponent, selector: "ds-mobile-card-inline-file", inputs: ["fileName", "fileSize", "variant", "layout", "fileUrl"], outputs: ["fileClick"] }, { kind: "component", type: DsMobileCardInlineContactComponent, selector: "ds-mobile-card-inline-contact", inputs: ["name", "initials", "imageUrl", "contactPerson", "phoneNumber", "layout", "clickable", "showChevron", "showEditButton"], outputs: ["contactClick", "editClick"] }, { kind: "component", type: DsMobileSwiperComponent, selector: "ds-mobile-swiper", inputs: ["slideWidth", "gap", "pagination", "autoHeight", "progressiveOpacity", "progressiveScale"] }, { kind: "component", type: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["headerTitleInteractive", "showHeader"], outputs: ["titleClick"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "paddingDesktop", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }] });
28025
+ `, isInline: true, styles: [".handbook-detail-container{display:flex;flex-direction:column;width:100%;flex:1}.handbook-item{width:100%;display:flex;flex-direction:column;gap:24px;padding:0;border-bottom:none}.handbook-item.last-item{border-bottom:none}.item-text-group{display:flex;flex-direction:column;gap:8px}.item-title{font-family:Brockmann,sans-serif;font-size:16px;font-weight:600;line-height:24px;color:var(--color-text-primary, #1a1a1a);margin:0}.item-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:22px;color:var(--color-text-primary, #1a1a1a);margin:0}::ng-deep .item-description p{margin:0 0 12px}::ng-deep .item-description p:last-child{margin-bottom:0}::ng-deep .item-description strong,::ng-deep .item-description b{font-weight:600}::ng-deep .item-description em,::ng-deep .item-description i{font-style:italic}::ng-deep .item-description u{text-decoration:underline;text-underline-offset:2px}::ng-deep .item-description h1,::ng-deep .item-description h2,::ng-deep .item-description h3,::ng-deep .item-description h4{font-family:Brockmann,sans-serif;font-weight:600;line-height:1.4;color:var(--color-text-primary, #1a1a1a);margin:0;padding-top:16px;padding-bottom:4px}::ng-deep .item-description h1:first-child,::ng-deep .item-description h2:first-child,::ng-deep .item-description h3:first-child,::ng-deep .item-description h4:first-child{padding-top:0}::ng-deep .item-description h1{font-size:var(--font-size-xl, 20px)}::ng-deep .item-description h2{font-size:var(--font-size-lg, 18px)}::ng-deep .item-description h3,::ng-deep .item-description h4{font-size:var(--font-size-base, 16px)}::ng-deep .item-description ul,::ng-deep .item-description ol{padding-left:20px;margin:0 0 12px}::ng-deep .item-description ul:last-child,::ng-deep .item-description ol:last-child{margin-bottom:0}::ng-deep .item-description li{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:22px;color:var(--color-text-primary, #1a1a1a);margin-bottom:4px}::ng-deep .item-description li:last-child{margin-bottom:0}.item-image{width:100%;max-width:100%;height:280px;-o-object-fit:cover;object-fit:cover;border-radius:12px;display:block}.contacts-attachments-group{display:flex;flex-direction:column;gap:8px}.handbook-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-image{width:96px;height:96px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a)}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373)}@supports (padding: env(safe-area-inset-bottom)){.handbook-detail-container{padding-bottom:calc(20px + env(safe-area-inset-bottom))}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsMobileHandbookFolderMiniComponent, selector: "ds-mobile-handbook-folder-mini", inputs: ["variant", "customColor", "iconName"] }, { kind: "component", type: DsMobileCardInlineFileComponent, selector: "ds-mobile-card-inline-file", inputs: ["fileName", "fileSize", "variant", "layout", "fileUrl"], outputs: ["fileClick"] }, { kind: "component", type: DsMobileCardInlineContactComponent, selector: "ds-mobile-card-inline-contact", inputs: ["name", "initials", "imageUrl", "contactPerson", "phoneNumber", "email", "layout", "clickable", "showChevron", "showEditButton"], outputs: ["contactClick", "editClick"] }, { kind: "component", type: DsMobileSwiperComponent, selector: "ds-mobile-swiper", inputs: ["slideWidth", "gap", "pagination", "autoHeight", "progressiveOpacity", "progressiveScale"] }, { kind: "component", type: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["headerTitleInteractive", "showHeader"], outputs: ["titleClick"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "paddingDesktop", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }] });
27992
28026
  }
27993
28027
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileHandbookDetailModalComponent, decorators: [{
27994
28028
  type: Component,
@@ -28001,7 +28035,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
28001
28035
  DsMobileModalBaseComponent,
28002
28036
  DsMobileSectionComponent,
28003
28037
  ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: `
28004
- <ds-mobile-modal-base [loading]="loading" [error]="error" [headerTitle]="handbook().title" [headerMeta]="handbook().itemCount + ' emner'" closeButtonLabel="Luk">
28038
+ <ds-mobile-modal-base [loading]="loading" [error]="error" [headerTitle]="handbook().title" [headerMeta]="handbook().itemCount + ' ' + textItems" [closeButtonLabel]="textClose">
28005
28039
  <!-- Header Folder Icon -->
28006
28040
  <ds-mobile-handbook-folder-mini header-leading [variant]="handbook().variant" [customColor]="handbook().customColor" [iconName]="handbook().iconName">
28007
28041
  </ds-mobile-handbook-folder-mini>
@@ -28035,6 +28069,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
28035
28069
  [initials]="contact.initials"
28036
28070
  [contactPerson]="contact.contactPerson || ''"
28037
28071
  [phoneNumber]="contact.phoneNumber || ''"
28072
+ [email]="contact.email || ''"
28038
28073
  [clickable]="true"
28039
28074
  (contactClick)="handleContactClick(contact)"
28040
28075
  >
@@ -28062,8 +28097,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
28062
28097
  <ds-mobile-section>
28063
28098
  <div class="handbook-empty-state">
28064
28099
  <img src="/Assets/Empty%20state-chat.png" alt="No items yet" class="empty-state-image" />
28065
- <h3 class="empty-state-title">No items yet</h3>
28066
- <p class="empty-state-description">This folder is empty</p>
28100
+ <h3 class="empty-state-title">{{ textEmptyTitle }}</h3>
28101
+ <p class="empty-state-description">{{ textEmptyDescription }}</p>
28067
28102
  </div>
28068
28103
  </ds-mobile-section>
28069
28104
  }
@@ -28075,6 +28110,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
28075
28110
  type: Input
28076
28111
  }], error: [{
28077
28112
  type: Input
28113
+ }], textItems: [{
28114
+ type: Input
28115
+ }], textClose: [{
28116
+ type: Input
28117
+ }], textEmptyTitle: [{
28118
+ type: Input
28119
+ }], textEmptyDescription: [{
28120
+ type: Input
28121
+ }], textCall: [{
28122
+ type: Input
28123
+ }], textCopyPhone: [{
28124
+ type: Input
28125
+ }], textEmail: [{
28126
+ type: Input
28127
+ }], textCopyEmail: [{
28128
+ type: Input
28078
28129
  }] } });
28079
28130
 
28080
28131
  /**
@@ -37324,7 +37375,7 @@ class DsMobileInviteMemberSheetComponent {
37324
37375
  </div>
37325
37376
  </div>
37326
37377
  </div>
37327
- `, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%}.sheet-content{overflow:hidden;width:100%;flex:1;background:var(--color-background-neutral-primary, #ffffff)}.view-container{display:grid;grid-template-columns:50% 50%;width:200%;transform:translate(0);transition:transform .3s cubic-bezier(.4,0,.2,1),height .3s cubic-bezier(.4,0,.2,1),opacity .15s ease-in-out;overflow:hidden}.view-container.show-step2{transform:translate(-50%)}.view{width:100%;display:flex;flex-direction:column}.view-container:not(.is-animating) .view:not(.active){height:0!important;overflow:hidden!important}.step-content{flex:1;overflow-y:auto;background:var(--color-background-neutral-primary, #ffffff)}.info-card{background:var(--color-background-neutral-secondary, #F5F6F8);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.info-row{display:flex;align-items:flex-start;gap:10px;font-size:13px;color:var(--text-color-default-secondary, #545B66)}.info-row svg{flex-shrink:0;margin-top:1px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DsMobileBottomSheetHeaderComponent, selector: "ds-mobile-bottom-sheet-header", inputs: ["title", "leftButtonLabel", "rightButtonLabel", "rightButtonDisabled", "rightButtonLoading", "showLeftButton", "showRightButton"], outputs: ["leftButtonClick", "rightButtonClick"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "paddingDesktop", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsTextInputComponent, selector: "ds-text-input", inputs: ["type", "label", "placeholder", "disabled", "readonly", "required", "hasError", "errorMessage", "autocomplete", "inputmode", "autoClearError", "validator"], outputs: ["valueChange", "blur", "focus", "errorCleared"] }, { kind: "component", type: DsMobileCardInlineContactComponent, selector: "ds-mobile-card-inline-contact", inputs: ["name", "initials", "imageUrl", "contactPerson", "phoneNumber", "layout", "clickable", "showChevron", "showEditButton"], outputs: ["contactClick", "editClick"] }] });
37378
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%}.sheet-content{overflow:hidden;width:100%;flex:1;background:var(--color-background-neutral-primary, #ffffff)}.view-container{display:grid;grid-template-columns:50% 50%;width:200%;transform:translate(0);transition:transform .3s cubic-bezier(.4,0,.2,1),height .3s cubic-bezier(.4,0,.2,1),opacity .15s ease-in-out;overflow:hidden}.view-container.show-step2{transform:translate(-50%)}.view{width:100%;display:flex;flex-direction:column}.view-container:not(.is-animating) .view:not(.active){height:0!important;overflow:hidden!important}.step-content{flex:1;overflow-y:auto;background:var(--color-background-neutral-primary, #ffffff)}.info-card{background:var(--color-background-neutral-secondary, #F5F6F8);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.info-row{display:flex;align-items:flex-start;gap:10px;font-size:13px;color:var(--text-color-default-secondary, #545B66)}.info-row svg{flex-shrink:0;margin-top:1px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DsMobileBottomSheetHeaderComponent, selector: "ds-mobile-bottom-sheet-header", inputs: ["title", "leftButtonLabel", "rightButtonLabel", "rightButtonDisabled", "rightButtonLoading", "showLeftButton", "showRightButton"], outputs: ["leftButtonClick", "rightButtonClick"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "paddingDesktop", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsTextInputComponent, selector: "ds-text-input", inputs: ["type", "label", "placeholder", "disabled", "readonly", "required", "hasError", "errorMessage", "autocomplete", "inputmode", "autoClearError", "validator"], outputs: ["valueChange", "blur", "focus", "errorCleared"] }, { kind: "component", type: DsMobileCardInlineContactComponent, selector: "ds-mobile-card-inline-contact", inputs: ["name", "initials", "imageUrl", "contactPerson", "phoneNumber", "email", "layout", "clickable", "showChevron", "showEditButton"], outputs: ["contactClick", "editClick"] }] });
37328
37379
  }
37329
37380
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileInviteMemberSheetComponent, decorators: [{
37330
37381
  type: Component,
@@ -37846,7 +37897,7 @@ class AcceptInvitePageComponent {
37846
37897
  </ds-mobile-section>
37847
37898
  }
37848
37899
  </ds-mobile-page-details>
37849
- `, isInline: true, styles: [".field-group{display:flex;flex-direction:column;gap:8px}.section-label{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;color:var(--text-color-default-primary);margin:0;letter-spacing:-.2px;line-height:1.4}.accept-cta{padding:8px 0 4px}.accept-cta ds-button{display:block;width:100%}.accept-cta ::ng-deep ds-button>button{width:100%;border-radius:9999px}.accept-hint{margin:10px 0 0;font-size:13px;color:var(--text-color-default-tertiary, #7C8694);text-align:center}.expired-banner{display:flex;align-items:center;gap:10px;padding:14px 16px;border-radius:12px;background:var(--color-background-warning-secondary, #FEF3C7)}.expired-banner__icon{width:20px;height:20px;flex-shrink:0;color:var(--color-warning-base, #D97706)}.expired-banner__text{font-family:Brockmann,sans-serif;font-size:14px;font-weight:500;line-height:1.4;color:var(--color-warning-content, #92400E);margin:0}.resend-cta{padding:8px 0 4px}.resend-cta ds-button{display:block;width:100%}.resend-cta ::ng-deep ds-button>button{width:100%;border-radius:9999px}.resend-hint{margin:10px 0 0;font-size:13px;color:var(--text-color-default-tertiary, #7C8694);text-align:center}@keyframes slideDown{0%{transform:translateY(-8px);opacity:0}to{transform:translateY(0);opacity:1}}.success-notice{padding:14px 16px;border-radius:12px;background:var(--color-background-success-secondary, #DCFCE7);display:flex;align-items:center;gap:10px;font-family:Brockmann,sans-serif;font-size:14px;font-weight:500;color:var(--color-success-base, #158452);animation:slideDown .2s ease-out}.success-check{width:20px;height:20px;border-radius:50%;background:var(--color-success-base, #158452);display:flex;align-items:center;justify-content:center;flex-shrink:0}\n"], dependencies: [{ kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsMobilePageDetailsComponent, selector: "ds-mobile-page-details", inputs: ["title", "editableTitle", "backRoute", "contentPadding", "tabs", "activeTab", "showRefresh", "scrollThreshold", "headerFadeDistance"], outputs: ["back", "tabChange", "refresh", "scroll", "titleClick"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "paddingDesktop", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileCardInlineContactComponent, selector: "ds-mobile-card-inline-contact", inputs: ["name", "initials", "imageUrl", "contactPerson", "phoneNumber", "layout", "clickable", "showChevron", "showEditButton"], outputs: ["contactClick", "editClick"] }] });
37900
+ `, isInline: true, styles: [".field-group{display:flex;flex-direction:column;gap:8px}.section-label{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;color:var(--text-color-default-primary);margin:0;letter-spacing:-.2px;line-height:1.4}.accept-cta{padding:8px 0 4px}.accept-cta ds-button{display:block;width:100%}.accept-cta ::ng-deep ds-button>button{width:100%;border-radius:9999px}.accept-hint{margin:10px 0 0;font-size:13px;color:var(--text-color-default-tertiary, #7C8694);text-align:center}.expired-banner{display:flex;align-items:center;gap:10px;padding:14px 16px;border-radius:12px;background:var(--color-background-warning-secondary, #FEF3C7)}.expired-banner__icon{width:20px;height:20px;flex-shrink:0;color:var(--color-warning-base, #D97706)}.expired-banner__text{font-family:Brockmann,sans-serif;font-size:14px;font-weight:500;line-height:1.4;color:var(--color-warning-content, #92400E);margin:0}.resend-cta{padding:8px 0 4px}.resend-cta ds-button{display:block;width:100%}.resend-cta ::ng-deep ds-button>button{width:100%;border-radius:9999px}.resend-hint{margin:10px 0 0;font-size:13px;color:var(--text-color-default-tertiary, #7C8694);text-align:center}@keyframes slideDown{0%{transform:translateY(-8px);opacity:0}to{transform:translateY(0);opacity:1}}.success-notice{padding:14px 16px;border-radius:12px;background:var(--color-background-success-secondary, #DCFCE7);display:flex;align-items:center;gap:10px;font-family:Brockmann,sans-serif;font-size:14px;font-weight:500;color:var(--color-success-base, #158452);animation:slideDown .2s ease-out}.success-check{width:20px;height:20px;border-radius:50%;background:var(--color-success-base, #158452);display:flex;align-items:center;justify-content:center;flex-shrink:0}\n"], dependencies: [{ kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsMobilePageDetailsComponent, selector: "ds-mobile-page-details", inputs: ["title", "editableTitle", "backRoute", "contentPadding", "tabs", "activeTab", "showRefresh", "scrollThreshold", "headerFadeDistance"], outputs: ["back", "tabChange", "refresh", "scroll", "titleClick"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "paddingDesktop", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileCardInlineContactComponent, selector: "ds-mobile-card-inline-contact", inputs: ["name", "initials", "imageUrl", "contactPerson", "phoneNumber", "email", "layout", "clickable", "showChevron", "showEditButton"], outputs: ["contactClick", "editClick"] }] });
37850
37901
  }
37851
37902
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AcceptInvitePageComponent, decorators: [{
37852
37903
  type: Component,