@vuetify/nightly 3.7.14-master.2025-02-26 → 3.7.14-master.2025-02-28
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/CHANGELOG.md +15 -3
- package/dist/json/attributes.json +2592 -2592
- package/dist/json/importMap-labs.json +20 -20
- package/dist/json/importMap.json +166 -166
- package/dist/json/web-types.json +4878 -4878
- package/dist/vuetify-labs.css +5270 -5270
- package/dist/vuetify-labs.d.ts +15 -9
- package/dist/vuetify-labs.esm.js +97 -24
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +97 -24
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +4070 -4070
- package/dist/vuetify.d.ts +55 -55
- package/dist/vuetify.esm.js +6 -3
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +6 -3
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +5 -5
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VList/VListItem.mjs +2 -0
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VSlider/slider.mjs +1 -0
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +55 -55
- package/lib/labs/VNumberInput/VNumberInput.mjs +53 -18
- package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
- package/lib/labs/VNumberInput/hold.mjs +31 -0
- package/lib/labs/VNumberInput/hold.mjs.map +1 -0
- package/lib/labs/VNumberInput/index.d.mts +1 -1
- package/lib/labs/VTreeview/VTreeviewItem.mjs +11 -4
- package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
- package/lib/labs/VTreeview/index.d.mts +14 -8
- package/lib/labs/components.d.mts +15 -9
- package/package.json +1 -1
@@ -7,6 +7,8 @@ import { VBtn } from "../../components/VBtn/index.mjs";
|
|
7
7
|
import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.mjs";
|
8
8
|
import { VDivider } from "../../components/VDivider/index.mjs";
|
9
9
|
import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.mjs"; // Composables
|
10
|
+
import { useHold } from "./hold.mjs";
|
11
|
+
import { useFocus } from "../../composables/focus.mjs";
|
10
12
|
import { useForm } from "../../composables/form.mjs";
|
11
13
|
import { forwardRefs } from "../../composables/forwardRefs.mjs";
|
12
14
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
|
@@ -54,9 +56,19 @@ export const VNumberInput = genericComponent()({
|
|
54
56
|
slots
|
55
57
|
} = _ref;
|
56
58
|
const vTextFieldRef = ref();
|
59
|
+
const {
|
60
|
+
holdStart,
|
61
|
+
holdStop
|
62
|
+
} = useHold({
|
63
|
+
toggleUpDown
|
64
|
+
});
|
57
65
|
const form = useForm(props);
|
58
66
|
const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
|
59
|
-
const
|
67
|
+
const {
|
68
|
+
isFocused,
|
69
|
+
focus,
|
70
|
+
blur
|
71
|
+
} = useFocus(props);
|
60
72
|
function correctPrecision(val) {
|
61
73
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
62
74
|
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
@@ -102,10 +114,18 @@ export const VNumberInput = genericComponent()({
|
|
102
114
|
const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small');
|
103
115
|
const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
|
104
116
|
const incrementSlotProps = computed(() => ({
|
105
|
-
|
117
|
+
props: {
|
118
|
+
onClick: onControlClick,
|
119
|
+
onPointerup: onControlMouseup,
|
120
|
+
onPointerdown: onUpControlMousedown
|
121
|
+
}
|
106
122
|
}));
|
107
123
|
const decrementSlotProps = computed(() => ({
|
108
|
-
|
124
|
+
props: {
|
125
|
+
onClick: onControlClick,
|
126
|
+
onPointerup: onControlMouseup,
|
127
|
+
onPointerdown: onDownControlMousedown
|
128
|
+
}
|
109
129
|
}));
|
110
130
|
watch(() => props.precision, () => formatInputValue());
|
111
131
|
onMounted(() => {
|
@@ -132,14 +152,6 @@ export const VNumberInput = genericComponent()({
|
|
132
152
|
if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);
|
133
153
|
}
|
134
154
|
}
|
135
|
-
function onClickUp(e) {
|
136
|
-
e.stopPropagation();
|
137
|
-
toggleUpDown();
|
138
|
-
}
|
139
|
-
function onClickDown(e) {
|
140
|
-
e.stopPropagation();
|
141
|
-
toggleUpDown(false);
|
142
|
-
}
|
143
155
|
function onBeforeinput(e) {
|
144
156
|
if (!e.data) return;
|
145
157
|
const existingTxt = e.target?.value;
|
@@ -177,8 +189,29 @@ export const VNumberInput = genericComponent()({
|
|
177
189
|
}
|
178
190
|
}
|
179
191
|
}
|
180
|
-
function
|
192
|
+
function onControlClick(e) {
|
193
|
+
e.stopPropagation();
|
194
|
+
}
|
195
|
+
function onControlMouseup(e) {
|
196
|
+
const el = e.currentTarget;
|
197
|
+
el?.releasePointerCapture(e.pointerId);
|
198
|
+
e.preventDefault();
|
199
|
+
e.stopPropagation();
|
200
|
+
holdStop();
|
201
|
+
}
|
202
|
+
function onUpControlMousedown(e) {
|
203
|
+
const el = e.currentTarget;
|
204
|
+
el?.setPointerCapture(e.pointerId);
|
205
|
+
e.preventDefault();
|
206
|
+
e.stopPropagation();
|
207
|
+
holdStart('up');
|
208
|
+
}
|
209
|
+
function onDownControlMousedown(e) {
|
210
|
+
const el = e.currentTarget;
|
211
|
+
el?.setPointerCapture(e.pointerId);
|
212
|
+
e.preventDefault();
|
181
213
|
e.stopPropagation();
|
214
|
+
holdStart('down');
|
182
215
|
}
|
183
216
|
function clampModel() {
|
184
217
|
if (controlsDisabled.value) return;
|
@@ -207,11 +240,11 @@ export const VNumberInput = genericComponent()({
|
|
207
240
|
inputText.value = model.value.toString();
|
208
241
|
}
|
209
242
|
function onFocus() {
|
210
|
-
|
243
|
+
focus();
|
211
244
|
trimDecimalZeros();
|
212
245
|
}
|
213
246
|
function onBlur() {
|
214
|
-
|
247
|
+
blur();
|
215
248
|
clampModel();
|
216
249
|
}
|
217
250
|
useRender(() => {
|
@@ -228,8 +261,9 @@ export const VNumberInput = genericComponent()({
|
|
228
261
|
"data-testid": "increment",
|
229
262
|
"aria-hidden": "true",
|
230
263
|
"icon": incrementIcon.value,
|
231
|
-
"onClick":
|
232
|
-
"
|
264
|
+
"onClick": onControlClick,
|
265
|
+
"onPointerup": onControlMouseup,
|
266
|
+
"onPointerdown": onUpControlMousedown,
|
233
267
|
"size": controlNodeSize.value,
|
234
268
|
"tabindex": "-1"
|
235
269
|
}, null) : _createVNode(VDefaultsProvider, {
|
@@ -258,8 +292,9 @@ export const VNumberInput = genericComponent()({
|
|
258
292
|
"icon": decrementIcon.value,
|
259
293
|
"size": controlNodeSize.value,
|
260
294
|
"tabindex": "-1",
|
261
|
-
"onClick":
|
262
|
-
"
|
295
|
+
"onClick": onControlClick,
|
296
|
+
"onPointerup": onControlMouseup,
|
297
|
+
"onPointerdown": onDownControlMousedown
|
263
298
|
}, null) : _createVNode(VDefaultsProvider, {
|
264
299
|
"key": "decrement-defaults",
|
265
300
|
"defaults": {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useForm","forwardRefs","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","watch","watchEffect","clamp","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","correctPrecision","arguments","length","undefined","fixed","toFixed","toString","model","_inputText","isNaN","inputText","get","set","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","toggleUpDown","increment","inferredPrecision","Math","e","stopPropagation","onBeforeinput","data","existingTxt","target","selectionStart","selectionEnd","potentialNewInputVal","slice","test","preventDefault","split","includes","onKeydown","key","ctrlKey","onControlMousedown","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","flat","height","size","icon","decrementControlNode","decrement","controlNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/labs/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '../../components/VBtn'\nimport { VDefaultsProvider } from '../../components/VDefaultsProvider'\nimport { VDivider } from '../../components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n click: (e: MouseEvent) => void\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split' | 'hidden'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField | undefined>()\n\n const form = useForm(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || form.isReadonly.value\n ))\n\n const isFocused = ref(false)\n\n function correctPrecision (val: number, precision = props.precision) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n return isFocused.value\n ? Number(fixed).toString() // trim zeros\n : fixed\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(+val, props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n watchEffect(() => {\n if (isFocused.value && !controlsDisabled.value) {\n // ignore external changes\n } else if (model.value == null) {\n _inputText.value = null\n } else if (!isNaN(model.value)) {\n _inputText.value = correctPrecision(model.value)\n }\n })\n const inputText = computed<string | null>({\n get: () => _inputText.value,\n set (val) {\n if (val === null || val === '') {\n model.value = null\n _inputText.value = null\n } else if (!isNaN(+val) && +val <= props.max && +val >= props.min) {\n model.value = +val\n _inputText.value = val\n }\n },\n })\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number - props.step >= props.min\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = computed(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n watch(() => props.precision, () => formatInputValue())\n\n onMounted(() => {\n clampModel()\n })\n\n function inferPrecision (value: number | null) {\n if (value == null) return 0\n const str = value.toString()\n const idx = str.indexOf('.')\n return ~idx ? str.length - idx : 0\n }\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max))\n return\n }\n\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step))\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision)\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision)\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision)\n }\n }\n\n function onClickUp (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown()\n }\n\n function onClickDown (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown(false)\n }\n\n function onBeforeinput (e: InputEvent) {\n if (!e.data) return\n const existingTxt = (e.target as HTMLInputElement)?.value\n const selectionStart = (e.target as HTMLInputElement)?.selectionStart\n const selectionEnd = (e.target as HTMLInputElement)?.selectionEnd\n const potentialNewInputVal =\n existingTxt\n ? existingTxt.slice(0, selectionStart as number | undefined) + e.data + existingTxt.slice(selectionEnd as number | undefined)\n : e.data\n // Only numbers, \"-\", \".\" are allowed\n // AND \"-\", \".\" are allowed only once\n // AND \"-\" is only allowed at the start\n if (!/^-?(\\d+(\\.\\d*)?|(\\.\\d+)|\\d*|\\.)$/.test(potentialNewInputVal)) {\n e.preventDefault()\n }\n\n if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split('.')[1]?.length > props.precision) {\n e.preventDefault()\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.includes('.')) {\n e.preventDefault()\n }\n }\n\n async function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n clampModel()\n // _model is controlled, so need to wait until props['modelValue'] is updated\n await nextTick()\n if (e.key === 'ArrowDown') {\n toggleUpDown(false)\n } else {\n toggleUpDown()\n }\n }\n }\n\n function onControlMousedown (e: MouseEvent) {\n e.stopPropagation()\n }\n\n function clampModel () {\n if (controlsDisabled.value) return\n if (!vTextFieldRef.value) return\n const actualText = vTextFieldRef.value.value\n if (actualText && !isNaN(+actualText)) {\n inputText.value = correctPrecision(clamp(+actualText, props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = props.precision == null\n ? String(model.value)\n : model.value.toFixed(props.precision)\n }\n\n function trimDecimalZeros () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = model.value.toString()\n }\n\n function onFocus () {\n isFocused.value = true\n trimDecimalZeros()\n }\n\n function onBlur () {\n isFocused.value = false\n clampModel()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n disabled={ !canIncrease.value }\n flat\n key=\"increment-btn\"\n height={ controlNodeDefaultHeight.value }\n data-testid=\"increment\"\n aria-hidden=\"true\"\n icon={ incrementIcon.value }\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n },\n }}\n >\n { slots.increment(incrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n disabled={ !canDecrease.value }\n flat\n key=\"decrement-btn\"\n height={ controlNodeDefaultHeight.value }\n data-testid=\"decrement\"\n aria-hidden=\"true\"\n icon={ decrementIcon.value }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n },\n }}\n >\n { slots.decrement(decrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n function controlNode () {\n return (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n { incrementControlNode() }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n { incrementControlNode() }\n </div>\n ) : (props.reverse || controlVariant.value === 'hidden'\n ? undefined\n : <>{ dividerNode() }{ controlNode() }</>)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse && controlVariant.value !== 'hidden'\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n v-model={ inputText.value }\n validationValue={ model.value }\n onBeforeinput={ onBeforeinput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useHold","useFocus","useForm","forwardRefs","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","watch","watchEffect","clamp","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","holdStart","holdStop","toggleUpDown","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","focus","blur","correctPrecision","arguments","length","undefined","fixed","toFixed","toString","model","_inputText","isNaN","inputText","get","set","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","onClick","onControlClick","onPointerup","onControlMouseup","onPointerdown","onUpControlMousedown","decrementSlotProps","onDownControlMousedown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","increment","inferredPrecision","Math","onBeforeinput","e","data","existingTxt","target","selectionStart","selectionEnd","potentialNewInputVal","slice","test","preventDefault","split","includes","onKeydown","key","ctrlKey","stopPropagation","el","currentTarget","releasePointerCapture","pointerId","setPointerCapture","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","flat","height","size","icon","decrementControlNode","decrement","controlNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/labs/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useHold } from './hold'\nimport { useFocus } from '@/composables/focus'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n props: Record<string, unknown>\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split' | 'hidden'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField | undefined>()\n\n const { holdStart, holdStop } = useHold({ toggleUpDown })\n const form = useForm(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || form.isReadonly.value\n ))\n\n const { isFocused, focus, blur } = useFocus(props)\n\n function correctPrecision (val: number, precision = props.precision) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n return isFocused.value\n ? Number(fixed).toString() // trim zeros\n : fixed\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(+val, props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n watchEffect(() => {\n if (isFocused.value && !controlsDisabled.value) {\n // ignore external changes\n } else if (model.value == null) {\n _inputText.value = null\n } else if (!isNaN(model.value)) {\n _inputText.value = correctPrecision(model.value)\n }\n })\n const inputText = computed<string | null>({\n get: () => _inputText.value,\n set (val) {\n if (val === null || val === '') {\n model.value = null\n _inputText.value = null\n } else if (!isNaN(+val) && +val <= props.max && +val >= props.min) {\n model.value = +val\n _inputText.value = val\n }\n },\n })\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number - props.step >= props.min\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = computed(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = computed(() => ({\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onUpControlMousedown,\n },\n }))\n const decrementSlotProps = computed(() => ({\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onDownControlMousedown,\n },\n }))\n\n watch(() => props.precision, () => formatInputValue())\n\n onMounted(() => {\n clampModel()\n })\n\n function inferPrecision (value: number | null) {\n if (value == null) return 0\n const str = value.toString()\n const idx = str.indexOf('.')\n return ~idx ? str.length - idx : 0\n }\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max))\n return\n }\n\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step))\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision)\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision)\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision)\n }\n }\n\n function onBeforeinput (e: InputEvent) {\n if (!e.data) return\n const existingTxt = (e.target as HTMLInputElement)?.value\n const selectionStart = (e.target as HTMLInputElement)?.selectionStart\n const selectionEnd = (e.target as HTMLInputElement)?.selectionEnd\n const potentialNewInputVal =\n existingTxt\n ? existingTxt.slice(0, selectionStart as number | undefined) + e.data + existingTxt.slice(selectionEnd as number | undefined)\n : e.data\n // Only numbers, \"-\", \".\" are allowed\n // AND \"-\", \".\" are allowed only once\n // AND \"-\" is only allowed at the start\n if (!/^-?(\\d+(\\.\\d*)?|(\\.\\d+)|\\d*|\\.)$/.test(potentialNewInputVal)) {\n e.preventDefault()\n }\n\n if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split('.')[1]?.length > props.precision) {\n e.preventDefault()\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.includes('.')) {\n e.preventDefault()\n }\n }\n\n async function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n clampModel()\n // _model is controlled, so need to wait until props['modelValue'] is updated\n await nextTick()\n if (e.key === 'ArrowDown') {\n toggleUpDown(false)\n } else {\n toggleUpDown()\n }\n }\n }\n\n function onControlClick (e: MouseEvent) {\n e.stopPropagation()\n }\n\n function onControlMouseup (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.releasePointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStop()\n }\n\n function onUpControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('up')\n }\n\n function onDownControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('down')\n }\n\n function clampModel () {\n if (controlsDisabled.value) return\n if (!vTextFieldRef.value) return\n const actualText = vTextFieldRef.value.value\n if (actualText && !isNaN(+actualText)) {\n inputText.value = correctPrecision(clamp(+actualText, props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = props.precision == null\n ? String(model.value)\n : model.value.toFixed(props.precision)\n }\n\n function trimDecimalZeros () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = model.value.toString()\n }\n\n function onFocus () {\n focus()\n trimDecimalZeros()\n }\n\n function onBlur () {\n blur()\n clampModel()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n disabled={ !canIncrease.value }\n flat\n key=\"increment-btn\"\n height={ controlNodeDefaultHeight.value }\n data-testid=\"increment\"\n aria-hidden=\"true\"\n icon={ incrementIcon.value }\n onClick={ onControlClick }\n onPointerup={ onControlMouseup }\n onPointerdown={ onUpControlMousedown }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n },\n }}\n >\n { slots.increment(incrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n disabled={ !canDecrease.value }\n flat\n key=\"decrement-btn\"\n height={ controlNodeDefaultHeight.value }\n data-testid=\"decrement\"\n aria-hidden=\"true\"\n icon={ decrementIcon.value }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n onClick={ onControlClick }\n onPointerup={ onControlMouseup }\n onPointerdown={ onDownControlMousedown }\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n },\n }}\n >\n { slots.decrement(decrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n function controlNode () {\n return (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n { incrementControlNode() }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n { incrementControlNode() }\n </div>\n ) : (props.reverse || controlVariant.value === 'hidden'\n ? undefined\n : <>{ dividerNode() }{ controlNode() }</>)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse && controlVariant.value !== 'hidden'\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n v-model={ inputText.value }\n validationValue={ model.value }\n onBeforeinput={ onBeforeinput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
// Utilities
|
2
|
+
import { onScopeDispose } from 'vue';
|
3
|
+
const HOLD_REPEAT = 50;
|
4
|
+
const HOLD_DELAY = 500;
|
5
|
+
export function useHold(_ref) {
|
6
|
+
let {
|
7
|
+
toggleUpDown
|
8
|
+
} = _ref;
|
9
|
+
let timeout = -1;
|
10
|
+
let interval = -1;
|
11
|
+
onScopeDispose(holdStop);
|
12
|
+
function holdStart(value) {
|
13
|
+
holdStop();
|
14
|
+
tick(value);
|
15
|
+
timeout = window.setTimeout(() => {
|
16
|
+
interval = window.setInterval(() => tick(value), HOLD_REPEAT);
|
17
|
+
}, HOLD_DELAY);
|
18
|
+
}
|
19
|
+
function holdStop() {
|
20
|
+
window.clearTimeout(timeout);
|
21
|
+
window.clearInterval(interval);
|
22
|
+
}
|
23
|
+
function tick(value) {
|
24
|
+
toggleUpDown(value === 'up');
|
25
|
+
}
|
26
|
+
return {
|
27
|
+
holdStart,
|
28
|
+
holdStop
|
29
|
+
};
|
30
|
+
}
|
31
|
+
//# sourceMappingURL=hold.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"hold.mjs","names":["onScopeDispose","HOLD_REPEAT","HOLD_DELAY","useHold","_ref","toggleUpDown","timeout","interval","holdStop","holdStart","value","tick","window","setTimeout","setInterval","clearTimeout","clearInterval"],"sources":["../../../src/labs/VNumberInput/hold.ts"],"sourcesContent":["// Utilities\nimport { onScopeDispose } from 'vue'\n\nconst HOLD_REPEAT = 50\nconst HOLD_DELAY = 500\n\nexport function useHold ({ toggleUpDown }: { toggleUpDown: (increment: boolean) => void }) {\n let timeout = -1\n let interval = -1\n\n onScopeDispose(holdStop)\n\n function holdStart (value: 'up' | 'down') {\n holdStop()\n tick(value)\n timeout = window.setTimeout(() => {\n interval = window.setInterval(() => tick(value), HOLD_REPEAT)\n }, HOLD_DELAY)\n }\n\n function holdStop () {\n window.clearTimeout(timeout)\n window.clearInterval(interval)\n }\n\n function tick (value: 'up' | 'down') {\n toggleUpDown(value === 'up')\n }\n\n return { holdStart, holdStop }\n}\n"],"mappings":"AAAA;AACA,SAASA,cAAc,QAAQ,KAAK;AAEpC,MAAMC,WAAW,GAAG,EAAE;AACtB,MAAMC,UAAU,GAAG,GAAG;AAEtB,OAAO,SAASC,OAAOA,CAAAC,IAAA,EAAoE;EAAA,IAAlE;IAAEC;EAA6D,CAAC,GAAAD,IAAA;EACvF,IAAIE,OAAO,GAAG,CAAC,CAAC;EAChB,IAAIC,QAAQ,GAAG,CAAC,CAAC;EAEjBP,cAAc,CAACQ,QAAQ,CAAC;EAExB,SAASC,SAASA,CAAEC,KAAoB,EAAE;IACxCF,QAAQ,CAAC,CAAC;IACVG,IAAI,CAACD,KAAK,CAAC;IACXJ,OAAO,GAAGM,MAAM,CAACC,UAAU,CAAC,MAAM;MAChCN,QAAQ,GAAGK,MAAM,CAACE,WAAW,CAAC,MAAMH,IAAI,CAACD,KAAK,CAAC,EAAET,WAAW,CAAC;IAC/D,CAAC,EAAEC,UAAU,CAAC;EAChB;EAEA,SAASM,QAAQA,CAAA,EAAI;IACnBI,MAAM,CAACG,YAAY,CAACT,OAAO,CAAC;IAC5BM,MAAM,CAACI,aAAa,CAACT,QAAQ,CAAC;EAChC;EAEA,SAASI,IAAIA,CAAED,KAAoB,EAAE;IACnCL,YAAY,CAACK,KAAK,KAAK,IAAI,CAAC;EAC9B;EAEA,OAAO;IAAED,SAAS;IAAED;EAAS,CAAC;AAChC","ignoreList":[]}
|
@@ -9,11 +9,10 @@ import { makeVListItemProps, VListItem } from "../../components/VList/VListItem.
|
|
9
9
|
import { VProgressCircular } from "../../components/VProgressCircular/index.mjs"; // Composables
|
10
10
|
import { IconValue } from "../../composables/icons.mjs"; // Utilities
|
11
11
|
import { computed, inject, ref, toRaw } from 'vue';
|
12
|
-
import {
|
12
|
+
import { genericComponent, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
13
13
|
import { VTreeviewSymbol } from "./shared.mjs";
|
14
14
|
export const makeVTreeviewItemProps = propsFactory({
|
15
15
|
loading: Boolean,
|
16
|
-
onToggleExpand: EventProp(),
|
17
16
|
toggleIcon: IconValue,
|
18
17
|
...makeVListItemProps({
|
19
18
|
slim: true
|
@@ -22,9 +21,13 @@ export const makeVTreeviewItemProps = propsFactory({
|
|
22
21
|
export const VTreeviewItem = genericComponent()({
|
23
22
|
name: 'VTreeviewItem',
|
24
23
|
props: makeVTreeviewItemProps(),
|
24
|
+
emits: {
|
25
|
+
toggleExpand: value => true
|
26
|
+
},
|
25
27
|
setup(props, _ref) {
|
26
28
|
let {
|
27
|
-
slots
|
29
|
+
slots,
|
30
|
+
emit
|
28
31
|
} = _ref;
|
29
32
|
const visibleIds = inject(VTreeviewSymbol, {
|
30
33
|
visibleIds: ref()
|
@@ -39,6 +42,10 @@ export const VTreeviewItem = genericComponent()({
|
|
39
42
|
vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
|
40
43
|
}
|
41
44
|
}
|
45
|
+
function onClickAction(e) {
|
46
|
+
e.preventDefault();
|
47
|
+
emit('toggleExpand', e);
|
48
|
+
}
|
42
49
|
useRender(() => {
|
43
50
|
const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
|
44
51
|
const hasPrepend = slots.prepend || props.toggleIcon;
|
@@ -63,7 +70,7 @@ export const VTreeviewItem = genericComponent()({
|
|
63
70
|
"icon": props.toggleIcon,
|
64
71
|
"loading": props.loading,
|
65
72
|
"variant": "text",
|
66
|
-
"onClick":
|
73
|
+
"onClick": onClickAction
|
67
74
|
}, {
|
68
75
|
loader() {
|
69
76
|
return _createVNode(VProgressCircular, {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VTreeviewItem.mjs","names":["VBtn","VListItemAction","makeVListItemProps","VListItem","VProgressCircular","IconValue","computed","inject","ref","toRaw","
|
1
|
+
{"version":3,"file":"VTreeviewItem.mjs","names":["VBtn","VListItemAction","makeVListItemProps","VListItem","VProgressCircular","IconValue","computed","inject","ref","toRaw","genericComponent","omit","propsFactory","useRender","VTreeviewSymbol","makeVTreeviewItemProps","loading","Boolean","toggleIcon","slim","VTreeviewItem","name","props","emits","toggleExpand","value","setup","_ref","slots","emit","visibleIds","vListItemRef","isActivatableGroupActivator","root","activatable","isGroupActivator","vListItemRefIsClickable","link","isClickable","list","disabled","isFiltered","has","id","activateGroupActivator","e","activate","isActivated","onClickAction","preventDefault","listItemProps","filterProps","hasPrepend","prepend","_createVNode","_mergeProps","class","onClick","slotProps","_Fragment","default","loader","undefined"],"sources":["../../../src/labs/VTreeview/VTreeviewItem.tsx"],"sourcesContent":["// Styles\nimport './VTreeviewItem.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VListItemAction } from '@/components/VList'\nimport { makeVListItemProps, VListItem } from '@/components/VList/VListItem'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, inject, ref, toRaw } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTreeviewSymbol } from './shared'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\n\nexport const makeVTreeviewItemProps = propsFactory({\n loading: Boolean,\n toggleIcon: IconValue,\n\n ...makeVListItemProps({ slim: true }),\n}, 'VTreeviewItem')\n\nexport const VTreeviewItem = genericComponent<VListItemSlots>()({\n name: 'VTreeviewItem',\n\n props: makeVTreeviewItemProps(),\n\n emits: {\n toggleExpand: (value: PointerEvent) => true,\n },\n\n setup (props, { slots, emit }) {\n const visibleIds = inject(VTreeviewSymbol, { visibleIds: ref() }).visibleIds\n\n const vListItemRef = ref<VListItem>()\n\n const isActivatableGroupActivator = computed(() =>\n (vListItemRef.value?.root.activatable.value) &&\n vListItemRef.value?.isGroupActivator\n )\n const vListItemRefIsClickable = computed(() => (\n vListItemRef.value?.link.isClickable.value ||\n (props.value != null && !!vListItemRef.value?.list)\n ))\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || vListItemRefIsClickable.value || isActivatableGroupActivator.value)\n )\n const isFiltered = computed(() => visibleIds.value && !visibleIds.value.has(toRaw(vListItemRef.value?.id)))\n\n function activateGroupActivator (e: MouseEvent | KeyboardEvent) {\n if (isClickable.value && isActivatableGroupActivator.value) {\n vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e)\n }\n }\n\n function onClickAction (e: PointerEvent) {\n e.preventDefault()\n emit('toggleExpand', e)\n }\n\n useRender(() => {\n const listItemProps = omit(VListItem.filterProps(props), ['onClick'])\n const hasPrepend = slots.prepend || props.toggleIcon\n\n return (\n <VListItem\n ref={ vListItemRef }\n { ...listItemProps }\n active={ vListItemRef.value?.isActivated }\n class={[\n 'v-treeview-item',\n {\n 'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,\n 'v-treeview-item--filtered': isFiltered.value,\n },\n props.class,\n ]}\n ripple={ false }\n onClick={ props.onClick ?? activateGroupActivator }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => {\n return (\n <>\n <VListItemAction start={ false }>\n { props.toggleIcon ? (\n <VBtn\n density=\"compact\"\n icon={ props.toggleIcon }\n loading={ props.loading }\n variant=\"text\"\n onClick={ onClickAction }\n >\n {{\n loader () {\n return (\n <VProgressCircular\n indeterminate=\"disable-shrink\"\n size=\"20\"\n width=\"2\"\n />\n )\n },\n }}\n </VBtn>\n ) : (\n <div class=\"v-treeview-item__level\" />\n )}\n </VListItemAction>\n\n { slots.prepend?.(slotProps) }\n </>\n )\n } : undefined,\n }}\n </VListItem>\n )\n })\n\n return {}\n },\n})\n\nexport type VTreeviewItem = InstanceType<typeof VTreeviewItem>\n"],"mappings":"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","ignoreList":[]}
|
@@ -1026,7 +1026,6 @@ declare const VTreeviewItem: {
|
|
1026
1026
|
prependAvatar?: string | undefined;
|
1027
1027
|
subtitle?: string | number | undefined;
|
1028
1028
|
toggleIcon?: IconValue | undefined;
|
1029
|
-
onToggleExpand?: ((args_0: MouseEvent) => void) | undefined;
|
1030
1029
|
} & {
|
1031
1030
|
$children?: vue.VNodeChild | {
|
1032
1031
|
prepend?: ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
@@ -1048,7 +1047,11 @@ declare const VTreeviewItem: {
|
|
1048
1047
|
"v-slot:default"?: false | ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
1049
1048
|
"v-slot:title"?: false | ((arg: ListItemTitleSlot) => vue.VNodeChild) | undefined;
|
1050
1049
|
"v-slot:subtitle"?: false | ((arg: ListItemSubtitleSlot) => vue.VNodeChild) | undefined;
|
1051
|
-
}
|
1050
|
+
} & {
|
1051
|
+
onToggleExpand?: ((value: PointerEvent) => any) | undefined;
|
1052
|
+
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
1053
|
+
toggleExpand: (value: PointerEvent) => true;
|
1054
|
+
}, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
|
1052
1055
|
replace: boolean;
|
1053
1056
|
variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
|
1054
1057
|
exact: boolean;
|
@@ -1094,7 +1097,6 @@ declare const VTreeviewItem: {
|
|
1094
1097
|
prependAvatar?: string | undefined;
|
1095
1098
|
subtitle?: string | number | undefined;
|
1096
1099
|
toggleIcon?: IconValue | undefined;
|
1097
|
-
onToggleExpand?: ((args_0: MouseEvent) => void) | undefined;
|
1098
1100
|
} & {
|
1099
1101
|
$children?: vue.VNodeChild | {
|
1100
1102
|
prepend?: ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
@@ -1116,6 +1118,8 @@ declare const VTreeviewItem: {
|
|
1116
1118
|
"v-slot:default"?: false | ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
1117
1119
|
"v-slot:title"?: false | ((arg: ListItemTitleSlot) => vue.VNodeChild) | undefined;
|
1118
1120
|
"v-slot:subtitle"?: false | ((arg: ListItemSubtitleSlot) => vue.VNodeChild) | undefined;
|
1121
|
+
} & {
|
1122
|
+
onToggleExpand?: ((value: PointerEvent) => any) | undefined;
|
1119
1123
|
}, {
|
1120
1124
|
replace: boolean;
|
1121
1125
|
link: boolean;
|
@@ -1193,7 +1197,6 @@ declare const VTreeviewItem: {
|
|
1193
1197
|
prependAvatar?: string | undefined;
|
1194
1198
|
subtitle?: string | number | undefined;
|
1195
1199
|
toggleIcon?: IconValue | undefined;
|
1196
|
-
onToggleExpand?: ((args_0: MouseEvent) => void) | undefined;
|
1197
1200
|
} & {
|
1198
1201
|
$children?: vue.VNodeChild | {
|
1199
1202
|
prepend?: ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
@@ -1215,6 +1218,8 @@ declare const VTreeviewItem: {
|
|
1215
1218
|
"v-slot:default"?: false | ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
1216
1219
|
"v-slot:title"?: false | ((arg: ListItemTitleSlot) => vue.VNodeChild) | undefined;
|
1217
1220
|
"v-slot:subtitle"?: false | ((arg: ListItemSubtitleSlot) => vue.VNodeChild) | undefined;
|
1221
|
+
} & {
|
1222
|
+
onToggleExpand?: ((value: PointerEvent) => any) | undefined;
|
1218
1223
|
}, {}, {}, {}, {}, {
|
1219
1224
|
replace: boolean;
|
1220
1225
|
link: boolean;
|
@@ -1283,7 +1288,6 @@ declare const VTreeviewItem: {
|
|
1283
1288
|
prependAvatar?: string | undefined;
|
1284
1289
|
subtitle?: string | number | undefined;
|
1285
1290
|
toggleIcon?: IconValue | undefined;
|
1286
|
-
onToggleExpand?: ((args_0: MouseEvent) => void) | undefined;
|
1287
1291
|
} & {
|
1288
1292
|
$children?: vue.VNodeChild | {
|
1289
1293
|
prepend?: ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
@@ -1305,7 +1309,11 @@ declare const VTreeviewItem: {
|
|
1305
1309
|
"v-slot:default"?: false | ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
1306
1310
|
"v-slot:title"?: false | ((arg: ListItemTitleSlot) => vue.VNodeChild) | undefined;
|
1307
1311
|
"v-slot:subtitle"?: false | ((arg: ListItemSubtitleSlot) => vue.VNodeChild) | undefined;
|
1308
|
-
}
|
1312
|
+
} & {
|
1313
|
+
onToggleExpand?: ((value: PointerEvent) => any) | undefined;
|
1314
|
+
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
1315
|
+
toggleExpand: (value: PointerEvent) => true;
|
1316
|
+
}, string, {
|
1309
1317
|
replace: boolean;
|
1310
1318
|
link: boolean;
|
1311
1319
|
variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
|
@@ -1406,7 +1414,6 @@ declare const VTreeviewItem: {
|
|
1406
1414
|
onClick: vue.PropType<(args_0: MouseEvent | KeyboardEvent) => void>;
|
1407
1415
|
onClickOnce: vue.PropType<(args_0: MouseEvent) => void>;
|
1408
1416
|
loading: BooleanConstructor;
|
1409
|
-
onToggleExpand: vue.PropType<(args_0: MouseEvent) => void>;
|
1410
1417
|
toggleIcon: vue.PropType<IconValue>;
|
1411
1418
|
}, vue.ExtractPropTypes<{
|
1412
1419
|
color: StringConstructor;
|
@@ -1485,7 +1492,6 @@ declare const VTreeviewItem: {
|
|
1485
1492
|
onClick: vue.PropType<(args_0: MouseEvent | KeyboardEvent) => void>;
|
1486
1493
|
onClickOnce: vue.PropType<(args_0: MouseEvent) => void>;
|
1487
1494
|
loading: BooleanConstructor;
|
1488
|
-
onToggleExpand: vue.PropType<(args_0: MouseEvent) => void>;
|
1489
1495
|
toggleIcon: vue.PropType<IconValue>;
|
1490
1496
|
}>>;
|
1491
1497
|
type VTreeviewItem = InstanceType<typeof VTreeviewItem>;
|
@@ -4565,7 +4565,7 @@ declare const VFileUploadItem: {
|
|
4565
4565
|
type VFileUploadItem = InstanceType<typeof VFileUploadItem>;
|
4566
4566
|
|
4567
4567
|
type ControlSlot = {
|
4568
|
-
|
4568
|
+
props: Record<string, unknown>;
|
4569
4569
|
};
|
4570
4570
|
type ControlVariant = 'default' | 'stacked' | 'split' | 'hidden';
|
4571
4571
|
declare const VNumberInput: {
|
@@ -17953,7 +17953,6 @@ declare const VTreeviewItem: {
|
|
17953
17953
|
prependAvatar?: string | undefined;
|
17954
17954
|
subtitle?: string | number | undefined;
|
17955
17955
|
toggleIcon?: IconValue | undefined;
|
17956
|
-
onToggleExpand?: ((args_0: MouseEvent) => void) | undefined;
|
17957
17956
|
} & {
|
17958
17957
|
$children?: vue.VNodeChild | {
|
17959
17958
|
prepend?: ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
@@ -17975,7 +17974,11 @@ declare const VTreeviewItem: {
|
|
17975
17974
|
"v-slot:default"?: false | ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
17976
17975
|
"v-slot:title"?: false | ((arg: ListItemTitleSlot) => vue.VNodeChild) | undefined;
|
17977
17976
|
"v-slot:subtitle"?: false | ((arg: ListItemSubtitleSlot) => vue.VNodeChild) | undefined;
|
17978
|
-
}
|
17977
|
+
} & {
|
17978
|
+
onToggleExpand?: ((value: PointerEvent) => any) | undefined;
|
17979
|
+
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
17980
|
+
toggleExpand: (value: PointerEvent) => true;
|
17981
|
+
}, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
|
17979
17982
|
replace: boolean;
|
17980
17983
|
variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
|
17981
17984
|
exact: boolean;
|
@@ -18021,7 +18024,6 @@ declare const VTreeviewItem: {
|
|
18021
18024
|
prependAvatar?: string | undefined;
|
18022
18025
|
subtitle?: string | number | undefined;
|
18023
18026
|
toggleIcon?: IconValue | undefined;
|
18024
|
-
onToggleExpand?: ((args_0: MouseEvent) => void) | undefined;
|
18025
18027
|
} & {
|
18026
18028
|
$children?: vue.VNodeChild | {
|
18027
18029
|
prepend?: ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
@@ -18043,6 +18045,8 @@ declare const VTreeviewItem: {
|
|
18043
18045
|
"v-slot:default"?: false | ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
18044
18046
|
"v-slot:title"?: false | ((arg: ListItemTitleSlot) => vue.VNodeChild) | undefined;
|
18045
18047
|
"v-slot:subtitle"?: false | ((arg: ListItemSubtitleSlot) => vue.VNodeChild) | undefined;
|
18048
|
+
} & {
|
18049
|
+
onToggleExpand?: ((value: PointerEvent) => any) | undefined;
|
18046
18050
|
}, {
|
18047
18051
|
replace: boolean;
|
18048
18052
|
link: boolean;
|
@@ -18120,7 +18124,6 @@ declare const VTreeviewItem: {
|
|
18120
18124
|
prependAvatar?: string | undefined;
|
18121
18125
|
subtitle?: string | number | undefined;
|
18122
18126
|
toggleIcon?: IconValue | undefined;
|
18123
|
-
onToggleExpand?: ((args_0: MouseEvent) => void) | undefined;
|
18124
18127
|
} & {
|
18125
18128
|
$children?: vue.VNodeChild | {
|
18126
18129
|
prepend?: ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
@@ -18142,6 +18145,8 @@ declare const VTreeviewItem: {
|
|
18142
18145
|
"v-slot:default"?: false | ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
18143
18146
|
"v-slot:title"?: false | ((arg: ListItemTitleSlot) => vue.VNodeChild) | undefined;
|
18144
18147
|
"v-slot:subtitle"?: false | ((arg: ListItemSubtitleSlot) => vue.VNodeChild) | undefined;
|
18148
|
+
} & {
|
18149
|
+
onToggleExpand?: ((value: PointerEvent) => any) | undefined;
|
18145
18150
|
}, {}, {}, {}, {}, {
|
18146
18151
|
replace: boolean;
|
18147
18152
|
link: boolean;
|
@@ -18210,7 +18215,6 @@ declare const VTreeviewItem: {
|
|
18210
18215
|
prependAvatar?: string | undefined;
|
18211
18216
|
subtitle?: string | number | undefined;
|
18212
18217
|
toggleIcon?: IconValue | undefined;
|
18213
|
-
onToggleExpand?: ((args_0: MouseEvent) => void) | undefined;
|
18214
18218
|
} & {
|
18215
18219
|
$children?: vue.VNodeChild | {
|
18216
18220
|
prepend?: ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
@@ -18232,7 +18236,11 @@ declare const VTreeviewItem: {
|
|
18232
18236
|
"v-slot:default"?: false | ((arg: ListItemSlot) => vue.VNodeChild) | undefined;
|
18233
18237
|
"v-slot:title"?: false | ((arg: ListItemTitleSlot) => vue.VNodeChild) | undefined;
|
18234
18238
|
"v-slot:subtitle"?: false | ((arg: ListItemSubtitleSlot) => vue.VNodeChild) | undefined;
|
18235
|
-
}
|
18239
|
+
} & {
|
18240
|
+
onToggleExpand?: ((value: PointerEvent) => any) | undefined;
|
18241
|
+
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
18242
|
+
toggleExpand: (value: PointerEvent) => true;
|
18243
|
+
}, string, {
|
18236
18244
|
replace: boolean;
|
18237
18245
|
link: boolean;
|
18238
18246
|
variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
|
@@ -18333,7 +18341,6 @@ declare const VTreeviewItem: {
|
|
18333
18341
|
onClick: vue.PropType<(args_0: MouseEvent | KeyboardEvent) => void>;
|
18334
18342
|
onClickOnce: vue.PropType<(args_0: MouseEvent) => void>;
|
18335
18343
|
loading: BooleanConstructor;
|
18336
|
-
onToggleExpand: vue.PropType<(args_0: MouseEvent) => void>;
|
18337
18344
|
toggleIcon: vue.PropType<IconValue>;
|
18338
18345
|
}, vue.ExtractPropTypes<{
|
18339
18346
|
color: StringConstructor;
|
@@ -18412,7 +18419,6 @@ declare const VTreeviewItem: {
|
|
18412
18419
|
onClick: vue.PropType<(args_0: MouseEvent | KeyboardEvent) => void>;
|
18413
18420
|
onClickOnce: vue.PropType<(args_0: MouseEvent) => void>;
|
18414
18421
|
loading: BooleanConstructor;
|
18415
|
-
onToggleExpand: vue.PropType<(args_0: MouseEvent) => void>;
|
18416
18422
|
toggleIcon: vue.PropType<IconValue>;
|
18417
18423
|
}>>;
|
18418
18424
|
type VTreeviewItem = InstanceType<typeof VTreeviewItem>;
|
package/package.json
CHANGED