vuetify 3.10.8 → 3.10.10

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 (68) hide show
  1. package/dist/json/attributes.json +1543 -1543
  2. package/dist/json/importMap-labs.json +18 -18
  3. package/dist/json/importMap.json +174 -174
  4. package/dist/json/web-types.json +2937 -2937
  5. package/dist/vuetify-labs.cjs +205 -216
  6. package/dist/vuetify-labs.css +4754 -4730
  7. package/dist/vuetify-labs.d.ts +72 -72
  8. package/dist/vuetify-labs.esm.js +205 -216
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +205 -216
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.cjs +137 -99
  13. package/dist/vuetify.cjs.map +1 -1
  14. package/dist/vuetify.css +2766 -2730
  15. package/dist/vuetify.d.ts +56 -56
  16. package/dist/vuetify.esm.js +137 -99
  17. package/dist/vuetify.esm.js.map +1 -1
  18. package/dist/vuetify.js +137 -99
  19. package/dist/vuetify.js.map +1 -1
  20. package/dist/vuetify.min.css +2 -2
  21. package/dist/vuetify.min.js +334 -330
  22. package/dist/vuetify.min.js.map +1 -1
  23. package/lib/components/VAvatar/VAvatar.css +1 -1
  24. package/lib/components/VAvatar/_variables.scss +1 -1
  25. package/lib/components/VBtnToggle/VBtnToggle.css +21 -0
  26. package/lib/components/VBtnToggle/VBtnToggle.sass +22 -0
  27. package/lib/components/VCard/VCard.js +8 -1
  28. package/lib/components/VCard/VCard.js.map +1 -1
  29. package/lib/components/VDatePicker/VDatePicker.js +7 -16
  30. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  31. package/lib/components/VList/VList.css +6 -0
  32. package/lib/components/VList/VList.sass +6 -0
  33. package/lib/components/VList/VListItem.css +0 -3
  34. package/lib/components/VList/VListItem.sass +0 -4
  35. package/lib/components/VOverlay/useActivator.js +2 -1
  36. package/lib/components/VOverlay/useActivator.js.map +1 -1
  37. package/lib/components/VTabs/VTab.css +8 -0
  38. package/lib/components/VTabs/VTab.sass +7 -0
  39. package/lib/components/VTextField/VTextField.js +17 -7
  40. package/lib/components/VTextField/VTextField.js.map +1 -1
  41. package/lib/components/VTextarea/VTextarea.js +17 -7
  42. package/lib/components/VTextarea/VTextarea.js.map +1 -1
  43. package/lib/composables/calendar.d.ts +6 -0
  44. package/lib/composables/calendar.js +37 -2
  45. package/lib/composables/calendar.js.map +1 -1
  46. package/lib/composables/delay.js +3 -2
  47. package/lib/composables/delay.js.map +1 -1
  48. package/lib/composables/hotkey/hotkey.js +42 -53
  49. package/lib/composables/hotkey/hotkey.js.map +1 -1
  50. package/lib/entry-bundler.js +1 -1
  51. package/lib/entry-bundler.js.map +1 -1
  52. package/lib/framework.d.ts +56 -56
  53. package/lib/framework.js +1 -1
  54. package/lib/framework.js.map +1 -1
  55. package/lib/labs/VDateInput/VDateInput.js +8 -12
  56. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  57. package/lib/labs/VHotkey/VHotkey.css +4 -16
  58. package/lib/labs/VHotkey/VHotkey.d.ts +29 -29
  59. package/lib/labs/VHotkey/VHotkey.js +62 -106
  60. package/lib/labs/VHotkey/VHotkey.js.map +1 -1
  61. package/lib/labs/VHotkey/VHotkey.scss +8 -25
  62. package/lib/styles/main.css +4 -0
  63. package/lib/styles/settings/_variables.scss +1 -0
  64. package/lib/util/box.js +3 -8
  65. package/lib/util/box.js.map +1 -1
  66. package/lib/util/throttle.js +2 -2
  67. package/lib/util/throttle.js.map +1 -1
  68. package/package.json +1 -1
@@ -64,7 +64,7 @@
64
64
  display: none;
65
65
  }
66
66
  .v-avatar--variant-elevated, .v-avatar--variant-flat {
67
- background: var(--v-theme-surface);
67
+ background: rgb(var(--v-theme-surface));
68
68
  color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
69
69
  }
70
70
  .v-avatar--variant-elevated {
@@ -4,7 +4,7 @@
4
4
  @use "../../styles/tools/functions";
5
5
 
6
6
  // Defaults
7
- $avatar-background: var(--v-theme-surface) !default;
7
+ $avatar-background: rgb(var(--v-theme-surface)) !default;
8
8
  $avatar-border-radius: map.get(variables.$rounded, 'circle') !default;
9
9
  $avatar-border-color: settings.$border-color-root !default;
10
10
  $avatar-border-radius: map.get(settings.$rounded, 0) !default;
@@ -14,4 +14,25 @@
14
14
  }
15
15
  .v-btn-toggle > .v-btn.v-btn--active:not(.v-btn--disabled).v-btn--variant-plain {
16
16
  opacity: 1;
17
+ }
18
+ @media (forced-colors: active) {
19
+ .v-btn-toggle > .v-btn:not(.v-btn--disabled) {
20
+ border-color: buttontext !important;
21
+ }
22
+ .v-btn-toggle > .v-btn:not(.v-btn--disabled):focus-visible {
23
+ outline: 0;
24
+ }
25
+ .v-btn-toggle > .v-btn:not(.v-btn--disabled):not(.v-btn--active):hover, .v-btn-toggle > .v-btn:not(.v-btn--disabled):not(.v-btn--active):focus-visible {
26
+ color: highlight;
27
+ border-color: currentColor !important;
28
+ }
29
+ .v-btn-toggle > .v-btn--active {
30
+ color: highlight !important;
31
+ forced-color-adjust: preserve-parent-color;
32
+ }
33
+ .v-btn-toggle > .v-btn--active:not(.v-btn--variant-text, .v-btn--variant-plain) {
34
+ background-color: highlight !important;
35
+ color: highlighttext !important;
36
+ border-color: highlight !important;
37
+ }
17
38
  }
@@ -8,3 +8,25 @@
8
8
 
9
9
  &.v-btn--variant-plain
10
10
  opacity: 1
11
+
12
+ @media (forced-colors: active)
13
+ > .v-btn:not(.v-btn--disabled)
14
+ border-color: buttontext !important
15
+
16
+ &:focus-visible
17
+ outline: 0
18
+
19
+ &:not(.v-btn--active)
20
+ &:hover,
21
+ &:focus-visible
22
+ color: highlight
23
+ border-color: currentColor !important
24
+
25
+ > .v-btn--active
26
+ color: highlight !important
27
+ forced-color-adjust: preserve-parent-color
28
+
29
+ &:not(.v-btn--variant-text, .v-btn--variant-plain)
30
+ background-color: highlight !important
31
+ color: highlighttext !important
32
+ border-color: highlight !important
@@ -25,6 +25,7 @@ import { makeTagProps } from "../../composables/tag.js";
25
25
  import { makeThemeProps, provideTheme } from "../../composables/theme.js";
