vuetify
Version:
Vue Material Component Framework
1 lines • 8.28 kB
Source Map (JSON)
{"version":3,"file":"VExpansionPanel.mjs","names":["makeVExpansionPanelTitleProps","VExpansionPanelTitle","VExpansionPanelSymbol","VExpansionPanelText","makeElevationProps","useElevation","makeGroupItemProps","useGroupItem","makeLazyProps","makeRoundedProps","useRounded","makeTagProps","useBackgroundColor","computed","provide","genericComponent","useRender","VExpansionPanel","name","props","title","String","text","bgColor","emits","val","setup","slots","groupItem","backgroundColorClasses","backgroundColorStyles","elevationClasses","roundedClasses","isDisabled","disabled","value","selectedIndices","group","items","reduce","arr","item","index","selected","includes","id","push","isBeforeSelected","findIndex","isSelected","some","selectedIndex","isAfterSelected","hasText","hasTitle","collapseIcon","color","expandIcon","hideActions","ripple","eager","default"],"sources":["../../../src/components/VExpansionPanel/VExpansionPanel.tsx"],"sourcesContent":["// Components\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from './VExpansionPanelTitle'\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { VExpansionPanelText } from './VExpansionPanelText'\n\n// Composables\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeLazyProps } from '@/composables/lazy'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { computed, provide } from 'vue'\nimport { genericComponent, useRender } from '@/util'\n\nexport type VExpansionPanelSlots = {\n default: []\n title: []\n text: []\n}\n\nexport const VExpansionPanel = genericComponent<VExpansionPanelSlots>()({\n name: 'VExpansionPanel',\n\n props: {\n title: String,\n text: String,\n bgColor: String,\n\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeVExpansionPanelTitleProps(),\n },\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { slots }) {\n const groupItem = useGroupItem(props, VExpansionPanelSymbol)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'bgColor')\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const isDisabled = computed(() => groupItem?.disabled.value || props.disabled)\n\n const selectedIndices = computed(() => groupItem.group.items.value.reduce<number[]>((arr, item, index) => {\n if (groupItem.group.selected.value.includes(item.id)) arr.push(index)\n return arr\n }, []))\n\n const isBeforeSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n selectedIndices.value.some(selectedIndex => selectedIndex - 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 selectedIndices.value.some(selectedIndex => selectedIndex - index === -1)\n })\n\n provide(VExpansionPanelSymbol, groupItem)\n\n useRender(() => {\n const hasText = !!(slots.text || props.text)\n const hasTitle = !!(slots.title || props.title)\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': isDisabled.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\n { hasTitle && (\n <VExpansionPanelTitle\n key=\"title\"\n collapseIcon={ props.collapseIcon }\n color={ props.color }\n expandIcon={ props.expandIcon }\n hideActions={ props.hideActions }\n ripple={ props.ripple }\n >\n { slots.title ? slots.title() : props.title }\n </VExpansionPanelTitle>\n ) }\n\n { hasText && (\n <VExpansionPanelText key=\"text\" eager={ props.eager }>\n { slots.text ? slots.text() : props.text }\n </VExpansionPanelText>\n ) }\n\n { slots.default?.() }\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VExpansionPanel = InstanceType<typeof VExpansionPanel>\n"],"mappings":"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"}