b01dea0fabb0f522702bc2d37dee881d57168f7494d41f74d625cc2c5fb5b8163fcb3f7917e071590190a84df35714ab0fe9ab05387809c81ee21bb0f01a02 3.5 KB

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