date-table2.js 3.7 KB

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