@kirbydesign/designsystem 8.10.0 → 8.11.0

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.
Files changed (34) hide show
  1. package/esm2020/calendar/calendar.component.mjs +6 -8
  2. package/esm2020/divider/divider.component.mjs +3 -3
  3. package/esm2020/icon/kirby-icon-settings.mjs +2 -1
  4. package/esm2020/item-sliding/item-sliding.component.mjs +13 -6
  5. package/esm2020/tab-navigation/tab-navigation/tab-navigation.component.mjs +2 -2
  6. package/esm2020/testing/test-helper.mjs +9 -1
  7. package/fesm2015/kirbydesign-designsystem-calendar.mjs +5 -7
  8. package/fesm2015/kirbydesign-designsystem-calendar.mjs.map +1 -1
  9. package/fesm2015/kirbydesign-designsystem-divider.mjs +2 -2
  10. package/fesm2015/kirbydesign-designsystem-divider.mjs.map +1 -1
  11. package/fesm2015/kirbydesign-designsystem-icon.mjs +1 -0
  12. package/fesm2015/kirbydesign-designsystem-icon.mjs.map +1 -1
  13. package/fesm2015/kirbydesign-designsystem-item-sliding.mjs +12 -5
  14. package/fesm2015/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
  15. package/fesm2015/kirbydesign-designsystem-tab-navigation.mjs +1 -1
  16. package/fesm2015/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
  17. package/fesm2015/kirbydesign-designsystem-testing.mjs +8 -0
  18. package/fesm2015/kirbydesign-designsystem-testing.mjs.map +1 -1
  19. package/fesm2020/kirbydesign-designsystem-calendar.mjs +5 -7
  20. package/fesm2020/kirbydesign-designsystem-calendar.mjs.map +1 -1
  21. package/fesm2020/kirbydesign-designsystem-divider.mjs +2 -2
  22. package/fesm2020/kirbydesign-designsystem-divider.mjs.map +1 -1
  23. package/fesm2020/kirbydesign-designsystem-icon.mjs +1 -0
  24. package/fesm2020/kirbydesign-designsystem-icon.mjs.map +1 -1
  25. package/fesm2020/kirbydesign-designsystem-item-sliding.mjs +12 -5
  26. package/fesm2020/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
  27. package/fesm2020/kirbydesign-designsystem-tab-navigation.mjs +1 -1
  28. package/fesm2020/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
  29. package/fesm2020/kirbydesign-designsystem-testing.mjs +8 -0
  30. package/fesm2020/kirbydesign-designsystem-testing.mjs.map +1 -1
  31. package/icons/svg/adjust.svg +2 -0
  32. package/item-sliding/item-sliding.component.d.ts +3 -0
  33. package/package.json +1 -1
  34. package/testing/test-helper.d.ts +1 -0
@@ -5,10 +5,10 @@ import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
5
5
  class DividerComponent {
6
6
  }
7
7
  /** @nocollapse */ DividerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
