@kirbydesign/designsystem 12.0.0-dev-286cdc0 → 12.0.0-dev-9f721bb

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.
@@ -448,7 +448,7 @@ var ListItemComponent = class ListItemComponent {
448
448
  }],
449
449
  ngImport: i0,
450
450
  template: "<ion-item-sliding\n [class.selected]=\"isSelected\"\n [kirbyListItemColor]=\"getItemColor\"\n [item]=\"item\"\n [disabled]=\"_isSwipingEnabled ? null : true\"\n keyHandler\n [ngClass]=\"boundaryClass\"\n (click)=\"_onItemSelect(item)\"\n>\n <ng-container\n *ngTemplateOutlet=\"swipeActionsTemplate; context: { $implicit: item }\"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n</ion-item-sliding>\n\n<ng-template #swipeActionsTemplate let-item>\n @if (_hasSwipeActions(item)) {\n <ion-item-options [side]=\"_getSwipeActionEnd(item)\">\n <div class=\"swipe-action\">\n @for (swipeAction of _getSwipeActions(item); track swipeAction.title) {\n <ion-item-option\n [ngClass]=\"_getSwipeActionType(swipeAction, item)\"\n (click)=\"_onSwipeActionSelect(swipeAction, item, $event)\"\n >\n <div class=\"item-content\">\n @if (_getSwipeActionIcon(swipeAction, item)) {\n <kirby-icon size=\"sm\" [name]=\"_getSwipeActionIcon(swipeAction, item)\"></kirby-icon>\n }\n <ion-label>\n {{ _getSwipeActionTitle(swipeAction, item) }}\n </ion-label>\n </div>\n </ion-item-option>\n }\n </div>\n </ion-item-options>\n }\n</ng-template>\n",
451
- styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.success{background-color:var(--kirby-color-fill-success);color:var(--kirby-color-content-success)}@media(hover:hover){ion-item-option.success:hover{background-color:var(--kirby-color-fill-success-hover);color:var(--kirby-color-content-success-hover)}}ion-item-option.success:active{background-color:var(--kirby-color-fill-success-active);color:var(--kirby-color-content-success-active)}ion-item-option.warning{background-color:var(--kirby-color-fill-warning);color:var(--kirby-color-content-warning)}@media(hover:hover){ion-item-option.warning:hover{background-color:var(--kirby-color-fill-warning-hover);color:var(--kirby-color-content-warning-hover)}}ion-item-option.warning:active{background-color:var(--kirby-color-fill-warning-active);color:var(--kirby-color-content-warning-active)}ion-item-option.danger{background-color:var(--kirby-color-fill-danger);color:var(--kirby-color-content-danger)}@media(hover:hover){ion-item-option.danger:hover{background-color:var(--kirby-color-fill-danger-hover);color:var(--kirby-color-content-danger-hover)}}ion-item-option.danger:active{background-color:var(--kirby-color-fill-danger-active);color:var(--kirby-color-content-danger-active)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-card);background:transparent;contain:inherit;padding:0}.kirby-surface-raised{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-quiet)}ion-list-header{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-bottom:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-top:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-card);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}:host(:not(.has-sections,.has-stand-alone)) .has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}:host(:not(.has-sections,.has-stand-alone)) .has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{--kirby-item-background: transparent;box-shadow:none;border-radius:unset}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n", ":host{overflow:hidden}:host-context(.has-divider) ion-item-sliding{border-bottom:var(--kirby-stroke-xs) solid var(--kirby-list-item-border-color, var(--kirby-color-border-base-silent))}:host(:last-of-type) ion-item-sliding{border-bottom:none}\n"],
451
+ styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.success{background-color:var(--kirby-color-fill-success);color:var(--kirby-color-content-success)}@media(hover:hover){ion-item-option.success:hover{background-color:var(--kirby-color-fill-success-hover);color:var(--kirby-color-content-success-hover)}}ion-item-option.success:active{background-color:var(--kirby-color-fill-success-active);color:var(--kirby-color-content-success-active)}ion-item-option.warning{background-color:var(--kirby-color-fill-warning);color:var(--kirby-color-content-warning)}@media(hover:hover){ion-item-option.warning:hover{background-color:var(--kirby-color-fill-warning-hover);color:var(--kirby-color-content-warning-hover)}}ion-item-option.warning:active{background-color:var(--kirby-color-fill-warning-active);color:var(--kirby-color-content-warning-active)}ion-item-option.danger{background-color:var(--kirby-color-fill-danger);color:var(--kirby-color-content-danger)}@media(hover:hover){ion-item-option.danger:hover{background-color:var(--kirby-color-fill-danger-hover);color:var(--kirby-color-content-danger-hover)}}ion-item-option.danger:active{background-color:var(--kirby-color-fill-danger-active);color:var(--kirby-color-content-danger-active)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-card);background:transparent;contain:inherit;padding:0}.kirby-surface-raised{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-quiet)}:host-context(kirby-card) .kirby-surface-raised{border-color:var(--kirby-color-fill-base)}ion-list-header{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-bottom:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-top:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-card);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}:host(:not(.has-sections,.has-stand-alone)) .has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}:host(:not(.has-sections,.has-stand-alone)) .has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{--kirby-item-background: transparent;box-shadow:none;border-radius:unset}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n", ":host{overflow:hidden}:host-context(.has-divider) ion-item-sliding{border-bottom:var(--kirby-stroke-xs) solid var(--kirby-list-item-border-color, var(--kirby-color-border-base-silent))}:host(:last-of-type) ion-item-sliding{border-bottom:none}\n"],
452
452
  dependencies: [
453
453
  {
454
454
  kind: "component",
@@ -527,7 +527,7 @@ i0.ɵɵngDeclareClassMetadata({
527
527
  ],
528
528
  changeDetection: ChangeDetectionStrategy.Eager,
529
529
  template: "<ion-item-sliding\n [class.selected]=\"isSelected\"\n [kirbyListItemColor]=\"getItemColor\"\n [item]=\"item\"\n [disabled]=\"_isSwipingEnabled ? null : true\"\n keyHandler\n [ngClass]=\"boundaryClass\"\n (click)=\"_onItemSelect(item)\"\n>\n <ng-container\n *ngTemplateOutlet=\"swipeActionsTemplate; context: { $implicit: item }\"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n</ion-item-sliding>\n\n<ng-template #swipeActionsTemplate let-item>\n @if (_hasSwipeActions(item)) {\n <ion-item-options [side]=\"_getSwipeActionEnd(item)\">\n <div class=\"swipe-action\">\n @for (swipeAction of _getSwipeActions(item); track swipeAction.title) {\n <ion-item-option\n [ngClass]=\"_getSwipeActionType(swipeAction, item)\"\n (click)=\"_onSwipeActionSelect(swipeAction, item, $event)\"\n >\n <div class=\"item-content\">\n @if (_getSwipeActionIcon(swipeAction, item)) {\n <kirby-icon size=\"sm\" [name]=\"_getSwipeActionIcon(swipeAction, item)\"></kirby-icon>\n }\n <ion-label>\n {{ _getSwipeActionTitle(swipeAction, item) }}\n </ion-label>\n </div>\n </ion-item-option>\n }\n </div>\n </ion-item-options>\n }\n</ng-template>\n",
530
- styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.success{background-color:var(--kirby-color-fill-success);color:var(--kirby-color-content-success)}@media(hover:hover){ion-item-option.success:hover{background-color:var(--kirby-color-fill-success-hover);color:var(--kirby-color-content-success-hover)}}ion-item-option.success:active{background-color:var(--kirby-color-fill-success-active);color:var(--kirby-color-content-success-active)}ion-item-option.warning{background-color:var(--kirby-color-fill-warning);color:var(--kirby-color-content-warning)}@media(hover:hover){ion-item-option.warning:hover{background-color:var(--kirby-color-fill-warning-hover);color:var(--kirby-color-content-warning-hover)}}ion-item-option.warning:active{background-color:var(--kirby-color-fill-warning-active);color:var(--kirby-color-content-warning-active)}ion-item-option.danger{background-color:var(--kirby-color-fill-danger);color:var(--kirby-color-content-danger)}@media(hover:hover){ion-item-option.danger:hover{background-color:var(--kirby-color-fill-danger-hover);color:var(--kirby-color-content-danger-hover)}}ion-item-option.danger:active{background-color:var(--kirby-color-fill-danger-active);color:var(--kirby-color-content-danger-active)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-card);background:transparent;contain:inherit;padding:0}.kirby-surface-raised{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-quiet)}ion-list-header{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-bottom:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-top:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-card);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}:host(:not(.has-sections,.has-stand-alone)) .has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}:host(:not(.has-sections,.has-stand-alone)) .has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{--kirby-item-background: transparent;box-shadow:none;border-radius:unset}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n", ":host{overflow:hidden}:host-context(.has-divider) ion-item-sliding{border-bottom:var(--kirby-stroke-xs) solid var(--kirby-list-item-border-color, var(--kirby-color-border-base-silent))}:host(:last-of-type) ion-item-sliding{border-bottom:none}\n"]
530
+ styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.success{background-color:var(--kirby-color-fill-success);color:var(--kirby-color-content-success)}@media(hover:hover){ion-item-option.success:hover{background-color:var(--kirby-color-fill-success-hover);color:var(--kirby-color-content-success-hover)}}ion-item-option.success:active{background-color:var(--kirby-color-fill-success-active);color:var(--kirby-color-content-success-active)}ion-item-option.warning{background-color:var(--kirby-color-fill-warning);color:var(--kirby-color-content-warning)}@media(hover:hover){ion-item-option.warning:hover{background-color:var(--kirby-color-fill-warning-hover);color:var(--kirby-color-content-warning-hover)}}ion-item-option.warning:active{background-color:var(--kirby-color-fill-warning-active);color:var(--kirby-color-content-warning-active)}ion-item-option.danger{background-color:var(--kirby-color-fill-danger);color:var(--kirby-color-content-danger)}@media(hover:hover){ion-item-option.danger:hover{background-color:var(--kirby-color-fill-danger-hover);color:var(--kirby-color-content-danger-hover)}}ion-item-option.danger:active{background-color:var(--kirby-color-fill-danger-active);color:var(--kirby-color-content-danger-active)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-card);background:transparent;contain:inherit;padding:0}.kirby-surface-raised{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-quiet)}:host-context(kirby-card) .kirby-surface-raised{border-color:var(--kirby-color-fill-base)}ion-list-header{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-bottom:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-top:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-card);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}:host(:not(.has-sections,.has-stand-alone)) .has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}:host(:not(.has-sections,.has-stand-alone)) .has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{--kirby-item-background: transparent;box-shadow:none;border-radius:unset}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n", ":host{overflow:hidden}:host-context(.has-divider) ion-item-sliding{border-bottom:var(--kirby-stroke-xs) solid var(--kirby-list-item-border-color, var(--kirby-color-border-base-silent))}:host(:last-of-type) ion-item-sliding{border-bottom:none}\n"]
531
531
  }]
532
532
  }],
533
533
  ctorParameters: () => [{ type: i1.PlatformService }],
