You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 lines
8.0 KiB

{"ast":null,"code":"import { computed, inject, ref, useSlots, Text } from 'vue';\nimport { buttonGroupContextKey } from './constants.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\nimport { useGlobalConfig } from '../../config-provider/src/hooks/use-global-config.mjs';\nimport { useFormItem } from '../../form/src/hooks/use-form-item.mjs';\nimport { useFormSize, useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';\nconst useButton = (props, emit) => {\n useDeprecated({\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 }, computed(() => props.type === \"text\"));\n const buttonGroupContext = inject(buttonGroupContextKey, void 0);\n const globalConfig = useGlobalConfig(\"button\");\n const {\n form\n } = useFormItem();\n const _size = useFormSize(computed(() => buttonGroupContext == null ? void 0 : buttonGroupContext.size));\n const _disabled = useFormDisabled();\n const _ref = ref();\n const slots = useSlots();\n const _type = computed(() => props.type || (buttonGroupContext == null ? void 0 : buttonGroupContext.type) || \"\");\n const autoInsertSpace = computed(() => {\n var _a, _b, _c;\n return (_c = (_b = props.autoInsertSpace) != null ? _b : (_a = globalConfig.value) == null ? void 0 : _a.autoInsertSpace) != null ? _c : 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 const shouldAddSpace = computed(() => {\n var _a;\n const defaultSlot = (_a = slots.default) == null ? void 0 : _a.call(slots);\n if (autoInsertSpace.value && (defaultSlot == null ? void 0 : defaultSlot.length) === 1) {\n const slot = defaultSlot[0];\n if ((slot == null ? void 0 : slot.type) === Text) {\n const text = slot.children;\n return /^\\p{Unified_Ideograph}{2}$/u.test(text.trim());\n }\n }\n return false;\n });\n const handleClick = evt => {\n if (_disabled.value || props.loading) {\n evt.stopPropagation();\n return;\n }\n if (props.nativeType === \"reset\") {\n form == null ? void 0 : form.resetFields();\n }\n emit(\"click\", evt);\n };\n return {\n _disabled,\n _size,\n _type,\n _ref,\n _props,\n shouldAddSpace,\n handleClick\n };\n};\nexport { useButton };","map":{"version":3,"names":["useButton","props","emit","useDeprecated","from","replacement","version","scope","ref","computed","type","buttonGroupContext","inject","buttonGroupContextKey","globalConfig","useGlobalConfig","form","useFormItem","_size","useFormSize","size","_disabled","useFormDisabled","_ref","slots","useSlots","_type","autoInsertSpace","_a","_b","_c","value","_props","tag","ariaDisabled","loading","disabled","autofocus","nativeType","shouldAddSpace","defaultSlot","default","call","length","slot","Text","text","children","test","trim","handleClick","evt","stopPropagation","resetFields"],"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(() => props.type || buttonGroupContext?.type || '')\n const autoInsertSpace = computed(\n () => props.autoInsertSpace ?? globalConfig.value?.autoInsertSpace ?? false\n )\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 shouldAddSpace,\n handleClick,\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}