- /** @nocollapse */ DividerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DividerComponent, isStandalone: true, selector: "kirby-divider", inputs: { hasMargin: "hasMargin" }, ngImport: i0, template: "<hr [class.no-margin]=\"!hasMargin\" />\n", styles: [":host-context(kirby-card),:host-context(.kirby-color-brightness-white){--kirby-divider-color: var(--kirby-background-color)}:host-context(.kirby-color-brightness-light){--kirby-divider-color: var(--kirby-medium)}hr{margin-top:8px;margin-bottom:8px;border:0;border-top:1px solid var(--kirby-divider-color, var(--kirby-medium))}hr.no-margin{margin-top:0;margin-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8
+ /** @nocollapse */ DividerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DividerComponent, isStandalone: true, selector: "kirby-divider", inputs: { hasMargin: "hasMargin" }, ngImport: i0, template: "<hr [class.no-margin]=\"!hasMargin\" />\n", styles: ["hr{margin-top:8px;margin-bottom:8px;border:0;border-top:1px solid var(--kirby-divider-color, var(--kirby-medium))}hr.no-margin{margin-top:0;margin-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9
9
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DividerComponent, decorators: [{
10
10
  type: Component,
11
- args: [{ standalone: true, imports: [CommonModule], selector: 'kirby-divider', changeDetection: ChangeDetectionStrategy.OnPush, template: "<hr [class.no-margin]=\"!hasMargin\" />\n", styles: [":host-context(kirby-card),:host-context(.kirby-color-brightness-white){--kirby-divider-color: var(--kirby-background-color)}:host-context(.kirby-color-brightness-light){--kirby-divider-color: var(--kirby-medium)}hr{margin-top:8px;margin-bottom:8px;border:0;border-top:1px solid var(--kirby-divider-color, var(--kirby-medium))}hr.no-margin{margin-top:0;margin-bottom:0}\n"] }]
11
+ args: [{ standalone: true, imports: [CommonModule], selector: 'kirby-divider', changeDetection: ChangeDetectionStrategy.OnPush, template: "<hr [class.no-margin]=\"!hasMargin\" />\n", styles: ["hr{margin-top:8px;margin-bottom:8px;border:0;border-top:1px solid var(--kirby-divider-color, var(--kirby-medium))}hr.no-margin{margin-top:0;margin-bottom:0}\n"] }]
12
12
  }], propDecorators: { hasMargin: [{
13
13
  type: Input
14
14
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-divider.mjs","sources":["../../../../libs/designsystem/divider/src/divider.component.ts","../../../../libs/designsystem/divider/src/divider.component.html","../../../../libs/designsystem/divider/src/kirbydesign-designsystem-divider.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'kirby-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent {\n @Input()\n hasMargin: boolean;\n}\n","<hr [class.no-margin]=\"!hasMargin\" />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MAWa,gBAAgB,CAAA;;gIAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oHAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX7B,2CACA,EAAA,MAAA,EAAA,CAAA,oXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAMX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,YACb,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,oXAAA,CAAA,EAAA,CAAA;8BAI/C,SAAS,EAAA,CAAA;sBADR,KAAK;;;AEZR;;AAEG;;;;"}
1
+ {"version":3,"file":"kirbydesign-designsystem-divider.mjs","sources":["../../../../libs/designsystem/divider/src/divider.component.ts","../../../../libs/designsystem/divider/src/divider.component.html","../../../../libs/designsystem/divider/src/kirbydesign-designsystem-divider.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'kirby-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent {\n @Input()\n hasMargin: boolean;\n}\n","<hr [class.no-margin]=\"!hasMargin\" />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MAWa,gBAAgB,CAAA;;gIAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oHAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX7B,2CACA,EAAA,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAMX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,YACb,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA,CAAA;8BAI/C,SAAS,EAAA,CAAA;sBADR,KAAK;;;AEZR;;AAEG;;;;"}
@@ -143,6 +143,7 @@ const kirbyIconSettings = {
143
143
  { name: 'calculator', svg: 'assets/kirby/icons/svg/calculator.svg' },
144
144
  { name: 'grid', svg: 'assets/kirby/icons/svg/grid.svg' },
145
145
  { name: 'list', svg: 'assets/kirby/icons/svg/list.svg' },
146
+ { name: 'adjust', svg: 'assets/kirby/icons/svg/adjust.svg' },
146
147
  ],
147
148
  };
148
149
  const defaultIcons = kirbyIconSettings.icons.map((icon) => icon.name);
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-icon.mjs","sources":["../../../../libs/designsystem/icon/src/icon-registry.service.ts","../../../../libs/designsystem/icon/src/kirby-icon-settings.ts","../../../../libs/designsystem/icon/src/icon.component.ts","../../../../libs/designsystem/icon/src/icon.component.html","../../../../libs/designsystem/icon/src/icon.module.ts","../../../../libs/designsystem/icon/src/kirbydesign-designsystem-icon.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { Icon } from './icon-settings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconRegistryService {\n private iconRegistry = new Map<string, string>();\n\n public addIcon(iconName: string, svgPath: string): void {\n if (!this.iconRegistry.has(iconName)) {\n this.iconRegistry.set(iconName, svgPath);\n } else {\n console.warn(`Icon with name: \"${iconName}\" already exists`);\n }\n }\n\n public addIcons(icons: Icon[]): void {\n if (!icons) {\n console.error('Icons not defined');\n return;\n }\n icons.forEach((icon) => {\n this.addIcon(icon.name, icon.svg);\n });\n }\n\n getIcons(): Icon[] {\n return [...this.iconRegistry].map(\n (keyValPair) => ({ name: keyValPair[0], svg: keyValPair[1] } as Icon)\n );\n }\n\n getIcon(name: string): Icon {\n const svg = this.iconRegistry.get(name);\n return svg ? { name, svg } : undefined;\n }\n}\n","import { IconSettings } from './icon-settings';\n\n/* eslint-disable */\nexport const kirbyIconSettings: IconSettings = {\n icons: [\n { name: 'accounts-outline', svg: 'assets/kirby/icons/svg/accounts-outline.svg' },\n { name: 'accounts', svg: 'assets/kirby/icons/svg/accounts.svg' },\n { name: 'add', svg: 'assets/kirby/icons/svg/add.svg' },\n { name: 'remove', svg: 'assets/kirby/icons/svg/remove.svg' },\n { name: 'unsubscribe', svg: 'assets/kirby/icons/svg/unsubscribe.svg' },\n { name: 'arrow-back', svg: 'assets/kirby/icons/svg/arrow-back.svg' },\n { name: 'arrow-down', svg: 'assets/kirby/icons/svg/arrow-down.svg' },\n { name: 'arrow-more', svg: 'assets/kirby/icons/svg/arrow-more.svg' },\n { name: 'arrow-up', svg: 'assets/kirby/icons/svg/arrow-up.svg' },\n { name: 'attach', svg: 'assets/kirby/icons/svg/attach.svg' },\n { name: 'backspace', svg: 'assets/kirby/icons/svg/backspace.svg' },\n { name: 'calendar', svg: 'assets/kirby/icons/svg/calendar.svg' },\n { name: 'camera', svg: 'assets/kirby/icons/svg/camera.svg' },\n { name: 'car', svg: 'assets/kirby/icons/svg/car.svg' },\n { name: 'checkbox-outline', svg: 'assets/kirby/icons/svg/checkbox-outline.svg' },\n { name: 'checkbox', svg: 'assets/kirby/icons/svg/checkbox.svg' },\n { name: 'checkmark-selected', svg: 'assets/kirby/icons/svg/checkmark-selected.svg' },\n { name: 'close', svg: 'assets/kirby/icons/svg/close.svg' },\n { name: 'cog', svg: 'assets/kirby/icons/svg/cog.svg' },\n { name: 'coinstack', svg: 'assets/kirby/icons/svg/coinstack.svg' },\n { name: 'contact', svg: 'assets/kirby/icons/svg/contact.svg' },\n { name: 'copy', svg: 'assets/kirby/icons/svg/copy.svg' },\n { name: 'flag', svg: 'assets/kirby/icons/svg/flag.svg' },\n { name: 'edit', svg: 'assets/kirby/icons/svg/edit.svg' },\n { name: 'filter', svg: 'assets/kirby/icons/svg/filter.svg' },\n { name: 'flash-off', svg: 'assets/kirby/icons/svg/flash-off.svg' },\n { name: 'flash', svg: 'assets/kirby/icons/svg/flash.svg' },\n { name: 'moneybag', svg: 'assets/kirby/icons/svg/moneybag.svg' },\n { name: 'help', svg: 'assets/kirby/icons/svg/help.svg' },\n { name: 'home', svg: 'assets/kirby/icons/svg/home.svg' },\n { name: 'inbox', svg: 'assets/kirby/icons/svg/inbox.svg' },\n { name: 'inbox-outline', svg: 'assets/kirby/icons/svg/inbox-outline.svg' },\n { name: 'information', svg: 'assets/kirby/icons/svg/information.svg' },\n { name: 'insurance', svg: 'assets/kirby/icons/svg/insurance.svg' },\n { name: 'investment', svg: 'assets/kirby/icons/svg/investment.svg' },\n { name: 'kirby', svg: 'assets/kirby/icons/svg/kirby.svg' },\n { name: 'link', svg: 'assets/kirby/icons/svg/link.svg' },\n { name: 'log-out', svg: 'assets/kirby/icons/svg/log-out.svg' },\n { name: 'menu-outline', svg: 'assets/kirby/icons/svg/menu-outline.svg' },\n { name: 'menu', svg: 'assets/kirby/icons/svg/menu.svg' },\n { name: 'menu-no-decoration', svg: 'assets/kirby/icons/svg/menu-no-decoration.svg' },\n { name: 'misc', svg: 'assets/kirby/icons/svg/misc.svg' },\n { name: 'more', svg: 'assets/kirby/icons/svg/more.svg' },\n { name: 'move', svg: 'assets/kirby/icons/svg/move.svg' },\n { name: 'payment-card', svg: 'assets/kirby/icons/svg/payment-card.svg' },\n { name: 'pension', svg: 'assets/kirby/icons/svg/pension.svg' },\n { name: 'person-outline', svg: 'assets/kirby/icons/svg/person-outline.svg' },\n { name: 'person', svg: 'assets/kirby/icons/svg/person.svg' },\n { name: 'qr', svg: 'assets/kirby/icons/svg/QR.svg' },\n { name: 'recurring', svg: 'assets/kirby/icons/svg/recurring.svg' },\n { name: 'salary', svg: 'assets/kirby/icons/svg/salary.svg' },\n { name: 'search', svg: 'assets/kirby/icons/svg/search.svg' },\n { name: 'share', svg: 'assets/kirby/icons/svg/share.svg' },\n { name: 'sort', svg: 'assets/kirby/icons/svg/sort.svg' },\n { name: 'support', svg: 'assets/kirby/icons/svg/support.svg' },\n { name: 'swap', svg: 'assets/kirby/icons/svg/swap.svg' },\n { name: 'trash', svg: 'assets/kirby/icons/svg/trash.svg' },\n { name: 'foreign-payment', svg: 'assets/kirby/icons/svg/foreign-payment.svg' },\n { name: 'clock', svg: 'assets/kirby/icons/svg/clock.svg' },\n { name: 'verify', svg: 'assets/kirby/icons/svg/verify.svg' },\n { name: 'warning', svg: 'assets/kirby/icons/svg/warning.svg' },\n { name: 'write-message', svg: 'assets/kirby/icons/svg/write-message.svg' },\n { name: 'reorder', svg: 'assets/kirby/icons/svg/reorder.svg' },\n { name: 'accident', svg: 'assets/kirby/icons/svg/accident.svg' },\n { name: 'health', svg: 'assets/kirby/icons/svg/health.svg' },\n { name: 'illness', svg: 'assets/kirby/icons/svg/illness.svg' },\n { name: 'incapacity', svg: 'assets/kirby/icons/svg/incapacity.svg' },\n { name: 'life', svg: 'assets/kirby/icons/svg/life.svg' },\n { name: 'help-decoration', svg: 'assets/kirby/icons/svg/help-decoration.svg' },\n { name: 'information-decoration', svg: 'assets/kirby/icons/svg/information-decoration.svg' },\n { name: 'notification', svg: 'assets/kirby/icons/svg/notification.svg' },\n { name: 'transfer-ownership', svg: 'assets/kirby/icons/svg/transfer-ownership.svg' },\n { name: 'update', svg: 'assets/kirby/icons/svg/update.svg' },\n { name: 'user-blocked', svg: 'assets/kirby/icons/svg/user-blocked.svg' },\n { name: 'add-bank', svg: 'assets/kirby/icons/svg/add-bank.svg' },\n { name: 'participants', svg: 'assets/kirby/icons/svg/participants.svg' },\n { name: 'download', svg: 'assets/kirby/icons/svg/download.svg' },\n { name: 'globe-transfer', svg: 'assets/kirby/icons/svg/globe-transfer.svg' },\n { name: 'banknotes', svg: 'assets/kirby/icons/svg/banknotes.svg' },\n { name: 'air-balloon', svg: 'assets/kirby/icons/svg/air-balloon.svg' },\n { name: 'piggybank', svg: 'assets/kirby/icons/svg/piggybank.svg' },\n { name: 'business', svg: 'assets/kirby/icons/svg/business.svg' },\n { name: 'navigation', svg: 'assets/kirby/icons/svg/navigation.svg' },\n { name: 'phone-device', svg: 'assets/kirby/icons/svg/phone-device.svg' },\n { name: 'upload', svg: 'assets/kirby/icons/svg/upload.svg' },\n { name: 'document', svg: 'assets/kirby/icons/svg/document.svg' },\n { name: 'chat', svg: 'assets/kirby/icons/svg/chat.svg' },\n { name: 'feedback', svg: 'assets/kirby/icons/svg/feedback.svg' },\n { name: 'keyboard', svg: 'assets/kirby/icons/svg/keyboard.svg' },\n { name: 'lock', svg: 'assets/kirby/icons/svg/lock.svg' },\n { name: 'see', svg: 'assets/kirby/icons/svg/see.svg' },\n { name: 'overview', svg: 'assets/kirby/icons/svg/overview.svg' },\n { name: 'overview-outline', svg: 'assets/kirby/icons/svg/overview-outline.svg' },\n { name: 'arrow-down-fill', svg: 'assets/kirby/icons/svg/arrow-down-fill.svg' },\n { name: 'arrow-up-fill', svg: 'assets/kirby/icons/svg/arrow-up-fill.svg' },\n { name: 'calculator', svg: 'assets/kirby/icons/svg/calculator.svg' },\n { name: 'grid', svg: 'assets/kirby/icons/svg/grid.svg' },\n { name: 'list', svg: 'assets/kirby/icons/svg/list.svg' },\n ],\n};\n\nexport const defaultIcons = kirbyIconSettings.icons.map((icon) => icon.name);\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\n\nimport { IconRegistryService } from './icon-registry.service';\nimport { Icon } from './icon-settings';\nimport { kirbyIconSettings } from './kirby-icon-settings';\n\nexport enum IconSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\n@Component({\n selector: 'kirby-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: { '[class.kirby-icon]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnChanges {\n defaultIcon: Icon = this.findIcon(kirbyIconSettings.icons, 'cog');\n private _icon = (this.icon = this.defaultIcon);\n @HostBinding('class')\n @Input()\n size: IconSize | `${IconSize}`;\n\n @Input() name: string;\n @Input() customName: string;\n\n get icon(): Icon {\n return this._icon;\n }\n\n set icon(icon: Icon) {\n // If icon are not found, set default icon\n if (!icon && (this.name || this.customName)) {\n this.warnAboutMissingIcon();\n\n icon = this.defaultIcon;\n\n // If default icon are not found\n if (!icon) {\n console.warn('Default icon was not found.');\n return;\n }\n }\n\n // Set icon if it's found\n if (icon) {\n this._icon = icon;\n }\n }\n\n private warnAboutMissingIcon(): void {\n if (this.customName) {\n console.warn(`Custom icon with name \"${this.customName}\" was not found. \n Do you have a typo in 'customName' or\n forgot to configure the custom icon through the 'IconRegistryService'?`);\n } else {\n console.warn(`Built-in icon with name \"${this.name}\" was not found. \n Do you have a typo in 'name' or\n did you mean to use a custom icon? If so, please use: \n <kirby-icon customName=\"${this.name}\"></kirby-icon>`);\n }\n }\n\n constructor(private iconRegistryService: IconRegistryService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.name && changes.name.currentValue) {\n this.icon = this.findIcon(kirbyIconSettings.icons, changes.name.currentValue);\n } else if (changes.customName && changes.customName.currentValue) {\n this.icon = this.iconRegistryService.getIcon(changes.customName.currentValue);\n }\n }\n\n private findIcon(icons, name: string): Icon {\n return icons.find((icon) => icon.name === name);\n }\n}\n","<ion-icon [src]=\"icon?.svg\"></ion-icon>\n","import { NgModule } from '@angular/core';\nimport { KirbyIonicModule } from '@kirbydesign/designsystem/kirby-ionic-module';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\n\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n imports: [KirbyIonicModule, ThemeColorDirective],\n declarations: [IconComponent],\n exports: [IconComponent, ThemeColorDirective],\n})\nexport class IconModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IconRegistryService"],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-icon.mjs","sources":["../../../../libs/designsystem/icon/src/icon-registry.service.ts","../../../../libs/designsystem/icon/src/kirby-icon-settings.ts","../../../../libs/designsystem/icon/src/icon.component.ts","../../../../libs/designsystem/icon/src/icon.component.html","../../../../libs/designsystem/icon/src/icon.module.ts","../../../../libs/designsystem/icon/src/kirbydesign-designsystem-icon.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { Icon } from './icon-settings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconRegistryService {\n private iconRegistry = new Map<string, string>();\n\n public addIcon(iconName: string, svgPath: string): void {\n if (!this.iconRegistry.has(iconName)) {\n this.iconRegistry.set(iconName, svgPath);\n } else {\n console.warn(`Icon with name: \"${iconName}\" already exists`);\n }\n }\n\n public addIcons(icons: Icon[]): void {\n if (!icons) {\n console.error('Icons not defined');\n return;\n }\n icons.forEach((icon) => {\n this.addIcon(icon.name, icon.svg);\n });\n }\n\n getIcons(): Icon[] {\n return [...this.iconRegistry].map(\n (keyValPair) => ({ name: keyValPair[0], svg: keyValPair[1] } as Icon)\n );\n }\n\n getIcon(name: string): Icon {\n const svg = this.iconRegistry.get(name);\n return svg ? { name, svg } : undefined;\n }\n}\n","import { IconSettings } from './icon-settings';\n\n/* eslint-disable */\nexport const kirbyIconSettings: IconSettings = {\n icons: [\n { name: 'accounts-outline', svg: 'assets/kirby/icons/svg/accounts-outline.svg' },\n { name: 'accounts', svg: 'assets/kirby/icons/svg/accounts.svg' },\n { name: 'add', svg: 'assets/kirby/icons/svg/add.svg' },\n { name: 'remove', svg: 'assets/kirby/icons/svg/remove.svg' },\n { name: 'unsubscribe', svg: 'assets/kirby/icons/svg/unsubscribe.svg' },\n { name: 'arrow-back', svg: 'assets/kirby/icons/svg/arrow-back.svg' },\n { name: 'arrow-down', svg: 'assets/kirby/icons/svg/arrow-down.svg' },\n { name: 'arrow-more', svg: 'assets/kirby/icons/svg/arrow-more.svg' },\n { name: 'arrow-up', svg: 'assets/kirby/icons/svg/arrow-up.svg' },\n { name: 'attach', svg: 'assets/kirby/icons/svg/attach.svg' },\n { name: 'backspace', svg: 'assets/kirby/icons/svg/backspace.svg' },\n { name: 'calendar', svg: 'assets/kirby/icons/svg/calendar.svg' },\n { name: 'camera', svg: 'assets/kirby/icons/svg/camera.svg' },\n { name: 'car', svg: 'assets/kirby/icons/svg/car.svg' },\n { name: 'checkbox-outline', svg: 'assets/kirby/icons/svg/checkbox-outline.svg' },\n { name: 'checkbox', svg: 'assets/kirby/icons/svg/checkbox.svg' },\n { name: 'checkmark-selected', svg: 'assets/kirby/icons/svg/checkmark-selected.svg' },\n { name: 'close', svg: 'assets/kirby/icons/svg/close.svg' },\n { name: 'cog', svg: 'assets/kirby/icons/svg/cog.svg' },\n { name: 'coinstack', svg: 'assets/kirby/icons/svg/coinstack.svg' },\n { name: 'contact', svg: 'assets/kirby/icons/svg/contact.svg' },\n { name: 'copy', svg: 'assets/kirby/icons/svg/copy.svg' },\n { name: 'flag', svg: 'assets/kirby/icons/svg/flag.svg' },\n { name: 'edit', svg: 'assets/kirby/icons/svg/edit.svg' },\n { name: 'filter', svg: 'assets/kirby/icons/svg/filter.svg' },\n { name: 'flash-off', svg: 'assets/kirby/icons/svg/flash-off.svg' },\n { name: 'flash', svg: 'assets/kirby/icons/svg/flash.svg' },\n { name: 'moneybag', svg: 'assets/kirby/icons/svg/moneybag.svg' },\n { name: 'help', svg: 'assets/kirby/icons/svg/help.svg' },\n { name: 'home', svg: 'assets/kirby/icons/svg/home.svg' },\n { name: 'inbox', svg: 'assets/kirby/icons/svg/inbox.svg' },\n { name: 'inbox-outline', svg: 'assets/kirby/icons/svg/inbox-outline.svg' },\n { name: 'information', svg: 'assets/kirby/icons/svg/information.svg' },\n { name: 'insurance', svg: 'assets/kirby/icons/svg/insurance.svg' },\n { name: 'investment', svg: 'assets/kirby/icons/svg/investment.svg' },\n { name: 'kirby', svg: 'assets/kirby/icons/svg/kirby.svg' },\n { name: 'link', svg: 'assets/kirby/icons/svg/link.svg' },\n { name: 'log-out', svg: 'assets/kirby/icons/svg/log-out.svg' },\n { name: 'menu-outline', svg: 'assets/kirby/icons/svg/menu-outline.svg' },\n { name: 'menu', svg: 'assets/kirby/icons/svg/menu.svg' },\n { name: 'menu-no-decoration', svg: 'assets/kirby/icons/svg/menu-no-decoration.svg' },\n { name: 'misc', svg: 'assets/kirby/icons/svg/misc.svg' },\n { name: 'more', svg: 'assets/kirby/icons/svg/more.svg' },\n { name: 'move', svg: 'assets/kirby/icons/svg/move.svg' },\n { name: 'payment-card', svg: 'assets/kirby/icons/svg/payment-card.svg' },\n { name: 'pension', svg: 'assets/kirby/icons/svg/pension.svg' },\n { name: 'person-outline', svg: 'assets/kirby/icons/svg/person-outline.svg' },\n { name: 'person', svg: 'assets/kirby/icons/svg/person.svg' },\n { name: 'qr', svg: 'assets/kirby/icons/svg/QR.svg' },\n { name: 'recurring', svg: 'assets/kirby/icons/svg/recurring.svg' },\n { name: 'salary', svg: 'assets/kirby/icons/svg/salary.svg' },\n { name: 'search', svg: 'assets/kirby/icons/svg/search.svg' },\n { name: 'share', svg: 'assets/kirby/icons/svg/share.svg' },\n { name: 'sort', svg: 'assets/kirby/icons/svg/sort.svg' },\n { name: 'support', svg: 'assets/kirby/icons/svg/support.svg' },\n { name: 'swap', svg: 'assets/kirby/icons/svg/swap.svg' },\n { name: 'trash', svg: 'assets/kirby/icons/svg/trash.svg' },\n { name: 'foreign-payment', svg: 'assets/kirby/icons/svg/foreign-payment.svg' },\n { name: 'clock', svg: 'assets/kirby/icons/svg/clock.svg' },\n { name: 'verify', svg: 'assets/kirby/icons/svg/verify.svg' },\n { name: 'warning', svg: 'assets/kirby/icons/svg/warning.svg' },\n { name: 'write-message', svg: 'assets/kirby/icons/svg/write-message.svg' },\n { name: 'reorder', svg: 'assets/kirby/icons/svg/reorder.svg' },\n { name: 'accident', svg: 'assets/kirby/icons/svg/accident.svg' },\n { name: 'health', svg: 'assets/kirby/icons/svg/health.svg' },\n { name: 'illness', svg: 'assets/kirby/icons/svg/illness.svg' },\n { name: 'incapacity', svg: 'assets/kirby/icons/svg/incapacity.svg' },\n { name: 'life', svg: 'assets/kirby/icons/svg/life.svg' },\n { name: 'help-decoration', svg: 'assets/kirby/icons/svg/help-decoration.svg' },\n { name: 'information-decoration', svg: 'assets/kirby/icons/svg/information-decoration.svg' },\n { name: 'notification', svg: 'assets/kirby/icons/svg/notification.svg' },\n { name: 'transfer-ownership', svg: 'assets/kirby/icons/svg/transfer-ownership.svg' },\n { name: 'update', svg: 'assets/kirby/icons/svg/update.svg' },\n { name: 'user-blocked', svg: 'assets/kirby/icons/svg/user-blocked.svg' },\n { name: 'add-bank', svg: 'assets/kirby/icons/svg/add-bank.svg' },\n { name: 'participants', svg: 'assets/kirby/icons/svg/participants.svg' },\n { name: 'download', svg: 'assets/kirby/icons/svg/download.svg' },\n { name: 'globe-transfer', svg: 'assets/kirby/icons/svg/globe-transfer.svg' },\n { name: 'banknotes', svg: 'assets/kirby/icons/svg/banknotes.svg' },\n { name: 'air-balloon', svg: 'assets/kirby/icons/svg/air-balloon.svg' },\n { name: 'piggybank', svg: 'assets/kirby/icons/svg/piggybank.svg' },\n { name: 'business', svg: 'assets/kirby/icons/svg/business.svg' },\n { name: 'navigation', svg: 'assets/kirby/icons/svg/navigation.svg' },\n { name: 'phone-device', svg: 'assets/kirby/icons/svg/phone-device.svg' },\n { name: 'upload', svg: 'assets/kirby/icons/svg/upload.svg' },\n { name: 'document', svg: 'assets/kirby/icons/svg/document.svg' },\n { name: 'chat', svg: 'assets/kirby/icons/svg/chat.svg' },\n { name: 'feedback', svg: 'assets/kirby/icons/svg/feedback.svg' },\n { name: 'keyboard', svg: 'assets/kirby/icons/svg/keyboard.svg' },\n { name: 'lock', svg: 'assets/kirby/icons/svg/lock.svg' },\n { name: 'see', svg: 'assets/kirby/icons/svg/see.svg' },\n { name: 'overview', svg: 'assets/kirby/icons/svg/overview.svg' },\n { name: 'overview-outline', svg: 'assets/kirby/icons/svg/overview-outline.svg' },\n { name: 'arrow-down-fill', svg: 'assets/kirby/icons/svg/arrow-down-fill.svg' },\n { name: 'arrow-up-fill', svg: 'assets/kirby/icons/svg/arrow-up-fill.svg' },\n { name: 'calculator', svg: 'assets/kirby/icons/svg/calculator.svg' },\n { name: 'grid', svg: 'assets/kirby/icons/svg/grid.svg' },\n { name: 'list', svg: 'assets/kirby/icons/svg/list.svg' },\n { name: 'adjust', svg: 'assets/kirby/icons/svg/adjust.svg' },\n ],\n};\n\nexport const defaultIcons = kirbyIconSettings.icons.map((icon) => icon.name);\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\n\nimport { IconRegistryService } from './icon-registry.service';\nimport { Icon } from './icon-settings';\nimport { kirbyIconSettings } from './kirby-icon-settings';\n\nexport enum IconSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\n@Component({\n selector: 'kirby-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: { '[class.kirby-icon]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnChanges {\n defaultIcon: Icon = this.findIcon(kirbyIconSettings.icons, 'cog');\n private _icon = (this.icon = this.defaultIcon);\n @HostBinding('class')\n @Input()\n size: IconSize | `${IconSize}`;\n\n @Input() name: string;\n @Input() customName: string;\n\n get icon(): Icon {\n return this._icon;\n }\n\n set icon(icon: Icon) {\n // If icon are not found, set default icon\n if (!icon && (this.name || this.customName)) {\n this.warnAboutMissingIcon();\n\n icon = this.defaultIcon;\n\n // If default icon are not found\n if (!icon) {\n console.warn('Default icon was not found.');\n return;\n }\n }\n\n // Set icon if it's found\n if (icon) {\n this._icon = icon;\n }\n }\n\n private warnAboutMissingIcon(): void {\n if (this.customName) {\n console.warn(`Custom icon with name \"${this.customName}\" was not found. \n Do you have a typo in 'customName' or\n forgot to configure the custom icon through the 'IconRegistryService'?`);\n } else {\n console.warn(`Built-in icon with name \"${this.name}\" was not found. \n Do you have a typo in 'name' or\n did you mean to use a custom icon? If so, please use: \n <kirby-icon customName=\"${this.name}\"></kirby-icon>`);\n }\n }\n\n constructor(private iconRegistryService: IconRegistryService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.name && changes.name.currentValue) {\n this.icon = this.findIcon(kirbyIconSettings.icons, changes.name.currentValue);\n } else if (changes.customName && changes.customName.currentValue) {\n this.icon = this.iconRegistryService.getIcon(changes.customName.currentValue);\n }\n }\n\n private findIcon(icons, name: string): Icon {\n return icons.find((icon) => icon.name === name);\n }\n}\n","<ion-icon [src]=\"icon?.svg\"></ion-icon>\n","import { NgModule } from '@angular/core';\nimport { KirbyIonicModule } from '@kirbydesign/designsystem/kirby-ionic-module';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\n\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n imports: [KirbyIonicModule, ThemeColorDirective],\n declarations: [IconComponent],\n exports: [IconComponent, ThemeColorDirective],\n})\nexport class IconModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IconRegistryService"],"mappings":";;;;;;MAOa,mBAAmB,CAAA;AAHhC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;AA8BlD,KAAA;IA5BQ,OAAO,CAAC,QAAgB,EAAE,OAAe,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAA,gBAAA,CAAkB,CAAC,CAAC;AAC9D,SAAA;KACF;AAEM,IAAA,QAAQ,CAAC,KAAa,EAAA;QAC3B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACnC,OAAO;AACR,SAAA;AACD,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAC/B,CAAC,UAAU,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAW,CAAA,CACtE,CAAC;KACH;AAED,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,QAAA,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;KACxC;;mIA9BU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,mBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACJD;AACa,MAAA,iBAAiB,GAAiB;AAC7C,IAAA,KAAK,EAAE;AACL,QAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,6CAA6C,EAAE;AAChF,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gCAAgC,EAAE;AACtD,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC5D,QAAA,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,wCAAwC,EAAE;AACtE,QAAA,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,uCAAuC,EAAE;AACpE,QAAA,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,uCAAuC,EAAE;AACpE,QAAA,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,uCAAuC,EAAE;AACpE,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC5D,QAAA,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,sCAAsC,EAAE;AAClE,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC5D,QAAA,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gCAAgC,EAAE;AACtD,QAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,6CAA6C,EAAE;AAChF,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,+CAA+C,EAAE;AACpF,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,kCAAkC,EAAE;AAC1D,QAAA,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gCAAgC,EAAE;AACtD,QAAA,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,sCAAsC,EAAE;AAClE,QAAA,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oCAAoC,EAAE;AAC9D,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC5D,QAAA,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,sCAAsC,EAAE;AAClE,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,kCAAkC,EAAE;AAC1D,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,kCAAkC,EAAE;AAC1D,QAAA,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,0CAA0C,EAAE;AAC1E,QAAA,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,wCAAwC,EAAE;AACtE,QAAA,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,sCAAsC,EAAE;AAClE,QAAA,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,uCAAuC,EAAE;AACpE,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,kCAAkC,EAAE;AAC1D,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oCAAoC,EAAE;AAC9D,QAAA,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,yCAAyC,EAAE;AACxE,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,+CAA+C,EAAE;AACpF,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,yCAAyC,EAAE;AACxE,QAAA,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oCAAoC,EAAE;AAC9D,QAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,2CAA2C,EAAE;AAC5E,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC5D,QAAA,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,+BAA+B,EAAE;AACpD,QAAA,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,sCAAsC,EAAE;AAClE,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC5D,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC5D,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,kCAAkC,EAAE;AAC1D,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oCAAoC,EAAE;AAC9D,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,kCAAkC,EAAE;AAC1D,QAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,4CAA4C,EAAE;AAC9E,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,kCAAkC,EAAE;AAC1D,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC5D,QAAA,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oCAAoC,EAAE;AAC9D,QAAA,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,0CAA0C,EAAE;AAC1E,QAAA,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oCAAoC,EAAE;AAC9D,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC5D,QAAA,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oCAAoC,EAAE;AAC9D,QAAA,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,uCAAuC,EAAE;AACpE,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,4CAA4C,EAAE;AAC9E,QAAA,EAAE,IAAI,EAAE,wBAAwB,EAAE,GAAG,EAAE,mDAAmD,EAAE;AAC5F,QAAA,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,yCAAyC,EAAE;AACxE,QAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,+CAA+C,EAAE;AACpF,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC5D,QAAA,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,yCAAyC,EAAE;AACxE,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,yCAAyC,EAAE;AACxE,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,2CAA2C,EAAE;AAC5E,QAAA,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,sCAAsC,EAAE;AAClE,QAAA,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,wCAAwC,EAAE;AACtE,QAAA,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,sCAAsC,EAAE;AAClE,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,uCAAuC,EAAE;AACpE,QAAA,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,yCAAyC,EAAE;AACxE,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC5D,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gCAAgC,EAAE;AACtD,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,qCAAqC,EAAE;AAChE,QAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,6CAA6C,EAAE;AAChF,QAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,4CAA4C,EAAE;AAC9E,QAAA,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,0CAA0C,EAAE;AAC1E,QAAA,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,uCAAuC,EAAE;AACpE,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iCAAiC,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mCAAmC,EAAE;AAC7D,KAAA;EACD;AAEW,MAAA,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;;IC9F/D,SAKX;AALD,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,GAKnB,EAAA,CAAA,CAAA,CAAA;MAUY,aAAa,CAAA;AA+CxB,IAAA,WAAA,CAAoB,mBAAwC,EAAA;QAAxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QA9C5D,IAAW,CAAA,WAAA,GAAS,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAK,CAAA,KAAA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;KA6CiB;AArChE,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,IAAI,IAAI,CAAC,IAAU,EAAA;;AAEjB,QAAA,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE;YAC3C,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,YAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;;YAGxB,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAC5C,OAAO;AACR,aAAA;AACF,SAAA;;AAGD,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,SAAA;KACF;IAEO,oBAAoB,GAAA;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,OAAO,CAAC,IAAI,CAAC,CAA0B,uBAAA,EAAA,IAAI,CAAC,UAAU,CAAA;;AAEmB,8EAAA,CAAA,CAAC,CAAC;AAC5E,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,CAA4B,yBAAA,EAAA,IAAI,CAAC,IAAI,CAAA;;;AAGtB,gCAAA,EAAA,IAAI,CAAC,IAAI,CAAiB,eAAA,CAAA,CAAC,CAAC;AACzD,SAAA;KACF;AAID,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;AAC7C,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/E,SAAA;aAAM,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE;AAChE,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC/E,SAAA;KACF;IAEO,QAAQ,CAAC,KAAK,EAAE,IAAY,EAAA;AAClC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;KACjD;;6HA3DU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,mBAAA,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,qNC5B1B,6CACA,EAAA,MAAA,EAAA,CAAA,4gCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD2Ba,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;+BACE,YAAY,EAAA,IAAA,EAIhB,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAA,eAAA,EACrB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,4gCAAA,CAAA,EAAA,CAAA;uGAO/C,IAAI,EAAA,CAAA;sBAFH,WAAW;uBAAC,OAAO,CAAA;;sBACnB,KAAK;gBAGG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;MEzBK,UAAU,CAAA;;0HAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;2HAAV,UAAU,EAAA,YAAA,EAAA,CAHN,aAAa,CADlB,EAAA,OAAA,EAAA,CAAA,gBAAgB,EAAE,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAErC,aAAa,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAEjC,mBAAA,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAJX,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAIf,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;oBAChD,YAAY,EAAE,CAAC,aAAa,CAAC;AAC7B,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC;AAC9C,iBAAA,CAAA;;;ACVD;;AAEG;;;;"}
@@ -1,9 +1,9 @@
1
1
  import * as i3 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, Input } from '@angular/core';
