UNPKG

@xdp/button

Version:

button el-button vue3

149 lines (147 loc) 4.31 kB
var __defProp = Object.defineProperty; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; const POP_LEGACY_MAP = { popTitle: "title", popPlacement: "placement" }; const BUTTON_PROP_KEYS = [ "type", "size", "disabled", "danger", "showDisabled", "icon", "loading", "plain", "link", "round", "circle", "square", "map", "buttonType", "text" ]; const POP_PROP_KEYS = [ "title", "placement", "width", "icon", "iconColor", "hideIcon", "confirmButtonText", "cancelButtonText", "confirmButtonType", "cancelButtonType", "teleported", "persistent", "effect", "trigger", "popperClass", "popperStyle" ]; const POPOVER_PROP_KEYS = [ "placement", "width", "teleported", "persistent", "effect", "trigger", "popperClass", "popperStyle" ]; const POP_RESERVED_KEYS = /* @__PURE__ */ new Set([ "needPop", "popTitle", "popMessage", "popPlacement", "popProps", "popLegacyCancel", "buttonComp" ]); function pick(source, keys) { return keys.reduce((acc, key) => { if (source[key] !== void 0) { acc[key] = source[key]; } return acc; }, {}); } function mapLegacy(source) { return Object.entries(POP_LEGACY_MAP).reduce((acc, [legacyKey, epKey]) => { if (source[legacyKey] !== void 0) { acc[epKey] = source[legacyKey]; } return acc; }, {}); } function extractPopPrefixedAttrs(source) { return Object.entries(source).reduce((acc, [key, value]) => { if (key.startsWith("pop") && key.length > 3 && !POP_RESERVED_KEYS.has(key) && value !== void 0) { acc[key.charAt(3).toLowerCase() + key.slice(4)] = value; } return acc; }, {}); } function useButtonPop(props, attrs, slots) { var _b, _c, _d, _e, _f; const merged = __spreadValues(__spreadValues({}, props), attrs); const needPop = merged.needPop !== false; const _a = attrs, { onClick, onCancel } = _a, rest = __objRest(_a, ["onClick", "onCancel"]); const buttonProps = pick(merged, BUTTON_PROP_KEYS); const popProps = __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({ title: "\u786E\u5B9A\u5220\u9664\u8BE5\u4FE1\u606F", cancelButtonType: "default", placement: "top", width: 280 }, pick(rest, POP_PROP_KEYS)), extractPopPrefixedAttrs(rest)), mapLegacy(props)), mapLegacy(attrs)), (_b = props.popProps) != null ? _b : attrs.popProps); delete popProps.hideAfter; const legacyTitle = (_c = props.popTitle) != null ? _c : attrs.popTitle; const resolvedMessage = (_d = props.popMessage) != null ? _d : attrs.popMessage; const resolvedTitle = legacyTitle != null ? legacyTitle : resolvedMessage ? void 0 : popProps.title; const hasReferenceSlot = Boolean(slots.reference || slots.button); const hasRichPop = Boolean( resolvedMessage || slots["pop-title"] || slots["pop-message"] || slots.pop || hasReferenceSlot && slots.default ); const popLegacyCancel = (_f = (_e = props.popLegacyCancel) != null ? _e : attrs.popLegacyCancel) != null ? _f : true; const popoverProps = pick(popProps, POPOVER_PROP_KEYS); return { needPop, buttonProps, popProps, popoverProps, resolvedTitle, resolvedMessage, hasRichPop, hasReferenceSlot, onClick, onCancel, popLegacyCancel }; } export { useButtonPop };