@xdp/button
Version:
button el-button vue3
149 lines (147 loc) • 4.31 kB
JavaScript
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 };