vuetify 3.0.1 → 3.0.3

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 (71) hide show
  1. package/dist/json/attributes.json +24 -24
  2. package/dist/json/importMap.json +34 -30
  3. package/dist/json/web-types.json +93 -62
  4. package/dist/vuetify.css +204 -205
  5. package/dist/vuetify.d.ts +334 -142
  6. package/dist/vuetify.esm.js +57 -47
  7. package/dist/vuetify.esm.js.map +1 -1
  8. package/dist/vuetify.js +56 -46
  9. package/dist/vuetify.js.map +1 -1
  10. package/dist/vuetify.min.css +2 -2
  11. package/dist/vuetify.min.js +333 -330
  12. package/dist/vuetify.min.js.map +1 -1
  13. package/lib/components/VAppBar/VAppBar.mjs +2 -2
  14. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  15. package/lib/components/VAppBar/index.d.ts +275 -62
  16. package/lib/components/VAutocomplete/index.d.ts +6 -6
  17. package/lib/components/VCard/VCard.css +0 -3
  18. package/lib/components/VCard/VCard.mjs +2 -1
  19. package/lib/components/VCard/VCard.mjs.map +1 -1
  20. package/lib/components/VCard/VCard.sass +0 -3
  21. package/lib/components/VCard/VCardItem.mjs +1 -2
  22. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  23. package/lib/components/VCombobox/index.d.ts +6 -6
  24. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +1 -1
  25. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  26. package/lib/components/VField/index.d.ts +6 -6
  27. package/lib/components/VFileInput/index.d.ts +1 -1
  28. package/lib/components/VFooter/VFooter.mjs +1 -1
  29. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  30. package/lib/components/VLazy/VLazy.mjs +2 -1
  31. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  32. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +2 -2
  33. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  34. package/lib/components/VOverlay/locationStrategies.mjs +3 -1
  35. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  36. package/lib/components/VOverlay/scrollStrategies.mjs +4 -0
  37. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  38. package/lib/components/VOverlay/useActivator.mjs +4 -0
  39. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  40. package/lib/components/VProgressLinear/VProgressLinear.mjs +1 -0
  41. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  42. package/lib/components/VProgressLinear/VProgressLinear.sass +1 -1
  43. package/lib/components/VProgressLinear/_variables.scss +1 -1
  44. package/lib/components/VRating/VRating.mjs +7 -6
  45. package/lib/components/VRating/VRating.mjs.map +1 -1
  46. package/lib/components/VRating/index.d.ts +14 -14
  47. package/lib/components/VSelect/index.d.ts +6 -6
  48. package/lib/components/VSelectionControl/index.d.ts +6 -6
  49. package/lib/components/VSlideGroup/VSlideGroup.css +1 -0
  50. package/lib/components/VSlideGroup/VSlideGroup.sass +1 -0
  51. package/lib/components/VTextField/index.d.ts +18 -18
  52. package/lib/components/VTextarea/index.d.ts +1 -1
  53. package/lib/components/VToolbar/VToolbar.css +1 -0
  54. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  55. package/lib/components/VToolbar/VToolbar.sass +1 -0
  56. package/lib/components/VToolbar/index.d.ts +9 -8
  57. package/lib/components/index.d.ts +324 -133
  58. package/lib/components/transitions/dialog-transition.mjs +2 -2
  59. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  60. package/lib/components/transitions/index.mjs +1 -1
  61. package/lib/components/transitions/index.mjs.map +1 -1
  62. package/lib/composables/nested/nested.mjs +2 -2
  63. package/lib/composables/nested/nested.mjs.map +1 -1
  64. package/lib/composables/toggleScope.mjs +6 -2
  65. package/lib/composables/toggleScope.mjs.map +1 -1
  66. package/lib/entry-bundler.mjs +1 -1
  67. package/lib/framework.mjs +1 -1
  68. package/lib/index.d.ts +10 -9
  69. package/lib/util/defineComponent.mjs +8 -13
  70. package/lib/util/defineComponent.mjs.map +1 -1
  71. package/package.json +2 -2
