vuetify 3.10.4 → 3.10.6
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/README.md +0 -6
- package/dist/json/attributes.json +1910 -1922
- package/dist/json/importMap-labs.json +20 -20
- package/dist/json/importMap.json +182 -182
- package/dist/json/tags.json +6 -9
- package/dist/json/web-types.json +3674 -3697
- package/dist/vuetify-labs.cjs +211 -107
- package/dist/vuetify-labs.css +5703 -5642
- package/dist/vuetify-labs.d.ts +168 -175
- package/dist/vuetify-labs.esm.js +211 -107
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +211 -107
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +192 -97
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +5916 -5877
- package/dist/vuetify.d.ts +168 -140
- package/dist/vuetify.esm.js +192 -97
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +192 -97
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +124 -114
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +0 -61
- package/lib/components/VAutocomplete/VAutocomplete.js +13 -11
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBadge/VBadge.css +10 -0
- package/lib/components/VBadge/VBadge.sass +9 -0
- package/lib/components/VChipGroup/VChipGroup.d.ts +37 -0
- package/lib/components/VChipGroup/VChipGroup.js +3 -1
- package/lib/components/VChipGroup/VChipGroup.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.d.ts +6 -67
- package/lib/components/VCombobox/VCombobox.js +26 -28
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VCounter/VCounter.css +1 -0
- package/lib/components/VCounter/VCounter.sass +1 -0
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.d.ts +29 -0
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +4 -1
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.d.ts +29 -0
- package/lib/components/VDataTable/VDataTableHeaders.js +3 -0
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRow.d.ts +29 -0
- package/lib/components/VDataTable/VDataTableRow.js +3 -0
- package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRows.d.ts +29 -0
- package/lib/components/VDataTable/VDataTableRows.js +4 -3
- package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.js +1 -1
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDivider/VDivider.css +1 -0
- package/lib/components/VDivider/VDivider.sass +1 -0
- package/lib/components/VKbd/_variables.scss +3 -1
- package/lib/components/VList/VListItem.css +14 -12
- package/lib/components/VList/VListItem.js +5 -3
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VList/VListItem.sass +20 -18
- package/lib/components/VMenu/VMenu.js +22 -4
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.css +8 -0
- package/lib/components/VNumberInput/VNumberInput.js +5 -2
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.sass +10 -4
- package/lib/components/VSkeletonLoader/VSkeletonLoader.css +17 -0
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js +3 -3
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
- package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +7 -0
- package/lib/components/VSlideGroup/VSlideGroup.d.ts +25 -0
- package/lib/components/VSlideGroup/VSlideGroup.js +5 -1
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VTable/VTable.js +20 -32
- package/lib/components/VTable/VTable.js.map +1 -1
- package/lib/components/VTabs/VTabs.d.ts +25 -0
- package/lib/components/VTextField/VTextField.js +0 -3
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.css +2 -2
- package/lib/components/VTextarea/VTextarea.js +20 -1
- package/lib/components/VTextarea/VTextarea.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.sass +4 -2
- package/lib/components/VWindow/VWindow.js +43 -3
- package/lib/components/VWindow/VWindow.js.map +1 -1
- package/lib/composables/date/date.js +1 -1
- package/lib/composables/date/date.js.map +1 -1
- package/lib/composables/group.js +1 -1
- package/lib/composables/group.js.map +1 -1
- package/lib/composables/nested/nested.js +12 -2
- package/lib/composables/nested/nested.js.map +1 -1
- package/lib/composables/virtual.js +2 -2
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +66 -66
- package/lib/framework.js +1 -1
- package/lib/labs/VColorInput/VColorInput.d.ts +0 -40
- package/lib/labs/VColorInput/VColorInput.js +2 -2
- package/lib/labs/VColorInput/VColorInput.js.map +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +0 -30
- package/lib/labs/VDateInput/VDateInput.js +16 -7
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/lib/labs/VIconBtn/VIconBtn.css +22 -0
- package/lib/labs/VIconBtn/VIconBtn.scss +32 -0
- package/lib/labs/VMaskInput/VMaskInput.js +1 -1
- package/lib/labs/VMaskInput/VMaskInput.js.map +1 -1
- package/lib/labs/rules/rules.js +4 -4
- package/lib/labs/rules/rules.js.map +1 -1
- package/lib/util/helpers.js +4 -2
- package/lib/util/helpers.js.map +1 -1
- package/package.json +1 -1
|
@@ -341,26 +341,28 @@
|
|
|
341
341
|
|
|
342
342
|
@media (forced-colors: active)
|
|
343
343
|
.v-list-item
|
|
344
|
-
|
|
344
|
+
&--link:not(&--active)
|
|
345
345
|
color: buttontext
|
|
346
346
|
|
|
347
|
-
&--
|
|
348
|
-
color:
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
347
|
+
&--link[href]:not(&--active)
|
|
348
|
+
color: unset
|
|
349
|
+
|
|
350
|
+
&--active:not(&--disabled)
|
|
351
|
+
[class*="v-list-item-"],
|
|
352
|
+
[class*="v-list-item-"] > *,
|
|
353
|
+
.v-icon
|
|
354
|
+
color: highlight !important
|
|
355
|
+
|
|
356
|
+
&--active:not(&--variant-text, &--variant-plain):not(&--disabled)
|
|
357
|
+
background: highlight !important
|
|
358
|
+
|
|
359
|
+
[class*="v-list-item-"],
|
|
360
|
+
[class*="v-list-item-"] > *,
|
|
361
|
+
.v-icon
|
|
362
|
+
opacity: 1
|
|
363
|
+
color: highlighttext !important
|
|
364
|
+
forced-color-adjust: preserve-parent-color
|
|
365
|
+
|
|
364
366
|
@supports selector(:focus-visible)
|
|
365
367
|
&::after
|
|
366
368
|
color: buttontext
|
|
@@ -76,25 +76,41 @@ export const VMenu = genericComponent()({
|
|
|
76
76
|
document.removeEventListener('focusin', onFocusIn);
|
|
77
77
|
});
|
|
78
78
|
onDeactivated(() => isActive.value = false);
|
|
79
|
+
let focusTrapSuppressed = false;
|
|
80
|
+
let focusTrapSuppressionTimeout = -1;
|
|
81
|
+
async function onPointerdown() {
|
|
82
|
+
focusTrapSuppressed = true;
|
|
83
|
+
focusTrapSuppressionTimeout = window.setTimeout(() => {
|
|
84
|
+
focusTrapSuppressed = false;
|
|
85
|
+
}, 100);
|
|
86
|
+
}
|
|
79
87
|
async function onFocusIn(e) {
|
|
80
88
|
const before = e.relatedTarget;
|
|
81
89
|
const after = e.target;
|
|
82
90
|
await nextTick();
|
|
83
91
|
if (isActive.value && before !== after && overlay.value?.contentEl &&
|
|
84
|
-
// We're the
|
|
85
|
-
overlay.value?.
|
|
92
|
+
// We're the menu without open submenus or overlays
|
|
93
|
+
overlay.value?.localTop &&
|
|
86
94
|
// It isn't the document or the menu body
|
|
87
95
|
![document, overlay.value.contentEl].includes(after) &&
|
|
88
96
|
// It isn't inside the menu body
|
|
89
97
|
!overlay.value.contentEl.contains(after)) {
|
|
90
|
-
|
|
91
|
-
|
|
98
|
+
if (focusTrapSuppressed) {
|
|
99
|
+
if (!props.openOnHover || !overlay.value.activatorEl?.contains(after)) {
|
|
100
|
+
isActive.value = false;
|
|
101
|
+
}
|
|
102
|
+
} else {
|
|
103
|
+
const focusable = focusableChildren(overlay.value.contentEl);
|
|
104
|
+
focusable[0]?.focus();
|
|
105
|
+
document.removeEventListener('pointerdown', onPointerdown);
|
|
106
|
+
}
|
|
92
107
|
}
|
|
93
108
|
}
|
|
94
109
|
watch(isActive, val => {
|
|
95
110
|
if (val) {
|
|
96
111
|
parent?.register();
|
|
97
112
|
if (IN_BROWSER && !props.disableInitialFocus) {
|
|
113
|
+
document.addEventListener('pointerdown', onPointerdown);
|
|
98
114
|
document.addEventListener('focusin', onFocusIn, {
|
|
99
115
|
once: true
|
|
100
116
|
});
|
|
@@ -102,6 +118,8 @@ export const VMenu = genericComponent()({
|
|
|
102
118
|
} else {
|
|
103
119
|
parent?.unregister();
|
|
104
120
|
if (IN_BROWSER) {
|
|
121
|
+
clearTimeout(focusTrapSuppressionTimeout);
|
|
122
|
+
document.removeEventListener('pointerdown', onPointerdown);
|
|
105
123
|
document.removeEventListener('focusin', onFocusIn);
|
|
106
124
|
}
|
|
107
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VMenu.js","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useRtl","useProxiedModel","useScopeId","computed","inject","mergeProps","nextTick","onBeforeUnmount","onDeactivated","provide","ref","shallowRef","toRef","useId","watch","VMenuSymbol","focusableChildren","focusChild","genericComponent","getNextElement","IN_BROWSER","isClickInsideElement","omit","propsFactory","useRender","makeVMenuProps","id","String","submenu","Boolean","disableInitialFocus","closeDelay","closeOnContentClick","locationStrategy","location","undefined","openDelay","scrim","scrollStrategy","transition","component","VMenu","name","props","emits","value","setup","_ref","slots","isActive","scopeId","isRtl","uid","overlay","parent","openChildren","Set","register","add","unregister","delete","closeParents","e","setTimeout","size","persistent","contentEl","document","removeEventListener","onFocusIn","before","relatedTarget","after","target","globalTop","includes","contains","focusable","focus","val","addEventListener","once","immediate","onClickOutside","onKeydown","disabled","key","HTMLTextAreaElement","HTMLInputElement","closest","preventDefault","nextElement","shiftKey","el","tabIndex","activatorEl","onActivatorKeydown","stopImmediatePropagation","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport {\n computed,\n inject,\n mergeProps,\n nextTick,\n onBeforeUnmount,\n onDeactivated,\n provide,\n ref,\n shallowRef, toRef,\n useId,\n watch,\n} from 'vue'\nimport { VMenuSymbol } from './shared'\nimport {\n focusableChildren,\n focusChild,\n genericComponent,\n getNextElement,\n IN_BROWSER,\n isClickInsideElement,\n omit,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n submenu: Boolean,\n disableInitialFocus: Boolean,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n location: undefined,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent<OverlaySlots>()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n const { isRtl } = useRtl()\n\n const uid = useId()\n const id = toRef(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(new Set<string>())\n provide(VMenuSymbol, {\n register () {\n openChildren.value.add(uid)\n },\n unregister () {\n openChildren.value.delete(uid)\n },\n closeParents (e) {\n setTimeout(() => {\n if (!openChildren.value.size &&\n !props.persistent &&\n (e == null || (overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl)))\n ) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n onBeforeUnmount(() => {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n })\n onDeactivated(() => isActive.value = false)\n\n async function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n await nextTick()\n\n if (\n isActive.value &&\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n if (IN_BROWSER && !props.disableInitialFocus) {\n document.addEventListener('focusin', onFocusIn, { once: true })\n }\n } else {\n parent?.unregister()\n if (IN_BROWSER) {\n document.removeEventListener('focusin', onFocusIn)\n }\n }\n }, { immediate: true })\n\n function onClickOutside (e: MouseEvent) {\n parent?.closeParents(e)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab' || (e.key === 'Enter' && !props.closeOnContentClick)) {\n if (\n e.key === 'Enter' &&\n ((e.target instanceof HTMLTextAreaElement) ||\n (e.target instanceof HTMLInputElement && !!e.target.closest('form')))\n ) return\n if (e.key === 'Enter') e.preventDefault()\n\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n e.stopImmediatePropagation()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n e.stopImmediatePropagation()\n focusChild(el, 'prev')\n } else if (props.submenu) {\n if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {\n e.preventDefault()\n focusChild(el, 'first')\n }\n }\n } else if (\n props.submenu\n ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')\n : ['ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\n isActive.value = true\n e.preventDefault()\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)))\n }\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-controls': id.value,\n onKeydown: onActivatorKeydown,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n id={ id.value }\n class={[\n 'v-menu',\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n location={ props.location ?? (props.submenu ? 'end' : 'bottom') }\n onClick:outside={ onClickOutside }\n onKeydown={ onKeydown }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VMenu\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VMenu.js","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useRtl","useProxiedModel","useScopeId","computed","inject","mergeProps","nextTick","onBeforeUnmount","onDeactivated","provide","ref","shallowRef","toRef","useId","watch","VMenuSymbol","focusableChildren","focusChild","genericComponent","getNextElement","IN_BROWSER","isClickInsideElement","omit","propsFactory","useRender","makeVMenuProps","id","String","submenu","Boolean","disableInitialFocus","closeDelay","closeOnContentClick","locationStrategy","location","undefined","openDelay","scrim","scrollStrategy","transition","component","VMenu","name","props","emits","value","setup","_ref","slots","isActive","scopeId","isRtl","uid","overlay","parent","openChildren","Set","register","add","unregister","delete","closeParents","e","setTimeout","size","persistent","contentEl","document","removeEventListener","onFocusIn","focusTrapSuppressed","focusTrapSuppressionTimeout","onPointerdown","window","before","relatedTarget","after","target","localTop","includes","contains","openOnHover","activatorEl","focusable","focus","val","addEventListener","once","clearTimeout","immediate","onClickOutside","onKeydown","disabled","key","HTMLTextAreaElement","HTMLInputElement","closest","preventDefault","nextElement","shiftKey","el","tabIndex","onActivatorKeydown","stopImmediatePropagation","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport {\n computed,\n inject,\n mergeProps,\n nextTick,\n onBeforeUnmount,\n onDeactivated,\n provide,\n ref,\n shallowRef, toRef,\n useId,\n watch,\n} from 'vue'\nimport { VMenuSymbol } from './shared'\nimport {\n focusableChildren,\n focusChild,\n genericComponent,\n getNextElement,\n IN_BROWSER,\n isClickInsideElement,\n omit,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n submenu: Boolean,\n disableInitialFocus: Boolean,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n location: undefined,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent<OverlaySlots>()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n const { isRtl } = useRtl()\n\n const uid = useId()\n const id = toRef(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(new Set<string>())\n provide(VMenuSymbol, {\n register () {\n openChildren.value.add(uid)\n },\n unregister () {\n openChildren.value.delete(uid)\n },\n closeParents (e) {\n setTimeout(() => {\n if (!openChildren.value.size &&\n !props.persistent &&\n (e == null || (overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl)))\n ) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n onBeforeUnmount(() => {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n })\n onDeactivated(() => isActive.value = false)\n\n let focusTrapSuppressed = false\n let focusTrapSuppressionTimeout = -1\n\n async function onPointerdown () {\n focusTrapSuppressed = true\n focusTrapSuppressionTimeout = window.setTimeout(() => {\n focusTrapSuppressed = false\n }, 100)\n }\n\n async function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n await nextTick()\n\n if (\n isActive.value &&\n before !== after &&\n overlay.value?.contentEl &&\n // We're the menu without open submenus or overlays\n overlay.value?.localTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n if (focusTrapSuppressed) {\n if (!props.openOnHover || !overlay.value.activatorEl?.contains(after)) {\n isActive.value = false\n }\n } else {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n\n document.removeEventListener('pointerdown', onPointerdown)\n }\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n if (IN_BROWSER && !props.disableInitialFocus) {\n document.addEventListener('pointerdown', onPointerdown)\n document.addEventListener('focusin', onFocusIn, { once: true })\n }\n } else {\n parent?.unregister()\n if (IN_BROWSER) {\n clearTimeout(focusTrapSuppressionTimeout)\n document.removeEventListener('pointerdown', onPointerdown)\n document.removeEventListener('focusin', onFocusIn)\n }\n }\n }, { immediate: true })\n\n function onClickOutside (e: MouseEvent) {\n parent?.closeParents(e)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab' || (e.key === 'Enter' && !props.closeOnContentClick)) {\n if (\n e.key === 'Enter' &&\n ((e.target instanceof HTMLTextAreaElement) ||\n (e.target instanceof HTMLInputElement && !!e.target.closest('form')))\n ) return\n if (e.key === 'Enter') e.preventDefault()\n\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n e.stopImmediatePropagation()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n e.stopImmediatePropagation()\n focusChild(el, 'prev')\n } else if (props.submenu) {\n if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {\n e.preventDefault()\n focusChild(el, 'first')\n }\n }\n } else if (\n props.submenu\n ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')\n : ['ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\n isActive.value = true\n e.preventDefault()\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)))\n }\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-controls': id.value,\n onKeydown: onActivatorKeydown,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n id={ id.value }\n class={[\n 'v-menu',\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n location={ props.location ?? (props.submenu ? 'end' : 'bottom') }\n onClick:outside={ onClickOutside }\n onKeydown={ onKeydown }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VMenu\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -41,6 +41,14 @@
|
|
|
41
41
|
.v-number-input--stacked .v-number-input__control .v-btn {
|
|
42
42
|
flex: 1;
|
|
43
43
|
}
|
|
44
|
+
.v-number-input--stacked .v-field--variant-underlined > .v-field__prepend-inner:has(.v-number-input__control),
|
|
45
|
+
.v-number-input--stacked .v-field--variant-underlined > .v-field__append-inner:has(.v-number-input__control) {
|
|
46
|
+
padding-top: var(--v-field-padding-top);
|
|
47
|
+
}
|
|
48
|
+
.v-number-input--stacked .v-field--variant-underlined > .v-field__prepend-inner:has(.v-number-input__control) > *:not(.v-number-input__control, .v-divider--vertical),
|
|
49
|
+
.v-number-input--stacked .v-field--variant-underlined > .v-field__append-inner:has(.v-number-input__control) > *:not(.v-number-input__control, .v-divider--vertical) {
|
|
50
|
+
margin-top: var(--v-input-padding-top, 0);
|
|
51
|
+
}
|
|
44
52
|
.v-number-input--hide-input .v-field {
|
|
45
53
|
flex: none;
|
|
46
54
|
}
|
|
@@ -96,7 +96,7 @@ export const VNumberInput = genericComponent()({
|
|
|
96
96
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
|
97
97
|
const _inputText = shallowRef(null);
|
|
98
98
|
watchEffect(() => {
|
|
99
|
-
if (isFocused.value && !controlsDisabled.value && Number(_inputText.value) === model.value) {
|
|
99
|
+
if (isFocused.value && !controlsDisabled.value && Number(_inputText.value?.replace(decimalSeparator.value, '.')) === model.value) {
|
|
100
100
|
// ignore external changes while typing
|
|
101
101
|
// e.g. 5.01{backspace}2 » should result in 5.02
|
|
102
102
|
// but we emit '5' in and want to preserve '5.0'
|
|
@@ -195,6 +195,7 @@ export const VNumberInput = genericComponent()({
|
|
|
195
195
|
if (!new RegExp(`^-?\\d*${escapeForRegex(decimalSeparator.value)}?\\d*$`).test(potentialNewInputVal)) {
|
|
196
196
|
e.preventDefault();
|
|
197
197
|
inputElement.value = potentialNewNumber;
|
|
198
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
198
199
|
}
|
|
199
200
|
if (props.precision == null) return;
|
|
200
201
|
|
|
@@ -202,13 +203,15 @@ export const VNumberInput = genericComponent()({
|
|
|
202
203
|
if (potentialNewInputVal.split(decimalSeparator.value)[1]?.length > props.precision) {
|
|
203
204
|
e.preventDefault();
|
|
204
205
|
inputElement.value = potentialNewNumber;
|
|
206
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
205
207
|
const cursorPosition = (selectionStart ?? 0) + e.data.length;
|
|
206
208
|
inputElement.setSelectionRange(cursorPosition, cursorPosition);
|
|
207
209
|
}
|
|
208
210
|
// Ignore decimal separator when precision = 0
|
|
209
|
-
if (props.precision === 0 && potentialNewInputVal.
|
|
211
|
+
if (props.precision === 0 && potentialNewInputVal.endsWith(decimalSeparator.value)) {
|
|
210
212
|
e.preventDefault();
|
|
211
213
|
inputElement.value = potentialNewNumber;
|
|
214
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
212
215
|
}
|
|
213
216
|
}
|
|
214
217
|
async function onKeydown(e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VNumberInput.js","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useHold","useForm","forwardRefs","useLocale","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","toRef","watch","watchEffect","clamp","escapeForRegex","extractNumber","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","minFractionDigits","decimalSeparator","validator","v","length","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","holdStart","holdStop","toggleUpDown","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","focused","decimalSeparatorFromLocale","correctPrecision","arguments","undefined","trim","fixed","toFixed","toString","replace","baseDigits","fractionDigits","split","padEnd","RegExp","filter","join","model","_inputText","isNaN","inputText","get","set","parsedValue","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","onClick","onControlClick","onPointerup","onControlMouseup","onPointerdown","onUpControlMousedown","onPointercancel","decrementSlotProps","onDownControlMousedown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","increment","inferredPrecision","Math","onBeforeinput","e","data","inputElement","target","existingTxt","selectionStart","selectionEnd","potentialNewInputVal","slice","potentialNewNumber","test","preventDefault","cursorPosition","setSelectionRange","includes","onKeydown","key","ctrlKey","stopPropagation","el","currentTarget","releasePointerCapture","pointerId","setPointerCapture","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","height","size","icon","variant","decrementControlNode","decrement","controlNode","_createElementVNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/components/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 { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch, watchEffect } from 'vue'\nimport { clamp, escapeForRegex, extractNumber, 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 minFractionDigits: {\n type: Number as PropType<number | null>,\n default: null,\n },\n decimalSeparator: {\n type: String,\n validator: (v: any) => !v || v.length === 1,\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:focused': (val: boolean) => true,\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField>()\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 = shallowRef(props.focused)\n\n const { decimalSeparator: decimalSeparatorFromLocale } = useLocale()\n const decimalSeparator = computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value)\n\n function correctPrecision (val: number, precision = props.precision, trim = true) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n\n if (isFocused.value && trim) {\n return Number(fixed).toString() // trim zeros\n .replace('.', decimalSeparator.value)\n }\n\n if (props.minFractionDigits === null || (precision !== null && precision < props.minFractionDigits)) {\n return fixed.replace('.', decimalSeparator.value)\n }\n\n let [baseDigits, fractionDigits] = fixed.split('.')\n\n fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0')\n .replace(new RegExp(`(?<=\\\\d{${props.minFractionDigits}})0+$`, 'g'), '')\n\n return [\n baseDigits,\n fractionDigits,\n ].filter(Boolean).join(decimalSeparator.value)\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(Number(val), props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n watchEffect(() => {\n if (\n isFocused.value &&\n !controlsDisabled.value &&\n Number(_inputText.value) === model.value\n ) {\n // ignore external changes while typing\n // e.g. 5.01{backspace}2 » should result in 5.02\n // but we emit '5' in and want to preserve '5.0'\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 return\n }\n const parsedValue = Number(val.replace(decimalSeparator.value, '.'))\n if (!isNaN(parsedValue) && parsedValue <= props.max && parsedValue >= props.min) {\n model.value = parsedValue\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 = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onUpControlMousedown,\n onPointercancel: onControlMouseup,\n },\n }\n const decrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onDownControlMousedown,\n onPointercancel: onControlMouseup,\n },\n }\n\n watch(() => props.precision, () => formatInputValue())\n watch(() => props.minFractionDigits, () => 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 inputElement = e.target as HTMLInputElement\n const { value: existingTxt, selectionStart, selectionEnd } = inputElement ?? {}\n\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\n const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision, decimalSeparator.value)\n\n // Allow only numbers, \"-\" and {decimal separator}\n // Allow \"-\" and {decimal separator} only once\n // Allow \"-\" only at the start\n if (!new RegExp(`^-?\\\\d*${escapeForRegex(decimalSeparator.value)}?\\\\d*$`).test(potentialNewInputVal)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n\n if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split(decimalSeparator.value)[1]?.length > props.precision) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n\n const cursorPosition = (selectionStart ?? 0) + e.data.length\n inputElement!.setSelectionRange(cursorPosition, cursorPosition)\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.includes(decimalSeparator.value)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\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 e.stopPropagation()\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 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 const parsedValue = Number(actualText.replace(decimalSeparator.value, '.'))\n if (actualText && !isNaN(parsedValue)) {\n inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n inputText.value = model.value !== null && !isNaN(model.value)\n ? correctPrecision(model.value, props.precision, false)\n : null\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 .replace('.', decimalSeparator.value)\n }\n\n function onFocus () {\n trimDecimalZeros()\n }\n\n function onBlur () {\n clampModel()\n }\n\n useRender(() => {\n const { modelValue: _, type, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"increment\"\n disabled={ !canIncrease.value }\n height={ controlNodeDefaultHeight.value }\n icon={ incrementIcon.value }\n key=\"increment-btn\"\n onClick={ onControlClick }\n onPointerdown={ onUpControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlMouseup }\n size={ controlNodeSize.value }\n variant=\"text\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n variant: 'text',\n },\n }}\n >\n { slots.increment(incrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"decrement\"\n disabled={ !canDecrease.value }\n height={ controlNodeDefaultHeight.value }\n icon={ decrementIcon.value }\n key=\"decrement-btn\"\n onClick={ onControlClick }\n onPointerdown={ onDownControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlMouseup }\n size={ controlNodeSize.value }\n variant=\"text\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n variant: 'text',\n },\n }}\n >\n { slots.decrement(decrementSlotProps) }\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 { ...textFieldProps }\n v-model={ inputText.value }\n v-model:focused={ isFocused.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 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.js","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useHold","useForm","forwardRefs","useLocale","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","toRef","watch","watchEffect","clamp","escapeForRegex","extractNumber","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","minFractionDigits","decimalSeparator","validator","v","length","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","holdStart","holdStop","toggleUpDown","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","focused","decimalSeparatorFromLocale","correctPrecision","arguments","undefined","trim","fixed","toFixed","toString","replace","baseDigits","fractionDigits","split","padEnd","RegExp","filter","join","model","_inputText","isNaN","inputText","get","set","parsedValue","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","onClick","onControlClick","onPointerup","onControlMouseup","onPointerdown","onUpControlMousedown","onPointercancel","decrementSlotProps","onDownControlMousedown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","increment","inferredPrecision","Math","onBeforeinput","e","data","inputElement","target","existingTxt","selectionStart","selectionEnd","potentialNewInputVal","slice","potentialNewNumber","test","preventDefault","cursorPosition","setSelectionRange","endsWith","onKeydown","includes","key","ctrlKey","stopPropagation","el","currentTarget","releasePointerCapture","pointerId","setPointerCapture","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","height","size","icon","variant","decrementControlNode","decrement","controlNode","_createElementVNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/components/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 { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch, watchEffect } from 'vue'\nimport { clamp, escapeForRegex, extractNumber, 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 minFractionDigits: {\n type: Number as PropType<number | null>,\n default: null,\n },\n decimalSeparator: {\n type: String,\n validator: (v: any) => !v || v.length === 1,\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:focused': (val: boolean) => true,\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField>()\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 = shallowRef(props.focused)\n\n const { decimalSeparator: decimalSeparatorFromLocale } = useLocale()\n const decimalSeparator = computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value)\n\n function correctPrecision (val: number, precision = props.precision, trim = true) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n\n if (isFocused.value && trim) {\n return Number(fixed).toString() // trim zeros\n .replace('.', decimalSeparator.value)\n }\n\n if (props.minFractionDigits === null || (precision !== null && precision < props.minFractionDigits)) {\n return fixed.replace('.', decimalSeparator.value)\n }\n\n let [baseDigits, fractionDigits] = fixed.split('.')\n\n fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0')\n .replace(new RegExp(`(?<=\\\\d{${props.minFractionDigits}})0+$`, 'g'), '')\n\n return [\n baseDigits,\n fractionDigits,\n ].filter(Boolean).join(decimalSeparator.value)\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(Number(val), props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n watchEffect(() => {\n if (\n isFocused.value &&\n !controlsDisabled.value &&\n Number(_inputText.value?.replace(decimalSeparator.value, '.')) === model.value\n ) {\n // ignore external changes while typing\n // e.g. 5.01{backspace}2 » should result in 5.02\n // but we emit '5' in and want to preserve '5.0'\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 return\n }\n const parsedValue = Number(val.replace(decimalSeparator.value, '.'))\n if (!isNaN(parsedValue) && parsedValue <= props.max && parsedValue >= props.min) {\n model.value = parsedValue\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 = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onUpControlMousedown,\n onPointercancel: onControlMouseup,\n },\n }\n const decrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onDownControlMousedown,\n onPointercancel: onControlMouseup,\n },\n }\n\n watch(() => props.precision, () => formatInputValue())\n watch(() => props.minFractionDigits, () => 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 inputElement = e.target as HTMLInputElement\n const { value: existingTxt, selectionStart, selectionEnd } = inputElement ?? {}\n\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\n const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision, decimalSeparator.value)\n\n // Allow only numbers, \"-\" and {decimal separator}\n // Allow \"-\" and {decimal separator} only once\n // Allow \"-\" only at the start\n if (!new RegExp(`^-?\\\\d*${escapeForRegex(decimalSeparator.value)}?\\\\d*$`).test(potentialNewInputVal)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n nextTick(() => inputText.value = potentialNewNumber)\n }\n\n if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split(decimalSeparator.value)[1]?.length > props.precision) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n nextTick(() => inputText.value = potentialNewNumber)\n\n const cursorPosition = (selectionStart ?? 0) + e.data.length\n inputElement!.setSelectionRange(cursorPosition, cursorPosition)\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.endsWith(decimalSeparator.value)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n nextTick(() => inputText.value = potentialNewNumber)\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 e.stopPropagation()\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 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 const parsedValue = Number(actualText.replace(decimalSeparator.value, '.'))\n if (actualText && !isNaN(parsedValue)) {\n inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n inputText.value = model.value !== null && !isNaN(model.value)\n ? correctPrecision(model.value, props.precision, false)\n : null\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 .replace('.', decimalSeparator.value)\n }\n\n function onFocus () {\n trimDecimalZeros()\n }\n\n function onBlur () {\n clampModel()\n }\n\n useRender(() => {\n const { modelValue: _, type, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"increment\"\n disabled={ !canIncrease.value }\n height={ controlNodeDefaultHeight.value }\n icon={ incrementIcon.value }\n key=\"increment-btn\"\n onClick={ onControlClick }\n onPointerdown={ onUpControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlMouseup }\n size={ controlNodeSize.value }\n variant=\"text\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n variant: 'text',\n },\n }}\n >\n { slots.increment(incrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"decrement\"\n disabled={ !canDecrease.value }\n height={ controlNodeDefaultHeight.value }\n icon={ decrementIcon.value }\n key=\"decrement-btn\"\n onClick={ onControlClick }\n onPointerdown={ onDownControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlMouseup }\n size={ controlNodeSize.value }\n variant=\"text\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n variant: 'text',\n },\n }}\n >\n { slots.decrement(decrementSlotProps) }\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 { ...textFieldProps }\n v-model={ inputText.value }\n v-model:focused={ isFocused.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 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":[]}
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
@include tools.layer('components')
|
|
6
6
|
.v-number-input
|
|
7
|
-
$root: &
|
|
8
|
-
$control-root: #{selector.append($root, '__control')}
|
|
9
|
-
|
|
10
7
|
input[type="number"]
|
|
11
8
|
-moz-appearance: textfield
|
|
12
9
|
|
|
@@ -51,11 +48,20 @@
|
|
|
51
48
|
text-align: center
|
|
52
49
|
|
|
53
50
|
&--stacked
|
|
54
|
-
|
|
51
|
+
.v-number-input__control
|
|
55
52
|
flex-direction: column-reverse
|
|
56
53
|
.v-btn
|
|
57
54
|
flex: 1
|
|
58
55
|
|
|
56
|
+
.v-field--variant-underlined
|
|
57
|
+
> .v-field__prepend-inner:has(.v-number-input__control),
|
|
58
|
+
> .v-field__append-inner:has(.v-number-input__control)
|
|
59
|
+
// drop input padding
|
|
60
|
+
padding-top: var(--v-field-padding-top)
|
|
61
|
+
// and pass it down
|
|
62
|
+
> *:not(.v-number-input__control, .v-divider--vertical)
|
|
63
|
+
margin-top: var(--v-input-padding-top, 0)
|
|
64
|
+
|
|
59
65
|
&--hide-input
|
|
60
66
|
.v-field
|
|
61
67
|
flex: none
|
|
@@ -23,6 +23,18 @@
|
|
|
23
23
|
.v-skeleton-loader .v-skeleton-loader__text {
|
|
24
24
|
background: rgba(var(--v-theme-on-surface), var(--v-border-opacity));
|
|
25
25
|
}
|
|
26
|
+
@media (forced-colors: active) {
|
|
27
|
+
.v-skeleton-loader .v-skeleton-loader__avatar,
|
|
28
|
+
.v-skeleton-loader .v-skeleton-loader__button,
|
|
29
|
+
.v-skeleton-loader .v-skeleton-loader__chip,
|
|
30
|
+
.v-skeleton-loader .v-skeleton-loader__divider,
|
|
31
|
+
.v-skeleton-loader .v-skeleton-loader__heading,
|
|
32
|
+
.v-skeleton-loader .v-skeleton-loader__image,
|
|
33
|
+
.v-skeleton-loader .v-skeleton-loader__ossein,
|
|
34
|
+
.v-skeleton-loader .v-skeleton-loader__text {
|
|
35
|
+
background: canvastext;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
26
38
|
.v-skeleton-loader .v-skeleton-loader__list-item,
|
|
27
39
|
.v-skeleton-loader .v-skeleton-loader__list-item-avatar,
|
|
28
40
|
.v-skeleton-loader .v-skeleton-loader__list-item-text,
|
|
@@ -55,6 +67,11 @@
|
|
|
55
67
|
width: 100%;
|
|
56
68
|
height: 100%;
|
|
57
69
|
}
|
|
70
|
+
@media (forced-colors: active) and (pointer: fine) {
|
|
71
|
+
.v-skeleton-loader__bone {
|
|
72
|
+
cursor: progress;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
58
75
|
.v-skeleton-loader__avatar {
|
|
59
76
|
border-radius: 50%;
|
|
60
77
|
flex: 0 1 auto;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode,
|
|
1
|
+
import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, mergeProps as _mergeProps, Fragment as _Fragment } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VSkeletonLoader.css";
|
|
4
4
|
|
|
@@ -134,12 +134,12 @@ export const VSkeletonLoader = genericComponent()({
|
|
|
134
134
|
ariaLabel: t(props.loadingText),
|
|
135
135
|
role: 'alert'
|
|
136
136
|
};
|
|
137
|
-
return
|
|
137
|
+
return isLoading ? _createElementVNode("div", _mergeProps({
|
|
138
138
|
"class": ['v-skeleton-loader', {
|
|
139
139
|
'v-skeleton-loader--boilerplate': props.boilerplate
|
|
140
140
|
}, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
|
|
141
141
|
"style": [backgroundColorStyles.value, dimensionStyles.value]
|
|
142
|
-
}, loadingProps, attrs), [items.value]) : slots.default?.()]);
|
|
142
|
+
}, loadingProps, attrs), [items.value]) : _createElementVNode(_Fragment, null, [slots.default?.()]);
|
|
143
143
|
});
|
|
144
144
|
return {};
|
|
145
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSkeletonLoader.js","names":["useBackgroundColor","makeDimensionProps","useDimension","makeElevationProps","useElevation","useLocale","makeThemeProps","provideTheme","computed","genericComponent","propsFactory","useRender","wrapInArray","rootTypes","actions","article","avatar","button","card","chip","divider","heading","image","ossein","paragraph","sentences","subtitle","table","text","genBone","type","children","arguments","length","undefined","_createElementVNode","_normalizeClass","genBones","bone","split","Array","from","map","genStructure","includes","mapBones","push","bones","replace","makeVSkeletonLoaderProps","boilerplate","Boolean","color","String","loading","loadingText","default","VSkeletonLoader","name","inheritAttrs","props","setup","_ref","attrs","slots","backgroundColorClasses","backgroundColorStyles","dimensionStyles","elevationClasses","themeClasses","t","items","join","isLoading","loadingProps","ariaLive","ariaLabel","role","_Fragment","_mergeProps","value"],"sources":["../../../src/components/VSkeletonLoader/VSkeletonLoader.tsx"],"sourcesContent":["// Styles\nimport './VSkeletonLoader.sass'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useLocale } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\ntype VSkeletonBone<T> = T | VSkeletonBone<T>[]\n\nexport type VSkeletonBones = VSkeletonBone<VNode>\nexport type VSkeletonLoaderType = keyof typeof rootTypes\n\nexport const rootTypes = {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, heading',\n 'card-avatar': 'image, list-item-avatar',\n chip: 'chip',\n 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n divider: 'divider',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n ossein: 'ossein',\n paragraph: 'text@3',\n sentences: 'text@2',\n subtitle: 'text',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'chip, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'text@6',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n} as const\n\nfunction genBone (type: string, children: VSkeletonBones = []) {\n return (\n <div\n class={[\n 'v-skeleton-loader__bone',\n `v-skeleton-loader__${type}`,\n ]}\n >\n { children }\n </div>\n )\n}\n\nfunction genBones (bone: string) {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [VSkeletonLoaderType, number]\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(() => genStructure(type))\n}\n\nfunction genStructure (type?: string): VSkeletonBones {\n let children: VSkeletonBones = []\n\n if (!type) return children\n\n // TODO: figure out a better way to type this\n const bone = (rootTypes as Record<string, string>)[type]\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.includes(',')) return mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.includes('@')) return genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.includes(',')) children = mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.includes('@')) children = genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(genStructure(bone))\n\n return [genBone(type, children)]\n}\n\nfunction mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(genStructure)\n}\n\nexport const makeVSkeletonLoaderProps = propsFactory({\n boilerplate: Boolean,\n color: String,\n loading: Boolean,\n loadingText: {\n type: String,\n default: '$vuetify.loading',\n },\n type: {\n type: [String, Array] as PropType<\n | VSkeletonLoaderType | (string & {})\n | ReadonlyArray<VSkeletonLoaderType | (string & {})>\n >,\n default: 'ossein',\n },\n\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeThemeProps(),\n}, 'VSkeletonLoader')\n\nexport const VSkeletonLoader = genericComponent()({\n name: 'VSkeletonLoader',\n\n inheritAttrs: false,\n\n props: makeVSkeletonLoaderProps(),\n\n setup (props, { attrs, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { themeClasses } = provideTheme(props)\n const { t } = useLocale()\n\n const items = computed(() => genStructure(wrapInArray(props.type).join(',')))\n\n useRender(() => {\n const isLoading = !slots.default || props.loading\n const loadingProps = (props.boilerplate || !isLoading) ? {} : {\n ariaLive: 'polite',\n ariaLabel: t(props.loadingText),\n role: 'alert',\n }\n\n return (\n <>\n { isLoading\n ? (\n <div\n class={[\n 'v-skeleton-loader',\n {\n 'v-skeleton-loader--boilerplate': props.boilerplate,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n elevationClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n ]}\n { ...loadingProps }\n { ...attrs }\n >\n { items.value }\n </div>\n )\n : slots.default?.()\n }\n </>\n )\n })\n\n return {}\n },\n})\n\nexport type VSkeletonLoader = InstanceType<typeof VSkeletonLoader>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VSkeletonLoader.js","names":["useBackgroundColor","makeDimensionProps","useDimension","makeElevationProps","useElevation","useLocale","makeThemeProps","provideTheme","computed","genericComponent","propsFactory","useRender","wrapInArray","rootTypes","actions","article","avatar","button","card","chip","divider","heading","image","ossein","paragraph","sentences","subtitle","table","text","genBone","type","children","arguments","length","undefined","_createElementVNode","_normalizeClass","genBones","bone","split","Array","from","map","genStructure","includes","mapBones","push","bones","replace","makeVSkeletonLoaderProps","boilerplate","Boolean","color","String","loading","loadingText","default","VSkeletonLoader","name","inheritAttrs","props","setup","_ref","attrs","slots","backgroundColorClasses","backgroundColorStyles","dimensionStyles","elevationClasses","themeClasses","t","items","join","isLoading","loadingProps","ariaLive","ariaLabel","role","_mergeProps","value","_Fragment"],"sources":["../../../src/components/VSkeletonLoader/VSkeletonLoader.tsx"],"sourcesContent":["// Styles\nimport './VSkeletonLoader.sass'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useLocale } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\ntype VSkeletonBone<T> = T | VSkeletonBone<T>[]\n\nexport type VSkeletonBones = VSkeletonBone<VNode>\nexport type VSkeletonLoaderType = keyof typeof rootTypes\n\nexport const rootTypes = {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, heading',\n 'card-avatar': 'image, list-item-avatar',\n chip: 'chip',\n 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n divider: 'divider',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n ossein: 'ossein',\n paragraph: 'text@3',\n sentences: 'text@2',\n subtitle: 'text',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'chip, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'text@6',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n} as const\n\nfunction genBone (type: string, children: VSkeletonBones = []) {\n return (\n <div\n class={[\n 'v-skeleton-loader__bone',\n `v-skeleton-loader__${type}`,\n ]}\n >\n { children }\n </div>\n )\n}\n\nfunction genBones (bone: string) {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [VSkeletonLoaderType, number]\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(() => genStructure(type))\n}\n\nfunction genStructure (type?: string): VSkeletonBones {\n let children: VSkeletonBones = []\n\n if (!type) return children\n\n // TODO: figure out a better way to type this\n const bone = (rootTypes as Record<string, string>)[type]\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.includes(',')) return mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.includes('@')) return genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.includes(',')) children = mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.includes('@')) children = genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(genStructure(bone))\n\n return [genBone(type, children)]\n}\n\nfunction mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(genStructure)\n}\n\nexport const makeVSkeletonLoaderProps = propsFactory({\n boilerplate: Boolean,\n color: String,\n loading: Boolean,\n loadingText: {\n type: String,\n default: '$vuetify.loading',\n },\n type: {\n type: [String, Array] as PropType<\n | VSkeletonLoaderType | (string & {})\n | ReadonlyArray<VSkeletonLoaderType | (string & {})>\n >,\n default: 'ossein',\n },\n\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeThemeProps(),\n}, 'VSkeletonLoader')\n\nexport const VSkeletonLoader = genericComponent()({\n name: 'VSkeletonLoader',\n\n inheritAttrs: false,\n\n props: makeVSkeletonLoaderProps(),\n\n setup (props, { attrs, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { themeClasses } = provideTheme(props)\n const { t } = useLocale()\n\n const items = computed(() => genStructure(wrapInArray(props.type).join(',')))\n\n useRender(() => {\n const isLoading = !slots.default || props.loading\n const loadingProps = (props.boilerplate || !isLoading) ? {} : {\n ariaLive: 'polite',\n ariaLabel: t(props.loadingText),\n role: 'alert',\n }\n\n return isLoading\n ? (\n <div\n class={[\n 'v-skeleton-loader',\n {\n 'v-skeleton-loader--boilerplate': props.boilerplate,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n elevationClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n ]}\n { ...loadingProps }\n { ...attrs }\n >\n { items.value }\n </div>\n )\n : <>{ slots.default?.() }</>\n })\n\n return {}\n },\n})\n\nexport type VSkeletonLoader = InstanceType<typeof VSkeletonLoader>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -29,6 +29,9 @@
|
|
|
29
29
|
.v-skeleton-loader__text
|
|
30
30
|
background: $skeleton-loader-text-background
|
|
31
31
|
|
|
32
|
+
@media (forced-colors: active)
|
|
33
|
+
background: canvastext
|
|
34
|
+
|
|
32
35
|
.v-skeleton-loader__list-item,
|
|
33
36
|
.v-skeleton-loader__list-item-avatar,
|
|
34
37
|
.v-skeleton-loader__list-item-text,
|
|
@@ -54,6 +57,10 @@
|
|
|
54
57
|
z-index: 1
|
|
55
58
|
@include tools.absolute(true)
|
|
56
59
|
|
|
60
|
+
@media (forced-colors: active)
|
|
61
|
+
@media (pointer: fine)
|
|
62
|
+
cursor: progress
|
|
63
|
+
|
|
57
64
|
&__avatar
|
|
58
65
|
border-radius: 50%
|
|
59
66
|
flex: 0 1 auto
|