@arco-design/web-vue
Version:
Arco Design Vue 2.0: A Vue.js 3 UI Library
147 lines (146 loc) • 5.18 kB
JavaScript
;
var vue = require("vue");
var useCellClassName = require("../hooks/use-cell-class-name.js");
var renderFunction = require("../../_components/render-function.js");
var date = require("../../_utils/date.js");
var index = require("../utils/index.js");
var pluginVue_exportHelper = require("../../_virtual/plugin-vue_export-helper.js");
const _sfc_main = vue.defineComponent({
name: "PanelBody",
components: {
RenderFunction: renderFunction
},
props: {
prefixCls: {
type: String,
required: true
},
rows: {
type: Array,
default: () => []
},
value: {
type: Object
},
disabledDate: {
type: Function
},
isSameTime: {
type: Function,
required: true
},
mode: {
type: String
},
rangeValues: {
type: Array
},
dateRender: {
type: Function
}
},
emits: ["cell-click", "cell-mouse-enter"],
setup(props, { emit }) {
const { prefixCls, value, disabledDate, isSameTime, mode, rangeValues } = vue.toRefs(props);
const { getCellClassName } = useCellClassName(
vue.reactive({
prefixCls,
value,
isSameTime,
mode,
rangeValues
})
);
const isCellDisabled = (cellData) => index.isDisabledDate(cellData.value, disabledDate == null ? void 0 : disabledDate.value, mode == null ? void 0 : mode.value);
return {
isWeek: vue.computed(() => (mode == null ? void 0 : mode.value) === "week"),
getCellClassName: (cellData) => {
const disabled = isCellDisabled(cellData);
return getCellClassName(cellData, disabled);
},
onCellClick: (cellData) => {
const disabled = isCellDisabled(cellData);
if (disabled)
return;
emit("cell-click", cellData);
},
onCellMouseEnter: (cellData) => {
const disabled = isCellDisabled(cellData);
if (disabled)
return;
emit("cell-mouse-enter", cellData);
},
onCellMouseLeave: (cellData) => {
const disabled = isCellDisabled(cellData);
if (disabled)
return;
emit("cell-mouse-enter", cellData);
},
getDateValue: date.getDateValue
};
}
});
const _hoisted_1 = ["onMouseenter", "onMouseleave", "onClick"];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_RenderFunction = vue.resolveComponent("RenderFunction");
return vue.openBlock(), vue.createElementBlock("div", {
class: vue.normalizeClass(`${_ctx.prefixCls}-body`)
}, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.rows, (row, rowIndex) => {
return vue.openBlock(), vue.createElementBlock("div", {
key: rowIndex,
class: vue.normalizeClass([
`${_ctx.prefixCls}-row`,
{
[`${_ctx.prefixCls}-row-week`]: _ctx.isWeek
}
])
}, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(row, (cell, colIndex) => {
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
vue.createCommentVNode(" \u4E00\u5E74\u4E2D\u7684\u7B2C\u51E0\u5468\uFF0C\u53EA\u5728 week \u6A21\u5F0F\u4E0B\u663E\u793A "),
_ctx.isWeek && colIndex === 0 ? (vue.openBlock(), vue.createElementBlock("div", {
key: colIndex,
class: vue.normalizeClass([`${_ctx.prefixCls}-cell`, `${_ctx.prefixCls}-cell-week`])
}, [
vue.createElementVNode("div", {
class: vue.normalizeClass(`${_ctx.prefixCls}-date`)
}, [
vue.createElementVNode("div", {
class: vue.normalizeClass(`${_ctx.prefixCls}-date-value`)
}, vue.toDisplayString(cell.label), 3)
], 2)
], 2)) : (vue.openBlock(), vue.createElementBlock("div", {
key: colIndex,
class: vue.normalizeClass(_ctx.getCellClassName(cell)),
onMouseenter: () => {
_ctx.onCellMouseEnter(cell);
},
onMouseleave: () => {
_ctx.onCellMouseLeave(cell);
},
onClick: () => {
_ctx.onCellClick(cell);
}
}, [
_ctx.dateRender ? (vue.openBlock(), vue.createBlock(_component_RenderFunction, {
key: 0,
"render-func": _ctx.dateRender,
date: _ctx.getDateValue(cell.value)
}, null, 8, ["render-func", "date"])) : (vue.openBlock(), vue.createElementBlock("div", {
key: 1,
class: vue.normalizeClass(`${_ctx.prefixCls}-date`)
}, [
vue.createElementVNode("div", {
class: vue.normalizeClass(`${_ctx.prefixCls}-date-value`)
}, vue.toDisplayString(cell.label), 3)
], 2))
], 42, _hoisted_1))
], 64);
}), 256))
], 2);
}), 128))
], 2);
}
var PanelBody = /* @__PURE__ */ pluginVue_exportHelper(_sfc_main, [["render", _sfc_render]]);
module.exports = PanelBody;