various-ui
Version:
This is a test version of the Vue 3 component library
74 lines (71 loc) • 2.66 kB
JavaScript
import { defineComponent, onBeforeUnmount, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, toDisplayString, createCommentVNode, createElementVNode, renderSlot, createVNode, Transition, withCtx } from 'vue';
import { UiFormItemPropsOption } from './index.mjs';
import { useComposable } from './src/composable.mjs';
const _hoisted_1 = { class: "ui-form-container" };
const _hoisted_2 = {
key: 0,
class: "ui-form-message"
};
const __default__ = defineComponent({ name: "UiFormItem" });
var _sfc_main = /* @__PURE__ */ defineComponent({
...__default__,
props: UiFormItemPropsOption,
setup(__props, { expose: __expose }) {
const define = __props;
const { refs, rules, methods, computeds, emitter } = useComposable(define);
const { show, hidden, validator } = methods;
const { visible, content, verifyTimer } = refs;
const { style, className } = computeds;
if (rules && define.prop && rules[define.prop]) {
emitter == null ? void 0 : emitter.on(define.prop, async (type) => methods.validator(type));
emitter == null ? void 0 : emitter.on(`trigger:${define.prop}`, (error) => methods.show(error.message, error.type || "error"));
emitter == null ? void 0 : emitter.on(`reset:${define.prop}`, () => methods.hidden());
}
onBeforeUnmount(() => {
verifyTimer.value && clearTimeout(verifyTimer.value);
});
;
__expose({ show, hidden, validator });
return (_ctx, _cache) => {
return openBlock(), createElementBlock(
"div",
{
class: normalizeClass(["ui-form-item", unref(className)])
},
[
_ctx.label ? (openBlock(), createElementBlock(
"div",
{
key: 0,
class: "ui-form-name",
style: normalizeStyle(unref(style))
},
toDisplayString(_ctx.label),
5
/* TEXT, STYLE */
)) : createCommentVNode("v-if", true),
createElementVNode("div", _hoisted_1, [
renderSlot(_ctx.$slots, "default"),
createVNode(Transition, null, {
default: withCtx(() => [
unref(visible) ? (openBlock(), createElementBlock(
"div",
_hoisted_2,
toDisplayString(unref(content)),
1
/* TEXT */
)) : createCommentVNode("v-if", true)
]),
_: 1
/* STABLE */
})
])
],
2
/* CLASS */
);
};
}
});
export { _sfc_main as default };
//# sourceMappingURL=index.vue2.mjs.map