@vuetify/nightly 3.6.7-master.2024-05-28 → 3.6.8-master.2024-05-30

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 (64) hide show
  1. package/CHANGELOG.md +2 -10
  2. package/dist/json/attributes.json +44 -12
  3. package/dist/json/importMap-labs.json +26 -26
  4. package/dist/json/importMap.json +118 -118
  5. package/dist/json/tags.json +8 -0
  6. package/dist/json/web-types.json +117 -45
  7. package/dist/vuetify-labs.css +1826 -1823
  8. package/dist/vuetify-labs.d.ts +528 -1392
  9. package/dist/vuetify-labs.esm.js +145 -43
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +145 -43
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +849 -846
  14. package/dist/vuetify.d.ts +423 -1127
  15. package/dist/vuetify.esm.js +41 -12
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +41 -12
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +16 -16
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAutocomplete/index.d.mts +102 -336
  23. package/lib/components/VCombobox/index.d.mts +102 -336
  24. package/lib/components/VDatePicker/VDatePickerMonth.mjs +3 -0
  25. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  26. package/lib/components/VDivider/VDivider.mjs +1 -1
  27. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  28. package/lib/components/VList/VList.mjs +3 -1
  29. package/lib/components/VList/VList.mjs.map +1 -1
  30. package/lib/components/VList/VListGroup.mjs +1 -0
  31. package/lib/components/VList/VListGroup.mjs.map +1 -1
  32. package/lib/components/VList/VListItem.css +2 -2
  33. package/lib/components/VList/VListItem.mjs +2 -0
  34. package/lib/components/VList/VListItem.mjs.map +1 -1
  35. package/lib/components/VList/VListItem.sass +1 -1
  36. package/lib/components/VList/index.d.mts +52 -66
  37. package/lib/components/VSelect/index.d.mts +102 -336
  38. package/lib/components/VSelectionControl/VSelectionControl.mjs +9 -1
  39. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  40. package/lib/components/VSnackbar/VSnackbar.css +1 -1
  41. package/lib/components/VSnackbar/VSnackbar.sass +1 -1
  42. package/lib/components/VStepper/VStepper.mjs +18 -4
  43. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  44. package/lib/components/VStepper/VStepperItem.css +3 -0
  45. package/lib/components/VStepper/VStepperItem.sass +3 -0
  46. package/lib/components/VStepper/index.d.mts +43 -9
  47. package/lib/components/VTabs/VTabs.mjs +2 -2
  48. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  49. package/lib/components/index.d.mts +379 -1083
  50. package/lib/composables/filter.mjs +1 -1
  51. package/lib/composables/filter.mjs.map +1 -1
  52. package/lib/entry-bundler.mjs +1 -1
  53. package/lib/framework.mjs +1 -1
  54. package/lib/index.d.mts +44 -44
  55. package/lib/labs/VStepperVertical/index.d.mts +43 -9
  56. package/lib/labs/VTreeview/VTreeview.mjs +1 -1
  57. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  58. package/lib/labs/VTreeview/VTreeviewChildren.mjs +30 -25
  59. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  60. package/lib/labs/VTreeview/VTreeviewItem.mjs +81 -10
  61. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  62. package/lib/labs/VTreeview/index.d.mts +110 -300
  63. package/lib/labs/components.d.mts +3402 -3558
  64. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
- import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
1
+ import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
2
  // Components
3
3
  import { VTreeviewGroup } from "./VTreeviewGroup.mjs";
4
4
  import { VTreeviewItem } from "./VTreeviewItem.mjs";
5
5
  import { VCheckboxBtn } from "../../components/VCheckbox/index.mjs"; // Utilities
6
- import { shallowRef } from 'vue';
6
+ import { shallowRef, withModifiers } from 'vue';
7
7
  import { genericComponent, propsFactory } from "../../util/index.mjs"; // Types
