date-table2.js 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. require('../../../hooks/index.js');
  5. var dateTable = require('./date-table.js');
  6. var useDateTable = require('./use-date-table.js');
  7. var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
  8. var index = require('../../../hooks/use-namespace/index.js');
  9. const _hoisted_1 = { key: 0 };
  10. const _hoisted_2 = ["onClick"];
  11. const __default__ = vue.defineComponent({
  12. name: "DateTable"
  13. });
  14. const _sfc_main = /* @__PURE__ */ vue.defineComponent({
  15. ...__default__,
  16. props: dateTable.dateTableProps,
  17. emits: dateTable.dateTableEmits,
  18. setup(__props, { expose, emit }) {
  19. const props = __props;
  20. const {
  21. isInRange,
  22. now,
  23. rows,
  24. weekDays,
  25. getFormattedDate,
  26. handlePickDay,
  27. getSlotData
  28. } = useDateTable.useDateTable(props, emit);
  29. const nsTable = index.useNamespace("calendar-table");
  30. const nsDay = index.useNamespace("calendar-day");
  31. const getCellClass = ({ text, type }) => {
  32. const classes = [type];
  33. if (type === "current") {
  34. const date = getFormattedDate(text, type);
  35. if (date.isSame(props.selectedDay, "day")) {
  36. classes.push(nsDay.is("selected"));
  37. }
  38. if (date.isSame(now, "day")) {
  39. classes.push(nsDay.is("today"));
  40. }
  41. }
  42. return classes;
  43. };
  44. expose({
  45. getFormattedDate
  46. });
  47. return (_ctx, _cache) => {
  48. return vue.openBlock(), vue.createElementBlock("table", {
  49. class: vue.normalizeClass([vue.unref(nsTable).b(), vue.unref(nsTable).is("range", vue.unref(isInRange))]),
  50. cellspacing: "0",
  51. cellpadding: "0"
  52. }, [
  53. !_ctx.hideHeader ? (vue.openBlock(), vue.createElementBlock("thead", _hoisted_1, [
  54. (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(weekDays), (day) => {
  55. return vue.openBlock(), vue.createElementBlock("th", { key: day }, vue.toDisplayString(day), 1);
  56. }), 128))
  57. ])) : vue.createCommentVNode("v-if", true),
  58. vue.createElementVNode("tbody", null, [
  59. (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(rows), (row, index) => {
  60. return vue.openBlock(), vue.createElementBlock("tr", {
  61. key: index,
  62. class: vue.normalizeClass({
  63. [vue.unref(nsTable).e("row")]: true,
  64. [vue.unref(nsTable).em("row", "hide-border")]: index === 0 && _ctx.hideHeader
  65. })
  66. }, [
  67. (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(row, (cell, key) => {
  68. return vue.openBlock(), vue.createElementBlock("td", {
  69. key,
  70. class: vue.normalizeClass(getCellClass(cell)),
  71. onClick: ($event) => vue.unref(handlePickDay)(cell)
  72. }, [
  73. vue.createElementVNode("div", {
  74. class: vue.normalizeClass(vue.unref(nsDay).b())
  75. }, [
  76. vue.renderSlot(_ctx.$slots, "date-cell", {
  77. data: vue.unref(getSlotData)(cell)
  78. }, () => [
  79. vue.createElementVNode("span", null, vue.toDisplayString(cell.text), 1)
  80. ])
  81. ], 2)
  82. ], 10, _hoisted_2);
  83. }), 128))
  84. ], 2);
  85. }), 128))
  86. ])
  87. ], 2);
  88. };
  89. }
  90. });
  91. var DateTable = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/calendar/src/date-table.vue"]]);
  92. exports["default"] = DateTable;
  93. //# sourceMappingURL=date-table2.js.map