UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 6.56 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":"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"}