gitea push

This commit is contained in:
2026-05-09 12:19:29 -06:00
parent 06113c95b8
commit 429461e985
1481 changed files with 74306 additions and 52475 deletions
+1 -4
View File
@@ -68,9 +68,6 @@
.v-alert--prominent {
grid-template-areas: "prepend content append close" "prepend content . .";
}
.v-alert.v-alert--border {
--v-border-opacity: 0.38;
}
.v-alert.v-alert--border.v-alert--border-start {
padding-inline-start: 24px;
}
@@ -117,7 +114,7 @@
border-radius: inherit;
bottom: 0;
left: 0;
opacity: var(--v-border-opacity);
opacity: 0.38;
position: absolute;
pointer-events: none;
right: 0;
+1 -3
View File
@@ -21,8 +21,6 @@
grid-template-areas: "prepend content append close" "prepend content . ."
&.v-alert--border
--v-border-opacity: #{$alert-border-opacity}
&.v-alert--border-start
padding-inline-start: $alert-padding + $alert-border-thin-width
@@ -51,7 +49,7 @@
border-radius: inherit
bottom: 0
left: 0
opacity: var(--v-border-opacity)
opacity: $alert-border-opacity
position: absolute
pointer-events: none
right: 0
@@ -382,7 +382,6 @@ export const VAutocomplete = genericComponent()({
"modelValue": menu.value,
"onUpdate:modelValue": $event => menu.value = $event,
"activator": "parent",
"contentClass": "v-autocomplete__content",
"disabled": menuDisabled.value,
"eager": props.eager,
"maxHeight": 310,
@@ -390,7 +389,9 @@ export const VAutocomplete = genericComponent()({
"closeOnContentClick": false,
"onAfterEnter": onAfterEnter,
"onAfterLeave": onAfterLeave
}, props.menuProps), {
}, props.menuProps, {
"contentClass": ['v-autocomplete__content', props.menuProps?.contentClass]
}), {
default: () => [_createVNode(VSheet, {
"elevation": props.menuElevation,
"onFocusin": onFocusin,
File diff suppressed because one or more lines are too long
@@ -16,6 +16,9 @@
.v-btn-toggle > .v-btn.v-btn--active:not(.v-btn--disabled).v-btn--variant-plain {
opacity: 1;
}
.v-btn-toggle > .v-btn.v-btn--active:not(.v-btn--disabled).v-btn--variant-elevated > .v-btn__overlay, .v-btn-toggle > .v-btn.v-btn--active:not(.v-btn--disabled).v-btn--variant-flat > .v-btn__overlay {
opacity: 0;
}
}
@layer vuetify-final.trumps {
@media (forced-colors: active) {
@@ -9,6 +9,11 @@
&.v-btn--variant-plain
opacity: 1
&.v-btn--variant-elevated,
&.v-btn--variant-flat
> .v-btn__overlay
opacity: 0
@include tools.layer('trumps')
@media (forced-colors: active)
.v-btn-toggle
+3 -2
View File
@@ -443,7 +443,6 @@ export const VCombobox = genericComponent()({
"modelValue": menu.value,
"onUpdate:modelValue": $event => menu.value = $event,
"activator": "parent",
"contentClass": "v-combobox__content",
"disabled": menuDisabled.value,
"eager": props.eager,
"maxHeight": 310,
@@ -451,7 +450,9 @@ export const VCombobox = genericComponent()({
"closeOnContentClick": false,
"onAfterEnter": onAfterEnter,
"onAfterLeave": onAfterLeave
}, props.menuProps), {
}, props.menuProps, {
"contentClass": ['v-combobox__content', props.menuProps?.contentClass]
}), {
default: () => [_createVNode(VSheet, {
"elevation": props.menuElevation,
"onFocusin": onFocusin,
File diff suppressed because one or more lines are too long
-1
View File
@@ -8,7 +8,6 @@
letter-spacing: 0.009375em;
max-width: 100%;
border-radius: 4px;
contain: layout;
flex: 1 0;
grid-area: control;
position: relative;
-1
View File
@@ -15,7 +15,6 @@
letter-spacing: $field-letter-spacing
max-width: $field-max-width
border-radius: $field-border-radius
contain: layout
flex: 1 0
grid-area: control
position: relative
+3 -3
View File
@@ -485,7 +485,7 @@ export declare const VList: {
}, {
open: (id: unknown, value: boolean, event?: Event) => void;
select: (id: unknown, value: boolean, event?: Event) => void;
focus: (location?: 'next' | 'prev' | 'first' | 'last' | number) => void;
focus: (location?: 'next' | 'prev' | 'first' | 'last' | number | null, options?: FocusOptions) => void;
children: import("vue").Ref<Map<unknown, unknown[]>, Map<unknown, unknown[]>>;
parents: import("vue").Ref<Map<unknown, unknown>, Map<unknown, unknown>>;
getPath: (id: unknown) => unknown[];
@@ -640,7 +640,7 @@ export declare const VList: {
}, {
open: (id: unknown, value: boolean, event?: Event) => void;
select: (id: unknown, value: boolean, event?: Event) => void;
focus: (location?: 'next' | 'prev' | 'first' | 'last' | number) => void;
focus: (location?: 'next' | 'prev' | 'first' | 'last' | number | null, options?: FocusOptions) => void;
children: import("vue").Ref<Map<unknown, unknown[]>, Map<unknown, unknown[]>>;
parents: import("vue").Ref<Map<unknown, unknown>, Map<unknown, unknown>>;
getPath: (id: unknown) => unknown[];
@@ -726,7 +726,7 @@ export declare const VList: {
}, {
open: (id: unknown, value: boolean, event?: Event) => void;
select: (id: unknown, value: boolean, event?: Event) => void;
focus: (location?: 'next' | 'prev' | 'first' | 'last' | number) => void;
focus: (location?: 'next' | 'prev' | 'first' | 'last' | number | null, options?: FocusOptions) => void;
children: import("vue").Ref<Map<unknown, unknown[]>, Map<unknown, unknown[]>>;
parents: import("vue").Ref<Map<unknown, unknown>, Map<unknown, unknown>>;
getPath: (id: unknown) => unknown[];
+4 -3
View File
@@ -153,7 +153,8 @@ export const VList = genericComponent()({
} = useNested(props, {
items,
returnObject: toRef(() => props.returnObject),
scrollToActive: toRef(() => props.navigationStrategy === 'track')
scrollToActive: toRef(() => props.navigationStrategy === 'track'),
valueComparator: toRef(() => props.valueComparator)
});
const lineClasses = toRef(() => props.lines ? `v-list--${props.lines}-line` : undefined);
const activeColor = toRef(() => props.activeColor);
@@ -278,9 +279,9 @@ export const VList = genericComponent()({
function onMousedown(e) {
isFocused.value = true;
}
function focus(location) {
function focus(location, options) {
if (contentRef.value) {
return focusChild(contentRef.value, location);
return focusChild(contentRef.value, location, options);
}
}
useRender(() => {
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -1,7 +1,7 @@
import type { MaybeRefOrGetter } from 'vue';
export interface ChunksProps {
chunkCount: number | string;
chunkWidth: number | string;
chunkCount: number | string | null;
chunkWidth: number | string | null;
chunkGap: number | string;
}
export declare const makeChunksProps: <Defaults extends {
+4 -2
View File
@@ -50,8 +50,10 @@ export function useChunks(props, containerWidth) {
}
const gapRelativeSize = 100 * chunkGap.value / containerSize;
const chunkRelativeSize = 100 * (chunkWidth.value + chunkGap.value) / containerSize;
const filledChunks = Math.floor((val + gapRelativeSize) / chunkRelativeSize);
return clamp(0, filledChunks * chunkRelativeSize - gapRelativeSize / 2, 100);
// low-effort workaround to floating-point rounding in the division
const filledChunks = Math.floor((val + gapRelativeSize) / chunkRelativeSize + 1e-9);
return clamp(filledChunks * chunkRelativeSize - gapRelativeSize / 2, 0, 100);
}
return {
hasChunks,
@@ -1 +1 @@
{"version":3,"file":"chunks.js","names":["computed","toRef","toValue","clamp","convertToUnit","propsFactory","makeChunksProps","chunkCount","type","Number","String","default","chunkWidth","chunkGap","useChunks","props","containerWidth","hasChunks","containerSize","count","availableWidth","chunksMaskStyles","value","chunkGapPx","chunkWidthPx","maskRepeat","maskImage","maskSize","snapValueToChunk","val","gapRelativeSize","chunkRelativeSize","filledChunks","Math","floor"],"sources":["../../../src/components/VProgressLinear/chunks.ts"],"sourcesContent":["// Utilities\nimport { computed, toRef, toValue } from 'vue'\nimport { clamp, convertToUnit, propsFactory } from '@/util'\n\n// Types\nimport type { MaybeRefOrGetter } from 'vue'\n\nexport interface ChunksProps {\n chunkCount: number | string\n chunkWidth: number | string\n chunkGap: number | string\n}\n\n// Composables\nexport const makeChunksProps = propsFactory({\n chunkCount: {\n type: [Number, String],\n default: null,\n },\n chunkWidth: {\n type: [Number, String],\n default: null,\n },\n chunkGap: {\n type: [Number, String],\n default: 4,\n },\n}, 'chunks')\n\nexport function useChunks (\n props: ChunksProps,\n containerWidth: MaybeRefOrGetter<number | undefined>,\n) {\n const hasChunks = toRef(() => !!props.chunkCount || !!props.chunkWidth)\n\n const chunkWidth = computed(() => {\n const containerSize = toValue(containerWidth)\n if (!containerSize) {\n return 0\n }\n\n if (!props.chunkCount) {\n return Number(props.chunkWidth)\n }\n\n const count = Number(props.chunkCount)\n const availableWidth = containerSize - Number(props.chunkGap) * (count - 1)\n return availableWidth / count\n })\n\n const chunkGap = toRef(() => Number(props.chunkGap))\n const chunksMaskStyles = computed(() => {\n if (!hasChunks.value) {\n return {}\n }\n\n const chunkGapPx = convertToUnit(chunkGap.value)\n const chunkWidthPx = convertToUnit(chunkWidth.value)\n\n return {\n maskRepeat: 'repeat-x',\n maskImage: `linear-gradient(90deg, #000, #000 ${chunkWidthPx}, transparent ${chunkWidthPx}, transparent)`,\n maskSize: `calc(${chunkWidthPx} + ${chunkGapPx}) 100%`,\n }\n })\n\n function snapValueToChunk (val: number) {\n const containerSize = toValue(containerWidth)\n if (!containerSize) {\n return val\n }\n\n const gapRelativeSize = 100 * chunkGap.value / containerSize\n const chunkRelativeSize = 100 * (chunkWidth.value + chunkGap.value) / containerSize\n const filledChunks = Math.floor((val + gapRelativeSize) / chunkRelativeSize)\n return clamp(0, filledChunks * chunkRelativeSize - gapRelativeSize / 2, 100)\n }\n\n return {\n hasChunks,\n chunksMaskStyles,\n snapValueToChunk,\n }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,KAAK,EAAEC,OAAO,QAAQ,KAAK;AAAA,SACrCC,KAAK,EAAEC,aAAa,EAAEC,YAAY,+BAE3C;AASA;AACA,OAAO,MAAMC,eAAe,GAAGD,YAAY,CAAC;EAC1CE,UAAU,EAAE;IACVC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX,CAAC;EACDC,UAAU,EAAE;IACVJ,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX,CAAC;EACDE,QAAQ,EAAE;IACRL,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX;AACF,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,SAASG,SAASA,CACvBC,KAAkB,EAClBC,cAAoD,EACpD;EACA,MAAMC,SAAS,GAAGhB,KAAK,CAAC,MAAM,CAAC,CAACc,KAAK,CAACR,UAAU,IAAI,CAAC,CAACQ,KAAK,CAACH,UAAU,CAAC;EAEvE,MAAMA,UAAU,GAAGZ,QAAQ,CAAC,MAAM;IAChC,MAAMkB,aAAa,GAAGhB,OAAO,CAACc,cAAc,CAAC;IAC7C,IAAI,CAACE,aAAa,EAAE;MAClB,OAAO,CAAC;IACV;IAEA,IAAI,CAACH,KAAK,CAACR,UAAU,EAAE;MACrB,OAAOE,MAAM,CAACM,KAAK,CAACH,UAAU,CAAC;IACjC;IAEA,MAAMO,KAAK,GAAGV,MAAM,CAACM,KAAK,CAACR,UAAU,CAAC;IACtC,MAAMa,cAAc,GAAGF,aAAa,GAAGT,MAAM,CAACM,KAAK,CAACF,QAAQ,CAAC,IAAIM,KAAK,GAAG,CAAC,CAAC;IAC3E,OAAOC,cAAc,GAAGD,KAAK;EAC/B,CAAC,CAAC;EAEF,MAAMN,QAAQ,GAAGZ,KAAK,CAAC,MAAMQ,MAAM,CAACM,KAAK,CAACF,QAAQ,CAAC,CAAC;EACpD,MAAMQ,gBAAgB,GAAGrB,QAAQ,CAAC,MAAM;IACtC,IAAI,CAACiB,SAAS,CAACK,KAAK,EAAE;MACpB,OAAO,CAAC,CAAC;IACX;IAEA,MAAMC,UAAU,GAAGnB,aAAa,CAACS,QAAQ,CAACS,KAAK,CAAC;IAChD,MAAME,YAAY,GAAGpB,aAAa,CAACQ,UAAU,CAACU,KAAK,CAAC;IAEpD,OAAO;MACLG,UAAU,EAAE,UAAU;MACtBC,SAAS,EAAE,qCAAqCF,YAAY,iBAAiBA,YAAY,gBAAgB;MACzGG,QAAQ,EAAE,QAAQH,YAAY,MAAMD,UAAU;IAChD,CAAC;EACH,CAAC,CAAC;EAEF,SAASK,gBAAgBA,CAAEC,GAAW,EAAE;IACtC,MAAMX,aAAa,GAAGhB,OAAO,CAACc,cAAc,CAAC;IAC7C,IAAI,CAACE,aAAa,EAAE;MAClB,OAAOW,GAAG;IACZ;IAEA,MAAMC,eAAe,GAAG,GAAG,GAAGjB,QAAQ,CAACS,KAAK,GAAGJ,aAAa;IAC5D,MAAMa,iBAAiB,GAAG,GAAG,IAAInB,UAAU,CAACU,KAAK,GAAGT,QAAQ,CAACS,KAAK,CAAC,GAAGJ,aAAa;IACnF,MAAMc,YAAY,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACL,GAAG,GAAGC,eAAe,IAAIC,iBAAiB,CAAC;IAC5E,OAAO5B,KAAK,CAAC,CAAC,EAAE6B,YAAY,GAAGD,iBAAiB,GAAGD,eAAe,GAAG,CAAC,EAAE,GAAG,CAAC;EAC9E;EAEA,OAAO;IACLb,SAAS;IACTI,gBAAgB;IAChBO;EACF,CAAC;AACH","ignoreList":[]}
{"version":3,"file":"chunks.js","names":["computed","toRef","toValue","clamp","convertToUnit","propsFactory","makeChunksProps","chunkCount","type","Number","String","default","chunkWidth","chunkGap","useChunks","props","containerWidth","hasChunks","containerSize","count","availableWidth","chunksMaskStyles","value","chunkGapPx","chunkWidthPx","maskRepeat","maskImage","maskSize","snapValueToChunk","val","gapRelativeSize","chunkRelativeSize","filledChunks","Math","floor"],"sources":["../../../src/components/VProgressLinear/chunks.ts"],"sourcesContent":["// Utilities\nimport { computed, toRef, toValue } from 'vue'\nimport { clamp, convertToUnit, propsFactory } from '@/util'\n\n// Types\nimport type { MaybeRefOrGetter } from 'vue'\n\nexport interface ChunksProps {\n chunkCount: number | string | null\n chunkWidth: number | string | null\n chunkGap: number | string\n}\n\n// Composables\nexport const makeChunksProps = propsFactory({\n chunkCount: {\n type: [Number, String],\n default: null,\n },\n chunkWidth: {\n type: [Number, String],\n default: null,\n },\n chunkGap: {\n type: [Number, String],\n default: 4,\n },\n}, 'chunks')\n\nexport function useChunks (\n props: ChunksProps,\n containerWidth: MaybeRefOrGetter<number | undefined>,\n) {\n const hasChunks = toRef(() => !!props.chunkCount || !!props.chunkWidth)\n\n const chunkWidth = computed(() => {\n const containerSize = toValue(containerWidth)\n if (!containerSize) {\n return 0\n }\n\n if (!props.chunkCount) {\n return Number(props.chunkWidth)\n }\n\n const count = Number(props.chunkCount)\n const availableWidth = containerSize - Number(props.chunkGap) * (count - 1)\n return availableWidth / count\n })\n\n const chunkGap = toRef(() => Number(props.chunkGap))\n const chunksMaskStyles = computed(() => {\n if (!hasChunks.value) {\n return {}\n }\n\n const chunkGapPx = convertToUnit(chunkGap.value)\n const chunkWidthPx = convertToUnit(chunkWidth.value)\n\n return {\n maskRepeat: 'repeat-x',\n maskImage: `linear-gradient(90deg, #000, #000 ${chunkWidthPx}, transparent ${chunkWidthPx}, transparent)`,\n maskSize: `calc(${chunkWidthPx} + ${chunkGapPx}) 100%`,\n }\n })\n\n function snapValueToChunk (val: number) {\n const containerSize = toValue(containerWidth)\n if (!containerSize) {\n return val\n }\n\n const gapRelativeSize = 100 * chunkGap.value / containerSize\n const chunkRelativeSize = 100 * (chunkWidth.value + chunkGap.value) / containerSize\n\n // low-effort workaround to floating-point rounding in the division\n const filledChunks = Math.floor((val + gapRelativeSize) / chunkRelativeSize + 1e-9)\n\n return clamp(filledChunks * chunkRelativeSize - gapRelativeSize / 2, 0, 100)\n }\n\n return {\n hasChunks,\n chunksMaskStyles,\n snapValueToChunk,\n }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,KAAK,EAAEC,OAAO,QAAQ,KAAK;AAAA,SACrCC,KAAK,EAAEC,aAAa,EAAEC,YAAY,+BAE3C;AASA;AACA,OAAO,MAAMC,eAAe,GAAGD,YAAY,CAAC;EAC1CE,UAAU,EAAE;IACVC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX,CAAC;EACDC,UAAU,EAAE;IACVJ,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX,CAAC;EACDE,QAAQ,EAAE;IACRL,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX;AACF,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,SAASG,SAASA,CACvBC,KAAkB,EAClBC,cAAoD,EACpD;EACA,MAAMC,SAAS,GAAGhB,KAAK,CAAC,MAAM,CAAC,CAACc,KAAK,CAACR,UAAU,IAAI,CAAC,CAACQ,KAAK,CAACH,UAAU,CAAC;EAEvE,MAAMA,UAAU,GAAGZ,QAAQ,CAAC,MAAM;IAChC,MAAMkB,aAAa,GAAGhB,OAAO,CAACc,cAAc,CAAC;IAC7C,IAAI,CAACE,aAAa,EAAE;MAClB,OAAO,CAAC;IACV;IAEA,IAAI,CAACH,KAAK,CAACR,UAAU,EAAE;MACrB,OAAOE,MAAM,CAACM,KAAK,CAACH,UAAU,CAAC;IACjC;IAEA,MAAMO,KAAK,GAAGV,MAAM,CAACM,KAAK,CAACR,UAAU,CAAC;IACtC,MAAMa,cAAc,GAAGF,aAAa,GAAGT,MAAM,CAACM,KAAK,CAACF,QAAQ,CAAC,IAAIM,KAAK,GAAG,CAAC,CAAC;IAC3E,OAAOC,cAAc,GAAGD,KAAK;EAC/B,CAAC,CAAC;EAEF,MAAMN,QAAQ,GAAGZ,KAAK,CAAC,MAAMQ,MAAM,CAACM,KAAK,CAACF,QAAQ,CAAC,CAAC;EACpD,MAAMQ,gBAAgB,GAAGrB,QAAQ,CAAC,MAAM;IACtC,IAAI,CAACiB,SAAS,CAACK,KAAK,EAAE;MACpB,OAAO,CAAC,CAAC;IACX;IAEA,MAAMC,UAAU,GAAGnB,aAAa,CAACS,QAAQ,CAACS,KAAK,CAAC;IAChD,MAAME,YAAY,GAAGpB,aAAa,CAACQ,UAAU,CAACU,KAAK,CAAC;IAEpD,OAAO;MACLG,UAAU,EAAE,UAAU;MACtBC,SAAS,EAAE,qCAAqCF,YAAY,iBAAiBA,YAAY,gBAAgB;MACzGG,QAAQ,EAAE,QAAQH,YAAY,MAAMD,UAAU;IAChD,CAAC;EACH,CAAC,CAAC;EAEF,SAASK,gBAAgBA,CAAEC,GAAW,EAAE;IACtC,MAAMX,aAAa,GAAGhB,OAAO,CAACc,cAAc,CAAC;IAC7C,IAAI,CAACE,aAAa,EAAE;MAClB,OAAOW,GAAG;IACZ;IAEA,MAAMC,eAAe,GAAG,GAAG,GAAGjB,QAAQ,CAACS,KAAK,GAAGJ,aAAa;IAC5D,MAAMa,iBAAiB,GAAG,GAAG,IAAInB,UAAU,CAACU,KAAK,GAAGT,QAAQ,CAACS,KAAK,CAAC,GAAGJ,aAAa;;IAEnF;IACA,MAAMc,YAAY,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACL,GAAG,GAAGC,eAAe,IAAIC,iBAAiB,GAAG,IAAI,CAAC;IAEnF,OAAO5B,KAAK,CAAC6B,YAAY,GAAGD,iBAAiB,GAAGD,eAAe,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EAC9E;EAEA,OAAO;IACLb,SAAS;IACTI,gBAAgB;IAChBO;EACF,CAAC;AACH","ignoreList":[]}
+6 -3
View File
@@ -315,7 +315,9 @@ export const VSelect = genericComponent()({
}
if (listRef.value && isFocused.value) {
const index = getSelectedFocusableIndex();
listRef.value.focus(index >= 0 ? index : 'first');
listRef.value.focus(index >= 0 ? index : 'first', {
focusVisible: false
});
}
}
function onAfterLeave() {
@@ -411,7 +413,6 @@ export const VSelect = genericComponent()({
"modelValue": menu.value,
"onUpdate:modelValue": $event => menu.value = $event,
"activator": "parent",
"contentClass": "v-select__content",
"disabled": menuDisabled.value,
"eager": props.eager,
"maxHeight": 310,
@@ -420,7 +421,9 @@ export const VSelect = genericComponent()({
"transition": props.transition,
"onAfterEnter": onAfterEnter,
"onAfterLeave": onAfterLeave
}, computedMenuProps.value), {
}, computedMenuProps.value, {
"contentClass": ['v-select__content', computedMenuProps.value.contentClass]
}), {
default: () => [_createVNode(VSheet, {
"elevation": props.menuElevation,
"onFocusin": onFocusin,
File diff suppressed because one or more lines are too long
+3 -2
View File
@@ -3,7 +3,7 @@ import type { ActiveStrategy } from './activeStrategies.js';
import type { OpenStrategy } from './openStrategies.js';
import type { SelectStrategy } from './selectStrategies.js';
import type { ListItem } from '../list-items.js';
import type { EventProp } from '../../util/index.js';
import type { EventProp, ValueComparator } from '../../util/index.js';
export type ActiveStrategyProp = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | ActiveStrategy | ((mandatory: boolean) => ActiveStrategy);
export type SelectStrategyProp = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | 'classic' | 'trunk' | 'branch' | SelectStrategy | ((mandatory: boolean) => SelectStrategy);
export type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy;
@@ -109,10 +109,11 @@ export declare const makeNestedProps: <Defaults extends {
default: unknown extends Defaults["itemsRegistration"] ? ItemsRegistrationType : Defaults["itemsRegistration"] | NonNullable<ItemsRegistrationType>;
};
};
export declare const useNested: (props: NestedProps, { items, returnObject, scrollToActive, }: {
export declare const useNested: (props: NestedProps, { items, returnObject, scrollToActive, valueComparator, }: {
items: Ref<ListItem[]>;
returnObject: MaybeRefOrGetter<boolean>;
scrollToActive: MaybeRefOrGetter<boolean>;
valueComparator?: MaybeRefOrGetter<ValueComparator | undefined>;
}) => {
children: Ref<Map<unknown, unknown[]>>;
parents: Ref<Map<unknown, unknown>>;
+24 -3
View File
@@ -48,7 +48,8 @@ export const makeNestedProps = propsFactory({
export const useNested = (props, {
items,
returnObject,
scrollToActive
scrollToActive,
valueComparator
}) => {
let isUnmounted = false;
const children = shallowRef(new Map());
@@ -103,8 +104,28 @@ export const useNested = (props, {
return multipleOpenStrategy;
}
});
const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));
const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value, disabled.value), v => selectStrategy.value.out(v, children.value, parents.value));
const flatItems = computed(() => {
const flat = [];
const stack = [...items.value];
while (stack.length) {
const item = stack.pop();
flat.push(item);
if (item.children) stack.push(...item.children);
}
return flat;
});
function resolveValue(value) {
const comparator = toValue(valueComparator);
if (!comparator) return value;
const _returnObject = toValue(returnObject);
for (const item of flatItems.value) {
const itemVal = _returnObject ? toRaw(item.raw) : item.value;
if (comparator(value, itemVal)) return itemVal;
}
return value;
}
const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(Array.isArray(v) ? v.map(resolveValue) : v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));
const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(Array.isArray(v) ? v.map(resolveValue) : v, children.value, parents.value, disabled.value), v => selectStrategy.value.out(v, children.value, parents.value));
onBeforeUnmount(() => {
isUnmounted = true;
});
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -15,7 +15,7 @@ export const createVuetify = (options = {}) => {
...options
});
};
export const version = "4.0.6";
export const version = "4.0.7";
createVuetify.version = version;
export { blueprints, components, directives };
export * from "./composables/index.js";
+74 -74
View File
@@ -2899,48 +2899,42 @@ declare module 'vue' {
$children?: VNodeChild
}
export interface GlobalComponents {
VAlert: typeof import('vuetify/components')['VAlert']
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
VAvatar: typeof import('vuetify/components')['VAvatar']
VAppBar: typeof import('vuetify/components')['VAppBar']
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
VAlert: typeof import('vuetify/components')['VAlert']
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
VApp: typeof import('vuetify/components')['VApp']
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
VBadge: typeof import('vuetify/components')['VBadge']
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
VBanner: typeof import('vuetify/components')['VBanner']
VBannerActions: typeof import('vuetify/components')['VBannerActions']
VBannerText: typeof import('vuetify/components')['VBannerText']
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
VBadge: typeof import('vuetify/components')['VBadge']
VApp: typeof import('vuetify/components')['VApp']
VBtn: typeof import('vuetify/components')['VBtn']
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
VCalendar: typeof import('vuetify/components')['VCalendar']
VCheckbox: typeof import('vuetify/components')['VCheckbox']
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
VCarousel: typeof import('vuetify/components')['VCarousel']
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
VCard: typeof import('vuetify/components')['VCard']
VCardActions: typeof import('vuetify/components')['VCardActions']
VCardItem: typeof import('vuetify/components')['VCardItem']
VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
VCardText: typeof import('vuetify/components')['VCardText']
VCardTitle: typeof import('vuetify/components')['VCardTitle']
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
VCarousel: typeof import('vuetify/components')['VCarousel']
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
VBtn: typeof import('vuetify/components')['VBtn']
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
VAvatar: typeof import('vuetify/components')['VAvatar']
VChip: typeof import('vuetify/components')['VChip']
VCalendar: typeof import('vuetify/components')['VCalendar']
VCode: typeof import('vuetify/components')['VCode']
VChipGroup: typeof import('vuetify/components')['VChipGroup']
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
VCombobox: typeof import('vuetify/components')['VCombobox']
VCounter: typeof import('vuetify/components')['VCounter']
VChip: typeof import('vuetify/components')['VChip']
VDatePicker: typeof import('vuetify/components')['VDatePicker']
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
VColorPicker: typeof import('vuetify/components')['VColorPicker']
VCheckbox: typeof import('vuetify/components')['VCheckbox']
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
VDataTable: typeof import('vuetify/components')['VDataTable']
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2950,33 +2944,36 @@ declare module 'vue' {
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
VDialog: typeof import('vuetify/components')['VDialog']
VDivider: typeof import('vuetify/components')['VDivider']
VFab: typeof import('vuetify/components')['VFab']
VColorPicker: typeof import('vuetify/components')['VColorPicker']
VEmptyState: typeof import('vuetify/components')['VEmptyState']
VField: typeof import('vuetify/components')['VField']
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
VFooter: typeof import('vuetify/components')['VFooter']
VCounter: typeof import('vuetify/components')['VCounter']
VDatePicker: typeof import('vuetify/components')['VDatePicker']
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
VFab: typeof import('vuetify/components')['VFab']
VField: typeof import('vuetify/components')['VField']
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
VEmptyState: typeof import('vuetify/components')['VEmptyState']
VFileInput: typeof import('vuetify/components')['VFileInput']
VHotkey: typeof import('vuetify/components')['VHotkey']
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
VInput: typeof import('vuetify/components')['VInput']
VFooter: typeof import('vuetify/components')['VFooter']
VImg: typeof import('vuetify/components')['VImg']
VIcon: typeof import('vuetify/components')['VIcon']
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
VClassIcon: typeof import('vuetify/components')['VClassIcon']
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
VInput: typeof import('vuetify/components')['VInput']
VKbd: typeof import('vuetify/components')['VKbd']
VImg: typeof import('vuetify/components')['VImg']
VLabel: typeof import('vuetify/components')['VLabel']
VMain: typeof import('vuetify/components')['VMain']
VItemGroup: typeof import('vuetify/components')['VItemGroup']
VItem: typeof import('vuetify/components')['VItem']
VMenu: typeof import('vuetify/components')['VMenu']
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
VMain: typeof import('vuetify/components')['VMain']
VList: typeof import('vuetify/components')['VList']
VListGroup: typeof import('vuetify/components')['VListGroup']
VListImg: typeof import('vuetify/components')['VListImg']
@@ -2986,27 +2983,24 @@ declare module 'vue' {
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
VListSubheader: typeof import('vuetify/components')['VListSubheader']
VMessages: typeof import('vuetify/components')['VMessages']
VMenu: typeof import('vuetify/components')['VMenu']
VOtpInput: typeof import('vuetify/components')['VOtpInput']
VNumberInput: typeof import('vuetify/components')['VNumberInput']
VOverlay: typeof import('vuetify/components')['VOverlay']
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
VMessages: typeof import('vuetify/components')['VMessages']
VPagination: typeof import('vuetify/components')['VPagination']
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
VRating: typeof import('vuetify/components')['VRating']
VSheet: typeof import('vuetify/components')['VSheet']
VSelect: typeof import('vuetify/components')['VSelect']
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
VSnackbar: typeof import('vuetify/components')['VSnackbar']
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
VTab: typeof import('vuetify/components')['VTab']
VTabs: typeof import('vuetify/components')['VTabs']
VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
VNumberInput: typeof import('vuetify/components')['VNumberInput']
VSheet: typeof import('vuetify/components')['VSheet']
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
VSlider: typeof import('vuetify/components')['VSlider']
VSnackbar: typeof import('vuetify/components')['VSnackbar']
VStepper: typeof import('vuetify/components')['VStepper']
VStepperActions: typeof import('vuetify/components')['VStepperActions']
VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
@@ -3014,47 +3008,52 @@ declare module 'vue' {
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
VSwitch: typeof import('vuetify/components')['VSwitch']
VSlider: typeof import('vuetify/components')['VSlider']
VTable: typeof import('vuetify/components')['VTable']
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
VSystemBar: typeof import('vuetify/components')['VSystemBar']
VTextField: typeof import('vuetify/components')['VTextField']
VTable: typeof import('vuetify/components')['VTable']
VTextarea: typeof import('vuetify/components')['VTextarea']
VToolbar: typeof import('vuetify/components')['VToolbar']
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
VLabel: typeof import('vuetify/components')['VLabel']
VTimeline: typeof import('vuetify/components')['VTimeline']
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
VTextField: typeof import('vuetify/components')['VTextField']
VTab: typeof import('vuetify/components')['VTab']
VTabs: typeof import('vuetify/components')['VTabs']
VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
VTooltip: typeof import('vuetify/components')['VTooltip']
VTreeview: typeof import('vuetify/components')['VTreeview']
VTreeviewItem: typeof import('vuetify/components')['VTreeviewItem']
VTreeviewGroup: typeof import('vuetify/components')['VTreeviewGroup']
VTimeline: typeof import('vuetify/components')['VTimeline']
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
VTimePicker: typeof import('vuetify/components')['VTimePicker']
VTimePickerClock: typeof import('vuetify/components')['VTimePickerClock']
VTimePickerControls: typeof import('vuetify/components')['VTimePickerControls']
VTooltip: typeof import('vuetify/components')['VTooltip']
VWindow: typeof import('vuetify/components')['VWindow']
VWindowItem: typeof import('vuetify/components')['VWindowItem']
VToolbar: typeof import('vuetify/components')['VToolbar']
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
VDataIterator: typeof import('vuetify/components')['VDataIterator']
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
VForm: typeof import('vuetify/components')['VForm']
VDataIterator: typeof import('vuetify/components')['VDataIterator']
VContainer: typeof import('vuetify/components')['VContainer']
VCol: typeof import('vuetify/components')['VCol']
VRow: typeof import('vuetify/components')['VRow']
VSpacer: typeof import('vuetify/components')['VSpacer']
VHover: typeof import('vuetify/components')['VHover']
VForm: typeof import('vuetify/components')['VForm']
VLazy: typeof import('vuetify/components')['VLazy']
VLayout: typeof import('vuetify/components')['VLayout']
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
VNoSsr: typeof import('vuetify/components')['VNoSsr']
VParallax: typeof import('vuetify/components')['VParallax']
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
VRadio: typeof import('vuetify/components')['VRadio']
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
VRadio: typeof import('vuetify/components')['VRadio']
VResponsive: typeof import('vuetify/components')['VResponsive']
VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
VSparkline: typeof import('vuetify/components')['VSparkline']
VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
VValidation: typeof import('vuetify/components')['VValidation']
VFabTransition: typeof import('vuetify/components')['VFabTransition']
VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -3073,27 +3072,28 @@ declare module 'vue' {
VExpandBothTransition: typeof import('vuetify/components')['VExpandBothTransition']
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
VValidation: typeof import('vuetify/components')['VValidation']
VWindow: typeof import('vuetify/components')['VWindow']
VWindowItem: typeof import('vuetify/components')['VWindowItem']
VAvatarGroup: typeof import('vuetify/labs/components')['VAvatarGroup']
VColorInput: typeof import('vuetify/labs/components')['VColorInput']
VCommandPalette: typeof import('vuetify/labs/components')['VCommandPalette']
VCommandPaletteItem: typeof import('vuetify/labs/components')['VCommandPaletteItem']
VPie: typeof import('vuetify/labs/components')['VPie']
VPieSegment: typeof import('vuetify/labs/components')['VPieSegment']
VPieTooltip: typeof import('vuetify/labs/components')['VPieTooltip']
VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
VFileUploadDropzone: typeof import('vuetify/labs/components')['VFileUploadDropzone']
VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
VFileUploadList: typeof import('vuetify/labs/components')['VFileUploadList']
VPicker: typeof import('vuetify/labs/components')['VPicker']
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
VPicker: typeof import('vuetify/labs/components')['VPicker']
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
VPie: typeof import('vuetify/labs/components')['VPie']
VPieSegment: typeof import('vuetify/labs/components')['VPieSegment']
VPieTooltip: typeof import('vuetify/labs/components')['VPieTooltip']
VVideo: typeof import('vuetify/labs/components')['VVideo']
VVideoControls: typeof import('vuetify/labs/components')['VVideoControls']
VVideoVolume: typeof import('vuetify/labs/components')['VVideoVolume']
VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
VDateInput: typeof import('vuetify/labs/components')['VDateInput']
VMaskInput: typeof import('vuetify/labs/components')['VMaskInput']
VProgress: typeof import('vuetify/labs/components')['VProgress']
+1 -1
View File
@@ -109,7 +109,7 @@ export function createVuetify(vuetify = {}) {
};
});
}
export const version = "4.0.6";
export const version = "4.0.7";
createVuetify.version = version;
// Vue's inject() can only be used in setup
+1 -1
View File
@@ -105,7 +105,7 @@ export declare function hasEvent(props: Record<string, any>, name: string): bool
export declare function callEvent<T extends any[]>(handler: EventProp<T> | EventProp<T>[] | undefined, ...args: T): void;
export declare function focusableChildren(el: Element, filterByTabIndex?: boolean): HTMLElement[];
export declare function getNextElement(elements: HTMLElement[], location?: 'next' | 'prev', condition?: (el: HTMLElement) => boolean): HTMLElement;
export declare function focusChild(el: Element, location?: 'next' | 'prev' | 'first' | 'last' | number): void;
export declare function focusChild(el: Element, location?: 'next' | 'prev' | 'first' | 'last' | number | null, options?: FocusOptions): void;
export declare function isEmpty(val: any): boolean;
export declare function noop(): void;
/** Returns null if the selector is not supported or we can't check */
+6 -6
View File
@@ -411,21 +411,21 @@ export function getNextElement(elements, location, condition) {
} while ((!_el || _el.offsetParent == null || !(condition?.(_el) ?? true)) && idx < elements.length && idx >= 0);
return _el;
}
export function focusChild(el, location) {
export function focusChild(el, location, options) {
const focusable = focusableChildren(el);
if (location == null) {
if (el === document.activeElement || !el.contains(document.activeElement)) {
focusable[0]?.focus();
focusable[0]?.focus(options);
}
} else if (location === 'first') {
focusable[0]?.focus();
focusable[0]?.focus(options);
} else if (location === 'last') {
focusable.at(-1)?.focus();
focusable.at(-1)?.focus(options);
} else if (typeof location === 'number') {
focusable[location]?.focus();
focusable[location]?.focus(options);
} else {
const _el = getNextElement(focusable, location);
if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');
if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last', options);
}
}
export function isEmpty(val) {
File diff suppressed because one or more lines are too long