4
+ import { Component, ViewChild, Input } from '@angular/core';
5
5
  import * as i2 from '@ionic/angular';
6
- import { IonicModule } from '@ionic/angular';
6
+ import { IonItemSliding, IonicModule } from '@ionic/angular';
7
7
  import * as i1 from '@kirbydesign/designsystem/icon';
8
8
  import { IconModule } from '@kirbydesign/designsystem/icon';
9
9
 
@@ -19,13 +19,20 @@ class ItemSlidingComponent {
19
19
  // will only return true when swipeActions is an array
20
20
  return this.swipeActions?.length > 0;
21
21
  }
22
+ onSwipeActionClick(swipeAction) {
23
+ swipeAction.onSelected();
24
+ this.itemSliding.close();
25
+ }
22
26
  }
23
27
  /** @nocollapse */ ItemSlidingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ItemSlidingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
- /** @nocollapse */ ItemSlidingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ItemSlidingComponent, isStandalone: true, selector: "kirby-item-sliding", inputs: { swipeActions: "swipeActions", side: "side" }, ngImport: i0, template: "<ion-item-sliding>\n <ng-content></ng-content>\n\n <ion-item-options *ngIf=\"_hasSwipeActions\" [side]=\"_side\">\n <ng-container *ngFor=\"let swipeAction of swipeActions\">\n <ion-item-option\n *ngIf=\"!swipeAction.isDisabled\"\n [ngClass]=\"swipeAction.type\"\n (click)=\"swipeAction.onSelected()\"\n >\n <kirby-icon\n *ngIf=\"swipeAction.icon !== undefined\"\n [name]=\"swipeAction.icon\"\n slot=\"top\"\n ></kirby-icon>\n <ion-label>{{ swipeAction.title }}</ion-label>\n </ion-item-option>\n </ng-container>\n </ion-item-options>\n</ion-item-sliding>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}ion-item-option{min-width:92px}\n"], dependencies: [{ kind: "ngmodule", type: IconModule }, { kind: "component", type: i1.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonItemOption, selector: "ion-item-option", inputs: ["color", "disabled", "download", "expandable", "href", "mode", "rel", "target", "type"] }, { kind: "component", type: i2.IonItemOptions, selector: "ion-item-options", inputs: ["side"] }, { kind: "component", type: i2.IonItemSliding, selector: "ion-item-sliding", inputs: ["disabled"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
28
+ /** @nocollapse */ ItemSlidingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ItemSlidingComponent, isStandalone: true, selector: "kirby-item-sliding", inputs: { swipeActions: "swipeActions", side: "side" }, viewQueries: [{ propertyName: "itemSliding", first: true, predicate: IonItemSliding, descendants: true, static: true }], ngImport: i0, template: "<ion-item-sliding>\n <ng-content></ng-content>\n\n <ion-item-options *ngIf=\"_hasSwipeActions\" [side]=\"_side\">\n <ng-container *ngFor=\"let swipeAction of swipeActions\">\n <ion-item-option\n *ngIf=\"!swipeAction.isDisabled\"\n [ngClass]=\"swipeAction.type\"\n (click)=\"onSwipeActionClick(swipeAction)\"\n >\n <kirby-icon\n *ngIf=\"swipeAction.icon !== undefined\"\n [name]=\"swipeAction.icon\"\n slot=\"top\"\n ></kirby-icon>\n <ion-label>{{ swipeAction.title }}</ion-label>\n </ion-item-option>\n </ng-container>\n </ion-item-options>\n</ion-item-sliding>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}ion-item-option{min-width:92px}\n"], dependencies: [{ kind: "ngmodule", type: IconModule }, { kind: "component", type: i1.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonItemOption, selector: "ion-item-option", inputs: ["color", "disabled", "download", "expandable", "href", "mode", "rel", "target", "type"] }, { kind: "component", type: i2.IonItemOptions, selector: "ion-item-options", inputs: ["side"] }, { kind: "component", type: i2.IonItemSliding, selector: "ion-item-sliding", inputs: ["disabled"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
25
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ItemSlidingComponent, decorators: [{
26
30
  type: Component,
27
- args: [{ standalone: true, imports: [IconModule, IonicModule, CommonModule], selector: 'kirby-item-sliding', template: "<ion-item-sliding>\n <ng-content></ng-content>\n\n <ion-item-options *ngIf=\"_hasSwipeActions\" [side]=\"_side\">\n <ng-container *ngFor=\"let swipeAction of swipeActions\">\n <ion-item-option\n *ngIf=\"!swipeAction.isDisabled\"\n [ngClass]=\"swipeAction.type\"\n (click)=\"swipeAction.onSelected()\"\n >\n <kirby-icon\n *ngIf=\"swipeAction.icon !== undefined\"\n [name]=\"swipeAction.icon\"\n slot=\"top\"\n ></kirby-icon>\n <ion-label>{{ swipeAction.title }}</ion-label>\n </ion-item-option>\n </ng-container>\n </ion-item-options>\n</ion-item-sliding>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}ion-item-option{min-width:92px}\n"] }]
28
- }], propDecorators: { swipeActions: [{
31
+ args: [{ standalone: true, imports: [IconModule, IonicModule, CommonModule], selector: 'kirby-item-sliding', template: "<ion-item-sliding>\n <ng-content></ng-content>\n\n <ion-item-options *ngIf=\"_hasSwipeActions\" [side]=\"_side\">\n <ng-container *ngFor=\"let swipeAction of swipeActions\">\n <ion-item-option\n *ngIf=\"!swipeAction.isDisabled\"\n [ngClass]=\"swipeAction.type\"\n (click)=\"onSwipeActionClick(swipeAction)\"\n >\n <kirby-icon\n *ngIf=\"swipeAction.icon !== undefined\"\n [name]=\"swipeAction.icon\"\n slot=\"top\"\n ></kirby-icon>\n <ion-label>{{ swipeAction.title }}</ion-label>\n </ion-item-option>\n </ng-container>\n </ion-item-options>\n</ion-item-sliding>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}ion-item-option{min-width:92px}\n"] }]
32
+ }], propDecorators: { itemSliding: [{
33
+ type: ViewChild,
34
+ args: [IonItemSliding, { static: true }]
35
+ }], swipeActions: [{
29
36
  type: Input
30
37
  }], side: [{
31
38
  type: Input
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-item-sliding.mjs","sources":["../../../../libs/designsystem/item-sliding/src/item-sliding.component.ts","../../../../libs/designsystem/item-sliding/src/item-sliding.component.html","../../../../libs/designsystem/item-sliding/src/kirbydesign-designsystem-item-sliding.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\n\nimport { ItemSlidingSide, ItemSwipeAction } from './item-sliding.types';\n\n@Component({\n standalone: true,\n imports: [IconModule, IonicModule, CommonModule],\n selector: 'kirby-item-sliding',\n templateUrl: './item-sliding.component.html',\n styleUrls: ['./item-sliding.component.scss'],\n})\nexport class ItemSlidingComponent {\n @Input() swipeActions: ItemSwipeAction[];\n\n _side: 'start' | 'end' = 'start';\n @Input() set side(value: ItemSlidingSide) {\n this._side = value === 'left' ? 'start' : 'end';\n }\n\n get _hasSwipeActions(): boolean {\n // Using '>' instead of '!==';\n // will only return true when swipeActions is an array\n return this.swipeActions?.length > 0;\n }\n}\n","<ion-item-sliding>\n <ng-content></ng-content>\n\n <ion-item-options *ngIf=\"_hasSwipeActions\" [side]=\"_side\">\n <ng-container *ngFor=\"let swipeAction of swipeActions\">\n <ion-item-option\n *ngIf=\"!swipeAction.isDisabled\"\n [ngClass]=\"swipeAction.type\"\n (click)=\"swipeAction.onSelected()\"\n >\n <kirby-icon\n *ngIf=\"swipeAction.icon !== undefined\"\n [name]=\"swipeAction.icon\"\n slot=\"top\"\n ></kirby-icon>\n <ion-label>{{ swipeAction.title }}</ion-label>\n </ion-item-option>\n </ng-container>\n </ion-item-options>\n</ion-item-sliding>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;MAca,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;QAUE,IAAK,CAAA,KAAA,GAAoB,OAAO,CAAC;AAUlC,KAAA;IATC,IAAa,IAAI,CAAC,KAAsB,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;KACjD;AAED,IAAA,IAAI,gBAAgB,GAAA;;;AAGlB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,CAAC;KACtC;;oIAZU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,mBAAA,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,sICdjC,2oBAoBA,EAAA,MAAA,EAAA,CAAA,koCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDXY,UAAU,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,wfAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAKpC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,EAAA,QAAA,EACtC,oBAAoB,EAAA,QAAA,EAAA,2oBAAA,EAAA,MAAA,EAAA,CAAA,koCAAA,CAAA,EAAA,CAAA;8BAKrB,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAGO,IAAI,EAAA,CAAA;sBAAhB,KAAK;;;AElBR;;AAEG;;;;"}
1
+ {"version":3,"file":"kirbydesign-designsystem-item-sliding.mjs","sources":["../../../../libs/designsystem/item-sliding/src/item-sliding.component.ts","../../../../libs/designsystem/item-sliding/src/item-sliding.component.html","../../../../libs/designsystem/item-sliding/src/kirbydesign-designsystem-item-sliding.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewChild } from '@angular/core';\nimport { IonicModule, IonItemSliding } from '@ionic/angular';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\n\nimport { ItemSlidingSide, ItemSwipeAction } from './item-sliding.types';\n\n@Component({\n standalone: true,\n imports: [IconModule, IonicModule, CommonModule],\n selector: 'kirby-item-sliding',\n templateUrl: './item-sliding.component.html',\n styleUrls: ['./item-sliding.component.scss'],\n})\nexport class ItemSlidingComponent {\n @ViewChild(IonItemSliding, { static: true }) itemSliding: IonItemSliding;\n @Input() swipeActions: ItemSwipeAction[];\n\n _side: 'start' | 'end' = 'start';\n @Input() set side(value: ItemSlidingSide) {\n this._side = value === 'left' ? 'start' : 'end';\n }\n\n get _hasSwipeActions(): boolean {\n // Using '>' instead of '!==';\n // will only return true when swipeActions is an array\n return this.swipeActions?.length > 0;\n }\n\n onSwipeActionClick(swipeAction: ItemSwipeAction): void {\n swipeAction.onSelected();\n this.itemSliding.close();\n }\n}\n","<ion-item-sliding>\n <ng-content></ng-content>\n\n <ion-item-options *ngIf=\"_hasSwipeActions\" [side]=\"_side\">\n <ng-container *ngFor=\"let swipeAction of swipeActions\">\n <ion-item-option\n *ngIf=\"!swipeAction.isDisabled\"\n [ngClass]=\"swipeAction.type\"\n (click)=\"onSwipeActionClick(swipeAction)\"\n >\n <kirby-icon\n *ngIf=\"swipeAction.icon !== undefined\"\n [name]=\"swipeAction.icon\"\n slot=\"top\"\n ></kirby-icon>\n <ion-label>{{ swipeAction.title }}</ion-label>\n </ion-item-option>\n </ng-container>\n </ion-item-options>\n</ion-item-sliding>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ class TabNavigationComponent {
35
35
  return this._selectedIndex;
36
36
  }
37
37
  set selectedIndex(index) {
38
- if (index !== this._selectedIndex) {
38
+ if (index !== this._selectedIndex && index !== -1) {
39
39
  this._selectedIndex = index;
40
40
  this.focusIndex = index;
41
41
  this.selectTab(this.selectedIndex);
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-tab-navigation.mjs","sources":["../../../../libs/designsystem/tab-navigation/src/tab-navigation-item/tab-navigation-item.component.ts","../../../../libs/designsystem/tab-navigation/src/tab-navigation-item/tab-navigation-item.component.html","../../../../libs/designsystem/tab-navigation/src/tab-navigation/tab-navigation.component.ts","../../../../libs/designsystem/tab-navigation/src/tab-navigation/tab-navigation.component.html","../../../../libs/designsystem/tab-navigation/src/tab-navigation.module.ts","../../../../libs/designsystem/tab-navigation/src/kirbydesign-designsystem-tab-navigation.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-tab-navigation-item',\n templateUrl: './tab-navigation-item.component.html',\n styleUrls: ['./tab-navigation-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabNavigationItemComponent {\n @Input()\n label = '';\n\n constructor() {\n /* */\n }\n}\n","<button role=\"tab\" #tabButton>\n <span attr.data-text=\"{{ label }}\">{{ label }}</span>\n <ng-content></ng-content>\n</button>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport { WindowRef } from '@kirbydesign/designsystem/types';\nimport { KeyboardHandlerService } from '@kirbydesign/designsystem/dropdown';\nimport { TabNavigationItemComponent } from '../tab-navigation-item/tab-navigation-item.component';\n\n@Component({\n selector: 'kirby-tab-navigation',\n templateUrl: './tab-navigation.component.html',\n styleUrls: ['./tab-navigation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabNavigationComponent implements AfterViewInit {\n public readonly DEBOUNCE_TIME_MS = 250;\n\n @ViewChild('tabBar')\n private tabBar: ElementRef<HTMLElement>;\n\n @ContentChildren(TabNavigationItemComponent, { read: ElementRef })\n private tabs: QueryList<ElementRef<HTMLElement>>;\n\n private tabBarElement: HTMLElement;\n private tabElements = new Array<HTMLElement>();\n private tabButtonElements = new Array<HTMLElement>();\n\n @Input()\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n set selectedIndex(index: number) {\n if (index !== this._selectedIndex) {\n this._selectedIndex = index;\n\n this.focusIndex = index;\n this.selectTab(this.selectedIndex);\n this.selectedIndexChange.emit(this.selectedIndex);\n }\n }\n private _selectedIndex = -1;\n\n get focusIndex(): number {\n return this._focusIndex;\n }\n\n set focusIndex(index: number) {\n if (index !== this._focusIndex) {\n this._focusIndex = index;\n\n this.scrollToTab(this.focusIndex);\n this.focusTab(this.focusIndex);\n }\n }\n private _focusIndex = -1;\n\n @Output()\n selectedIndexChange = new EventEmitter<number>();\n\n constructor(private window: WindowRef, private keyboardHandlerService: KeyboardHandlerService) {\n /**/\n }\n\n ngAfterViewInit(): void {\n this.tabBarElement = this.tabBar.nativeElement;\n this.tabs.forEach((tab) => this.tabElements.push(tab.nativeElement));\n this.tabElements.forEach((tabElement) =>\n this.tabButtonElements.push(tabElement.querySelector('[role=\"tab\"]'))\n );\n\n setTimeout(() => {\n this.selectTab(this.selectedIndex);\n this.scrollToTab(this.focusIndex);\n this.focusTab(this.focusIndex);\n }, this.DEBOUNCE_TIME_MS);\n }\n\n @HostListener('click', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n onItemSelect(event: PointerEvent) {\n if (event.target !== this.tabBarElement) {\n const targetTabNavItem = (event.target as HTMLElement).closest('button');\n this.selectedIndex = this.tabButtonElements.indexOf(targetTabNavItem);\n }\n }\n\n @HostListener('keydown.home', ['$event'])\n @HostListener('keydown.end', ['$event'])\n @HostListener('keydown.arrowright', ['$event'])\n @HostListener('keydown.arrowleft', ['$event'])\n onKeydown(event: KeyboardEvent) {\n event.preventDefault();\n this.focusIndex = this.keyboardHandlerService.handle(\n event,\n this.focusIndex,\n this.tabElements.length - 1,\n true\n );\n }\n\n private selectTab(tabIndex: number): void {\n this.tabButtonElements.forEach((tabButtonElement, index) => {\n tabButtonElement.setAttribute('aria-selected', index === tabIndex ? 'true' : 'false');\n });\n }\n\n private focusTab(focusIndex: number): void {\n this.tabButtonElements.forEach((tabButtonElement, index) => {\n tabButtonElement.setAttribute('tabindex', index === focusIndex ? '0' : '-1');\n });\n\n if (0 <= focusIndex && focusIndex < this.tabButtonElements.length) {\n this.tabButtonElements[focusIndex].focus();\n }\n }\n\n private scrollToTab(tabIndex: number): void {\n if (0 <= tabIndex && tabIndex < this.tabElements.length) {\n const selectedTabElement = this.tabElements[tabIndex];\n const selectedTabElementWidth = selectedTabElement.getBoundingClientRect().width;\n const selectedTabElementOffsetLeft = selectedTabElement.offsetLeft;\n const tabBarElementWidth = this.tabBarElement.getBoundingClientRect().width;\n\n this.window.nativeWindow.requestAnimationFrame(() => {\n this.tabBarElement?.scrollTo({\n behavior: 'smooth',\n left: Math.max(\n 0,\n selectedTabElementOffsetLeft - (tabBarElementWidth - selectedTabElementWidth) / 2\n ),\n });\n });\n }\n }\n}\n","<div role=\"tablist\" #tabBar>\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TabNavigationComponent } from './tab-navigation/tab-navigation.component';\nimport { TabNavigationItemComponent } from './tab-navigation-item/tab-navigation-item.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TabNavigationComponent, TabNavigationItemComponent],\n exports: [TabNavigationComponent, TabNavigationItemComponent],\n})\nexport class TabNavigationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-tab-navigation.mjs","sources":["../../../../libs/designsystem/tab-navigation/src/tab-navigation-item/tab-navigation-item.component.ts","../../../../libs/designsystem/tab-navigation/src/tab-navigation-item/tab-navigation-item.component.html","../../../../libs/designsystem/tab-navigation/src/tab-navigation/tab-navigation.component.ts","../../../../libs/designsystem/tab-navigation/src/tab-navigation/tab-navigation.component.html","../../../../libs/designsystem/tab-navigation/src/tab-navigation.module.ts","../../../../libs/designsystem/tab-navigation/src/kirbydesign-designsystem-tab-navigation.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-tab-navigation-item',\n templateUrl: './tab-navigation-item.component.html',\n styleUrls: ['./tab-navigation-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabNavigationItemComponent {\n @Input()\n label = '';\n\n constructor() {\n /* */\n }\n}\n","<button role=\"tab\" #tabButton>\n <span attr.data-text=\"{{ label }}\">{{ label }}</span>\n <ng-content></ng-content>\n</button>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport { WindowRef } from '@kirbydesign/designsystem/types';\nimport { KeyboardHandlerService } from '@kirbydesign/designsystem/dropdown';\nimport { TabNavigationItemComponent } from '../tab-navigation-item/tab-navigation-item.component';\n\n@Component({\n selector: 'kirby-tab-navigation',\n templateUrl: './tab-navigation.component.html',\n styleUrls: ['./tab-navigation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabNavigationComponent implements AfterViewInit {\n public readonly DEBOUNCE_TIME_MS = 250;\n\n @ViewChild('tabBar')\n private tabBar: ElementRef<HTMLElement>;\n\n @ContentChildren(TabNavigationItemComponent, { read: ElementRef })\n private tabs: QueryList<ElementRef<HTMLElement>>;\n\n private tabBarElement: HTMLElement;\n private tabElements = new Array<HTMLElement>();\n private tabButtonElements = new Array<HTMLElement>();\n\n @Input()\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n set selectedIndex(index: number) {\n if (index !== this._selectedIndex && index !== -1) {\n this._selectedIndex = index;\n\n this.focusIndex = index;\n this.selectTab(this.selectedIndex);\n this.selectedIndexChange.emit(this.selectedIndex);\n }\n }\n private _selectedIndex = -1;\n\n get focusIndex(): number {\n return this._focusIndex;\n }\n\n set focusIndex(index: number) {\n if (index !== this._focusIndex) {\n this._focusIndex = index;\n\n this.scrollToTab(this.focusIndex);\n this.focusTab(this.focusIndex);\n }\n }\n private _focusIndex = -1;\n\n @Output()\n selectedIndexChange = new EventEmitter<number>();\n\n constructor(private window: WindowRef, private keyboardHandlerService: KeyboardHandlerService) {\n /**/\n }\n\n ngAfterViewInit(): void {\n this.tabBarElement = this.tabBar.nativeElement;\n this.tabs.forEach((tab) => this.tabElements.push(tab.nativeElement));\n this.tabElements.forEach((tabElement) =>\n this.tabButtonElements.push(tabElement.querySelector('[role=\"tab\"]'))\n );\n\n setTimeout(() => {\n this.selectTab(this.selectedIndex);\n this.scrollToTab(this.focusIndex);\n this.focusTab(this.focusIndex);\n }, this.DEBOUNCE_TIME_MS);\n }\n\n @HostListener('click', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n onItemSelect(event: PointerEvent) {\n if (event.target !== this.tabBarElement) {\n const targetTabNavItem = (event.target as HTMLElement).closest('button');\n this.selectedIndex = this.tabButtonElements.indexOf(targetTabNavItem);\n }\n }\n\n @HostListener('keydown.home', ['$event'])\n @HostListener('keydown.end', ['$event'])\n @HostListener('keydown.arrowright', ['$event'])\n @HostListener('keydown.arrowleft', ['$event'])\n onKeydown(event: KeyboardEvent) {\n event.preventDefault();\n this.focusIndex = this.keyboardHandlerService.handle(\n event,\n this.focusIndex,\n this.tabElements.length - 1,\n true\n );\n }\n\n private selectTab(tabIndex: number): void {\n this.tabButtonElements.forEach((tabButtonElement, index) => {\n tabButtonElement.setAttribute('aria-selected', index === tabIndex ? 'true' : 'false');\n });\n }\n\n private focusTab(focusIndex: number): void {\n this.tabButtonElements.forEach((tabButtonElement, index) => {\n tabButtonElement.setAttribute('tabindex', index === focusIndex ? '0' : '-1');\n });\n\n if (0 <= focusIndex && focusIndex < this.tabButtonElements.length) {\n this.tabButtonElements[focusIndex].focus();\n }\n }\n\n private scrollToTab(tabIndex: number): void {\n if (0 <= tabIndex && tabIndex < this.tabElements.length) {\n const selectedTabElement = this.tabElements[tabIndex];\n const selectedTabElementWidth = selectedTabElement.getBoundingClientRect().width;\n const selectedTabElementOffsetLeft = selectedTabElement.offsetLeft;\n const tabBarElementWidth = this.tabBarElement.getBoundingClientRect().width;\n\n this.window.nativeWindow.requestAnimationFrame(() => {\n this.tabBarElement?.scrollTo({\n behavior: 'smooth',\n left: Math.max(\n 0,\n selectedTabElementOffsetLeft - (tabBarElementWidth - selectedTabElementWidth) / 2\n ),\n });\n });\n }\n }\n}\n","<div role=\"tablist\" #tabBar>\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TabNavigationComponent } from './tab-navigation/tab-navigation.component';\nimport { TabNavigationItemComponent } from './tab-navigation-item/tab-navigation-item.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TabNavigationComponent, TabNavigationItemComponent],\n exports: [TabNavigationComponent, TabNavigationItemComponent],\n})\nexport class TabNavigationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -2,6 +2,14 @@ import { ColorHelper } from '@kirbydesign/core';
2
2
  import { IonicModule } from '@ionic/angular';
3
3
 
4
4
  class TestHelper {
5
+ static disableAnimationsInTest() {
6
+ //@ts-ignore
7
+ window.Ionic = {
8
+ config: {
9
+ _testing: true,
10
+ },
11
+ };
12
+ }
5
13
  static muteIonicReInitializeWarning() {
6
14
  const originalWarn = console.warn;
7
15
  const patchedWarn = (warning, ...optionalParams) => {
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-testing.mjs","sources":["../../../../libs/designsystem/testing/src/test-helper.ts","../../../../libs/designsystem/testing/src/element-css-custom-matchers.ts","../../../../libs/designsystem/testing/src/kirbydesign-designsystem-testing.ts"],"sourcesContent":["import { IonicModule } from '@ionic/angular';\nimport { IonicConfig } from '@ionic/core';\n\nexport class TestHelper {\n public static readonly _init = TestHelper.muteIonicReInitializeWarning();\n\n public static muteIonicReInitializeWarning() {\n const originalWarn = console.warn;\n const patchedWarn = (warning: any, ...optionalParams: any[]) => {\n const suppress = `Ionic Angular was already initialized. Make sure IonicModule.forRoot() is just called once.`;\n if (warning !== suppress) originalWarn(warning, ...optionalParams);\n };\n console.warn = patchedWarn;\n }\n\n public static ionicModuleForTest = IonicModule.forRoot({\n mode: 'ios',\n _testing: true,\n get: () => {}, // Prevents Ionic \"config.get is not a function\" errors\n } as IonicConfig);\n\n /*\n * Checks for the Web Component(s) being ready,\n * ie. the component is hydrated, styles have been applied\n * and the Shadow DOM is ready for query\n */\n public static async whenReady(\n elementOrNodeList: Element | NodeListOf<Element> | Element[]\n ): Promise<void> {\n if (elementOrNodeList === undefined || elementOrNodeList === null)\n return Promise.reject('TestHelper.whenReady: Element is null or undefined');\n if (elementOrNodeList instanceof Element) {\n await TestHelper.whenDefined(elementOrNodeList);\n await TestHelper.ionComponentOnReady(elementOrNodeList);\n } else {\n await Promise.all(\n Array.from(elementOrNodeList).map(async (element) => await TestHelper.whenReady(element))\n );\n }\n }\n\n /* Checks for the Web Component being defined, ie. the public methods are available */\n public static async whenDefined(element: Element): Promise<void> {\n await customElements.whenDefined(element.localName);\n }\n\n /* Checks for the Ionic Web Component being ready, ie. the component is hydrated and styles applied */\n public static async ionComponentOnReady(element: Element): Promise<void> {\n const componentOnReady = (element as any).componentOnReady as () => Promise<void>;\n if (typeof componentOnReady === 'function') {\n await componentOnReady.bind(element)();\n }\n }\n\n public static async whenTrue(\n pollFunc: () => boolean,\n timeoutInMs: number = 2000,\n pollIntervalInMs: number = 5\n ): Promise<void> {\n if (pollFunc() === true) return Promise.resolve();\n return new Promise<void>((resolve, reject) => {\n let timeoutId, intervalId;\n const pollState = () => {\n const result = pollFunc();\n if (result === true) {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n resolve();\n }\n };\n timeoutId = setTimeout(() => {\n clearInterval(intervalId);\n reject(\n `Error: Timeout - TestHelper.whenTrue function did not complete within ${timeoutInMs}ms`\n );\n }, timeoutInMs);\n intervalId = setInterval(pollState, pollIntervalInMs);\n });\n }\n\n public static getCssProperty(element: Element, propertyName: string, pseudoElt?: string) {\n return window.getComputedStyle(element, pseudoElt).getPropertyValue(propertyName).trim();\n }\n\n public static screensize = {\n phonesmall: { width: '320px', height: '568px' },\n phone: { width: '375px', height: '667px' },\n phablet: { width: '575px', height: '767px' },\n 'phablet-landscape': { width: '767px', height: '575px' },\n tablet: { width: '768px', height: '1024px' },\n desktop: { width: '1200px', height: '900px' },\n };\n\n public static resizeTestWindow(size: { width?: string; height?: string }): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!window.frameElement) {\n console.warn('window.frameElement is undefined. Cannot resize test window.');\n reject();\n } else {\n const query = [];\n if (size.width) {\n query.push(`(max-width: ${size.width})`);\n }\n if (size.height) {\n query.push(`(max-height: ${size.height})`);\n }\n console.log(`Set test window size to: ${JSON.stringify(size)}`);\n (window.frameElement as HTMLIFrameElement).style.width = size.width;\n (window.frameElement as HTMLIFrameElement).style.height = size.height;\n const mediaQuery = window.matchMedia(query.join(' and '));\n if (mediaQuery.matches) {\n resolve();\n } else {\n // Ensure window has resized before executing:\n mediaQuery.onchange = (ev) => {\n if (ev.matches) {\n // Stop listening for changes:\n mediaQuery.onchange = null;\n resolve();\n }\n };\n console.log(`Awaiting media query to match: ${mediaQuery.media}`);\n }\n }\n });\n }\n\n public static resetTestWindow(): void {\n if (!window.frameElement) {\n console.warn('window.frameElement is undefined. Cannot resize test window.');\n return;\n }\n console.log('Resetting test window width');\n (window.frameElement as HTMLIFrameElement).style.width = null;\n (window.frameElement as HTMLIFrameElement).style.height = null;\n }\n\n public static scrollMainWindowToTop() {\n if (\n window.parent &&\n window.parent.document &&\n window.parent.document.documentElement &&\n window.parent.document.documentElement.scrollTop > 0\n ) {\n window.parent.document.documentElement.scrollTop = 0;\n }\n }\n\n public static waitForResizeObserver(): Promise<void> {\n return TestHelper.waitForTimeout(1);\n }\n\n public static waitForTimeout(timeoutInMs?: number): Promise<void> {\n return new Promise<void>((resolve) => setTimeout(resolve, timeoutInMs));\n }\n}\n\nexport type ScreenSize = keyof typeof TestHelper.screensize;\n","import { ColorHelper, ThemeColorDefinition } from '@kirbydesign/core';\nimport jasmine from 'jasmine-core';\nimport { TestHelper } from './test-helper';\n\nimport CustomMatcherFactories = jasmine.CustomMatcherFactories;\nimport CustomMatcherResult = jasmine.CustomMatcherResult;\nimport MatchersUtil = jasmine.MatchersUtil;\n\nexport const ElementCssCustomMatchers: CustomMatcherFactories = {\n toHaveComputedStyle: (util: MatchersUtil) => cssPropertyMatcher(util),\n};\n\nfunction cssPropertyMatcher(util: MatchersUtil) {\n return {\n compare: (\n element: Element,\n expectedStyles: { [cssProperty: string]: string | ThemeColorDefinition },\n pseudoElt?: string\n ) => {\n let allPassed = Object.keys(expectedStyles).length !== 0;\n const messages = [];\n Object.keys(expectedStyles).forEach((cssProperty) => {\n const expectedValue = expectedStyles[cssProperty];\n const { expectedStringValue, expectedValueAlias } = getExpectedStringValueAndAlias(\n cssProperty,\n expectedValue\n );\n const { pass, message } = compareCssProperty(\n util,\n element,\n cssProperty,\n expectedStringValue,\n expectedValueAlias,\n pseudoElt\n );\n allPassed = allPassed && pass;\n if (message) {\n messages.push(message);\n }\n });\n const result = {\n pass: allPassed,\n message: messages.join('\\n'),\n };\n return result;\n },\n };\n}\n\nfunction getExpectedStringValueAndAlias(\n cssProperty: string,\n expectedValue: string | ThemeColorDefinition\n) {\n let expectedStringValue: string;\n let expectedValueAlias: string;\n\n if (typeof expectedValue === 'string') {\n expectedStringValue = expectedValue;\n // Check of css property is a color:\n if (\n cssProperty.indexOf('color') > -1 ||\n expectedValue.startsWith('rgb') ||\n expectedValue.startsWith('#')\n ) {\n // Check if css property is a css variable:\n // Css variable values are hex when getting computed style, all other property values are rgb:\n if (!cssProperty.startsWith('--')) {\n // Not a css variable, convert color to rgb:\n expectedStringValue = ColorHelper.colorStringToRgbString(expectedValue);\n }\n }\n } else {\n // Check if css property is a css variable:\n // Css variable values are hex when getting computed style, all other property values are rgb:\n expectedStringValue = cssProperty.startsWith('--') ? expectedValue.hex : expectedValue.value;\n expectedValueAlias = expectedValue.fullname;\n }\n\n return {\n expectedStringValue,\n expectedValueAlias,\n };\n}\n\nfunction compareCssProperty(\n util: MatchersUtil,\n element: Element,\n cssProperty: string,\n expectedValue: string,\n expectedValueAlias?: string,\n pseudoElt?: string\n): CustomMatcherResult {\n const actualValue = TestHelper.getCssProperty(element, cssProperty, pseudoElt);\n const pass = util.equals(actualValue, expectedValue) || !!compareSize(actualValue, expectedValue);\n const message = pass\n ? null\n : getErrorMessage(\n element,\n cssProperty,\n actualValue,\n expectedValue,\n expectedValueAlias,\n pseudoElt\n );\n const result = {\n pass: pass,\n message: message,\n };\n return result;\n}\n\nfunction compareSize(actualValue: string, expectedValue: string): boolean | void {\n if (!expectedValue.startsWith('<') && !expectedValue.startsWith('>')) return;\n\n const matches = expectedValue.match(/(?<operator>\\<\\=|\\<|\\>\\=|\\>)(?<value>\\d*)px/);\n if (matches && matches.groups) {\n const actualValueNumber = parseInt(actualValue);\n const operator = matches.groups['operator'];\n const expectedValueNumber = parseInt(matches.groups['value']);\n switch (operator) {\n case '<':\n return actualValueNumber < expectedValueNumber;\n case '<=':\n return actualValueNumber <= expectedValueNumber;\n case '>':\n return actualValueNumber > expectedValueNumber;\n case '>=':\n return actualValueNumber >= expectedValueNumber;\n default:\n break;\n }\n }\n}\n\nfunction getErrorMessage(\n element: Element,\n cssProperty: string,\n actualValue: string,\n expectedValue: string,\n expectedValueAlias?: string,\n pseudoElt?: string\n) {\n const expectedColorNameSuffix = expectedValueAlias ? ` (${expectedValueAlias})` : '';\n return `Expected [${cssProperty}] of ${element.tagName}${\n pseudoElt ?? ''\n } '${actualValue}' to be '${expectedValue}'${expectedColorNameSuffix}`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-testing.mjs","sources":["../../../../libs/designsystem/testing/src/test-helper.ts","../../../../libs/designsystem/testing/src/element-css-custom-matchers.ts","../../../../libs/designsystem/testing/src/kirbydesign-designsystem-testing.ts"],"sourcesContent":["import { IonicModule } from '@ionic/angular';\nimport { IonicConfig } from '@ionic/core';\n\nexport class TestHelper {\n public static readonly _init = TestHelper.muteIonicReInitializeWarning();\n\n public static disableAnimationsInTest() {\n //@ts-ignore\n window.Ionic = {\n config: {\n _testing: true,\n },\n };\n }\n\n public static muteIonicReInitializeWarning() {\n const originalWarn = console.warn;\n const patchedWarn = (warning: any, ...optionalParams: any[]) => {\n const suppress = `Ionic Angular was already initialized. Make sure IonicModule.forRoot() is just called once.`;\n if (warning !== suppress) originalWarn(warning, ...optionalParams);\n };\n console.warn = patchedWarn;\n }\n\n public static ionicModuleForTest = IonicModule.forRoot({\n mode: 'ios',\n _testing: true,\n get: () => {}, // Prevents Ionic \"config.get is not a function\" errors\n } as IonicConfig);\n\n /*\n * Checks for the Web Component(s) being ready,\n * ie. the component is hydrated, styles have been applied\n * and the Shadow DOM is ready for query\n */\n public static async whenReady(\n elementOrNodeList: Element | NodeListOf<Element> | Element[]\n ): Promise<void> {\n if (elementOrNodeList === undefined || elementOrNodeList === null)\n return Promise.reject('TestHelper.whenReady: Element is null or undefined');\n if (elementOrNodeList instanceof Element) {\n await TestHelper.whenDefined(elementOrNodeList);\n await TestHelper.ionComponentOnReady(elementOrNodeList);\n } else {\n await Promise.all(\n Array.from(elementOrNodeList).map(async (element) => await TestHelper.whenReady(element))\n );\n }\n }\n\n /* Checks for the Web Component being defined, ie. the public methods are available */\n public static async whenDefined(element: Element): Promise<void> {\n await customElements.whenDefined(element.localName);\n }\n\n /* Checks for the Ionic Web Component being ready, ie. the component is hydrated and styles applied */\n public static async ionComponentOnReady(element: Element): Promise<void> {\n const componentOnReady = (element as any).componentOnReady as () => Promise<void>;\n if (typeof componentOnReady === 'function') {\n await componentOnReady.bind(element)();\n }\n }\n\n public static async whenTrue(\n pollFunc: () => boolean,\n timeoutInMs: number = 2000,\n pollIntervalInMs: number = 5\n ): Promise<void> {\n if (pollFunc() === true) return Promise.resolve();\n return new Promise<void>((resolve, reject) => {\n let timeoutId, intervalId;\n const pollState = () => {\n const result = pollFunc();\n if (result === true) {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n resolve();\n }\n };\n timeoutId = setTimeout(() => {\n clearInterval(intervalId);\n reject(\n `Error: Timeout - TestHelper.whenTrue function did not complete within ${timeoutInMs}ms`\n );\n }, timeoutInMs);\n intervalId = setInterval(pollState, pollIntervalInMs);\n });\n }\n\n public static getCssProperty(element: Element, propertyName: string, pseudoElt?: string) {\n return window.getComputedStyle(element, pseudoElt).getPropertyValue(propertyName).trim();\n }\n\n public static screensize = {\n phonesmall: { width: '320px', height: '568px' },\n phone: { width: '375px', height: '667px' },\n phablet: { width: '575px', height: '767px' },\n 'phablet-landscape': { width: '767px', height: '575px' },\n tablet: { width: '768px', height: '1024px' },\n desktop: { width: '1200px', height: '900px' },\n };\n\n public static resizeTestWindow(size: { width?: string; height?: string }): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!window.frameElement) {\n console.warn('window.frameElement is undefined. Cannot resize test window.');\n reject();\n } else {\n const query = [];\n if (size.width) {\n query.push(`(max-width: ${size.width})`);\n }\n if (size.height) {\n query.push(`(max-height: ${size.height})`);\n }\n console.log(`Set test window size to: ${JSON.stringify(size)}`);\n (window.frameElement as HTMLIFrameElement).style.width = size.width;\n (window.frameElement as HTMLIFrameElement).style.height = size.height;\n const mediaQuery = window.matchMedia(query.join(' and '));\n if (mediaQuery.matches) {\n resolve();\n } else {\n // Ensure window has resized before executing:\n mediaQuery.onchange = (ev) => {\n if (ev.matches) {\n // Stop listening for changes:\n mediaQuery.onchange = null;\n resolve();\n }\n };\n console.log(`Awaiting media query to match: ${mediaQuery.media}`);\n }\n }\n });\n }\n\n public static resetTestWindow(): void {\n if (!window.frameElement) {\n console.warn('window.frameElement is undefined. Cannot resize test window.');\n return;\n }\n console.log('Resetting test window width');\n (window.frameElement as HTMLIFrameElement).style.width = null;\n (window.frameElement as HTMLIFrameElement).style.height = null;\n }\n\n public static scrollMainWindowToTop() {\n if (\n window.parent &&\n window.parent.document &&\n window.parent.document.documentElement &&\n window.parent.document.documentElement.scrollTop > 0\n ) {\n window.parent.document.documentElement.scrollTop = 0;\n }\n }\n\n public static waitForResizeObserver(): Promise<void> {\n return TestHelper.waitForTimeout(1);\n }\n\n public static waitForTimeout(timeoutInMs?: number): Promise<void> {\n return new Promise<void>((resolve) => setTimeout(resolve, timeoutInMs));\n }\n}\n\nexport type ScreenSize = keyof typeof TestHelper.screensize;\n","import { ColorHelper, ThemeColorDefinition } from '@kirbydesign/core';\nimport jasmine from 'jasmine-core';\nimport { TestHelper } from './test-helper';\n\nimport CustomMatcherFactories = jasmine.CustomMatcherFactories;\nimport CustomMatcherResult = jasmine.CustomMatcherResult;\nimport MatchersUtil = jasmine.MatchersUtil;\n\nexport const ElementCssCustomMatchers: CustomMatcherFactories = {\n toHaveComputedStyle: (util: MatchersUtil) => cssPropertyMatcher(util),\n};\n\nfunction cssPropertyMatcher(util: MatchersUtil) {\n return {\n compare: (\n element: Element,\n expectedStyles: { [cssProperty: string]: string | ThemeColorDefinition },\n pseudoElt?: string\n ) => {\n let allPassed = Object.keys(expectedStyles).length !== 0;\n const messages = [];\n Object.keys(expectedStyles).forEach((cssProperty) => {\n const expectedValue = expectedStyles[cssProperty];\n const { expectedStringValue, expectedValueAlias } = getExpectedStringValueAndAlias(\n cssProperty,\n expectedValue\n );\n const { pass, message } = compareCssProperty(\n util,\n element,\n cssProperty,\n expectedStringValue,\n expectedValueAlias,\n pseudoElt\n );\n allPassed = allPassed && pass;\n if (message) {\n messages.push(message);\n }\n });\n const result = {\n pass: allPassed,\n message: messages.join('\\n'),\n };\n return result;\n },\n };\n}\n\nfunction getExpectedStringValueAndAlias(\n cssProperty: string,\n expectedValue: string | ThemeColorDefinition\n) {\n let expectedStringValue: string;\n let expectedValueAlias: string;\n\n if (typeof expectedValue === 'string') {\n expectedStringValue = expectedValue;\n // Check of css property is a color:\n if (\n cssProperty.indexOf('color') > -1 ||\n expectedValue.startsWith('rgb') ||\n expectedValue.startsWith('#')\n ) {\n // Check if css property is a css variable:\n // Css variable values are hex when getting computed style, all other property values are rgb:\n if (!cssProperty.startsWith('--')) {\n // Not a css variable, convert color to rgb:\n expectedStringValue = ColorHelper.colorStringToRgbString(expectedValue);\n }\n }\n } else {\n // Check if css property is a css variable:\n // Css variable values are hex when getting computed style, all other property values are rgb:\n expectedStringValue = cssProperty.startsWith('--') ? expectedValue.hex : expectedValue.value;\n expectedValueAlias = expectedValue.fullname;\n }\n\n return {\n expectedStringValue,\n expectedValueAlias,\n };\n}\n\nfunction compareCssProperty(\n util: MatchersUtil,\n element: Element,\n cssProperty: string,\n expectedValue: string,\n expectedValueAlias?: string,\n pseudoElt?: string\n): CustomMatcherResult {\n const actualValue = TestHelper.getCssProperty(element, cssProperty, pseudoElt);\n const pass = util.equals(actualValue, expectedValue) || !!compareSize(actualValue, expectedValue);\n const message = pass\n ? null\n : getErrorMessage(\n element,\n cssProperty,\n actualValue,\n expectedValue,\n expectedValueAlias,\n pseudoElt\n );\n const result = {\n pass: pass,\n message: message,\n };\n return result;\n}\n\nfunction compareSize(actualValue: string, expectedValue: string): boolean | void {\n if (!expectedValue.startsWith('<') && !expectedValue.startsWith('>')) return;\n\n const matches = expectedValue.match(/(?<operator>\\<\\=|\\<|\\>\\=|\\>)(?<value>\\d*)px/);\n if (matches && matches.groups) {\n const actualValueNumber = parseInt(actualValue);\n const operator = matches.groups['operator'];\n const expectedValueNumber = parseInt(matches.groups['value']);\n switch (operator) {\n case '<':\n return actualValueNumber < expectedValueNumber;\n case '<=':\n return actualValueNumber <= expectedValueNumber;\n case '>':\n return actualValueNumber > expectedValueNumber;\n case '>=':\n return actualValueNumber >= expectedValueNumber;\n default:\n break;\n }\n }\n}\n\nfunction getErrorMessage(\n element: Element,\n cssProperty: string,\n actualValue: string,\n expectedValue: string,\n expectedValueAlias?: string,\n pseudoElt?: string\n) {\n const expectedColorNameSuffix = expectedValueAlias ? ` (${expectedValueAlias})` : '';\n return `Expected [${cssProperty}] of ${element.tagName}${\n pseudoElt ?? ''\n } '${actualValue}' to be '${expectedValue}'${expectedColorNameSuffix}`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
2
+ <path id="adjust" fill="currentColor" d="M10.5,14.5 C11.6195653,14.5 12.5672457,15.2359268 12.8856816,16.250421 L19.25,16.25 C19.664,16.25 20,16.586 20,17 C20,17.414 19.664,17.75 19.25,17.75 L12.8853693,17.7505732 C12.5666265,18.7645539 11.6191996,19.5 10.5,19.5 C9.38080044,19.5 8.43337352,18.7645539 8.11463068,17.7505732 L4.76130676,17.75 C4.34730676,17.75 4.01130676,17.414 4.01130676,17 C4.01130676,16.586 4.34730676,16.25 4.76130676,16.25 L8.11431839,16.250421 C8.4327543,15.2359268 9.38043469,14.5 10.5,14.5 Z M10.5,16 C9.94771525,16 9.5,16.4477153 9.5,17 C9.5,17.5522847 9.94771525,18 10.5,18 C11.0522847,18 11.5,17.5522847 11.5,17 C11.5,16.4477153 11.0522847,16 10.5,16 Z M15.5,9.5 C16.6195653,9.5 17.5672457,10.2359268 17.8856816,11.250421 L19.25,11.25 C19.664,11.25 20,11.586 20,12 C20,12.414 19.664,12.75 19.25,12.75 L17.8853693,12.7505732 C17.5666265,13.7645539 16.6191996,14.5 15.5,14.5 C14.3808004,14.5 13.4333735,13.7645539 13.1146307,12.7505732 L4.77001572,12.75 C4.35601572,12.75 4.02001572,12.414 4.02001572,12 C4.02001572,11.586 4.35601572,11.25 4.77001572,11.25 L13.1143184,11.250421 C13.4327543,10.2359268 14.3804347,9.5 15.5,9.5 Z M15.5,11 C14.9477153,11 14.5,11.4477153 14.5,12 C14.5,12.5522847 14.9477153,13 15.5,13 C16.0522847,13 16.5,12.5522847 16.5,12 C16.5,11.4477153 16.0522847,11 15.5,11 Z M8.5,4.5 C9.61956531,4.5 10.5672457,5.23592684 10.8856816,6.25042097 L19.25,6.25 C19.664,6.25 20,6.586 20,7 C20,7.414 19.664,7.75 19.25,7.75 L10.8853693,7.75057321 C10.5666265,8.76455392 9.61919956,9.5 8.5,9.5 C7.38080044,9.5 6.43337352,8.76455392 6.11463068,7.75057321 L4.77001572,7.75 C4.35601572,7.75 4.02001572,7.414 4.02001572,7 C4.02001572,6.586 4.35601572,6.25 4.77001572,6.25 L6.11431839,6.25042097 C6.4327543,5.23592684 7.38043469,4.5 8.5,4.5 Z M8.5,6 C7.94771525,6 7.5,6.44771525 7.5,7 C7.5,7.55228475 7.94771525,8 8.5,8 C9.05228475,8 9.5,7.55228475 9.5,7 C9.5,6.44771525 9.05228475,6 8.5,6 Z"/></svg>
@@ -1,10 +1,13 @@
1
+ import { IonItemSliding } from '@ionic/angular';
1
2
  import { ItemSlidingSide, ItemSwipeAction } from './item-sliding.types';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class ItemSlidingComponent {
5
+ itemSliding: IonItemSliding;
4
6
  swipeActions: ItemSwipeAction[];
5
7
  _side: 'start' | 'end';
6
8
  set side(value: ItemSlidingSide);
7
9
  get _hasSwipeActions(): boolean;
10
+ onSwipeActionClick(swipeAction: ItemSwipeAction): void;
8
11
  static ɵfac: i0.ɵɵFactoryDeclaration<ItemSlidingComponent, never>;
9
12
  static ɵcmp: i0.ɵɵComponentDeclaration<ItemSlidingComponent, "kirby-item-sliding", never, { "swipeActions": "swipeActions"; "side": "side"; }, {}, never, ["*"], true, never>;
10
13
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kirbydesign/designsystem",
3
- "version": "8.10.0",
3
+ "version": "8.11.0",
4
4
  "dependencies": {
5
5
  "@floating-ui/dom": "^1.1.0",
6
6
  "@angular/cdk": "^15.0.3",
@@ -1,6 +1,7 @@
1
1
  import { IonicModule } from '@ionic/angular';
2
2
  export declare class TestHelper {
3
3
  static readonly _init: void;
4
+ static disableAnimationsInTest(): void;
4
5
  static muteIonicReInitializeWarning(): void;
5
6
  static ionicModuleForTest: import("@angular/core").ModuleWithProviders<IonicModule>;
6
7
  static whenReady(elementOrNodeList: Element | NodeListOf<Element> | Element[]): Promise<void>;