UNPKG

tav-ui

Version:
114 lines (109 loc) 3.91 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var antDesignVue = require('ant-design-vue'); var constants$1 = require('../constants2.js'); var useProps = require('../hooks/use-props2.js'); var utils = require('../utils2.js'); var constants = require('./constants2.js'); var types = require('./types2.js'); var pluginVue_exportHelper = require('../../../../../_virtual/plugin-vue_export-helper.js'); const __default__ = { name: "TaPermissionQuery" }; function setup(__props, { expose, emit: emits }) { const props = __props; const id = vue.ref(constants.DEFAULT_PERMISSIONQUERY_ID()); const type = vue.ref(constants.DEFAULT_PERMISSIONQUERY_CLASSNAME); const attrs = vue.useAttrs(); const mergedProps = useProps.useMergedProps(props, "TaPermissionQuery", constants$1.DEFAULT_APIPARAMS); const permissionContent = vue.shallowRef(); const isUseApi = vue.computed(() => mergedProps.value.apiParams && mergedProps.value.apiPermission); const loading = vue.ref(false); async function reload() { try { const { data, success } = await mergedProps.value.apiPermission(mergedProps.value.apiParams); if (data && success) { const _data = utils.normalizedPermissionQueryContent(data); permissionContent.value = _data; emits("apiSuccess", _data); return _data; } else { permissionContent.value = void 0; return void 0; } } catch (error) { console.warn("[tavui TaPermissionQuery] api has error", error); permissionContent.value = void 0; emits("apiError", error); return void 0; } } async function handlePermission() { if (mergedProps.value.disabled) return; if (isUseApi.value) { try { loading.value = true; await reload(); } catch (error) { console.warn("[tavui TaPermissionQuery] api has error", error); } finally { loading.value = false; } } else { if (mergedProps.value.permission) { permissionContent.value = utils.normalizedPermissionQueryContent({ ...mergedProps.value.permission }); } } } vue.onBeforeMount(async () => { if (props.immediate) { await handlePermission(); } }); vue.watch(() => JSON.stringify(mergedProps.value.apiParams), async (curVal, preVal) => { if (curVal && curVal !== "{}" && curVal !== preVal) { if (props.immediate) { await handlePermission(); } } }); const permissionsContext = vue.inject(constants$1.permissionsContextKey, void 0); const context = vue.reactive({ id, type, disabled: mergedProps.value.disabled, permission: permissionContent }); vue.onMounted(() => { permissionsContext?.addPermission(context); }); vue.onBeforeUnmount(() => { permissionsContext?.removePermission(context); }); vue.provide(constants$1.permissionContextKey, context); expose({ id, permissionContext: context, reload }); return (_ctx, _cache) => { return loading.value ? (vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Spin), { key: 0, size: "large", tip: "\u6B63\u5728\u52A0\u8F7D\u6743\u9650\uFF0C\u8BF7\u7A0D\u7B49 \u{1F47E}" })) : vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.mergeProps({ key: 1 }, { ...vue.unref(mergedProps).value, ...vue.unref(attrs), permission: vue.unref(permissionContent) }))); }; } const _sfc_main = /* @__PURE__ */ vue.defineComponent({ ...__default__, props: types.permissionQueryProps, emits: types.permissionQueryEmits, setup }); var PermissionQuery = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "/home/runner/work/tav-ui/tav-ui/packages/components/permission/src/PermissionQuery/index.vue"]]); exports["default"] = PermissionQuery; //# sourceMappingURL=index2.js.map