8
8
  export const makeVTreeviewChildrenProps = propsFactory({
9
9
  loadChildren: Function,
@@ -12,7 +12,8 @@ export const makeVTreeviewChildrenProps = propsFactory({
12
12
  default: '$loading'
13
13
  },
14
14
  items: Array,
15
- selectable: Boolean
15
+ selectable: Boolean,
16
+ selectStrategy: [String, Function, Object]
16
17
  }, 'VTreeviewChildren');
17
18
  export const VTreeviewChildren = genericComponent()({
18
19
  name: 'VTreeviewChildren',
@@ -36,9 +37,10 @@ export const VTreeviewChildren = genericComponent()({
36
37
  isLoading.value = null;
37
38
  });
38
39
  }
39
- function onClick(e, item) {
40
- e.stopPropagation();
41
- checkChildren(item);
40
+ function selectItem(select, isSelected) {
41
+ if (props.selectable) {
42
+ select(!isSelected);
43
+ }
42
44
  }
43
45
  return () => slots.default?.() ?? props.items?.map(_ref2 => {
44
46
  let {
@@ -48,23 +50,21 @@ export const VTreeviewChildren = genericComponent()({
48
50
  } = _ref2;
49
51
  const loading = isLoading.value === item.value;
50
52
  const slotsWithItem = {
51
- prepend: slots.prepend ? slotProps => slots.prepend?.({
53
+ prepend: slotProps => _createVNode(_Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && _createVNode("div", null, [_createVNode(VCheckboxBtn, {
54
+ "key": item.value,
55
+ "modelValue": slotProps.isSelected,
56
+ "loading": loading,
57
+ "indeterminate": slotProps.isIndeterminate,
58
+ "onClick": withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
59
+ "onKeydown": e => {
60
+ if (!['Enter', 'Space'].includes(e.key)) return;
61
+ e.stopPropagation();
62
+ selectItem(slotProps.select, slotProps.isSelected);
63
+ }
64
+ }, null)]), slots.prepend?.({
52
65
  ...slotProps,
53
66
  item
54
- }) : props.selectable ? _ref3 => {
55
- let {
56
- isSelected,
57
- isIndeterminate
58
- } = _ref3;
59
- return _createVNode(VCheckboxBtn, {
60
- "key": item.value,
61
- "tabindex": "-1",
62
- "modelValue": isSelected,
63
- "loading": loading,
64
- "indeterminate": isIndeterminate,
65
- "onClick": e => onClick(e, item)
66
- }, null);
67
- } : undefined,
67
+ })]),
68
68
  append: slots.append ? slotProps => slots.append?.({
69
69
  ...slotProps,
70
70
  item
@@ -79,13 +79,18 @@ export const VTreeviewChildren = genericComponent()({
79
79
  return children ? _createVNode(VTreeviewGroup, _mergeProps({
80
80
  "value": itemProps?.value
81
81
  }, treeviewGroupProps), {
82
- activator: _ref4 => {
82
+ activator: _ref3 => {
83
83
  let {
84
84
  props: activatorProps
85
- } = _ref4;
86
- return _createVNode(VTreeviewItem, _mergeProps(itemProps, activatorProps, {
85
+ } = _ref3;
86
+ const listItemProps = {
87
+ ...itemProps,
88
+ ...activatorProps,
89
+ value: itemProps?.value
90
+ };
91
+ return _createVNode(VTreeviewItem, _mergeProps(listItemProps, {
87
92
  "loading": loading,
88
- "onClick": e => onClick(e, item)
93
+ "onClick": () => checkChildren(item)
89
94
  }), slotsWithItem);
90
95
  },
91
96
  default: () => _createVNode(VTreeviewChildren, _mergeProps(treeviewChildrenProps, {
@@ -1 +1 @@
1
- {"version":3,"file":"VTreeviewChildren.mjs","names":["VTreeviewGroup","VTreeviewItem","VCheckboxBtn","shallowRef","genericComponent","propsFactory","makeVTreeviewChildrenProps","loadChildren","Function","loadingIcon","type","String","default","items","Array","selectable","Boolean","VTreeviewChildren","name","props","setup","_ref","emit","slots","isLoading","checkChildren","item","Promise","resolve","length","children","value","then","finally","onClick","e","stopPropagation","map","_ref2","itemProps","raw","loading","slotsWithItem","prepend","slotProps","_ref3","isSelected","isIndeterminate","_createVNode","undefined","append","title","treeviewGroupProps","filterProps","treeviewChildrenProps","_mergeProps","activator","_ref4","activatorProps"],"sources":["../../../src/labs/VTreeview/VTreeviewChildren.tsx"],"sourcesContent":["// Components\nimport { VTreeviewGroup } from './VTreeviewGroup'\nimport { VTreeviewItem } from './VTreeviewItem'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Utilities\nimport { shallowRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\nimport type { GenericProps } from '@/util'\n\nexport type VTreeviewChildrenSlots<T> = {\n [K in keyof Omit<VListItemSlots, 'default'>]: VListItemSlots[K] & { item: T }\n} & {\n default: never\n item: { props: InternalListItem['props'] }\n}\n\nexport const makeVTreeviewChildrenProps = propsFactory({\n loadChildren: Function as PropType<(item: unknown) => Promise<void>>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n items: Array as PropType<readonly InternalListItem[]>,\n selectable: Boolean,\n}, 'VTreeviewChildren')\n\nexport const VTreeviewChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeviewChildren',\n\n props: makeVTreeviewChildrenProps(),\n\n setup (props, { emit, slots }) {\n const isLoading = shallowRef(null)\n\n function checkChildren (item: any) {\n return new Promise<void>(resolve => {\n if (!props.items?.length || !props.loadChildren) return resolve()\n\n if (item?.children?.length === 0) {\n isLoading.value = item.value\n props.loadChildren(item).then(resolve)\n\n return\n }\n\n resolve()\n }).finally(() => {\n isLoading.value = null\n })\n }\n\n function onClick (e: MouseEvent | KeyboardEvent, item: any) {\n e.stopPropagation()\n\n checkChildren(item)\n }\n\n return () => slots.default?.() ?? props.items?.map(({ children, props: itemProps, raw: item }) => {\n const loading = isLoading.value === item.value\n const slotsWithItem = {\n prepend: slots.prepend\n ? slotProps => slots.prepend?.({ ...slotProps, item })\n : props.selectable\n ? ({ isSelected, isIndeterminate }) => (\n <VCheckboxBtn\n key={ item.value }\n tabindex=\"-1\"\n modelValue={ isSelected }\n loading={ loading }\n indeterminate={ isIndeterminate }\n onClick={ (e: MouseEvent) => onClick(e, item) }\n />\n )\n : undefined,\n append: slots.append ? slotProps => slots.append?.({ ...slotProps, item }) : undefined,\n title: slots.title ? slotProps => slots.title?.({ ...slotProps, item }) : undefined,\n } satisfies VTreeviewItem['$props']['$children']\n\n const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n\n return children ? (\n <VTreeviewGroup\n value={ itemProps?.value }\n { ...treeviewGroupProps }\n >\n {{\n activator: ({ props: activatorProps }) => (\n <VTreeviewItem\n { ...itemProps }\n { ...activatorProps }\n loading={ loading }\n v-slots={ slotsWithItem }\n onClick={ (e: MouseEvent | KeyboardEvent) => onClick(e, item) }\n />\n ),\n default: () => (\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ children }\n v-slots={ slots }\n />\n ),\n }}\n </VTreeviewGroup>\n ) : (\n slots.item?.({ props: itemProps }) ?? (\n <VTreeviewItem\n { ...itemProps }\n v-slots={ slotsWithItem }\n />\n ))\n })\n },\n})\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VTreeviewChildren.mjs","names":["VTreeviewGroup","VTreeviewItem","VCheckboxBtn","shallowRef","withModifiers","genericComponent","propsFactory","makeVTreeviewChildrenProps","loadChildren","Function","loadingIcon","type","String","default","items","Array","selectable","Boolean","selectStrategy","Object","VTreeviewChildren","name","props","setup","_ref","emit","slots","isLoading","checkChildren","item","Promise","resolve","length","children","value","then","finally","selectItem","select","isSelected","map","_ref2","itemProps","raw","loading","slotsWithItem","prepend","slotProps","_createVNode","_Fragment","includes","isIndeterminate","e","key","stopPropagation","append","undefined","title","treeviewGroupProps","filterProps","treeviewChildrenProps","_mergeProps","activator","_ref3","activatorProps","listItemProps","onClick"],"sources":["../../../src/labs/VTreeview/VTreeviewChildren.tsx"],"sourcesContent":["// Components\nimport { VTreeviewGroup } from './VTreeviewGroup'\nimport { VTreeviewItem } from './VTreeviewItem'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Utilities\nimport { shallowRef, withModifiers } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\nimport type { SelectStrategyProp } from '@/composables/nested/nested'\nimport type { GenericProps } from '@/util'\n\nexport type VTreeviewChildrenSlots<T> = {\n [K in keyof Omit<VListItemSlots, 'default'>]: VListItemSlots[K] & { item: T }\n} & {\n default: never\n item: { props: InternalListItem['props'] }\n}\n\nexport const makeVTreeviewChildrenProps = propsFactory({\n loadChildren: Function as PropType<(item: unknown) => Promise<void>>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n items: Array as PropType<readonly InternalListItem[]>,\n selectable: Boolean,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n}, 'VTreeviewChildren')\n\nexport const VTreeviewChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeviewChildren',\n\n props: makeVTreeviewChildrenProps(),\n\n setup (props, { emit, slots }) {\n const isLoading = shallowRef(null)\n\n function checkChildren (item: any) {\n return new Promise<void>(resolve => {\n if (!props.items?.length || !props.loadChildren) return resolve()\n\n if (item?.children?.length === 0) {\n isLoading.value = item.value\n props.loadChildren(item).then(resolve)\n\n return\n }\n\n resolve()\n }).finally(() => {\n isLoading.value = null\n })\n }\n\n function selectItem (select: (value: boolean) => void, isSelected: boolean) {\n if (props.selectable) {\n select(!isSelected)\n }\n }\n\n return () => slots.default?.() ?? props.items?.map(({ children, props: itemProps, raw: item }) => {\n const loading = isLoading.value === item.value\n const slotsWithItem = {\n prepend: slotProps => (\n <>\n { props.selectable && (!children || (children && !['leaf', 'single-leaf'].includes(props.selectStrategy as string))) && (\n <div>\n <VCheckboxBtn\n key={ item.value }\n modelValue={ slotProps.isSelected }\n loading={ loading }\n indeterminate={ slotProps.isIndeterminate }\n onClick={ withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']) }\n onKeydown={ (e: KeyboardEvent) => {\n if (!['Enter', 'Space'].includes(e.key)) return\n e.stopPropagation()\n selectItem(slotProps.select, slotProps.isSelected)\n }}\n />\n </div>\n )}\n\n { slots.prepend?.({ ...slotProps, item }) }\n </>\n ),\n append: slots.append ? slotProps => slots.append?.({ ...slotProps, item }) : undefined,\n title: slots.title ? slotProps => slots.title?.({ ...slotProps, item }) : undefined,\n } satisfies VTreeviewItem['$props']['$children']\n\n const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n\n return children ? (\n <VTreeviewGroup\n value={ itemProps?.value }\n { ...treeviewGroupProps }\n >\n {{\n activator: ({ props: activatorProps }) => {\n const listItemProps = {\n ...itemProps,\n ...activatorProps,\n value: itemProps?.value,\n }\n\n return (\n <VTreeviewItem\n { ...listItemProps }\n loading={ loading }\n v-slots={ slotsWithItem }\n onClick={ () => checkChildren(item) }\n />\n )\n },\n default: () => (\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ children }\n v-slots={ slots }\n />\n ),\n }}\n </VTreeviewGroup>\n ) : (\n slots.item?.({ props: itemProps }) ?? (\n <VTreeviewItem\n { ...itemProps }\n v-slots={ slotsWithItem }\n />\n ))\n })\n },\n})\n"],"mappings":"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","ignoreList":[]}
@@ -1,14 +1,17 @@
1
- import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from "vue";
1
+ import { mergeProps as _mergeProps, withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
2
  // Styles
3
3
  import "./VTreeviewItem.css";
4
4
 
5
5
  // Components
6
6
  import { VBtn } from "../../components/VBtn/index.mjs";
7
- import { VListItemAction } from "../../components/VList/index.mjs";
7
+ import { VListItemAction, VListItemSubtitle, VListItemTitle } from "../../components/VList/index.mjs";
8
8
  import { makeVListItemProps, VListItem } from "../../components/VList/VListItem.mjs";
9
9
  import { VProgressCircular } from "../../components/VProgressCircular/index.mjs"; // Composables
10
+ import { useDensity } from "../../composables/density.mjs";
10
11
  import { IconValue } from "../../composables/icons.mjs";
11
- import { useLink } from "../../composables/router.mjs"; // Utilities
12
+ import { useNestedItem } from "../../composables/nested/nested.mjs";
13
+ import { useLink } from "../../composables/router.mjs";
14
+ import { genOverlays } from "../../composables/variant.mjs"; // Utilities
12
15
  import { computed, inject, ref } from 'vue';
13
16
  import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
14
17
  import { VTreeviewSymbol } from "./shared.mjs";
@@ -29,32 +32,100 @@ export const VTreeviewItem = genericComponent()({
29
32
  emit
30
33
  } = _ref;
31
34
  const link = useLink(props, attrs);
32
- const id = computed(() => props.value === undefined ? link.href.value : props.value);
35
+ const rawId = computed(() => props.value === undefined ? link.href.value : props.value);
33
36
  const vListItemRef = ref();
37
+ const {
38
+ activate,
39
+ isActivated,
40
+ select,
41
+ isSelected,
42
+ isIndeterminate,
43
+ isGroupActivator,
44
+ root,
45
+ id
46
+ } = useNestedItem(rawId, false);
47
+ const isActivatableGroupActivator = computed(() => root.activatable.value && isGroupActivator);
48
+ const {
49
+ densityClasses
50
+ } = useDensity(props, 'v-list-item');
51
+ const slotProps = computed(() => ({
52
+ isActive: isActivated.value,
53
+ select,
54
+ isSelected: isSelected.value,
55
+ isIndeterminate: isIndeterminate.value
56
+ }));
34
57
  const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list));
35
- function onClick(e) {
36
- if (!vListItemRef.value?.isGroupActivator || !isClickable.value) return;
37
- props.value != null && vListItemRef.value?.select(!vListItemRef.value?.isSelected, e);
58
+ function activateItem(e) {
59
+ if (!isClickable.value || !isActivatableGroupActivator.value && isGroupActivator) return;
60
+ if (root.activatable.value) {
61
+ if (isActivatableGroupActivator.value) {
62
+ activate(!isActivated.value, e);
63
+ } else {
64
+ vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
65
+ }
66
+ }
38
67
  }
39
68
  function onKeyDown(e) {
40
69
  if (e.key === 'Enter' || e.key === ' ') {
41
70
  e.preventDefault();
42
- onClick(e);
71
+ activateItem(e);
43
72
  }
44
73
  }
45
74
  const visibleIds = inject(VTreeviewSymbol, {
46
75
  visibleIds: ref()
47
76
  }).visibleIds;
48
77
  useRender(() => {
78
+ const hasTitle = slots.title || props.title != null;
79
+ const hasSubtitle = slots.subtitle || props.subtitle != null;
49
80
  const listItemProps = VListItem.filterProps(props);
50
81
  const hasPrepend = slots.prepend || props.toggleIcon;
51
- return _createVNode(VListItem, _mergeProps({
82
+ return isActivatableGroupActivator.value ? _withDirectives(_createVNode("div", {
83
+ "class": ['v-list-item', 'v-list-item--one-line', 'v-treeview-item', 'v-treeview-item--activetable-group-activator', {
84
+ 'v-list-item--active': isActivated.value || isSelected.value,
85
+ 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
86
+ }, densityClasses.value, props.class],
87
+ "onClick": activateItem
88
+ }, [_createVNode(_Fragment, null, [genOverlays(isActivated.value || isSelected.value, 'v-list-item'), props.toggleIcon && _createVNode(VListItemAction, {
89
+ "start": false
90
+ }, {
91
+ default: () => [_createVNode(VBtn, {
92
+ "density": "compact",
93
+ "icon": props.toggleIcon,
94
+ "loading": props.loading,
95
+ "variant": "text",
96
+ "onClick": props.onClick
97
+ }, {
98
+ loader() {
99
+ return _createVNode(VProgressCircular, {
100
+ "indeterminate": "disable-shrink",
101
+ "size": "20",
102
+ "width": "2"
103
+ }, null);
104
+ }
105
+ })]
106
+ })]), _createVNode("div", {
107
+ "class": "v-list-item__content",
108
+ "data-no-activator": ""
109
+ }, [hasTitle && _createVNode(VListItemTitle, {
110
+ "key": "title"
111
+ }, {
112
+ default: () => [slots.title?.({
113
+ title: props.title
114
+ }) ?? props.title]
115
+ }), hasSubtitle && _createVNode(VListItemSubtitle, {
116
+ "key": "subtitle"
117
+ }, {
118
+ default: () => [slots.subtitle?.({
119
+ subtitle: props.subtitle
120
+ }) ?? props.subtitle]
121
+ }), slots.default?.(slotProps.value)])]), [[_resolveDirective("ripple"), isClickable.value && props.ripple]]) : _createVNode(VListItem, _mergeProps({
52
122
  "ref": vListItemRef
53
123
  }, listItemProps, {
54
124
  "class": ['v-treeview-item', {
55
125
  'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
56
126
  }, props.class],
57
- "onClick": onClick,
127
+ "value": id.value,
128
+ "onClick": activateItem,
58
129
  "onKeydown": isClickable.value && onKeyDown
59
130
  }), {
60
131
  ...slots,
@@ -1 +1 @@
1
- {"version":3,"file":"VTreeviewItem.mjs","names":["VBtn","VListItemAction","makeVListItemProps","VListItem","VProgressCircular","IconValue","useLink","computed","inject","ref","genericComponent","propsFactory","useRender","VTreeviewSymbol","makeVTreeviewItemProps","loading","Boolean","toggleIcon","slim","VTreeviewItem","name","props","setup","_ref","attrs","slots","emit","link","id","value","undefined","href","vListItemRef","isClickable","disabled","list","onClick","e","isGroupActivator","select","isSelected","onKeyDown","key","preventDefault","visibleIds","listItemProps","filterProps","hasPrepend","prepend","_createVNode","_mergeProps","has","class","slotProps","_Fragment","default","loader"],"sources":["../../../src/labs/VTreeview/VTreeviewItem.tsx"],"sourcesContent":["// Styles\nimport './VTreeviewItem.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VListItemAction } from '@/components/VList'\nimport { makeVListItemProps, VListItem } from '@/components/VList/VListItem'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useLink } from '@/composables/router'\n\n// Utilities\nimport { computed, inject, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTreeviewSymbol } from './shared'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\n\nexport const makeVTreeviewItemProps = propsFactory({\n loading: Boolean,\n toggleIcon: IconValue,\n\n ...makeVListItemProps({ slim: true }),\n}, 'VTreeviewItem')\n\nexport const VTreeviewItem = genericComponent<VListItemSlots>()({\n name: 'VTreeviewItem',\n\n props: makeVTreeviewItemProps(),\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const vListItemRef = ref<VListItem>()\n\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (props.value != null && !!vListItemRef.value?.list))\n )\n\n function onClick (e: MouseEvent | KeyboardEvent) {\n if (!vListItemRef.value?.isGroupActivator || !isClickable.value) return\n props.value != null && vListItemRef.value?.select(!vListItemRef.value?.isSelected, e)\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n const visibleIds = inject(VTreeviewSymbol, { visibleIds: ref() }).visibleIds\n\n useRender(() => {\n const listItemProps = VListItem.filterProps(props)\n const hasPrepend = slots.prepend || props.toggleIcon\n\n return (\n <VListItem\n ref={ vListItemRef }\n { ...listItemProps }\n class={[\n 'v-treeview-item',\n {\n 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value),\n },\n props.class,\n ]}\n onClick={ onClick }\n onKeydown={ isClickable.value && onKeyDown }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => {\n return (\n <>\n { props.toggleIcon && (\n <VListItemAction start={ false }>\n <VBtn\n density=\"compact\"\n icon={ props.toggleIcon }\n loading={ props.loading }\n variant=\"text\"\n >\n {{\n loader () {\n return (\n <VProgressCircular\n indeterminate=\"disable-shrink\"\n size=\"20\"\n width=\"2\"\n />\n )\n },\n }}\n </VBtn>\n </VListItemAction>\n )}\n\n { slots.prepend?.(slotProps) }\n </>\n )\n } : undefined,\n }}\n </VListItem>\n )\n })\n\n return {}\n },\n})\n\nexport type VTreeviewItem = InstanceType<typeof VTreeviewItem>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VTreeviewItem.mjs","names":["VBtn","VListItemAction","VListItemSubtitle","VListItemTitle","makeVListItemProps","VListItem","VProgressCircular","useDensity","IconValue","useNestedItem","useLink","genOverlays","computed","inject","ref","genericComponent","propsFactory","useRender","VTreeviewSymbol","makeVTreeviewItemProps","loading","Boolean","toggleIcon","slim","VTreeviewItem","name","props","setup","_ref","attrs","slots","emit","link","rawId","value","undefined","href","vListItemRef","activate","isActivated","select","isSelected","isIndeterminate","isGroupActivator","root","id","isActivatableGroupActivator","activatable","densityClasses","slotProps","isActive","isClickable","disabled","list","activateItem","e","onKeyDown","key","preventDefault","visibleIds","hasTitle","title","hasSubtitle","subtitle","listItemProps","filterProps","hasPrepend","prepend","_withDirectives","_createVNode","has","class","_Fragment","default","onClick","loader","_resolveDirective","ripple","_mergeProps"],"sources":["../../../src/labs/VTreeview/VTreeviewItem.tsx"],"sourcesContent":["// Styles\nimport './VTreeviewItem.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VListItemAction, VListItemSubtitle, VListItemTitle } from '@/components/VList'\nimport { makeVListItemProps, VListItem } from '@/components/VList/VListItem'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { useDensity } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { useLink } from '@/composables/router'\nimport { genOverlays } from '@/composables/variant'\n\n// Utilities\nimport { computed, inject, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTreeviewSymbol } from './shared'\nimport type { ListItemSlot, VListItemSlots } from '@/components/VList/VListItem'\n\nexport const makeVTreeviewItemProps = propsFactory({\n loading: Boolean,\n toggleIcon: IconValue,\n\n ...makeVListItemProps({ slim: true }),\n}, 'VTreeviewItem')\n\nexport const VTreeviewItem = genericComponent<VListItemSlots>()({\n name: 'VTreeviewItem',\n\n props: makeVTreeviewItemProps(),\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const rawId = computed(() => props.value === undefined ? link.href.value : props.value)\n const vListItemRef = ref<VListItem>()\n\n const {\n activate,\n isActivated,\n select,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n id,\n } = useNestedItem(rawId, false)\n\n const isActivatableGroupActivator = computed(() =>\n (root.activatable.value) &&\n isGroupActivator\n )\n\n const { densityClasses } = useDensity(props, 'v-list-item')\n\n const slotProps = computed(() => ({\n isActive: isActivated.value,\n select,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (props.value != null && !!vListItemRef.value?.list))\n )\n\n function activateItem (e: MouseEvent | KeyboardEvent) {\n if (\n !isClickable.value ||\n (!isActivatableGroupActivator.value && isGroupActivator)\n ) return\n\n if (root.activatable.value) {\n if (isActivatableGroupActivator.value) {\n activate(!isActivated.value, e)\n } else {\n vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e)\n }\n }\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n activateItem(e)\n }\n }\n\n const visibleIds = inject(VTreeviewSymbol, { visibleIds: ref() }).visibleIds\n\n useRender(() => {\n const hasTitle = (slots.title || props.title != null)\n const hasSubtitle = (slots.subtitle || props.subtitle != null)\n const listItemProps = VListItem.filterProps(props)\n const hasPrepend = slots.prepend || props.toggleIcon\n\n return isActivatableGroupActivator.value\n ? (\n <div\n class={[\n 'v-list-item',\n 'v-list-item--one-line',\n 'v-treeview-item',\n 'v-treeview-item--activetable-group-activator',\n {\n 'v-list-item--active': isActivated.value || isSelected.value,\n 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value),\n },\n densityClasses.value,\n props.class,\n ]}\n onClick={ activateItem }\n v-ripple={ isClickable.value && props.ripple }\n >\n <>\n { genOverlays(isActivated.value || isSelected.value, 'v-list-item') }\n { props.toggleIcon && (\n <VListItemAction start={ false }>\n <VBtn\n density=\"compact\"\n icon={ props.toggleIcon }\n loading={ props.loading }\n variant=\"text\"\n onClick={ props.onClick }\n >\n {{\n loader () {\n return (\n <VProgressCircular\n indeterminate=\"disable-shrink\"\n size=\"20\"\n width=\"2\"\n />\n )\n },\n }}\n </VBtn>\n </VListItemAction>\n )}\n\n </>\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? props.title }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n </div>\n ) : (\n <VListItem\n ref={ vListItemRef }\n { ...listItemProps }\n class={[\n 'v-treeview-item',\n {\n 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value),\n },\n props.class,\n ]}\n value={ id.value }\n onClick={ activateItem }\n onKeydown={ isClickable.value && onKeyDown }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => {\n return (\n <>\n { props.toggleIcon && (\n <VListItemAction start={ false }>\n <VBtn\n density=\"compact\"\n icon={ props.toggleIcon }\n loading={ props.loading }\n variant=\"text\"\n >\n {{\n loader () {\n return (\n <VProgressCircular\n indeterminate=\"disable-shrink\"\n size=\"20\"\n width=\"2\"\n />\n )\n },\n }}\n </VBtn>\n </VListItemAction>\n )}\n\n { slots.prepend?.(slotProps) }\n </>\n )\n } : undefined,\n }}\n </VListItem>\n )\n })\n\n return {}\n },\n})\n\nexport type VTreeviewItem = InstanceType<typeof VTreeviewItem>\n"],"mappings":"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","ignoreList":[]}