@vuetify/nightly 3.11.2-dev.2025-12-03 → 3.11.2-dev.2025-12-06

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 (43) hide show
  1. package/CHANGELOG.md +14 -3
  2. package/dist/json/attributes.json +2019 -2015
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +178 -178
  5. package/dist/json/tags.json +1 -0
  6. package/dist/json/web-types.json +3666 -3656
  7. package/dist/vuetify-labs.cjs +46 -8
  8. package/dist/vuetify-labs.css +3910 -3896
  9. package/dist/vuetify-labs.d.ts +86 -70
  10. package/dist/vuetify-labs.esm.js +46 -8
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +46 -8
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +46 -8
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +6857 -6843
  17. package/dist/vuetify.d.ts +86 -70
  18. package/dist/vuetify.esm.js +46 -8
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +46 -8
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +23 -17
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VHotkey/_variables.scss +1 -0
  26. package/lib/components/VOtpInput/VOtpInput.css +15 -1
  27. package/lib/components/VOtpInput/VOtpInput.d.ts +29 -0
  28. package/lib/components/VOtpInput/VOtpInput.js +8 -2
  29. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  30. package/lib/components/VOtpInput/VOtpInput.sass +11 -2
  31. package/lib/components/VOtpInput/_variables.scss +1 -0
  32. package/lib/components/VWindow/VWindow.js +3 -3
  33. package/lib/components/VWindow/VWindow.js.map +1 -1
  34. package/lib/composables/nested/nested.d.ts +1 -1
  35. package/lib/composables/nested/nested.js +3 -1
  36. package/lib/composables/nested/nested.js.map +1 -1
  37. package/lib/composables/nested/selectStrategies.d.ts +1 -0
  38. package/lib/composables/nested/selectStrategies.js +31 -0
  39. package/lib/composables/nested/selectStrategies.js.map +1 -1
  40. package/lib/entry-bundler.js +1 -1
  41. package/lib/framework.d.ts +69 -69
  42. package/lib/framework.js +1 -1
  43. package/package.json +6 -4
