@vuetify/nightly 3.1.7-dev-20230224.0 → 3.1.7

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 (115) hide show
  1. package/CHANGELOG.md +6 -4
  2. package/dist/json/attributes.json +561 -33
  3. package/dist/json/importMap.json +52 -52
  4. package/dist/json/tags.json +136 -2
  5. package/dist/json/web-types.json +2160 -86
  6. package/dist/vuetify-labs.css +235 -231
  7. package/dist/vuetify-labs.d.ts +3453 -145
  8. package/dist/vuetify-labs.esm.js +56 -16
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +56 -16
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +5 -1
  13. package/dist/vuetify.d.ts +1931 -81
  14. package/dist/vuetify.esm.js +38 -9
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +38 -9
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +12 -9
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAlert/index.d.ts +22 -0
  22. package/lib/components/VApp/index.d.ts +6 -0
  23. package/lib/components/VAppBar/index.d.ts +36 -0
  24. package/lib/components/VAutocomplete/index.d.ts +117 -6
  25. package/lib/components/VAvatar/index.d.ts +6 -0
  26. package/lib/components/VBadge/index.d.ts +8 -0
  27. package/lib/components/VBanner/index.d.ts +24 -0
  28. package/lib/components/VBottomNavigation/index.d.ts +6 -0
  29. package/lib/components/VBreadcrumbs/index.d.ts +28 -4
  30. package/lib/components/VBtn/index.d.ts +12 -0
  31. package/lib/components/VBtnGroup/index.d.ts +6 -0
  32. package/lib/components/VBtnToggle/index.d.ts +6 -0
  33. package/lib/components/VCard/index.d.ts +60 -0
  34. package/lib/components/VCarousel/index.d.ts +60 -0
  35. package/lib/components/VCheckbox/index.d.ts +38 -0
  36. package/lib/components/VChip/index.d.ts +12 -0
  37. package/lib/components/VChipGroup/index.d.ts +6 -0
  38. package/lib/components/VCode/index.d.ts +6 -0
  39. package/lib/components/VCombobox/index.d.ts +117 -6
  40. package/lib/components/VCounter/index.d.ts +24 -0
  41. package/lib/components/VDefaultsProvider/index.d.ts +6 -0
  42. package/lib/components/VDialog/index.d.ts +64 -1
  43. package/lib/components/VDivider/index.d.ts +6 -0
  44. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  45. package/lib/components/VExpansionPanel/index.d.ts +49 -12
  46. package/lib/components/VField/index.d.ts +20 -6
  47. package/lib/components/VFileInput/index.d.ts +43 -1
  48. package/lib/components/VFooter/index.d.ts +6 -0
  49. package/lib/components/VForm/index.d.ts +6 -0
  50. package/lib/components/VGrid/index.d.ts +24 -0
  51. package/lib/components/VHover/index.d.ts +12 -0
  52. package/lib/components/VIcon/index.d.ts +12 -0
  53. package/lib/components/VImg/index.d.ts +12 -0
  54. package/lib/components/VInput/index.d.ts +12 -0
  55. package/lib/components/VItemGroup/index.d.ts +12 -0
  56. package/lib/components/VKbd/index.d.ts +6 -0
  57. package/lib/components/VLabel/index.d.ts +6 -0
  58. package/lib/components/VLayout/index.d.ts +12 -0
  59. package/lib/components/VLazy/index.d.ts +6 -0
  60. package/lib/components/VList/index.d.ts +77 -6
  61. package/lib/components/VLocaleProvider/index.d.ts +6 -0
  62. package/lib/components/VMain/index.d.ts +6 -0
  63. package/lib/components/VMenu/index.d.ts +64 -1
  64. package/lib/components/VMessages/index.d.ts +24 -0
  65. package/lib/components/VNavigationDrawer/index.d.ts +12 -0
  66. package/lib/components/VNoSsr/index.d.ts +6 -0
  67. package/lib/components/VOverlay/index.d.ts +18 -0
  68. package/lib/components/VPagination/index.d.ts +14 -0
  69. package/lib/components/VParallax/index.d.ts +12 -0
  70. package/lib/components/VProgressCircular/index.d.ts +6 -0
  71. package/lib/components/VProgressLinear/index.d.ts +12 -0
  72. package/lib/components/VRadio/index.d.ts +16 -0
  73. package/lib/components/VRadioGroup/index.d.ts +22 -0
  74. package/lib/components/VRangeSlider/index.d.ts +16 -0
  75. package/lib/components/VRating/VRating.css +4 -0
  76. package/lib/components/VRating/VRating.mjs +35 -6
  77. package/lib/components/VRating/VRating.mjs.map +1 -1
  78. package/lib/components/VRating/VRating.sass +5 -0
  79. package/lib/components/VRating/index.d.ts +8 -1
  80. package/lib/components/VResponsive/index.d.ts +8 -0
  81. package/lib/components/VSelect/index.d.ts +183 -6
  82. package/lib/components/VSelectionControl/index.d.ts +14 -6
  83. package/lib/components/VSelectionControlGroup/index.d.ts +6 -0
  84. package/lib/components/VSheet/index.d.ts +6 -0
  85. package/lib/components/VSlideGroup/index.d.ts +26 -0
  86. package/lib/components/VSlider/index.d.ts +16 -0
  87. package/lib/components/VSnackbar/index.d.ts +44 -1
  88. package/lib/components/VSwitch/index.d.ts +22 -0
  89. package/lib/components/VSystemBar/index.d.ts +6 -0
  90. package/lib/components/VTable/index.d.ts +12 -0
  91. package/lib/components/VTabs/index.d.ts +12 -0
  92. package/lib/components/VTextField/index.d.ts +54 -6
  93. package/lib/components/VTextarea/index.d.ts +39 -1
  94. package/lib/components/VThemeProvider/index.d.ts +6 -0
  95. package/lib/components/VTimeline/index.d.ts +16 -0
  96. package/lib/components/VToolbar/index.d.ts +30 -0
  97. package/lib/components/VTooltip/index.d.ts +46 -1
  98. package/lib/components/VValidation/index.d.ts +6 -0
  99. package/lib/components/VWindow/index.d.ts +34 -0
  100. package/lib/components/index.d.ts +1916 -66
  101. package/lib/components/transitions/index.d.ts +96 -0
  102. package/lib/entry-bundler.mjs +1 -1
  103. package/lib/entry-bundler.mjs.map +1 -1
  104. package/lib/framework.mjs +1 -1
  105. package/lib/framework.mjs.map +1 -1
  106. package/lib/index.d.ts +15 -15
  107. package/lib/labs/VDataTable/VDataTableRows.mjs +4 -6
  108. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  109. package/lib/labs/VDataTable/index.d.ts +1503 -48
  110. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs +15 -2
  111. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  112. package/lib/labs/VVirtualScroll/index.d.ts +9 -6
  113. package/lib/labs/components.d.ts +1512 -54
  114. package/lib/util/defineComponent.mjs.map +1 -1
  115. package/package.json +2 -1
