@kirbydesign/designsystem 5.0.4 → 5.0.8
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/bundles/kirbydesign-designsystem-testing-base.umd.js +1 -0
- package/bundles/kirbydesign-designsystem-testing-base.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js +1 -1
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.js +482 -30
- package/bundles/kirbydesign-designsystem.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.min.js +1 -1
- package/bundles/kirbydesign-designsystem.umd.min.js.map +1 -1
- package/esm2015/lib/components/chart/chart-js/chart-js.service.js +137 -19
- package/esm2015/lib/components/chart/chart-js/chart-js.service.metadata.json +1 -1
- package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.js +203 -0
- package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.metadata.json +1 -0
- package/esm2015/lib/components/chart/chart-js/configured-chart-js.js +5 -3
- package/esm2015/lib/components/chart/chart-js/configured-chart-js.metadata.json +1 -1
- package/esm2015/lib/components/chart/chart.component.js +3 -1
- package/esm2015/lib/components/chart/chart.component.metadata.json +1 -1
- package/esm2015/lib/components/chart/chart.types.js +1 -1
- package/esm2015/lib/components/chart/chart.types.metadata.json +1 -1
- package/esm2015/lib/components/chart/configs/global-defaults.config.js +7 -1
- package/esm2015/lib/components/chart/configs/type.config.js +118 -1
- package/esm2015/lib/components/chart/configs/type.config.metadata.json +1 -1
- package/esm2015/lib/helpers/deep-copy.js +11 -2
- package/esm2015/lib/helpers/deep-copy.metadata.json +1 -1
- package/esm2015/testing-base/lib/components/mock.chart.component.js +2 -1
- package/esm2015/testing-base/lib/components/mock.chart.component.metadata.json +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-base.js +1 -0
- package/fesm2015/kirbydesign-designsystem-testing-base.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem.js +476 -25
- package/fesm2015/kirbydesign-designsystem.js.map +1 -1
- package/kirbydesign-designsystem.metadata.json +1 -1
- package/lib/components/chart/chart-js/chart-js.service.d.ts +17 -1
- package/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.d.ts +14 -0
- package/lib/components/chart/chart.component.d.ts +2 -1
- package/lib/components/chart/chart.types.d.ts +9 -1
- package/lib/components/chart/configs/global-defaults.config.d.ts +6 -0
- package/lib/helpers/deep-copy.d.ts +9 -1
- package/package.json +6 -3
- package/scss/_global-styles.scss +4 -0
- package/testing-base/kirbydesign-designsystem-testing-base.metadata.json +1 -1
- package/testing-base/lib/components/mock.chart.component.d.ts +2 -1
|
@@ -9,13 +9,16 @@ import { filter, first, startWith, map, pairwise, debounceTime, takeUntil } from
|
|
|
9
9
|
import { CommonModule, formatNumber, getLocaleDateFormat, FormatWidth, getLocaleNumberSymbol, NumberSymbol, DOCUMENT } from '@angular/common';
|
|
10
10
|
import * as Highcharts from 'highcharts';
|
|
11
11
|
import { chart, dateFormat } from 'highcharts';
|
|
12
|
-
import {
|
|
12
|
+
import { toDate, isBefore, isAfter, format, isSameMonth, startOfMonth, startOfDay, eachDayOfInterval, startOfWeek, endOfWeek, isSameDay, endOfMonth, differenceInDays, add, isWeekend, getYear } from 'date-fns';
|
|
13
|
+
import _deepCopy from 'ts-deepcopy';
|
|
14
|
+
import { CategoryScale, LinearScale, BarElement, LineElement, PointElement, BarController, LineController, Filler, Tooltip, Chart, Legend } from 'chart.js';
|
|
13
15
|
export { Chart } from 'chart.js';
|
|
14
16
|
import annotationPlugin from 'chartjs-plugin-annotation';
|
|
17
|
+
import ChartDataLabels from 'chartjs-plugin-datalabels';
|
|
18
|
+
import { valueOrDefault } from 'chart.js/helpers';
|
|
15
19
|
import * as Highcharts$1 from 'highcharts/highstock';
|
|
16
20
|
import { dateFormat as dateFormat$1, stockChart } from 'highcharts/highstock';
|
|
17
21
|
import AnnotationsModule from 'highcharts/modules/annotations';
|
|
18
|
-
import { isBefore, isAfter, format, isSameMonth, startOfMonth, startOfDay, eachDayOfInterval, startOfWeek, endOfWeek, isSameDay, endOfMonth, differenceInDays, add, isWeekend, getYear } from 'date-fns';
|
|
19
22
|
import { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';
|
|
20
23
|
import { da, enGB, enUS } from 'date-fns/locale';
|
|
21
24
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
@@ -3071,8 +3074,16 @@ ComponentLoaderDirective.propDecorators = {
|
|
|
3071
3074
|
cssClass: [{ type: Input }]
|
|
3072
3075
|
};
|
|
3073
3076
|
|
|
3077
|
+
/**
|
|
3078
|
+
* Do a deep copy of object that supports the composite data type Function
|
|
3079
|
+
*
|
|
3080
|
+
* @see https://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to-deep-clone-an-object-in-javascript#answer-122704
|
|
3081
|
+
*
|
|
3082
|
+
* @param obj
|
|
3083
|
+
* @returns obj
|
|
3084
|
+
*/
|
|
3074
3085
|
function deepCopy(obj) {
|
|
3075
|
-
return
|
|
3086
|
+
return _deepCopy(obj);
|
|
3076
3087
|
}
|
|
3077
3088
|
|
|
3078
3089
|
/*
|
|
@@ -3148,6 +3159,13 @@ const CHART_INTERACTION_FUNCTIONS_EXTENSIONS = {
|
|
|
3148
3159
|
|
|
3149
3160
|
const { fontSize: fontSize$2 } = DesignTokenHelper;
|
|
3150
3161
|
const { getThemeColorHexString: getThemeColorHexString$1, getThemeColorRgbString } = ColorHelper;
|
|
3162
|
+
/**
|
|
3163
|
+
* A filter to read a chartpoint from a Chart.js point context (used for chartdata points). Context is provided by Chart.js.
|
|
3164
|
+
*/
|
|
3165
|
+
const getChartPointFromContext = (context) => {
|
|
3166
|
+
return context.dataset.data[context.dataIndex];
|
|
3167
|
+
};
|
|
3168
|
+
const ɵ0$6 = getChartPointFromContext;
|
|
3151
3169
|
const CHART_TYPES_CONFIG = {
|
|
3152
3170
|
bar: {
|
|
3153
3171
|
type: 'bar',
|
|
@@ -3242,6 +3260,115 @@ const CHART_TYPES_CONFIG = {
|
|
|
3242
3260
|
},
|
|
3243
3261
|
},
|
|
3244
3262
|
},
|
|
3263
|
+
stock: {
|
|
3264
|
+
type: 'line',
|
|
3265
|
+
options: {
|
|
3266
|
+
responsive: true,
|
|
3267
|
+
animation: {
|
|
3268
|
+
duration: 0,
|
|
3269
|
+
},
|
|
3270
|
+
layout: {
|
|
3271
|
+
padding: {
|
|
3272
|
+
left: 20,
|
|
3273
|
+
right: 20,
|
|
3274
|
+
top: 30,
|
|
3275
|
+
bottom: 0,
|
|
3276
|
+
},
|
|
3277
|
+
},
|
|
3278
|
+
backgroundColor: getThemeColorRgbString('semi-light', 0.5),
|
|
3279
|
+
scales: {
|
|
3280
|
+
x: {
|
|
3281
|
+
grid: {
|
|
3282
|
+
lineWidth: 0,
|
|
3283
|
+
},
|
|
3284
|
+
ticks: {
|
|
3285
|
+
maxRotation: 0,
|
|
3286
|
+
autoSkipPadding: 120,
|
|
3287
|
+
font: {
|
|
3288
|
+
size: parseInt(fontSize$2('xs')),
|
|
3289
|
+
},
|
|
3290
|
+
},
|
|
3291
|
+
},
|
|
3292
|
+
y: {
|
|
3293
|
+
position: 'right',
|
|
3294
|
+
display: true,
|
|
3295
|
+
grid: {
|
|
3296
|
+
drawBorder: false,
|
|
3297
|
+
},
|
|
3298
|
+
ticks: {
|
|
3299
|
+
display: true,
|
|
3300
|
+
font: {
|
|
3301
|
+
size: parseInt(fontSize$2('xs')),
|
|
3302
|
+
},
|
|
3303
|
+
},
|
|
3304
|
+
},
|
|
3305
|
+
},
|
|
3306
|
+
elements: {
|
|
3307
|
+
line: {
|
|
3308
|
+
tension: 0,
|
|
3309
|
+
borderWidth: 2,
|
|
3310
|
+
},
|
|
3311
|
+
point: {
|
|
3312
|
+
hitRadius: 20,
|
|
3313
|
+
radius: 0,
|
|
3314
|
+
hoverRadius: 0,
|
|
3315
|
+
hoverBorderWidth: 0,
|
|
3316
|
+
},
|
|
3317
|
+
},
|
|
3318
|
+
normalized: true,
|
|
3319
|
+
plugins: {
|
|
3320
|
+
tooltip: {
|
|
3321
|
+
padding: 10,
|
|
3322
|
+
enabled: true,
|
|
3323
|
+
mode: 'index',
|
|
3324
|
+
intersect: false,
|
|
3325
|
+
backgroundColor: getThemeColorHexString$1('semi-light'),
|
|
3326
|
+
titleColor: getThemeColorHexString$1('semi-light-contrast'),
|
|
3327
|
+
bodyColor: getThemeColorHexString$1('semi-light-contrast'),
|
|
3328
|
+
caretSize: 0,
|
|
3329
|
+
bodySpacing: 5,
|
|
3330
|
+
titleSpacing: 5,
|
|
3331
|
+
borderColor: 'transparent',
|
|
3332
|
+
callbacks: {
|
|
3333
|
+
labelColor: (tooltipItem) => {
|
|
3334
|
+
return {
|
|
3335
|
+
backgroundColor: tooltipItem.dataset.borderColor,
|
|
3336
|
+
};
|
|
3337
|
+
},
|
|
3338
|
+
},
|
|
3339
|
+
},
|
|
3340
|
+
// A failed attempt to get local typings working.
|
|
3341
|
+
// The chartjs-plugin-marker is rewritten to not
|
|
3342
|
+
// having to rely on own plugin settings, but using
|
|
3343
|
+
// x-axis type time instead.
|
|
3344
|
+
// @todo candidate for refactor once solved.
|
|
3345
|
+
// marker: {
|
|
3346
|
+
// line: {
|
|
3347
|
+
// color: getThemeColorHexString('black-base'),
|
|
3348
|
+
// }
|
|
3349
|
+
// },
|
|
3350
|
+
datalabels: {
|
|
3351
|
+
backgroundColor: (context) => context.dataset.borderColor,
|
|
3352
|
+
color: getThemeColorHexString$1('white'),
|
|
3353
|
+
borderRadius: 3,
|
|
3354
|
+
font: {
|
|
3355
|
+
lineHeight: 1,
|
|
3356
|
+
size: parseInt(fontSize$2('xs')),
|
|
3357
|
+
},
|
|
3358
|
+
padding: {
|
|
3359
|
+
top: 6,
|
|
3360
|
+
left: 5,
|
|
3361
|
+
right: 5,
|
|
3362
|
+
bottom: 5,
|
|
3363
|
+
},
|
|
3364
|
+
offset: 5,
|
|
3365
|
+
align: (context) => { var _a; return (_a = getChartPointFromContext(context)) === null || _a === void 0 ? void 0 : _a.datalabel.position; },
|
|
3366
|
+
display: (context) => { var _a; return !!((_a = getChartPointFromContext(context)) === null || _a === void 0 ? void 0 : _a.datalabel); },
|
|
3367
|
+
formatter: (value) => value.datalabel.value,
|
|
3368
|
+
},
|
|
3369
|
+
},
|
|
3370
|
+
},
|
|
3371
|
+
},
|
|
3245
3372
|
};
|
|
3246
3373
|
|
|
3247
3374
|
class ChartConfigService {
|
|
@@ -3267,6 +3394,205 @@ ChartConfigService.decorators = [
|
|
|
3267
3394
|
{ type: Injectable }
|
|
3268
3395
|
];
|
|
3269
3396
|
|
|
3397
|
+
// The marker pluin was heavily inspired by https://chartjs-plugin-crosshair.netlify.app
|
|
3398
|
+
var defaultOptions = {
|
|
3399
|
+
line: {
|
|
3400
|
+
color: 'black',
|
|
3401
|
+
width: 1,
|
|
3402
|
+
dashPattern: [],
|
|
3403
|
+
},
|
|
3404
|
+
snap: {
|
|
3405
|
+
enabled: false,
|
|
3406
|
+
},
|
|
3407
|
+
};
|
|
3408
|
+
const hasMarkerConfiguration = (chart) => {
|
|
3409
|
+
var _a, _b, _c;
|
|
3410
|
+
// using another plugins options is not ideal, so the issue with marker plugin
|
|
3411
|
+
// should be resolved. As of right now the only chart that uses
|
|
3412
|
+
// tooltip is stock charts.
|
|
3413
|
+
return chart.config.options.scales.x && ((_c = (_b = (_a = chart.config.options) === null || _a === void 0 ? void 0 : _a.plugins) === null || _b === void 0 ? void 0 : _b.tooltip) === null || _c === void 0 ? void 0 : _c.enabled);
|
|
3414
|
+
// @todo when resolving the typings issue with the markerplugin,
|
|
3415
|
+
// this is a better conditional.
|
|
3416
|
+
// return chart.config.options.scales.x && chart.config.options.plugins.marker
|
|
3417
|
+
};
|
|
3418
|
+
const ɵ0$7 = hasMarkerConfiguration;
|
|
3419
|
+
var MarkerPlugin = {
|
|
3420
|
+
id: 'marker',
|
|
3421
|
+
afterInit: function (chart) {
|
|
3422
|
+
if (!hasMarkerConfiguration(chart)) {
|
|
3423
|
+
return;
|
|
3424
|
+
}
|
|
3425
|
+
var xScaleType = chart.config.options.scales.x.type;
|
|
3426
|
+
if (xScaleType !== 'linear' &&
|
|
3427
|
+
xScaleType !== 'time' &&
|
|
3428
|
+
xScaleType !== 'category' &&
|
|
3429
|
+
xScaleType !== 'logarithmic') {
|
|
3430
|
+
return;
|
|
3431
|
+
}
|
|
3432
|
+
if (chart.options.plugins.marker === undefined) {
|
|
3433
|
+
chart.options.plugins.marker = defaultOptions;
|
|
3434
|
+
}
|
|
3435
|
+
chart.marker = {
|
|
3436
|
+
enabled: false,
|
|
3437
|
+
suppressUpdate: false,
|
|
3438
|
+
x: null,
|
|
3439
|
+
originalData: [],
|
|
3440
|
+
originalXRange: {},
|
|
3441
|
+
dragStarted: false,
|
|
3442
|
+
dragStartX: null,
|
|
3443
|
+
dragEndX: null,
|
|
3444
|
+
suppressTooltips: false,
|
|
3445
|
+
ignoreNextEvents: 0,
|
|
3446
|
+
};
|
|
3447
|
+
},
|
|
3448
|
+
getOption: function (chart, category, name) {
|
|
3449
|
+
return valueOrDefault(chart.options.plugins.marker[category]
|
|
3450
|
+
? chart.options.plugins.marker[category][name]
|
|
3451
|
+
: undefined, defaultOptions[category][name]);
|
|
3452
|
+
},
|
|
3453
|
+
getXScale: function (chart) {
|
|
3454
|
+
return chart.data.datasets.length ? chart.scales[chart.getDatasetMeta(0).xAxisID] : null;
|
|
3455
|
+
},
|
|
3456
|
+
getYScale: function (chart) {
|
|
3457
|
+
return chart.scales[chart.getDatasetMeta(0).yAxisID];
|
|
3458
|
+
},
|
|
3459
|
+
afterEvent: function (chart, event) {
|
|
3460
|
+
if (!hasMarkerConfiguration(chart)) {
|
|
3461
|
+
return;
|
|
3462
|
+
}
|
|
3463
|
+
if (chart.config.options.scales.x.length == 0) {
|
|
3464
|
+
return;
|
|
3465
|
+
}
|
|
3466
|
+
let e = event.event;
|
|
3467
|
+
var xScaleType = chart.config.options.scales.x.type;
|
|
3468
|
+
if (xScaleType !== 'linear' &&
|
|
3469
|
+
xScaleType !== 'time' &&
|
|
3470
|
+
xScaleType !== 'category' &&
|
|
3471
|
+
xScaleType !== 'logarithmic') {
|
|
3472
|
+
return;
|
|
3473
|
+
}
|
|
3474
|
+
var xScale = this.getXScale(chart);
|
|
3475
|
+
if (!xScale) {
|
|
3476
|
+
return;
|
|
3477
|
+
}
|
|
3478
|
+
if (chart.marker.ignoreNextEvents > 0) {
|
|
3479
|
+
chart.marker.ignoreNextEvents -= 1;
|
|
3480
|
+
return;
|
|
3481
|
+
}
|
|
3482
|
+
// fix for Safari
|
|
3483
|
+
var buttons = e.native.buttons === undefined ? e.native.which : e.native.buttons;
|
|
3484
|
+
if (e.native.type === 'mouseup') {
|
|
3485
|
+
buttons = 0;
|
|
3486
|
+
}
|
|
3487
|
+
chart.marker.enabled =
|
|
3488
|
+
e.type !== 'mouseout' &&
|
|
3489
|
+
e.x > xScale.getPixelForValue(xScale.min) &&
|
|
3490
|
+
e.x < xScale.getPixelForValue(xScale.max);
|
|
3491
|
+
if (!chart.marker.enabled && !chart.marker.suppressUpdate) {
|
|
3492
|
+
if (e.x > xScale.getPixelForValue(xScale.max)) {
|
|
3493
|
+
// suppress future updates to prevent endless redrawing of chart
|
|
3494
|
+
chart.marker.suppressUpdate = true;
|
|
3495
|
+
chart.update('none');
|
|
3496
|
+
}
|
|
3497
|
+
chart.marker.dragStarted = false; // cancel zoom in progress
|
|
3498
|
+
return false;
|
|
3499
|
+
}
|
|
3500
|
+
chart.marker.suppressUpdate = false;
|
|
3501
|
+
chart.marker.x = e.x;
|
|
3502
|
+
chart.draw();
|
|
3503
|
+
},
|
|
3504
|
+
doDraw: function (chart) {
|
|
3505
|
+
if (!hasMarkerConfiguration(chart)) {
|
|
3506
|
+
return;
|
|
3507
|
+
}
|
|
3508
|
+
if (!chart.marker.enabled) {
|
|
3509
|
+
return;
|
|
3510
|
+
}
|
|
3511
|
+
this.drawTraceLine(chart);
|
|
3512
|
+
this.interpolateValues(chart);
|
|
3513
|
+
this.drawTracePoints(chart);
|
|
3514
|
+
return true;
|
|
3515
|
+
},
|
|
3516
|
+
beforeDraw: function (chart) {
|
|
3517
|
+
return this.doDraw(chart);
|
|
3518
|
+
},
|
|
3519
|
+
// Logic moved to beforeDraw in order
|
|
3520
|
+
// for the vertical line to be drawn
|
|
3521
|
+
// under tooltip and datalabels.
|
|
3522
|
+
// afterDraw: function(chart) {
|
|
3523
|
+
// return this.doDraw(chart);
|
|
3524
|
+
// },
|
|
3525
|
+
drawTraceLine: function (chart) {
|
|
3526
|
+
if (!hasMarkerConfiguration(chart)) {
|
|
3527
|
+
return;
|
|
3528
|
+
}
|
|
3529
|
+
var yScale = this.getYScale(chart);
|
|
3530
|
+
var lineWidth = this.getOption(chart, 'line', 'width');
|
|
3531
|
+
var color = this.getOption(chart, 'line', 'color');
|
|
3532
|
+
var dashPattern = this.getOption(chart, 'line', 'dashPattern');
|
|
3533
|
+
var snapEnabled = this.getOption(chart, 'snap', 'enabled');
|
|
3534
|
+
var lineX = chart.marker.x;
|
|
3535
|
+
if (snapEnabled && chart._active.length) {
|
|
3536
|
+
lineX = chart._active[0].element.x;
|
|
3537
|
+
}
|
|
3538
|
+
chart.ctx.beginPath();
|
|
3539
|
+
chart.ctx.setLineDash(dashPattern);
|
|
3540
|
+
chart.ctx.moveTo(lineX, yScale.getPixelForValue(yScale.max));
|
|
3541
|
+
chart.ctx.lineWidth = lineWidth;
|
|
3542
|
+
chart.ctx.strokeStyle = color;
|
|
3543
|
+
chart.ctx.lineTo(lineX, yScale.getPixelForValue(yScale.min));
|
|
3544
|
+
chart.ctx.stroke();
|
|
3545
|
+
chart.ctx.setLineDash([]);
|
|
3546
|
+
},
|
|
3547
|
+
drawTracePoints: function (chart) {
|
|
3548
|
+
if (!hasMarkerConfiguration(chart)) {
|
|
3549
|
+
return;
|
|
3550
|
+
}
|
|
3551
|
+
for (var chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {
|
|
3552
|
+
var dataset = chart.data.datasets[chartIndex];
|
|
3553
|
+
var meta = chart.getDatasetMeta(chartIndex);
|
|
3554
|
+
var yScale = chart.scales[meta.yAxisID];
|
|
3555
|
+
if (meta.hidden || !dataset.interpolate) {
|
|
3556
|
+
continue;
|
|
3557
|
+
}
|
|
3558
|
+
chart.ctx.beginPath();
|
|
3559
|
+
chart.ctx.arc(chart.marker.x, yScale.getPixelForValue(dataset.interpolatedValue), 3, 0, 2 * Math.PI, false);
|
|
3560
|
+
chart.ctx.fillStyle = 'white';
|
|
3561
|
+
chart.ctx.lineWidth = 2;
|
|
3562
|
+
chart.ctx.strokeStyle = dataset.borderColor;
|
|
3563
|
+
chart.ctx.fill();
|
|
3564
|
+
chart.ctx.stroke();
|
|
3565
|
+
}
|
|
3566
|
+
},
|
|
3567
|
+
interpolateValues: function (chart) {
|
|
3568
|
+
for (var chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {
|
|
3569
|
+
var dataset = chart.data.datasets[chartIndex];
|
|
3570
|
+
var meta = chart.getDatasetMeta(chartIndex);
|
|
3571
|
+
var xScale = chart.scales[meta.xAxisID];
|
|
3572
|
+
var xValue = xScale.getValueForPixel(chart.marker.x);
|
|
3573
|
+
if (meta.hidden || !dataset.interpolate) {
|
|
3574
|
+
continue;
|
|
3575
|
+
}
|
|
3576
|
+
var data = dataset.data;
|
|
3577
|
+
var index = data.findIndex(function (o) {
|
|
3578
|
+
return o.x >= xValue;
|
|
3579
|
+
});
|
|
3580
|
+
var prev = data[index - 1];
|
|
3581
|
+
var next = data[index];
|
|
3582
|
+
if (chart.data.datasets[chartIndex].steppedLine && prev) {
|
|
3583
|
+
dataset.interpolatedValue = prev.y;
|
|
3584
|
+
}
|
|
3585
|
+
else if (prev && next) {
|
|
3586
|
+
var slope = (next.y - prev.y) / (next.x - prev.x);
|
|
3587
|
+
dataset.interpolatedValue = prev.y + (xValue - prev.x) * slope;
|
|
3588
|
+
}
|
|
3589
|
+
else {
|
|
3590
|
+
dataset.interpolatedValue = NaN;
|
|
3591
|
+
}
|
|
3592
|
+
}
|
|
3593
|
+
},
|
|
3594
|
+
};
|
|
3595
|
+
|
|
3270
3596
|
const { getThemeColorHexString: getThemeColorHexString$2 } = ColorHelper;
|
|
3271
3597
|
const hoverBackgroundColor = getThemeColorHexString$2('primary');
|
|
3272
3598
|
const backgroundColor = getThemeColorHexString$2('secondary');
|
|
@@ -3326,13 +3652,19 @@ const CHART_GLOBAL_DEFAULTS = {
|
|
|
3326
3652
|
legend: {
|
|
3327
3653
|
display: false,
|
|
3328
3654
|
},
|
|
3655
|
+
datalabels: {
|
|
3656
|
+
display: false,
|
|
3657
|
+
},
|
|
3658
|
+
tooltip: {
|
|
3659
|
+
enabled: false,
|
|
3660
|
+
},
|
|
3329
3661
|
},
|
|
3330
3662
|
};
|
|
3331
3663
|
|
|
3332
3664
|
const CHART_SCALES = [CategoryScale, LinearScale];
|
|
3333
3665
|
const CHART_ELEMENTS = [BarElement, LineElement, PointElement];
|
|
3334
3666
|
const CHART_CONTROLLERS = [BarController, LineController];
|
|
3335
|
-
const CHART_PLUGINS = [annotationPlugin, Filler];
|
|
3667
|
+
const CHART_PLUGINS = [annotationPlugin, Filler, ChartDataLabels, Tooltip, MarkerPlugin];
|
|
3336
3668
|
/* Order matters; defaults must be merged after register as
|
|
3337
3669
|
register modifies the Chart.defaults objects */
|
|
3338
3670
|
Chart.register(Legend, ...CHART_SCALES, ...CHART_ELEMENTS, ...CHART_CONTROLLERS, ...CHART_PLUGINS);
|
|
@@ -3343,15 +3675,24 @@ Object.entries(CHART_GLOBAL_DEFAULTS).forEach(([key]) => {
|
|
|
3343
3675
|
Chart.defaults[key] = mergedDefaults[key];
|
|
3344
3676
|
});
|
|
3345
3677
|
|
|
3678
|
+
const CHART_LOCALE_DEFAULT = 'en-US';
|
|
3346
3679
|
class ChartJSService {
|
|
3347
3680
|
constructor(chartConfigService) {
|
|
3348
3681
|
this.chartConfigService = chartConfigService;
|
|
3349
3682
|
}
|
|
3350
3683
|
renderChart(args) {
|
|
3351
|
-
const { targetElement, type, data, dataLabels, customOptions, annotations, highlightedElements, } = args;
|
|
3352
|
-
|
|
3353
|
-
|
|
3354
|
-
|
|
3684
|
+
const { targetElement, type, data, dataLabels, customOptions, annotations, dataLabelOptions, highlightedElements, } = args;
|
|
3685
|
+
this.dataLabelOptions = dataLabelOptions || null;
|
|
3686
|
+
this.highlightedElements = highlightedElements || null;
|
|
3687
|
+
this.chartType = type;
|
|
3688
|
+
this.locale = (dataLabelOptions === null || dataLabelOptions === void 0 ? void 0 : dataLabelOptions.locale) || CHART_LOCALE_DEFAULT;
|
|
3689
|
+
const datasets = this.createDatasets(data);
|
|
3690
|
+
const options = this.createOptionsObject({
|
|
3691
|
+
customOptions,
|
|
3692
|
+
annotations,
|
|
3693
|
+
dataLabelOptions,
|
|
3694
|
+
});
|
|
3695
|
+
let config = this.createConfigurationObject(type, datasets, options, dataLabels);
|
|
3355
3696
|
this.initializeNewChart(targetElement.nativeElement, config);
|
|
3356
3697
|
}
|
|
3357
3698
|
redrawChart() {
|
|
@@ -3374,15 +3715,20 @@ class ChartJSService {
|
|
|
3374
3715
|
this.nonDestructivelyUpdateType(type, customOptions);
|
|
3375
3716
|
}
|
|
3376
3717
|
}
|
|
3718
|
+
setDataLabelOptions(dataLabelOptions) {
|
|
3719
|
+
this.dataLabelOptions = dataLabelOptions;
|
|
3720
|
+
}
|
|
3377
3721
|
updateOptions(customOptions, type) {
|
|
3378
3722
|
const annotations = this.getExistingChartAnnotations();
|
|
3379
|
-
this.
|
|
3723
|
+
this.chartType = type;
|
|
3724
|
+
this.chart.options = this.createOptionsObject({ customOptions, annotations });
|
|
3380
3725
|
}
|
|
3381
3726
|
updateAnnotations(annotations) {
|
|
3382
3727
|
const annotationsWithDefaults = this.applyDefaultsToAnnotations(annotations);
|
|
3383
3728
|
this.chart.options.plugins.annotation.annotations = annotationsWithDefaults;
|
|
3384
3729
|
}
|
|
3385
3730
|
updateHighlightedElements(highlightedElements) {
|
|
3731
|
+
this.highlightedElements = highlightedElements;
|
|
3386
3732
|
const oldDatasets = this.chart.data.datasets;
|
|
3387
3733
|
// Clear old datasets of highlighted elements
|
|
3388
3734
|
oldDatasets.map((dataset) => {
|
|
@@ -3391,7 +3737,7 @@ class ChartJSService {
|
|
|
3391
3737
|
delete dataset.kirbyOptions.highlightedElements;
|
|
3392
3738
|
}
|
|
3393
3739
|
});
|
|
3394
|
-
this.chart.data.datasets = this.createDatasets(oldDatasets
|
|
3740
|
+
this.chart.data.datasets = this.createDatasets(oldDatasets);
|
|
3395
3741
|
}
|
|
3396
3742
|
getExistingChartAnnotations() {
|
|
3397
3743
|
var _a, _b;
|
|
@@ -3410,7 +3756,8 @@ class ChartJSService {
|
|
|
3410
3756
|
const datasets = this.chart.data.datasets;
|
|
3411
3757
|
const dataLabels = this.chart.data.labels;
|
|
3412
3758
|
const annotations = this.getExistingChartAnnotations();
|
|
3413
|
-
|
|
3759
|
+
this.chartType = type;
|
|
3760
|
+
const options = this.createOptionsObject({ customOptions, annotations });
|
|
3414
3761
|
const config = this.createConfigurationObject(type, datasets, options, dataLabels);
|
|
3415
3762
|
const canvasElement = this.chart.canvas;
|
|
3416
3763
|
this.chart.destroy();
|
|
@@ -3418,8 +3765,8 @@ class ChartJSService {
|
|
|
3418
3765
|
}
|
|
3419
3766
|
nonDestructivelyUpdateType(chartType, customOptions) {
|
|
3420
3767
|
const annotations = this.getExistingChartAnnotations();
|
|
3768
|
+
this.chartType = chartType;
|
|
3421
3769
|
const options = this.createOptionsObject({
|
|
3422
|
-
type: chartType,
|
|
3423
3770
|
customOptions,
|
|
3424
3771
|
annotations,
|
|
3425
3772
|
});
|
|
@@ -3459,21 +3806,73 @@ class ChartJSService {
|
|
|
3459
3806
|
});
|
|
3460
3807
|
return options;
|
|
3461
3808
|
}
|
|
3809
|
+
createStockOptionsObject(dataLabelOptions) {
|
|
3810
|
+
return {
|
|
3811
|
+
locale: this.locale,
|
|
3812
|
+
plugins: {
|
|
3813
|
+
tooltip: {
|
|
3814
|
+
callbacks: {
|
|
3815
|
+
title: (tooltipItems) => {
|
|
3816
|
+
var _a, _b;
|
|
3817
|
+
const date = toDate((_b = (_a = tooltipItems[0]) === null || _a === void 0 ? void 0 : _a.raw) === null || _b === void 0 ? void 0 : _b.x);
|
|
3818
|
+
if (date.valueOf()) {
|
|
3819
|
+
return date.toLocaleTimeString(this.locale, {
|
|
3820
|
+
day: 'numeric',
|
|
3821
|
+
month: 'short',
|
|
3822
|
+
hour: '2-digit',
|
|
3823
|
+
minute: '2-digit',
|
|
3824
|
+
});
|
|
3825
|
+
}
|
|
3826
|
+
},
|
|
3827
|
+
label: (context) => {
|
|
3828
|
+
// It's not possible to add spacing between color legend and text so we
|
|
3829
|
+
// prefix with a space.
|
|
3830
|
+
return ' ' + context.formattedValue + (dataLabelOptions.valueSuffix || '');
|
|
3831
|
+
},
|
|
3832
|
+
},
|
|
3833
|
+
},
|
|
3834
|
+
},
|
|
3835
|
+
scales: {
|
|
3836
|
+
y: {
|
|
3837
|
+
ticks: {
|
|
3838
|
+
callback: (value) => {
|
|
3839
|
+
return value + (dataLabelOptions.valueSuffix || '');
|
|
3840
|
+
},
|
|
3841
|
+
},
|
|
3842
|
+
},
|
|
3843
|
+
},
|
|
3844
|
+
};
|
|
3845
|
+
}
|
|
3462
3846
|
createOptionsObject(args) {
|
|
3463
|
-
const {
|
|
3464
|
-
const typeConfig = this.chartConfigService.getTypeConfig(
|
|
3847
|
+
const { customOptions, annotations, dataLabelOptions: chartDataLabelOptions } = args;
|
|
3848
|
+
const typeConfig = this.chartConfigService.getTypeConfig(this.chartType);
|
|
3465
3849
|
const typeConfigOptions = typeConfig === null || typeConfig === void 0 ? void 0 : typeConfig.options;
|
|
3466
3850
|
const annotationPluginOptions = annotations
|
|
3467
3851
|
? this.createAnnotationPluginOptionsObject(annotations)
|
|
3468
3852
|
: {};
|
|
3469
|
-
|
|
3853
|
+
const stockOptions = this.chartType === 'stock' ? this.createStockOptionsObject(chartDataLabelOptions) : {};
|
|
3854
|
+
let options = mergeDeepAll(stockOptions, typeConfigOptions, customOptions, annotationPluginOptions);
|
|
3470
3855
|
return this.applyInteractionFunctionsExtensions(options);
|
|
3471
3856
|
}
|
|
3857
|
+
getDefaultStockLabels(datasets, locale) {
|
|
3858
|
+
const largestDataset = datasets.reduce((previousDataset, currentDataset) => previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset);
|
|
3859
|
+
return largestDataset.data.map((point) => toDate(point.x).toLocaleDateString(locale, {
|
|
3860
|
+
month: 'short',
|
|
3861
|
+
day: 'numeric',
|
|
3862
|
+
}));
|
|
3863
|
+
}
|
|
3472
3864
|
createConfigurationObject(type, datasets, options, dataLabels) {
|
|
3473
|
-
/* chartJS requires labels; if none is provided create an empty string array
|
|
3474
|
-
to make it optional for consumer */
|
|
3475
|
-
const labels = !dataLabels ? this.createBlankLabels(datasets) : dataLabels;
|
|
3476
3865
|
const typeConfig = this.chartConfigService.getTypeConfig(type);
|
|
3866
|
+
// chartJS requires labels; if none is provided create an empty string array
|
|
3867
|
+
// to make it optional for consumer.
|
|
3868
|
+
// However the stock chart, should have autogenerated labels if no
|
|
3869
|
+
// custom labels are supplied.
|
|
3870
|
+
const isStockType = type === 'stock';
|
|
3871
|
+
const labels = !dataLabels
|
|
3872
|
+
? isStockType
|
|
3873
|
+
? this.getDefaultStockLabels(datasets, this.locale)
|
|
3874
|
+
: this.createBlankLabels(datasets)
|
|
3875
|
+
: dataLabels;
|
|
3477
3876
|
return mergeDeepAll(typeConfig, {
|
|
3478
3877
|
data: {
|
|
3479
3878
|
labels,
|
|
@@ -3496,12 +3895,62 @@ class ChartJSService {
|
|
|
3496
3895
|
}
|
|
3497
3896
|
});
|
|
3498
3897
|
}
|
|
3499
|
-
createDatasets(data
|
|
3898
|
+
createDatasets(data) {
|
|
3899
|
+
var _a, _b, _c;
|
|
3900
|
+
// We need to modify the datasets in order to add datalabels.
|
|
3901
|
+
if (((_a = this.dataLabelOptions) === null || _a === void 0 ? void 0 : _a.showCurrent) || ((_b = this.dataLabelOptions) === null || _b === void 0 ? void 0 : _b.showMax) || ((_c = this.dataLabelOptions) === null || _c === void 0 ? void 0 : _c.showMin)) {
|
|
3902
|
+
data = this.addDataLabelsData(data);
|
|
3903
|
+
}
|
|
3500
3904
|
let datasets = isNumberArray(data) ? [{ data }] : data;
|
|
3501
|
-
if (highlightedElements)
|
|
3502
|
-
this.addHighlightedElementsToDatasets(highlightedElements, datasets);
|
|
3905
|
+
if (this.highlightedElements)
|
|
3906
|
+
this.addHighlightedElementsToDatasets(this.highlightedElements, datasets);
|
|
3503
3907
|
return datasets;
|
|
3504
3908
|
}
|
|
3909
|
+
/**
|
|
3910
|
+
* Decorate ChartDataset with properties to allow for datalabels.
|
|
3911
|
+
*
|
|
3912
|
+
* @param data
|
|
3913
|
+
* @returns ChartDataset[]
|
|
3914
|
+
*/
|
|
3915
|
+
addDataLabelsData(data) {
|
|
3916
|
+
if (isNumberArray(data)) {
|
|
3917
|
+
throw Error("Currently it's impossible to add dataLabels to non ScatterDataPoint datasets");
|
|
3918
|
+
}
|
|
3919
|
+
const decorateDataPoint = (set, axis, direction, position) => {
|
|
3920
|
+
const { value, pointer } = this.locateValueIndexInDataset(set, axis, direction);
|
|
3921
|
+
set.data[pointer] = Object.assign(Object.assign({}, set.data[pointer]), { datalabel: {
|
|
3922
|
+
value: value + (this.dataLabelOptions.valueSuffix || ''),
|
|
3923
|
+
position,
|
|
3924
|
+
} });
|
|
3925
|
+
};
|
|
3926
|
+
data.map((set) => {
|
|
3927
|
+
if (this.dataLabelOptions.showMin) {
|
|
3928
|
+
decorateDataPoint(set, 'y', 'low', 'bottom');
|
|
3929
|
+
}
|
|
3930
|
+
if (this.dataLabelOptions.showMax) {
|
|
3931
|
+
decorateDataPoint(set, 'y', 'high', 'top');
|
|
3932
|
+
}
|
|
3933
|
+
if (this.dataLabelOptions.showCurrent) {
|
|
3934
|
+
decorateDataPoint(set, 'x', 'high', 'right');
|
|
3935
|
+
}
|
|
3936
|
+
});
|
|
3937
|
+
return data;
|
|
3938
|
+
}
|
|
3939
|
+
locateValueIndexInDataset(dataset, axis, direction) {
|
|
3940
|
+
let pointer;
|
|
3941
|
+
let value;
|
|
3942
|
+
dataset.data.forEach((datapoint, index) => {
|
|
3943
|
+
if (direction == 'low' && (!value || datapoint[axis] < value)) {
|
|
3944
|
+
value = datapoint['y'];
|
|
3945
|
+
pointer = index;
|
|
3946
|
+
}
|
|
3947
|
+
if (direction == 'high' && (!value || datapoint[axis] > value)) {
|
|
3948
|
+
value = datapoint['y'];
|
|
3949
|
+
pointer = index;
|
|
3950
|
+
}
|
|
3951
|
+
});
|
|
3952
|
+
return { value, pointer };
|
|
3953
|
+
}
|
|
3505
3954
|
}
|
|
3506
3955
|
ChartJSService.decorators = [
|
|
3507
3956
|
{ type: Injectable }
|
|
@@ -3571,6 +4020,7 @@ class ChartComponent {
|
|
|
3571
4020
|
dataLabels: this.dataLabels,
|
|
3572
4021
|
customOptions: this.customOptions,
|
|
3573
4022
|
annotations: this.annotations,
|
|
4023
|
+
dataLabelOptions: this.dataLabelOptions,
|
|
3574
4024
|
highlightedElements: this.highlightedElements,
|
|
3575
4025
|
});
|
|
3576
4026
|
}
|
|
@@ -3613,6 +4063,7 @@ ChartComponent.propDecorators = {
|
|
|
3613
4063
|
data: [{ type: Input }],
|
|
3614
4064
|
dataLabels: [{ type: Input }],
|
|
3615
4065
|
customOptions: [{ type: Input }],
|
|
4066
|
+
dataLabelOptions: [{ type: Input }],
|
|
3616
4067
|
annotations: [{ type: Input }],
|
|
3617
4068
|
highlightedElements: [{ type: Input }],
|
|
3618
4069
|
_height: [{ type: HostBinding, args: ['style.--kirby-chart-height',] }],
|
|
@@ -3621,7 +4072,7 @@ ChartComponent.propDecorators = {
|
|
|
3621
4072
|
};
|
|
3622
4073
|
|
|
3623
4074
|
const stockChartDeprecatedOptions = (locale, height) => {
|
|
3624
|
-
const options = defaultOptions(locale);
|
|
4075
|
+
const options = defaultOptions$1(locale);
|
|
3625
4076
|
const transparentColor = 'rgba(255,255,255,0)';
|
|
3626
4077
|
options.chart.backgroundColor = transparentColor;
|
|
3627
4078
|
options.chart.height = height;
|
|
@@ -3717,7 +4168,7 @@ const annotations = (locale) => {
|
|
|
3717
4168
|
},
|
|
3718
4169
|
};
|
|
3719
4170
|
};
|
|
3720
|
-
const defaultOptions = (locale) => {
|
|
4171
|
+
const defaultOptions$1 = (locale) => {
|
|
3721
4172
|
return {
|
|
3722
4173
|
chart: {
|
|
3723
4174
|
zoomType: 'x',
|
|
@@ -3799,7 +4250,7 @@ const defaultOptions = (locale) => {
|
|
|
3799
4250
|
],
|
|
3800
4251
|
};
|
|
3801
4252
|
};
|
|
3802
|
-
const ɵ0$
|
|
4253
|
+
const ɵ0$8 = defaultOptions$1;
|
|
3803
4254
|
|
|
3804
4255
|
// @ts-ignore
|
|
3805
4256
|
AnnotationsModule(Highcharts$1);
|
|
@@ -8587,5 +9038,5 @@ KirbyModule.ctorParameters = () => [
|
|
|
8587
9038
|
* Generated bundle index. Do not edit.
|
|
8588
9039
|
*/
|
|
8589
9040
|
|
|
8590
|
-
export { AccordionDirective, AccordionItemComponent, ActionSheetComponent, AppComponent, AppModule, AvatarComponent, AvatarSize, KirbyBadge as BadgeComponent, ButtonComponent, ButtonSize, COMPONENT_PROPS, CalendarComponent, CardComponent, CardFooterComponent, CardHeaderComponent, ChartComponent, ChartDeprecatedComponent, ChartDeprecatedType, CheckboxComponent, ChipComponent, ComponentLoaderDirective, DateInputDirective, DecimalMaskDirective, DividerComponent, DropdownComponent, EmptyStateComponent, FabSheetComponent, FitHeadingDirective, FitHeadingModule, FlagComponent, FormFieldComponent, FormFieldMessageComponent, GridCardConfiguration, GridComponent, GroupByPipe, HorizontalDirection, ICON_SETTINGS, IconComponent, IconModule, IconRegistryService, IconSize, InfiniteScrollDirective, InputComponent, InputCounterComponent, InputSize, ItemComponent, ItemGroupComponent, ItemModule, ItemSize, ItemSlidingComponent, KeyHandlerDirective, KirbyAnimation, KirbyModule, LabelComponent, ListComponent, ListExperimentalComponent, ListFlexItemDirective, ListFooterDirective, ListHeaderComponent, ListHeaderDirective, ListItemColorDirective, ListItemComponent, ListItemDirective, ListItemTemplateDirective, ListSectionHeaderComponent, ListSectionHeaderDirective, LoadingOverlayComponent, LoadingOverlayService, Modal, ModalController, ModalFooterComponent, PageActionsComponent, PageActionsDirective, PageComponent, PageContentComponent, PageContentDirective, PageFooterComponent, PageModule, PageProgressComponent, PageTitleComponent, PageTitleDirective, PageToolbarTitleDirective, PlatformService, PopoverComponent, ProgressCircleComponent, RadioComponent, RadioGroupComponent, RangeComponent, ReorderEvent, ReorderListComponent, ResizeObserverFactory, ResizeObserverService, RouterOutletComponent, RouterOutletModule, ScssHelper, SectionHeaderComponent, SegmentedControlComponent, SegmentedControlMode, SlideButtonComponent, SlideDirective, SlidesComponent, SpinnerComponent, StockChartDeprecatedComponent, TabButtonComponent, TabsComponent, TabsModule, TabsService, TextareaComponent, ThemeColorDirective, ToastController, ToggleButtonComponent, ToggleComponent, annotations, defaultIcons, elementHasAncestor, isNumberArray, selectedTabClickEvent, stockChartDeprecatedOptions, ɵ0$
|
|
9041
|
+
export { AccordionDirective, AccordionItemComponent, ActionSheetComponent, AppComponent, AppModule, AvatarComponent, AvatarSize, KirbyBadge as BadgeComponent, ButtonComponent, ButtonSize, COMPONENT_PROPS, CalendarComponent, CardComponent, CardFooterComponent, CardHeaderComponent, ChartComponent, ChartDeprecatedComponent, ChartDeprecatedType, CheckboxComponent, ChipComponent, ComponentLoaderDirective, DateInputDirective, DecimalMaskDirective, DividerComponent, DropdownComponent, EmptyStateComponent, FabSheetComponent, FitHeadingDirective, FitHeadingModule, FlagComponent, FormFieldComponent, FormFieldMessageComponent, GridCardConfiguration, GridComponent, GroupByPipe, HorizontalDirection, ICON_SETTINGS, IconComponent, IconModule, IconRegistryService, IconSize, InfiniteScrollDirective, InputComponent, InputCounterComponent, InputSize, ItemComponent, ItemGroupComponent, ItemModule, ItemSize, ItemSlidingComponent, KeyHandlerDirective, KirbyAnimation, KirbyModule, LabelComponent, ListComponent, ListExperimentalComponent, ListFlexItemDirective, ListFooterDirective, ListHeaderComponent, ListHeaderDirective, ListItemColorDirective, ListItemComponent, ListItemDirective, ListItemTemplateDirective, ListSectionHeaderComponent, ListSectionHeaderDirective, LoadingOverlayComponent, LoadingOverlayService, Modal, ModalController, ModalFooterComponent, PageActionsComponent, PageActionsDirective, PageComponent, PageContentComponent, PageContentDirective, PageFooterComponent, PageModule, PageProgressComponent, PageTitleComponent, PageTitleDirective, PageToolbarTitleDirective, PlatformService, PopoverComponent, ProgressCircleComponent, RadioComponent, RadioGroupComponent, RangeComponent, ReorderEvent, ReorderListComponent, ResizeObserverFactory, ResizeObserverService, RouterOutletComponent, RouterOutletModule, ScssHelper, SectionHeaderComponent, SegmentedControlComponent, SegmentedControlMode, SlideButtonComponent, SlideDirective, SlidesComponent, SpinnerComponent, StockChartDeprecatedComponent, TabButtonComponent, TabsComponent, TabsModule, TabsService, TextareaComponent, ThemeColorDirective, ToastController, ToggleButtonComponent, ToggleComponent, annotations, defaultIcons, elementHasAncestor, isNumberArray, selectedTabClickEvent, stockChartDeprecatedOptions, ɵ0$8 as ɵ0, ProxyCmp as ɵa, AppModule as ɵb, ModalWrapperComponent as ɵba, Modal as ɵbb, ButtonComponent as ɵbc, IconComponent as ɵbd, IconRegistryService as ɵbe, ICON_SETTINGS as ɵbg, ResizeObserverService as ɵbh, ResizeObserverFactory as ɵbi, FitHeadingModule as ɵbj, FitHeadingDirective as ɵbk, LineClampHelper as ɵbl, SpinnerModule as ɵbm, SpinnerComponent as ɵbn, TabsModule as ɵbo, IconModule as ɵbp, TabButtonComponent as ɵbq, ItemModule as ɵbr, ItemComponent as ɵbs, LabelComponent as ɵbt, ToggleButtonModule as ɵbu, ToggleButtonComponent as ɵbv, ListModule as ɵbw, ListComponent as ɵbx, ListHelper as ɵby, GroupByPipe as ɵbz, AppComponent as ɵc, InfiniteScrollDirective as ɵca, ListItemDirective as ɵcb, ListFlexItemDirective as ɵcc, ListItemTemplateDirective as ɵcd, ListHeaderDirective as ɵce, ListSectionHeaderDirective as ɵcf, ListFooterDirective as ɵcg, ListItemComponent as ɵch, ListSectionHeaderComponent as ɵci, ListHeaderComponent as ɵcj, ListExperimentalComponent as ɵck, ListItemColorDirective as ɵcl, ChartModule as ɵcm, ChartComponent as ɵcn, ChartJSService as ɵco, ChartConfigService as ɵcp, CardComponent as ɵcq, CardHeaderComponent as ɵcr, CardFooterComponent as ɵcs, ChartDeprecatedComponent as ɵct, ChartDeprecatedHelper as ɵcu, DONUT_OPTIONS as ɵcv, DonutOptions as ɵcw, AREASPLINE_OPTIONS as ɵcx, AreaSplineOptions as ɵcy, TIMESERIES_OPTIONS as ɵcz, RouterOutletComponent as ɵd, TimeSeriesOptions as ɵda, ACTIVITYGAUGE_OPTIONS as ɵdb, ActivityGaugeOptions as ɵdc, StockChartDeprecatedComponent as ɵdd, GridComponent as ɵde, BreakpointHelperService as ɵdf, ComponentLoaderDirective as ɵdg, AvatarComponent as ɵdh, CalendarComponent as ɵdi, CalendarHelper as ɵdj, CheckboxComponent as ɵdk, ActionSheetComponent as ɵdl, ModalFooterComponent as ɵdm, ModalRouterLinkDirective as ɵdn, SegmentedControlComponent as ɵdo, ChipComponent as ɵdp, ThemeColorDirective as ɵdq, DateInputDirective as ɵdr, DecimalMaskDirective as ɵds, SlideButtonComponent as ɵdt, ToggleComponent as ɵdu, EmptyStateComponent as ɵdv, FormFieldComponent as ɵdw, InputCounterComponent as ɵdx, RadioGroupComponent as ɵdy, RadioComponent as ɵdz, ModalController as ɵe, InputComponent as ɵea, TextareaComponent as ɵeb, FabSheetComponent as ɵec, DividerComponent as ɵed, ReorderListComponent as ɵee, DropdownComponent as ɵef, PopoverComponent as ɵeg, KeyboardHandlerService as ɵeh, LoadingOverlayComponent as ɵei, ProgressCircleComponent as ɵej, FlagComponent as ɵek, SlideDirective as ɵel, SlidesComponent as ɵem, AccordionDirective as ɵen, AccordionItemComponent as ɵeo, ItemSlidingComponent as ɵep, RangeComponent as ɵeq, ElementAsButtonDirective as ɵer, ItemGroupComponent as ɵes, SectionHeaderComponent as ɵet, KeyHandlerDirective as ɵeu, FormFieldMessageComponent as ɵev, AlertComponent as ɵew, ModalCompactWrapperComponent as ɵex, ProgressCircleRingComponent as ɵey, ToastHelper as ɵez, ModalHelper as ɵf, ToastController as ɵfa, LoadingOverlayService as ɵfb, appInitialize as ɵfc, customElementsInitializer as ɵfd, ModalAnimationBuilderService as ɵg, PlatformService as ɵh, WindowRef as ɵi, ActionSheetHelper as ɵj, AlertHelper as ɵk, ModalNavigationService as ɵl, RouterOutletModule as ɵm, PageModule as ɵn, PageTitleDirective as ɵo, PageToolbarTitleDirective as ɵp, PageActionsDirective as ɵq, PageContentDirective as ɵr, PageProgressComponent as ɵs, PageTitleComponent as ɵt, PageContentComponent as ɵu, PageActionsComponent as ɵv, PageComponent as ɵw, TabsComponent as ɵx, TabsService as ɵy, PageFooterComponent as ɵz };
|
|
8591
9042
|
//# sourceMappingURL=kirbydesign-designsystem.js.map
|