@vuetify/nightly 3.11.8-dev.2026-02-11 → 3.11.8-dev.2026-02-12
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.
- package/CHANGELOG.md +7 -3
- package/dist/json/attributes.json +3838 -3838
- package/dist/json/importMap-labs.json +28 -28
- package/dist/json/importMap.json +160 -160
- package/dist/json/web-types.json +7160 -7160
- package/dist/vuetify-labs.cjs +21 -12
- package/dist/vuetify-labs.css +3922 -3920
- package/dist/vuetify-labs.d.ts +62 -62
- package/dist/vuetify-labs.esm.js +21 -12
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +21 -12
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +21 -12
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +2481 -2479
- package/dist/vuetify.d.ts +62 -62
- package/dist/vuetify.esm.js +21 -12
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +21 -12
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +15 -12
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VCard/VCard.js +4 -2
- package/lib/components/VCard/VCard.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.js +8 -3
- package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
- package/lib/components/VDialog/VDialog.css +2 -2
- package/lib/components/VDialog/VDialog.sass +2 -2
- package/lib/components/VTabs/VTab.js +7 -5
- package/lib/components/VTabs/VTab.js.map +1 -1
- package/lib/components/VTabs/VTabs.css +2 -0
- package/lib/components/VTabs/VTabs.sass +2 -0
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +62 -62
- package/lib/framework.js +1 -1
- package/package.json +1 -1
|
@@ -26,7 +26,7 @@ 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
28
|
import { shallowRef, watch } from 'vue';
|
|
29
|
-
import { genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
|
29
|
+
import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
|
30
30
|
export const makeVCardProps = propsFactory({
|
|
31
31
|
appendAvatar: String,
|
|
32
32
|
appendIcon: IconValue,
|
|
@@ -141,7 +141,9 @@ export const VCard = genericComponent()({
|
|
|
141
141
|
'v-card--hover': props.hover && !(props.disabled || props.flat),
|
|
142
142
|
'v-card--link': isClickable
|
|
143
143
|
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
|
|
144
|
-
"style": [colorStyles.value, dimensionStyles.value, locationStyles.value,
|
|
144
|
+
"style": [colorStyles.value, dimensionStyles.value, locationStyles.value, {
|
|
145
|
+
'--v-card-height': convertToUnit(props.height)
|
|
146
|
+
}, props.style],
|
|
145
147
|
"onClick": isClickable && link.navigate,
|
|
146
148
|
"tabindex": props.disabled ? -1 : undefined
|
|
147
149
|
}), {
|
|
@@ -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","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":";AAAA;;AAEA;AACA;;AAEA;AAAA,SACSA,YAAY;AAAA,SACZC,SAAS;AAAA,SACTC,SAAS;AAAA,SACTC,iBAAiB;AAAA,SACjBC,IAAI,4BAEb;AAAA,SACSC,eAAe,EAAEC,SAAS;AAAA,SAC1BC,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,SAAS;AAAA,SACTC,UAAU,EAAEC,eAAe,EAAEC,SAAS;AAAA,SACtCC,iBAAiB,EAAEC,WAAW;AAAA,SAC9BC,iBAAiB,EAAEC,WAAW;AAAA,SAC9BC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,eAAe,EAAEC,OAAO;AAAA,SACxBC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,WAAW,EAAEC,gBAAgB,EAAEC,UAAU,wCAElD;AAAA,OACOC,OAAO,0CAEd;AACA,SAASC,UAAU,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC9BC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,+BAElD;AAMA,OAAO,MAAMC,cAAc,GAAGF,YAAY,CAAC;EACzCG,YAAY,EAAEC,MAAM;EACpBC,UAAU,EAAE3B,SAAS;EACrB4B,QAAQ,EAAEC,OAAO;EACjBC,IAAI,EAAED,OAAO;EACbE,KAAK,EAAEF,OAAO;EACdG,KAAK,EAAEN,MAAM;EACbO,IAAI,EAAE;IACJC,IAAI,EAAEL,OAAO;IACbM,OAAO,EAAEC;EACX,CAAC;EACDC,aAAa,EAAEX,MAAM;EACrBY,WAAW,EAAEtC,SAAS;EACtBuC,MAAM,EAAE;IACNL,IAAI,EAAE,CAACL,OAAO,EAAEW,MAAM,CAA8C;IACpEL,OAAO,EAAE;EACX,CAAC;EACDM,QAAQ,EAAE;IACRP,IAAI,EAAE,CAACR,MAAM,EAAEgB,MAAM,EAAEb,OAAO,CAAC;IAC/BM,OAAO,EAAEC;EACX,CAAC;EACDO,IAAI,EAAE;IACJT,IAAI,EAAE,CAACR,MAAM,EAAEgB,MAAM,EAAEb,OAAO,CAAC;IAC/BM,OAAO,EAAEC;EACX,CAAC;EACDQ,KAAK,EAAE;IACLV,IAAI,EAAE,CAACR,MAAM,EAAEgB,MAAM,EAAEb,OAAO,CAAC;IAC/BM,OAAO,EAAEC;EACX,CAAC;EAED,GAAG7C,eAAe,CAAC,CAAC;EACpB,GAAGE,kBAAkB,CAAC,CAAC;EACvB,GAAGC,gBAAgB,CAAC,CAAC;EACrB,GAAGE,kBAAkB,CAAC,CAAC;EACvB,GAAGE,kBAAkB,CAAC,CAAC;EACvB,GAAGI,eAAe,CAAC,CAAC;EACpB,GAAGE,iBAAiB,CAAC,CAAC;EACtB,GAAGE,iBAAiB,CAAC,CAAC;EACtB,GAAGE,gBAAgB,CAAC,CAAC;EACrB,GAAGE,eAAe,CAAC,CAAC;EACpB,GAAGE,YAAY,CAAC,CAAC;EACjB,GAAGC,cAAc,CAAC,CAAC;EACnB,GAAGG,gBAAgB,CAAC;IAAE6B,OAAO,EAAE;EAAW,CAAU;AACtD,CAAC,EAAE,OAAO,CAAC;AAWX,OAAO,MAAMC,KAAK,GAAGzB,gBAAgB,CAAa,CAAC,CAAC;EAClD0B,IAAI,EAAE,OAAO;EAEbC,UAAU,EAAE;IAAE9B;EAAQ,CAAC;EAEvB+B,KAAK,EAAEzB,cAAc,CAAC,CAAC;EAEvB0B,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC5B,MAAM;MAAEG;IAAa,CAAC,GAAGxC,YAAY,CAACmC,KAAK,CAAC;IAC5C,MAAM;MAAEM;IAAc,CAAC,GAAG/D,SAAS,CAACyD,KAAK,CAAC;IAC1C,MAAM;MAAEO,YAAY;MAAEC,WAAW;MAAEC;IAAe,CAAC,GAAGzC,UAAU,CAACgC,KAAK,CAAC;IACvE,MAAM;MAAEU;IAAe,CAAC,GAAGhE,UAAU,CAACsD,KAAK,CAAC;IAC5C,MAAM;MAAEW;IAAgB,CAAC,GAAG/D,YAAY,CAACoD,KAAK,CAAC;IAC/C,MAAM;MAAEY;IAAiB,CAAC,GAAG9D,YAAY,CAACkD,KAAK,CAAC;IAChD,MAAM;MAAEa;IAAc,CAAC,GAAG3D,SAAS,CAAC8C,KAAK,CAAC;IAC1C,MAAM;MAAEc;IAAe,CAAC,GAAG1D,WAAW,CAAC4C,KAAK,CAAC;IAC7C,MAAM;MAAEe;IAAgB,CAAC,GAAGzD,WAAW,CAAC0C,KAAK,CAAC;IAC9C,MAAM;MAAEgB;IAAe,CAAC,GAAGxD,UAAU,CAACwC,KAAK,CAAC;IAC5C,MAAMhB,IAAI,GAAGtB,OAAO,CAACsC,KAAK,EAAEG,KAAK,CAAC;IAClC,MAAMc,YAAY,GAAG/C,UAAU,CAAqBiB,SAAS,CAAC;IAE9DhB,KAAK,CAAC,MAAM6B,KAAK,CAACkB,OAAO,EAAE,CAACC,GAAG,EAAEC,GAAG,KAAK;MACvCH,YAAY,CAACI,KAAK,GAAG,CAACF,GAAG,IAAI,OAAOC,GAAG,KAAK,QAAQ,GAChDA,GAAG,GACH,OAAOD,GAAG,KAAK,SAAS,GACtBhC,SAAS,GACTgC,GAAG;IACX,CAAC,EAAE;MAAEG,SAAS,EAAE;IAAK,CAAC,CAAC;IAEvBhD,SAAS,CAAC,MAAM;MACd,MAAMiD,MAAM,GAAGvB,KAAK,CAAChB,IAAI,KAAK,KAAK,IAAIA,IAAI,CAACuC,MAAM,CAACF,KAAK;MACxD,MAAMG,WAAW,GACf,CAACxB,KAAK,CAACrB,QAAQ,IACfqB,KAAK,CAAChB,IAAI,KAAK,KAAK,KACnBgB,KAAK,CAAChB,IAAI,IAAIA,IAAI,CAACwC,WAAW,CAACH,KAAK,CACtC;MACD,MAAMI,GAAG,GAAGF,MAAM,GAAG,GAAG,GAAGvB,KAAK,CAAC0B,GAAG;MACpC,MAAMC,QAAQ,GAAG,CAAC,EAAEvB,KAAK,CAACT,KAAK,IAAIK,KAAK,CAACL,KAAK,IAAI,IAAI,CAAC;MACvD,MAAMiC,WAAW,GAAG,CAAC,EAAExB,KAAK,CAACZ,QAAQ,IAAIQ,KAAK,CAACR,QAAQ,IAAI,IAAI,CAAC;MAChE,MAAMqC,SAAS,GAAGF,QAAQ,IAAIC,WAAW;MACzC,MAAME,SAAS,GAAG,CAAC,EAAE1B,KAAK,CAAC2B,MAAM,IAAI/B,KAAK,CAACxB,YAAY,IAAIwB,KAAK,CAACtB,UAAU,CAAC;MAC5E,MAAMsD,UAAU,GAAG,CAAC,EAAE5B,KAAK,CAAC6B,OAAO,IAAIjC,KAAK,CAACZ,aAAa,IAAIY,KAAK,CAACX,WAAW,CAAC;MAChF,MAAM6C,QAAQ,GAAG,CAAC,EAAE9B,KAAK,CAACrB,KAAK,IAAIiB,KAAK,CAACjB,KAAK,CAAC;MAC/C,MAAMoD,WAAW,GAAGN,SAAS,IAAIG,UAAU,IAAIF,SAAS;MACxD,MAAMM,OAAO,GAAG,CAAC,EAAEhC,KAAK,CAACV,IAAI,IAAIM,KAAK,CAACN,IAAI,IAAI,IAAI,CAAC;MAEpD,OAAA2C,eAAA,CAAAC,YAAA,CAAAb,GAAA,EAAAc,WAAA,CAESvD,IAAI,CAACwD,SAAS;QAAA,SACZ,CACL,QAAQ,EACR;UACE,kBAAkB,EAAExC,KAAK,CAACrB,QAAQ;UAClC,cAAc,EAAEqB,KAAK,CAACnB,IAAI;UAC1B,eAAe,EAAEmB,KAAK,CAAClB,KAAK,IAAI,EAAEkB,KAAK,CAACrB,QAAQ,IAAIqB,KAAK,CAACnB,IAAI,CAAC;UAC/D,cAAc,EAAE2C;QAClB,CAAC,EACDnB,YAAY,CAACgB,KAAK,EAClBf,aAAa,CAACe,KAAK,EACnBd,YAAY,CAACc,KAAK,EAClBX,cAAc,CAACW,KAAK,EACpBT,gBAAgB,CAACS,KAAK,EACtBR,aAAa,CAACQ,KAAK,EACnBN,eAAe,CAACM,KAAK,EACrBL,cAAc,CAACK,KAAK,EACpBZ,cAAc,CAACY,KAAK,EACpBrB,KAAK,CAACyC,KAAK,CACZ;QAAA,SACM,CACLjC,WAAW,CAACa,KAAK,EACjBV,eAAe,CAACU,KAAK,EACrBP,cAAc,CAACO,KAAK,EACpBrB,KAAK,CAAC0C,KAAK,CACZ;QAAA,WACSlB,WAAW,IAAIxC,IAAI,CAAC2D,QAAQ;QAAA,YAE3B3C,KAAK,CAACrB,QAAQ,GAAG,CAAC,CAAC,GAAGQ;MAAS;QAAAD,OAAA,EAAAA,CAAA,MAExCgD,QAAQ,IAAAU,mBAAA;UAAA;UAAA;QAAA,IAEJ,CAACxC,KAAK,CAACrB,KAAK,GAAAuD,YAAA,CAAAjG,IAAA;UAAA;UAAA;UAAA,OAIJ2D,KAAK,CAACjB;QAAK,WAAAuD,YAAA,CAAAlG,iBAAA;UAAA;UAAA,YAKN,CAAC4D,KAAK,CAACjB,KAAK;UAAA,YACb;YACR1C,IAAI,EAAE;cACJwG,KAAK,EAAE,IAAI;cACXC,GAAG,EAAE9C,KAAK,CAACjB;YACb;UACF;QAAC,GACiBqB,KAAK,CAACrB,KAAK,CAEhC,EAEJ,EAAAuD,YAAA,CAAAtF,UAAA;UAAA;UAAA,UAIU,CAAC,CAACgD,KAAK,CAACkB,OAAO;UAAA,SAChBD,YAAY,CAACI;QAAK,GACjB;UAAEnC,OAAO,EAAEkB,KAAK,CAAC2C;QAAO,CAAC,GAGlCZ,WAAW,IAAAG,YAAA,CAAApG,SAAA;UAAA;UAAA,iBAGO8D,KAAK,CAACZ,aAAa;UAAA,eACrBY,KAAK,CAACX,WAAW;UAAA,SACvBW,KAAK,CAACL,KAAK;UAAA,YACRK,KAAK,CAACR,QAAQ;UAAA,gBACVQ,KAAK,CAACxB,YAAY;UAAA,cACpBwB,KAAK,CAACtB;QAAU;UAG3BQ,OAAO,EAAEkB,KAAK,CAAC4C,IAAI;UACnBf,OAAO,EAAE7B,KAAK,CAAC6B,OAAO;UACtBtC,KAAK,EAAES,KAAK,CAACT,KAAK;UAClBH,QAAQ,EAAEY,KAAK,CAACZ,QAAQ;UACxBuC,MAAM,EAAE3B,KAAK,CAAC2B;QAAM,EAGzB,EAECK,OAAO,IAAAE,YAAA,CAAAnG,SAAA;UAAA;QAAA;UAAA+C,OAAA,EAAAA,CAAA,MAEHkB,KAAK,CAACV,IAAI,GAAG,CAAC,IAAIM,KAAK,CAACN,IAAI;QAAA,EAEjC,EAECU,KAAK,CAAClB,OAAO,GAAG,CAAC,EAEjBkB,KAAK,CAAC6C,OAAO,IAAAX,YAAA,CAAArG,YAAA,QACU;UAAEiD,OAAO,EAAEkB,KAAK,CAAC6C;QAAQ,CAAC,CAClD,EAECnF,WAAW,CAAC0D,WAAW,EAAE,QAAQ,CAAC;MAAA,MAAAvD,OAAA,EAlEzBuD,WAAW,IAAIxB,KAAK,CAACV,MAAM;IAqE5C,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","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","convertToUnit","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","height","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 { convertToUnit, 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 {\n '--v-card-height': convertToUnit(props.height),\n },\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":[]}
|
|
@@ -60,11 +60,15 @@ export const VDatePickerYears = genericComponent()({
|
|
|
60
60
|
watchEffect(() => {
|
|
61
61
|
model.value = model.value ?? adapter.getYear(adapter.date());
|
|
62
62
|
});
|
|
63
|
+
const containerRef = templateRef();
|
|
63
64
|
const yearRef = templateRef();
|
|
64
65
|
function focusSelectedYear() {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
const container = containerRef.el;
|
|
67
|
+
const target = yearRef.el;
|
|
68
|
+
if (!container || !target) return;
|
|
69
|
+
const containerRect = container.getBoundingClientRect();
|
|
70
|
+
const targetRect = target.getBoundingClientRect();
|
|
71
|
+
container.scrollTop += targetRect.top - containerRect.top - container.clientHeight / 2 + targetRect.height / 2;
|
|
68
72
|
}
|
|
69
73
|
function isYearAllowed(year) {
|
|
70
74
|
if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
|
|
@@ -77,6 +81,7 @@ export const VDatePickerYears = genericComponent()({
|
|
|
77
81
|
}
|
|
78
82
|
useRender(() => _withDirectives(_createElementVNode("div", {
|
|
79
83
|
"class": "v-date-picker-years",
|
|
84
|
+
"ref": containerRef,
|
|
80
85
|
"style": {
|
|
81
86
|
height: convertToUnit(props.height)
|
|
82
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePickerYears.js","names":["VBtn","useDate","useProxiedModel","vIntersect","computed","shallowRef","watchEffect","convertToUnit","createRange","genericComponent","propsFactory","templateRef","useRender","makeVDatePickerYearsProps","color","String","height","Number","min","max","modelValue","allowedYears","Array","Function","VDatePickerYears","name","props","directives","emits","year","setup","_ref","emit","slots","adapter","model","hasFocusedItem","years","getYear","date","startOfYear","setYear","map","i","text","format","value","isDisabled","isYearAllowed","yearRef","focusSelectedYear","el","scrollIntoView","block","isArray","length","includes","_withDirectives","_createElementVNode","onFocus","focus","onFocusin","onFocusout","btnProps","ref","undefined","active","rounded","disabled","variant","onClick","_createVNode","_mergeProps","handler","once"],"sources":["../../../src/components/VDatePicker/VDatePickerYears.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerYears.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport vIntersect from '@/directives/intersect'\n\n// Utilities\nimport { computed, shallowRef, watchEffect } from 'vue'\nimport { convertToUnit, createRange, genericComponent, propsFactory, templateRef, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VDatePickerYearsSlots = {\n year: {\n year: {\n text: string\n value: number\n }\n i: number\n props: {\n active: boolean\n color?: string\n rounded: boolean\n text: string\n variant: 'flat' | 'text'\n onClick: () => void\n }\n }\n}\n\nexport const makeVDatePickerYearsProps = propsFactory({\n color: String,\n height: [String, Number],\n min: null as any as PropType<unknown>,\n max: null as any as PropType<unknown>,\n modelValue: Number,\n allowedYears: [Array, Function] as PropType<number[] | ((date: number) => boolean)>,\n}, 'VDatePickerYears')\n\nexport const VDatePickerYears = genericComponent<VDatePickerYearsSlots>()({\n name: 'VDatePickerYears',\n\n props: makeVDatePickerYearsProps(),\n\n directives: { vIntersect },\n\n emits: {\n 'update:modelValue': (year: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const model = useProxiedModel(props, 'modelValue')\n const hasFocusedItem = shallowRef(false)\n const years = computed(() => {\n const year = adapter.getYear(adapter.date())\n\n let min = year - 100\n let max = year + 52\n\n if (props.min) {\n min = adapter.getYear(adapter.date(props.min))\n }\n\n if (props.max) {\n max = adapter.getYear(adapter.date(props.max))\n }\n\n let date = adapter.startOfYear(adapter.date())\n\n date = adapter.setYear(date, min)\n\n return createRange(max - min + 1, min).map(i => {\n const text = adapter.format(date, 'year')\n date = adapter.setYear(date, adapter.getYear(date) + 1)\n\n return {\n text,\n value: i,\n isDisabled: !isYearAllowed(i),\n }\n })\n })\n\n watchEffect(() => {\n model.value = model.value ?? adapter.getYear(adapter.date())\n })\n\n const yearRef = templateRef()\n\n function focusSelectedYear () {\n yearRef.el?.scrollIntoView({ block: 'center' })\n }\n\n function isYearAllowed (year: number) {\n if (Array.isArray(props.allowedYears) && props.allowedYears.length) {\n return props.allowedYears.includes(year)\n }\n\n if (typeof props.allowedYears === 'function') {\n return props.allowedYears(year)\n }\n\n return true\n }\n\n useRender(() => (\n <div\n class=\"v-date-picker-years\"\n v-intersect={[{\n handler: focusSelectedYear,\n }, null, ['once']]}\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <div\n class=\"v-date-picker-years__content\"\n onFocus={ () => yearRef.el?.focus() }\n onFocusin={ () => hasFocusedItem.value = true }\n onFocusout={ () => hasFocusedItem.value = false }\n tabindex={ hasFocusedItem.value ? -1 : 0 }\n >\n { years.value.map((year, i) => {\n const btnProps = {\n ref: model.value === year.value ? yearRef : undefined,\n active: model.value === year.value,\n color: model.value === year.value ? props.color : undefined,\n rounded: true,\n text: year.text,\n disabled: year.isDisabled,\n variant: model.value === year.value ? 'flat' : 'text',\n onClick: () => {\n if (model.value === year.value) {\n emit('update:modelValue', model.value)\n return\n }\n model.value = year.value\n },\n } as const\n\n return slots.year?.({\n year,\n i,\n props: btnProps,\n }) ?? (\n <VBtn\n key=\"month\"\n { ...btnProps }\n />\n )\n })}\n </div>\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VDatePickerYears = InstanceType<typeof VDatePickerYears>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VDatePickerYears.js","names":["VBtn","useDate","useProxiedModel","vIntersect","computed","shallowRef","watchEffect","convertToUnit","createRange","genericComponent","propsFactory","templateRef","useRender","makeVDatePickerYearsProps","color","String","height","Number","min","max","modelValue","allowedYears","Array","Function","VDatePickerYears","name","props","directives","emits","year","setup","_ref","emit","slots","adapter","model","hasFocusedItem","years","getYear","date","startOfYear","setYear","map","i","text","format","value","isDisabled","isYearAllowed","containerRef","yearRef","focusSelectedYear","container","el","target","containerRect","getBoundingClientRect","targetRect","scrollTop","top","clientHeight","isArray","length","includes","_withDirectives","_createElementVNode","onFocus","focus","onFocusin","onFocusout","btnProps","ref","undefined","active","rounded","disabled","variant","onClick","_createVNode","_mergeProps","handler","once"],"sources":["../../../src/components/VDatePicker/VDatePickerYears.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerYears.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport vIntersect from '@/directives/intersect'\n\n// Utilities\nimport { computed, shallowRef, watchEffect } from 'vue'\nimport { convertToUnit, createRange, genericComponent, propsFactory, templateRef, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VDatePickerYearsSlots = {\n year: {\n year: {\n text: string\n value: number\n }\n i: number\n props: {\n active: boolean\n color?: string\n rounded: boolean\n text: string\n variant: 'flat' | 'text'\n onClick: () => void\n }\n }\n}\n\nexport const makeVDatePickerYearsProps = propsFactory({\n color: String,\n height: [String, Number],\n min: null as any as PropType<unknown>,\n max: null as any as PropType<unknown>,\n modelValue: Number,\n allowedYears: [Array, Function] as PropType<number[] | ((date: number) => boolean)>,\n}, 'VDatePickerYears')\n\nexport const VDatePickerYears = genericComponent<VDatePickerYearsSlots>()({\n name: 'VDatePickerYears',\n\n props: makeVDatePickerYearsProps(),\n\n directives: { vIntersect },\n\n emits: {\n 'update:modelValue': (year: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const model = useProxiedModel(props, 'modelValue')\n const hasFocusedItem = shallowRef(false)\n const years = computed(() => {\n const year = adapter.getYear(adapter.date())\n\n let min = year - 100\n let max = year + 52\n\n if (props.min) {\n min = adapter.getYear(adapter.date(props.min))\n }\n\n if (props.max) {\n max = adapter.getYear(adapter.date(props.max))\n }\n\n let date = adapter.startOfYear(adapter.date())\n\n date = adapter.setYear(date, min)\n\n return createRange(max - min + 1, min).map(i => {\n const text = adapter.format(date, 'year')\n date = adapter.setYear(date, adapter.getYear(date) + 1)\n\n return {\n text,\n value: i,\n isDisabled: !isYearAllowed(i),\n }\n })\n })\n\n watchEffect(() => {\n model.value = model.value ?? adapter.getYear(adapter.date())\n })\n\n const containerRef = templateRef()\n const yearRef = templateRef()\n\n function focusSelectedYear () {\n const container = containerRef.el\n const target = yearRef.el\n if (!container || !target) return\n\n const containerRect = container.getBoundingClientRect()\n const targetRect = target.getBoundingClientRect()\n\n container.scrollTop += (targetRect.top - containerRect.top) - (container.clientHeight / 2) + (targetRect.height / 2)\n }\n\n function isYearAllowed (year: number) {\n if (Array.isArray(props.allowedYears) && props.allowedYears.length) {\n return props.allowedYears.includes(year)\n }\n\n if (typeof props.allowedYears === 'function') {\n return props.allowedYears(year)\n }\n\n return true\n }\n\n useRender(() => (\n <div\n class=\"v-date-picker-years\"\n ref={ containerRef }\n v-intersect={[{\n handler: focusSelectedYear,\n }, null, ['once']]}\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <div\n class=\"v-date-picker-years__content\"\n onFocus={ () => yearRef.el?.focus() }\n onFocusin={ () => hasFocusedItem.value = true }\n onFocusout={ () => hasFocusedItem.value = false }\n tabindex={ hasFocusedItem.value ? -1 : 0 }\n >\n { years.value.map((year, i) => {\n const btnProps = {\n ref: model.value === year.value ? yearRef : undefined,\n active: model.value === year.value,\n color: model.value === year.value ? props.color : undefined,\n rounded: true,\n text: year.text,\n disabled: year.isDisabled,\n variant: model.value === year.value ? 'flat' : 'text',\n onClick: () => {\n if (model.value === year.value) {\n emit('update:modelValue', model.value)\n return\n }\n model.value = year.value\n },\n } as const\n\n return slots.year?.({\n year,\n i,\n props: btnProps,\n }) ?? (\n <VBtn\n key=\"month\"\n { ...btnProps }\n />\n )\n })}\n </div>\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VDatePickerYears = InstanceType<typeof VDatePickerYears>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
--v-scrollbar-offset: 0px;
|
|
23
23
|
border-radius: 4px;
|
|
24
24
|
overflow-y: auto;
|
|
25
|
-
flex: 1 1 100
|
|
25
|
+
flex: 1 1 var(--v-card-height, 100%);
|
|
26
26
|
}
|
|
27
27
|
.v-dialog > .v-overlay__content > .v-card,
|
|
28
28
|
.v-dialog > .v-overlay__content > .v-sheet,
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
.v-dialog--scrollable > .v-overlay__content > form,
|
|
90
90
|
.v-dialog--scrollable > .v-overlay__content > form > .v-card {
|
|
91
91
|
display: flex;
|
|
92
|
-
flex: 1 1 100
|
|
92
|
+
flex: 1 1 var(--v-card-height, 100%);
|
|
93
93
|
flex-direction: column;
|
|
94
94
|
}
|
|
95
95
|
.v-dialog--scrollable > .v-overlay__content > .v-card > .v-card-text,
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
--v-scrollbar-offset: 0px
|
|
25
25
|
border-radius: $dialog-border-radius
|
|
26
26
|
overflow-y: auto
|
|
27
|
-
flex: 1 1 100%
|
|
27
|
+
flex: 1 1 var(--v-card-height, 100%)
|
|
28
28
|
|
|
29
29
|
@include tools.elevation($dialog-elevation)
|
|
30
30
|
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
&,
|
|
83
83
|
> .v-card
|
|
84
84
|
display: flex
|
|
85
|
-
flex: 1 1 100%
|
|
85
|
+
flex: 1 1 var(--v-card-height, 100%)
|
|
86
86
|
flex-direction: column
|
|
87
87
|
|
|
88
88
|
> .v-card > .v-card-text
|
|
@@ -85,7 +85,7 @@ export const VTab = genericComponent()({
|
|
|
85
85
|
const prevEl = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider');
|
|
86
86
|
const nextEl = sliderEl.value;
|
|
87
87
|
if (!prevEl || !nextEl) return;
|
|
88
|
-
const color = getComputedStyle(prevEl).
|
|
88
|
+
const color = getComputedStyle(prevEl).backgroundColor;
|
|
89
89
|
const keyframes = {
|
|
90
90
|
fade,
|
|
91
91
|
grow,
|
|
@@ -97,7 +97,7 @@ export const VTab = genericComponent()({
|
|
|
97
97
|
shift: 225
|
|
98
98
|
}[props.sliderTransition ?? 'shift'] ?? 225);
|
|
99
99
|
animate(nextEl, {
|
|
100
|
-
backgroundColor: [color,
|
|
100
|
+
backgroundColor: [color, color],
|
|
101
101
|
...keyframes(nextEl, prevEl)
|
|
102
102
|
}, {
|
|
103
103
|
duration,
|
|
@@ -111,7 +111,9 @@ export const VTab = genericComponent()({
|
|
|
111
111
|
"symbol": VTabsSymbol,
|
|
112
112
|
"ref": rootEl,
|
|
113
113
|
"class": ['v-tab', props.class, isSelected.value && props.inset ? insetColorClasses.value : []],
|
|
114
|
-
"style": [props.style, isSelected.value && props.inset ? insetColorStyles.value : []
|
|
114
|
+
"style": [props.style, isSelected.value && props.inset ? insetColorStyles.value : [], {
|
|
115
|
+
backgroundColor: isSelected.value && props.inset ? 'transparent !important' : undefined
|
|
116
|
+
}],
|
|
115
117
|
"tabindex": isSelected.value ? 0 : -1,
|
|
116
118
|
"role": "tab",
|
|
117
119
|
"aria-selected": String(isSelected.value),
|
|
@@ -124,8 +126,8 @@ export const VTab = genericComponent()({
|
|
|
124
126
|
...slots,
|
|
125
127
|
default: () => _createElementVNode(_Fragment, null, [slots.default?.() ?? props.text, !props.hideSlider && _createElementVNode("div", {
|
|
126
128
|
"ref": sliderEl,
|
|
127
|
-
"class": _normalizeClass(['v-tab__slider', sliderColorClasses.value]),
|
|
128
|
-
"style": _normalizeStyle(sliderColorStyles.value)
|
|
129
|
+
"class": _normalizeClass(['v-tab__slider', props.inset ? insetColorClasses.value : sliderColorClasses.value]),
|
|
130
|
+
"style": _normalizeStyle([sliderColorStyles.value, props.inset ? insetColorStyles.value : sliderColorClasses.value])
|
|
129
131
|
}, null)])
|
|
130
132
|
});
|
|
131
133
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTab.js","names":["makeVBtnProps","VBtn","useBackgroundColor","useTextColor","forwardRefs","computed","ref","VTabsSymbol","animate","genericComponent","omit","propsFactory","standardEasing","useRender","makeVTabProps","fixed","Boolean","sliderColor","String","sliderTransition","sliderTransitionDuration","Number","hideSlider","inset","direction","type","default","selectedClass","variant","VTab","name","props","setup","_ref","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","backgroundColorClasses","insetColorClasses","backgroundColorStyles","insetColorStyles","rootEl","sliderEl","isHorizontal","isSelected","value","group","fade","nextEl","prevEl","opacity","grow","transform","shift","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","transformOrigin","Array","fill","updateSlider","_ref2","$el","parentElement","querySelector","color","getComputedStyle","keyframes","duration","backgroundColor","easing","btnProps","filterProps","_createVNode","_mergeProps","class","style","undefined","_createElementVNode","_Fragment","text","_normalizeClass","_normalizeStyle"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { VTabsSymbol } from './shared'\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n\n sliderColor: String,\n sliderTransition: String as PropType<'shift' | 'grow' | 'fade'>,\n sliderTransitionDuration: [String, Number],\n hideSlider: Boolean,\n inset: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text' as const,\n }), [\n 'active',\n 'block',\n 'flat',\n 'location',\n 'position',\n 'symbol',\n ]),\n}, 'VTab')\n\nexport const VTab = genericComponent<VBtnSlots>()({\n name: 'VTab',\n\n props: makeVTabProps(),\n\n setup (props, { slots, attrs }) {\n const {\n textColorClasses: sliderColorClasses,\n textColorStyles: sliderColorStyles,\n } = useTextColor(() => props.sliderColor)\n const {\n backgroundColorClasses: insetColorClasses,\n backgroundColorStyles: insetColorStyles,\n } = useBackgroundColor(() => props.sliderColor)\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false)\n\n function fade (nextEl: HTMLElement, prevEl: HTMLElement) {\n return { opacity: [0, 1] }\n }\n\n function grow (nextEl: HTMLElement, prevEl: HTMLElement) {\n return props.direction === 'vertical'\n ? { transform: ['scaleY(0)', 'scaleY(1)'] }\n : { transform: ['scaleX(0)', 'scaleX(1)'] }\n }\n\n function shift (nextEl: HTMLElement, prevEl: HTMLElement) {\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0\n const sigma = 1.5\n\n return {\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n 'none',\n ],\n transformOrigin: Array(3).fill(origin),\n }\n }\n\n function updateSlider ({ value }: { value: boolean }) {\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const keyframes = { fade, grow, shift }[props.sliderTransition ?? 'shift'] ?? shift\n const duration = Number(props.sliderTransitionDuration) ||\n ({ fade: 400, grow: 350, shift: 225 }[props.sliderTransition ?? 'shift'] ?? 225)\n\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n ...keyframes(nextEl, prevEl),\n }, {\n duration,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const btnProps = VBtn.filterProps(props)\n\n return (\n <VBtn\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n props.class,\n isSelected.value && props.inset ? insetColorClasses.value : [],\n ]}\n style={[\n props.style,\n isSelected.value && props.inset ? insetColorStyles.value : [],\n ]}\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n active={ false }\n { ...btnProps }\n { ...attrs }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n onGroup:selected={ updateSlider }\n >\n {{\n ...slots,\n default: () => (\n <>\n { slots.default?.() ?? props.text }\n\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n )}\n </>\n ),\n }}\n </VBtn>\n )\n })\n\n return forwardRefs({}, rootEl)\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VTab.js","names":["makeVBtnProps","VBtn","useBackgroundColor","useTextColor","forwardRefs","computed","ref","VTabsSymbol","animate","genericComponent","omit","propsFactory","standardEasing","useRender","makeVTabProps","fixed","Boolean","sliderColor","String","sliderTransition","sliderTransitionDuration","Number","hideSlider","inset","direction","type","default","selectedClass","variant","VTab","name","props","setup","_ref","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","backgroundColorClasses","insetColorClasses","backgroundColorStyles","insetColorStyles","rootEl","sliderEl","isHorizontal","isSelected","value","group","fade","nextEl","prevEl","opacity","grow","transform","shift","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","transformOrigin","Array","fill","updateSlider","_ref2","$el","parentElement","querySelector","color","getComputedStyle","backgroundColor","keyframes","duration","easing","btnProps","filterProps","_createVNode","_mergeProps","class","style","undefined","_createElementVNode","_Fragment","text","_normalizeClass","_normalizeStyle"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { VTabsSymbol } from './shared'\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n\n sliderColor: String,\n sliderTransition: String as PropType<'shift' | 'grow' | 'fade'>,\n sliderTransitionDuration: [String, Number],\n hideSlider: Boolean,\n inset: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text' as const,\n }), [\n 'active',\n 'block',\n 'flat',\n 'location',\n 'position',\n 'symbol',\n ]),\n}, 'VTab')\n\nexport const VTab = genericComponent<VBtnSlots>()({\n name: 'VTab',\n\n props: makeVTabProps(),\n\n setup (props, { slots, attrs }) {\n const {\n textColorClasses: sliderColorClasses,\n textColorStyles: sliderColorStyles,\n } = useTextColor(() => props.sliderColor)\n const {\n backgroundColorClasses: insetColorClasses,\n backgroundColorStyles: insetColorStyles,\n } = useBackgroundColor(() => props.sliderColor)\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false)\n\n function fade (nextEl: HTMLElement, prevEl: HTMLElement) {\n return { opacity: [0, 1] }\n }\n\n function grow (nextEl: HTMLElement, prevEl: HTMLElement) {\n return props.direction === 'vertical'\n ? { transform: ['scaleY(0)', 'scaleY(1)'] }\n : { transform: ['scaleX(0)', 'scaleX(1)'] }\n }\n\n function shift (nextEl: HTMLElement, prevEl: HTMLElement) {\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0\n const sigma = 1.5\n\n return {\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n 'none',\n ],\n transformOrigin: Array(3).fill(origin),\n }\n }\n\n function updateSlider ({ value }: { value: boolean }) {\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).backgroundColor\n\n const keyframes = { fade, grow, shift }[props.sliderTransition ?? 'shift'] ?? shift\n const duration = Number(props.sliderTransitionDuration) ||\n ({ fade: 400, grow: 350, shift: 225 }[props.sliderTransition ?? 'shift'] ?? 225)\n\n animate(nextEl, {\n backgroundColor: [color, color],\n ...keyframes(nextEl, prevEl),\n }, {\n duration,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const btnProps = VBtn.filterProps(props)\n\n return (\n <VBtn\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n props.class,\n isSelected.value && props.inset ? insetColorClasses.value : [],\n ]}\n style={[\n props.style,\n isSelected.value && props.inset ? insetColorStyles.value : [],\n { backgroundColor: isSelected.value && props.inset ? 'transparent !important' : undefined },\n ]}\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n active={ false }\n { ...btnProps }\n { ...attrs }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n onGroup:selected={ updateSlider }\n >\n {{\n ...slots,\n default: () => (\n <>\n { slots.default?.() ?? props.text }\n\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n props.inset ? insetColorClasses.value : sliderColorClasses.value,\n ]}\n style={[\n sliderColorStyles.value,\n props.inset ? insetColorStyles.value : sliderColorClasses.value,\n ]}\n />\n )}\n </>\n ),\n }}\n </VBtn>\n )\n })\n\n return forwardRefs({}, rootEl)\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
.v-tabs--inset {
|
|
61
61
|
--v-tabs-inset-radius: 4px;
|
|
62
62
|
--v-tabs-inset-padding: 4px;
|
|
63
|
+
--v-tabs-slider-background: rgba(var(--v-theme-on-surface), .2);
|
|
63
64
|
background: rgba(var(--v-theme-on-surface), 0.06);
|
|
64
65
|
box-shadow: inset 0 0 0 2px rgba(var(--v-border-color), var(--v-border-opacity));
|
|
65
66
|
border-radius: calc(var(--v-tabs-inset-radius) + var(--v-tabs-inset-padding));
|
|
@@ -85,6 +86,7 @@
|
|
|
85
86
|
padding-inline: var(--v-tabs-inset-padding);
|
|
86
87
|
}
|
|
87
88
|
.v-tabs--inset .v-tab__slider {
|
|
89
|
+
background: var(--v-tabs-slider-background);
|
|
88
90
|
inset: 0;
|
|
89
91
|
border-radius: var(--v-tabs-inset-radius);
|
|
90
92
|
z-index: -1;
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
.v-tabs--inset
|
|
51
51
|
--v-tabs-inset-radius: #{$tab-inset-radius}
|
|
52
52
|
--v-tabs-inset-padding: #{$tab-inset-padding}
|
|
53
|
+
--v-tabs-slider-background: rgba(var(--v-theme-on-surface), .2)
|
|
53
54
|
|
|
54
55
|
background: rgba(var(--v-theme-on-surface), 0.06)
|
|
55
56
|
box-shadow: inset 0 0 0 2px rgba(var(--v-border-color), var(--v-border-opacity))
|
|
@@ -76,6 +77,7 @@
|
|
|
76
77
|
padding-inline: var(--v-tabs-inset-padding)
|
|
77
78
|
|
|
78
79
|
.v-tab__slider
|
|
80
|
+
background: var(--v-tabs-slider-background)
|
|
79
81
|
inset: 0
|
|
80
82
|
border-radius: var(--v-tabs-inset-radius)
|
|
81
83
|
z-index: -1
|
package/lib/entry-bundler.js
CHANGED
|
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
|
16
16
|
...options
|
|
17
17
|
});
|
|
18
18
|
};
|
|
19
|
-
export const version = "3.11.8-dev.2026-02-
|
|
19
|
+
export const version = "3.11.8-dev.2026-02-12";
|
|
20
20
|
createVuetify.version = version;
|
|
21
21
|
export { blueprints, components, directives };
|
|
22
22
|
export * from "./composables/index.js";
|