26
26
  import { genOverlays, makeVariantProps, useVariant } from "../../composables/variant.js"; // Directives
27
27
  import vRipple from "../../directives/ripple/index.js"; // Utilities
28
+ import { shallowRef, watch } from 'vue';
28
29
  import { genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
29
30
  export const makeVCardProps = propsFactory({
30
31
  appendAvatar: String,
@@ -115,6 +116,12 @@ export const VCard = genericComponent()({
115
116
  roundedClasses
116
117
  } = useRounded(props);
117
118
  const link = useLink(props, attrs);
119
+ const loadingColor = shallowRef(undefined);
120
+ watch(() => props.loading, (val, old) => {
121
+ loadingColor.value = !val && typeof old === 'string' ? old : typeof val === 'boolean' ? undefined : val;
122
+ }, {
123
+ immediate: true
124
+ });
118
125
  useRender(() => {
119
126
  const isLink = props.link !== false && link.isLink.value;
120
127
  const isClickable = !props.disabled && props.link !== false && (props.link || link.isClickable.value);
@@ -157,7 +164,7 @@ export const VCard = genericComponent()({
157
164
  }, slots.image)]), _createVNode(LoaderSlot, {
158
165
  "name": "v-card",
159
166
  "active": !!props.loading,
160
- "color": typeof props.loading === 'boolean' ? undefined : props.loading
167
+ "color": loadingColor.value
161
168
  }, {
162
169
  default: slots.loader
163
170
  }), hasCardItem && _createVNode(VCardItem, {
@@ -1 +1 @@
1
- {"version":3,"file":"VCard.js","names":["VCardActions","VCardItem","VCardText","VDefaultsProvider","VImg","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","LoaderSlot","makeLoaderProps","useLoader","makeLocationProps","useLocation","makePositionProps","usePosition","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","vRipple","genericComponent","propsFactory","useRender","makeVCardProps","appendAvatar","String","appendIcon","disabled","Boolean","flat","hover","image","link","type","default","undefined","prependAvatar","prependIcon","ripple","Object","subtitle","Number","text","title","variant","VCard","name","directives","props","setup","_ref","attrs","slots","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","loaderClasses","locationStyles","positionClasses","roundedClasses","isLink","value","isClickable","Tag","tag","hasTitle","hasSubtitle","hasHeader","hasAppend","append","hasPrepend","prepend","hasImage","hasCardItem","hasText","_withDirectives","_createVNode","_mergeProps","linkProps","class","style","navigate","_createElementVNode","cover","src","loading","loader","item","actions"],"sources":["../../../src/components/VCard/VCard.tsx"],"sourcesContent":["/* eslint-disable complexity */\n\n// Styles\nimport './VCard.sass'\n\n// Components\nimport { VCardActions } from './VCardActions'\nimport { VCardItem } from './VCardItem'\nimport { VCardText } from './VCardText'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCardItemSlots } from './VCardItem'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport const makeVCardProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n image: String,\n link: {\n type: Boolean,\n default: undefined,\n },\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n subtitle: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n text: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n title: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'elevated' } as const),\n}, 'VCard')\n\nexport type VCardSlots = VCardItemSlots & {\n default: never\n actions: never\n text: never\n loader: LoaderSlotProps\n image: never\n item: never\n}\n\nexport const VCard = genericComponent<VCardSlots>()({\n name: 'VCard',\n\n directives: { vRipple },\n\n props: makeVCardProps(),\n\n setup (props, { attrs, slots }) {\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { loaderClasses } = useLoader(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const link = useLink(props, attrs)\n\n useRender(() => {\n const isLink = props.link !== false && link.isLink.value\n const isClickable = (\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value)\n )\n const Tag = isLink ? 'a' : props.tag\n const hasTitle = !!(slots.title || props.title != null)\n const hasSubtitle = !!(slots.subtitle || props.subtitle != null)\n const hasHeader = hasTitle || hasSubtitle\n const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon)\n const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon)\n const hasImage = !!(slots.image || props.image)\n const hasCardItem = hasHeader || hasPrepend || hasAppend\n const hasText = !!(slots.text || props.text != null)\n\n return (\n <Tag\n { ...link.linkProps }\n class={[\n 'v-card',\n {\n 'v-card--disabled': props.disabled,\n 'v-card--flat': props.flat,\n 'v-card--hover': props.hover && !(props.disabled || props.flat),\n 'v-card--link': isClickable,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n loaderClasses.value,\n positionClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n locationStyles.value,\n props.style,\n ]}\n onClick={ isClickable && link.navigate }\n v-ripple={ isClickable && props.ripple }\n tabindex={ props.disabled ? -1 : undefined }\n >\n { hasImage && (\n <div key=\"image\" class=\"v-card__image\">\n { !slots.image ? (\n <VImg\n key=\"image-img\"\n cover\n src={ props.image }\n />\n ) : (\n <VDefaultsProvider\n key=\"image-defaults\"\n disabled={ !props.image }\n defaults={{\n VImg: {\n cover: true,\n src: props.image,\n },\n }}\n v-slots:default={ slots.image }\n />\n )}\n </div>\n )}\n\n <LoaderSlot\n name=\"v-card\"\n active={ !!props.loading }\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n v-slots={{ default: slots.loader }}\n />\n\n { hasCardItem && (\n <VCardItem\n key=\"item\"\n prependAvatar={ props.prependAvatar }\n prependIcon={ props.prependIcon }\n title={ props.title }\n subtitle={ props.subtitle }\n appendAvatar={ props.appendAvatar }\n appendIcon={ props.appendIcon }\n >\n {{\n default: slots.item,\n prepend: slots.prepend,\n title: slots.title,\n subtitle: slots.subtitle,\n append: slots.append,\n }}\n </VCardItem>\n )}\n\n { hasText && (\n <VCardText key=\"text\">\n { slots.text?.() ?? props.text }\n </VCardText>\n )}\n\n { slots.default?.() }\n\n { slots.actions && (\n <VCardActions v-slots={{ default: slots.actions }} />\n )}\n\n { genOverlays(isClickable, 'v-card') }\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VCard = InstanceType<typeof VCard>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VCard.js","names":["VCardActions","VCardItem","VCardText","VDefaultsProvider","VImg","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","LoaderSlot","makeLoaderProps","useLoader","makeLocationProps","useLocation","makePositionProps","usePosition","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","vRipple","shallowRef","watch","genericComponent","propsFactory","useRender","makeVCardProps","appendAvatar","String","appendIcon","disabled","Boolean","flat","hover","image","link","type","default","undefined","prependAvatar","prependIcon","ripple","Object","subtitle","Number","text","title","variant","VCard","name","directives","props","setup","_ref","attrs","slots","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","loaderClasses","locationStyles","positionClasses","roundedClasses","loadingColor","loading","val","old","value","immediate","isLink","isClickable","Tag","tag","hasTitle","hasSubtitle","hasHeader","hasAppend","append","hasPrepend","prepend","hasImage","hasCardItem","hasText","_withDirectives","_createVNode","_mergeProps","linkProps","class","style","navigate","_createElementVNode","cover","src","loader","item","actions"],"sources":["../../../src/components/VCard/VCard.tsx"],"sourcesContent":["/* eslint-disable complexity */\n\n// Styles\nimport './VCard.sass'\n\n// Components\nimport { VCardActions } from './VCardActions'\nimport { VCardItem } from './VCardItem'\nimport { VCardText } from './VCardText'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCardItemSlots } from './VCardItem'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport const makeVCardProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n image: String,\n link: {\n type: Boolean,\n default: undefined,\n },\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n subtitle: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n text: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n title: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'elevated' } as const),\n}, 'VCard')\n\nexport type VCardSlots = VCardItemSlots & {\n default: never\n actions: never\n text: never\n loader: LoaderSlotProps\n image: never\n item: never\n}\n\nexport const VCard = genericComponent<VCardSlots>()({\n name: 'VCard',\n\n directives: { vRipple },\n\n props: makeVCardProps(),\n\n setup (props, { attrs, slots }) {\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { loaderClasses } = useLoader(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const link = useLink(props, attrs)\n const loadingColor = shallowRef<string | undefined>(undefined)\n\n watch(() => props.loading, (val, old) => {\n loadingColor.value = !val && typeof old === 'string'\n ? old\n : typeof val === 'boolean'\n ? undefined\n : val\n }, { immediate: true })\n\n useRender(() => {\n const isLink = props.link !== false && link.isLink.value\n const isClickable = (\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value)\n )\n const Tag = isLink ? 'a' : props.tag\n const hasTitle = !!(slots.title || props.title != null)\n const hasSubtitle = !!(slots.subtitle || props.subtitle != null)\n const hasHeader = hasTitle || hasSubtitle\n const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon)\n const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon)\n const hasImage = !!(slots.image || props.image)\n const hasCardItem = hasHeader || hasPrepend || hasAppend\n const hasText = !!(slots.text || props.text != null)\n\n return (\n <Tag\n { ...link.linkProps }\n class={[\n 'v-card',\n {\n 'v-card--disabled': props.disabled,\n 'v-card--flat': props.flat,\n 'v-card--hover': props.hover && !(props.disabled || props.flat),\n 'v-card--link': isClickable,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n loaderClasses.value,\n positionClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n locationStyles.value,\n props.style,\n ]}\n onClick={ isClickable && link.navigate }\n v-ripple={ isClickable && props.ripple }\n tabindex={ props.disabled ? -1 : undefined }\n >\n { hasImage && (\n <div key=\"image\" class=\"v-card__image\">\n { !slots.image ? (\n <VImg\n key=\"image-img\"\n cover\n src={ props.image }\n />\n ) : (\n <VDefaultsProvider\n key=\"image-defaults\"\n disabled={ !props.image }\n defaults={{\n VImg: {\n cover: true,\n src: props.image,\n },\n }}\n v-slots:default={ slots.image }\n />\n )}\n </div>\n )}\n\n <LoaderSlot\n name=\"v-card\"\n active={ !!props.loading }\n color={ loadingColor.value }\n v-slots={{ default: slots.loader }}\n />\n\n { hasCardItem && (\n <VCardItem\n key=\"item\"\n prependAvatar={ props.prependAvatar }\n prependIcon={ props.prependIcon }\n title={ props.title }\n subtitle={ props.subtitle }\n appendAvatar={ props.appendAvatar }\n appendIcon={ props.appendIcon }\n >\n {{\n default: slots.item,\n prepend: slots.prepend,\n title: slots.title,\n subtitle: slots.subtitle,\n append: slots.append,\n }}\n </VCardItem>\n )}\n\n { hasText && (\n <VCardText key=\"text\">\n { slots.text?.() ?? props.text }\n </VCardText>\n )}\n\n { slots.default?.() }\n\n { slots.actions && (\n <VCardActions v-slots={{ default: slots.actions }} />\n )}\n\n { genOverlays(isClickable, 'v-card') }\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VCard = InstanceType<typeof VCard>\n"],"mappings":"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","ignoreList":[]}
@@ -11,6 +11,7 @@ import { makeVDatePickerYearsProps, VDatePickerYears } from "./VDatePickerYears.
11
11
  import { VFadeTransition } from "../transitions/index.js";
12
12
  import { VDefaultsProvider } from "../VDefaultsProvider/index.js";
13
13
  import { makeVPickerProps, VPicker } from "../../labs/VPicker/VPicker.js"; // Composables
14
+ import { useCalendarRange } from "../../composables/calendar.js";
14
15
  import { useDate } from "../../composables/date/index.js";
15
16
  import { daysDiff } from "../../composables/date/date.js";
16
17
  import { useLocale, useRtl } from "../../composables/locale.js";
@@ -82,24 +83,14 @@ export const VDatePicker = genericComponent()({
82
83
  const viewMode = useProxiedModel(props, 'viewMode');
83
84
  // const inputMode = useProxiedModel(props, 'inputMode')
84
85
 
85
- const minDate = computed(() => {
86
- const date = adapter.date(props.min);
87
- return props.min && adapter.isValid(date) ? date : null;
88
- });
89
- const maxDate = computed(() => {
90
- const date = adapter.date(props.max);
91
- return props.max && adapter.isValid(date) ? date : null;
92
- });
86
+ const {
87
+ minDate,
88
+ maxDate,
89
+ clampDate
90
+ } = useCalendarRange(props);
93
91
  const internal = computed(() => {
94
92
  const today = adapter.date();
95
- let value = today;
96
- if (model.value?.[0]) {
97
- value = adapter.date(model.value[0]);
98
- } else if (minDate.value && adapter.isBefore(today, minDate.value)) {
99
- value = minDate.value;
100
- } else if (maxDate.value && adapter.isAfter(today, maxDate.value)) {
101
- value = maxDate.value;
102
- }
93
+ const value = model.value?.[0] ? adapter.date(model.value[0]) : clampDate(today);
103
94
  return value && adapter.isValid(value) ? value : today;
104
95
  });
105
96
  const headerColor = toRef(() => props.headerColor ?? props.color);
@@ -1 +1 @@
1
- {"version":3,"file":"VDatePicker.js","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerMonthsProps","VDatePickerMonths","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VDefaultsProvider","makeVPickerProps","VPicker","useDate","daysDiff","useLocale","useRtl","useProxiedModel","computed","shallowRef","toRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDatePickerProps","header","type","String","default","headerColor","weeksInMonth","title","modelValue","VDatePicker","name","props","emits","date","setup","_ref","emit","slots","adapter","t","rtlClasses","model","undefined","v","map","i","multiple","viewMode","minDate","min","isValid","maxDate","max","internal","today","value","isBefore","isAfter","color","_month","month","get","Number","getMonth","startOfMonth","set","_year","year","getYear","startOfYear","setMonth","isReversing","length","format","text","setDate","setYear","headerTransition","disabled","targets","push","_date","addDays","endOfMonth","allowedYears","isYearAllowed","allowedMonths","isMonthAllowed","isAllowedInRange","start","end","allowedDates","days","parseISO","endOfYear","Array","isArray","monthTwoDigits","padStart","onClickNext","onUpdateYear","onUpdateMonth","onClickPrev","onClickDate","onClickMonth","onClickYear","val","oldVal","arrBefore","arrAfter","before","after","newMonth","newYear","pickerProps","filterProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","headerProps","transition","_createVNode","_mergeProps","showWeek","class","style","_createElementVNode","prepend","append","_Fragment","$event","day","actions"],"sources":["../../../src/components/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from './VDatePickerMonths'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { daysDiff } from '@/composables/date/date'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, shallowRef, toRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VDatePickerHeaderSlots } from './VDatePickerHeader'\nimport type { VDatePickerMonthSlots } from './VDatePickerMonth'\nimport type { VDatePickerMonthsSlots } from './VDatePickerMonths'\nimport type { VDatePickerYearsSlots } from './VDatePickerYears'\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDatePickerSlots =\n & Omit<VPickerSlots, 'header' | 'default'>\n & Omit<VDatePickerHeaderSlots, 'default'>\n & VDatePickerYearsSlots\n & VDatePickerMonthsSlots\n & VDatePickerMonthSlots\n & {\n header: {\n header: string\n transition: string\n }\n }\n\nexport const makeVDatePickerProps = propsFactory({\n // TODO: implement in v3.5\n // calendarIcon: {\n // type: String,\n // default: '$calendar',\n // },\n // keyboardIcon: {\n // type: String,\n // default: '$edit',\n // },\n // inputMode: {\n // type: String as PropType<'calendar' | 'keyboard'>,\n // default: 'calendar',\n // },\n // inputText: {\n // type: String,\n // default: '$vuetify.datePicker.input.placeholder',\n // },\n // inputPlaceholder: {\n // type: String,\n // default: 'dd/mm/yyyy',\n // },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n headerColor: String,\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps({\n weeksInMonth: 'static' as const,\n }),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n\n modelValue: null,\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<new <\n T,\n Multiple extends boolean | 'range' | number | (string & {}) = false,\n TModel = Multiple extends true | number | string\n ? T[]\n : T,\n> (\n props: {\n modelValue?: TModel\n 'onUpdate:modelValue'?: (value: TModel) => void\n multiple?: Multiple\n },\n slots: VDatePickerSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n // 'update:inputMode': (date: any) => true,\n 'update:viewMode': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n const { rtlClasses } = useRtl()\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => wrapInArray(v).map(i => adapter.date(i)),\n v => props.multiple ? v : v[0],\n )\n\n const viewMode = useProxiedModel(props, 'viewMode')\n // const inputMode = useProxiedModel(props, 'inputMode')\n\n const minDate = computed(() => {\n const date = adapter.date(props.min)\n\n return props.min && adapter.isValid(date) ? date : null\n })\n const maxDate = computed(() => {\n const date = adapter.date(props.max)\n\n return props.max && adapter.isValid(date) ? date : null\n })\n\n const internal = computed(() => {\n const today = adapter.date()\n let value = today\n if (model.value?.[0]) {\n value = adapter.date(model.value[0])\n } else if (minDate.value && adapter.isBefore(today, minDate.value)) {\n value = minDate.value\n } else if (maxDate.value && adapter.isAfter(today, maxDate.value)) {\n value = maxDate.value\n }\n\n return value && adapter.isValid(value) ? value : today\n })\n const headerColor = toRef(() => props.headerColor ?? props.color)\n\n const _month = useProxiedModel(props, 'month')\n const month = computed({\n get: () => Number(_month.value ?? adapter.getMonth(adapter.startOfMonth(internal.value))),\n set: v => _month.value = v,\n })\n\n const _year = useProxiedModel(props, 'year')\n const year = computed({\n get: () => Number(_year.value ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))),\n set: v => _year.value = v,\n })\n\n const isReversing = shallowRef(false)\n const header = computed(() => {\n if (props.multiple && model.value.length > 1) {\n return t('$vuetify.datePicker.itemsSelected', model.value.length)\n }\n\n return (model.value[0] && adapter.isValid(model.value[0]))\n ? adapter.format(adapter.date(model.value[0]), 'normalDateWithWeekday')\n : t(props.header)\n })\n const text = computed(() => {\n let date = adapter.date()\n\n date = adapter.setDate(date, 1)\n date = adapter.setMonth(date, month.value)\n date = adapter.setYear(date, year.value)\n\n return adapter.format(date, 'monthAndYear')\n })\n // const headerIcon = toRef(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = toRef(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n\n const disabled = computed(() => {\n if (props.disabled) return true\n\n const targets = []\n\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next'])\n } else {\n let _date = adapter.date()\n\n _date = adapter.startOfMonth(_date)\n _date = adapter.setMonth(_date, month.value)\n _date = adapter.setYear(_date, year.value)\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n }\n\n return targets\n })\n\n const allowedYears = computed(() => {\n return props.allowedYears || isYearAllowed\n })\n\n const allowedMonths = computed(() => {\n return props.allowedMonths || isMonthAllowed\n })\n\n function isAllowedInRange (start: unknown, end: unknown) {\n const allowedDates = props.allowedDates\n if (typeof allowedDates !== 'function') return true\n\n const days = 1 + daysDiff(adapter, start, end)\n\n for (let i = 0; i < days; i++) {\n if (allowedDates(adapter.addDays(start, i))) return true\n }\n return false\n }\n\n function isYearAllowed (year: number) {\n if (typeof props.allowedDates === 'function') {\n const startOfYear = adapter.parseISO(`${year}-01-01`)\n return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear))\n }\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length) {\n for (const date of props.allowedDates) {\n if (adapter.getYear(adapter.date(date)) === year) return true\n }\n return false\n }\n\n return true\n }\n\n function isMonthAllowed (month: number) {\n if (typeof props.allowedDates === 'function') {\n const monthTwoDigits = String(month + 1).padStart(2, '0')\n const startOfMonth = adapter.parseISO(`${year.value}-${monthTwoDigits}-01`)\n return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth))\n }\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length) {\n for (const date of props.allowedDates) {\n if (\n adapter.getYear(adapter.date(date)) === year.value &&\n adapter.getMonth(adapter.date(date)) === month\n ) return true\n }\n return false\n }\n\n return true\n }\n\n // function onClickAppend () {\n // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n // }\n\n function onClickNext () {\n if (month.value < 11) {\n month.value++\n } else {\n year.value++\n month.value = 0\n onUpdateYear()\n }\n onUpdateMonth()\n }\n\n function onClickPrev () {\n if (month.value > 0) {\n month.value--\n } else {\n year.value--\n month.value = 11\n onUpdateYear()\n }\n onUpdateMonth()\n }\n\n function onClickDate () {\n viewMode.value = 'month'\n }\n\n function onClickMonth () {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months'\n }\n\n function onClickYear () {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year'\n }\n\n function onUpdateMonth () {\n if (viewMode.value === 'months') onClickMonth()\n }\n\n function onUpdateYear () {\n if (viewMode.value === 'year') onClickYear()\n }\n\n watch(model, (val, oldVal) => {\n const arrBefore = wrapInArray(oldVal)\n const arrAfter = wrapInArray(val)\n\n if (!arrAfter.length) return\n\n const before = adapter.date(arrBefore[arrBefore.length - 1])\n const after = adapter.date(arrAfter[arrAfter.length - 1])\n const newMonth = adapter.getMonth(after)\n const newYear = adapter.getYear(after)\n\n if (newMonth !== month.value) {\n month.value = newMonth\n onUpdateMonth()\n }\n\n if (newYear !== year.value) {\n year.value = newYear\n onUpdateYear()\n }\n\n isReversing.value = adapter.isBefore(before, after)\n })\n\n useRender(() => {\n const pickerProps = VPicker.filterProps(props)\n const datePickerControlsProps = VDatePickerControls.filterProps(props)\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props)\n const datePickerMonthProps = VDatePickerMonth.filterProps(props)\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue'])\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue'])\n\n const headerProps = {\n color: headerColor.value,\n header: header.value,\n transition: headerTransition.value,\n }\n\n return (\n <VPicker\n { ...pickerProps }\n color={ headerColor.value }\n class={[\n 'v-date-picker',\n `v-date-picker--${viewMode.value}`,\n {\n 'v-date-picker--show-week': props.showWeek,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n v-slots={{\n title: () => slots.title?.() ?? (\n <div class=\"v-date-picker__title\">\n { t(props.title) }\n </div>\n ),\n header: () => slots.header ? (\n <VDefaultsProvider\n defaults={{\n VDatePickerHeader: { ...headerProps },\n }}\n >\n { slots.header?.(headerProps) }\n </VDefaultsProvider>\n ) : (\n <VDatePickerHeader\n key=\"header\"\n { ...datePickerHeaderProps }\n { ...headerProps }\n onClick={ viewMode.value !== 'month' ? onClickDate : undefined }\n v-slots={{\n prepend: slots.prepend,\n append: slots.append,\n }}\n />\n ),\n default: () => (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n text={ text.value }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:month={ onClickMonth }\n onClick:year={ onClickYear }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'months' ? (\n <VDatePickerMonths\n key=\"date-picker-months\"\n { ...datePickerMonthsProps }\n v-model={ month.value }\n min={ minDate.value }\n max={ maxDate.value }\n year={ year.value }\n allowedMonths={ allowedMonths.value }\n onUpdate:modelValue={ onUpdateMonth }\n >\n {{ month: slots.month }}\n </VDatePickerMonths>\n ) : viewMode.value === 'year' ? (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model={ year.value }\n min={ minDate.value }\n max={ maxDate.value }\n allowedYears={ allowedYears.value }\n onUpdate:modelValue={ onUpdateYear }\n >\n {{ year: slots.year }}\n </VDatePickerYears>\n ) : (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ model.value }\n v-model:month={ month.value }\n v-model:year={ year.value }\n onUpdate:month={ onUpdateMonth }\n onUpdate:year={ onUpdateYear }\n min={ minDate.value }\n max={ maxDate.value }\n >\n {{ day: slots.day }}\n </VDatePickerMonth>\n )}\n </VFadeTransition>\n </>\n ),\n actions: slots.actions,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VDatePicker.js","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerMonthsProps","VDatePickerMonths","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VDefaultsProvider","makeVPickerProps","VPicker","useCalendarRange","useDate","daysDiff","useLocale","useRtl","useProxiedModel","computed","shallowRef","toRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDatePickerProps","header","type","String","default","headerColor","weeksInMonth","title","modelValue","VDatePicker","name","props","emits","date","setup","_ref","emit","slots","adapter","t","rtlClasses","model","undefined","v","map","i","multiple","viewMode","minDate","maxDate","clampDate","internal","today","value","isValid","color","_month","month","get","Number","getMonth","startOfMonth","set","_year","year","getYear","startOfYear","setMonth","isReversing","length","format","text","setDate","setYear","headerTransition","disabled","targets","push","_date","addDays","isAfter","endOfMonth","allowedYears","isYearAllowed","allowedMonths","isMonthAllowed","isAllowedInRange","start","end","allowedDates","days","parseISO","endOfYear","Array","isArray","monthTwoDigits","padStart","onClickNext","onUpdateYear","onUpdateMonth","onClickPrev","onClickDate","onClickMonth","onClickYear","val","oldVal","arrBefore","arrAfter","before","after","newMonth","newYear","isBefore","pickerProps","filterProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","headerProps","transition","_createVNode","_mergeProps","showWeek","class","style","_createElementVNode","prepend","append","_Fragment","$event","day","actions"],"sources":["../../../src/components/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from './VDatePickerMonths'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { useCalendarRange } from '@/composables/calendar'\nimport { useDate } from '@/composables/date'\nimport { daysDiff } from '@/composables/date/date'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, shallowRef, toRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VDatePickerHeaderSlots } from './VDatePickerHeader'\nimport type { VDatePickerMonthSlots } from './VDatePickerMonth'\nimport type { VDatePickerMonthsSlots } from './VDatePickerMonths'\nimport type { VDatePickerYearsSlots } from './VDatePickerYears'\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDatePickerSlots =\n & Omit<VPickerSlots, 'header' | 'default'>\n & Omit<VDatePickerHeaderSlots, 'default'>\n & VDatePickerYearsSlots\n & VDatePickerMonthsSlots\n & VDatePickerMonthSlots\n & {\n header: {\n header: string\n transition: string\n }\n }\n\nexport const makeVDatePickerProps = propsFactory({\n // TODO: implement in v3.5\n // calendarIcon: {\n // type: String,\n // default: '$calendar',\n // },\n // keyboardIcon: {\n // type: String,\n // default: '$edit',\n // },\n // inputMode: {\n // type: String as PropType<'calendar' | 'keyboard'>,\n // default: 'calendar',\n // },\n // inputText: {\n // type: String,\n // default: '$vuetify.datePicker.input.placeholder',\n // },\n // inputPlaceholder: {\n // type: String,\n // default: 'dd/mm/yyyy',\n // },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n headerColor: String,\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps({\n weeksInMonth: 'static' as const,\n }),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n\n modelValue: null,\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<new <\n T,\n Multiple extends boolean | 'range' | number | (string & {}) = false,\n TModel = Multiple extends true | number | string\n ? T[]\n : T,\n> (\n props: {\n modelValue?: TModel\n 'onUpdate:modelValue'?: (value: TModel) => void\n multiple?: Multiple\n },\n slots: VDatePickerSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n // 'update:inputMode': (date: any) => true,\n 'update:viewMode': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n const { rtlClasses } = useRtl()\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => wrapInArray(v).map(i => adapter.date(i)),\n v => props.multiple ? v : v[0],\n )\n\n const viewMode = useProxiedModel(props, 'viewMode')\n // const inputMode = useProxiedModel(props, 'inputMode')\n\n const { minDate, maxDate, clampDate } = useCalendarRange(props)\n\n const internal = computed(() => {\n const today = adapter.date()\n const value = model.value?.[0]\n ? adapter.date(model.value[0])\n : clampDate(today)\n\n return value && adapter.isValid(value) ? value : today\n })\n const headerColor = toRef(() => props.headerColor ?? props.color)\n\n const _month = useProxiedModel(props, 'month')\n const month = computed({\n get: () => Number(_month.value ?? adapter.getMonth(adapter.startOfMonth(internal.value))),\n set: v => _month.value = v,\n })\n\n const _year = useProxiedModel(props, 'year')\n const year = computed({\n get: () => Number(_year.value ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))),\n set: v => _year.value = v,\n })\n\n const isReversing = shallowRef(false)\n const header = computed(() => {\n if (props.multiple && model.value.length > 1) {\n return t('$vuetify.datePicker.itemsSelected', model.value.length)\n }\n\n return (model.value[0] && adapter.isValid(model.value[0]))\n ? adapter.format(adapter.date(model.value[0]), 'normalDateWithWeekday')\n : t(props.header)\n })\n const text = computed(() => {\n let date = adapter.date()\n\n date = adapter.setDate(date, 1)\n date = adapter.setMonth(date, month.value)\n date = adapter.setYear(date, year.value)\n\n return adapter.format(date, 'monthAndYear')\n })\n // const headerIcon = toRef(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = toRef(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n\n const disabled = computed(() => {\n if (props.disabled) return true\n\n const targets = []\n\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next'])\n } else {\n let _date = adapter.date()\n\n _date = adapter.startOfMonth(_date)\n _date = adapter.setMonth(_date, month.value)\n _date = adapter.setYear(_date, year.value)\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n }\n\n return targets\n })\n\n const allowedYears = computed(() => {\n return props.allowedYears || isYearAllowed\n })\n\n const allowedMonths = computed(() => {\n return props.allowedMonths || isMonthAllowed\n })\n\n function isAllowedInRange (start: unknown, end: unknown) {\n const allowedDates = props.allowedDates\n if (typeof allowedDates !== 'function') return true\n\n const days = 1 + daysDiff(adapter, start, end)\n\n for (let i = 0; i < days; i++) {\n if (allowedDates(adapter.addDays(start, i))) return true\n }\n return false\n }\n\n function isYearAllowed (year: number) {\n if (typeof props.allowedDates === 'function') {\n const startOfYear = adapter.parseISO(`${year}-01-01`)\n return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear))\n }\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length) {\n for (const date of props.allowedDates) {\n if (adapter.getYear(adapter.date(date)) === year) return true\n }\n return false\n }\n\n return true\n }\n\n function isMonthAllowed (month: number) {\n if (typeof props.allowedDates === 'function') {\n const monthTwoDigits = String(month + 1).padStart(2, '0')\n const startOfMonth = adapter.parseISO(`${year.value}-${monthTwoDigits}-01`)\n return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth))\n }\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length) {\n for (const date of props.allowedDates) {\n if (\n adapter.getYear(adapter.date(date)) === year.value &&\n adapter.getMonth(adapter.date(date)) === month\n ) return true\n }\n return false\n }\n\n return true\n }\n\n // function onClickAppend () {\n // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n // }\n\n function onClickNext () {\n if (month.value < 11) {\n month.value++\n } else {\n year.value++\n month.value = 0\n onUpdateYear()\n }\n onUpdateMonth()\n }\n\n function onClickPrev () {\n if (month.value > 0) {\n month.value--\n } else {\n year.value--\n month.value = 11\n onUpdateYear()\n }\n onUpdateMonth()\n }\n\n function onClickDate () {\n viewMode.value = 'month'\n }\n\n function onClickMonth () {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months'\n }\n\n function onClickYear () {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year'\n }\n\n function onUpdateMonth () {\n if (viewMode.value === 'months') onClickMonth()\n }\n\n function onUpdateYear () {\n if (viewMode.value === 'year') onClickYear()\n }\n\n watch(model, (val, oldVal) => {\n const arrBefore = wrapInArray(oldVal)\n const arrAfter = wrapInArray(val)\n\n if (!arrAfter.length) return\n\n const before = adapter.date(arrBefore[arrBefore.length - 1])\n const after = adapter.date(arrAfter[arrAfter.length - 1])\n const newMonth = adapter.getMonth(after)\n const newYear = adapter.getYear(after)\n\n if (newMonth !== month.value) {\n month.value = newMonth\n onUpdateMonth()\n }\n\n if (newYear !== year.value) {\n year.value = newYear\n onUpdateYear()\n }\n\n isReversing.value = adapter.isBefore(before, after)\n })\n\n useRender(() => {\n const pickerProps = VPicker.filterProps(props)\n const datePickerControlsProps = VDatePickerControls.filterProps(props)\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props)\n const datePickerMonthProps = VDatePickerMonth.filterProps(props)\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue'])\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue'])\n\n const headerProps = {\n color: headerColor.value,\n header: header.value,\n transition: headerTransition.value,\n }\n\n return (\n <VPicker\n { ...pickerProps }\n color={ headerColor.value }\n class={[\n 'v-date-picker',\n `v-date-picker--${viewMode.value}`,\n {\n 'v-date-picker--show-week': props.showWeek,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n v-slots={{\n title: () => slots.title?.() ?? (\n <div class=\"v-date-picker__title\">\n { t(props.title) }\n </div>\n ),\n header: () => slots.header ? (\n <VDefaultsProvider\n defaults={{\n VDatePickerHeader: { ...headerProps },\n }}\n >\n { slots.header?.(headerProps) }\n </VDefaultsProvider>\n ) : (\n <VDatePickerHeader\n key=\"header\"\n { ...datePickerHeaderProps }\n { ...headerProps }\n onClick={ viewMode.value !== 'month' ? onClickDate : undefined }\n v-slots={{\n prepend: slots.prepend,\n append: slots.append,\n }}\n />\n ),\n default: () => (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n text={ text.value }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:month={ onClickMonth }\n onClick:year={ onClickYear }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'months' ? (\n <VDatePickerMonths\n key=\"date-picker-months\"\n { ...datePickerMonthsProps }\n v-model={ month.value }\n min={ minDate.value }\n max={ maxDate.value }\n year={ year.value }\n allowedMonths={ allowedMonths.value }\n onUpdate:modelValue={ onUpdateMonth }\n >\n {{ month: slots.month }}\n </VDatePickerMonths>\n ) : viewMode.value === 'year' ? (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model={ year.value }\n min={ minDate.value }\n max={ maxDate.value }\n allowedYears={ allowedYears.value }\n onUpdate:modelValue={ onUpdateYear }\n >\n {{ year: slots.year }}\n </VDatePickerYears>\n ) : (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ model.value }\n v-model:month={ month.value }\n v-model:year={ year.value }\n onUpdate:month={ onUpdateMonth }\n onUpdate:year={ onUpdateYear }\n min={ minDate.value }\n max={ maxDate.value }\n >\n {{ day: slots.day }}\n </VDatePickerMonth>\n )}\n </VFadeTransition>\n </>\n ),\n actions: slots.actions,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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","ignoreList":[]}
@@ -30,6 +30,12 @@
30
30
  .v-list--nav {
31
31
  padding-inline: 8px;
32
32
  }
33
+ .v-list--nav .v-list-item:not(:first-child),
34
+ .v-list--nav .v-list-group:not(:first-child) > .v-list-item,
35
+ .v-list--nav .v-list-group__items > .v-list-item,
36
+ .v-list--nav .v-list-group__items > .v-list-group {
37
+ margin-top: 4px;
38
+ }
33
39
  .v-list--rounded {
34
40
  border-radius: 4px;
35
41
  }
@@ -21,6 +21,12 @@
21
21
  &--nav
22
22
  padding-inline: $list-nav-padding
23
23
 
24
+ .v-list-item:not(:first-child),
25
+ .v-list-group:not(:first-child) > .v-list-item,
26
+ .v-list-group__items > .v-list-item,
27
+ .v-list-group__items > .v-list-group
28
+ margin-top: $list-item-nav-margin-top
29
+
24
30
  &--rounded
25
31
  @include tools.rounded($list-rounded-border-radius)
26
32
 
@@ -402,9 +402,6 @@
402
402
  .v-list-item--nav {
403
403
  padding-inline: 8px;
404
404
  }
405
- .v-list .v-list-item--nav:not(:only-child) {
406
- margin-bottom: 4px;
407
- }
408
405
 
409
406
  .v-list-item__underlay {
410
407
  position: absolute;
@@ -274,10 +274,6 @@
274
274
  &--nav
275
275
  padding-inline: $list-nav-padding
276
276
 
277
- .v-list &
278
- &:not(:only-child)
279
- margin-bottom: $list-item-nav-margin-top
280
-
281
277
  .v-list-item__underlay
282
278
  position: absolute
283
279
 
@@ -108,7 +108,8 @@ export function useActivator(props, _ref) {
108
108
  };
109
109
  }
110
110
  if (openOnFocus.value) {
111
- events.onFocusin = () => {
111
+ events.onFocusin = e => {
112
+ if (!e.target.matches(':focus-visible')) return;
112
113
  isFocused = true;
113
114
  runOpenDelay();
114
115
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useActivator.js","names":["VMenuSymbol","makeDelayProps","useDelay","computed","effectScope","inject","mergeProps","nextTick","onScopeDispose","ref","watch","watchEffect","bindProps","getCurrentInstance","IN_BROWSER","matchesSelector","propsFactory","templateRef","unbindProps","makeActivatorProps","target","String","Object","activator","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","_ref","isActive","isTop","contentEl","vm","activatorEl","isHovered","isFocused","firstEnter","value","runOpenDelay","runCloseDelay","cursorTarget","availableEvents","onClick","e","stopPropagation","currentTarget","clientX","clientY","onMouseenter","onMouseleave","onFocus","onBlur","minDelay","activatorEvents","events","contentEvents","onFocusin","onFocusout","menu","closeParents","scrimEvents","val","contains","document","activeElement","setTimeout","flush","activatorRef","el","targetRef","getTarget","targetEl","Array","isArray","scope","run","_useActivator","stop","immediate","_ref2","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","arguments","length","_props","selector","nodeType","Node","ELEMENT_NODE","proxy","$el","parentNode","hasAttribute","querySelector"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Components\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\n\n// Utilities\nimport {\n computed,\n effectScope,\n inject,\n mergeProps,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n bindProps,\n getCurrentInstance,\n IN_BROWSER,\n matchesSelector,\n propsFactory,\n templateRef,\n unbindProps,\n} from '@/util'\n\n// Types\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\nimport type { DelayProps } from '@/composables/delay'\n\ninterface ActivatorProps extends DelayProps {\n target: 'parent' | 'cursor' | (string & {}) | Element | ComponentPublicInstance | [x: number, y: number] | undefined\n activator: 'parent' | (string & {}) | Element | ComponentPublicInstance | undefined\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n target: [String, Object] as PropType<ActivatorProps['target']>,\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n}, 'VOverlay-activator')\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop, contentEl }: {\n isActive: Ref<boolean>\n isTop: Ref<boolean>\n contentEl: Ref<HTMLElement | undefined>\n }\n) {\n const vm = getCurrentInstance('useActivator')\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n let firstEnter = true\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n if (isActive.value !== value) {\n firstEnter = true\n }\n isActive.value = value\n }\n })\n\n const cursorTarget = ref<[x: number, y: number]>()\n const availableEvents = {\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n if (!isActive.value) {\n cursorTarget.value = [e.clientX, e.clientY]\n }\n isActive.value = !isActive.value\n },\n onMouseenter: (e: MouseEvent) => {\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n onMouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n onFocus: (e: FocusEvent) => {\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') === false) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n onBlur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay({ minDelay: 1 })\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter\n events.onMouseleave = availableEvents.onMouseleave\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus\n events.onBlur = availableEvents.onBlur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Record<string, EventListener> = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (openOnFocus.value) {\n events.onFocusin = () => {\n isFocused = true\n runOpenDelay()\n }\n events.onFocusout = () => {\n isFocused = false\n runCloseDelay({ minDelay: 1 })\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.onClick = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n const scrimEvents = computed(() => {\n const events: Record<string, EventListener> = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n ) && !contentEl.value?.contains(document.activeElement)) {\n isActive.value = false\n }\n })\n\n watch(isActive, val => {\n if (!val) {\n setTimeout(() => {\n cursorTarget.value = undefined\n })\n }\n }, { flush: 'post' })\n\n const activatorRef = templateRef()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n activatorEl.value = activatorRef.el\n })\n })\n\n const targetRef = templateRef()\n const target = computed(() => {\n if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value\n if (targetRef.value) return targetRef.el\n return getTarget(props.target, vm) || activatorEl.value\n })\n const targetEl = computed(() => {\n return Array.isArray(target.value)\n ? undefined\n : target.value\n })\n\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n\n return { activatorEl, activatorRef, target, targetEl, targetRef, activatorEvents, contentEvents, scrimEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n bindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n unbindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n const activator = getTarget(selector, vm)\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined\n\n return activatorEl.value\n }\n}\n\nfunction getTarget<T extends 'parent' | string | Element | ComponentPublicInstance | [x: number, y: number] | undefined> (\n selector: T,\n vm: ComponentInternalInstance\n): HTMLElement | undefined | (T extends any[] ? [x: number, y: number] : never) {\n if (!selector) return\n\n let target\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el?.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n target = el\n } else if (typeof selector === 'string') {\n // Selector\n target = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n target = selector.$el\n } else {\n // HTMLElement | Element | [x, y]\n target = selector\n }\n\n return target\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useActivator.js","names":["VMenuSymbol","makeDelayProps","useDelay","computed","effectScope","inject","mergeProps","nextTick","onScopeDispose","ref","watch","watchEffect","bindProps","getCurrentInstance","IN_BROWSER","matchesSelector","propsFactory","templateRef","unbindProps","makeActivatorProps","target","String","Object","activator","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","_ref","isActive","isTop","contentEl","vm","activatorEl","isHovered","isFocused","firstEnter","value","runOpenDelay","runCloseDelay","cursorTarget","availableEvents","onClick","e","stopPropagation","currentTarget","clientX","clientY","onMouseenter","onMouseleave","onFocus","onBlur","minDelay","activatorEvents","events","contentEvents","onFocusin","matches","onFocusout","menu","closeParents","scrimEvents","val","contains","document","activeElement","setTimeout","flush","activatorRef","el","targetRef","getTarget","targetEl","Array","isArray","scope","run","_useActivator","stop","immediate","_ref2","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","arguments","length","_props","selector","nodeType","Node","ELEMENT_NODE","proxy","$el","parentNode","hasAttribute","querySelector"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Components\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\n\n// Utilities\nimport {\n computed,\n effectScope,\n inject,\n mergeProps,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n bindProps,\n getCurrentInstance,\n IN_BROWSER,\n matchesSelector,\n propsFactory,\n templateRef,\n unbindProps,\n} from '@/util'\n\n// Types\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\nimport type { DelayProps } from '@/composables/delay'\n\ninterface ActivatorProps extends DelayProps {\n target: 'parent' | 'cursor' | (string & {}) | Element | ComponentPublicInstance | [x: number, y: number] | undefined\n activator: 'parent' | (string & {}) | Element | ComponentPublicInstance | undefined\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n target: [String, Object] as PropType<ActivatorProps['target']>,\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n}, 'VOverlay-activator')\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop, contentEl }: {\n isActive: Ref<boolean>\n isTop: Ref<boolean>\n contentEl: Ref<HTMLElement | undefined>\n }\n) {\n const vm = getCurrentInstance('useActivator')\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n let firstEnter = true\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n if (isActive.value !== value) {\n firstEnter = true\n }\n isActive.value = value\n }\n })\n\n const cursorTarget = ref<[x: number, y: number]>()\n const availableEvents = {\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n if (!isActive.value) {\n cursorTarget.value = [e.clientX, e.clientY]\n }\n isActive.value = !isActive.value\n },\n onMouseenter: (e: MouseEvent) => {\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n onMouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n onFocus: (e: FocusEvent) => {\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') === false) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n onBlur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay({ minDelay: 1 })\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter\n events.onMouseleave = availableEvents.onMouseleave\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus\n events.onBlur = availableEvents.onBlur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Record<string, EventListener> = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (openOnFocus.value) {\n events.onFocusin = (e: Event) => {\n if (!(e.target as HTMLElement).matches(':focus-visible')) return\n isFocused = true\n runOpenDelay()\n }\n events.onFocusout = () => {\n isFocused = false\n runCloseDelay({ minDelay: 1 })\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.onClick = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n const scrimEvents = computed(() => {\n const events: Record<string, EventListener> = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n ) && !contentEl.value?.contains(document.activeElement)) {\n isActive.value = false\n }\n })\n\n watch(isActive, val => {\n if (!val) {\n setTimeout(() => {\n cursorTarget.value = undefined\n })\n }\n }, { flush: 'post' })\n\n const activatorRef = templateRef()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n activatorEl.value = activatorRef.el\n })\n })\n\n const targetRef = templateRef()\n const target = computed(() => {\n if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value\n if (targetRef.value) return targetRef.el\n return getTarget(props.target, vm) || activatorEl.value\n })\n const targetEl = computed(() => {\n return Array.isArray(target.value)\n ? undefined\n : target.value\n })\n\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n\n return { activatorEl, activatorRef, target, targetEl, targetRef, activatorEvents, contentEvents, scrimEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n bindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n unbindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n const activator = getTarget(selector, vm)\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined\n\n return activatorEl.value\n }\n}\n\nfunction getTarget<T extends 'parent' | string | Element | ComponentPublicInstance | [x: number, y: number] | undefined> (\n selector: T,\n vm: ComponentInternalInstance\n): HTMLElement | undefined | (T extends any[] ? [x: number, y: number] : never) {\n if (!selector) return\n\n let target\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el?.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n target = el\n } else if (typeof selector === 'string') {\n // Selector\n target = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n target = selector.$el\n } else {\n // HTMLElement | Element | [x, y]\n target = selector\n }\n\n return target\n}\n"],"mappings":"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","ignoreList":[]}
@@ -27,4 +27,12 @@
27
27
  top: 0;
28
28
  height: 100%;
29
29
  width: 2px;
30
+ }
31
+ @media (forced-colors: active) {
32
+ .v-tab__slider--selected.v-btn {
33
+ color: highlight !important;
34
+ }
35
+ .v-tab__slider__slider {
36
+ background: highlight !important;
37
+ }
30
38
  }
@@ -32,3 +32,10 @@
32
32
  top: 0
33
33
  height: 100%
34
34
  width: $tab-slider-size
35
+
36
+ @media (forced-colors: active)
37
+ &--selected.v-btn
38
+ color: highlight !important
39
+
40
+ &__slider
41
+ background: highlight !important
@@ -106,14 +106,24 @@ export const VTextField = genericComponent()({
106
106
  }
107
107
  function onInput(e) {
108
108
  const el = e.target;
109
- model.value = el.value;
110
- if (props.modelModifiers?.trim && ['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {
111
- const caretPosition = [el.selectionStart, el.selectionEnd];
112
- nextTick(() => {
113
- el.selectionStart = caretPosition[0];
114
- el.selectionEnd = caretPosition[1];
115
- });
109
+ if (!(props.modelModifiers?.trim && ['text', 'search', 'password', 'tel', 'url'].includes(props.type))) {
110
+ model.value = el.value;
111
+ return;
116
112
  }
113
+ const value = el.value;
114
+ const start = el.selectionStart;
115
+ const end = el.selectionEnd;
116
+ model.value = value;
117
+ nextTick(() => {
118
+ let offset = 0;
119
+ if (value.trimStart().length === el.value.length) {
120
+ // #22307 - Whitespace has been removed from the
121
+ // start, offset the caret position to compensate
122
+ offset = value.length - el.value.length;
123
+ }
124
+ if (start != null) el.selectionStart = start - offset;
125
+ if (end != null) el.selectionEnd = end - offset;
126
+ });
117
127
  }
118
128
  useRender(() => {
119
129
  const hasCounter = !!(slots.counter || props.counter !== false && props.counter != null);