@@ -878,7 +878,7 @@ var ListComponent = class ListComponent {
878
878
  usesOnChanges: true,
879
879
  ngImport: i0,
880
880
  template: "<ion-list\n #list\n kirbyInfiniteScroll\n (scrollEnd)=\"_onLoadOnDemand()\"\n [disabled]=\"!isLoadOnDemandEnabled\"\n class=\"list\"\n [class.has-header]=\"headerTemplate\"\n [class.has-footer]=\"footerTemplate\"\n [class.has-divider]=\"showDivider\"\n [class.kirby-surface-raised]=\"_isListRaisedSurface\"\n>\n @if (headerTemplate) {\n <ion-list-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ion-list-header>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n _isSectionsEnabled || _isStandAloneEnabled ? groupedListTemplate : itemsTemplate;\n context: { $implicit: items }\n \"\n ></ng-container>\n\n @if (footerTemplate) {\n <div class=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n</ion-list>\n\n@if (!isLoadOnDemandEnabled && noMoreItemsText) {\n <p class=\"no-more-items\">\n {{ noMoreItemsText }}\n </p>\n}\n@if (_isLoading) {\n <div class=\"loading\">\n <kirby-spinner></kirby-spinner>\n </div>\n}\n\n<ng-template #groupedListTemplate>\n @for (section of _groupedItems; track sectionTrackBy($index, section)) {\n <ion-item-group [ngClass]=\"standAloneClass()\">\n @if (_isSectionsEnabled) {\n <ion-item-divider>\n <ng-container\n *ngTemplateOutlet=\"sectionHeaderTemplate; context: { $implicit: section.name }\"\n ></ng-container>\n </ion-item-divider>\n }\n @if (_isSectionsEnabled && _isStandAloneEnabled) {\n @for (list of section.lists; track list) {\n <div\n class=\"list-items\"\n [ngClass]=\"standAloneClass()\"\n [class.kirby-surface-raised]=\"_isRaisedSurface\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: list }\"\n ></ng-container>\n </div>\n }\n } @else {\n <div\n class=\"list-items\"\n [ngClass]=\"standAloneClass()\"\n [class.kirby-surface-raised]=\"_isRaisedSurface\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: section.items }\"\n ></ng-container>\n </div>\n }\n </ion-item-group>\n }\n</ng-template>\n\n<ng-template #itemsTemplate let-items>\n @for (item of items; track trackBy ? trackBy($index, item) : $index; let i = $index) {\n <kirby-list-item\n [item]=\"item\"\n [itemTemplate]=\"itemTemplate\"\n [swipeActions]=\"swipeActions\"\n [boundaryClass]=\"_getBoundaryClass(i, items)\"\n [isSelectable]=\"_isSelectable\"\n [getItemColor]=\"getItemColor\"\n [isSelected]=\"_isSelectable && item === _selectedItem\"\n (itemSelect)=\"onItemSelect($event)\"\n (swipeActionSelect)=\"onSwipeActionSelect($event)\"\n [class.is-single]=\"items.length === 1\"\n ></kirby-list-item>\n }\n</ng-template>\n",
881
- styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.success{background-color:var(--kirby-color-fill-success);color:var(--kirby-color-content-success)}@media(hover:hover){ion-item-option.success:hover{background-color:var(--kirby-color-fill-success-hover);color:var(--kirby-color-content-success-hover)}}ion-item-option.success:active{background-color:var(--kirby-color-fill-success-active);color:var(--kirby-color-content-success-active)}ion-item-option.warning{background-color:var(--kirby-color-fill-warning);color:var(--kirby-color-content-warning)}@media(hover:hover){ion-item-option.warning:hover{background-color:var(--kirby-color-fill-warning-hover);color:var(--kirby-color-content-warning-hover)}}ion-item-option.warning:active{background-color:var(--kirby-color-fill-warning-active);color:var(--kirby-color-content-warning-active)}ion-item-option.danger{background-color:var(--kirby-color-fill-danger);color:var(--kirby-color-content-danger)}@media(hover:hover){ion-item-option.danger:hover{background-color:var(--kirby-color-fill-danger-hover);color:var(--kirby-color-content-danger-hover)}}ion-item-option.danger:active{background-color:var(--kirby-color-fill-danger-active);color:var(--kirby-color-content-danger-active)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-card);background:transparent;contain:inherit;padding:0}.kirby-surface-raised{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-quiet)}ion-list-header{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-bottom:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-top:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-card);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}:host(:not(.has-sections,.has-stand-alone)) .has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}:host(:not(.has-sections,.has-stand-alone)) .has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{--kirby-item-background: transparent;box-shadow:none;border-radius:unset}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n"],
881
+ styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.success{background-color:var(--kirby-color-fill-success);color:var(--kirby-color-content-success)}@media(hover:hover){ion-item-option.success:hover{background-color:var(--kirby-color-fill-success-hover);color:var(--kirby-color-content-success-hover)}}ion-item-option.success:active{background-color:var(--kirby-color-fill-success-active);color:var(--kirby-color-content-success-active)}ion-item-option.warning{background-color:var(--kirby-color-fill-warning);color:var(--kirby-color-content-warning)}@media(hover:hover){ion-item-option.warning:hover{background-color:var(--kirby-color-fill-warning-hover);color:var(--kirby-color-content-warning-hover)}}ion-item-option.warning:active{background-color:var(--kirby-color-fill-warning-active);color:var(--kirby-color-content-warning-active)}ion-item-option.danger{background-color:var(--kirby-color-fill-danger);color:var(--kirby-color-content-danger)}@media(hover:hover){ion-item-option.danger:hover{background-color:var(--kirby-color-fill-danger-hover);color:var(--kirby-color-content-danger-hover)}}ion-item-option.danger:active{background-color:var(--kirby-color-fill-danger-active);color:var(--kirby-color-content-danger-active)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-card);background:transparent;contain:inherit;padding:0}.kirby-surface-raised{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-quiet)}:host-context(kirby-card) .kirby-surface-raised{border-color:var(--kirby-color-fill-base)}ion-list-header{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-bottom:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-top:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-card);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}:host(:not(.has-sections,.has-stand-alone)) .has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}:host(:not(.has-sections,.has-stand-alone)) .has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{--kirby-item-background: transparent;box-shadow:none;border-radius:unset}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n"],
882
882
  dependencies: [
883
883
  {
884
884
  kind: "component",
@@ -986,7 +986,7 @@ i0.ɵɵngDeclareClassMetadata({
986
986
  ],
987
987
  changeDetection: ChangeDetectionStrategy.Eager,
988
988
  template: "<ion-list\n #list\n kirbyInfiniteScroll\n (scrollEnd)=\"_onLoadOnDemand()\"\n [disabled]=\"!isLoadOnDemandEnabled\"\n class=\"list\"\n [class.has-header]=\"headerTemplate\"\n [class.has-footer]=\"footerTemplate\"\n [class.has-divider]=\"showDivider\"\n [class.kirby-surface-raised]=\"_isListRaisedSurface\"\n>\n @if (headerTemplate) {\n <ion-list-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ion-list-header>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n _isSectionsEnabled || _isStandAloneEnabled ? groupedListTemplate : itemsTemplate;\n context: { $implicit: items }\n \"\n ></ng-container>\n\n @if (footerTemplate) {\n <div class=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n</ion-list>\n\n@if (!isLoadOnDemandEnabled && noMoreItemsText) {\n <p class=\"no-more-items\">\n {{ noMoreItemsText }}\n </p>\n}\n@if (_isLoading) {\n <div class=\"loading\">\n <kirby-spinner></kirby-spinner>\n </div>\n}\n\n<ng-template #groupedListTemplate>\n @for (section of _groupedItems; track sectionTrackBy($index, section)) {\n <ion-item-group [ngClass]=\"standAloneClass()\">\n @if (_isSectionsEnabled) {\n <ion-item-divider>\n <ng-container\n *ngTemplateOutlet=\"sectionHeaderTemplate; context: { $implicit: section.name }\"\n ></ng-container>\n </ion-item-divider>\n }\n @if (_isSectionsEnabled && _isStandAloneEnabled) {\n @for (list of section.lists; track list) {\n <div\n class=\"list-items\"\n [ngClass]=\"standAloneClass()\"\n [class.kirby-surface-raised]=\"_isRaisedSurface\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: list }\"\n ></ng-container>\n </div>\n }\n } @else {\n <div\n class=\"list-items\"\n [ngClass]=\"standAloneClass()\"\n [class.kirby-surface-raised]=\"_isRaisedSurface\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: section.items }\"\n ></ng-container>\n </div>\n }\n </ion-item-group>\n }\n</ng-template>\n\n<ng-template #itemsTemplate let-items>\n @for (item of items; track trackBy ? trackBy($index, item) : $index; let i = $index) {\n <kirby-list-item\n [item]=\"item\"\n [itemTemplate]=\"itemTemplate\"\n [swipeActions]=\"swipeActions\"\n [boundaryClass]=\"_getBoundaryClass(i, items)\"\n [isSelectable]=\"_isSelectable\"\n [getItemColor]=\"getItemColor\"\n [isSelected]=\"_isSelectable && item === _selectedItem\"\n (itemSelect)=\"onItemSelect($event)\"\n (swipeActionSelect)=\"onSwipeActionSelect($event)\"\n [class.is-single]=\"items.length === 1\"\n ></kirby-list-item>\n }\n</ng-template>\n",
989
- styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.success{background-color:var(--kirby-color-fill-success);color:var(--kirby-color-content-success)}@media(hover:hover){ion-item-option.success:hover{background-color:var(--kirby-color-fill-success-hover);color:var(--kirby-color-content-success-hover)}}ion-item-option.success:active{background-color:var(--kirby-color-fill-success-active);color:var(--kirby-color-content-success-active)}ion-item-option.warning{background-color:var(--kirby-color-fill-warning);color:var(--kirby-color-content-warning)}@media(hover:hover){ion-item-option.warning:hover{background-color:var(--kirby-color-fill-warning-hover);color:var(--kirby-color-content-warning-hover)}}ion-item-option.warning:active{background-color:var(--kirby-color-fill-warning-active);color:var(--kirby-color-content-warning-active)}ion-item-option.danger{background-color:var(--kirby-color-fill-danger);color:var(--kirby-color-content-danger)}@media(hover:hover){ion-item-option.danger:hover{background-color:var(--kirby-color-fill-danger-hover);color:var(--kirby-color-content-danger-hover)}}ion-item-option.danger:active{background-color:var(--kirby-color-fill-danger-active);color:var(--kirby-color-content-danger-active)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-card);background:transparent;contain:inherit;padding:0}.kirby-surface-raised{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-quiet)}ion-list-header{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-bottom:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-top:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-card);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}:host(:not(.has-sections,.has-stand-alone)) .has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}:host(:not(.has-sections,.has-stand-alone)) .has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{--kirby-item-background: transparent;box-shadow:none;border-radius:unset}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n"]
989
+ styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.success{background-color:var(--kirby-color-fill-success);color:var(--kirby-color-content-success)}@media(hover:hover){ion-item-option.success:hover{background-color:var(--kirby-color-fill-success-hover);color:var(--kirby-color-content-success-hover)}}ion-item-option.success:active{background-color:var(--kirby-color-fill-success-active);color:var(--kirby-color-content-success-active)}ion-item-option.warning{background-color:var(--kirby-color-fill-warning);color:var(--kirby-color-content-warning)}@media(hover:hover){ion-item-option.warning:hover{background-color:var(--kirby-color-fill-warning-hover);color:var(--kirby-color-content-warning-hover)}}ion-item-option.warning:active{background-color:var(--kirby-color-fill-warning-active);color:var(--kirby-color-content-warning-active)}ion-item-option.danger{background-color:var(--kirby-color-fill-danger);color:var(--kirby-color-content-danger)}@media(hover:hover){ion-item-option.danger:hover{background-color:var(--kirby-color-fill-danger-hover);color:var(--kirby-color-content-danger-hover)}}ion-item-option.danger:active{background-color:var(--kirby-color-fill-danger-active);color:var(--kirby-color-content-danger-active)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-card);background:transparent;contain:inherit;padding:0}.kirby-surface-raised{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-quiet)}:host-context(kirby-card) .kirby-surface-raised{border-color:var(--kirby-color-fill-base)}ion-list-header{background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-bottom:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-color-fill-base);color:var(--kirby-color-content-base);border-top:var(--kirby-stroke-xs) solid var(--kirby-color-border-base-silent);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-card);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}:host(:not(.has-sections,.has-stand-alone)) .has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}:host(:not(.has-sections,.has-stand-alone)) .has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{--kirby-item-background: transparent;box-shadow:none;border-radius:unset}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n"]
990
990
  }]
991
991
  }],
