@kirbydesign/designsystem 11.4.2 → 11.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/kirbydesign-designsystem-accordion.mjs +11 -11
- package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-action-group.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-avatar.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-badge.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-button.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-calendar.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-card.mjs +17 -17
- package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-chart.mjs +22 -22
- package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-data-table.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-divider.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs +12 -12
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-flag.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-form-field.mjs +132 -113
- package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-header.mjs +20 -20
- package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-helpers.mjs +73 -10
- package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-icon.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-group.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item.mjs +11 -11
- package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-list.mjs +40 -40
- package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-menu.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-modal.mjs +51 -51
- package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-page.mjs +41 -41
- package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-popover.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-radio.mjs +11 -11
- package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-range.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-section-header.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared.mjs +18 -18
- package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide.mjs +14 -14
- package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-spinner.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +11 -11
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tabs.mjs +15 -15
- package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs +294 -287
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem.mjs +15 -15
- package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
- package/package.json +63 -63
- package/{accordion/index.d.ts → types/kirbydesign-designsystem-accordion.d.ts} +1 -1
- package/types/kirbydesign-designsystem-accordion.d.ts.map +1 -0
- package/{action-group/index.d.ts → types/kirbydesign-designsystem-action-group.d.ts} +1 -1
- package/types/kirbydesign-designsystem-action-group.d.ts.map +1 -0
- package/{avatar/index.d.ts → types/kirbydesign-designsystem-avatar.d.ts} +2 -2
- package/types/kirbydesign-designsystem-avatar.d.ts.map +1 -0
- package/{badge/index.d.ts → types/kirbydesign-designsystem-badge.d.ts} +1 -1
- package/types/kirbydesign-designsystem-badge.d.ts.map +1 -0
- package/{button/index.d.ts → types/kirbydesign-designsystem-button.d.ts} +2 -2
- package/types/kirbydesign-designsystem-button.d.ts.map +1 -0
- package/{calendar/index.d.ts → types/kirbydesign-designsystem-calendar.d.ts} +1 -1
- package/types/kirbydesign-designsystem-calendar.d.ts.map +1 -0
- package/{card/index.d.ts → types/kirbydesign-designsystem-card.d.ts} +2 -2
- package/types/kirbydesign-designsystem-card.d.ts.map +1 -0
- package/{chart/index.d.ts → types/kirbydesign-designsystem-chart.d.ts} +1 -1
- package/types/kirbydesign-designsystem-chart.d.ts.map +1 -0
- package/{checkbox/index.d.ts → types/kirbydesign-designsystem-checkbox.d.ts} +1 -1
- package/types/kirbydesign-designsystem-checkbox.d.ts.map +1 -0
- package/{config/index.d.ts → types/kirbydesign-designsystem-config.d.ts} +1 -1
- package/types/kirbydesign-designsystem-config.d.ts.map +1 -0
- package/{data-table/index.d.ts → types/kirbydesign-designsystem-data-table.d.ts} +1 -1
- package/types/kirbydesign-designsystem-data-table.d.ts.map +1 -0
- package/{divider/index.d.ts → types/kirbydesign-designsystem-divider.d.ts} +1 -1
- package/types/kirbydesign-designsystem-divider.d.ts.map +1 -0
- package/{dropdown/index.d.ts → types/kirbydesign-designsystem-dropdown.d.ts} +1 -1
- package/types/kirbydesign-designsystem-dropdown.d.ts.map +1 -0
- package/{empty-state/index.d.ts → types/kirbydesign-designsystem-empty-state.d.ts} +1 -1
- package/types/kirbydesign-designsystem-empty-state.d.ts.map +1 -0
- package/{fab-sheet/index.d.ts → types/kirbydesign-designsystem-fab-sheet.d.ts} +1 -1
- package/types/kirbydesign-designsystem-fab-sheet.d.ts.map +1 -0
- package/{flag/index.d.ts → types/kirbydesign-designsystem-flag.d.ts} +1 -1
- package/types/kirbydesign-designsystem-flag.d.ts.map +1 -0
- package/{form-field/index.d.ts → types/kirbydesign-designsystem-form-field.d.ts} +21 -24
- package/types/kirbydesign-designsystem-form-field.d.ts.map +1 -0
- package/{header/index.d.ts → types/kirbydesign-designsystem-header.d.ts} +1 -1
- package/types/kirbydesign-designsystem-header.d.ts.map +1 -0
- package/{helpers/scss/index.d.ts → types/kirbydesign-designsystem-helpers-scss.d.ts} +1 -1
- package/types/kirbydesign-designsystem-helpers-scss.d.ts.map +1 -0
- package/{helpers/index.d.ts → types/kirbydesign-designsystem-helpers.d.ts} +81 -13
- package/types/kirbydesign-designsystem-helpers.d.ts.map +1 -0
- package/{icon/index.d.ts → types/kirbydesign-designsystem-icon.d.ts} +1 -1
- package/types/kirbydesign-designsystem-icon.d.ts.map +1 -0
- package/{item-group/index.d.ts → types/kirbydesign-designsystem-item-group.d.ts} +1 -1
- package/types/kirbydesign-designsystem-item-group.d.ts.map +1 -0
- package/{item-sliding/index.d.ts → types/kirbydesign-designsystem-item-sliding.d.ts} +1 -1
- package/types/kirbydesign-designsystem-item-sliding.d.ts.map +1 -0
- package/{item/index.d.ts → types/kirbydesign-designsystem-item.d.ts} +1 -1
- package/types/kirbydesign-designsystem-item.d.ts.map +1 -0
- package/{kirby-app/index.d.ts → types/kirbydesign-designsystem-kirby-app.d.ts} +1 -1
- package/types/kirbydesign-designsystem-kirby-app.d.ts.map +1 -0
- package/{list/index.d.ts → types/kirbydesign-designsystem-list.d.ts} +1 -1
- package/types/kirbydesign-designsystem-list.d.ts.map +1 -0
- package/{loading-overlay/index.d.ts → types/kirbydesign-designsystem-loading-overlay.d.ts} +1 -1
- package/types/kirbydesign-designsystem-loading-overlay.d.ts.map +1 -0
- package/{menu/index.d.ts → types/kirbydesign-designsystem-menu.d.ts} +1 -1
- package/types/kirbydesign-designsystem-menu.d.ts.map +1 -0
- package/{modal/index.d.ts → types/kirbydesign-designsystem-modal.d.ts} +2 -2
- package/types/kirbydesign-designsystem-modal.d.ts.map +1 -0
- package/{page/index.d.ts → types/kirbydesign-designsystem-page.d.ts} +1 -1
- package/types/kirbydesign-designsystem-page.d.ts.map +1 -0
- package/{popover/index.d.ts → types/kirbydesign-designsystem-popover.d.ts} +1 -1
- package/types/kirbydesign-designsystem-popover.d.ts.map +1 -0
- package/{progress-circle/index.d.ts → types/kirbydesign-designsystem-progress-circle.d.ts} +1 -1
- package/types/kirbydesign-designsystem-progress-circle.d.ts.map +1 -0
- package/{radio/index.d.ts → types/kirbydesign-designsystem-radio.d.ts} +1 -1
- package/types/kirbydesign-designsystem-radio.d.ts.map +1 -0
- package/{range/index.d.ts → types/kirbydesign-designsystem-range.d.ts} +1 -1
- package/types/kirbydesign-designsystem-range.d.ts.map +1 -0
- package/{reorder-list/index.d.ts → types/kirbydesign-designsystem-reorder-list.d.ts} +1 -1
- package/types/kirbydesign-designsystem-reorder-list.d.ts.map +1 -0
- package/{router-outlet/index.d.ts → types/kirbydesign-designsystem-router-outlet.d.ts} +1 -1
- package/types/kirbydesign-designsystem-router-outlet.d.ts.map +1 -0
- package/{section-header/index.d.ts → types/kirbydesign-designsystem-section-header.d.ts} +1 -1
- package/types/kirbydesign-designsystem-section-header.d.ts.map +1 -0
- package/{shared/floating/index.d.ts → types/kirbydesign-designsystem-shared-floating.d.ts} +1 -1
- package/types/kirbydesign-designsystem-shared-floating.d.ts.map +1 -0
- package/{shared/portal/index.d.ts → types/kirbydesign-designsystem-shared-portal.d.ts} +1 -1
- package/types/kirbydesign-designsystem-shared-portal.d.ts.map +1 -0
- package/{shared/index.d.ts → types/kirbydesign-designsystem-shared.d.ts} +1 -1
- package/types/kirbydesign-designsystem-shared.d.ts.map +1 -0
- package/{slide-button/index.d.ts → types/kirbydesign-designsystem-slide-button.d.ts} +1 -1
- package/types/kirbydesign-designsystem-slide-button.d.ts.map +1 -0
- package/{slide/index.d.ts → types/kirbydesign-designsystem-slide.d.ts} +1 -1
- package/types/kirbydesign-designsystem-slide.d.ts.map +1 -0
- package/{spinner/index.d.ts → types/kirbydesign-designsystem-spinner.d.ts} +1 -1
- package/types/kirbydesign-designsystem-spinner.d.ts.map +1 -0
- package/{tab-navigation/index.d.ts → types/kirbydesign-designsystem-tab-navigation.d.ts} +1 -1
- package/types/kirbydesign-designsystem-tab-navigation.d.ts.map +1 -0
- package/{tabs/index.d.ts → types/kirbydesign-designsystem-tabs.d.ts} +1 -1
- package/types/kirbydesign-designsystem-tabs.d.ts.map +1 -0
- package/{testing-base/index.d.ts → types/kirbydesign-designsystem-testing-base.d.ts} +5 -3
- package/types/kirbydesign-designsystem-testing-base.d.ts.map +1 -0
- package/{testing-jasmine/index.d.ts → types/kirbydesign-designsystem-testing-jasmine.d.ts} +1 -1
- package/types/kirbydesign-designsystem-testing-jasmine.d.ts.map +1 -0
- package/{testing-jest/index.d.ts → types/kirbydesign-designsystem-testing-jest.d.ts} +1 -1
- package/types/kirbydesign-designsystem-testing-jest.d.ts.map +1 -0
- package/{testing/index.d.ts → types/kirbydesign-designsystem-testing.d.ts} +1 -1
- package/types/kirbydesign-designsystem-testing.d.ts.map +1 -0
- package/{toast/index.d.ts → types/kirbydesign-designsystem-toast.d.ts} +1 -1
- package/types/kirbydesign-designsystem-toast.d.ts.map +1 -0
- package/{toggle-button/index.d.ts → types/kirbydesign-designsystem-toggle-button.d.ts} +1 -1
- package/types/kirbydesign-designsystem-toggle-button.d.ts.map +1 -0
- package/{toggle/index.d.ts → types/kirbydesign-designsystem-toggle.d.ts} +1 -1
- package/types/kirbydesign-designsystem-toggle.d.ts.map +1 -0
- package/types/{index.d.ts → kirbydesign-designsystem-types.d.ts} +1 -1
- package/types/kirbydesign-designsystem-types.d.ts.map +1 -0
- package/{index.d.ts → types/kirbydesign-designsystem.d.ts} +1 -1
- package/types/kirbydesign-designsystem.d.ts.map +1 -0
- package/accordion/index.d.ts.map +0 -1
- package/action-group/index.d.ts.map +0 -1
- package/avatar/index.d.ts.map +0 -1
- package/badge/index.d.ts.map +0 -1
- package/button/index.d.ts.map +0 -1
- package/calendar/index.d.ts.map +0 -1
- package/card/index.d.ts.map +0 -1
- package/chart/index.d.ts.map +0 -1
- package/checkbox/index.d.ts.map +0 -1
- package/config/index.d.ts.map +0 -1
- package/data-table/index.d.ts.map +0 -1
- package/divider/index.d.ts.map +0 -1
- package/dropdown/index.d.ts.map +0 -1
- package/empty-state/index.d.ts.map +0 -1
- package/fab-sheet/index.d.ts.map +0 -1
- package/flag/index.d.ts.map +0 -1
- package/form-field/index.d.ts.map +0 -1
- package/header/index.d.ts.map +0 -1
- package/helpers/index.d.ts.map +0 -1
- package/helpers/scss/index.d.ts.map +0 -1
- package/icon/index.d.ts.map +0 -1
- package/index.d.ts.map +0 -1
- package/item/index.d.ts.map +0 -1
- package/item-group/index.d.ts.map +0 -1
- package/item-sliding/index.d.ts.map +0 -1
- package/kirby-app/index.d.ts.map +0 -1
- package/list/index.d.ts.map +0 -1
- package/loading-overlay/index.d.ts.map +0 -1
- package/menu/index.d.ts.map +0 -1
- package/modal/index.d.ts.map +0 -1
- package/page/index.d.ts.map +0 -1
- package/popover/index.d.ts.map +0 -1
- package/progress-circle/index.d.ts.map +0 -1
- package/radio/index.d.ts.map +0 -1
- package/range/index.d.ts.map +0 -1
- package/reorder-list/index.d.ts.map +0 -1
- package/router-outlet/index.d.ts.map +0 -1
- package/section-header/index.d.ts.map +0 -1
- package/shared/floating/index.d.ts.map +0 -1
- package/shared/index.d.ts.map +0 -1
- package/shared/portal/index.d.ts.map +0 -1
- package/slide/index.d.ts.map +0 -1
- package/slide-button/index.d.ts.map +0 -1
- package/spinner/index.d.ts.map +0 -1
- package/tab-navigation/index.d.ts.map +0 -1
- package/tabs/index.d.ts.map +0 -1
- package/testing/index.d.ts.map +0 -1
- package/testing-base/index.d.ts.map +0 -1
- package/testing-jasmine/index.d.ts.map +0 -1
- package/testing-jest/index.d.ts.map +0 -1
- package/toast/index.d.ts.map +0 -1
- package/toggle/index.d.ts.map +0 -1
- package/toggle-button/index.d.ts.map +0 -1
- package/types/index.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kirbydesign-designsystem-chart.mjs","sources":["../../chart/src/shared/charts.types.ts","../../chart/src/shared/chart-js-service/annotations.delegate.ts","../../chart/src/shared/chart-config-service/configs/global-defaults.config.ts","../../chart/src/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.ts","../../chart/src/shared/chart-js-service/configured-chart-js.ts","../../chart/src/shared/chart-config-service/configs/annotations.config.ts","../../chart/src/shared/chart-config-service/configs/interaction-functions-extensions.config.ts","../../chart/src/shared/chart-config-service/configs/type.config.ts","../../chart/src/shared/chart-config-service/chart-config.service.ts","../../chart/src/shared/chart-js-service/chart-js.service.ts","../../chart/src/shared/chart-js-service/test-utils.ts","../../chart/src/shared/base-chart/base-chart.component.ts","../../chart/src/shared/base-chart/base-chart.component.html","../../chart/src/chart/chart.component.ts","../../chart/src/stock-chart/stock-chart-js.service.ts","../../chart/src/stock-chart/stock-chart.component.ts","../../chart/src/charts.module.ts","../../chart/src/chart-config/chart-base-config.ts","../../chart/src/chart-config/chart-bar-config/chart-bar-config.ts","../../chart/src/chart-config/chart-stock-config/data-label-position/data-label-position.ts","../../chart/src/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.ts","../../chart/src/chart-config/chart-stock-config/chart-stock-config.ts","../../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 { 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 { 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 { 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 OnDestroy,\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, OnDestroy {\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 {\n BaseChartComponent,\n ChartConfigService,\n ChartDataLabelOptions,\n ChartJSService,\n} from '../shared';\n\nimport { StockChartJSService } from './stock-chart-js.service';\n\n@Component({\n selector: 'kirby-stock-chart',\n providers: [{ provide: ChartJSService, useClass: StockChartJSService }, ChartConfigService],\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 imports: [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":["../../chart/src/shared/charts.types.ts","../../chart/src/shared/chart-js-service/annotations.delegate.ts","../../chart/src/shared/chart-config-service/configs/global-defaults.config.ts","../../chart/src/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.ts","../../chart/src/shared/chart-js-service/configured-chart-js.ts","../../chart/src/shared/chart-config-service/configs/annotations.config.ts","../../chart/src/shared/chart-config-service/configs/interaction-functions-extensions.config.ts","../../chart/src/shared/chart-config-service/configs/type.config.ts","../../chart/src/shared/chart-config-service/chart-config.service.ts","../../chart/src/shared/chart-js-service/chart-js.service.ts","../../chart/src/shared/chart-js-service/test-utils.ts","../../chart/src/shared/base-chart/base-chart.component.ts","../../chart/src/shared/base-chart/base-chart.component.html","../../chart/src/chart/chart.component.ts","../../chart/src/stock-chart/stock-chart-js.service.ts","../../chart/src/stock-chart/stock-chart.component.ts","../../chart/src/charts.module.ts","../../chart/src/chart-config/chart-base-config.ts","../../chart/src/chart-config/chart-bar-config/chart-bar-config.ts","../../chart/src/chart-config/chart-stock-config/data-label-position/data-label-position.ts","../../chart/src/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.ts","../../chart/src/chart-config/chart-stock-config/chart-stock-config.ts","../../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 { 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 { 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 { 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 OnDestroy,\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, OnDestroy {\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 {\n BaseChartComponent,\n ChartConfigService,\n ChartDataLabelOptions,\n ChartJSService,\n} from '../shared';\n\nimport { StockChartJSService } from './stock-chart-js.service';\n\n@Component({\n selector: 'kirby-stock-chart',\n providers: [{ provide: ChartJSService, useClass: StockChartJSService }, ChartConfigService],\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 imports: [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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"}
|
|
@@ -110,17 +110,17 @@ class CheckboxComponent {
|
|
|
110
110
|
this.disabled = isDisabled;
|
|
111
111
|
this.cdr.markForCheck();
|
|
112
112
|
}
|
|
113
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
114
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
113
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CheckboxComponent, deps: [{ token: i0.ElementRef }, { token: i1.IonicElementPartHelper }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
114
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: CheckboxComponent, isStandalone: true, selector: "kirby-checkbox", inputs: { checked: "checked", indeterminate: "indeterminate", attentionLevel: "attentionLevel", text: "text", size: "size", hasError: "hasError", disabled: "disabled" }, outputs: { checkedChange: "checkedChange" }, host: { properties: { "class": "this.size", "class.error": "this.hasError", "attr.disabled": "this._isDisabled", "class.attention-level1": "this.isAttentionLevel1", "class.attention-level2": "this.isAttentionLevel2", "class.has-hidden-label": "this._labelText" } }, providers: [
|
|
115
115
|
IonicElementPartHelper,
|
|
116
116
|
{
|
|
117
117
|
provide: NG_VALUE_ACCESSOR,
|
|
118
118
|
useExisting: forwardRef((() => CheckboxComponent)),
|
|
119
119
|
multi: true,
|
|
120
120
|
},
|
|
121
|
-
], viewQueries: [{ propertyName: "ionCheckboxElement", first: true, predicate: IonCheckbox, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<ion-checkbox\n mode=\"md\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [indeterminate]=\"indeterminate\"\n (ionChange)=\"onChecked($event.detail.checked)\"\n (ionBlur)=\"onBlur()\"\n [labelPlacement]=\"_labelPlacement\"\n [justify]=\"_justify\"\n>\n @if (_labelText) {\n <span class=\"hidden-label\">{{ _labelText }}</span>\n }\n @if (text) {\n <span [attr.aria-hidden]=\"_labelText ? true : undefined\">{{ text }}</span>\n }\n <span class=\"default-content\" [attr.aria-hidden]=\"_labelText ? true : undefined\">\n <ng-content></ng-content>\n </span>\n</ion-checkbox>\n", styles: [":host{display:flex}:host.attention-level1 ion-checkbox{--checkmark-color: var(--kirby-black);--checkbox-background-checked: var(--kirby-success);--border-color-checked: var(--kirby-success)}@media
|
|
121
|
+
], viewQueries: [{ propertyName: "ionCheckboxElement", first: true, predicate: IonCheckbox, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<ion-checkbox\n mode=\"md\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [indeterminate]=\"indeterminate\"\n (ionChange)=\"onChecked($event.detail.checked)\"\n (ionBlur)=\"onBlur()\"\n [labelPlacement]=\"_labelPlacement\"\n [justify]=\"_justify\"\n>\n @if (_labelText) {\n <span class=\"hidden-label\">{{ _labelText }}</span>\n }\n @if (text) {\n <span [attr.aria-hidden]=\"_labelText ? true : undefined\">{{ text }}</span>\n }\n <span class=\"default-content\" [attr.aria-hidden]=\"_labelText ? true : undefined\">\n <ng-content></ng-content>\n </span>\n</ion-checkbox>\n", styles: [":host{display:flex}:host.attention-level1 ion-checkbox{--checkmark-color: var(--kirby-black);--checkbox-background-checked: var(--kirby-success);--border-color-checked: var(--kirby-success)}@media(hover:hover){:host.attention-level1 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: rgb(45.030660793, 192.689339207, 114.1474889868);--border-color-checked: rgb(45.030660793, 192.689339207, 114.1474889868)}}:host.attention-level1 ion-checkbox:active,:host.attention-level1 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background-checked: rgb(40.7420264317, 174.3379735683, 103.2762995595);--border-color-checked: rgb(40.7420264317, 174.3379735683, 103.2762995595)}:host.attention-level2 ion-checkbox{--checkmark-color: var(--kirby-white);--checkbox-background-checked: var(--kirby-black);--border-color-checked: var(--kirby-black)}@media(hover:hover){:host.attention-level2 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: rgb(91.56, 91.56, 91.56);--border-color-checked: rgb(91.56, 91.56, 91.56)}}:host.attention-level2 ion-checkbox:active,:host.attention-level2 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkmark-color: rgb(234.6, 234.6, 234.6);--checkbox-background-checked: rgb(109.72, 109.72, 109.72);--border-color-checked: rgb(109.72, 109.72, 109.72)}:host.error ion-checkbox{--border-color: var(--kirby-danger)}:host[disabled]{color:var(--kirby-text-color-semi-dark)}:host[disabled] ion-checkbox{--checkmark-color: var(--kirby-semi-dark);--checkbox-background: var(--kirby-semi-light);--checkbox-background-checked: var(--kirby-semi-light);--border-color: var(--kirby-medium);--border-color-checked: var(--kirby-medium)}:host[disabled] ion-checkbox::part(label-text-wrapper){opacity:1}:host[disabled] ion-checkbox::part(native-wrapper){opacity:1}:host:has(ion-checkbox.in-item.checkbox-justify-space-between){width:100%}:host.xs ion-checkbox:not(.in-item)::part(label){padding-block:4px}:host.sm ion-checkbox:not(.in-item)::part(label){padding-block:10px}:host.md ion-checkbox:not(.in-item)::part(label){padding-block:16px}:host.xs ion-checkbox::part(label){line-height:16px;font-size:14px}:host.xs ion-checkbox{--size: 16px;--border-radius: 4px}:host.xs ion-checkbox::part(container){padding:2px}@media(hover:hover)and (pointer:fine){:host ion-checkbox:focus-within::part(container){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}@media(hover:hover){:host ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background: rgb(234.6, 234.6, 234.6)}}:host ion-checkbox:active,:host ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background: rgb(224.4, 224.4, 224.4)}:host ion-checkbox:focus-visible{outline:none}:host ion-checkbox{--transition: 80ms;--size: 24px;--checkmark-width: 4px;--checkbox-background: var(--kirby-white);--border-width: 1px;--border-color: var(--kirby-semi-dark);--border-radius: 6px}:host ion-checkbox::part(container){padding:4px}:host ion-checkbox::part(label){align-items:start;padding-inline:16px 12px;line-height:24px}:host ion-checkbox::part(label-text-wrapper){margin-inline:12px 0;white-space:pre-line}:host ion-checkbox.in-item::part(label){align-items:center;padding-inline:0}:host ion-checkbox.in-item::part(label-text-wrapper){margin-block:0}:host ion-checkbox.in-item.checkbox-label-placement-start::part(label-text-wrapper){margin-inline:0 12px}:host ion-checkbox.in-item.checkbox-label-placement-end::part(label-text-wrapper){margin-inline:12px 0}:host.has-hidden-label:has(ion-checkbox.in-item){position:initial}:host.has-hidden-label:has(ion-checkbox.in-item) ion-checkbox{position:initial}:host.has-hidden-label:has(ion-checkbox.in-item) ion-checkbox.checkbox-label-placement-start::part(label-text-wrapper),:host.has-hidden-label:has(ion-checkbox.in-item) ion-checkbox.checkbox-label-placement-end::part(label-text-wrapper){margin-inline:0}:host.has-hidden-label[slot=end] ion-checkbox{margin-inline-start:12px}:host.has-hidden-label .hidden-label{position:absolute;inset:0;opacity:0}:host :host-context(kirby-item){z-index:1}:host :host-context(kirby-item) ion-checkbox{margin:0}:host :host-context(kirby-item)[slot=start]{margin-block:0;margin-inline-end:12px}\n"], dependencies: [{ kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
122
122
|
}
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
124
124
|
type: Component,
|
|
125
125
|
args: [{ imports: [IonCheckbox], selector: 'kirby-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
126
126
|
IonicElementPartHelper,
|
|
@@ -129,7 +129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
129
129
|
useExisting: forwardRef((() => CheckboxComponent)),
|
|
130
130
|
multi: true,
|
|
131
131
|
},
|
|
132
|
-
], template: "<ion-checkbox\n mode=\"md\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [indeterminate]=\"indeterminate\"\n (ionChange)=\"onChecked($event.detail.checked)\"\n (ionBlur)=\"onBlur()\"\n [labelPlacement]=\"_labelPlacement\"\n [justify]=\"_justify\"\n>\n @if (_labelText) {\n <span class=\"hidden-label\">{{ _labelText }}</span>\n }\n @if (text) {\n <span [attr.aria-hidden]=\"_labelText ? true : undefined\">{{ text }}</span>\n }\n <span class=\"default-content\" [attr.aria-hidden]=\"_labelText ? true : undefined\">\n <ng-content></ng-content>\n </span>\n</ion-checkbox>\n", styles: [":host{display:flex}:host.attention-level1 ion-checkbox{--checkmark-color: var(--kirby-black);--checkbox-background-checked: var(--kirby-success);--border-color-checked: var(--kirby-success)}@media
|
|
132
|
+
], template: "<ion-checkbox\n mode=\"md\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [indeterminate]=\"indeterminate\"\n (ionChange)=\"onChecked($event.detail.checked)\"\n (ionBlur)=\"onBlur()\"\n [labelPlacement]=\"_labelPlacement\"\n [justify]=\"_justify\"\n>\n @if (_labelText) {\n <span class=\"hidden-label\">{{ _labelText }}</span>\n }\n @if (text) {\n <span [attr.aria-hidden]=\"_labelText ? true : undefined\">{{ text }}</span>\n }\n <span class=\"default-content\" [attr.aria-hidden]=\"_labelText ? true : undefined\">\n <ng-content></ng-content>\n </span>\n</ion-checkbox>\n", styles: [":host{display:flex}:host.attention-level1 ion-checkbox{--checkmark-color: var(--kirby-black);--checkbox-background-checked: var(--kirby-success);--border-color-checked: var(--kirby-success)}@media(hover:hover){:host.attention-level1 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: rgb(45.030660793, 192.689339207, 114.1474889868);--border-color-checked: rgb(45.030660793, 192.689339207, 114.1474889868)}}:host.attention-level1 ion-checkbox:active,:host.attention-level1 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background-checked: rgb(40.7420264317, 174.3379735683, 103.2762995595);--border-color-checked: rgb(40.7420264317, 174.3379735683, 103.2762995595)}:host.attention-level2 ion-checkbox{--checkmark-color: var(--kirby-white);--checkbox-background-checked: var(--kirby-black);--border-color-checked: var(--kirby-black)}@media(hover:hover){:host.attention-level2 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: rgb(91.56, 91.56, 91.56);--border-color-checked: rgb(91.56, 91.56, 91.56)}}:host.attention-level2 ion-checkbox:active,:host.attention-level2 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkmark-color: rgb(234.6, 234.6, 234.6);--checkbox-background-checked: rgb(109.72, 109.72, 109.72);--border-color-checked: rgb(109.72, 109.72, 109.72)}:host.error ion-checkbox{--border-color: var(--kirby-danger)}:host[disabled]{color:var(--kirby-text-color-semi-dark)}:host[disabled] ion-checkbox{--checkmark-color: var(--kirby-semi-dark);--checkbox-background: var(--kirby-semi-light);--checkbox-background-checked: var(--kirby-semi-light);--border-color: var(--kirby-medium);--border-color-checked: var(--kirby-medium)}:host[disabled] ion-checkbox::part(label-text-wrapper){opacity:1}:host[disabled] ion-checkbox::part(native-wrapper){opacity:1}:host:has(ion-checkbox.in-item.checkbox-justify-space-between){width:100%}:host.xs ion-checkbox:not(.in-item)::part(label){padding-block:4px}:host.sm ion-checkbox:not(.in-item)::part(label){padding-block:10px}:host.md ion-checkbox:not(.in-item)::part(label){padding-block:16px}:host.xs ion-checkbox::part(label){line-height:16px;font-size:14px}:host.xs ion-checkbox{--size: 16px;--border-radius: 4px}:host.xs ion-checkbox::part(container){padding:2px}@media(hover:hover)and (pointer:fine){:host ion-checkbox:focus-within::part(container){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}@media(hover:hover){:host ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background: rgb(234.6, 234.6, 234.6)}}:host ion-checkbox:active,:host ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background: rgb(224.4, 224.4, 224.4)}:host ion-checkbox:focus-visible{outline:none}:host ion-checkbox{--transition: 80ms;--size: 24px;--checkmark-width: 4px;--checkbox-background: var(--kirby-white);--border-width: 1px;--border-color: var(--kirby-semi-dark);--border-radius: 6px}:host ion-checkbox::part(container){padding:4px}:host ion-checkbox::part(label){align-items:start;padding-inline:16px 12px;line-height:24px}:host ion-checkbox::part(label-text-wrapper){margin-inline:12px 0;white-space:pre-line}:host ion-checkbox.in-item::part(label){align-items:center;padding-inline:0}:host ion-checkbox.in-item::part(label-text-wrapper){margin-block:0}:host ion-checkbox.in-item.checkbox-label-placement-start::part(label-text-wrapper){margin-inline:0 12px}:host ion-checkbox.in-item.checkbox-label-placement-end::part(label-text-wrapper){margin-inline:12px 0}:host.has-hidden-label:has(ion-checkbox.in-item){position:initial}:host.has-hidden-label:has(ion-checkbox.in-item) ion-checkbox{position:initial}:host.has-hidden-label:has(ion-checkbox.in-item) ion-checkbox.checkbox-label-placement-start::part(label-text-wrapper),:host.has-hidden-label:has(ion-checkbox.in-item) ion-checkbox.checkbox-label-placement-end::part(label-text-wrapper){margin-inline:0}:host.has-hidden-label[slot=end] ion-checkbox{margin-inline-start:12px}:host.has-hidden-label .hidden-label{position:absolute;inset:0;opacity:0}:host :host-context(kirby-item){z-index:1}:host :host-context(kirby-item) ion-checkbox{margin:0}:host :host-context(kirby-item)[slot=start]{margin-block:0;margin-inline-end:12px}\n"] }]
|
|
133
133
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.IonicElementPartHelper }, { type: i0.ChangeDetectorRef }], propDecorators: { ionCheckboxElement: [{
|
|
134
134
|
type: ViewChild,
|
|
135
135
|
args: [IonCheckbox, { read: ElementRef, static: true }]
|