92 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { computed, inject, ref, useSlots, Text } from 'vue';
 | |
| import { buttonGroupContextKey } from './constants.mjs';
 | |
| import { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';
 | |
| import { useGlobalConfig } from '../../config-provider/src/hooks/use-global-config.mjs';
 | |
| import { useFormItem } from '../../form/src/hooks/use-form-item.mjs';
 | |
| import { useFormSize, useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';
 | |
| 
 | |
| const useButton = (props, emit) => {
 | |
|   useDeprecated({
 | |
|     from: "type.text",
 | |
|     replacement: "link",
 | |
|     version: "3.0.0",
 | |
|     scope: "props",
 | |
|     ref: "https://element-plus.org/en-US/component/button.html#button-attributes"
 | |
|   }, computed(() => props.type === "text"));
 | |
|   const buttonGroupContext = inject(buttonGroupContextKey, void 0);
 | |
|   const globalConfig = useGlobalConfig("button");
 | |
|   const { form } = useFormItem();
 | |
|   const _size = useFormSize(computed(() => buttonGroupContext == null ? void 0 : buttonGroupContext.size));
 | |
|   const _disabled = useFormDisabled();
 | |
|   const _ref = ref();
 | |
|   const slots = useSlots();
 | |
|   const _type = computed(() => {
 | |
|     var _a;
 | |
|     return props.type || (buttonGroupContext == null ? void 0 : buttonGroupContext.type) || ((_a = globalConfig.value) == null ? void 0 : _a.type) || "";
 | |
|   });
 | |
|   const autoInsertSpace = computed(() => {
 | |
|     var _a, _b, _c;
 | |
|     return (_c = (_b = props.autoInsertSpace) != null ? _b : (_a = globalConfig.value) == null ? void 0 : _a.autoInsertSpace) != null ? _c : false;
 | |
|   });
 | |
|   const _plain = computed(() => {
 | |
|     var _a, _b, _c;
 | |
|     return (_c = (_b = props.plain) != null ? _b : (_a = globalConfig.value) == null ? void 0 : _a.plain) != null ? _c : false;
 | |
|   });
 | |
|   const _round = computed(() => {
 | |
|     var _a, _b, _c;
 | |
|     return (_c = (_b = props.round) != null ? _b : (_a = globalConfig.value) == null ? void 0 : _a.round) != null ? _c : false;
 | |
|   });
 | |
|   const _text = computed(() => {
 | |
|     var _a, _b, _c;
 | |
|     return (_c = (_b = props.text) != null ? _b : (_a = globalConfig.value) == null ? void 0 : _a.text) != null ? _c : false;
 | |
|   });
 | |
|   const _props = computed(() => {
 | |
|     if (props.tag === "button") {
 | |
|       return {
 | |
|         ariaDisabled: _disabled.value || props.loading,
 | |
|         disabled: _disabled.value || props.loading,
 | |
|         autofocus: props.autofocus,
 | |
|         type: props.nativeType
 | |
|       };
 | |
|     }
 | |
|     return {};
 | |
|   });
 | |
|   const shouldAddSpace = computed(() => {
 | |
|     var _a;
 | |
|     const defaultSlot = (_a = slots.default) == null ? void 0 : _a.call(slots);
 | |
|     if (autoInsertSpace.value && (defaultSlot == null ? void 0 : defaultSlot.length) === 1) {
 | |
|       const slot = defaultSlot[0];
 | |
|       if ((slot == null ? void 0 : slot.type) === Text) {
 | |
|         const text = slot.children;
 | |
|         return /^\p{Unified_Ideograph}{2}$/u.test(text.trim());
 | |
|       }
 | |
|     }
 | |
|     return false;
 | |
|   });
 | |
|   const handleClick = (evt) => {
 | |
|     if (_disabled.value || props.loading) {
 | |
|       evt.stopPropagation();
 | |
|       return;
 | |
|     }
 | |
|     if (props.nativeType === "reset") {
 | |
|       form == null ? void 0 : form.resetFields();
 | |
|     }
 | |
|     emit("click", evt);
 | |
|   };
 | |
|   return {
 | |
|     _disabled,
 | |
|     _size,
 | |
|     _type,
 | |
|     _ref,
 | |
|     _props,
 | |
|     _plain,
 | |
|     _round,
 | |
|     _text,
 | |
|     shouldAddSpace,
 | |
|     handleClick
 | |
|   };
 | |
| };
 | |
| 
 | |
| export { useButton };
 | |
| //# sourceMappingURL=use-button.mjs.map
 |