@@ -15,6 +15,9 @@ declare const VProgressCircular: vue.DefineComponent<{
15
15
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
16
16
  default?: (() => vue.VNodeChild) | undefined;
17
17
  };
18
+ $slots?: {
19
+ default?: (() => vue.VNodeChild) | undefined;
20
+ } | undefined;
18
21
  'v-slots'?: {
19
22
  default?: false | (() => vue.VNodeChild) | undefined;
20
23
  } | undefined;
@@ -35,6 +38,9 @@ declare const VProgressCircular: vue.DefineComponent<{
35
38
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
36
39
  default?: (() => vue.VNodeChild) | undefined;
37
40
  };
41
+ $slots?: {
42
+ default?: (() => vue.VNodeChild) | undefined;
43
+ } | undefined;
38
44
  'v-slots'?: {
39
45
  default?: false | (() => vue.VNodeChild) | undefined;
40
46
  } | undefined;
@@ -37,6 +37,12 @@ declare const VProgressLinear: vue.DefineComponent<{
37
37
  buffer: number;
38
38
  }) => vue.VNodeChild) | undefined;
39
39
  };
40
+ $slots?: {
41
+ default?: ((args_0: {
42
+ value: number;
43
+ buffer: number;
44
+ }) => vue.VNodeChild) | undefined;
45
+ } | undefined;
40
46
  'v-slots'?: {
41
47
  default?: false | ((args_0: {
42
48
  value: number;
@@ -81,6 +87,12 @@ declare const VProgressLinear: vue.DefineComponent<{
81
87
  buffer: number;
82
88
  }) => vue.VNodeChild) | undefined;
83
89
  };
90
+ $slots?: {
91
+ default?: ((args_0: {
92
+ value: number;
93
+ buffer: number;
94
+ }) => vue.VNodeChild) | undefined;
95
+ } | undefined;
84
96
  'v-slots'?: {
85
97
  default?: false | ((args_0: {
86
98
  value: number;
@@ -50,6 +50,14 @@ declare const VRadio: vue.DefineComponent<{
50
50
  }) => vue.VNodeChild) | undefined;
51
51
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
52
52
  };
53
+ $slots?: {
54
+ default?: (() => vue.VNodeChild) | undefined;
55
+ label?: ((args_0: {
56
+ label: string | undefined;
57
+ props: Record<string, unknown>;
58
+ }) => vue.VNodeChild) | undefined;
59
+ input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
60
+ } | undefined;
53
61
  'v-slots'?: {
54
62
  default?: false | (() => vue.VNodeChild) | undefined;
55
63
  label?: false | ((args_0: {
@@ -96,6 +104,14 @@ declare const VRadio: vue.DefineComponent<{
96
104
  }) => vue.VNodeChild) | undefined;
97
105
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
98
106
  };
107
+ $slots?: {
108
+ default?: (() => vue.VNodeChild) | undefined;
109
+ label?: ((args_0: {
110
+ label: string | undefined;
111
+ props: Record<string, unknown>;
112
+ }) => vue.VNodeChild) | undefined;
113
+ input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
114
+ } | undefined;
99
115
  'v-slots'?: {
100
116
  default?: false | (() => vue.VNodeChild) | undefined;
101
117
  label?: false | ((args_0: {
@@ -82,6 +82,17 @@ declare const VRadioGroup: vue.DefineComponent<{
82
82
  }) => vue.VNodeChild) | undefined;
83
83
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
84
84
  };
85
+ $slots?: {
86
+ default?: (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
87
+ prepend?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
88
+ append?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
89
+ details?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
90
+ label?: ((args_0: {
91
+ label: string | undefined;
92
+ props: Record<string, unknown>;
93
+ }) => vue.VNodeChild) | undefined;
94
+ input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
95
+ } | undefined;
85
96
  'v-slots'?: {
86
97
  default?: false | (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
87
98
  prepend?: false | ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
@@ -149,6 +160,17 @@ declare const VRadioGroup: vue.DefineComponent<{
149
160
  }) => vue.VNodeChild) | undefined;
150
161
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
151
162
  };
163
+ $slots?: {
164
+ default?: (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
165
+ prepend?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
166
+ append?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
167
+ details?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
168
+ label?: ((args_0: {
169
+ label: string | undefined;
170
+ props: Record<string, unknown>;
171
+ }) => vue.VNodeChild) | undefined;
172
+ input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
173
+ } | undefined;
152
174
  'v-slots'?: {
153
175
  default?: false | (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
154
176
  prepend?: false | ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
@@ -75,6 +75,14 @@ declare const VRangeSlider: vue.DefineComponent<{
75
75
  'tick-label'?: (() => vue.VNodeChild) | undefined;
76
76
  'thumb-label'?: (() => vue.VNodeChild) | undefined;
77
77
  };
78
+ $slots?: {
79
+ default?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
80
+ prepend?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
81
+ append?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
82
+ details?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
83
+ 'tick-label'?: (() => vue.VNodeChild) | undefined;
84
+ 'thumb-label'?: (() => vue.VNodeChild) | undefined;
85
+ } | undefined;
78
86
  'v-slots'?: {
79
87
  default?: false | ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
80
88
  prepend?: false | ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
@@ -142,6 +150,14 @@ declare const VRangeSlider: vue.DefineComponent<{
142
150
  'tick-label'?: (() => vue.VNodeChild) | undefined;
143
151
  'thumb-label'?: (() => vue.VNodeChild) | undefined;
144
152
  };
153
+ $slots?: {
154
+ default?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
155
+ prepend?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
156
+ append?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
157
+ details?: ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
158
+ 'tick-label'?: (() => vue.VNodeChild) | undefined;
159
+ 'thumb-label'?: (() => vue.VNodeChild) | undefined;
160
+ } | undefined;
145
161
  'v-slots'?: {
146
162
  default?: false | ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
147
163
  prepend?: false | ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
@@ -36,6 +36,10 @@
36
36
  .v-rating--hover .v-rating__item:hover:not(.v-rating__item--focused) .v-btn {
37
37
  transform: scale(1.25);
38
38
  }
39
+ .v-rating__item--focused .v-btn__overlay {
40
+ display: block;
41
+ opacity: var(--v-hover-opacity);
42
+ }
39
43
  .v-rating__item--half {
40
44
  overflow: hidden;
41
45
  position: absolute;
@@ -74,6 +74,9 @@ export const VRating = genericComponent()({
74
74
  const range = computed(() => createRange(Number(props.length), 1));
75
75
  const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
76
76
  const hoverIndex = ref(-1);
77
+ const focusIndex = ref(-1);
78
+ const firstRef = ref();
79
+ let isClicking = false;
77
80
  const itemState = computed(() => increments.value.map(value => {
78
81
  const isHovering = props.hover && hoverIndex.value > -1;
79
82
  const isFilled = normalizedValue.value >= value;
@@ -96,6 +99,16 @@ export const VRating = genericComponent()({
96
99
  function onMouseleave() {
97
100
  hoverIndex.value = -1;
98
101
  }
102
+ function onFocus() {
103
+ if (value === 0 && normalizedValue.value === 0) {
104
+ firstRef.value?.focus();
105
+ } else {
106
+ focusIndex.value = value;
107
+ }
108
+ }
109
+ function onBlur() {
110
+ if (!isClicking) focusIndex.value = -1;
111
+ }
99
112
  function onClick() {
100
113
  if (props.disabled || props.readonly) return;
101
114
  rating.value = normalizedValue.value === value && props.clearable ? 0 : value;
@@ -103,9 +116,17 @@ export const VRating = genericComponent()({
103
116
  return {
104
117
  onMouseenter: props.hover ? onMouseenter : undefined,
105
118
  onMouseleave: props.hover ? onMouseleave : undefined,
119
+ onFocus,
120
+ onBlur,
106
121
  onClick
107
122
  };
108
123
  }));
124
+ function onMousedown() {
125
+ isClicking = true;
126
+ }
127
+ function onMouseup() {
128
+ isClicking = false;
129
+ }
109
130
  const name = computed(() => props.name ?? `v-rating-${getUid()}`);
110
131
  function VRatingItem(_ref2) {
111
132
  let {
@@ -116,6 +137,8 @@ export const VRating = genericComponent()({
116
137
  const {
117
138
  onMouseenter,
118
139
  onMouseleave,
140
+ onFocus,
141
+ onBlur,
119
142
  onClick
120
143
  } = eventState.value[index + 1];
121
144
  const id = `${name.value}-${String(value).replace('.', '-')}`;
@@ -126,6 +149,7 @@ export const VRating = genericComponent()({
126
149
  icon: itemState.value[index]?.icon,
127
150
  ripple: props.ripple,
128
151
  size: props.size,
152
+ tag: 'span',
129
153
  variant: 'plain'
130
154
  };
131
155
  return _createVNode(_Fragment, null, [_createVNode("label", {
@@ -134,17 +158,17 @@ export const VRating = genericComponent()({
134
158
  'v-rating__item--half': props.halfIncrements && value % 1 > 0,
135
159
  'v-rating__item--full': props.halfIncrements && value % 1 === 0
136
160
  },
161
+ "onMousedown": onMousedown,
162
+ "onMouseup": onMouseup,
137
163
  "onMouseenter": onMouseenter,
138
- "onMouseleave": onMouseleave,
139
- "onClick": onClick
164
+ "onMouseleave": onMouseleave
140
165
  }, [_createVNode("span", {
141
166
  "class": "v-rating__hidden"
142
167
  }, [t(props.itemAriaLabel, value, props.length)]), !showStar ? undefined : slots.item ? slots.item({
143
168
  ...itemState.value[index],
144
169
  props: btnProps,
145
170
  value,
146
- index,
147
- rating: normalizedValue.value
171
+ index
148
172
  }) : _createVNode(VBtn, btnProps, null)]), _createVNode("input", {
149
173
  "class": "v-rating__hidden",
150
174
  "name": name.value,
@@ -152,7 +176,10 @@ export const VRating = genericComponent()({
152
176
  "type": "radio",
153
177
  "value": value,
154
178
  "checked": normalizedValue.value === value,
155
- "tabindex": -1,
179
+ "onClick": onClick,
180
+ "onFocus": onFocus,
181
+ "onBlur": onBlur,
182
+ "ref": index === 0 ? firstRef : undefined,
156
183
  "readonly": props.readonly,
157
184
  "disabled": props.disabled
158
185
  }, null)]);
@@ -181,7 +208,9 @@ export const VRating = genericComponent()({
181
208
  index: i,
182
209
  label: props.itemLabels?.[i]
183
210
  }) : undefined, _createVNode("div", {
184
- "class": "v-rating__item"
211
+ "class": ['v-rating__item', {
212
+ 'v-rating__item--focused': Math.ceil(focusIndex.value) === value
213
+ }]
185
214
  }, [props.halfIncrements ? _createVNode(_Fragment, null, [_createVNode(VRatingItem, {
186
215
  "value": value - 0.5,
187
216
  "index": i * 2
@@ -1 +1 @@
1
- {"version":3,"file":"VRating.mjs","names":["VBtn","IconValue","makeDensityProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","useLocale","useProxiedModel","computed","ref","clamp","createRange","genericComponent","getUid","useRender","VRating","name","props","String","itemAriaLabel","type","default","activeColor","color","clearable","Boolean","disabled","emptyIcon","fullIcon","halfIncrements","hover","length","Number","readonly","modelValue","itemLabels","Array","itemLabelPosition","validator","v","includes","ripple","emits","value","setup","slots","t","themeClasses","rating","normalizedValue","parseFloat","range","increments","flatMap","hoverIndex","itemState","map","isHovering","isFilled","isHovered","isFullIcon","icon","eventState","onMouseenter","onMouseleave","onClick","undefined","VRatingItem","index","showStar","id","replace","btnProps","density","size","variant","item","createLabel","labelProps","label","hasLabels","i"],"sources":["../../../src/components/VRating/VRating.tsx"],"sourcesContent":["// Styles\nimport './VRating.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { clamp, createRange, genericComponent, getUid, useRender } from '@/util'\n\n// Types\nimport type { Prop } from 'vue'\nimport type { Variant } from '@/composables/variant'\n\ntype VRatingItemSlot = {\n value: number\n index: number\n isFilled: boolean\n isHovered: boolean\n icon: IconValue\n color?: string\n props: Record<string, unknown>\n rating: number\n}\n\ntype VRatingItemLabelSlot = {\n value: number\n index: number\n label?: string\n}\n\ntype VRatingSlots = {\n item: [VRatingItemSlot]\n 'item-label': [VRatingItemLabelSlot]\n}\n\nexport const VRating = genericComponent<VRatingSlots>()({\n name: 'VRating',\n\n props: {\n name: String,\n itemAriaLabel: {\n type: String,\n default: '$vuetify.rating.ariaLabel.item',\n },\n activeColor: String,\n color: String,\n clearable: Boolean,\n disabled: Boolean,\n emptyIcon: {\n type: IconValue,\n default: '$ratingEmpty',\n },\n fullIcon: {\n type: IconValue,\n default: '$ratingFull',\n },\n halfIncrements: Boolean,\n hover: Boolean,\n length: {\n type: [Number, String],\n default: 5,\n },\n readonly: Boolean,\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n itemLabels: Array as Prop<string[]>,\n itemLabelPosition: {\n type: String,\n default: 'top',\n validator: (v: any) => ['top', 'bottom'].includes(v),\n },\n ripple: Boolean,\n\n ...makeDensityProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (value: number | string) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { themeClasses } = provideTheme(props)\n const rating = useProxiedModel(props, 'modelValue')\n const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, +props.length))\n\n const range = computed(() => createRange(Number(props.length), 1))\n const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]))\n const hoverIndex = ref(-1)\n\n const itemState = computed(() => increments.value.map(value => {\n const isHovering = props.hover && hoverIndex.value > -1\n const isFilled = normalizedValue.value >= value\n const isHovered = hoverIndex.value >= value\n const isFullIcon = isHovering ? isHovered : isFilled\n const icon = isFullIcon ? props.fullIcon : props.emptyIcon\n const activeColor = props.activeColor ?? props.color\n const color = (isFilled || isHovered) ? activeColor : props.color\n\n return { isFilled, isHovered, icon, color }\n }))\n\n const eventState = computed(() => [0, ...increments.value].map(value => {\n function onMouseenter () {\n hoverIndex.value = value\n }\n\n function onMouseleave () {\n hoverIndex.value = -1\n }\n\n function onClick () {\n if (props.disabled || props.readonly) return\n rating.value = normalizedValue.value === value && props.clearable ? 0 : value\n }\n\n return {\n onMouseenter: props.hover ? onMouseenter : undefined,\n onMouseleave: props.hover ? onMouseleave : undefined,\n onClick,\n }\n }))\n\n const name = computed(() => props.name ?? `v-rating-${getUid()}`)\n\n function VRatingItem ({ value, index, showStar = true }: { value: number, index: number, showStar?: boolean }) {\n const { onMouseenter, onMouseleave, onClick } = eventState.value[index + 1]\n const id = `${name.value}-${String(value).replace('.', '-')}`\n const btnProps = {\n color: itemState.value[index]?.color,\n density: props.density,\n disabled: props.disabled,\n icon: itemState.value[index]?.icon,\n ripple: props.ripple,\n size: props.size,\n variant: 'plain' as Variant,\n }\n\n return (\n <>\n <label\n for={ id }\n class={{\n 'v-rating__item--half': props.halfIncrements && value % 1 > 0,\n 'v-rating__item--full': props.halfIncrements && value % 1 === 0,\n }}\n onMouseenter={ onMouseenter }\n onMouseleave={ onMouseleave }\n onClick={ onClick }\n >\n <span class=\"v-rating__hidden\">{ t(props.itemAriaLabel, value, props.length) }</span>\n {\n !showStar ? undefined\n : slots.item ? slots.item({\n ...itemState.value[index],\n props: btnProps,\n value,\n index,\n rating: normalizedValue.value,\n })\n : (\n <VBtn { ...btnProps } />\n )\n }\n </label>\n\n <input\n class=\"v-rating__hidden\"\n name={ name.value }\n id={ id }\n type=\"radio\"\n value={ value }\n checked={ normalizedValue.value === value }\n tabindex={-1}\n readonly={ props.readonly }\n disabled={ props.disabled }\n />\n </>\n )\n }\n\n function createLabel (labelProps: { value: number, index: number, label?: string }) {\n if (slots['item-label']) return slots['item-label'](labelProps)\n\n if (labelProps.label) return <span>{ labelProps.label }</span>\n\n return <span>&nbsp;</span>\n }\n\n useRender(() => {\n const hasLabels = !!props.itemLabels?.length || slots['item-label']\n\n return (\n <props.tag\n class={[\n 'v-rating',\n {\n 'v-rating--hover': props.hover,\n 'v-rating--readonly': props.readonly,\n },\n themeClasses.value,\n ]}\n >\n <VRatingItem value={ 0 } index={ -1 } showStar={ false } />\n\n { range.value.map((value, i) => (\n <div class=\"v-rating__wrapper\">\n {\n hasLabels && props.itemLabelPosition === 'top'\n ? createLabel({ value, index: i, label: props.itemLabels?.[i] })\n : undefined\n }\n <div class=\"v-rating__item\">\n { props.halfIncrements ? (\n <>\n <VRatingItem value={ value - 0.5 } index={ i * 2 } />\n <VRatingItem value={ value } index={ (i * 2) + 1 } />\n </>\n ) : (\n <VRatingItem value={ value } index={ i } />\n ) }\n </div>\n {\n hasLabels && props.itemLabelPosition === 'bottom'\n ? createLabel({ value, index: i, label: props.itemLabels?.[i] })\n : undefined\n }\n </div>\n )) }\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VRating = InstanceType<typeof VRating>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VRating.mjs","names":["VBtn","IconValue","makeDensityProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","useLocale","useProxiedModel","computed","ref","clamp","createRange","genericComponent","getUid","useRender","VRating","name","props","String","itemAriaLabel","type","default","activeColor","color","clearable","Boolean","disabled","emptyIcon","fullIcon","halfIncrements","hover","length","Number","readonly","modelValue","itemLabels","Array","itemLabelPosition","validator","v","includes","ripple","emits","value","setup","slots","t","themeClasses","rating","normalizedValue","parseFloat","range","increments","flatMap","hoverIndex","focusIndex","firstRef","isClicking","itemState","map","isHovering","isFilled","isHovered","isFullIcon","icon","eventState","onMouseenter","onMouseleave","onFocus","focus","onBlur","onClick","undefined","onMousedown","onMouseup","VRatingItem","index","showStar","id","replace","btnProps","density","size","tag","variant","item","createLabel","labelProps","label","hasLabels","i","Math","ceil"],"sources":["../../../src/components/VRating/VRating.tsx"],"sourcesContent":["// Styles\nimport './VRating.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { clamp, createRange, genericComponent, getUid, useRender } from '@/util'\n\n// Types\nimport type { Prop } from 'vue'\nimport type { Variant } from '@/composables/variant'\n\ntype VRatingItemSlot = {\n value: number\n index: number\n isFilled: boolean\n isHovered: boolean\n icon: IconValue\n color?: string\n props: Record<string, unknown>\n}\n\ntype VRatingItemLabelSlot = {\n value: number\n index: number\n label?: string\n}\n\ntype VRatingSlots = {\n item: [VRatingItemSlot]\n 'item-label': [VRatingItemLabelSlot]\n}\n\nexport const VRating = genericComponent<VRatingSlots>()({\n name: 'VRating',\n\n props: {\n name: String,\n itemAriaLabel: {\n type: String,\n default: '$vuetify.rating.ariaLabel.item',\n },\n activeColor: String,\n color: String,\n clearable: Boolean,\n disabled: Boolean,\n emptyIcon: {\n type: IconValue,\n default: '$ratingEmpty',\n },\n fullIcon: {\n type: IconValue,\n default: '$ratingFull',\n },\n halfIncrements: Boolean,\n hover: Boolean,\n length: {\n type: [Number, String],\n default: 5,\n },\n readonly: Boolean,\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n itemLabels: Array as Prop<string[]>,\n itemLabelPosition: {\n type: String,\n default: 'top',\n validator: (v: any) => ['top', 'bottom'].includes(v),\n },\n ripple: Boolean,\n\n ...makeDensityProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (value: number | string) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { themeClasses } = provideTheme(props)\n const rating = useProxiedModel(props, 'modelValue')\n const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, +props.length))\n\n const range = computed(() => createRange(Number(props.length), 1))\n const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]))\n const hoverIndex = ref(-1)\n const focusIndex = ref(-1)\n const firstRef = ref<HTMLElement>()\n let isClicking = false\n\n const itemState = computed(() => increments.value.map(value => {\n const isHovering = props.hover && hoverIndex.value > -1\n const isFilled = normalizedValue.value >= value\n const isHovered = hoverIndex.value >= value\n const isFullIcon = isHovering ? isHovered : isFilled\n const icon = isFullIcon ? props.fullIcon : props.emptyIcon\n const activeColor = props.activeColor ?? props.color\n const color = (isFilled || isHovered) ? activeColor : props.color\n\n return { isFilled, isHovered, icon, color }\n }))\n\n const eventState = computed(() => [0, ...increments.value].map(value => {\n function onMouseenter () {\n hoverIndex.value = value\n }\n\n function onMouseleave () {\n hoverIndex.value = -1\n }\n\n function onFocus () {\n if (value === 0 && normalizedValue.value === 0) {\n firstRef.value?.focus()\n } else {\n focusIndex.value = value\n }\n }\n\n function onBlur () {\n if (!isClicking) focusIndex.value = -1\n }\n\n function onClick () {\n if (props.disabled || props.readonly) return\n rating.value = normalizedValue.value === value && props.clearable ? 0 : value\n }\n\n return {\n onMouseenter: props.hover ? onMouseenter : undefined,\n onMouseleave: props.hover ? onMouseleave : undefined,\n onFocus,\n onBlur,\n onClick,\n }\n }))\n\n function onMousedown () {\n isClicking = true\n }\n\n function onMouseup () {\n isClicking = false\n }\n\n const name = computed(() => props.name ?? `v-rating-${getUid()}`)\n\n function VRatingItem ({ value, index, showStar = true }: { value: number, index: number, showStar?: boolean }) {\n const { onMouseenter, onMouseleave, onFocus, onBlur, onClick } = eventState.value[index + 1]\n const id = `${name.value}-${String(value).replace('.', '-')}`\n const btnProps = {\n color: itemState.value[index]?.color,\n density: props.density,\n disabled: props.disabled,\n icon: itemState.value[index]?.icon,\n ripple: props.ripple,\n size: props.size,\n tag: 'span',\n variant: 'plain' as Variant,\n }\n\n return (\n <>\n <label\n for={ id }\n class={{\n 'v-rating__item--half': props.halfIncrements && value % 1 > 0,\n 'v-rating__item--full': props.halfIncrements && value % 1 === 0,\n }}\n onMousedown={ onMousedown }\n onMouseup={ onMouseup }\n onMouseenter={ onMouseenter }\n onMouseleave={ onMouseleave }\n >\n <span class=\"v-rating__hidden\">{ t(props.itemAriaLabel, value, props.length) }</span>\n {\n !showStar ? undefined\n : slots.item ? slots.item({\n ...itemState.value[index],\n props: btnProps,\n value,\n index,\n })\n : (\n <VBtn { ...btnProps } />\n )\n }\n </label>\n\n <input\n class=\"v-rating__hidden\"\n name={ name.value }\n id={ id }\n type=\"radio\"\n value={ value }\n checked={ normalizedValue.value === value }\n onClick={ onClick }\n onFocus={ onFocus }\n onBlur={ onBlur }\n ref={ index === 0 ? firstRef : undefined }\n readonly={ props.readonly }\n disabled={ props.disabled }\n />\n </>\n )\n }\n\n function createLabel (labelProps: { value: number, index: number, label?: string }) {\n if (slots['item-label']) return slots['item-label'](labelProps)\n\n if (labelProps.label) return <span>{ labelProps.label }</span>\n\n return <span>&nbsp;</span>\n }\n\n useRender(() => {\n const hasLabels = !!props.itemLabels?.length || slots['item-label']\n\n return (\n <props.tag\n class={[\n 'v-rating',\n {\n 'v-rating--hover': props.hover,\n 'v-rating--readonly': props.readonly,\n },\n themeClasses.value,\n ]}\n >\n <VRatingItem value={ 0 } index={ -1 } showStar={ false } />\n\n { range.value.map((value, i) => (\n <div class=\"v-rating__wrapper\">\n {\n hasLabels && props.itemLabelPosition === 'top'\n ? createLabel({ value, index: i, label: props.itemLabels?.[i] })\n : undefined\n }\n <div\n class={[\n 'v-rating__item',\n {\n 'v-rating__item--focused': Math.ceil(focusIndex.value) === value,\n },\n ]}\n >\n { props.halfIncrements ? (\n <>\n <VRatingItem value={ value - 0.5 } index={ i * 2 } />\n <VRatingItem value={ value } index={ (i * 2) + 1 } />\n </>\n ) : (\n <VRatingItem value={ value } index={ i } />\n ) }\n </div>\n {\n hasLabels && props.itemLabelPosition === 'bottom'\n ? createLabel({ value, index: i, label: props.itemLabels?.[i] })\n : undefined\n }\n </div>\n )) }\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VRating = InstanceType<typeof VRating>\n"],"mappings":"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"}
@@ -40,6 +40,11 @@
40
40
  .v-btn
41
41
  transform: $rating-item-icon-transform
42
42
 
43
+ &--focused
44
+ .v-btn__overlay
45
+ display: block
46
+ opacity: $rating-item-focused-button-overlay-opacity
47
+
43
48
  &--half
44
49
  overflow: hidden
45
50
  position: absolute
@@ -14,7 +14,6 @@ type VRatingItemSlot = {
14
14
  icon: IconValue;
15
15
  color?: string;
16
16
  props: Record<string, unknown>;
17
- rating: number;
18
17
  };
19
18
  type VRatingItemLabelSlot = {
20
19
  value: number;
@@ -48,6 +47,10 @@ declare const VRating: vue.DefineComponent<{
48
47
  item?: ((args_0: VRatingItemSlot) => vue.VNodeChild) | undefined;
49
48
  'item-label'?: ((args_0: VRatingItemLabelSlot) => vue.VNodeChild) | undefined;
50
49
  };
50
+ $slots?: {
51
+ item?: ((args_0: VRatingItemSlot) => vue.VNodeChild) | undefined;
52
+ 'item-label'?: ((args_0: VRatingItemLabelSlot) => vue.VNodeChild) | undefined;
53
+ } | undefined;
51
54
  'v-slots'?: {
52
55
  item?: false | ((args_0: VRatingItemSlot) => vue.VNodeChild) | undefined;
53
56
  'item-label'?: false | ((args_0: VRatingItemLabelSlot) => vue.VNodeChild) | undefined;
@@ -84,6 +87,10 @@ declare const VRating: vue.DefineComponent<{
84
87
  item?: ((args_0: VRatingItemSlot) => vue.VNodeChild) | undefined;
85
88
  'item-label'?: ((args_0: VRatingItemLabelSlot) => vue.VNodeChild) | undefined;
86
89
  };
90
+ $slots?: {
91
+ item?: ((args_0: VRatingItemSlot) => vue.VNodeChild) | undefined;
92
+ 'item-label'?: ((args_0: VRatingItemLabelSlot) => vue.VNodeChild) | undefined;
93
+ } | undefined;
87
94
  'v-slots'?: {
88
95
  item?: false | ((args_0: VRatingItemSlot) => vue.VNodeChild) | undefined;
89
96
  'item-label'?: false | ((args_0: VRatingItemLabelSlot) => vue.VNodeChild) | undefined;
@@ -14,6 +14,10 @@ declare const VResponsive: vue.DefineComponent<{} & {
14
14
  default?: (() => vue.VNodeChild) | undefined;
15
15
  additional?: (() => vue.VNodeChild) | undefined;
16
16
  };
17
+ $slots?: {
18
+ default?: (() => vue.VNodeChild) | undefined;
19
+ additional?: (() => vue.VNodeChild) | undefined;
20
+ } | undefined;
17
21
  'v-slots'?: {
18
22
  default?: false | (() => vue.VNodeChild) | undefined;
19
23
  additional?: false | (() => vue.VNodeChild) | undefined;
@@ -35,6 +39,10 @@ declare const VResponsive: vue.DefineComponent<{} & {
35
39
  default?: (() => vue.VNodeChild) | undefined;
36
40
  additional?: (() => vue.VNodeChild) | undefined;
37
41
  };
42
+ $slots?: {
43
+ default?: (() => vue.VNodeChild) | undefined;
44
+ additional?: (() => vue.VNodeChild) | undefined;
45
+ } | undefined;
38
46
  'v-slots'?: {
39
47
  default?: false | (() => vue.VNodeChild) | undefined;
40
48
  additional?: false | (() => vue.VNodeChild) | undefined;