@vuetify/nightly 3.0.0-next-20220107.0 → 3.0.0-next-20220126.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/json/attributes.json +96 -20
- package/dist/json/importMap.json +8 -0
- package/dist/json/tags.json +32 -3
- package/dist/json/web-types.json +338 -41
- package/dist/vuetify.css +77 -20
- package/dist/vuetify.d.ts +204 -48
- package/dist/vuetify.esm.js +707 -387
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +707 -387
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +2 -2
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VBtn/VBtn.css +0 -16
- package/lib/components/VBtn/VBtn.sass +0 -6
- package/lib/components/VBtn/_variables.scss +0 -2
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs +2 -2
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
- package/lib/components/VHover/VHover.mjs +3 -3
- package/lib/components/VHover/VHover.mjs.map +1 -1
- package/lib/components/VInput/VInput.mjs +3 -2
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VList/VList.css +4 -2
- package/lib/components/VList/VList.mjs +34 -35
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VList.sass +5 -2
- package/lib/components/VList/VListChildren.mjs +19 -14
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +16 -40
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +3 -3
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListSubheader.mjs +20 -12
- package/lib/components/VList/VListSubheader.mjs.map +1 -1
- package/lib/components/VList/list.mjs +31 -0
- package/lib/components/VList/list.mjs.map +1 -0
- package/lib/components/VMessages/VMessages.mjs +12 -4
- package/lib/components/VMessages/VMessages.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.mjs +2 -2
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +12 -2
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +23 -31
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VWindow/VWindow.css +70 -0
- package/lib/components/VWindow/VWindow.mjs +158 -233
- package/lib/components/VWindow/VWindow.mjs.map +1 -1
- package/lib/components/VWindow/VWindow.sass +26 -50
- package/lib/components/VWindow/VWindowItem.mjs +72 -98
- package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
- package/lib/components/VWindow/_variables.scss +2 -3
- package/lib/components/VWindow/index.mjs +2 -9
- package/lib/components/VWindow/index.mjs.map +1 -1
- package/lib/components/index.d.ts +200 -47
- package/lib/components/index.mjs +1 -1
- package/lib/components/index.mjs.map +1 -1
- package/lib/composables/group.mjs +1 -6
- package/lib/composables/group.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +1 -1
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/openStrategies.mjs +1 -1
- package/lib/composables/nested/openStrategies.mjs.map +1 -1
- package/lib/directives/touch/index.mjs +6 -3
- package/lib/directives/touch/index.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/index.d.ts +2 -0
- package/package.json +2 -1
|
@@ -331,24 +331,8 @@
|
|
|
331
331
|
}
|
|
332
332
|
|
|
333
333
|
.v-pagination .v-btn {
|
|
334
|
-
box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
|
|
335
334
|
border-radius: 4px;
|
|
336
335
|
}
|
|
337
|
-
.v-pagination .v-btn.v-btn--density-default {
|
|
338
|
-
height: calc(var(--v-btn-height) + 0px);
|
|
339
|
-
width: calc(var(--v-btn-height) + 0px);
|
|
340
|
-
}
|
|
341
|
-
.v-pagination .v-btn.v-btn--density-comfortable {
|
|
342
|
-
height: calc(var(--v-btn-height) + -4px);
|
|
343
|
-
width: calc(var(--v-btn-height) + -4px);
|
|
344
|
-
}
|
|
345
|
-
.v-pagination .v-btn.v-btn--density-compact {
|
|
346
|
-
height: calc(var(--v-btn-height) + -8px);
|
|
347
|
-
width: calc(var(--v-btn-height) + -8px);
|
|
348
|
-
}
|
|
349
|
-
.v-pagination__list .v-btn--elevated {
|
|
350
|
-
box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
|
|
351
|
-
}
|
|
352
336
|
.v-pagination__item--is-active .v-btn__overlay {
|
|
353
337
|
opacity: var(--v-border-opacity);
|
|
354
338
|
}
|
|
@@ -184,13 +184,7 @@
|
|
|
184
184
|
// VPagination
|
|
185
185
|
.v-btn
|
|
186
186
|
.v-pagination &
|
|
187
|
-
@include tools.elevation($button-pagination-elevation)
|
|
188
187
|
@include tools.rounded($button-pagination-border-radius)
|
|
189
|
-
@include button-density('height' 'width', $button-pagination-density)
|
|
190
|
-
|
|
191
|
-
&--elevated
|
|
192
|
-
.v-pagination__list &
|
|
193
|
-
@include tools.elevation($button-pagination-elevation)
|
|
194
188
|
|
|
195
189
|
&__overlay
|
|
196
190
|
.v-pagination__item--is-active &
|
|
@@ -28,7 +28,6 @@ $button-bottom-navigation-text-transform: none !default;
|
|
|
28
28
|
$button-bottom-navigation-transition-duration: .2s !default;
|
|
29
29
|
$button-pagination-active-overlay-opacity: var(--v-border-opacity) !default;
|
|
30
30
|
$button-pagination-border-radius: settings.$border-radius-root !default;
|
|
31
|
-
$button-pagination-elevation: 0 !default;
|
|
32
31
|
$button-border-color: settings.$border-color-root !default;
|
|
33
32
|
$button-border-radius: settings.$border-radius-root !default;
|
|
34
33
|
$button-border-style: settings.$border-style-root !default;
|
|
@@ -62,7 +61,6 @@ $button-stacked-width-ratio: 1 !default;
|
|
|
62
61
|
$button-density: ('default': 0, 'comfortable': -2, 'compact': -3) !default;
|
|
63
62
|
$button-stacked-density: ('default': 0, 'comfortable': -4, 'compact': -6) !default;
|
|
64
63
|
$button-icon-density: ('default': 3, 'comfortable': 0, 'compact': -2) !default;
|
|
65
|
-
$button-pagination-density: ('default': 0, 'comfortable': -1, 'compact': -2) !default;
|
|
66
64
|
|
|
67
65
|
$button-border: (
|
|
68
66
|
$button-border-color,
|
|
@@ -40,11 +40,11 @@ export const VExpansionPanel = defineComponent({
|
|
|
40
40
|
} = useElevation(props);
|
|
41
41
|
provide(VExpansionPanelSymbol, groupItem);
|
|
42
42
|
const isBeforeSelected = computed(() => {
|
|
43
|
-
const index = groupItem.group.items.value.
|
|
43
|
+
const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);
|
|
44
44
|
return !groupItem.isSelected.value && groupItem.group.selected.value.some(id => groupItem.group.items.value.indexOf(id) - index === 1);
|
|
45
45
|
});
|
|
46
46
|
const isAfterSelected = computed(() => {
|
|
47
|
-
const index = groupItem.group.items.value.
|
|
47
|
+
const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);
|
|
48
48
|
return !groupItem.isSelected.value && groupItem.group.selected.value.some(id => groupItem.group.items.value.indexOf(id) - index === -1);
|
|
49
49
|
});
|
|
50
50
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanel.tsx"],"names":["makeVExpansionPanelTitleProps","VExpansionPanelTitle","VExpansionPanelText","VExpansionPanelSymbol","makeElevationProps","useElevation","makeGroupItemProps","useGroupItem","makeRoundedProps","useRounded","useBackgroundColor","makeTagProps","makeLazyProps","computed","provide","defineComponent","VExpansionPanel","name","props","title","String","text","bgColor","setup","slots","groupItem","roundedClasses","elevationClasses","isBeforeSelected","index","group","items","value","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanel.tsx"],"names":["makeVExpansionPanelTitleProps","VExpansionPanelTitle","VExpansionPanelText","VExpansionPanelSymbol","makeElevationProps","useElevation","makeGroupItemProps","useGroupItem","makeRoundedProps","useRounded","useBackgroundColor","makeTagProps","makeLazyProps","computed","provide","defineComponent","VExpansionPanel","name","props","title","String","text","bgColor","setup","slots","groupItem","roundedClasses","elevationClasses","isBeforeSelected","index","group","items","value","findIndex","item","id","isSelected","selected","some","indexOf","isAfterSelected","backgroundColorClasses","backgroundColorStyles","disabled","default","expandIcon","collapseIcon","color","hideActions","ripple","eager"],"mappings":"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","sourcesContent":["// Components\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from './VExpansionPanelTitle'\nimport { VExpansionPanelText } from './VExpansionPanelText'\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\n\n// Composables\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeLazyProps } from '@/composables/lazy'\n\n// Utilities\nimport { computed, provide } from 'vue'\nimport { defineComponent } from '@/util'\n\nexport const VExpansionPanel = defineComponent({\n name: 'VExpansionPanel',\n\n props: {\n title: String,\n text: String,\n bgColor: String,\n\n ...makeLazyProps(),\n ...makeGroupItemProps(),\n ...makeRoundedProps(),\n ...makeElevationProps(),\n ...makeTagProps(),\n ...makeVExpansionPanelTitleProps(),\n },\n\n setup (props, { slots }) {\n const groupItem = useGroupItem(props, VExpansionPanelSymbol)\n const { roundedClasses } = useRounded(props)\n const { elevationClasses } = useElevation(props)\n\n provide(VExpansionPanelSymbol, groupItem)\n\n const isBeforeSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n groupItem.group.selected.value.some(id => groupItem.group.items.value.indexOf(id) - index === 1)\n })\n\n const isAfterSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n groupItem.group.selected.value.some(id => groupItem.group.items.value.indexOf(id) - index === -1)\n })\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'bgColor')\n\n return () => (\n <props.tag\n class={[\n 'v-expansion-panel',\n {\n 'v-expansion-panel--active': groupItem.isSelected.value,\n 'v-expansion-panel--before-active': isBeforeSelected.value,\n 'v-expansion-panel--after-active': isAfterSelected.value,\n 'v-expansion-panel--disabled': groupItem.disabled.value,\n },\n roundedClasses.value,\n backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n aria-expanded={ groupItem.isSelected.value }\n >\n <div\n class={[\n 'v-expansion-panel__shadow',\n ...elevationClasses.value,\n ]}\n />\n { slots.default?.() || (\n <>\n <VExpansionPanelTitle\n expandIcon={ props.expandIcon }\n collapseIcon={ props.collapseIcon }\n color={ props.color }\n hideActions={ props.hideActions }\n ripple={ props.ripple }\n >\n { slots.title ? slots.title() : props.title }\n </VExpansionPanelTitle>\n <VExpansionPanelText eager={ props.eager }>\n { slots.text ? slots.text() : props.text }\n </VExpansionPanelText>\n </>\n ) }\n </props.tag>\n )\n },\n})\n\nexport type VExpansionPanel = InstanceType<typeof VExpansionPanel>\n"],"file":"VExpansionPanel.mjs"}
|
|
@@ -21,16 +21,16 @@ export const VHover = defineComponent({
|
|
|
21
21
|
let {
|
|
22
22
|
slots
|
|
23
23
|
} = _ref;
|
|
24
|
-
const
|
|
24
|
+
const isHovering = useProxiedModel(props, 'modelValue');
|
|
25
25
|
const {
|
|
26
26
|
runOpenDelay,
|
|
27
27
|
runCloseDelay
|
|
28
|
-
} = useDelay(props, value => !props.disabled && (
|
|
28
|
+
} = useDelay(props, value => !props.disabled && (isHovering.value = value));
|
|
29
29
|
return () => {
|
|
30
30
|
var _slots$default;
|
|
31
31
|
|
|
32
32
|
return (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, {
|
|
33
|
-
|
|
33
|
+
isHovering: isHovering.value,
|
|
34
34
|
props: {
|
|
35
35
|
onMouseenter: runOpenDelay,
|
|
36
36
|
onMouseleave: runCloseDelay
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VHover/VHover.tsx"],"names":["makeDelayProps","useDelay","useProxiedModel","defineComponent","VHover","name","props","disabled","Boolean","modelValue","type","default","undefined","emits","value","setup","slots","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VHover/VHover.tsx"],"names":["makeDelayProps","useDelay","useProxiedModel","defineComponent","VHover","name","props","disabled","Boolean","modelValue","type","default","undefined","emits","value","setup","slots","isHovering","runOpenDelay","runCloseDelay","onMouseenter","onMouseleave"],"mappings":"AAAA;SACSA,c,EAAgBC,Q;SAChBC,e,8CAET;;SACSC,e;AAET,OAAO,MAAMC,MAAM,GAAGD,eAAe,CAAC;AACpCE,EAAAA,IAAI,EAAE,QAD8B;AAGpCC,EAAAA,KAAK,EAAE;AACLC,IAAAA,QAAQ,EAAEC,OADL;AAELC,IAAAA,UAAU,EAAE;AACVC,MAAAA,IAAI,EAAEF,OADI;AAEVG,MAAAA,OAAO,EAAEC;AAFC,KAFP;AAOL,OAAGZ,cAAc;AAPZ,GAH6B;AAapCa,EAAAA,KAAK,EAAE;AACL,yBAAsBC,KAAD,IAAoB;AADpC,GAb6B;;AAiBpCC,EAAAA,KAAK,CAAET,KAAF,QAAoB;AAAA,QAAX;AAAEU,MAAAA;AAAF,KAAW;AACvB,UAAMC,UAAU,GAAGf,eAAe,CAACI,KAAD,EAAQ,YAAR,CAAlC;AACA,UAAM;AAAEY,MAAAA,YAAF;AAAgBC,MAAAA;AAAhB,QAAkClB,QAAQ,CAACK,KAAD,EAAQQ,KAAK,IAAI,CAACR,KAAK,CAACC,QAAP,KAAoBU,UAAU,CAACH,KAAX,GAAmBA,KAAvC,CAAjB,CAAhD;AAEA,WAAO;AAAA;;AAAA,+BAAME,KAAK,CAACL,OAAZ,qBAAM,oBAAAK,KAAK,EAAW;AAC3BC,QAAAA,UAAU,EAAEA,UAAU,CAACH,KADI;AAE3BR,QAAAA,KAAK,EAAE;AACLc,UAAAA,YAAY,EAAEF,YADT;AAELG,UAAAA,YAAY,EAAEF;AAFT;AAFoB,OAAX,CAAX;AAAA,KAAP;AAOD;;AA5BmC,CAAD,CAA9B","sourcesContent":["// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { defineComponent } from '@/util'\n\nexport const VHover = defineComponent({\n name: 'VHover',\n\n props: {\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: undefined,\n },\n\n ...makeDelayProps(),\n },\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isHovering = useProxiedModel(props, 'modelValue')\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => !props.disabled && (isHovering.value = value))\n\n return () => slots.default?.({\n isHovering: isHovering.value,\n props: {\n onMouseenter: runOpenDelay,\n onMouseleave: runCloseDelay,\n },\n })\n },\n})\n"],"file":"VHover.mjs"}
|
|
@@ -106,10 +106,11 @@ export const VInput = genericComponent()({
|
|
|
106
106
|
"class": "v-input__details"
|
|
107
107
|
}, [_createVNode(VMessages, {
|
|
108
108
|
"active": showMessages,
|
|
109
|
-
"
|
|
109
|
+
"color": isValid.value === false ? 'error' : undefined,
|
|
110
|
+
"value": errorMessages.value.length > 0 ? errorMessages.value : hasMessages ? props.messages : props.hint
|
|
110
111
|
}, {
|
|
111
112
|
default: slots.messages
|
|
112
|
-
}, 8, ["active", "value"]), (_slots$details = slots.details) == null ? void 0 : _slots$details.call(slots, slotProps.value)])], 2);
|
|
113
|
+
}, 8, ["active", "color", "value"]), (_slots$details = slots.details) == null ? void 0 : _slots$details.call(slots, slotProps.value)])], 2);
|
|
113
114
|
});
|
|
114
115
|
return {
|
|
115
116
|
isValid,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VInput/VInput.tsx"],"names":["VIcon","VMessages","makeDensityProps","useDensity","makeValidationProps","useValidation","computed","provide","toRef","genericComponent","getUid","pick","propsFactory","useRender","VInputSymbol","makeVInputProps","id","String","appendIcon","prependIcon","hideDetails","Boolean","hint","messages","type","Array","default","persistentHint","direction","validator","v","includes","VInput","name","props","focused","emits","val","e","setup","slots","emit","densityClasses","errorMessages","isDisabled","isReadonly","isPristine","isValid","isValidating","reset","resetValidation","validate","validationClasses","uid","isFocused","slotProps","hasPrepend","prepend","hasAppend","append","hasHint","hasMessages","length","value","hasDetails","showMessages","details","filterInputProps","Object","keys"],"mappings":"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","sourcesContent":["// Styles\nimport './VInput.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VMessages } from '@/components/VMessages'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, getUid, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nexport interface VInputSlot {\n id: ComputedRef<string>\n isDisabled: ComputedRef<boolean>\n isFocused: Ref<boolean>\n isReadonly: ComputedRef<boolean>\n isPristine: Ref<boolean>\n isValid: ComputedRef<boolean | null>\n isValidating: Ref<boolean>\n reset: () => void\n resetValidation: () => void\n validate: () => void\n}\n\nexport const VInputSymbol = 'VInput' as any as InjectionKey<ComputedRef<VInputSlot>>\n\nexport const makeVInputProps = propsFactory({\n id: String,\n appendIcon: String,\n prependIcon: String,\n hideDetails: [Boolean, String] as PropType<boolean | 'auto'>,\n hint: String,\n messages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n persistentHint: Boolean,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['horizontal', 'vertical'].includes(v),\n },\n\n ...makeDensityProps(),\n ...makeValidationProps(),\n})\n\nexport const VInput = genericComponent<new <T>() => {\n $slots: MakeSlots<{\n default: [VInputSlot]\n prepend: [VInputSlot]\n append: [VInputSlot]\n details: [VInputSlot]\n }>\n}>()({\n name: 'VInput',\n\n props: {\n focused: Boolean,\n\n ...makeVInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n 'click:prepend': (e: MouseEvent) => true,\n 'click:append': (e: MouseEvent) => true,\n },\n\n setup (props, { slots, emit }) {\n const { densityClasses } = useDensity(props)\n const {\n errorMessages,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n } = useValidation(props)\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const isFocused = toRef(props, 'focused')\n\n const slotProps = computed<VInputSlot>(() => ({\n id,\n isDisabled,\n isFocused,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n }))\n\n provide(VInputSymbol, slotProps)\n\n useRender(() => {\n const hasPrepend = (slots.prepend || props.prependIcon)\n const hasAppend = (slots.append || props.appendIcon)\n const hasHint = !!(slots.hint || props.hint)\n const hasMessages = !!(\n slots.messages ||\n props.messages?.length ||\n errorMessages.value.length\n )\n const hasDetails = !props.hideDetails || (\n props.hideDetails === 'auto' &&\n (hasMessages || hasHint)\n )\n const showMessages = hasMessages || (\n hasHint &&\n (props.persistentHint || props.focused)\n )\n\n return (\n <div class={[\n 'v-input',\n `v-input--${props.direction}`,\n densityClasses.value,\n validationClasses.value,\n ]}\n >\n { hasPrepend && (\n <div\n class=\"v-input__prepend\"\n onClick={ e => emit('click:prepend', e) }\n >\n { slots?.prepend?.(slotProps.value) }\n\n { props.prependIcon && (\n <VIcon icon={ props.prependIcon } />\n ) }\n </div>\n ) }\n\n <div class=\"v-input__control\">\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div\n class=\"v-input__append\"\n onClick={ e => emit('click:append', e) }\n >\n { slots?.append?.(slotProps.value) }\n\n { props.appendIcon && (\n <VIcon icon={ props.appendIcon } />\n ) }\n </div>\n ) }\n\n { hasDetails && (\n <div class=\"v-input__details\">\n <VMessages\n active={ showMessages }\n value={ errorMessages.value || (hasMessages ? props.messages : props.hint) }\n v-slots={{ default: slots.messages }}\n />\n\n { slots.details?.(slotProps.value) }\n </div>\n ) }\n </div>\n )\n })\n\n return {\n isValid,\n validate,\n reset,\n resetValidation,\n errorMessages,\n }\n },\n})\n\nexport type VInput = InstanceType<typeof VInput>\n\nexport function filterInputProps (props: ExtractPropTypes<ReturnType<typeof makeVInputProps>>) {\n return pick(props, Object.keys(VInput.props) as any)\n}\n"],"file":"VInput.mjs"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VInput/VInput.tsx"],"names":["VIcon","VMessages","makeDensityProps","useDensity","makeValidationProps","useValidation","computed","provide","toRef","genericComponent","getUid","pick","propsFactory","useRender","VInputSymbol","makeVInputProps","id","String","appendIcon","prependIcon","hideDetails","Boolean","hint","messages","type","Array","default","persistentHint","direction","validator","v","includes","VInput","name","props","focused","emits","val","e","setup","slots","emit","densityClasses","errorMessages","isDisabled","isReadonly","isPristine","isValid","isValidating","reset","resetValidation","validate","validationClasses","uid","isFocused","slotProps","hasPrepend","prepend","hasAppend","append","hasHint","hasMessages","length","value","hasDetails","showMessages","undefined","details","filterInputProps","Object","keys"],"mappings":"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","sourcesContent":["// Styles\nimport './VInput.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VMessages } from '@/components/VMessages'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, getUid, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nexport interface VInputSlot {\n id: ComputedRef<string>\n isDisabled: ComputedRef<boolean>\n isFocused: Ref<boolean>\n isReadonly: ComputedRef<boolean>\n isPristine: Ref<boolean>\n isValid: ComputedRef<boolean | null>\n isValidating: Ref<boolean>\n reset: () => void\n resetValidation: () => void\n validate: () => void\n}\n\nexport const VInputSymbol = 'VInput' as any as InjectionKey<ComputedRef<VInputSlot>>\n\nexport const makeVInputProps = propsFactory({\n id: String,\n appendIcon: String,\n prependIcon: String,\n hideDetails: [Boolean, String] as PropType<boolean | 'auto'>,\n hint: String,\n messages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n persistentHint: Boolean,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['horizontal', 'vertical'].includes(v),\n },\n\n ...makeDensityProps(),\n ...makeValidationProps(),\n})\n\nexport const VInput = genericComponent<new <T>() => {\n $slots: MakeSlots<{\n default: [VInputSlot]\n prepend: [VInputSlot]\n append: [VInputSlot]\n details: [VInputSlot]\n }>\n}>()({\n name: 'VInput',\n\n props: {\n focused: Boolean,\n\n ...makeVInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n 'click:prepend': (e: MouseEvent) => true,\n 'click:append': (e: MouseEvent) => true,\n },\n\n setup (props, { slots, emit }) {\n const { densityClasses } = useDensity(props)\n const {\n errorMessages,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n } = useValidation(props)\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const isFocused = toRef(props, 'focused')\n\n const slotProps = computed<VInputSlot>(() => ({\n id,\n isDisabled,\n isFocused,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n }))\n\n provide(VInputSymbol, slotProps)\n\n useRender(() => {\n const hasPrepend = (slots.prepend || props.prependIcon)\n const hasAppend = (slots.append || props.appendIcon)\n const hasHint = !!(slots.hint || props.hint)\n const hasMessages = !!(\n slots.messages ||\n props.messages?.length ||\n errorMessages.value.length\n )\n const hasDetails = !props.hideDetails || (\n props.hideDetails === 'auto' &&\n (hasMessages || hasHint)\n )\n const showMessages = hasMessages || (\n hasHint &&\n (props.persistentHint || props.focused)\n )\n\n return (\n <div class={[\n 'v-input',\n `v-input--${props.direction}`,\n densityClasses.value,\n validationClasses.value,\n ]}\n >\n { hasPrepend && (\n <div\n class=\"v-input__prepend\"\n onClick={ e => emit('click:prepend', e) }\n >\n { slots?.prepend?.(slotProps.value) }\n\n { props.prependIcon && (\n <VIcon icon={ props.prependIcon } />\n ) }\n </div>\n ) }\n\n <div class=\"v-input__control\">\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div\n class=\"v-input__append\"\n onClick={ e => emit('click:append', e) }\n >\n { slots?.append?.(slotProps.value) }\n\n { props.appendIcon && (\n <VIcon icon={ props.appendIcon } />\n ) }\n </div>\n ) }\n\n { hasDetails && (\n <div class=\"v-input__details\">\n <VMessages\n active={ showMessages }\n color={ isValid.value === false ? 'error' : undefined }\n value={ errorMessages.value.length > 0\n ? errorMessages.value\n : (hasMessages ? props.messages : props.hint)\n }\n v-slots={{ default: slots.messages }}\n />\n\n { slots.details?.(slotProps.value) }\n </div>\n ) }\n </div>\n )\n })\n\n return {\n isValid,\n validate,\n reset,\n resetValidation,\n errorMessages,\n }\n },\n})\n\nexport type VInput = InstanceType<typeof VInput>\n\nexport function filterInputProps (props: ExtractPropTypes<ReturnType<typeof makeVInputProps>>) {\n return pick(props, Object.keys(VInput.props) as any)\n}\n"],"file":"VInput.mjs"}
|
|
@@ -54,7 +54,6 @@
|
|
|
54
54
|
font-weight: 500;
|
|
55
55
|
line-height: 1.375rem;
|
|
56
56
|
padding-inline-end: 16px;
|
|
57
|
-
padding-inline-start: 16px;
|
|
58
57
|
min-height: 48px;
|
|
59
58
|
transition: 0.2s min-height cubic-bezier(0.4, 0, 0.2, 1);
|
|
60
59
|
}
|
|
@@ -66,14 +65,17 @@
|
|
|
66
65
|
}
|
|
67
66
|
.v-list--density-default .v-list-subheader {
|
|
68
67
|
min-height: 48px;
|
|
68
|
+
padding-inline-start: calc(16px + var(--indent-padding)) !important;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
.v-list--density-comfortable .v-list-subheader {
|
|
72
72
|
min-height: 44px;
|
|
73
|
+
padding-inline-start: calc(16px + var(--indent-padding)) !important;
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
.v-list--density-compact .v-list-subheader {
|
|
76
77
|
min-height: 40px;
|
|
78
|
+
padding-inline-start: calc(16px + var(--indent-padding)) !important;
|
|
77
79
|
}
|
|
78
80
|
|
|
79
81
|
.v-list-subheader--inset {
|
|
@@ -82,7 +84,7 @@
|
|
|
82
84
|
.v-list--nav .v-list-subheader {
|
|
83
85
|
font-size: 0.75rem;
|
|
84
86
|
}
|
|
85
|
-
.v-list--
|
|
87
|
+
.v-list-subheader--sticky {
|
|
86
88
|
background: inherit;
|
|
87
89
|
left: 0;
|
|
88
90
|
position: sticky;
|
|
@@ -2,7 +2,6 @@ import { createVNode as _createVNode } from "vue";
|
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VList.css"; // Components
|
|
4
4
|
|
|
5
|
-
import { VListSubheader } from "./VListSubheader.mjs";
|
|
6
5
|
import { VListChildren } from "./VListChildren.mjs"; // Composables
|
|
7
6
|
|
|
8
7
|
import { makeBorderProps, useBorder } from "../../composables/border.mjs";
|
|
@@ -13,32 +12,41 @@ import { makeRoundedProps, useRounded } from "../../composables/rounded.mjs";
|
|
|
13
12
|
import { makeTagProps } from "../../composables/tag.mjs";
|
|
14
13
|
import { useBackgroundColor } from "../../composables/color.mjs";
|
|
15
14
|
import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
|
|
16
|
-
import { makeNestedProps, useNested } from "../../composables/nested/nested.mjs";
|
|
15
|
+
import { makeNestedProps, useNested } from "../../composables/nested/nested.mjs";
|
|
16
|
+
import { createList } from "./list.mjs"; // Utilities
|
|
17
17
|
|
|
18
|
-
import {
|
|
18
|
+
import { computed, toRef } from 'vue';
|
|
19
19
|
import { genericComponent, useRender } from "../../util/index.mjs"; // Types
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
const parseItems = items => {
|
|
22
|
+
if (!items) return undefined;
|
|
23
|
+
return items.map(item => {
|
|
24
|
+
if (typeof item === 'string') return {
|
|
25
|
+
type: 'item',
|
|
26
|
+
value: item,
|
|
27
|
+
title: item
|
|
28
|
+
};
|
|
29
|
+
const {
|
|
30
|
+
$type,
|
|
31
|
+
$children,
|
|
32
|
+
...props
|
|
33
|
+
} = item;
|
|
34
|
+
if ($type === 'subheader') return {
|
|
35
|
+
type: 'subheader',
|
|
36
|
+
props
|
|
37
|
+
};
|
|
38
|
+
if ($type === 'divider') return {
|
|
39
|
+
type: 'divider',
|
|
40
|
+
props
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
type: 'item',
|
|
44
|
+
props,
|
|
45
|
+
children: parseItems($children)
|
|
46
|
+
};
|
|
29
47
|
});
|
|
30
|
-
const data = {
|
|
31
|
-
hasPrepend: ref(false),
|
|
32
|
-
updateHasPrepend: value => {
|
|
33
|
-
if (value) data.hasPrepend.value = value;
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
provide(ListKey, data);
|
|
37
|
-
return parent;
|
|
38
|
-
};
|
|
39
|
-
export const useList = () => {
|
|
40
|
-
return inject(ListKey, null);
|
|
41
48
|
};
|
|
49
|
+
|
|
42
50
|
export const VList = genericComponent()({
|
|
43
51
|
name: 'VList',
|
|
44
52
|
props: {
|
|
@@ -49,10 +57,6 @@ export const VList = genericComponent()({
|
|
|
49
57
|
default: 'one'
|
|
50
58
|
},
|
|
51
59
|
nav: Boolean,
|
|
52
|
-
subheader: {
|
|
53
|
-
type: [Boolean, String],
|
|
54
|
-
default: false
|
|
55
|
-
},
|
|
56
60
|
items: Array,
|
|
57
61
|
...makeNestedProps({
|
|
58
62
|
selectStrategy: 'leaf',
|
|
@@ -77,6 +81,7 @@ export const VList = genericComponent()({
|
|
|
77
81
|
let {
|
|
78
82
|
slots
|
|
79
83
|
} = _ref;
|
|
84
|
+
const items = computed(() => parseItems(props.items));
|
|
80
85
|
const {
|
|
81
86
|
themeClasses
|
|
82
87
|
} = provideTheme(props);
|
|
@@ -106,28 +111,22 @@ export const VList = genericComponent()({
|
|
|
106
111
|
} = useNested(props);
|
|
107
112
|
createList();
|
|
108
113
|
useRender(() => {
|
|
109
|
-
const hasHeader = typeof props.subheader === 'string' || slots.subheader;
|
|
110
114
|
return _createVNode(props.tag, {
|
|
111
115
|
"class": ['v-list', {
|
|
112
116
|
'v-list--disabled': props.disabled,
|
|
113
117
|
'v-list--nav': props.nav,
|
|
114
|
-
'v-list--subheader': props.subheader,
|
|
115
|
-
'v-list--subheader-sticky': props.subheader === 'sticky',
|
|
116
118
|
[`v-list--${props.lines}-line`]: true
|
|
117
119
|
}, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value],
|
|
118
120
|
"style": [backgroundColorStyles.value, dimensionStyles.value]
|
|
119
121
|
}, {
|
|
120
|
-
default: () => [
|
|
121
|
-
|
|
122
|
-
})), _createVNode(VListChildren, {
|
|
123
|
-
"items": props.items
|
|
122
|
+
default: () => [_createVNode(VListChildren, {
|
|
123
|
+
"items": items.value
|
|
124
124
|
}, {
|
|
125
125
|
default: slots.default,
|
|
126
126
|
item: slots.item,
|
|
127
127
|
externalHeader: slots.header,
|
|
128
128
|
_: 1
|
|
129
|
-
}, 8, ["items"])]
|
|
130
|
-
_: 1
|
|
129
|
+
}, 8, ["items"])]
|
|
131
130
|
}, 8, ["class", "style"]);
|
|
132
131
|
});
|
|
133
132
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VList/VList.tsx"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VList/VList.tsx"],"names":["VListChildren","makeBorderProps","useBorder","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeTagProps","useBackgroundColor","makeThemeProps","provideTheme","makeNestedProps","useNested","createList","computed","toRef","genericComponent","useRender","parseItems","items","undefined","map","item","type","value","title","$type","$children","props","children","VList","name","color","String","disabled","Boolean","lines","default","nav","Array","selectStrategy","openStrategy","activeStrategy","emits","val","setup","slots","themeClasses","backgroundColorClasses","backgroundColorStyles","borderClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","open","select","activate","externalHeader","header"],"mappings":"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","sourcesContent":["// Styles\nimport './VList.sass'\n\n// Components\nimport { VListChildren } from './VListChildren'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeNestedProps, useNested } from '@/composables/nested/nested'\nimport { createList } from './list'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { Prop } from 'vue'\nimport type { MakeSlots } from '@/util'\nimport type { ListGroupHeaderSlot } from './VListGroup'\n\nexport type ListItem = {\n [key: string]: any\n $type?: 'item' | 'subheader' | 'divider'\n $children?: (string | ListItem)[]\n}\n\nexport type InternalListItem = {\n type?: 'item' | 'subheader' | 'divider'\n props?: Record<string, any>\n children?: InternalListItem[]\n}\n\nconst parseItems = (items?: (string | ListItem)[]): InternalListItem[] | undefined => {\n if (!items) return undefined\n\n return items.map(item => {\n if (typeof item === 'string') return { type: 'item', value: item, title: item }\n\n const { $type, $children, ...props } = item\n\n if ($type === 'subheader') return { type: 'subheader', props }\n if ($type === 'divider') return { type: 'divider', props }\n\n return { type: 'item', props, children: parseItems($children) }\n })\n}\n\nexport const VList = genericComponent<new <T>() => {\n $props: {\n items?: T[]\n }\n $slots: MakeSlots<{\n subheader: []\n header: [ListGroupHeaderSlot]\n item: [T]\n }>\n}>()({\n name: 'VList',\n\n props: {\n color: String,\n disabled: Boolean,\n lines: {\n type: String,\n default: 'one',\n },\n nav: Boolean,\n items: Array as Prop<ListItem[]>,\n\n ...makeNestedProps({\n selectStrategy: 'leaf' as const,\n openStrategy: 'multiple' as const,\n activeStrategy: 'single' as const,\n }),\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:selected': (val: string[]) => true,\n 'update:opened': (val: string[]) => true,\n 'update:active': (val: string[]) => true,\n },\n\n setup (props, { slots }) {\n const items = computed(() => parseItems(props.items))\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { open, select, activate } = useNested(props)\n\n createList()\n\n useRender(() => {\n return (\n <props.tag\n class={[\n 'v-list',\n {\n 'v-list--disabled': props.disabled,\n 'v-list--nav': props.nav,\n [`v-list--${props.lines}-line`]: true,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n ]}\n >\n <VListChildren items={ items.value }>\n {{\n default: slots.default,\n item: slots.item,\n externalHeader: slots.header,\n }}\n </VListChildren>\n </props.tag>\n )\n })\n\n return {\n open,\n select,\n activate,\n }\n },\n})\n\nexport type VList = InstanceType<typeof VList>\n"],"file":"VList.mjs"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
@forward './variables'
|
|
2
|
+
@use 'sass:list'
|
|
2
3
|
@use '../../styles/tools'
|
|
3
4
|
@use './variables' as *
|
|
4
5
|
|
|
@@ -47,7 +48,6 @@
|
|
|
47
48
|
font-weight: $list-subheader-font-weight
|
|
48
49
|
line-height: $list-subheader-line-height
|
|
49
50
|
padding-inline-end: $list-subheader-padding-end
|
|
50
|
-
padding-inline-start: $list-subheader-padding-start
|
|
51
51
|
min-height: $list-subheader-min-height
|
|
52
52
|
transition: $list-subheader-transition
|
|
53
53
|
|
|
@@ -59,8 +59,11 @@
|
|
|
59
59
|
|
|
60
60
|
@at-root
|
|
61
61
|
@include tools.density('v-list', $list-density) using ($modifier)
|
|
62
|
+
$base-padding: list.nth($list-item-padding, 2)
|
|
63
|
+
|
|
62
64
|
#{$root}
|
|
63
65
|
min-height: $list-subheader-min-height + ($modifier * $list-subheader-min-height-multiplier)
|
|
66
|
+
padding-inline-start: calc(#{$base-padding} + var(--indent-padding)) !important
|
|
64
67
|
|
|
65
68
|
&--inset
|
|
66
69
|
padding-inline-start: $list-subheader-inset-padding-start
|
|
@@ -68,7 +71,7 @@
|
|
|
68
71
|
.v-list--nav &
|
|
69
72
|
font-size: $list-nav-subheader-font-size
|
|
70
73
|
|
|
71
|
-
|
|
74
|
+
&--sticky
|
|
72
75
|
background: inherit
|
|
73
76
|
left: 0
|
|
74
77
|
position: sticky
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
|
|
2
2
|
// Components
|
|
3
|
+
import { VDivider } from "../VDivider/index.mjs";
|
|
3
4
|
import { VListGroup } from "./VListGroup.mjs";
|
|
4
|
-
import { VListItem } from "./VListItem.mjs";
|
|
5
|
+
import { VListItem } from "./VListItem.mjs";
|
|
6
|
+
import { VListSubheader } from "./VListSubheader.mjs"; // Utilities
|
|
5
7
|
|
|
6
|
-
import { genericComponent } from "../../util/index.mjs";
|
|
8
|
+
import { genericComponent } from "../../util/index.mjs";
|
|
9
|
+
import { createList } from "./list.mjs"; // Types
|
|
7
10
|
|
|
8
11
|
export const VListChildren = genericComponent()({
|
|
9
12
|
name: 'VListChildren',
|
|
@@ -15,27 +18,29 @@ export const VListChildren = genericComponent()({
|
|
|
15
18
|
let {
|
|
16
19
|
slots
|
|
17
20
|
} = _ref;
|
|
21
|
+
createList();
|
|
18
22
|
return () => {
|
|
19
23
|
var _slots$default, _slots$default2, _props$items;
|
|
20
24
|
|
|
21
25
|
return (_slots$default = (_slots$default2 = slots.default) == null ? void 0 : _slots$default2.call(slots)) != null ? _slots$default : (_props$items = props.items) == null ? void 0 : _props$items.map(_ref2 => {
|
|
22
26
|
let {
|
|
23
27
|
children,
|
|
24
|
-
|
|
28
|
+
props: itemProps,
|
|
29
|
+
type
|
|
25
30
|
} = _ref2;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
...rest
|
|
29
|
-
} = item;
|
|
31
|
+
if (type === 'divider') return _createVNode(VDivider, itemProps, null, 16);
|
|
32
|
+
if (type === 'subheader') return _createVNode(VListSubheader, itemProps, slots, 16);
|
|
30
33
|
return children ? _createVNode(VListGroup, {
|
|
31
|
-
"value": value
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
"value": itemProps == null ? void 0 : itemProps.value
|
|
35
|
+
}, {
|
|
36
|
+
items: () => _createVNode(VListChildren, {
|
|
37
|
+
"items": children
|
|
38
|
+
}, slots, 8, ["items"]),
|
|
39
|
+
header: headerProps => slots.externalHeader ? slots.externalHeader({ ...itemProps,
|
|
35
40
|
...headerProps
|
|
36
|
-
}) : _createVNode(VListItem, _mergeProps(
|
|
41
|
+
}) : _createVNode(VListItem, _mergeProps(itemProps, headerProps), null, 16),
|
|
37
42
|
_: 2
|
|
38
|
-
}, 8, ["value"
|
|
43
|
+
}, 8, ["value"]) : slots.item ? slots.item(itemProps) : _createVNode(VListItem, itemProps, slots, 16);
|
|
39
44
|
});
|
|
40
45
|
};
|
|
41
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VList/VListChildren.tsx"],"names":["VListGroup","VListItem","genericComponent","VListChildren","name","props","items","Array","setup","slots","default","map","children","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VList/VListChildren.tsx"],"names":["VDivider","VListGroup","VListItem","VListSubheader","genericComponent","createList","VListChildren","name","props","items","Array","setup","slots","default","map","children","itemProps","type","value","header","headerProps","externalHeader","item"],"mappings":";AAAA;SACSA,Q;SACAC,U;SACAC,S;SACAC,c,gCAET;;SACSC,gB;SACAC,U,sBAET;;AAMA,OAAO,MAAMC,aAAa,GAAGF,gBAAgB,GASxC;AACHG,EAAAA,IAAI,EAAE,eADH;AAGHC,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAEC;AADF,GAHJ;;AAOHC,EAAAA,KAAK,CAAEH,KAAF,QAAoB;AAAA,QAAX;AAAEI,MAAAA;AAAF,KAAW;AACvBP,IAAAA,UAAU;AAEV,WAAO;AAAA;;AAAA,kDAAMO,KAAK,CAACC,OAAZ,qBAAM,qBAAAD,KAAK,CAAX,6CAA2BJ,KAAK,CAACC,KAAjC,qBAA2B,aAAaK,GAAb,CAAiB,SAA0C;AAAA,YAAzC;AAAEC,UAAAA,QAAF;AAAYP,UAAAA,KAAK,EAAEQ,SAAnB;AAA8BC,UAAAA;AAA9B,SAAyC;AAC3F,YAAIA,IAAI,KAAK,SAAb,EAAwB,8BAAqBD,SAArB;AAExB,YAAIC,IAAI,KAAK,WAAb,EAA0B,oCAA2BD,SAA3B,EAAgDJ,KAAhD;AAE1B,eAAOG,QAAQ;AAAA,mBAEHC,SAFG,oBAEHA,SAAS,CAAEE;AAFR;AAKTT,UAAAA,KAAK,EAAE;AAAA,qBACkBM;AADlB,aACuCH,KADvC,eALE;AAQTO,UAAAA,MAAM,EAAEC,WAAW,IAAIR,KAAK,CAACS,cAAN,GACnBT,KAAK,CAACS,cAAN,CAAqB,EAAE,GAAGL,SAAL;AAAgB,eAAGI;AAAnB,WAArB,CADmB,uCAEHJ,SAFG,EAEcI,WAFd,YARd;AAAA;AAAA,2BAcbR,KAAK,CAACU,IAAN,GAAaV,KAAK,CAACU,IAAN,CAAWN,SAAX,CAAb,2BAAqDA,SAArD,EAA2EJ,KAA3E,KAdF;AAgBD,OArBiC,CAA3B;AAAA,KAAP;AAsBD;;AAhCE,CATwC,CAAtC","sourcesContent":["// Components\nimport { VDivider } from '../VDivider'\nimport { VListGroup } from './VListGroup'\nimport { VListItem } from './VListItem'\nimport { VListSubheader } from './VListSubheader'\n\n// Utilities\nimport { genericComponent } from '@/util'\nimport { createList } from './list'\n\n// Types\nimport type { InternalListItem } from './VList'\nimport type { ListGroupHeaderSlot } from './VListGroup'\nimport type { MakeSlots } from '@/util'\nimport type { Prop } from 'vue'\n\nexport const VListChildren = genericComponent<new <T extends InternalListItem>() => {\n $props: {\n items?: T[]\n }\n $slots: MakeSlots<{\n default: []\n externalHeader: [ListGroupHeaderSlot]\n item: [T]\n }>\n}>()({\n name: 'VListChildren',\n\n props: {\n items: Array as Prop<InternalListItem[]>,\n },\n\n setup (props, { slots }) {\n createList()\n\n return () => slots.default?.() ?? props.items?.map(({ children, props: itemProps, type }) => {\n if (type === 'divider') return <VDivider {...itemProps} />\n\n if (type === 'subheader') return <VListSubheader {...itemProps} v-slots={ slots } />\n\n return children ? (\n <VListGroup\n value={ itemProps?.value }\n >\n {{\n items: () => (\n <VListChildren items={ children } v-slots={ slots } />\n ),\n header: headerProps => slots.externalHeader\n ? slots.externalHeader({ ...itemProps, ...headerProps })\n : <VListItem { ...itemProps } { ...headerProps } />,\n }}\n </VListGroup>\n ) : (\n slots.item ? slots.item(itemProps) : <VListItem { ...itemProps } v-slots={ slots } />\n )\n })\n },\n})\n"],"file":"VListChildren.mjs"}
|