@vuetify/nightly 3.2.0-next-20230114.0 → 4.0.0-next-20230205.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/CHANGELOG.md +203 -11
  2. package/dist/json/importMap-labs.json +8 -4
  3. package/dist/json/importMap.json +12 -12
  4. package/dist/vuetify-labs.css +173 -165
  5. package/dist/vuetify-labs.d.ts +399 -176
  6. package/dist/vuetify-labs.esm.js +362 -278
  7. package/dist/vuetify-labs.esm.js.map +1 -1
  8. package/dist/vuetify-labs.js +361 -277
  9. package/dist/vuetify-labs.min.css +2 -2
  10. package/dist/vuetify.css +53 -45
  11. package/dist/vuetify.d.ts +330 -179
  12. package/dist/vuetify.esm.js +329 -248
  13. package/dist/vuetify.esm.js.map +1 -1
  14. package/dist/vuetify.js +328 -247
  15. package/dist/vuetify.js.map +1 -1
  16. package/dist/vuetify.min.css +2 -2
  17. package/dist/vuetify.min.js +700 -689
  18. package/dist/vuetify.min.js.map +1 -1
  19. package/lib/blueprints/index.d.ts +2 -2
  20. package/lib/blueprints/md1.d.ts +2 -2
  21. package/lib/blueprints/md2.d.ts +2 -2
  22. package/lib/blueprints/md3.d.ts +2 -2
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs +3 -2
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  25. package/lib/components/VAutocomplete/index.d.ts +43 -20
  26. package/lib/components/VBottomSheet/VBottomSheet.mjs +1 -4
  27. package/lib/components/VBottomSheet/VBottomSheet.mjs.map +1 -1
  28. package/lib/components/VBtn/VBtn.css +7 -7
  29. package/lib/components/VBtn/VBtn.mjs +16 -5
  30. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  31. package/lib/components/VBtnGroup/VBtnGroup.mjs +15 -11
  32. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  33. package/lib/components/VBtnGroup/index.d.ts +2 -1
  34. package/lib/components/VBtnToggle/VBtnToggle.mjs +9 -5
  35. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  36. package/lib/components/VBtnToggle/index.d.ts +122 -1
  37. package/lib/components/VCalendar/VCalendar.mjs +3 -0
  38. package/lib/components/VCalendar/VCalendar.mjs.map +1 -1
  39. package/lib/components/VCalendar/VCalendarCategory.sass +9 -3
  40. package/lib/components/VCalendar/VCalendarDaily.mjs +20 -8
  41. package/lib/components/VCalendar/VCalendarDaily.mjs.map +1 -1
  42. package/lib/components/VCalendar/VCalendarWeekly.mjs +25 -5
  43. package/lib/components/VCalendar/VCalendarWeekly.mjs.map +1 -1
  44. package/lib/components/VCalendar/mixins/calendar-with-events.mjs +20 -16
  45. package/lib/components/VCalendar/mixins/calendar-with-events.mjs.map +1 -1
  46. package/lib/components/VCalendar/mixins/mouse.mjs +16 -30
  47. package/lib/components/VCalendar/mixins/mouse.mjs.map +1 -1
  48. package/lib/components/VCard/VCard.css +7 -7
  49. package/lib/components/VChip/VChip.css +7 -7
  50. package/lib/components/VCombobox/VCombobox.mjs +4 -4
  51. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  52. package/lib/components/VCombobox/index.d.ts +43 -20
  53. package/lib/components/VData/VData.mjs +2 -4
  54. package/lib/components/VData/VData.mjs.map +1 -1
  55. package/lib/components/VDatePicker/VDatePicker.mjs +7 -5
  56. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  57. package/lib/components/VDefaultsProvider/index.d.ts +5 -4
  58. package/lib/components/VDialog/VDialog.mjs +6 -5
  59. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  60. package/lib/components/VDialog/index.d.ts +57 -34
  61. package/lib/components/VDivider/VDivider.mjs +6 -6
  62. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  63. package/lib/components/VExpansionPanel/VExpansionPanel.css +7 -7
  64. package/lib/components/VField/VField.css +2 -2
  65. package/lib/components/VField/VField.mjs +28 -26
  66. package/lib/components/VField/VField.mjs.map +1 -1
  67. package/lib/components/VField/VField.sass +2 -2
  68. package/lib/components/VFileInput/VFileInput.css +1 -0
  69. package/lib/components/VFileInput/VFileInput.mjs +7 -4
  70. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  71. package/lib/components/VFileInput/VFileInput.sass +1 -0
  72. package/lib/components/VForm/index.d.ts +0 -3
  73. package/lib/components/VList/VList.mjs +4 -1
  74. package/lib/components/VList/VList.mjs.map +1 -1
  75. package/lib/components/VList/VListItem.css +8 -8
  76. package/lib/components/VList/VListItem.mjs +29 -19
  77. package/lib/components/VList/VListItem.mjs.map +1 -1
  78. package/lib/components/VList/VListItem.sass +1 -1
  79. package/lib/components/VMenu/VMenu.mjs +6 -5
  80. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  81. package/lib/components/VMenu/index.d.ts +57 -34
  82. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +4 -0
  83. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
  84. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  85. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +4 -0
  86. package/lib/components/VNavigationDrawer/index.d.ts +3 -3
  87. package/lib/components/VNavigationDrawer/touch.mjs +7 -6
  88. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  89. package/lib/components/VOtpInput/VOtpInput.mjs +22 -46
  90. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  91. package/lib/components/VOverflowBtn/VOverflowBtn.mjs +3 -0
  92. package/lib/components/VOverflowBtn/VOverflowBtn.mjs.map +1 -1
  93. package/lib/components/VOverlay/index.d.ts +34 -11
  94. package/lib/components/VOverlay/locationStrategies.mjs +40 -29
  95. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  96. package/lib/components/VOverlay/scrollStrategies.mjs +25 -16
  97. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  98. package/lib/components/VPagination/VPagination.mjs +1 -1
  99. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  100. package/lib/components/VProgressLinear/VProgressLinear.mjs +13 -1
  101. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  102. package/lib/components/VProgressLinear/index.d.ts +18 -0
  103. package/lib/components/VSelect/VSelect.mjs +3 -4
  104. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  105. package/lib/components/VSelect/index.d.ts +43 -20
  106. package/lib/components/VSelectionControl/VSelectionControl.css +2 -2
  107. package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +1 -1
  108. package/lib/components/VSnackbar/index.d.ts +42 -19
  109. package/lib/components/VStepper/VStepper.sass +6 -6
  110. package/lib/components/VStepper/VStepperStep.mjs +12 -2
  111. package/lib/components/VStepper/VStepperStep.mjs.map +1 -1
  112. package/lib/components/VTable/VTable.css +4 -4
  113. package/lib/components/VTable/VTable.sass +2 -2
  114. package/lib/components/VTimePicker/VTimePicker.mjs.map +1 -1
  115. package/lib/components/VTimeline/_mixins.sass +1 -1
  116. package/lib/components/VTooltip/VTooltip.mjs +4 -3
  117. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  118. package/lib/components/VTooltip/index.d.ts +57 -34
  119. package/lib/components/VTreeview/VTreeview.mjs +1 -1
  120. package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
  121. package/lib/components/index.d.ts +328 -176
  122. package/lib/composables/defaults.mjs +1 -1
  123. package/lib/composables/defaults.mjs.map +1 -1
  124. package/lib/composables/filter.mjs +3 -3
  125. package/lib/composables/filter.mjs.map +1 -1
  126. package/lib/composables/form.mjs +0 -1
  127. package/lib/composables/form.mjs.map +1 -1
  128. package/lib/composables/toggleScope.mjs +14 -7
  129. package/lib/composables/toggleScope.mjs.map +1 -1
  130. package/lib/directives/ripple/VRipple.css +3 -0
  131. package/lib/directives/ripple/VRipple.sass +3 -0
  132. package/lib/directives/ripple/_variables.scss +1 -1
  133. package/lib/directives/ripple/index.mjs +2 -7
  134. package/lib/directives/ripple/index.mjs.map +1 -1
  135. package/lib/entry-bundler.mjs +1 -1
  136. package/lib/framework.mjs +1 -1
  137. package/lib/index.d.ts +5 -5
  138. package/lib/labs/VDataTable/VDataTable.mjs +6 -6
  139. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  140. package/lib/labs/VDataTable/VDataTableFooter.mjs +1 -1
  141. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  142. package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
  143. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  144. package/lib/labs/VDataTable/VDataTableServer.mjs +19 -12
  145. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  146. package/lib/labs/VDataTable/VDataTableVirtual.mjs +6 -5
  147. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  148. package/lib/labs/VDataTable/composables/options.mjs +3 -7
  149. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  150. package/lib/labs/VDataTable/composables/paginate.mjs +1 -1
  151. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  152. package/lib/labs/VDataTable/index.d.ts +71 -1
  153. package/lib/labs/VDataTable/index.mjs +1 -0
  154. package/lib/labs/VDataTable/index.mjs.map +1 -1
  155. package/lib/labs/components.d.ts +71 -1
  156. package/lib/locale/adapters/vue-i18n.mjs +12 -2
  157. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  158. package/lib/locale/ar.mjs +20 -20
  159. package/lib/locale/ar.mjs.map +1 -1
  160. package/lib/locale/en.mjs +2 -2
  161. package/lib/locale/en.mjs.map +1 -1
  162. package/lib/locale/es.mjs +3 -3
  163. package/lib/locale/es.mjs.map +1 -1
  164. package/lib/locale/fi.mjs +5 -5
  165. package/lib/locale/fi.mjs.map +1 -1
  166. package/lib/locale/it.mjs +6 -6
  167. package/lib/locale/it.mjs.map +1 -1
  168. package/lib/locale/sv.mjs +13 -13
  169. package/lib/locale/sv.mjs.map +1 -1
  170. package/lib/styles/settings/_variables.scss +6 -6
  171. package/lib/styles/tools/_states.sass +3 -3
  172. package/lib/util/defineComponent.mjs +21 -18
  173. package/lib/util/defineComponent.mjs.map +1 -1
  174. package/lib/util/helpers.mjs +5 -19
  175. package/lib/util/helpers.mjs.map +1 -1
  176. package/package.json +1 -1
