UNPKG

@wfrog/vc

Version:

`自用` 的基于 `element-plus` 二次封装的 `vue3` 组件库。追求在业务场景中,尽可能使用更少的代码量来实现需求。 因此在组件封装上,以 `方便` 为主,打包仅 `esm` 模式。

385 lines (362 loc) 14.8 kB
import './index.css' var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); // vue-script:D:\project\_my\vc\src\components\button\index.vue?type=script import { defineComponent as _defineComponent3 } from "vue"; import { unref as _unref, openBlock as _openBlock5, createBlock as _createBlock3, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, createElementBlock as _createElementBlock4, mergeProps as _mergeProps, withCtx as _withCtx2, createVNode as _createVNode, pushScopeId as _pushScopeId2, popScopeId as _popScopeId2 } from "vue"; import { computed as computed2 } from "vue"; import { ElButton, ElMessageBox, ElPopconfirm } from "element-plus"; // node_modules/@vueuse/shared/node_modules/vue-demi/lib/index.mjs var lib_exports = {}; __export(lib_exports, { Vue: () => Vue, Vue2: () => Vue2, del: () => del, install: () => install, isVue2: () => isVue2, isVue3: () => isVue3, set: () => set }); __reExport(lib_exports, vue_star); import * as Vue from "vue"; import * as vue_star from "vue"; var isVue2 = false; var isVue3 = true; var Vue2 = void 0; function install() { } function set(target, key, val) { if (Array.isArray(target)) { target.length = Math.max(target.length, key); target.splice(key, 1, val); return val; } target[key] = val; return val; } function del(target, key) { if (Array.isArray(target)) { target.splice(key, 1); return; } delete target[key]; } // node_modules/@vueuse/shared/index.mjs var _a; var isClient = typeof window !== "undefined"; var isIOS = isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent); function resolveUnref(r) { return typeof r === "function" ? r() : (0, lib_exports.unref)(r); } function createFilterWrapper(filter, fn) { function wrapper(...args) { filter(() => fn.apply(this, args), { fn, thisArg: this, args }); } return wrapper; } function throttleFilter(ms, trailing = true, leading = true) { let lastExec = 0; let timer; let isLeading = true; const clear = () => { if (timer) { clearTimeout(timer); timer = void 0; } }; const filter = (invoke) => { const duration = resolveUnref(ms); const elapsed = Date.now() - lastExec; clear(); if (duration <= 0) { lastExec = Date.now(); return invoke(); } if (elapsed > duration && (leading || !isLeading)) { lastExec = Date.now(); invoke(); } else if (trailing) { timer = setTimeout(() => { lastExec = Date.now(); isLeading = true; clear(); invoke(); }, duration); } if (!leading && !timer) timer = setTimeout(() => isLeading = true, duration); isLeading = false; }; return filter; } function useThrottleFn(fn, ms = 200, trailing = false, leading = true) { return createFilterWrapper(throttleFilter(ms, trailing, leading), fn); } // src/use/useStore.ts import { inject as inject2, provide as provide2 } from "vue"; function useInject(keyName) { const keys = inject2(keyName, {}); const result = {}; Object.keys(keys).forEach((key) => { result[key] = inject2(keys[key]); }); return result; } // src/components/config-provider/config.ts var KEY_NAME = Symbol("VCConfig"); var injectConfig = () => useInject(KEY_NAME); // vue-script:D:\project\_my\vc\src\components\icon\index.vue?type=script import { defineComponent as defineComponent2 } from "vue"; // vue-script:D:\project\_my\vc\src\components\el-icon\index.vue?type=script import { defineComponent } from "vue"; import { ElIcon } from "element-plus"; import * as Icons from "@element-plus/icons-vue"; var el_icon_default = defineComponent({ components: { ...Icons, ElIcon }, props: { name: { type: String, required: true }, color: { type: String, default: "" }, size: { type: [Number, String], default: "" } } }); // vue-template:D:\project\_my\vc\src\components\el-icon\index.vue?type=template import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, withCtx as _withCtx } from "vue"; function render(_ctx, _cache) { const _component_ElIcon = _resolveComponent("ElIcon"); return _openBlock(), _createBlock(_component_ElIcon, { size: _ctx.size, color: _ctx.color, class: _normalizeClass(_ctx.$style.icon) }, { default: _withCtx(() => [ (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.name))) ]), _: 1 }, 8, ["size", "color", "class"]); } // vue-style:D:\project\_my\vc\src\components\el-icon\index.vue?type=style&index=0&isModule=true&isNameImport=true var el_icon_default2 = { icon: "_icon_1iurh_1" }; // src/components/el-icon/index.vue el_icon_default.render = render; var cssModules = {}; el_icon_default.__cssModules = cssModules = {}; cssModules["$style"] = el_icon_default2; var el_icon_default3 = el_icon_default; // vue-script:D:\project\_my\vc\src\components\svg-icon\index.vue?type=script import { defineComponent as _defineComponent } from "vue"; import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass2, openBlock as _openBlock2, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from "vue"; var _hoisted_1 = ["xlink:href"]; var svg_icon_default = /* @__PURE__ */ _defineComponent({ __name: "index", props: { name: { type: String, required: true } }, setup(__props) { const props = __props; return (_ctx, _cache) => { return _openBlock2(), _createElementBlock("svg", { class: _normalizeClass2(["svg-icon", [_ctx.$style.icon]]), "aria-hidden": "true" }, [ _createElementVNode("use", { "xlink:href": `#icon-${props.name}` }, null, 8, _hoisted_1) ], 2); }; } }); // vue-style:D:\project\_my\vc\src\components\svg-icon\index.vue?type=style&index=0&isModule=true&isNameImport=true var svg_icon_default2 = { icon: "_icon_15t6e_1" }; // src/components/svg-icon/index.vue var cssModules2 = {}; svg_icon_default.__cssModules = cssModules2 = {}; cssModules2["$style"] = svg_icon_default2; var svg_icon_default3 = svg_icon_default; // vue-script:D:\project\_my\vc\src\components\awesome-icon\index.vue?type=script import { defineComponent as _defineComponent2 } from "vue"; import { normalizeClass as _normalizeClass3, openBlock as _openBlock3, createElementBlock as _createElementBlock2 } from "vue"; import { onMounted as onMounted2 } from "vue"; import { defaultWindow, loader } from "@wfrog/utils"; var awesome_icon_default = /* @__PURE__ */ _defineComponent2({ __name: "index", props: { name: { type: String, default: "" }, mode: { type: String, default: "css" } }, setup(__props) { const props = __props; const loaderSource = async () => { const cdn = props.mode === "svg" ? "fontawesomeJs" : "fontawesomeCss"; await loader.loadCdnSingle(cdn); }; onMounted2(() => { if (defaultWindow) { if (!defaultWindow.ElementPlusComponents?.isAwesomeIconLock) { defaultWindow.ElementPlusComponents = { ...defaultWindow.ElementPlusComponents, isAwesomeIconLock: true }; loaderSource(); } } }); return (_ctx, _cache) => { return _openBlock3(), _createElementBlock2("i", { class: _normalizeClass3(["awesome-icon", props.name]) }, null, 2); }; } }); // src/components/awesome-icon/index.vue var awesome_icon_default2 = awesome_icon_default; // vue-script:D:\project\_my\vc\src\components\icon\index.vue?type=script var icon_default = defineComponent2({ components: { HEl: el_icon_default3, HSvg: svg_icon_default3, HAwesome: awesome_icon_default2 }, props: { name: { type: String, required: true }, type: { type: String, required: true } } }); // vue-template:D:\project\_my\vc\src\components\icon\index.vue?type=template import { resolveDynamicComponent as _resolveDynamicComponent2, openBlock as _openBlock4, createBlock as _createBlock2, normalizeClass as _normalizeClass4, createElementBlock as _createElementBlock3 } from "vue"; function render2(_ctx, _cache) { return _openBlock4(), _createElementBlock3("i", { class: _normalizeClass4(["svg-icon-box", [_ctx.$style.box]]) }, [ (_openBlock4(), _createBlock2(_resolveDynamicComponent2(`h-${_ctx.type}`), { name: _ctx.name, class: "site-icon" }, null, 8, ["name"])) ], 2); } // vue-style:D:\project\_my\vc\src\components\icon\index.vue?type=style&index=0&isModule=true&isNameImport=true var icon_default2 = { box: "_box_1wvpk_1" }; // src/components/icon/index.vue icon_default.render = render2; var cssModules3 = {}; icon_default.__cssModules = cssModules3 = {}; cssModules3["$style"] = icon_default2; var icon_default3 = icon_default; // vue-script:D:\project\_my\vc\src\components\button\index.vue?type=script var _hoisted_12 = { key: 1 }; var _hoisted_2 = { key: 1 }; var button_default = /* @__PURE__ */ _defineComponent3({ __name: "index", props: { icon: { type: null, required: false }, time: { type: Number, required: false, default: 800 }, type: { type: null, required: false, default: "" }, confirm: { type: String, required: false, default: void 0 }, confirmInfo: { type: Object, required: false } }, emits: ["click"], setup(__props, { emit: emits }) { const props = __props; const { button: buttonConfig } = injectConfig(); const defaultConfirmInfo = { title: "\u63D0\u793A", confirmButtonText: "\u786E\u5B9A", cancelButtonText: "\u53D6\u6D88", msg: "\u786E\u8BA4\u8981\u5220\u9664\u8FD9\u6761\u6570\u636E\u5417\uFF1F" }; const myConfirm = computed2(() => buttonConfig?.confirm !== void 0 ? buttonConfig?.confirm : props.confirm !== void 0 ? props.confirm : ["danger", "warning"].includes(props.type) ? "messagebox" : void 0); const { name, type: iconType = "el", position = "left" } = props.icon || {}; const { msg, title, confirmButtonText, cancelButtonText } = { ...defaultConfirmInfo, ...buttonConfig?.confirmInfo, ...props.confirmInfo }; const handleComfirm = async () => { try { const result = await ElMessageBox.confirm(msg, title, { confirmButtonText, cancelButtonText, type: "warning", dangerouslyUseHTMLString: true }); return result; } catch { return false; } }; const handleClick = useThrottleFn(async (e) => { if (myConfirm.value === "messagebox") { const result = await handleComfirm(); result && emits("click", e); return; } if (myConfirm.value === "popconfirm") { return; } emits("click", e); }, props.time); const handleConfirm = useThrottleFn(async (e) => { emits("click", e); }, props.time); return (_ctx, _cache) => { return _unref(myConfirm) === "popconfirm" ? (_openBlock5(), _createBlock3(_unref(ElPopconfirm), { key: 0, title: _unref(msg), "confirm-button-text": _unref(confirmButtonText), "cancel-button-text": _unref(cancelButtonText), "popper-class": `${_ctx.$style.popper} el-popover`, onConfirm: _unref(handleConfirm) }, { reference: _withCtx2(() => [ _createVNode(_unref(ElButton), _mergeProps(_ctx.$attrs, { type: __props.type, class: _ctx.$style.button, onClick: _unref(handleClick) }), { default: _withCtx2(() => [ _unref(position) === "left" && _unref(name) ? (_openBlock5(), _createBlock3(icon_default3, { key: 0, type: _unref(iconType), name: _unref(name) }, null, 8, ["type", "name"])) : _createCommentVNode("v-if", true), _ctx.$slots.default ? (_openBlock5(), _createElementBlock4("span", _hoisted_12, [ _renderSlot(_ctx.$slots, "default") ])) : _createCommentVNode("v-if", true), _unref(position) === "right" && _unref(name) ? (_openBlock5(), _createBlock3(icon_default3, { key: 2, type: _unref(iconType), name: _unref(name) }, null, 8, ["type", "name"])) : _createCommentVNode("v-if", true) ]), _: 3 }, 16, ["type", "class", "onClick"]) ]), _: 3 }, 8, ["title", "confirm-button-text", "cancel-button-text", "popper-class", "onConfirm"])) : (_openBlock5(), _createBlock3(_unref(ElButton), _mergeProps({ key: 1 }, _ctx.$attrs, { type: __props.type, class: _ctx.$style.button, onClick: _unref(handleClick) }), { default: _withCtx2(() => [ _unref(position) === "left" && _unref(name) ? (_openBlock5(), _createBlock3(icon_default3, { key: 0, type: _unref(iconType), name: _unref(name) }, null, 8, ["type", "name"])) : _createCommentVNode("v-if", true), _ctx.$slots.default ? (_openBlock5(), _createElementBlock4("span", _hoisted_2, [ _renderSlot(_ctx.$slots, "default") ])) : _createCommentVNode("v-if", true), _unref(position) === "right" && _unref(name) ? (_openBlock5(), _createBlock3(icon_default3, { key: 2, type: _unref(iconType), name: _unref(name) }, null, 8, ["type", "name"])) : _createCommentVNode("v-if", true) ]), _: 3 }, 16, ["type", "class", "onClick"])); }; } }); // vue-style:D:\project\_my\vc\src\components\button\index.vue?type=style&index=0&isModule=true&isNameImport=true var button_default2 = { button: "_button_1dzv7_1", popper: "_popper_1dzv7_5" }; // src/components/button/index.vue var cssModules4 = {}; button_default.__cssModules = cssModules4 = {}; cssModules4["$style"] = button_default2; var button_default3 = button_default; export { button_default3 as default };