vuetify 3.8.0-beta.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +3162 -3030
  3. package/dist/json/importMap-labs.json +32 -28
  4. package/dist/json/importMap.json +166 -166
  5. package/dist/json/tags.json +38 -0
  6. package/dist/json/web-types.json +6016 -5639
  7. package/dist/vuetify-labs.cjs +320 -55
  8. package/dist/vuetify-labs.css +5453 -5271
  9. package/dist/vuetify-labs.d.ts +612 -267
  10. package/dist/vuetify-labs.esm.js +320 -55
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +320 -55
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +74 -36
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3042 -3037
  17. package/dist/vuetify.d.ts +161 -178
  18. package/dist/vuetify.esm.js +74 -36
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +74 -36
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +32 -32
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.js +5 -10
  26. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  27. package/lib/components/VColorPicker/VColorPickerPreview.js +4 -3
  28. package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
  29. package/lib/components/VConfirmEdit/VConfirmEdit.d.ts +31 -6
  30. package/lib/components/VConfirmEdit/VConfirmEdit.js +17 -2
  31. package/lib/components/VConfirmEdit/VConfirmEdit.js.map +1 -1
  32. package/lib/components/VDataTable/VDataTable.d.ts +4 -4
  33. package/lib/components/VDataTable/VDataTableRow.d.ts +9 -6
  34. package/lib/components/VDataTable/VDataTableRow.js +18 -3
  35. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  36. package/lib/components/VDataTable/VDataTableRows.d.ts +4 -4
  37. package/lib/components/VDataTable/VDataTableServer.d.ts +4 -4
  38. package/lib/components/VDataTable/VDataTableVirtual.d.ts +4 -4
  39. package/lib/components/VDatePicker/VDatePicker.d.ts +33 -78
  40. package/lib/components/VDatePicker/VDatePicker.js +1 -1
  41. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  42. package/lib/components/VDatePicker/VDatePickerMonth.d.ts +33 -78
  43. package/lib/components/VEmptyState/VEmptyState.js +3 -1
  44. package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
  45. package/lib/components/VField/VField.css +2 -2
  46. package/lib/components/VField/VField.js +5 -1
  47. package/lib/components/VField/VField.js.map +1 -1
  48. package/lib/components/VField/_variables.scss +1 -1
  49. package/lib/components/VIcon/VIcon.css +1 -0
  50. package/lib/components/VIcon/VIcon.d.ts +10 -0
  51. package/lib/components/VIcon/VIcon.js +6 -3
  52. package/lib/components/VIcon/VIcon.js.map +1 -1
  53. package/lib/components/VIcon/VIcon.sass +1 -0
  54. package/lib/components/VInput/VInput.css +7 -7
  55. package/lib/components/VInput/VInput.sass +5 -2
  56. package/lib/composables/calendar.d.ts +12 -35
  57. package/lib/composables/calendar.js +12 -9
  58. package/lib/composables/calendar.js.map +1 -1
  59. package/lib/entry-bundler.js +1 -1
  60. package/lib/entry-bundler.js.map +1 -1
  61. package/lib/framework.d.ts +61 -60
  62. package/lib/framework.js +1 -1
  63. package/lib/framework.js.map +1 -1
  64. package/lib/labs/VCalendar/VCalendar.d.ts +33 -78
  65. package/lib/labs/VDateInput/VDateInput.d.ts +103 -81
  66. package/lib/labs/VDateInput/VDateInput.js +77 -19
  67. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  68. package/lib/labs/VFileUpload/VFileUpload.js +2 -1
  69. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  70. package/lib/labs/VIconBtn/VIconBtn.css +178 -0
  71. package/lib/labs/VIconBtn/VIconBtn.d.ts +608 -0
  72. package/lib/labs/VIconBtn/VIconBtn.js +184 -0
  73. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -0
  74. package/lib/labs/VIconBtn/VIconBtn.scss +110 -0
  75. package/lib/labs/VIconBtn/_variables.scss +36 -0
  76. package/lib/labs/VIconBtn/index.d.ts +1 -0
  77. package/lib/labs/VIconBtn/index.js +2 -0
  78. package/lib/labs/VIconBtn/index.js.map +1 -0
  79. package/lib/labs/components.d.ts +1 -0
  80. package/lib/labs/components.js +1 -0
  81. package/lib/labs/components.js.map +1 -1
  82. package/lib/styles/main.css +4 -0
  83. package/lib/styles/settings/_utilities.scss +5 -0
  84. package/lib/util/helpers.d.ts +1 -2
  85. package/lib/util/helpers.js +2 -12
  86. package/lib/util/helpers.js.map +1 -1
  87. package/package.json +2 -2
