vuetify 3.5.3 → 3.5.5
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/dist/json/attributes.json +2771 -2523
- package/dist/json/importMap-labs.json +12 -8
- package/dist/json/importMap.json +100 -100
- package/dist/json/tags.json +236 -169
- package/dist/json/web-types.json +3218 -2563
- package/dist/vuetify-labs.css +2265 -2242
- package/dist/vuetify-labs.d.ts +1234 -152
- package/dist/vuetify-labs.esm.js +582 -88
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +582 -88
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +1316 -1293
- package/dist/vuetify.d.ts +894 -187
- package/dist/vuetify.esm.js +148 -87
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +148 -87
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +652 -647
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/index.d.mts +9 -0
- package/lib/components/VAppBar/index.d.mts +18 -0
- package/lib/components/VAutocomplete/VAutocomplete.mjs +4 -4
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +33 -6
- package/lib/components/VAvatar/VAvatar.mjs +2 -2
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VAvatar/index.d.mts +9 -0
- package/lib/components/VBadge/index.d.mts +9 -0
- package/lib/components/VBanner/index.d.mts +9 -0
- package/lib/components/VBottomNavigation/index.d.mts +9 -0
- package/lib/components/VBreadcrumbs/index.d.mts +9 -0
- package/lib/components/VBtn/index.d.mts +9 -0
- package/lib/components/VBtnGroup/index.d.mts +9 -0
- package/lib/components/VBtnToggle/index.d.mts +9 -0
- package/lib/components/VCard/index.d.mts +9 -0
- package/lib/components/VCarousel/index.d.mts +9 -0
- package/lib/components/VChip/index.d.mts +9 -0
- package/lib/components/VColorPicker/VColorPicker.mjs +24 -12
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/index.d.mts +9 -0
- package/lib/components/VCombobox/index.d.mts +33 -6
- package/lib/components/VDataIterator/index.d.mts +3 -3
- package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/components/VDataTable/index.d.mts +355 -117
- package/lib/components/VDataTable/types.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.css +2 -21
- package/lib/components/VDatePicker/VDatePicker.mjs +15 -11
- package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.sass +3 -18
- package/lib/components/VDatePicker/VDatePickerHeader.css +2 -0
- package/lib/components/VDatePicker/VDatePickerHeader.sass +3 -0
- package/lib/components/VDatePicker/VDatePickerMonth.css +11 -5
- package/lib/components/VDatePicker/VDatePickerMonth.mjs +2 -1
- package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.sass +13 -5
- package/lib/components/VDatePicker/VDatePickerMonths.css +2 -3
- package/lib/components/VDatePicker/VDatePickerMonths.mjs +6 -3
- package/lib/components/VDatePicker/VDatePickerMonths.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonths.sass +4 -3
- package/lib/components/VDatePicker/VDatePickerYears.css +2 -2
- package/lib/components/VDatePicker/VDatePickerYears.mjs +8 -1
- package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.sass +4 -2
- package/lib/components/VDatePicker/_variables.scss +14 -34
- package/lib/components/VDatePicker/index.d.mts +13 -4
- package/lib/components/VExpansionPanel/VExpansionPanel.css +14 -0
- package/lib/components/VExpansionPanel/VExpansionPanel.sass +14 -0
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs +9 -2
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.d.mts +27 -0
- package/lib/components/VField/VField.css +20 -1
- package/lib/components/VField/VField.sass +19 -1
- package/lib/components/VField/index.d.mts +9 -0
- package/lib/components/VFileInput/VFileInput.mjs +1 -1
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/index.d.mts +9 -0
- package/lib/components/VFooter/index.d.mts +9 -0
- package/lib/components/VImg/index.d.mts +9 -0
- package/lib/components/VList/VListItem.css +2 -1
- package/lib/components/VList/VListItem.sass +1 -0
- package/lib/components/VList/_variables.scss +2 -1
- package/lib/components/VList/index.d.mts +18 -0
- package/lib/components/VMenu/VMenu.mjs +5 -5
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/shared.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/index.d.mts +9 -0
- package/lib/components/VPagination/index.d.mts +9 -0
- package/lib/components/VProgressLinear/index.d.mts +9 -0
- package/lib/components/VRangeSlider/index.d.mts +9 -0
- package/lib/components/VSelect/VSelect.mjs +4 -3
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +33 -6
- package/lib/components/VSheet/index.d.mts +9 -0
- package/lib/components/VSlider/index.d.mts +9 -0
- package/lib/components/VSnackbar/VSnackbar.mjs +1 -2
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/index.d.mts +9 -0
- package/lib/components/VStepper/index.d.mts +9 -0
- package/lib/components/VSystemBar/index.d.mts +9 -0
- package/lib/components/VTabs/index.d.mts +33 -6
- package/lib/components/VTextField/index.d.mts +33 -6
- package/lib/components/VTextarea/index.d.mts +9 -0
- package/lib/components/VTimeline/index.d.mts +9 -0
- package/lib/components/VToolbar/index.d.mts +9 -0
- package/lib/components/VTooltip/VTooltip.css +1 -0
- package/lib/components/VTooltip/VTooltip.sass +1 -0
- package/lib/components/VTooltip/_variables.scss +1 -0
- package/lib/components/index.d.mts +857 -151
- package/lib/composables/form.mjs +2 -1
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/goto.mjs +16 -18
- package/lib/composables/goto.mjs.map +1 -1
- package/lib/composables/group.mjs +2 -0
- package/lib/composables/group.mjs.map +1 -1
- package/lib/composables/icons.mjs +17 -13
- package/lib/composables/icons.mjs.map +1 -1
- package/lib/composables/rounded.mjs +5 -1
- package/lib/composables/rounded.mjs.map +1 -1
- package/lib/composables/virtual.mjs +11 -3
- package/lib/composables/virtual.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/iconsets/fa-svg.mjs +2 -1
- package/lib/iconsets/fa-svg.mjs.map +1 -1
- package/lib/index.d.mts +37 -36
- package/lib/labs/VCalendar/VCalendar.mjs +1 -1
- package/lib/labs/VCalendar/VCalendar.mjs.map +1 -1
- package/lib/labs/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs +1 -1
- package/lib/labs/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs.map +1 -1
- package/lib/labs/VPicker/VPicker.css +2 -2
- package/lib/labs/VPicker/VPicker.sass +2 -2
- package/lib/labs/VPicker/_variables.scss +2 -4
- package/lib/labs/VPicker/index.d.mts +9 -0
- package/lib/labs/VSparkline/VBarline.mjs +138 -0
- package/lib/labs/VSparkline/VBarline.mjs.map +1 -0
- package/lib/labs/VSparkline/VSparkline.mjs +49 -0
- package/lib/labs/VSparkline/VSparkline.mjs.map +1 -0
- package/lib/labs/VSparkline/VTrendline.mjs +143 -0
- package/lib/labs/VSparkline/VTrendline.mjs.map +1 -0
- package/lib/labs/VSparkline/index.d.mts +374 -0
- package/lib/labs/VSparkline/index.mjs +2 -0
- package/lib/labs/VSparkline/index.mjs.map +1 -0
- package/lib/labs/VSparkline/util/line.mjs +52 -0
- package/lib/labs/VSparkline/util/line.mjs.map +1 -0
- package/lib/labs/VSparkline/util/path.mjs +60 -0
- package/lib/labs/VSparkline/util/path.mjs.map +1 -0
- package/lib/labs/components.d.mts +376 -1
- package/lib/labs/components.mjs +1 -0
- package/lib/labs/components.mjs.map +1 -1
- package/lib/locale/nl.mjs +1 -1
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/util/helpers.mjs +10 -0
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +2 -2
- package/lib/components/VDatePicker/VDatePickerTitle.mjs +0 -81
- package/lib/components/VDatePicker/VDatePickerTitle.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerTitle.sass +0 -33
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from "vue";
|
|
2
|
+
// Components
|
|
3
|
+
import { makeVBarlineProps, VBarline } from "./VBarline.mjs";
|
|
4
|
+
import { makeVTrendlineProps, VTrendline } from "./VTrendline.mjs"; // Composables
|
|
5
|
+
import { useTextColor } from "../../composables/color.mjs"; // Utilities
|
|
6
|
+
import { computed, toRef } from 'vue';
|
|
7
|
+
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
8
|
+
// Types
|
|
9
|
+
|
|
10
|
+
export const makeVSparklineProps = propsFactory({
|
|
11
|
+
type: {
|
|
12
|
+
type: String,
|
|
13
|
+
default: 'trend'
|
|
14
|
+
},
|
|
15
|
+
...makeVBarlineProps(),
|
|
16
|
+
...makeVTrendlineProps()
|
|
17
|
+
}, 'VSparkline');
|
|
18
|
+
export const VSparkline = genericComponent()({
|
|
19
|
+
name: 'VSparkline',
|
|
20
|
+
props: makeVSparklineProps(),
|
|
21
|
+
setup(props, _ref) {
|
|
22
|
+
let {
|
|
23
|
+
slots
|
|
24
|
+
} = _ref;
|
|
25
|
+
const {
|
|
26
|
+
textColorClasses,
|
|
27
|
+
textColorStyles
|
|
28
|
+
} = useTextColor(toRef(props, 'color'));
|
|
29
|
+
const hasLabels = computed(() => {
|
|
30
|
+
return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
|
|
31
|
+
});
|
|
32
|
+
const totalHeight = computed(() => {
|
|
33
|
+
let height = parseInt(props.height, 10);
|
|
34
|
+
if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5;
|
|
35
|
+
return height;
|
|
36
|
+
});
|
|
37
|
+
useRender(() => {
|
|
38
|
+
const Tag = props.type === 'trend' ? VTrendline : VBarline;
|
|
39
|
+
const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props);
|
|
40
|
+
return _createVNode(Tag, _mergeProps({
|
|
41
|
+
"key": props.type,
|
|
42
|
+
"class": textColorClasses.value,
|
|
43
|
+
"style": textColorStyles.value,
|
|
44
|
+
"viewBox": `0 0 ${props.width} ${parseInt(totalHeight.value, 10)}`
|
|
45
|
+
}, lineProps), slots);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=VSparkline.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSparkline.mjs","names":["makeVBarlineProps","VBarline","makeVTrendlineProps","VTrendline","useTextColor","computed","toRef","genericComponent","propsFactory","useRender","makeVSparklineProps","type","String","default","VSparkline","name","props","setup","_ref","slots","textColorClasses","textColorStyles","hasLabels","Boolean","showLabels","labels","length","label","totalHeight","height","parseInt","value","labelSize","Tag","lineProps","filterProps","_createVNode","_mergeProps","width"],"sources":["../../../src/labs/VSparkline/VSparkline.tsx"],"sourcesContent":["// Components\nimport { makeVBarlineProps, VBarline } from './VBarline'\nimport { makeVTrendlineProps, VTrendline } from './VTrendline'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\n\nexport const makeVSparklineProps = propsFactory({\n type: {\n type: String as PropType<'trend' | 'bar'>,\n default: 'trend',\n },\n\n ...makeVBarlineProps(),\n ...makeVTrendlineProps(),\n}, 'VSparkline')\n\nexport type VSparklineSlots = {\n default: void\n label: { index: number, value: string }\n}\n\nexport const VSparkline = genericComponent<VSparklineSlots>()({\n name: 'VSparkline',\n\n props: makeVSparklineProps(),\n\n setup (props, { slots }) {\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n const hasLabels = computed(() => {\n return Boolean(\n props.showLabels ||\n props.labels.length > 0 ||\n !!slots?.label\n )\n })\n const totalHeight = computed(() => {\n let height = parseInt(props.height, 10)\n\n if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5\n\n return height\n })\n\n useRender(() => {\n const Tag = props.type === 'trend' ? VTrendline : VBarline\n const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props)\n\n return (\n <Tag\n key={ props.type }\n class={ textColorClasses.value }\n style={ textColorStyles.value }\n viewBox={ `0 0 ${props.width} ${parseInt(totalHeight.value, 10)}` }\n { ...lineProps }\n v-slots={ slots }\n />\n )\n })\n },\n})\n\nexport type VSparkline = InstanceType<typeof VSparkline>\n"],"mappings":";AAAA;AAAA,SACSA,iBAAiB,EAAEC,QAAQ;AAAA,SAC3BC,mBAAmB,EAAEC,UAAU,4BAExC;AAAA,SACSC,YAAY,uCAErB;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAGA;;AAEA,OAAO,MAAMC,mBAAmB,GAAGF,YAAY,CAAC;EAC9CG,IAAI,EAAE;IACJA,IAAI,EAAEC,MAAmC;IACzCC,OAAO,EAAE;EACX,CAAC;EAED,GAAGb,iBAAiB,CAAC,CAAC;EACtB,GAAGE,mBAAmB,CAAC;AACzB,CAAC,EAAE,YAAY,CAAC;AAOhB,OAAO,MAAMY,UAAU,GAAGP,gBAAgB,CAAkB,CAAC,CAAC;EAC5DQ,IAAI,EAAE,YAAY;EAElBC,KAAK,EAAEN,mBAAmB,CAAC,CAAC;EAE5BO,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE,gBAAgB;MAAEC;IAAgB,CAAC,GAAGjB,YAAY,CAACE,KAAK,CAACU,KAAK,EAAE,OAAO,CAAC,CAAC;IACjF,MAAMM,SAAS,GAAGjB,QAAQ,CAAC,MAAM;MAC/B,OAAOkB,OAAO,CACZP,KAAK,CAACQ,UAAU,IAChBR,KAAK,CAACS,MAAM,CAACC,MAAM,GAAG,CAAC,IACvB,CAAC,CAACP,KAAK,EAAEQ,KACX,CAAC;IACH,CAAC,CAAC;IACF,MAAMC,WAAW,GAAGvB,QAAQ,CAAC,MAAM;MACjC,IAAIwB,MAAM,GAAGC,QAAQ,CAACd,KAAK,CAACa,MAAM,EAAE,EAAE,CAAC;MAEvC,IAAIP,SAAS,CAACS,KAAK,EAAEF,MAAM,IAAIC,QAAQ,CAACd,KAAK,CAACgB,SAAS,EAAE,EAAE,CAAC,GAAG,GAAG;MAElE,OAAOH,MAAM;IACf,CAAC,CAAC;IAEFpB,SAAS,CAAC,MAAM;MACd,MAAMwB,GAAG,GAAGjB,KAAK,CAACL,IAAI,KAAK,OAAO,GAAGR,UAAU,GAAGF,QAAQ;MAC1D,MAAMiC,SAAS,GAAGlB,KAAK,CAACL,IAAI,KAAK,OAAO,GAAGR,UAAU,CAACgC,WAAW,CAACnB,KAAK,CAAC,GAAGf,QAAQ,CAACkC,WAAW,CAACnB,KAAK,CAAC;MAEtG,OAAAoB,YAAA,CAAAH,GAAA,EAAAI,WAAA;QAAA,OAEUrB,KAAK,CAACL,IAAI;QAAA,SACRS,gBAAgB,CAACW,KAAK;QAAA,SACtBV,eAAe,CAACU,KAAK;QAAA,WAClB,OAAMf,KAAK,CAACsB,KAAM,IAAGR,QAAQ,CAACF,WAAW,CAACG,KAAK,EAAE,EAAE,CAAE;MAAC,GAC5DG,SAAS,GACJf,KAAK;IAGrB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { createVNode as _createVNode } from "vue";
|
|
2
|
+
// Utilities
|
|
3
|
+
import { computed, nextTick, ref, watch } from 'vue';
|
|
4
|
+
import { makeLineProps } from "./util/line.mjs";
|
|
5
|
+
import { genPath } from "./util/path.mjs";
|
|
6
|
+
import { genericComponent, getUid, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
7
|
+
export const makeVTrendlineProps = propsFactory({
|
|
8
|
+
fill: Boolean,
|
|
9
|
+
...makeLineProps()
|
|
10
|
+
}, 'VTrendline');
|
|
11
|
+
export const VTrendline = genericComponent()({
|
|
12
|
+
name: 'VTrendline',
|
|
13
|
+
props: makeVTrendlineProps(),
|
|
14
|
+
setup(props, _ref) {
|
|
15
|
+
let {
|
|
16
|
+
slots
|
|
17
|
+
} = _ref;
|
|
18
|
+
const uid = getUid();
|
|
19
|
+
const id = computed(() => props.id || `trendline-${uid}`);
|
|
20
|
+
const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || (props.fill ? 500 : 2000));
|
|
21
|
+
const lastLength = ref(0);
|
|
22
|
+
const path = ref(null);
|
|
23
|
+
function genPoints(values, boundary) {
|
|
24
|
+
const {
|
|
25
|
+
minX,
|
|
26
|
+
maxX,
|
|
27
|
+
minY,
|
|
28
|
+
maxY
|
|
29
|
+
} = boundary;
|
|
30
|
+
const totalValues = values.length;
|
|
31
|
+
const maxValue = Math.max(...values);
|
|
32
|
+
const minValue = Math.min(...values);
|
|
33
|
+
const gridX = (maxX - minX) / (totalValues - 1);
|
|
34
|
+
const gridY = (maxY - minY) / (maxValue - minValue || 1);
|
|
35
|
+
return values.map((value, index) => {
|
|
36
|
+
return {
|
|
37
|
+
x: minX + index * gridX,
|
|
38
|
+
y: maxY - (value - minValue) * gridY,
|
|
39
|
+
value
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const hasLabels = computed(() => {
|
|
44
|
+
return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
|
|
45
|
+
});
|
|
46
|
+
const lineWidth = computed(() => {
|
|
47
|
+
return parseFloat(props.lineWidth) || 4;
|
|
48
|
+
});
|
|
49
|
+
const totalWidth = computed(() => Number(props.width));
|
|
50
|
+
const boundary = computed(() => {
|
|
51
|
+
const padding = Number(props.padding);
|
|
52
|
+
return {
|
|
53
|
+
minX: padding,
|
|
54
|
+
maxX: totalWidth.value - padding,
|
|
55
|
+
minY: padding,
|
|
56
|
+
maxY: parseInt(props.height, 10) - padding
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
const parsedLabels = computed(() => {
|
|
60
|
+
const labels = [];
|
|
61
|
+
const points = genPoints(props.modelValue.map(item => typeof item === 'number' ? item : item.value), boundary.value);
|
|
62
|
+
const len = points.length;
|
|
63
|
+
for (let i = 0; labels.length < len; i++) {
|
|
64
|
+
const item = points[i];
|
|
65
|
+
let value = props.labels[i];
|
|
66
|
+
if (!value) {
|
|
67
|
+
value = typeof item === 'object' ? item.value : item;
|
|
68
|
+
}
|
|
69
|
+
labels.push({
|
|
70
|
+
x: item.x,
|
|
71
|
+
value: String(value)
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return labels;
|
|
75
|
+
});
|
|
76
|
+
watch(() => props.modelValue, async () => {
|
|
77
|
+
await nextTick();
|
|
78
|
+
if (!props.autoDraw || !path.value) return;
|
|
79
|
+
const pathRef = path.value;
|
|
80
|
+
const length = pathRef.getTotalLength();
|
|
81
|
+
if (!props.fill) {
|
|
82
|
+
// Initial setup to "hide" the line by using the stroke dash array
|
|
83
|
+
pathRef.style.strokeDasharray = `${length}`;
|
|
84
|
+
pathRef.style.strokeDashoffset = `${length}`;
|
|
85
|
+
|
|
86
|
+
// Force reflow to ensure the transition starts from this state
|
|
87
|
+
pathRef.getBoundingClientRect();
|
|
88
|
+
|
|
89
|
+
// Animate the stroke dash offset to "draw" the line
|
|
90
|
+
pathRef.style.transition = `stroke-dashoffset ${autoDrawDuration.value}ms ${props.autoDrawEasing}`;
|
|
91
|
+
pathRef.style.strokeDashoffset = '0';
|
|
92
|
+
} else {
|
|
93
|
+
// Your existing logic for filled paths remains the same
|
|
94
|
+
pathRef.style.transformOrigin = 'bottom center';
|
|
95
|
+
pathRef.style.transition = 'none';
|
|
96
|
+
pathRef.style.transform = `scaleY(0)`;
|
|
97
|
+
pathRef.getBoundingClientRect();
|
|
98
|
+
pathRef.style.transition = `transform ${autoDrawDuration.value}ms ${props.autoDrawEasing}`;
|
|
99
|
+
pathRef.style.transform = `scaleY(1)`;
|
|
100
|
+
}
|
|
101
|
+
lastLength.value = length;
|
|
102
|
+
}, {
|
|
103
|
+
immediate: true
|
|
104
|
+
});
|
|
105
|
+
useRender(() => {
|
|
106
|
+
const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
|
|
107
|
+
return _createVNode("svg", {
|
|
108
|
+
"display": "block",
|
|
109
|
+
"stroke-width": parseFloat(props.lineWidth) ?? 4
|
|
110
|
+
}, [_createVNode("defs", null, [_createVNode("linearGradient", {
|
|
111
|
+
"id": id.value,
|
|
112
|
+
"gradientUnits": "userSpaceOnUse",
|
|
113
|
+
"x1": props.gradientDirection === 'left' ? '100%' : '0',
|
|
114
|
+
"y1": props.gradientDirection === 'top' ? '100%' : '0',
|
|
115
|
+
"x2": props.gradientDirection === 'right' ? '100%' : '0',
|
|
116
|
+
"y2": props.gradientDirection === 'bottom' ? '100%' : '0'
|
|
117
|
+
}, [gradientData.map((color, index) => _createVNode("stop", {
|
|
118
|
+
"offset": index / Math.max(gradientData.length - 1, 1),
|
|
119
|
+
"stop-color": color || 'currentColor'
|
|
120
|
+
}, null))])]), hasLabels.value && _createVNode("g", {
|
|
121
|
+
"key": "labels",
|
|
122
|
+
"style": {
|
|
123
|
+
textAnchor: 'middle',
|
|
124
|
+
dominantBaseline: 'mathematical',
|
|
125
|
+
fill: 'currentColor'
|
|
126
|
+
}
|
|
127
|
+
}, [parsedLabels.value.map((item, i) => _createVNode("text", {
|
|
128
|
+
"x": item.x + lineWidth.value / 2 + lineWidth.value / 2,
|
|
129
|
+
"y": parseInt(props.height, 10) - 4 + (parseInt(props.labelSize, 10) || 7 * 0.75),
|
|
130
|
+
"font-size": Number(props.labelSize) || 7
|
|
131
|
+
}, [slots.label?.({
|
|
132
|
+
index: i,
|
|
133
|
+
value: item.value
|
|
134
|
+
}) ?? item.value]))]), _createVNode("path", {
|
|
135
|
+
"ref": path,
|
|
136
|
+
"d": genPath(genPoints(props.modelValue.map(item => typeof item === 'number' ? item : item.value), boundary.value), props.smooth ? 8 : Number(props.smooth), props.fill, parseInt(props.height, 10)),
|
|
137
|
+
"fill": props.fill ? `url(#${id.value})` : 'none',
|
|
138
|
+
"stroke": props.fill ? 'none' : `url(#${id.value})`
|
|
139
|
+
}, null)]);
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=VTrendline.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VTrendline.mjs","names":["computed","nextTick","ref","watch","makeLineProps","genPath","genericComponent","getUid","propsFactory","useRender","makeVTrendlineProps","fill","Boolean","VTrendline","name","props","setup","_ref","slots","uid","id","autoDrawDuration","Number","lastLength","path","genPoints","values","boundary","minX","maxX","minY","maxY","totalValues","length","maxValue","Math","max","minValue","min","gridX","gridY","map","value","index","x","y","hasLabels","showLabels","labels","label","lineWidth","parseFloat","totalWidth","width","padding","parseInt","height","parsedLabels","points","modelValue","item","len","i","push","String","autoDraw","pathRef","getTotalLength","style","strokeDasharray","strokeDashoffset","getBoundingClientRect","transition","autoDrawEasing","transformOrigin","transform","immediate","gradientData","gradient","slice","reverse","_createVNode","gradientDirection","color","textAnchor","dominantBaseline","labelSize","smooth"],"sources":["../../../src/labs/VSparkline/VTrendline.tsx"],"sourcesContent":["// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { makeLineProps } from './util/line'\nimport { genPath } from './util/path'\nimport { genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VTrendlineSlots = {\n default: void\n label: { index: number, value: string }\n}\n\nexport type SparklineItem = number | { value: number }\n\nexport type SparklineText = {\n x: number\n value: string\n}\n\nexport interface Boundary {\n minX: number\n minY: number\n maxX: number\n maxY: number\n}\n\nexport interface Point {\n x: number\n y: number\n value: number\n}\n\nexport const makeVTrendlineProps = propsFactory({\n fill: Boolean,\n\n ...makeLineProps(),\n}, 'VTrendline')\n\nexport const VTrendline = genericComponent<VTrendlineSlots>()({\n name: 'VTrendline',\n\n props: makeVTrendlineProps(),\n\n setup (props, { slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `trendline-${uid}`)\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || (props.fill ? 500 : 2000))\n\n const lastLength = ref(0)\n const path = ref<SVGPathElement | null>(null)\n\n function genPoints (\n values: number[],\n boundary: Boundary\n ): Point[] {\n const { minX, maxX, minY, maxY } = boundary\n const totalValues = values.length\n const maxValue = Math.max(...values)\n const minValue = Math.min(...values)\n\n const gridX = (maxX - minX) / (totalValues - 1)\n const gridY = (maxY - minY) / ((maxValue - minValue) || 1)\n\n return values.map((value, index) => {\n return {\n x: minX + index * gridX,\n y: maxY - (value - minValue) * gridY,\n value,\n }\n })\n }\n const hasLabels = computed(() => {\n return Boolean(\n props.showLabels ||\n props.labels.length > 0 ||\n !!slots?.label\n )\n })\n const lineWidth = computed(() => {\n return parseFloat(props.lineWidth) || 4\n })\n const totalWidth = computed(() => Number(props.width))\n\n const boundary = computed<Boundary>(() => {\n const padding = Number(props.padding)\n\n return {\n minX: padding,\n maxX: totalWidth.value - padding,\n minY: padding,\n maxY: parseInt(props.height, 10) - padding,\n }\n })\n const parsedLabels = computed(() => {\n const labels = []\n const points = genPoints(\n props.modelValue.map(item => (typeof item === 'number' ? item : item.value)),\n boundary.value\n )\n const len = points.length\n\n for (let i = 0; labels.length < len; i++) {\n const item = points[i]\n let value = props.labels[i]\n\n if (!value) {\n value = typeof item === 'object'\n ? item.value\n : item\n }\n\n labels.push({\n x: item.x,\n value: String(value),\n })\n }\n\n return labels\n })\n\n watch(() => props.modelValue, async () => {\n await nextTick()\n\n if (!props.autoDraw || !path.value) return\n\n const pathRef = path.value\n const length = pathRef.getTotalLength()\n\n if (!props.fill) {\n // Initial setup to \"hide\" the line by using the stroke dash array\n pathRef.style.strokeDasharray = `${length}`\n pathRef.style.strokeDashoffset = `${length}`\n\n // Force reflow to ensure the transition starts from this state\n pathRef.getBoundingClientRect()\n\n // Animate the stroke dash offset to \"draw\" the line\n pathRef.style.transition = `stroke-dashoffset ${autoDrawDuration.value}ms ${props.autoDrawEasing}`\n pathRef.style.strokeDashoffset = '0'\n } else {\n // Your existing logic for filled paths remains the same\n pathRef.style.transformOrigin = 'bottom center'\n pathRef.style.transition = 'none'\n pathRef.style.transform = `scaleY(0)`\n pathRef.getBoundingClientRect()\n pathRef.style.transition = `transform ${autoDrawDuration.value}ms ${props.autoDrawEasing}`\n pathRef.style.transform = `scaleY(1)`\n }\n\n lastLength.value = length\n }, { immediate: true })\n\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse()\n\n return (\n <svg\n display=\"block\"\n stroke-width={ parseFloat(props.lineWidth) ?? 4 }\n >\n <defs>\n <linearGradient\n id={ id.value }\n gradientUnits=\"userSpaceOnUse\"\n x1={ props.gradientDirection === 'left' ? '100%' : '0' }\n y1={ props.gradientDirection === 'top' ? '100%' : '0' }\n x2={ props.gradientDirection === 'right' ? '100%' : '0' }\n y2={ props.gradientDirection === 'bottom' ? '100%' : '0' }\n >\n {\n gradientData.map((color, index) => (\n <stop offset={ index / (Math.max(gradientData.length - 1, 1)) } stop-color={ color || 'currentColor' } />\n ))\n }\n </linearGradient>\n </defs>\n\n { hasLabels.value && (\n <g\n key=\"labels\"\n style={{\n textAnchor: 'middle',\n dominantBaseline: 'mathematical',\n fill: 'currentColor',\n }}\n >\n {\n parsedLabels.value.map((item, i) => (\n <text\n x={ item.x + (lineWidth.value / 2) + lineWidth.value / 2 }\n y={ (parseInt(props.height, 10) - 4) + (parseInt(props.labelSize, 10) || 7 * 0.75) }\n font-size={ Number(props.labelSize) || 7 }\n >\n { slots.label?.({ index: i, value: item.value }) ?? item.value }\n </text>\n ))\n }\n </g>\n )}\n\n <path\n ref={ path }\n d={ genPath(\n genPoints(\n props.modelValue.map(item => (typeof item === 'number' ? item : item.value)),\n boundary.value\n ),\n props.smooth ? 8 : Number(props.smooth),\n props.fill,\n parseInt(props.height, 10)\n )}\n fill={ props.fill ? `url(#${id.value})` : 'none' }\n stroke={ props.fill ? 'none' : `url(#${id.value})` }\n />\n </svg>\n )\n })\n },\n})\n\nexport type VTrendline = InstanceType<typeof VTrendline>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
import * as vue from 'vue';
|
|
2
|
+
import { ComponentPropsOptions, ExtractPropTypes, PropType } from 'vue';
|
|
3
|
+
|
|
4
|
+
interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
|
|
5
|
+
filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
type SparklineItem = number | {
|
|
9
|
+
value: number;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
declare const VSparkline: {
|
|
13
|
+
new (...args: any[]): vue.CreateComponentPublicInstance<{
|
|
14
|
+
fill: boolean;
|
|
15
|
+
type: "bar" | "trend";
|
|
16
|
+
height: string | number;
|
|
17
|
+
width: string | number;
|
|
18
|
+
smooth: boolean;
|
|
19
|
+
padding: string | number;
|
|
20
|
+
labels: SparklineItem[];
|
|
21
|
+
gradient: string[];
|
|
22
|
+
modelValue: SparklineItem[];
|
|
23
|
+
autoDraw: boolean;
|
|
24
|
+
autoDrawEasing: string;
|
|
25
|
+
gradientDirection: "left" | "top" | "bottom" | "right";
|
|
26
|
+
labelSize: string | number;
|
|
27
|
+
lineWidth: string | number;
|
|
28
|
+
showLabels: boolean;
|
|
29
|
+
autoLineWidth: boolean;
|
|
30
|
+
} & {
|
|
31
|
+
id?: string | undefined;
|
|
32
|
+
color?: string | undefined;
|
|
33
|
+
autoDrawDuration?: string | number | undefined;
|
|
34
|
+
} & {
|
|
35
|
+
$children?: vue.VNodeChild | ((arg: void) => vue.VNodeChild) | {
|
|
36
|
+
default?: ((arg: void) => vue.VNodeChild) | undefined;
|
|
37
|
+
label?: ((arg: {
|
|
38
|
+
index: number;
|
|
39
|
+
value: string;
|
|
40
|
+
}) => vue.VNodeChild) | undefined;
|
|
41
|
+
};
|
|
42
|
+
'v-slots'?: {
|
|
43
|
+
default?: false | ((arg: void) => vue.VNodeChild) | undefined;
|
|
44
|
+
label?: false | ((arg: {
|
|
45
|
+
index: number;
|
|
46
|
+
value: string;
|
|
47
|
+
}) => vue.VNodeChild) | undefined;
|
|
48
|
+
} | undefined;
|
|
49
|
+
} & {
|
|
50
|
+
"v-slot:default"?: false | ((arg: void) => vue.VNodeChild) | undefined;
|
|
51
|
+
"v-slot:label"?: false | ((arg: {
|
|
52
|
+
index: number;
|
|
53
|
+
value: string;
|
|
54
|
+
}) => vue.VNodeChild) | undefined;
|
|
55
|
+
}, void, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
|
|
56
|
+
fill: boolean;
|
|
57
|
+
type: "bar" | "trend";
|
|
58
|
+
height: string | number;
|
|
59
|
+
width: string | number;
|
|
60
|
+
smooth: boolean;
|
|
61
|
+
padding: string | number;
|
|
62
|
+
labels: SparklineItem[];
|
|
63
|
+
gradient: string[];
|
|
64
|
+
modelValue: SparklineItem[];
|
|
65
|
+
autoDraw: boolean;
|
|
66
|
+
autoDrawEasing: string;
|
|
67
|
+
gradientDirection: "left" | "top" | "bottom" | "right";
|
|
68
|
+
labelSize: string | number;
|
|
69
|
+
lineWidth: string | number;
|
|
70
|
+
showLabels: boolean;
|
|
71
|
+
autoLineWidth: boolean;
|
|
72
|
+
} & {
|
|
73
|
+
id?: string | undefined;
|
|
74
|
+
color?: string | undefined;
|
|
75
|
+
autoDrawDuration?: string | number | undefined;
|
|
76
|
+
} & {
|
|
77
|
+
$children?: vue.VNodeChild | ((arg: void) => vue.VNodeChild) | {
|
|
78
|
+
default?: ((arg: void) => vue.VNodeChild) | undefined;
|
|
79
|
+
label?: ((arg: {
|
|
80
|
+
index: number;
|
|
81
|
+
value: string;
|
|
82
|
+
}) => vue.VNodeChild) | undefined;
|
|
83
|
+
};
|
|
84
|
+
'v-slots'?: {
|
|
85
|
+
default?: false | ((arg: void) => vue.VNodeChild) | undefined;
|
|
86
|
+
label?: false | ((arg: {
|
|
87
|
+
index: number;
|
|
88
|
+
value: string;
|
|
89
|
+
}) => vue.VNodeChild) | undefined;
|
|
90
|
+
} | undefined;
|
|
91
|
+
} & {
|
|
92
|
+
"v-slot:default"?: false | ((arg: void) => vue.VNodeChild) | undefined;
|
|
93
|
+
"v-slot:label"?: false | ((arg: {
|
|
94
|
+
index: number;
|
|
95
|
+
value: string;
|
|
96
|
+
}) => vue.VNodeChild) | undefined;
|
|
97
|
+
}, {
|
|
98
|
+
fill: boolean;
|
|
99
|
+
type: "bar" | "trend";
|
|
100
|
+
height: string | number;
|
|
101
|
+
width: string | number;
|
|
102
|
+
smooth: boolean;
|
|
103
|
+
padding: string | number;
|
|
104
|
+
labels: SparklineItem[];
|
|
105
|
+
gradient: string[];
|
|
106
|
+
modelValue: SparklineItem[];
|
|
107
|
+
autoDraw: boolean;
|
|
108
|
+
autoDrawEasing: string;
|
|
109
|
+
gradientDirection: "left" | "top" | "bottom" | "right";
|
|
110
|
+
labelSize: string | number;
|
|
111
|
+
lineWidth: string | number;
|
|
112
|
+
showLabels: boolean;
|
|
113
|
+
autoLineWidth: boolean;
|
|
114
|
+
}, true, {}, vue.SlotsType<Partial<{
|
|
115
|
+
default: (arg: void) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
116
|
+
[key: string]: any;
|
|
117
|
+
}>[];
|
|
118
|
+
label: (arg: {
|
|
119
|
+
index: number;
|
|
120
|
+
value: string;
|
|
121
|
+
}) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
122
|
+
[key: string]: any;
|
|
123
|
+
}>[];
|
|
124
|
+
}>>, {
|
|
125
|
+
P: {};
|
|
126
|
+
B: {};
|
|
127
|
+
D: {};
|
|
128
|
+
C: {};
|
|
129
|
+
M: {};
|
|
130
|
+
Defaults: {};
|
|
131
|
+
}, {
|
|
132
|
+
fill: boolean;
|
|
133
|
+
type: "bar" | "trend";
|
|
134
|
+
height: string | number;
|
|
135
|
+
width: string | number;
|
|
136
|
+
smooth: boolean;
|
|
137
|
+
padding: string | number;
|
|
138
|
+
labels: SparklineItem[];
|
|
139
|
+
gradient: string[];
|
|
140
|
+
modelValue: SparklineItem[];
|
|
141
|
+
autoDraw: boolean;
|
|
142
|
+
autoDrawEasing: string;
|
|
143
|
+
gradientDirection: "left" | "top" | "bottom" | "right";
|
|
144
|
+
labelSize: string | number;
|
|
145
|
+
lineWidth: string | number;
|
|
146
|
+
showLabels: boolean;
|
|
147
|
+
autoLineWidth: boolean;
|
|
148
|
+
} & {
|
|
149
|
+
id?: string | undefined;
|
|
150
|
+
color?: string | undefined;
|
|
151
|
+
autoDrawDuration?: string | number | undefined;
|
|
152
|
+
} & {
|
|
153
|
+
$children?: vue.VNodeChild | ((arg: void) => vue.VNodeChild) | {
|
|
154
|
+
default?: ((arg: void) => vue.VNodeChild) | undefined;
|
|
155
|
+
label?: ((arg: {
|
|
156
|
+
index: number;
|
|
157
|
+
value: string;
|
|
158
|
+
}) => vue.VNodeChild) | undefined;
|
|
159
|
+
};
|
|
160
|
+
'v-slots'?: {
|
|
161
|
+
default?: false | ((arg: void) => vue.VNodeChild) | undefined;
|
|
162
|
+
label?: false | ((arg: {
|
|
163
|
+
index: number;
|
|
164
|
+
value: string;
|
|
165
|
+
}) => vue.VNodeChild) | undefined;
|
|
166
|
+
} | undefined;
|
|
167
|
+
} & {
|
|
168
|
+
"v-slot:default"?: false | ((arg: void) => vue.VNodeChild) | undefined;
|
|
169
|
+
"v-slot:label"?: false | ((arg: {
|
|
170
|
+
index: number;
|
|
171
|
+
value: string;
|
|
172
|
+
}) => vue.VNodeChild) | undefined;
|
|
173
|
+
}, {}, {}, {}, {}, {
|
|
174
|
+
fill: boolean;
|
|
175
|
+
type: "bar" | "trend";
|
|
176
|
+
height: string | number;
|
|
177
|
+
width: string | number;
|
|
178
|
+
smooth: boolean;
|
|
179
|
+
padding: string | number;
|
|
180
|
+
labels: SparklineItem[];
|
|
181
|
+
gradient: string[];
|
|
182
|
+
modelValue: SparklineItem[];
|
|
183
|
+
autoDraw: boolean;
|
|
184
|
+
autoDrawEasing: string;
|
|
185
|
+
gradientDirection: "left" | "top" | "bottom" | "right";
|
|
186
|
+
labelSize: string | number;
|
|
187
|
+
lineWidth: string | number;
|
|
188
|
+
showLabels: boolean;
|
|
189
|
+
autoLineWidth: boolean;
|
|
190
|
+
}>;
|
|
191
|
+
__isFragment?: undefined;
|
|
192
|
+
__isTeleport?: undefined;
|
|
193
|
+
__isSuspense?: undefined;
|
|
194
|
+
} & vue.ComponentOptionsBase<{
|
|
195
|
+
fill: boolean;
|
|
196
|
+
type: "bar" | "trend";
|
|
197
|
+
height: string | number;
|
|
198
|
+
width: string | number;
|
|
199
|
+
smooth: boolean;
|
|
200
|
+
padding: string | number;
|
|
201
|
+
labels: SparklineItem[];
|
|
202
|
+
gradient: string[];
|
|
203
|
+
modelValue: SparklineItem[];
|
|
204
|
+
autoDraw: boolean;
|
|
205
|
+
autoDrawEasing: string;
|
|
206
|
+
gradientDirection: "left" | "top" | "bottom" | "right";
|
|
207
|
+
labelSize: string | number;
|
|
208
|
+
lineWidth: string | number;
|
|
209
|
+
showLabels: boolean;
|
|
210
|
+
autoLineWidth: boolean;
|
|
211
|
+
} & {
|
|
212
|
+
id?: string | undefined;
|
|
213
|
+
color?: string | undefined;
|
|
214
|
+
autoDrawDuration?: string | number | undefined;
|
|
215
|
+
} & {
|
|
216
|
+
$children?: vue.VNodeChild | ((arg: void) => vue.VNodeChild) | {
|
|
217
|
+
default?: ((arg: void) => vue.VNodeChild) | undefined;
|
|
218
|
+
label?: ((arg: {
|
|
219
|
+
index: number;
|
|
220
|
+
value: string;
|
|
221
|
+
}) => vue.VNodeChild) | undefined;
|
|
222
|
+
};
|
|
223
|
+
'v-slots'?: {
|
|
224
|
+
default?: false | ((arg: void) => vue.VNodeChild) | undefined;
|
|
225
|
+
label?: false | ((arg: {
|
|
226
|
+
index: number;
|
|
227
|
+
value: string;
|
|
228
|
+
}) => vue.VNodeChild) | undefined;
|
|
229
|
+
} | undefined;
|
|
230
|
+
} & {
|
|
231
|
+
"v-slot:default"?: false | ((arg: void) => vue.VNodeChild) | undefined;
|
|
232
|
+
"v-slot:label"?: false | ((arg: {
|
|
233
|
+
index: number;
|
|
234
|
+
value: string;
|
|
235
|
+
}) => vue.VNodeChild) | undefined;
|
|
236
|
+
}, void, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
|
|
237
|
+
fill: boolean;
|
|
238
|
+
type: "bar" | "trend";
|
|
239
|
+
height: string | number;
|
|
240
|
+
width: string | number;
|
|
241
|
+
smooth: boolean;
|
|
242
|
+
padding: string | number;
|
|
243
|
+
labels: SparklineItem[];
|
|
244
|
+
gradient: string[];
|
|
245
|
+
modelValue: SparklineItem[];
|
|
246
|
+
autoDraw: boolean;
|
|
247
|
+
autoDrawEasing: string;
|
|
248
|
+
gradientDirection: "left" | "top" | "bottom" | "right";
|
|
249
|
+
labelSize: string | number;
|
|
250
|
+
lineWidth: string | number;
|
|
251
|
+
showLabels: boolean;
|
|
252
|
+
autoLineWidth: boolean;
|
|
253
|
+
}, {}, string, vue.SlotsType<Partial<{
|
|
254
|
+
default: (arg: void) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
255
|
+
[key: string]: any;
|
|
256
|
+
}>[];
|
|
257
|
+
label: (arg: {
|
|
258
|
+
index: number;
|
|
259
|
+
value: string;
|
|
260
|
+
}) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
261
|
+
[key: string]: any;
|
|
262
|
+
}>[];
|
|
263
|
+
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
|
|
264
|
+
autoDraw: BooleanConstructor;
|
|
265
|
+
autoDrawDuration: (StringConstructor | NumberConstructor)[];
|
|
266
|
+
autoDrawEasing: {
|
|
267
|
+
type: StringConstructor;
|
|
268
|
+
default: string;
|
|
269
|
+
};
|
|
270
|
+
color: StringConstructor;
|
|
271
|
+
gradient: {
|
|
272
|
+
type: PropType<string[]>;
|
|
273
|
+
default: () => never[];
|
|
274
|
+
};
|
|
275
|
+
gradientDirection: {
|
|
276
|
+
type: PropType<"left" | "top" | "bottom" | "right">;
|
|
277
|
+
validator: (val: string) => boolean;
|
|
278
|
+
default: string;
|
|
279
|
+
};
|
|
280
|
+
height: {
|
|
281
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
282
|
+
default: number;
|
|
283
|
+
};
|
|
284
|
+
labels: {
|
|
285
|
+
type: PropType<SparklineItem[]>;
|
|
286
|
+
default: () => never[];
|
|
287
|
+
};
|
|
288
|
+
labelSize: {
|
|
289
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
290
|
+
default: number;
|
|
291
|
+
};
|
|
292
|
+
lineWidth: {
|
|
293
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
294
|
+
default: number;
|
|
295
|
+
};
|
|
296
|
+
id: StringConstructor;
|
|
297
|
+
modelValue: {
|
|
298
|
+
type: PropType<SparklineItem[]>;
|
|
299
|
+
default: () => never[];
|
|
300
|
+
};
|
|
301
|
+
padding: {
|
|
302
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
303
|
+
default: number;
|
|
304
|
+
};
|
|
305
|
+
showLabels: BooleanConstructor;
|
|
306
|
+
smooth: BooleanConstructor;
|
|
307
|
+
width: {
|
|
308
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
309
|
+
default: number;
|
|
310
|
+
};
|
|
311
|
+
fill: BooleanConstructor;
|
|
312
|
+
autoLineWidth: BooleanConstructor;
|
|
313
|
+
type: {
|
|
314
|
+
type: PropType<"bar" | "trend">;
|
|
315
|
+
default: string;
|
|
316
|
+
};
|
|
317
|
+
}, vue.ExtractPropTypes<{
|
|
318
|
+
autoDraw: BooleanConstructor;
|
|
319
|
+
autoDrawDuration: (StringConstructor | NumberConstructor)[];
|
|
320
|
+
autoDrawEasing: {
|
|
321
|
+
type: StringConstructor;
|
|
322
|
+
default: string;
|
|
323
|
+
};
|
|
324
|
+
color: StringConstructor;
|
|
325
|
+
gradient: {
|
|
326
|
+
type: PropType<string[]>;
|
|
327
|
+
default: () => never[];
|
|
328
|
+
};
|
|
329
|
+
gradientDirection: {
|
|
330
|
+
type: PropType<"left" | "top" | "bottom" | "right">;
|
|
331
|
+
validator: (val: string) => boolean;
|
|
332
|
+
default: string;
|
|
333
|
+
};
|
|
334
|
+
height: {
|
|
335
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
336
|
+
default: number;
|
|
337
|
+
};
|
|
338
|
+
labels: {
|
|
339
|
+
type: PropType<SparklineItem[]>;
|
|
340
|
+
default: () => never[];
|
|
341
|
+
};
|
|
342
|
+
labelSize: {
|
|
343
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
344
|
+
default: number;
|
|
345
|
+
};
|
|
346
|
+
lineWidth: {
|
|
347
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
348
|
+
default: number;
|
|
349
|
+
};
|
|
350
|
+
id: StringConstructor;
|
|
351
|
+
modelValue: {
|
|
352
|
+
type: PropType<SparklineItem[]>;
|
|
353
|
+
default: () => never[];
|
|
354
|
+
};
|
|
355
|
+
padding: {
|
|
356
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
357
|
+
default: number;
|
|
358
|
+
};
|
|
359
|
+
showLabels: BooleanConstructor;
|
|
360
|
+
smooth: BooleanConstructor;
|
|
361
|
+
width: {
|
|
362
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
363
|
+
default: number;
|
|
364
|
+
};
|
|
365
|
+
fill: BooleanConstructor;
|
|
366
|
+
autoLineWidth: BooleanConstructor;
|
|
367
|
+
type: {
|
|
368
|
+
type: PropType<"bar" | "trend">;
|
|
369
|
+
default: string;
|
|
370
|
+
};
|
|
371
|
+
}>>;
|
|
372
|
+
type VSparkline = InstanceType<typeof VSparkline>;
|
|
373
|
+
|
|
374
|
+
export { VSparkline };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["VSparkline"],"sources":["../../../src/labs/VSparkline/index.ts"],"sourcesContent":["export { VSparkline } from './VSparkline'\n"],"mappings":"SAASA,UAAU"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// Utilities
|
|
2
|
+
import { propsFactory } from "../../../util/index.mjs"; // Types
|
|
3
|
+
export const makeLineProps = propsFactory({
|
|
4
|
+
autoDraw: Boolean,
|
|
5
|
+
autoDrawDuration: [Number, String],
|
|
6
|
+
autoDrawEasing: {
|
|
7
|
+
type: String,
|
|
8
|
+
default: 'ease'
|
|
9
|
+
},
|
|
10
|
+
color: String,
|
|
11
|
+
gradient: {
|
|
12
|
+
type: Array,
|
|
13
|
+
default: () => []
|
|
14
|
+
},
|
|
15
|
+
gradientDirection: {
|
|
16
|
+
type: String,
|
|
17
|
+
validator: val => ['top', 'bottom', 'left', 'right'].includes(val),
|
|
18
|
+
default: 'top'
|
|
19
|
+
},
|
|
20
|
+
height: {
|
|
21
|
+
type: [String, Number],
|
|
22
|
+
default: 75
|
|
23
|
+
},
|
|
24
|
+
labels: {
|
|
25
|
+
type: Array,
|
|
26
|
+
default: () => []
|
|
27
|
+
},
|
|
28
|
+
labelSize: {
|
|
29
|
+
type: [Number, String],
|
|
30
|
+
default: 7
|
|
31
|
+
},
|
|
32
|
+
lineWidth: {
|
|
33
|
+
type: [String, Number],
|
|
34
|
+
default: 4
|
|
35
|
+
},
|
|
36
|
+
id: String,
|
|
37
|
+
modelValue: {
|
|
38
|
+
type: Array,
|
|
39
|
+
default: () => []
|
|
40
|
+
},
|
|
41
|
+
padding: {
|
|
42
|
+
type: [String, Number],
|
|
43
|
+
default: 8
|
|
44
|
+
},
|
|
45
|
+
showLabels: Boolean,
|
|
46
|
+
smooth: Boolean,
|
|
47
|
+
width: {
|
|
48
|
+
type: [Number, String],
|
|
49
|
+
default: 300
|
|
50
|
+
}
|
|
51
|
+
}, 'Line');
|
|
52
|
+
//# sourceMappingURL=line.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line.mjs","names":["propsFactory","makeLineProps","autoDraw","Boolean","autoDrawDuration","Number","String","autoDrawEasing","type","default","color","gradient","Array","gradientDirection","validator","val","includes","height","labels","labelSize","lineWidth","id","modelValue","padding","showLabels","smooth","width"],"sources":["../../../../src/labs/VSparkline/util/line.ts"],"sourcesContent":["// Utilities\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type SparklineItem = number | { value: number }\n\nexport const makeLineProps = propsFactory({\n autoDraw: Boolean,\n autoDrawDuration: [Number, String],\n autoDrawEasing: {\n type: String,\n default: 'ease',\n },\n color: String,\n gradient: {\n type: Array as PropType<string[]>,\n default: () => ([]),\n },\n gradientDirection: {\n type: String as PropType<'top' | 'bottom' | 'left' | 'right'>,\n validator: (val: string) => ['top', 'bottom', 'left', 'right'].includes(val),\n default: 'top',\n },\n height: {\n type: [String, Number],\n default: 75,\n },\n labels: {\n type: Array as PropType<SparklineItem[]>,\n default: () => ([]),\n },\n labelSize: {\n type: [Number, String],\n default: 7,\n },\n lineWidth: {\n type: [String, Number],\n default: 4,\n },\n id: String,\n modelValue: {\n type: Array as PropType<SparklineItem[]>,\n default: () => ([]),\n },\n padding: {\n type: [String, Number],\n default: 8,\n },\n showLabels: Boolean,\n smooth: Boolean,\n width: {\n type: [Number, String],\n default: 300,\n },\n}, 'Line')\n"],"mappings":"AAAA;AAAA,SACSA,YAAY,mCAErB;AAKA,OAAO,MAAMC,aAAa,GAAGD,YAAY,CAAC;EACxCE,QAAQ,EAAEC,OAAO;EACjBC,gBAAgB,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;EAClCC,cAAc,EAAE;IACdC,IAAI,EAAEF,MAAM;IACZG,OAAO,EAAE;EACX,CAAC;EACDC,KAAK,EAAEJ,MAAM;EACbK,QAAQ,EAAE;IACRH,IAAI,EAAEI,KAA2B;IACjCH,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDI,iBAAiB,EAAE;IACjBL,IAAI,EAAEF,MAAuD;IAC7DQ,SAAS,EAAGC,GAAW,IAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAACC,QAAQ,CAACD,GAAG,CAAC;IAC5EN,OAAO,EAAE;EACX,CAAC;EACDQ,MAAM,EAAE;IACNT,IAAI,EAAE,CAACF,MAAM,EAAED,MAAM,CAAC;IACtBI,OAAO,EAAE;EACX,CAAC;EACDS,MAAM,EAAE;IACNV,IAAI,EAAEI,KAAkC;IACxCH,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDU,SAAS,EAAE;IACTX,IAAI,EAAE,CAACH,MAAM,EAAEC,MAAM,CAAC;IACtBG,OAAO,EAAE;EACX,CAAC;EACDW,SAAS,EAAE;IACTZ,IAAI,EAAE,CAACF,MAAM,EAAED,MAAM,CAAC;IACtBI,OAAO,EAAE;EACX,CAAC;EACDY,EAAE,EAAEf,MAAM;EACVgB,UAAU,EAAE;IACVd,IAAI,EAAEI,KAAkC;IACxCH,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDc,OAAO,EAAE;IACPf,IAAI,EAAE,CAACF,MAAM,EAAED,MAAM,CAAC;IACtBI,OAAO,EAAE;EACX,CAAC;EACDe,UAAU,EAAErB,OAAO;EACnBsB,MAAM,EAAEtB,OAAO;EACfuB,KAAK,EAAE;IACLlB,IAAI,EAAE,CAACH,MAAM,EAAEC,MAAM,CAAC;IACtBG,OAAO,EAAE;EACX;AACF,CAAC,EAAE,MAAM,CAAC"}
|