@frollo/frollo-web-ui 9.0.1 → 9.0.3
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/cjs/index.js +10733 -3062
- package/esm/{_rollupPluginBabelHelpers-DODWUb5N.js → _rollupPluginBabelHelpers-BKlDnZ7n.js} +1 -1
- package/esm/fw-accordion.js +15 -18
- package/esm/fw-alert.js +32 -25
- package/esm/fw-bar-chart.js +265 -93
- package/esm/fw-button-DZTHZLjk.js +318 -0
- package/esm/fw-button.js +2 -2
- package/esm/{fw-card-D45R4kN-.js → fw-card-XGtsK2bM.js} +7 -10
- package/esm/fw-card.js +2 -2
- package/esm/fw-checkbox.js +8 -11
- package/esm/fw-date-picker.js +85 -49
- package/esm/fw-drawer.js +9 -9
- package/esm/{fw-dropdown-58wyuzsW.js → fw-dropdown-CSmYTm5O.js} +11 -14
- package/esm/fw-dropdown.js +7 -6
- package/esm/fw-form.js +1 -1
- package/esm/fw-icons.js +11 -12
- package/esm/fw-image-A2lXYs0u.js +325 -0
- package/esm/fw-image.js +5 -4
- package/esm/{fw-input-C2-cZ-BY.js → fw-input-BiPWWfK3.js} +12 -19
- package/esm/fw-input.js +3 -3
- package/esm/fw-loading-bar-3x4tkF1B.js +37 -0
- package/esm/fw-loading.js +89 -40
- package/esm/fw-media-picker.js +10 -653
- package/esm/fw-modal.js +11 -10
- package/esm/fw-navigation-menu.js +36 -41
- package/esm/fw-popover-BZ-zqUme.js +330 -0
- package/esm/fw-popover.js +2 -3
- package/esm/fw-progress-bar.js +1 -1
- package/esm/fw-provider-list.js +108 -88
- package/esm/fw-sidebar-menu.js +58 -51
- package/esm/fw-slider.js +64 -61
- package/esm/fw-switch.js +76 -49
- package/esm/fw-table-row-BU0xaybR.js +447 -0
- package/esm/fw-table.js +5 -6
- package/esm/fw-tabs.js +87 -35
- package/esm/fw-tag-BRxPc4zc.js +199 -0
- package/esm/fw-tag.js +4 -4
- package/esm/fw-toast.js +58 -76
- package/esm/fw-transactions-card.js +20 -20
- package/esm/{get-root-colours-DCjlYelc.js → get-root-colours-DCCAnRF4.js} +3 -1
- package/esm/index-C8z11jcJ.js +7583 -0
- package/esm/index-DHyRsKsZ.js +843 -0
- package/esm/index-eP2GMSdQ.js +755 -0
- package/esm/index.js +54 -61
- package/esm/{uniqueId-DZdGzBh8.js → uniqueId-DK6xzFd8.js} +1 -1
- package/esm/{vee-validate.esm-3ptvCDR1.js → vee-validate-0dtT5GSQ.js} +182 -305
- package/frollo-web-ui.esm.js +10790 -3117
- package/icons/circle-check.svg +4 -0
- package/index.d.ts +1522 -586
- package/package.json +11 -11
- package/styles/tailwind.css +34 -2
- package/types/components/fw-accordion/fw-accordion.vue.d.ts +9 -7
- package/types/components/fw-alert/fw-alert.vue.d.ts +11 -6
- package/types/components/fw-bar-chart/fw-bar-chart.vue.d.ts +15 -64
- package/types/components/fw-button/fw-button.vue.d.ts +11 -7
- package/types/components/fw-card/fw-card.vue.d.ts +6 -6
- package/types/components/fw-checkbox/fw-checkbox.vue.d.ts +365 -5
- package/types/components/fw-date-picker/fw-date-picker.vue.d.ts +3 -242
- package/types/components/fw-drawer/fw-drawer.vue.d.ts +11 -8
- package/types/components/fw-dropdown/fw-dropdown.vue.d.ts +20 -12
- package/types/components/fw-icons/fw-success-animation.vue.d.ts +1 -1
- package/types/components/fw-image/fw-image.vue.d.ts +33 -7
- package/types/components/fw-input/fw-input.vue.d.ts +368 -10
- package/types/components/fw-loading/fw-loading-bar.vue.d.ts +7 -5
- package/types/components/fw-loading/fw-loading-card.vue.d.ts +3 -1
- package/types/components/fw-loading/fw-loading-dots.vue.d.ts +8 -1
- package/types/components/fw-loading/fw-loading-table.vue.d.ts +11 -6
- package/types/components/fw-media-picker/fw-media-picker.vue.d.ts +27 -18
- package/types/components/fw-modal/fw-modal.vue.d.ts +11 -7
- package/types/components/fw-navigation-menu/fw-navigation-menu.vue.d.ts +12 -8
- package/types/components/fw-popover/fw-popover.vue.d.ts +16 -21
- package/types/components/fw-progress-bar/fw-progress-bar.vue.d.ts +6 -4
- package/types/components/fw-provider-list/fw-provider-list.vue.d.ts +20 -45
- package/types/components/fw-sidebar-menu/fw-sidebar-menu.vue.d.ts +13 -7
- package/types/components/fw-slider/fw-slider.vue.d.ts +11 -8
- package/types/components/fw-switch/fw-switch.vue.d.ts +383 -9
- package/types/components/fw-switch/index.types.d.ts +1 -0
- package/types/components/fw-table/fw-table-head.vue.d.ts +1 -1
- package/types/components/fw-table/fw-table-row.vue.d.ts +1 -1
- package/types/components/fw-table/fw-table.vue.d.ts +40 -19
- package/types/components/fw-table/index.types.d.ts +36 -2
- package/types/components/fw-tabs/fw-tab.vue.d.ts +4 -8
- package/types/components/fw-tabs/fw-tabs.vue.d.ts +11 -8
- package/types/components/fw-tabs/index.types.d.ts +14 -4
- package/types/components/fw-tag/fw-tag.vue.d.ts +14 -8
- package/types/components/fw-toast/fw-toast.vue.d.ts +17 -22
- package/types/components/fw-transactions-card/fw-transactions-card.vue.d.ts +6 -3
- package/types/directives/lazy-loader.d.ts +11 -2
- package/types/helpers/get-root-colours.d.ts +1 -0
- package/web-components/index.js +16793 -7702
- package/esm/fw-button-YMoW4x4c.js +0 -296
- package/esm/fw-image-D-OHafdw.js +0 -217
- package/esm/fw-loading-bar-DecYSBC_.js +0 -45
- package/esm/fw-popover-B4bsfuxm.js +0 -620
- package/esm/fw-table-row-Cgi8871h.js +0 -389
- package/esm/fw-tag-fDo50Nw7.js +0 -177
- package/esm/index-BsEH8YYr.js +0 -979
package/esm/fw-bar-chart.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { b as _toConsumableArray } from './_rollupPluginBabelHelpers-
|
|
1
|
+
import { b as _toConsumableArray } from './_rollupPluginBabelHelpers-BKlDnZ7n.js';
|
|
2
2
|
import { version as version$1, toRaw, isProxy, defineComponent, ref, shallowRef, onMounted, onUnmounted, watch, nextTick, h, computed, resolveComponent, createElementBlock, createCommentVNode, openBlock, normalizeStyle, createVNode, toDisplayString } from 'vue';
|
|
3
|
-
import { u as useColours } from './get-root-colours-
|
|
4
|
-
import { u as uniqueId } from './uniqueId-
|
|
3
|
+
import { u as useColours } from './get-root-colours-DCCAnRF4.js';
|
|
4
|
+
import { u as uniqueId } from './uniqueId-DK6xzFd8.js';
|
|
5
5
|
|
|
6
6
|
/*!
|
|
7
7
|
* @kurkle/color v0.3.2
|
|
@@ -592,9 +592,9 @@ function index_esm(input) {
|
|
|
592
592
|
}
|
|
593
593
|
|
|
594
594
|
/*!
|
|
595
|
-
* Chart.js v4.
|
|
595
|
+
* Chart.js v4.5.1
|
|
596
596
|
* https://www.chartjs.org
|
|
597
|
-
* (c)
|
|
597
|
+
* (c) 2025 Chart.js Contributors
|
|
598
598
|
* Released under the MIT License
|
|
599
599
|
*/
|
|
600
600
|
|
|
@@ -615,7 +615,7 @@ function index_esm(input) {
|
|
|
615
615
|
* @param value - The value to test.
|
|
616
616
|
* @since 2.7.0
|
|
617
617
|
*/ function isNullOrUndef(value) {
|
|
618
|
-
return value === null ||
|
|
618
|
+
return value === null || value === undefined;
|
|
619
619
|
}
|
|
620
620
|
/**
|
|
621
621
|
* Returns true if `value` is an array (including typed arrays), else returns false.
|
|
@@ -917,8 +917,13 @@ function almostEquals(x, y, epsilon) {
|
|
|
917
917
|
result.sort((a, b)=>a - b).pop();
|
|
918
918
|
return result;
|
|
919
919
|
}
|
|
920
|
+
/**
|
|
921
|
+
* Verifies that attempting to coerce n to string or number won't throw a TypeError.
|
|
922
|
+
*/ function isNonPrimitive(n) {
|
|
923
|
+
return typeof n === 'symbol' || typeof n === 'object' && n !== null && !(Symbol.toPrimitive in n || 'toString' in n || 'valueOf' in n);
|
|
924
|
+
}
|
|
920
925
|
function isNumber(n) {
|
|
921
|
-
return !isNaN(parseFloat(n)) && isFinite(n);
|
|
926
|
+
return !isNonPrimitive(n) && !isNaN(parseFloat(n)) && isFinite(n);
|
|
922
927
|
}
|
|
923
928
|
function almostWhole(x, epsilon) {
|
|
924
929
|
const rounded = Math.round(x);
|
|
@@ -1214,18 +1219,29 @@ function fontString(pixelSize, fontStyle, fontFamily) {
|
|
|
1214
1219
|
let start = 0;
|
|
1215
1220
|
let count = pointCount;
|
|
1216
1221
|
if (meta._sorted) {
|
|
1217
|
-
const { iScale , _parsed } = meta;
|
|
1222
|
+
const { iScale , vScale , _parsed } = meta;
|
|
1223
|
+
const spanGaps = meta.dataset ? meta.dataset.options ? meta.dataset.options.spanGaps : null : null;
|
|
1218
1224
|
const axis = iScale.axis;
|
|
1219
1225
|
const { min , max , minDefined , maxDefined } = iScale.getUserBounds();
|
|
1220
1226
|
if (minDefined) {
|
|
1221
|
-
start =
|
|
1227
|
+
start = Math.min(// @ts-expect-error Need to type _parsed
|
|
1222
1228
|
_lookupByKey(_parsed, axis, min).lo, // @ts-expect-error Need to fix types on _lookupByKey
|
|
1223
|
-
animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo)
|
|
1229
|
+
animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo);
|
|
1230
|
+
if (spanGaps) {
|
|
1231
|
+
const distanceToDefinedLo = _parsed.slice(0, start + 1).reverse().findIndex((point)=>!isNullOrUndef(point[vScale.axis]));
|
|
1232
|
+
start -= Math.max(0, distanceToDefinedLo);
|
|
1233
|
+
}
|
|
1234
|
+
start = _limitValue(start, 0, pointCount - 1);
|
|
1224
1235
|
}
|
|
1225
1236
|
if (maxDefined) {
|
|
1226
|
-
|
|
1237
|
+
let end = Math.max(// @ts-expect-error Need to type _parsed
|
|
1227
1238
|
_lookupByKey(_parsed, iScale.axis, max, true).hi + 1, // @ts-expect-error Need to fix types on _lookupByKey
|
|
1228
|
-
animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1)
|
|
1239
|
+
animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1);
|
|
1240
|
+
if (spanGaps) {
|
|
1241
|
+
const distanceToDefinedHi = _parsed.slice(end - 1).findIndex((point)=>!isNullOrUndef(point[vScale.axis]));
|
|
1242
|
+
end += Math.max(0, distanceToDefinedHi);
|
|
1243
|
+
}
|
|
1244
|
+
count = _limitValue(end, start, pointCount) - start;
|
|
1229
1245
|
} else {
|
|
1230
1246
|
count = pointCount - start;
|
|
1231
1247
|
}
|
|
@@ -2719,12 +2735,6 @@ function capBezierPoints(points, area) {
|
|
|
2719
2735
|
}
|
|
2720
2736
|
|
|
2721
2737
|
/**
|
|
2722
|
-
* Note: typedefs are auto-exported, so use a made-up `dom` namespace where
|
|
2723
|
-
* necessary to avoid duplicates with `export * from './helpers`; see
|
|
2724
|
-
* https://github.com/microsoft/TypeScript/issues/46011
|
|
2725
|
-
* @typedef { import('../core/core.controller.js').default } dom.Chart
|
|
2726
|
-
* @typedef { import('../../types').ChartEvent } ChartEvent
|
|
2727
|
-
*/ /**
|
|
2728
2738
|
* @private
|
|
2729
2739
|
*/ function _isDomSupported() {
|
|
2730
2740
|
return typeof window !== 'undefined' && typeof document !== 'undefined';
|
|
@@ -2894,10 +2904,10 @@ function getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {
|
|
|
2894
2904
|
* @returns True if the canvas context size or transformation has changed.
|
|
2895
2905
|
*/ function retinaScale(chart, forceRatio, forceStyle) {
|
|
2896
2906
|
const pixelRatio = forceRatio || 1;
|
|
2897
|
-
const deviceHeight =
|
|
2898
|
-
const deviceWidth =
|
|
2899
|
-
chart.height =
|
|
2900
|
-
chart.width =
|
|
2907
|
+
const deviceHeight = round1(chart.height * pixelRatio);
|
|
2908
|
+
const deviceWidth = round1(chart.width * pixelRatio);
|
|
2909
|
+
chart.height = round1(chart.height);
|
|
2910
|
+
chart.width = round1(chart.width);
|
|
2901
2911
|
const canvas = chart.canvas;
|
|
2902
2912
|
// If no style has been set on the canvas, the render size is used as display size,
|
|
2903
2913
|
// making the chart visually bigger, so let's enforce it to the "correct" values.
|
|
@@ -3337,10 +3347,39 @@ function styleChanged(style, prevStyle) {
|
|
|
3337
3347
|
return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);
|
|
3338
3348
|
}
|
|
3339
3349
|
|
|
3350
|
+
function getSizeForArea(scale, chartArea, field) {
|
|
3351
|
+
return scale.options.clip ? scale[field] : chartArea[field];
|
|
3352
|
+
}
|
|
3353
|
+
function getDatasetArea(meta, chartArea) {
|
|
3354
|
+
const { xScale , yScale } = meta;
|
|
3355
|
+
if (xScale && yScale) {
|
|
3356
|
+
return {
|
|
3357
|
+
left: getSizeForArea(xScale, chartArea, 'left'),
|
|
3358
|
+
right: getSizeForArea(xScale, chartArea, 'right'),
|
|
3359
|
+
top: getSizeForArea(yScale, chartArea, 'top'),
|
|
3360
|
+
bottom: getSizeForArea(yScale, chartArea, 'bottom')
|
|
3361
|
+
};
|
|
3362
|
+
}
|
|
3363
|
+
return chartArea;
|
|
3364
|
+
}
|
|
3365
|
+
function getDatasetClipArea(chart, meta) {
|
|
3366
|
+
const clip = meta._clip;
|
|
3367
|
+
if (clip.disabled) {
|
|
3368
|
+
return false;
|
|
3369
|
+
}
|
|
3370
|
+
const area = getDatasetArea(meta, chart.chartArea);
|
|
3371
|
+
return {
|
|
3372
|
+
left: clip.left === false ? 0 : area.left - (clip.left === true ? 0 : clip.left),
|
|
3373
|
+
right: clip.right === false ? chart.width : area.right + (clip.right === true ? 0 : clip.right),
|
|
3374
|
+
top: clip.top === false ? 0 : area.top - (clip.top === true ? 0 : clip.top),
|
|
3375
|
+
bottom: clip.bottom === false ? chart.height : area.bottom + (clip.bottom === true ? 0 : clip.bottom)
|
|
3376
|
+
};
|
|
3377
|
+
}
|
|
3378
|
+
|
|
3340
3379
|
/*!
|
|
3341
|
-
* Chart.js v4.
|
|
3380
|
+
* Chart.js v4.5.1
|
|
3342
3381
|
* https://www.chartjs.org
|
|
3343
|
-
* (c)
|
|
3382
|
+
* (c) 2025 Chart.js Contributors
|
|
3344
3383
|
* Released under the MIT License
|
|
3345
3384
|
*/
|
|
3346
3385
|
|
|
@@ -3774,9 +3813,11 @@ function applyStack(stack, value, dsIndex, options = {}) {
|
|
|
3774
3813
|
if (value === null) {
|
|
3775
3814
|
return;
|
|
3776
3815
|
}
|
|
3816
|
+
let found = false;
|
|
3777
3817
|
for(i = 0, ilen = keys.length; i < ilen; ++i){
|
|
3778
3818
|
datasetIndex = +keys[i];
|
|
3779
3819
|
if (datasetIndex === dsIndex) {
|
|
3820
|
+
found = true;
|
|
3780
3821
|
if (options.all) {
|
|
3781
3822
|
continue;
|
|
3782
3823
|
}
|
|
@@ -3787,6 +3828,9 @@ function applyStack(stack, value, dsIndex, options = {}) {
|
|
|
3787
3828
|
value += otherValue;
|
|
3788
3829
|
}
|
|
3789
3830
|
}
|
|
3831
|
+
if (!found && !options.all) {
|
|
3832
|
+
return 0;
|
|
3833
|
+
}
|
|
3790
3834
|
return value;
|
|
3791
3835
|
}
|
|
3792
3836
|
function convertObjectDataToArray(data, meta) {
|
|
@@ -4030,6 +4074,7 @@ class DatasetController {
|
|
|
4030
4074
|
this._resyncElements(resetNewElements);
|
|
4031
4075
|
if (stackChanged || oldStacked !== meta._stacked) {
|
|
4032
4076
|
updateStacks(this, meta._parsed);
|
|
4077
|
+
meta._stacked = isStacked(meta.vScale, meta);
|
|
4033
4078
|
}
|
|
4034
4079
|
}
|
|
4035
4080
|
configure() {
|
|
@@ -4824,8 +4869,10 @@ class BarController extends DatasetController {
|
|
|
4824
4869
|
const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);
|
|
4825
4870
|
const stacked = iScale.options.stacked;
|
|
4826
4871
|
const stacks = [];
|
|
4872
|
+
const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);
|
|
4873
|
+
const iScaleValue = currentParsed && currentParsed[iScale.axis];
|
|
4827
4874
|
const skipNull = (meta)=>{
|
|
4828
|
-
const parsed = meta.
|
|
4875
|
+
const parsed = meta._parsed.find((item)=>item[iScale.axis] === iScaleValue);
|
|
4829
4876
|
const val = parsed && parsed[meta.vScale.axis];
|
|
4830
4877
|
if (isNullOrUndef(val) || isNaN(val)) {
|
|
4831
4878
|
return true;
|
|
@@ -4850,6 +4897,22 @@ class BarController extends DatasetController {
|
|
|
4850
4897
|
_getStackCount(index) {
|
|
4851
4898
|
return this._getStacks(undefined, index).length;
|
|
4852
4899
|
}
|
|
4900
|
+
_getAxisCount() {
|
|
4901
|
+
return this._getAxis().length;
|
|
4902
|
+
}
|
|
4903
|
+
getFirstScaleIdForIndexAxis() {
|
|
4904
|
+
const scales = this.chart.scales;
|
|
4905
|
+
const indexScaleId = this.chart.options.indexAxis;
|
|
4906
|
+
return Object.keys(scales).filter((key)=>scales[key].axis === indexScaleId).shift();
|
|
4907
|
+
}
|
|
4908
|
+
_getAxis() {
|
|
4909
|
+
const axis = {};
|
|
4910
|
+
const firstScaleAxisId = this.getFirstScaleIdForIndexAxis();
|
|
4911
|
+
for (const dataset of this.chart.data.datasets){
|
|
4912
|
+
axis[valueOrDefault(this.chart.options.indexAxis === 'x' ? dataset.xAxisID : dataset.yAxisID, firstScaleAxisId)] = true;
|
|
4913
|
+
}
|
|
4914
|
+
return Object.keys(axis);
|
|
4915
|
+
}
|
|
4853
4916
|
_getStackIndex(datasetIndex, name, dataIndex) {
|
|
4854
4917
|
const stacks = this._getStacks(datasetIndex, dataIndex);
|
|
4855
4918
|
const index = name !== undefined ? stacks.indexOf(name) : -1;
|
|
@@ -4940,10 +5003,13 @@ class BarController extends DatasetController {
|
|
|
4940
5003
|
const skipNull = options.skipNull;
|
|
4941
5004
|
const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);
|
|
4942
5005
|
let center, size;
|
|
5006
|
+
const axisCount = this._getAxisCount();
|
|
4943
5007
|
if (ruler.grouped) {
|
|
4944
5008
|
const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;
|
|
4945
|
-
const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);
|
|
4946
|
-
const
|
|
5009
|
+
const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount * axisCount) : computeFitCategoryTraits(index, ruler, options, stackCount * axisCount);
|
|
5010
|
+
const axisID = this.chart.options.indexAxis === 'x' ? this.getDataset().xAxisID : this.getDataset().yAxisID;
|
|
5011
|
+
const axisNumber = this._getAxis().indexOf(valueOrDefault(axisID, this.getFirstScaleIdForIndexAxis()));
|
|
5012
|
+
const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined) + axisNumber;
|
|
4947
5013
|
center = range.start + range.chunk * stackIndex + range.chunk / 2;
|
|
4948
5014
|
size = Math.min(maxBarThickness, range.chunk * range.ratio);
|
|
4949
5015
|
} else {
|
|
@@ -5163,19 +5229,24 @@ class DoughnutController extends DatasetController {
|
|
|
5163
5229
|
labels: {
|
|
5164
5230
|
generateLabels (chart) {
|
|
5165
5231
|
const data = chart.data;
|
|
5232
|
+
const { labels: { pointStyle , textAlign , color , useBorderRadius , borderRadius } } = chart.legend.options;
|
|
5166
5233
|
if (data.labels.length && data.datasets.length) {
|
|
5167
|
-
const { labels: { pointStyle , color } } = chart.legend.options;
|
|
5168
5234
|
return data.labels.map((label, i)=>{
|
|
5169
5235
|
const meta = chart.getDatasetMeta(0);
|
|
5170
5236
|
const style = meta.controller.getStyle(i);
|
|
5171
5237
|
return {
|
|
5172
5238
|
text: label,
|
|
5173
5239
|
fillStyle: style.backgroundColor,
|
|
5174
|
-
strokeStyle: style.borderColor,
|
|
5175
5240
|
fontColor: color,
|
|
5241
|
+
hidden: !chart.getDataVisibility(i),
|
|
5242
|
+
lineDash: style.borderDash,
|
|
5243
|
+
lineDashOffset: style.borderDashOffset,
|
|
5244
|
+
lineJoin: style.borderJoinStyle,
|
|
5176
5245
|
lineWidth: style.borderWidth,
|
|
5246
|
+
strokeStyle: style.borderColor,
|
|
5247
|
+
textAlign: textAlign,
|
|
5177
5248
|
pointStyle: pointStyle,
|
|
5178
|
-
|
|
5249
|
+
borderRadius: useBorderRadius && (borderRadius || style.borderRadius),
|
|
5179
5250
|
index: i
|
|
5180
5251
|
};
|
|
5181
5252
|
});
|
|
@@ -5960,10 +6031,20 @@ var adapters = {
|
|
|
5960
6031
|
function binarySearch(metaset, axis, value, intersect) {
|
|
5961
6032
|
const { controller , data , _sorted } = metaset;
|
|
5962
6033
|
const iScale = controller._cachedMeta.iScale;
|
|
6034
|
+
const spanGaps = metaset.dataset ? metaset.dataset.options ? metaset.dataset.options.spanGaps : null : null;
|
|
5963
6035
|
if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {
|
|
5964
6036
|
const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;
|
|
5965
6037
|
if (!intersect) {
|
|
5966
|
-
|
|
6038
|
+
const result = lookupMethod(data, axis, value);
|
|
6039
|
+
if (spanGaps) {
|
|
6040
|
+
const { vScale } = controller._cachedMeta;
|
|
6041
|
+
const { _parsed } = metaset;
|
|
6042
|
+
const distanceToDefinedLo = _parsed.slice(0, result.lo + 1).reverse().findIndex((point)=>!isNullOrUndef(point[vScale.axis]));
|
|
6043
|
+
result.lo -= Math.max(0, distanceToDefinedLo);
|
|
6044
|
+
const distanceToDefinedHi = _parsed.slice(result.hi).findIndex((point)=>!isNullOrUndef(point[vScale.axis]));
|
|
6045
|
+
result.hi += Math.max(0, distanceToDefinedHi);
|
|
6046
|
+
}
|
|
6047
|
+
return result;
|
|
5967
6048
|
} else if (controller._sharedOptions) {
|
|
5968
6049
|
const el = data[0];
|
|
5969
6050
|
const range = typeof el.getRange === 'function' && el.getRange(axis);
|
|
@@ -6093,7 +6174,7 @@ function binarySearch(metaset, axis, value, intersect) {
|
|
|
6093
6174
|
const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';
|
|
6094
6175
|
let intersectsItem = false;
|
|
6095
6176
|
evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{
|
|
6096
|
-
if (element[rangeMethod](position[axis], useFinalPosition)) {
|
|
6177
|
+
if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {
|
|
6097
6178
|
items.push({
|
|
6098
6179
|
element,
|
|
6099
6180
|
datasetIndex,
|
|
@@ -8397,18 +8478,22 @@ var registry = /* #__PURE__ */ new Registry();
|
|
|
8397
8478
|
|
|
8398
8479
|
class PluginService {
|
|
8399
8480
|
constructor(){
|
|
8400
|
-
this._init =
|
|
8481
|
+
this._init = undefined;
|
|
8401
8482
|
}
|
|
8402
8483
|
notify(chart, hook, args, filter) {
|
|
8403
8484
|
if (hook === 'beforeInit') {
|
|
8404
8485
|
this._init = this._createDescriptors(chart, true);
|
|
8405
8486
|
this._notify(this._init, chart, 'install');
|
|
8406
8487
|
}
|
|
8488
|
+
if (this._init === undefined) {
|
|
8489
|
+
return;
|
|
8490
|
+
}
|
|
8407
8491
|
const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);
|
|
8408
8492
|
const result = this._notify(descriptors, chart, hook, args);
|
|
8409
8493
|
if (hook === 'afterDestroy') {
|
|
8410
8494
|
this._notify(descriptors, chart, 'stop');
|
|
8411
8495
|
this._notify(this._init, chart, 'uninstall');
|
|
8496
|
+
this._init = undefined;
|
|
8412
8497
|
}
|
|
8413
8498
|
return result;
|
|
8414
8499
|
}
|
|
@@ -8851,7 +8936,7 @@ function needContext(proxy, names) {
|
|
|
8851
8936
|
return false;
|
|
8852
8937
|
}
|
|
8853
8938
|
|
|
8854
|
-
var version = "4.
|
|
8939
|
+
var version = "4.5.1";
|
|
8855
8940
|
|
|
8856
8941
|
const KNOWN_POSITIONS = [
|
|
8857
8942
|
'top',
|
|
@@ -8921,21 +9006,6 @@ function moveNumericKeys(obj, start, move) {
|
|
|
8921
9006
|
}
|
|
8922
9007
|
return e;
|
|
8923
9008
|
}
|
|
8924
|
-
function getSizeForArea(scale, chartArea, field) {
|
|
8925
|
-
return scale.options.clip ? scale[field] : chartArea[field];
|
|
8926
|
-
}
|
|
8927
|
-
function getDatasetArea(meta, chartArea) {
|
|
8928
|
-
const { xScale , yScale } = meta;
|
|
8929
|
-
if (xScale && yScale) {
|
|
8930
|
-
return {
|
|
8931
|
-
left: getSizeForArea(xScale, chartArea, 'left'),
|
|
8932
|
-
right: getSizeForArea(xScale, chartArea, 'right'),
|
|
8933
|
-
top: getSizeForArea(yScale, chartArea, 'top'),
|
|
8934
|
-
bottom: getSizeForArea(yScale, chartArea, 'bottom')
|
|
8935
|
-
};
|
|
8936
|
-
}
|
|
8937
|
-
return chartArea;
|
|
8938
|
-
}
|
|
8939
9009
|
let Chart$1 = class Chart {
|
|
8940
9010
|
static defaults = defaults;
|
|
8941
9011
|
static instances = instances;
|
|
@@ -9383,8 +9453,8 @@ let Chart$1 = class Chart {
|
|
|
9383
9453
|
let i;
|
|
9384
9454
|
if (this._resizeBeforeDraw) {
|
|
9385
9455
|
const { width , height } = this._resizeBeforeDraw;
|
|
9386
|
-
this._resize(width, height);
|
|
9387
9456
|
this._resizeBeforeDraw = null;
|
|
9457
|
+
this._resize(width, height);
|
|
9388
9458
|
}
|
|
9389
9459
|
this.clear();
|
|
9390
9460
|
if (this.width <= 0 || this.height <= 0) {
|
|
@@ -9434,27 +9504,20 @@ let Chart$1 = class Chart {
|
|
|
9434
9504
|
}
|
|
9435
9505
|
_drawDataset(meta) {
|
|
9436
9506
|
const ctx = this.ctx;
|
|
9437
|
-
const clip = meta._clip;
|
|
9438
|
-
const useClip = !clip.disabled;
|
|
9439
|
-
const area = getDatasetArea(meta, this.chartArea);
|
|
9440
9507
|
const args = {
|
|
9441
9508
|
meta,
|
|
9442
9509
|
index: meta.index,
|
|
9443
9510
|
cancelable: true
|
|
9444
9511
|
};
|
|
9512
|
+
const clip = getDatasetClipArea(this, meta);
|
|
9445
9513
|
if (this.notifyPlugins('beforeDatasetDraw', args) === false) {
|
|
9446
9514
|
return;
|
|
9447
9515
|
}
|
|
9448
|
-
if (
|
|
9449
|
-
clipArea(ctx,
|
|
9450
|
-
left: clip.left === false ? 0 : area.left - clip.left,
|
|
9451
|
-
right: clip.right === false ? this.width : area.right + clip.right,
|
|
9452
|
-
top: clip.top === false ? 0 : area.top - clip.top,
|
|
9453
|
-
bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom
|
|
9454
|
-
});
|
|
9516
|
+
if (clip) {
|
|
9517
|
+
clipArea(ctx, clip);
|
|
9455
9518
|
}
|
|
9456
9519
|
meta.controller.draw();
|
|
9457
|
-
if (
|
|
9520
|
+
if (clip) {
|
|
9458
9521
|
unclipArea(ctx);
|
|
9459
9522
|
}
|
|
9460
9523
|
args.cancelable = false;
|
|
@@ -9767,6 +9830,34 @@ function invalidatePlugins() {
|
|
|
9767
9830
|
return each(Chart$1.instances, (chart)=>chart._plugins.invalidate());
|
|
9768
9831
|
}
|
|
9769
9832
|
|
|
9833
|
+
function clipSelf(ctx, element, endAngle) {
|
|
9834
|
+
const { startAngle , x , y , outerRadius , innerRadius , options } = element;
|
|
9835
|
+
const { borderWidth , borderJoinStyle } = options;
|
|
9836
|
+
const outerAngleClip = Math.min(borderWidth / outerRadius, _normalizeAngle(startAngle - endAngle));
|
|
9837
|
+
ctx.beginPath();
|
|
9838
|
+
ctx.arc(x, y, outerRadius - borderWidth / 2, startAngle + outerAngleClip / 2, endAngle - outerAngleClip / 2);
|
|
9839
|
+
if (innerRadius > 0) {
|
|
9840
|
+
const innerAngleClip = Math.min(borderWidth / innerRadius, _normalizeAngle(startAngle - endAngle));
|
|
9841
|
+
ctx.arc(x, y, innerRadius + borderWidth / 2, endAngle - innerAngleClip / 2, startAngle + innerAngleClip / 2, true);
|
|
9842
|
+
} else {
|
|
9843
|
+
const clipWidth = Math.min(borderWidth / 2, outerRadius * _normalizeAngle(startAngle - endAngle));
|
|
9844
|
+
if (borderJoinStyle === 'round') {
|
|
9845
|
+
ctx.arc(x, y, clipWidth, endAngle - PI / 2, startAngle + PI / 2, true);
|
|
9846
|
+
} else if (borderJoinStyle === 'bevel') {
|
|
9847
|
+
const r = 2 * clipWidth * clipWidth;
|
|
9848
|
+
const endX = -r * Math.cos(endAngle + PI / 2) + x;
|
|
9849
|
+
const endY = -r * Math.sin(endAngle + PI / 2) + y;
|
|
9850
|
+
const startX = r * Math.cos(startAngle + PI / 2) + x;
|
|
9851
|
+
const startY = r * Math.sin(startAngle + PI / 2) + y;
|
|
9852
|
+
ctx.lineTo(endX, endY);
|
|
9853
|
+
ctx.lineTo(startX, startY);
|
|
9854
|
+
}
|
|
9855
|
+
}
|
|
9856
|
+
ctx.closePath();
|
|
9857
|
+
ctx.moveTo(0, 0);
|
|
9858
|
+
ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
|
|
9859
|
+
ctx.clip('evenodd');
|
|
9860
|
+
}
|
|
9770
9861
|
function clipArc(ctx, element, endAngle) {
|
|
9771
9862
|
const { startAngle , pixelMargin , x , y , outerRadius , innerRadius } = element;
|
|
9772
9863
|
let angleMargin = pixelMargin / outerRadius;
|
|
@@ -9930,7 +10021,7 @@ function drawArc(ctx, element, offset, spacing, circular) {
|
|
|
9930
10021
|
}
|
|
9931
10022
|
function drawBorder(ctx, element, offset, spacing, circular) {
|
|
9932
10023
|
const { fullCircles , startAngle , circumference , options } = element;
|
|
9933
|
-
const { borderWidth , borderJoinStyle , borderDash , borderDashOffset } = options;
|
|
10024
|
+
const { borderWidth , borderJoinStyle , borderDash , borderDashOffset , borderRadius } = options;
|
|
9934
10025
|
const inner = options.borderAlign === 'inner';
|
|
9935
10026
|
if (!borderWidth) {
|
|
9936
10027
|
return;
|
|
@@ -9957,6 +10048,9 @@ function drawBorder(ctx, element, offset, spacing, circular) {
|
|
|
9957
10048
|
if (inner) {
|
|
9958
10049
|
clipArc(ctx, element, endAngle);
|
|
9959
10050
|
}
|
|
10051
|
+
if (options.selfJoin && endAngle - startAngle >= PI && borderRadius === 0 && borderJoinStyle !== 'miter') {
|
|
10052
|
+
clipSelf(ctx, element, endAngle);
|
|
10053
|
+
}
|
|
9960
10054
|
if (!fullCircles) {
|
|
9961
10055
|
pathArc(ctx, element, offset, spacing, endAngle, circular);
|
|
9962
10056
|
ctx.stroke();
|
|
@@ -9975,7 +10069,8 @@ class ArcElement extends Element {
|
|
|
9975
10069
|
offset: 0,
|
|
9976
10070
|
spacing: 0,
|
|
9977
10071
|
angle: undefined,
|
|
9978
|
-
circular: true
|
|
10072
|
+
circular: true,
|
|
10073
|
+
selfJoin: false
|
|
9979
10074
|
};
|
|
9980
10075
|
static defaultRoutes = {
|
|
9981
10076
|
backgroundColor: 'backgroundColor'
|
|
@@ -10023,7 +10118,8 @@ class ArcElement extends Element {
|
|
|
10023
10118
|
], useFinalPosition);
|
|
10024
10119
|
const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;
|
|
10025
10120
|
const _circumference = valueOrDefault(circumference, endAngle - startAngle);
|
|
10026
|
-
const
|
|
10121
|
+
const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;
|
|
10122
|
+
const betweenAngles = _circumference >= TAU || nonZeroBetween;
|
|
10027
10123
|
const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);
|
|
10028
10124
|
return betweenAngles && withinRadius;
|
|
10029
10125
|
}
|
|
@@ -10689,6 +10785,9 @@ function containsColorsDefinitions(descriptors) {
|
|
|
10689
10785
|
function containsColorsDefinition(descriptor) {
|
|
10690
10786
|
return descriptor && (descriptor.borderColor || descriptor.backgroundColor);
|
|
10691
10787
|
}
|
|
10788
|
+
function containsDefaultColorsDefenitions() {
|
|
10789
|
+
return defaults.borderColor !== 'rgba(0,0,0,0.1)' || defaults.backgroundColor !== 'rgba(0,0,0,0.1)';
|
|
10790
|
+
}
|
|
10692
10791
|
var plugin_colors = {
|
|
10693
10792
|
id: 'colors',
|
|
10694
10793
|
defaults: {
|
|
@@ -10701,7 +10800,8 @@ var plugin_colors = {
|
|
|
10701
10800
|
}
|
|
10702
10801
|
const { data: { datasets } , options: chartOptions } = chart.config;
|
|
10703
10802
|
const { elements } = chartOptions;
|
|
10704
|
-
|
|
10803
|
+
const containsColorDefenition = containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements) || containsDefaultColorsDefenitions();
|
|
10804
|
+
if (!options.forceOverride && containsColorDefenition) {
|
|
10705
10805
|
return;
|
|
10706
10806
|
}
|
|
10707
10807
|
const colorizer = getColorizer(chart);
|
|
@@ -11300,11 +11400,13 @@ function computeCircularBoundary(source) {
|
|
|
11300
11400
|
|
|
11301
11401
|
function _drawfill(ctx, source, area) {
|
|
11302
11402
|
const target = _getTarget(source);
|
|
11303
|
-
const { line , scale , axis } = source;
|
|
11403
|
+
const { chart , index , line , scale , axis } = source;
|
|
11304
11404
|
const lineOpts = line.options;
|
|
11305
11405
|
const fillOption = lineOpts.fill;
|
|
11306
11406
|
const color = lineOpts.backgroundColor;
|
|
11307
11407
|
const { above =color , below =color } = fillOption || {};
|
|
11408
|
+
const meta = chart.getDatasetMeta(index);
|
|
11409
|
+
const clip = getDatasetClipArea(chart, meta);
|
|
11308
11410
|
if (target && line.points.length) {
|
|
11309
11411
|
clipArea(ctx, area);
|
|
11310
11412
|
doFill(ctx, {
|
|
@@ -11314,34 +11416,54 @@ function _drawfill(ctx, source, area) {
|
|
|
11314
11416
|
below,
|
|
11315
11417
|
area,
|
|
11316
11418
|
scale,
|
|
11317
|
-
axis
|
|
11419
|
+
axis,
|
|
11420
|
+
clip
|
|
11318
11421
|
});
|
|
11319
11422
|
unclipArea(ctx);
|
|
11320
11423
|
}
|
|
11321
11424
|
}
|
|
11322
11425
|
function doFill(ctx, cfg) {
|
|
11323
|
-
const { line , target , above , below , area , scale } = cfg;
|
|
11426
|
+
const { line , target , above , below , area , scale , clip } = cfg;
|
|
11324
11427
|
const property = line._loop ? 'angle' : cfg.axis;
|
|
11325
11428
|
ctx.save();
|
|
11326
|
-
|
|
11327
|
-
|
|
11328
|
-
|
|
11329
|
-
|
|
11330
|
-
|
|
11331
|
-
|
|
11332
|
-
|
|
11333
|
-
|
|
11334
|
-
|
|
11335
|
-
|
|
11336
|
-
|
|
11337
|
-
|
|
11429
|
+
let fillColor = below;
|
|
11430
|
+
if (below !== above) {
|
|
11431
|
+
if (property === 'x') {
|
|
11432
|
+
clipVertical(ctx, target, area.top);
|
|
11433
|
+
fill(ctx, {
|
|
11434
|
+
line,
|
|
11435
|
+
target,
|
|
11436
|
+
color: above,
|
|
11437
|
+
scale,
|
|
11438
|
+
property,
|
|
11439
|
+
clip
|
|
11440
|
+
});
|
|
11441
|
+
ctx.restore();
|
|
11442
|
+
ctx.save();
|
|
11443
|
+
clipVertical(ctx, target, area.bottom);
|
|
11444
|
+
} else if (property === 'y') {
|
|
11445
|
+
clipHorizontal(ctx, target, area.left);
|
|
11446
|
+
fill(ctx, {
|
|
11447
|
+
line,
|
|
11448
|
+
target,
|
|
11449
|
+
color: below,
|
|
11450
|
+
scale,
|
|
11451
|
+
property,
|
|
11452
|
+
clip
|
|
11453
|
+
});
|
|
11454
|
+
ctx.restore();
|
|
11455
|
+
ctx.save();
|
|
11456
|
+
clipHorizontal(ctx, target, area.right);
|
|
11457
|
+
fillColor = above;
|
|
11458
|
+
}
|
|
11338
11459
|
}
|
|
11339
11460
|
fill(ctx, {
|
|
11340
11461
|
line,
|
|
11341
11462
|
target,
|
|
11342
|
-
color:
|
|
11463
|
+
color: fillColor,
|
|
11343
11464
|
scale,
|
|
11344
|
-
property
|
|
11465
|
+
property,
|
|
11466
|
+
clip
|
|
11345
11467
|
});
|
|
11346
11468
|
ctx.restore();
|
|
11347
11469
|
}
|
|
@@ -11374,15 +11496,44 @@ function clipVertical(ctx, target, clipY) {
|
|
|
11374
11496
|
ctx.closePath();
|
|
11375
11497
|
ctx.clip();
|
|
11376
11498
|
}
|
|
11499
|
+
function clipHorizontal(ctx, target, clipX) {
|
|
11500
|
+
const { segments , points } = target;
|
|
11501
|
+
let first = true;
|
|
11502
|
+
let lineLoop = false;
|
|
11503
|
+
ctx.beginPath();
|
|
11504
|
+
for (const segment of segments){
|
|
11505
|
+
const { start , end } = segment;
|
|
11506
|
+
const firstPoint = points[start];
|
|
11507
|
+
const lastPoint = points[_findSegmentEnd(start, end, points)];
|
|
11508
|
+
if (first) {
|
|
11509
|
+
ctx.moveTo(firstPoint.x, firstPoint.y);
|
|
11510
|
+
first = false;
|
|
11511
|
+
} else {
|
|
11512
|
+
ctx.lineTo(clipX, firstPoint.y);
|
|
11513
|
+
ctx.lineTo(firstPoint.x, firstPoint.y);
|
|
11514
|
+
}
|
|
11515
|
+
lineLoop = !!target.pathSegment(ctx, segment, {
|
|
11516
|
+
move: lineLoop
|
|
11517
|
+
});
|
|
11518
|
+
if (lineLoop) {
|
|
11519
|
+
ctx.closePath();
|
|
11520
|
+
} else {
|
|
11521
|
+
ctx.lineTo(clipX, lastPoint.y);
|
|
11522
|
+
}
|
|
11523
|
+
}
|
|
11524
|
+
ctx.lineTo(clipX, target.first().y);
|
|
11525
|
+
ctx.closePath();
|
|
11526
|
+
ctx.clip();
|
|
11527
|
+
}
|
|
11377
11528
|
function fill(ctx, cfg) {
|
|
11378
|
-
const { line , target , property , color , scale } = cfg;
|
|
11529
|
+
const { line , target , property , color , scale , clip } = cfg;
|
|
11379
11530
|
const segments = _segments(line, target, property);
|
|
11380
11531
|
for (const { source: src , target: tgt , start , end } of segments){
|
|
11381
11532
|
const { style: { backgroundColor =color } = {} } = src;
|
|
11382
11533
|
const notShape = target !== true;
|
|
11383
11534
|
ctx.save();
|
|
11384
11535
|
ctx.fillStyle = backgroundColor;
|
|
11385
|
-
clipBounds(ctx, scale, notShape && _getBounds(property, start, end));
|
|
11536
|
+
clipBounds(ctx, scale, clip, notShape && _getBounds(property, start, end));
|
|
11386
11537
|
ctx.beginPath();
|
|
11387
11538
|
const lineLoop = !!line.pathSegment(ctx, src);
|
|
11388
11539
|
let loop;
|
|
@@ -11406,12 +11557,30 @@ function fill(ctx, cfg) {
|
|
|
11406
11557
|
ctx.restore();
|
|
11407
11558
|
}
|
|
11408
11559
|
}
|
|
11409
|
-
function clipBounds(ctx, scale, bounds) {
|
|
11410
|
-
const
|
|
11560
|
+
function clipBounds(ctx, scale, clip, bounds) {
|
|
11561
|
+
const chartArea = scale.chart.chartArea;
|
|
11411
11562
|
const { property , start , end } = bounds || {};
|
|
11412
|
-
if (property === 'x') {
|
|
11563
|
+
if (property === 'x' || property === 'y') {
|
|
11564
|
+
let left, top, right, bottom;
|
|
11565
|
+
if (property === 'x') {
|
|
11566
|
+
left = start;
|
|
11567
|
+
top = chartArea.top;
|
|
11568
|
+
right = end;
|
|
11569
|
+
bottom = chartArea.bottom;
|
|
11570
|
+
} else {
|
|
11571
|
+
left = chartArea.left;
|
|
11572
|
+
top = start;
|
|
11573
|
+
right = chartArea.right;
|
|
11574
|
+
bottom = end;
|
|
11575
|
+
}
|
|
11413
11576
|
ctx.beginPath();
|
|
11414
|
-
|
|
11577
|
+
if (clip) {
|
|
11578
|
+
left = Math.max(left, clip.left);
|
|
11579
|
+
right = Math.min(right, clip.right);
|
|
11580
|
+
top = Math.max(top, clip.top);
|
|
11581
|
+
bottom = Math.min(bottom, clip.bottom);
|
|
11582
|
+
}
|
|
11583
|
+
ctx.rect(left, top, right - left, bottom - top);
|
|
11415
11584
|
ctx.clip();
|
|
11416
11585
|
}
|
|
11417
11586
|
}
|
|
@@ -12244,6 +12413,9 @@ const positioners = {
|
|
|
12244
12413
|
++count;
|
|
12245
12414
|
}
|
|
12246
12415
|
}
|
|
12416
|
+
if (count === 0 || xSet.size === 0) {
|
|
12417
|
+
return false;
|
|
12418
|
+
}
|
|
12247
12419
|
const xAverage = [
|
|
12248
12420
|
...xSet
|
|
12249
12421
|
].reduce((a, b)=>a + b) / xSet.size;
|
|
@@ -13996,7 +14168,7 @@ function drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {
|
|
|
13996
14168
|
ctx.save();
|
|
13997
14169
|
ctx.strokeStyle = color;
|
|
13998
14170
|
ctx.lineWidth = lineWidth;
|
|
13999
|
-
ctx.setLineDash(borderOpts.dash);
|
|
14171
|
+
ctx.setLineDash(borderOpts.dash || []);
|
|
14000
14172
|
ctx.lineDashOffset = borderOpts.dashOffset;
|
|
14001
14173
|
ctx.beginPath();
|
|
14002
14174
|
pathRadiusLine(scale, radius, circular, labelCount);
|
|
@@ -14200,7 +14372,7 @@ class RadialLinearScale extends LinearScaleBase {
|
|
|
14200
14372
|
ctx.strokeStyle = color;
|
|
14201
14373
|
ctx.setLineDash(optsAtIndex.borderDash);
|
|
14202
14374
|
ctx.lineDashOffset = optsAtIndex.borderDashOffset;
|
|
14203
|
-
offset = this.getDistanceFromCenterForValue(opts.
|
|
14375
|
+
offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);
|
|
14204
14376
|
position = this.getPointPosition(i, offset);
|
|
14205
14377
|
ctx.beginPath();
|
|
14206
14378
|
ctx.moveTo(this.xCenter, this.yCenter);
|
|
@@ -14311,7 +14483,7 @@ const INTERVALS = {
|
|
|
14311
14483
|
value = parser(value);
|
|
14312
14484
|
}
|
|
14313
14485
|
if (!isNumberFinite(value)) {
|
|
14314
|
-
value = typeof parser === 'string' ? adapter.parse(value,
|
|
14486
|
+
value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);
|
|
14315
14487
|
}
|
|
14316
14488
|
if (value === null) {
|
|
14317
14489
|
return null;
|
|
@@ -15002,8 +15174,8 @@ const Chart = defineComponent({
|
|
|
15002
15174
|
return ()=>{
|
|
15003
15175
|
return h("canvas", {
|
|
15004
15176
|
role: "img",
|
|
15005
|
-
|
|
15006
|
-
|
|
15177
|
+
"aria-label": props.ariaLabel,
|
|
15178
|
+
"aria-describedby": props.ariaDescribedby,
|
|
15007
15179
|
ref: canvasRef
|
|
15008
15180
|
}, [
|
|
15009
15181
|
h("p", {}, [
|