@@ -0,0 +1,184 @@
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
2
+ // Styles
3
+ import "./VIconBtn.css";
4
+
5
+ // Components
6
+ import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.js";
7
+ import { VIcon } from "../../components/VIcon/index.js";
8
+ import { VProgressCircular } from "../../components/VProgressCircular/index.js"; // Composables
9
+ import { makeBorderProps, useBorder } from "../../composables/border.js";
10
+ import { makeComponentProps } from "../../composables/component.js";
11
+ import { makeElevationProps, useElevation } from "../../composables/elevation.js";
12
+ import { useProxiedModel } from "../../composables/proxiedModel.js";
13
+ import { makeRoundedProps, useRounded } from "../../composables/rounded.js";
14
+ import { makeTagProps } from "../../composables/tag.js";
15
+ import { makeThemeProps, provideTheme } from "../../composables/theme.js";
16
+ import { genOverlays, makeVariantProps, useVariant } from "../../composables/variant.js"; // Utilities
17
+ import { toDisplayString, toRef } from 'vue';
18
+ import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
19
+ export const makeVIconBtnProps = propsFactory({
20
+ active: {
21
+ type: Boolean,
22
+ default: undefined
23
+ },
24
+ activeColor: String,
25
+ activeIcon: [String, Function, Object],
26
+ activeVariant: String,
27
+ baseVariant: {
28
+ type: String,
29
+ default: 'tonal'
30
+ },
31
+ disabled: Boolean,
32
+ height: [Number, String],
33
+ width: [Number, String],
34
+ hideOverlay: Boolean,
35
+ icon: [String, Function, Object],
36
+ iconColor: String,
37
+ iconSize: {
38
+ type: [Number, String],
39
+ default: 'default'
40
+ },
41
+ iconSizes: {
42
+ type: Array,
43
+ default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
44
+ },
45
+ loading: Boolean,
46
+ opacity: [Number, String],
47
+ readonly: Boolean,
48
+ rotate: [Number, String],
49
+ size: {
50
+ type: [Number, String],
51
+ default: 'default'
52
+ },
53
+ sizes: {
54
+ type: Array,
55
+ default: () => [['x-small', 16], ['small', 24], ['default', 40], ['large', 48], ['x-large', 56]]
56
+ },
57
+ text: {
58
+ type: [String, Number, Boolean],
59
+ default: undefined
60
+ },
61
+ ...makeBorderProps(),
62
+ ...makeComponentProps(),
63
+ ...makeElevationProps(),
64
+ ...makeRoundedProps(),
65
+ ...makeTagProps({
66
+ tag: 'button'
67
+ }),
68
+ ...makeThemeProps(),
69
+ ...makeVariantProps({
70
+ variant: 'flat'
71
+ })
72
+ }, 'VIconBtn');
73
+ export const VIconBtn = genericComponent()({
74
+ name: 'VIconBtn',
75
+ props: makeVIconBtnProps(),
76
+ emits: {
77
+ 'update:active': value => true
78
+ },
79
+ setup(props, _ref) {
80
+ let {
81
+ attrs,
82
+ slots
83
+ } = _ref;
84
+ const isActive = useProxiedModel(props, 'active');
85
+ const {
86
+ themeClasses
87
+ } = provideTheme(props);
88
+ const {
89
+ borderClasses
90
+ } = useBorder(props);
91
+ const {
92
+ elevationClasses
93
+ } = useElevation(props);
94
+ const {
95
+ roundedClasses
96
+ } = useRounded(props);
97
+ const {
98
+ colorClasses,
99
+ colorStyles,
100
+ variantClasses
101
+ } = useVariant(toRef(() => ({
102
+ color: (() => {
103
+ if (props.disabled) return undefined;
104
+ if (!isActive.value) return props.color;
105
+ // Use an inline fallback as opposed to setting a default color
106
+ // because non-toggle buttons are default flat whereas toggle
107
+ // buttons are default tonal and active flat. The exact use
108
+ // case for this is a toggle button with no active color.
109
+ return props.activeColor ?? props.color ?? 'surface-variant';
110
+ })(),
111
+ variant: (() => {
112
+ if (isActive.value === undefined) return props.variant;
113
+ if (isActive.value) return props.activeVariant ?? props.variant;
114
+ return props.baseVariant ?? props.variant;
115
+ })()
116
+ })));
117
+ const btnSizeMap = new Map(props.sizes);
118
+ const iconSizeMap = new Map(props.iconSizes);
119
+ function onClick() {
120
+ if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
121
+ isActive.value = !isActive.value;
122
+ }
123
+ useRender(() => {
124
+ const icon = isActive.value ? props.activeIcon ?? props.icon : props.icon;
125
+ const size = props.size;
126
+ const hasNamedSize = btnSizeMap.has(size);
127
+ const btnSize = hasNamedSize ? btnSizeMap.get(size) : size;
128
+ const btnHeight = props.height ?? btnSize;
129
+ const btnWidth = props.width ?? btnSize;
130
+ const _iconSize = hasNamedSize ? size : props.iconSize ?? size;
131
+ const iconSize = iconSizeMap.get(_iconSize) ?? _iconSize;
132
+ const iconProps = {
133
+ icon,
134
+ size: iconSize,
135
+ iconColor: props.iconColor,
136
+ opacity: props.opacity
137
+ };
138
+ return _createVNode(props.tag, {
139
+ "class": [{
140
+ 'v-icon-btn': true,
141
+ 'v-icon-btn--active': isActive.value,
142
+ 'v-icon-btn--disabled': props.disabled,
143
+ 'v-icon-btn--loading': props.loading,
144
+ 'v-icon-btn--readonly': props.readonly,
145
+ [`v-icon-btn--${props.size}`]: true
146
+ }, themeClasses.value, colorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, variantClasses.value, props.class],
147
+ "style": [{
148
+ '--v-icon-btn-rotate': convertToUnit(props.rotate, 'deg'),
149
+ '--v-icon-btn-height': convertToUnit(btnHeight),
150
+ '--v-icon-btn-width': convertToUnit(btnWidth)
151
+ }, colorStyles.value, props.style],
152
+ "tabindex": props.disabled || props.readonly ? -1 : 0,
153
+ "onClick": onClick
154
+ }, {
155
+ default: () => [genOverlays(!props.hideOverlay, 'v-icon-btn'), _createVNode("div", {
156
+ "class": "v-icon-btn__content",
157
+ "data-no-activator": ""
158
+ }, [!slots.default && icon ? _createVNode(VIcon, _mergeProps({
159
+ "key": "content-icon"
160
+ }, iconProps), null) : _createVNode(VDefaultsProvider, {
161
+ "key": "content-defaults",
162
+ "disabled": !icon,
163
+ "defaults": {
164
+ VIcon: {
165
+ ...iconProps
166
+ }
167
+ }
168
+ }, {
169
+ default: () => slots.default?.() ?? toDisplayString(props.text)
170
+ })]), !!props.loading && _createVNode("span", {
171
+ "key": "loader",
172
+ "class": "v-icon-btn__loader"
173
+ }, [slots.loader?.() ?? _createVNode(VProgressCircular, {
174
+ "color": typeof props.loading === 'boolean' ? undefined : props.loading,
175
+ "indeterminate": "disable-shrink",
176
+ "width": "2",
177
+ "size": iconSize
178
+ }, null)])]
179
+ });
180
+ });
181
+ return {};
182
+ }
183
+ });
184
+ //# sourceMappingURL=VIconBtn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VIconBtn.js","names":["VDefaultsProvider","VIcon","VProgressCircular","makeBorderProps","useBorder","makeComponentProps","makeElevationProps","useElevation","useProxiedModel","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","toDisplayString","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVIconBtnProps","active","type","Boolean","default","undefined","activeColor","String","activeIcon","Function","Object","activeVariant","baseVariant","disabled","height","Number","width","hideOverlay","icon","iconColor","iconSize","iconSizes","Array","loading","opacity","readonly","rotate","size","sizes","text","tag","variant","VIconBtn","name","props","emits","value","setup","_ref","attrs","slots","isActive","themeClasses","borderClasses","elevationClasses","roundedClasses","colorClasses","colorStyles","variantClasses","color","btnSizeMap","Map","iconSizeMap","onClick","href","hasNamedSize","has","btnSize","get","btnHeight","btnWidth","_iconSize","iconProps","_createVNode","class","style","_mergeProps","loader"],"sources":["../../../src/labs/VIconBtn/VIconBtn.tsx"],"sourcesContent":["// Styles\nimport './VIconBtn.scss'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { toDisplayString, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { IconValue } from '@/composables/icons'\nimport type { Variant } from '@/composables/variant'\n\nexport type VIconBtnSlots = {\n default: never\n loader: never\n}\n\nexport type VIconBtnSizes = 'x-small' | 'small' | 'default' | 'large' | 'x-large'\n\nexport const makeVIconBtnProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeColor: String,\n activeIcon: [String, Function, Object] as PropType<IconValue>,\n activeVariant: String as PropType<Variant>,\n baseVariant: {\n type: String as PropType<Variant>,\n default: 'tonal',\n },\n disabled: Boolean,\n height: [Number, String],\n width: [Number, String],\n hideOverlay: Boolean,\n icon: [String, Function, Object] as PropType<IconValue>,\n iconColor: String,\n iconSize: {\n type: [Number, String] as PropType<VIconBtnSizes | number | string>,\n default: 'default',\n },\n iconSizes: {\n type: Array as PropType<[VIconBtnSizes, number][]>,\n default: () => ([\n ['x-small', 10],\n ['small', 16],\n ['default', 24],\n ['large', 28],\n ['x-large', 32],\n ]),\n },\n loading: Boolean,\n opacity: [Number, String],\n readonly: Boolean,\n rotate: [Number, String],\n size: {\n type: [Number, String] as PropType<VIconBtnSizes | number | string>,\n default: 'default',\n },\n sizes: {\n type: Array as PropType<[VIconBtnSizes, number][]>,\n default: () => ([\n ['x-small', 16],\n ['small', 24],\n ['default', 40],\n ['large', 48],\n ['x-large', 56],\n ]),\n },\n text: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'button' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'flat' } as const),\n}, 'VIconBtn')\n\nexport const VIconBtn = genericComponent<VIconBtnSlots>()({\n name: 'VIconBtn',\n\n props: makeVIconBtnProps(),\n\n emits: {\n 'update:active': (value: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const isActive = useProxiedModel(props, 'active')\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n\n const { colorClasses, colorStyles, variantClasses } = useVariant(toRef(() => ({\n color: (() => {\n if (props.disabled) return undefined\n if (!isActive.value) return props.color\n // Use an inline fallback as opposed to setting a default color\n // because non-toggle buttons are default flat whereas toggle\n // buttons are default tonal and active flat. The exact use\n // case for this is a toggle button with no active color.\n return props.activeColor ?? props.color ?? 'surface-variant'\n })(),\n variant: (() => {\n if (isActive.value === undefined) return props.variant\n if (isActive.value) return props.activeVariant ?? props.variant\n return props.baseVariant ?? props.variant\n })(),\n })))\n\n const btnSizeMap = new Map(props.sizes)\n const iconSizeMap = new Map(props.iconSizes)\n\n function onClick () {\n if (\n props.disabled ||\n props.readonly ||\n isActive.value === undefined ||\n (props.tag === 'a' && attrs.href)\n ) return\n\n isActive.value = !isActive.value\n }\n\n useRender(() => {\n const icon = isActive.value ? props.activeIcon ?? props.icon : props.icon\n\n const size = props.size as VIconBtnSizes\n const hasNamedSize = btnSizeMap.has(size)\n const btnSize = hasNamedSize ? btnSizeMap.get(size) : size\n const btnHeight = props.height ?? btnSize\n const btnWidth = props.width ?? btnSize\n\n const _iconSize = hasNamedSize ? size : (props.iconSize as VIconBtnSizes ?? size)\n const iconSize = iconSizeMap.get(_iconSize) ?? _iconSize\n\n const iconProps = { icon, size: iconSize, iconColor: props.iconColor, opacity: props.opacity }\n\n return (\n <props.tag\n class={[\n {\n 'v-icon-btn': true,\n 'v-icon-btn--active': isActive.value,\n 'v-icon-btn--disabled': props.disabled,\n 'v-icon-btn--loading': props.loading,\n 'v-icon-btn--readonly': props.readonly,\n [`v-icon-btn--${props.size}`]: true,\n },\n themeClasses.value,\n colorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n {\n '--v-icon-btn-rotate': convertToUnit(props.rotate, 'deg'),\n '--v-icon-btn-height': convertToUnit(btnHeight),\n '--v-icon-btn-width': convertToUnit(btnWidth),\n },\n colorStyles.value,\n props.style,\n ]}\n tabindex={ props.disabled || props.readonly ? -1 : 0 }\n onClick={ onClick }\n >\n { genOverlays(!props.hideOverlay, 'v-icon-btn') }\n\n <div class=\"v-icon-btn__content\" data-no-activator=\"\">\n { (!slots.default && icon) ? (\n <VIcon\n key=\"content-icon\"\n { ...iconProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"content-defaults\"\n disabled={ !icon }\n defaults={{ VIcon: { ...iconProps } }}\n v-slots={{\n default: () => slots.default?.() ?? toDisplayString(props.text),\n }}\n />\n )}\n </div>\n\n { !!props.loading && (\n <span key=\"loader\" class=\"v-icon-btn__loader\">\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate=\"disable-shrink\"\n width=\"2\"\n size={ iconSize }\n />\n )}\n </span>\n )}\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VIconBtn = InstanceType<typeof VIconBtn>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,KAAK;AAAA,SACLC,iBAAiB,uDAE1B;AAAA,SACSC,eAAe,EAAEC,SAAS;AAAA,SAC1BC,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,eAAe;AAAA,SACfC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,WAAW,EAAEC,gBAAgB,EAAEC,UAAU,wCAElD;AACA,SAASC,eAAe,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACnCC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,+BAEjE;AAYA,OAAO,MAAMC,iBAAiB,GAAGF,YAAY,CAAC;EAC5CG,MAAM,EAAE;IACNC,IAAI,EAAEC,OAAO;IACbC,OAAO,EAAEC;EACX,CAAC;EACDC,WAAW,EAAEC,MAAM;EACnBC,UAAU,EAAE,CAACD,MAAM,EAAEE,QAAQ,EAAEC,MAAM,CAAwB;EAC7DC,aAAa,EAAEJ,MAA2B;EAC1CK,WAAW,EAAE;IACXV,IAAI,EAAEK,MAA2B;IACjCH,OAAO,EAAE;EACX,CAAC;EACDS,QAAQ,EAAEV,OAAO;EACjBW,MAAM,EAAE,CAACC,MAAM,EAAER,MAAM,CAAC;EACxBS,KAAK,EAAE,CAACD,MAAM,EAAER,MAAM,CAAC;EACvBU,WAAW,EAAEd,OAAO;EACpBe,IAAI,EAAE,CAACX,MAAM,EAAEE,QAAQ,EAAEC,MAAM,CAAwB;EACvDS,SAAS,EAAEZ,MAAM;EACjBa,QAAQ,EAAE;IACRlB,IAAI,EAAE,CAACa,MAAM,EAAER,MAAM,CAA8C;IACnEH,OAAO,EAAE;EACX,CAAC;EACDiB,SAAS,EAAE;IACTnB,IAAI,EAAEoB,KAA4C;IAClDlB,OAAO,EAAEA,CAAA,KAAO,CACd,CAAC,SAAS,EAAE,EAAE,CAAC,EACf,CAAC,OAAO,EAAE,EAAE,CAAC,EACb,CAAC,SAAS,EAAE,EAAE,CAAC,EACf,CAAC,OAAO,EAAE,EAAE,CAAC,EACb,CAAC,SAAS,EAAE,EAAE,CAAC;EAEnB,CAAC;EACDmB,OAAO,EAAEpB,OAAO;EAChBqB,OAAO,EAAE,CAACT,MAAM,EAAER,MAAM,CAAC;EACzBkB,QAAQ,EAAEtB,OAAO;EACjBuB,MAAM,EAAE,CAACX,MAAM,EAAER,MAAM,CAAC;EACxBoB,IAAI,EAAE;IACJzB,IAAI,EAAE,CAACa,MAAM,EAAER,MAAM,CAA8C;IACnEH,OAAO,EAAE;EACX,CAAC;EACDwB,KAAK,EAAE;IACL1B,IAAI,EAAEoB,KAA4C;IAClDlB,OAAO,EAAEA,CAAA,KAAO,CACd,CAAC,SAAS,EAAE,EAAE,CAAC,EACf,CAAC,OAAO,EAAE,EAAE,CAAC,EACb,CAAC,SAAS,EAAE,EAAE,CAAC,EACf,CAAC,OAAO,EAAE,EAAE,CAAC,EACb,CAAC,SAAS,EAAE,EAAE,CAAC;EAEnB,CAAC;EACDyB,IAAI,EAAE;IACJ3B,IAAI,EAAE,CAACK,MAAM,EAAEQ,MAAM,EAAEZ,OAAO,CAAC;IAC/BC,OAAO,EAAEC;EACX,CAAC;EAED,GAAGzB,eAAe,CAAC,CAAC;EACpB,GAAGE,kBAAkB,CAAC,CAAC;EACvB,GAAGC,kBAAkB,CAAC,CAAC;EACvB,GAAGG,gBAAgB,CAAC,CAAC;EACrB,GAAGE,YAAY,CAAC;IAAE0C,GAAG,EAAE;EAAS,CAAC,CAAC;EAClC,GAAGzC,cAAc,CAAC,CAAC;EACnB,GAAGG,gBAAgB,CAAC;IAAEuC,OAAO,EAAE;EAAO,CAAU;AAClD,CAAC,EAAE,UAAU,CAAC;AAEd,OAAO,MAAMC,QAAQ,GAAGnC,gBAAgB,CAAgB,CAAC,CAAC;EACxDoC,IAAI,EAAE,UAAU;EAEhBC,KAAK,EAAElC,iBAAiB,CAAC,CAAC;EAE1BmC,KAAK,EAAE;IACL,eAAe,EAAGC,KAAc,IAAK;EACvC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC5B,MAAMG,QAAQ,GAAGxD,eAAe,CAACiD,KAAK,EAAE,QAAQ,CAAC;IAEjD,MAAM;MAAEQ;IAAa,CAAC,GAAGpD,YAAY,CAAC4C,KAAK,CAAC;IAC5C,MAAM;MAAES;IAAc,CAAC,GAAG9D,SAAS,CAACqD,KAAK,CAAC;IAC1C,MAAM;MAAEU;IAAiB,CAAC,GAAG5D,YAAY,CAACkD,KAAK,CAAC;IAChD,MAAM;MAAEW;IAAe,CAAC,GAAG1D,UAAU,CAAC+C,KAAK,CAAC;IAE5C,MAAM;MAAEY,YAAY;MAAEC,WAAW;MAAEC;IAAe,CAAC,GAAGvD,UAAU,CAACE,KAAK,CAAC,OAAO;MAC5EsD,KAAK,EAAE,CAAC,MAAM;QACZ,IAAIf,KAAK,CAACrB,QAAQ,EAAE,OAAOR,SAAS;QACpC,IAAI,CAACoC,QAAQ,CAACL,KAAK,EAAE,OAAOF,KAAK,CAACe,KAAK;QACvC;QACA;QACA;QACA;QACA,OAAOf,KAAK,CAAC5B,WAAW,IAAI4B,KAAK,CAACe,KAAK,IAAI,iBAAiB;MAC9D,CAAC,EAAE,CAAC;MACJlB,OAAO,EAAE,CAAC,MAAM;QACd,IAAIU,QAAQ,CAACL,KAAK,KAAK/B,SAAS,EAAE,OAAO6B,KAAK,CAACH,OAAO;QACtD,IAAIU,QAAQ,CAACL,KAAK,EAAE,OAAOF,KAAK,CAACvB,aAAa,IAAIuB,KAAK,CAACH,OAAO;QAC/D,OAAOG,KAAK,CAACtB,WAAW,IAAIsB,KAAK,CAACH,OAAO;MAC3C,CAAC,EAAE;IACL,CAAC,CAAC,CAAC,CAAC;IAEJ,MAAMmB,UAAU,GAAG,IAAIC,GAAG,CAACjB,KAAK,CAACN,KAAK,CAAC;IACvC,MAAMwB,WAAW,GAAG,IAAID,GAAG,CAACjB,KAAK,CAACb,SAAS,CAAC;IAE5C,SAASgC,OAAOA,CAAA,EAAI;MAClB,IACEnB,KAAK,CAACrB,QAAQ,IACdqB,KAAK,CAACT,QAAQ,IACdgB,QAAQ,CAACL,KAAK,KAAK/B,SAAS,IAC3B6B,KAAK,CAACJ,GAAG,KAAK,GAAG,IAAIS,KAAK,CAACe,IAAK,EACjC;MAEFb,QAAQ,CAACL,KAAK,GAAG,CAACK,QAAQ,CAACL,KAAK;IAClC;IAEArC,SAAS,CAAC,MAAM;MACd,MAAMmB,IAAI,GAAGuB,QAAQ,CAACL,KAAK,GAAGF,KAAK,CAAC1B,UAAU,IAAI0B,KAAK,CAAChB,IAAI,GAAGgB,KAAK,CAAChB,IAAI;MAEzE,MAAMS,IAAI,GAAGO,KAAK,CAACP,IAAqB;MACxC,MAAM4B,YAAY,GAAGL,UAAU,CAACM,GAAG,CAAC7B,IAAI,CAAC;MACzC,MAAM8B,OAAO,GAAGF,YAAY,GAAGL,UAAU,CAACQ,GAAG,CAAC/B,IAAI,CAAC,GAAGA,IAAI;MAC1D,MAAMgC,SAAS,GAAGzB,KAAK,CAACpB,MAAM,IAAI2C,OAAO;MACzC,MAAMG,QAAQ,GAAG1B,KAAK,CAAClB,KAAK,IAAIyC,OAAO;MAEvC,MAAMI,SAAS,GAAGN,YAAY,GAAG5B,IAAI,GAAIO,KAAK,CAACd,QAAQ,IAAqBO,IAAK;MACjF,MAAMP,QAAQ,GAAGgC,WAAW,CAACM,GAAG,CAACG,SAAS,CAAC,IAAIA,SAAS;MAExD,MAAMC,SAAS,GAAG;QAAE5C,IAAI;QAAES,IAAI,EAAEP,QAAQ;QAAED,SAAS,EAAEe,KAAK,CAACf,SAAS;QAAEK,OAAO,EAAEU,KAAK,CAACV;MAAQ,CAAC;MAE9F,OAAAuC,YAAA,CAAA7B,KAAA,CAAAJ,GAAA;QAAA,SAEW,CACL;UACE,YAAY,EAAE,IAAI;UAClB,oBAAoB,EAAEW,QAAQ,CAACL,KAAK;UACpC,sBAAsB,EAAEF,KAAK,CAACrB,QAAQ;UACtC,qBAAqB,EAAEqB,KAAK,CAACX,OAAO;UACpC,sBAAsB,EAAEW,KAAK,CAACT,QAAQ;UACtC,CAAC,eAAeS,KAAK,CAACP,IAAI,EAAE,GAAG;QACjC,CAAC,EACDe,YAAY,CAACN,KAAK,EAClBU,YAAY,CAACV,KAAK,EAClBO,aAAa,CAACP,KAAK,EACnBQ,gBAAgB,CAACR,KAAK,EACtBS,cAAc,CAACT,KAAK,EACpBY,cAAc,CAACZ,KAAK,EACpBF,KAAK,CAAC8B,KAAK,CACZ;QAAA,SACM,CACL;UACE,qBAAqB,EAAEpE,aAAa,CAACsC,KAAK,CAACR,MAAM,EAAE,KAAK,CAAC;UACzD,qBAAqB,EAAE9B,aAAa,CAAC+D,SAAS,CAAC;UAC/C,oBAAoB,EAAE/D,aAAa,CAACgE,QAAQ;QAC9C,CAAC,EACDb,WAAW,CAACX,KAAK,EACjBF,KAAK,CAAC+B,KAAK,CACZ;QAAA,YACU/B,KAAK,CAACrB,QAAQ,IAAIqB,KAAK,CAACT,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;QAAA,WAC1C4B;MAAO;QAAAjD,OAAA,EAAAA,CAAA,MAEfb,WAAW,CAAC,CAAC2C,KAAK,CAACjB,WAAW,EAAE,YAAY,CAAC,EAAA8C,YAAA;UAAA;UAAA;QAAA,IAG1C,CAACvB,KAAK,CAACpC,OAAO,IAAIc,IAAI,GAAA6C,YAAA,CAAArF,KAAA,EAAAwF,WAAA;UAAA;QAAA,GAGhBJ,SAAS,WAAAC,YAAA,CAAAtF,iBAAA;UAAA;UAAA,YAKH,CAACyC,IAAI;UAAA,YACN;YAAExC,KAAK,EAAE;cAAE,GAAGoF;YAAU;UAAE;QAAC,GAC5B;UACP1D,OAAO,EAAEA,CAAA,KAAMoC,KAAK,CAACpC,OAAO,GAAG,CAAC,IAAIV,eAAe,CAACwC,KAAK,CAACL,IAAI;QAChE,CAAC,CAEJ,IAGD,CAAC,CAACK,KAAK,CAACX,OAAO,IAAAwC,YAAA;UAAA;UAAA;QAAA,IAEXvB,KAAK,CAAC2B,MAAM,GAAG,CAAC,IAAAJ,YAAA,CAAApF,iBAAA;UAAA,SAEN,OAAOuD,KAAK,CAACX,OAAO,KAAK,SAAS,GAAGlB,SAAS,GAAG6B,KAAK,CAACX,OAAO;UAAA;UAAA;UAAA,QAG/DH;QAAQ,QAElB,EAEJ;MAAA;IAGP,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,110 @@
1
+ @use '../../styles/settings';
2
+ @use '../../styles/tools';
3
+ @use './variables' as *;
4
+
5
+ @include tools.layer('components') {
6
+ .v-icon-btn {
7
+ @include tools.border($icon-btn-border...);
8
+ @include tools.rounded($icon-btn-border-radius);
9
+ @include tools.states('.v-icon-btn__overlay');
10
+ @include tools.variant($icon-btn-variants...);
11
+
12
+ & {
13
+ align-items: center;
14
+ cursor: pointer;
15
+ display: inline-flex;
16
+ flex: none;
17
+ font-size: $icon-btn-font-size;
18
+ font-weight: $icon-btn-font-weight;
19
+ height: #{$icon-btn-height};
20
+ justify-content: center;
21
+ outline: none;
22
+ position: relative;
23
+ transition-property: width, height, transform;
24
+ transition: 0.2s settings.$standard-easing;
25
+ vertical-align: middle;
26
+ width: #{$icon-btn-width};
27
+
28
+ @supports selector(:focus-visible) {
29
+ &::after {
30
+ pointer-events: none;
31
+ border: 2px solid currentColor;
32
+ border-radius: inherit;
33
+ opacity: 0;
34
+ transition: opacity .2s ease-in-out;
35
+ @include tools.absolute(true);
36
+ }
37
+
38
+ &:focus-visible::after {
39
+ opacity: calc(.25 * var(--v-theme-overlay-multiplier));
40
+ }
41
+ }
42
+ }
43
+
44
+ &--disabled,
45
+ &--loading,
46
+ &--readonly {
47
+ pointer-events: none;
48
+ }
49
+
50
+ &--disabled {
51
+ opacity: $icon-btn-disabled-opacity;
52
+ }
53
+
54
+ &--start {
55
+ margin-inline-end: $icon-btn-margin-start;
56
+ }
57
+
58
+ &--end {
59
+ margin-inline-start: $icon-btn-margin-end;
60
+ }
61
+ }
62
+
63
+ .v-icon-btn__content {
64
+ align-items: center;
65
+ justify-content: center;
66
+ display: inline-flex;
67
+ transition: inherit;
68
+ transition-property: transform;
69
+ transform: rotate(var(--v-icon-btn-rotate, 0deg));
70
+
71
+ .v-icon-btn--loading & {
72
+ opacity: 0;
73
+ }
74
+
75
+ .v-icon {
76
+ transition: 0.2s settings.$standard-easing;
77
+ transition-property: opacity, font-size, width, height;
78
+ transform-origin: center;
79
+ }
80
+ }
81
+
82
+ .v-icon-btn__loader {
83
+ align-items: center;
84
+ display: flex;
85
+ height: 100%;
86
+ justify-content: center;
87
+ left: 0;
88
+ position: absolute;
89
+ top: 0;
90
+ width: 100%;
91
+ }
92
+
93
+ .v-icon-btn__overlay,
94
+ .v-icon-btn__underlay {
95
+ border-radius: inherit;
96
+ pointer-events: none;
97
+
98
+ @include tools.absolute();
99
+ }
100
+
101
+ .v-icon-btn__overlay {
102
+ background-color: currentColor;
103
+ opacity: 0;
104
+ transition: opacity .2s ease-in-out;
105
+
106
+ .v-icon-btn--active:not(:hover) & {
107
+ --v-activated-opacity: 0;
108
+ }
109
+ }
110
+ }
@@ -0,0 +1,36 @@
1
+ @use 'sass:map';
2
+ @use '../../styles/settings';
3
+ @use '../../styles/tools';
4
+
5
+ // VIconBtn
6
+ $icon-btn-background: rgb(var(--v-theme-surface)) !default;
7
+ $icon-btn-color: inherit !default;
8
+ $icon-btn-border-color: settings.$border-color-root !default;
9
+ $icon-btn-border-radius: map.get(settings.$rounded, 'circle') !default;
10
+ $icon-btn-border-style: settings.$border-style-root !default;
11
+ $icon-btn-border-thin-width: thin !default;
12
+ $icon-btn-border-width: 0 !default;
13
+ $icon-btn-disabled-opacity: 0.26 !default;
14
+ $icon-btn-elevation: 2 !default;
15
+ $icon-btn-font-size: tools.map-deep-get(settings.$typography, 'button', 'size') !default;
16
+ $icon-btn-font-weight: tools.map-deep-get(settings.$typography, 'button', 'weight') !default;
17
+ $icon-btn-height: var(--v-icon-btn-height) !default;
18
+ $icon-btn-width: var(--v-icon-btn-width) !default;
19
+ $icon-btn-margin-start: map.get(settings.$grid-gutters, 'md') !default;
20
+ $icon-btn-margin-end: map.get(settings.$grid-gutters, 'md') !default;
21
+ $icon-btn-plain-opacity: .62 !default;
22
+
23
+ $icon-btn-border: (
24
+ $icon-btn-border-color,
25
+ $icon-btn-border-style,
26
+ $icon-btn-border-width,
27
+ $icon-btn-border-thin-width
28
+ ) !default;
29
+
30
+ $icon-btn-variants: (
31
+ $icon-btn-background,
32
+ $icon-btn-color,
33
+ $icon-btn-elevation,
34
+ $icon-btn-plain-opacity,
35
+ 'v-icon-btn'
36
+ ) !default;
@@ -0,0 +1 @@
1
+ export { VIconBtn } from './VIconBtn.js';
@@ -0,0 +1,2 @@
1
+ export { VIconBtn } from "./VIconBtn.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["VIconBtn"],"sources":["../../../src/labs/VIconBtn/index.ts"],"sourcesContent":["export { VIconBtn } from './VIconBtn'\n"],"mappings":"SAASA,QAAQ","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  export * from './VCalendar/index.js';
2
2
  export * from './VDateInput/index.js';
