vuetify 3.10.3 → 3.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/json/attributes.json +3285 -3269
  2. package/dist/json/importMap-labs.json +18 -18
  3. package/dist/json/importMap.json +176 -176
  4. package/dist/json/tags.json +4 -0
  5. package/dist/json/web-types.json +5963 -5923
  6. package/dist/vuetify-labs.cjs +125 -81
  7. package/dist/vuetify-labs.css +6900 -6889
  8. package/dist/vuetify-labs.d.ts +117 -59
  9. package/dist/vuetify-labs.esm.js +126 -82
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +125 -81
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +117 -77
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +3658 -3647
  16. package/dist/vuetify.d.ts +117 -59
  17. package/dist/vuetify.esm.js +117 -77
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +117 -77
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +43 -39
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VBadge/VBadge.css +10 -0
  25. package/lib/components/VBadge/VBadge.sass +9 -0
  26. package/lib/components/VBtn/VBtn.js +1 -1
  27. package/lib/components/VBtn/VBtn.js.map +1 -1
  28. package/lib/components/VChip/VChip.js +13 -2
  29. package/lib/components/VChip/VChip.js.map +1 -1
  30. package/lib/components/VCombobox/VCombobox.d.ts +13 -0
  31. package/lib/components/VCombobox/VCombobox.js +3 -1
  32. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  33. package/lib/components/VDataTable/VDataTableGroupHeaderRow.d.ts +29 -0
  34. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +4 -1
  35. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
  36. package/lib/components/VDataTable/VDataTableHeaders.d.ts +29 -0
  37. package/lib/components/VDataTable/VDataTableHeaders.js +3 -0
  38. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  39. package/lib/components/VDataTable/VDataTableRow.d.ts +29 -0
  40. package/lib/components/VDataTable/VDataTableRow.js +3 -0
  41. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  42. package/lib/components/VDataTable/VDataTableRows.d.ts +29 -0
  43. package/lib/components/VDataTable/VDataTableRows.js +4 -3
  44. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  45. package/lib/components/VDialog/VDialog.js +29 -11
  46. package/lib/components/VDialog/VDialog.js.map +1 -1
  47. package/lib/components/VDialog/__test__/VDialog.spec.browser.js +41 -0
  48. package/lib/components/VDialog/__test__/VDialog.spec.browser.js.map +1 -1
  49. package/lib/components/VDivider/VDivider.css +1 -0
  50. package/lib/components/VDivider/VDivider.sass +1 -0
  51. package/lib/components/VFileInput/VFileInput.js +2 -1
  52. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  53. package/lib/components/VKbd/_variables.scss +3 -1
  54. package/lib/components/VList/VListItem.js +1 -1
  55. package/lib/components/VList/VListItem.js.map +1 -1
  56. package/lib/components/VTable/VTable.js +20 -32
  57. package/lib/components/VTable/VTable.js.map +1 -1
  58. package/lib/components/VTreeview/VTreeviewChildren.js +1 -1
  59. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  60. package/lib/composables/group.d.ts +2 -0
  61. package/lib/composables/group.js +15 -9
  62. package/lib/composables/group.js.map +1 -1
  63. package/lib/entry-bundler.js +1 -1
  64. package/lib/framework.d.ts +59 -59
  65. package/lib/framework.js +1 -1
  66. package/lib/labs/VCalendar/VCalendar.js +7 -3
  67. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  68. package/lib/labs/VCalendar/composables/calendarWithEvents.js +7 -4
  69. package/lib/labs/VCalendar/composables/calendarWithEvents.js.map +1 -1
  70. package/lib/labs/VFileUpload/VFileUpload.js +2 -1
  71. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  72. package/lib/labs/rules/rules.js +3 -3
  73. package/lib/labs/rules/rules.js.map +1 -1
  74. package/lib/util/animation.js +1 -1
  75. package/lib/util/animation.js.map +1 -1
  76. package/lib/util/box.d.ts +1 -1
  77. package/lib/util/box.js +19 -14
  78. package/lib/util/box.js.map +1 -1
  79. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VDialog.js","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","mergeProps","nextTick","onBeforeUnmount","ref","watch","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","makeVDialogProps","fullscreen","Boolean","retainFocus","type","default","scrollable","origin","scrollStrategy","transition","component","zIndex","VDialog","name","props","emits","value","afterEnter","afterLeave","setup","_ref","emit","slots","isActive","scopeId","overlay","onFocusin","e","before","relatedTarget","after","target","contentEl","globalTop","document","includes","contains","focusable","length","firstElement","lastElement","focus","removeEventListener","val","addEventListener","immediate","onAfterEnter","scrim","activeElement","preventScroll","onAfterLeave","activatorEl","overlayProps","filterProps","activatorProps","contentProps","tabindex","_createVNode","_mergeProps","class","style","$event","height","undefined","width","maxHeight","maxWidth","activator","_len","arguments","args","Array","_key"],"sources":["../../../src/components/VDialog/VDialog.tsx"],"sourcesContent":["// Styles\nimport './VDialog.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 { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { mergeProps, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVDialogProps = propsFactory({\n fullscreen: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n\n ...makeVOverlayProps({\n origin: 'center center' as const,\n scrollStrategy: 'block' as const,\n transition: { component: VDialogTransition },\n zIndex: 2400,\n }),\n}, 'VDialog')\n\nexport const VDialog = genericComponent<OverlaySlots>()({\n name: 'VDialog',\n\n props: makeVDialogProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const overlay = ref<VOverlay>()\n function onFocusin (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n if (\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost dialog\n overlay.value?.globalTop &&\n // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n\n if (!focusable.length) return\n\n const firstElement = focusable[0]\n const lastElement = focusable[focusable.length - 1]\n\n if (before === firstElement) {\n lastElement.focus()\n } else {\n firstElement.focus()\n }\n }\n }\n\n onBeforeUnmount(() => {\n document.removeEventListener('focusin', onFocusin)\n })\n\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n val\n ? document.addEventListener('focusin', onFocusin)\n : document.removeEventListener('focusin', onFocusin)\n }, { immediate: true })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n if (\n (props.scrim || props.retainFocus) &&\n overlay.value?.contentEl &&\n !overlay.value.contentEl.contains(document.activeElement)\n ) {\n overlay.value.contentEl.focus({ preventScroll: true })\n }\n }\n\n function onAfterLeave () {\n emit('afterLeave')\n }\n\n watch(isActive, async val => {\n if (!val) {\n await nextTick()\n overlay.value!.activatorEl?.focus({ preventScroll: true })\n }\n })\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const activatorProps = mergeProps({\n 'aria-haspopup': 'dialog',\n }, props.activatorProps)\n const contentProps = mergeProps({\n tabindex: -1,\n }, props.contentProps)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-dialog',\n {\n 'v-dialog--fullscreen': props.fullscreen,\n 'v-dialog--scrollable': props.scrollable,\n },\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n aria-modal=\"true\"\n activatorProps={ activatorProps }\n contentProps={ contentProps }\n height={ !props.fullscreen ? props.height : undefined }\n width={ !props.fullscreen ? props.width : undefined }\n maxHeight={ !props.fullscreen ? props.maxHeight : undefined }\n maxWidth={ !props.fullscreen ? props.maxWidth : undefined }\n role=\"dialog\"\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VDialog\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VDialog = InstanceType<typeof VDialog>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VDialog.js","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","mergeProps","nextTick","onBeforeUnmount","ref","watch","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","makeVDialogProps","fullscreen","Boolean","retainFocus","type","default","scrollable","origin","scrollStrategy","transition","component","zIndex","VDialog","name","props","emits","value","afterEnter","afterLeave","setup","_ref","emit","slots","isActive","scopeId","overlay","onFocusin","e","before","relatedTarget","after","target","contentEl","globalTop","document","includes","contains","focusable","focus","onKeydown","key","length","firstElement","lastElement","active","activeElement","shiftKey","preventDefault","removeEventListener","val","addEventListener","once","immediate","onAfterEnter","scrim","preventScroll","onAfterLeave","activatorEl","overlayProps","filterProps","activatorProps","contentProps","tabindex","_createVNode","_mergeProps","class","style","$event","height","undefined","width","maxHeight","maxWidth","activator","_len","arguments","args","Array","_key"],"sources":["../../../src/components/VDialog/VDialog.tsx"],"sourcesContent":["// Styles\nimport './VDialog.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 { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { mergeProps, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVDialogProps = propsFactory({\n fullscreen: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n\n ...makeVOverlayProps({\n origin: 'center center' as const,\n scrollStrategy: 'block' as const,\n transition: { component: VDialogTransition },\n zIndex: 2400,\n }),\n}, 'VDialog')\n\nexport const VDialog = genericComponent<OverlaySlots>()({\n name: 'VDialog',\n\n props: makeVDialogProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const overlay = ref<VOverlay>()\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 dialog\n overlay.value?.globalTop &&\n // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n }\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Tab' || !overlay.value?.contentEl) return\n\n const focusable = focusableChildren(overlay.value.contentEl)\n if (!focusable.length) return\n\n const firstElement = focusable[0]\n const lastElement = focusable[focusable.length - 1]\n const active = document.activeElement as HTMLElement | null\n\n if (e.shiftKey && active === firstElement) {\n e.preventDefault()\n lastElement.focus()\n } else if (!e.shiftKey && active === lastElement) {\n e.preventDefault()\n firstElement.focus()\n }\n }\n\n onBeforeUnmount(() => {\n document.removeEventListener('focusin', onFocusin)\n document.removeEventListener('keydown', onKeydown)\n })\n\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n if (val) {\n document.addEventListener('focusin', onFocusin, { once: true })\n document.addEventListener('keydown', onKeydown)\n } else {\n document.removeEventListener('focusin', onFocusin)\n document.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n if (\n (props.scrim || props.retainFocus) &&\n overlay.value?.contentEl &&\n !overlay.value.contentEl.contains(document.activeElement)\n ) {\n overlay.value.contentEl.focus({ preventScroll: true })\n }\n }\n\n function onAfterLeave () {\n emit('afterLeave')\n }\n\n watch(isActive, async val => {\n if (!val) {\n await nextTick()\n overlay.value!.activatorEl?.focus({ preventScroll: true })\n }\n })\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const activatorProps = mergeProps({\n 'aria-haspopup': 'dialog',\n }, props.activatorProps)\n const contentProps = mergeProps({\n tabindex: -1,\n }, props.contentProps)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-dialog',\n {\n 'v-dialog--fullscreen': props.fullscreen,\n 'v-dialog--scrollable': props.scrollable,\n },\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n aria-modal=\"true\"\n activatorProps={ activatorProps }\n contentProps={ contentProps }\n height={ !props.fullscreen ? props.height : undefined }\n width={ !props.fullscreen ? props.width : undefined }\n maxHeight={ !props.fullscreen ? props.maxHeight : undefined }\n maxWidth={ !props.fullscreen ? props.maxWidth : undefined }\n role=\"dialog\"\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VDialog\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VDialog = InstanceType<typeof VDialog>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,iBAAiB;AAAA,SACjBC,QAAQ;AAAA,SACRC,iBAAiB,mCAE1B;AAAA,SACSC,WAAW;AAAA,SACXC,eAAe;AAAA,SACfC,UAAU,wCAEnB;AACA,SAASC,UAAU,EAAEC,QAAQ,EAAEC,eAAe,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC9DC,iBAAiB,EAAEC,gBAAgB,EAAEC,UAAU,EAAEC,YAAY,EAAEC,SAAS,+BAEjF;AAGA,OAAO,MAAMC,gBAAgB,GAAGF,YAAY,CAAC;EAC3CG,UAAU,EAAEC,OAAO;EACnBC,WAAW,EAAE;IACXC,IAAI,EAAEF,OAAO;IACbG,OAAO,EAAE;EACX,CAAC;EACDC,UAAU,EAAEJ,OAAO;EAEnB,GAAGhB,iBAAiB,CAAC;IACnBqB,MAAM,EAAE,eAAwB;IAChCC,cAAc,EAAE,OAAgB;IAChCC,UAAU,EAAE;MAAEC,SAAS,EAAE3B;IAAkB,CAAC;IAC5C4B,MAAM,EAAE;EACV,CAAC;AACH,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,MAAMC,OAAO,GAAGhB,gBAAgB,CAAe,CAAC,CAAC;EACtDiB,IAAI,EAAE,SAAS;EAEfC,KAAK,EAAEd,gBAAgB,CAAC,CAAC;EAEzBe,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAc,IAAK,IAAI;IAC7CC,UAAU,EAAEA,CAAA,KAAM,IAAI;IACtBC,UAAU,EAAEA,CAAA,KAAM;EACpB,CAAC;EAEDC,KAAKA,CAAEL,KAAK,EAAAM,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAMG,QAAQ,GAAGnC,eAAe,CAAC0B,KAAK,EAAE,YAAY,CAAC;IACrD,MAAM;MAAEU;IAAQ,CAAC,GAAGnC,UAAU,CAAC,CAAC;IAEhC,MAAMoC,OAAO,GAAGhC,GAAG,CAAW,CAAC;IAC/B,eAAeiC,SAASA,CAAEC,CAAa,EAAE;MACvC,MAAMC,MAAM,GAAGD,CAAC,CAACE,aAAmC;MACpD,MAAMC,KAAK,GAAGH,CAAC,CAACI,MAA4B;MAE5C,MAAMxC,QAAQ,CAAC,CAAC;MAEhB,IACEgC,QAAQ,CAACP,KAAK,IACdY,MAAM,KAAKE,KAAK,IAChBL,OAAO,CAACT,KAAK,EAAEgB,SAAS;MACxB;MACAP,OAAO,CAACT,KAAK,EAAEiB,SAAS;MACxB;MACA,CAAC,CAACC,QAAQ,EAAET,OAAO,CAACT,KAAK,CAACgB,SAAS,CAAC,CAACG,QAAQ,CAACL,KAAM,CAAC;MACrD;MACA,CAACL,OAAO,CAACT,KAAK,CAACgB,SAAS,CAACI,QAAQ,CAACN,KAAK,CAAC,EACxC;QACA,MAAMO,SAAS,GAAG1C,iBAAiB,CAAC8B,OAAO,CAACT,KAAK,CAACgB,SAAS,CAAC;QAC5DK,SAAS,CAAC,CAAC,CAAC,EAAEC,KAAK,CAAC,CAAC;MACvB;IACF;IAEA,SAASC,SAASA,CAAEZ,CAAgB,EAAE;MACpC,IAAIA,CAAC,CAACa,GAAG,KAAK,KAAK,IAAI,CAACf,OAAO,CAACT,KAAK,EAAEgB,SAAS,EAAE;MAElD,MAAMK,SAAS,GAAG1C,iBAAiB,CAAC8B,OAAO,CAACT,KAAK,CAACgB,SAAS,CAAC;MAC5D,IAAI,CAACK,SAAS,CAACI,MAAM,EAAE;MAEvB,MAAMC,YAAY,GAAGL,SAAS,CAAC,CAAC,CAAC;MACjC,MAAMM,WAAW,GAAGN,SAAS,CAACA,SAAS,CAACI,MAAM,GAAG,CAAC,CAAC;MACnD,MAAMG,MAAM,GAAGV,QAAQ,CAACW,aAAmC;MAE3D,IAAIlB,CAAC,CAACmB,QAAQ,IAAIF,MAAM,KAAKF,YAAY,EAAE;QACzCf,CAAC,CAACoB,cAAc,CAAC,CAAC;QAClBJ,WAAW,CAACL,KAAK,CAAC,CAAC;MACrB,CAAC,MAAM,IAAI,CAACX,CAAC,CAACmB,QAAQ,IAAIF,MAAM,KAAKD,WAAW,EAAE;QAChDhB,CAAC,CAACoB,cAAc,CAAC,CAAC;QAClBL,YAAY,CAACJ,KAAK,CAAC,CAAC;MACtB;IACF;IAEA9C,eAAe,CAAC,MAAM;MACpB0C,QAAQ,CAACc,mBAAmB,CAAC,SAAS,EAAEtB,SAAS,CAAC;MAClDQ,QAAQ,CAACc,mBAAmB,CAAC,SAAS,EAAET,SAAS,CAAC;IACpD,CAAC,CAAC;IAEF,IAAI1C,UAAU,EAAE;MACdH,KAAK,CAAC,MAAM6B,QAAQ,CAACP,KAAK,IAAIF,KAAK,CAACX,WAAW,EAAE8C,GAAG,IAAI;QACtD,IAAIA,GAAG,EAAE;UACPf,QAAQ,CAACgB,gBAAgB,CAAC,SAAS,EAAExB,SAAS,EAAE;YAAEyB,IAAI,EAAE;UAAK,CAAC,CAAC;UAC/DjB,QAAQ,CAACgB,gBAAgB,CAAC,SAAS,EAAEX,SAAS,CAAC;QACjD,CAAC,MAAM;UACLL,QAAQ,CAACc,mBAAmB,CAAC,SAAS,EAAEtB,SAAS,CAAC;UAClDQ,QAAQ,CAACc,mBAAmB,CAAC,SAAS,EAAET,SAAS,CAAC;QACpD;MACF,CAAC,EAAE;QAAEa,SAAS,EAAE;MAAK,CAAC,CAAC;IACzB;IAEA,SAASC,YAAYA,CAAA,EAAI;MACvBhC,IAAI,CAAC,YAAY,CAAC;MAClB,IACE,CAACP,KAAK,CAACwC,KAAK,IAAIxC,KAAK,CAACX,WAAW,KACjCsB,OAAO,CAACT,KAAK,EAAEgB,SAAS,IACxB,CAACP,OAAO,CAACT,KAAK,CAACgB,SAAS,CAACI,QAAQ,CAACF,QAAQ,CAACW,aAAa,CAAC,EACzD;QACApB,OAAO,CAACT,KAAK,CAACgB,SAAS,CAACM,KAAK,CAAC;UAAEiB,aAAa,EAAE;QAAK,CAAC,CAAC;MACxD;IACF;IAEA,SAASC,YAAYA,CAAA,EAAI;MACvBnC,IAAI,CAAC,YAAY,CAAC;IACpB;IAEA3B,KAAK,CAAC6B,QAAQ,EAAE,MAAM0B,GAAG,IAAI;MAC3B,IAAI,CAACA,GAAG,EAAE;QACR,MAAM1D,QAAQ,CAAC,CAAC;QAChBkC,OAAO,CAACT,KAAK,CAAEyC,WAAW,EAAEnB,KAAK,CAAC;UAAEiB,aAAa,EAAE;QAAK,CAAC,CAAC;MAC5D;IACF,CAAC,CAAC;IAEFxD,SAAS,CAAC,MAAM;MACd,MAAM2D,YAAY,GAAGzE,QAAQ,CAAC0E,WAAW,CAAC7C,KAAK,CAAC;MAChD,MAAM8C,cAAc,GAAGtE,UAAU,CAAC;QAChC,eAAe,EAAE;MACnB,CAAC,EAAEwB,KAAK,CAAC8C,cAAc,CAAC;MACxB,MAAMC,YAAY,GAAGvE,UAAU,CAAC;QAC9BwE,QAAQ,EAAE,CAAC;MACb,CAAC,EAAEhD,KAAK,CAAC+C,YAAY,CAAC;MAEtB,OAAAE,YAAA,CAAA9E,QAAA,EAAA+E,WAAA;QAAA,OAEUvC,OAAO;QAAA,SACN,CACL,UAAU,EACV;UACE,sBAAsB,EAAEX,KAAK,CAACb,UAAU;UACxC,sBAAsB,EAAEa,KAAK,CAACR;QAChC,CAAC,EACDQ,KAAK,CAACmD,KAAK,CACZ;QAAA,SACOnD,KAAK,CAACoD;MAAK,GACdR,YAAY;QAAA,cACPnC,QAAQ,CAACP,KAAK;QAAA,uBAAAmD,MAAA,IAAd5C,QAAQ,CAACP,KAAK,GAAAmD,MAAA;QAAA;QAAA,kBAEPP,cAAc;QAAA,gBAChBC,YAAY;QAAA,UAClB,CAAC/C,KAAK,CAACb,UAAU,GAAGa,KAAK,CAACsD,MAAM,GAAGC,SAAS;QAAA,SAC7C,CAACvD,KAAK,CAACb,UAAU,GAAGa,KAAK,CAACwD,KAAK,GAAGD,SAAS;QAAA,aACvC,CAACvD,KAAK,CAACb,UAAU,GAAGa,KAAK,CAACyD,SAAS,GAAGF,SAAS;QAAA,YAChD,CAACvD,KAAK,CAACb,UAAU,GAAGa,KAAK,CAAC0D,QAAQ,GAAGH,SAAS;QAAA;QAAA,gBAE1ChB,YAAY;QAAA,gBACZG;MAAY,GACtBhC,OAAO;QAGViD,SAAS,EAAEnD,KAAK,CAACmD,SAAS;QAC1BpE,OAAO,EAAE,SAAAA,CAAA;UAAA,SAAAqE,IAAA,GAAAC,SAAA,CAAAlC,MAAA,EAAImC,IAAI,OAAAC,KAAA,CAAAH,IAAA,GAAAI,IAAA,MAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA;YAAJF,IAAI,CAAAE,IAAA,IAAAH,SAAA,CAAAG,IAAA;UAAA;UAAA,OAAAf,YAAA,CAAA/E,iBAAA;YAAA;UAAA;YAAAqB,OAAA,EAAAA,CAAA,MAEXiB,KAAK,CAACjB,OAAO,GAAG,GAAGuE,IAAI,CAAC;UAAA;QAAA;MAE7B;IAIT,CAAC,CAAC;IAEF,OAAOzF,WAAW,CAAC,CAAC,CAAC,EAAEsC,OAAO,CAAC;EACjC;AACF,CAAC,CAAC","ignoreList":[]}
