@atscript/vue-table 0.1.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +24 -0
  3. package/dist/as-action-form-dialog.cjs +221 -0
  4. package/dist/as-action-form-dialog.d.cts +6 -0
  5. package/dist/as-action-form-dialog.d.mts +7 -0
  6. package/dist/as-action-form-dialog.mjs +221 -0
  7. package/dist/as-action-menu-content-CXsdPn42.mjs +104 -0
  8. package/dist/as-action-menu-content-CyUfBrWH.cjs +109 -0
  9. package/dist/as-cell-array-CXeZzZqt.cjs +69 -0
  10. package/dist/as-cell-array-DOQKR6t5.mjs +64 -0
  11. package/dist/as-cell-array.cjs +3 -0
  12. package/dist/as-cell-array.d.cts +2 -0
  13. package/dist/as-cell-array.d.mts +2 -0
  14. package/dist/as-cell-array.mjs +3 -0
  15. package/dist/as-cell-array.vue-DZGM2VHh.d.mts +12 -0
  16. package/dist/as-cell-array.vue-pFs5GcCR.d.cts +12 -0
  17. package/dist/as-cell-date-CTrvxS1h.cjs +78 -0
  18. package/dist/as-cell-date-Cq49RHmL.mjs +73 -0
  19. package/dist/as-cell-date.cjs +3 -0
  20. package/dist/as-cell-date.d.cts +2 -0
  21. package/dist/as-cell-date.d.mts +2 -0
  22. package/dist/as-cell-date.mjs +3 -0
  23. package/dist/as-cell-date.vue-BBSps2B2.d.cts +12 -0
  24. package/dist/as-cell-date.vue-Zlt4mHWb.d.mts +12 -0
  25. package/dist/as-cell-json-BynWIs1d.mjs +37 -0
  26. package/dist/as-cell-json-DvHvQ6IL.cjs +42 -0
  27. package/dist/as-cell-json-popover-BWdNs1YU.cjs +70 -0
  28. package/dist/as-cell-json-popover-DUq25I0L.mjs +65 -0
  29. package/dist/as-cell-json.cjs +3 -0
  30. package/dist/as-cell-json.d.cts +2 -0
  31. package/dist/as-cell-json.d.mts +2 -0
  32. package/dist/as-cell-json.mjs +3 -0
  33. package/dist/as-cell-json.vue-C6wg4ARZ.d.cts +12 -0
  34. package/dist/as-cell-json.vue-CESWuCer.d.mts +12 -0
  35. package/dist/as-cell-number-0_WrSCzu.cjs +76 -0
  36. package/dist/as-cell-number-Bc1C97Vg.mjs +71 -0
  37. package/dist/as-cell-number.cjs +3 -0
  38. package/dist/as-cell-number.d.cts +2 -0
  39. package/dist/as-cell-number.d.mts +2 -0
  40. package/dist/as-cell-number.mjs +3 -0
  41. package/dist/as-cell-number.vue-1Oq7nVI3.d.mts +12 -0
  42. package/dist/as-cell-number.vue-CJ2K5zeM.d.cts +12 -0
  43. package/dist/as-cell-union-C1w3B38J.mjs +88 -0
  44. package/dist/as-cell-union-CFAI0utz.cjs +93 -0
  45. package/dist/as-cell-union.cjs +4 -0
  46. package/dist/as-cell-union.d.cts +2 -0
  47. package/dist/as-cell-union.d.mts +2 -0
  48. package/dist/as-cell-union.mjs +4 -0
  49. package/dist/as-cell-union.vue-CslPM_c2.d.cts +12 -0
  50. package/dist/as-cell-union.vue-NnDmQZOA.d.mts +12 -0
  51. package/dist/as-column-menu-CH9Htz0Q.cjs +220 -0
  52. package/dist/as-column-menu-DCfhorMP.mjs +215 -0
  53. package/dist/as-column-menu.cjs +2 -0
  54. package/dist/as-column-menu.d.cts +2 -0
  55. package/dist/as-column-menu.d.mts +2 -0
  56. package/dist/as-column-menu.mjs +2 -0
  57. package/dist/as-column-menu.vue-C9e6wJ3z.d.mts +47 -0
  58. package/dist/as-column-menu.vue-o0qFdzoL.d.cts +47 -0
  59. package/dist/as-config-dialog-d2k7_l0U.cjs +699 -0
  60. package/dist/as-config-dialog-vRklaKbi.mjs +688 -0
  61. package/dist/as-config-dialog.cjs +3 -0
  62. package/dist/as-config-dialog.d.cts +2 -0
  63. package/dist/as-config-dialog.d.mts +2 -0
  64. package/dist/as-config-dialog.mjs +3 -0
  65. package/dist/as-config-dialog.vue-C6Q62xF5.d.mts +7 -0
  66. package/dist/as-config-dialog.vue-DvvJi3xx.d.cts +7 -0
  67. package/dist/as-confirm-dialog-BLh3Ju4-.mjs +52 -0
  68. package/dist/as-confirm-dialog-BgpIEE2z.cjs +57 -0
  69. package/dist/as-confirm-dialog.cjs +3 -0
  70. package/dist/as-confirm-dialog.d.cts +2 -0
  71. package/dist/as-confirm-dialog.d.mts +2 -0
  72. package/dist/as-confirm-dialog.mjs +3 -0
  73. package/dist/as-confirm-dialog.vue-CXxLpzbu.d.cts +7 -0
  74. package/dist/as-confirm-dialog.vue-pas8jGhv.d.mts +7 -0
  75. package/dist/as-filter-dialog-C0HMpUPT.mjs +610 -0
  76. package/dist/as-filter-dialog-DcGvIV3h.cjs +621 -0
  77. package/dist/as-filter-dialog.cjs +15 -0
  78. package/dist/as-filter-dialog.d.cts +2 -0
  79. package/dist/as-filter-dialog.d.mts +2 -0
  80. package/dist/as-filter-dialog.mjs +15 -0
  81. package/dist/as-filter-dialog.vue-BV2J8PgZ.d.cts +7 -0
  82. package/dist/as-filter-dialog.vue-RDZjp4gJ.d.mts +7 -0
  83. package/dist/as-filter-field-B_tYzvvl.cjs +984 -0
  84. package/dist/as-filter-field-Bqvu2ASN.mjs +943 -0
  85. package/dist/as-filter-field.cjs +9 -0
  86. package/dist/as-filter-field.d.cts +2 -0
  87. package/dist/as-filter-field.d.mts +2 -0
  88. package/dist/as-filter-field.mjs +9 -0
  89. package/dist/as-filter-field.vue-ByQ8xIGq.d.cts +11 -0
  90. package/dist/as-filter-field.vue-QY8wi5S5.d.mts +11 -0
  91. package/dist/as-filter-input--nr72iwX.cjs +106 -0
  92. package/dist/as-filter-input-P1i0CW2-.mjs +101 -0
  93. package/dist/as-filter-input.cjs +2 -0
  94. package/dist/as-filter-input.d.cts +2 -0
  95. package/dist/as-filter-input.d.mts +2 -0
  96. package/dist/as-filter-input.mjs +2 -0
  97. package/dist/as-filter-input.vue-CBQ71eNg.d.mts +18 -0
  98. package/dist/as-filter-input.vue-CS4nOk_Q.d.cts +18 -0
  99. package/dist/as-filters-Bxa9ZEMm.mjs +44 -0
  100. package/dist/as-filters-xRT2qv56.cjs +49 -0
  101. package/dist/as-filters.cjs +10 -0
  102. package/dist/as-filters.d.cts +2 -0
  103. package/dist/as-filters.d.mts +2 -0
  104. package/dist/as-filters.mjs +10 -0
  105. package/dist/as-filters.vue-BsMgYUcX.d.mts +10 -0
  106. package/dist/as-filters.vue-fv-tRL2H.d.cts +10 -0
  107. package/dist/as-preset-dialog-BaTfwMnh.cjs +569 -0
  108. package/dist/as-preset-dialog-BdDRgwf_.mjs +564 -0
  109. package/dist/as-preset-dialog.cjs +4 -0
  110. package/dist/as-preset-dialog.d.cts +2 -0
  111. package/dist/as-preset-dialog.d.mts +2 -0
  112. package/dist/as-preset-dialog.mjs +4 -0
  113. package/dist/as-preset-dialog.vue-Bzv-ON9W.d.mts +7 -0
  114. package/dist/as-preset-dialog.vue-DP9fy00Y.d.cts +7 -0
  115. package/dist/as-preset-picker-BQbNEiy9.mjs +427 -0
  116. package/dist/as-preset-picker-Ce3crTQy.cjs +432 -0
  117. package/dist/as-preset-picker.cjs +4 -0
  118. package/dist/as-preset-picker.d.cts +2 -0
  119. package/dist/as-preset-picker.d.mts +2 -0
  120. package/dist/as-preset-picker.mjs +4 -0
  121. package/dist/as-preset-picker.vue-CTBk6leV.d.mts +7 -0
  122. package/dist/as-preset-picker.vue-DfXS3pGl.d.cts +7 -0
  123. package/dist/as-row-actions-B6Kob6gt.cjs +120 -0
  124. package/dist/as-row-actions-CeWBBGqh.mjs +115 -0
  125. package/dist/as-row-actions.cjs +4 -0
  126. package/dist/as-row-actions.d.cts +2 -0
  127. package/dist/as-row-actions.d.mts +2 -0
  128. package/dist/as-row-actions.mjs +4 -0
  129. package/dist/as-row-actions.vue-BPaQfGev.d.mts +11 -0
  130. package/dist/as-row-actions.vue-Bvcc2tUN.d.cts +11 -0
  131. package/dist/as-table-Cnw2fOqZ.mjs +204 -0
  132. package/dist/as-table-DlDFxdXI.cjs +209 -0
  133. package/dist/as-table-actions-BK1Thy2G.cjs +142 -0
  134. package/dist/as-table-actions-BpMiNFni.mjs +137 -0
  135. package/dist/as-table-actions.cjs +4 -0
  136. package/dist/as-table-actions.d.cts +2 -0
  137. package/dist/as-table-actions.d.mts +2 -0
  138. package/dist/as-table-actions.mjs +4 -0
  139. package/dist/as-table-actions.vue-B7Q-JA3z.d.cts +47 -0
  140. package/dist/as-table-actions.vue-Bs1Jl1ep.d.mts +47 -0
  141. package/dist/as-table-base-D0k4k7k_.mjs +646 -0
  142. package/dist/as-table-base-VIz-B_6_.cjs +651 -0
  143. package/dist/as-table-cell-value-B1CiJYFn.mjs +26 -0
  144. package/dist/as-table-cell-value-CuxRtFn9.cjs +31 -0
  145. package/dist/as-table-cell-value.cjs +3 -0
  146. package/dist/as-table-cell-value.d.cts +2 -0
  147. package/dist/as-table-cell-value.d.mts +2 -0
  148. package/dist/as-table-cell-value.mjs +3 -0
  149. package/dist/as-table-cell-value.vue-BgFDv2JQ.d.cts +12 -0
  150. package/dist/as-table-cell-value.vue-BuPCQ8YA.d.mts +12 -0
  151. package/dist/as-table-header-cell-C3zeZUZo.cjs +117 -0
  152. package/dist/as-table-header-cell-CBn_ioCe.mjs +112 -0
  153. package/dist/as-table-header-cell.cjs +3 -0
  154. package/dist/as-table-header-cell.d.cts +2 -0
  155. package/dist/as-table-header-cell.d.mts +2 -0
  156. package/dist/as-table-header-cell.mjs +3 -0
  157. package/dist/as-table-header-cell.vue-Bc_DSsGY.d.cts +31 -0
  158. package/dist/as-table-header-cell.vue-DNMOHfek.d.mts +31 -0
  159. package/dist/as-table-root-Br6WcGRo.cjs +263 -0
  160. package/dist/as-table-root-gG7pTIdD.mjs +258 -0
  161. package/dist/as-table-root.cjs +28 -0
  162. package/dist/as-table-root.d.cts +2 -0
  163. package/dist/as-table-root.d.mts +2 -0
  164. package/dist/as-table-root.mjs +28 -0
  165. package/dist/as-table-root.vue-5_OhVwse.d.mts +2258 -0
  166. package/dist/as-table-root.vue-CSqEtIll.d.cts +2258 -0
  167. package/dist/as-table-status-BjRGGuhC.mjs +683 -0
  168. package/dist/as-table-status-DWYoJIMC.cjs +724 -0
  169. package/dist/as-table.cjs +10 -0
  170. package/dist/as-table.d.cts +2 -0
  171. package/dist/as-table.d.mts +2 -0
  172. package/dist/as-table.mjs +10 -0
  173. package/dist/as-table.vue-BTYg-e3Z.d.mts +81 -0
  174. package/dist/as-table.vue-wdRARLIe.d.cts +81 -0
  175. package/dist/as-window-table-CKIfo3M_.mjs +709 -0
  176. package/dist/as-window-table-DE7_NyEP.cjs +714 -0
  177. package/dist/as-window-table.cjs +9 -0
  178. package/dist/as-window-table.d.cts +2 -0
  179. package/dist/as-window-table.d.mts +2 -0
  180. package/dist/as-window-table.mjs +9 -0
  181. package/dist/as-window-table.vue-Bf8xGC9M.d.mts +86 -0
  182. package/dist/as-window-table.vue-CA8qsrz4.d.cts +86 -0
  183. package/dist/format-cell-B2xMDYO9.mjs +27 -0
  184. package/dist/format-cell-D4mqaN0E.cjs +32 -0
  185. package/dist/get-cell-value-CZSVfDLg.cjs +19 -0
  186. package/dist/get-cell-value-DiH84HKL.mjs +14 -0
  187. package/dist/index.cjs +598 -0
  188. package/dist/index.d.cts +21 -0
  189. package/dist/index.d.mts +21 -0
  190. package/dist/index.mjs +505 -0
  191. package/dist/preset-aspect-display-BYeiSgcc.mjs +43 -0
  192. package/dist/preset-aspect-display-y8aal_EF.cjs +72 -0
  193. package/dist/types-BvvXN72P.d.mts +531 -0
  194. package/dist/types-CNMmF6W2.d.cts +531 -0
  195. package/dist/use-cell-locale-1uQaFTLQ.mjs +23 -0
  196. package/dist/use-cell-locale-B480_QYK.cjs +34 -0
  197. package/dist/use-table-column-handlers-CGYAY2xH.cjs +65 -0
  198. package/dist/use-table-column-handlers-t6xi1yCE.mjs +54 -0
  199. package/dist/use-table-state-C4JbonEZ.mjs +1822 -0
  200. package/dist/use-table-state-MU-vuzui.cjs +1917 -0
  201. package/package.json +195 -0
  202. package/styles.d.ts +2 -0