3
3
  export * from './VFileUpload/index.js';
4
+ export * from './VIconBtn/index.js';
4
5
  export * from './VPicker/index.js';
5
6
  export * from './VStepperVertical/index.js';
6
7
  export * from './VPullToRefresh/index.js';
@@ -1,6 +1,7 @@
1
1
  export * from "./VCalendar/index.js";
2
2
  export * from "./VDateInput/index.js";
3
3
  export * from "./VFileUpload/index.js";
4
+ export * from "./VIconBtn/index.js";
4
5
  export * from "./VPicker/index.js";
5
6
  export * from "./VStepperVertical/index.js";
6
7
  export * from "./VPullToRefresh/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","names":[],"sources":["../../src/labs/components.ts"],"sourcesContent":["export * from './VCalendar'\nexport * from './VDateInput'\nexport * from './VFileUpload'\nexport * from './VPicker'\nexport * from './VStepperVertical'\nexport * from './VPullToRefresh'\nexport * from './VTimePicker'\nexport * from './VTreeview'\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"components.js","names":[],"sources":["../../src/labs/components.ts"],"sourcesContent":["export * from './VCalendar'\nexport * from './VDateInput'\nexport * from './VFileUpload'\nexport * from './VIconBtn'\nexport * from './VPicker'\nexport * from './VStepperVertical'\nexport * from './VPullToRefresh'\nexport * from './VTimePicker'\nexport * from './VTreeview'\n"],"mappings":"","ignoreList":[]}
@@ -6953,6 +6953,10 @@ html.overflow-y-hidden {
6953
6953
  border-color: rgba(var(--v-border-color), var(--v-border-opacity)) !important;
6954
6954
  }
6955
6955
 
6956
+ .border-current {
6957
+ border-color: currentColor !important;
6958
+ }
6959
+
6956
6960
  .border-opacity-0 {
6957
6961
  --v-border-opacity: 0 !important;
6958
6962
  }
@@ -417,6 +417,11 @@ $utilities: () !default;
417
417
  class: border,
418
418
  values: variables.$borders
419
419
  ),
