{"version":3,"file":"ClearableLabeledInput.mjs","sources":["../../../../../../packages/components/input/src/ClearableLabeledInput.tsx"],"sourcesContent":["import type { InputStatus, MouseEventHandler, SizeType, VueNode } from '@antdv/types';\nimport type { CSSProperties, PropType, VNode } from 'vue';\nimport type { Direction } from '../../config-provider';\nimport { CloseCircleFilled } from '@ant-design/icons-vue';\nimport {\n  anyType,\n  classNames,\n  cloneElement,\n  getMergedStatus,\n  getStatusClassNames,\n  PropTypes,\n  tuple,\n} from '@antdv/utils';\nimport { defineComponent } from 'vue';\nimport { FormItemInputContext } from '../../form/src/FormItemContext';\nimport { hasAddon } from './util';\n\nconst ClearableInputType = ['text', 'input'] as const;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ClearableLabeledInput',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    inputType: PropTypes.oneOf(tuple('text', 'input')),\n    value: anyType<VueNode>(),\n    defaultValue: anyType<VueNode>(),\n    allowClear: { type: Boolean, default: undefined },\n    element: anyType<VueNode>(),\n    handleReset: Function as PropType<MouseEventHandler>,\n    disabled: { type: Boolean, default: undefined },\n    direction: { type: String as PropType<Direction> },\n    size: { type: String as PropType<SizeType> },\n    suffix: anyType<VueNode>(),\n    prefix: anyType<VueNode>(),\n    addonBefore: anyType<VueNode>(),\n    addonAfter: anyType<VueNode>(),\n    readonly: { type: Boolean, default: undefined },\n    focused: { type: Boolean, default: undefined },\n    bordered: { type: Boolean, default: true },\n    triggerFocus: { type: Function as PropType<() => void> },\n    hidden: Boolean,\n    status: String as PropType<InputStatus>,\n    hashId: String,\n  },\n  setup(props, { slots, attrs }) {\n    const statusContext = FormItemInputContext.useInject();\n\n    const renderClearIcon = (prefixCls: string) => {\n      const { value, disabled, readonly, handleReset, suffix = slots.suffix } = props;\n      const needClear = !disabled && !readonly && value;\n      const className = `${prefixCls}-clear-icon`;\n      return (\n        <CloseCircleFilled\n          onClick={handleReset}\n          // Do not trigger onBlur when clear input\n          onMousedown={e => e.preventDefault()}\n          class={classNames(\n            {\n              [`${className}-hidden`]: !needClear,\n              [`${className}-has-suffix`]: !!suffix,\n            },\n            className,\n          )}\n          role=\"button\"\n        />\n      );\n    };\n    const renderTextAreaWithClearIcon = (prefixCls: string, element: VNode) => {\n      const {\n        value,\n        allowClear,\n        direction,\n        bordered,\n        hidden,\n        status: customStatus,\n        addonAfter = slots.addonAfter,\n        addonBefore = slots.addonBefore,\n        hashId,\n      } = props;\n\n      const { status: contextStatus, hasFeedback } = statusContext;\n\n      if (!allowClear) {\n        return cloneElement(element, {\n          value,\n          disabled: props.disabled,\n        });\n      }\n      const affixWrapperCls = classNames(\n        `${prefixCls}-affix-wrapper`,\n        `${prefixCls}-affix-wrapper-textarea-with-clear-btn`,\n        getStatusClassNames(\n          `${prefixCls}-affix-wrapper`,\n          getMergedStatus(contextStatus, customStatus),\n          hasFeedback,\n        ),\n        {\n          [`${prefixCls}-affix-wrapper-rtl`]: direction === 'rtl',\n          [`${prefixCls}-affix-wrapper-borderless`]: !bordered,\n          // className will go to addon wrapper\n          [`${attrs.class}`]: !hasAddon({ addonAfter, addonBefore }) && attrs.class,\n        },\n        hashId,\n      );\n      return (\n        <span class={affixWrapperCls} style={attrs.style as CSSProperties} hidden={hidden}>\n          {cloneElement(element, {\n            style: null,\n            value,\n            disabled: props.disabled,\n          })}\n          {renderClearIcon(prefixCls)}\n        </span>\n      );\n    };\n\n    return () => {\n      const { prefixCls, inputType, element = slots.element?.() } = props;\n      if (inputType === ClearableInputType[0])\n        return renderTextAreaWithClearIcon(prefixCls, element as VNode);\n\n      return null;\n    };\n  },\n});\n"],"names":["ClearableInputType","compatConfig","MODE","name","inheritAttrs","props","prefixCls","String","inputType","PropTypes","oneOf","tuple","value","anyType","defaultValue","allowClear","type","Boolean","default","undefined","element","handleReset","Function","disabled","direction","size","suffix","prefix","addonBefore","addonAfter","readonly","focused","bordered","triggerFocus","hidden","status","hashId","setup","slots","attrs","statusContext","FormItemInputContext","useInject","renderClearIcon","needClear","className","_createVNode","CloseCircleFilled","e","preventDefault","classNames","renderTextAreaWithClearIcon","customStatus","contextStatus","hasFeedback","cloneElement","affixWrapperCls","getStatusClassNames","getMergedStatus","class","hasAddon","style"],"mappings":"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"}