@@ -46,5 +46,46 @@ describe('VDialog', () => {
46
46
  await userEvent.click(element);
47
47
  await expect.poll(() => onAfterLeave).toHaveBeenCalledTimes(1);
48
48
  });
49
+ it('should focus on the last element when shift + tab key is pressed on the first element', async () => {
50
+ const model = ref(true);
51
+ render(() => _createElementVNode("div", null, [_createVNode(VDialog, {
52
+ "modelValue": model.value,
53
+ "onUpdate:modelValue": $event => model.value = $event,
54
+ "persistent": true
55
+ }, {
56
+ default: () => [_createElementVNode("div", null, [_createElementVNode("button", {
57
+ "data-testid": "first"
58
+ }, [_createTextVNode("First")]), _createElementVNode("button", {
59
+ "data-testid": "last"
60
+ }, [_createTextVNode("Last")])])]
61
+ })]));
62
+ const first = screen.getByCSS('button[data-testid="first"]');
63
+ const last = screen.getByCSS('button[data-testid="last"]');
64
+ first.focus();
65
+ await expect.poll(() => document.activeElement).toBe(first);
66
+ await userEvent.tab({
67
+ shift: true
68
+ });
69
+ await expect.poll(() => document.activeElement).toBe(last);
70
+ });
71
+ it('should focus on the first element when Tab key is pressed on the last element', async () => {
72
+ const model = ref(true);
73
+ render(() => _createElementVNode("div", null, [_createVNode(VDialog, {
74
+ "modelValue": model.value,
75
+ "onUpdate:modelValue": $event => model.value = $event
76
+ }, {
77
+ default: () => [_createElementVNode("div", null, [_createElementVNode("button", {
78
+ "data-testid": "first"
79
+ }, [_createTextVNode("First")]), _createElementVNode("button", {
80
+ "data-testid": "last"
81
+ }, [_createTextVNode("Last")])])]
82
+ })]));
83
+ const first = screen.getByCSS('button[data-testid="first"]');
84
+ const last = screen.getByCSS('button[data-testid="last"]');
85
+ last.focus();
86
+ await expect.poll(() => document.activeElement).toBe(last);
87
+ await userEvent.tab();
88
+ await expect.poll(() => document.activeElement).toBe(first);
89
+ });
49
90
  });