992
992
  ctorParameters: () => [
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-list.mjs","names":[],"sources":["../../list/src/directives/infinite-scroll.directive.ts","../../list/src/directives/list-item-color.directive.ts","../../list/src/helpers/list-helper.ts","../../list/src/list-experimental/list-experimental.component.ts","../../list/src/list-experimental/list-experimental.component.html","../../list/src/list-header/list-header.component.ts","../../list/src/list-header/list-header.component.html","../../list/src/list-item/list-item.component.ts","../../list/src/list-item/list-item.component.html","../../list/src/list-section-header/list-section-header.component.ts","../../list/src/list-section-header/list-section-header.component.html","../../list/src/list.directive.ts","../../list/src/list.component.ts","../../list/src/list.component.html","../../list/src/list.module.ts"],"sourcesContent":["import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { WindowRef } from '@kirbydesign/designsystem/types';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { Scroll } from './scroll.model';\n\n/**\n * Specify debounce duration in ms\n */\nexport const INFINITE_SCROLL_DEBOUNCE = 100;\n\n@Directive({ selector: '[kirbyInfiniteScroll]' })\nexport class InfiniteScrollDirective implements AfterViewInit, OnDestroy {\n /**\n * Event that will be triggered when the user has scrolled to\n * bottom of the element\n */\n @Output() scrollEnd = new EventEmitter<void>();\n\n /**\n * If true then {@link scrollEnd} event should NOT be emitted\n */\n @Input() disabled = false;\n\n /**\n * Emits a new value on element scroll event\n */\n scroll$: Subject<Scroll> = new Subject<Scroll>();\n\n /**\n * Completes on component destroy lifecycle event\n * used to unsubscribe from infinite observables\n */\n private ngUnsubscribe$ = new Subject<void>();\n\n /**\n * An offset from the bottom of the element to trigger {@link scrollEnd} event\n */\n private offset = 0.8;\n\n constructor(\n private elementRef: ElementRef,\n private windowRef: WindowRef,\n private zone: NgZone\n ) {}\n\n ngAfterViewInit(): void {\n /**\n * Subscribe to {@link scroll$} observable and emit {@link scrollEnd} event\n * when element scroll position has surpassed the offset.\n */\n this.scroll$\n .pipe(\n takeUntil(this.ngUnsubscribe$),\n debounceTime(INFINITE_SCROLL_DEBOUNCE),\n filter(() => !this.disabled),\n filter((scroll) => {\n return (\n scroll.elementHeight * (1 - this.offset) >=\n scroll.distanceToViewBottom - scroll.viewHeight\n );\n })\n )\n .subscribe(() => {\n this.scrollEnd.emit();\n });\n\n /**\n * Subscribe to the ionScroll event on the ion-content around the list (if any)\n * and emit {@link scrollEnd} event when element scroll position has surpassed the offset.\n */\n setTimeout(() => {\n const ionContent: HTMLElement = this.elementRef.nativeElement.closest('ion-content');\n if (ionContent) {\n // we run the 'ionScroll' event outside angular, as it would trigger change detection on each scroll\n this.zone.runOutsideAngular(() => {\n fromEvent<any>(ionContent, 'ionScroll')\n .pipe(\n takeUntil(this.ngUnsubscribe$),\n debounceTime(INFINITE_SCROLL_DEBOUNCE),\n filter(() => !this.disabled),\n map(() => this.getScroll()),\n filter((scroll) => {\n return (\n scroll.elementHeight * (1 - this.offset) >=\n scroll.distanceToViewBottom - scroll.viewHeight\n );\n })\n )\n .subscribe(() => {\n // we make sure to emit the event inside angular again. As we want to show the spinner and need change detection for that.\n this.zone.run(() => this.scrollEnd.emit());\n });\n });\n }\n });\n }\n\n /**\n * On element scroll event emit next {@link scroll$} observable value\n */\n @HostListener('window:scroll')\n onScroll(): void {\n if (this.disabled) return;\n const scroll = this.getScroll();\n this.scroll$.next(scroll);\n }\n\n /**\n * trigger {@link ngUnsubscribe} complete on component destroy lifecycle hook\n */\n ngOnDestroy(): void {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n\n private getScroll(): Scroll {\n const element = this.elementRef.nativeElement as HTMLElement;\n const boundindClientRect = element.getBoundingClientRect();\n\n const distanceToViewBottom = boundindClientRect.bottom;\n const elementHeight = boundindClientRect.height;\n const viewHeight = this.windowRef.nativeWindow.innerHeight;\n\n return { distanceToViewBottom, elementHeight, viewHeight };\n }\n}\n","import { Directive, HostBinding, Input, OnChanges } from '@angular/core';\n\nimport { ThemeColor } from '@kirbydesign/core';\n\n@Directive({ selector: '[kirbyListItemColor]' })\nexport class ListItemColorDirective implements OnChanges {\n @Input()\n kirbyListItemColor: (item: any) => ThemeColor;\n @Input() item: any;\n @HostBinding('class')\n color: ThemeColor;\n\n ngOnChanges(): void {\n this.color = this.getColor();\n }\n\n private getColor(): ThemeColor {\n if (!this.kirbyListItemColor || !this.item) {\n return;\n }\n\n const themeColor = this.kirbyListItemColor(this.item);\n return themeColor;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ListComponent } from '../list.component';\n\ntype Section<T> = {\n name: string;\n items: T[];\n};\n\ntype SectionWithStandAloneItems<T> = {\n name: string;\n lists: T[][];\n};\n\n@Injectable()\nexport class ListHelper {\n public onLoadOnDemand(component: ListComponent) {\n if (component.isLoadOnDemandEnabled && !component._isLoading) {\n component._isLoading = true;\n component.loadOnDemand.emit({\n complete: (disableLoadOnDemand: boolean) => {\n component.isLoadOnDemandEnabled = !disableLoadOnDemand;\n component._isLoading = false;\n },\n });\n }\n }\n\n public groupSections<T>(items: T[], getGroupName: (item: T) => string): Section<T>[] {\n const groupsMap = new Map<string, T[]>();\n\n items.forEach((item) => {\n const itemGroup = getGroupName(item);\n const groupItems = groupsMap.get(itemGroup);\n\n if (groupItems) {\n groupItems.push(item);\n } else {\n groupsMap.set(itemGroup, [item]);\n }\n });\n\n return Array.from(groupsMap)\n .sort(([name], [otherName]) => name.localeCompare(otherName))\n .map(([name, items]) => {\n return { name, items };\n });\n }\n\n public groupStandAloneItems<T>(items: T[], standAloneProperty: string): { items: T[] }[] {\n const list = items.reduce(\n (accumulator, item) => {\n const lastList = accumulator[accumulator.length - 1];\n const lastItemInList = lastList[lastList.length - 1];\n\n if (!lastItemInList) {\n lastList.push(item);\n } else if (!item[standAloneProperty] && !lastItemInList[standAloneProperty]) {\n lastList.push(item);\n } else {\n accumulator.push([item]);\n }\n\n return accumulator;\n },\n [[]] as [T[]]\n );\n\n return list.map((items) => {\n return { items };\n });\n }\n\n public groupSectionsWithStandAloneItems<T>(\n items: T[],\n getGroupName: (item: T) => string,\n standAloneProperty: string\n ): SectionWithStandAloneItems<T>[] {\n const sectionsMap = new Map<string, T[][]>();\n\n items.forEach((item) => {\n const sectionName = getGroupName(item);\n\n if (sectionsMap.has(sectionName)) {\n const section = sectionsMap.get(sectionName);\n const lastListInSection = section[section.length - 1];\n const lastItemInList = lastListInSection[lastListInSection.length - 1];\n\n if (!item[standAloneProperty] && !lastItemInList[standAloneProperty]) {\n lastListInSection.push(item);\n } else {\n section.push([item]);\n }\n } else {\n sectionsMap.set(sectionName, [[item]]);\n }\n });\n\n return Array.from(sectionsMap)\n .sort(([name], [otherName]) => name.localeCompare(otherName))\n .map(([name, lists]) => {\n return { name, lists };\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener, ViewChild } from '@angular/core';\nimport { IonList } from '@ionic/angular';\nimport { elementHasAncestor } from '@kirbydesign/designsystem/helpers';\n\n@Component({\n selector: 'kirby-list-experimental',\n templateUrl: './list-experimental.component.html',\n styleUrls: ['./list-experimental.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListExperimentalComponent {\n @ViewChild(IonList, { static: true }) list: IonList;\n\n @HostListener('click', ['$event'])\n closeAllSlidingItems(e: MouseEvent) {\n if (elementHasAncestor(e.target as HTMLElement, 'ion-item-option', 'ion-list')) {\n this.list.closeSlidingItems();\n }\n }\n}\n","<ng-content select=\"[outside]\"></ng-content>\n<div class=\"rounded shadow first-item-padding last-item-padding\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'kirby-list-header',\n templateUrl: './list-header.component.html',\n styleUrls: ['./list-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListHeaderComponent {\n constructor() {}\n}\n","<ng-content></ng-content>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { IonItemOptions, IonItemSliding, IonLabel } from '@ionic/angular';\n\nimport { ThemeColor } from '@kirbydesign/core';\nimport { PlatformService } from '@kirbydesign/designsystem/helpers';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\nimport { ListSwipeAction, ListSwipeDirection, ListSwipeEnd } from '../list-swipe-action.type';\nimport { ListItemColorDirective } from '../directives/list-item-color.directive';\n\nexport type BoundaryClass = 'first' | 'last';\n\n@Component({\n selector: 'kirby-list-item',\n templateUrl: './list-item.component.html',\n styleUrls: ['../list.component.scss', './list-item.component.scss'],\n imports: [\n IonItemSliding,\n ListItemColorDirective,\n NgClass,\n NgTemplateOutlet,\n IonItemOptions,\n IconComponent,\n IonLabel,\n ],\n changeDetection: ChangeDetectionStrategy.Eager,\n})\nexport class ListItemComponent implements OnInit, AfterViewInit {\n _isSwipingEnabled = false;\n\n constructor(private platform: PlatformService) {\n this.initializeSwipeActions();\n }\n\n @ViewChild(IonItemSliding) ionItemSliding: IonItemSliding;\n\n @Input() item: any;\n\n @Input() boundaryClass: BoundaryClass | BoundaryClass[];\n\n @Input() swipeActions: ListSwipeAction[] = [];\n\n @Input() itemTemplate: TemplateRef<any>;\n\n @Input() isSelected: boolean;\n\n @Input() isSelectable: boolean;\n\n @Input() getItemColor: (item: any) => ThemeColor;\n\n @Output() itemSelect = new EventEmitter<any>();\n\n _onItemSelect(item: any) {\n if (!this.isSelectable) return;\n this.itemSelect.emit(item);\n }\n\n @Output() swipeActionSelect = new EventEmitter<any>();\n\n _onSwipeActionSelect(swipeAction, item, event) {\n this.swipeActionSelect.emit({\n swipeAction,\n item,\n event,\n });\n }\n\n ngOnInit() {\n this.initializeSwipeActions();\n }\n\n ngAfterViewInit(): void {\n if (!this.itemTemplate) {\n console.warn('No item template was provided.');\n }\n }\n\n _hasSwipeActions(item: any): boolean {\n if (!Array.isArray(this.swipeActions)) {\n return false;\n }\n return this.swipeActions.some((swipeAction) => {\n if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {\n return false;\n }\n if (swipeAction.isDisabled === true) {\n return false;\n }\n return swipeAction.position === 'left' || swipeAction.position === 'right';\n });\n }\n\n _getSwipeActions(item: any, direction?: ListSwipeDirection): ListSwipeAction[] {\n if (!Array.isArray(this.swipeActions)) {\n return [];\n }\n return this.swipeActions.filter((swipeAction) => {\n if (this.isSwipeActionDisabled(swipeAction, item)) {\n return false;\n }\n return direction ? swipeAction.position === direction : true;\n });\n }\n\n private isSwipeActionDisabled(swipeAction: ListSwipeAction, item: any): boolean {\n if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {\n return true;\n }\n return swipeAction.isDisabled === true;\n }\n\n _getSwipeActionEnd(item: any): ListSwipeEnd {\n if (this._getSwipeActions(item, 'left').length) {\n return 'start';\n }\n return 'end';\n }\n\n _getSwipeActionIcon(swipeAction: ListSwipeAction, item: any): string {\n if (!swipeAction.icon) return;\n\n if (swipeAction.icon instanceof Function) {\n return swipeAction.icon(item);\n }\n return swipeAction.icon;\n }\n\n _getSwipeActionTitle(swipeAction: ListSwipeAction, item: any): string {\n if (swipeAction.title instanceof Function) {\n return swipeAction.title(item);\n }\n return swipeAction.title;\n }\n\n _getSwipeActionType(swipeAction: ListSwipeAction, item: any): ThemeColor {\n if (swipeAction.type instanceof Function) {\n return swipeAction.type(item);\n }\n return swipeAction.type;\n }\n\n private initializeSwipeActions(): void {\n if (this.swipeActions && this.swipeActions.length) {\n this._isSwipingEnabled = this.platform.isTouch();\n }\n }\n}\n","<ion-item-sliding\n [class.selected]=\"isSelected\"\n [kirbyListItemColor]=\"getItemColor\"\n [item]=\"item\"\n [disabled]=\"_isSwipingEnabled ? null : true\"\n keyHandler\n [ngClass]=\"boundaryClass\"\n (click)=\"_onItemSelect(item)\"\n>\n <ng-container\n *ngTemplateOutlet=\"swipeActionsTemplate; context: { $implicit: item }\"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n</ion-item-sliding>\n\n<ng-template #swipeActionsTemplate let-item>\n @if (_hasSwipeActions(item)) {\n <ion-item-options [side]=\"_getSwipeActionEnd(item)\">\n <div class=\"swipe-action\">\n @for (swipeAction of _getSwipeActions(item); track swipeAction.title) {\n <ion-item-option\n [ngClass]=\"_getSwipeActionType(swipeAction, item)\"\n (click)=\"_onSwipeActionSelect(swipeAction, item, $event)\"\n >\n <div class=\"item-content\">\n @if (_getSwipeActionIcon(swipeAction, item)) {\n <kirby-icon size=\"sm\" [name]=\"_getSwipeActionIcon(swipeAction, item)\"></kirby-icon>\n }\n <ion-label>\n {{ _getSwipeActionTitle(swipeAction, item) }}\n </ion-label>\n </div>\n </ion-item-option>\n }\n </div>\n </ion-item-options>\n }\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-list-section-header',\n templateUrl: './list-section-header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListSectionHeaderComponent {\n @Input() title: string;\n}\n","<div class=\"header\">\n <span class=\"kirby-text-small\">{{ title }}</span>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: '[kirbyListItemTemplate]' })\nexport class ListItemTemplateDirective {}\n\n@Directive({ selector: '[kirbyListHeader], [kirbyListHeaderTemplate]' })\nexport class ListHeaderDirective {}\n\n@Directive({ selector: '[kirbyListSectionHeader], [kirbyListSectionHeaderTemplate]' })\nexport class ListSectionHeaderDirective {}\n\n@Directive({ selector: '[kirbyListFooter], [kirbyListFooterTemplate]' })\nexport class ListFooterDirective {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n TemplateRef,\n TrackByFunction,\n ViewChild,\n} from '@angular/core';\n\nimport { ThemeColor } from '@kirbydesign/core';\n\nimport { forwardAttributes } from '@kirbydesign/designsystem/shared';\nimport { IonItemDivider, IonItemGroup, IonList, IonListHeader } from '@ionic/angular';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { SpinnerComponent } from '@kirbydesign/designsystem/spinner';\nimport { InfiniteScrollDirective } from './directives/infinite-scroll.directive';\nimport { ListHelper } from './helpers/list-helper';\nimport { BoundaryClass, ListItemComponent } from './list-item/list-item.component';\nimport { ListSwipeAction } from './list-swipe-action.type';\nimport {\n ListFooterDirective,\n ListHeaderDirective,\n ListItemTemplateDirective,\n ListSectionHeaderDirective,\n} from './list.directive';\nimport { LoadOnDemandEvent } from './list.event';\n\nexport type ListShape = 'square' | 'rounded' | 'none';\n\nexport type StandAloneSpacing =\n 'xxxxs' | 'xxxs' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl';\n\n@Component({\n selector: 'kirby-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n providers: [ListHelper],\n imports: [\n IonList,\n InfiniteScrollDirective,\n IonListHeader,\n NgTemplateOutlet,\n SpinnerComponent,\n IonItemGroup,\n NgClass,\n IonItemDivider,\n ListItemComponent,\n ],\n changeDetection: ChangeDetectionStrategy.Eager,\n})\nexport class ListComponent implements OnInit, OnChanges, AfterViewInit {\n @ViewChild('list', { static: true }) list: any;\n @ViewChild(InfiniteScrollDirective) scrollDirective: InfiniteScrollDirective;\n\n /**\n * Provide items for the list to render. Items must be provided in the order you expect them to be rendered.\n */\n @Input()\n items: any[] = [];\n\n /**\n * @deprecated Coloring list items differently is no longer supported, and the list no longer applies any styling based on the returned theme color.\n * This input will be removed in a future major version.\n */\n @Input() getItemColor: (item: any) => ThemeColor;\n\n /**\n * Callback to determine name of section. Sections will be ordered alphabetically.\n */\n @Input() getSectionName: (item: any) => string;\n\n /**\n * Callback that defines how to track changes for items in the iterable.\n */\n @Input() trackBy?: TrackByFunction<any>;\n\n /**\n * Property name to decide which items should be stand alone\n */\n @Input() getStandAloneByProperty: string;\n\n /**\n * Bottom margin for stand alone items\n */\n @Input() standAloneSpacing: StandAloneSpacing = 'xxs';\n\n /**\n * Text to display when no more items can be loaded (used for \"on demand\"-loading).\n */\n @Input() noMoreItemsText: string;\n\n /**\n * Determines if dividers (bottom-border on list items) should be shown or not.\n */\n @Input() showDivider = true;\n\n /**\n * Determines if list row text should turn bold on selection\n */\n @Input() markSelectedRow = false;\n\n /**\n * Determine outline shape of:\n * - list, if {@link #isSectionsEnabled} is `false`\n * - section, if {@link #isSectionsEnabled} is `true`\n *\n * `square` means **without** rounded corners, `rounded` means **with** rounded corners., `none` means **without** padding, border, box-shadow and background.\n */\n @Input() shape: ListShape = 'rounded';\n\n @HostBinding('class.shape-rounded')\n public get isShapeRounded(): boolean {\n return this.shape === 'rounded';\n }\n\n @HostBinding('class.shape-none')\n public get isShapeNone(): boolean {\n return this.shape === 'none';\n }\n\n /**\n * The list establishes a raised surface by default, until list usage is migrated\n * to shape=\"none\", and combined with card for base/raised/brand appearance\n */\n get _isRaisedSurface(): boolean {\n return !this.isShapeNone;\n }\n\n get _isListRaisedSurface(): boolean {\n return this._isRaisedSurface && !this._isSectionsEnabled && !this._isStandAloneEnabled;\n }\n\n @HostBinding('class.item-spacing')\n @Input()\n hasItemSpacing: boolean;\n\n /**\n * Determines if the loadOnDemand event should be emitted.\n * Will default to true if there is at least one subscriber to the loadOnDemand event\n */\n @Input() isLoadOnDemandEnabled: boolean;\n\n /**\n * Emitting event when more items are to be loaded.\n */\n @Output() loadOnDemand = new EventEmitter<LoadOnDemandEvent>();\n\n /**\n * Determines if list items should have swipe actions or not\n * - the order of swipe actions is used to determine edge actions,\n * as well as their order of appearance on the screen.\n */\n @Input() swipeActions: ListSwipeAction[] = [];\n\n /**\n * Emitting event when an item is selected (tapped on mobile, clicked on web)\n */\n @Output() itemSelect = new EventEmitter<any>();\n\n @Input() disableSelectionHighlight: boolean = false;\n\n private _attributesToForward = ['aria-label', 'aria-labelledby'];\n\n @ContentChild(ListHeaderDirective, { static: false, read: TemplateRef })\n headerTemplate: TemplateRef<any>;\n\n @ContentChild(ListSectionHeaderDirective, { static: false, read: TemplateRef })\n sectionHeaderTemplate: TemplateRef<any>;\n\n @ContentChild(ListFooterDirective, { static: false, read: TemplateRef })\n footerTemplate: TemplateRef<any>;\n\n /**\n * The first element that matches ListItemDirective.\n * As a structural directive it unfolds into a template. This is a reference to that.\n */\n @ContentChild(ListItemTemplateDirective, { static: true, read: TemplateRef })\n itemTemplate: TemplateRef<any>;\n\n @HostBinding('class.has-sections') _isSectionsEnabled: boolean;\n @HostBinding('class.has-stand-alone') _isStandAloneEnabled: boolean;\n\n _isSelectable: boolean;\n _isLoading: boolean;\n _groupedItems: any[];\n _selectedItem: any;\n\n constructor(\n private listHelper: ListHelper,\n private element: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this._isSelectable = this.itemSelect.observers.length > 0;\n\n if (this.isLoadOnDemandEnabled === undefined) {\n this.isLoadOnDemandEnabled = this.loadOnDemand.observers.length > 0;\n }\n }\n\n ngOnChanges(): void {\n this._isSectionsEnabled = !!this.getSectionName;\n this._isStandAloneEnabled = !!this.getStandAloneByProperty;\n\n if (this._isSectionsEnabled && this._isStandAloneEnabled) {\n this._groupedItems = this.listHelper.groupSectionsWithStandAloneItems(\n this.items,\n this.getSectionName,\n this.getStandAloneByProperty\n );\n } else if (this._isSectionsEnabled) {\n this._groupedItems = this.listHelper.groupSections(this.items, this.getSectionName);\n } else if (this._isStandAloneEnabled) {\n this._groupedItems = this.listHelper.groupStandAloneItems(\n this.items,\n this.getStandAloneByProperty\n );\n }\n }\n\n ngAfterViewInit(): void {\n forwardAttributes(\n this.element.nativeElement,\n this._attributesToForward,\n this.renderer,\n this.element.nativeElement.querySelector('ion-list')\n );\n }\n\n _onLoadOnDemand() {\n this.listHelper.onLoadOnDemand(this);\n }\n\n sectionTrackBy(index: number, section: { name: string }): string | number {\n return section?.name ?? index;\n }\n\n onItemSelect(item: any) {\n if (!this.disableSelectionHighlight) {\n this._selectedItem = item;\n }\n this.itemSelect.emit(item);\n }\n\n onSwipeActionSelect(args: any): void {\n args.swipeAction.onSelected(args.item);\n this.list.closeSlidingItems();\n args.event.stopPropagation();\n }\n\n _getBoundaryClass(index: number, section?: any[]): BoundaryClass[] | BoundaryClass {\n if (index === 0) {\n if (this.headerTemplate) return null;\n else return section.length === 1 ? ['first', 'last'] : 'first';\n }\n\n if (index === section.length - 1) {\n return this.footerTemplate ? null : 'last';\n }\n\n return null;\n }\n\n standAloneClass() {\n return this._isStandAloneEnabled ? `stand-alone-bottom-margin-${this.standAloneSpacing}` : '';\n }\n}\n","<ion-list\n #list\n kirbyInfiniteScroll\n (scrollEnd)=\"_onLoadOnDemand()\"\n [disabled]=\"!isLoadOnDemandEnabled\"\n class=\"list\"\n [class.has-header]=\"headerTemplate\"\n [class.has-footer]=\"footerTemplate\"\n [class.has-divider]=\"showDivider\"\n [class.kirby-surface-raised]=\"_isListRaisedSurface\"\n>\n @if (headerTemplate) {\n <ion-list-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ion-list-header>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n _isSectionsEnabled || _isStandAloneEnabled ? groupedListTemplate : itemsTemplate;\n context: { $implicit: items }\n \"\n ></ng-container>\n\n @if (footerTemplate) {\n <div class=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n</ion-list>\n\n@if (!isLoadOnDemandEnabled && noMoreItemsText) {\n <p class=\"no-more-items\">\n {{ noMoreItemsText }}\n </p>\n}\n@if (_isLoading) {\n <div class=\"loading\">\n <kirby-spinner></kirby-spinner>\n </div>\n}\n\n<ng-template #groupedListTemplate>\n @for (section of _groupedItems; track sectionTrackBy($index, section)) {\n <ion-item-group [ngClass]=\"standAloneClass()\">\n @if (_isSectionsEnabled) {\n <ion-item-divider>\n <ng-container\n *ngTemplateOutlet=\"sectionHeaderTemplate; context: { $implicit: section.name }\"\n ></ng-container>\n </ion-item-divider>\n }\n @if (_isSectionsEnabled && _isStandAloneEnabled) {\n @for (list of section.lists; track list) {\n <div\n class=\"list-items\"\n [ngClass]=\"standAloneClass()\"\n [class.kirby-surface-raised]=\"_isRaisedSurface\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: list }\"\n ></ng-container>\n </div>\n }\n } @else {\n <div\n class=\"list-items\"\n [ngClass]=\"standAloneClass()\"\n [class.kirby-surface-raised]=\"_isRaisedSurface\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: section.items }\"\n ></ng-container>\n </div>\n }\n </ion-item-group>\n }\n</ng-template>\n\n<ng-template #itemsTemplate let-items>\n @for (item of items; track trackBy ? trackBy($index, item) : $index; let i = $index) {\n <kirby-list-item\n [item]=\"item\"\n [itemTemplate]=\"itemTemplate\"\n [swipeActions]=\"swipeActions\"\n [boundaryClass]=\"_getBoundaryClass(i, items)\"\n [isSelectable]=\"_isSelectable\"\n [getItemColor]=\"getItemColor\"\n [isSelected]=\"_isSelectable && item === _selectedItem\"\n (itemSelect)=\"onItemSelect($event)\"\n (swipeActionSelect)=\"onSwipeActionSelect($event)\"\n [class.is-single]=\"items.length === 1\"\n ></kirby-list-item>\n }\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SpinnerModule } from '@kirbydesign/designsystem/spinner';\n\nimport { IconModule } from '@kirbydesign/designsystem/icon';\n\nimport {\n IonItemDivider,\n IonItemGroup,\n IonItemOptions,\n IonItemSliding,\n IonLabel,\n IonList,\n IonListHeader,\n} from '@ionic/angular';\nimport { InfiniteScrollDirective } from './directives/infinite-scroll.directive';\nimport { ListItemColorDirective } from './directives/list-item-color.directive';\nimport { ListExperimentalComponent } from './list-experimental/list-experimental.component';\nimport { ListHeaderComponent } from './list-header/list-header.component';\nimport { ListItemComponent } from './list-item/list-item.component';\nimport { ListSectionHeaderComponent } from './list-section-header/list-section-header.component';\nimport { ListComponent } from './list.component';\nimport {\n ListFooterDirective,\n ListHeaderDirective,\n ListItemTemplateDirective,\n ListSectionHeaderDirective,\n} from './list.directive';\n\nconst reexportedImports = [\n ListComponent,\n ListItemComponent,\n ListItemTemplateDirective,\n ListSectionHeaderComponent,\n ListSectionHeaderDirective,\n ListHeaderDirective,\n ListHeaderComponent,\n ListFooterDirective,\n ListExperimentalComponent,\n];\n\nconst imports = [\n ...reexportedImports,\n ListItemColorDirective,\n InfiniteScrollDirective,\n ListItemComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n IconModule,\n SpinnerModule,\n IonItemDivider,\n IonItemGroup,\n IonItemOptions,\n IonItemSliding,\n IonLabel,\n IonList,\n IonListHeader,\n ...imports,\n ],\n exports: reexportedImports,\n providers: [],\n})\nexport class ListModule {}\n"],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-list.mjs","names":[],"sources":["../../list/src/directives/infinite-scroll.directive.ts","../../list/src/directives/list-item-color.directive.ts","../../list/src/helpers/list-helper.ts","../../list/src/list-experimental/list-experimental.component.ts","../../list/src/list-experimental/list-experimental.component.html","../../list/src/list-header/list-header.component.ts","../../list/src/list-header/list-header.component.html","../../list/src/list-item/list-item.component.ts","../../list/src/list-item/list-item.component.html","../../list/src/list-section-header/list-section-header.component.ts","../../list/src/list-section-header/list-section-header.component.html","../../list/src/list.directive.ts","../../list/src/list.component.ts","../../list/src/list.component.html","../../list/src/list.module.ts"],"sourcesContent":["import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { WindowRef } from '@kirbydesign/designsystem/types';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { Scroll } from './scroll.model';\n\n/**\n * Specify debounce duration in ms\n */\nexport const INFINITE_SCROLL_DEBOUNCE = 100;\n\n@Directive({ selector: '[kirbyInfiniteScroll]' })\nexport class InfiniteScrollDirective implements AfterViewInit, OnDestroy {\n /**\n * Event that will be triggered when the user has scrolled to\n * bottom of the element\n */\n @Output() scrollEnd = new EventEmitter<void>();\n\n /**\n * If true then {@link scrollEnd} event should NOT be emitted\n */\n @Input() disabled = false;\n\n /**\n * Emits a new value on element scroll event\n */\n scroll$: Subject<Scroll> = new Subject<Scroll>();\n\n /**\n * Completes on component destroy lifecycle event\n * used to unsubscribe from infinite observables\n */\n private ngUnsubscribe$ = new Subject<void>();\n\n /**\n * An offset from the bottom of the element to trigger {@link scrollEnd} event\n */\n private offset = 0.8;\n\n constructor(\n private elementRef: ElementRef,\n private windowRef: WindowRef,\n private zone: NgZone\n ) {}\n\n ngAfterViewInit(): void {\n /**\n * Subscribe to {@link scroll$} observable and emit {@link scrollEnd} event\n * when element scroll position has surpassed the offset.\n */\n this.scroll$\n .pipe(\n takeUntil(this.ngUnsubscribe$),\n debounceTime(INFINITE_SCROLL_DEBOUNCE),\n filter(() => !this.disabled),\n filter((scroll) => {\n return (\n scroll.elementHeight * (1 - this.offset) >=\n scroll.distanceToViewBottom - scroll.viewHeight\n );\n })\n )\n .subscribe(() => {\n this.scrollEnd.emit();\n });\n\n /**\n * Subscribe to the ionScroll event on the ion-content around the list (if any)\n * and emit {@link scrollEnd} event when element scroll position has surpassed the offset.\n */\n setTimeout(() => {\n const ionContent: HTMLElement = this.elementRef.nativeElement.closest('ion-content');\n if (ionContent) {\n // we run the 'ionScroll' event outside angular, as it would trigger change detection on each scroll\n this.zone.runOutsideAngular(() => {\n fromEvent<any>(ionContent, 'ionScroll')\n .pipe(\n takeUntil(this.ngUnsubscribe$),\n debounceTime(INFINITE_SCROLL_DEBOUNCE),\n filter(() => !this.disabled),\n map(() => this.getScroll()),\n filter((scroll) => {\n return (\n scroll.elementHeight * (1 - this.offset) >=\n scroll.distanceToViewBottom - scroll.viewHeight\n );\n })\n )\n .subscribe(() => {\n // we make sure to emit the event inside angular again. As we want to show the spinner and need change detection for that.\n this.zone.run(() => this.scrollEnd.emit());\n });\n });\n }\n });\n }\n\n /**\n * On element scroll event emit next {@link scroll$} observable value\n */\n @HostListener('window:scroll')\n onScroll(): void {\n if (this.disabled) return;\n const scroll = this.getScroll();\n this.scroll$.next(scroll);\n }\n\n /**\n * trigger {@link ngUnsubscribe} complete on component destroy lifecycle hook\n */\n ngOnDestroy(): void {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n\n private getScroll(): Scroll {\n const element = this.elementRef.nativeElement as HTMLElement;\n const boundindClientRect = element.getBoundingClientRect();\n\n const distanceToViewBottom = boundindClientRect.bottom;\n const elementHeight = boundindClientRect.height;\n const viewHeight = this.windowRef.nativeWindow.innerHeight;\n\n return { distanceToViewBottom, elementHeight, viewHeight };\n }\n}\n","import { Directive, HostBinding, Input, OnChanges } from '@angular/core';\n\nimport { ThemeColor } from '@kirbydesign/core';\n\n@Directive({ selector: '[kirbyListItemColor]' })\nexport class ListItemColorDirective implements OnChanges {\n @Input()\n kirbyListItemColor: (item: any) => ThemeColor;\n @Input() item: any;\n @HostBinding('class')\n color: ThemeColor;\n\n ngOnChanges(): void {\n this.color = this.getColor();\n }\n\n private getColor(): ThemeColor {\n if (!this.kirbyListItemColor || !this.item) {\n return;\n }\n\n const themeColor = this.kirbyListItemColor(this.item);\n return themeColor;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ListComponent } from '../list.component';\n\ntype Section<T> = {\n name: string;\n items: T[];\n};\n\ntype SectionWithStandAloneItems<T> = {\n name: string;\n lists: T[][];\n};\n\n@Injectable()\nexport class ListHelper {\n public onLoadOnDemand(component: ListComponent) {\n if (component.isLoadOnDemandEnabled && !component._isLoading) {\n component._isLoading = true;\n component.loadOnDemand.emit({\n complete: (disableLoadOnDemand: boolean) => {\n component.isLoadOnDemandEnabled = !disableLoadOnDemand;\n component._isLoading = false;\n },\n });\n }\n }\n\n public groupSections<T>(items: T[], getGroupName: (item: T) => string): Section<T>[] {\n const groupsMap = new Map<string, T[]>();\n\n items.forEach((item) => {\n const itemGroup = getGroupName(item);\n const groupItems = groupsMap.get(itemGroup);\n\n if (groupItems) {\n groupItems.push(item);\n } else {\n groupsMap.set(itemGroup, [item]);\n }\n });\n\n return Array.from(groupsMap)\n .sort(([name], [otherName]) => name.localeCompare(otherName))\n .map(([name, items]) => {\n return { name, items };\n });\n }\n\n public groupStandAloneItems<T>(items: T[], standAloneProperty: string): { items: T[] }[] {\n const list = items.reduce(\n (accumulator, item) => {\n const lastList = accumulator[accumulator.length - 1];\n const lastItemInList = lastList[lastList.length - 1];\n\n if (!lastItemInList) {\n lastList.push(item);\n } else if (!item[standAloneProperty] && !lastItemInList[standAloneProperty]) {\n lastList.push(item);\n } else {\n accumulator.push([item]);\n }\n\n return accumulator;\n },\n [[]] as [T[]]\n );\n\n return list.map((items) => {\n return { items };\n });\n }\n\n public groupSectionsWithStandAloneItems<T>(\n items: T[],\n getGroupName: (item: T) => string,\n standAloneProperty: string\n ): SectionWithStandAloneItems<T>[] {\n const sectionsMap = new Map<string, T[][]>();\n\n items.forEach((item) => {\n const sectionName = getGroupName(item);\n\n if (sectionsMap.has(sectionName)) {\n const section = sectionsMap.get(sectionName);\n const lastListInSection = section[section.length - 1];\n const lastItemInList = lastListInSection[lastListInSection.length - 1];\n\n if (!item[standAloneProperty] && !lastItemInList[standAloneProperty]) {\n lastListInSection.push(item);\n } else {\n section.push([item]);\n }\n } else {\n sectionsMap.set(sectionName, [[item]]);\n }\n });\n\n return Array.from(sectionsMap)\n .sort(([name], [otherName]) => name.localeCompare(otherName))\n .map(([name, lists]) => {\n return { name, lists };\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener, ViewChild } from '@angular/core';\nimport { IonList } from '@ionic/angular';\nimport { elementHasAncestor } from '@kirbydesign/designsystem/helpers';\n\n@Component({\n selector: 'kirby-list-experimental',\n templateUrl: './list-experimental.component.html',\n styleUrls: ['./list-experimental.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListExperimentalComponent {\n @ViewChild(IonList, { static: true }) list: IonList;\n\n @HostListener('click', ['$event'])\n closeAllSlidingItems(e: MouseEvent) {\n if (elementHasAncestor(e.target as HTMLElement, 'ion-item-option', 'ion-list')) {\n this.list.closeSlidingItems();\n }\n }\n}\n","<ng-content select=\"[outside]\"></ng-content>\n<div class=\"rounded shadow first-item-padding last-item-padding\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'kirby-list-header',\n templateUrl: './list-header.component.html',\n styleUrls: ['./list-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListHeaderComponent {\n constructor() {}\n}\n","<ng-content></ng-content>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { IonItemOptions, IonItemSliding, IonLabel } from '@ionic/angular';\n\nimport { ThemeColor } from '@kirbydesign/core';\nimport { PlatformService } from '@kirbydesign/designsystem/helpers';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\nimport { ListSwipeAction, ListSwipeDirection, ListSwipeEnd } from '../list-swipe-action.type';\nimport { ListItemColorDirective } from '../directives/list-item-color.directive';\n\nexport type BoundaryClass = 'first' | 'last';\n\n@Component({\n selector: 'kirby-list-item',\n templateUrl: './list-item.component.html',\n styleUrls: ['../list.component.scss', './list-item.component.scss'],\n imports: [\n IonItemSliding,\n ListItemColorDirective,\n NgClass,\n NgTemplateOutlet,\n IonItemOptions,\n IconComponent,\n IonLabel,\n ],\n changeDetection: ChangeDetectionStrategy.Eager,\n})\nexport class ListItemComponent implements OnInit, AfterViewInit {\n _isSwipingEnabled = false;\n\n constructor(private platform: PlatformService) {\n this.initializeSwipeActions();\n }\n\n @ViewChild(IonItemSliding) ionItemSliding: IonItemSliding;\n\n @Input() item: any;\n\n @Input() boundaryClass: BoundaryClass | BoundaryClass[];\n\n @Input() swipeActions: ListSwipeAction[] = [];\n\n @Input() itemTemplate: TemplateRef<any>;\n\n @Input() isSelected: boolean;\n\n @Input() isSelectable: boolean;\n\n @Input() getItemColor: (item: any) => ThemeColor;\n\n @Output() itemSelect = new EventEmitter<any>();\n\n _onItemSelect(item: any) {\n if (!this.isSelectable) return;\n this.itemSelect.emit(item);\n }\n\n @Output() swipeActionSelect = new EventEmitter<any>();\n\n _onSwipeActionSelect(swipeAction, item, event) {\n this.swipeActionSelect.emit({\n swipeAction,\n item,\n event,\n });\n }\n\n ngOnInit() {\n this.initializeSwipeActions();\n }\n\n ngAfterViewInit(): void {\n if (!this.itemTemplate) {\n console.warn('No item template was provided.');\n }\n }\n\n _hasSwipeActions(item: any): boolean {\n if (!Array.isArray(this.swipeActions)) {\n return false;\n }\n return this.swipeActions.some((swipeAction) => {\n if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {\n return false;\n }\n if (swipeAction.isDisabled === true) {\n return false;\n }\n return swipeAction.position === 'left' || swipeAction.position === 'right';\n });\n }\n\n _getSwipeActions(item: any, direction?: ListSwipeDirection): ListSwipeAction[] {\n if (!Array.isArray(this.swipeActions)) {\n return [];\n }\n return this.swipeActions.filter((swipeAction) => {\n if (this.isSwipeActionDisabled(swipeAction, item)) {\n return false;\n }\n return direction ? swipeAction.position === direction : true;\n });\n }\n\n private isSwipeActionDisabled(swipeAction: ListSwipeAction, item: any): boolean {\n if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {\n return true;\n }\n return swipeAction.isDisabled === true;\n }\n\n _getSwipeActionEnd(item: any): ListSwipeEnd {\n if (this._getSwipeActions(item, 'left').length) {\n return 'start';\n }\n return 'end';\n }\n\n _getSwipeActionIcon(swipeAction: ListSwipeAction, item: any): string {\n if (!swipeAction.icon) return;\n\n if (swipeAction.icon instanceof Function) {\n return swipeAction.icon(item);\n }\n return swipeAction.icon;\n }\n\n _getSwipeActionTitle(swipeAction: ListSwipeAction, item: any): string {\n if (swipeAction.title instanceof Function) {\n return swipeAction.title(item);\n }\n return swipeAction.title;\n }\n\n _getSwipeActionType(swipeAction: ListSwipeAction, item: any): ThemeColor {\n if (swipeAction.type instanceof Function) {\n return swipeAction.type(item);\n }\n return swipeAction.type;\n }\n\n private initializeSwipeActions(): void {\n if (this.swipeActions && this.swipeActions.length) {\n this._isSwipingEnabled = this.platform.isTouch();\n }\n }\n}\n","<ion-item-sliding\n [class.selected]=\"isSelected\"\n [kirbyListItemColor]=\"getItemColor\"\n [item]=\"item\"\n [disabled]=\"_isSwipingEnabled ? null : true\"\n keyHandler\n [ngClass]=\"boundaryClass\"\n (click)=\"_onItemSelect(item)\"\n>\n <ng-container\n *ngTemplateOutlet=\"swipeActionsTemplate; context: { $implicit: item }\"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n</ion-item-sliding>\n\n<ng-template #swipeActionsTemplate let-item>\n @if (_hasSwipeActions(item)) {\n <ion-item-options [side]=\"_getSwipeActionEnd(item)\">\n <div class=\"swipe-action\">\n @for (swipeAction of _getSwipeActions(item); track swipeAction.title) {\n <ion-item-option\n [ngClass]=\"_getSwipeActionType(swipeAction, item)\"\n (click)=\"_onSwipeActionSelect(swipeAction, item, $event)\"\n >\n <div class=\"item-content\">\n @if (_getSwipeActionIcon(swipeAction, item)) {\n <kirby-icon size=\"sm\" [name]=\"_getSwipeActionIcon(swipeAction, item)\"></kirby-icon>\n }\n <ion-label>\n {{ _getSwipeActionTitle(swipeAction, item) }}\n </ion-label>\n </div>\n </ion-item-option>\n }\n </div>\n </ion-item-options>\n }\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-list-section-header',\n templateUrl: './list-section-header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListSectionHeaderComponent {\n @Input() title: string;\n}\n","<div class=\"header\">\n <span class=\"kirby-text-small\">{{ title }}</span>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: '[kirbyListItemTemplate]' })\nexport class ListItemTemplateDirective {}\n\n@Directive({ selector: '[kirbyListHeader], [kirbyListHeaderTemplate]' })\nexport class ListHeaderDirective {}\n\n@Directive({ selector: '[kirbyListSectionHeader], [kirbyListSectionHeaderTemplate]' })\nexport class ListSectionHeaderDirective {}\n\n@Directive({ selector: '[kirbyListFooter], [kirbyListFooterTemplate]' })\nexport class ListFooterDirective {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n TemplateRef,\n TrackByFunction,\n ViewChild,\n} from '@angular/core';\n\nimport { ThemeColor } from '@kirbydesign/core';\n\nimport { forwardAttributes } from '@kirbydesign/designsystem/shared';\nimport { IonItemDivider, IonItemGroup, IonList, IonListHeader } from '@ionic/angular';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { SpinnerComponent } from '@kirbydesign/designsystem/spinner';\nimport { InfiniteScrollDirective } from './directives/infinite-scroll.directive';\nimport { ListHelper } from './helpers/list-helper';\nimport { BoundaryClass, ListItemComponent } from './list-item/list-item.component';\nimport { ListSwipeAction } from './list-swipe-action.type';\nimport {\n ListFooterDirective,\n ListHeaderDirective,\n ListItemTemplateDirective,\n ListSectionHeaderDirective,\n} from './list.directive';\nimport { LoadOnDemandEvent } from './list.event';\n\nexport type ListShape = 'square' | 'rounded' | 'none';\n\nexport type StandAloneSpacing =\n 'xxxxs' | 'xxxs' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl';\n\n@Component({\n selector: 'kirby-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n providers: [ListHelper],\n imports: [\n IonList,\n InfiniteScrollDirective,\n IonListHeader,\n NgTemplateOutlet,\n SpinnerComponent,\n IonItemGroup,\n NgClass,\n IonItemDivider,\n ListItemComponent,\n ],\n changeDetection: ChangeDetectionStrategy.Eager,\n})\nexport class ListComponent implements OnInit, OnChanges, AfterViewInit {\n @ViewChild('list', { static: true }) list: any;\n @ViewChild(InfiniteScrollDirective) scrollDirective: InfiniteScrollDirective;\n\n /**\n * Provide items for the list to render. Items must be provided in the order you expect them to be rendered.\n */\n @Input()\n items: any[] = [];\n\n /**\n * @deprecated Coloring list items differently is no longer supported, and the list no longer applies any styling based on the returned theme color.\n * This input will be removed in a future major version.\n */\n @Input() getItemColor: (item: any) => ThemeColor;\n\n /**\n * Callback to determine name of section. Sections will be ordered alphabetically.\n */\n @Input() getSectionName: (item: any) => string;\n\n /**\n * Callback that defines how to track changes for items in the iterable.\n */\n @Input() trackBy?: TrackByFunction<any>;\n\n /**\n * Property name to decide which items should be stand alone\n */\n @Input() getStandAloneByProperty: string;\n\n /**\n * Bottom margin for stand alone items\n */\n @Input() standAloneSpacing: StandAloneSpacing = 'xxs';\n\n /**\n * Text to display when no more items can be loaded (used for \"on demand\"-loading).\n */\n @Input() noMoreItemsText: string;\n\n /**\n * Determines if dividers (bottom-border on list items) should be shown or not.\n */\n @Input() showDivider = true;\n\n /**\n * Determines if list row text should turn bold on selection\n */\n @Input() markSelectedRow = false;\n\n /**\n * Determine outline shape of:\n * - list, if {@link #isSectionsEnabled} is `false`\n * - section, if {@link #isSectionsEnabled} is `true`\n *\n * `square` means **without** rounded corners, `rounded` means **with** rounded corners., `none` means **without** padding, border, box-shadow and background.\n */\n @Input() shape: ListShape = 'rounded';\n\n @HostBinding('class.shape-rounded')\n public get isShapeRounded(): boolean {\n return this.shape === 'rounded';\n }\n\n @HostBinding('class.shape-none')\n public get isShapeNone(): boolean {\n return this.shape === 'none';\n }\n\n /**\n * The list establishes a raised surface by default, until list usage is migrated\n * to shape=\"none\", and combined with card for base/raised/brand appearance\n */\n get _isRaisedSurface(): boolean {\n return !this.isShapeNone;\n }\n\n get _isListRaisedSurface(): boolean {\n return this._isRaisedSurface && !this._isSectionsEnabled && !this._isStandAloneEnabled;\n }\n\n @HostBinding('class.item-spacing')\n @Input()\n hasItemSpacing: boolean;\n\n /**\n * Determines if the loadOnDemand event should be emitted.\n * Will default to true if there is at least one subscriber to the loadOnDemand event\n */\n @Input() isLoadOnDemandEnabled: boolean;\n\n /**\n * Emitting event when more items are to be loaded.\n */\n @Output() loadOnDemand = new EventEmitter<LoadOnDemandEvent>();\n\n /**\n * Determines if list items should have swipe actions or not\n * - the order of swipe actions is used to determine edge actions,\n * as well as their order of appearance on the screen.\n */\n @Input() swipeActions: ListSwipeAction[] = [];\n\n /**\n * Emitting event when an item is selected (tapped on mobile, clicked on web)\n */\n @Output() itemSelect = new EventEmitter<any>();\n\n @Input() disableSelectionHighlight: boolean = false;\n\n private _attributesToForward = ['aria-label', 'aria-labelledby'];\n\n @ContentChild(ListHeaderDirective, { static: false, read: TemplateRef })\n headerTemplate: TemplateRef<any>;\n\n @ContentChild(ListSectionHeaderDirective, { static: false, read: TemplateRef })\n sectionHeaderTemplate: TemplateRef<any>;\n\n @ContentChild(ListFooterDirective, { static: false, read: TemplateRef })\n footerTemplate: TemplateRef<any>;\n\n /**\n * The first element that matches ListItemDirective.\n * As a structural directive it unfolds into a template. This is a reference to that.\n */\n @ContentChild(ListItemTemplateDirective, { static: true, read: TemplateRef })\n itemTemplate: TemplateRef<any>;\n\n @HostBinding('class.has-sections') _isSectionsEnabled: boolean;\n @HostBinding('class.has-stand-alone') _isStandAloneEnabled: boolean;\n\n _isSelectable: boolean;\n _isLoading: boolean;\n _groupedItems: any[];\n _selectedItem: any;\n\n constructor(\n private listHelper: ListHelper,\n private element: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this._isSelectable = this.itemSelect.observers.length > 0;\n\n if (this.isLoadOnDemandEnabled === undefined) {\n this.isLoadOnDemandEnabled = this.loadOnDemand.observers.length > 0;\n }\n }\n\n ngOnChanges(): void {\n this._isSectionsEnabled = !!this.getSectionName;\n this._isStandAloneEnabled = !!this.getStandAloneByProperty;\n\n if (this._isSectionsEnabled && this._isStandAloneEnabled) {\n this._groupedItems = this.listHelper.groupSectionsWithStandAloneItems(\n this.items,\n this.getSectionName,\n this.getStandAloneByProperty\n );\n } else if (this._isSectionsEnabled) {\n this._groupedItems = this.listHelper.groupSections(this.items, this.getSectionName);\n } else if (this._isStandAloneEnabled) {\n this._groupedItems = this.listHelper.groupStandAloneItems(\n this.items,\n this.getStandAloneByProperty\n );\n }\n }\n\n ngAfterViewInit(): void {\n forwardAttributes(\n this.element.nativeElement,\n this._attributesToForward,\n this.renderer,\n this.element.nativeElement.querySelector('ion-list')\n );\n }\n\n _onLoadOnDemand() {\n this.listHelper.onLoadOnDemand(this);\n }\n\n sectionTrackBy(index: number, section: { name: string }): string | number {\n return section?.name ?? index;\n }\n\n onItemSelect(item: any) {\n if (!this.disableSelectionHighlight) {\n this._selectedItem = item;\n }\n this.itemSelect.emit(item);\n }\n\n onSwipeActionSelect(args: any): void {\n args.swipeAction.onSelected(args.item);\n this.list.closeSlidingItems();\n args.event.stopPropagation();\n }\n\n _getBoundaryClass(index: number, section?: any[]): BoundaryClass[] | BoundaryClass {\n if (index === 0) {\n if (this.headerTemplate) return null;\n else return section.length === 1 ? ['first', 'last'] : 'first';\n }\n\n if (index === section.length - 1) {\n return this.footerTemplate ? null : 'last';\n }\n\n return null;\n }\n\n standAloneClass() {\n return this._isStandAloneEnabled ? `stand-alone-bottom-margin-${this.standAloneSpacing}` : '';\n }\n}\n","<ion-list\n #list\n kirbyInfiniteScroll\n (scrollEnd)=\"_onLoadOnDemand()\"\n [disabled]=\"!isLoadOnDemandEnabled\"\n class=\"list\"\n [class.has-header]=\"headerTemplate\"\n [class.has-footer]=\"footerTemplate\"\n [class.has-divider]=\"showDivider\"\n [class.kirby-surface-raised]=\"_isListRaisedSurface\"\n>\n @if (headerTemplate) {\n <ion-list-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ion-list-header>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n _isSectionsEnabled || _isStandAloneEnabled ? groupedListTemplate : itemsTemplate;\n context: { $implicit: items }\n \"\n ></ng-container>\n\n @if (footerTemplate) {\n <div class=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n</ion-list>\n\n@if (!isLoadOnDemandEnabled && noMoreItemsText) {\n <p class=\"no-more-items\">\n {{ noMoreItemsText }}\n </p>\n}\n@if (_isLoading) {\n <div class=\"loading\">\n <kirby-spinner></kirby-spinner>\n </div>\n}\n\n<ng-template #groupedListTemplate>\n @for (section of _groupedItems; track sectionTrackBy($index, section)) {\n <ion-item-group [ngClass]=\"standAloneClass()\">\n @if (_isSectionsEnabled) {\n <ion-item-divider>\n <ng-container\n *ngTemplateOutlet=\"sectionHeaderTemplate; context: { $implicit: section.name }\"\n ></ng-container>\n </ion-item-divider>\n }\n @if (_isSectionsEnabled && _isStandAloneEnabled) {\n @for (list of section.lists; track list) {\n <div\n class=\"list-items\"\n [ngClass]=\"standAloneClass()\"\n [class.kirby-surface-raised]=\"_isRaisedSurface\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: list }\"\n ></ng-container>\n </div>\n }\n } @else {\n <div\n class=\"list-items\"\n [ngClass]=\"standAloneClass()\"\n [class.kirby-surface-raised]=\"_isRaisedSurface\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: section.items }\"\n ></ng-container>\n </div>\n }\n </ion-item-group>\n }\n</ng-template>\n\n<ng-template #itemsTemplate let-items>\n @for (item of items; track trackBy ? trackBy($index, item) : $index; let i = $index) {\n <kirby-list-item\n [item]=\"item\"\n [itemTemplate]=\"itemTemplate\"\n [swipeActions]=\"swipeActions\"\n [boundaryClass]=\"_getBoundaryClass(i, items)\"\n [isSelectable]=\"_isSelectable\"\n [getItemColor]=\"getItemColor\"\n [isSelected]=\"_isSelectable && item === _selectedItem\"\n (itemSelect)=\"onItemSelect($event)\"\n (swipeActionSelect)=\"onSwipeActionSelect($event)\"\n [class.is-single]=\"items.length === 1\"\n ></kirby-list-item>\n }\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SpinnerModule } from '@kirbydesign/designsystem/spinner';\n\nimport { IconModule } from '@kirbydesign/designsystem/icon';\n\nimport {\n IonItemDivider,\n IonItemGroup,\n IonItemOptions,\n IonItemSliding,\n IonLabel,\n IonList,\n IonListHeader,\n} from '@ionic/angular';\nimport { InfiniteScrollDirective } from './directives/infinite-scroll.directive';\nimport { ListItemColorDirective } from './directives/list-item-color.directive';\nimport { ListExperimentalComponent } from './list-experimental/list-experimental.component';\nimport { ListHeaderComponent } from './list-header/list-header.component';\nimport { ListItemComponent } from './list-item/list-item.component';\nimport { ListSectionHeaderComponent } from './list-section-header/list-section-header.component';\nimport { ListComponent } from './list.component';\nimport {\n ListFooterDirective,\n ListHeaderDirective,\n ListItemTemplateDirective,\n ListSectionHeaderDirective,\n} from './list.directive';\n\nconst reexportedImports = [\n ListComponent,\n ListItemComponent,\n ListItemTemplateDirective,\n ListSectionHeaderComponent,\n ListSectionHeaderDirective,\n ListHeaderDirective,\n ListHeaderComponent,\n ListFooterDirective,\n ListExperimentalComponent,\n];\n\nconst imports = [\n ...reexportedImports,\n ListItemColorDirective,\n InfiniteScrollDirective,\n ListItemComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n IconModule,\n SpinnerModule,\n IonItemDivider,\n IonItemGroup,\n IonItemOptions,\n IonItemSliding,\n IonLabel,\n IonList,\n IonListHeader,\n ...imports,\n ],\n exports: reexportedImports,\n providers: [],\n})\nexport class ListModule {}\n"],"mappings":"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"}
@@ -129,7 +129,7 @@ var RangeComponent = class RangeComponent {
129
129
  usesOnChanges: true,
130
130
  ngImport: i0,
131
131
  template: "<ion-range\n (ionChange)=\"_onRangeValueChange($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value\"\n [pin]=\"pin\"\n [pinFormatter]=\"pinFormatter\"\n [snaps]=\"ticks\"\n [ticks]=\"ticks\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n></ion-range>\n\n@if (minLabel) {\n <label class=\"min-label\">{{ minLabel }}</label>\n}\n@if (maxLabel) {\n <label class=\"max-label\">{{ maxLabel }}</label>\n}\n",
132
- styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{display:flex;justify-content:space-between;flex-wrap:wrap}ion-range{--knob-background: var(--kirby-color-fill-brand-loud);--knob-box-shadow: 0 0 0 2px var(--kirby-color-fill-base);--knob-size: var(--kirby-spacing-s);--knob-handle-size: var(--kirby-size-fat-finger);--pin-color: var(--kirby-color-content-brand-loud);--pin-background: var(--kirby-color-fill-brand-loud);--bar-background: var(--kirby-color-border-base-quiet);--bar-background-active: var(--kirby-color-fill-brand-loud);--bar-border-radius: var(--kirby-spacing-xxxs);--bar-height: var(--kirby-spacing-xxxxs);flex:1 1 100%;padding:0}ion-range.range-disabled{opacity:var(--kirby-opacity-40)}ion-range.range-has-pin{padding:0 calc(var(--kirby-spacing-xxs) / 2)}ion-range::part(knob){transition:all 80ms linear 0ms;transition-property:background,transform}ion-range::part(knob hover){--knob-background: var(--kirby-color-fill-brand-loud-hover)}ion-range::part(knob activated),ion-range::part(knob pressed){--knob-background: var(--kirby-color-fill-brand-loud-active)}ion-range::part(knob hover),ion-range::part(knob activated),ion-range::part(knob pressed){transform:scale(1.25)}ion-range::part(knob focused){box-shadow:var(--kirby-focus-ring-md-outer)}ion-range::part(pin){font-size:var(--kirby-font-size-xs);color:var(--pin-color);background-color:var(--pin-background);padding:var(--kirby-spacing-xxxxs) var(--kirby-spacing-xxs);border-radius:var(--kirby-spacing-xxxs);min-width:var(--kirby-spacing-m);top:calc(-1 * var(--kirby-spacing-xxs))}ion-range::part(pin):before{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);display:block;border:solid transparent 6px;border-top-color:var(--pin-background)}ion-range::part(tick),ion-range::part(tick-active){border-radius:var(--kirby-border-radius-circle);width:var(--kirby-spacing-xxs);height:var(--kirby-spacing-xxs);margin-inline-start:calc(var(--kirby-spacing-xxs) / -2);z-index:1}ion-range::part(tick){background:var(--kirby-color-border-base-quiet)}label{font-size:var(--kirby-font-size-xs);line-height:var(--kirby-line-height-xs);color:var(--kirby-color-content-base-quiet);margin-top:calc(-1 * var(--kirby-spacing-xxxs))}\n"],
132
+ styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{display:flex;justify-content:space-between;flex-wrap:wrap}ion-range{--knob-background: var(--kirby-range-color-fill-engaged);--knob-box-shadow: 0 0 0 2px var(--kirby-color-fill-base);--knob-size: var(--kirby-spacing-s);--knob-handle-size: var(--kirby-size-fat-finger);--pin-color: var(--kirby-color-content-raised);--pin-background: var(--kirby-color-fill-raised);--bar-background: var(--kirby-range-color-fill);--bar-background-active: var(--kirby-range-color-fill-engaged);--bar-border-radius: var(--kirby-spacing-xxxs);--bar-height: var(--kirby-spacing-xxxxs);flex:1 1 100%;padding:0}ion-range.range-disabled{opacity:var(--kirby-opacity-40)}ion-range.range-has-pin{padding:0 calc(var(--kirby-spacing-xxs) / 2)}ion-range::part(knob){transition:all 80ms linear 0ms;transition-property:background,transform}ion-range::part(knob hover){--knob-background: var(--kirby-range-color-fill-engaged-hover)}ion-range::part(knob activated),ion-range::part(knob pressed){--knob-background: var(--kirby-range-color-fill-engaged-active)}ion-range::part(knob hover),ion-range::part(knob activated),ion-range::part(knob pressed){transform:scale(1.25)}ion-range::part(knob focused){box-shadow:var(--kirby-focus-ring-md-outer)}ion-range::part(pin){font-size:var(--kirby-font-size-xs);color:var(--pin-color);background-color:var(--pin-background);padding:var(--kirby-spacing-xxxxs) var(--kirby-spacing-xxs);border-radius:var(--kirby-spacing-xxxs);min-width:var(--kirby-spacing-m);top:calc(-1 * var(--kirby-spacing-xxs))}ion-range::part(pin):before{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);display:block;border:solid transparent 6px;border-top-color:var(--pin-background)}ion-range::part(tick),ion-range::part(tick-active){border-radius:var(--kirby-border-radius-circle);width:var(--kirby-spacing-xxs);height:var(--kirby-spacing-xxs);margin-inline-start:calc(var(--kirby-spacing-xxs) / -2);z-index:1}ion-range::part(tick){background:var(--kirby-range-color-fill)}label{font-size:var(--kirby-font-size-xs);line-height:var(--kirby-line-height-xs);color:var(--kirby-color-content-base-quiet);margin-top:calc(-1 * var(--kirby-spacing-xxxs))}\n"],
133
133
  dependencies: [{
134
134
  kind: "component",
135
135
  type: IonRange,
@@ -175,7 +175,7 @@ i0.ɵɵngDeclareClassMetadata({
175
175
  }],
176
176
  changeDetection: ChangeDetectionStrategy.OnPush,
177
177
  template: "<ion-range\n (ionChange)=\"_onRangeValueChange($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value\"\n [pin]=\"pin\"\n [pinFormatter]=\"pinFormatter\"\n [snaps]=\"ticks\"\n [ticks]=\"ticks\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n></ion-range>\n\n@if (minLabel) {\n <label class=\"min-label\">{{ minLabel }}</label>\n}\n@if (maxLabel) {\n <label class=\"max-label\">{{ maxLabel }}</label>\n}\n",
178
- styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{display:flex;justify-content:space-between;flex-wrap:wrap}ion-range{--knob-background: var(--kirby-color-fill-brand-loud);--knob-box-shadow: 0 0 0 2px var(--kirby-color-fill-base);--knob-size: var(--kirby-spacing-s);--knob-handle-size: var(--kirby-size-fat-finger);--pin-color: var(--kirby-color-content-brand-loud);--pin-background: var(--kirby-color-fill-brand-loud);--bar-background: var(--kirby-color-border-base-quiet);--bar-background-active: var(--kirby-color-fill-brand-loud);--bar-border-radius: var(--kirby-spacing-xxxs);--bar-height: var(--kirby-spacing-xxxxs);flex:1 1 100%;padding:0}ion-range.range-disabled{opacity:var(--kirby-opacity-40)}ion-range.range-has-pin{padding:0 calc(var(--kirby-spacing-xxs) / 2)}ion-range::part(knob){transition:all 80ms linear 0ms;transition-property:background,transform}ion-range::part(knob hover){--knob-background: var(--kirby-color-fill-brand-loud-hover)}ion-range::part(knob activated),ion-range::part(knob pressed){--knob-background: var(--kirby-color-fill-brand-loud-active)}ion-range::part(knob hover),ion-range::part(knob activated),ion-range::part(knob pressed){transform:scale(1.25)}ion-range::part(knob focused){box-shadow:var(--kirby-focus-ring-md-outer)}ion-range::part(pin){font-size:var(--kirby-font-size-xs);color:var(--pin-color);background-color:var(--pin-background);padding:var(--kirby-spacing-xxxxs) var(--kirby-spacing-xxs);border-radius:var(--kirby-spacing-xxxs);min-width:var(--kirby-spacing-m);top:calc(-1 * var(--kirby-spacing-xxs))}ion-range::part(pin):before{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);display:block;border:solid transparent 6px;border-top-color:var(--pin-background)}ion-range::part(tick),ion-range::part(tick-active){border-radius:var(--kirby-border-radius-circle);width:var(--kirby-spacing-xxs);height:var(--kirby-spacing-xxs);margin-inline-start:calc(var(--kirby-spacing-xxs) / -2);z-index:1}ion-range::part(tick){background:var(--kirby-color-border-base-quiet)}label{font-size:var(--kirby-font-size-xs);line-height:var(--kirby-line-height-xs);color:var(--kirby-color-content-base-quiet);margin-top:calc(-1 * var(--kirby-spacing-xxxs))}\n"]
178
+ styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{display:flex;justify-content:space-between;flex-wrap:wrap}ion-range{--knob-background: var(--kirby-range-color-fill-engaged);--knob-box-shadow: 0 0 0 2px var(--kirby-color-fill-base);--knob-size: var(--kirby-spacing-s);--knob-handle-size: var(--kirby-size-fat-finger);--pin-color: var(--kirby-color-content-raised);--pin-background: var(--kirby-color-fill-raised);--bar-background: var(--kirby-range-color-fill);--bar-background-active: var(--kirby-range-color-fill-engaged);--bar-border-radius: var(--kirby-spacing-xxxs);--bar-height: var(--kirby-spacing-xxxxs);flex:1 1 100%;padding:0}ion-range.range-disabled{opacity:var(--kirby-opacity-40)}ion-range.range-has-pin{padding:0 calc(var(--kirby-spacing-xxs) / 2)}ion-range::part(knob){transition:all 80ms linear 0ms;transition-property:background,transform}ion-range::part(knob hover){--knob-background: var(--kirby-range-color-fill-engaged-hover)}ion-range::part(knob activated),ion-range::part(knob pressed){--knob-background: var(--kirby-range-color-fill-engaged-active)}ion-range::part(knob hover),ion-range::part(knob activated),ion-range::part(knob pressed){transform:scale(1.25)}ion-range::part(knob focused){box-shadow:var(--kirby-focus-ring-md-outer)}ion-range::part(pin){font-size:var(--kirby-font-size-xs);color:var(--pin-color);background-color:var(--pin-background);padding:var(--kirby-spacing-xxxxs) var(--kirby-spacing-xxs);border-radius:var(--kirby-spacing-xxxs);min-width:var(--kirby-spacing-m);top:calc(-1 * var(--kirby-spacing-xxs))}ion-range::part(pin):before{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);display:block;border:solid transparent 6px;border-top-color:var(--pin-background)}ion-range::part(tick),ion-range::part(tick-active){border-radius:var(--kirby-border-radius-circle);width:var(--kirby-spacing-xxs);height:var(--kirby-spacing-xxs);margin-inline-start:calc(var(--kirby-spacing-xxs) / -2);z-index:1}ion-range::part(tick){background:var(--kirby-range-color-fill)}label{font-size:var(--kirby-font-size-xs);line-height:var(--kirby-line-height-xs);color:var(--kirby-color-content-base-quiet);margin-top:calc(-1 * var(--kirby-spacing-xxxs))}\n"]
179
179
  }]
180
180
  }],
181
181
  ctorParameters: () => [
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-range.mjs","names":[],"sources":["../../range/src/range.component.ts","../../range/src/range.component.html"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IonRange } from '@ionic/angular';\nimport { forwardAttributes } from '@kirbydesign/designsystem/shared';\n\n@Component({\n imports: [IonRange],\n selector: 'kirby-range',\n templateUrl: './range.component.html',\n styleUrls: ['./range.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => RangeComponent),\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RangeComponent implements OnChanges, OnInit, ControlValueAccessor, AfterViewInit {\n @Input() minLabel: string;\n @Input() maxLabel: string;\n @Input() debounce: number;\n @Input() max: number;\n @Input() min: number;\n @Input() pin: boolean;\n @Input() step = 1;\n @Input() ticks: boolean;\n @Input() disabled = false;\n @Input() pinFormatter: (value: number) => string | number = this.defaultPinFormatter;\n @Input()\n set value(value: number) {\n if (value !== this.currentValue) {\n this.currentValue = value;\n this.propagateChange(this.currentValue);\n }\n }\n\n get value(): number {\n return this.currentValue;\n }\n\n @Output() change: EventEmitter<number> = new EventEmitter<number>();\n @Output() move: EventEmitter<number> = new EventEmitter<number>();\n\n @ViewChild(IonRange, { static: true }) private ionRange: IonRange;\n\n private currentValue: number;\n private _attributesToForward = ['aria-label', 'aria-labelledby'];\n\n constructor(\n private cdr: ChangeDetectorRef,\n private element: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.initializeMoveEventEmitter();\n }\n\n ngOnChanges() {\n if (!this.ticks) return;\n\n /*\n * Max 10 ticks are allowed\n */\n const amountOfTicks = (this.max - this.min) / this.step;\n if (amountOfTicks > 9) {\n this.step = (this.max - this.min) / 9;\n }\n\n /*\n * Set value to the nearest tick\n */\n this.value = this.getTicks().reduce((a, b) => {\n return Math.abs(b - this.value) < Math.abs(a - this.value) ? b : a;\n });\n }\n\n ngAfterViewInit(): void {\n forwardAttributes(\n this.element.nativeElement,\n this._attributesToForward,\n this.renderer,\n this.element.nativeElement.querySelector('ion-range')\n );\n }\n\n private getTicks() {\n const ticks = [];\n for (let value = Number(this.min); value <= Number(this.max); value += Number(this.step)) {\n ticks.push(value);\n }\n return ticks;\n }\n\n private initializeMoveEventEmitter() {\n // We subscribe to ionRange's ionInput imperatively instead of in markup\n // to avoid doing work when no-one is listening to the move event.\n if (this.move.observed) {\n this.ionRange.ionInput.subscribe((rangeEvent) => {\n this._onRangeKnobMove(rangeEvent);\n });\n }\n }\n\n private defaultPinFormatter(value: number): number {\n return value;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n public _onRangeValueChange($event: any): void {\n this.writeValue($event.detail.value);\n this.change.emit(this.currentValue);\n }\n\n public _onRangeKnobMove($event: any): void {\n this.writeValue($event.detail.value);\n this.move.emit(this.currentValue);\n }\n\n public onTouched = () => {};\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public propagateChange = (_: any) => {};\n\n public writeValue(value: any): void {\n if (value !== undefined) {\n this.value = value;\n this.cdr.markForCheck();\n }\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n}\n","<ion-range\n (ionChange)=\"_onRangeValueChange($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value\"\n [pin]=\"pin\"\n [pinFormatter]=\"pinFormatter\"\n [snaps]=\"ticks\"\n [ticks]=\"ticks\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n></ion-range>\n\n@if (minLabel) {\n <label class=\"min-label\">{{ minLabel }}</label>\n}\n@if (maxLabel) {\n <label class=\"max-label\">{{ maxLabel }}</label>\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-range.mjs","names":[],"sources":["../../range/src/range.component.ts","../../range/src/range.component.html"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IonRange } from '@ionic/angular';\nimport { forwardAttributes } from '@kirbydesign/designsystem/shared';\n\n@Component({\n imports: [IonRange],\n selector: 'kirby-range',\n templateUrl: './range.component.html',\n styleUrls: ['./range.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => RangeComponent),\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RangeComponent implements OnChanges, OnInit, ControlValueAccessor, AfterViewInit {\n @Input() minLabel: string;\n @Input() maxLabel: string;\n @Input() debounce: number;\n @Input() max: number;\n @Input() min: number;\n @Input() pin: boolean;\n @Input() step = 1;\n @Input() ticks: boolean;\n @Input() disabled = false;\n @Input() pinFormatter: (value: number) => string | number = this.defaultPinFormatter;\n @Input()\n set value(value: number) {\n if (value !== this.currentValue) {\n this.currentValue = value;\n this.propagateChange(this.currentValue);\n }\n }\n\n get value(): number {\n return this.currentValue;\n }\n\n @Output() change: EventEmitter<number> = new EventEmitter<number>();\n @Output() move: EventEmitter<number> = new EventEmitter<number>();\n\n @ViewChild(IonRange, { static: true }) private ionRange: IonRange;\n\n private currentValue: number;\n private _attributesToForward = ['aria-label', 'aria-labelledby'];\n\n constructor(\n private cdr: ChangeDetectorRef,\n private element: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.initializeMoveEventEmitter();\n }\n\n ngOnChanges() {\n if (!this.ticks) return;\n\n /*\n * Max 10 ticks are allowed\n */\n const amountOfTicks = (this.max - this.min) / this.step;\n if (amountOfTicks > 9) {\n this.step = (this.max - this.min) / 9;\n }\n\n /*\n * Set value to the nearest tick\n */\n this.value = this.getTicks().reduce((a, b) => {\n return Math.abs(b - this.value) < Math.abs(a - this.value) ? b : a;\n });\n }\n\n ngAfterViewInit(): void {\n forwardAttributes(\n this.element.nativeElement,\n this._attributesToForward,\n this.renderer,\n this.element.nativeElement.querySelector('ion-range')\n );\n }\n\n private getTicks() {\n const ticks = [];\n for (let value = Number(this.min); value <= Number(this.max); value += Number(this.step)) {\n ticks.push(value);\n }\n return ticks;\n }\n\n private initializeMoveEventEmitter() {\n // We subscribe to ionRange's ionInput imperatively instead of in markup\n // to avoid doing work when no-one is listening to the move event.\n if (this.move.observed) {\n this.ionRange.ionInput.subscribe((rangeEvent) => {\n this._onRangeKnobMove(rangeEvent);\n });\n }\n }\n\n private defaultPinFormatter(value: number): number {\n return value;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n public _onRangeValueChange($event: any): void {\n this.writeValue($event.detail.value);\n this.change.emit(this.currentValue);\n }\n\n public _onRangeKnobMove($event: any): void {\n this.writeValue($event.detail.value);\n this.move.emit(this.currentValue);\n }\n\n public onTouched = () => {};\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public propagateChange = (_: any) => {};\n\n public writeValue(value: any): void {\n if (value !== undefined) {\n this.value = value;\n this.cdr.markForCheck();\n }\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n}\n","<ion-range\n (ionChange)=\"_onRangeValueChange($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value\"\n [pin]=\"pin\"\n [pinFormatter]=\"pinFormatter\"\n [snaps]=\"ticks\"\n [ticks]=\"ticks\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n></ion-range>\n\n@if (minLabel) {\n <label class=\"min-label\">{{ minLabel }}</label>\n}\n@if (maxLabel) {\n <label class=\"max-label\">{{ maxLabel }}</label>\n}\n"],"mappings":"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"}