@vuetify/nightly 4.0.0-dev-20230419.0 → 4.0.0-dev-20230422.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -2
- package/dist/json/attributes.json +172 -108
- package/dist/json/importMap.json +58 -58
- package/dist/json/tags.json +16 -0
- package/dist/json/web-types.json +522 -220
- package/dist/vuetify-labs.css +335 -172
- package/dist/vuetify-labs.d.ts +620 -171
- package/dist/vuetify-labs.esm.js +864 -182
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +864 -181
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +166 -3
- package/dist/vuetify.d.ts +584 -167
- package/dist/vuetify.esm.js +806 -134
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +806 -133
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +748 -682
- package/dist/vuetify.min.js.map +1 -1
- package/lib/adapters/date-adapter.mjs +2 -0
- package/lib/adapters/date-adapter.mjs.map +1 -0
- package/lib/adapters/vuetify.mjs +399 -0
- package/lib/adapters/vuetify.mjs.map +1 -0
- package/lib/blueprints/index.d.ts +34 -0
- package/lib/blueprints/md1.d.ts +34 -0
- package/lib/blueprints/md2.d.ts +34 -0
- package/lib/blueprints/md3.d.ts +34 -0
- package/lib/components/VAppBar/VAppBar.mjs +62 -10
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/index.d.ts +26 -0
- package/lib/components/VAutocomplete/VAutocomplete.css +9 -0
- package/lib/components/VAutocomplete/VAutocomplete.mjs +50 -6
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +10 -0
- package/lib/components/VAutocomplete/index.d.ts +29 -17
- package/lib/components/VBtn/_mixins.scss +1 -1
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/index.d.ts +21 -16
- package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/index.d.ts +22 -1
- package/lib/components/VCombobox/VCombobox.css +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +6 -4
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +1 -1
- package/lib/components/VCombobox/index.d.ts +29 -17
- package/lib/components/VField/index.d.ts +6 -0
- package/lib/components/VFileInput/VFileInput.mjs +13 -17
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/index.d.ts +68 -23
- package/lib/components/VInput/VInput.mjs +14 -7
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/index.d.ts +22 -1
- package/lib/components/VOverlay/locationStrategies.mjs +9 -4
- package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRadioGroup/index.d.ts +22 -1
- package/lib/components/VRangeSlider/VRangeSlider.mjs +33 -22
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRangeSlider/index.d.ts +39 -6
- package/lib/components/VSelect/VSelect.mjs +6 -0
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.ts +32 -17
- package/lib/components/VSlider/VSlider.mjs +33 -15
- package/lib/components/VSlider/VSlider.mjs.map +1 -1
- package/lib/components/VSlider/index.d.ts +39 -6
- package/lib/components/VSlider/slider.mjs +43 -23
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.mjs +5 -3
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/index.d.ts +43 -1
- package/lib/components/VTextField/VTextField.mjs +4 -12
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/index.d.ts +70 -22
- package/lib/components/VTextarea/VTextarea.mjs +4 -12
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/index.d.ts +61 -22
- package/lib/components/VToolbar/VToolbar.css +3 -1
- package/lib/components/VToolbar/VToolbar.sass +3 -1
- package/lib/components/VValidation/index.d.ts +10 -1
- package/lib/components/index.d.ts +525 -150
- package/lib/composables/date.mjs +39 -0
- package/lib/composables/date.mjs.map +1 -0
- package/lib/composables/focus.mjs +3 -2
- package/lib/composables/focus.mjs.map +1 -1
- package/lib/composables/index.mjs +1 -0
- package/lib/composables/index.mjs.map +1 -1
- package/lib/composables/items.mjs +7 -2
- package/lib/composables/items.mjs.map +1 -1
- package/lib/composables/scroll.mjs +3 -0
- package/lib/composables/scroll.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +8 -3
- package/lib/framework.mjs.map +1 -1
- package/lib/iconsets/mdi-svg.mjs +2 -2
- package/lib/iconsets/mdi-svg.mjs.map +1 -1
- package/lib/index.d.ts +59 -17
- package/lib/labs/VDataTable/VDataTable.mjs +2 -2
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +52 -44
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +2 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +0 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/options.mjs +2 -1
- package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +44 -11
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +1 -0
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
- package/lib/labs/VSkeletonLoader/index.d.ts +9 -9
- package/lib/labs/components.d.ts +53 -20
- package/lib/styles/main.css +152 -0
- package/lib/styles/settings/_utilities.scss +11 -1
- package/lib/util/helpers.mjs +4 -0
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +2 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VRangeSlider.mjs","names":["filterInputProps","makeVInputProps","VInput","getOffset","makeSliderProps","useSlider","VLabel","VSliderThumb","VSliderTrack","makeFocusProps","useFocus","useProxiedModel","computed","ref","genericComponent","useRender","VRangeSlider","name","props","strict","Boolean","modelValue","type","Array","default","emits","value","setup","_ref","slots","startThumbRef","stopThumbRef","inputRef","getActiveThumb","e","startOffset","$el","direction","stopOffset","a","Math","abs","b","activeThumbRef","hasLabels","max","min","mousePressed","onSliderMousedown","onSliderTouchstart","position","roundValue","trackContainerRef","handleSliderMouseUp","newValue","model","handleMouseMove","start","stop","focus","undefined","arr","length","map","isFocused","blur","trackStart","trackStop","inputProps","_","hasPrepend","label","prepend","_createVNode","_mergeProps","disabled","slotProps","_Fragment","_ref2","id","messagesId","readonly","v","relatedTarget","onBlur"],"sources":["../../../src/components/VRangeSlider/VRangeSlider.tsx"],"sourcesContent":["// Styles\nimport '../VSlider/VSlider.sass'\n\n// Components\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { getOffset, makeSliderProps, useSlider } from '@/components/VSlider/slider'\nimport { VLabel } from '@/components/VLabel'\nimport { VSliderThumb } from '@/components/VSlider/VSliderThumb'\nimport { VSliderTrack } from '@/components/VSlider/VSliderTrack'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType, WritableComputedRef } from 'vue'\nimport type { VSliderSlots } from '../VSlider/VSlider'\n\nexport const VRangeSlider = genericComponent<VSliderSlots>()({\n name: 'VRangeSlider',\n\n props: {\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n\n strict: Boolean,\n modelValue: {\n type: Array as PropType<number[]>,\n default: () => ([0, 0]),\n },\n },\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (value: [number, number]) => true,\n },\n\n setup (props, { slots }) {\n const startThumbRef = ref<VSliderThumb>()\n const stopThumbRef = ref<VSliderThumb>()\n const inputRef = ref<VInput>()\n\n function getActiveThumb (e: MouseEvent | TouchEvent) {\n if (!startThumbRef.value || !stopThumbRef.value) return\n\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction)\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction)\n\n const a = Math.abs(startOffset)\n const b = Math.abs(stopOffset)\n\n return (a < b || (a === b && startOffset < 0)) ? startThumbRef.value.$el : stopThumbRef.value.$el\n }\n\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n roundValue,\n trackContainerRef,\n } = useSlider({\n /* eslint-disable @typescript-eslint/no-use-before-define */\n props,\n handleSliderMouseUp: newValue => {\n model.value = activeThumbRef.value === startThumbRef.value?.$el ? [newValue, model.value[1]] : [model.value[0], newValue]\n },\n handleMouseMove: newValue => {\n const [start, stop] = model.value\n\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = newValue > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el\n activeThumbRef.value?.focus()\n }\n\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(newValue, stop), stop]\n } else {\n model.value = [start, Math.max(start, newValue)]\n }\n },\n getActiveThumb,\n /* eslint-enable @typescript-eslint/no-use-before-define */\n })\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n arr => {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (!arr || !arr.length) return [0, 0]\n\n return arr.map(value => roundValue(value))\n },\n ) as WritableComputedRef<[number, number]> & { readonly externalValue: number[] }\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStart = computed(() => position(model.value[0]))\n const trackStop = computed(() => position(model.value[1]))\n\n useRender(() => {\n const [inputProps, _] = filterInputProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n 'v-range-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n ]}\n ref={ inputRef }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? props.label\n ? (\n <VLabel\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n }\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ onSliderMousedown }\n onTouchstartPassive={ onSliderTouchstart }\n >\n <input\n id={ `${id.value}_start` }\n name={ props.name || id.value }\n disabled={ props.disabled }\n readonly={ props.readonly }\n tabindex=\"-1\"\n value={ model.value[0] }\n />\n\n <input\n id={ `${id.value}_stop` }\n name={ props.name || id.value }\n disabled={ props.disabled }\n readonly={ props.readonly }\n tabindex=\"-1\"\n value={ model.value[1] }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ trackStart.value }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ startThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === startThumbRef.value?.$el }\n modelValue={ model.value[0] }\n onUpdate:modelValue={ v => (model.value = [v, model.value[1]]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = startThumbRef.value?.$el\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[1] === min.value &&\n e.relatedTarget !== stopThumbRef.value?.$el\n ) {\n startThumbRef.value?.$el.blur()\n stopThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ min.value }\n max={ model.value[1] }\n position={ trackStart.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n\n <VSliderThumb\n ref={ stopThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === stopThumbRef.value?.$el }\n modelValue={ model.value[1] }\n onUpdate:modelValue={ v => (model.value = [model.value[0], v]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = stopThumbRef.value?.$el\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[0] === max.value &&\n e.relatedTarget !== startThumbRef.value?.$el\n ) {\n stopThumbRef.value?.$el.blur()\n startThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ model.value[0] }\n max={ max.value }\n position={ trackStop.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRangeSlider = InstanceType<typeof VRangeSlider>\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"VRangeSlider.mjs","names":["makeVInputProps","VInput","getOffset","makeSliderProps","useSlider","useSteps","VLabel","VSliderThumb","VSliderTrack","makeFocusProps","useFocus","useProxiedModel","computed","ref","genericComponent","useRender","VRangeSlider","name","props","strict","Boolean","modelValue","type","Array","default","emits","value","end","start","setup","_ref","slots","emit","startThumbRef","stopThumbRef","inputRef","getActiveThumb","e","startOffset","$el","direction","stopOffset","a","Math","abs","b","steps","model","undefined","arr","length","map","roundValue","activeThumbRef","hasLabels","max","min","mousePressed","onSliderMousedown","onSliderTouchstart","position","trackContainerRef","onSliderStart","onSliderEnd","_ref2","newValue","onSliderMove","_ref3","stop","focus","isFocused","blur","trackStart","trackStop","inputProps","_","filterProps","hasPrepend","label","prepend","_createVNode","_mergeProps","disabled","slotProps","_Fragment","_ref4","id","messagesId","readonly","v","relatedTarget","onBlur"],"sources":["../../../src/components/VRangeSlider/VRangeSlider.tsx"],"sourcesContent":["// Styles\nimport '../VSlider/VSlider.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { getOffset, makeSliderProps, useSlider, useSteps } from '@/components/VSlider/slider'\nimport { VLabel } from '@/components/VLabel'\nimport { VSliderThumb } from '@/components/VSlider/VSliderThumb'\nimport { VSliderTrack } from '@/components/VSlider/VSliderTrack'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType, WritableComputedRef } from 'vue'\nimport type { VSliderSlots } from '../VSlider/VSlider'\n\nexport const VRangeSlider = genericComponent<VSliderSlots>()({\n name: 'VRangeSlider',\n\n props: {\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n\n strict: Boolean,\n modelValue: {\n type: Array as PropType<number[]>,\n default: () => ([0, 0]),\n },\n },\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (value: [number, number]) => true,\n end: (value: [number, number]) => true,\n start: (value: [number, number]) => true,\n },\n\n setup (props, { slots, emit }) {\n const startThumbRef = ref<VSliderThumb>()\n const stopThumbRef = ref<VSliderThumb>()\n const inputRef = ref<VInput>()\n\n function getActiveThumb (e: MouseEvent | TouchEvent) {\n if (!startThumbRef.value || !stopThumbRef.value) return\n\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction)\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction)\n\n const a = Math.abs(startOffset)\n const b = Math.abs(stopOffset)\n\n return (a < b || (a === b && startOffset < 0)) ? startThumbRef.value.$el : stopThumbRef.value.$el\n }\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n arr => {\n if (!arr?.length) return [0, 0]\n\n return arr.map(value => steps.roundValue(value))\n },\n ) as WritableComputedRef<[number, number]> & { readonly externalValue: number[] }\n\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n trackContainerRef,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const newValue: [number, number] = activeThumbRef.value === startThumbRef.value?.$el\n ? [value, model.value[1]]\n : [model.value[0], value]\n\n model.value = newValue\n emit('end', newValue)\n },\n onSliderMove: ({ value }) => {\n const [start, stop] = model.value\n\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el\n activeThumbRef.value?.focus()\n }\n\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(value, stop), stop]\n } else {\n model.value = [start, Math.max(start, value)]\n }\n },\n getActiveThumb,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStart = computed(() => position(model.value[0]))\n const trackStop = computed(() => position(model.value[1]))\n\n useRender(() => {\n const [inputProps, _] = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n 'v-range-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n ]}\n ref={ inputRef }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? props.label\n ? (\n <VLabel\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n }\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ onSliderMousedown }\n onTouchstartPassive={ onSliderTouchstart }\n >\n <input\n id={ `${id.value}_start` }\n name={ props.name || id.value }\n disabled={ props.disabled }\n readonly={ props.readonly }\n tabindex=\"-1\"\n value={ model.value[0] }\n />\n\n <input\n id={ `${id.value}_stop` }\n name={ props.name || id.value }\n disabled={ props.disabled }\n readonly={ props.readonly }\n tabindex=\"-1\"\n value={ model.value[1] }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ trackStart.value }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ startThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === startThumbRef.value?.$el }\n modelValue={ model.value[0] }\n onUpdate:modelValue={ v => (model.value = [v, model.value[1]]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = startThumbRef.value?.$el\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[1] === min.value &&\n e.relatedTarget !== stopThumbRef.value?.$el\n ) {\n startThumbRef.value?.$el.blur()\n stopThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ min.value }\n max={ model.value[1] }\n position={ trackStart.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n\n <VSliderThumb\n ref={ stopThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === stopThumbRef.value?.$el }\n modelValue={ model.value[1] }\n onUpdate:modelValue={ v => (model.value = [model.value[0], v]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = stopThumbRef.value?.$el\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[0] === max.value &&\n e.relatedTarget !== startThumbRef.value?.$el\n ) {\n stopThumbRef.value?.$el.blur()\n startThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ model.value[0] }\n max={ max.value }\n position={ trackStop.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRangeSlider = InstanceType<typeof VRangeSlider>\n"],"mappings":"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"}
|
@@ -53,6 +53,7 @@ declare const VRangeSlider: {
|
|
53
53
|
errorMessages: string | string[];
|
54
54
|
maxErrors: string | number;
|
55
55
|
rules: ValidationRule[];
|
56
|
+
persistentHint: boolean;
|
56
57
|
showTicks: boolean | "always";
|
57
58
|
tickSize: string | number;
|
58
59
|
trackSize: string | number;
|
@@ -76,6 +77,7 @@ declare const VRangeSlider: {
|
|
76
77
|
errorMessages: string | string[];
|
77
78
|
maxErrors: string | number;
|
78
79
|
rules: ValidationRule[];
|
80
|
+
persistentHint: boolean;
|
79
81
|
showTicks: boolean | "always";
|
80
82
|
tickSize: string | number;
|
81
83
|
trackSize: string | number;
|
@@ -90,8 +92,10 @@ declare const VRangeSlider: {
|
|
90
92
|
appendIcon?: IconValue | undefined;
|
91
93
|
'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
|
92
94
|
'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
|
95
|
+
'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
|
93
96
|
validateOn?: "input" | "blur" | "submit" | undefined;
|
94
97
|
validationValue?: any;
|
98
|
+
hint?: string | undefined;
|
95
99
|
hideDetails?: boolean | "auto" | undefined;
|
96
100
|
trackColor?: string | undefined;
|
97
101
|
trackFillColor?: string | undefined;
|
@@ -133,7 +137,9 @@ declare const VRangeSlider: {
|
|
133
137
|
} & {
|
134
138
|
"onUpdate:modelValue"?: ((value: [number, number]) => any) | undefined;
|
135
139
|
"onUpdate:focused"?: ((value: boolean) => any) | undefined;
|
136
|
-
|
140
|
+
onEnd?: ((value: [number, number]) => any) | undefined;
|
141
|
+
onStart?: ((value: [number, number]) => any) | undefined;
|
142
|
+
} & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "reverse" | "max" | "error" | "strict" | "direction" | "disabled" | "readonly" | "step" | "min" | "elevation" | "messages" | "rounded" | "density" | "modelValue" | "focused" | "errorMessages" | "maxErrors" | "rules" | "persistentHint" | "showTicks" | "tickSize" | "trackSize" | "thumbLabel" | "thumbSize">;
|
137
143
|
$attrs: {
|
138
144
|
[x: string]: unknown;
|
139
145
|
};
|
@@ -145,7 +151,7 @@ declare const VRangeSlider: {
|
|
145
151
|
}>;
|
146
152
|
$root: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
|
147
153
|
$parent: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
|
148
|
-
$emit: ((event: "update:modelValue", value: [number, number]) => void) & ((event: "update:focused", value: boolean) => void);
|
154
|
+
$emit: ((event: "end", value: [number, number]) => void) & ((event: "start", value: [number, number]) => void) & ((event: "update:modelValue", value: [number, number]) => void) & ((event: "update:focused", value: boolean) => void);
|
149
155
|
$el: any;
|
150
156
|
$options: vue.ComponentOptionsBase<{
|
151
157
|
reverse: boolean;
|
@@ -165,6 +171,7 @@ declare const VRangeSlider: {
|
|
165
171
|
errorMessages: string | string[];
|
166
172
|
maxErrors: string | number;
|
167
173
|
rules: ValidationRule[];
|
174
|
+
persistentHint: boolean;
|
168
175
|
showTicks: boolean | "always";
|
169
176
|
tickSize: string | number;
|
170
177
|
trackSize: string | number;
|
@@ -179,8 +186,10 @@ declare const VRangeSlider: {
|
|
179
186
|
appendIcon?: IconValue | undefined;
|
180
187
|
'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
|
181
188
|
'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
|
189
|
+
'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
|
182
190
|
validateOn?: "input" | "blur" | "submit" | undefined;
|
183
191
|
validationValue?: any;
|
192
|
+
hint?: string | undefined;
|
184
193
|
hideDetails?: boolean | "auto" | undefined;
|
185
194
|
trackColor?: string | undefined;
|
186
195
|
trackFillColor?: string | undefined;
|
@@ -222,9 +231,13 @@ declare const VRangeSlider: {
|
|
222
231
|
} & {
|
223
232
|
"onUpdate:modelValue"?: ((value: [number, number]) => any) | undefined;
|
224
233
|
"onUpdate:focused"?: ((value: boolean) => any) | undefined;
|
234
|
+
onEnd?: ((value: [number, number]) => any) | undefined;
|
235
|
+
onStart?: ((value: [number, number]) => any) | undefined;
|
225
236
|
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
226
|
-
'update:focused': (value: boolean) =>
|
227
|
-
'update:modelValue': (value: [number, number]) =>
|
237
|
+
'update:focused': (value: boolean) => true;
|
238
|
+
'update:modelValue': (value: [number, number]) => true;
|
239
|
+
end: (value: [number, number]) => true;
|
240
|
+
start: (value: [number, number]) => true;
|
228
241
|
}, string, {
|
229
242
|
reverse: boolean;
|
230
243
|
max: string | number;
|
@@ -244,6 +257,7 @@ declare const VRangeSlider: {
|
|
244
257
|
errorMessages: string | string[];
|
245
258
|
maxErrors: string | number;
|
246
259
|
rules: ValidationRule[];
|
260
|
+
persistentHint: boolean;
|
247
261
|
showTicks: boolean | "always";
|
248
262
|
tickSize: string | number;
|
249
263
|
trackSize: string | number;
|
@@ -287,6 +301,7 @@ declare const VRangeSlider: {
|
|
287
301
|
errorMessages: string | string[];
|
288
302
|
maxErrors: string | number;
|
289
303
|
rules: ValidationRule[];
|
304
|
+
persistentHint: boolean;
|
290
305
|
showTicks: boolean | "always";
|
291
306
|
tickSize: string | number;
|
292
307
|
trackSize: string | number;
|
@@ -301,8 +316,10 @@ declare const VRangeSlider: {
|
|
301
316
|
appendIcon?: IconValue | undefined;
|
302
317
|
'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
|
303
318
|
'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
|
319
|
+
'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
|
304
320
|
validateOn?: "input" | "blur" | "submit" | undefined;
|
305
321
|
validationValue?: any;
|
322
|
+
hint?: string | undefined;
|
306
323
|
hideDetails?: boolean | "auto" | undefined;
|
307
324
|
trackColor?: string | undefined;
|
308
325
|
trackFillColor?: string | undefined;
|
@@ -344,6 +361,8 @@ declare const VRangeSlider: {
|
|
344
361
|
} & {
|
345
362
|
"onUpdate:modelValue"?: ((value: [number, number]) => any) | undefined;
|
346
363
|
"onUpdate:focused"?: ((value: boolean) => any) | undefined;
|
364
|
+
onEnd?: ((value: [number, number]) => any) | undefined;
|
365
|
+
onStart?: ((value: [number, number]) => any) | undefined;
|
347
366
|
} & vue.ShallowUnwrapRef<{}> & {} & vue.ComponentCustomProperties & {};
|
348
367
|
__isFragment?: undefined;
|
349
368
|
__isTeleport?: undefined;
|
@@ -366,6 +385,7 @@ declare const VRangeSlider: {
|
|
366
385
|
errorMessages: string | string[];
|
367
386
|
maxErrors: string | number;
|
368
387
|
rules: ValidationRule[];
|
388
|
+
persistentHint: boolean;
|
369
389
|
showTicks: boolean | "always";
|
370
390
|
tickSize: string | number;
|
371
391
|
trackSize: string | number;
|
@@ -380,8 +400,10 @@ declare const VRangeSlider: {
|
|
380
400
|
appendIcon?: IconValue | undefined;
|
381
401
|
'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
|
382
402
|
'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
|
403
|
+
'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
|
383
404
|
validateOn?: "input" | "blur" | "submit" | undefined;
|
384
405
|
validationValue?: any;
|
406
|
+
hint?: string | undefined;
|
385
407
|
hideDetails?: boolean | "auto" | undefined;
|
386
408
|
trackColor?: string | undefined;
|
387
409
|
trackFillColor?: string | undefined;
|
@@ -423,9 +445,13 @@ declare const VRangeSlider: {
|
|
423
445
|
} & {
|
424
446
|
"onUpdate:modelValue"?: ((value: [number, number]) => any) | undefined;
|
425
447
|
"onUpdate:focused"?: ((value: boolean) => any) | undefined;
|
448
|
+
onEnd?: ((value: [number, number]) => any) | undefined;
|
449
|
+
onStart?: ((value: [number, number]) => any) | undefined;
|
426
450
|
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
427
|
-
'update:focused': (value: boolean) =>
|
428
|
-
'update:modelValue': (value: [number, number]) =>
|
451
|
+
'update:focused': (value: boolean) => true;
|
452
|
+
'update:modelValue': (value: [number, number]) => true;
|
453
|
+
end: (value: [number, number]) => true;
|
454
|
+
start: (value: [number, number]) => true;
|
429
455
|
}, string, {
|
430
456
|
reverse: boolean;
|
431
457
|
max: string | number;
|
@@ -445,6 +471,7 @@ declare const VRangeSlider: {
|
|
445
471
|
errorMessages: string | string[];
|
446
472
|
maxErrors: string | number;
|
447
473
|
rules: ValidationRule[];
|
474
|
+
persistentHint: boolean;
|
448
475
|
showTicks: boolean | "always";
|
449
476
|
tickSize: string | number;
|
450
477
|
trackSize: string | number;
|
@@ -518,6 +545,7 @@ declare const VRangeSlider: {
|
|
518
545
|
};
|
519
546
|
reverse: BooleanConstructor;
|
520
547
|
focused: BooleanConstructor;
|
548
|
+
'onUpdate:focused': PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
|
521
549
|
errorMessages: {
|
522
550
|
type: PropType<string | string[]>;
|
523
551
|
default: () => never[];
|
@@ -543,6 +571,8 @@ declare const VRangeSlider: {
|
|
543
571
|
appendIcon: PropType<IconValue>;
|
544
572
|
prependIcon: PropType<IconValue>;
|
545
573
|
hideDetails: PropType<boolean | "auto">;
|
574
|
+
hint: StringConstructor;
|
575
|
+
persistentHint: BooleanConstructor;
|
546
576
|
messages: {
|
547
577
|
type: PropType<string | string[]>;
|
548
578
|
default: () => never[];
|
@@ -617,6 +647,7 @@ declare const VRangeSlider: {
|
|
617
647
|
};
|
618
648
|
reverse: BooleanConstructor;
|
619
649
|
focused: BooleanConstructor;
|
650
|
+
'onUpdate:focused': PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
|
620
651
|
errorMessages: {
|
621
652
|
type: PropType<string | string[]>;
|
622
653
|
default: () => never[];
|
@@ -642,6 +673,8 @@ declare const VRangeSlider: {
|
|
642
673
|
appendIcon: PropType<IconValue>;
|
643
674
|
prependIcon: PropType<IconValue>;
|
644
675
|
hideDetails: PropType<boolean | "auto">;
|
676
|
+
hint: StringConstructor;
|
677
|
+
persistentHint: BooleanConstructor;
|
645
678
|
messages: {
|
646
679
|
type: PropType<string | string[]>;
|
647
680
|
default: () => never[];
|
@@ -62,6 +62,7 @@ export const VSelect = genericComponent()({
|
|
62
62
|
})
|
63
63
|
},
|
64
64
|
emits: {
|
65
|
+
'update:focused': focused => true,
|
65
66
|
'update:modelValue': val => true,
|
66
67
|
'update:menu': val => true
|
67
68
|
},
|
@@ -178,6 +179,9 @@ export const VSelect = genericComponent()({
|
|
178
179
|
menu.value = false;
|
179
180
|
}
|
180
181
|
}
|
182
|
+
function onFocusin(e) {
|
183
|
+
isFocused.value = true;
|
184
|
+
}
|
181
185
|
function onFocusout(e) {
|
182
186
|
if (e.relatedTarget == null) {
|
183
187
|
vTextFieldRef.value?.focus();
|
@@ -232,6 +236,7 @@ export const VSelect = genericComponent()({
|
|
232
236
|
"selected": selected.value,
|
233
237
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
234
238
|
"onMousedown": e => e.preventDefault(),
|
239
|
+
"onFocusin": onFocusin,
|
235
240
|
"onFocusout": onFocusout
|
236
241
|
}, {
|
237
242
|
default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {
|
@@ -310,6 +315,7 @@ export const VSelect = genericComponent()({
|
|
310
315
|
});
|
311
316
|
});
|
312
317
|
return forwardRefs({
|
318
|
+
isFocused,
|
313
319
|
menu,
|
314
320
|
select
|
315
321
|
}, vTextFieldRef);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VSelect.mjs","names":["makeVTextFieldProps","VCheckboxBtn","VChip","VDefaultsProvider","VDialogTransition","VList","VListItem","VMenu","VTextField","forwardRefs","IconValue","makeItemsProps","useItems","makeTransitionProps","useForm","useLocale","useProxiedModel","computed","mergeProps","ref","deepEqual","genericComponent","omit","propsFactory","useRender","wrapInArray","makeSelectProps","chips","Boolean","closableChips","eager","hideNoData","hideSelected","menu","menuIcon","type","default","menuProps","Object","multiple","noDataText","String","openOnClear","valueComparator","Function","itemChildren","VSelect","name","props","modelValue","transition","component","emits","val","setup","_ref","slots","t","vTextFieldRef","vMenuRef","_menu","get","value","set","v","ΨopenChildren","items","transformIn","transformOut","model","transformed","form","selections","map","find","item","selected","selection","isFocused","keyboardLookupPrefix","keyboardLookupLastTime","displayItems","filter","some","s","listRef","onClear","e","onMousedownControl","length","readonly","isReadonly","onKeydown","includes","key","preventDefault","focus","KEYBOARD_LOOKUP_THRESHOLD","checkPrintable","isPrintableChar","noModifier","ctrlKey","metaKey","altKey","now","performance","toLowerCase","title","startsWith","undefined","select","index","findIndex","splice","onBlur","$el","contains","relatedTarget","onFocusout","hasChips","chip","hasList","prepend","append","isDirty","textFieldProps","filterProps","placeholder","label","persistentPlaceholder","_createVNode","_mergeProps","join","$event","externalValue","_Fragment","onClick","_ref2","isSelected","onChipClose","stopPropagation","slotProps","closable","size","text","_createTextVNode"],"sources":["../../../src/components/VSelect/VSelect.tsx"],"sourcesContent":["// Styles\nimport './VSelect.sass'\n\n// Components\nimport { makeVTextFieldProps } from '@/components/VTextField/VTextField'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDialogTransition } from '@/components/transitions'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { IconValue } from '@/composables/icons'\nimport { makeItemsProps, useItems } from '@/composables/items'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForm } from '@/composables/form'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utility\nimport { computed, mergeProps, ref } from 'vue'\nimport { deepEqual, genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { InternalItem } from '@/composables/items'\nimport type { MakeSlots, SlotsToProps } from '@/util'\nimport type { PropType } from 'vue'\n\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n menu: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown',\n },\n menuProps: {\n type: Object as PropType<VMenu['$props']>,\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n openOnClear: Boolean,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeItemsProps({ itemChildren: false }),\n}, 'v-select')\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VSelect = genericComponent<new <\n T,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<T, ReturnObject, Multiple> = Value<T, ReturnObject, Multiple>\n>() => {\n $props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V\n 'onUpdate:modelValue'?: (val: V) => void\n } & SlotsToProps<\n Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n item: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<T>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n }>\n >\n}>()({\n name: 'VSelect',\n\n props: {\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: { component: VDialogTransition } }),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const { items, transformIn, transformOut } = useItems(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => props.valueComparator(item.value, v.value)) || v\n })\n })\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const isFocused = ref(false)\n\n let keyboardLookupPrefix = ''\n let keyboardLookupLastTime: number\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return items.value.filter(item => !selections.value.some(s => s === item))\n }\n return items.value\n })\n\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onMousedownControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ) return\n\n menu.value = !menu.value\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown', ' '].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape', 'Tab'].includes(e.key)) {\n menu.value = false\n }\n\n if (e.key === 'ArrowDown') {\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n listRef.value?.focus('prev')\n } else if (e.key === 'Home') {\n listRef.value?.focus('first')\n } else if (e.key === 'End') {\n listRef.value?.focus('last')\n }\n\n // html select hotkeys\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n\n function checkPrintable (e: KeyboardEvent) {\n const isPrintableChar = e.key.length === 1\n const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey\n return isPrintableChar && noModifier\n }\n\n if (props.multiple || !checkPrintable(e)) return\n\n const now = performance.now()\n if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n keyboardLookupPrefix = ''\n }\n keyboardLookupPrefix += e.key.toLowerCase()\n keyboardLookupLastTime = now\n\n const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix))\n if (item !== undefined) {\n model.value = [item]\n }\n }\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n menu.value = false\n }\n }\n function onBlur (e: FocusEvent) {\n if (!listRef.value?.$el.contains(e.relatedTarget as HTMLElement)) {\n menu.value = false\n }\n }\n function onFocusout (e: FocusEvent) {\n if (e.relatedTarget == null) {\n vTextFieldRef.value?.focus()\n }\n }\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!((!props.hideNoData || displayItems.value.length) || slots.prepend || slots.append || slots['no-data'])\n const isDirty = model.value.length > 0\n const [textFieldProps] = VTextField.filterProps(props)\n\n const placeholder = isDirty || (\n !isFocused.value &&\n props.label &&\n !props.persistentPlaceholder\n ) ? undefined : props.placeholder\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ model.value.map(v => v.props.value).join(', ') }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n dirty={ isDirty }\n class={[\n 'v-select',\n {\n 'v-select--active-menu': menu.value,\n 'v-select--chips': !!props.chips,\n [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-select--selected': model.value.length,\n },\n ]}\n appendInnerIcon={ props.menuIcon }\n readonly\n placeholder={ placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-select__content\"\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusout={ onFocusout }\n >\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n { slots['prepend-item']?.() }\n\n { displayItems.value.map((item, index) => {\n if (slots.item) {\n return slots.item?.({\n item,\n index,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n })\n }\n\n return (\n <VListItem\n key={ index }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => props.multiple && !props.hideSelected ? (\n <VCheckboxBtn\n modelValue={ isSelected }\n ripple={ false }\n tabindex=\"-1\"\n />\n ) : undefined,\n }}\n </VListItem>\n )\n })}\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div key={ item.value } class=\"v-select__selection\">\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-select__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-select__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n menu,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VSelect = InstanceType<typeof VSelect>\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"VSelect.mjs","names":["makeVTextFieldProps","VCheckboxBtn","VChip","VDefaultsProvider","VDialogTransition","VList","VListItem","VMenu","VTextField","forwardRefs","IconValue","makeItemsProps","useItems","makeTransitionProps","useForm","useLocale","useProxiedModel","computed","mergeProps","ref","deepEqual","genericComponent","omit","propsFactory","useRender","wrapInArray","makeSelectProps","chips","Boolean","closableChips","eager","hideNoData","hideSelected","menu","menuIcon","type","default","menuProps","Object","multiple","noDataText","String","openOnClear","valueComparator","Function","itemChildren","VSelect","name","props","modelValue","transition","component","emits","focused","val","setup","_ref","slots","t","vTextFieldRef","vMenuRef","_menu","get","value","set","v","ΨopenChildren","items","transformIn","transformOut","model","transformed","form","selections","map","find","item","selected","selection","isFocused","keyboardLookupPrefix","keyboardLookupLastTime","displayItems","filter","some","s","listRef","onClear","e","onMousedownControl","length","readonly","isReadonly","onKeydown","includes","key","preventDefault","focus","KEYBOARD_LOOKUP_THRESHOLD","checkPrintable","isPrintableChar","noModifier","ctrlKey","metaKey","altKey","now","performance","toLowerCase","title","startsWith","undefined","select","index","findIndex","splice","onBlur","$el","contains","relatedTarget","onFocusin","onFocusout","hasChips","chip","hasList","prepend","append","isDirty","textFieldProps","filterProps","placeholder","label","persistentPlaceholder","_createVNode","_mergeProps","join","$event","externalValue","_Fragment","onClick","_ref2","isSelected","onChipClose","stopPropagation","slotProps","closable","size","text","_createTextVNode"],"sources":["../../../src/components/VSelect/VSelect.tsx"],"sourcesContent":["// Styles\nimport './VSelect.sass'\n\n// Components\nimport { makeVTextFieldProps } from '@/components/VTextField/VTextField'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDialogTransition } from '@/components/transitions'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { IconValue } from '@/composables/icons'\nimport { makeItemsProps, useItems } from '@/composables/items'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForm } from '@/composables/form'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utility\nimport { computed, mergeProps, ref } from 'vue'\nimport { deepEqual, genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { InternalItem } from '@/composables/items'\nimport type { MakeSlots, SlotsToProps } from '@/util'\nimport type { PropType } from 'vue'\n\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n menu: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown',\n },\n menuProps: {\n type: Object as PropType<VMenu['$props']>,\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n openOnClear: Boolean,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeItemsProps({ itemChildren: false }),\n}, 'v-select')\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VSelect = genericComponent<new <\n T,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<T, ReturnObject, Multiple> = Value<T, ReturnObject, Multiple>\n>() => {\n $props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V\n 'onUpdate:modelValue'?: (val: V) => void\n } & SlotsToProps<\n Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n item: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<T>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n }>\n >\n}>()({\n name: 'VSelect',\n\n props: {\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: { component: VDialogTransition } }),\n },\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const { items, transformIn, transformOut } = useItems(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => props.valueComparator(item.value, v.value)) || v\n })\n })\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const isFocused = ref(false)\n\n let keyboardLookupPrefix = ''\n let keyboardLookupLastTime: number\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return items.value.filter(item => !selections.value.some(s => s === item))\n }\n return items.value\n })\n\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onMousedownControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ) return\n\n menu.value = !menu.value\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown', ' '].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape', 'Tab'].includes(e.key)) {\n menu.value = false\n }\n\n if (e.key === 'ArrowDown') {\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n listRef.value?.focus('prev')\n } else if (e.key === 'Home') {\n listRef.value?.focus('first')\n } else if (e.key === 'End') {\n listRef.value?.focus('last')\n }\n\n // html select hotkeys\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n\n function checkPrintable (e: KeyboardEvent) {\n const isPrintableChar = e.key.length === 1\n const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey\n return isPrintableChar && noModifier\n }\n\n if (props.multiple || !checkPrintable(e)) return\n\n const now = performance.now()\n if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n keyboardLookupPrefix = ''\n }\n keyboardLookupPrefix += e.key.toLowerCase()\n keyboardLookupLastTime = now\n\n const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix))\n if (item !== undefined) {\n model.value = [item]\n }\n }\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n menu.value = false\n }\n }\n function onBlur (e: FocusEvent) {\n if (!listRef.value?.$el.contains(e.relatedTarget as HTMLElement)) {\n menu.value = false\n }\n }\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n function onFocusout (e: FocusEvent) {\n if (e.relatedTarget == null) {\n vTextFieldRef.value?.focus()\n }\n }\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!((!props.hideNoData || displayItems.value.length) || slots.prepend || slots.append || slots['no-data'])\n const isDirty = model.value.length > 0\n const [textFieldProps] = VTextField.filterProps(props)\n\n const placeholder = isDirty || (\n !isFocused.value &&\n props.label &&\n !props.persistentPlaceholder\n ) ? undefined : props.placeholder\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ model.value.map(v => v.props.value).join(', ') }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n dirty={ isDirty }\n class={[\n 'v-select',\n {\n 'v-select--active-menu': menu.value,\n 'v-select--chips': !!props.chips,\n [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-select--selected': model.value.length,\n },\n ]}\n appendInnerIcon={ props.menuIcon }\n readonly\n placeholder={ placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-select__content\"\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n >\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n { slots['prepend-item']?.() }\n\n { displayItems.value.map((item, index) => {\n if (slots.item) {\n return slots.item?.({\n item,\n index,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n })\n }\n\n return (\n <VListItem\n key={ index }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => props.multiple && !props.hideSelected ? (\n <VCheckboxBtn\n modelValue={ isSelected }\n ripple={ false }\n tabindex=\"-1\"\n />\n ) : undefined,\n }}\n </VListItem>\n )\n })}\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div key={ item.value } class=\"v-select__selection\">\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-select__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-select__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n menu,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VSelect = InstanceType<typeof VSelect>\n"],"mappings":"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"}
|