50
91
  //# sourceMappingURL=VDialog.spec.browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VDialog.spec.browser.js","names":["VDialog","render","screen","userEvent","nextTick","ref","describe","it","model","element","_createElementVNode","_createVNode","value","$event","default","_createTextVNode","expect","queryByTestId","toBeNull","findByTestId","resolves","toBeVisible","click","poll","toBeFalsy","onAfterLeave","vi","fn","toHaveBeenCalledTimes"],"sources":["../../../../src/components/VDialog/__test__/VDialog.spec.browser.tsx"],"sourcesContent":["// Components\nimport { VDialog } from '../VDialog'\n\n// Utilities\nimport { render, screen, userEvent } from '@test'\nimport { nextTick, ref } from 'vue'\n\n// Tests\ndescribe('VDialog', () => {\n it('should render correctly', async () => {\n const model = ref(false)\n const { element } = render(() => (\n <div>\n <VDialog v-model={ model.value } data-testid=\"dialog\">\n <div data-testid=\"content\">Content</div>\n </VDialog>\n </div>\n ))\n\n expect(screen.queryByTestId('dialog')).toBeNull()\n\n model.value = true\n await nextTick()\n await expect(screen.findByTestId('dialog')).resolves.toBeVisible()\n await expect.element(await screen.findByTestId('content')).toBeVisible()\n\n await userEvent.click(element)\n await expect.poll(() => model.value).toBeFalsy()\n await expect.poll(() => screen.queryByTestId('dialog')).toBeNull()\n await expect.poll(() => screen.queryByTestId('content')).toBeNull()\n })\n\n it('should emit afterLeave', async () => {\n const model = ref(true)\n const onAfterLeave = vi.fn()\n const { element } = render(() => (\n <div>\n <VDialog v-model={ model.value } onAfterLeave={ onAfterLeave }>\n <div data-test=\"content\">Content</div>\n </VDialog>\n </div>\n ))\n\n await userEvent.click(element)\n await expect.poll(() => onAfterLeave).toHaveBeenCalledTimes(1)\n })\n})\n"],"mappings":";AAAA;AAAA,SACSA,OAAO,yBAEhB;AACA,SAASC,MAAM,EAAEC,MAAM,EAAEC,SAAS,QAAQ,OAAO;AACjD,SAASC,QAAQ,EAAEC,GAAG,QAAQ,KAAK;;AAEnC;AACAC,QAAQ,CAAC,SAAS,EAAE,MAAM;EACxBC,EAAE,CAAC,yBAAyB,EAAE,YAAY;IACxC,MAAMC,KAAK,GAAGH,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM;MAAEI;IAAQ,CAAC,GAAGR,MAAM,CAAC,MAAAS,mBAAA,eAAAC,YAAA,CAAAX,OAAA;MAAA,cAEJQ,KAAK,CAACI,KAAK;MAAA,uBAAAC,MAAA,IAAXL,KAAK,CAACI,KAAK,GAAAC,MAAA;MAAA;IAAA;MAAAC,OAAA,EAAAA,CAAA,MAAAJ,mBAAA;QAAA;MAAA,IAAAK,gBAAA;IAAA,IAIjC,CAAC;IAEFC,MAAM,CAACd,MAAM,CAACe,aAAa,CAAC,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;IAEjDV,KAAK,CAACI,KAAK,GAAG,IAAI;IAClB,MAAMR,QAAQ,CAAC,CAAC;IAChB,MAAMY,MAAM,CAACd,MAAM,CAACiB,YAAY,CAAC,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAACC,WAAW,CAAC,CAAC;IAClE,MAAML,MAAM,CAACP,OAAO,CAAC,MAAMP,MAAM,CAACiB,YAAY,CAAC,SAAS,CAAC,CAAC,CAACE,WAAW,CAAC,CAAC;IAExE,MAAMlB,SAAS,CAACmB,KAAK,CAACb,OAAO,CAAC;IAC9B,MAAMO,MAAM,CAACO,IAAI,CAAC,MAAMf,KAAK,CAACI,KAAK,CAAC,CAACY,SAAS,CAAC,CAAC;IAChD,MAAMR,MAAM,CAACO,IAAI,CAAC,MAAMrB,MAAM,CAACe,aAAa,CAAC,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;IAClE,MAAMF,MAAM,CAACO,IAAI,CAAC,MAAMrB,MAAM,CAACe,aAAa,CAAC,SAAS,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EACrE,CAAC,CAAC;EAEFX,EAAE,CAAC,wBAAwB,EAAE,YAAY;IACvC,MAAMC,KAAK,GAAGH,GAAG,CAAC,IAAI,CAAC;IACvB,MAAMoB,YAAY,GAAGC,EAAE,CAACC,EAAE,CAAC,CAAC;IAC5B,MAAM;MAAElB;IAAQ,CAAC,GAAGR,MAAM,CAAC,MAAAS,mBAAA,eAAAC,YAAA,CAAAX,OAAA;MAAA,cAEJQ,KAAK,CAACI,KAAK;MAAA,uBAAAC,MAAA,IAAXL,KAAK,CAACI,KAAK,GAAAC,MAAA;MAAA,gBAAkBY;IAAY;MAAAX,OAAA,EAAAA,CAAA,MAAAJ,mBAAA;QAAA;MAAA,IAAAK,gBAAA;IAAA,IAI/D,CAAC;IAEF,MAAMZ,SAAS,CAACmB,KAAK,CAACb,OAAO,CAAC;IAC9B,MAAMO,MAAM,CAACO,IAAI,CAAC,MAAME,YAAY,CAAC,CAACG,qBAAqB,CAAC,CAAC,CAAC;EAChE,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"VDialog.spec.browser.js","names":["VDialog","render","screen","userEvent","nextTick","ref","describe","it","model","element","_createElementVNode","_createVNode","value","$event","default","_createTextVNode","expect","queryByTestId","toBeNull","findByTestId","resolves","toBeVisible","click","poll","toBeFalsy","onAfterLeave","vi","fn","toHaveBeenCalledTimes","first","getByCSS","last","focus","document","activeElement","toBe","tab","shift"],"sources":["../../../../src/components/VDialog/__test__/VDialog.spec.browser.tsx"],"sourcesContent":["// Components\nimport { VDialog } from '../VDialog'\n\n// Utilities\nimport { render, screen, userEvent } from '@test'\nimport { nextTick, ref } from 'vue'\n\n// Tests\ndescribe('VDialog', () => {\n it('should render correctly', async () => {\n const model = ref(false)\n const { element } = render(() => (\n <div>\n <VDialog v-model={ model.value } data-testid=\"dialog\">\n <div data-testid=\"content\">Content</div>\n </VDialog>\n </div>\n ))\n\n expect(screen.queryByTestId('dialog')).toBeNull()\n\n model.value = true\n await nextTick()\n await expect(screen.findByTestId('dialog')).resolves.toBeVisible()\n await expect.element(await screen.findByTestId('content')).toBeVisible()\n\n await userEvent.click(element)\n await expect.poll(() => model.value).toBeFalsy()\n await expect.poll(() => screen.queryByTestId('dialog')).toBeNull()\n await expect.poll(() => screen.queryByTestId('content')).toBeNull()\n })\n\n it('should emit afterLeave', async () => {\n const model = ref(true)\n const onAfterLeave = vi.fn()\n const { element } = render(() => (\n <div>\n <VDialog v-model={ model.value } onAfterLeave={ onAfterLeave }>\n <div data-test=\"content\">Content</div>\n </VDialog>\n </div>\n ))\n\n await userEvent.click(element)\n await expect.poll(() => onAfterLeave).toHaveBeenCalledTimes(1)\n })\n\n it('should focus on the last element when shift + tab key is pressed on the first element', async () => {\n const model = ref(true)\n render(() => (\n <div>\n <VDialog v-model={ model.value } persistent>\n <div>\n <button data-testid=\"first\">First</button>\n <button data-testid=\"last\">Last</button>\n </div>\n </VDialog>\n </div>\n ))\n const first = screen.getByCSS('button[data-testid=\"first\"]')\n const last = screen.getByCSS('button[data-testid=\"last\"]')\n\n first.focus()\n await expect.poll(() => document.activeElement).toBe(first)\n\n await userEvent.tab({ shift: true })\n await expect.poll(() => document.activeElement).toBe(last)\n })\n\n it('should focus on the first element when Tab key is pressed on the last element', async () => {\n const model = ref(true)\n render(() => (\n <div>\n <VDialog v-model={ model.value }>\n <div>\n <button data-testid=\"first\">First</button>\n <button data-testid=\"last\">Last</button>\n </div>\n </VDialog>\n </div>\n ))\n const first = screen.getByCSS('button[data-testid=\"first\"]')\n const last = screen.getByCSS('button[data-testid=\"last\"]')\n\n last.focus()\n await expect.poll(() => document.activeElement).toBe(last)\n\n await userEvent.tab()\n await expect.poll(() => document.activeElement).toBe(first)\n })\n})\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  .v-divider {