@@ -3,7 +3,7 @@ import { computed, inject, provide, ref, unref } from 'vue';
3
3
  import { mergeDeep } from "../util/index.mjs"; // Types
4
4
  export const DefaultsSymbol = Symbol.for('vuetify:defaults');
5
5
  export function createDefaults(options) {
6
- return ref(options ?? {});
6
+ return ref(options);
7
7
  }
8
8
  export function useDefaults() {
9
9
  const defaults = inject(DefaultsSymbol);
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.mjs","names":["computed","inject","provide","ref","unref","mergeDeep","DefaultsSymbol","Symbol","for","createDefaults","options","useDefaults","defaults","Error","provideDefaults","injectedDefaults","providedDefaults","newDefaults","scoped","reset","root","properties","value","prev","len","Number","Infinity","i"],"sources":["../../src/composables/defaults.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, unref } from 'vue'\nimport { mergeDeep } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, Ref } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport interface DefaultsInstance {\n [key: string]: undefined | Record<string, unknown>\n global?: Record<string, unknown>\n}\n\nexport type DefaultsOptions = Partial<DefaultsInstance>\n\nexport const DefaultsSymbol: InjectionKey<Ref<DefaultsInstance>> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref<DefaultsInstance> {\n return ref(options ?? {})\n}\n\nexport function useDefaults () {\n const defaults = inject(DefaultsSymbol)\n\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance')\n\n return defaults\n}\n\nexport function provideDefaults (\n defaults?: MaybeRef<DefaultsInstance | undefined>,\n options?: {\n reset?: MaybeRef<number | string | undefined>\n root?: MaybeRef<boolean | undefined>\n scoped?: MaybeRef<boolean | undefined>\n }\n) {\n const injectedDefaults = useDefaults()\n const providedDefaults = ref(defaults)\n\n const newDefaults = computed(() => {\n const scoped = unref(options?.scoped)\n const reset = unref(options?.reset)\n const root = unref(options?.root)\n\n let properties = mergeDeep(providedDefaults.value, { prev: injectedDefaults.value })\n\n if (scoped) return properties\n\n if (reset || root) {\n const len = Number(reset || Infinity)\n\n for (let i = 0; i <= len; i++) {\n if (!properties.prev) break\n\n properties = properties.prev\n }\n\n return properties\n }\n\n return mergeDeep(properties.prev, properties)\n }) as ComputedRef<DefaultsInstance>\n\n provide(DefaultsSymbol, newDefaults)\n\n return newDefaults\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,OAAO,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAClDC,SAAS,6BAElB;AAWA,OAAO,MAAMC,cAAmD,GAAGC,MAAM,CAACC,GAAG,CAAC,kBAAkB,CAAC;AAEjG,OAAO,SAASC,cAAc,CAAEC,OAA0B,EAAyB;EACjF,OAAOP,GAAG,CAACO,OAAO,IAAI,CAAC,CAAC,CAAC;AAC3B;AAEA,OAAO,SAASC,WAAW,GAAI;EAC7B,MAAMC,QAAQ,GAAGX,MAAM,CAACK,cAAc,CAAC;EAEvC,IAAI,CAACM,QAAQ,EAAE,MAAM,IAAIC,KAAK,CAAC,4CAA4C,CAAC;EAE5E,OAAOD,QAAQ;AACjB;AAEA,OAAO,SAASE,eAAe,CAC7BF,QAAiD,EACjDF,OAIC,EACD;EACA,MAAMK,gBAAgB,GAAGJ,WAAW,EAAE;EACtC,MAAMK,gBAAgB,GAAGb,GAAG,CAACS,QAAQ,CAAC;EAEtC,MAAMK,WAAW,GAAGjB,QAAQ,CAAC,MAAM;IACjC,MAAMkB,MAAM,GAAGd,KAAK,CAACM,OAAO,oBAAPA,OAAO,CAAEQ,MAAM,CAAC;IACrC,MAAMC,KAAK,GAAGf,KAAK,CAACM,OAAO,oBAAPA,OAAO,CAAES,KAAK,CAAC;IACnC,MAAMC,IAAI,GAAGhB,KAAK,CAACM,OAAO,oBAAPA,OAAO,CAAEU,IAAI,CAAC;IAEjC,IAAIC,UAAU,GAAGhB,SAAS,CAACW,gBAAgB,CAACM,KAAK,EAAE;MAAEC,IAAI,EAAER,gBAAgB,CAACO;IAAM,CAAC,CAAC;IAEpF,IAAIJ,MAAM,EAAE,OAAOG,UAAU;IAE7B,IAAIF,KAAK,IAAIC,IAAI,EAAE;MACjB,MAAMI,GAAG,GAAGC,MAAM,CAACN,KAAK,IAAIO,QAAQ,CAAC;MAErC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIH,GAAG,EAAEG,CAAC,EAAE,EAAE;QAC7B,IAAI,CAACN,UAAU,CAACE,IAAI,EAAE;QAEtBF,UAAU,GAAGA,UAAU,CAACE,IAAI;MAC9B;MAEA,OAAOF,UAAU;IACnB;IAEA,OAAOhB,SAAS,CAACgB,UAAU,CAACE,IAAI,EAAEF,UAAU,CAAC;EAC/C,CAAC,CAAkC;EAEnCnB,OAAO,CAACI,cAAc,EAAEW,WAAW,CAAC;EAEpC,OAAOA,WAAW;AACpB"}
1
+ {"version":3,"file":"defaults.mjs","names":["computed","inject","provide","ref","unref","mergeDeep","DefaultsSymbol","Symbol","for","createDefaults","options","useDefaults","defaults","Error","provideDefaults","injectedDefaults","providedDefaults","newDefaults","scoped","reset","root","properties","value","prev","len","Number","Infinity","i"],"sources":["../../src/composables/defaults.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, unref } from 'vue'\nimport { mergeDeep } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, Ref } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type DefaultsInstance = undefined | {\n [key: string]: undefined | Record<string, unknown>\n global?: Record<string, unknown>\n}\n\nexport type DefaultsOptions = Partial<DefaultsInstance>\n\nexport const DefaultsSymbol: InjectionKey<Ref<DefaultsInstance>> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref<DefaultsInstance> {\n return ref(options)\n}\n\nexport function useDefaults () {\n const defaults = inject(DefaultsSymbol)\n\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance')\n\n return defaults\n}\n\nexport function provideDefaults (\n defaults?: MaybeRef<DefaultsInstance | undefined>,\n options?: {\n reset?: MaybeRef<number | string | undefined>\n root?: MaybeRef<boolean | undefined>\n scoped?: MaybeRef<boolean | undefined>\n }\n) {\n const injectedDefaults = useDefaults()\n const providedDefaults = ref(defaults)\n\n const newDefaults = computed(() => {\n const scoped = unref(options?.scoped)\n const reset = unref(options?.reset)\n const root = unref(options?.root)\n\n let properties = mergeDeep(providedDefaults.value, { prev: injectedDefaults.value })\n\n if (scoped) return properties\n\n if (reset || root) {\n const len = Number(reset || Infinity)\n\n for (let i = 0; i <= len; i++) {\n if (!properties.prev) break\n\n properties = properties.prev\n }\n\n return properties\n }\n\n return mergeDeep(properties.prev, properties)\n }) as ComputedRef<DefaultsInstance>\n\n provide(DefaultsSymbol, newDefaults)\n\n return newDefaults\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,OAAO,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAClDC,SAAS,6BAElB;AAWA,OAAO,MAAMC,cAAmD,GAAGC,MAAM,CAACC,GAAG,CAAC,kBAAkB,CAAC;AAEjG,OAAO,SAASC,cAAc,CAAEC,OAA0B,EAAyB;EACjF,OAAOP,GAAG,CAACO,OAAO,CAAC;AACrB;AAEA,OAAO,SAASC,WAAW,GAAI;EAC7B,MAAMC,QAAQ,GAAGX,MAAM,CAACK,cAAc,CAAC;EAEvC,IAAI,CAACM,QAAQ,EAAE,MAAM,IAAIC,KAAK,CAAC,4CAA4C,CAAC;EAE5E,OAAOD,QAAQ;AACjB;AAEA,OAAO,SAASE,eAAe,CAC7BF,QAAiD,EACjDF,OAIC,EACD;EACA,MAAMK,gBAAgB,GAAGJ,WAAW,EAAE;EACtC,MAAMK,gBAAgB,GAAGb,GAAG,CAACS,QAAQ,CAAC;EAEtC,MAAMK,WAAW,GAAGjB,QAAQ,CAAC,MAAM;IACjC,MAAMkB,MAAM,GAAGd,KAAK,CAACM,OAAO,oBAAPA,OAAO,CAAEQ,MAAM,CAAC;IACrC,MAAMC,KAAK,GAAGf,KAAK,CAACM,OAAO,oBAAPA,OAAO,CAAES,KAAK,CAAC;IACnC,MAAMC,IAAI,GAAGhB,KAAK,CAACM,OAAO,oBAAPA,OAAO,CAAEU,IAAI,CAAC;IAEjC,IAAIC,UAAU,GAAGhB,SAAS,CAACW,gBAAgB,CAACM,KAAK,EAAE;MAAEC,IAAI,EAAER,gBAAgB,CAACO;IAAM,CAAC,CAAC;IAEpF,IAAIJ,MAAM,EAAE,OAAOG,UAAU;IAE7B,IAAIF,KAAK,IAAIC,IAAI,EAAE;MACjB,MAAMI,GAAG,GAAGC,MAAM,CAACN,KAAK,IAAIO,QAAQ,CAAC;MAErC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIH,GAAG,EAAEG,CAAC,EAAE,EAAE;QAC7B,IAAI,CAACN,UAAU,CAACE,IAAI,EAAE;QAEtBF,UAAU,GAAGA,UAAU,CAACE,IAAI;MAC9B;MAEA,OAAOF,UAAU;IACnB;IAEA,OAAOhB,SAAS,CAACgB,UAAU,CAACE,IAAI,EAAEF,UAAU,CAAC;EAC/C,CAAC,CAAkC;EAEnCnB,OAAO,CAACI,cAAc,EAAEW,WAAW,CAAC;EAEpC,OAAOA,WAAW;AACpB"}
@@ -29,7 +29,7 @@ export function filterItems(items, query, options) {
29
29
  const customFiltersLength = Object.keys((options == null ? void 0 : options.customKeyFilter) ?? {}).length;
30
30
  if (!(items != null && items.length)) return array;
31
31
  loop: for (let i = 0; i < items.length; i++) {
32
- const item = items[i].raw;
32
+ const item = items[i];
33
33
  const customMatches = {};
34
34
  const defaultMatches = {};
35
35
  let match = -1;
@@ -69,7 +69,7 @@ export function filterItems(items, query, options) {
69
69
  }
70
70
  return array;
71
71
  }
72
- export function useFilter(props, items, query) {
72
+ export function useFilter(props, items, query, options) {
73
73
  const strQuery = computed(() => typeof (query == null ? void 0 : query.value) !== 'string' && typeof (query == null ? void 0 : query.value) !== 'number' ? '' : String(query.value));
74
74
  const filteredItems = ref([]);
75
75
  const filteredMatches = ref(new Map());
@@ -80,7 +80,7 @@ export function useFilter(props, items, query) {
80
80
  const results = filterItems(transformedItems, strQuery.value, {
81
81
  customKeyFilter: props.customKeyFilter,
82
82
  default: props.customFilter,
83
- filterKeys: props.filterKeys,
83
+ filterKeys: unref(options == null ? void 0 : options.filterKeys) ?? props.filterKeys,
84
84
  filterMode: props.filterMode,
85
85
  noFilter: props.noFilter
86
86
  });
@@ -1 +1 @@
1
- {"version":3,"file":"filter.mjs","names":["getPropertyFromItem","propsFactory","wrapInArray","computed","ref","unref","watchEffect","defaultFilter","value","query","item","toString","toLocaleLowerCase","indexOf","makeFilterProps","customFilter","Function","customKeyFilter","Object","filterKeys","Array","String","filterMode","type","default","noFilter","Boolean","filterItems","items","options","array","filter","keys","customFiltersLength","length","loop","i","raw","customMatches","defaultMatches","match","key","keyFilter","title","defaultMatchesLength","customMatchesLength","push","index","matches","useFilter","props","strQuery","filteredItems","filteredMatches","Map","transformedItems","results","forEach","set","getMatches","get"],"sources":["../../src/composables/filter.ts"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable no-labels */\n\n// Utilities\nimport { getPropertyFromItem, propsFactory, wrapInArray } from '@/util'\nimport { computed, ref, unref, watchEffect } from 'vue'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { MaybeRef } from '@/util'\nimport type { InternalItem } from './items'\n\n/**\n * - match without highlight\n * - single match (index), length already known\n * - single match (start, end)\n * - multiple matches (start, end), probably shouldn't overlap\n */\nexport type FilterMatch = boolean | number | [number, number] | [number, number][]\nexport type FilterFunction = (value: string, query: string, item?: any) => FilterMatch\nexport type FilterKeyFunctions = Record<string, FilterFunction>\nexport type FilterKeys = string | string[]\nexport type FilterMode = 'some' | 'every' | 'union' | 'intersection'\n\nexport interface FilterProps {\n customFilter?: FilterFunction\n customKeyFilter?: FilterKeyFunctions\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n}\n\n// Composables\nexport const defaultFilter: FilterFunction = (value, query, item) => {\n if (value == null || query == null) return -1\n\n return value.toString().toLocaleLowerCase().indexOf(query.toString().toLocaleLowerCase())\n}\n\nexport const makeFilterProps = propsFactory({\n customFilter: Function as PropType<FilterFunction>,\n customKeyFilter: Object as PropType<FilterKeyFunctions>,\n filterKeys: [Array, String] as PropType<FilterKeys>,\n filterMode: {\n type: String as PropType<FilterMode>,\n default: 'intersection',\n },\n noFilter: Boolean,\n}, 'filter')\n\nexport function filterItems (\n items: InternalItem[],\n query: string,\n options?: {\n customKeyFilter?: FilterKeyFunctions\n default?: FilterFunction\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n },\n) {\n const array: { index: number, matches: Record<string, FilterMatch> }[] = []\n // always ensure we fall back to a functioning filter\n const filter = options?.default ?? defaultFilter\n const keys = options?.filterKeys ? wrapInArray(options.filterKeys) : false\n const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length\n\n if (!items?.length) return array\n\n loop:\n for (let i = 0; i < items.length; i++) {\n const item = items[i].raw\n const customMatches: Record<string, FilterMatch> = {}\n const defaultMatches: Record<string, FilterMatch> = {}\n let match: FilterMatch = -1\n\n if (query && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(item)\n\n for (const key of filterKeys) {\n const value = getPropertyFromItem(item as any, key, item)\n const keyFilter = options?.customKeyFilter?.[key]\n\n match = keyFilter\n ? keyFilter(value, query, item)\n : filter(value, query, item)\n\n if (match !== -1 && match !== false) {\n if (keyFilter) customMatches[key] = match\n else defaultMatches[key] = match\n } else if (options?.filterMode === 'every') {\n continue loop\n }\n }\n } else {\n match = filter(item, query, item)\n if (match !== -1 && match !== false) {\n defaultMatches.title = match\n }\n }\n\n const defaultMatchesLength = Object.keys(defaultMatches).length\n const customMatchesLength = Object.keys(customMatches).length\n\n if (!defaultMatchesLength && !customMatchesLength) continue\n\n if (\n options?.filterMode === 'union' &&\n customMatchesLength !== customFiltersLength &&\n !defaultMatchesLength\n ) continue\n\n if (\n options?.filterMode === 'intersection' &&\n (\n customMatchesLength !== customFiltersLength ||\n !defaultMatchesLength\n )\n ) continue\n }\n\n array.push({ index: i, matches: { ...defaultMatches, ...customMatches } })\n }\n\n return array\n}\n\nexport function useFilter <T extends InternalItem> (\n props: FilterProps,\n items: MaybeRef<T[]>,\n query?: Ref<string | undefined>,\n) {\n const strQuery = computed(() => (\n typeof query?.value !== 'string' &&\n typeof query?.value !== 'number'\n ) ? '' : String(query.value))\n\n const filteredItems: Ref<T[]> = ref([])\n const filteredMatches: Ref<Map<unknown, Record<string, FilterMatch>>> = ref(new Map())\n\n watchEffect(() => {\n filteredItems.value = []\n filteredMatches.value = new Map()\n\n const transformedItems = unref(items)\n const results = filterItems(\n transformedItems,\n strQuery.value,\n {\n customKeyFilter: props.customKeyFilter,\n default: props.customFilter,\n filterKeys: props.filterKeys,\n filterMode: props.filterMode,\n noFilter: props.noFilter,\n },\n )\n\n results.forEach(({ index, matches }) => {\n const item = transformedItems[index]\n filteredItems.value.push(item)\n filteredMatches.value.set(item.value, matches)\n })\n })\n\n function getMatches (item: T) {\n return filteredMatches.value.get(item.value)\n }\n\n return { filteredItems, filteredMatches, getMatches }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"filter.mjs","names":["getPropertyFromItem","propsFactory","wrapInArray","computed","ref","unref","watchEffect","defaultFilter","value","query","item","toString","toLocaleLowerCase","indexOf","makeFilterProps","customFilter","Function","customKeyFilter","Object","filterKeys","Array","String","filterMode","type","default","noFilter","Boolean","filterItems","items","options","array","filter","keys","customFiltersLength","length","loop","i","customMatches","defaultMatches","match","key","keyFilter","title","defaultMatchesLength","customMatchesLength","push","index","matches","useFilter","props","strQuery","filteredItems","filteredMatches","Map","transformedItems","results","forEach","set","getMatches","get"],"sources":["../../src/composables/filter.ts"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable no-labels */\n\n// Utilities\nimport { getPropertyFromItem, propsFactory, wrapInArray } from '@/util'\nimport { computed, ref, unref, watchEffect } from 'vue'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { MaybeRef } from '@/util'\nimport type { InternalItem } from './items'\n\n/**\n * - match without highlight\n * - single match (index), length already known\n * - single match (start, end)\n * - multiple matches (start, end), probably shouldn't overlap\n */\nexport type FilterMatch = boolean | number | [number, number] | [number, number][]\nexport type FilterFunction = (value: string, query: string, item?: any) => FilterMatch\nexport type FilterKeyFunctions = Record<string, FilterFunction>\nexport type FilterKeys = string | string[]\nexport type FilterMode = 'some' | 'every' | 'union' | 'intersection'\n\nexport interface FilterProps {\n customFilter?: FilterFunction\n customKeyFilter?: FilterKeyFunctions\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n}\n\n// Composables\nexport const defaultFilter: FilterFunction = (value, query, item) => {\n if (value == null || query == null) return -1\n\n return value.toString().toLocaleLowerCase().indexOf(query.toString().toLocaleLowerCase())\n}\n\nexport const makeFilterProps = propsFactory({\n customFilter: Function as PropType<FilterFunction>,\n customKeyFilter: Object as PropType<FilterKeyFunctions>,\n filterKeys: [Array, String] as PropType<FilterKeys>,\n filterMode: {\n type: String as PropType<FilterMode>,\n default: 'intersection',\n },\n noFilter: Boolean,\n}, 'filter')\n\nexport function filterItems (\n items: InternalItem[],\n query: string,\n options?: {\n customKeyFilter?: FilterKeyFunctions\n default?: FilterFunction\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n },\n) {\n const array: { index: number, matches: Record<string, FilterMatch> }[] = []\n // always ensure we fall back to a functioning filter\n const filter = options?.default ?? defaultFilter\n const keys = options?.filterKeys ? wrapInArray(options.filterKeys) : false\n const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length\n\n if (!items?.length) return array\n\n loop:\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const customMatches: Record<string, FilterMatch> = {}\n const defaultMatches: Record<string, FilterMatch> = {}\n let match: FilterMatch = -1\n\n if (query && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(item)\n\n for (const key of filterKeys) {\n const value = getPropertyFromItem(item as any, key, item)\n const keyFilter = options?.customKeyFilter?.[key]\n\n match = keyFilter\n ? keyFilter(value, query, item)\n : filter(value, query, item)\n\n if (match !== -1 && match !== false) {\n if (keyFilter) customMatches[key] = match\n else defaultMatches[key] = match\n } else if (options?.filterMode === 'every') {\n continue loop\n }\n }\n } else {\n match = filter(item, query, item)\n if (match !== -1 && match !== false) {\n defaultMatches.title = match\n }\n }\n\n const defaultMatchesLength = Object.keys(defaultMatches).length\n const customMatchesLength = Object.keys(customMatches).length\n\n if (!defaultMatchesLength && !customMatchesLength) continue\n\n if (\n options?.filterMode === 'union' &&\n customMatchesLength !== customFiltersLength &&\n !defaultMatchesLength\n ) continue\n\n if (\n options?.filterMode === 'intersection' &&\n (\n customMatchesLength !== customFiltersLength ||\n !defaultMatchesLength\n )\n ) continue\n }\n\n array.push({ index: i, matches: { ...defaultMatches, ...customMatches } })\n }\n\n return array\n}\n\nexport function useFilter <T extends InternalItem> (\n props: FilterProps,\n items: MaybeRef<T[]>,\n query: Ref<string | undefined>,\n options?: {\n filterKeys?: MaybeRef<FilterKeys>\n }\n) {\n const strQuery = computed(() => (\n typeof query?.value !== 'string' &&\n typeof query?.value !== 'number'\n ) ? '' : String(query.value))\n\n const filteredItems: Ref<T[]> = ref([])\n const filteredMatches: Ref<Map<unknown, Record<string, FilterMatch>>> = ref(new Map())\n\n watchEffect(() => {\n filteredItems.value = []\n filteredMatches.value = new Map()\n\n const transformedItems = unref(items)\n const results = filterItems(\n transformedItems,\n strQuery.value,\n {\n customKeyFilter: props.customKeyFilter,\n default: props.customFilter,\n filterKeys: unref(options?.filterKeys) ?? props.filterKeys,\n filterMode: props.filterMode,\n noFilter: props.noFilter,\n },\n )\n\n results.forEach(({ index, matches }) => {\n const item = transformedItems[index]\n filteredItems.value.push(item)\n filteredMatches.value.set(item.value, matches)\n })\n })\n\n function getMatches (item: T) {\n return filteredMatches.value.get(item.value)\n }\n\n return { filteredItems, filteredMatches, getMatches }\n}\n"],"mappings":"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"}
@@ -6,7 +6,6 @@ export const FormKey = Symbol.for('vuetify:form');
6
6
  export const makeFormProps = propsFactory({
7
7
  disabled: Boolean,
8
8
  fastFail: Boolean,
9
- lazyValidation: Boolean,
10
9
  readonly: Boolean,
11
10
  modelValue: {
12
11
  type: Boolean,
@@ -1 +1 @@
1
- {"version":3,"file":"form.mjs","names":["computed","inject","provide","ref","toRef","watch","useProxiedModel","consoleWarn","propsFactory","FormKey","Symbol","for","makeFormProps","disabled","Boolean","fastFail","lazyValidation","readonly","modelValue","type","default","validateOn","String","createForm","props","model","isDisabled","isReadonly","isValidating","items","errors","validate","results","valid","value","item","itemErrorMessages","length","push","id","errorMessages","reset","forEach","resetValidation","invalid","isValid","deep","register","some","unregister","filter","update","found","find","useForm"],"sources":["../../src/composables/form.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, toRef, watch } from 'vue'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { ValidationProps } from './validation'\n\nexport interface FormProvide {\n register: (item: {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => void\n resetValidation: () => void\n }) => void\n unregister: (id: number | string) => void\n update: (id: number | string, isValid: boolean | null, errorMessages: string[]) => void\n items: Ref<FormField[]>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isValidating: Ref<boolean>\n validateOn: Ref<FormProps['validateOn']>\n}\n\ninterface FormField {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => void\n resetValidation: () => void\n isValid: boolean | null\n errorMessages: string[]\n}\n\ninterface FieldValidationResult {\n id: number | string\n errorMessages: string[]\n}\n\ninterface FormValidationResult {\n valid: boolean\n errors: FieldValidationResult[]\n}\n\nexport interface SubmitEventPromise extends SubmitEvent, Promise<FormValidationResult> {}\n\nexport const FormKey: InjectionKey<FormProvide> = Symbol.for('vuetify:form')\n\nexport interface FormProps {\n disabled: boolean\n fastFail: boolean\n readonly: boolean\n modelValue: boolean | null\n 'onUpdate:modelValue': ((val: boolean | null) => void) | undefined\n validateOn: ValidationProps['validateOn']\n}\n\nexport const makeFormProps = propsFactory({\n disabled: Boolean,\n fastFail: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n validateOn: {\n type: String as PropType<FormProps['validateOn']>,\n default: 'input',\n },\n}, 'form')\n\nexport function createForm (props: FormProps) {\n const model = useProxiedModel(props, 'modelValue')\n\n const isDisabled = computed(() => props.disabled)\n const isReadonly = computed(() => props.readonly)\n const isValidating = ref(false)\n const items = ref<FormField[]>([])\n const errors = ref<FieldValidationResult[]>([])\n\n async function validate () {\n const results = []\n let valid = true\n\n errors.value = []\n isValidating.value = true\n\n for (const item of items.value) {\n const itemErrorMessages = await item.validate()\n\n if (itemErrorMessages.length > 0) {\n valid = false\n\n results.push({\n id: item.id,\n errorMessages: itemErrorMessages,\n })\n }\n\n if (!valid && props.fastFail) break\n }\n\n errors.value = results\n isValidating.value = false\n\n return { valid, errors: errors.value }\n }\n\n function reset () {\n items.value.forEach(item => item.reset())\n model.value = null\n }\n\n function resetValidation () {\n items.value.forEach(item => item.resetValidation())\n errors.value = []\n model.value = null\n }\n\n watch(items, () => {\n let valid = 0\n let invalid = 0\n const results = []\n\n for (const item of items.value) {\n if (item.isValid === false) {\n invalid++\n results.push({\n id: item.id,\n errorMessages: item.errorMessages,\n })\n } else if (item.isValid === true) valid++\n }\n\n errors.value = results\n model.value =\n invalid > 0 ? false\n : valid === items.value.length ? true\n : null\n }, { deep: true })\n\n provide(FormKey, {\n register: ({ id, validate, reset, resetValidation }) => {\n if (items.value.some(item => item.id === id)) {\n consoleWarn(`Duplicate input name \"${id}\"`)\n }\n\n items.value.push({\n id,\n validate,\n reset,\n resetValidation,\n isValid: null,\n errorMessages: [],\n })\n },\n unregister: id => {\n items.value = items.value.filter(item => {\n return item.id !== id\n })\n },\n update: (id, isValid, errorMessages) => {\n const found = items.value.find(item => item.id === id)\n\n if (!found) return\n\n found.isValid = isValid\n found.errorMessages = errorMessages\n },\n isDisabled,\n isReadonly,\n isValidating,\n items,\n validateOn: toRef(props, 'validateOn'),\n })\n\n return {\n errors,\n isDisabled,\n isReadonly,\n isValidating,\n items,\n validate,\n reset,\n resetValidation,\n }\n}\n\nexport function useForm () {\n return inject(FormKey, null)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"form.mjs","names":["computed","inject","provide","ref","toRef","watch","useProxiedModel","consoleWarn","propsFactory","FormKey","Symbol","for","makeFormProps","disabled","Boolean","fastFail","readonly","modelValue","type","default","validateOn","String","createForm","props","model","isDisabled","isReadonly","isValidating","items","errors","validate","results","valid","value","item","itemErrorMessages","length","push","id","errorMessages","reset","forEach","resetValidation","invalid","isValid","deep","register","some","unregister","filter","update","found","find","useForm"],"sources":["../../src/composables/form.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, toRef, watch } from 'vue'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { ValidationProps } from './validation'\n\nexport interface FormProvide {\n register: (item: {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => void\n resetValidation: () => void\n }) => void\n unregister: (id: number | string) => void\n update: (id: number | string, isValid: boolean | null, errorMessages: string[]) => void\n items: Ref<FormField[]>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isValidating: Ref<boolean>\n validateOn: Ref<FormProps['validateOn']>\n}\n\ninterface FormField {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => void\n resetValidation: () => void\n isValid: boolean | null\n errorMessages: string[]\n}\n\ninterface FieldValidationResult {\n id: number | string\n errorMessages: string[]\n}\n\ninterface FormValidationResult {\n valid: boolean\n errors: FieldValidationResult[]\n}\n\nexport interface SubmitEventPromise extends SubmitEvent, Promise<FormValidationResult> {}\n\nexport const FormKey: InjectionKey<FormProvide> = Symbol.for('vuetify:form')\n\nexport interface FormProps {\n disabled: boolean\n fastFail: boolean\n readonly: boolean\n modelValue: boolean | null\n 'onUpdate:modelValue': ((val: boolean | null) => void) | undefined\n validateOn: ValidationProps['validateOn']\n}\n\nexport const makeFormProps = propsFactory({\n disabled: Boolean,\n fastFail: Boolean,\n readonly: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n validateOn: {\n type: String as PropType<FormProps['validateOn']>,\n default: 'input',\n },\n}, 'form')\n\nexport function createForm (props: FormProps) {\n const model = useProxiedModel(props, 'modelValue')\n\n const isDisabled = computed(() => props.disabled)\n const isReadonly = computed(() => props.readonly)\n const isValidating = ref(false)\n const items = ref<FormField[]>([])\n const errors = ref<FieldValidationResult[]>([])\n\n async function validate () {\n const results = []\n let valid = true\n\n errors.value = []\n isValidating.value = true\n\n for (const item of items.value) {\n const itemErrorMessages = await item.validate()\n\n if (itemErrorMessages.length > 0) {\n valid = false\n\n results.push({\n id: item.id,\n errorMessages: itemErrorMessages,\n })\n }\n\n if (!valid && props.fastFail) break\n }\n\n errors.value = results\n isValidating.value = false\n\n return { valid, errors: errors.value }\n }\n\n function reset () {\n items.value.forEach(item => item.reset())\n model.value = null\n }\n\n function resetValidation () {\n items.value.forEach(item => item.resetValidation())\n errors.value = []\n model.value = null\n }\n\n watch(items, () => {\n let valid = 0\n let invalid = 0\n const results = []\n\n for (const item of items.value) {\n if (item.isValid === false) {\n invalid++\n results.push({\n id: item.id,\n errorMessages: item.errorMessages,\n })\n } else if (item.isValid === true) valid++\n }\n\n errors.value = results\n model.value =\n invalid > 0 ? false\n : valid === items.value.length ? true\n : null\n }, { deep: true })\n\n provide(FormKey, {\n register: ({ id, validate, reset, resetValidation }) => {\n if (items.value.some(item => item.id === id)) {\n consoleWarn(`Duplicate input name \"${id}\"`)\n }\n\n items.value.push({\n id,\n validate,\n reset,\n resetValidation,\n isValid: null,\n errorMessages: [],\n })\n },\n unregister: id => {\n items.value = items.value.filter(item => {\n return item.id !== id\n })\n },\n update: (id, isValid, errorMessages) => {\n const found = items.value.find(item => item.id === id)\n\n if (!found) return\n\n found.isValid = isValid\n found.errorMessages = errorMessages\n },\n isDisabled,\n isReadonly,\n isValidating,\n items,\n validateOn: toRef(props, 'validateOn'),\n })\n\n return {\n errors,\n isDisabled,\n isReadonly,\n isValidating,\n items,\n validate,\n reset,\n resetValidation,\n }\n}\n\nexport function useForm () {\n return inject(FormKey, null)\n}\n"],"mappings":"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"}
@@ -1,21 +1,28 @@
1
1
  import { effectScope, onScopeDispose, watch } from 'vue';
2
- export function useToggleScope(source, cb) {
2
+ export function useToggleScope(source, fn) {
3
3
  let scope;
4
+ function start() {
5
+ scope = effectScope();
6
+ scope.run(() => fn.length ? fn(() => {
7
+ var _scope;
8
+ (_scope = scope) == null ? void 0 : _scope.stop();
9
+ start();
10
+ }) : fn());
11
+ }
4
12
  watch(source, active => {
5
13
  if (active && !scope) {
6
- scope = effectScope();
7
- scope.run(cb);
14
+ start();
8
15
  } else if (!active) {
9
- var _scope;
10
- (_scope = scope) == null ? void 0 : _scope.stop();
16
+ var _scope2;
17
+ (_scope2 = scope) == null ? void 0 : _scope2.stop();
11
18
  scope = undefined;
12
19
  }
13
20
  }, {
14
21
  immediate: true
15
22
  });
16
23
  onScopeDispose(() => {
17
- var _scope2;
18
- (_scope2 = scope) == null ? void 0 : _scope2.stop();
24
+ var _scope3;
25
+ (_scope3 = scope) == null ? void 0 : _scope3.stop();
19
26
  });
20
27
  }
21
28
  //# sourceMappingURL=toggleScope.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggleScope.mjs","names":["effectScope","onScopeDispose","watch","useToggleScope","source","cb","scope","active","run","stop","undefined","immediate"],"sources":["../../src/composables/toggleScope.ts"],"sourcesContent":["import { effectScope, onScopeDispose, watch } from 'vue'\nimport type { EffectScope, WatchSource } from 'vue'\n\nexport function useToggleScope (source: WatchSource<boolean>, cb: () => void) {\n let scope: EffectScope | undefined\n watch(source, active => {\n if (active && !scope) {\n scope = effectScope()\n scope.run(cb)\n } else if (!active) {\n scope?.stop()\n scope = undefined\n }\n }, { immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,cAAc,EAAEC,KAAK,QAAQ,KAAK;AAGxD,OAAO,SAASC,cAAc,CAAEC,MAA4B,EAAEC,EAAc,EAAE;EAC5E,IAAIC,KAA8B;EAClCJ,KAAK,CAACE,MAAM,EAAEG,MAAM,IAAI;IACtB,IAAIA,MAAM,IAAI,CAACD,KAAK,EAAE;MACpBA,KAAK,GAAGN,WAAW,EAAE;MACrBM,KAAK,CAACE,GAAG,CAACH,EAAE,CAAC;IACf,CAAC,MAAM,IAAI,CAACE,MAAM,EAAE;MAAA;MAClB,UAAAD,KAAK,qBAAL,OAAOG,IAAI,EAAE;MACbH,KAAK,GAAGI,SAAS;IACnB;EACF,CAAC,EAAE;IAAEC,SAAS,EAAE;EAAK,CAAC,CAAC;EAEvBV,cAAc,CAAC,MAAM;IAAA;IACnB,WAAAK,KAAK,qBAAL,QAAOG,IAAI,EAAE;EACf,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"toggleScope.mjs","names":["effectScope","onScopeDispose","watch","useToggleScope","source","fn","scope","start","run","length","stop","active","undefined","immediate"],"sources":["../../src/composables/toggleScope.ts"],"sourcesContent":["import { effectScope, onScopeDispose, watch } from 'vue'\nimport type { EffectScope, WatchSource } from 'vue'\n\nexport function useToggleScope (source: WatchSource<boolean>, fn: (reset: () => void) => void) {\n let scope: EffectScope | undefined\n function start () {\n scope = effectScope()\n scope.run(() => fn.length\n ? fn(() => { scope?.stop(); start() })\n : (fn as any)()\n )\n }\n\n watch(source, active => {\n if (active && !scope) {\n start()\n } else if (!active) {\n scope?.stop()\n scope = undefined\n }\n }, { immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,cAAc,EAAEC,KAAK,QAAQ,KAAK;AAGxD,OAAO,SAASC,cAAc,CAAEC,MAA4B,EAAEC,EAA+B,EAAE;EAC7F,IAAIC,KAA8B;EAClC,SAASC,KAAK,GAAI;IAChBD,KAAK,GAAGN,WAAW,EAAE;IACrBM,KAAK,CAACE,GAAG,CAAC,MAAMH,EAAE,CAACI,MAAM,GACrBJ,EAAE,CAAC,MAAM;MAAA;MAAE,UAAAC,KAAK,qBAAL,OAAOI,IAAI,EAAE;MAAEH,KAAK,EAAE;IAAC,CAAC,CAAC,GACnCF,EAAE,EAAU,CAChB;EACH;EAEAH,KAAK,CAACE,MAAM,EAAEO,MAAM,IAAI;IACtB,IAAIA,MAAM,IAAI,CAACL,KAAK,EAAE;MACpBC,KAAK,EAAE;IACT,CAAC,MAAM,IAAI,CAACI,MAAM,EAAE;MAAA;MAClB,WAAAL,KAAK,qBAAL,QAAOI,IAAI,EAAE;MACbJ,KAAK,GAAGM,SAAS;IACnB;EACF,CAAC,EAAE;IAAEC,SAAS,EAAE;EAAK,CAAC,CAAC;EAEvBZ,cAAc,CAAC,MAAM;IAAA;IACnB,WAAAK,KAAK,qBAAL,QAAOI,IAAI,EAAE;EACf,CAAC,CAAC;AACJ"}
@@ -25,10 +25,13 @@
25
25
  }
26
26
  .v-ripple__animation--enter {
27
27
  transition: none;
28
+ opacity: 0;
28
29
  }
29
30
  .v-ripple__animation--in {
30
31
  transition: transform 0.25s cubic-bezier(0, 0, 0.2, 1), opacity 0.1s cubic-bezier(0, 0, 0.2, 1);
32
+ opacity: calc(0.25 * var(--v-theme-overlay-multiplier));
31
33
  }
32
34
  .v-ripple__animation--out {
33
35
  transition: opacity 0.3s cubic-bezier(0, 0, 0.2, 1);
36
+ opacity: 0;
34
37
  }
@@ -28,9 +28,12 @@
28
28
 
29
29
  &--enter
30
30
  transition: none
31
+ opacity: 0
31
32
 
32
33
  &--in
33
34
  transition: $ripple-animation-transition-in
35
+ opacity: $ripple-animation-visible-opacity
34
36
 
35
37
  &--out
36
38
  transition: $ripple-animation-transition-out
39
+ opacity: 0
@@ -3,4 +3,4 @@
3
3
  $ripple-animation-transition-in: transform .25s settings.$decelerated-easing,
4
4
  opacity .1s settings.$decelerated-easing !default;
5
5
  $ripple-animation-transition-out: opacity .3s settings.$decelerated-easing !default;
6
- $ripple-animation-visible-opacity: .15 !default;
6
+ $ripple-animation-visible-opacity: calc(.25 * var(--v-theme-overlay-multiplier)) !default;
@@ -9,9 +9,6 @@ function transform(el, value) {
9
9
  el.style.transform = value;
10
10
  el.style.webkitTransform = value;
11
11
  }
12
- function opacity(el, value) {
13
- el.style.opacity = `calc(${value} * var(--v-theme-overlay-multiplier))`;
14
- }
15
12
  function isTouchEvent(e) {
16
13
  return e.constructor.name === 'TouchEvent';
17
14
  }
@@ -87,13 +84,11 @@ const ripples = {
87
84
  animation.classList.add('v-ripple__animation--enter');
88
85
  animation.classList.add('v-ripple__animation--visible');
89
86
  transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`);
90
- opacity(animation, 0);
91
87
  animation.dataset.activated = String(performance.now());
92
88
  setTimeout(() => {
93
89
  animation.classList.remove('v-ripple__animation--enter');
94
90
  animation.classList.add('v-ripple__animation--in');
95
91
  transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);
96
- opacity(animation, 0.08);
97
92
  }, 0);
98
93
  },
99
94
  hide(el) {
@@ -108,14 +103,14 @@ const ripples = {
108
103
  setTimeout(() => {
109
104
  animation.classList.remove('v-ripple__animation--in');
110
105
  animation.classList.add('v-ripple__animation--out');
111
- opacity(animation, 0);
112
106
  setTimeout(() => {
107
+ var _animation$parentNode;
113
108
  const ripples = el.getElementsByClassName('v-ripple__animation');
114
109
  if (ripples.length === 1 && el.dataset.previousPosition) {
115
110
  el.style.position = el.dataset.previousPosition;
116
111
  delete el.dataset.previousPosition;
117
112
  }
118
- animation.parentNode && el.removeChild(animation.parentNode);
113
+ if (((_animation$parentNode = animation.parentNode) == null ? void 0 : _animation$parentNode.parentNode) === el) el.removeChild(animation.parentNode);
119
114
  }, 300);
120
115
  }, delay);
121
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["isObject","keyCodes","stopSymbol","Symbol","DELAY_RIPPLE","transform","el","value","style","webkitTransform","opacity","isTouchEvent","e","constructor","name","isKeyboardEvent","calculate","localX","localY","offset","getBoundingClientRect","target","touches","length","clientX","left","clientY","top","radius","scale","_ripple","circle","clientWidth","center","Math","sqrt","clientHeight","centerX","centerY","x","y","ripples","show","enabled","container","document","createElement","animation","appendChild","className","class","size","width","height","computed","window","getComputedStyle","position","dataset","previousPosition","classList","add","activated","String","performance","now","setTimeout","remove","hide","getElementsByClassName","isHiding","diff","Number","delay","max","parentNode","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","isTouch","centered","showTimerCommit","showTimer","rippleStop","rippleHide","clearTimeout","type","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyCode","enter","space","keyboardRippleHide","focusRippleHide","updateRipple","binding","wasEnabled","modifiers","stop","addEventListener","passive","removeListeners","removeEventListener","mounted","unmounted","updated","oldValue","Ripple"],"sources":["../../../src/directives/ripple/index.ts"],"sourcesContent":["// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { isObject, keyCodes } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n} from 'vue'\n\nconst stopSymbol = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [stopSymbol]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nfunction opacity (el: HTMLElement, value: number) {\n el.style.opacity = `calc(${value} * var(--v-theme-overlay-multiplier))`\n}\n\ninterface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nexport interface RippleDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: boolean | { class: string }\n modifiers: {\n center?: boolean\n circle?: boolean\n stop?: boolean\n }\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple?.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el?._ripple?.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n opacity(animation, 0)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n opacity(animation, 0.08)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el?._ripple?.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n opacity(animation, 0)\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n animation.parentNode && el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple || element._ripple.touched || e[stopSymbol]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[stopSymbol] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element?._ripple?.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleStop (e: VuetifyRippleEvent) {\n e[stopSymbol] = true\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = window.setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: RippleDirectiveBinding, wasEnabled: boolean) {\n const { value, modifiers } = binding\n const enabled = isRippleEnabled(value)\n if (!enabled) {\n ripples.hide(el)\n }\n\n el._ripple = el._ripple ?? {}\n el._ripple.enabled = enabled\n el._ripple.centered = modifiers.center\n el._ripple.circle = modifiers.circle\n if (isObject(value) && value.class) {\n el._ripple.class = value.class\n }\n\n if (enabled && !wasEnabled) {\n if (modifiers.stop) {\n el.addEventListener('touchstart', rippleStop, { passive: true })\n el.addEventListener('mousedown', rippleStop)\n return\n }\n\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction mounted (el: HTMLElement, binding: RippleDirectiveBinding) {\n updateRipple(el, binding, false)\n}\n\nfunction unmounted (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction updated (el: HTMLElement, binding: RippleDirectiveBinding) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n mounted,\n unmounted,\n updated,\n}\n\nexport default Ripple\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["isObject","keyCodes","stopSymbol","Symbol","DELAY_RIPPLE","transform","el","value","style","webkitTransform","isTouchEvent","e","constructor","name","isKeyboardEvent","calculate","localX","localY","offset","getBoundingClientRect","target","touches","length","clientX","left","clientY","top","radius","scale","_ripple","circle","clientWidth","center","Math","sqrt","clientHeight","centerX","centerY","x","y","ripples","show","enabled","container","document","createElement","animation","appendChild","className","class","size","width","height","computed","window","getComputedStyle","position","dataset","previousPosition","classList","add","activated","String","performance","now","setTimeout","remove","hide","getElementsByClassName","isHiding","diff","Number","delay","max","parentNode","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","isTouch","centered","showTimerCommit","showTimer","rippleStop","rippleHide","clearTimeout","type","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyCode","enter","space","keyboardRippleHide","focusRippleHide","updateRipple","binding","wasEnabled","modifiers","stop","addEventListener","passive","removeListeners","removeEventListener","mounted","unmounted","updated","oldValue","Ripple"],"sources":["../../../src/directives/ripple/index.ts"],"sourcesContent":["// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { isObject, keyCodes } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n} from 'vue'\n\nconst stopSymbol = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [stopSymbol]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\ninterface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nexport interface RippleDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: boolean | { class: string }\n modifiers: {\n center?: boolean\n circle?: boolean\n stop?: boolean\n }\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple?.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el?._ripple?.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el?._ripple?.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n if (animation.parentNode?.parentNode === el) el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple || element._ripple.touched || e[stopSymbol]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[stopSymbol] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element?._ripple?.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleStop (e: VuetifyRippleEvent) {\n e[stopSymbol] = true\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = window.setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: RippleDirectiveBinding, wasEnabled: boolean) {\n const { value, modifiers } = binding\n const enabled = isRippleEnabled(value)\n if (!enabled) {\n ripples.hide(el)\n }\n\n el._ripple = el._ripple ?? {}\n el._ripple.enabled = enabled\n el._ripple.centered = modifiers.center\n el._ripple.circle = modifiers.circle\n if (isObject(value) && value.class) {\n el._ripple.class = value.class\n }\n\n if (enabled && !wasEnabled) {\n if (modifiers.stop) {\n el.addEventListener('touchstart', rippleStop, { passive: true })\n el.addEventListener('mousedown', rippleStop)\n return\n }\n\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction mounted (el: HTMLElement, binding: RippleDirectiveBinding) {\n updateRipple(el, binding, false)\n}\n\nfunction unmounted (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction updated (el: HTMLElement, binding: RippleDirectiveBinding) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n mounted,\n unmounted,\n updated,\n}\n\nexport default Ripple\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ export const createVuetify = function () {
10
10
  ...options
11
11
  });
12
12
  };
13
- export const version = "3.2.0-next-20230114.0";
13
+ export const version = "4.0.0-next-20230205.0";
14
14
  createVuetify.version = version;
15
15
  export { components, directives };
16
16
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -89,7 +89,7 @@ export function createVuetify() {
89
89
  locale
90
90
  };
91
91
  }
92
- export const version = "3.2.0-next-20230114.0";
92
+ export const version = "4.0.0-next-20230205.0";
93
93
  createVuetify.version = version;
94
94
 
95
95
  // Vue's inject() can only be used in setup
package/lib/index.d.ts CHANGED
@@ -145,10 +145,10 @@ interface DisplayInstance {
145
145
  }
146
146
  declare function useDisplay(): DisplayInstance;
147
147
 
148
- interface DefaultsInstance {
148
+ declare type DefaultsInstance = undefined | {
149
149
  [key: string]: undefined | Record<string, unknown>;
150
150
  global?: Record<string, unknown>;
151
- }
151
+ };
152
152
  declare type DefaultsOptions = Partial<DefaultsInstance>;
153
153
 
154
154
  declare type IconValue = string | JSXComponent;
@@ -354,7 +354,6 @@ declare module '@vue/runtime-core' {
354
354
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
355
355
  VAlert: typeof import('vuetify/components')['VAlert']
356
356
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
357
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
358
357
  VAvatar: typeof import('vuetify/components')['VAvatar']
359
358
  VBadge: typeof import('vuetify/components')['VBadge']
360
359
  VBanner: typeof import('vuetify/components')['VBanner']
@@ -383,6 +382,7 @@ declare module '@vue/runtime-core' {
383
382
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
384
383
  VCombobox: typeof import('vuetify/components')['VCombobox']
385
384
  VCounter: typeof import('vuetify/components')['VCounter']
385
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
386
386
  VDialog: typeof import('vuetify/components')['VDialog']
387
387
  VDivider: typeof import('vuetify/components')['VDivider']
388
388
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
@@ -403,6 +403,7 @@ declare module '@vue/runtime-core' {
403
403
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
404
404
  VItem: typeof import('vuetify/components')['VItem']
405
405
  VKbd: typeof import('vuetify/components')['VKbd']
406
+ VLabel: typeof import('vuetify/components')['VLabel']
406
407
  VList: typeof import('vuetify/components')['VList']
407
408
  VListGroup: typeof import('vuetify/components')['VListGroup']
408
409
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -417,8 +418,8 @@ declare module '@vue/runtime-core' {
417
418
  VMessages: typeof import('vuetify/components')['VMessages']
418
419
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
419
420
  VOverlay: typeof import('vuetify/components')['VOverlay']
420
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
421
421
  VPagination: typeof import('vuetify/components')['VPagination']
422
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
422
423
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
423
424
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
424
425
  VRating: typeof import('vuetify/components')['VRating']
@@ -445,6 +446,5 @@ declare module '@vue/runtime-core' {
445
446
  VTooltip: typeof import('vuetify/components')['VTooltip']
446
447
  VWindow: typeof import('vuetify/components')['VWindow']
447
448
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
448
- VLabel: typeof import('vuetify/components')['VLabel']
449
449
  }
450
450
  }
@@ -71,9 +71,12 @@ export const VDataTable = defineComponent({
71
71
  const {
72
72
  items
73
73
  } = useDataTableItems(props, columns);
74
+ const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key));
74
75
  const {
75
76
  filteredItems
76
- } = useFilter(props, items, toRef(props, 'search'));
77
+ } = useFilter(props, items, toRef(props, 'search'), {
78
+ filterKeys
79
+ });
77
80
  const {
78
81
  sortBy
79
82
  } = createSort(props);
@@ -92,8 +95,7 @@ export const VDataTable = defineComponent({
92
95
  page,
93
96
  itemsPerPage,
94
97
  startIndex,
95
- stopIndex,
96
- pageCount
98
+ stopIndex
97
99
  } = createPagination(props, flatItems);
98
100
  const {
99
101
  paginatedItems
@@ -105,9 +107,7 @@ export const VDataTable = defineComponent({
105
107
  page,
106
108
  itemsPerPage,
107
109
  sortBy,
108
- pageCount,
109
- startIndex,
110
- stopIndex
110
+ groupBy
111
111
  });
112
112
  provideDefaults({
113
113
  VDataTableRows: {
@@ -1 +1 @@
1
- {"version":3,"file":"VDataTable.mjs","names":["VTable","VDataTableHeaders","VDataTableRows","VDataTableFooter","useProxiedModel","makeDataTableItemProps","useDataTableItems","createHeaders","makeDataTableHeaderProps","createSort","makeDataTableSortProps","useSortedItems","createGroupBy","makeDataTableGroupProps","useGroupedItems","createPagination","makeDataTablePaginateProps","usePaginatedItems","createSelection","makeDataTableSelectProps","createExpanded","makeDataTableExpandProps","useOptions","provideDefaults","computed","toRef","defineComponent","propsFactory","useRender","makeFilterProps","useFilter","makeVDataTableProps","hideNoData","Boolean","noDataText","type","String","default","height","Number","width","fixedHeader","fixedFooter","VDataTable","name","props","search","emits","value","event","setup","emit","slots","groupBy","columns","showSelect","showExpand","items","filteredItems","sortBy","sortByWithGroups","opened","extractRows","sortedItems","flatItems","page","itemsPerPage","startIndex","stopIndex","pageCount","paginatedItems","paginatedItemsWithoutGroups","top","colgroup","headers","multiSort","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTable.tsx"],"sourcesContent":["// Styles\nimport './VDataTable.sass'\n\n// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VDataTableFooter } from './VDataTableFooter'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { createSort, makeDataTableSortProps, useSortedItems } from './composables/sort'\nimport { createGroupBy, makeDataTableGroupProps, useGroupedItems } from './composables/group'\nimport { createPagination, makeDataTablePaginateProps, usePaginatedItems } from './composables/paginate'\nimport { createSelection, makeDataTableSelectProps } from './composables/select'\nimport { createExpanded, makeDataTableExpandProps } from './composables/expand'\nimport { useOptions } from './composables/options'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent, propsFactory, useRender } from '@/util'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\n\n// Types\nimport type { DataTableItem } from './types'\n\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTableItemProps(),\n ...makeDataTableHeaderProps(),\n hideNoData: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n height: [String, Number],\n width: [String, Number],\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n}, 'v-data-table')\n\nexport const VDataTable = defineComponent({\n name: 'VDataTable',\n\n props: {\n search: String,\n\n ...makeVDataTableProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps(),\n ...makeFilterProps(),\n },\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'click:row': (event: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n const { columns } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const { filteredItems } = useFilter<DataTableItem>(props, items, toRef(props, 'search'))\n\n const { sortBy } = createSort(props)\n const { sortByWithGroups, opened, extractRows } = createGroupBy(props, groupBy, sortBy)\n\n const { sortedItems } = useSortedItems(filteredItems, sortByWithGroups, columns)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const { page, itemsPerPage, startIndex, stopIndex, pageCount } = createPagination(props, flatItems)\n const { paginatedItems } = usePaginatedItems(flatItems, startIndex, stopIndex, itemsPerPage)\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n createSelection(props, paginatedItemsWithoutGroups)\n\n createExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n pageCount,\n startIndex,\n stopIndex,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n },\n })\n\n useRender(() => (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--show-select': props.showSelect,\n },\n ]}\n fixedHeader={ props.fixedHeader }\n fixedFooter={ props.fixedFooter }\n height={ props.height }\n >\n {{\n top: slots.top,\n default: slots.default ?? (() => (\n <>\n { slots.colgroup?.({ columns }) }\n <thead>\n { slots.headers ? slots.headers() : (\n <VDataTableHeaders\n sticky={ props.fixedHeader }\n multiSort={ props.multiSort }\n v-slots={ slots }\n />\n ) }\n </thead>\n { slots.thead?.() }\n <tbody>\n { slots.body ? slots.body() : (\n <VDataTableRows\n items={ paginatedItems.value }\n onClick:row={ (event, value) => emit('click:row', event, value) }\n v-slots={ slots }\n />\n ) }\n </tbody>\n { slots.tbody?.() }\n { slots.tfoot?.() }\n </>\n )),\n bottom: slots.bottom ?? (() => (\n <VDataTableFooter\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n )),\n }}\n </VTable>\n ))\n\n return {}\n },\n})\n\nexport type VDataTable = InstanceType<typeof VDataTable>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VDataTable.mjs","names":["VTable","VDataTableHeaders","VDataTableRows","VDataTableFooter","useProxiedModel","makeDataTableItemProps","useDataTableItems","createHeaders","makeDataTableHeaderProps","createSort","makeDataTableSortProps","useSortedItems","createGroupBy","makeDataTableGroupProps","useGroupedItems","createPagination","makeDataTablePaginateProps","usePaginatedItems","createSelection","makeDataTableSelectProps","createExpanded","makeDataTableExpandProps","useOptions","provideDefaults","computed","toRef","defineComponent","propsFactory","useRender","makeFilterProps","useFilter","makeVDataTableProps","hideNoData","Boolean","noDataText","type","String","default","height","Number","width","fixedHeader","fixedFooter","VDataTable","name","props","search","emits","value","event","setup","emit","slots","groupBy","columns","showSelect","showExpand","items","filterKeys","map","c","key","filteredItems","sortBy","sortByWithGroups","opened","extractRows","sortedItems","flatItems","page","itemsPerPage","startIndex","stopIndex","paginatedItems","paginatedItemsWithoutGroups","top","colgroup","headers","multiSort","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTable.tsx"],"sourcesContent":["// Styles\nimport './VDataTable.sass'\n\n// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VDataTableFooter } from './VDataTableFooter'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { createSort, makeDataTableSortProps, useSortedItems } from './composables/sort'\nimport { createGroupBy, makeDataTableGroupProps, useGroupedItems } from './composables/group'\nimport { createPagination, makeDataTablePaginateProps, usePaginatedItems } from './composables/paginate'\nimport { createSelection, makeDataTableSelectProps } from './composables/select'\nimport { createExpanded, makeDataTableExpandProps } from './composables/expand'\nimport { useOptions } from './composables/options'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent, propsFactory, useRender } from '@/util'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\n\n// Types\nimport type { DataTableItem } from './types'\n\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTableItemProps(),\n ...makeDataTableHeaderProps(),\n hideNoData: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n height: [String, Number],\n width: [String, Number],\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n}, 'v-data-table')\n\nexport const VDataTable = defineComponent({\n name: 'VDataTable',\n\n props: {\n search: String,\n\n ...makeVDataTableProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps(),\n ...makeFilterProps(),\n },\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'click:row': (event: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n const { columns } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key))\n const { filteredItems } = useFilter<DataTableItem>(props, items, toRef(props, 'search'), { filterKeys })\n\n const { sortBy } = createSort(props)\n const { sortByWithGroups, opened, extractRows } = createGroupBy(props, groupBy, sortBy)\n\n const { sortedItems } = useSortedItems(filteredItems, sortByWithGroups, columns)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const { page, itemsPerPage, startIndex, stopIndex } = createPagination(props, flatItems)\n const { paginatedItems } = usePaginatedItems(flatItems, startIndex, stopIndex, itemsPerPage)\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n createSelection(props, paginatedItemsWithoutGroups)\n\n createExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n },\n })\n\n useRender(() => (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--show-select': props.showSelect,\n },\n ]}\n fixedHeader={ props.fixedHeader }\n fixedFooter={ props.fixedFooter }\n height={ props.height }\n >\n {{\n top: slots.top,\n default: slots.default ?? (() => (\n <>\n { slots.colgroup?.({ columns }) }\n <thead>\n { slots.headers ? slots.headers() : (\n <VDataTableHeaders\n sticky={ props.fixedHeader }\n multiSort={ props.multiSort }\n v-slots={ slots }\n />\n ) }\n </thead>\n { slots.thead?.() }\n <tbody>\n { slots.body ? slots.body() : (\n <VDataTableRows\n items={ paginatedItems.value }\n onClick:row={ (event, value) => emit('click:row', event, value) }\n v-slots={ slots }\n />\n ) }\n </tbody>\n { slots.tbody?.() }\n { slots.tfoot?.() }\n </>\n )),\n bottom: slots.bottom ?? (() => (\n <VDataTableFooter\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n )),\n }}\n </VTable>\n ))\n\n return {}\n },\n})\n\nexport type VDataTable = InstanceType<typeof VDataTable>\n"],"mappings":"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"}
@@ -74,7 +74,7 @@ export const VDataTableFooter = defineComponent({
74
74
  "hide-details": true
75
75
  }, null)]), _createVNode("div", {
76
76
  "class": "v-data-table-footer__info"
77
- }, [_createVNode("div", null, [(startIndex.value ?? -1) + 1, _createTextVNode(" - "), stopIndex.value ?? 0, _createTextVNode(" of "), itemsLength.value ?? 0])]), _createVNode("div", {
77
+ }, [_createVNode("div", null, [!itemsLength.value ? 0 : startIndex.value + 1, _createTextVNode(" - "), stopIndex.value, _createTextVNode(" of "), itemsLength.value])]), _createVNode("div", {
78
78
  "class": "v-data-table-footer__pagination"
79
79
  }, [_createVNode(VBtn, {
80
80
  "icon": props.firstIcon,