@@ -0,0 +1,220 @@
1
+ let vue = require("vue");
2
+ let _atscript_ui_table = require("@atscript/ui-table");
3
+ let reka_ui = require("reka-ui");
4
+ //#region src/components/defaults/as-column-menu.vue?vue&type=script&setup=true&lang.ts
5
+ const _hoisted_1 = {
6
+ key: 0,
7
+ class: "as-column-menu-item-badge"
8
+ };
9
+ //#endregion
10
+ //#region src/components/defaults/as-column-menu.vue
11
+ var as_column_menu_default = /* @__PURE__ */ (0, vue.defineComponent)({
12
+ __name: "as-column-menu",
13
+ props: {
14
+ column: {
15
+ type: Object,
16
+ required: true
17
+ },
18
+ order: {
19
+ type: [String, null],
20
+ required: false
21
+ },
22
+ filters: {
23
+ type: Array,
24
+ required: false
25
+ },
26
+ config: {
27
+ type: Object,
28
+ required: true
29
+ },
30
+ widthEntry: {
31
+ type: Object,
32
+ required: false
33
+ }
34
+ },
35
+ emits: [
36
+ "sort",
37
+ "hide",
38
+ "filter",
39
+ "filters-off",
40
+ "reset-width"
41
+ ],
42
+ setup(__props, { emit: __emit }) {
43
+ const props = __props;
44
+ const open = (0, vue.ref)(false);
45
+ const emit = __emit;
46
+ function emitSort(direction) {
47
+ if (direction === props.order) emit("sort", null);
48
+ else emit("sort", direction);
49
+ }
50
+ const showSort = (0, vue.computed)(() => props.config.sort && props.column.sortable);
51
+ const showFilters = (0, vue.computed)(() => props.config.filters && props.column.filterable);
52
+ const showHide = (0, vue.computed)(() => props.config.hide);
53
+ const showResetWidth = (0, vue.computed)(() => props.config.resetWidth && !!props.widthEntry && props.widthEntry.w !== props.widthEntry.d);
54
+ const filledCount = (0, vue.computed)(() => props.filters?.filter(_atscript_ui_table.isFilled).length ?? 0);
55
+ const hasAnyItem = (0, vue.computed)(() => showSort.value || showFilters.value || showResetWidth.value || showHide.value);
56
+ function onKeydown(e) {
57
+ if (e.metaKey || e.ctrlKey || e.altKey) return;
58
+ const key = e.key.toLowerCase();
59
+ if (key === "a" && showSort.value) emitSort("asc");
60
+ else if (key === "d" && showSort.value) emitSort("desc");
61
+ else if (key === "f" && showFilters.value) emit("filter");
62
+ else if (key === "c" && showFilters.value && filledCount.value > 0) emit("filters-off");
63
+ else if (key === "w" && showResetWidth.value) emit("reset-width");
64
+ else if (key === "h" && showHide.value) emit("hide");
65
+ else return;
66
+ e.preventDefault();
67
+ open.value = false;
68
+ }
69
+ (0, vue.watch)(open, (isOpen) => {
70
+ if (isOpen) window.addEventListener("keydown", onKeydown);
71
+ else window.removeEventListener("keydown", onKeydown);
72
+ });
73
+ (0, vue.onBeforeUnmount)(() => {
74
+ window.removeEventListener("keydown", onKeydown);
75
+ });
76
+ return (_ctx, _cache) => {
77
+ return !hasAnyItem.value ? (0, vue.renderSlot)(_ctx.$slots, "default", {
78
+ key: 0,
79
+ open: false,
80
+ hasMenu: false
81
+ }) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuRoot), {
82
+ key: 1,
83
+ modal: false,
84
+ open: open.value,
85
+ "onUpdate:open": _cache[6] || (_cache[6] = ($event) => open.value = $event)
86
+ }, {
87
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuTrigger), { "as-child": "" }, {
88
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", {
89
+ open: open.value,
90
+ hasMenu: true
91
+ })]),
92
+ _: 3
93
+ }), (0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuPortal), null, {
94
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuContent), {
95
+ class: "as-column-menu-content",
96
+ "side-offset": 4,
97
+ align: "start"
98
+ }, {
99
+ default: (0, vue.withCtx)(() => [
100
+ showSort.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [
101
+ _cache[9] || (_cache[9] = (0, vue.createElementVNode)("div", { class: "as-column-menu-label" }, "Sort", -1)),
102
+ (0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuItem), {
103
+ class: (0, vue.normalizeClass)(["as-column-menu-item", { "as-column-menu-item-active": __props.order === "asc" }]),
104
+ onSelect: _cache[0] || (_cache[0] = ($event) => emitSort("asc"))
105
+ }, {
106
+ default: (0, vue.withCtx)(() => [..._cache[7] || (_cache[7] = [
107
+ (0, vue.createElementVNode)("span", {
108
+ class: "as-column-menu-item-icon i-as-arrow-up",
109
+ "aria-hidden": "true"
110
+ }, null, -1),
111
+ (0, vue.createElementVNode)("span", { class: "as-column-menu-item-label" }, "Ascending", -1),
112
+ (0, vue.createElementVNode)("span", { class: "as-column-menu-item-hint" }, "A", -1)
113
+ ])]),
114
+ _: 1
115
+ }, 8, ["class"]),
116
+ (0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuItem), {
117
+ class: (0, vue.normalizeClass)(["as-column-menu-item", { "as-column-menu-item-active": __props.order === "desc" }]),
118
+ onSelect: _cache[1] || (_cache[1] = ($event) => emitSort("desc"))
119
+ }, {
120
+ default: (0, vue.withCtx)(() => [..._cache[8] || (_cache[8] = [
121
+ (0, vue.createElementVNode)("span", {
122
+ class: "as-column-menu-item-icon i-as-arrow-down",
123
+ "aria-hidden": "true"
124
+ }, null, -1),
125
+ (0, vue.createElementVNode)("span", { class: "as-column-menu-item-label" }, "Descending", -1),
126
+ (0, vue.createElementVNode)("span", { class: "as-column-menu-item-hint" }, "D", -1)
127
+ ])]),
128
+ _: 1
129
+ }, 8, ["class"])
130
+ ], 64)) : (0, vue.createCommentVNode)("v-if", true),
131
+ showSort.value && (showFilters.value || showHide.value) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuSeparator), {
132
+ key: 1,
133
+ class: "as-column-menu-separator"
134
+ })) : (0, vue.createCommentVNode)("v-if", true),
135
+ showFilters.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuItem), {
136
+ key: 2,
137
+ class: (0, vue.normalizeClass)(["as-column-menu-item", { "as-column-menu-item-active": filledCount.value > 0 }]),
138
+ onSelect: _cache[2] || (_cache[2] = ($event) => emit("filter"))
139
+ }, {
140
+ default: (0, vue.withCtx)(() => [
141
+ _cache[10] || (_cache[10] = (0, vue.createElementVNode)("span", {
142
+ class: "as-column-menu-item-icon i-as-filter",
143
+ "aria-hidden": "true"
144
+ }, null, -1)),
145
+ _cache[11] || (_cache[11] = (0, vue.createElementVNode)("span", { class: "as-column-menu-item-label" }, "Filter...", -1)),
146
+ filledCount.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_1, (0, vue.toDisplayString)(filledCount.value), 1)) : (0, vue.createCommentVNode)("v-if", true),
147
+ _cache[12] || (_cache[12] = (0, vue.createElementVNode)("span", { class: "as-column-menu-item-hint" }, "F", -1))
148
+ ]),
149
+ _: 1
150
+ }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true),
151
+ showFilters.value && filledCount.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuItem), {
152
+ key: 3,
153
+ class: "as-column-menu-item",
154
+ onSelect: _cache[3] || (_cache[3] = ($event) => emit("filters-off"))
155
+ }, {
156
+ default: (0, vue.withCtx)(() => [..._cache[13] || (_cache[13] = [
157
+ (0, vue.createElementVNode)("span", {
158
+ class: "as-column-menu-item-icon i-as-close",
159
+ "aria-hidden": "true"
160
+ }, null, -1),
161
+ (0, vue.createElementVNode)("span", { class: "as-column-menu-item-label" }, "Clear filters", -1),
162
+ (0, vue.createElementVNode)("span", { class: "as-column-menu-item-hint" }, "C", -1)
163
+ ])]),
164
+ _: 1
165
+ })) : (0, vue.createCommentVNode)("v-if", true),
166
+ showFilters.value && (showResetWidth.value || showHide.value) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuSeparator), {
167
+ key: 4,
168
+ class: "as-column-menu-separator"
169
+ })) : (0, vue.createCommentVNode)("v-if", true),
170
+ showResetWidth.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuItem), {
171
+ key: 5,
172
+ class: "as-column-menu-item",
173
+ onSelect: _cache[4] || (_cache[4] = ($event) => emit("reset-width"))
174
+ }, {
175
+ default: (0, vue.withCtx)(() => [..._cache[14] || (_cache[14] = [
176
+ (0, vue.createElementVNode)("span", {
177
+ class: "as-column-menu-item-icon i-as-refresh",
178
+ "aria-hidden": "true"
179
+ }, null, -1),
180
+ (0, vue.createElementVNode)("span", { class: "as-column-menu-item-label" }, "Reset width", -1),
181
+ (0, vue.createElementVNode)("span", { class: "as-column-menu-item-hint" }, "W", -1)
182
+ ])]),
183
+ _: 1
184
+ })) : (0, vue.createCommentVNode)("v-if", true),
185
+ showResetWidth.value && showHide.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuSeparator), {
186
+ key: 6,
187
+ class: "as-column-menu-separator"
188
+ })) : (0, vue.createCommentVNode)("v-if", true),
189
+ showHide.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuItem), {
190
+ key: 7,
191
+ class: "as-column-menu-item as-column-menu-item-danger",
192
+ onSelect: _cache[5] || (_cache[5] = ($event) => emit("hide"))
193
+ }, {
194
+ default: (0, vue.withCtx)(() => [..._cache[15] || (_cache[15] = [
195
+ (0, vue.createElementVNode)("span", {
196
+ class: "as-column-menu-item-icon i-as-eye-slash",
197
+ "aria-hidden": "true"
198
+ }, null, -1),
199
+ (0, vue.createElementVNode)("span", { class: "as-column-menu-item-label" }, "Hide column", -1),
200
+ (0, vue.createElementVNode)("span", { class: "as-column-menu-item-hint" }, "H", -1)
201
+ ])]),
202
+ _: 1
203
+ })) : (0, vue.createCommentVNode)("v-if", true)
204
+ ]),
205
+ _: 1
206
+ })]),
207
+ _: 1
208
+ })]),
209
+ _: 3
210
+ }, 8, ["open"]));
211
+ };
212
+ }
213
+ });
214
+ //#endregion
215
+ Object.defineProperty(exports, "as_column_menu_default", {
216
+ enumerable: true,
217
+ get: function() {
218
+ return as_column_menu_default;
219
+ }
220
+ });
@@ -0,0 +1,215 @@
1
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, onBeforeUnmount, openBlock, ref, renderSlot, toDisplayString, unref, watch, withCtx } from "vue";
2
+ import { isFilled } from "@atscript/ui-table";
3
+ import { DropdownMenuContent, DropdownMenuItem, DropdownMenuPortal, DropdownMenuRoot, DropdownMenuSeparator, DropdownMenuTrigger } from "reka-ui";
4
+ //#region src/components/defaults/as-column-menu.vue?vue&type=script&setup=true&lang.ts
5
+ const _hoisted_1 = {
6
+ key: 0,
7
+ class: "as-column-menu-item-badge"
8
+ };
9
+ //#endregion
10
+ //#region src/components/defaults/as-column-menu.vue
11
+ var as_column_menu_default = /* @__PURE__ */ defineComponent({
12
+ __name: "as-column-menu",
13
+ props: {
14
+ column: {
15
+ type: Object,
16
+ required: true
17
+ },
18
+ order: {
19
+ type: [String, null],
20
+ required: false
21
+ },
22
+ filters: {
23
+ type: Array,
24
+ required: false
25
+ },
26
+ config: {
27
+ type: Object,
28
+ required: true
29
+ },
30
+ widthEntry: {
31
+ type: Object,
32
+ required: false
33
+ }
34
+ },
35
+ emits: [
36
+ "sort",
37
+ "hide",
38
+ "filter",
39
+ "filters-off",
40
+ "reset-width"
41
+ ],
42
+ setup(__props, { emit: __emit }) {
43
+ const props = __props;
44
+ const open = ref(false);
45
+ const emit = __emit;
46
+ function emitSort(direction) {
47
+ if (direction === props.order) emit("sort", null);
48
+ else emit("sort", direction);
49
+ }
50
+ const showSort = computed(() => props.config.sort && props.column.sortable);
51
+ const showFilters = computed(() => props.config.filters && props.column.filterable);
52
+ const showHide = computed(() => props.config.hide);
53
+ const showResetWidth = computed(() => props.config.resetWidth && !!props.widthEntry && props.widthEntry.w !== props.widthEntry.d);
54
+ const filledCount = computed(() => props.filters?.filter(isFilled).length ?? 0);
55
+ const hasAnyItem = computed(() => showSort.value || showFilters.value || showResetWidth.value || showHide.value);
56
+ function onKeydown(e) {
57
+ if (e.metaKey || e.ctrlKey || e.altKey) return;
58
+ const key = e.key.toLowerCase();
59
+ if (key === "a" && showSort.value) emitSort("asc");
60
+ else if (key === "d" && showSort.value) emitSort("desc");
61
+ else if (key === "f" && showFilters.value) emit("filter");
62
+ else if (key === "c" && showFilters.value && filledCount.value > 0) emit("filters-off");
63
+ else if (key === "w" && showResetWidth.value) emit("reset-width");
64
+ else if (key === "h" && showHide.value) emit("hide");
65
+ else return;
66
+ e.preventDefault();
67
+ open.value = false;
68
+ }
69
+ watch(open, (isOpen) => {
70
+ if (isOpen) window.addEventListener("keydown", onKeydown);
71
+ else window.removeEventListener("keydown", onKeydown);
72
+ });
73
+ onBeforeUnmount(() => {
74
+ window.removeEventListener("keydown", onKeydown);
75
+ });
76
+ return (_ctx, _cache) => {
77
+ return !hasAnyItem.value ? renderSlot(_ctx.$slots, "default", {
78
+ key: 0,
79
+ open: false,
80
+ hasMenu: false
81
+ }) : (openBlock(), createBlock(unref(DropdownMenuRoot), {
82
+ key: 1,
83
+ modal: false,
84
+ open: open.value,
85
+ "onUpdate:open": _cache[6] || (_cache[6] = ($event) => open.value = $event)
86
+ }, {
87
+ default: withCtx(() => [createVNode(unref(DropdownMenuTrigger), { "as-child": "" }, {
88
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", {
89
+ open: open.value,
90
+ hasMenu: true
91
+ })]),
92
+ _: 3
93
+ }), createVNode(unref(DropdownMenuPortal), null, {
94
+ default: withCtx(() => [createVNode(unref(DropdownMenuContent), {
95
+ class: "as-column-menu-content",
96
+ "side-offset": 4,
97
+ align: "start"
98
+ }, {
99
+ default: withCtx(() => [
100
+ showSort.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
101
+ _cache[9] || (_cache[9] = createElementVNode("div", { class: "as-column-menu-label" }, "Sort", -1)),
102
+ createVNode(unref(DropdownMenuItem), {
103
+ class: normalizeClass(["as-column-menu-item", { "as-column-menu-item-active": __props.order === "asc" }]),
104
+ onSelect: _cache[0] || (_cache[0] = ($event) => emitSort("asc"))
105
+ }, {
106
+ default: withCtx(() => [..._cache[7] || (_cache[7] = [
107
+ createElementVNode("span", {
108
+ class: "as-column-menu-item-icon i-as-arrow-up",
109
+ "aria-hidden": "true"
110
+ }, null, -1),
111
+ createElementVNode("span", { class: "as-column-menu-item-label" }, "Ascending", -1),
112
+ createElementVNode("span", { class: "as-column-menu-item-hint" }, "A", -1)
113
+ ])]),
114
+ _: 1
115
+ }, 8, ["class"]),
116
+ createVNode(unref(DropdownMenuItem), {
117
+ class: normalizeClass(["as-column-menu-item", { "as-column-menu-item-active": __props.order === "desc" }]),
118
+ onSelect: _cache[1] || (_cache[1] = ($event) => emitSort("desc"))
119
+ }, {
120
+ default: withCtx(() => [..._cache[8] || (_cache[8] = [
121
+ createElementVNode("span", {
122
+ class: "as-column-menu-item-icon i-as-arrow-down",
123
+ "aria-hidden": "true"
124
+ }, null, -1),
125
+ createElementVNode("span", { class: "as-column-menu-item-label" }, "Descending", -1),
126
+ createElementVNode("span", { class: "as-column-menu-item-hint" }, "D", -1)
127
+ ])]),
128
+ _: 1
129
+ }, 8, ["class"])
130
+ ], 64)) : createCommentVNode("v-if", true),
131
+ showSort.value && (showFilters.value || showHide.value) ? (openBlock(), createBlock(unref(DropdownMenuSeparator), {
132
+ key: 1,
133
+ class: "as-column-menu-separator"
134
+ })) : createCommentVNode("v-if", true),
135
+ showFilters.value ? (openBlock(), createBlock(unref(DropdownMenuItem), {
136
+ key: 2,
137
+ class: normalizeClass(["as-column-menu-item", { "as-column-menu-item-active": filledCount.value > 0 }]),
138
+ onSelect: _cache[2] || (_cache[2] = ($event) => emit("filter"))
139
+ }, {
140
+ default: withCtx(() => [
141
+ _cache[10] || (_cache[10] = createElementVNode("span", {
142
+ class: "as-column-menu-item-icon i-as-filter",
143
+ "aria-hidden": "true"
144
+ }, null, -1)),
145
+ _cache[11] || (_cache[11] = createElementVNode("span", { class: "as-column-menu-item-label" }, "Filter...", -1)),
146
+ filledCount.value ? (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(filledCount.value), 1)) : createCommentVNode("v-if", true),
147
+ _cache[12] || (_cache[12] = createElementVNode("span", { class: "as-column-menu-item-hint" }, "F", -1))
148
+ ]),
149
+ _: 1
150
+ }, 8, ["class"])) : createCommentVNode("v-if", true),
151
+ showFilters.value && filledCount.value ? (openBlock(), createBlock(unref(DropdownMenuItem), {
152
+ key: 3,
153
+ class: "as-column-menu-item",
154
+ onSelect: _cache[3] || (_cache[3] = ($event) => emit("filters-off"))
155
+ }, {
156
+ default: withCtx(() => [..._cache[13] || (_cache[13] = [
157
+ createElementVNode("span", {
158
+ class: "as-column-menu-item-icon i-as-close",
159
+ "aria-hidden": "true"
160
+ }, null, -1),
161
+ createElementVNode("span", { class: "as-column-menu-item-label" }, "Clear filters", -1),
162
+ createElementVNode("span", { class: "as-column-menu-item-hint" }, "C", -1)
163
+ ])]),
164
+ _: 1
165
+ })) : createCommentVNode("v-if", true),
166
+ showFilters.value && (showResetWidth.value || showHide.value) ? (openBlock(), createBlock(unref(DropdownMenuSeparator), {
167
+ key: 4,
168
+ class: "as-column-menu-separator"
169
+ })) : createCommentVNode("v-if", true),
170
+ showResetWidth.value ? (openBlock(), createBlock(unref(DropdownMenuItem), {
171
+ key: 5,
172
+ class: "as-column-menu-item",
173
+ onSelect: _cache[4] || (_cache[4] = ($event) => emit("reset-width"))
174
+ }, {
175
+ default: withCtx(() => [..._cache[14] || (_cache[14] = [
176
+ createElementVNode("span", {
177
+ class: "as-column-menu-item-icon i-as-refresh",
178
+ "aria-hidden": "true"
179
+ }, null, -1),
180
+ createElementVNode("span", { class: "as-column-menu-item-label" }, "Reset width", -1),
181
+ createElementVNode("span", { class: "as-column-menu-item-hint" }, "W", -1)
182
+ ])]),
183
+ _: 1
184
+ })) : createCommentVNode("v-if", true),
185
+ showResetWidth.value && showHide.value ? (openBlock(), createBlock(unref(DropdownMenuSeparator), {
186
+ key: 6,
187
+ class: "as-column-menu-separator"
188
+ })) : createCommentVNode("v-if", true),
189
+ showHide.value ? (openBlock(), createBlock(unref(DropdownMenuItem), {
190
+ key: 7,
191
+ class: "as-column-menu-item as-column-menu-item-danger",
192
+ onSelect: _cache[5] || (_cache[5] = ($event) => emit("hide"))
193
+ }, {
194
+ default: withCtx(() => [..._cache[15] || (_cache[15] = [
195
+ createElementVNode("span", {
196
+ class: "as-column-menu-item-icon i-as-eye-slash",
197
+ "aria-hidden": "true"
198
+ }, null, -1),
199
+ createElementVNode("span", { class: "as-column-menu-item-label" }, "Hide column", -1),
200
+ createElementVNode("span", { class: "as-column-menu-item-hint" }, "H", -1)
201
+ ])]),
202
+ _: 1
203
+ })) : createCommentVNode("v-if", true)
204
+ ]),
205
+ _: 1
206
+ })]),
207
+ _: 1
208
+ })]),
209
+ _: 3
210
+ }, 8, ["open"]));
211
+ };
212
+ }
213
+ });
214
+ //#endregion
215
+ export { as_column_menu_default as t };
@@ -0,0 +1,2 @@
1
+ const require_as_column_menu = require("./as-column-menu-CH9Htz0Q.cjs");
2
+ module.exports = require_as_column_menu.as_column_menu_default;
@@ -0,0 +1,2 @@
1
+ import { t as _default } from "./as-column-menu.vue-o0qFdzoL.cjs";
2
+ export = _default;
@@ -0,0 +1,2 @@
1
+ import { t as _default } from "./as-column-menu.vue-C9e6wJ3z.mjs";
2
+ export { _default as default };
@@ -0,0 +1,2 @@
1
+ import { t as as_column_menu_default } from "./as-column-menu-DCfhorMP.mjs";
2
+ export { as_column_menu_default as default };
@@ -0,0 +1,47 @@
1
+ import { n as ColumnMenuConfig } from "./types-BvvXN72P.mjs";
2
+ import { ColumnDef } from "@atscript/ui";
3
+ import * as vue from "vue";
4
+ import { ColumnWidthEntry, FilterCondition } from "@atscript/ui-table";
5
+
6
+ //#region src/components/defaults/as-column-menu.vue.d.ts
7
+ type __VLS_Props = {
8
+ column: ColumnDef;
9
+ order?: "asc" | "desc" | null;
10
+ filters?: FilterCondition[];
11
+ config: ColumnMenuConfig;
12
+ widthEntry?: ColumnWidthEntry;
13
+ };
14
+ declare var __VLS_1: {
15
+ open: boolean;
16
+ hasMenu: boolean;
17
+ }, __VLS_16: {
18
+ open: boolean;
19
+ hasMenu: boolean;
20
+ };
21
+ type __VLS_Slots = {} & {
22
+ default?: (props: typeof __VLS_1) => any;
23
+ } & {
24
+ default?: (props: typeof __VLS_16) => any;
25
+ };
26
+ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
27
+ sort: (direction: "asc" | "desc" | null) => any;
28
+ filter: () => any;
29
+ hide: () => any;
30
+ "filters-off": () => any;
31
+ "reset-width": () => any;
32
+ }, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{
33
+ onSort?: ((direction: "asc" | "desc" | null) => any) | undefined;
34
+ onFilter?: (() => any) | undefined;
35
+ onHide?: (() => any) | undefined;
36
+ "onFilters-off"?: (() => any) | undefined;
37
+ "onReset-width"?: (() => any) | undefined;
38
+ }>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
39
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
40
+ declare const _default: typeof __VLS_export;
41
+ type __VLS_WithSlots<T, S> = T & {
42
+ new (): {
43
+ $slots: S;
44
+ };
45
+ };
46
+ //#endregion
47
+ export { _default as t };
@@ -0,0 +1,47 @@
1
+ import { n as ColumnMenuConfig } from "./types-CNMmF6W2.cjs";
2
+ import * as vue from "vue";
3
+ import { ColumnDef } from "@atscript/ui";
4
+ import { ColumnWidthEntry, FilterCondition } from "@atscript/ui-table";
5
+
6
+ //#region src/components/defaults/as-column-menu.vue.d.ts
7
+ type __VLS_Props = {
8
+ column: ColumnDef;
9
+ order?: "asc" | "desc" | null;
10
+ filters?: FilterCondition[];
11
+ config: ColumnMenuConfig;
12
+ widthEntry?: ColumnWidthEntry;
13
+ };
14
+ declare var __VLS_1: {
15
+ open: boolean;
16
+ hasMenu: boolean;
17
+ }, __VLS_16: {
18
+ open: boolean;
19
+ hasMenu: boolean;
20
+ };
21
+ type __VLS_Slots = {} & {
22
+ default?: (props: typeof __VLS_1) => any;
23
+ } & {
24
+ default?: (props: typeof __VLS_16) => any;
25
+ };
26
+ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
27
+ sort: (direction: "asc" | "desc" | null) => any;
28
+ filter: () => any;
29
+ hide: () => any;
30
+ "filters-off": () => any;
31
+ "reset-width": () => any;
32
+ }, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{
33
+ onSort?: ((direction: "asc" | "desc" | null) => any) | undefined;
34
+ onFilter?: (() => any) | undefined;
35
+ onHide?: (() => any) | undefined;
36
+ "onFilters-off"?: (() => any) | undefined;
37
+ "onReset-width"?: (() => any) | undefined;
38
+ }>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
39
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
40
+ declare const _default: typeof __VLS_export;
41
+ type __VLS_WithSlots<T, S> = T & {
42
+ new (): {
43
+ $slots: S;
44
+ };
45
+ };
46
+ //#endregion
47
+ export { _default as t };