2
+ color: inherit;
2
3
  display: block;
3
4
  flex: 1 1 100%;
4
5
  height: 0px;
@@ -3,6 +3,7 @@
3
3
 
4
4
  @include tools.layer('components')
5
5
  .v-divider
6
+ color: inherit
6
7
  display: block
7
8
  flex: $divider-flex
8
9
  height: 0px
@@ -209,7 +209,8 @@ export const VFileInput = genericComponent()({
209
209
  'onClick:clear': onClear
210
210
  };
211
211
  const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
212
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
212
+ const acceptFallback = attrs.accept ? String(attrs.accept) : undefined;
213
+ const inputAccept = expectsDirectory ? undefined : props.filterByType ?? acceptFallback;
213
214
  return _createVNode(VInput, _mergeProps({
214
215
  "ref": vInputRef,
215
216
  "modelValue": props.multiple ? model.value : model.value[0],
@@ -1 +1 @@
1
- {"version":3,"file":"VFileInput.js","names":["VChip","VCounter","VField","makeVFieldProps","makeVInputProps","VInput","useFileDrop","makeFileFilterProps","useFileFilter","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","shallowRef","toRef","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","hideInput","multiple","showSize","Number","validator","v","includes","truncateLength","prependIcon","modelValue","Array","Object","props","val","every","clearable","VFileInput","name","inheritAttrs","emits","e","focused","files","rejected","setup","_ref","attrs","emit","slots","t","filterAccepted","model","isArray","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","truncatedText","truncateText","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","isDragging","handleDrop","hasFilesOrFolders","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","str","charsKeepOneSide","Math","floor","slice","onDragover","preventDefault","stopImmediatePropagation","onDragleave","onDrop","allDroppedFiles","selectAccepted","onFileSelection","target","repack","filterByType","dataTransfer","DataTransfer","accepted","items","add","event","Event","bubbles","dispatchEvent","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","expectsDirectory","webkitdirectory","inputAccept","accept","_createVNode","_mergeProps","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref4","fieldClass","slotProps","_createElementVNode","_Fragment","_normalizeClass","selection","text","join","disabled"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFileDrop } from '@/composables/fileDrop'\nimport { makeFileFilterProps, useFileFilter } from '@/composables/fileFilter'\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType<File[] | File | null>,\n default: (props: any) => props.multiple ? [] : null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeFileFilterProps(),\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File | File[]) => true,\n rejected: (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const { filterAccepted } = useFileFilter(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (!props.multiple && Array.isArray(val)) ? val[0] : val,\n )\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n const truncatedText = truncateText(name)\n return !props.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = toRef(() => isFocused.value || props.active)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n const isDragging = shallowRef(false)\n const { handleDrop, hasFilesOrFolders } = useFileDrop()\n\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n inputRef.value?.click()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function truncateText (str: string) {\n if (str.length < Number(props.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(props.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n }\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n async function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!inputRef.value || !hasFilesOrFolders(e)) return\n\n const allDroppedFiles = await handleDrop(e)\n selectAccepted(allDroppedFiles)\n }\n\n function onFileSelection (e: Event) {\n if (!e.target || (e as any).repack) return // prevent loop\n\n if (!props.filterByType) {\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n } else {\n selectAccepted([...(e as any).target.files])\n }\n }\n\n function selectAccepted (files: File[]) {\n const dataTransfer = new DataTransfer()\n const { accepted, rejected } = filterAccepted(files)\n\n if (rejected.length) {\n emit('rejected', rejected)\n }\n\n for (const file of accepted) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value!.files = dataTransfer.files\n model.value = [...dataTransfer.files]\n\n const event = new Event('change', { bubbles: true }) as any\n event.repack = true\n inputRef.value!.dispatchEvent(event)\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = {\n ...VField.filterProps(props),\n 'onClick:clear': onClear,\n }\n\n const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false\n const inputAccept = expectsDirectory ? undefined : (props.filterByType ?? String(attrs.accept))\n\n return (\n <VInput\n ref={ vInputRef }\n modelValue={ props.multiple ? model.value : model.value[0] }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--dragging': isDragging.value,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n hasDetails,\n }) => (\n <VField\n ref={ vFieldRef }\n prependIcon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n details={ hasDetails.value }\n error={ isValid.value === false }\n onDragover={ onDragover }\n onDrop={ onDrop }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n accept={ inputAccept }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ onFileSelection }\n onDragleave={ onDragleave }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && !props.hideInput && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n text={ text }\n />\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n disabled={ props.disabled }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VFileInput.js","names":["VChip","VCounter","VField","makeVFieldProps","makeVInputProps","VInput","useFileDrop","makeFileFilterProps","useFileFilter","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","shallowRef","toRef","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","hideInput","multiple","showSize","Number","validator","v","includes","truncateLength","prependIcon","modelValue","Array","Object","props","val","every","clearable","VFileInput","name","inheritAttrs","emits","e","focused","files","rejected","setup","_ref","attrs","emit","slots","t","filterAccepted","model","isArray","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","truncatedText","truncateText","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","isDragging","handleDrop","hasFilesOrFolders","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","str","charsKeepOneSide","Math","floor","slice","onDragover","preventDefault","stopImmediatePropagation","onDragleave","onDrop","allDroppedFiles","selectAccepted","onFileSelection","target","repack","filterByType","dataTransfer","DataTransfer","accepted","items","add","event","Event","bubbles","dispatchEvent","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","expectsDirectory","webkitdirectory","acceptFallback","accept","inputAccept","_createVNode","_mergeProps","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref4","fieldClass","slotProps","_createElementVNode","_Fragment","_normalizeClass","selection","text","join","disabled"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFileDrop } from '@/composables/fileDrop'\nimport { makeFileFilterProps, useFileFilter } from '@/composables/fileFilter'\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType<File[] | File | null>,\n default: (props: any) => props.multiple ? [] : null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeFileFilterProps(),\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File | File[]) => true,\n rejected: (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const { filterAccepted } = useFileFilter(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (!props.multiple && Array.isArray(val)) ? val[0] : val,\n )\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n const truncatedText = truncateText(name)\n return !props.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = toRef(() => isFocused.value || props.active)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n const isDragging = shallowRef(false)\n const { handleDrop, hasFilesOrFolders } = useFileDrop()\n\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n inputRef.value?.click()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function truncateText (str: string) {\n if (str.length < Number(props.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(props.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n }\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n async function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!inputRef.value || !hasFilesOrFolders(e)) return\n\n const allDroppedFiles = await handleDrop(e)\n selectAccepted(allDroppedFiles)\n }\n\n function onFileSelection (e: Event) {\n if (!e.target || (e as any).repack) return // prevent loop\n\n if (!props.filterByType) {\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n } else {\n selectAccepted([...(e as any).target.files])\n }\n }\n\n function selectAccepted (files: File[]) {\n const dataTransfer = new DataTransfer()\n const { accepted, rejected } = filterAccepted(files)\n\n if (rejected.length) {\n emit('rejected', rejected)\n }\n\n for (const file of accepted) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value!.files = dataTransfer.files\n model.value = [...dataTransfer.files]\n\n const event = new Event('change', { bubbles: true }) as any\n event.repack = true\n inputRef.value!.dispatchEvent(event)\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = {\n ...VField.filterProps(props),\n 'onClick:clear': onClear,\n }\n\n const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false\n const acceptFallback = attrs.accept ? String(attrs.accept) : undefined\n const inputAccept = expectsDirectory ? undefined : (props.filterByType ?? acceptFallback)\n\n return (\n <VInput\n ref={ vInputRef }\n modelValue={ props.multiple ? model.value : model.value[0] }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--dragging': isDragging.value,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n hasDetails,\n }) => (\n <VField\n ref={ vFieldRef }\n prependIcon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n details={ hasDetails.value }\n error={ isValid.value === false }\n onDragover={ onDragover }\n onDrop={ onDrop }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n accept={ inputAccept }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ onFileSelection }\n onDragleave={ onDragleave }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && !props.hideInput && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n text={ text }\n />\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n disabled={ props.disabled }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,KAAK;AAAA,SACLC,QAAQ;AAAA,SACRC,MAAM;AAAA,SACNC,eAAe;AAAA,SACfC,eAAe,EAAEC,MAAM,+BAEhC;AAAA,SACSC,WAAW;AAAA,SACXC,mBAAmB,EAAEC,aAAa;AAAA,SAClCC,QAAQ;AAAA,SACRC,WAAW;AAAA,SACXC,SAAS;AAAA,SACTC,eAAe,6CAExB;AACA,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAErEC,SAAS,EACTC,gBAAgB,EAChBC,gBAAgB,EAChBC,qBAAqB,EACrBC,YAAY,EACZC,SAAS,EACTC,WAAW,+BAGb;AAcA,OAAO,MAAMC,mBAAmB,GAAGH,YAAY,CAAC;EAC9CI,KAAK,EAAEC,OAAO;EACdC,OAAO,EAAED,OAAO;EAChBE,iBAAiB,EAAE;IACjBC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,aAAa,EAAE;IACbH,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDE,SAAS,EAAEP,OAAO;EAClBQ,QAAQ,EAAER,OAAO;EACjBS,QAAQ,EAAE;IACRN,IAAI,EAAE,CAACH,OAAO,EAAEU,MAAM,EAAEN,MAAM,CAAoC;IAClEC,OAAO,EAAE,KAAK;IACdM,SAAS,EAAGC,CAAmB,IAAK;MAClC,OACE,OAAOA,CAAC,KAAK,SAAS,IACtB,CAAC,IAAI,EAAE,IAAI,CAAC,CAACC,QAAQ,CAACH,MAAM,CAACE,CAAC,CAAC,CAAC;IAEpC;EACF,CAAC;EACDE,cAAc,EAAE;IACdX,IAAI,EAAE,CAACO,MAAM,EAAEN,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX,CAAC;EAED,GAAG7B,eAAe,CAAC;IAAEuC,WAAW,EAAE;EAAQ,CAAC,CAAC;EAE5CC,UAAU,EAAE;IACVb,IAAI,EAAE,CAACc,KAAK,EAAEC,MAAM,CAAmC;IACvDb,OAAO,EAAGc,KAAU,IAAKA,KAAK,CAACX,QAAQ,GAAG,EAAE,GAAG,IAAI;IACnDG,SAAS,EAAGS,GAAQ,IAAK;MACvB,OAAOvB,WAAW,CAACuB,GAAG,CAAC,CAACC,KAAK,CAACT,CAAC,IAAIA,CAAC,IAAI,IAAI,IAAI,OAAOA,CAAC,KAAK,QAAQ,CAAC;IACxE;EACF,CAAC;EAED,GAAGjC,mBAAmB,CAAC,CAAC;EACxB,GAAGJ,eAAe,CAAC;IAAE+C,SAAS,EAAE;EAAK,CAAC;AACxC,CAAC,EAAE,YAAY,CAAC;AAEhB,OAAO,MAAMC,UAAU,GAAG9B,gBAAgB,CAAkB,CAAC,CAAC;EAC5D+B,IAAI,EAAE,YAAY;EAElBC,YAAY,EAAE,KAAK;EAEnBN,KAAK,EAAErB,mBAAmB,CAAC,CAAC;EAE5B4B,KAAK,EAAE;IACL,eAAe,EAAGC,CAAa,IAAK,IAAI;IACxC,mBAAmB,EAAGA,CAAa,IAAK,IAAI;IAC5C,gBAAgB,EAAGC,OAAgB,IAAK,IAAI;IAC5C,mBAAmB,EAAGC,KAAoB,IAAK,IAAI;IACnDC,QAAQ,EAAGD,KAAa,IAAK;EAC/B,CAAC;EAEDE,KAAKA,CAAEZ,KAAK,EAAAa,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAH,IAAA;IAClC,MAAM;MAAEI;IAAE,CAAC,GAAGrD,SAAS,CAAC,CAAC;IACzB,MAAM;MAAEsD;IAAe,CAAC,GAAGzD,aAAa,CAACuC,KAAK,CAAC;IAC/C,MAAMmB,KAAK,GAAGtD,eAAe,CAC3BmC,KAAK,EACL,YAAY,EACZA,KAAK,CAACH,UAAU,EAChBI,GAAG,IAAIvB,WAAW,CAACuB,GAAG,CAAC,EACvBA,GAAG,IAAK,CAACD,KAAK,CAACX,QAAQ,IAAIS,KAAK,CAACsB,OAAO,CAACnB,GAAG,CAAC,GAAIA,GAAG,CAAC,CAAC,CAAC,GAAGA,GAC5D,CAAC;IACD,MAAM;MAAEoB,SAAS;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAG7D,QAAQ,CAACsC,KAAK,CAAC;IAClD,MAAMwB,IAAI,GAAG1D,QAAQ,CAAC,MAAM,OAAOkC,KAAK,CAACV,QAAQ,KAAK,SAAS,GAAGU,KAAK,CAACV,QAAQ,GAAGmC,SAAS,CAAC;IAC7F,MAAMC,UAAU,GAAG5D,QAAQ,CAAC,MAAM,CAACqD,KAAK,CAACQ,KAAK,IAAI,EAAE,EAAEC,MAAM,CAAC,CAACC,KAAK,EAAAC,KAAA;MAAA,IAAE;QAAEC,IAAI,GAAG;MAAE,CAAC,GAAAD,KAAA;MAAA,OAAKD,KAAK,GAAGE,IAAI;IAAA,GAAE,CAAC,CAAC,CAAC;IACvG,MAAMC,kBAAkB,GAAGlE,QAAQ,CAAC,MAAMS,qBAAqB,CAACmD,UAAU,CAACC,KAAK,EAAEH,IAAI,CAACG,KAAK,CAAC,CAAC;IAE9F,MAAMM,SAAS,GAAGnE,QAAQ,CAAC,MAAM,CAACqD,KAAK,CAACQ,KAAK,IAAI,EAAE,EAAEO,GAAG,CAACC,IAAI,IAAI;MAC/D,MAAM;QAAE9B,IAAI,GAAG,EAAE;QAAE0B,IAAI,GAAG;MAAE,CAAC,GAAGI,IAAI;MACpC,MAAMC,aAAa,GAAGC,YAAY,CAAChC,IAAI,CAAC;MACxC,OAAO,CAACL,KAAK,CAACV,QAAQ,GAClB8C,aAAa,GACb,GAAGA,aAAa,KAAK7D,qBAAqB,CAACwD,IAAI,EAAEP,IAAI,CAACG,KAAK,CAAC,GAAG;IACrE,CAAC,CAAC,CAAC;IAEH,MAAMW,YAAY,GAAGxE,QAAQ,CAAC,MAAM;MAClC,MAAMyE,SAAS,GAAGpB,KAAK,CAACQ,KAAK,EAAEa,MAAM,IAAI,CAAC;MAC1C,IAAIxC,KAAK,CAACV,QAAQ,EAAE,OAAO2B,CAAC,CAACjB,KAAK,CAACjB,iBAAiB,EAAEwD,SAAS,EAAEP,kBAAkB,CAACL,KAAK,CAAC,MACrF,OAAOV,CAAC,CAACjB,KAAK,CAACb,aAAa,EAAEoD,SAAS,CAAC;IAC/C,CAAC,CAAC;IACF,MAAME,SAAS,GAAGzE,GAAG,CAAS,CAAC;IAC/B,MAAM0E,SAAS,GAAG1E,GAAG,CAAS,CAAC;IAC/B,MAAM2E,QAAQ,GAAG3E,GAAG,CAAmB,CAAC;IACxC,MAAM4E,QAAQ,GAAG1E,KAAK,CAAC,MAAMmD,SAAS,CAACM,KAAK,IAAI3B,KAAK,CAAC6C,MAAM,CAAC;IAC7D,MAAMC,mBAAmB,GAAGhF,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC4B,QAAQ,CAACM,KAAK,CAAC+C,OAAO,CAAC,CAAC;IAC3F,MAAMC,UAAU,GAAG/E,UAAU,CAAC,KAAK,CAAC;IACpC,MAAM;MAAEgF,UAAU;MAAEC;IAAkB,CAAC,GAAG3F,WAAW,CAAC,CAAC;IAEvD,SAAS4F,OAAOA,CAAA,EAAI;MAClB,IAAIR,QAAQ,CAAChB,KAAK,KAAKyB,QAAQ,CAACC,aAAa,EAAE;QAC7CV,QAAQ,CAAChB,KAAK,EAAEL,KAAK,CAAC,CAAC;MACzB;MAEA,IAAI,CAACD,SAAS,CAACM,KAAK,EAAEL,KAAK,CAAC,CAAC;IAC/B;IACA,SAASgC,cAAcA,CAAE9C,CAAa,EAAE;MACtCmC,QAAQ,CAAChB,KAAK,EAAE4B,KAAK,CAAC,CAAC;IACzB;IACA,SAASC,kBAAkBA,CAAEhD,CAAa,EAAE;MAC1CO,IAAI,CAAC,mBAAmB,EAAEP,CAAC,CAAC;IAC9B;IACA,SAASiD,cAAcA,CAAEjD,CAAa,EAAE;MACtCmC,QAAQ,CAAChB,KAAK,EAAE4B,KAAK,CAAC,CAAC;MAEvBxC,IAAI,CAAC,eAAe,EAAEP,CAAC,CAAC;IAC1B;IACA,SAASkD,OAAOA,CAAElD,CAAa,EAAE;MAC/BA,CAAC,CAACmD,eAAe,CAAC,CAAC;MAEnBR,OAAO,CAAC,CAAC;MAETpF,QAAQ,CAAC,MAAM;QACboD,KAAK,CAACQ,KAAK,GAAG,EAAE;QAEhBvD,SAAS,CAAC4B,KAAK,CAAC,eAAe,CAAC,EAAEQ,CAAC,CAAC;MACtC,CAAC,CAAC;IACJ;IACA,SAAS6B,YAAYA,CAAEuB,GAAW,EAAE;MAClC,IAAIA,GAAG,CAACpB,MAAM,GAAGjD,MAAM,CAACS,KAAK,CAACL,cAAc,CAAC,EAAE,OAAOiE,GAAG;MACzD,MAAMC,gBAAgB,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACxE,MAAM,CAACS,KAAK,CAACL,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;MAC3E,OAAO,GAAGiE,GAAG,CAACI,KAAK,CAAC,CAAC,EAAEH,gBAAgB,CAAC,IAAID,GAAG,CAACI,KAAK,CAACJ,GAAG,CAACpB,MAAM,GAAGqB,gBAAgB,CAAC,EAAE;IACxF;IACA,SAASI,UAAUA,CAAEzD,CAAY,EAAE;MACjCA,CAAC,CAAC0D,cAAc,CAAC,CAAC;MAClB1D,CAAC,CAAC2D,wBAAwB,CAAC,CAAC;MAC5BnB,UAAU,CAACrB,KAAK,GAAG,IAAI;IACzB;IACA,SAASyC,WAAWA,CAAE5D,CAAY,EAAE;MAClCA,CAAC,CAAC0D,cAAc,CAAC,CAAC;MAClBlB,UAAU,CAACrB,KAAK,GAAG,KAAK;IAC1B;IACA,eAAe0C,MAAMA,CAAE7D,CAAY,EAAE;MACnCA,CAAC,CAAC0D,cAAc,CAAC,CAAC;MAClB1D,CAAC,CAAC2D,wBAAwB,CAAC,CAAC;MAC5BnB,UAAU,CAACrB,KAAK,GAAG,KAAK;MAExB,IAAI,CAACgB,QAAQ,CAAChB,KAAK,IAAI,CAACuB,iBAAiB,CAAC1C,CAAC,CAAC,EAAE;MAE9C,MAAM8D,eAAe,GAAG,MAAMrB,UAAU,CAACzC,CAAC,CAAC;MAC3C+D,cAAc,CAACD,eAAe,CAAC;IACjC;IAEA,SAASE,eAAeA,CAAEhE,CAAQ,EAAE;MAClC,IAAI,CAACA,CAAC,CAACiE,MAAM,IAAKjE,CAAC,CAASkE,MAAM,EAAE,OAAM,CAAC;;MAE3C,IAAI,CAAC1E,KAAK,CAAC2E,YAAY,EAAE;QACvB,MAAMF,MAAM,GAAGjE,CAAC,CAACiE,MAA0B;QAC3CtD,KAAK,CAACQ,KAAK,GAAG,CAAC,IAAG8C,MAAM,CAAC/D,KAAK,IAAI,EAAE,EAAC;MACvC,CAAC,MAAM;QACL6D,cAAc,CAAC,CAAC,GAAI/D,CAAC,CAASiE,MAAM,CAAC/D,KAAK,CAAC,CAAC;MAC9C;IACF;IAEA,SAAS6D,cAAcA,CAAE7D,KAAa,EAAE;MACtC,MAAMkE,YAAY,GAAG,IAAIC,YAAY,CAAC,CAAC;MACvC,MAAM;QAAEC,QAAQ;QAAEnE;MAAS,CAAC,GAAGO,cAAc,CAACR,KAAK,CAAC;MAEpD,IAAIC,QAAQ,CAAC6B,MAAM,EAAE;QACnBzB,IAAI,CAAC,UAAU,EAAEJ,QAAQ,CAAC;MAC5B;MAEA,KAAK,MAAMwB,IAAI,IAAI2C,QAAQ,EAAE;QAC3BF,YAAY,CAACG,KAAK,CAACC,GAAG,CAAC7C,IAAI,CAAC;MAC9B;MAEAQ,QAAQ,CAAChB,KAAK,CAAEjB,KAAK,GAAGkE,YAAY,CAAClE,KAAK;MAC1CS,KAAK,CAACQ,KAAK,GAAG,CAAC,GAAGiD,YAAY,CAAClE,KAAK,CAAC;MAErC,MAAMuE,KAAK,GAAG,IAAIC,KAAK,CAAC,QAAQ,EAAE;QAAEC,OAAO,EAAE;MAAK,CAAC,CAAQ;MAC3DF,KAAK,CAACP,MAAM,GAAG,IAAI;MACnB/B,QAAQ,CAAChB,KAAK,CAAEyD,aAAa,CAACH,KAAK,CAAC;IACtC;IAEA9G,KAAK,CAACgD,KAAK,EAAEkE,QAAQ,IAAI;MACvB,MAAMC,aAAa,GAAG,CAACxF,KAAK,CAACsB,OAAO,CAACiE,QAAQ,CAAC,IAAI,CAACA,QAAQ,CAAC7C,MAAM;MAElE,IAAI8C,aAAa,IAAI3C,QAAQ,CAAChB,KAAK,EAAE;QACnCgB,QAAQ,CAAChB,KAAK,CAACA,KAAK,GAAG,EAAE;MAC3B;IACF,CAAC,CAAC;IAEFlD,SAAS,CAAC,MAAM;MACd,MAAM8G,UAAU,GAAG,CAAC,EAAEvE,KAAK,CAAClC,OAAO,IAAIkB,KAAK,CAAClB,OAAO,CAAC;MACrD,MAAM0G,UAAU,GAAG,CAAC,EAAED,UAAU,IAAIvE,KAAK,CAACyE,OAAO,CAAC;MAClD,MAAM,CAACC,SAAS,EAAEC,UAAU,CAAC,GAAGtH,gBAAgB,CAACyC,KAAK,CAAC;MACvD,MAAM;QAAEjB,UAAU,EAAE+F,CAAC;QAAE,GAAGC;MAAW,CAAC,GAAGvI,MAAM,CAACwI,WAAW,CAAC9F,KAAK,CAAC;MAClE,MAAM+F,UAAU,GAAG;QACjB,GAAG5I,MAAM,CAAC2I,WAAW,CAAC9F,KAAK,CAAC;QAC5B,eAAe,EAAE0D;MACnB,CAAC;MAED,MAAMsC,gBAAgB,GAAGlF,KAAK,CAACmF,eAAe,KAAKxE,SAAS,IAAIX,KAAK,CAACmF,eAAe,KAAK,KAAK;MAC/F,MAAMC,cAAc,GAAGpF,KAAK,CAACqF,MAAM,GAAGlH,MAAM,CAAC6B,KAAK,CAACqF,MAAM,CAAC,GAAG1E,SAAS;MACtE,MAAM2E,WAAW,GAAGJ,gBAAgB,GAAGvE,SAAS,GAAIzB,KAAK,CAAC2E,YAAY,IAAIuB,cAAe;MAEzF,OAAAG,YAAA,CAAA/I,MAAA,EAAAgJ,WAAA;QAAA,OAEU7D,SAAS;QAAA,cACFzC,KAAK,CAACX,QAAQ,GAAG8B,KAAK,CAACQ,KAAK,GAAGR,KAAK,CAACQ,KAAK,CAAC,CAAC,CAAC;QAAA,SACnD,CACL,cAAc,EACd;UACE,qBAAqB,EAAE,CAAC,CAAC3B,KAAK,CAACpB,KAAK;UACpC,wBAAwB,EAAEoE,UAAU,CAACrB,KAAK;UAC1C,oBAAoB,EAAE3B,KAAK,CAACZ,SAAS;UACrC,2BAA2B,EAAE0D,mBAAmB,CAACnB;QACnD,CAAC,EACD3B,KAAK,CAACuG,KAAK,CACZ;QAAA,SACOvG,KAAK,CAACwG,KAAK;QAAA,mBACDlD;MAAc,GAC3BoC,SAAS,EACTG,UAAU;QAAA,eACD,CAAC/C,mBAAmB,CAACnB,KAAK;QAAA,WAC9BN,SAAS,CAACM;MAAK;QAGvB,GAAGX,KAAK;QACR9B,OAAO,EAAEuH,KAAA;UAAA,IAAC;YACRC,EAAE;YACFC,UAAU;YACVC,OAAO;YACPC,UAAU;YACVC,OAAO;YACPtB;UACF,CAAC,GAAAiB,KAAA;UAAA,OAAAJ,YAAA,CAAAlJ,MAAA,EAAAmJ,WAAA;YAAA,OAES5D,SAAS;YAAA,eACD1C,KAAK,CAACJ,WAAW;YAAA,eACjB4D,kBAAkB;YAAA,WACtBC,cAAc;YAAA,wBACDzD,KAAK,CAAC,sBAAsB,CAAC;YAAA,uBAC9BA,KAAK,CAAC,qBAAqB;UAAC,GAC7C+F,UAAU;YAAA,MACVW,EAAE,CAAC/E,KAAK;YAAA,UACJiB,QAAQ,CAACjB,KAAK,IAAIiF,OAAO,CAACjF,KAAK;YAAA,SAChCiF,OAAO,CAACjF,KAAK,IAAI3B,KAAK,CAAC+G,KAAK;YAAA,YACzBJ,UAAU,CAAChF,KAAK;YAAA,WACjBN,SAAS,CAACM,KAAK;YAAA,WACf6D,UAAU,CAAC7D,KAAK;YAAA,SAClBmF,OAAO,CAACnF,KAAK,KAAK,KAAK;YAAA,cAClBsC,UAAU;YAAA,UACdI;UAAM;YAGb,GAAGrD,KAAK;YACR9B,OAAO,EAAE8H,KAAA;cAAA,IAAC;gBACRhH,KAAK,EAAE;kBAAEuG,KAAK,EAAEU,UAAU;kBAAE,GAAGC;gBAAU;cAC3C,CAAC,GAAAF,KAAA;cAAA,OAAAG,mBAAA,CAAAC,SAAA,SAAAD,mBAAA,UAAAb,WAAA;gBAAA,OAGW3D,QAAQ;gBAAA;gBAAA,UAELyD,WAAW;gBAAA,YACTS,UAAU,CAAClF,KAAK;gBAAA,YAChBgF,UAAU,CAAChF,KAAK;gBAAA,YAChB3B,KAAK,CAACX,QAAQ;gBAAA,QAClBW,KAAK,CAACK,IAAI;gBAAA,WACPG,CAAC,IAAI;kBACbA,CAAC,CAACmD,eAAe,CAAC,CAAC;kBAEnB,IAAIkD,UAAU,CAAClF,KAAK,EAAEnB,CAAC,CAAC0D,cAAc,CAAC,CAAC;kBAExCf,OAAO,CAAC,CAAC;gBACX,CAAC;gBAAA,YACUqB,eAAe;gBAAA,eACZJ,WAAW;gBAAA,WACfjB,OAAO;gBAAA,UACR5B;cAAI,GACR2F,SAAS,EACTvB,UAAU,UAAAwB,mBAAA;gBAAA,SAAAE,eAAA,CAGJJ,UAAU;cAAA,IACnB,CAAC,CAAC9F,KAAK,CAACQ,KAAK,EAAEa,MAAM,IAAI,CAACxC,KAAK,CAACZ,SAAS,KACzC4B,KAAK,CAACsG,SAAS,GAAGtG,KAAK,CAACsG,SAAS,CAAC;gBAChCrF,SAAS,EAAEA,SAAS,CAACN,KAAK;gBAC1BD,UAAU,EAAEA,UAAU,CAACC,KAAK;gBAC5BK,kBAAkB,EAAEA,kBAAkB,CAACL;cACzC,CAAC,CAAC,GACA3B,KAAK,CAACpB,KAAK,GAAGqD,SAAS,CAACN,KAAK,CAACO,GAAG,CAACqF,IAAI,IAAAlB,YAAA,CAAApJ,KAAA;gBAAA,OAE9BsK,IAAI;gBAAA;gBAAA,QAEHA;cAAI,QAEd,CAAC,GACAtF,SAAS,CAACN,KAAK,CAAC6F,IAAI,CAAC,IAAI,CAAC,CAC7B;YAAA;UAGN;QAAA,CAGN;QACD/B,OAAO,EAAED,UAAU,GAAG0B,SAAS,IAAAC,mBAAA,CAAAC,SAAA,SAEzBpG,KAAK,CAACyE,OAAO,GAAGyB,SAAS,CAAC,EAE1B3B,UAAU,IAAA4B,mBAAA,CAAAC,SAAA,SAAAD,mBAAA,sBAAAd,YAAA,CAAAnJ,QAAA;UAAA,UAKG,CAAC,CAACiE,KAAK,CAACQ,KAAK,EAAEa,MAAM;UAAA,SACtBF,YAAY,CAACX,KAAK;UAAA,YACf3B,KAAK,CAACyH;QAAQ,GACPzG,KAAK,CAAClC,OAAO,GAGpC,EAEJ,GAAG2C;MAAS;IAIrB,CAAC,CAAC;IAEF,OAAO9D,WAAW,CAAC,CAAC,CAAC,EAAE8E,SAAS,EAAEC,SAAS,EAAEC,QAAQ,CAAC;EACxD;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,6 +1,8 @@
1
+ @use '../../styles/settings';
2
+
1
3
  // VKbd
2
4
  // Kbd elements naturally use monospace fonts, if users want to change this, they can do so by setting the font-family on the v-kbd element.
3
- $kbd-font-family: "Roboto", sans-serif !default;
5
+ $kbd-font-family: settings.$body-font-family !default;
4
6
  $kbd-border-radius: 4px !default;
5
7
  $kbd-display: inline-flex !default;
6
8
  $kbd-elevation: 1 !default;
@@ -108,7 +108,7 @@ export const VListItem = genericComponent()({
108
108
  const isLink = toRef(() => props.link !== false && link.isLink.value);
109
109
  const isSelectable = computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
110
110
  const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
111
- const role = computed(() => list ? isSelectable.value ? 'option' : 'listitem' : undefined);
111
+ const role = computed(() => list ? isLink.value ? 'link' : isSelectable.value ? 'option' : 'listitem' : undefined);
112
112
  const ariaSelected = computed(() => {
113
113
  if (!isSelectable.value) return undefined;
114
114
  return root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value;
@@ -1 +1 @@
1
- {"version":3,"file":"VListItem.js","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","vRipple","computed","onBeforeMount","toDisplayString","toRef","watch","deprecate","EventProp","genericComponent","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","Object","slim","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","activate","isActivated","select","isOpen","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","uid","list","isActive","activatable","isLink","isSelectable","selectable","isClickable","role","ariaSelected","roundedProps","rounded","color","variantProps","val","handleActiveLink","open","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","rippleOptions","filterable","keys","slotProps","includes","target","tagName","navigate","onKeyDown","key","preventDefault","stopPropagation","dispatchEvent","MouseEvent","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","_mergeProps","linkProps","class","style","_createElementVNode","_Fragment","density","image","icon","VListItemAction","start","end"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, onBeforeMount, toDisplayString, toRef, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type ListItemSlot = {\n index?: number\n depth?: number\n path?: number[]\n isFirst?: boolean\n isLast?: boolean\n isActive: boolean\n isOpen: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number | boolean\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number | boolean\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n slim: Boolean,\n subtitle: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n title: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n value: null,\n\n onClick: EventProp<[MouseEvent | KeyboardEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { vRipple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const {\n activate,\n isActivated,\n select,\n isOpen,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n parent,\n openOnSelect,\n id: uid,\n } = useNestedItem(id, () => props.disabled, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value))\n )\n const isLink = toRef(() => props.link !== false && link.isLink.value)\n const isSelectable = computed(() => (!!list && (root.selectable.value || root.activatable.value || props.value != null)))\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || isSelectable.value)\n )\n const role = computed(() => list ? (isSelectable.value ? 'option' : 'listitem') : undefined)\n const ariaSelected = computed(() => {\n if (!isSelectable.value) return undefined\n return root.activatable.value ? isActivated.value\n : root.selectable.value ? isSelected.value\n : isActive.value\n })\n\n const roundedProps = toRef(() => props.rounded || props.nav)\n const color = toRef(() => props.color ?? props.activeColor)\n const variantProps = toRef(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n // useNestedItem doesn't call register until beforeMount,\n // so this can't be an immediate watcher as we don't know parent yet\n watch(() => link.isActive?.value, val => {\n if (!val) return\n handleActiveLink()\n })\n onBeforeMount(() => {\n if (link.isActive?.value) handleActiveLink()\n })\n function handleActiveLink () {\n if (parent.value != null) {\n root.open(parent.value, true)\n }\n openOnSelect(true)\n }\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n const rippleOptions = toRef(() =>\n (\n props.ripple !== undefined &&\n !!props.ripple &&\n list?.filterable\n )\n ? { keys: ['Enter'] }\n : props.ripple\n )\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isOpen: isOpen.value,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n if (['INPUT', 'TEXTAREA'].includes((e.target as Element)?.tagName)) return\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n\n if (isGroupActivator) return\n\n if (root.activatable.value) {\n activate(!isActivated.value, e)\n } else if (root.selectable.value) {\n select(!isSelected.value, e)\n } else if (props.value != null && !isLink.value) {\n select(!isSelected.value, e)\n }\n }\n\n function onKeyDown (e: KeyboardEvent) {\n const target = e.target as HTMLElement\n\n if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return\n\n if (e.key === 'Enter' || (e.key === ' ' && !list?.filterable)) {\n e.preventDefault()\n e.stopPropagation()\n e.target!.dispatchEvent(new MouseEvent('click', e))\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title != null)\n const hasSubtitle = (slots.subtitle || props.subtitle != null)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n { ...link.linkProps }\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n 'v-list-item--slim': props.slim,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n aria-selected={ ariaSelected.value }\n role={ role.value }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && rippleOptions.value }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? toDisplayString(props.title) }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? toDisplayString(props.subtitle) }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n </Tag>\n )\n })\n\n return {\n activate,\n isActivated,\n isGroupActivator,\n isSelected,\n list,\n select,\n root,\n id: uid,\n link,\n }\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VListItem.js","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","vRipple","computed","onBeforeMount","toDisplayString","toRef","watch","deprecate","EventProp","genericComponent","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","Object","slim","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","activate","isActivated","select","isOpen","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","uid","list","isActive","activatable","isLink","isSelectable","selectable","isClickable","role","ariaSelected","roundedProps","rounded","color","variantProps","val","handleActiveLink","open","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","rippleOptions","filterable","keys","slotProps","includes","target","tagName","navigate","onKeyDown","key","preventDefault","stopPropagation","dispatchEvent","MouseEvent","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","_mergeProps","linkProps","class","style","_createElementVNode","_Fragment","density","image","icon","VListItemAction","start","end"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, onBeforeMount, toDisplayString, toRef, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type ListItemSlot = {\n index?: number\n depth?: number\n path?: number[]\n isFirst?: boolean\n isLast?: boolean\n isActive: boolean\n isOpen: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number | boolean\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number | boolean\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n slim: Boolean,\n subtitle: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n title: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n value: null,\n\n onClick: EventProp<[MouseEvent | KeyboardEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { vRipple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const {\n activate,\n isActivated,\n select,\n isOpen,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n parent,\n openOnSelect,\n id: uid,\n } = useNestedItem(id, () => props.disabled, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value))\n )\n const isLink = toRef(() => props.link !== false && link.isLink.value)\n const isSelectable = computed(() => (!!list && (root.selectable.value || root.activatable.value || props.value != null)))\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || isSelectable.value)\n )\n const role = computed(() => list ? (isLink.value ? 'link' : isSelectable.value ? 'option' : 'listitem') : undefined)\n const ariaSelected = computed(() => {\n if (!isSelectable.value) return undefined\n return root.activatable.value ? isActivated.value\n : root.selectable.value ? isSelected.value\n : isActive.value\n })\n\n const roundedProps = toRef(() => props.rounded || props.nav)\n const color = toRef(() => props.color ?? props.activeColor)\n const variantProps = toRef(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n // useNestedItem doesn't call register until beforeMount,\n // so this can't be an immediate watcher as we don't know parent yet\n watch(() => link.isActive?.value, val => {\n if (!val) return\n handleActiveLink()\n })\n onBeforeMount(() => {\n if (link.isActive?.value) handleActiveLink()\n })\n function handleActiveLink () {\n if (parent.value != null) {\n root.open(parent.value, true)\n }\n openOnSelect(true)\n }\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n const rippleOptions = toRef(() =>\n (\n props.ripple !== undefined &&\n !!props.ripple &&\n list?.filterable\n )\n ? { keys: ['Enter'] }\n : props.ripple\n )\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isOpen: isOpen.value,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n if (['INPUT', 'TEXTAREA'].includes((e.target as Element)?.tagName)) return\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n\n if (isGroupActivator) return\n\n if (root.activatable.value) {\n activate(!isActivated.value, e)\n } else if (root.selectable.value) {\n select(!isSelected.value, e)\n } else if (props.value != null && !isLink.value) {\n select(!isSelected.value, e)\n }\n }\n\n function onKeyDown (e: KeyboardEvent) {\n const target = e.target as HTMLElement\n\n if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return\n\n if (e.key === 'Enter' || (e.key === ' ' && !list?.filterable)) {\n e.preventDefault()\n e.stopPropagation()\n e.target!.dispatchEvent(new MouseEvent('click', e))\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title != null)\n const hasSubtitle = (slots.subtitle || props.subtitle != null)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n { ...link.linkProps }\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n 'v-list-item--slim': props.slim,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n aria-selected={ ariaSelected.value }\n role={ role.value }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && rippleOptions.value }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? toDisplayString(props.title) }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? toDisplayString(props.subtitle) }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n </Tag>\n )\n })\n\n return {\n activate,\n isActivated,\n isGroupActivator,\n isSelected,\n list,\n select,\n root,\n id: uid,\n link,\n }\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
1
+ import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VTable.css";
4
4
 
@@ -8,7 +8,6 @@ import { makeDensityProps, useDensity } from "../../composables/density.js";
8
8
  import { makeTagProps } from "../../composables/tag.js";
9
9
  import { makeThemeProps, provideTheme } from "../../composables/theme.js"; // Utilities
10
10
  import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
11
- import { VDefaultsProvider } from "../VDefaultsProvider/index.js";
12
11
  export const makeVTableProps = propsFactory({
13
12
  fixedHeader: Boolean,
14
13
  fixedFooter: Boolean,
@@ -38,37 +37,26 @@ export const VTable = genericComponent()({
38
37
  const {
39
38
  densityClasses
40
39
  } = useDensity(props);
41
- useRender(() => {
42
- const tableContentDefaults = {
43
- VCheckboxBtn: {
44
- density: props.density
40
+ useRender(() => _createVNode(props.tag, {
41
+ "class": _normalizeClass(['v-table', {
42
+ 'v-table--fixed-height': !!props.height,
43
+ 'v-table--fixed-header': props.fixedHeader,
44
+ 'v-table--fixed-footer': props.fixedFooter,
45
+ 'v-table--has-top': !!slots.top,
46
+ 'v-table--has-bottom': !!slots.bottom,
47
+ 'v-table--hover': props.hover,
48
+ 'v-table--striped-even': props.striped === 'even',
49
+ 'v-table--striped-odd': props.striped === 'odd'
50
+ }, themeClasses.value, densityClasses.value, props.class]),
51
+ "style": _normalizeStyle(props.style)
52
+ }, {
53
+ default: () => [slots.top?.(), slots.default ? _createElementVNode("div", {
54
+ "class": "v-table__wrapper",
55
+ "style": {
56
+ height: convertToUnit(props.height)
45
57
  }
46
- };
47
- return _createVNode(props.tag, {
48
- "class": _normalizeClass(['v-table', {
49
- 'v-table--fixed-height': !!props.height,
50
- 'v-table--fixed-header': props.fixedHeader,
51
- 'v-table--fixed-footer': props.fixedFooter,
52
- 'v-table--has-top': !!slots.top,
53
- 'v-table--has-bottom': !!slots.bottom,
54
- 'v-table--hover': props.hover,
55
- 'v-table--striped-even': props.striped === 'even',
56
- 'v-table--striped-odd': props.striped === 'odd'
57
- }, themeClasses.value, densityClasses.value, props.class]),
58
- "style": _normalizeStyle(props.style)
59
- }, {
60
- default: () => [slots.top?.(), _createVNode(VDefaultsProvider, {
61
- "defaults": tableContentDefaults
62
- }, {
63
- default: () => [slots.default ? _createElementVNode("div", {
64
- "class": "v-table__wrapper",
65
- "style": {
66
- height: convertToUnit(props.height)
67
- }
68
- }, [_createElementVNode("table", null, [slots.default()])]) : slots.wrapper?.()]
69
- }), slots.bottom?.()]
70
- });
71
- });
58
+ }, [_createElementVNode("table", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]
59
+ }));
72
60
  return {};
73
61
  }
74
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VTable.js","names":["makeComponentProps","makeDensityProps","useDensity","makeTagProps","makeThemeProps","provideTheme","convertToUnit","genericComponent","propsFactory","useRender","VDefaultsProvider","makeVTableProps","fixedHeader","Boolean","fixedFooter","height","Number","String","hover","striped","type","default","validator","v","includes","VTable","name","props","setup","_ref","slots","emit","themeClasses","densityClasses","tableContentDefaults","VCheckboxBtn","density","_createVNode","tag","_normalizeClass","top","bottom","value","class","_normalizeStyle","style","_createElementVNode","wrapper"],"sources":["../../../src/components/VTable/VTable.tsx"],"sourcesContent":["// Styles\nimport './VTable.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VDefaultsProvider } from '../VDefaultsProvider'\n\nexport type VTableSlots = {\n default: never\n top: never\n bottom: never\n wrapper: never\n}\n\nexport type Striped = null | 'odd' | 'even'\n\nexport const makeVTableProps = propsFactory({\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n hover: Boolean,\n striped: {\n type: String as PropType<Striped>,\n default: null,\n validator: (v: any) => ['even', 'odd'].includes(v),\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VTable')\n\nexport const VTable = genericComponent<VTableSlots>()({\n name: 'VTable',\n\n props: makeVTableProps(),\n\n setup (props, { slots, emit }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n useRender(() => {\n const tableContentDefaults = {\n VCheckboxBtn: {\n density: props.density,\n },\n }\n\n return (\n <props.tag\n class={[\n 'v-table',\n {\n 'v-table--fixed-height': !!props.height,\n 'v-table--fixed-header': props.fixedHeader,\n 'v-table--fixed-footer': props.fixedFooter,\n 'v-table--has-top': !!slots.top,\n 'v-table--has-bottom': !!slots.bottom,\n 'v-table--hover': props.hover,\n 'v-table--striped-even': props.striped === 'even',\n 'v-table--striped-odd': props.striped === 'odd',\n },\n themeClasses.value,\n densityClasses.value,\n props.class,\n ]}\n style={ props.style }\n >\n { slots.top?.() }\n <VDefaultsProvider defaults={ tableContentDefaults }>\n { slots.default ? (\n <div\n class=\"v-table__wrapper\"\n style={{ height: convertToUnit(props.height) }}\n >\n <table>\n { slots.default() }\n </table>\n </div>\n ) : slots.wrapper?.()}\n </VDefaultsProvider>\n\n { slots.bottom?.() }\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VTable = InstanceType<typeof VTable>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY,sCAErC;AAAA,SACSC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,+BAEjE;AAAA,SAESC,iBAAiB;AAW1B,OAAO,MAAMC,eAAe,GAAGH,YAAY,CAAC;EAC1CI,WAAW,EAAEC,OAAO;EACpBC,WAAW,EAAED,OAAO;EACpBE,MAAM,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;EACxBC,KAAK,EAAEL,OAAO;EACdM,OAAO,EAAE;IACPC,IAAI,EAAEH,MAA2B;IACjCI,OAAO,EAAE,IAAI;IACbC,SAAS,EAAGC,CAAM,IAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAACC,QAAQ,CAACD,CAAC;EACnD,CAAC;EAED,GAAGvB,kBAAkB,CAAC,CAAC;EACvB,GAAGC,gBAAgB,CAAC,CAAC;EACrB,GAAGE,YAAY,CAAC,CAAC;EACjB,GAAGC,cAAc,CAAC;AACpB,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,MAAMqB,MAAM,GAAGlB,gBAAgB,CAAc,CAAC,CAAC;EACpDmB,IAAI,EAAE,QAAQ;EAEdC,KAAK,EAAEhB,eAAe,CAAC,CAAC;EAExBiB,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG;IAAa,CAAC,GAAG3B,YAAY,CAACsB,KAAK,CAAC;IAC5C,MAAM;MAAEM;IAAe,CAAC,GAAG/B,UAAU,CAACyB,KAAK,CAAC;IAE5ClB,SAAS,CAAC,MAAM;MACd,MAAMyB,oBAAoB,GAAG;QAC3BC,YAAY,EAAE;UACZC,OAAO,EAAET,KAAK,CAACS;QACjB;MACF,CAAC;MAED,OAAAC,YAAA,CAAAV,KAAA,CAAAW,GAAA;QAAA,SAAAC,eAAA,CAEW,CACL,SAAS,EACT;UACE,uBAAuB,EAAE,CAAC,CAACZ,KAAK,CAACZ,MAAM;UACvC,uBAAuB,EAAEY,KAAK,CAACf,WAAW;UAC1C,uBAAuB,EAAEe,KAAK,CAACb,WAAW;UAC1C,kBAAkB,EAAE,CAAC,CAACgB,KAAK,CAACU,GAAG;UAC/B,qBAAqB,EAAE,CAAC,CAACV,KAAK,CAACW,MAAM;UACrC,gBAAgB,EAAEd,KAAK,CAACT,KAAK;UAC7B,uBAAuB,EAAES,KAAK,CAACR,OAAO,KAAK,MAAM;UACjD,sBAAsB,EAAEQ,KAAK,CAACR,OAAO,KAAK;QAC5C,CAAC,EACDa,YAAY,CAACU,KAAK,EAClBT,cAAc,CAACS,KAAK,EACpBf,KAAK,CAACgB,KAAK,CACZ;QAAA,SAAAC,eAAA,CACOjB,KAAK,CAACkB,KAAK;MAAA;QAAAxB,OAAA,EAAAA,CAAA,MAEjBS,KAAK,CAACU,GAAG,GAAG,CAAC,EAAAH,YAAA,CAAA3B,iBAAA;UAAA,YACewB;QAAoB;UAAAb,OAAA,EAAAA,CAAA,MAC9CS,KAAK,CAACT,OAAO,GAAAyB,mBAAA;YAAA;YAAA,SAGJ;cAAE/B,MAAM,EAAET,aAAa,CAACqB,KAAK,CAACZ,MAAM;YAAE;UAAC,IAAA+B,mBAAA,iBAG1ChB,KAAK,CAACT,OAAO,CAAC,CAAC,OAGnBS,KAAK,CAACiB,OAAO,GAAG,CAAC;QAAA,IAGrBjB,KAAK,CAACW,MAAM,GAAG,CAAC;MAAA;IAGxB,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"VTable.js","names":["makeComponentProps","makeDensityProps","useDensity","makeTagProps","makeThemeProps","provideTheme","convertToUnit","genericComponent","propsFactory","useRender","makeVTableProps","fixedHeader","Boolean","fixedFooter","height","Number","String","hover","striped","type","default","validator","v","includes","VTable","name","props","setup","_ref","slots","emit","themeClasses","densityClasses","_createVNode","tag","_normalizeClass","top","bottom","value","class","_normalizeStyle","style","_createElementVNode","wrapper"],"sources":["../../../src/components/VTable/VTable.tsx"],"sourcesContent":["// Styles\nimport './VTable.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VTableSlots = {\n default: never\n top: never\n bottom: never\n wrapper: never\n}\n\nexport type Striped = null | 'odd' | 'even'\n\nexport const makeVTableProps = propsFactory({\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n hover: Boolean,\n striped: {\n type: String as PropType<Striped>,\n default: null,\n validator: (v: any) => ['even', 'odd'].includes(v),\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VTable')\n\nexport const VTable = genericComponent<VTableSlots>()({\n name: 'VTable',\n\n props: makeVTableProps(),\n\n setup (props, { slots, emit }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n useRender(() => (\n <props.tag\n class={[\n 'v-table',\n {\n 'v-table--fixed-height': !!props.height,\n 'v-table--fixed-header': props.fixedHeader,\n 'v-table--fixed-footer': props.fixedFooter,\n 'v-table--has-top': !!slots.top,\n 'v-table--has-bottom': !!slots.bottom,\n 'v-table--hover': props.hover,\n 'v-table--striped-even': props.striped === 'even',\n 'v-table--striped-odd': props.striped === 'odd',\n },\n themeClasses.value,\n densityClasses.value,\n props.class,\n ]}\n style={ props.style }\n >\n { slots.top?.() }\n\n { slots.default ? (\n <div\n class=\"v-table__wrapper\"\n style={{ height: convertToUnit(props.height) }}\n >\n <table>\n { slots.default() }\n </table>\n </div>\n ) : slots.wrapper?.()}\n\n { slots.bottom?.() }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VTable = InstanceType<typeof VTable>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY,sCAErC;AAAA,SACSC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,+BAEjE;AAYA,OAAO,MAAMC,eAAe,GAAGF,YAAY,CAAC;EAC1CG,WAAW,EAAEC,OAAO;EACpBC,WAAW,EAAED,OAAO;EACpBE,MAAM,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;EACxBC,KAAK,EAAEL,OAAO;EACdM,OAAO,EAAE;IACPC,IAAI,EAAEH,MAA2B;IACjCI,OAAO,EAAE,IAAI;IACbC,SAAS,EAAGC,CAAM,IAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAACC,QAAQ,CAACD,CAAC;EACnD,CAAC;EAED,GAAGtB,kBAAkB,CAAC,CAAC;EACvB,GAAGC,gBAAgB,CAAC,CAAC;EACrB,GAAGE,YAAY,CAAC,CAAC;EACjB,GAAGC,cAAc,CAAC;AACpB,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,MAAMoB,MAAM,GAAGjB,gBAAgB,CAAc,CAAC,CAAC;EACpDkB,IAAI,EAAE,QAAQ;EAEdC,KAAK,EAAEhB,eAAe,CAAC,CAAC;EAExBiB,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG;IAAa,CAAC,GAAG1B,YAAY,CAACqB,KAAK,CAAC;IAC5C,MAAM;MAAEM;IAAe,CAAC,GAAG9B,UAAU,CAACwB,KAAK,CAAC;IAE5CjB,SAAS,CAAC,MAAAwB,YAAA,CAAAP,KAAA,CAAAQ,GAAA;MAAA,SAAAC,eAAA,CAEC,CACL,SAAS,EACT;QACE,uBAAuB,EAAE,CAAC,CAACT,KAAK,CAACZ,MAAM;QACvC,uBAAuB,EAAEY,KAAK,CAACf,WAAW;QAC1C,uBAAuB,EAAEe,KAAK,CAACb,WAAW;QAC1C,kBAAkB,EAAE,CAAC,CAACgB,KAAK,CAACO,GAAG;QAC/B,qBAAqB,EAAE,CAAC,CAACP,KAAK,CAACQ,MAAM;QACrC,gBAAgB,EAAEX,KAAK,CAACT,KAAK;QAC7B,uBAAuB,EAAES,KAAK,CAACR,OAAO,KAAK,MAAM;QACjD,sBAAsB,EAAEQ,KAAK,CAACR,OAAO,KAAK;MAC5C,CAAC,EACDa,YAAY,CAACO,KAAK,EAClBN,cAAc,CAACM,KAAK,EACpBZ,KAAK,CAACa,KAAK,CACZ;MAAA,SAAAC,eAAA,CACOd,KAAK,CAACe,KAAK;IAAA;MAAArB,OAAA,EAAAA,CAAA,MAEjBS,KAAK,CAACO,GAAG,GAAG,CAAC,EAEbP,KAAK,CAACT,OAAO,GAAAsB,mBAAA;QAAA;QAAA,SAGJ;UAAE5B,MAAM,EAAER,aAAa,CAACoB,KAAK,CAACZ,MAAM;QAAE;MAAC,IAAA4B,mBAAA,iBAG1Cb,KAAK,CAACT,OAAO,CAAC,CAAC,OAGnBS,KAAK,CAACc,OAAO,GAAG,CAAC,EAEnBd,KAAK,CAACQ,MAAM,GAAG,CAAC;IAAA,EAErB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
@@ -167,6 +167,7 @@ export const VTreeviewChildren = genericComponent()({
167
167
  ...itemProps,
168
168
  ...activatorProps,
169
169
  value: itemProps?.value,
170
+ indentLines: indentLines.node,
170
171
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
171
172
  onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
172
173
  };
@@ -180,7 +181,6 @@ export const VTreeviewChildren = genericComponent()({
180
181
  }, listItemProps, {
181
182
  "hasCustomPrepend": !!slots.prepend,
182
183
  "hideActions": props.hideActions,
183
- "indentLines": indentLines.node,
184
184
  "value": props.returnObject ? item.raw : itemProps.value,
185
185
  "loading": loading
186
186
  }), slotsWithItem));