UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 6.31 kB
{"version":3,"file":"use-button.mjs","sources":["../../../../../../packages/components/button/src/use-button.ts"],"sourcesContent":["import { Text, computed, inject, ref, useSlots } from 'vue'\nimport {\n useFormDisabled,\n useFormItem,\n useFormSize,\n} from '@element-plus/components/form'\nimport { useGlobalConfig } from '@element-plus/components/config-provider'\nimport { useDeprecated } from '@element-plus/hooks'\nimport { buttonGroupContextKey } from './constants'\n\nimport type { SetupContext } from 'vue'\nimport type { ButtonEmits, ButtonProps } from './button'\n\nexport const useButton = (\n props: ButtonProps,\n emit: SetupContext<ButtonEmits>['emit']\n) => {\n useDeprecated(\n {\n from: 'type.text',\n replacement: 'link',\n version: '3.0.0',\n scope: 'props',\n ref: 'https://element-plus.org/en-US/component/button.html#button-attributes',\n },\n computed(() => props.type === 'text')\n )\n\n const buttonGroupContext = inject(buttonGroupContextKey, undefined)\n const globalConfig = useGlobalConfig('button')\n const { form } = useFormItem()\n const _size = useFormSize(computed(() => buttonGroupContext?.size))\n const _disabled = useFormDisabled()\n const _ref = ref<HTMLButtonElement>()\n const slots = useSlots()\n\n const _type = computed(\n () =>\n props.type || buttonGroupContext?.type || globalConfig.value?.type || ''\n )\n const autoInsertSpace = computed(\n () => props.autoInsertSpace ?? globalConfig.value?.autoInsertSpace ?? false\n )\n const _plain = computed(\n () => props.plain ?? globalConfig.value?.plain ?? false\n )\n const _round = computed(\n () => props.round ?? globalConfig.value?.round ?? false\n )\n const _text = computed(() => props.text ?? globalConfig.value?.text ?? false)\n\n const _props = computed(() => {\n if (props.tag === 'button') {\n return {\n ariaDisabled: _disabled.value || props.loading,\n disabled: _disabled.value || props.loading,\n autofocus: props.autofocus,\n type: props.nativeType,\n }\n }\n return {}\n })\n\n // add space between two characters in Chinese\n const shouldAddSpace = computed(() => {\n const defaultSlot = slots.default?.()\n if (autoInsertSpace.value && defaultSlot?.length === 1) {\n const slot = defaultSlot[0]\n if (slot?.type === Text) {\n const text = slot.children as string\n return /^\\p{Unified_Ideograph}{2}$/u.test(text.trim())\n }\n }\n return false\n })\n\n const handleClick = (evt: MouseEvent) => {\n if (_disabled.value || props.loading) {\n evt.stopPropagation()\n return\n }\n if (props.nativeType === 'reset') {\n form?.resetFields()\n }\n emit('click', evt)\n }\n\n return {\n _disabled,\n _size,\n _type,\n _ref,\n _props,\n _plain,\n _round,\n _text,\n shouldAddSpace,\n handleClick,\n }\n}\n"],"names":[],"mappings":";;;;;;;AAaO,MAAM,SAAA,GAAY,CACvB,KAAA,EACA,IAAA,KACG;AACH,EAAA,aAAA;AAAA,IACE;AAAA,MACE,IAAA,EAAM,WAAA;AAAA,MACN,WAAA,EAAa,MAAA;AAAA,MACb,OAAA,EAAS,OAAA;AAAA,MACT,KAAA,EAAO,OAAA;AAAA,MACP,GAAA,EAAK;AAAA,KACP;AAAA,IACA,QAAA,CAAS,MAAM,KAAA,CAAM,IAAA,KAAS,MAAM;AAAA,GACtC;AAEA,EAAA,MAAM,kBAAA,GAAqB,MAAA,CAAO,qBAAA,EAAuB,MAAS,CAAA;AAClE,EAAA,MAAM,YAAA,GAAe,gBAAgB,QAAQ,CAAA;AAC7C,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,WAAA,EAAY;AAC7B,EAAA,MAAM,QAAQ,WAAA,CAAY,QAAA,CAAS,MAAM,kBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,kBAAA,CAAoB,IAAI,CAAC,CAAA;AAClE,EAAA,MAAM,YAAY,eAAA,EAAgB;AAClC,EAAA,MAAM,OAAO,GAAA,EAAuB;AACpC,EAAA,MAAM,QAAQ,QAAA,EAAS;AAEvB,EAAA,MAAM,KAAA,GAAQ,QAAA;AAAA,IACZ,MAAG;AArCP,MAAA,IAAA,EAAA;AAsCM,MAAA,OAAA,KAAA,CAAM,SAAQ,kBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,kBAAA,CAAoB,IAAA,CAAA,KAAA,CAAQ,EAAA,GAAA,YAAA,CAAa,KAAA,KAAb,mBAAoB,IAAA,CAAA,IAAQ,EAAA;AAAA,IAAA;AAAA,GAC1E;AACA,EAAA,MAAM,eAAA,GAAkB,QAAA;AAAA,IACtB,MAAG;AAzCP,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAyCU,MAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,oBAAN,IAAA,GAAA,EAAA,GAAA,CAAyB,EAAA,GAAA,YAAA,CAAa,KAAA,KAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoB,oBAA7C,IAAA,GAAA,EAAA,GAAgE,KAAA;AAAA,IAAA;AAAA,GACxE;AACA,EAAA,MAAM,MAAA,GAAS,QAAA;AAAA,IACb,MAAG;AA5CP,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA4CU,MAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,UAAN,IAAA,GAAA,EAAA,GAAA,CAAe,EAAA,GAAA,YAAA,CAAa,KAAA,KAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoB,UAAnC,IAAA,GAAA,EAAA,GAA4C,KAAA;AAAA,IAAA;AAAA,GACpD;AACA,EAAA,MAAM,MAAA,GAAS,QAAA;AAAA,IACb,MAAG;AA/CP,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA+CU,MAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,UAAN,IAAA,GAAA,EAAA,GAAA,CAAe,EAAA,GAAA,YAAA,CAAa,KAAA,KAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoB,UAAnC,IAAA,GAAA,EAAA,GAA4C,KAAA;AAAA,IAAA;AAAA,GACpD;AACA,EAAA,MAAM,KAAA,GAAQ,SAAS,MAAG;AAjD5B,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAiD+B,IAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAN,IAAA,GAAA,EAAA,GAAA,CAAc,EAAA,GAAA,YAAA,CAAa,KAAA,KAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoB,SAAlC,IAAA,GAAA,EAAA,GAA0C,KAAA;AAAA,EAAA,CAAK,CAAA;AAE5E,EAAA,MAAM,MAAA,GAAS,SAAS,MAAM;AAC5B,IAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,MAAA,OAAO;AAAA,QACL,YAAA,EAAc,SAAA,CAAU,KAAA,IAAS,KAAA,CAAM,OAAA;AAAA,QACvC,QAAA,EAAU,SAAA,CAAU,KAAA,IAAS,KAAA,CAAM,OAAA;AAAA,QACnC,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,MAAM,KAAA,CAAM;AAAA,OACd;AAAA,IACF;AACA,IAAA,OAAO,EAAC;AAAA,EACV,CAAC,CAAA;AAGD,EAAA,MAAM,cAAA,GAAiB,SAAS,MAAM;AAhExC,IAAA,IAAA,EAAA;AAiEI,IAAA,MAAM,WAAA,GAAA,CAAc,WAAM,OAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA;AACpB,IAAA,IAAI,eAAA,CAAgB,KAAA,IAAA,CAAS,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAa,MAAA,MAAW,CAAA,EAAG;AACtD,MAAA,MAAM,IAAA,GAAO,YAAY,CAAC,CAAA;AAC1B,MAAA,IAAA,CAAI,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,UAAS,IAAA,EAAM;AACvB,QAAA,MAAM,OAAO,IAAA,CAAK,QAAA;AAClB,QAAA,OAAO,6BAAA,CAA8B,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,CAAA;AAAA,MACvD;AAAA,IACF;AACA,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,WAAA,GAAc,CAAC,GAAA,KAAoB;AACvC,IAAA,IAAI,SAAA,CAAU,KAAA,IAAS,KAAA,CAAM,OAAA,EAAS;AACpC,MAAA,GAAA,CAAI,eAAA,EAAgB;AACpB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,eAAe,OAAA,EAAS;AAChC,MAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,WAAA,EAAA;AAAA,IACR;AACA,IAAA,IAAA,CAAK,SAAS,GAAG,CAAA;AAAA,EACnB,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}