birdpaper-ui
Version:
一个通用的 vue3 UI组件库。A common vue3 UI component library.
83 lines (82 loc) • 2.74 kB
JavaScript
import { defineComponent, ref, inject, computed, resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, createBlock, resolveDynamicComponent, unref, createVNode, withCtx, createTextVNode, createCommentVNode } from "vue";
import dateTable from "./components/date-table.vue.js";
import monthTable from "./components/month-table.vue.js";
import yearTable from "./components/year-table.vue.js";
import { dateInjectionKey } from "./types.js";
const name = "bp-date-picker-panel";
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "pickerPanel",
setup(__props) {
const currentTable = ref("date");
const tableMap = {
date: dateTable,
month: monthTable,
year: yearTable
};
let ctx = null;
ctx = inject(dateInjectionKey);
const tableRef = ref();
const onChangePicker = (typeName) => {
currentTable.value = typeName;
};
const setNowTime = () => {
tableRef.value.setNow();
};
const confirmBtnDisabled = computed(() => {
if (tableRef.value) {
const { currentVal, currentTimeVal } = tableRef.value;
return !currentVal || !currentTimeVal;
}
return true;
});
const onConfirm = () => {
const val = tableRef.value.getValue() || "";
ctx.onSelect(val, {}, true);
};
return (_ctx, _cache) => {
const _component_bp_button = resolveComponent("bp-button");
return openBlock(), createElementBlock("div", {
class: normalizeClass(name)
}, [
createElementVNode("div", {
class: normalizeClass(`${name}-wrapper`)
}, [
(openBlock(), createBlock(resolveDynamicComponent(tableMap[currentTable.value]), {
ref_key: "tableRef",
ref: tableRef,
onChangePicker
}, null, 544))
], 2),
unref(ctx).showTime && currentTable.value === "date" ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(`${name}-footer`)
}, [
createVNode(_component_bp_button, {
size: "mini",
onClick: setNowTime
}, {
default: withCtx(() => [
createTextVNode("此刻")
]),
_: 1
}),
createVNode(_component_bp_button, {
size: "mini",
type: "primary",
disabled: confirmBtnDisabled.value,
status: "primary",
onClick: onConfirm
}, {
default: withCtx(() => [
createTextVNode("确定")
]),
_: 1
}, 8, ["disabled"])
], 2)) : createCommentVNode("", true)
]);
};
}
});
export {
_sfc_main as default
};