@@ -1 +1 @@
1
- {"version":3,"file":"nested.js","names":["useProxiedModel","computed","inject","nextTick","onBeforeMount","onBeforeUnmount","provide","ref","shallowRef","toRaw","toRef","toValue","watch","independentActiveStrategy","independentSingleActiveStrategy","leafActiveStrategy","leafSingleActiveStrategy","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","trunkSelectStrategy","consoleError","getCurrentInstance","propsFactory","throttle","VNestedSymbol","Symbol","for","emptyNested","id","root","itemsRegistration","register","unregister","children","Map","parents","disabled","Set","open","openOnSelect","activate","select","activatable","scrollToActive","selectable","opened","activated","selected","selectedValues","getPath","makeNestedProps","Boolean","activeStrategy","String","Function","Object","selectStrategy","openStrategy","mandatory","type","default","useNested","props","_ref","items","returnObject","isUnmounted","v","Array","isArray","map","i","values","value","in","out","path","parent","undefined","unshift","get","vm","nodeIds","itemsUpdatePropagation","updateInternalMaps","immediate","_parents","_children","_disabled","getValue","item","raw","stack","length","itemValue","childValues","child","childValue","set","push","add","nested","arr","key","entries","parentId","isDisabled","isGroup","has","join","newPath","concat","delete","list","filter","event","emit","newOpened","newSelected","newActivated","size","useNestedItem","uidSymbol","computedId","idValue","e","isOpen","isActivated","isSelected","isIndeterminate","isLeaf","isGroupActivator","val","oldVal","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport {\n computed,\n inject,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n provide,\n ref,\n shallowRef,\n toRaw,\n toRef,\n toValue,\n watch,\n} from 'vue'\nimport {\n independentActiveStrategy,\n independentSingleActiveStrategy,\n leafActiveStrategy,\n leafSingleActiveStrategy,\n} from './activeStrategies'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n trunkSelectStrategy,\n} from './selectStrategies'\nimport { consoleError, getCurrentInstance, propsFactory, throttle } from '@/util'\n\n// Types\nimport type { InjectionKey, MaybeRefOrGetter, PropType, Ref } from 'vue'\nimport type { ActiveStrategy } from './activeStrategies'\nimport type { OpenStrategy } from './openStrategies'\nimport type { SelectStrategy } from './selectStrategies'\nimport type { ListItem } from '@/composables/list-items'\nimport type { EventProp } from '@/util'\n\nexport type ActiveStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | ActiveStrategy\n | ((mandatory: boolean) => ActiveStrategy)\nexport type SelectStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | 'classic'\n | 'trunk'\n | SelectStrategy\n | ((mandatory: boolean) => SelectStrategy)\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\nexport type ItemsRegistrationType = 'props' | 'render'\n\nexport interface NestedProps {\n activatable: boolean\n selectable: boolean\n activeStrategy: ActiveStrategyProp | undefined\n selectStrategy: SelectStrategyProp | undefined\n openStrategy: OpenStrategyProp | undefined\n activated: any\n selected: any\n opened: any\n mandatory: boolean\n itemsRegistration: ItemsRegistrationType\n 'onUpdate:activated': EventProp<[any]> | undefined\n 'onUpdate:selected': EventProp<[any]> | undefined\n 'onUpdate:opened': EventProp<[any]> | 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 disabled: Ref<Set<unknown>>\n activatable: Ref<boolean>\n selectable: Ref<boolean>\n opened: Ref<Set<unknown>>\n activated: Ref<Set<unknown>>\n scrollToActive: Ref<boolean>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n itemsRegistration: Ref<ItemsRegistrationType>\n register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n activate: (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 getPath: (id: unknown) => unknown[]\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: shallowRef(),\n root: {\n itemsRegistration: ref('render'),\n register: () => null,\n unregister: () => null,\n children: ref(new Map()),\n parents: ref(new Map()),\n disabled: ref(new Set()),\n open: () => null,\n openOnSelect: () => null,\n activate: () => null,\n select: () => null,\n activatable: ref(false),\n scrollToActive: ref(false),\n selectable: ref(false),\n opened: ref(new Set()),\n activated: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n getPath: () => [],\n },\n}\n\nexport const makeNestedProps = propsFactory({\n activatable: Boolean,\n selectable: Boolean,\n activeStrategy: [String, Function, Object] as PropType<ActiveStrategyProp>,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: null,\n activated: null,\n selected: null,\n mandatory: Boolean,\n itemsRegistration: {\n type: String as PropType<ItemsRegistrationType>,\n default: 'render',\n },\n}, 'nested')\n\nexport const useNested = (\n props: NestedProps,\n {\n items,\n returnObject,\n scrollToActive,\n }: {\n items: Ref<ListItem[]>\n returnObject: MaybeRefOrGetter<boolean>\n scrollToActive: MaybeRefOrGetter<boolean>\n },\n) => {\n let isUnmounted = false\n const children = shallowRef(new Map<unknown, unknown[]>())\n const parents = shallowRef(new Map<unknown, unknown>())\n const disabled = shallowRef(new Set<unknown>())\n\n const opened = useProxiedModel(\n props,\n 'opened',\n props.opened,\n v => new Set(Array.isArray(v) ? v.map(i => toRaw(i)) : v),\n v => [...v.values()],\n )\n\n const activeStrategy = computed(() => {\n if (typeof props.activeStrategy === 'object') return props.activeStrategy\n if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory)\n\n switch (props.activeStrategy) {\n case 'leaf': return leafActiveStrategy(props.mandatory)\n case 'single-leaf': return leafSingleActiveStrategy(props.mandatory)\n case 'independent': return independentActiveStrategy(props.mandatory)\n case 'single-independent':\n default: return independentSingleActiveStrategy(props.mandatory)\n }\n })\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory)\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 'trunk': return trunkSelectStrategy(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 activated = useProxiedModel(\n props,\n 'activated',\n props.activated,\n v => activeStrategy.value.in(v, children.value, parents.value),\n v => activeStrategy.value.out(v, children.value, parents.value),\n )\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value, disabled.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 = toRaw(id)\n\n while (parent !== undefined) {\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 nodeIds = new Set<unknown>()\n\n const itemsUpdatePropagation = throttle(() => {\n nextTick(() => {\n children.value = new Map(children.value)\n parents.value = new Map(parents.value)\n })\n }, 100)\n\n watch(() => [items.value, toValue(returnObject)], () => {\n if (props.itemsRegistration === 'props') {\n updateInternalMaps()\n }\n }, { immediate: true })\n\n function updateInternalMaps () {\n const _parents = new Map()\n const _children = new Map()\n const _disabled = new Set()\n\n const getValue = toValue(returnObject)\n ? (item: ListItem) => toRaw(item.raw)\n : (item: ListItem) => item.value\n\n const stack = [...items.value]\n let i = 0\n while (i < stack.length) {\n const item = stack[i++]\n const itemValue = getValue(item)\n\n if (item.children) {\n const childValues = []\n for (const child of item.children) {\n const childValue = getValue(child)\n _parents.set(childValue, itemValue)\n childValues.push(childValue)\n stack.push(child)\n }\n _children.set(itemValue, childValues)\n }\n\n if (item.props.disabled) {\n _disabled.add(itemValue)\n }\n }\n\n children.value = _children\n parents.value = _parents\n disabled.value = _disabled\n }\n\n const nested: NestedProvide = {\n id: shallowRef(),\n root: {\n opened,\n activatable: toRef(() => props.activatable),\n scrollToActive: toRef(() => toValue(scrollToActive)),\n selectable: toRef(() => props.selectable),\n activated,\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 itemsRegistration: toRef(() => props.itemsRegistration),\n register: (id, parentId, isDisabled, isGroup) => {\n if (nodeIds.has(id)) {\n const path = getPath(id).map(String).join(' -> ')\n const newPath = getPath(parentId).concat(id).map(String).join(' -> ')\n consoleError(`Multiple nodes with the same ID\\n\\t${path}\\n\\t${newPath}`)\n return\n } else {\n nodeIds.add(id)\n }\n\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isDisabled && disabled.value.add(id)\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n itemsUpdatePropagation()\n },\n unregister: id => {\n if (isUnmounted) return\n\n nodeIds.delete(id)\n children.value.delete(id)\n disabled.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 itemsUpdatePropagation()\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 disabled: disabled.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n activate: (id, value, event) => {\n if (!props.activatable) {\n return nested.root.select(id, true, event)\n }\n\n vm.emit('click:activate', { id, value, path: getPath(id), event })\n\n const newActivated = activeStrategy.value.activate({\n id,\n value,\n activated: new Set(activated.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n if (newActivated.size !== activated.value.size) {\n activated.value = newActivated\n } else {\n for (const value of newActivated) {\n if (!activated.value.has(value)) {\n activated.value = newActivated\n return\n }\n }\n for (const value of activated.value) {\n if (!newActivated.has(value)) {\n activated.value = newActivated\n return\n }\n }\n }\n },\n children,\n parents,\n disabled,\n getPath,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: MaybeRefOrGetter<unknown>, isDisabled: MaybeRefOrGetter<boolean>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol('nested item')\n const computedId = computed(() => {\n const idValue = toRaw(toValue(id))\n return idValue !== undefined ? idValue : uidSymbol\n })\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 activate: (activated: boolean, e?: Event) => parent.root.activate(computedId.value, activated, e),\n isActivated: computed(() => parent.root.activated.value.has(computedId.value)),\n scrollToActive: parent.root.scrollToActive,\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 onBeforeMount(() => {\n if (parent.isGroupActivator || parent.root.itemsRegistration.value === 'props') return\n nextTick(() => {\n parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup)\n })\n })\n\n onBeforeUnmount(() => {\n if (parent.isGroupActivator || parent.root.itemsRegistration.value === 'props') return\n parent.root.unregister(computedId.value)\n })\n\n watch(computedId, (val, oldVal) => {\n if (parent.isGroupActivator || parent.root.itemsRegistration.value === 'props') return\n parent.root.unregister(oldVal)\n nextTick(() => {\n parent.root.register(val, parent.id.value, toValue(isDisabled), isGroup)\n })\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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","ignoreList":[]}
1
+ {"version":3,"file":"nested.js","names":["useProxiedModel","computed","inject","nextTick","onBeforeMount","onBeforeUnmount","provide","ref","shallowRef","toRaw","toRef","toValue","watch","independentActiveStrategy","independentSingleActiveStrategy","leafActiveStrategy","leafSingleActiveStrategy","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","branchSelectStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","trunkSelectStrategy","consoleError","getCurrentInstance","propsFactory","throttle","VNestedSymbol","Symbol","for","emptyNested","id","root","itemsRegistration","register","unregister","children","Map","parents","disabled","Set","open","openOnSelect","activate","select","activatable","scrollToActive","selectable","opened","activated","selected","selectedValues","getPath","makeNestedProps","Boolean","activeStrategy","String","Function","Object","selectStrategy","openStrategy","mandatory","type","default","useNested","props","_ref","items","returnObject","isUnmounted","v","Array","isArray","map","i","values","value","in","out","path","parent","undefined","unshift","get","vm","nodeIds","itemsUpdatePropagation","updateInternalMaps","immediate","_parents","_children","_disabled","getValue","item","raw","stack","length","itemValue","childValues","child","childValue","set","push","add","nested","arr","key","entries","parentId","isDisabled","isGroup","has","join","newPath","concat","delete","list","filter","event","emit","newOpened","newSelected","newActivated","size","useNestedItem","uidSymbol","computedId","idValue","e","isOpen","isActivated","isSelected","isIndeterminate","isLeaf","isGroupActivator","val","oldVal","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport {\n computed,\n inject,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n provide,\n ref,\n shallowRef,\n toRaw,\n toRef,\n toValue,\n watch,\n} from 'vue'\nimport {\n independentActiveStrategy,\n independentSingleActiveStrategy,\n leafActiveStrategy,\n leafSingleActiveStrategy,\n} from './activeStrategies'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n branchSelectStrategy,\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n trunkSelectStrategy,\n} from './selectStrategies'\nimport { consoleError, getCurrentInstance, propsFactory, throttle } from '@/util'\n\n// Types\nimport type { InjectionKey, MaybeRefOrGetter, PropType, Ref } from 'vue'\nimport type { ActiveStrategy } from './activeStrategies'\nimport type { OpenStrategy } from './openStrategies'\nimport type { SelectStrategy } from './selectStrategies'\nimport type { ListItem } from '@/composables/list-items'\nimport type { EventProp } from '@/util'\n\nexport type ActiveStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | ActiveStrategy\n | ((mandatory: boolean) => ActiveStrategy)\nexport type SelectStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | 'classic'\n | 'trunk'\n | 'branch'\n | SelectStrategy\n | ((mandatory: boolean) => SelectStrategy)\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\nexport type ItemsRegistrationType = 'props' | 'render'\n\nexport interface NestedProps {\n activatable: boolean\n selectable: boolean\n activeStrategy: ActiveStrategyProp | undefined\n selectStrategy: SelectStrategyProp | undefined\n openStrategy: OpenStrategyProp | undefined\n activated: any\n selected: any\n opened: any\n mandatory: boolean\n itemsRegistration: ItemsRegistrationType\n 'onUpdate:activated': EventProp<[any]> | undefined\n 'onUpdate:selected': EventProp<[any]> | undefined\n 'onUpdate:opened': EventProp<[any]> | 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 disabled: Ref<Set<unknown>>\n activatable: Ref<boolean>\n selectable: Ref<boolean>\n opened: Ref<Set<unknown>>\n activated: Ref<Set<unknown>>\n scrollToActive: Ref<boolean>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n itemsRegistration: Ref<ItemsRegistrationType>\n register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n activate: (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 getPath: (id: unknown) => unknown[]\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: shallowRef(),\n root: {\n itemsRegistration: ref('render'),\n register: () => null,\n unregister: () => null,\n children: ref(new Map()),\n parents: ref(new Map()),\n disabled: ref(new Set()),\n open: () => null,\n openOnSelect: () => null,\n activate: () => null,\n select: () => null,\n activatable: ref(false),\n scrollToActive: ref(false),\n selectable: ref(false),\n opened: ref(new Set()),\n activated: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n getPath: () => [],\n },\n}\n\nexport const makeNestedProps = propsFactory({\n activatable: Boolean,\n selectable: Boolean,\n activeStrategy: [String, Function, Object] as PropType<ActiveStrategyProp>,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: null,\n activated: null,\n selected: null,\n mandatory: Boolean,\n itemsRegistration: {\n type: String as PropType<ItemsRegistrationType>,\n default: 'render',\n },\n}, 'nested')\n\nexport const useNested = (\n props: NestedProps,\n {\n items,\n returnObject,\n scrollToActive,\n }: {\n items: Ref<ListItem[]>\n returnObject: MaybeRefOrGetter<boolean>\n scrollToActive: MaybeRefOrGetter<boolean>\n },\n) => {\n let isUnmounted = false\n const children = shallowRef(new Map<unknown, unknown[]>())\n const parents = shallowRef(new Map<unknown, unknown>())\n const disabled = shallowRef(new Set<unknown>())\n\n const opened = useProxiedModel(\n props,\n 'opened',\n props.opened,\n v => new Set(Array.isArray(v) ? v.map(i => toRaw(i)) : v),\n v => [...v.values()],\n )\n\n const activeStrategy = computed(() => {\n if (typeof props.activeStrategy === 'object') return props.activeStrategy\n if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory)\n\n switch (props.activeStrategy) {\n case 'leaf': return leafActiveStrategy(props.mandatory)\n case 'single-leaf': return leafSingleActiveStrategy(props.mandatory)\n case 'independent': return independentActiveStrategy(props.mandatory)\n case 'single-independent':\n default: return independentSingleActiveStrategy(props.mandatory)\n }\n })\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory)\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 'trunk': return trunkSelectStrategy(props.mandatory)\n case 'branch': return branchSelectStrategy(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 activated = useProxiedModel(\n props,\n 'activated',\n props.activated,\n v => activeStrategy.value.in(v, children.value, parents.value),\n v => activeStrategy.value.out(v, children.value, parents.value),\n )\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value, disabled.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 = toRaw(id)\n\n while (parent !== undefined) {\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 nodeIds = new Set<unknown>()\n\n const itemsUpdatePropagation = throttle(() => {\n nextTick(() => {\n children.value = new Map(children.value)\n parents.value = new Map(parents.value)\n })\n }, 100)\n\n watch(() => [items.value, toValue(returnObject)], () => {\n if (props.itemsRegistration === 'props') {\n updateInternalMaps()\n }\n }, { immediate: true })\n\n function updateInternalMaps () {\n const _parents = new Map()\n const _children = new Map()\n const _disabled = new Set()\n\n const getValue = toValue(returnObject)\n ? (item: ListItem) => toRaw(item.raw)\n : (item: ListItem) => item.value\n\n const stack = [...items.value]\n let i = 0\n while (i < stack.length) {\n const item = stack[i++]\n const itemValue = getValue(item)\n\n if (item.children) {\n const childValues = []\n for (const child of item.children) {\n const childValue = getValue(child)\n _parents.set(childValue, itemValue)\n childValues.push(childValue)\n stack.push(child)\n }\n _children.set(itemValue, childValues)\n }\n\n if (item.props.disabled) {\n _disabled.add(itemValue)\n }\n }\n\n children.value = _children\n parents.value = _parents\n disabled.value = _disabled\n }\n\n const nested: NestedProvide = {\n id: shallowRef(),\n root: {\n opened,\n activatable: toRef(() => props.activatable),\n scrollToActive: toRef(() => toValue(scrollToActive)),\n selectable: toRef(() => props.selectable),\n activated,\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 itemsRegistration: toRef(() => props.itemsRegistration),\n register: (id, parentId, isDisabled, isGroup) => {\n if (nodeIds.has(id)) {\n const path = getPath(id).map(String).join(' -> ')\n const newPath = getPath(parentId).concat(id).map(String).join(' -> ')\n consoleError(`Multiple nodes with the same ID\\n\\t${path}\\n\\t${newPath}`)\n return\n } else {\n nodeIds.add(id)\n }\n\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isDisabled && disabled.value.add(id)\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n itemsUpdatePropagation()\n },\n unregister: id => {\n if (isUnmounted) return\n\n nodeIds.delete(id)\n children.value.delete(id)\n disabled.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 itemsUpdatePropagation()\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 disabled: disabled.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n activate: (id, value, event) => {\n if (!props.activatable) {\n return nested.root.select(id, true, event)\n }\n\n vm.emit('click:activate', { id, value, path: getPath(id), event })\n\n const newActivated = activeStrategy.value.activate({\n id,\n value,\n activated: new Set(activated.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n if (newActivated.size !== activated.value.size) {\n activated.value = newActivated\n } else {\n for (const value of newActivated) {\n if (!activated.value.has(value)) {\n activated.value = newActivated\n return\n }\n }\n for (const value of activated.value) {\n if (!newActivated.has(value)) {\n activated.value = newActivated\n return\n }\n }\n }\n },\n children,\n parents,\n disabled,\n getPath,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: MaybeRefOrGetter<unknown>, isDisabled: MaybeRefOrGetter<boolean>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol('nested item')\n const computedId = computed(() => {\n const idValue = toRaw(toValue(id))\n return idValue !== undefined ? idValue : uidSymbol\n })\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 activate: (activated: boolean, e?: Event) => parent.root.activate(computedId.value, activated, e),\n isActivated: computed(() => parent.root.activated.value.has(computedId.value)),\n scrollToActive: parent.root.scrollToActive,\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 onBeforeMount(() => {\n if (parent.isGroupActivator || parent.root.itemsRegistration.value === 'props') return\n nextTick(() => {\n parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup)\n })\n })\n\n onBeforeUnmount(() => {\n if (parent.isGroupActivator || parent.root.itemsRegistration.value === 'props') return\n parent.root.unregister(computedId.value)\n })\n\n watch(computedId, (val, oldVal) => {\n if (parent.isGroupActivator || parent.root.itemsRegistration.value === 'props') return\n parent.root.unregister(oldVal)\n nextTick(() => {\n parent.root.register(val, parent.id.value, toValue(isDisabled), isGroup)\n })\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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","ignoreList":[]}
@@ -20,4 +20,5 @@ export declare const leafSelectStrategy: (mandatory?: boolean | undefined) => Se
20
20
  export declare const leafSingleSelectStrategy: (mandatory?: boolean | undefined) => SelectStrategy;
21
21
  export declare const classicSelectStrategy: (mandatory?: boolean | undefined) => SelectStrategy;
22
22
  export declare const trunkSelectStrategy: (mandatory?: boolean | undefined) => SelectStrategy;
23
+ export declare const branchSelectStrategy: (mandatory?: boolean | undefined) => SelectStrategy;
23
24
 
@@ -220,4 +220,35 @@ export const trunkSelectStrategy = mandatory => {
220
220
  };
221
221
  return strategy;
222
222
  };
223
+ export const branchSelectStrategy = mandatory => {
224
+ const parentStrategy = classicSelectStrategy(mandatory);
225
+ const strategy = {
226
+ select: parentStrategy.select,
227
+ in: (v, children, parents, disabled) => {
228
+ let map = new Map();
229
+ for (const id of v || []) {
230
+ if (children.has(id)) continue;
231
+ map = strategy.select({
232
+ id,
233
+ value: true,
234
+ selected: map,
235
+ children,
236
+ parents,
237
+ disabled
238
+ });
239
+ }
240
+ return map;
241
+ },
242
+ out: v => {
243
+ const arr = [];
244
+ for (const [key, value] of v.entries()) {
245
+ if (value === 'on' || value === 'indeterminate') {
246
+ arr.push(key);
247
+ }
248
+ }
249
+ return arr;
250
+ }
251
+ };
252
+ return strategy;
253
+ };
223
254
  //# sourceMappingURL=selectStrategies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectStrategies.js","names":["toRaw","independentSelectStrategy","mandatory","strategy","select","_ref","id","value","selected","on","Array","from","entries","reduce","arr","_ref2","key","push","length","set","in","v","children","parents","disabled","map","Map","out","independentSingleSelectStrategy","parentStrategy","_ref3","rest","singleSelected","has","get","slice","leafSelectStrategy","_ref4","leafSingleSelectStrategy","_ref5","classicSelectStrategy","_ref6","original","items","item","shift","parent","everySelected","noneSelected","child","cid","_ref7","trunkSelectStrategy"],"sources":["../../../src/composables/nested/selectStrategies.ts"],"sourcesContent":["/* eslint-disable sonarjs/no-identical-functions */\n// Utilities\nimport { toRaw } from 'vue'\n\ntype SelectStrategyFunction = (data: {\n id: unknown\n value: boolean\n selected: Map<unknown, 'on' | 'off' | 'indeterminate'>\n children: Map<unknown, unknown[]>\n parents: Map<unknown, unknown>\n disabled: Set<unknown>\n event?: Event\n}) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\ntype SelectStrategyTransformInFunction = (\n v: readonly unknown[] | undefined,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n disabled: Set<unknown>,\n) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\ntype SelectStrategyTransformOutFunction = (\n v: Map<unknown, 'on' | 'off' | 'indeterminate'>,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => unknown[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFunction\n in: SelectStrategyTransformInFunction\n out: SelectStrategyTransformOutFunction\n}\n\nexport const independentSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected }) => {\n id = toRaw(id)\n\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] as unknown[])\n if (on.length === 1 && on[0] === id) return selected\n }\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents, disabled) => {\n const map = new Map()\n\n for (const id of (v || [])) {\n strategy.select({\n id,\n value: true,\n selected: map,\n children,\n parents,\n disabled,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const independentSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ selected, id, ...rest }) => {\n id = toRaw(id)\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)!]]) : new Map()\n return parentStrategy.select({ ...rest, id, selected: singleSelected })\n },\n in: (v, children, parents, disabled) => {\n if (v?.length) {\n return parentStrategy.in(v.slice(0, 1), children, parents, disabled)\n }\n\n return new Map()\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSingleSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents, disabled }) => {\n id = toRaw(id)\n const original = new Map(selected)\n\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n if (!disabled.has(item)) {\n selected.set(toRaw(item), value ? 'on' : 'off')\n }\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = toRaw(parents.get(id))\n\n while (parent) {\n let everySelected = true\n let noneSelected = true\n\n for (const child of children.get(parent)!) {\n const cid = toRaw(child)\n\n if (disabled.has(cid)) continue\n if (selected.get(cid) !== 'on') everySelected = false\n if (selected.has(cid) && selected.get(cid) !== 'off') noneSelected = false\n if (!everySelected && !noneSelected) break\n }\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = toRaw(parents.get(parent))\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] as unknown[])\n if (on.length === 0) return original\n }\n\n return selected\n },\n in: (v, children, parents, disabled) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: map,\n children,\n parents,\n disabled,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const trunkSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = classicSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: parentStrategy.select,\n in: parentStrategy.in,\n out: (v, children, parents) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') {\n if (parents.has(key)) {\n const parent = parents.get(key)\n if (v.get(parent) === 'on') continue\n }\n arr.push(key)\n }\n }\n\n return arr\n },\n }\n\n return strategy\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"selectStrategies.js","names":["toRaw","independentSelectStrategy","mandatory","strategy","select","_ref","id","value","selected","on","Array","from","entries","reduce","arr","_ref2","key","push","length","set","in","v","children","parents","disabled","map","Map","out","independentSingleSelectStrategy","parentStrategy","_ref3","rest","singleSelected","has","get","slice","leafSelectStrategy","_ref4","leafSingleSelectStrategy","_ref5","classicSelectStrategy","_ref6","original","items","item","shift","parent","everySelected","noneSelected","child","cid","_ref7","trunkSelectStrategy","branchSelectStrategy"],"sources":["../../../src/composables/nested/selectStrategies.ts"],"sourcesContent":["/* eslint-disable sonarjs/no-identical-functions */\n// Utilities\nimport { toRaw } from 'vue'\n\ntype SelectStrategyFunction = (data: {\n id: unknown\n value: boolean\n selected: Map<unknown, 'on' | 'off' | 'indeterminate'>\n children: Map<unknown, unknown[]>\n parents: Map<unknown, unknown>\n disabled: Set<unknown>\n event?: Event\n}) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\ntype SelectStrategyTransformInFunction = (\n v: readonly unknown[] | undefined,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n disabled: Set<unknown>,\n) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\ntype SelectStrategyTransformOutFunction = (\n v: Map<unknown, 'on' | 'off' | 'indeterminate'>,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => unknown[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFunction\n in: SelectStrategyTransformInFunction\n out: SelectStrategyTransformOutFunction\n}\n\nexport const independentSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected }) => {\n id = toRaw(id)\n\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] as unknown[])\n if (on.length === 1 && on[0] === id) return selected\n }\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents, disabled) => {\n const map = new Map()\n\n for (const id of (v || [])) {\n strategy.select({\n id,\n value: true,\n selected: map,\n children,\n parents,\n disabled,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const independentSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ selected, id, ...rest }) => {\n id = toRaw(id)\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)!]]) : new Map()\n return parentStrategy.select({ ...rest, id, selected: singleSelected })\n },\n in: (v, children, parents, disabled) => {\n if (v?.length) {\n return parentStrategy.in(v.slice(0, 1), children, parents, disabled)\n }\n\n return new Map()\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSingleSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents, disabled }) => {\n id = toRaw(id)\n const original = new Map(selected)\n\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n if (!disabled.has(item)) {\n selected.set(toRaw(item), value ? 'on' : 'off')\n }\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = toRaw(parents.get(id))\n\n while (parent) {\n let everySelected = true\n let noneSelected = true\n\n for (const child of children.get(parent)!) {\n const cid = toRaw(child)\n\n if (disabled.has(cid)) continue\n if (selected.get(cid) !== 'on') everySelected = false\n if (selected.has(cid) && selected.get(cid) !== 'off') noneSelected = false\n if (!everySelected && !noneSelected) break\n }\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = toRaw(parents.get(parent))\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] as unknown[])\n if (on.length === 0) return original\n }\n\n return selected\n },\n in: (v, children, parents, disabled) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: map,\n children,\n parents,\n disabled,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const trunkSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = classicSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: parentStrategy.select,\n in: parentStrategy.in,\n out: (v, children, parents) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') {\n if (parents.has(key)) {\n const parent = parents.get(key)\n if (v.get(parent) === 'on') continue\n }\n arr.push(key)\n }\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const branchSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = classicSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: parentStrategy.select,\n in: (v, children, parents, disabled) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n if (children.has(id)) continue\n map = strategy.select({\n id,\n value: true,\n selected: map,\n children,\n parents,\n disabled,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' || value === 'indeterminate') {\n arr.push(key)\n }\n }\n\n return arr\n },\n }\n\n return strategy\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.11.2-dev.2025-12-03";
19
+ export const version = "3.11.2-dev.2025-12-06";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -2778,24 +2778,24 @@ declare module 'vue' {
2778
2778
  $children?: VNodeChild
2779
2779
  }
2780
2780
  export interface GlobalComponents {
2781
+ VAppBar: typeof import('vuetify/components')['VAppBar']
2782
+ VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2783
+ VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2781
2784
  VApp: typeof import('vuetify/components')['VApp']
2782
2785
  VAlert: typeof import('vuetify/components')['VAlert']
2783
2786
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2784
2787
  VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2788
+ VBtn: typeof import('vuetify/components')['VBtn']
2785
2789
  VAvatar: typeof import('vuetify/components')['VAvatar']
2786
2790
  VBadge: typeof import('vuetify/components')['VBadge']
2787
2791
  VBanner: typeof import('vuetify/components')['VBanner']
2788
2792
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
2789
2793
  VBannerText: typeof import('vuetify/components')['VBannerText']
2790
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2791
- VBtn: typeof import('vuetify/components')['VBtn']
2792
- VAppBar: typeof import('vuetify/components')['VAppBar']
2793
- VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2794
- VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2795
2794
  VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2796
2795
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2797
2796
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2798
2797
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2798
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2799
2799
  VCard: typeof import('vuetify/components')['VCard']
2800
2800
  VCardActions: typeof import('vuetify/components')['VCardActions']
2801
2801
  VCardItem: typeof import('vuetify/components')['VCardItem']
@@ -2803,18 +2803,24 @@ declare module 'vue' {
2803
2803
  VCardText: typeof import('vuetify/components')['VCardText']
2804
2804
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2805
2805
  VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2806
+ VCarousel: typeof import('vuetify/components')['VCarousel']
2807
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2806
2808
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2807
2809
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
2808
2810
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2809
- VCalendar: typeof import('vuetify/components')['VCalendar']
2810
2811
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
2811
- VCarousel: typeof import('vuetify/components')['VCarousel']
2812
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2813
- VChip: typeof import('vuetify/components')['VChip']
2814
- VColorPicker: typeof import('vuetify/components')['VColorPicker']
2815
- VCounter: typeof import('vuetify/components')['VCounter']
2812
+ VCalendar: typeof import('vuetify/components')['VCalendar']
2816
2813
  VCode: typeof import('vuetify/components')['VCode']
2814
+ VDatePicker: typeof import('vuetify/components')['VDatePicker']
2815
+ VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2816
+ VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2817
+ VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2818
+ VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2819
+ VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2817
2820
  VCombobox: typeof import('vuetify/components')['VCombobox']
2821
+ VColorPicker: typeof import('vuetify/components')['VColorPicker']
2822
+ VCounter: typeof import('vuetify/components')['VCounter']
2823
+ VChip: typeof import('vuetify/components')['VChip']
2818
2824
  VDataTable: typeof import('vuetify/components')['VDataTable']
2819
2825
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
2820
2826
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2822,37 +2828,31 @@ declare module 'vue' {
2822
2828
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2823
2829
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2824
2830
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2825
- VDialog: typeof import('vuetify/components')['VDialog']
2826
- VDatePicker: typeof import('vuetify/components')['VDatePicker']
2827
- VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2828
- VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2829
- VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2830
- VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2831
- VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2832
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2833
- VDivider: typeof import('vuetify/components')['VDivider']
2834
- VField: typeof import('vuetify/components')['VField']
2835
- VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2836
2831
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2837
2832
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2838
2833
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2839
2834
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2840
- VFileInput: typeof import('vuetify/components')['VFileInput']
2835
+ VDialog: typeof import('vuetify/components')['VDialog']
2836
+ VDivider: typeof import('vuetify/components')['VDivider']
2841
2837
  VFab: typeof import('vuetify/components')['VFab']
2838
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
2839
+ VFileInput: typeof import('vuetify/components')['VFileInput']
2840
+ VField: typeof import('vuetify/components')['VField']
2841
+ VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2842
+ VHotkey: typeof import('vuetify/components')['VHotkey']
2842
2843
  VFooter: typeof import('vuetify/components')['VFooter']
2844
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2845
+ VImg: typeof import('vuetify/components')['VImg']
2846
+ VItemGroup: typeof import('vuetify/components')['VItemGroup']
2847
+ VItem: typeof import('vuetify/components')['VItem']
2848
+ VInput: typeof import('vuetify/components')['VInput']
2843
2849
  VIcon: typeof import('vuetify/components')['VIcon']
2844
2850
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2845
2851
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2846
2852
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2847
2853
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2848
- VHotkey: typeof import('vuetify/components')['VHotkey']
2849
- VImg: typeof import('vuetify/components')['VImg']
2850
- VInput: typeof import('vuetify/components')['VInput']
2851
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2852
- VItemGroup: typeof import('vuetify/components')['VItemGroup']
2853
- VItem: typeof import('vuetify/components')['VItem']
2854
2854
  VKbd: typeof import('vuetify/components')['VKbd']
2855
- VLabel: typeof import('vuetify/components')['VLabel']
2855
+ VMenu: typeof import('vuetify/components')['VMenu']
2856
2856
  VList: typeof import('vuetify/components')['VList']
2857
2857
  VListGroup: typeof import('vuetify/components')['VListGroup']
2858
2858
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -2862,78 +2862,79 @@ declare module 'vue' {
2862
2862
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
2863
2863
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2864
2864
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2865
- VMenu: typeof import('vuetify/components')['VMenu']
2866
- VMain: typeof import('vuetify/components')['VMain']
2867
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2868
2865
  VMessages: typeof import('vuetify/components')['VMessages']
2869
- VOverlay: typeof import('vuetify/components')['VOverlay']
2866
+ VNumberInput: typeof import('vuetify/components')['VNumberInput']
2867
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2868
+ VMain: typeof import('vuetify/components')['VMain']
2870
2869
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
2871
- VPagination: typeof import('vuetify/components')['VPagination']
2872
2870
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2873
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2874
- VNumberInput: typeof import('vuetify/components')['VNumberInput']
2871
+ VPagination: typeof import('vuetify/components')['VPagination']
2872
+ VOverlay: typeof import('vuetify/components')['VOverlay']
2875
2873
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2876
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2877
- VSelect: typeof import('vuetify/components')['VSelect']
2878
2874
  VRating: typeof import('vuetify/components')['VRating']
2879
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2875
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2876
+ VSelect: typeof import('vuetify/components')['VSelect']
2877
+ VLabel: typeof import('vuetify/components')['VLabel']
2880
2878
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2881
- VSlider: typeof import('vuetify/components')['VSlider']
2879
+ VSheet: typeof import('vuetify/components')['VSheet']
2880
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2881
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2882
2882
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2883
2883
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2884
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
2885
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
2886
+ VSlider: typeof import('vuetify/components')['VSlider']
2887
+ VSwitch: typeof import('vuetify/components')['VSwitch']
2884
2888
  VStepper: typeof import('vuetify/components')['VStepper']
2885
2889
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
2886
2890
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2887
2891
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
2888
2892
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2889
2893
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2890
- VSheet: typeof import('vuetify/components')['VSheet']
2891
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
2892
2894
  VTab: typeof import('vuetify/components')['VTab']
2893
2895
  VTabs: typeof import('vuetify/components')['VTabs']
2894
2896
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2895
2897
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2896
- VSwitch: typeof import('vuetify/components')['VSwitch']
2897
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
2898
- VTable: typeof import('vuetify/components')['VTable']
2899
2898
  VTextarea: typeof import('vuetify/components')['VTextarea']
2900
- VWindow: typeof import('vuetify/components')['VWindow']
2901
- VWindowItem: typeof import('vuetify/components')['VWindowItem']
2902
- VTimeline: typeof import('vuetify/components')['VTimeline']
2903
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2899
+ VTable: typeof import('vuetify/components')['VTable']
2904
2900
  VTextField: typeof import('vuetify/components')['VTextField']
2905
- VTooltip: typeof import('vuetify/components')['VTooltip']
2901
+ VToolbar: typeof import('vuetify/components')['VToolbar']
2902
+ VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2903
+ VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2906
2904
  VTimePicker: typeof import('vuetify/components')['VTimePicker']
2907
2905
  VTimePickerClock: typeof import('vuetify/components')['VTimePickerClock']
2908
2906
  VTimePickerControls: typeof import('vuetify/components')['VTimePickerControls']
2909
2907
  VTreeview: typeof import('vuetify/components')['VTreeview']
2910
2908
  VTreeviewItem: typeof import('vuetify/components')['VTreeviewItem']
2911
2909
  VTreeviewGroup: typeof import('vuetify/components')['VTreeviewGroup']
2912
- VToolbar: typeof import('vuetify/components')['VToolbar']
2913
- VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2914
- VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2915
- VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2910
+ VTooltip: typeof import('vuetify/components')['VTooltip']
2911
+ VWindow: typeof import('vuetify/components')['VWindow']
2912
+ VWindowItem: typeof import('vuetify/components')['VWindowItem']
2913
+ VTimeline: typeof import('vuetify/components')['VTimeline']
2914
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2916
2915
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
2916
+ VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2917
2917
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2918
- VHover: typeof import('vuetify/components')['VHover']
2919
2918
  VContainer: typeof import('vuetify/components')['VContainer']
2920
2919
  VCol: typeof import('vuetify/components')['VCol']
2921
2920
  VRow: typeof import('vuetify/components')['VRow']
2922
2921
  VSpacer: typeof import('vuetify/components')['VSpacer']
2923
2922
  VForm: typeof import('vuetify/components')['VForm']
2923
+ VHover: typeof import('vuetify/components')['VHover']
2924
2924
  VLazy: typeof import('vuetify/components')['VLazy']
2925
- VLayout: typeof import('vuetify/components')['VLayout']
2926
- VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2927
2925
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2928
2926
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2929
- VParallax: typeof import('vuetify/components')['VParallax']
2927
+ VLayout: typeof import('vuetify/components')['VLayout']
2928
+ VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2930
2929
  VRadio: typeof import('vuetify/components')['VRadio']
2930
+ VParallax: typeof import('vuetify/components')['VParallax']
2931
2931
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2932
2932
  VResponsive: typeof import('vuetify/components')['VResponsive']
2933
2933
  VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2934
2934
  VSparkline: typeof import('vuetify/components')['VSparkline']
2935
2935
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2936
2936
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2937
+ VValidation: typeof import('vuetify/components')['VValidation']
2937
2938
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2938
2939
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
2939
2940
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
@@ -2951,22 +2952,21 @@ declare module 'vue' {
2951
2952
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2952
2953
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2953
2954
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2954
- VValidation: typeof import('vuetify/components')['VValidation']
2955
- VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2956
- VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2955
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2956
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2957
2957
  VPie: typeof import('vuetify/labs/components')['VPie']
2958
2958
  VPieSegment: typeof import('vuetify/labs/components')['VPieSegment']
2959
2959
  VPieTooltip: typeof import('vuetify/labs/components')['VPieTooltip']
2960
- VPicker: typeof import('vuetify/labs/components')['VPicker']
2961
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2962
- VVideo: typeof import('vuetify/labs/components')['VVideo']
2963
- VVideoControls: typeof import('vuetify/labs/components')['VVideoControls']
2964
- VVideoVolume: typeof import('vuetify/labs/components')['VVideoVolume']
2960
+ VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2965
2961
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2966
2962
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2967
2963
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2968
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2969
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2964
+ VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2965
+ VVideo: typeof import('vuetify/labs/components')['VVideo']
2966
+ VVideoControls: typeof import('vuetify/labs/components')['VVideoControls']
2967
+ VVideoVolume: typeof import('vuetify/labs/components')['VVideoVolume']
2968
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
2969
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2970
2970
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2971
2971
  VMaskInput: typeof import('vuetify/labs/components')['VMaskInput']
2972
2972
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
package/lib/framework.js CHANGED
@@ -110,7 +110,7 @@ export function createVuetify() {
110
110
  };
111
111
  });
112
112
  }
113
- export const version = "3.11.2-dev.2025-12-03";
113
+ export const version = "3.11.2-dev.2025-12-06";
114
114
  createVuetify.version = version;
115
115
 
116
116
  // Vue's inject() can only be used in setup
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetify/nightly",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.11.2-dev.2025-12-03",
4
+ "version": "3.11.2-dev.2025-12-06",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"
@@ -115,12 +115,14 @@
115
115
  "build:types:lib": "tsgo --pretty --emitDeclarationOnly -p tsconfig.dist.json && node build/transform-types.js",
116
116
  "build:types:bundle": "rollup --config build/rollup.types.config.js",
117
117
  "tsc": "tsc",
118
+ "tdd": "vizzly tdd start",
119
+ "tdd:stop": "vizzly tdd stop",
118
120
  "test": "vitest",
119
121
  "test:unit": "vitest --project unit",
120
122
  "test:browser": "vitest --project browser",
121
123
  "test:open": "TEST_BAIL=1 vitest --project browser -w",
122
124
  "test:coverage": "pnpm test --coverage",
123
- "test:percy": "percy exec -- vitest --project browser",
125
+ "test:screen": "TEST_TDD_ONLY=1 node ../../scripts/tdd-run.js ",
124
126
  "test:all": "concurrently -gr 'vitest --project unit' 'vitest --project browser --shard=1/5' 'vitest --project browser --shard=2/5' 'vitest --project browser --shard=3/5' 'vitest --project browser --shard=4/5' 'vitest --project browser --shard=5/5'",
125
127
  "lint": "concurrently -n \"tsc,eslint\" --kill-others-on-fail \"tsgo -p tsconfig.checks.json --noEmit --pretty\" \"eslint src -f codeframe --max-warnings 0\"",
126
128
  "lint:fix": "concurrently -n \"tsc,eslint\" \"tsgo -p tsconfig.checks.json --noEmit --pretty\" \"eslint --fix src\""
@@ -135,8 +137,6 @@
135
137
  "@fortawesome/free-solid-svg-icons": "^6.7.2",
136
138
  "@fortawesome/vue-fontawesome": "^3.0.8",
137
139
  "@intlify/devtools-types": "^11.1.12",
138
- "@percy/cli": "^1.31.4",
139
- "@percy/sdk-utils": "^1.31.4",
140
140
  "@rollup/plugin-alias": "^5.1.1",
141
141
  "@rollup/plugin-babel": "^6.1.0",
142
142
  "@rollup/plugin-node-resolve": "^16.0.3",
@@ -149,6 +149,8 @@
149
149
  "@vitest/browser-playwright": "^4.0.13",
150
150
  "@vitest/coverage-istanbul": "^4.0.13",
151
151
  "@vitest/ui": "^4.0.13",
152
+ "@vizzly-testing/cli": "^0.16.4",
153
+ "@vizzly-testing/vitest": "^0.0.3",
152
154
  "@vue/reactivity": "^3.5.25",
153
155
  "@vue/shared": "^3.5.25",
154
156
  "@vue/test-utils": "^2.4.6",