{"version":3,"file":"VAlert.mjs","names":["VAlertTitle","VBtn","VDefaultsProvider","VIcon","useTextColor","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useLocale","makeLocationProps","useLocation","makePositionProps","usePosition","useProxiedModel","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","computed","toRef","genericComponent","propsFactory","allowedTypes","makeVAlertProps","border","type","Boolean","String","validator","val","includes","borderColor","closable","closeIcon","default","closeLabel","icon","Function","Object","modelValue","prominent","title","text","variant","VAlert","name","props","emits","e","value","setup","_ref","emit","slots","isActive","undefined","variantProps","color","themeClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","locationStyles","positionClasses","roundedClasses","textColorClasses","textColorStyles","t","closeProps","onClick","hasPrepend","prepend","hasTitle","hasClose","close","_createVNode","tag","class","style","density","size","append","_mergeProps"],"sources":["../../../src/components/VAlert/VAlert.tsx"],"sourcesContent":["// Styles\nimport './VAlert.sass'\n\n// Components\nimport { VAlertTitle } from './VAlertTitle'\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst allowedTypes = ['success', 'info', 'warning', 'error'] as const\n\ntype ContextualType = typeof allowedTypes[number]\n\nexport const makeVAlertProps = propsFactory({\n  border: {\n    type: [Boolean, String] as PropType<boolean | 'top' | 'end' | 'bottom' | 'start'>,\n    validator: (val: boolean | string) => {\n      return typeof val === 'boolean' || [\n        'top',\n        'end',\n        'bottom',\n        'start',\n      ].includes(val)\n    },\n  },\n  borderColor: String,\n  closable: Boolean,\n  closeIcon: {\n    type: IconValue,\n    default: '$close',\n  },\n  closeLabel: {\n    type: String,\n    default: '$vuetify.close',\n  },\n  icon: {\n    type: [Boolean, String, Function, Object] as PropType<false | IconValue>,\n    default: null,\n  },\n  modelValue: {\n    type: Boolean,\n    default: true,\n  },\n  prominent: Boolean,\n  title: String,\n  text: String,\n  type: {\n    type: String as PropType<ContextualType>,\n    validator: (val: ContextualType) => allowedTypes.includes(val),\n  },\n\n  ...makeComponentProps(),\n  ...makeDensityProps(),\n  ...makeDimensionProps(),\n  ...makeElevationProps(),\n  ...makeLocationProps(),\n  ...makePositionProps(),\n  ...makeRoundedProps(),\n  ...makeTagProps(),\n  ...makeThemeProps(),\n  ...makeVariantProps({ variant: 'flat' } as const),\n}, 'VAlert')\n\nexport type VAlertSlots = {\n  default: never\n  prepend: never\n  title: never\n  text: never\n  append: never\n  close: { props: Record<string, any> }\n}\n\nexport const VAlert = genericComponent<VAlertSlots>()({\n  name: 'VAlert',\n\n  props: makeVAlertProps(),\n\n  emits: {\n    'click:close': (e: MouseEvent) => true,\n    'update:modelValue': (value: boolean) => true,\n  },\n\n  setup (props, { emit, slots }) {\n    const isActive = useProxiedModel(props, 'modelValue')\n    const icon = computed(() => {\n      if (props.icon === false) return undefined\n      if (!props.type) return props.icon\n\n      return props.icon ?? `$${props.type}`\n    })\n    const variantProps = computed(() => ({\n      color: props.color ?? props.type,\n      variant: props.variant,\n    }))\n\n    const { themeClasses } = provideTheme(props)\n    const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n    const { densityClasses } = useDensity(props)\n    const { dimensionStyles } = useDimension(props)\n    const { elevationClasses } = useElevation(props)\n    const { locationStyles } = useLocation(props)\n    const { positionClasses } = usePosition(props)\n    const { roundedClasses } = useRounded(props)\n    const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'borderColor'))\n    const { t } = useLocale()\n\n    const closeProps = computed(() => ({\n      'aria-label': t(props.closeLabel),\n      onClick (e: MouseEvent) {\n        isActive.value = false\n\n        emit('click:close', e)\n      },\n    }))\n\n    return () => {\n      const hasPrepend = !!(slots.prepend || icon.value)\n      const hasTitle = !!(slots.title || props.title)\n      const hasClose = !!(slots.close || props.closable)\n\n      return isActive.value && (\n        <props.tag\n          class={[\n            'v-alert',\n            props.border && {\n              'v-alert--border': !!props.border,\n              [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true,\n            },\n            {\n              'v-alert--prominent': props.prominent,\n            },\n            themeClasses.value,\n            colorClasses.value,\n            densityClasses.value,\n            elevationClasses.value,\n            positionClasses.value,\n            roundedClasses.value,\n            variantClasses.value,\n            props.class,\n          ]}\n          style={[\n            colorStyles.value,\n            dimensionStyles.value,\n            locationStyles.value,\n            props.style,\n          ]}\n          role=\"alert\"\n        >\n          { genOverlays(false, 'v-alert') }\n\n          { props.border && (\n            <div\n              key=\"border\"\n              class={[\n                'v-alert__border',\n                textColorClasses.value,\n              ]}\n              style={ textColorStyles.value }\n            />\n          )}\n\n          { hasPrepend && (\n            <div key=\"prepend\" class=\"v-alert__prepend\">\n              { !slots.prepend ? (\n                <VIcon\n                  key=\"prepend-icon\"\n                  density={ props.density }\n                  icon={ icon.value }\n                  size={ props.prominent ? 44 : 28 }\n                />\n              ) : (\n                <VDefaultsProvider\n                  key=\"prepend-defaults\"\n                  disabled={ !icon.value }\n                  defaults={{\n                    VIcon: {\n                      density: props.density,\n                      icon: icon.value,\n                      size: props.prominent ? 44 : 28,\n                    },\n                  }}\n                  v-slots:default={ slots.prepend }\n                />\n              )}\n            </div>\n          )}\n\n          <div class=\"v-alert__content\">\n            { hasTitle && (\n              <VAlertTitle key=\"title\">\n                { slots.title?.() ?? props.title }\n              </VAlertTitle>\n            )}\n\n            { slots.text?.() ?? props.text }\n\n            { slots.default?.() }\n          </div>\n\n          { slots.append && (\n            <div key=\"append\" class=\"v-alert__append\">\n              { slots.append() }\n            </div>\n          )}\n\n          { hasClose && (\n            <div key=\"close\" class=\"v-alert__close\">\n              { !slots.close ? (\n                <VBtn\n                  key=\"close-btn\"\n                  icon={ props.closeIcon }\n                  size=\"x-small\"\n                  variant=\"text\"\n                  { ...closeProps.value }\n                />\n              ) : (\n                <VDefaultsProvider\n                  key=\"close-defaults\"\n                  defaults={{\n                    VBtn: {\n                      icon: props.closeIcon,\n                      size: 'x-small',\n                      variant: 'text',\n                    },\n                  }}\n                >\n                  { slots.close?.({ props: closeProps.value }) }\n                </VDefaultsProvider>\n              )}\n            </div>\n          )}\n        </props.tag>\n      )\n    }\n  },\n})\n\nexport type VAlert = InstanceType<typeof VAlert>\n"],"mappings":"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","ignoreList":[]}