420
+ "border-current": (
421
+ property: border-color,
422
+ class: border,
423
+ values: (current: currentColor)
424
+ ),
420
425
  "border-opacity": (
421
426
  property: --v-border-opacity,
422
427
  class: border-opacity,
@@ -1,4 +1,4 @@
1
- import type { ComponentInternalInstance, ComponentPublicInstance, ComputedGetter, InjectionKey, PropType, Ref, ToRefs, VNode, VNodeArrayChildren, VNodeChild, WatchOptions } from 'vue';
1
+ import type { ComponentInternalInstance, ComponentPublicInstance, ComputedGetter, InjectionKey, PropType, Ref, ToRefs, VNode, VNodeArrayChildren, VNodeChild } from 'vue';
2
2
  export declare function getNestedValue(obj: any, path: (string | number)[], fallback?: any): any;
3
3
  export declare function deepEqual(a: any, b: any): boolean;
4
4
  export declare function getObjectValueByPath(obj: any, path?: string | null, fallback?: any): any;
@@ -109,7 +109,6 @@ export declare function noop(): void;
109
109
  export declare function matchesSelector(el: Element | undefined, selector: string): boolean | null;
110
110
  export declare function ensureValidVNode(vnodes: VNodeArrayChildren): VNodeArrayChildren | null;
111
111
  export declare function defer(timeout: number, cb: () => void): () => void;
112
- export declare function eagerComputed<T>(fn: () => T, options?: WatchOptions): Readonly<Ref<T>>;
113
112
  export declare function isClickInsideElement(event: MouseEvent, targetDiv: HTMLElement): boolean;
114
113
  export type TemplateRef = {
115
114
  (target: Element | ComponentPublicInstance | null): void;
@@ -4,7 +4,7 @@ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a),
4
4
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
5
5
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
6
6
  // Utilities
7
- import { capitalize, Comment, computed, Fragment, isVNode, reactive, readonly, shallowRef, toRefs, unref, watchEffect } from 'vue';
7
+ import { capitalize, Comment, computed, Fragment, isVNode, reactive, shallowRef, toRefs, unref, watchEffect } from 'vue';
8
8
  import { IN_BROWSER } from "./globals.js"; // Types
9
9
  export function getNestedValue(obj, path, fallback) {
10
10
  const last = path.length - 1;
@@ -151,7 +151,7 @@ export function has(obj, key) {
151
151
  export function pick(obj, paths) {
152
152
  const found = {};
153
153
  for (const key of paths) {
154
- if (Object.hasOwn(obj, key)) {
154
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
155
155
  found[key] = obj[key];
156
156
  }
157
157
  }
@@ -488,16 +488,6 @@ export function defer(timeout, cb) {
488
488
  const timeoutId = window.setTimeout(cb, timeout);
489
489
  return () => window.clearTimeout(timeoutId);
490
490
  }
491
- export function eagerComputed(fn, options) {
492
- const result = shallowRef();
493
- watchEffect(() => {
494
- result.value = fn();
495
- }, {
496
- flush: 'sync',
497
- ...options
498
- });
499
- return readonly(result);
500
- }
501
491
  export function isClickInsideElement(event, targetDiv) {
502
492
  const mouseX = event.clientX;
503
493
  const mouseY = event.clientY;