@@ -131,8 +131,8 @@ function getDimensions(target, el) {
131
131
  const tsx = targetBox.width / elBox.width;
132
132
  const tsy = targetBox.height / elBox.height;
133
133
  const maxs = Math.max(1, tsx, tsy);
134
- const sx = tsx / maxs;
135
- const sy = tsy / maxs;
134
+ const sx = tsx / maxs || 0;
135
+ const sy = tsy / maxs || 0;
136
136
 
137
137
  // Animate elements larger than 12% of the screen area up to 1.5x slower
138
138
  const asa = elBox.width * elBox.height / (window.innerWidth * window.innerHeight);
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-transition.mjs","names":["Transition","acceleratedEasing","animate","deceleratedEasing","defineComponent","nullifyTransforms","standardEasing","VDialogTransition","name","props","target","Object","setup","slots","functions","onBeforeEnter","el","style","pointerEvents","visibility","onEnter","done","Promise","resolve","requestAnimationFrame","x","y","sx","sy","speed","getDimensions","animation","transform","opacity","duration","easing","getChildren","forEach","offset","finished","then","onAfterEnter","removeProperty","onBeforeLeave","onLeave","onAfterLeave","els","querySelector","children","targetBox","getBoundingClientRect","elBox","originX","originY","getComputedStyle","transformOrigin","split","map","v","parseFloat","anchorSide","anchorOffset","getPropertyValue","offsetX","left","width","offsetY","top","height","tsx","tsy","maxs","Math","max","asa","window","innerWidth","innerHeight","min"],"sources":["../../../src/components/transitions/dialog-transition.tsx"],"sourcesContent":["import type { PropType } from 'vue'\nimport { Transition } from 'vue'\nimport {\n acceleratedEasing,\n animate,\n deceleratedEasing,\n defineComponent,\n nullifyTransforms,\n standardEasing,\n} from '@/util'\n\nexport const VDialogTransition = defineComponent({\n name: 'VDialogTransition',\n\n props: {\n target: Object as PropType<HTMLElement>,\n },\n\n setup (props, { slots }) {\n const functions = {\n onBeforeEnter (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n ;(el as HTMLElement).style.visibility = 'hidden'\n },\n async onEnter (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n ;(el as HTMLElement).style.visibility = ''\n\n const { x, y, sx, sy, speed } = getDimensions(props.target!, el as HTMLElement)\n\n const animation = animate(el, [\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n { transform: '' },\n ], {\n duration: 225 * speed,\n easing: deceleratedEasing,\n })\n getChildren(el)?.forEach(el => {\n animate(el, [\n { opacity: 0 },\n { opacity: 0, offset: 0.33 },\n { opacity: 1 },\n ], {\n duration: 225 * 2 * speed,\n easing: standardEasing,\n })\n })\n animation.finished.then(() => done())\n },\n onAfterEnter (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n onBeforeLeave (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n },\n async onLeave (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n\n const { x, y, sx, sy, speed } = getDimensions(props.target!, el as HTMLElement)\n\n const animation = animate(el, [\n { transform: '' },\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n ], {\n duration: 125 * speed,\n easing: acceleratedEasing,\n })\n animation.finished.then(() => done())\n getChildren(el)?.forEach(el => {\n animate(el, [\n {},\n { opacity: 0, offset: 0.2 },\n { opacity: 0 },\n ], {\n duration: 125 * 2 * speed,\n easing: standardEasing,\n })\n })\n },\n onAfterLeave (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n }\n\n return () => {\n return props.target\n ? (\n <Transition\n name=\"dialog-transition\"\n { ...functions }\n css={ false }\n v-slots={ slots }\n />\n )\n : <Transition name=\"dialog-transition\" v-slots={ slots } />\n }\n },\n})\n\n/** Animatable children (card, sheet, list) */\nfunction getChildren (el: Element) {\n const els = el.querySelector(':scope > .v-card, :scope > .v-sheet, :scope > .v-list')?.children\n return els && [...els]\n}\n\nfunction getDimensions (target: HTMLElement, el: HTMLElement) {\n const targetBox = target.getBoundingClientRect()\n const elBox = nullifyTransforms(el)\n const [originX, originY] = getComputedStyle(el).transformOrigin.split(' ').map(v => parseFloat(v))\n\n const [anchorSide, anchorOffset] = getComputedStyle(el).getPropertyValue('--v-overlay-anchor-origin').split(' ')\n\n let offsetX = targetBox.left + targetBox.width / 2\n if (anchorSide === 'left' || anchorOffset === 'left') {\n offsetX -= targetBox.width / 2\n } else if (anchorSide === 'right' || anchorOffset === 'right') {\n offsetX += targetBox.width / 2\n }\n\n let offsetY = targetBox.top + targetBox.height / 2\n if (anchorSide === 'top' || anchorOffset === 'top') {\n offsetY -= targetBox.height / 2\n } else if (anchorSide === 'bottom' || anchorOffset === 'bottom') {\n offsetY += targetBox.height / 2\n }\n\n const tsx = targetBox.width / elBox.width\n const tsy = targetBox.height / elBox.height\n const maxs = Math.max(1, tsx, tsy)\n const sx = tsx / maxs\n const sy = tsy / maxs\n\n // Animate elements larger than 12% of the screen area up to 1.5x slower\n const asa = (elBox.width * elBox.height) / (window.innerWidth * window.innerHeight)\n const speed = asa > 0.12\n ? Math.min(1.5, (asa - 0.12) * 10 + 1)\n : 1\n\n return {\n x: offsetX - (originX + elBox.left),\n y: offsetY - (originY + elBox.top),\n sx,\n sy,\n speed,\n }\n}\n\nexport type VDialogTransition = InstanceType<typeof VDialogTransition>\n"],"mappings":"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"}
1
+ {"version":3,"file":"dialog-transition.mjs","names":["Transition","acceleratedEasing","animate","deceleratedEasing","defineComponent","nullifyTransforms","standardEasing","VDialogTransition","name","props","target","Object","setup","slots","functions","onBeforeEnter","el","style","pointerEvents","visibility","onEnter","done","Promise","resolve","requestAnimationFrame","x","y","sx","sy","speed","getDimensions","animation","transform","opacity","duration","easing","getChildren","forEach","offset","finished","then","onAfterEnter","removeProperty","onBeforeLeave","onLeave","onAfterLeave","els","querySelector","children","targetBox","getBoundingClientRect","elBox","originX","originY","getComputedStyle","transformOrigin","split","map","v","parseFloat","anchorSide","anchorOffset","getPropertyValue","offsetX","left","width","offsetY","top","height","tsx","tsy","maxs","Math","max","asa","window","innerWidth","innerHeight","min"],"sources":["../../../src/components/transitions/dialog-transition.tsx"],"sourcesContent":["import type { PropType } from 'vue'\nimport { Transition } from 'vue'\nimport {\n acceleratedEasing,\n animate,\n deceleratedEasing,\n defineComponent,\n nullifyTransforms,\n standardEasing,\n} from '@/util'\n\nexport const VDialogTransition = defineComponent({\n name: 'VDialogTransition',\n\n props: {\n target: Object as PropType<HTMLElement>,\n },\n\n setup (props, { slots }) {\n const functions = {\n onBeforeEnter (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n ;(el as HTMLElement).style.visibility = 'hidden'\n },\n async onEnter (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n ;(el as HTMLElement).style.visibility = ''\n\n const { x, y, sx, sy, speed } = getDimensions(props.target!, el as HTMLElement)\n\n const animation = animate(el, [\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n { transform: '' },\n ], {\n duration: 225 * speed,\n easing: deceleratedEasing,\n })\n getChildren(el)?.forEach(el => {\n animate(el, [\n { opacity: 0 },\n { opacity: 0, offset: 0.33 },\n { opacity: 1 },\n ], {\n duration: 225 * 2 * speed,\n easing: standardEasing,\n })\n })\n animation.finished.then(() => done())\n },\n onAfterEnter (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n onBeforeLeave (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n },\n async onLeave (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n\n const { x, y, sx, sy, speed } = getDimensions(props.target!, el as HTMLElement)\n\n const animation = animate(el, [\n { transform: '' },\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n ], {\n duration: 125 * speed,\n easing: acceleratedEasing,\n })\n animation.finished.then(() => done())\n getChildren(el)?.forEach(el => {\n animate(el, [\n {},\n { opacity: 0, offset: 0.2 },\n { opacity: 0 },\n ], {\n duration: 125 * 2 * speed,\n easing: standardEasing,\n })\n })\n },\n onAfterLeave (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n }\n\n return () => {\n return props.target\n ? (\n <Transition\n name=\"dialog-transition\"\n { ...functions }\n css={ false }\n v-slots={ slots }\n />\n )\n : <Transition name=\"dialog-transition\" v-slots={ slots } />\n }\n },\n})\n\n/** Animatable children (card, sheet, list) */\nfunction getChildren (el: Element) {\n const els = el.querySelector(':scope > .v-card, :scope > .v-sheet, :scope > .v-list')?.children\n return els && [...els]\n}\n\nfunction getDimensions (target: HTMLElement, el: HTMLElement) {\n const targetBox = target.getBoundingClientRect()\n const elBox = nullifyTransforms(el)\n const [originX, originY] = getComputedStyle(el).transformOrigin.split(' ').map(v => parseFloat(v))\n\n const [anchorSide, anchorOffset] = getComputedStyle(el).getPropertyValue('--v-overlay-anchor-origin').split(' ')\n\n let offsetX = targetBox.left + targetBox.width / 2\n if (anchorSide === 'left' || anchorOffset === 'left') {\n offsetX -= targetBox.width / 2\n } else if (anchorSide === 'right' || anchorOffset === 'right') {\n offsetX += targetBox.width / 2\n }\n\n let offsetY = targetBox.top + targetBox.height / 2\n if (anchorSide === 'top' || anchorOffset === 'top') {\n offsetY -= targetBox.height / 2\n } else if (anchorSide === 'bottom' || anchorOffset === 'bottom') {\n offsetY += targetBox.height / 2\n }\n\n const tsx = targetBox.width / elBox.width\n const tsy = targetBox.height / elBox.height\n const maxs = Math.max(1, tsx, tsy)\n const sx = tsx / maxs || 0\n const sy = tsy / maxs || 0\n\n // Animate elements larger than 12% of the screen area up to 1.5x slower\n const asa = (elBox.width * elBox.height) / (window.innerWidth * window.innerHeight)\n const speed = asa > 0.12\n ? Math.min(1.5, (asa - 0.12) * 10 + 1)\n : 1\n\n return {\n x: offsetX - (originX + elBox.left),\n y: offsetY - (originY + elBox.top),\n sx,\n sy,\n speed,\n }\n}\n\nexport type VDialogTransition = InstanceType<typeof VDialogTransition>\n"],"mappings":";AACA,SAASA,UAAU,QAAQ,KAAK;AAAA,SAE9BC,iBAAiB,EACjBC,OAAO,EACPC,iBAAiB,EACjBC,eAAe,EACfC,iBAAiB,EACjBC,cAAc;AAGhB,OAAO,MAAMC,iBAAiB,GAAGH,eAAe,CAAC;EAC/CI,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAE;IACLC,MAAM,EAAEC;EACV,CAAC;EAEDC,KAAK,CAAEH,KAAK,QAAa;IAAA,IAAX;MAAEI;IAAM,CAAC;IACrB,MAAMC,SAAS,GAAG;MAChBC,aAAa,CAAEC,EAAW,EAAE;QACzBA,EAAE,CAAiBC,KAAK,CAACC,aAAa,GAAG,MAAM;QAC9CF,EAAE,CAAiBC,KAAK,CAACE,UAAU,GAAG,QAAQ;MAClD,CAAC;MACD,MAAMC,OAAO,CAAEJ,EAAW,EAAEK,IAAgB,EAAE;QAAA;QAC5C,MAAM,IAAIC,OAAO,CAACC,OAAO,IAAIC,qBAAqB,CAACD,OAAO,CAAC,CAAC;QAC5D,MAAM,IAAID,OAAO,CAACC,OAAO,IAAIC,qBAAqB,CAACD,OAAO,CAAC,CAAC;QAC1DP,EAAE,CAAiBC,KAAK,CAACE,UAAU,GAAG,EAAE;QAE1C,MAAM;UAAEM,CAAC;UAAEC,CAAC;UAAEC,EAAE;UAAEC,EAAE;UAAEC;QAAM,CAAC,GAAGC,aAAa,CAACrB,KAAK,CAACC,MAAM,EAAGM,EAAE,CAAgB;QAE/E,MAAMe,SAAS,GAAG7B,OAAO,CAACc,EAAE,EAAE,CAC5B;UAAEgB,SAAS,EAAG,aAAYP,CAAE,OAAMC,CAAE,aAAYC,EAAG,KAAIC,EAAG,GAAE;UAAEK,OAAO,EAAE;QAAE,CAAC,EAC1E;UAAED,SAAS,EAAE;QAAG,CAAC,CAClB,EAAE;UACDE,QAAQ,EAAE,GAAG,GAAGL,KAAK;UACrBM,MAAM,EAAEhC;QACV,CAAC,CAAC;QACF,gBAAAiC,WAAW,CAACpB,EAAE,CAAC,qBAAf,aAAiBqB,OAAO,CAACrB,EAAE,IAAI;UAC7Bd,OAAO,CAACc,EAAE,EAAE,CACV;YAAEiB,OAAO,EAAE;UAAE,CAAC,EACd;YAAEA,OAAO,EAAE,CAAC;YAAEK,MAAM,EAAE;UAAK,CAAC,EAC5B;YAAEL,OAAO,EAAE;UAAE,CAAC,CACf,EAAE;YACDC,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAGL,KAAK;YACzBM,MAAM,EAAE7B;UACV,CAAC,CAAC;QACJ,CAAC,CAAC;QACFyB,SAAS,CAACQ,QAAQ,CAACC,IAAI,CAAC,MAAMnB,IAAI,EAAE,CAAC;MACvC,CAAC;MACDoB,YAAY,CAAEzB,EAAW,EAAE;QACxBA,EAAE,CAAiBC,KAAK,CAACyB,cAAc,CAAC,gBAAgB,CAAC;MAC5D,CAAC;MACDC,aAAa,CAAE3B,EAAW,EAAE;QACzBA,EAAE,CAAiBC,KAAK,CAACC,aAAa,GAAG,MAAM;MAClD,CAAC;MACD,MAAM0B,OAAO,CAAE5B,EAAW,EAAEK,IAAgB,EAAE;QAAA;QAC5C,MAAM,IAAIC,OAAO,CAACC,OAAO,IAAIC,qBAAqB,CAACD,OAAO,CAAC,CAAC;QAE5D,MAAM;UAAEE,CAAC;UAAEC,CAAC;UAAEC,EAAE;UAAEC,EAAE;UAAEC;QAAM,CAAC,GAAGC,aAAa,CAACrB,KAAK,CAACC,MAAM,EAAGM,EAAE,CAAgB;QAE/E,MAAMe,SAAS,GAAG7B,OAAO,CAACc,EAAE,EAAE,CAC5B;UAAEgB,SAAS,EAAE;QAAG,CAAC,EACjB;UAAEA,SAAS,EAAG,aAAYP,CAAE,OAAMC,CAAE,aAAYC,EAAG,KAAIC,EAAG,GAAE;UAAEK,OAAO,EAAE;QAAE,CAAC,CAC3E,EAAE;UACDC,QAAQ,EAAE,GAAG,GAAGL,KAAK;UACrBM,MAAM,EAAElC;QACV,CAAC,CAAC;QACF8B,SAAS,CAACQ,QAAQ,CAACC,IAAI,CAAC,MAAMnB,IAAI,EAAE,CAAC;QACrC,iBAAAe,WAAW,CAACpB,EAAE,CAAC,qBAAf,cAAiBqB,OAAO,CAACrB,EAAE,IAAI;UAC7Bd,OAAO,CAACc,EAAE,EAAE,CACV,CAAC,CAAC,EACF;YAAEiB,OAAO,EAAE,CAAC;YAAEK,MAAM,EAAE;UAAI,CAAC,EAC3B;YAAEL,OAAO,EAAE;UAAE,CAAC,CACf,EAAE;YACDC,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAGL,KAAK;YACzBM,MAAM,EAAE7B;UACV,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC;MACDuC,YAAY,CAAE7B,EAAW,EAAE;QACxBA,EAAE,CAAiBC,KAAK,CAACyB,cAAc,CAAC,gBAAgB,CAAC;MAC5D;IACF,CAAC;IAED,OAAO,MAAM;MACX,OAAOjC,KAAK,CAACC,MAAM;QAAA,QAGR;MAAmB,GACnBI,SAAS;QAAA,OACR;MAAK,IACDD,KAAK;QAAA,QAGA;MAAmB,GAAWA,KAAK,CAAK;IAC/D,CAAC;EACH;AACF,CAAC,CAAC;;AAEF;AACA,SAASuB,WAAW,CAAEpB,EAAW,EAAE;EAAA;EACjC,MAAM8B,GAAG,wBAAG9B,EAAE,CAAC+B,aAAa,CAAC,uDAAuD,CAAC,qBAAzE,kBAA2EC,QAAQ;EAC/F,OAAOF,GAAG,IAAI,CAAC,GAAGA,GAAG,CAAC;AACxB;AAEA,SAAShB,aAAa,CAAEpB,MAAmB,EAAEM,EAAe,EAAE;EAC5D,MAAMiC,SAAS,GAAGvC,MAAM,CAACwC,qBAAqB,EAAE;EAChD,MAAMC,KAAK,GAAG9C,iBAAiB,CAACW,EAAE,CAAC;EACnC,MAAM,CAACoC,OAAO,EAAEC,OAAO,CAAC,GAAGC,gBAAgB,CAACtC,EAAE,CAAC,CAACuC,eAAe,CAACC,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAACC,CAAC,IAAIC,UAAU,CAACD,CAAC,CAAC,CAAC;EAElG,MAAM,CAACE,UAAU,EAAEC,YAAY,CAAC,GAAGP,gBAAgB,CAACtC,EAAE,CAAC,CAAC8C,gBAAgB,CAAC,2BAA2B,CAAC,CAACN,KAAK,CAAC,GAAG,CAAC;EAEhH,IAAIO,OAAO,GAAGd,SAAS,CAACe,IAAI,GAAGf,SAAS,CAACgB,KAAK,GAAG,CAAC;EAClD,IAAIL,UAAU,KAAK,MAAM,IAAIC,YAAY,KAAK,MAAM,EAAE;IACpDE,OAAO,IAAId,SAAS,CAACgB,KAAK,GAAG,CAAC;EAChC,CAAC,MAAM,IAAIL,UAAU,KAAK,OAAO,IAAIC,YAAY,KAAK,OAAO,EAAE;IAC7DE,OAAO,IAAId,SAAS,CAACgB,KAAK,GAAG,CAAC;EAChC;EAEA,IAAIC,OAAO,GAAGjB,SAAS,CAACkB,GAAG,GAAGlB,SAAS,CAACmB,MAAM,GAAG,CAAC;EAClD,IAAIR,UAAU,KAAK,KAAK,IAAIC,YAAY,KAAK,KAAK,EAAE;IAClDK,OAAO,IAAIjB,SAAS,CAACmB,MAAM,GAAG,CAAC;EACjC,CAAC,MAAM,IAAIR,UAAU,KAAK,QAAQ,IAAIC,YAAY,KAAK,QAAQ,EAAE;IAC/DK,OAAO,IAAIjB,SAAS,CAACmB,MAAM,GAAG,CAAC;EACjC;EAEA,MAAMC,GAAG,GAAGpB,SAAS,CAACgB,KAAK,GAAGd,KAAK,CAACc,KAAK;EACzC,MAAMK,GAAG,GAAGrB,SAAS,CAACmB,MAAM,GAAGjB,KAAK,CAACiB,MAAM;EAC3C,MAAMG,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,GAAG,EAAEC,GAAG,CAAC;EAClC,MAAM3C,EAAE,GAAG0C,GAAG,GAAGE,IAAI,IAAI,CAAC;EAC1B,MAAM3C,EAAE,GAAG0C,GAAG,GAAGC,IAAI,IAAI,CAAC;;EAE1B;EACA,MAAMG,GAAG,GAAIvB,KAAK,CAACc,KAAK,GAAGd,KAAK,CAACiB,MAAM,IAAKO,MAAM,CAACC,UAAU,GAAGD,MAAM,CAACE,WAAW,CAAC;EACnF,MAAMhD,KAAK,GAAG6C,GAAG,GAAG,IAAI,GACpBF,IAAI,CAACM,GAAG,CAAC,GAAG,EAAE,CAACJ,GAAG,GAAG,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,GACpC,CAAC;EAEL,OAAO;IACLjD,CAAC,EAAEsC,OAAO,IAAIX,OAAO,GAAGD,KAAK,CAACa,IAAI,CAAC;IACnCtC,CAAC,EAAEwC,OAAO,IAAIb,OAAO,GAAGF,KAAK,CAACgB,GAAG,CAAC;IAClCxC,EAAE;IACFC,EAAE;IACFC;EACF,CAAC;AACH"}
@@ -19,5 +19,5 @@ export const VSlideYReverseTransition = createCssTransition('slide-y-reverse-tra
19
19
  // Javascript transitions
20
20
  export const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator());
21
21
  export const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true));
22
- export * from "./dialog-transition.mjs";
22
+ export { VDialogTransition } from "./dialog-transition.mjs";
23
23
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["createCssTransition","createJavascriptTransition","ExpandTransitionGenerator","VFabTransition","VDialogBottomTransition","VDialogTopTransition","VFadeTransition","VScaleTransition","VScrollXTransition","VScrollXReverseTransition","VScrollYTransition","VScrollYReverseTransition","VSlideXTransition","VSlideXReverseTransition","VSlideYTransition","VSlideYReverseTransition","VExpandTransition","VExpandXTransition"],"sources":["../../../src/components/transitions/index.ts"],"sourcesContent":["import {\n createCssTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VFabTransition = createCssTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogBottomTransition = createCssTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createCssTransition('dialog-top-transition')\nexport const VFadeTransition = createCssTransition('fade-transition')\nexport const VScaleTransition = createCssTransition('scale-transition')\nexport const VScrollXTransition = createCssTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createCssTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createCssTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createCssTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createCssTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createCssTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createCssTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createCssTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport * from './dialog-transition'\n\nexport type VFabTransition = InstanceType<typeof VFabTransition>\nexport type VDialogBottomTransition = InstanceType<typeof VDialogBottomTransition>\nexport type VDialogTopTransition = InstanceType<typeof VDialogTopTransition>\nexport type VFadeTransition = InstanceType<typeof VFadeTransition>\nexport type VScaleTransition = InstanceType<typeof VScaleTransition>\nexport type VScrollXTransition = InstanceType<typeof VScrollXTransition>\nexport type VScrollXReverseTransition = InstanceType<typeof VScrollXReverseTransition>\nexport type VScrollYTransition = InstanceType<typeof VScrollYTransition>\nexport type VScrollYReverseTransition = InstanceType<typeof VScrollYReverseTransition>\nexport type VSlideXTransition = InstanceType<typeof VSlideXTransition>\nexport type VSlideXReverseTransition = InstanceType<typeof VSlideXReverseTransition>\nexport type VSlideYTransition = InstanceType<typeof VSlideYTransition>\nexport type VSlideYReverseTransition = InstanceType<typeof VSlideYReverseTransition>\nexport type VExpandTransition = InstanceType<typeof VExpandTransition>\nexport type VExpandXTransition = InstanceType<typeof VExpandXTransition>\n"],"mappings":"SACEA,mBAAmB,EACnBC,0BAA0B;AAAA,OAGrBC,yBAAyB,iCAEhC;AACA,OAAO,MAAMC,cAAc,GAAGH,mBAAmB,CAAC,gBAAgB,EAAE,eAAe,EAAE,QAAQ,CAAC;;AAE9F;AACA,OAAO,MAAMI,uBAAuB,GAAGJ,mBAAmB,CAAC,0BAA0B,CAAC;AACtF,OAAO,MAAMK,oBAAoB,GAAGL,mBAAmB,CAAC,uBAAuB,CAAC;AAChF,OAAO,MAAMM,eAAe,GAAGN,mBAAmB,CAAC,iBAAiB,CAAC;AACrE,OAAO,MAAMO,gBAAgB,GAAGP,mBAAmB,CAAC,kBAAkB,CAAC;AACvE,OAAO,MAAMQ,kBAAkB,GAAGR,mBAAmB,CAAC,qBAAqB,CAAC;AAC5E,OAAO,MAAMS,yBAAyB,GAAGT,mBAAmB,CAAC,6BAA6B,CAAC;AAC3F,OAAO,MAAMU,kBAAkB,GAAGV,mBAAmB,CAAC,qBAAqB,CAAC;AAC5E,OAAO,MAAMW,yBAAyB,GAAGX,mBAAmB,CAAC,6BAA6B,CAAC;AAC3F,OAAO,MAAMY,iBAAiB,GAAGZ,mBAAmB,CAAC,oBAAoB,CAAC;AAC1E,OAAO,MAAMa,wBAAwB,GAAGb,mBAAmB,CAAC,4BAA4B,CAAC;AACzF,OAAO,MAAMc,iBAAiB,GAAGd,mBAAmB,CAAC,oBAAoB,CAAC;AAC1E,OAAO,MAAMe,wBAAwB,GAAGf,mBAAmB,CAAC,4BAA4B,CAAC;;AAEzF;AACA,OAAO,MAAMgB,iBAAiB,GAAGf,0BAA0B,CAAC,mBAAmB,EAAEC,yBAAyB,EAAE,CAAC;AAC7G,OAAO,MAAMe,kBAAkB,GAAGhB,0BAA0B,CAAC,qBAAqB,EAAEC,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAAA"}
1
+ {"version":3,"file":"index.mjs","names":["createCssTransition","createJavascriptTransition","ExpandTransitionGenerator","VFabTransition","VDialogBottomTransition","VDialogTopTransition","VFadeTransition","VScaleTransition","VScrollXTransition","VScrollXReverseTransition","VScrollYTransition","VScrollYReverseTransition","VSlideXTransition","VSlideXReverseTransition","VSlideYTransition","VSlideYReverseTransition","VExpandTransition","VExpandXTransition","VDialogTransition"],"sources":["../../../src/components/transitions/index.ts"],"sourcesContent":["import {\n createCssTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VFabTransition = createCssTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogBottomTransition = createCssTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createCssTransition('dialog-top-transition')\nexport const VFadeTransition = createCssTransition('fade-transition')\nexport const VScaleTransition = createCssTransition('scale-transition')\nexport const VScrollXTransition = createCssTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createCssTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createCssTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createCssTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createCssTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createCssTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createCssTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createCssTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport { VDialogTransition } from './dialog-transition'\n\nexport type VFabTransition = InstanceType<typeof VFabTransition>\nexport type VDialogBottomTransition = InstanceType<typeof VDialogBottomTransition>\nexport type VDialogTopTransition = InstanceType<typeof VDialogTopTransition>\nexport type VFadeTransition = InstanceType<typeof VFadeTransition>\nexport type VScaleTransition = InstanceType<typeof VScaleTransition>\nexport type VScrollXTransition = InstanceType<typeof VScrollXTransition>\nexport type VScrollXReverseTransition = InstanceType<typeof VScrollXReverseTransition>\nexport type VScrollYTransition = InstanceType<typeof VScrollYTransition>\nexport type VScrollYReverseTransition = InstanceType<typeof VScrollYReverseTransition>\nexport type VSlideXTransition = InstanceType<typeof VSlideXTransition>\nexport type VSlideXReverseTransition = InstanceType<typeof VSlideXReverseTransition>\nexport type VSlideYTransition = InstanceType<typeof VSlideYTransition>\nexport type VSlideYReverseTransition = InstanceType<typeof VSlideYReverseTransition>\nexport type VExpandTransition = InstanceType<typeof VExpandTransition>\nexport type VExpandXTransition = InstanceType<typeof VExpandXTransition>\n"],"mappings":"SACEA,mBAAmB,EACnBC,0BAA0B;AAAA,OAGrBC,yBAAyB,iCAEhC;AACA,OAAO,MAAMC,cAAc,GAAGH,mBAAmB,CAAC,gBAAgB,EAAE,eAAe,EAAE,QAAQ,CAAC;;AAE9F;AACA,OAAO,MAAMI,uBAAuB,GAAGJ,mBAAmB,CAAC,0BAA0B,CAAC;AACtF,OAAO,MAAMK,oBAAoB,GAAGL,mBAAmB,CAAC,uBAAuB,CAAC;AAChF,OAAO,MAAMM,eAAe,GAAGN,mBAAmB,CAAC,iBAAiB,CAAC;AACrE,OAAO,MAAMO,gBAAgB,GAAGP,mBAAmB,CAAC,kBAAkB,CAAC;AACvE,OAAO,MAAMQ,kBAAkB,GAAGR,mBAAmB,CAAC,qBAAqB,CAAC;AAC5E,OAAO,MAAMS,yBAAyB,GAAGT,mBAAmB,CAAC,6BAA6B,CAAC;AAC3F,OAAO,MAAMU,kBAAkB,GAAGV,mBAAmB,CAAC,qBAAqB,CAAC;AAC5E,OAAO,MAAMW,yBAAyB,GAAGX,mBAAmB,CAAC,6BAA6B,CAAC;AAC3F,OAAO,MAAMY,iBAAiB,GAAGZ,mBAAmB,CAAC,oBAAoB,CAAC;AAC1E,OAAO,MAAMa,wBAAwB,GAAGb,mBAAmB,CAAC,4BAA4B,CAAC;AACzF,OAAO,MAAMc,iBAAiB,GAAGd,mBAAmB,CAAC,oBAAoB,CAAC;AAC1E,OAAO,MAAMe,wBAAwB,GAAGf,mBAAmB,CAAC,4BAA4B,CAAC;;AAEzF;AACA,OAAO,MAAMgB,iBAAiB,GAAGf,0BAA0B,CAAC,mBAAmB,EAAEC,yBAAyB,EAAE,CAAC;AAC7G,OAAO,MAAMe,kBAAkB,GAAGhB,0BAA0B,CAAC,qBAAqB,EAAEC,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAAA,SAE/GgB,iBAAiB"}
@@ -21,7 +21,7 @@ export const emptyNested = {
21
21
  };
22
22
  export const makeNestedProps = propsFactory({
23
23
  selectStrategy: [String, Function],
24
- openStrategy: [String, Function],
24
+ openStrategy: [String, Object],
25
25
  opened: Array,
26
26
  selected: Array,
27
27
  mandatory: Boolean
@@ -48,7 +48,7 @@ export const useNested = props => {
48
48
  }
49
49
  });
50
50
  const openStrategy = computed(() => {
51
- if (typeof props.openStrategy === 'function') return props.openStrategy;
51
+ if (typeof props.openStrategy === 'object') return props.openStrategy;
52
52
  switch (props.openStrategy) {
53
53
  case 'list':
54
54
  return listOpenStrategy;
@@ -1 +1 @@
1
- {"version":3,"file":"nested.mjs","names":["useProxiedModel","getCurrentInstance","getUid","propsFactory","computed","inject","onBeforeUnmount","provide","ref","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","parents","Map","children","open","openOnSelect","select","opened","Set","selected","selectedValues","makeNestedProps","selectStrategy","String","Function","openStrategy","Array","mandatory","Boolean","useNested","props","isUnmounted","v","values","value","in","out","getPath","path","parent","unshift","get","vm","nested","arr","key","entries","push","parentId","isGroup","set","delete","list","filter","child","event","emit","newOpened","newSelected","useNestedItem","computedId","item","e","isOpen","has","isSelected","isIndeterminate","isLeaf","isGroupActivator","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["import { useProxiedModel } from '@/composables/proxiedModel'\nimport { getCurrentInstance, getUid, propsFactory } from '@/util'\nimport { computed, inject, onBeforeUnmount, provide, ref } from 'vue'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n} from './selectStrategies'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { SelectStrategyFn } from './selectStrategies'\nimport type { OpenStrategy } from './openStrategies'\n\nexport type SelectStrategy = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | 'classic' | SelectStrategyFn\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n selectStrategy: SelectStrategy | undefined\n openStrategy: OpenStrategyProp | undefined\n selected: unknown[] | undefined\n opened: unknown[] | undefined\n mandatory: boolean\n 'onUpdate:selected': ((val: unknown[]) => void) | undefined\n 'onUpdate:opened': ((val: unknown[]) => void) | undefined\n}\n\ntype NestedProvide = {\n id: Ref<unknown>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<unknown, unknown[]>>\n parents: Ref<Map<unknown, unknown>>\n opened: Ref<Set<unknown>>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n register: (id: unknown, parentId: unknown, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: ref(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n openOnSelect: () => null,\n select: () => null,\n opened: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n },\n}\n\nexport const makeNestedProps = propsFactory({\n selectStrategy: [String, Function] as PropType<SelectStrategy>,\n openStrategy: [String, Function] as PropType<OpenStrategyProp>,\n opened: Array as PropType<unknown[]>,\n selected: Array as PropType<unknown[]>,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = ref(new Map<unknown, unknown[]>())\n const parents = ref(new Map<unknown, unknown>())\n\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()])\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSingleSelectStrategy(props.mandatory)\n case 'leaf': return leafSelectStrategy(props.mandatory)\n case 'independent': return independentSelectStrategy(props.mandatory)\n case 'single-independent': return independentSingleSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'function') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'list': return listOpenStrategy\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = id\n\n while (parent != null) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nested: NestedProvide = {\n id: ref(),\n root: {\n opened,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isGroup) => {\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n children.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n opened.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n openOnSelect: (id, value, event) => {\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n children,\n parents,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: Ref<unknown>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const computedId = computed(() => id.value ?? Symbol(getUid()))\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n select: (selected: boolean, e?: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator,\n }\n\n !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup)\n\n onBeforeUnmount(() => {\n !parent.isGroupActivator && parent.root.unregister(computedId.value)\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, isGroupActivator: true })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"nested.mjs","names":["useProxiedModel","getCurrentInstance","getUid","propsFactory","computed","inject","onBeforeUnmount","provide","ref","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","parents","Map","children","open","openOnSelect","select","opened","Set","selected","selectedValues","makeNestedProps","selectStrategy","String","Function","openStrategy","Object","Array","mandatory","Boolean","useNested","props","isUnmounted","v","values","value","in","out","getPath","path","parent","unshift","get","vm","nested","arr","key","entries","push","parentId","isGroup","set","delete","list","filter","child","event","emit","newOpened","newSelected","useNestedItem","computedId","item","e","isOpen","has","isSelected","isIndeterminate","isLeaf","isGroupActivator","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["import { useProxiedModel } from '@/composables/proxiedModel'\nimport { getCurrentInstance, getUid, propsFactory } from '@/util'\nimport { computed, inject, onBeforeUnmount, provide, ref } from 'vue'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n} from './selectStrategies'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { SelectStrategyFn } from './selectStrategies'\nimport type { OpenStrategy } from './openStrategies'\n\nexport type SelectStrategy = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | 'classic' | SelectStrategyFn\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n selectStrategy: SelectStrategy | undefined\n openStrategy: OpenStrategyProp | undefined\n selected: unknown[] | undefined\n opened: unknown[] | undefined\n mandatory: boolean\n 'onUpdate:selected': ((val: unknown[]) => void) | undefined\n 'onUpdate:opened': ((val: unknown[]) => void) | undefined\n}\n\ntype NestedProvide = {\n id: Ref<unknown>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<unknown, unknown[]>>\n parents: Ref<Map<unknown, unknown>>\n opened: Ref<Set<unknown>>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n register: (id: unknown, parentId: unknown, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: ref(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n openOnSelect: () => null,\n select: () => null,\n opened: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n },\n}\n\nexport const makeNestedProps = propsFactory({\n selectStrategy: [String, Function] as PropType<SelectStrategy>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: Array as PropType<unknown[]>,\n selected: Array as PropType<unknown[]>,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = ref(new Map<unknown, unknown[]>())\n const parents = ref(new Map<unknown, unknown>())\n\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()])\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSingleSelectStrategy(props.mandatory)\n case 'leaf': return leafSelectStrategy(props.mandatory)\n case 'independent': return independentSelectStrategy(props.mandatory)\n case 'single-independent': return independentSingleSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'list': return listOpenStrategy\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = id\n\n while (parent != null) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nested: NestedProvide = {\n id: ref(),\n root: {\n opened,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isGroup) => {\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n children.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n opened.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n openOnSelect: (id, value, event) => {\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n children,\n parents,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: Ref<unknown>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const computedId = computed(() => id.value ?? Symbol(getUid()))\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n select: (selected: boolean, e?: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator,\n }\n\n !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup)\n\n onBeforeUnmount(() => {\n !parent.isGroupActivator && parent.root.unregister(computedId.value)\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, isGroupActivator: true })\n}\n"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { effectScope, watch } from 'vue';
1
+ import { effectScope, onScopeDispose, watch } from 'vue';
2
2
  export function useToggleScope(source, cb) {
3
3
  let scope;
4
4
  watch(source, active => {
5
5
  if (active && !scope) {
6
6
  scope = effectScope();
7
7
  scope.run(cb);
8
- } else {
8
+ } else if (!active) {
9
9
  var _scope;
10
10
  (_scope = scope) == null ? void 0 : _scope.stop();
11
11
  scope = undefined;
@@ -13,5 +13,9 @@ export function useToggleScope(source, cb) {
13
13
  }, {
14
14
  immediate: true
15
15
  });
16
+ onScopeDispose(() => {
17
+ var _scope2;
18
+ (_scope2 = scope) == null ? void 0 : _scope2.stop();
19
+ });
16
20
  }
17
21
  //# sourceMappingURL=toggleScope.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggleScope.mjs","names":["effectScope","watch","useToggleScope","source","cb","scope","active","run","stop","undefined","immediate"],"sources":["../../src/composables/toggleScope.ts"],"sourcesContent":["import { effectScope, 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 {\n scope?.stop()\n scope = undefined\n }\n }, { immediate: true })\n}\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,KAAK,QAAQ,KAAK;AAGxC,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,GAAGL,WAAW,EAAE;MACrBK,KAAK,CAACE,GAAG,CAACH,EAAE,CAAC;IACf,CAAC,MAAM;MAAA;MACL,UAAAC,KAAK,qBAAL,OAAOG,IAAI,EAAE;MACbH,KAAK,GAAGI,SAAS;IACnB;EACF,CAAC,EAAE;IAAEC,SAAS,EAAE;EAAK,CAAC,CAAC;AACzB"}
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"}
@@ -10,7 +10,7 @@ export const createVuetify = function () {
10
10
  ...options
11
11
  });
12
12
  };
13
- export const version = "3.0.1";
13
+ export const version = "3.0.3";
14
14
  createVuetify.version = version;
15
15
  export { components, directives };
16
16
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -87,7 +87,7 @@ export function createVuetify() {
87
87
  locale
88
88
  };
89
89
  }
90
- export const version = "3.0.1";
90
+ export const version = "3.0.3";
91
91
  createVuetify.version = version;
92
92
 
93
93
  // Vue's inject() can only be used in setup
package/lib/index.d.ts CHANGED
@@ -347,6 +347,7 @@ declare module '@vue/runtime-core' {
347
347
  VSlideYReverseTransition: typeof import('vuetify/components')['VSlideYReverseTransition']
348
348
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
349
349
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
350
+ VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
350
351
  VAppBar: typeof import('vuetify/components')['VAppBar']
351
352
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
352
353
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
@@ -354,15 +355,15 @@ declare module '@vue/runtime-core' {
354
355
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
355
356
  VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
356
357
  VAvatar: typeof import('vuetify/components')['VAvatar']
358
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
357
359
  VBadge: typeof import('vuetify/components')['VBadge']
358
360
  VBanner: typeof import('vuetify/components')['VBanner']
359
361
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
360
362
  VBannerText: typeof import('vuetify/components')['VBannerText']
361
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
363
+ VBtn: typeof import('vuetify/components')['VBtn']
362
364
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
363
365
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
364
366
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
365
- VBtn: typeof import('vuetify/components')['VBtn']
366
367
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
367
368
  VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
368
369
  VCard: typeof import('vuetify/components')['VCard']
@@ -371,12 +372,11 @@ declare module '@vue/runtime-core' {
371
372
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
372
373
  VCardText: typeof import('vuetify/components')['VCardText']
373
374
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
374
- VCarousel: typeof import('vuetify/components')['VCarousel']
375
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
376
375
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
377
376
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
378
- VChip: typeof import('vuetify/components')['VChip']
379
377
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
378
+ VChip: typeof import('vuetify/components')['VChip']
379
+ VCode: typeof import('vuetify/components')['VCode']
380
380
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
381
381
  VCombobox: typeof import('vuetify/components')['VCombobox']
382
382
  VCounter: typeof import('vuetify/components')['VCounter']
@@ -388,8 +388,8 @@ declare module '@vue/runtime-core' {
388
388
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
389
389
  VField: typeof import('vuetify/components')['VField']
390
390
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
391
- VFileInput: typeof import('vuetify/components')['VFileInput']
392
391
  VFooter: typeof import('vuetify/components')['VFooter']
392
+ VFileInput: typeof import('vuetify/components')['VFileInput']
393
393
  VIcon: typeof import('vuetify/components')['VIcon']
394
394
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
395
395
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
@@ -422,16 +422,16 @@ declare module '@vue/runtime-core' {
422
422
  VRating: typeof import('vuetify/components')['VRating']
423
423
  VSelect: typeof import('vuetify/components')['VSelect']
424
424
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
425
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
426
425
  VSheet: typeof import('vuetify/components')['VSheet']
426
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
427
427
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
428
428
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
429
429
  VSlider: typeof import('vuetify/components')['VSlider']
430
430
  VSnackbar: typeof import('vuetify/components')['VSnackbar']
431
431
  VSwitch: typeof import('vuetify/components')['VSwitch']
432
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
433
432
  VTabs: typeof import('vuetify/components')['VTabs']
434
433
  VTab: typeof import('vuetify/components')['VTab']
434
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
435
435
  VTable: typeof import('vuetify/components')['VTable']
436
436
  VTextarea: typeof import('vuetify/components')['VTextarea']
437
437
  VTextField: typeof import('vuetify/components')['VTextField']
@@ -443,6 +443,7 @@ declare module '@vue/runtime-core' {
443
443
  VTooltip: typeof import('vuetify/components')['VTooltip']
444
444
  VWindow: typeof import('vuetify/components')['VWindow']
445
445
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
446
- VCode: typeof import('vuetify/components')['VCode']
446
+ VCarousel: typeof import('vuetify/components')['VCarousel']
447
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
447
448
  }
448
449
  }
@@ -1,9 +1,12 @@
1
1
  // Utils
2
- import { defineComponent as _defineComponent, effectScope, getCurrentInstance, shallowReactive, shallowRef, toRaw, watch, watchEffect } from 'vue';
2
+ import { defineComponent as _defineComponent,
3
+ // eslint-disable-line no-restricted-imports
4
+ getCurrentInstance, shallowReactive, shallowRef, toRaw, watchEffect } from 'vue';
3
5
  import { consoleWarn } from "./console.mjs";
4
6
  import { mergeDeep, toKebabCase } from "./helpers.mjs";
5
7
  import { injectSelf } from "./injectSelf.mjs";
6
- import { DefaultsSymbol, provideDefaults, useDefaults } from "../composables/defaults.mjs"; // Types
8
+ import { DefaultsSymbol, provideDefaults, useDefaults } from "../composables/defaults.mjs";
9
+ import { useToggleScope } from "../composables/toggleScope.mjs"; // Types
7
10
  import { propsFactory } from "./propsFactory.mjs";
8
11
  function propIsDefined(vnode, prop) {
9
12
  var _vnode$props, _vnode$props2;
@@ -47,17 +50,9 @@ export const defineComponent = function defineComponent(options) {
47
50
  }
48
51
  });
49
52
  const setupBindings = options._setup(_props, ctx);
50
- let scope;
51
- watch(_subcomponentDefaults, (val, oldVal) => {
52
- if (!val && scope) scope.stop();else if (val && !oldVal) {
53
- scope = effectScope();
54
- scope.run(() => {
55
- var _injectSelf;
56
- provideDefaults(mergeDeep(((_injectSelf = injectSelf(DefaultsSymbol)) == null ? void 0 : _injectSelf.value) ?? {}, val));
57
- });
58
- }
59
- }, {
60
- immediate: true
53
+ useToggleScope(_subcomponentDefaults, () => {
54
+ var _injectSelf;
55
+ provideDefaults(mergeDeep(((_injectSelf = injectSelf(DefaultsSymbol)) == null ? void 0 : _injectSelf.value) ?? {}, _subcomponentDefaults.value));
61
56
  });
62
57
  return setupBindings;
63
58
  };
@@ -1 +1 @@
1
- {"version":3,"file":"defineComponent.mjs","names":["defineComponent","_defineComponent","effectScope","getCurrentInstance","shallowReactive","shallowRef","toRaw","watch","watchEffect","consoleWarn","mergeDeep","toKebabCase","injectSelf","DefaultsSymbol","provideDefaults","useDefaults","propsFactory","propIsDefined","vnode","prop","props","hasOwnProperty","options","_setup","setup","name","_as","String","ctx","vm","defaults","_subcomponentDefaults","_props","globalDefaults","value","global","componentDefaults","subComponents","Object","entries","filter","key","startsWith","toUpperCase","length","fromEntries","keys","newVal","setupBindings","scope","val","oldVal","stop","run","immediate","genericComponent","exposeDefaults"],"sources":["../../src/util/defineComponent.tsx"],"sourcesContent":["// Utils\nimport {\n defineComponent as _defineComponent,\n effectScope,\n getCurrentInstance,\n shallowReactive,\n shallowRef,\n toRaw,\n watch,\n watchEffect,\n} from 'vue'\nimport { consoleWarn } from '@/util/console'\nimport { mergeDeep, toKebabCase } from '@/util/helpers'\nimport { injectSelf } from '@/util/injectSelf'\nimport { DefaultsSymbol, provideDefaults, useDefaults } from '@/composables/defaults'\n\n// Types\nimport type {\n ComponentOptions,\n ComponentOptionsMixin,\n ComponentOptionsWithObjectProps,\n ComponentPropsOptions,\n ComputedOptions,\n DefineComponent,\n EffectScope,\n EmitsOptions,\n MethodOptions,\n VNode,\n VNodeChild,\n} from 'vue'\nimport { propsFactory } from '@/util/propsFactory'\n\nfunction propIsDefined (vnode: VNode, prop: string) {\n return vnode.props?.hasOwnProperty(prop) ||\n vnode.props?.hasOwnProperty(toKebabCase(prop))\n}\n\nexport const defineComponent = (function defineComponent (options: ComponentOptions) {\n options._setup = options._setup ?? options.setup\n\n if (!options.name) {\n consoleWarn('The component is missing an explicit name, unable to generate default prop value')\n\n return options\n }\n\n if (options._setup) {\n options.props = options.props ?? {}\n\n options.props = propsFactory(options.props, toKebabCase(options.name))()\n\n options.props._as = String\n options.setup = function setup (props: Record<string, any>, ctx) {\n const vm = getCurrentInstance()!\n const defaults = useDefaults()\n\n const _subcomponentDefaults = shallowRef()\n const _props = shallowReactive({ ...toRaw(props) })\n watchEffect(() => {\n const globalDefaults = defaults.value.global\n const componentDefaults = defaults.value[props._as ?? options.name!]\n\n if (componentDefaults) {\n const subComponents = Object.entries(componentDefaults).filter(([key]) => key.startsWith(key[0].toUpperCase()))\n if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents)\n }\n\n for (const prop of Object.keys(props)) {\n let newVal = props[prop]\n if (!propIsDefined(vm.vnode, prop)) {\n newVal = componentDefaults?.[prop] ?? globalDefaults?.[prop] ?? props[prop]\n }\n if (_props[prop] !== newVal) {\n _props[prop] = newVal\n }\n }\n })\n\n const setupBindings = options._setup(_props, ctx)\n\n let scope: EffectScope\n watch(_subcomponentDefaults, (val, oldVal) => {\n if (!val && scope) scope.stop()\n else if (val && !oldVal) {\n scope = effectScope()\n scope.run(() => {\n provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, val))\n })\n }\n }, { immediate: true })\n\n return setupBindings\n }\n }\n\n return options\n}) as unknown as typeof _defineComponent\n\ntype ToListeners<T extends string | number | symbol> = { [K in T]: K extends `on${infer U}` ? Uncapitalize<U> : K }[T]\n\nexport type SlotsToProps<T extends Record<string, any>> = T extends Record<string, Slot> ? ({\n $children?: (\n | VNodeChild\n | (keyof T extends 'default' ? T['default'] : {})\n | { [K in keyof T]?: T[K] }\n )\n 'v-slots'?: { [K in keyof T]?: T[K] | false }\n} & {\n [K in keyof T as `v-slot:${K & string}`]?: T[K] | false\n}) : T extends Record<string, any[]> ? SlotsToProps<MakeSlots<T>> : never\n\ntype Slot<T extends any[] = any[]> = (...args: T) => VNodeChild\nexport type MakeSlots<T extends Record<string, any[]>> = {\n [K in keyof T]?: Slot<T[K]>\n}\n\nexport function genericComponent<T extends (new () => {\n $props?: Record<string, any>\n})> (exposeDefaults = true): <\n PropsOptions extends Readonly<ComponentPropsOptions>,\n RawBindings,\n D,\n C extends ComputedOptions = {},\n M extends MethodOptions = {},\n Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,\n Extends extends ComponentOptionsMixin = ComponentOptionsMixin,\n E extends EmitsOptions = Record<string, any>,\n EE extends string = string,\n I = InstanceType<T>,\n Base = DefineComponent<\n I extends Record<'$props', any>\n ? Omit<PropsOptions, keyof I['$props']>\n : PropsOptions,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n E extends any[] ? E : I extends Record<'$props', any> ? Omit<E, ToListeners<keyof I['$props']>> : E,\n EE\n >\n>(options: ComponentOptionsWithObjectProps<PropsOptions, RawBindings, D, C, M, Mixin, Extends, E, EE>) => Base & T {\n return options => (exposeDefaults ? defineComponent : _defineComponent)(options) as any\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"defineComponent.mjs","names":["defineComponent","_defineComponent","getCurrentInstance","shallowReactive","shallowRef","toRaw","watchEffect","consoleWarn","mergeDeep","toKebabCase","injectSelf","DefaultsSymbol","provideDefaults","useDefaults","useToggleScope","propsFactory","propIsDefined","vnode","prop","props","hasOwnProperty","options","_setup","setup","name","_as","String","ctx","vm","defaults","_subcomponentDefaults","_props","globalDefaults","value","global","componentDefaults","subComponents","Object","entries","filter","key","startsWith","toUpperCase","length","fromEntries","keys","newVal","setupBindings","genericComponent","exposeDefaults"],"sources":["../../src/util/defineComponent.tsx"],"sourcesContent":["// Utils\nimport {\n defineComponent as _defineComponent, // eslint-disable-line no-restricted-imports\n getCurrentInstance,\n shallowReactive,\n shallowRef,\n toRaw,\n watchEffect,\n} from 'vue'\nimport { consoleWarn } from '@/util/console'\nimport { mergeDeep, toKebabCase } from '@/util/helpers'\nimport { injectSelf } from '@/util/injectSelf'\nimport { DefaultsSymbol, provideDefaults, useDefaults } from '@/composables/defaults'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Types\nimport type {\n ComponentOptions,\n ComponentOptionsMixin,\n ComponentOptionsWithObjectProps,\n ComponentPropsOptions,\n ComputedOptions,\n DefineComponent,\n EmitsOptions,\n MethodOptions,\n VNode,\n VNodeChild,\n} from 'vue'\nimport { propsFactory } from '@/util/propsFactory'\n\nfunction propIsDefined (vnode: VNode, prop: string) {\n return vnode.props?.hasOwnProperty(prop) ||\n vnode.props?.hasOwnProperty(toKebabCase(prop))\n}\n\nexport const defineComponent = (function defineComponent (options: ComponentOptions) {\n options._setup = options._setup ?? options.setup\n\n if (!options.name) {\n consoleWarn('The component is missing an explicit name, unable to generate default prop value')\n\n return options\n }\n\n if (options._setup) {\n options.props = options.props ?? {}\n\n options.props = propsFactory(options.props, toKebabCase(options.name))()\n\n options.props._as = String\n options.setup = function setup (props: Record<string, any>, ctx) {\n const vm = getCurrentInstance()!\n const defaults = useDefaults()\n\n const _subcomponentDefaults = shallowRef()\n const _props = shallowReactive({ ...toRaw(props) })\n watchEffect(() => {\n const globalDefaults = defaults.value.global\n const componentDefaults = defaults.value[props._as ?? options.name!]\n\n if (componentDefaults) {\n const subComponents = Object.entries(componentDefaults).filter(([key]) => key.startsWith(key[0].toUpperCase()))\n if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents)\n }\n\n for (const prop of Object.keys(props)) {\n let newVal = props[prop]\n if (!propIsDefined(vm.vnode, prop)) {\n newVal = componentDefaults?.[prop] ?? globalDefaults?.[prop] ?? props[prop]\n }\n if (_props[prop] !== newVal) {\n _props[prop] = newVal\n }\n }\n })\n\n const setupBindings = options._setup(_props, ctx)\n\n useToggleScope(_subcomponentDefaults, () => {\n provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value))\n })\n\n return setupBindings\n }\n }\n\n return options\n}) as unknown as typeof _defineComponent\n\ntype ToListeners<T extends string | number | symbol> = { [K in T]: K extends `on${infer U}` ? Uncapitalize<U> : K }[T]\n\nexport type SlotsToProps<T extends Record<string, any>> = T extends Record<string, Slot> ? ({\n $children?: (\n | VNodeChild\n | (keyof T extends 'default' ? T['default'] : {})\n | { [K in keyof T]?: T[K] }\n )\n 'v-slots'?: { [K in keyof T]?: T[K] | false }\n} & {\n [K in keyof T as `v-slot:${K & string}`]?: T[K] | false\n}) : T extends Record<string, any[]> ? SlotsToProps<MakeSlots<T>> : never\n\ntype Slot<T extends any[] = any[]> = (...args: T) => VNodeChild\nexport type MakeSlots<T extends Record<string, any[]>> = {\n [K in keyof T]?: Slot<T[K]>\n}\n\nexport function genericComponent<T extends (new () => {\n $props?: Record<string, any>\n})> (exposeDefaults = true): <\n PropsOptions extends Readonly<ComponentPropsOptions>,\n RawBindings,\n D,\n C extends ComputedOptions = {},\n M extends MethodOptions = {},\n Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,\n Extends extends ComponentOptionsMixin = ComponentOptionsMixin,\n E extends EmitsOptions = Record<string, any>,\n EE extends string = string,\n I = InstanceType<T>,\n Base = DefineComponent<\n I extends Record<'$props', any>\n ? Omit<PropsOptions, keyof I['$props']>\n : PropsOptions,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n E extends any[] ? E : I extends Record<'$props', any> ? Omit<E, ToListeners<keyof I['$props']>> : E,\n EE\n >\n>(options: ComponentOptionsWithObjectProps<PropsOptions, RawBindings, D, C, M, Mixin, Extends, E, EE>) => Base & T {\n return options => (exposeDefaults ? defineComponent : _defineComponent)(options) as any\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vuetify",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.0.1",
4
+ "version": "3.0.3",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"
@@ -180,5 +180,5 @@
180
180
  "attributes": "dist/json/attributes.json"
181
181
  },
182
182
  "web-types": "dist/json/web-types.json",
183
- "gitHead": "56ba931ac41bdd6fe699e089869121c1e6ec5b45"
183
+ "gitHead": "bdd10cfe940ae40ec401b477a825bf85e4b558b6"
184
184
  }