@kirbydesign/designsystem 9.2.0-sb.0 → 9.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # designsystem
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test designsystem` to execute the unit tests.
@@ -14,7 +14,7 @@ export declare class AvatarComponent {
14
14
  overlay: boolean;
15
15
  size: AvatarSize | `${AvatarSize}`;
16
16
  themeColor: NotificationColor | BrandColor | 'medium' | 'white' | 'dark' | 'light' | 'semi-light';
17
- get _cssClass(): ("xs" | "sm" | "md" | "lg" | AvatarSize | "success" | "warning" | "danger" | "primary" | "secondary" | "tertiary" | "medium" | "white" | "dark" | "light" | "semi-light")[];
17
+ get _cssClass(): ("primary" | "secondary" | "tertiary" | "success" | "warning" | "danger" | "light" | "medium" | "dark" | "white" | "semi-light" | "xs" | "sm" | "md" | "lg" | AvatarSize)[];
18
18
  static ɵfac: i0.ɵɵFactoryDeclaration<AvatarComponent, never>;
19
19
  static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "kirby-avatar", never, { "imageSrc": { "alias": "imageSrc"; "required": false; }; "altText": { "alias": "altText"; "required": false; }; "stroke": { "alias": "stroke"; "required": false; }; "text": { "alias": "text"; "required": false; }; "overlay": { "alias": "overlay"; "required": false; }; "size": { "alias": "size"; "required": false; }; "themeColor": { "alias": "themeColor"; "required": false; }; }, {}, never, ["kirby-icon", "kirby-badge"], true, never>;
20
20
  }
@@ -2,7 +2,7 @@ import { AfterContentInit } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class EmptyStateComponent implements AfterContentInit {
4
4
  iconName: string;
5
- customIconName: string;
5
+ set customIconName(customName: string);
6
6
  title: string;
7
7
  subtitle: string;
8
8
  private slottedButtons;
@@ -10,8 +10,8 @@ export class StockChartJSService extends ChartJSService {
10
10
  }
11
11
  static { this.STOCK_CHART_LOCALE_DEFAULT = 'en-US'; }
12
12
  renderChart(args) {
13
- const { ...superArgs } = args;
14
- this.dataLabelOptions = args.dataLabelOptions || null;
13
+ const { dataLabelOptions, ...superArgs } = args;
14
+ this.dataLabelOptions = dataLabelOptions || null;
15
15
  super.renderChart(superArgs);
16
16
  }
17
17
  get locale() {
@@ -97,4 +97,4 @@ export class StockChartJSService extends ChartJSService {
97
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: StockChartJSService, decorators: [{
98
98
  type: Injectable
99
99
  }] });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stY2hhcnQtanMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL2NoYXJ0L3NyYy9zdG9jay1jaGFydC9zdG9jay1jaGFydC1qcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsT0FBTyxFQUdMLGNBQWMsR0FJZixNQUFNLFdBQVcsQ0FBQzs7QUFHbkIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7SUFEdkQ7O1FBSXFCLGNBQVMsR0FBRyxPQUFPLENBQUM7S0E0SHhDO2FBOUhRLCtCQUEwQixHQUFnQixPQUFPLEFBQXZCLENBQXdCO0lBS2xELFdBQVcsQ0FBQyxJQVNsQjtRQUNDLE1BQU0sRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQztRQUN0RCxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFZLE1BQU07UUFDaEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxJQUFJLG1CQUFtQixDQUFDLDBCQUEwQixDQUFDO0lBQ3pGLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxRQUF3QjtRQUNqRCxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQ3pFLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FB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QixDQUMvQixPQUFxQixFQUNyQixJQUFZLEVBQ1osU0FBeUI7UUFFekIsSUFBSSxPQUFlLENBQUM7UUFDcEIsSUFBSSxLQUFhLENBQUM7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxTQUFTLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUM3RCxLQUFLLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QixPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ2pCO1lBQ0QsSUFBSSxTQUFTLElBQUksTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUM5RCxLQUFLLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QixPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzVCLENBQUM7aUlBOUhVLG1CQUFtQjtxSUFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwQWxsIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IENoYXJ0RGF0YXNldCwgQ2hhcnRPcHRpb25zLCBTY2F0dGVyRGF0YVBvaW50IH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbk9wdGlvbnMgfSBmcm9tICdjaGFydGpzLXBsdWdpbi1hbm5vdGF0aW9uJztcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHtcbiAgQ2hhcnREYXRhTGFiZWxPcHRpb25zLFxuICBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gIENoYXJ0SlNTZXJ2aWNlLFxuICBDaGFydExhYmVsLFxuICBDaGFydExvY2FsZSxcbiAgQ2hhcnRUeXBlLFxufSBmcm9tICcuLi9zaGFyZWQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3RvY2tDaGFydEpTU2VydmljZSBleHRlbmRzIENoYXJ0SlNTZXJ2aWNlIHtcbiAgc3RhdGljIFNUT0NLX0NIQVJUX0xPQ0FMRV9ERUZBVUxUOiBDaGFydExvY2FsZSA9ICdlbi1VUyc7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0VHlwZSA9ICdzdG9jayc7XG4gIHByaXZhdGUgZGF0YUxhYmVsT3B0aW9uczogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuXG4gIHB1YmxpYyByZW5kZXJDaGFydChhcmdzOiB7XG4gICAgdGFyZ2V0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XG4gICAgdHlwZTogQ2hhcnRUeXBlO1xuICAgIGRhdGE6IENoYXJ0RGF0YXNldFtdIHwgbnVtYmVyW107XG4gICAgbGFiZWxzPzogQ2hhcnRMYWJlbFtdO1xuICAgIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnM7XG4gICAgYW5ub3RhdGlvbnM/OiBBbm5vdGF0aW9uT3B0aW9uc1tdO1xuICAgIGRhdGFMYWJlbE9wdGlvbnM/OiBDaGFydERhdGFMYWJlbE9wdGlvbnM7XG4gICAgaGlnaGxpZ2h0ZWRFbGVtZW50cz86IENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IHsgLi4uc3VwZXJBcmdzIH0gPSBhcmdzO1xuICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucyA9IGFyZ3MuZGF0YUxhYmVsT3B0aW9ucyB8fCBudWxsO1xuICAgIHN1cGVyLnJlbmRlckNoYXJ0KHN1cGVyQXJncyk7XG4gIH1cblxuICBwcml2YXRlIGdldCBsb2NhbGUoKTogQ2hhcnRMb2NhbGUge1xuICAgIHJldHVybiB0aGlzLmRhdGFMYWJlbE9wdGlvbnM/LmxvY2FsZSB8fCBTdG9ja0NoYXJ0SlNTZXJ2aWNlLlNUT0NLX0NIQVJUX0xPQ0FMRV9ERUZBVUxUO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERlZmF1bHRMYWJlbHMoZGF0YXNldHM6IENoYXJ0RGF0YXNldFtdKSB7XG4gICAgY29uc3QgbGFyZ2VzdERhdGFzZXQgPSBkYXRhc2V0cy5yZWR1Y2UoKHByZXZpb3VzRGF0YXNldCwgY3VycmVudERhdGFzZXQpID0+XG4gICAgICBwcmV2aW91c0RhdGFzZXQuZGF0YS5sZW5ndGggPiBjdXJyZW50RGF0YXNldC5kYXRhLmxlbmd0aCA/IHByZXZpb3VzRGF0YXNldCA6IGN1cnJlbnREYXRhc2V0XG4gICAgKTtcbiAgICByZXR1cm4gbGFyZ2VzdERhdGFzZXQuZGF0YS5tYXAoKHBvaW50OiBTY2F0dGVyRGF0YVBvaW50KSA9PlxuICAgICAgdG9EYXRlKHBvaW50LngpLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSwge1xuICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlT3B0aW9uc09iamVjdChhcmdzOiB7XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gIH0pOiBDaGFydE9wdGlvbnMge1xuICAgIGNvbnN0IHN1cGVyT3B0aW9ucyA9IHN1cGVyLmNyZWF0ZU9wdGlvbnNPYmplY3QoYXJncyk7XG4gICAgY29uc3Qgc3RvY2tPcHRpb25zOiBDaGFydE9wdGlvbnMgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5nZXRTdG9ja0NoYXJ0T3B0aW9ucyhcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucyxcbiAgICAgIHRoaXMubG9jYWxlXG4gICAgKTtcblxuICAgIHJldHVybiBtZXJnZURlZXBBbGwoc3RvY2tPcHRpb25zLCBzdXBlck9wdGlvbnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZURhdGFzZXRzKGRhdGE6IENoYXJ0RGF0YXNldFtdIHwgbnVtYmVyW10pIHtcbiAgICBsZXQgZGF0YXNldHMgPSBzdXBlci5jcmVhdGVEYXRhc2V0cyhkYXRhKTtcbiAgICAvKiBcbiAgICAgICBIYWNreSBzb2x1dGlvbi4gU2hvdWxkIGJlIGZpeGVkIGluIHRoaXMgaXNzdWU6XG4gICAgICBodHRwczovL2dpdGh1Yi5jb20va2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2lzc3Vlcy8xOTY3IFxuICAgICovXG4gICAgLy8gV2UgbmVlZCB0byBtb2RpZnkgdGhlIGRhdGFzZXRzIGluIG9yZGVyIHRvIGFkZCBkYXRhbGFiZWxzLlxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd0N1cnJlbnQgfHxcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd01heCB8fFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93TWluXG4gICAgKSB7XG4gICAgICBkYXRhc2V0cyA9IHRoaXMuYWRkRGF0YUxhYmVsc0RhdGEoZGF0YXNldHMpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhc2V0cy5tYXAoKGRhdGFzZXQ6IGFueSkgPT4gKHtcbiAgICAgIC4uLmRhdGFzZXQsXG4gICAgICBraXJieU9wdGlvbnM6IHsgLi4uZGF0YXNldC5raXJieU9wdGlvbnMsIGlzU3RvY2tDaGFydDogdHJ1ZSB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvcmF0ZSBDaGFydERhdGFzZXQgd2l0aCBwcm9wZXJ0aWVzIHRvIGFsbG93IGZvciBkYXRhbGFiZWxzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcmV0dXJucyBDaGFydERhdGFzZXRbXVxuICAgKi9cbiAgcHJpdmF0ZSBhZGREYXRhTGFiZWxzRGF0YShkYXRhOiBDaGFydERhdGFzZXRbXSk6IENoYXJ0RGF0YXNldFtdIHtcbiAgICBjb25zdCBkZWNvcmF0ZURhdGFQb2ludCA9IChcbiAgICAgIHNldDogQ2hhcnREYXRhc2V0LFxuICAgICAgYXhpczogJ3gnIHwgJ3knLFxuICAgICAgZGlyZWN0aW9uOiAnaGlnaCcgfCAnbG93JyxcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyB8ICd0b3AnIHwgJ2xlZnQnIHwgJ3JpZ2h0J1xuICAgICk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgeyB2YWx1ZSwgcG9pbnRlciB9ID0gdGhpcy5sb2NhdGVWYWx1ZUluZGV4SW5EYXRhc2V0KHNldCwgYXhpcywgZGlyZWN0aW9uKTtcbiAgICAgIHNldC5kYXRhW3BvaW50ZXJdID0ge1xuICAgICAgICAuLi4oc2V0LmRhdGFbcG9pbnRlcl0gYXMgU2NhdHRlckRhdGFQb2ludCksXG4gICAgICAgIGRhdGFsYWJlbDoge1xuICAgICAgICAgIHZhbHVlOiB2YWx1ZSArICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMudmFsdWVTdWZmaXggfHwgJycpLFxuICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICB9LFxuICAgICAgfSBhcyBTY2F0dGVyRGF0YVBvaW50O1xuICAgIH07XG5cbiAgICBkYXRhLm1hcCgoc2V0KSA9PiB7XG4gICAgICBpZiAodGhpcy5kYXRhTGFiZWxPcHRpb25zLnNob3dNaW4pIHtcbiAgICAgICAgZGVjb3JhdGVEYXRhUG9pbnQoc2V0LCAneScsICdsb3cnLCAnYm90dG9tJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhTGFiZWxPcHRpb25zLnNob3dNYXgpIHtcbiAgICAgICAgZGVjb3JhdGVEYXRhUG9pbnQoc2V0LCAneScsICdoaWdoJywgJ3RvcCcpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZGF0YUxhYmVsT3B0aW9ucy5zaG93Q3VycmVudCkge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd4JywgJ2hpZ2gnLCAncmlnaHQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgbG9jYXRlVmFsdWVJbmRleEluRGF0YXNldChcbiAgICBkYXRhc2V0OiBDaGFydERhdGFzZXQsXG4gICAgYXhpczogc3RyaW5nLFxuICAgIGRpcmVjdGlvbjogJ2xvdycgfCAnaGlnaCdcbiAgKTogeyB2YWx1ZTogbnVtYmVyOyBwb2ludGVyOiBudW1iZXIgfSB7XG4gICAgbGV0IHBvaW50ZXI6IG51bWJlcjtcbiAgICBsZXQgdmFsdWU6IG51bWJlcjtcbiAgICBkYXRhc2V0LmRhdGEuZm9yRWFjaCgoZGF0YXBvaW50LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PSAnbG93JyAmJiAoIXZhbHVlIHx8IGRhdGFwb2ludFtheGlzXSA8IHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IGRhdGFwb2ludFsneSddO1xuICAgICAgICBwb2ludGVyID0gaW5kZXg7XG4gICAgICB9XG4gICAgICBpZiAoZGlyZWN0aW9uID09ICdoaWdoJyAmJiAoIXZhbHVlIHx8IGRhdGFwb2ludFtheGlzXSA+IHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IGRhdGFwb2ludFsneSddO1xuICAgICAgICBwb2ludGVyID0gaW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgdmFsdWUsIHBvaW50ZXIgfTtcbiAgfVxufVxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stY2hhcnQtanMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL2NoYXJ0L3NyYy9zdG9jay1jaGFydC9zdG9jay1jaGFydC1qcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsT0FBTyxFQUdMLGNBQWMsR0FJZixNQUFNLFdBQVcsQ0FBQzs7QUFHbkIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7SUFEdkQ7O1FBSXFCLGNBQVMsR0FBRyxPQUFPLENBQUM7S0E0SHhDO2FBOUhRLCtCQUEwQixHQUFnQixPQUFPLEFBQXZCLENBQXdCO0lBS2xELFdBQVcsQ0FBQyxJQVNsQjtRQUNDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNoRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksSUFBSSxDQUFDO1FBQ2pELEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVksTUFBTTtRQUNoQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLElBQUksbUJBQW1CLENBQUMsMEJBQTBCLENBQUM7SUFDekYsQ0FBQztJQUVTLGdCQUFnQixDQUFDLFFBQXdCO1FBQ2pELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLEVBQUUsQ0FDekUsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxD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QXlCLENBQy9CLE9BQXFCLEVBQ3JCLElBQVksRUFDWixTQUF5QjtRQUV6QixJQUFJLE9BQWUsQ0FBQztRQUNwQixJQUFJLEtBQWEsQ0FBQztRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN4QyxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQzdELEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sR0FBRyxLQUFLLENBQUM7YUFDakI7WUFDRCxJQUFJLFNBQVMsSUFBSSxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQzlELEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sR0FBRyxLQUFLLENBQUM7YUFDakI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDNUIsQ0FBQztpSUE5SFUsbUJBQW1CO3FJQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZURlZXBBbGwgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuaW1wb3J0IHsgQ2hhcnREYXRhc2V0LCBDaGFydE9wdGlvbnMsIFNjYXR0ZXJEYXRhUG9pbnQgfSBmcm9tICdjaGFydC5qcyc7XG5pbXBvcnQgeyBBbm5vdGF0aW9uT3B0aW9ucyB9IGZyb20gJ2NoYXJ0anMtcGx1Z2luLWFubm90YXRpb24nO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5pbXBvcnQge1xuICBDaGFydERhdGFMYWJlbE9wdGlvbnMsXG4gIENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cyxcbiAgQ2hhcnRKU1NlcnZpY2UsXG4gIENoYXJ0TGFiZWwsXG4gIENoYXJ0TG9jYWxlLFxuICBDaGFydFR5cGUsXG59IGZyb20gJy4uL3NoYXJlZCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdG9ja0NoYXJ0SlNTZXJ2aWNlIGV4dGVuZHMgQ2hhcnRKU1NlcnZpY2Uge1xuICBzdGF0aWMgU1RPQ0tfQ0hBUlRfTE9DQUxFX0RFRkFVTFQ6IENoYXJ0TG9jYWxlID0gJ2VuLVVTJztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhcnRUeXBlID0gJ3N0b2NrJztcbiAgcHJpdmF0ZSBkYXRhTGFiZWxPcHRpb25zOiBDaGFydERhdGFMYWJlbE9wdGlvbnM7XG5cbiAgcHVibGljIHJlbmRlckNoYXJ0KGFyZ3M6IHtcbiAgICB0YXJnZXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXTtcbiAgICBsYWJlbHM/OiBDaGFydExhYmVsW107XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gICAgZGF0YUxhYmVsT3B0aW9ucz86IENoYXJ0RGF0YUxhYmVsT3B0aW9ucztcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3QgeyBkYXRhTGFiZWxPcHRpb25zLCAuLi5zdXBlckFyZ3MgfSA9IGFyZ3M7XG4gICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zID0gZGF0YUxhYmVsT3B0aW9ucyB8fCBudWxsO1xuICAgIHN1cGVyLnJlbmRlckNoYXJ0KHN1cGVyQXJncyk7XG4gIH1cblxuICBwcml2YXRlIGdldCBsb2NhbGUoKTogQ2hhcnRMb2NhbGUge1xuICAgIHJldHVybiB0aGlzLmRhdGFMYWJlbE9wdGlvbnM/LmxvY2FsZSB8fCBTdG9ja0NoYXJ0SlNTZXJ2aWNlLlNUT0NLX0NIQVJUX0xPQ0FMRV9ERUZBVUxUO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERlZmF1bHRMYWJlbHMoZGF0YXNldHM6IENoYXJ0RGF0YXNldFtdKSB7XG4gICAgY29uc3QgbGFyZ2VzdERhdGFzZXQgPSBkYXRhc2V0cy5yZWR1Y2UoKHByZXZpb3VzRGF0YXNldCwgY3VycmVudERhdGFzZXQpID0+XG4gICAgICBwcmV2aW91c0RhdGFzZXQuZGF0YS5sZW5ndGggPiBjdXJyZW50RGF0YXNldC5kYXRhLmxlbmd0aCA/IHByZXZpb3VzRGF0YXNldCA6IGN1cnJlbnREYXRhc2V0XG4gICAgKTtcbiAgICByZXR1cm4gbGFyZ2VzdERhdGFzZXQuZGF0YS5tYXAoKHBvaW50OiBTY2F0dGVyRGF0YVBvaW50KSA9PlxuICAgICAgdG9EYXRlKHBvaW50LngpLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSwge1xuICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlT3B0aW9uc09iamVjdChhcmdzOiB7XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gIH0pOiBDaGFydE9wdGlvbnMge1xuICAgIGNvbnN0IHN1cGVyT3B0aW9ucyA9IHN1cGVyLmNyZWF0ZU9wdGlvbnNPYmplY3QoYXJncyk7XG4gICAgY29uc3Qgc3RvY2tPcHRpb25zOiBDaGFydE9wdGlvbnMgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5nZXRTdG9ja0NoYXJ0T3B0aW9ucyhcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucyxcbiAgICAgIHRoaXMubG9jYWxlXG4gICAgKTtcblxuICAgIHJldHVybiBtZXJnZURlZXBBbGwoc3RvY2tPcHRpb25zLCBzdXBlck9wdGlvbnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZURhdGFzZXRzKGRhdGE6IENoYXJ0RGF0YXNldFtdIHwgbnVtYmVyW10pIHtcbiAgICBsZXQgZGF0YXNldHMgPSBzdXBlci5jcmVhdGVEYXRhc2V0cyhkYXRhKTtcbiAgICAvKiBcbiAgICAgICBIYWNreSBzb2x1dGlvbi4gU2hvdWxkIGJlIGZpeGVkIGluIHRoaXMgaXNzdWU6XG4gICAgICBodHRwczovL2dpdGh1Yi5jb20va2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2lzc3Vlcy8xOTY3IFxuICAgICovXG4gICAgLy8gV2UgbmVlZCB0byBtb2RpZnkgdGhlIGRhdGFzZXRzIGluIG9yZGVyIHRvIGFkZCBkYXRhbGFiZWxzLlxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd0N1cnJlbnQgfHxcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd01heCB8fFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93TWluXG4gICAgKSB7XG4gICAgICBkYXRhc2V0cyA9IHRoaXMuYWRkRGF0YUxhYmVsc0RhdGEoZGF0YXNldHMpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhc2V0cy5tYXAoKGRhdGFzZXQ6IGFueSkgPT4gKHtcbiAgICAgIC4uLmRhdGFzZXQsXG4gICAgICBraXJieU9wdGlvbnM6IHsgLi4uZGF0YXNldC5raXJieU9wdGlvbnMsIGlzU3RvY2tDaGFydDogdHJ1ZSB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvcmF0ZSBDaGFydERhdGFzZXQgd2l0aCBwcm9wZXJ0aWVzIHRvIGFsbG93IGZvciBkYXRhbGFiZWxzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcmV0dXJucyBDaGFydERhdGFzZXRbXVxuICAgKi9cbiAgcHJpdmF0ZSBhZGREYXRhTGFiZWxzRGF0YShkYXRhOiBDaGFydERhdGFzZXRbXSk6IENoYXJ0RGF0YXNldFtdIHtcbiAgICBjb25zdCBkZWNvcmF0ZURhdGFQb2ludCA9IChcbiAgICAgIHNldDogQ2hhcnREYXRhc2V0LFxuICAgICAgYXhpczogJ3gnIHwgJ3knLFxuICAgICAgZGlyZWN0aW9uOiAnaGlnaCcgfCAnbG93JyxcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyB8ICd0b3AnIHwgJ2xlZnQnIHwgJ3JpZ2h0J1xuICAgICk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgeyB2YWx1ZSwgcG9pbnRlciB9ID0gdGhpcy5sb2NhdGVWYWx1ZUluZGV4SW5EYXRhc2V0KHNldCwgYXhpcywgZGlyZWN0aW9uKTtcbiAgICAgIHNldC5kYXRhW3BvaW50ZXJdID0ge1xuICAgICAgICAuLi4oc2V0LmRhdGFbcG9pbnRlcl0gYXMgU2NhdHRlckRhdGFQb2ludCksXG4gICAgICAgIGRhdGFsYWJlbDoge1xuICAgICAgICAgIHZhbHVlOiB2YWx1ZSArICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMudmFsdWVTdWZmaXggfHwgJycpLFxuICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICB9LFxuICAgICAgfSBhcyBTY2F0dGVyRGF0YVBvaW50O1xuICAgIH07XG5cbiAgICBkYXRhLm1hcCgoc2V0KSA9PiB7XG4gICAgICBpZiAodGhpcy5kYXRhTGFiZWxPcHRpb25zLnNob3dNaW4pIHtcbiAgICAgICAgZGVjb3JhdGVEYXRhUG9pbnQoc2V0LCAneScsICdsb3cnLCAnYm90dG9tJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhTGFiZWxPcHRpb25zLnNob3dNYXgpIHtcbiAgICAgICAgZGVjb3JhdGVEYXRhUG9pbnQoc2V0LCAneScsICdoaWdoJywgJ3RvcCcpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZGF0YUxhYmVsT3B0aW9ucy5zaG93Q3VycmVudCkge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd4JywgJ2hpZ2gnLCAncmlnaHQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgbG9jYXRlVmFsdWVJbmRleEluRGF0YXNldChcbiAgICBkYXRhc2V0OiBDaGFydERhdGFzZXQsXG4gICAgYXhpczogc3RyaW5nLFxuICAgIGRpcmVjdGlvbjogJ2xvdycgfCAnaGlnaCdcbiAgKTogeyB2YWx1ZTogbnVtYmVyOyBwb2ludGVyOiBudW1iZXIgfSB7XG4gICAgbGV0IHBvaW50ZXI6IG51bWJlcjtcbiAgICBsZXQgdmFsdWU6IG51bWJlcjtcbiAgICBkYXRhc2V0LmRhdGEuZm9yRWFjaCgoZGF0YXBvaW50LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PSAnbG93JyAmJiAoIXZhbHVlIHx8IGRhdGFwb2ludFtheGlzXSA8IHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IGRhdGFwb2ludFsneSddO1xuICAgICAgICBwb2ludGVyID0gaW5kZXg7XG4gICAgICB9XG4gICAgICBpZiAoZGlyZWN0aW9uID09ICdoaWdoJyAmJiAoIXZhbHVlIHx8IGRhdGFwb2ludFtheGlzXSA+IHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IGRhdGFwb2ludFsneSddO1xuICAgICAgICBwb2ludGVyID0gaW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgdmFsdWUsIHBvaW50ZXIgfTtcbiAgfVxufVxuIl19
@@ -3,7 +3,12 @@ import { ButtonComponent } from '@kirbydesign/designsystem/button';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@kirbydesign/designsystem/icon";
5
5
  import * as i2 from "@angular/common";
6
+ const CUSTOM_ICON_NAME_DEPRECATION_WARNING = 'Deprecation warning: The customIconName input property of "kirby-empty-state" is deprecated and will be removed in v10. The iconName input property already supports custom icons registered via the iconRegistryService.';
6
7
  export class EmptyStateComponent {
8
+ set customIconName(customName) {
9
+ this.iconName = customName;
10
+ console.warn(CUSTOM_ICON_NAME_DEPRECATION_WARNING);
11
+ }
7
12
  ngAfterContentInit() {
8
13
  this.enforceAttentionLevelRules();
9
14
  /* setTimeout prevents ExpressionChangedAfterItHasBeenCheckedError when changing attention
@@ -27,11 +32,11 @@ export class EmptyStateComponent {
27
32
  });
28
33
  }
29
34
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: EmptyStateComponent, selector: "kirby-empty-state", inputs: { iconName: "iconName", customIconName: "customIconName", title: "title", subtitle: "subtitle" }, queries: [{ propertyName: "slottedButtons", predicate: ButtonComponent }], ngImport: i0, template: "<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" [customName]=\"customIconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n", styles: ["article{max-width:330px;margin:auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.icon-outline{width:96px;height:96px;margin-left:auto;margin-right:auto;margin-bottom:24px;display:flex;flex-direction:column;justify-content:center;border:4px solid var(--kirby-medium);border-radius:50%}kirby-icon{color:var(--kirby-medium)}h3.title{margin-bottom:8px}p.subtitle{margin-bottom:24px;white-space:pre-wrap}:host(.primary) .icon-outline{border-color:var(--kirby-primary)}:host(.primary) kirby-icon{color:var(--kirby-primary)}:host(.secondary) .icon-outline{border-color:var(--kirby-secondary)}:host(.secondary) kirby-icon{color:var(--kirby-secondary)}:host(.tertiary) .icon-outline{border-color:var(--kirby-tertiary)}:host(.tertiary) kirby-icon{color:var(--kirby-tertiary)}:host(.success) .icon-outline{border-color:var(--kirby-success)}:host(.success) kirby-icon{color:var(--kirby-success)}:host(.warning) .icon-outline{border-color:var(--kirby-warning)}:host(.warning) kirby-icon{color:var(--kirby-warning)}:host(.danger) .icon-outline{border-color:var(--kirby-danger)}:host(.danger) kirby-icon{color:var(--kirby-danger)}:host(.white-overlay) .icon-outline{border-color:var(--kirby-white-overlay)}:host(.white-overlay) kirby-icon{color:var(--kirby-white-overlay)}:host(.light) .icon-outline{border-color:var(--kirby-light)}:host(.light) kirby-icon{color:var(--kirby-light)}:host(.medium) .icon-outline{border-color:var(--kirby-medium)}:host(.medium) kirby-icon{color:var(--kirby-medium)}:host(.dark) .icon-outline{border-color:var(--kirby-dark)}:host(.dark) kirby-icon{color:var(--kirby-dark)}:host(.dark-overlay) .icon-outline{border-color:var(--kirby-dark-overlay)}:host(.dark-overlay) kirby-icon{color:var(--kirby-dark-overlay)}\n"], dependencies: [{ kind: "component", type: i1.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: EmptyStateComponent, selector: "kirby-empty-state", inputs: { iconName: "iconName", customIconName: "customIconName", title: "title", subtitle: "subtitle" }, queries: [{ propertyName: "slottedButtons", predicate: ButtonComponent }], ngImport: i0, template: "<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n", styles: ["article{max-width:330px;margin:auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.icon-outline{width:96px;height:96px;margin-left:auto;margin-right:auto;margin-bottom:24px;display:flex;flex-direction:column;justify-content:center;border:4px solid var(--kirby-medium);border-radius:50%}kirby-icon{color:var(--kirby-medium)}h3.title{margin-bottom:8px}p.subtitle{margin-bottom:24px;white-space:pre-wrap}:host(.primary) .icon-outline{border-color:var(--kirby-primary)}:host(.primary) kirby-icon{color:var(--kirby-primary)}:host(.secondary) .icon-outline{border-color:var(--kirby-secondary)}:host(.secondary) kirby-icon{color:var(--kirby-secondary)}:host(.tertiary) .icon-outline{border-color:var(--kirby-tertiary)}:host(.tertiary) kirby-icon{color:var(--kirby-tertiary)}:host(.success) .icon-outline{border-color:var(--kirby-success)}:host(.success) kirby-icon{color:var(--kirby-success)}:host(.warning) .icon-outline{border-color:var(--kirby-warning)}:host(.warning) kirby-icon{color:var(--kirby-warning)}:host(.danger) .icon-outline{border-color:var(--kirby-danger)}:host(.danger) kirby-icon{color:var(--kirby-danger)}:host(.white-overlay) .icon-outline{border-color:var(--kirby-white-overlay)}:host(.white-overlay) kirby-icon{color:var(--kirby-white-overlay)}:host(.light) .icon-outline{border-color:var(--kirby-light)}:host(.light) kirby-icon{color:var(--kirby-light)}:host(.medium) .icon-outline{border-color:var(--kirby-medium)}:host(.medium) kirby-icon{color:var(--kirby-medium)}:host(.dark) .icon-outline{border-color:var(--kirby-dark)}:host(.dark) kirby-icon{color:var(--kirby-dark)}:host(.dark-overlay) .icon-outline{border-color:var(--kirby-dark-overlay)}:host(.dark-overlay) kirby-icon{color:var(--kirby-dark-overlay)}\n"], dependencies: [{ kind: "component", type: i1.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
36
  }
32
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: EmptyStateComponent, decorators: [{
33
38
  type: Component,
34
- args: [{ selector: 'kirby-empty-state', changeDetection: ChangeDetectionStrategy.OnPush, template: "<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" [customName]=\"customIconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n", styles: ["article{max-width:330px;margin:auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.icon-outline{width:96px;height:96px;margin-left:auto;margin-right:auto;margin-bottom:24px;display:flex;flex-direction:column;justify-content:center;border:4px solid var(--kirby-medium);border-radius:50%}kirby-icon{color:var(--kirby-medium)}h3.title{margin-bottom:8px}p.subtitle{margin-bottom:24px;white-space:pre-wrap}:host(.primary) .icon-outline{border-color:var(--kirby-primary)}:host(.primary) kirby-icon{color:var(--kirby-primary)}:host(.secondary) .icon-outline{border-color:var(--kirby-secondary)}:host(.secondary) kirby-icon{color:var(--kirby-secondary)}:host(.tertiary) .icon-outline{border-color:var(--kirby-tertiary)}:host(.tertiary) kirby-icon{color:var(--kirby-tertiary)}:host(.success) .icon-outline{border-color:var(--kirby-success)}:host(.success) kirby-icon{color:var(--kirby-success)}:host(.warning) .icon-outline{border-color:var(--kirby-warning)}:host(.warning) kirby-icon{color:var(--kirby-warning)}:host(.danger) .icon-outline{border-color:var(--kirby-danger)}:host(.danger) kirby-icon{color:var(--kirby-danger)}:host(.white-overlay) .icon-outline{border-color:var(--kirby-white-overlay)}:host(.white-overlay) kirby-icon{color:var(--kirby-white-overlay)}:host(.light) .icon-outline{border-color:var(--kirby-light)}:host(.light) kirby-icon{color:var(--kirby-light)}:host(.medium) .icon-outline{border-color:var(--kirby-medium)}:host(.medium) kirby-icon{color:var(--kirby-medium)}:host(.dark) .icon-outline{border-color:var(--kirby-dark)}:host(.dark) kirby-icon{color:var(--kirby-dark)}:host(.dark-overlay) .icon-outline{border-color:var(--kirby-dark-overlay)}:host(.dark-overlay) kirby-icon{color:var(--kirby-dark-overlay)}\n"] }]
39
+ args: [{ selector: 'kirby-empty-state', changeDetection: ChangeDetectionStrategy.OnPush, template: "<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n", styles: ["article{max-width:330px;margin:auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.icon-outline{width:96px;height:96px;margin-left:auto;margin-right:auto;margin-bottom:24px;display:flex;flex-direction:column;justify-content:center;border:4px solid var(--kirby-medium);border-radius:50%}kirby-icon{color:var(--kirby-medium)}h3.title{margin-bottom:8px}p.subtitle{margin-bottom:24px;white-space:pre-wrap}:host(.primary) .icon-outline{border-color:var(--kirby-primary)}:host(.primary) kirby-icon{color:var(--kirby-primary)}:host(.secondary) .icon-outline{border-color:var(--kirby-secondary)}:host(.secondary) kirby-icon{color:var(--kirby-secondary)}:host(.tertiary) .icon-outline{border-color:var(--kirby-tertiary)}:host(.tertiary) kirby-icon{color:var(--kirby-tertiary)}:host(.success) .icon-outline{border-color:var(--kirby-success)}:host(.success) kirby-icon{color:var(--kirby-success)}:host(.warning) .icon-outline{border-color:var(--kirby-warning)}:host(.warning) kirby-icon{color:var(--kirby-warning)}:host(.danger) .icon-outline{border-color:var(--kirby-danger)}:host(.danger) kirby-icon{color:var(--kirby-danger)}:host(.white-overlay) .icon-outline{border-color:var(--kirby-white-overlay)}:host(.white-overlay) kirby-icon{color:var(--kirby-white-overlay)}:host(.light) .icon-outline{border-color:var(--kirby-light)}:host(.light) kirby-icon{color:var(--kirby-light)}:host(.medium) .icon-outline{border-color:var(--kirby-medium)}:host(.medium) kirby-icon{color:var(--kirby-medium)}:host(.dark) .icon-outline{border-color:var(--kirby-dark)}:host(.dark) kirby-icon{color:var(--kirby-dark)}:host(.dark-overlay) .icon-outline{border-color:var(--kirby-dark-overlay)}:host(.dark-overlay) kirby-icon{color:var(--kirby-dark-overlay)}\n"] }]
35
40
  }], propDecorators: { iconName: [{
36
41
  type: Input
37
42
  }], customIconName: [{
@@ -44,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
44
49
  type: ContentChildren,
45
50
  args: [ButtonComponent]
46
51
  }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vZW1wdHktc3RhdGUvc3JjL2VtcHR5LXN0YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL2VtcHR5LXN0YXRlL3NyYy9lbXB0eS1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFRbkUsTUFBTSxPQUFPLG1CQUFtQjtJQVM5QixrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFFbEM7dUVBQytEO1FBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssMEJBQTBCO1FBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzVDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxjQUFjLEtBQUssR0FBRyxDQUFDLEVBQUU7Z0JBQ3pGLE9BQU87YUFDUjtZQUVELElBQUksTUFBTSxDQUFDLGNBQWMsS0FBSyxHQUFHLEVBQUU7Z0JBQ2pDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO2lJQWpDVSxtQkFBbUI7cUhBQW5CLG1CQUFtQixrTUFNYixlQUFlLDZCQ3RCbEMsa1lBVUE7OzJGRE1hLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdFLGNBQWM7c0JBRHJCLGVBQWU7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWVtcHR5LXN0YXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW1wdHktc3RhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEVtcHR5U3RhdGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgaWNvbk5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgY3VzdG9tSWNvbk5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcblxuICBAQ29udGVudENoaWxkcmVuKEJ1dHRvbkNvbXBvbmVudClcbiAgcHJpdmF0ZSBzbG90dGVkQnV0dG9uczogUXVlcnlMaXN0PEJ1dHRvbkNvbXBvbmVudD47XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuZW5mb3JjZUF0dGVudGlvbkxldmVsUnVsZXMoKTtcblxuICAgIC8qIHNldFRpbWVvdXQgcHJldmVudHMgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvciB3aGVuIGNoYW5naW5nIGF0dGVudGlvbiBcbiAgICBsZXZlbHMgb2Ygc2xvdHRlZCBidXR0b25zIGluIHRoaXMuZW5mb3JjZUF0dGVudGlvbkxldmVsUnVsZXMgKi9cbiAgICB0aGlzLnNsb3R0ZWRCdXR0b25zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5lbmZvcmNlQXR0ZW50aW9uTGV2ZWxSdWxlcygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBFbmZvcmNlcyB0aGF0IGFsbCBzbG90dGVkIGJ1dHRvbnMgd2lsbCBoYXZlIHRoZWlyIGF0dGVudGlvblxuICAgKiBsZXZlbCBzZXQgdG8gMywgZXhjZXB0IHRoZSBmaXJzdCBidXR0b24gaWYgaXQgaGFzXG4gICAqIGxldmVsIDEuXG4gICAqL1xuICBwcml2YXRlIGVuZm9yY2VBdHRlbnRpb25MZXZlbFJ1bGVzKCkge1xuICAgIHRoaXMuc2xvdHRlZEJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGluZGV4ID09PSAwICYmIChidXR0b24uYXR0ZW50aW9uTGV2ZWwgPT09IHVuZGVmaW5lZCB8fCBidXR0b24uYXR0ZW50aW9uTGV2ZWwgPT09ICcxJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoYnV0dG9uLmF0dGVudGlvbkxldmVsICE9PSAnMycpIHtcbiAgICAgICAgYnV0dG9uLmF0dGVudGlvbkxldmVsID0gJzMnO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8YXJ0aWNsZT5cbiAgPGRpdiAqbmdJZj1cImljb25OYW1lIHx8IGN1c3RvbUljb25OYW1lXCIgY2xhc3M9XCJpY29uLW91dGxpbmVcIj5cbiAgICA8a2lyYnktaWNvbiBbbmFtZV09XCJpY29uTmFtZVwiIFtjdXN0b21OYW1lXT1cImN1c3RvbUljb25OYW1lXCIgc2l6ZT1cImxnXCI+PC9raXJieS1pY29uPlxuICA8L2Rpdj5cbiAgPGgzICpuZ0lmPVwidGl0bGVcIiBjbGFzcz1cInRpdGxlXCI+e3sgdGl0bGUgfX08L2gzPlxuICA8cCAqbmdJZj1cInN1YnRpdGxlXCIgY2xhc3M9XCJzdWJ0aXRsZVwiPnt7IHN1YnRpdGxlIH19PC9wPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2FydGljbGU+XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vZW1wdHktc3RhdGUvc3JjL2VtcHR5LXN0YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL2VtcHR5LXN0YXRlL3NyYy9lbXB0eS1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFFbkUsTUFBTSxvQ0FBb0MsR0FDeEMsMk5BQTJOLENBQUM7QUFROU4sTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixJQUFhLGNBQWMsQ0FBQyxVQUFrQjtRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQU9ELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUVsQzt1RUFDK0Q7UUFDL0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSywwQkFBMEI7UUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLGNBQWMsS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDekYsT0FBTzthQUNSO1lBRUQsSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLEdBQUcsRUFBRTtnQkFDakMsTUFBTSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUM7YUFDN0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7aUlBcENVLG1CQUFtQjtxSEFBbkIsbUJBQW1CLGtNQVNiLGVBQWUsNkJDNUJsQyxrV0FVQTs7MkZEU2EsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNPLGNBQWM7c0JBQTFCLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0UsY0FBYztzQkFEckIsZUFBZTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYnV0dG9uJztcblxuY29uc3QgQ1VTVE9NX0lDT05fTkFNRV9ERVBSRUNBVElPTl9XQVJOSU5HID1cbiAgJ0RlcHJlY2F0aW9uIHdhcm5pbmc6IFRoZSBjdXN0b21JY29uTmFtZSBpbnB1dCBwcm9wZXJ0eSBvZiBcImtpcmJ5LWVtcHR5LXN0YXRlXCIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHYxMC4gVGhlIGljb25OYW1lIGlucHV0IHByb3BlcnR5IGFscmVhZHkgc3VwcG9ydHMgY3VzdG9tIGljb25zIHJlZ2lzdGVyZWQgdmlhIHRoZSBpY29uUmVnaXN0cnlTZXJ2aWNlLic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWVtcHR5LXN0YXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW1wdHktc3RhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEVtcHR5U3RhdGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgaWNvbk5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgc2V0IGN1c3RvbUljb25OYW1lKGN1c3RvbU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuaWNvbk5hbWUgPSBjdXN0b21OYW1lO1xuICAgIGNvbnNvbGUud2FybihDVVNUT01fSUNPTl9OQU1FX0RFUFJFQ0FUSU9OX1dBUk5JTkcpO1xuICB9XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1YnRpdGxlOiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihCdXR0b25Db21wb25lbnQpXG4gIHByaXZhdGUgc2xvdHRlZEJ1dHRvbnM6IFF1ZXJ5TGlzdDxCdXR0b25Db21wb25lbnQ+O1xuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmVuZm9yY2VBdHRlbnRpb25MZXZlbFJ1bGVzKCk7XG5cbiAgICAvKiBzZXRUaW1lb3V0IHByZXZlbnRzIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3Igd2hlbiBjaGFuZ2luZyBhdHRlbnRpb24gXG4gICAgbGV2ZWxzIG9mIHNsb3R0ZWQgYnV0dG9ucyBpbiB0aGlzLmVuZm9yY2VBdHRlbnRpb25MZXZlbFJ1bGVzICovXG4gICAgdGhpcy5zbG90dGVkQnV0dG9ucy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZW5mb3JjZUF0dGVudGlvbkxldmVsUnVsZXMoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogRW5mb3JjZXMgdGhhdCBhbGwgc2xvdHRlZCBidXR0b25zIHdpbGwgaGF2ZSB0aGVpciBhdHRlbnRpb25cbiAgICogbGV2ZWwgc2V0IHRvIDMsIGV4Y2VwdCB0aGUgZmlyc3QgYnV0dG9uIGlmIGl0IGhhc1xuICAgKiBsZXZlbCAxLlxuICAgKi9cbiAgcHJpdmF0ZSBlbmZvcmNlQXR0ZW50aW9uTGV2ZWxSdWxlcygpIHtcbiAgICB0aGlzLnNsb3R0ZWRCdXR0b25zLmZvckVhY2goKGJ1dHRvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCAmJiAoYnV0dG9uLmF0dGVudGlvbkxldmVsID09PSB1bmRlZmluZWQgfHwgYnV0dG9uLmF0dGVudGlvbkxldmVsID09PSAnMScpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGJ1dHRvbi5hdHRlbnRpb25MZXZlbCAhPT0gJzMnKSB7XG4gICAgICAgIGJ1dHRvbi5hdHRlbnRpb25MZXZlbCA9ICczJztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGFydGljbGU+XG4gIDxkaXYgKm5nSWY9XCJpY29uTmFtZSB8fCBjdXN0b21JY29uTmFtZVwiIGNsYXNzPVwiaWNvbi1vdXRsaW5lXCI+XG4gICAgPGtpcmJ5LWljb24gW25hbWVdPVwiaWNvbk5hbWVcIiBzaXplPVwibGdcIj48L2tpcmJ5LWljb24+XG4gIDwvZGl2PlxuICA8aDMgKm5nSWY9XCJ0aXRsZVwiIGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB9fTwvaDM+XG4gIDxwICpuZ0lmPVwic3VidGl0bGVcIiBjbGFzcz1cInN1YnRpdGxlXCI+e3sgc3VidGl0bGUgfX08L3A+XG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvYXJ0aWNsZT5cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, NgModule } from '@angular/core';
3
- import { style, state, animate, transition, trigger } from '@angular/animations';
3
+ import { trigger, state, style, transition, animate } from '@angular/animations';
4
4
  import * as i1 from '@kirbydesign/designsystem/icon';
5
5
  import { IconModule } from '@kirbydesign/designsystem/icon';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, EventEmitter, LOCALE_ID, Component, Inject, ViewChild, Output, Input, HostBinding } from '@angular/core';
3
- import { isBefore, isAfter, format, isSameMonth, startOfMonth, startOfDay, startOfWeek, endOfWeek, eachDayOfInterval, isSameDay, add, isWeekend, getYear } from 'date-fns';
3
+ import { isBefore, isAfter, format, isSameMonth, startOfMonth, startOfDay, eachDayOfInterval, startOfWeek, endOfWeek, isSameDay, add, isWeekend, getYear } from 'date-fns';
4
4
  import { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';
5
5
  import { da, enGB, enUS } from 'date-fns/locale';
6
6
  import { capitalizeFirstLetter } from '@kirbydesign/core';
@@ -3,7 +3,7 @@ import { Injectable, Component, Input, HostBinding, ViewChild, NgModule } from '
3
3
  import { ResizeObserverFactory } from '@kirbydesign/designsystem/shared';
4
4
  import { ColorHelper, DesignTokenHelper, deepCopy, mergeDeepAll, chartConfigHasType } from '@kirbydesign/designsystem/helpers';
5
5
  import { toDate } from 'date-fns';
6
- import { CategoryScale, LinearScale, TimeScale, BarElement, LineElement, PointElement, BarController, LineController, Filler, Tooltip, Legend, Chart } from 'chart.js';
6
+ import { CategoryScale, LinearScale, TimeScale, BarElement, LineElement, PointElement, BarController, LineController, Filler, Tooltip, Chart, Legend } from 'chart.js';
7
7
  import 'chartjs-adapter-date-fns';
8
8
  import annotationPlugin from 'chartjs-plugin-annotation';
9
9
  import ChartDataLabels from 'chartjs-plugin-datalabels';
@@ -1115,8 +1115,8 @@ class StockChartJSService extends ChartJSService {
1115
1115
  }
1116
1116
  static { this.STOCK_CHART_LOCALE_DEFAULT = 'en-US'; }
1117
1117
  renderChart(args) {
1118
- const { ...superArgs } = args;
1119
- this.dataLabelOptions = args.dataLabelOptions || null;
1118
+ const { dataLabelOptions, ...superArgs } = args;
1119
+ this.dataLabelOptions = dataLabelOptions || null;
1120
1120
  super.renderChart(superArgs);
1121
1121
  }
1122
1122
  get locale() {
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-chart.mjs","sources":["../../../../libs/designsystem/chart/src/shared/charts.types.ts","../../../../libs/designsystem/chart/src/shared/chart-config-service/configs/annotations.config.ts","../../../../libs/designsystem/chart/src/shared/chart-config-service/configs/interaction-functions-extensions.config.ts","../../../../libs/designsystem/chart/src/shared/chart-config-service/configs/type.config.ts","../../../../libs/designsystem/chart/src/shared/chart-config-service/chart-config.service.ts","../../../../libs/designsystem/chart/src/shared/chart-js-service/annotations.delegate.ts","../../../../libs/designsystem/chart/src/shared/chart-config-service/configs/global-defaults.config.ts","../../../../libs/designsystem/chart/src/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.ts","../../../../libs/designsystem/chart/src/shared/chart-js-service/configured-chart-js.ts","../../../../libs/designsystem/chart/src/shared/chart-js-service/chart-js.service.ts","../../../../libs/designsystem/chart/src/shared/chart-js-service/test-utils.ts","../../../../libs/designsystem/chart/src/shared/base-chart/base-chart.component.ts","../../../../libs/designsystem/chart/src/shared/base-chart/base-chart.component.html","../../../../libs/designsystem/chart/src/chart/chart.component.ts","../../../../libs/designsystem/chart/src/stock-chart/stock-chart-js.service.ts","../../../../libs/designsystem/chart/src/stock-chart/stock-chart.component.ts","../../../../libs/designsystem/chart/src/charts.module.ts","../../../../libs/designsystem/chart/src/chart-config/chart-base-config.ts","../../../../libs/designsystem/chart/src/chart-config/chart-bar-config/chart-bar-config.ts","../../../../libs/designsystem/chart/src/chart-config/chart-stock-config/data-label-position/data-label-position.ts","../../../../libs/designsystem/chart/src/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.ts","../../../../libs/designsystem/chart/src/chart-config/chart-stock-config/chart-stock-config.ts","../../../../libs/designsystem/chart/src/kirbydesign-designsystem-chart.ts"],"sourcesContent":["import { ChartDataset as ChartJSDataset, ChartType as ChartJSType, ChartOptions } from 'chart.js';\n\nexport type ChartHighlightedElements = number[][];\n\nexport type ChartType = 'column' | 'bar' | 'line' | 'stock';\n\nexport type ChartTypeConfig = { type: ChartJSType; options?: ChartOptions };\n\nexport type ChartTypesConfig = {\n [key in ChartType]: ChartTypeConfig;\n};\nexport type ChartLabel = string | string[]; // String[] allows for multi-line labels\n\nexport type ChartDataLabelOptions = {\n showMin?: boolean;\n showMax?: boolean;\n showCurrent?: boolean;\n locale?: ChartLocale;\n valueSuffix?: string;\n};\n\nexport type ChartLocale = 'da-DK' | 'en-US';\n\n/* \n kirbyOptions.isStockChart is a hacky solution to this issue: \n https://github.com/kirbydesign/designsystem/issues/1967 \n*/\nexport type ChartDataset = {\n kirbyOptions?: { highlightedElements?: number[]; isStockChart?: boolean };\n} & ChartJSDataset;\n\nexport function isNumberArray(value: any): value is number[] {\n return Array.isArray(value) && value.every((item) => typeof item === 'number');\n}\n","import { ColorHelper } from '@kirbydesign/designsystem/helpers';\nimport { AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\n\nconst { getThemeColorHexString } = ColorHelper;\n\n/* The chart.js annotation does not allow for changing the \ndefaults it comes with. In order to have sensible defaults \nthis object is used instead and manually merged with the \nrest of the annotations object */\nconst borderColor = getThemeColorHexString('semi-dark');\nconst borderDash: [number, number] = [6, 3];\nconst borderWidth = 1;\n\nexport const CHART_ANNOTATIONS_CONFIG: Omit<AnnotationTypeRegistry, 'label' | 'polygon'> = {\n line: {\n borderDash,\n borderWidth,\n borderColor,\n },\n ellipse: {\n borderDash,\n borderWidth,\n borderColor,\n backgroundColor: 'transparent',\n },\n box: {\n borderDash,\n borderWidth,\n borderColor,\n backgroundColor: 'transparent',\n },\n point: {\n backgroundColor: 'initial',\n },\n};\n","import { ActiveElement, Chart, ChartEvent, ChartOptions } from 'chart.js';\n\n/* Allows for adding functionality to interactions chart.js while \npreserving the interaction functionality the consumer of the component has \npassed by being provided as a callback. */\nexport const CHART_INTERACTION_FUNCTIONS_EXTENSIONS = {\n onHover: (\n _event: ChartEvent,\n activeElements: ActiveElement[],\n _chart: Chart,\n callback: ChartOptions['onHover']\n ) => {\n if (_chart.options.onClick) {\n _chart.canvas.style.cursor = activeElements[0] ? 'pointer' : 'default';\n }\n\n if (callback) callback(_event, activeElements, _chart);\n },\n};\n","import { ColorHelper, DesignTokenHelper } from '@kirbydesign/designsystem/helpers';\nimport { ChartTypeRegistry, Color, Point, TooltipItem, TooltipLabelStyle } from 'chart.js';\nimport { Context } from 'chartjs-plugin-datalabels';\nimport { Align } from 'chartjs-plugin-datalabels/types/options';\n\nimport { ChartTypesConfig } from '../../';\n\nconst { fontSize } = DesignTokenHelper;\nconst { getThemeColorHexString, getThemeColorRgbString } = ColorHelper;\n\n/**\n * A filter to read a chartpoint from a Chart.js point context (used for chartdata points). Context is provided by Chart.js.\n */\nconst getChartPointFromContext = (context: Context): Point => {\n return context.dataset.data[context.dataIndex] as Point;\n};\n\nexport const CHART_TYPES_CONFIG: ChartTypesConfig = {\n bar: {\n type: 'bar',\n options: {\n datasets: {\n bar: {\n barPercentage: 0.6,\n },\n line: {\n spanGaps: true,\n },\n },\n indexAxis: 'y',\n scales: {\n y: {\n grid: {\n drawBorder: false,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('s')),\n },\n },\n },\n },\n elements: {\n point: {\n radius: 0,\n },\n line: {\n borderColor: getThemeColorHexString('medium'),\n },\n },\n },\n },\n column: {\n type: 'bar',\n options: {\n datasets: {\n bar: {\n barPercentage: 0.6,\n },\n line: {\n spanGaps: true,\n },\n },\n indexAxis: 'x',\n scales: {\n x: {\n grid: {\n drawBorder: false,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0.2,\n borderColor: getThemeColorHexString('medium'),\n },\n point: {\n radius: 0,\n },\n },\n },\n },\n line: {\n type: 'line',\n options: {\n backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n scales: {\n x: {\n grid: {\n borderColor: getThemeColorHexString('medium'),\n borderWidth: 1,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n point: {\n radius: 0,\n },\n },\n },\n },\n stock: {\n type: 'line',\n options: {\n responsive: true,\n animation: {\n duration: 0,\n },\n layout: {\n padding: {\n left: 20,\n right: 20,\n top: 30,\n bottom: 0,\n },\n },\n backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n scales: {\n x: {\n grid: {\n lineWidth: 0,\n },\n ticks: {\n maxRotation: 0,\n autoSkipPadding: 120,\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n y: {\n position: 'right',\n display: true,\n grid: {\n drawBorder: false,\n },\n ticks: {\n display: true,\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0, // Smooth curve (0 = no smoothing)\n borderWidth: 2,\n },\n point: {\n hitRadius: 20,\n radius: 0,\n hoverRadius: 0,\n hoverBorderWidth: 0,\n },\n },\n normalized: true,\n plugins: {\n tooltip: {\n padding: 10,\n\n enabled: true,\n mode: 'index',\n intersect: false,\n backgroundColor: getThemeColorHexString('semi-light'),\n titleColor: getThemeColorHexString('semi-light-contrast'),\n bodyColor: getThemeColorHexString('semi-light-contrast'),\n caretSize: 0,\n bodySpacing: 5,\n titleSpacing: 5,\n borderColor: 'transparent',\n callbacks: {\n labelColor: (tooltipItem: TooltipItem<keyof ChartTypeRegistry>) => {\n return {\n backgroundColor: tooltipItem.dataset.borderColor,\n borderColor: getThemeColorHexString('semi-light'),\n borderWidth: 2, // This value must be exactly 2. If it is less, a white \"border\" will appear, if greater than, a shadow around the box will be shown.\n // An issue has been created, requesting a test to check this value doesn´t change: https://github.com/kirbydesign/designsystem/issues/2578\n } as TooltipLabelStyle;\n },\n },\n },\n datalabels: {\n backgroundColor: (context: Context) => context.dataset.borderColor as Color,\n color: getThemeColorHexString('white'),\n borderRadius: 3,\n font: {\n lineHeight: 1,\n size: parseInt(fontSize('xs')),\n },\n padding: {\n top: 6,\n left: 5,\n right: 5,\n bottom: 5,\n },\n offset: 5,\n align: (context: Context): Align =>\n (getChartPointFromContext(context) as any)?.datalabel.position,\n display: (context: Context): boolean =>\n !!(getChartPointFromContext(context) as any)?.datalabel,\n formatter: (value: any): string => value.datalabel.value,\n },\n },\n },\n },\n};\n","import { Injectable } from '@angular/core';\nimport { deepCopy } from '@kirbydesign/designsystem/helpers';\nimport { ActiveElement, Chart, ChartType as ChartJSType, ChartOptions } from 'chart.js';\nimport { AnnotationType, AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\nimport { toDate } from 'date-fns';\nimport { ChartDataLabelOptions, ChartLocale, ChartType, ChartTypeConfig } from '../charts.types';\n\nimport { CHART_ANNOTATIONS_CONFIG } from './configs/annotations.config';\nimport { CHART_INTERACTION_FUNCTIONS_EXTENSIONS } from './configs/interaction-functions-extensions.config';\nimport { CHART_TYPES_CONFIG } from './configs/type.config';\n\n@Injectable()\nexport class ChartConfigService {\n public getTypeConfig(chartType: ChartType): ChartTypeConfig {\n /* Deep copy to avoid Chart object modifying parts of CHART_TYPES_CONFIG \n as it copies by reference when initialized */\n return deepCopy(CHART_TYPES_CONFIG[chartType]);\n }\n\n public getAnnotationDefaults(type: AnnotationType): AnnotationTypeRegistry[AnnotationType] {\n return CHART_ANNOTATIONS_CONFIG[type];\n }\n\n /* Our types does not always map 1 to 1 to the same type \n that the chart.js chart is actually configured with. Therefore this function \n for looking up the ChartJSType of a type. */\n public chartTypeToChartJSType(chartType: ChartType): ChartJSType {\n return CHART_TYPES_CONFIG[chartType]['type'] as ChartJSType;\n }\n\n public applyInteractionFunctionsExtensions(options: ChartOptions): ChartOptions {\n const interactionFunctionsExtensions = CHART_INTERACTION_FUNCTIONS_EXTENSIONS;\n Object.entries(interactionFunctionsExtensions).forEach(([key]) => {\n const callback = options[key];\n options[key] = (e: Event, a: ActiveElement[], c: Chart) => {\n interactionFunctionsExtensions[key](e, a, c, callback);\n };\n });\n return options;\n }\n\n public getStockChartOptions(dataLabelOptions: ChartDataLabelOptions, locale: ChartLocale) {\n return {\n locale: locale,\n plugins: {\n tooltip: {\n callbacks: {\n title: (tooltipItems) => {\n const date = toDate((tooltipItems[0]?.raw as any)?.x);\n if (date.valueOf()) {\n return date.toLocaleTimeString(locale, {\n day: 'numeric',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n });\n }\n },\n label: (context) => {\n // It's not possible to add spacing between color legend and text so we\n // prefix with a space.\n return ' ' + context.formattedValue + (dataLabelOptions.valueSuffix || '');\n },\n },\n },\n },\n scales: {\n y: {\n ticks: {\n callback: (value) => {\n return value + (dataLabelOptions.valueSuffix || '');\n },\n },\n },\n },\n };\n }\n}\n","import { mergeDeepAll } from '@kirbydesign/designsystem/helpers';\nimport { Chart } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\n\nimport { ChartConfigService } from '../';\n\nexport class AnnotationsDelegate {\n constructor(private chartConfigService: ChartConfigService) {}\n\n public applyDefaultsToAnnotations(annotations: AnnotationOptions[]) {\n return annotations.map((annotation) => {\n const annotationTypeDefaults = this.chartConfigService.getAnnotationDefaults(annotation.type);\n return mergeDeepAll(annotationTypeDefaults, annotation);\n });\n }\n\n public createAnnotationPluginOptionsObject(annotations: AnnotationOptions[]) {\n const annotationsWithDefaults = this.applyDefaultsToAnnotations(annotations);\n return {\n plugins: {\n annotation: {\n annotations: annotationsWithDefaults,\n },\n },\n };\n }\n\n public getExistingChartAnnotations(chart: Chart): AnnotationOptions[] {\n const annotations = chart.options.plugins?.annotation?.annotations;\n /* In browser chart.js might return annotations as a Proxy object; force it to be an array.\n Each annotationOption in the resulting array will also be a Proxy object. \n But internally chart.js will just work with them as normal values */\n if (annotations !== undefined) {\n return Object.keys(annotations).map((key) => annotations[key]);\n } else {\n return [];\n }\n }\n}\n","import { ColorHelper } from '@kirbydesign/designsystem/helpers';\nimport { ChartType, ScriptableContext } from 'chart.js';\n\nimport { ChartDataset } from '../../';\n\nconst { getThemeColorHexString } = ColorHelper;\n\nconst hoverBackgroundColor = getThemeColorHexString('primary');\nconst backgroundColor = getThemeColorHexString('secondary');\n\nfunction scriptedBackgroundColor(context: ScriptableContext<ChartType>) {\n const dataset = context.dataset as ChartDataset;\n const highlightedElements = dataset?.kirbyOptions?.highlightedElements;\n\n if (highlightedElements && highlightedElements.includes(context.dataIndex)) {\n return hoverBackgroundColor;\n } else {\n return backgroundColor;\n }\n}\n\n// Only adds a hovercolor if an onClick handler is provided\nfunction scriptedHoverBackgroundColor(context: ScriptableContext<ChartType>) {\n if (context.chart.options.onClick) {\n return hoverBackgroundColor;\n }\n}\n\nexport const CHART_GLOBAL_DEFAULTS = {\n maintainAspectRatio: false,\n color: getThemeColorHexString('black'),\n resizeDelay: 10,\n elements: {\n bar: {\n backgroundColor: scriptedBackgroundColor,\n hoverBackgroundColor: scriptedHoverBackgroundColor,\n },\n line: {\n borderColor: scriptedBackgroundColor,\n borderWidth: 2,\n tension: 0.3,\n },\n },\n scales: {\n linear: {\n display: false,\n ticks: {\n display: false,\n },\n },\n category: {\n display: true,\n grid: {\n display: false,\n },\n },\n },\n font: {\n family: 'Roboto',\n },\n plugins: {\n legend: {\n display: false,\n },\n datalabels: {\n display: false,\n },\n tooltip: {\n enabled: false,\n },\n },\n};\n","/* \n The marker plugin is heavily inspired by https://chartjs-plugin-crosshair.netlify.app\n The project appears stale and only the vertical line feature is needed\n part of the plugin that was actually needed is implemented here. \n*/\n\nimport { Chart } from 'chart.js';\nimport { valueOrDefault } from 'chart.js/helpers';\n\nimport { ChartDataset } from '../../charts.types';\n\nconst defaultOptions = {\n line: {\n color: 'black',\n width: 1,\n dashPattern: [],\n },\n snap: {\n enabled: false,\n },\n};\n\nconst hasMarkerConfiguration = (chart: Chart) => {\n /* \n Hacky solution. Should be fixed in this issue: https://github.com/kirbydesign/designsystem/issues/1967\n */\n return chart.data.datasets.some((dataset: ChartDataset) => !!dataset?.kirbyOptions?.isStockChart);\n};\n\nexport default {\n id: 'marker',\n\n afterInit: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n\n const xScaleType = chart.config.options.scales.x.type;\n\n if (\n xScaleType !== 'linear' &&\n xScaleType !== 'time' &&\n xScaleType !== 'category' &&\n xScaleType !== 'logarithmic'\n ) {\n return;\n }\n\n if (chart.options.plugins.marker === undefined) {\n chart.options.plugins.marker = defaultOptions;\n }\n\n chart.marker = {\n enabled: false,\n suppressUpdate: false,\n x: null,\n originalData: [],\n originalXRange: {},\n dragStarted: false,\n dragStartX: null,\n dragEndX: null,\n suppressTooltips: false,\n ignoreNextEvents: 0,\n };\n },\n\n getOption: function (chart, category, name) {\n return valueOrDefault(\n chart.options.plugins.marker[category]\n ? chart.options.plugins.marker[category][name]\n : undefined,\n defaultOptions[category][name]\n );\n },\n\n getXScale: function (chart) {\n return chart.data.datasets.length ? chart.scales[chart.getDatasetMeta(0).xAxisID] : null;\n },\n getYScale: function (chart) {\n return chart.scales[chart.getDatasetMeta(0).yAxisID];\n },\n\n afterEvent: function (chart, event) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n if (chart.config.options.scales.x.length == 0) {\n return;\n }\n\n const e = event.event;\n\n const xScaleType = chart.config.options.scales.x.type;\n\n if (\n xScaleType !== 'linear' &&\n xScaleType !== 'time' &&\n xScaleType !== 'category' &&\n xScaleType !== 'logarithmic'\n ) {\n return;\n }\n\n const xScale = this.getXScale(chart);\n\n if (!xScale) {\n return;\n }\n\n if (chart.marker.ignoreNextEvents > 0) {\n chart.marker.ignoreNextEvents -= 1;\n return;\n }\n\n chart.marker.enabled =\n e.type !== 'mouseout' &&\n e.x > xScale.getPixelForValue(xScale.min) &&\n e.x < xScale.getPixelForValue(xScale.max);\n\n if (!chart.marker.enabled && !chart.marker.suppressUpdate) {\n if (e.x > xScale.getPixelForValue(xScale.max)) {\n // suppress future updates to prevent endless redrawing of chart\n chart.marker.suppressUpdate = true;\n chart.update('none');\n }\n chart.marker.dragStarted = false; // cancel zoom in progress\n return false;\n }\n chart.marker.suppressUpdate = false;\n\n chart.marker.x = e.x;\n\n chart.draw();\n },\n doDraw: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n\n if (!chart.marker.enabled) {\n return;\n }\n\n this.drawTraceLine(chart);\n this.interpolateValues(chart);\n this.drawTracePoints(chart);\n\n return true;\n },\n beforeDraw: function (chart) {\n return this.doDraw(chart);\n },\n // Logic moved to beforeDraw in order\n // for the vertical line to be drawn\n // under tooltip and datalabels.\n // afterDraw: function(chart) {\n // return this.doDraw(chart);\n // },\n\n drawTraceLine: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n const yScale = this.getYScale(chart);\n\n const lineWidth = this.getOption(chart, 'line', 'width');\n const color = this.getOption(chart, 'line', 'color');\n const dashPattern = this.getOption(chart, 'line', 'dashPattern');\n const snapEnabled = this.getOption(chart, 'snap', 'enabled');\n\n let lineX = chart.marker.x;\n\n if (snapEnabled && chart._active.length) {\n lineX = chart._active[0].element.x;\n }\n\n chart.ctx.beginPath();\n chart.ctx.setLineDash(dashPattern);\n chart.ctx.moveTo(lineX, yScale.getPixelForValue(yScale.max));\n chart.ctx.lineWidth = lineWidth;\n chart.ctx.strokeStyle = color;\n chart.ctx.lineTo(lineX, yScale.getPixelForValue(yScale.min));\n chart.ctx.stroke();\n chart.ctx.setLineDash([]);\n },\n\n drawTracePoints: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n for (let chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n const dataset = chart.data.datasets[chartIndex];\n const meta = chart.getDatasetMeta(chartIndex);\n\n const yScale = chart.scales[meta.yAxisID];\n\n if (meta.hidden || !dataset.interpolate) {\n continue;\n }\n\n chart.ctx.beginPath();\n chart.ctx.arc(\n chart.marker.x,\n yScale.getPixelForValue(dataset.interpolatedValue),\n 3,\n 0,\n 2 * Math.PI,\n false\n );\n chart.ctx.fillStyle = 'white';\n chart.ctx.lineWidth = 2;\n chart.ctx.strokeStyle = dataset.borderColor;\n chart.ctx.fill();\n chart.ctx.stroke();\n }\n },\n\n interpolateValues: function (chart) {\n for (let chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n const dataset = chart.data.datasets[chartIndex];\n\n const meta = chart.getDatasetMeta(chartIndex);\n\n const xScale = chart.scales[meta.xAxisID];\n const xValue = xScale.getValueForPixel(chart.marker.x);\n\n if (meta.hidden || !dataset.interpolate) {\n continue;\n }\n\n const data = dataset.data;\n const index = data.findIndex(function (o) {\n return o.x >= xValue;\n });\n const prev = data[index - 1];\n const next = data[index];\n\n if (chart.data.datasets[chartIndex].steppedLine && prev) {\n dataset.interpolatedValue = prev.y;\n } else if (prev && next) {\n const slope = (next.y - prev.y) / (next.x - prev.x);\n dataset.interpolatedValue = prev.y + (xValue - prev.x) * slope;\n } else {\n dataset.interpolatedValue = NaN;\n }\n }\n },\n};\n","import { mergeDeepAll } from '@kirbydesign/designsystem/helpers';\nimport {\n BarController,\n BarElement,\n CategoryScale,\n Chart,\n Filler,\n Legend,\n LinearScale,\n LineController,\n LineElement,\n PointElement,\n TimeScale,\n Tooltip,\n} from 'chart.js';\nimport 'chartjs-adapter-date-fns';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\n\nimport { CHART_GLOBAL_DEFAULTS } from '../chart-config-service/configs/global-defaults.config';\n\nimport MarkerPlugin from './chartjs-plugin-marker/chartjs-plugin-marker';\n\nconst CHART_SCALES = [CategoryScale, LinearScale, TimeScale];\nconst CHART_ELEMENTS = [BarElement, LineElement, PointElement];\nconst CHART_CONTROLLERS = [BarController, LineController];\nconst CHART_PLUGINS = [annotationPlugin, Filler, ChartDataLabels, Tooltip, MarkerPlugin].map(\n (plugin: any) => (plugin?.__esModule ? plugin.default : plugin)\n);\n\n/* Order matters; defaults must be merged after register as \n register modifies the Chart.defaults objects */\nChart.register(Legend, ...CHART_SCALES, ...CHART_ELEMENTS, ...CHART_CONTROLLERS, ...CHART_PLUGINS);\n\n/* Chart.defaults is read only; set each key modified in \n CHART_GLOBAL_DEFAULTS manually */\nconst mergedDefaults = mergeDeepAll(Chart.defaults, CHART_GLOBAL_DEFAULTS);\nObject.entries(CHART_GLOBAL_DEFAULTS).forEach(([key]) => {\n Chart.defaults[key] = mergedDefaults[key];\n});\n\nexport { Chart };\n","import { ElementRef, Injectable } from '@angular/core';\nimport { chartConfigHasType, mergeDeepAll } from '@kirbydesign/designsystem/helpers';\nimport { ChartConfiguration, ChartOptions } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\n\nimport { ChartConfigService } from '../chart-config-service';\nimport {\n ChartDataset,\n ChartHighlightedElements,\n ChartLabel,\n ChartType,\n isNumberArray,\n} from '../charts.types';\n\nimport { AnnotationsDelegate } from './annotations.delegate';\nimport { Chart } from './configured-chart-js';\n\n@Injectable()\nexport class ChartJSService {\n private chart: Chart;\n private highlightedElements: ChartHighlightedElements;\n protected chartType: ChartType;\n private annotationsDelegate: AnnotationsDelegate;\n\n constructor(protected chartConfigService: ChartConfigService) {\n this.annotationsDelegate = new AnnotationsDelegate(chartConfigService);\n }\n\n public renderChart(args: {\n targetElement: ElementRef<HTMLCanvasElement>;\n type: ChartType;\n data: ChartDataset[] | number[];\n labels?: ChartLabel[];\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n highlightedElements?: ChartHighlightedElements;\n }): void {\n const { targetElement, type, data, labels, customOptions, annotations, highlightedElements } =\n args;\n\n this.highlightedElements = highlightedElements || null;\n this.chartType = type;\n\n const datasets = this.createDatasets(data);\n\n const options = this.createOptionsObject({\n customOptions,\n annotations,\n });\n const config = this.createConfigurationObject(type, datasets, options, labels);\n\n this.initializeNewChart(targetElement.nativeElement, config);\n }\n\n public redrawChart() {\n this.chart.update();\n }\n\n public destroyChart() {\n this.chart?.destroy();\n }\n\n public updateData(data: ChartDataset[] | number[]): void {\n const datasets = this.createDatasets(data);\n\n this.chart.data.datasets = datasets;\n }\n\n public updateLabels(labels: ChartLabel[]) {\n /* As labels provided via the 'labels' input property always has \n highest priority - we can just set the property directly */\n this.chart.data.labels = labels;\n }\n\n public updateType(type: ChartType, customOptions?: ChartOptions) {\n if (type === 'bar' || type === 'column') {\n /* indexAxis does not update predictably; update by replacing \n the chart entirely instead */\n this.destructivelyUpdateType(type, customOptions);\n } else {\n this.nonDestructivelyUpdateType(type, customOptions);\n }\n }\n\n public updateOptions(customOptions: ChartOptions, type: ChartType) {\n const annotations = this.annotationsDelegate.getExistingChartAnnotations(this.chart);\n this.chartType = type;\n this.chart.options = this.createOptionsObject({ customOptions, annotations });\n }\n\n public updateAnnotations(annotations: AnnotationOptions[]) {\n const annotationsWithDefaults =\n this.annotationsDelegate.applyDefaultsToAnnotations(annotations);\n this.chart.options.plugins.annotation.annotations = annotationsWithDefaults;\n }\n\n public updateHighlightedElements(highlightedElements?: ChartHighlightedElements) {\n this.highlightedElements = highlightedElements;\n const oldDatasets = this.chart.data.datasets as ChartDataset[];\n\n // Clear old datasets of highlighted elements\n oldDatasets.map((dataset) => {\n if (dataset?.kirbyOptions?.highlightedElements) {\n delete dataset.kirbyOptions.highlightedElements;\n }\n });\n\n this.chart.data.datasets = this.createDatasets(oldDatasets);\n }\n\n protected createOptionsObject(args: {\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n }): ChartOptions {\n const { customOptions, annotations } = args;\n\n const typeConfig = this.chartConfigService.getTypeConfig(this.chartType);\n const typeConfigOptions = typeConfig?.options;\n const annotationPluginOptions = annotations\n ? this.annotationsDelegate.createAnnotationPluginOptionsObject(annotations)\n : {};\n\n const mergedOptions: ChartOptions = mergeDeepAll(\n typeConfigOptions,\n customOptions,\n annotationPluginOptions\n );\n\n return this.chartConfigService.applyInteractionFunctionsExtensions(mergedOptions);\n }\n\n protected getDefaultLabels(datasets: ChartDataset[]): ChartLabel | ChartLabel[] {\n /* \n Chart.js requires labels along the index axis to render anything therefore\n use blank labels \n */\n const largestDataset = datasets.reduce((previousDataset, currentDataset) =>\n previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset\n );\n return Array(largestDataset.data.length).fill('');\n }\n\n private createConfigurationObject(\n type: ChartType,\n datasets: ChartDataset[],\n options: ChartOptions,\n labels?: ChartLabel[]\n ): ChartConfiguration {\n const typeConfig = this.chartConfigService.getTypeConfig(type);\n\n const indexAxis = typeConfig?.options?.indexAxis ?? 'x';\n const labelsToApply = this.getLabelsToApply({ labels, datasets, type, indexAxis });\n\n return mergeDeepAll(typeConfig, {\n data: {\n labels: labelsToApply,\n datasets,\n },\n options,\n }) as ChartConfiguration;\n }\n\n protected createDatasets(data: ChartDataset[] | number[]): ChartDataset[] {\n const datasets = isNumberArray(data) ? [{ data }] : data;\n\n if (this.highlightedElements)\n this.addHighlightedElementsToDatasets(this.highlightedElements, datasets);\n\n return datasets;\n }\n\n private destructivelyUpdateType(type: ChartType, customOptions?: ChartOptions) {\n const datasets = this.chart.data.datasets as ChartDataset[];\n const labels = this.chart.data.labels as ChartLabel[]; // chart.js stores labels as unknown[]; cast it to ChartLabel[]\n const annotations = this.annotationsDelegate.getExistingChartAnnotations(this.chart);\n\n this.chartType = type;\n const options = this.createOptionsObject({ customOptions, annotations });\n const config = this.createConfigurationObject(type, datasets, options, labels);\n const canvasElement = this.chart.canvas;\n\n this.chart.destroy();\n this.initializeNewChart(canvasElement, config);\n }\n\n private nonDestructivelyUpdateType(chartType: ChartType, customOptions?: ChartOptions) {\n const annotations = this.annotationsDelegate.getExistingChartAnnotations(this.chart);\n this.chartType = chartType;\n const options = this.createOptionsObject({\n customOptions,\n annotations,\n });\n\n this.chart.options = options;\n\n if (chartConfigHasType(this.chart.config)) {\n this.chart.config.type = this.chartConfigService.chartTypeToChartJSType(chartType);\n }\n }\n\n private initializeNewChart(canvasElement: HTMLCanvasElement, config: ChartConfiguration) {\n this.chart = new Chart(canvasElement, config);\n }\n\n private addHighlightedElementsToDatasets(\n highlightedElements: ChartHighlightedElements,\n datasets: ChartDataset[]\n ) {\n highlightedElements.forEach(([datasetIndex, dataIndex]) => {\n const dataset = datasets[datasetIndex];\n if (!dataset) return;\n\n if (dataset?.kirbyOptions?.highlightedElements) {\n dataset.kirbyOptions.highlightedElements.push(dataIndex);\n } else {\n dataset.kirbyOptions = {\n ...dataset.kirbyOptions,\n highlightedElements: [dataIndex],\n };\n }\n });\n }\n\n private getLabelsToApply(args: {\n datasets: ChartDataset[];\n type: ChartType;\n indexAxis: 'x' | 'y';\n labels?: ChartLabel[];\n }) {\n const { datasets, labels, indexAxis } = args;\n\n const datasetHasLabels = ({ data }: ChartDataset) =>\n !!data?.some(\n (datapoint) => typeof datapoint === 'object' && typeof datapoint[indexAxis] === 'string'\n );\n\n /*\n Labels can be provided by the user two ways:\n 1. As a seperate ChartLabel[] via the 'labels' input prop - this has highest priority\n 2. Together with the dataset via the 'data' input prop - here each datapoint contains \n a label for the indexAxis. \n For example: { x: 'label1', y: 1} in the case where the index axis is 'x'. \n\n If no labels are provided then default labels are used. \n */\n const labelsAreGivenAsSeperateArray = labels !== undefined;\n const labelsAreGivenTogetherWithDataset = datasets.some(datasetHasLabels);\n\n if (labelsAreGivenAsSeperateArray) {\n return labels;\n } else if (labelsAreGivenTogetherWithDataset) {\n return null;\n } else {\n return this.getDefaultLabels(datasets);\n }\n }\n}\n","import { AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\nimport { ChartTypesConfig } from '../charts.types';\n\nexport const TEST_CHART_TYPES_CONFIG: ChartTypesConfig = {\n bar: {\n type: 'bar',\n options: {\n indexAxis: 'y',\n elements: {\n line: {\n borderColor: 'blue',\n },\n },\n },\n },\n column: {\n type: 'bar',\n options: {\n backgroundColor: 'red',\n },\n },\n line: {\n type: 'line',\n options: {\n backgroundColor: 'blue',\n elements: {\n line: {\n borderColor: 'red',\n },\n },\n },\n },\n stock: {\n type: 'line',\n options: {\n locale: 'en-US',\n responsive: true,\n animation: {\n duration: 0,\n },\n layout: {\n padding: {\n left: 0,\n right: 10,\n top: 30,\n bottom: 0,\n },\n },\n backgroundColor: 'rgba(235, 235, 235, 0.5)',\n scales: {\n x: {\n type: 'time',\n time: {\n unit: 'day',\n displayFormats: {\n hour: 'HH:mm',\n day: 'MMM d',\n },\n },\n grid: {\n lineWidth: 0,\n },\n ticks: {\n maxRotation: 0,\n source: 'data',\n autoSkipPadding: 40,\n font: {\n size: 12,\n },\n },\n adapters: {\n date: {\n locale: {\n code: 'en-US',\n formatLong: {},\n localize: {},\n match: {},\n options: {\n weekStartsOn: 0,\n firstWeekContainsDate: 1,\n },\n },\n },\n },\n },\n y: {\n position: 'right',\n display: true,\n grid: {\n drawBorder: false,\n },\n ticks: {\n display: true,\n font: {\n size: 12,\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0,\n borderWidth: 2,\n },\n point: {\n hitRadius: 20,\n radius: 0,\n hoverRadius: 0,\n hoverBorderWidth: 0,\n },\n },\n normalized: true,\n plugins: {\n tooltip: {\n mode: 'index',\n intersect: false,\n caretSize: 1,\n caretPadding: 12,\n displayColors: true,\n backgroundColor: '#ebebeb',\n padding: 8,\n titleColor: 'black',\n bodyColor: 'black',\n titleFont: {\n weight: 'normal',\n size: 12,\n },\n bodyFont: {\n size: 16,\n weight: 'bold',\n },\n callbacks: {},\n },\n // marker: {\n // line: {\n // color: 'red',\n // },\n // },\n datalabels: {\n color: '#ffffff',\n borderRadius: 3,\n font: {\n lineHeight: 1,\n size: 12,\n },\n padding: {\n top: 6,\n left: 5,\n right: 5,\n bottom: 5,\n },\n offset: 5,\n },\n },\n },\n },\n};\n\nexport const TEST_CHART_ANNOTATIONS_CONFIG: Omit<AnnotationTypeRegistry, 'label' | 'polygon'> = {\n line: {\n borderDash: [6, 3],\n },\n ellipse: {\n borderDash: [3, 6],\n },\n box: {},\n point: {\n backgroundColor: 'initial',\n },\n};\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ResizeObserverFactory } from '@kirbydesign/designsystem/shared';\nimport { ChartOptions } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\n\nimport { ChartDataset, ChartHighlightedElements, ChartLabel, ChartType } from '../';\nimport { ChartJSService } from '../chart-js-service/';\n\n@Component({\n selector: 'kirby-base-chart',\n templateUrl: './base-chart.component.html',\n styleUrls: ['./base-chart.component.scss'],\n})\nexport class BaseChartComponent implements AfterViewInit, OnChanges {\n @Input() type: ChartType;\n @Input() data: ChartDataset[] | number[];\n\n @Input() labels: ChartLabel[];\n\n @Input() customOptions?: ChartOptions;\n @Input() annotations?: AnnotationOptions[];\n @Input() highlightedElements?: ChartHighlightedElements;\n\n @HostBinding('style.--kirby-chart-height')\n _height: string;\n @Input() set height(value: string | number) {\n this._height = typeof value === 'number' ? `${value}px` : value;\n }\n\n @ViewChild('chartCanvas')\n canvasElement: ElementRef<HTMLCanvasElement>;\n\n private chartHasBeenRendered: boolean = false;\n\n constructor(protected chartJSService: ChartJSService) {}\n\n ngAfterViewInit() {\n /* \n A chart is not rendered until it has both a height and a width. \n If ChartComponent is slotted in an ionic component it will\n not have any height or width on afterViewInit. This will cause \n the animation to not be played on first draw. \n */\n const canvasElement = this.canvasElement.nativeElement;\n this.whenElementHasHeightAndWidth(canvasElement).then(() => this.renderChart());\n }\n\n private whenElementHasHeightAndWidth(element: HTMLElement): Promise<void> {\n const rectIs2D = ({ width, height }) => height > 0 && width > 0;\n\n return new Promise((resolve) => {\n const initialClientRect = element.getBoundingClientRect();\n if (rectIs2D(initialClientRect)) resolve();\n\n const resizeObserver = new ResizeObserverFactory().create(([resizeObserverEntry]) => {\n if (rectIs2D(resizeObserverEntry.contentRect)) {\n resizeObserver.unobserve(element);\n resolve();\n }\n });\n\n resizeObserver.observe(element);\n });\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n if (this.chartHasBeenRendered) {\n let shouldRedrawChart = false;\n\n const keyUpdateFnPairs = {\n data: () => this.updateData(),\n labels: () => this.updateLabels(),\n type: () => this.updateType(),\n customOptions: () => this.updateCustomOptions(),\n annotations: () => this.updateAnnotations(),\n highlightedElements: () => this.updateHighlightedElements(),\n };\n\n Object.entries(simpleChanges).forEach(([key]) => {\n if (simpleChanges[key].firstChange || !keyUpdateFnPairs[key]) return;\n shouldRedrawChart = true;\n keyUpdateFnPairs[key]();\n });\n\n if (shouldRedrawChart) this.redrawChart();\n }\n }\n\n protected renderChart(additionalArgs?: any) {\n this.chartHasBeenRendered = true;\n this.chartJSService.renderChart({\n targetElement: this.canvasElement,\n type: this.type,\n data: this.data,\n labels: this.labels,\n customOptions: this.customOptions,\n annotations: this.annotations,\n highlightedElements: this.highlightedElements,\n ...additionalArgs,\n });\n }\n\n private updateData() {\n this.chartJSService.updateData(this.data);\n }\n\n private updateLabels() {\n this.chartJSService.updateLabels(this.labels);\n }\n\n private updateType() {\n this.chartJSService.updateType(this.type, this.customOptions);\n }\n\n private updateCustomOptions() {\n this.chartJSService.updateOptions(this.customOptions, this.type);\n }\n\n private updateAnnotations() {\n this.chartJSService.updateAnnotations(this.annotations);\n }\n\n private updateHighlightedElements() {\n this.chartJSService.updateHighlightedElements(this.highlightedElements);\n }\n\n private redrawChart() {\n this.chartJSService.redrawChart();\n }\n\n ngOnDestroy() {\n this.chartJSService.destroyChart();\n }\n}\n","<div class=\"chart-container\">\n <canvas #chartCanvas>\n <!-- Slotted content makes it possible to insert fallback content for screen readers \n https://www.chartjs.org/docs/latest/general/accessibility.html-->\n <ng-content></ng-content>\n </canvas>\n</div>\n","import { Component, Input } from '@angular/core';\n\nimport { BaseChartComponent, ChartJSService, ChartType } from '../shared';\n\n@Component({\n selector: 'kirby-chart',\n templateUrl: '../shared/base-chart/base-chart.component.html',\n styleUrls: ['../shared/base-chart/base-chart.component.scss'],\n providers: [ChartJSService],\n})\nexport class ChartComponent extends BaseChartComponent {\n @Input() type: Exclude<ChartType, 'stock'> = 'column';\n}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { mergeDeepAll } from '@kirbydesign/designsystem/helpers';\nimport { ChartDataset, ChartOptions, ScatterDataPoint } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\nimport { toDate } from 'date-fns';\n\nimport {\n ChartDataLabelOptions,\n ChartHighlightedElements,\n ChartJSService,\n ChartLabel,\n ChartLocale,\n ChartType,\n} from '../shared';\n\n@Injectable()\nexport class StockChartJSService extends ChartJSService {\n static STOCK_CHART_LOCALE_DEFAULT: ChartLocale = 'en-US';\n\n protected readonly chartType = 'stock';\n private dataLabelOptions: ChartDataLabelOptions;\n\n public renderChart(args: {\n targetElement: ElementRef<HTMLCanvasElement>;\n type: ChartType;\n data: ChartDataset[] | number[];\n labels?: ChartLabel[];\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n dataLabelOptions?: ChartDataLabelOptions;\n highlightedElements?: ChartHighlightedElements;\n }): void {\n const { ...superArgs } = args;\n this.dataLabelOptions = args.dataLabelOptions || null;\n super.renderChart(superArgs);\n }\n\n private get locale(): ChartLocale {\n return this.dataLabelOptions?.locale || StockChartJSService.STOCK_CHART_LOCALE_DEFAULT;\n }\n\n protected getDefaultLabels(datasets: ChartDataset[]) {\n const largestDataset = datasets.reduce((previousDataset, currentDataset) =>\n previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset\n );\n return largestDataset.data.map((point: ScatterDataPoint) =>\n toDate(point.x).toLocaleDateString(this.locale, {\n month: 'short',\n day: 'numeric',\n })\n );\n }\n\n protected createOptionsObject(args: {\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n }): ChartOptions {\n const superOptions = super.createOptionsObject(args);\n const stockOptions: ChartOptions = this.chartConfigService.getStockChartOptions(\n this.dataLabelOptions,\n this.locale\n );\n\n return mergeDeepAll(stockOptions, superOptions);\n }\n\n protected createDatasets(data: ChartDataset[] | number[]) {\n let datasets = super.createDatasets(data);\n /* \n Hacky solution. Should be fixed in this issue:\n https://github.com/kirbydesign/designsystem/issues/1967 \n */\n // We need to modify the datasets in order to add datalabels.\n if (\n this.dataLabelOptions?.showCurrent ||\n this.dataLabelOptions?.showMax ||\n this.dataLabelOptions?.showMin\n ) {\n datasets = this.addDataLabelsData(datasets);\n }\n\n return datasets.map((dataset: any) => ({\n ...dataset,\n kirbyOptions: { ...dataset.kirbyOptions, isStockChart: true },\n }));\n }\n\n /**\n * Decorate ChartDataset with properties to allow for datalabels.\n *\n * @param data\n * @returns ChartDataset[]\n */\n private addDataLabelsData(data: ChartDataset[]): ChartDataset[] {\n const decorateDataPoint = (\n set: ChartDataset,\n axis: 'x' | 'y',\n direction: 'high' | 'low',\n position: 'bottom' | 'top' | 'left' | 'right'\n ): void => {\n const { value, pointer } = this.locateValueIndexInDataset(set, axis, direction);\n set.data[pointer] = {\n ...(set.data[pointer] as ScatterDataPoint),\n datalabel: {\n value: value + (this.dataLabelOptions.valueSuffix || ''),\n position,\n },\n } as ScatterDataPoint;\n };\n\n data.map((set) => {\n if (this.dataLabelOptions.showMin) {\n decorateDataPoint(set, 'y', 'low', 'bottom');\n }\n if (this.dataLabelOptions.showMax) {\n decorateDataPoint(set, 'y', 'high', 'top');\n }\n if (this.dataLabelOptions.showCurrent) {\n decorateDataPoint(set, 'x', 'high', 'right');\n }\n });\n return data;\n }\n\n private locateValueIndexInDataset(\n dataset: ChartDataset,\n axis: string,\n direction: 'low' | 'high'\n ): { value: number; pointer: number } {\n let pointer: number;\n let value: number;\n dataset.data.forEach((datapoint, index) => {\n if (direction == 'low' && (!value || datapoint[axis] < value)) {\n value = datapoint['y'];\n pointer = index;\n }\n if (direction == 'high' && (!value || datapoint[axis] > value)) {\n value = datapoint['y'];\n pointer = index;\n }\n });\n return { value, pointer };\n }\n}\n","import { Component, Input } from '@angular/core';\n\nimport { BaseChartComponent, ChartDataLabelOptions, ChartJSService } from '../shared';\n\nimport { StockChartJSService } from './stock-chart-js.service';\n\n@Component({\n selector: 'kirby-stock-chart',\n providers: [{ provide: ChartJSService, useClass: StockChartJSService }],\n templateUrl: '../shared/base-chart/base-chart.component.html',\n styleUrls: ['../shared/base-chart/base-chart.component.scss'],\n})\nexport class StockChartComponent extends BaseChartComponent {\n @Input() dataLabelOptions?: ChartDataLabelOptions;\n\n readonly type = 'stock';\n\n protected renderChart() {\n super.renderChart({ dataLabelOptions: this.dataLabelOptions });\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ChartComponent } from './chart';\nimport { ChartConfigService } from './shared';\nimport { StockChartComponent } from './stock-chart';\n\n@NgModule({\n declarations: [ChartComponent, StockChartComponent],\n exports: [ChartComponent, StockChartComponent],\n providers: [ChartConfigService],\n})\nexport class ChartsModule {}\n","import { ChartConfiguration, ChartType, TooltipOptions } from 'chart.js';\n\nexport class ChartBaseConfig {\n public static baseConfig: ChartConfiguration<ChartType>;\n public static tooltipPlugin: Partial<TooltipOptions<'line'>>;\n public static registerPlugins = () => {};\n}\n","import { ColorHelper } from '@kirbydesign/designsystem/helpers';\nimport { ChartConfiguration, ChartType } from 'chart.js';\nimport { ChartLocale } from '../../shared';\n\nimport { ChartBaseConfig } from '../chart-base-config';\n\nconst { getThemeColorHexString } = ColorHelper;\n\n/**\n * This class is still experimental. Feel free to use it, but please note that it is still subject to breaking changes.\n */\nexport class BarChartConfig extends ChartBaseConfig {\n private static BAR_CHART_LOCALE_DEFAULT: ChartLocale = 'en-US';\n\n public static baseConfig: ChartConfiguration<ChartType> = {\n type: 'bar',\n data: {\n datasets: [],\n },\n options: {\n datasets: {\n bar: {\n barPercentage: 0.6,\n },\n line: {\n spanGaps: true,\n },\n },\n indexAxis: 'x',\n scales: {\n y: {\n grid: {\n drawBorder: false,\n },\n },\n x: {},\n },\n elements: {\n point: {\n radius: 0,\n },\n line: {\n borderColor: getThemeColorHexString('medium'),\n },\n },\n },\n };\n}\n","import { ColorHelper, DesignTokenHelper } from '@kirbydesign/designsystem/helpers';\nimport { ScatterDataPoint } from 'chart.js';\nimport { Context } from 'chartjs-plugin-datalabels/types/context';\nimport { Align, Options } from 'chartjs-plugin-datalabels/types/options';\n\nconst { getThemeColorHexString } = ColorHelper;\nconst { fontSize } = DesignTokenHelper;\n\nexport const getDataLabelPosition = (data: ScatterDataPoint[], dataIndex: number): Align | null => {\n const scatterPointDataYvalues: number[] = (data as ScatterDataPoint[]).map(\n (scatterDatapoint) => scatterDatapoint.y\n );\n\n const minValue = Math.min(...scatterPointDataYvalues);\n const minValueIndex = scatterPointDataYvalues.indexOf(minValue);\n\n if (dataIndex === minValueIndex) {\n return 'bottom';\n }\n\n const maxValue = Math.max(...scatterPointDataYvalues);\n const maxValueIndex = scatterPointDataYvalues.indexOf(maxValue);\n\n if (dataIndex === maxValueIndex) {\n return 'top';\n }\n\n return null;\n};\n\nexport const dataLabelsPluginConfig: Partial<Options> = {\n backgroundColor: '#005c3c',\n color: getThemeColorHexString('white'),\n borderRadius: 3,\n font: {\n lineHeight: 1,\n size: parseInt(fontSize('xs')),\n },\n padding: {\n top: 6,\n left: 5,\n right: 5,\n bottom: 5,\n },\n offset: 5,\n align: (context: Context): Align =>\n getDataLabelPosition(context.dataset.data as ScatterDataPoint[], context.dataIndex),\n display: (context: Context): boolean => {\n return showDataLabel(context);\n },\n formatter: (dataPoint: ScatterDataPoint): string => dataPoint.y.toString(),\n};\n\nfunction showDataLabel(context: Context) {\n const data: ScatterDataPoint[] = [...context.dataset.data] as ScatterDataPoint[];\n const yValues = data.map((dataPoints) => dataPoints.y);\n\n const minValue = Math.min(...yValues);\n const minValueIndex = yValues.indexOf(minValue);\n\n const maxValue = Math.max(...yValues);\n const maxValueIndex = yValues.indexOf(maxValue);\n\n return context.dataIndex === maxValueIndex || context.dataIndex === minValueIndex;\n}\n","import { VerticalLinePlugin } from './vertical-line-plugin.model';\n\nconst verticalLineId = 'verticalLine';\n\nexport const getVerticalLinePluginConfig: VerticalLinePlugin = {\n id: verticalLineId,\n drawTime: 'beforeDraw',\n defaults: {\n width: 1,\n color: 'black',\n },\n afterInit: (chart) => {\n chart[verticalLineId] = {\n x: 0,\n y: 0,\n };\n },\n afterEvent: (chart, args) => {\n const { inChartArea } = args;\n const { x, y } = args.event;\n\n chart[verticalLineId] = { x, y, draw: inChartArea };\n chart.draw();\n },\n beforeDraw: (chart, _, options) => {\n const { ctx } = chart;\n const { top, bottom } = chart.chartArea;\n const { x, draw } = chart[verticalLineId];\n if (!draw) return;\n\n ctx.save();\n\n ctx.beginPath();\n ctx.lineWidth = options.width as number;\n ctx.strokeStyle = options.color as string;\n\n ctx.moveTo(x, bottom);\n ctx.lineTo(x, top);\n ctx.stroke();\n\n ctx.restore();\n },\n};\n","import { ColorHelper, DesignTokenHelper } from '@kirbydesign/designsystem/helpers';\nimport {\n BarController,\n BarElement,\n CategoryScale,\n Chart,\n ChartConfiguration,\n ChartType,\n ChartTypeRegistry,\n Filler,\n LinearScale,\n LineController,\n LineElement,\n PointElement,\n TimeScale,\n Tooltip,\n TooltipCallbacks,\n TooltipItem,\n TooltipLabelStyle,\n TooltipOptions,\n} from 'chart.js';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport { ChartLocale } from '../../shared';\nimport { ChartBaseConfig } from '../chart-base-config';\n\nimport {\n dataLabelsPluginConfig,\n getDataLabelPosition,\n} from './data-label-position/data-label-position';\nimport { getVerticalLinePluginConfig } from './vertical-line-plugin/vertical-line-plugin';\n\nconst { getThemeColorHexString, getThemeColorRgbString } = ColorHelper;\nconst { fontSize } = DesignTokenHelper;\n\n/**\n * This class is still experimental. Feel free to use it, but please note that it is still subject to breaking changes.\n */\nexport class StockChartConfig extends ChartBaseConfig {\n private static STOCK_CHART_LOCALE_DEFAULT: ChartLocale = 'en-US';\n\n private static scales = [CategoryScale, LinearScale, TimeScale];\n private static elements = [BarElement, LineElement, PointElement];\n private static controllers = [BarController, LineController];\n private static plugins = [annotationPlugin, Filler, Tooltip];\n private static registeredElements = [\n ...this.scales,\n ...this.controllers,\n ...this.elements,\n ...this.plugins,\n ];\n\n private static pluginsRegistered = false;\n\n public static registerPlugins() {\n if (StockChartConfig.pluginsRegistered) {\n return;\n }\n\n this.registeredElements.forEach((scale) => {\n Chart.register(scale);\n });\n StockChartConfig.pluginsRegistered = true;\n }\n\n public static baseConfig: ChartConfiguration<ChartType> = {\n type: 'line',\n data: {\n datasets: [],\n },\n options: {\n responsive: true,\n animation: {\n duration: 0,\n },\n layout: {\n padding: {\n left: 20,\n right: 20,\n top: 30,\n bottom: 0,\n },\n },\n backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n scales: {\n x: {\n adapters: {\n date: {\n locale: StockChartConfig.STOCK_CHART_LOCALE_DEFAULT,\n },\n },\n grid: {\n lineWidth: 0,\n },\n ticks: {\n maxRotation: 0,\n autoSkipPadding: 120,\n font: {\n size: parseInt(fontSize('xs')),\n },\n callback(tickValue) {\n const dateInMiliseconds = parseInt(this.getLabelForValue(parseInt(tickValue + '')));\n\n return getChartStockShortDate(\n dateInMiliseconds,\n StockChartConfig.STOCK_CHART_LOCALE_DEFAULT\n );\n },\n },\n },\n y: {\n position: 'right',\n display: true,\n grid: {\n drawBorder: false,\n },\n ticks: {\n display: true,\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0, // Smooth curve (0 = no smoothing)\n borderWidth: 2,\n },\n point: {\n hitRadius: 20,\n radius: 0,\n hoverRadius: 0,\n hoverBorderWidth: 0,\n },\n },\n normalized: true,\n plugins: {},\n },\n };\n\n public static tooltipPlugin: Partial<TooltipOptions<'line'>> = {\n padding: 10,\n enabled: true,\n mode: 'index',\n intersect: false,\n backgroundColor: getThemeColorHexString('semi-light'),\n titleColor: getThemeColorHexString('semi-light-contrast'),\n bodyColor: getThemeColorHexString('semi-light-contrast'),\n caretSize: 0,\n bodySpacing: 5,\n titleSpacing: 5,\n borderColor: 'transparent',\n callbacks: {\n title: (toolTipItem) => {\n const dateInMiliseconds = parseInt(toolTipItem[0].label); // TODO: Right now we use index === 0. I expect multiple datasets will change this\n return getChartStockShortDateTime(\n dateInMiliseconds,\n StockChartConfig.STOCK_CHART_LOCALE_DEFAULT\n );\n },\n label: (context) => context.parsed.y.toString(),\n labelColor: (tooltipItem: TooltipItem<keyof ChartTypeRegistry>) => {\n return {\n backgroundColor: tooltipItem.dataset.borderColor,\n borderColor: getThemeColorHexString('semi-light'),\n borderWidth: 2, // This value must be exactly 2. If it is less, a white \"border\" will appear, if greater than, a shadow around the box will be shown.\n // An issue has been created, requesting a test to check this value doesn´t change: https://github.com/kirbydesign/designsystem/issues/2578\n } as TooltipLabelStyle;\n },\n } as TooltipCallbacks<'line'>,\n };\n\n public static dataLabelsPluginConfig = dataLabelsPluginConfig;\n\n public static verticalLinePluginConfig = getVerticalLinePluginConfig;\n\n public static getDataLabelPosition = getDataLabelPosition;\n}\n\nconst getChartStockShortDate = (dateInMiliseconds: number, locale: ChartLocale) => {\n const newDate = new Date(dateInMiliseconds);\n\n return newDate.toLocaleDateString(locale, {\n day: 'numeric',\n month: 'short',\n });\n};\n\nconst getChartStockShortDateTime = (dateInMiliseconds: number, locale: ChartLocale) => {\n const newDate = new Date(dateInMiliseconds);\n\n return newDate.toLocaleDateString(locale, {\n day: 'numeric',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n });\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["getThemeColorHexString","fontSize","getThemeColorRgbString","i1.ChartConfigService","i1.ChartJSService"],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-chart.mjs","sources":["../../../../libs/designsystem/chart/src/shared/charts.types.ts","../../../../libs/designsystem/chart/src/shared/chart-config-service/configs/annotations.config.ts","../../../../libs/designsystem/chart/src/shared/chart-config-service/configs/interaction-functions-extensions.config.ts","../../../../libs/designsystem/chart/src/shared/chart-config-service/configs/type.config.ts","../../../../libs/designsystem/chart/src/shared/chart-config-service/chart-config.service.ts","../../../../libs/designsystem/chart/src/shared/chart-js-service/annotations.delegate.ts","../../../../libs/designsystem/chart/src/shared/chart-config-service/configs/global-defaults.config.ts","../../../../libs/designsystem/chart/src/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.ts","../../../../libs/designsystem/chart/src/shared/chart-js-service/configured-chart-js.ts","../../../../libs/designsystem/chart/src/shared/chart-js-service/chart-js.service.ts","../../../../libs/designsystem/chart/src/shared/chart-js-service/test-utils.ts","../../../../libs/designsystem/chart/src/shared/base-chart/base-chart.component.ts","../../../../libs/designsystem/chart/src/shared/base-chart/base-chart.component.html","../../../../libs/designsystem/chart/src/chart/chart.component.ts","../../../../libs/designsystem/chart/src/stock-chart/stock-chart-js.service.ts","../../../../libs/designsystem/chart/src/stock-chart/stock-chart.component.ts","../../../../libs/designsystem/chart/src/charts.module.ts","../../../../libs/designsystem/chart/src/chart-config/chart-base-config.ts","../../../../libs/designsystem/chart/src/chart-config/chart-bar-config/chart-bar-config.ts","../../../../libs/designsystem/chart/src/chart-config/chart-stock-config/data-label-position/data-label-position.ts","../../../../libs/designsystem/chart/src/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.ts","../../../../libs/designsystem/chart/src/chart-config/chart-stock-config/chart-stock-config.ts","../../../../libs/designsystem/chart/src/kirbydesign-designsystem-chart.ts"],"sourcesContent":["import { ChartDataset as ChartJSDataset, ChartType as ChartJSType, ChartOptions } from 'chart.js';\n\nexport type ChartHighlightedElements = number[][];\n\nexport type ChartType = 'column' | 'bar' | 'line' | 'stock';\n\nexport type ChartTypeConfig = { type: ChartJSType; options?: ChartOptions };\n\nexport type ChartTypesConfig = {\n [key in ChartType]: ChartTypeConfig;\n};\nexport type ChartLabel = string | string[]; // String[] allows for multi-line labels\n\nexport type ChartDataLabelOptions = {\n showMin?: boolean;\n showMax?: boolean;\n showCurrent?: boolean;\n locale?: ChartLocale;\n valueSuffix?: string;\n};\n\nexport type ChartLocale = 'da-DK' | 'en-US';\n\n/* \n kirbyOptions.isStockChart is a hacky solution to this issue: \n https://github.com/kirbydesign/designsystem/issues/1967 \n*/\nexport type ChartDataset = {\n kirbyOptions?: { highlightedElements?: number[]; isStockChart?: boolean };\n} & ChartJSDataset;\n\nexport function isNumberArray(value: any): value is number[] {\n return Array.isArray(value) && value.every((item) => typeof item === 'number');\n}\n","import { ColorHelper } from '@kirbydesign/designsystem/helpers';\nimport { AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\n\nconst { getThemeColorHexString } = ColorHelper;\n\n/* The chart.js annotation does not allow for changing the \ndefaults it comes with. In order to have sensible defaults \nthis object is used instead and manually merged with the \nrest of the annotations object */\nconst borderColor = getThemeColorHexString('semi-dark');\nconst borderDash: [number, number] = [6, 3];\nconst borderWidth = 1;\n\nexport const CHART_ANNOTATIONS_CONFIG: Omit<AnnotationTypeRegistry, 'label' | 'polygon'> = {\n line: {\n borderDash,\n borderWidth,\n borderColor,\n },\n ellipse: {\n borderDash,\n borderWidth,\n borderColor,\n backgroundColor: 'transparent',\n },\n box: {\n borderDash,\n borderWidth,\n borderColor,\n backgroundColor: 'transparent',\n },\n point: {\n backgroundColor: 'initial',\n },\n};\n","import { ActiveElement, Chart, ChartEvent, ChartOptions } from 'chart.js';\n\n/* Allows for adding functionality to interactions chart.js while \npreserving the interaction functionality the consumer of the component has \npassed by being provided as a callback. */\nexport const CHART_INTERACTION_FUNCTIONS_EXTENSIONS = {\n onHover: (\n _event: ChartEvent,\n activeElements: ActiveElement[],\n _chart: Chart,\n callback: ChartOptions['onHover']\n ) => {\n if (_chart.options.onClick) {\n _chart.canvas.style.cursor = activeElements[0] ? 'pointer' : 'default';\n }\n\n if (callback) callback(_event, activeElements, _chart);\n },\n};\n","import { ColorHelper, DesignTokenHelper } from '@kirbydesign/designsystem/helpers';\nimport { ChartTypeRegistry, Color, Point, TooltipItem, TooltipLabelStyle } from 'chart.js';\nimport { Context } from 'chartjs-plugin-datalabels';\nimport { Align } from 'chartjs-plugin-datalabels/types/options';\n\nimport { ChartTypesConfig } from '../../';\n\nconst { fontSize } = DesignTokenHelper;\nconst { getThemeColorHexString, getThemeColorRgbString } = ColorHelper;\n\n/**\n * A filter to read a chartpoint from a Chart.js point context (used for chartdata points). Context is provided by Chart.js.\n */\nconst getChartPointFromContext = (context: Context): Point => {\n return context.dataset.data[context.dataIndex] as Point;\n};\n\nexport const CHART_TYPES_CONFIG: ChartTypesConfig = {\n bar: {\n type: 'bar',\n options: {\n datasets: {\n bar: {\n barPercentage: 0.6,\n },\n line: {\n spanGaps: true,\n },\n },\n indexAxis: 'y',\n scales: {\n y: {\n grid: {\n drawBorder: false,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('s')),\n },\n },\n },\n },\n elements: {\n point: {\n radius: 0,\n },\n line: {\n borderColor: getThemeColorHexString('medium'),\n },\n },\n },\n },\n column: {\n type: 'bar',\n options: {\n datasets: {\n bar: {\n barPercentage: 0.6,\n },\n line: {\n spanGaps: true,\n },\n },\n indexAxis: 'x',\n scales: {\n x: {\n grid: {\n drawBorder: false,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0.2,\n borderColor: getThemeColorHexString('medium'),\n },\n point: {\n radius: 0,\n },\n },\n },\n },\n line: {\n type: 'line',\n options: {\n backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n scales: {\n x: {\n grid: {\n borderColor: getThemeColorHexString('medium'),\n borderWidth: 1,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n point: {\n radius: 0,\n },\n },\n },\n },\n stock: {\n type: 'line',\n options: {\n responsive: true,\n animation: {\n duration: 0,\n },\n layout: {\n padding: {\n left: 20,\n right: 20,\n top: 30,\n bottom: 0,\n },\n },\n backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n scales: {\n x: {\n grid: {\n lineWidth: 0,\n },\n ticks: {\n maxRotation: 0,\n autoSkipPadding: 120,\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n y: {\n position: 'right',\n display: true,\n grid: {\n drawBorder: false,\n },\n ticks: {\n display: true,\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0, // Smooth curve (0 = no smoothing)\n borderWidth: 2,\n },\n point: {\n hitRadius: 20,\n radius: 0,\n hoverRadius: 0,\n hoverBorderWidth: 0,\n },\n },\n normalized: true,\n plugins: {\n tooltip: {\n padding: 10,\n\n enabled: true,\n mode: 'index',\n intersect: false,\n backgroundColor: getThemeColorHexString('semi-light'),\n titleColor: getThemeColorHexString('semi-light-contrast'),\n bodyColor: getThemeColorHexString('semi-light-contrast'),\n caretSize: 0,\n bodySpacing: 5,\n titleSpacing: 5,\n borderColor: 'transparent',\n callbacks: {\n labelColor: (tooltipItem: TooltipItem<keyof ChartTypeRegistry>) => {\n return {\n backgroundColor: tooltipItem.dataset.borderColor,\n borderColor: getThemeColorHexString('semi-light'),\n borderWidth: 2, // This value must be exactly 2. If it is less, a white \"border\" will appear, if greater than, a shadow around the box will be shown.\n // An issue has been created, requesting a test to check this value doesn´t change: https://github.com/kirbydesign/designsystem/issues/2578\n } as TooltipLabelStyle;\n },\n },\n },\n datalabels: {\n backgroundColor: (context: Context) => context.dataset.borderColor as Color,\n color: getThemeColorHexString('white'),\n borderRadius: 3,\n font: {\n lineHeight: 1,\n size: parseInt(fontSize('xs')),\n },\n padding: {\n top: 6,\n left: 5,\n right: 5,\n bottom: 5,\n },\n offset: 5,\n align: (context: Context): Align =>\n (getChartPointFromContext(context) as any)?.datalabel.position,\n display: (context: Context): boolean =>\n !!(getChartPointFromContext(context) as any)?.datalabel,\n formatter: (value: any): string => value.datalabel.value,\n },\n },\n },\n },\n};\n","import { Injectable } from '@angular/core';\nimport { deepCopy } from '@kirbydesign/designsystem/helpers';\nimport { ActiveElement, Chart, ChartType as ChartJSType, ChartOptions } from 'chart.js';\nimport { AnnotationType, AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\nimport { toDate } from 'date-fns';\nimport { ChartDataLabelOptions, ChartLocale, ChartType, ChartTypeConfig } from '../charts.types';\n\nimport { CHART_ANNOTATIONS_CONFIG } from './configs/annotations.config';\nimport { CHART_INTERACTION_FUNCTIONS_EXTENSIONS } from './configs/interaction-functions-extensions.config';\nimport { CHART_TYPES_CONFIG } from './configs/type.config';\n\n@Injectable()\nexport class ChartConfigService {\n public getTypeConfig(chartType: ChartType): ChartTypeConfig {\n /* Deep copy to avoid Chart object modifying parts of CHART_TYPES_CONFIG \n as it copies by reference when initialized */\n return deepCopy(CHART_TYPES_CONFIG[chartType]);\n }\n\n public getAnnotationDefaults(type: AnnotationType): AnnotationTypeRegistry[AnnotationType] {\n return CHART_ANNOTATIONS_CONFIG[type];\n }\n\n /* Our types does not always map 1 to 1 to the same type \n that the chart.js chart is actually configured with. Therefore this function \n for looking up the ChartJSType of a type. */\n public chartTypeToChartJSType(chartType: ChartType): ChartJSType {\n return CHART_TYPES_CONFIG[chartType]['type'] as ChartJSType;\n }\n\n public applyInteractionFunctionsExtensions(options: ChartOptions): ChartOptions {\n const interactionFunctionsExtensions = CHART_INTERACTION_FUNCTIONS_EXTENSIONS;\n Object.entries(interactionFunctionsExtensions).forEach(([key]) => {\n const callback = options[key];\n options[key] = (e: Event, a: ActiveElement[], c: Chart) => {\n interactionFunctionsExtensions[key](e, a, c, callback);\n };\n });\n return options;\n }\n\n public getStockChartOptions(dataLabelOptions: ChartDataLabelOptions, locale: ChartLocale) {\n return {\n locale: locale,\n plugins: {\n tooltip: {\n callbacks: {\n title: (tooltipItems) => {\n const date = toDate((tooltipItems[0]?.raw as any)?.x);\n if (date.valueOf()) {\n return date.toLocaleTimeString(locale, {\n day: 'numeric',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n });\n }\n },\n label: (context) => {\n // It's not possible to add spacing between color legend and text so we\n // prefix with a space.\n return ' ' + context.formattedValue + (dataLabelOptions.valueSuffix || '');\n },\n },\n },\n },\n scales: {\n y: {\n ticks: {\n callback: (value) => {\n return value + (dataLabelOptions.valueSuffix || '');\n },\n },\n },\n },\n };\n }\n}\n","import { mergeDeepAll } from '@kirbydesign/designsystem/helpers';\nimport { Chart } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\n\nimport { ChartConfigService } from '../';\n\nexport class AnnotationsDelegate {\n constructor(private chartConfigService: ChartConfigService) {}\n\n public applyDefaultsToAnnotations(annotations: AnnotationOptions[]) {\n return annotations.map((annotation) => {\n const annotationTypeDefaults = this.chartConfigService.getAnnotationDefaults(annotation.type);\n return mergeDeepAll(annotationTypeDefaults, annotation);\n });\n }\n\n public createAnnotationPluginOptionsObject(annotations: AnnotationOptions[]) {\n const annotationsWithDefaults = this.applyDefaultsToAnnotations(annotations);\n return {\n plugins: {\n annotation: {\n annotations: annotationsWithDefaults,\n },\n },\n };\n }\n\n public getExistingChartAnnotations(chart: Chart): AnnotationOptions[] {\n const annotations = chart.options.plugins?.annotation?.annotations;\n /* In browser chart.js might return annotations as a Proxy object; force it to be an array.\n Each annotationOption in the resulting array will also be a Proxy object. \n But internally chart.js will just work with them as normal values */\n if (annotations !== undefined) {\n return Object.keys(annotations).map((key) => annotations[key]);\n } else {\n return [];\n }\n }\n}\n","import { ColorHelper } from '@kirbydesign/designsystem/helpers';\nimport { ChartType, ScriptableContext } from 'chart.js';\n\nimport { ChartDataset } from '../../';\n\nconst { getThemeColorHexString } = ColorHelper;\n\nconst hoverBackgroundColor = getThemeColorHexString('primary');\nconst backgroundColor = getThemeColorHexString('secondary');\n\nfunction scriptedBackgroundColor(context: ScriptableContext<ChartType>) {\n const dataset = context.dataset as ChartDataset;\n const highlightedElements = dataset?.kirbyOptions?.highlightedElements;\n\n if (highlightedElements && highlightedElements.includes(context.dataIndex)) {\n return hoverBackgroundColor;\n } else {\n return backgroundColor;\n }\n}\n\n// Only adds a hovercolor if an onClick handler is provided\nfunction scriptedHoverBackgroundColor(context: ScriptableContext<ChartType>) {\n if (context.chart.options.onClick) {\n return hoverBackgroundColor;\n }\n}\n\nexport const CHART_GLOBAL_DEFAULTS = {\n maintainAspectRatio: false,\n color: getThemeColorHexString('black'),\n resizeDelay: 10,\n elements: {\n bar: {\n backgroundColor: scriptedBackgroundColor,\n hoverBackgroundColor: scriptedHoverBackgroundColor,\n },\n line: {\n borderColor: scriptedBackgroundColor,\n borderWidth: 2,\n tension: 0.3,\n },\n },\n scales: {\n linear: {\n display: false,\n ticks: {\n display: false,\n },\n },\n category: {\n display: true,\n grid: {\n display: false,\n },\n },\n },\n font: {\n family: 'Roboto',\n },\n plugins: {\n legend: {\n display: false,\n },\n datalabels: {\n display: false,\n },\n tooltip: {\n enabled: false,\n },\n },\n};\n","/* \n The marker plugin is heavily inspired by https://chartjs-plugin-crosshair.netlify.app\n The project appears stale and only the vertical line feature is needed\n part of the plugin that was actually needed is implemented here. \n*/\n\nimport { Chart } from 'chart.js';\nimport { valueOrDefault } from 'chart.js/helpers';\n\nimport { ChartDataset } from '../../charts.types';\n\nconst defaultOptions = {\n line: {\n color: 'black',\n width: 1,\n dashPattern: [],\n },\n snap: {\n enabled: false,\n },\n};\n\nconst hasMarkerConfiguration = (chart: Chart) => {\n /* \n Hacky solution. Should be fixed in this issue: https://github.com/kirbydesign/designsystem/issues/1967\n */\n return chart.data.datasets.some((dataset: ChartDataset) => !!dataset?.kirbyOptions?.isStockChart);\n};\n\nexport default {\n id: 'marker',\n\n afterInit: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n\n const xScaleType = chart.config.options.scales.x.type;\n\n if (\n xScaleType !== 'linear' &&\n xScaleType !== 'time' &&\n xScaleType !== 'category' &&\n xScaleType !== 'logarithmic'\n ) {\n return;\n }\n\n if (chart.options.plugins.marker === undefined) {\n chart.options.plugins.marker = defaultOptions;\n }\n\n chart.marker = {\n enabled: false,\n suppressUpdate: false,\n x: null,\n originalData: [],\n originalXRange: {},\n dragStarted: false,\n dragStartX: null,\n dragEndX: null,\n suppressTooltips: false,\n ignoreNextEvents: 0,\n };\n },\n\n getOption: function (chart, category, name) {\n return valueOrDefault(\n chart.options.plugins.marker[category]\n ? chart.options.plugins.marker[category][name]\n : undefined,\n defaultOptions[category][name]\n );\n },\n\n getXScale: function (chart) {\n return chart.data.datasets.length ? chart.scales[chart.getDatasetMeta(0).xAxisID] : null;\n },\n getYScale: function (chart) {\n return chart.scales[chart.getDatasetMeta(0).yAxisID];\n },\n\n afterEvent: function (chart, event) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n if (chart.config.options.scales.x.length == 0) {\n return;\n }\n\n const e = event.event;\n\n const xScaleType = chart.config.options.scales.x.type;\n\n if (\n xScaleType !== 'linear' &&\n xScaleType !== 'time' &&\n xScaleType !== 'category' &&\n xScaleType !== 'logarithmic'\n ) {\n return;\n }\n\n const xScale = this.getXScale(chart);\n\n if (!xScale) {\n return;\n }\n\n if (chart.marker.ignoreNextEvents > 0) {\n chart.marker.ignoreNextEvents -= 1;\n return;\n }\n\n chart.marker.enabled =\n e.type !== 'mouseout' &&\n e.x > xScale.getPixelForValue(xScale.min) &&\n e.x < xScale.getPixelForValue(xScale.max);\n\n if (!chart.marker.enabled && !chart.marker.suppressUpdate) {\n if (e.x > xScale.getPixelForValue(xScale.max)) {\n // suppress future updates to prevent endless redrawing of chart\n chart.marker.suppressUpdate = true;\n chart.update('none');\n }\n chart.marker.dragStarted = false; // cancel zoom in progress\n return false;\n }\n chart.marker.suppressUpdate = false;\n\n chart.marker.x = e.x;\n\n chart.draw();\n },\n doDraw: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n\n if (!chart.marker.enabled) {\n return;\n }\n\n this.drawTraceLine(chart);\n this.interpolateValues(chart);\n this.drawTracePoints(chart);\n\n return true;\n },\n beforeDraw: function (chart) {\n return this.doDraw(chart);\n },\n // Logic moved to beforeDraw in order\n // for the vertical line to be drawn\n // under tooltip and datalabels.\n // afterDraw: function(chart) {\n // return this.doDraw(chart);\n // },\n\n drawTraceLine: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n const yScale = this.getYScale(chart);\n\n const lineWidth = this.getOption(chart, 'line', 'width');\n const color = this.getOption(chart, 'line', 'color');\n const dashPattern = this.getOption(chart, 'line', 'dashPattern');\n const snapEnabled = this.getOption(chart, 'snap', 'enabled');\n\n let lineX = chart.marker.x;\n\n if (snapEnabled && chart._active.length) {\n lineX = chart._active[0].element.x;\n }\n\n chart.ctx.beginPath();\n chart.ctx.setLineDash(dashPattern);\n chart.ctx.moveTo(lineX, yScale.getPixelForValue(yScale.max));\n chart.ctx.lineWidth = lineWidth;\n chart.ctx.strokeStyle = color;\n chart.ctx.lineTo(lineX, yScale.getPixelForValue(yScale.min));\n chart.ctx.stroke();\n chart.ctx.setLineDash([]);\n },\n\n drawTracePoints: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n for (let chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n const dataset = chart.data.datasets[chartIndex];\n const meta = chart.getDatasetMeta(chartIndex);\n\n const yScale = chart.scales[meta.yAxisID];\n\n if (meta.hidden || !dataset.interpolate) {\n continue;\n }\n\n chart.ctx.beginPath();\n chart.ctx.arc(\n chart.marker.x,\n yScale.getPixelForValue(dataset.interpolatedValue),\n 3,\n 0,\n 2 * Math.PI,\n false\n );\n chart.ctx.fillStyle = 'white';\n chart.ctx.lineWidth = 2;\n chart.ctx.strokeStyle = dataset.borderColor;\n chart.ctx.fill();\n chart.ctx.stroke();\n }\n },\n\n interpolateValues: function (chart) {\n for (let chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n const dataset = chart.data.datasets[chartIndex];\n\n const meta = chart.getDatasetMeta(chartIndex);\n\n const xScale = chart.scales[meta.xAxisID];\n const xValue = xScale.getValueForPixel(chart.marker.x);\n\n if (meta.hidden || !dataset.interpolate) {\n continue;\n }\n\n const data = dataset.data;\n const index = data.findIndex(function (o) {\n return o.x >= xValue;\n });\n const prev = data[index - 1];\n const next = data[index];\n\n if (chart.data.datasets[chartIndex].steppedLine && prev) {\n dataset.interpolatedValue = prev.y;\n } else if (prev && next) {\n const slope = (next.y - prev.y) / (next.x - prev.x);\n dataset.interpolatedValue = prev.y + (xValue - prev.x) * slope;\n } else {\n dataset.interpolatedValue = NaN;\n }\n }\n },\n};\n","import { mergeDeepAll } from '@kirbydesign/designsystem/helpers';\nimport {\n BarController,\n BarElement,\n CategoryScale,\n Chart,\n Filler,\n Legend,\n LinearScale,\n LineController,\n LineElement,\n PointElement,\n TimeScale,\n Tooltip,\n} from 'chart.js';\nimport 'chartjs-adapter-date-fns';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\n\nimport { CHART_GLOBAL_DEFAULTS } from '../chart-config-service/configs/global-defaults.config';\n\nimport MarkerPlugin from './chartjs-plugin-marker/chartjs-plugin-marker';\n\nconst CHART_SCALES = [CategoryScale, LinearScale, TimeScale];\nconst CHART_ELEMENTS = [BarElement, LineElement, PointElement];\nconst CHART_CONTROLLERS = [BarController, LineController];\nconst CHART_PLUGINS = [annotationPlugin, Filler, ChartDataLabels, Tooltip, MarkerPlugin].map(\n (plugin: any) => (plugin?.__esModule ? plugin.default : plugin)\n);\n\n/* Order matters; defaults must be merged after register as \n register modifies the Chart.defaults objects */\nChart.register(Legend, ...CHART_SCALES, ...CHART_ELEMENTS, ...CHART_CONTROLLERS, ...CHART_PLUGINS);\n\n/* Chart.defaults is read only; set each key modified in \n CHART_GLOBAL_DEFAULTS manually */\nconst mergedDefaults = mergeDeepAll(Chart.defaults, CHART_GLOBAL_DEFAULTS);\nObject.entries(CHART_GLOBAL_DEFAULTS).forEach(([key]) => {\n Chart.defaults[key] = mergedDefaults[key];\n});\n\nexport { Chart };\n","import { ElementRef, Injectable } from '@angular/core';\nimport { chartConfigHasType, mergeDeepAll } from '@kirbydesign/designsystem/helpers';\nimport { ChartConfiguration, ChartOptions } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\n\nimport { ChartConfigService } from '../chart-config-service';\nimport {\n ChartDataset,\n ChartHighlightedElements,\n ChartLabel,\n ChartType,\n isNumberArray,\n} from '../charts.types';\n\nimport { AnnotationsDelegate } from './annotations.delegate';\nimport { Chart } from './configured-chart-js';\n\n@Injectable()\nexport class ChartJSService {\n private chart: Chart;\n private highlightedElements: ChartHighlightedElements;\n protected chartType: ChartType;\n private annotationsDelegate: AnnotationsDelegate;\n\n constructor(protected chartConfigService: ChartConfigService) {\n this.annotationsDelegate = new AnnotationsDelegate(chartConfigService);\n }\n\n public renderChart(args: {\n targetElement: ElementRef<HTMLCanvasElement>;\n type: ChartType;\n data: ChartDataset[] | number[];\n labels?: ChartLabel[];\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n highlightedElements?: ChartHighlightedElements;\n }): void {\n const { targetElement, type, data, labels, customOptions, annotations, highlightedElements } =\n args;\n\n this.highlightedElements = highlightedElements || null;\n this.chartType = type;\n\n const datasets = this.createDatasets(data);\n\n const options = this.createOptionsObject({\n customOptions,\n annotations,\n });\n const config = this.createConfigurationObject(type, datasets, options, labels);\n\n this.initializeNewChart(targetElement.nativeElement, config);\n }\n\n public redrawChart() {\n this.chart.update();\n }\n\n public destroyChart() {\n this.chart?.destroy();\n }\n\n public updateData(data: ChartDataset[] | number[]): void {\n const datasets = this.createDatasets(data);\n\n this.chart.data.datasets = datasets;\n }\n\n public updateLabels(labels: ChartLabel[]) {\n /* As labels provided via the 'labels' input property always has \n highest priority - we can just set the property directly */\n this.chart.data.labels = labels;\n }\n\n public updateType(type: ChartType, customOptions?: ChartOptions) {\n if (type === 'bar' || type === 'column') {\n /* indexAxis does not update predictably; update by replacing \n the chart entirely instead */\n this.destructivelyUpdateType(type, customOptions);\n } else {\n this.nonDestructivelyUpdateType(type, customOptions);\n }\n }\n\n public updateOptions(customOptions: ChartOptions, type: ChartType) {\n const annotations = this.annotationsDelegate.getExistingChartAnnotations(this.chart);\n this.chartType = type;\n this.chart.options = this.createOptionsObject({ customOptions, annotations });\n }\n\n public updateAnnotations(annotations: AnnotationOptions[]) {\n const annotationsWithDefaults =\n this.annotationsDelegate.applyDefaultsToAnnotations(annotations);\n this.chart.options.plugins.annotation.annotations = annotationsWithDefaults;\n }\n\n public updateHighlightedElements(highlightedElements?: ChartHighlightedElements) {\n this.highlightedElements = highlightedElements;\n const oldDatasets = this.chart.data.datasets as ChartDataset[];\n\n // Clear old datasets of highlighted elements\n oldDatasets.map((dataset) => {\n if (dataset?.kirbyOptions?.highlightedElements) {\n delete dataset.kirbyOptions.highlightedElements;\n }\n });\n\n this.chart.data.datasets = this.createDatasets(oldDatasets);\n }\n\n protected createOptionsObject(args: {\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n }): ChartOptions {\n const { customOptions, annotations } = args;\n\n const typeConfig = this.chartConfigService.getTypeConfig(this.chartType);\n const typeConfigOptions = typeConfig?.options;\n const annotationPluginOptions = annotations\n ? this.annotationsDelegate.createAnnotationPluginOptionsObject(annotations)\n : {};\n\n const mergedOptions: ChartOptions = mergeDeepAll(\n typeConfigOptions,\n customOptions,\n annotationPluginOptions\n );\n\n return this.chartConfigService.applyInteractionFunctionsExtensions(mergedOptions);\n }\n\n protected getDefaultLabels(datasets: ChartDataset[]): ChartLabel | ChartLabel[] {\n /* \n Chart.js requires labels along the index axis to render anything therefore\n use blank labels \n */\n const largestDataset = datasets.reduce((previousDataset, currentDataset) =>\n previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset\n );\n return Array(largestDataset.data.length).fill('');\n }\n\n private createConfigurationObject(\n type: ChartType,\n datasets: ChartDataset[],\n options: ChartOptions,\n labels?: ChartLabel[]\n ): ChartConfiguration {\n const typeConfig = this.chartConfigService.getTypeConfig(type);\n\n const indexAxis = typeConfig?.options?.indexAxis ?? 'x';\n const labelsToApply = this.getLabelsToApply({ labels, datasets, type, indexAxis });\n\n return mergeDeepAll(typeConfig, {\n data: {\n labels: labelsToApply,\n datasets,\n },\n options,\n }) as ChartConfiguration;\n }\n\n protected createDatasets(data: ChartDataset[] | number[]): ChartDataset[] {\n const datasets = isNumberArray(data) ? [{ data }] : data;\n\n if (this.highlightedElements)\n this.addHighlightedElementsToDatasets(this.highlightedElements, datasets);\n\n return datasets;\n }\n\n private destructivelyUpdateType(type: ChartType, customOptions?: ChartOptions) {\n const datasets = this.chart.data.datasets as ChartDataset[];\n const labels = this.chart.data.labels as ChartLabel[]; // chart.js stores labels as unknown[]; cast it to ChartLabel[]\n const annotations = this.annotationsDelegate.getExistingChartAnnotations(this.chart);\n\n this.chartType = type;\n const options = this.createOptionsObject({ customOptions, annotations });\n const config = this.createConfigurationObject(type, datasets, options, labels);\n const canvasElement = this.chart.canvas;\n\n this.chart.destroy();\n this.initializeNewChart(canvasElement, config);\n }\n\n private nonDestructivelyUpdateType(chartType: ChartType, customOptions?: ChartOptions) {\n const annotations = this.annotationsDelegate.getExistingChartAnnotations(this.chart);\n this.chartType = chartType;\n const options = this.createOptionsObject({\n customOptions,\n annotations,\n });\n\n this.chart.options = options;\n\n if (chartConfigHasType(this.chart.config)) {\n this.chart.config.type = this.chartConfigService.chartTypeToChartJSType(chartType);\n }\n }\n\n private initializeNewChart(canvasElement: HTMLCanvasElement, config: ChartConfiguration) {\n this.chart = new Chart(canvasElement, config);\n }\n\n private addHighlightedElementsToDatasets(\n highlightedElements: ChartHighlightedElements,\n datasets: ChartDataset[]\n ) {\n highlightedElements.forEach(([datasetIndex, dataIndex]) => {\n const dataset = datasets[datasetIndex];\n if (!dataset) return;\n\n if (dataset?.kirbyOptions?.highlightedElements) {\n dataset.kirbyOptions.highlightedElements.push(dataIndex);\n } else {\n dataset.kirbyOptions = {\n ...dataset.kirbyOptions,\n highlightedElements: [dataIndex],\n };\n }\n });\n }\n\n private getLabelsToApply(args: {\n datasets: ChartDataset[];\n type: ChartType;\n indexAxis: 'x' | 'y';\n labels?: ChartLabel[];\n }) {\n const { datasets, labels, indexAxis } = args;\n\n const datasetHasLabels = ({ data }: ChartDataset) =>\n !!data?.some(\n (datapoint) => typeof datapoint === 'object' && typeof datapoint[indexAxis] === 'string'\n );\n\n /*\n Labels can be provided by the user two ways:\n 1. As a seperate ChartLabel[] via the 'labels' input prop - this has highest priority\n 2. Together with the dataset via the 'data' input prop - here each datapoint contains \n a label for the indexAxis. \n For example: { x: 'label1', y: 1} in the case where the index axis is 'x'. \n\n If no labels are provided then default labels are used. \n */\n const labelsAreGivenAsSeperateArray = labels !== undefined;\n const labelsAreGivenTogetherWithDataset = datasets.some(datasetHasLabels);\n\n if (labelsAreGivenAsSeperateArray) {\n return labels;\n } else if (labelsAreGivenTogetherWithDataset) {\n return null;\n } else {\n return this.getDefaultLabels(datasets);\n }\n }\n}\n","import { AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\nimport { ChartTypesConfig } from '../charts.types';\n\nexport const TEST_CHART_TYPES_CONFIG: ChartTypesConfig = {\n bar: {\n type: 'bar',\n options: {\n indexAxis: 'y',\n elements: {\n line: {\n borderColor: 'blue',\n },\n },\n },\n },\n column: {\n type: 'bar',\n options: {\n backgroundColor: 'red',\n },\n },\n line: {\n type: 'line',\n options: {\n backgroundColor: 'blue',\n elements: {\n line: {\n borderColor: 'red',\n },\n },\n },\n },\n stock: {\n type: 'line',\n options: {\n locale: 'en-US',\n responsive: true,\n animation: {\n duration: 0,\n },\n layout: {\n padding: {\n left: 0,\n right: 10,\n top: 30,\n bottom: 0,\n },\n },\n backgroundColor: 'rgba(235, 235, 235, 0.5)',\n scales: {\n x: {\n type: 'time',\n time: {\n unit: 'day',\n displayFormats: {\n hour: 'HH:mm',\n day: 'MMM d',\n },\n },\n grid: {\n lineWidth: 0,\n },\n ticks: {\n maxRotation: 0,\n source: 'data',\n autoSkipPadding: 40,\n font: {\n size: 12,\n },\n },\n adapters: {\n date: {\n locale: {\n code: 'en-US',\n formatLong: {},\n localize: {},\n match: {},\n options: {\n weekStartsOn: 0,\n firstWeekContainsDate: 1,\n },\n },\n },\n },\n },\n y: {\n position: 'right',\n display: true,\n grid: {\n drawBorder: false,\n },\n ticks: {\n display: true,\n font: {\n size: 12,\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0,\n borderWidth: 2,\n },\n point: {\n hitRadius: 20,\n radius: 0,\n hoverRadius: 0,\n hoverBorderWidth: 0,\n },\n },\n normalized: true,\n plugins: {\n tooltip: {\n mode: 'index',\n intersect: false,\n caretSize: 1,\n caretPadding: 12,\n displayColors: true,\n backgroundColor: '#ebebeb',\n padding: 8,\n titleColor: 'black',\n bodyColor: 'black',\n titleFont: {\n weight: 'normal',\n size: 12,\n },\n bodyFont: {\n size: 16,\n weight: 'bold',\n },\n callbacks: {},\n },\n // marker: {\n // line: {\n // color: 'red',\n // },\n // },\n datalabels: {\n color: '#ffffff',\n borderRadius: 3,\n font: {\n lineHeight: 1,\n size: 12,\n },\n padding: {\n top: 6,\n left: 5,\n right: 5,\n bottom: 5,\n },\n offset: 5,\n },\n },\n },\n },\n};\n\nexport const TEST_CHART_ANNOTATIONS_CONFIG: Omit<AnnotationTypeRegistry, 'label' | 'polygon'> = {\n line: {\n borderDash: [6, 3],\n },\n ellipse: {\n borderDash: [3, 6],\n },\n box: {},\n point: {\n backgroundColor: 'initial',\n },\n};\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ResizeObserverFactory } from '@kirbydesign/designsystem/shared';\nimport { ChartOptions } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\n\nimport { ChartDataset, ChartHighlightedElements, ChartLabel, ChartType } from '../';\nimport { ChartJSService } from '../chart-js-service/';\n\n@Component({\n selector: 'kirby-base-chart',\n templateUrl: './base-chart.component.html',\n styleUrls: ['./base-chart.component.scss'],\n})\nexport class BaseChartComponent implements AfterViewInit, OnChanges {\n @Input() type: ChartType;\n @Input() data: ChartDataset[] | number[];\n\n @Input() labels: ChartLabel[];\n\n @Input() customOptions?: ChartOptions;\n @Input() annotations?: AnnotationOptions[];\n @Input() highlightedElements?: ChartHighlightedElements;\n\n @HostBinding('style.--kirby-chart-height')\n _height: string;\n @Input() set height(value: string | number) {\n this._height = typeof value === 'number' ? `${value}px` : value;\n }\n\n @ViewChild('chartCanvas')\n canvasElement: ElementRef<HTMLCanvasElement>;\n\n private chartHasBeenRendered: boolean = false;\n\n constructor(protected chartJSService: ChartJSService) {}\n\n ngAfterViewInit() {\n /* \n A chart is not rendered until it has both a height and a width. \n If ChartComponent is slotted in an ionic component it will\n not have any height or width on afterViewInit. This will cause \n the animation to not be played on first draw. \n */\n const canvasElement = this.canvasElement.nativeElement;\n this.whenElementHasHeightAndWidth(canvasElement).then(() => this.renderChart());\n }\n\n private whenElementHasHeightAndWidth(element: HTMLElement): Promise<void> {\n const rectIs2D = ({ width, height }) => height > 0 && width > 0;\n\n return new Promise((resolve) => {\n const initialClientRect = element.getBoundingClientRect();\n if (rectIs2D(initialClientRect)) resolve();\n\n const resizeObserver = new ResizeObserverFactory().create(([resizeObserverEntry]) => {\n if (rectIs2D(resizeObserverEntry.contentRect)) {\n resizeObserver.unobserve(element);\n resolve();\n }\n });\n\n resizeObserver.observe(element);\n });\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n if (this.chartHasBeenRendered) {\n let shouldRedrawChart = false;\n\n const keyUpdateFnPairs = {\n data: () => this.updateData(),\n labels: () => this.updateLabels(),\n type: () => this.updateType(),\n customOptions: () => this.updateCustomOptions(),\n annotations: () => this.updateAnnotations(),\n highlightedElements: () => this.updateHighlightedElements(),\n };\n\n Object.entries(simpleChanges).forEach(([key]) => {\n if (simpleChanges[key].firstChange || !keyUpdateFnPairs[key]) return;\n shouldRedrawChart = true;\n keyUpdateFnPairs[key]();\n });\n\n if (shouldRedrawChart) this.redrawChart();\n }\n }\n\n protected renderChart(additionalArgs?: any) {\n this.chartHasBeenRendered = true;\n this.chartJSService.renderChart({\n targetElement: this.canvasElement,\n type: this.type,\n data: this.data,\n labels: this.labels,\n customOptions: this.customOptions,\n annotations: this.annotations,\n highlightedElements: this.highlightedElements,\n ...additionalArgs,\n });\n }\n\n private updateData() {\n this.chartJSService.updateData(this.data);\n }\n\n private updateLabels() {\n this.chartJSService.updateLabels(this.labels);\n }\n\n private updateType() {\n this.chartJSService.updateType(this.type, this.customOptions);\n }\n\n private updateCustomOptions() {\n this.chartJSService.updateOptions(this.customOptions, this.type);\n }\n\n private updateAnnotations() {\n this.chartJSService.updateAnnotations(this.annotations);\n }\n\n private updateHighlightedElements() {\n this.chartJSService.updateHighlightedElements(this.highlightedElements);\n }\n\n private redrawChart() {\n this.chartJSService.redrawChart();\n }\n\n ngOnDestroy() {\n this.chartJSService.destroyChart();\n }\n}\n","<div class=\"chart-container\">\n <canvas #chartCanvas>\n <!-- Slotted content makes it possible to insert fallback content for screen readers \n https://www.chartjs.org/docs/latest/general/accessibility.html-->\n <ng-content></ng-content>\n </canvas>\n</div>\n","import { Component, Input } from '@angular/core';\n\nimport { BaseChartComponent, ChartJSService, ChartType } from '../shared';\n\n@Component({\n selector: 'kirby-chart',\n templateUrl: '../shared/base-chart/base-chart.component.html',\n styleUrls: ['../shared/base-chart/base-chart.component.scss'],\n providers: [ChartJSService],\n})\nexport class ChartComponent extends BaseChartComponent {\n @Input() type: Exclude<ChartType, 'stock'> = 'column';\n}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { mergeDeepAll } from '@kirbydesign/designsystem/helpers';\nimport { ChartDataset, ChartOptions, ScatterDataPoint } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\nimport { toDate } from 'date-fns';\n\nimport {\n ChartDataLabelOptions,\n ChartHighlightedElements,\n ChartJSService,\n ChartLabel,\n ChartLocale,\n ChartType,\n} from '../shared';\n\n@Injectable()\nexport class StockChartJSService extends ChartJSService {\n static STOCK_CHART_LOCALE_DEFAULT: ChartLocale = 'en-US';\n\n protected readonly chartType = 'stock';\n private dataLabelOptions: ChartDataLabelOptions;\n\n public renderChart(args: {\n targetElement: ElementRef<HTMLCanvasElement>;\n type: ChartType;\n data: ChartDataset[] | number[];\n labels?: ChartLabel[];\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n dataLabelOptions?: ChartDataLabelOptions;\n highlightedElements?: ChartHighlightedElements;\n }): void {\n const { dataLabelOptions, ...superArgs } = args;\n this.dataLabelOptions = dataLabelOptions || null;\n super.renderChart(superArgs);\n }\n\n private get locale(): ChartLocale {\n return this.dataLabelOptions?.locale || StockChartJSService.STOCK_CHART_LOCALE_DEFAULT;\n }\n\n protected getDefaultLabels(datasets: ChartDataset[]) {\n const largestDataset = datasets.reduce((previousDataset, currentDataset) =>\n previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset\n );\n return largestDataset.data.map((point: ScatterDataPoint) =>\n toDate(point.x).toLocaleDateString(this.locale, {\n month: 'short',\n day: 'numeric',\n })\n );\n }\n\n protected createOptionsObject(args: {\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n }): ChartOptions {\n const superOptions = super.createOptionsObject(args);\n const stockOptions: ChartOptions = this.chartConfigService.getStockChartOptions(\n this.dataLabelOptions,\n this.locale\n );\n\n return mergeDeepAll(stockOptions, superOptions);\n }\n\n protected createDatasets(data: ChartDataset[] | number[]) {\n let datasets = super.createDatasets(data);\n /* \n Hacky solution. Should be fixed in this issue:\n https://github.com/kirbydesign/designsystem/issues/1967 \n */\n // We need to modify the datasets in order to add datalabels.\n if (\n this.dataLabelOptions?.showCurrent ||\n this.dataLabelOptions?.showMax ||\n this.dataLabelOptions?.showMin\n ) {\n datasets = this.addDataLabelsData(datasets);\n }\n\n return datasets.map((dataset: any) => ({\n ...dataset,\n kirbyOptions: { ...dataset.kirbyOptions, isStockChart: true },\n }));\n }\n\n /**\n * Decorate ChartDataset with properties to allow for datalabels.\n *\n * @param data\n * @returns ChartDataset[]\n */\n private addDataLabelsData(data: ChartDataset[]): ChartDataset[] {\n const decorateDataPoint = (\n set: ChartDataset,\n axis: 'x' | 'y',\n direction: 'high' | 'low',\n position: 'bottom' | 'top' | 'left' | 'right'\n ): void => {\n const { value, pointer } = this.locateValueIndexInDataset(set, axis, direction);\n set.data[pointer] = {\n ...(set.data[pointer] as ScatterDataPoint),\n datalabel: {\n value: value + (this.dataLabelOptions.valueSuffix || ''),\n position,\n },\n } as ScatterDataPoint;\n };\n\n data.map((set) => {\n if (this.dataLabelOptions.showMin) {\n decorateDataPoint(set, 'y', 'low', 'bottom');\n }\n if (this.dataLabelOptions.showMax) {\n decorateDataPoint(set, 'y', 'high', 'top');\n }\n if (this.dataLabelOptions.showCurrent) {\n decorateDataPoint(set, 'x', 'high', 'right');\n }\n });\n return data;\n }\n\n private locateValueIndexInDataset(\n dataset: ChartDataset,\n axis: string,\n direction: 'low' | 'high'\n ): { value: number; pointer: number } {\n let pointer: number;\n let value: number;\n dataset.data.forEach((datapoint, index) => {\n if (direction == 'low' && (!value || datapoint[axis] < value)) {\n value = datapoint['y'];\n pointer = index;\n }\n if (direction == 'high' && (!value || datapoint[axis] > value)) {\n value = datapoint['y'];\n pointer = index;\n }\n });\n return { value, pointer };\n }\n}\n","import { Component, Input } from '@angular/core';\n\nimport { BaseChartComponent, ChartDataLabelOptions, ChartJSService } from '../shared';\n\nimport { StockChartJSService } from './stock-chart-js.service';\n\n@Component({\n selector: 'kirby-stock-chart',\n providers: [{ provide: ChartJSService, useClass: StockChartJSService }],\n templateUrl: '../shared/base-chart/base-chart.component.html',\n styleUrls: ['../shared/base-chart/base-chart.component.scss'],\n})\nexport class StockChartComponent extends BaseChartComponent {\n @Input() dataLabelOptions?: ChartDataLabelOptions;\n\n readonly type = 'stock';\n\n protected renderChart() {\n super.renderChart({ dataLabelOptions: this.dataLabelOptions });\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ChartComponent } from './chart';\nimport { ChartConfigService } from './shared';\nimport { StockChartComponent } from './stock-chart';\n\n@NgModule({\n declarations: [ChartComponent, StockChartComponent],\n exports: [ChartComponent, StockChartComponent],\n providers: [ChartConfigService],\n})\nexport class ChartsModule {}\n","import { ChartConfiguration, ChartType, TooltipOptions } from 'chart.js';\n\nexport class ChartBaseConfig {\n public static baseConfig: ChartConfiguration<ChartType>;\n public static tooltipPlugin: Partial<TooltipOptions<'line'>>;\n public static registerPlugins = () => {};\n}\n","import { ColorHelper } from '@kirbydesign/designsystem/helpers';\nimport { ChartConfiguration, ChartType } from 'chart.js';\nimport { ChartLocale } from '../../shared';\n\nimport { ChartBaseConfig } from '../chart-base-config';\n\nconst { getThemeColorHexString } = ColorHelper;\n\n/**\n * This class is still experimental. Feel free to use it, but please note that it is still subject to breaking changes.\n */\nexport class BarChartConfig extends ChartBaseConfig {\n private static BAR_CHART_LOCALE_DEFAULT: ChartLocale = 'en-US';\n\n public static baseConfig: ChartConfiguration<ChartType> = {\n type: 'bar',\n data: {\n datasets: [],\n },\n options: {\n datasets: {\n bar: {\n barPercentage: 0.6,\n },\n line: {\n spanGaps: true,\n },\n },\n indexAxis: 'x',\n scales: {\n y: {\n grid: {\n drawBorder: false,\n },\n },\n x: {},\n },\n elements: {\n point: {\n radius: 0,\n },\n line: {\n borderColor: getThemeColorHexString('medium'),\n },\n },\n },\n };\n}\n","import { ColorHelper, DesignTokenHelper } from '@kirbydesign/designsystem/helpers';\nimport { ScatterDataPoint } from 'chart.js';\nimport { Context } from 'chartjs-plugin-datalabels/types/context';\nimport { Align, Options } from 'chartjs-plugin-datalabels/types/options';\n\nconst { getThemeColorHexString } = ColorHelper;\nconst { fontSize } = DesignTokenHelper;\n\nexport const getDataLabelPosition = (data: ScatterDataPoint[], dataIndex: number): Align | null => {\n const scatterPointDataYvalues: number[] = (data as ScatterDataPoint[]).map(\n (scatterDatapoint) => scatterDatapoint.y\n );\n\n const minValue = Math.min(...scatterPointDataYvalues);\n const minValueIndex = scatterPointDataYvalues.indexOf(minValue);\n\n if (dataIndex === minValueIndex) {\n return 'bottom';\n }\n\n const maxValue = Math.max(...scatterPointDataYvalues);\n const maxValueIndex = scatterPointDataYvalues.indexOf(maxValue);\n\n if (dataIndex === maxValueIndex) {\n return 'top';\n }\n\n return null;\n};\n\nexport const dataLabelsPluginConfig: Partial<Options> = {\n backgroundColor: '#005c3c',\n color: getThemeColorHexString('white'),\n borderRadius: 3,\n font: {\n lineHeight: 1,\n size: parseInt(fontSize('xs')),\n },\n padding: {\n top: 6,\n left: 5,\n right: 5,\n bottom: 5,\n },\n offset: 5,\n align: (context: Context): Align =>\n getDataLabelPosition(context.dataset.data as ScatterDataPoint[], context.dataIndex),\n display: (context: Context): boolean => {\n return showDataLabel(context);\n },\n formatter: (dataPoint: ScatterDataPoint): string => dataPoint.y.toString(),\n};\n\nfunction showDataLabel(context: Context) {\n const data: ScatterDataPoint[] = [...context.dataset.data] as ScatterDataPoint[];\n const yValues = data.map((dataPoints) => dataPoints.y);\n\n const minValue = Math.min(...yValues);\n const minValueIndex = yValues.indexOf(minValue);\n\n const maxValue = Math.max(...yValues);\n const maxValueIndex = yValues.indexOf(maxValue);\n\n return context.dataIndex === maxValueIndex || context.dataIndex === minValueIndex;\n}\n","import { VerticalLinePlugin } from './vertical-line-plugin.model';\n\nconst verticalLineId = 'verticalLine';\n\nexport const getVerticalLinePluginConfig: VerticalLinePlugin = {\n id: verticalLineId,\n drawTime: 'beforeDraw',\n defaults: {\n width: 1,\n color: 'black',\n },\n afterInit: (chart) => {\n chart[verticalLineId] = {\n x: 0,\n y: 0,\n };\n },\n afterEvent: (chart, args) => {\n const { inChartArea } = args;\n const { x, y } = args.event;\n\n chart[verticalLineId] = { x, y, draw: inChartArea };\n chart.draw();\n },\n beforeDraw: (chart, _, options) => {\n const { ctx } = chart;\n const { top, bottom } = chart.chartArea;\n const { x, draw } = chart[verticalLineId];\n if (!draw) return;\n\n ctx.save();\n\n ctx.beginPath();\n ctx.lineWidth = options.width as number;\n ctx.strokeStyle = options.color as string;\n\n ctx.moveTo(x, bottom);\n ctx.lineTo(x, top);\n ctx.stroke();\n\n ctx.restore();\n },\n};\n","import { ColorHelper, DesignTokenHelper } from '@kirbydesign/designsystem/helpers';\nimport {\n BarController,\n BarElement,\n CategoryScale,\n Chart,\n ChartConfiguration,\n ChartType,\n ChartTypeRegistry,\n Filler,\n LinearScale,\n LineController,\n LineElement,\n PointElement,\n TimeScale,\n Tooltip,\n TooltipCallbacks,\n TooltipItem,\n TooltipLabelStyle,\n TooltipOptions,\n} from 'chart.js';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport { ChartLocale } from '../../shared';\nimport { ChartBaseConfig } from '../chart-base-config';\n\nimport {\n dataLabelsPluginConfig,\n getDataLabelPosition,\n} from './data-label-position/data-label-position';\nimport { getVerticalLinePluginConfig } from './vertical-line-plugin/vertical-line-plugin';\n\nconst { getThemeColorHexString, getThemeColorRgbString } = ColorHelper;\nconst { fontSize } = DesignTokenHelper;\n\n/**\n * This class is still experimental. Feel free to use it, but please note that it is still subject to breaking changes.\n */\nexport class StockChartConfig extends ChartBaseConfig {\n private static STOCK_CHART_LOCALE_DEFAULT: ChartLocale = 'en-US';\n\n private static scales = [CategoryScale, LinearScale, TimeScale];\n private static elements = [BarElement, LineElement, PointElement];\n private static controllers = [BarController, LineController];\n private static plugins = [annotationPlugin, Filler, Tooltip];\n private static registeredElements = [\n ...this.scales,\n ...this.controllers,\n ...this.elements,\n ...this.plugins,\n ];\n\n private static pluginsRegistered = false;\n\n public static registerPlugins() {\n if (StockChartConfig.pluginsRegistered) {\n return;\n }\n\n this.registeredElements.forEach((scale) => {\n Chart.register(scale);\n });\n StockChartConfig.pluginsRegistered = true;\n }\n\n public static baseConfig: ChartConfiguration<ChartType> = {\n type: 'line',\n data: {\n datasets: [],\n },\n options: {\n responsive: true,\n animation: {\n duration: 0,\n },\n layout: {\n padding: {\n left: 20,\n right: 20,\n top: 30,\n bottom: 0,\n },\n },\n backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n scales: {\n x: {\n adapters: {\n date: {\n locale: StockChartConfig.STOCK_CHART_LOCALE_DEFAULT,\n },\n },\n grid: {\n lineWidth: 0,\n },\n ticks: {\n maxRotation: 0,\n autoSkipPadding: 120,\n font: {\n size: parseInt(fontSize('xs')),\n },\n callback(tickValue) {\n const dateInMiliseconds = parseInt(this.getLabelForValue(parseInt(tickValue + '')));\n\n return getChartStockShortDate(\n dateInMiliseconds,\n StockChartConfig.STOCK_CHART_LOCALE_DEFAULT\n );\n },\n },\n },\n y: {\n position: 'right',\n display: true,\n grid: {\n drawBorder: false,\n },\n ticks: {\n display: true,\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0, // Smooth curve (0 = no smoothing)\n borderWidth: 2,\n },\n point: {\n hitRadius: 20,\n radius: 0,\n hoverRadius: 0,\n hoverBorderWidth: 0,\n },\n },\n normalized: true,\n plugins: {},\n },\n };\n\n public static tooltipPlugin: Partial<TooltipOptions<'line'>> = {\n padding: 10,\n enabled: true,\n mode: 'index',\n intersect: false,\n backgroundColor: getThemeColorHexString('semi-light'),\n titleColor: getThemeColorHexString('semi-light-contrast'),\n bodyColor: getThemeColorHexString('semi-light-contrast'),\n caretSize: 0,\n bodySpacing: 5,\n titleSpacing: 5,\n borderColor: 'transparent',\n callbacks: {\n title: (toolTipItem) => {\n const dateInMiliseconds = parseInt(toolTipItem[0].label); // TODO: Right now we use index === 0. I expect multiple datasets will change this\n return getChartStockShortDateTime(\n dateInMiliseconds,\n StockChartConfig.STOCK_CHART_LOCALE_DEFAULT\n );\n },\n label: (context) => context.parsed.y.toString(),\n labelColor: (tooltipItem: TooltipItem<keyof ChartTypeRegistry>) => {\n return {\n backgroundColor: tooltipItem.dataset.borderColor,\n borderColor: getThemeColorHexString('semi-light'),\n borderWidth: 2, // This value must be exactly 2. If it is less, a white \"border\" will appear, if greater than, a shadow around the box will be shown.\n // An issue has been created, requesting a test to check this value doesn´t change: https://github.com/kirbydesign/designsystem/issues/2578\n } as TooltipLabelStyle;\n },\n } as TooltipCallbacks<'line'>,\n };\n\n public static dataLabelsPluginConfig = dataLabelsPluginConfig;\n\n public static verticalLinePluginConfig = getVerticalLinePluginConfig;\n\n public static getDataLabelPosition = getDataLabelPosition;\n}\n\nconst getChartStockShortDate = (dateInMiliseconds: number, locale: ChartLocale) => {\n const newDate = new Date(dateInMiliseconds);\n\n return newDate.toLocaleDateString(locale, {\n day: 'numeric',\n month: 'short',\n });\n};\n\nconst getChartStockShortDateTime = (dateInMiliseconds: number, locale: ChartLocale) => {\n const newDate = new Date(dateInMiliseconds);\n\n return newDate.toLocaleDateString(locale, {\n day: 'numeric',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n });\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["getThemeColorHexString","fontSize","getThemeColorRgbString","i1.ChartConfigService","i1.ChartJSService"],"mappings":"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"}
@@ -7,7 +7,12 @@ import * as i2 from '@angular/common';
7
7
  import { CommonModule } from '@angular/common';
8
8
  import { ThemeColorDirective } from '@kirbydesign/designsystem/shared';
9
9
 
10
+ const CUSTOM_ICON_NAME_DEPRECATION_WARNING = 'Deprecation warning: The customIconName input property of "kirby-empty-state" is deprecated and will be removed in v10. The iconName input property already supports custom icons registered via the iconRegistryService.';
10
11
  class EmptyStateComponent {
12
+ set customIconName(customName) {
13
+ this.iconName = customName;
14
+ console.warn(CUSTOM_ICON_NAME_DEPRECATION_WARNING);
15
+ }
11
16
  ngAfterContentInit() {
12
17
  this.enforceAttentionLevelRules();
13
18
  /* setTimeout prevents ExpressionChangedAfterItHasBeenCheckedError when changing attention
@@ -31,11 +36,11 @@ class EmptyStateComponent {
31
36
  });
32
37
  }
33
38
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: EmptyStateComponent, selector: "kirby-empty-state", inputs: { iconName: "iconName", customIconName: "customIconName", title: "title", subtitle: "subtitle" }, queries: [{ propertyName: "slottedButtons", predicate: ButtonComponent }], ngImport: i0, template: "<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" [customName]=\"customIconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n", styles: ["article{max-width:330px;margin:auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.icon-outline{width:96px;height:96px;margin-left:auto;margin-right:auto;margin-bottom:24px;display:flex;flex-direction:column;justify-content:center;border:4px solid var(--kirby-medium);border-radius:50%}kirby-icon{color:var(--kirby-medium)}h3.title{margin-bottom:8px}p.subtitle{margin-bottom:24px;white-space:pre-wrap}:host(.primary) .icon-outline{border-color:var(--kirby-primary)}:host(.primary) kirby-icon{color:var(--kirby-primary)}:host(.secondary) .icon-outline{border-color:var(--kirby-secondary)}:host(.secondary) kirby-icon{color:var(--kirby-secondary)}:host(.tertiary) .icon-outline{border-color:var(--kirby-tertiary)}:host(.tertiary) kirby-icon{color:var(--kirby-tertiary)}:host(.success) .icon-outline{border-color:var(--kirby-success)}:host(.success) kirby-icon{color:var(--kirby-success)}:host(.warning) .icon-outline{border-color:var(--kirby-warning)}:host(.warning) kirby-icon{color:var(--kirby-warning)}:host(.danger) .icon-outline{border-color:var(--kirby-danger)}:host(.danger) kirby-icon{color:var(--kirby-danger)}:host(.white-overlay) .icon-outline{border-color:var(--kirby-white-overlay)}:host(.white-overlay) kirby-icon{color:var(--kirby-white-overlay)}:host(.light) .icon-outline{border-color:var(--kirby-light)}:host(.light) kirby-icon{color:var(--kirby-light)}:host(.medium) .icon-outline{border-color:var(--kirby-medium)}:host(.medium) kirby-icon{color:var(--kirby-medium)}:host(.dark) .icon-outline{border-color:var(--kirby-dark)}:host(.dark) kirby-icon{color:var(--kirby-dark)}:host(.dark-overlay) .icon-outline{border-color:var(--kirby-dark-overlay)}:host(.dark-overlay) kirby-icon{color:var(--kirby-dark-overlay)}\n"], dependencies: [{ kind: "component", type: i1.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: EmptyStateComponent, selector: "kirby-empty-state", inputs: { iconName: "iconName", customIconName: "customIconName", title: "title", subtitle: "subtitle" }, queries: [{ propertyName: "slottedButtons", predicate: ButtonComponent }], ngImport: i0, template: "<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n", styles: ["article{max-width:330px;margin:auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.icon-outline{width:96px;height:96px;margin-left:auto;margin-right:auto;margin-bottom:24px;display:flex;flex-direction:column;justify-content:center;border:4px solid var(--kirby-medium);border-radius:50%}kirby-icon{color:var(--kirby-medium)}h3.title{margin-bottom:8px}p.subtitle{margin-bottom:24px;white-space:pre-wrap}:host(.primary) .icon-outline{border-color:var(--kirby-primary)}:host(.primary) kirby-icon{color:var(--kirby-primary)}:host(.secondary) .icon-outline{border-color:var(--kirby-secondary)}:host(.secondary) kirby-icon{color:var(--kirby-secondary)}:host(.tertiary) .icon-outline{border-color:var(--kirby-tertiary)}:host(.tertiary) kirby-icon{color:var(--kirby-tertiary)}:host(.success) .icon-outline{border-color:var(--kirby-success)}:host(.success) kirby-icon{color:var(--kirby-success)}:host(.warning) .icon-outline{border-color:var(--kirby-warning)}:host(.warning) kirby-icon{color:var(--kirby-warning)}:host(.danger) .icon-outline{border-color:var(--kirby-danger)}:host(.danger) kirby-icon{color:var(--kirby-danger)}:host(.white-overlay) .icon-outline{border-color:var(--kirby-white-overlay)}:host(.white-overlay) kirby-icon{color:var(--kirby-white-overlay)}:host(.light) .icon-outline{border-color:var(--kirby-light)}:host(.light) kirby-icon{color:var(--kirby-light)}:host(.medium) .icon-outline{border-color:var(--kirby-medium)}:host(.medium) kirby-icon{color:var(--kirby-medium)}:host(.dark) .icon-outline{border-color:var(--kirby-dark)}:host(.dark) kirby-icon{color:var(--kirby-dark)}:host(.dark-overlay) .icon-outline{border-color:var(--kirby-dark-overlay)}:host(.dark-overlay) kirby-icon{color:var(--kirby-dark-overlay)}\n"], dependencies: [{ kind: "component", type: i1.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
40
  }
36
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: EmptyStateComponent, decorators: [{
37
42
  type: Component,
38
- args: [{ selector: 'kirby-empty-state', changeDetection: ChangeDetectionStrategy.OnPush, template: "<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" [customName]=\"customIconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n", styles: ["article{max-width:330px;margin:auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.icon-outline{width:96px;height:96px;margin-left:auto;margin-right:auto;margin-bottom:24px;display:flex;flex-direction:column;justify-content:center;border:4px solid var(--kirby-medium);border-radius:50%}kirby-icon{color:var(--kirby-medium)}h3.title{margin-bottom:8px}p.subtitle{margin-bottom:24px;white-space:pre-wrap}:host(.primary) .icon-outline{border-color:var(--kirby-primary)}:host(.primary) kirby-icon{color:var(--kirby-primary)}:host(.secondary) .icon-outline{border-color:var(--kirby-secondary)}:host(.secondary) kirby-icon{color:var(--kirby-secondary)}:host(.tertiary) .icon-outline{border-color:var(--kirby-tertiary)}:host(.tertiary) kirby-icon{color:var(--kirby-tertiary)}:host(.success) .icon-outline{border-color:var(--kirby-success)}:host(.success) kirby-icon{color:var(--kirby-success)}:host(.warning) .icon-outline{border-color:var(--kirby-warning)}:host(.warning) kirby-icon{color:var(--kirby-warning)}:host(.danger) .icon-outline{border-color:var(--kirby-danger)}:host(.danger) kirby-icon{color:var(--kirby-danger)}:host(.white-overlay) .icon-outline{border-color:var(--kirby-white-overlay)}:host(.white-overlay) kirby-icon{color:var(--kirby-white-overlay)}:host(.light) .icon-outline{border-color:var(--kirby-light)}:host(.light) kirby-icon{color:var(--kirby-light)}:host(.medium) .icon-outline{border-color:var(--kirby-medium)}:host(.medium) kirby-icon{color:var(--kirby-medium)}:host(.dark) .icon-outline{border-color:var(--kirby-dark)}:host(.dark) kirby-icon{color:var(--kirby-dark)}:host(.dark-overlay) .icon-outline{border-color:var(--kirby-dark-overlay)}:host(.dark-overlay) kirby-icon{color:var(--kirby-dark-overlay)}\n"] }]
43
+ args: [{ selector: 'kirby-empty-state', changeDetection: ChangeDetectionStrategy.OnPush, template: "<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n", styles: ["article{max-width:330px;margin:auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.icon-outline{width:96px;height:96px;margin-left:auto;margin-right:auto;margin-bottom:24px;display:flex;flex-direction:column;justify-content:center;border:4px solid var(--kirby-medium);border-radius:50%}kirby-icon{color:var(--kirby-medium)}h3.title{margin-bottom:8px}p.subtitle{margin-bottom:24px;white-space:pre-wrap}:host(.primary) .icon-outline{border-color:var(--kirby-primary)}:host(.primary) kirby-icon{color:var(--kirby-primary)}:host(.secondary) .icon-outline{border-color:var(--kirby-secondary)}:host(.secondary) kirby-icon{color:var(--kirby-secondary)}:host(.tertiary) .icon-outline{border-color:var(--kirby-tertiary)}:host(.tertiary) kirby-icon{color:var(--kirby-tertiary)}:host(.success) .icon-outline{border-color:var(--kirby-success)}:host(.success) kirby-icon{color:var(--kirby-success)}:host(.warning) .icon-outline{border-color:var(--kirby-warning)}:host(.warning) kirby-icon{color:var(--kirby-warning)}:host(.danger) .icon-outline{border-color:var(--kirby-danger)}:host(.danger) kirby-icon{color:var(--kirby-danger)}:host(.white-overlay) .icon-outline{border-color:var(--kirby-white-overlay)}:host(.white-overlay) kirby-icon{color:var(--kirby-white-overlay)}:host(.light) .icon-outline{border-color:var(--kirby-light)}:host(.light) kirby-icon{color:var(--kirby-light)}:host(.medium) .icon-outline{border-color:var(--kirby-medium)}:host(.medium) kirby-icon{color:var(--kirby-medium)}:host(.dark) .icon-outline{border-color:var(--kirby-dark)}:host(.dark) kirby-icon{color:var(--kirby-dark)}:host(.dark-overlay) .icon-outline{border-color:var(--kirby-dark-overlay)}:host(.dark-overlay) kirby-icon{color:var(--kirby-dark-overlay)}\n"] }]
39
44
  }], propDecorators: { iconName: [{
40
45
  type: Input
41
46
  }], customIconName: [{
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-empty-state.mjs","sources":["../../../../libs/designsystem/empty-state/src/empty-state.component.ts","../../../../libs/designsystem/empty-state/src/empty-state.component.html","../../../../libs/designsystem/empty-state/src/empty-state.module.ts","../../../../libs/designsystem/empty-state/src/kirbydesign-designsystem-empty-state.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n} from '@angular/core';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\n\n@Component({\n selector: 'kirby-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateComponent implements AfterContentInit {\n @Input() iconName: string;\n @Input() customIconName: string;\n @Input() title: string;\n @Input() subtitle: string;\n\n @ContentChildren(ButtonComponent)\n private slottedButtons: QueryList<ButtonComponent>;\n\n ngAfterContentInit() {\n this.enforceAttentionLevelRules();\n\n /* setTimeout prevents ExpressionChangedAfterItHasBeenCheckedError when changing attention \n levels of slotted buttons in this.enforceAttentionLevelRules */\n this.slottedButtons.changes.subscribe(() => {\n setTimeout(() => this.enforceAttentionLevelRules());\n });\n }\n\n /** Enforces that all slotted buttons will have their attention\n * level set to 3, except the first button if it has\n * level 1.\n */\n private enforceAttentionLevelRules() {\n this.slottedButtons.forEach((button, index) => {\n if (index === 0 && (button.attentionLevel === undefined || button.attentionLevel === '1')) {\n return;\n }\n\n if (button.attentionLevel !== '3') {\n button.attentionLevel = '3';\n }\n });\n }\n}\n","<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" [customName]=\"customIconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\nimport { EmptyStateComponent } from './empty-state.component';\n\nconst declarations = [EmptyStateComponent];\n\n@NgModule({\n imports: [IconModule, CommonModule, ThemeColorDirective],\n declarations: [...declarations],\n exports: [...declarations, ThemeColorDirective],\n})\nexport class EmptyStateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-empty-state.mjs","sources":["../../../../libs/designsystem/empty-state/src/empty-state.component.ts","../../../../libs/designsystem/empty-state/src/empty-state.component.html","../../../../libs/designsystem/empty-state/src/empty-state.module.ts","../../../../libs/designsystem/empty-state/src/kirbydesign-designsystem-empty-state.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n} from '@angular/core';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\n\nconst CUSTOM_ICON_NAME_DEPRECATION_WARNING =\n 'Deprecation warning: The customIconName input property of \"kirby-empty-state\" is deprecated and will be removed in v10. The iconName input property already supports custom icons registered via the iconRegistryService.';\n\n@Component({\n selector: 'kirby-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateComponent implements AfterContentInit {\n @Input() iconName: string;\n @Input() set customIconName(customName: string) {\n this.iconName = customName;\n console.warn(CUSTOM_ICON_NAME_DEPRECATION_WARNING);\n }\n @Input() title: string;\n @Input() subtitle: string;\n\n @ContentChildren(ButtonComponent)\n private slottedButtons: QueryList<ButtonComponent>;\n\n ngAfterContentInit() {\n this.enforceAttentionLevelRules();\n\n /* setTimeout prevents ExpressionChangedAfterItHasBeenCheckedError when changing attention \n levels of slotted buttons in this.enforceAttentionLevelRules */\n this.slottedButtons.changes.subscribe(() => {\n setTimeout(() => this.enforceAttentionLevelRules());\n });\n }\n\n /** Enforces that all slotted buttons will have their attention\n * level set to 3, except the first button if it has\n * level 1.\n */\n private enforceAttentionLevelRules() {\n this.slottedButtons.forEach((button, index) => {\n if (index === 0 && (button.attentionLevel === undefined || button.attentionLevel === '1')) {\n return;\n }\n\n if (button.attentionLevel !== '3') {\n button.attentionLevel = '3';\n }\n });\n }\n}\n","<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\nimport { EmptyStateComponent } from './empty-state.component';\n\nconst declarations = [EmptyStateComponent];\n\n@NgModule({\n imports: [IconModule, CommonModule, ThemeColorDirective],\n declarations: [...declarations],\n exports: [...declarations, ThemeColorDirective],\n})\nexport class EmptyStateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { RadioGroupComponent } from '@kirbydesign/designsystem/radio';
6
6
  import * as i3 from '@kirbydesign/designsystem/shared';
7
7
  import * as i2 from '@kirbydesign/designsystem/types';
8
8
  import * as i4 from '@angular/common';
9
- import { FormatWidth, getLocaleDateFormat, CommonModule, NumberSymbol, getLocaleNumberSymbol } from '@angular/common';
9
+ import { getLocaleDateFormat, FormatWidth, CommonModule, getLocaleNumberSymbol, NumberSymbol } from '@angular/common';
10
10
  import 'inputmask/lib/extensions/inputmask.date.extensions';
11
11
  import Inputmask from 'inputmask/lib/inputmask';
12
12
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, EventEmitter, Component, Input, Output, ChangeDetectionStrategy, ViewChild, Optional, InjectionToken, ElementRef, Injector, RendererStyleFlags2, HostBinding, ViewChildren, HostListener, Inject } from '@angular/core';
3
3
  import * as i1 from '@angular/router';
4
4
  import { NavigationEnd, RouterOutlet, RouterModule, ROUTES } from '@angular/router';
5
- import { firstValueFrom, EMPTY, of, Subject, merge, first as first$1, fromEvent, takeUntil as takeUntil$1 } from 'rxjs';
5
+ import { firstValueFrom, EMPTY, of, Subject, merge, fromEvent, first as first$1, takeUntil as takeUntil$1 } from 'rxjs';
6
6
  import { filter, startWith, map, pairwise, debounceTime, first, takeUntil } from 'rxjs/operators';
7
7
  import * as i2 from '@angular/common';
8
8
  import { CommonModule } from '@angular/common';
@@ -5,7 +5,7 @@ export declare class ModalFooterComponent extends ModalElementComponent {
5
5
  snapToKeyboard: boolean;
6
6
  type: 'inline' | 'fixed';
7
7
  themeColor: 'white' | 'light';
8
- get _cssClass(): ("light" | "white" | "inline" | "fixed")[];
8
+ get _cssClass(): ("light" | "white" | "fixed" | "inline")[];
9
9
  constructor(elementRef: ElementRef<HTMLElement>, modalElementsAdvertiser: ModalElementsAdvertiser);
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<ModalFooterComponent, [null, { optional: true; }]>;
11
11
  static ɵcmp: i0.ɵɵComponentDeclaration<ModalFooterComponent, "kirby-modal-footer", never, { "snapToKeyboard": { "alias": "snapToKeyboard"; "required": false; }; "type": { "alias": "type"; "required": false; }; "themeColor": { "alias": "themeColor"; "required": false; }; }, {}, never, ["*"], true, never>;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@kirbydesign/designsystem",
3
- "version": "9.2.0-sb.0",
3
+ "version": "9.2.1",
4
4
  "dependencies": {
5
5
  "@floating-ui/dom": "^1.1.0",
6
6
  "@angular/cdk": "^17.0.0",
7
7
  "@fontsource/roboto": "4.2.1",
8
8
  "@ionic/angular": "7.3.3",
9
- "@kirbydesign/core": "0.0.54",
9
+ "@kirbydesign/core": "0.0.55",
10
10
  "inputmask": "5.0.5",
11
11
  "tslib": "^2.3.0"
12
12
  },
@@ -49,23 +49,17 @@
49
49
  "esm": "./esm2022/action-group/kirbydesign-designsystem-action-group.mjs",
50
50
  "default": "./fesm2022/kirbydesign-designsystem-action-group.mjs"
51
51
  },
52
- "./badge": {
53
- "types": "./badge/index.d.ts",
54
- "esm2022": "./esm2022/badge/kirbydesign-designsystem-badge.mjs",
55
- "esm": "./esm2022/badge/kirbydesign-designsystem-badge.mjs",
56
- "default": "./fesm2022/kirbydesign-designsystem-badge.mjs"
57
- },
58
52
  "./avatar": {
59
53
  "types": "./avatar/index.d.ts",
60
54
  "esm2022": "./esm2022/avatar/kirbydesign-designsystem-avatar.mjs",
61
55
  "esm": "./esm2022/avatar/kirbydesign-designsystem-avatar.mjs",
62
56
  "default": "./fesm2022/kirbydesign-designsystem-avatar.mjs"
63
57
  },
64
- "./calendar": {
65
- "types": "./calendar/index.d.ts",
66
- "esm2022": "./esm2022/calendar/kirbydesign-designsystem-calendar.mjs",
67
- "esm": "./esm2022/calendar/kirbydesign-designsystem-calendar.mjs",
68
- "default": "./fesm2022/kirbydesign-designsystem-calendar.mjs"
58
+ "./badge": {
59
+ "types": "./badge/index.d.ts",
60
+ "esm2022": "./esm2022/badge/kirbydesign-designsystem-badge.mjs",
61
+ "esm": "./esm2022/badge/kirbydesign-designsystem-badge.mjs",
62
+ "default": "./fesm2022/kirbydesign-designsystem-badge.mjs"
69
63
  },
70
64
  "./button": {
71
65
  "types": "./button/index.d.ts",
@@ -73,6 +67,12 @@
73
67
  "esm": "./esm2022/button/kirbydesign-designsystem-button.mjs",
74
68
  "default": "./fesm2022/kirbydesign-designsystem-button.mjs"
75
69
  },
70
+ "./calendar": {
71
+ "types": "./calendar/index.d.ts",
72
+ "esm2022": "./esm2022/calendar/kirbydesign-designsystem-calendar.mjs",
73
+ "esm": "./esm2022/calendar/kirbydesign-designsystem-calendar.mjs",
74
+ "default": "./fesm2022/kirbydesign-designsystem-calendar.mjs"
75
+ },
76
76
  "./card": {
77
77
  "types": "./card/index.d.ts",
78
78
  "esm2022": "./esm2022/card/kirbydesign-designsystem-card.mjs",
@@ -139,36 +139,36 @@
139
139
  "esm": "./esm2022/header/kirbydesign-designsystem-header.mjs",
140
140
  "default": "./fesm2022/kirbydesign-designsystem-header.mjs"
141
141
  },
142
- "./icon": {
143
- "types": "./icon/index.d.ts",
144
- "esm2022": "./esm2022/icon/kirbydesign-designsystem-icon.mjs",
145
- "esm": "./esm2022/icon/kirbydesign-designsystem-icon.mjs",
146
- "default": "./fesm2022/kirbydesign-designsystem-icon.mjs"
147
- },
148
142
  "./helpers": {
149
143
  "types": "./helpers/index.d.ts",
150
144
  "esm2022": "./esm2022/helpers/kirbydesign-designsystem-helpers.mjs",
151
145
  "esm": "./esm2022/helpers/kirbydesign-designsystem-helpers.mjs",
152
146
  "default": "./fesm2022/kirbydesign-designsystem-helpers.mjs"
153
147
  },
148
+ "./icon": {
149
+ "types": "./icon/index.d.ts",
150
+ "esm2022": "./esm2022/icon/kirbydesign-designsystem-icon.mjs",
151
+ "esm": "./esm2022/icon/kirbydesign-designsystem-icon.mjs",
152
+ "default": "./fesm2022/kirbydesign-designsystem-icon.mjs"
153
+ },
154
154
  "./item": {
155
155
  "types": "./item/index.d.ts",
156
156
  "esm2022": "./esm2022/item/kirbydesign-designsystem-item.mjs",
157
157
  "esm": "./esm2022/item/kirbydesign-designsystem-item.mjs",
158
158
  "default": "./fesm2022/kirbydesign-designsystem-item.mjs"
159
159
  },
160
- "./item-sliding": {
161
- "types": "./item-sliding/index.d.ts",
162
- "esm2022": "./esm2022/item-sliding/kirbydesign-designsystem-item-sliding.mjs",
163
- "esm": "./esm2022/item-sliding/kirbydesign-designsystem-item-sliding.mjs",
164
- "default": "./fesm2022/kirbydesign-designsystem-item-sliding.mjs"
165
- },
166
160
  "./item-group": {
167
161
  "types": "./item-group/index.d.ts",
168
162
  "esm2022": "./esm2022/item-group/kirbydesign-designsystem-item-group.mjs",
169
163
  "esm": "./esm2022/item-group/kirbydesign-designsystem-item-group.mjs",
170
164
  "default": "./fesm2022/kirbydesign-designsystem-item-group.mjs"
171
165
  },
166
+ "./item-sliding": {
167
+ "types": "./item-sliding/index.d.ts",
168
+ "esm2022": "./esm2022/item-sliding/kirbydesign-designsystem-item-sliding.mjs",
169
+ "esm": "./esm2022/item-sliding/kirbydesign-designsystem-item-sliding.mjs",
170
+ "default": "./fesm2022/kirbydesign-designsystem-item-sliding.mjs"
171
+ },
172
172
  "./kirby-app": {
173
173
  "types": "./kirby-app/index.d.ts",
174
174
  "esm2022": "./esm2022/kirby-app/kirbydesign-designsystem-kirby-app.mjs",
@@ -181,18 +181,18 @@
181
181
  "esm": "./esm2022/kirby-ionic-module/kirbydesign-designsystem-kirby-ionic-module.mjs",
182
182
  "default": "./fesm2022/kirbydesign-designsystem-kirby-ionic-module.mjs"
183
183
  },
184
- "./loading-overlay": {
185
- "types": "./loading-overlay/index.d.ts",
186
- "esm2022": "./esm2022/loading-overlay/kirbydesign-designsystem-loading-overlay.mjs",
187
- "esm": "./esm2022/loading-overlay/kirbydesign-designsystem-loading-overlay.mjs",
188
- "default": "./fesm2022/kirbydesign-designsystem-loading-overlay.mjs"
189
- },
190
184
  "./list": {
191
185
  "types": "./list/index.d.ts",
192
186
  "esm2022": "./esm2022/list/kirbydesign-designsystem-list.mjs",
193
187
  "esm": "./esm2022/list/kirbydesign-designsystem-list.mjs",
194
188
  "default": "./fesm2022/kirbydesign-designsystem-list.mjs"
195
189
  },
190
+ "./loading-overlay": {
191
+ "types": "./loading-overlay/index.d.ts",
192
+ "esm2022": "./esm2022/loading-overlay/kirbydesign-designsystem-loading-overlay.mjs",
193
+ "esm": "./esm2022/loading-overlay/kirbydesign-designsystem-loading-overlay.mjs",
194
+ "default": "./fesm2022/kirbydesign-designsystem-loading-overlay.mjs"
195
+ },
196
196
  "./menu": {
197
197
  "types": "./menu/index.d.ts",
198
198
  "esm2022": "./esm2022/menu/kirbydesign-designsystem-menu.mjs",
@@ -325,18 +325,18 @@
325
325
  "esm": "./esm2022/toggle/kirbydesign-designsystem-toggle.mjs",
326
326
  "default": "./fesm2022/kirbydesign-designsystem-toggle.mjs"
327
327
  },
328
- "./types": {
329
- "types": "./types/index.d.ts",
330
- "esm2022": "./esm2022/types/kirbydesign-designsystem-types.mjs",
331
- "esm": "./esm2022/types/kirbydesign-designsystem-types.mjs",
332
- "default": "./fesm2022/kirbydesign-designsystem-types.mjs"
333
- },
334
328
  "./toggle-button": {
335
329
  "types": "./toggle-button/index.d.ts",
336
330
  "esm2022": "./esm2022/toggle-button/kirbydesign-designsystem-toggle-button.mjs",
337
331
  "esm": "./esm2022/toggle-button/kirbydesign-designsystem-toggle-button.mjs",
338
332
  "default": "./fesm2022/kirbydesign-designsystem-toggle-button.mjs"
339
333
  },
334
+ "./types": {
335
+ "types": "./types/index.d.ts",
336
+ "esm2022": "./esm2022/types/kirbydesign-designsystem-types.mjs",
337
+ "esm": "./esm2022/types/kirbydesign-designsystem-types.mjs",
338
+ "default": "./fesm2022/kirbydesign-designsystem-types.mjs"
339
+ },
340
340
  "./helpers/scss": {
341
341
  "types": "./helpers/scss/index.d.ts",
342
342
  "esm2022": "./esm2022/helpers/scss/kirbydesign-designsystem-helpers-scss.mjs",