{"version":3,"file":"VExpansionPanelTitle.mjs","names":["VExpansionPanelSymbol","VDefaultsProvider","VIcon","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","IconValue","Ripple","computed","inject","genericComponent","propsFactory","useRender","makeVExpansionPanelTitleProps","color","String","expandIcon","type","default","collapseIcon","hideActions","Boolean","focusable","static","ripple","Object","readonly","VExpansionPanelTitle","name","directives","props","setup","_ref","slots","expansionPanel","Error","backgroundColorClasses","backgroundColorStyles","dimensionStyles","slotProps","disabled","value","expanded","isSelected","icon","_withDirectives","_createVNode","class","style","undefined","toggle","actions","_resolveDirective"],"sources":["../../../src/components/VExpansionPanel/VExpansionPanelTitle.tsx"],"sourcesContent":["// Components\nimport { VExpansionPanelSymbol } from './shared'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { IconValue } from '@/composables/icons'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ninterface ExpansionPanelTitleSlot {\n  collapseIcon: IconValue\n  disabled: boolean | undefined\n  expanded: boolean\n  expandIcon: IconValue\n  readonly: boolean\n}\n\nexport type VExpansionPanelTitleSlots = {\n  default: ExpansionPanelTitleSlot\n  actions: ExpansionPanelTitleSlot\n}\n\nexport const makeVExpansionPanelTitleProps = propsFactory({\n  color: String,\n  expandIcon: {\n    type: IconValue,\n    default: '$expand',\n  },\n  collapseIcon: {\n    type: IconValue,\n    default: '$collapse',\n  },\n  hideActions: Boolean,\n  focusable: Boolean,\n  static: Boolean,\n  ripple: {\n    type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n    default: false,\n  },\n  readonly: Boolean,\n\n  ...makeComponentProps(),\n  ...makeDimensionProps(),\n}, 'VExpansionPanelTitle')\n\nexport const VExpansionPanelTitle = genericComponent<VExpansionPanelTitleSlots>()({\n  name: 'VExpansionPanelTitle',\n\n  directives: { Ripple },\n\n  props: makeVExpansionPanelTitleProps(),\n\n  setup (props, { slots }) {\n    const expansionPanel = inject(VExpansionPanelSymbol)\n\n    if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel')\n\n    const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n    const { dimensionStyles } = useDimension(props)\n\n    const slotProps = computed(() => ({\n      collapseIcon: props.collapseIcon,\n      disabled: expansionPanel.disabled.value,\n      expanded: expansionPanel.isSelected.value,\n      expandIcon: props.expandIcon,\n      readonly: props.readonly,\n    }))\n\n    const icon = computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon)\n\n    useRender(() => (\n      <button\n        class={[\n          'v-expansion-panel-title',\n          {\n            'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n            'v-expansion-panel-title--focusable': props.focusable,\n            'v-expansion-panel-title--static': props.static,\n          },\n          backgroundColorClasses.value,\n          props.class,\n        ]}\n        style={[\n          backgroundColorStyles.value,\n          dimensionStyles.value,\n          props.style,\n        ]}\n        type=\"button\"\n        tabindex={ expansionPanel.disabled.value ? -1 : undefined }\n        disabled={ expansionPanel.disabled.value }\n        aria-expanded={ expansionPanel.isSelected.value }\n        onClick={ !props.readonly ? expansionPanel.toggle : undefined }\n        v-ripple={ props.ripple }\n      >\n        <span class=\"v-expansion-panel-title__overlay\" />\n\n        { slots.default?.(slotProps.value) }\n\n        { !props.hideActions && (\n          <VDefaultsProvider\n            defaults={{\n              VIcon: {\n                icon: icon.value,\n              },\n            }}\n          >\n            <span class=\"v-expansion-panel-title__icon\">\n              { slots.actions?.(slotProps.value) ?? <VIcon /> }\n            </span>\n          </VDefaultsProvider>\n        )}\n      </button>\n    ))\n\n    return {}\n  },\n})\n\nexport type VExpansionPanelTitle = InstanceType<typeof VExpansionPanelTitle>\n"],"mappings":"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","ignoreList":[]}