@application-kit/ui 0.0.0-stage → 0.0.0

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 (199) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +41 -2
  3. package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
  4. package/dist/accent-color.d.ts +2 -0
  5. package/dist/accent-color.js +15 -0
  6. package/dist/components/avatar/Avatar.js +5 -0
  7. package/dist/components/avatar/Avatar.vue.d.ts +24 -0
  8. package/dist/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js +31 -0
  9. package/dist/components/button/Button.js +5 -0
  10. package/dist/components/button/Button.vue.d.ts +130 -0
  11. package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js +104 -0
  12. package/dist/components/button/severity-to-vendor.d.ts +4 -0
  13. package/dist/components/button/severity-to-vendor.js +11 -0
  14. package/dist/components/card/Card.js +5 -0
  15. package/dist/components/card/Card.vue.d.ts +17 -0
  16. package/dist/components/card/Card.vue_vue_type_script_setup_true_lang.js +34 -0
  17. package/dist/components/confirm/ConfirmHost.js +5 -0
  18. package/dist/components/confirm/ConfirmHost.vue.d.ts +3 -0
  19. package/dist/components/confirm/ConfirmHost.vue_vue_type_script_setup_true_lang.js +13 -0
  20. package/dist/components/confirm/install-confirmation-service.d.ts +2 -0
  21. package/dist/components/confirm/install-confirmation-service.js +16 -0
  22. package/dist/components/date-range-filter/DateRangeFilter.js +7 -0
  23. package/dist/components/date-range-filter/DateRangeFilter.vue.d.ts +13 -0
  24. package/dist/components/date-range-filter/DateRangeFilter.vue_vue_type_script_setup_true_lang.js +121 -0
  25. package/dist/components/dialog/Dialog.js +5 -0
  26. package/dist/components/dialog/Dialog.vue.d.ts +56 -0
  27. package/dist/components/dialog/Dialog.vue_vue_type_script_setup_true_lang.js +71 -0
  28. package/dist/components/drawer/Drawer.js +5 -0
  29. package/dist/components/drawer/Drawer.vue.d.ts +24 -0
  30. package/dist/components/drawer/Drawer.vue_vue_type_script_setup_true_lang.js +29 -0
  31. package/dist/components/error-page/Error.js +7 -0
  32. package/dist/components/error-page/Error.vue.d.ts +62 -0
  33. package/dist/components/error-page/Error.vue_vue_type_script_setup_true_lang.js +93 -0
  34. package/dist/components/error-page/GradientBackground.js +7 -0
  35. package/dist/components/error-page/GradientBackground.vue.d.ts +17 -0
  36. package/dist/components/error-page/GradientBackground.vue_vue_type_script_setup_true_lang.js +54 -0
  37. package/dist/components/form/Checkbox.js +5 -0
  38. package/dist/components/form/Checkbox.vue.d.ts +16 -0
  39. package/dist/components/form/Checkbox.vue_vue_type_script_setup_true_lang.js +37 -0
  40. package/dist/components/form/DateField.js +5 -0
  41. package/dist/components/form/DateField.vue.d.ts +24 -0
  42. package/dist/components/form/DateField.vue_vue_type_script_setup_true_lang.js +52 -0
  43. package/dist/components/form/DateRangeField.js +5 -0
  44. package/dist/components/form/DateRangeField.vue.d.ts +32 -0
  45. package/dist/components/form/DateRangeField.vue_vue_type_script_setup_true_lang.js +48 -0
  46. package/dist/components/form/InputNumber.js +5 -0
  47. package/dist/components/form/InputNumber.vue.d.ts +17 -0
  48. package/dist/components/form/InputNumber.vue_vue_type_script_setup_true_lang.js +37 -0
  49. package/dist/components/form/InputOtp.js +5 -0
  50. package/dist/components/form/InputOtp.vue.d.ts +20 -0
  51. package/dist/components/form/InputOtp.vue_vue_type_script_setup_true_lang.js +39 -0
  52. package/dist/components/form/InputText.js +5 -0
  53. package/dist/components/form/InputText.vue.d.ts +17 -0
  54. package/dist/components/form/InputText.vue_vue_type_script_setup_true_lang.js +37 -0
  55. package/dist/components/form/MultiSelect.js +5 -0
  56. package/dist/components/form/MultiSelect.vue.d.ts +34 -0
  57. package/dist/components/form/MultiSelect.vue_vue_type_script_setup_true_lang.js +47 -0
  58. package/dist/components/form/RadioButton.js +5 -0
  59. package/dist/components/form/RadioButton.vue.d.ts +27 -0
  60. package/dist/components/form/RadioButton.vue_vue_type_script_setup_true_lang.js +37 -0
  61. package/dist/components/form/Select.js +5 -0
  62. package/dist/components/form/Select.vue.d.ts +41 -0
  63. package/dist/components/form/Select.vue_vue_type_script_setup_true_lang.js +78 -0
  64. package/dist/components/form/SelectButton.js +5 -0
  65. package/dist/components/form/SelectButton.vue.d.ts +27 -0
  66. package/dist/components/form/SelectButton.vue_vue_type_script_setup_true_lang.js +36 -0
  67. package/dist/components/form/Textarea.js +5 -0
  68. package/dist/components/form/Textarea.vue.d.ts +16 -0
  69. package/dist/components/form/Textarea.vue_vue_type_script_setup_true_lang.js +34 -0
  70. package/dist/components/form/ToggleSwitch.js +5 -0
  71. package/dist/components/form/ToggleSwitch.vue.d.ts +14 -0
  72. package/dist/components/form/ToggleSwitch.vue_vue_type_script_setup_true_lang.js +26 -0
  73. package/dist/components/form/date-format.d.ts +1 -0
  74. package/dist/components/form/date-format.js +14 -0
  75. package/dist/components/form/select-button-option.interface.d.ts +4 -0
  76. package/dist/components/icon/Icon.js +7 -0
  77. package/dist/components/icon/Icon.vue.d.ts +23 -0
  78. package/dist/components/icon/Icon.vue_vue_type_script_setup_true_lang.js +28 -0
  79. package/dist/components/icon-cell/IconCell.js +7 -0
  80. package/dist/components/icon-cell/IconCell.vue.d.ts +7 -0
  81. package/dist/components/icon-cell/IconCell.vue_vue_type_script_setup_true_lang.js +32 -0
  82. package/dist/components/layouts/EmptyLayout.js +16 -0
  83. package/dist/components/layouts/EmptyLayout.vue.d.ts +15 -0
  84. package/dist/components/message/Message.js +5 -0
  85. package/dist/components/message/Message.vue.d.ts +72 -0
  86. package/dist/components/message/Message.vue_vue_type_script_setup_true_lang.js +63 -0
  87. package/dist/components/message/severity-to-vendor.d.ts +4 -0
  88. package/dist/components/message/severity-to-vendor.js +11 -0
  89. package/dist/components/overlay-badge/OverlayBadge.js +5 -0
  90. package/dist/components/overlay-badge/OverlayBadge.vue.d.ts +16 -0
  91. package/dist/components/overlay-badge/OverlayBadge.vue_vue_type_script_setup_true_lang.js +17 -0
  92. package/dist/components/skeleton/Skeleton.js +5 -0
  93. package/dist/components/skeleton/Skeleton.vue.d.ts +7 -0
  94. package/dist/components/skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js +20 -0
  95. package/dist/components/table/DataTable.js +7 -0
  96. package/dist/components/table/DataTable.vue.d.ts +61 -0
  97. package/dist/components/table/DataTable.vue_vue_type_script_setup_true_lang.js +303 -0
  98. package/dist/components/table/InfiniteDataTable.js +7 -0
  99. package/dist/components/table/InfiniteDataTable.vue.d.ts +32 -0
  100. package/dist/components/table/InfiniteDataTable.vue_vue_type_script_setup_true_lang.js +88 -0
  101. package/dist/components/table/SelectColumnFilter.js +5 -0
  102. package/dist/components/table/SelectColumnFilter.vue.d.ts +29 -0
  103. package/dist/components/table/SelectColumnFilter.vue_vue_type_script_setup_true_lang.js +58 -0
  104. package/dist/components/table/StaticTable.js +5 -0
  105. package/dist/components/table/StaticTable.vue.d.ts +39 -0
  106. package/dist/components/table/StaticTable.vue_vue_type_script_setup_true_lang.js +48 -0
  107. package/dist/components/table/TextColumn.js +5 -0
  108. package/dist/components/table/TextColumn.vue.d.ts +13 -0
  109. package/dist/components/table/TextColumn.vue_vue_type_script_setup_true_lang.js +16 -0
  110. package/dist/components/table/collect-column-filters.d.ts +4 -0
  111. package/dist/components/table/collect-column-filters.js +11 -0
  112. package/dist/components/table/column-filters-interface.d.ts +10 -0
  113. package/dist/components/table/column-schema-interface.d.ts +20 -0
  114. package/dist/components/table/get-filters.d.ts +3 -0
  115. package/dist/components/table/get-filters.js +73 -0
  116. package/dist/components/table/select-column-filter-option.interface.d.ts +8 -0
  117. package/dist/components/table/static-table-column.d.ts +1 -0
  118. package/dist/components/tabs/Tabs.js +5 -0
  119. package/dist/components/tabs/Tabs.vue.d.ts +35 -0
  120. package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js +54 -0
  121. package/dist/components/tabs/tab-item.interface.d.ts +7 -0
  122. package/dist/components/tag/Tag.js +5 -0
  123. package/dist/components/tag/Tag.vue.d.ts +44 -0
  124. package/dist/components/tag/Tag.vue_vue_type_script_setup_true_lang.js +47 -0
  125. package/dist/components/tag/severity-to-vendor.d.ts +4 -0
  126. package/dist/components/tag/severity-to-vendor.js +11 -0
  127. package/dist/components/time-lag/TimeLag.js +7 -0
  128. package/dist/components/time-lag/TimeLag.vue.d.ts +29 -0
  129. package/dist/components/time-lag/TimeLag.vue_vue_type_script_setup_true_lang.js +38 -0
  130. package/dist/components/timestamp/Timestamp.js +5 -0
  131. package/dist/components/timestamp/Timestamp.vue.d.ts +13 -0
  132. package/dist/components/timestamp/Timestamp.vue_vue_type_script_setup_true_lang.js +21 -0
  133. package/dist/components/toast/ToastHost.js +6 -0
  134. package/dist/components/toast/ToastHost.vue.d.ts +3 -0
  135. package/dist/components/toast/ToastHost.vue_vue_type_script_setup_true_lang.js +13 -0
  136. package/dist/components/toast/install-toast-service.d.ts +2 -0
  137. package/dist/components/toast/install-toast-service.js +15 -0
  138. package/dist/components/toast/severity-to-vendor.d.ts +4 -0
  139. package/dist/components/toast/severity-to-vendor.js +11 -0
  140. package/dist/components/tooltip/Tooltip.js +7 -0
  141. package/dist/components/tooltip/Tooltip.vue.d.ts +51 -0
  142. package/dist/components/tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js +47 -0
  143. package/dist/components/tooltip/dismiss-tooltips.d.ts +2 -0
  144. package/dist/components/tooltip/dismiss-tooltips.js +13 -0
  145. package/dist/components/tooltip/install-tooltip-directive.d.ts +6 -0
  146. package/dist/components/tooltip/install-tooltip-directive.js +80 -0
  147. package/dist/components/tooltip/tooltip-options.interface.d.ts +10 -0
  148. package/dist/components/truncated-code/TruncatedCode.js +5 -0
  149. package/dist/components/truncated-code/TruncatedCode.vue.d.ts +9 -0
  150. package/dist/components/truncated-code/TruncatedCode.vue_vue_type_script_setup_true_lang.js +23 -0
  151. package/dist/components/ui-icon/UiIcon.js +5 -0
  152. package/dist/components/ui-icon/UiIcon.vue.d.ts +13 -0
  153. package/dist/components/ui-icon/UiIcon.vue_vue_type_script_setup_true_lang.js +22 -0
  154. package/dist/composables/use-app-toast.d.ts +12 -0
  155. package/dist/composables/use-app-toast.js +50 -0
  156. package/dist/composables/use-confirm.d.ts +12 -0
  157. package/dist/composables/use-confirm.js +49 -0
  158. package/dist/composables/use-copy-to-clipboard.d.ts +2 -0
  159. package/dist/composables/use-copy-to-clipboard.js +23 -0
  160. package/dist/icons/ui-icon-registry.d.ts +6 -0
  161. package/dist/icons/ui-icon-registry.js +4 -0
  162. package/dist/index.d.ts +66 -0
  163. package/dist/index.js +56 -0
  164. package/dist/layout/layout.d.ts +37 -0
  165. package/dist/layout/layout.js +60 -0
  166. package/dist/messages/ui-messages.d.ts +23 -0
  167. package/dist/plugin/ui-injection.d.ts +11 -0
  168. package/dist/plugin/ui-injection.js +18 -0
  169. package/dist/plugin/ui-vendor-plugin.d.ts +22 -0
  170. package/dist/plugin/ui-vendor-plugin.js +57 -0
  171. package/dist/severity.d.ts +1 -0
  172. package/dist/store/listing/cursor-listing.d.ts +25 -0
  173. package/dist/store/listing/cursor-listing.js +97 -0
  174. package/dist/store/listing/infinite-listing-store.d.ts +21 -0
  175. package/dist/store/listing/infinite-listing-store.interface.d.ts +13 -0
  176. package/dist/store/listing/infinite-listing-store.js +68 -0
  177. package/dist/store/listing/listing-store.d.ts +7 -0
  178. package/dist/store/listing/listing-store.interface.d.ts +21 -0
  179. package/dist/store/listing/listing-store.js +114 -0
  180. package/dist/style.css +158 -0
  181. package/dist/styles/_tokens.scss +96 -0
  182. package/dist/styles/_variables.scss +8 -0
  183. package/dist/testing/browser-api-stubs.d.ts +1 -0
  184. package/dist/testing/browser-api-stubs.js +38 -0
  185. package/dist/testing/index.d.ts +5 -0
  186. package/dist/testing/index.js +6 -0
  187. package/dist/testing/set-viewport-width.d.ts +1 -0
  188. package/dist/testing/set-viewport-width.js +18 -0
  189. package/dist/testing/submit-form.d.ts +1 -0
  190. package/dist/testing/submit-form.js +25 -0
  191. package/dist/testing/ui-messages.fixture.d.ts +2 -0
  192. package/dist/testing/ui-messages.fixture.js +26 -0
  193. package/dist/testing/vendor-plugins.d.ts +2 -0
  194. package/dist/testing/vendor-plugins.js +22 -0
  195. package/dist/utils/datetime.d.ts +10 -0
  196. package/dist/utils/datetime.js +53 -0
  197. package/dist/utils/truncate-string.d.ts +2 -0
  198. package/dist/utils/truncate-string.js +10 -0
  199. package/package.json +93 -3
@@ -0,0 +1,303 @@
1
+ import { useUiDescribeRequestError, useUiMessages } from "../../plugin/ui-injection.js";
2
+ import Message_default from "../message/Message.js";
3
+ import "../../store/listing/cursor-listing.js";
4
+ import { collectColumnFilters } from "./collect-column-filters.js";
5
+ import { getFilters } from "./get-filters.js";
6
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createSlots, createTextVNode, createVNode, defineComponent, mergeModels, mergeProps, onBeforeMount, onServerPrefetch, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, useModel, watch, withCtx, withKeys } from "vue";
7
+ import { DEFAULT_CREATED_AT_SORTING, FiltersMatchMode, SortOrder } from "@application-kit/typeorm/listing";
8
+ import InputText from "openvue/inputtext";
9
+ import DataTableColumn from "openvue/column";
10
+ import DataTable from "openvue/datatable";
11
+ //#region src/components/table/DataTable.vue?vue&type=script&setup=true&lang.ts
12
+ var _hoisted_1 = { class: "data-table-frame" };
13
+ var SORT_ASC_FLAG = 1;
14
+ var SORT_NEUTRAL = 0;
15
+ var DataTable_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
16
+ name: "ListingDataTable",
17
+ __name: "DataTable",
18
+ props: /*@__PURE__*/ mergeModels({
19
+ columns: {
20
+ required: true,
21
+ type: Object
22
+ },
23
+ defaultSorting: {
24
+ default: void 0,
25
+ type: Array
26
+ },
27
+ extraFilters: {
28
+ default: void 0,
29
+ type: Array
30
+ },
31
+ filters: {
32
+ default: void 0,
33
+ type: Object
34
+ },
35
+ listingStore: {
36
+ required: true,
37
+ type: Object
38
+ },
39
+ multiSelectEnabled: {
40
+ default: false,
41
+ type: Boolean
42
+ },
43
+ rowsPerPage: {
44
+ default: 20,
45
+ type: Number
46
+ }
47
+ }, {
48
+ "selection": { default: () => [] },
49
+ "selectionModifiers": {}
50
+ }),
51
+ emits: /*@__PURE__*/ mergeModels(["update:filters"], ["update:selection"]),
52
+ setup(__props, { emit: __emit }) {
53
+ const props = __props;
54
+ const emit = __emit;
55
+ const messages = useUiMessages();
56
+ const describeRequestError = useUiDescribeRequestError();
57
+ const toColumnFilters = (vendorFilters) => vendorFilters;
58
+ const internalFilters = ref(collectColumnFilters(props.columns));
59
+ watch(() => props.columns, () => {
60
+ if (props.filters === void 0) internalFilters.value = collectColumnFilters(props.columns);
61
+ });
62
+ const filtersBinding = computed({
63
+ get: () => props.filters ?? internalFilters.value,
64
+ set: (value) => {
65
+ if (props.filters !== void 0) {
66
+ emit("update:filters", value);
67
+ return;
68
+ }
69
+ internalFilters.value = value;
70
+ }
71
+ });
72
+ const listing = props.listingStore;
73
+ const defaultTableSorting = computed(() => props.defaultSorting ?? DEFAULT_CREATED_AT_SORTING);
74
+ const selectedRows = useModel(__props, "selection");
75
+ const selectedAll = ref(false);
76
+ const selectFilters = ref(/* @__PURE__ */ new Map());
77
+ const combinedFilters = (textFilters) => [
78
+ ...textFilters,
79
+ ...selectFilters.value.values(),
80
+ ...props.extraFilters ?? []
81
+ ];
82
+ const reloadWithFilters = async (textFilters) => {
83
+ listing.setFilters(combinedFilters(textFilters));
84
+ await listing.getRecords(listing.currentPage);
85
+ };
86
+ const rowsPerPageOptions = () => {
87
+ return [
88
+ 20,
89
+ 40,
90
+ 100
91
+ ];
92
+ };
93
+ const filterDisplay = computed(() => props.columns.some((column) => column.filter !== void 0) ? "row" : void 0);
94
+ const loading = computed(() => listing.loading);
95
+ const listingError = computed(() => listing.error);
96
+ const errorMessage = computed(() => describeRequestError(listing.error, messages.value.table.error));
97
+ const paginatorFirst = computed(() => listing.currentPage * listing.limit);
98
+ const totalRecords = computed(() => listing.totalRecords);
99
+ onServerPrefetch(async () => {
100
+ listing.setLimit(props.rowsPerPage);
101
+ await listing.getRecords(listing.currentPage);
102
+ listing.markServerRendered();
103
+ });
104
+ onBeforeMount(async () => {
105
+ listing.setLimit(props.rowsPerPage);
106
+ if (listing.records.length === 0) await listing.getRecords(listing.currentPage);
107
+ });
108
+ const onPage = async (event) => {
109
+ listing.setLimit(event.rows);
110
+ await listing.getRecords(event.page);
111
+ };
112
+ const toSortingFromMultiMeta = (multiSortMeta) => {
113
+ if (multiSortMeta === void 0 || multiSortMeta.length === SORT_NEUTRAL) return [];
114
+ return multiSortMeta.map((sortMeta) => ({
115
+ field: sortMeta.field,
116
+ order: sortMeta.order === SORT_ASC_FLAG ? SortOrder.ASC : SortOrder.DESC
117
+ }));
118
+ };
119
+ const NEUTRAL_SORT_ORDERS = /* @__PURE__ */ new Set([
120
+ null,
121
+ SORT_NEUTRAL,
122
+ void 0
123
+ ]);
124
+ const isNeutralSortOrder = (order) => NEUTRAL_SORT_ORDERS.has(order);
125
+ const singleSortRow = (field, orderFlag) => ({
126
+ field,
127
+ order: orderFlag === SORT_ASC_FLAG ? SortOrder.ASC : SortOrder.DESC
128
+ });
129
+ const toSortingFromSingleSort = (event) => {
130
+ const field = typeof event.sortField === "string" ? event.sortField : "";
131
+ return field === "" || isNeutralSortOrder(event.sortOrder) ? [] : [singleSortRow(field, event.sortOrder)];
132
+ };
133
+ const onSort = async (event) => {
134
+ const fromMulti = toSortingFromMultiMeta(event.multiSortMeta);
135
+ let sorting = fromMulti.length > SORT_NEUTRAL ? fromMulti : toSortingFromSingleSort(event);
136
+ if (sorting.length === SORT_NEUTRAL) sorting = defaultTableSorting.value;
137
+ listing.setSorting(sorting);
138
+ listing.setLimit(event.rows);
139
+ await listing.getRecords(listing.currentPage);
140
+ };
141
+ const onFilter = async (event) => {
142
+ await reloadWithFilters(getFilters(toColumnFilters(event.filters)));
143
+ };
144
+ const onSelectFilters = async (field, selectedFilters) => {
145
+ if (selectedFilters.length === 0) selectFilters.value.delete(field);
146
+ else selectFilters.value.set(field, {
147
+ field,
148
+ matchMode: FiltersMatchMode.IN,
149
+ value: selectedFilters.map((value) => value.name).join(",")
150
+ });
151
+ await reloadWithFilters(getFilters(filtersBinding.value));
152
+ };
153
+ watch(() => props.extraFilters, async () => {
154
+ await reloadWithFilters(getFilters(filtersBinding.value));
155
+ });
156
+ const onSelectAllChange = (event) => {
157
+ if (event.checked) {
158
+ selectedAll.value = true;
159
+ selectedRows.value = listing.records;
160
+ } else {
161
+ selectedAll.value = false;
162
+ selectedRows.value = [];
163
+ }
164
+ };
165
+ const onRowSelect = () => {
166
+ selectedAll.value = selectedRows.value.length === totalRecords.value;
167
+ };
168
+ const onRowUnselect = () => {
169
+ selectedAll.value = false;
170
+ };
171
+ return (_ctx, _cache) => {
172
+ return openBlock(), createElementBlock("div", _hoisted_1, [listingError.value !== null ? renderSlot(_ctx.$slots, "error", { error: listingError.value }, () => [createVNode(Message_default, {
173
+ class: "data-table-frame__error",
174
+ role: "alert",
175
+ severity: "danger"
176
+ }, {
177
+ default: withCtx(() => [createTextVNode(toDisplayString(errorMessage.value), 1)]),
178
+ _: 1
179
+ })], true, 0) : createCommentVNode("", true), createVNode(unref(DataTable), {
180
+ selection: selectedRows.value,
181
+ "onUpdate:selection": _cache[0] || (_cache[0] = ($event) => selectedRows.value = $event),
182
+ filters: filtersBinding.value,
183
+ "onUpdate:filters": _cache[1] || (_cache[1] = ($event) => filtersBinding.value = $event),
184
+ loading: loading.value,
185
+ first: paginatorFirst.value,
186
+ "rows-per-page-options": rowsPerPageOptions(),
187
+ rows: unref(listing).limit,
188
+ "select-all": selectedAll.value,
189
+ "total-records": totalRecords.value,
190
+ value: unref(listing).records,
191
+ pt: {
192
+ "column": {
193
+ "bodyCell": {
194
+ "class": "data-table__body-cell",
195
+ [_ctx.$options["__scopeId"]]: ""
196
+ },
197
+ "headerCell": {
198
+ "class": "data-table__header-cell",
199
+ [_ctx.$options["__scopeId"]]: ""
200
+ },
201
+ "filterRowItem": {
202
+ "class": "data-table__filter-row-item",
203
+ [_ctx.$options["__scopeId"]]: ""
204
+ }
205
+ },
206
+ "paginator": { "rowPerPageDropdown": {
207
+ "input": {
208
+ "class": "data-table__paginator-row-per-page-input",
209
+ [_ctx.$options["__scopeId"]]: ""
210
+ },
211
+ "item": {
212
+ "class": "data-table__paginator-row-per-page-item",
213
+ [_ctx.$options["__scopeId"]]: ""
214
+ }
215
+ } }
216
+ },
217
+ class: "data-table",
218
+ "current-page-report-template": "{first} to {last} of {totalRecords}",
219
+ "filter-display": filterDisplay.value,
220
+ "data-key": "id",
221
+ lazy: "",
222
+ paginator: "",
223
+ "paginator-template": "PrevPageLink CurrentPageReport NextPageLink RowsPerPageDropdown ",
224
+ "removable-sort": "",
225
+ "row-hover": "",
226
+ "show-gridlines": "",
227
+ size: "small",
228
+ "sort-mode": "single",
229
+ "striped-rows": "",
230
+ onFilter,
231
+ onPage,
232
+ onRowSelect,
233
+ onRowUnselect,
234
+ onSelectAllChange,
235
+ onSort
236
+ }, {
237
+ empty: withCtx(() => [listingError.value === null ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(toDisplayString(unref(messages).table.empty), 1)], 64)) : createCommentVNode("", true)]),
238
+ loading: withCtx(() => [createTextVNode(toDisplayString(unref(messages).table.loading), 1)]),
239
+ default: withCtx(() => [__props.multiSelectEnabled ? (openBlock(), createBlock(unref(DataTableColumn), {
240
+ key: 0,
241
+ "selection-mode": "multiple",
242
+ class: "table-column"
243
+ })) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(props.columns, (column, index) => {
244
+ return openBlock(), createBlock(unref(DataTableColumn), {
245
+ key: index,
246
+ field: column.field,
247
+ "filter-field": column.field,
248
+ "show-filter-menu": column.showFilterMenu === true,
249
+ header: column.header,
250
+ sortable: column.sortable,
251
+ class: "table-column",
252
+ "filter-header-class": "",
253
+ "filter-menu-class": "table-column"
254
+ }, createSlots({
255
+ body: withCtx((slotProps) => [(openBlock(), createBlock(resolveDynamicComponent(column.component), mergeProps({ ref_for: true }, { ...column.componentProps(slotProps.data) }), null, 16))]),
256
+ _: 2
257
+ }, [column.filter ? {
258
+ name: "filter",
259
+ fn: withCtx((slotProps) => [column.filter.metadata ? (openBlock(), createBlock(unref(InputText), {
260
+ key: 0,
261
+ modelValue: slotProps.filterModel.value,
262
+ "onUpdate:modelValue": ($event) => slotProps.filterModel.value = $event,
263
+ type: "text",
264
+ class: "p-column-filter",
265
+ placeholder: column.filter.filterPlaceholder ?? unref(messages).table.searchPlaceholder,
266
+ onKeydown: withKeys(($event) => slotProps.filterCallback(), ["enter"])
267
+ }, null, 8, [
268
+ "modelValue",
269
+ "onUpdate:modelValue",
270
+ "placeholder",
271
+ "onKeydown"
272
+ ])) : column.filter.component ? (openBlock(), createBlock(resolveDynamicComponent(column.filter.component.component), mergeProps({
273
+ key: 1,
274
+ ref_for: true
275
+ }, { ...column.filter.component.filterComponentProps(slotProps) }, { "onUpdate:selectedValue": (selectedValues) => onSelectFilters(slotProps.field, selectedValues) }), null, 16, ["onUpdate:selectedValue"])) : createCommentVNode("", true)]),
276
+ key: "0"
277
+ } : void 0]), 1032, [
278
+ "field",
279
+ "filter-field",
280
+ "show-filter-menu",
281
+ "header",
282
+ "sortable"
283
+ ]);
284
+ }), 128))]),
285
+ _: 1
286
+ }, 8, [
287
+ "selection",
288
+ "filters",
289
+ "loading",
290
+ "first",
291
+ "rows-per-page-options",
292
+ "rows",
293
+ "select-all",
294
+ "total-records",
295
+ "value",
296
+ "pt",
297
+ "filter-display"
298
+ ])]);
299
+ };
300
+ }
301
+ });
302
+ //#endregion
303
+ export { DataTable_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,7 @@
1
+ import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export-helper.js";
2
+ import InfiniteDataTable_vue_vue_type_script_setup_true_lang_default from "./InfiniteDataTable.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/components/table/InfiniteDataTable.vue
5
+ var InfiniteDataTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(InfiniteDataTable_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-2c01be04"]]);
6
+ //#endregion
7
+ export { InfiniteDataTable_default as default };
@@ -0,0 +1,32 @@
1
+ import type { Component, PropType } from 'vue';
2
+ import { InfiniteListingStoreType } from '../../store/listing/infinite-listing-store';
3
+ import { ColumnSchemaInterface } from './column-schema-interface';
4
+ declare const __VLS_export: <T, S extends string>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
5
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<import("vue").ExtractPublicPropTypes<{
6
+ columns: {
7
+ required: boolean;
8
+ type: PropType<ColumnSchemaInterface<T, Component>[]>;
9
+ };
10
+ listingStore: {
11
+ required: boolean;
12
+ type: PropType<InfiniteListingStoreType<T, S>>;
13
+ };
14
+ }>> & (typeof globalThis extends {
15
+ __VLS_PROPS_FALLBACK: infer P;
16
+ } ? P : {});
17
+ expose: (exposed: {}) => void;
18
+ attrs: any;
19
+ slots: {
20
+ limit?: (props: {}) => any;
21
+ };
22
+ emit: {};
23
+ }>) => import("vue").VNode & {
24
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
25
+ };
26
+ declare const _default: typeof __VLS_export;
27
+ export default _default;
28
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
29
+ [K in keyof T]: T[K];
30
+ } : {
31
+ [K in keyof T as K]: T[K];
32
+ }) & {};
@@ -0,0 +1,88 @@
1
+ import { useUiMessages } from "../../plugin/ui-injection.js";
2
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, onBeforeMount, onBeforeUnmount, onMounted, onServerPrefetch, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, unref, withCtx } from "vue";
3
+ import DataTableColumn from "openvue/column";
4
+ import DataTable from "openvue/datatable";
5
+ //#region src/components/table/InfiniteDataTable.vue?vue&type=script&setup=true&lang.ts
6
+ var _hoisted_1 = {
7
+ key: 0,
8
+ class: "infinite-data-table__more",
9
+ role: "status"
10
+ };
11
+ var NO_RECORDS = 0;
12
+ var InfiniteDataTable_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
13
+ __name: "InfiniteDataTable",
14
+ props: {
15
+ columns: {
16
+ required: true,
17
+ type: Object
18
+ },
19
+ listingStore: {
20
+ required: true,
21
+ type: Object
22
+ }
23
+ },
24
+ setup(__props) {
25
+ const props = __props;
26
+ const messages = useUiMessages();
27
+ const listing = props.listingStore;
28
+ const isInitialLoading = computed(() => listing.loading && listing.records.length === NO_RECORDS);
29
+ const isLoadingMore = computed(() => listing.loading && listing.records.length > NO_RECORDS);
30
+ const sentinel = ref(null);
31
+ const observer = shallowRef(null);
32
+ onServerPrefetch(async () => {
33
+ await listing.reload();
34
+ });
35
+ onBeforeMount(async () => {
36
+ if (listing.records.length === NO_RECORDS) await listing.reload();
37
+ });
38
+ onMounted(() => {
39
+ observer.value = new globalThis.IntersectionObserver((entries) => {
40
+ if (entries.some((entry) => entry.isIntersecting)) listing.loadMore();
41
+ }, { rootMargin: "200px" });
42
+ /* v8 ignore next */
43
+ if (sentinel.value !== null) observer.value.observe(sentinel.value);
44
+ });
45
+ onBeforeUnmount(() => {
46
+ observer.value?.disconnect();
47
+ observer.value = null;
48
+ });
49
+ return (_ctx, _cache) => {
50
+ return openBlock(), createElementBlock(Fragment, null, [
51
+ createVNode(unref(DataTable), {
52
+ loading: isInitialLoading.value,
53
+ value: unref(listing).records,
54
+ class: "infinite-data-table",
55
+ lazy: "",
56
+ "show-gridlines": "",
57
+ size: "small",
58
+ "striped-rows": ""
59
+ }, {
60
+ empty: withCtx(() => [createTextVNode(toDisplayString(unref(messages).table.empty), 1)]),
61
+ loading: withCtx(() => [createTextVNode(toDisplayString(unref(messages).table.loading), 1)]),
62
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(props.columns, (column, index) => {
63
+ return openBlock(), createBlock(unref(DataTableColumn), {
64
+ key: index,
65
+ field: column.field,
66
+ header: column.header,
67
+ class: "table-column"
68
+ }, {
69
+ body: withCtx((slotProps) => [(openBlock(), createBlock(resolveDynamicComponent(column.component), mergeProps({ ref_for: true }, { ...column.componentProps(slotProps.data) }), null, 16))]),
70
+ _: 2
71
+ }, 1032, ["field", "header"]);
72
+ }), 128))]),
73
+ _: 1
74
+ }, 8, ["loading", "value"]),
75
+ isLoadingMore.value ? (openBlock(), createElementBlock("div", _hoisted_1, toDisplayString(unref(messages).table.loadingMore), 1)) : createCommentVNode("", true),
76
+ createElementVNode("div", {
77
+ ref_key: "sentinel",
78
+ ref: sentinel,
79
+ class: "infinite-data-table__sentinel",
80
+ "aria-hidden": "true"
81
+ }, null, 512),
82
+ renderSlot(_ctx.$slots, "limit", {}, void 0, true)
83
+ ], 64);
84
+ };
85
+ }
86
+ });
87
+ //#endregion
88
+ export { InfiniteDataTable_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import SelectColumnFilter_vue_vue_type_script_setup_true_lang_default from "./SelectColumnFilter.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/table/SelectColumnFilter.vue
3
+ var SelectColumnFilter_default = SelectColumnFilter_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { SelectColumnFilter_default as default };
@@ -0,0 +1,29 @@
1
+ import type { PropType } from 'vue';
2
+ import type { SelectColumnFilterOptionInterface } from './select-column-filter-option.interface';
3
+ declare const __VLS_export: import("*.vue").DefineComponent<import("vue").ExtractPropTypes<{
4
+ options: {
5
+ required: true;
6
+ type: PropType<SelectColumnFilterOptionInterface[]>;
7
+ };
8
+ placeholder: {
9
+ default: undefined;
10
+ type: StringConstructor;
11
+ };
12
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
+ "update:selected-value": (selected: SelectColumnFilterOptionInterface[]) => any;
14
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
15
+ options: {
16
+ required: true;
17
+ type: PropType<SelectColumnFilterOptionInterface[]>;
18
+ };
19
+ placeholder: {
20
+ default: undefined;
21
+ type: StringConstructor;
22
+ };
23
+ }>> & Readonly<{
24
+ "onUpdate:selected-value"?: (selected: SelectColumnFilterOptionInterface[]) => any;
25
+ }>, {
26
+ placeholder: string;
27
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
@@ -0,0 +1,58 @@
1
+ import { useUiMessages } from "../../plugin/ui-injection.js";
2
+ import MultiSelect_default from "../form/MultiSelect.js";
3
+ import Tag_default from "../tag/Tag.js";
4
+ import { createBlock, createElementBlock, defineComponent, openBlock, ref, toDisplayString, unref, withCtx } from "vue";
5
+ //#region src/components/table/SelectColumnFilter.vue?vue&type=script&setup=true&lang.ts
6
+ var _hoisted_1 = {
7
+ key: 1,
8
+ class: "select-column-filter__option"
9
+ };
10
+ var SelectColumnFilter_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
11
+ __name: "SelectColumnFilter",
12
+ props: {
13
+ options: {
14
+ required: true,
15
+ type: Array
16
+ },
17
+ placeholder: {
18
+ default: void 0,
19
+ type: String
20
+ }
21
+ },
22
+ emits: ["update:selected-value"],
23
+ setup(__props, { emit: __emit }) {
24
+ const messages = useUiMessages();
25
+ const emit = __emit;
26
+ const selected = ref([]);
27
+ return (_ctx, _cache) => {
28
+ return openBlock(), createBlock(MultiSelect_default, {
29
+ modelValue: selected.value,
30
+ "onUpdate:modelValue": [_cache[0] || (_cache[0] = ($event) => selected.value = $event), _cache[1] || (_cache[1] = ($event) => emit("update:selected-value", $event))],
31
+ options: __props.options,
32
+ placeholder: __props.placeholder ?? unref(messages).table.selectFilterPlaceholder,
33
+ class: "p-column-filter",
34
+ display: "chip",
35
+ "max-selected-labels": 2,
36
+ "option-label": "label"
37
+ }, {
38
+ option: withCtx(({ option }) => [option.severity !== void 0 ? (openBlock(), createBlock(Tag_default, {
39
+ key: 0,
40
+ icon: option.tagIcon,
41
+ severity: option.severity,
42
+ value: option.label
43
+ }, null, 8, [
44
+ "icon",
45
+ "severity",
46
+ "value"
47
+ ])) : (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(option.label), 1))]),
48
+ _: 1
49
+ }, 8, [
50
+ "modelValue",
51
+ "options",
52
+ "placeholder"
53
+ ]);
54
+ };
55
+ }
56
+ });
57
+ //#endregion
58
+ export { SelectColumnFilter_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import StaticTable_vue_vue_type_script_setup_true_lang_default from "./StaticTable.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/table/StaticTable.vue
3
+ var StaticTable_default = StaticTable_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { StaticTable_default as default };
@@ -0,0 +1,39 @@
1
+ import type { PropType, VNode } from 'vue';
2
+ declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<import("vue").ExtractPublicPropTypes<{
4
+ dataKey: {
5
+ default: undefined;
6
+ type: PropType<string | undefined>;
7
+ };
8
+ rows: {
9
+ required: boolean;
10
+ type: PropType<T[]>;
11
+ };
12
+ showGridlines: {
13
+ default: boolean;
14
+ type: BooleanConstructor;
15
+ };
16
+ stripedRows: {
17
+ default: boolean;
18
+ type: BooleanConstructor;
19
+ };
20
+ }>> & (typeof globalThis extends {
21
+ __VLS_PROPS_FALLBACK: infer P;
22
+ } ? P : {});
23
+ expose: (exposed: {}) => void;
24
+ attrs: any;
25
+ slots: {
26
+ default?: () => VNode[];
27
+ empty?: () => VNode[];
28
+ };
29
+ emit: {};
30
+ }>) => import("vue").VNode & {
31
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
32
+ };
33
+ declare const _default: typeof __VLS_export;
34
+ export default _default;
35
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
36
+ [K in keyof T]: T[K];
37
+ } : {
38
+ [K in keyof T as K]: T[K];
39
+ }) & {};
@@ -0,0 +1,48 @@
1
+ import { createBlock, createSlots, defineComponent, openBlock, renderSlot, unref, withCtx } from "vue";
2
+ import DataTable from "openvue/datatable";
3
+ //#region src/components/table/StaticTable.vue?vue&type=script&setup=true&lang.ts
4
+ var StaticTable_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
+ __name: "StaticTable",
6
+ props: {
7
+ dataKey: {
8
+ default: void 0,
9
+ type: String
10
+ },
11
+ rows: {
12
+ required: true,
13
+ type: Array
14
+ },
15
+ showGridlines: {
16
+ default: false,
17
+ type: Boolean
18
+ },
19
+ stripedRows: {
20
+ default: false,
21
+ type: Boolean
22
+ }
23
+ },
24
+ setup(__props) {
25
+ return (_ctx, _cache) => {
26
+ return openBlock(), createBlock(unref(DataTable), {
27
+ "data-key": __props.dataKey,
28
+ "show-gridlines": __props.showGridlines,
29
+ "striped-rows": __props.stripedRows,
30
+ value: __props.rows
31
+ }, createSlots({
32
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
33
+ _: 2
34
+ }, [_ctx.$slots.empty ? {
35
+ name: "empty",
36
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "empty")]),
37
+ key: "0"
38
+ } : void 0]), 1032, [
39
+ "data-key",
40
+ "show-gridlines",
41
+ "striped-rows",
42
+ "value"
43
+ ]);
44
+ };
45
+ }
46
+ });
47
+ //#endregion
48
+ export { StaticTable_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import TextColumn_vue_vue_type_script_setup_true_lang_default from "./TextColumn.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/table/TextColumn.vue
3
+ var TextColumn_default = TextColumn_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { TextColumn_default as default };
@@ -0,0 +1,13 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ value: {
3
+ required: true;
4
+ type: StringConstructor;
5
+ };
6
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
7
+ value: {
8
+ required: true;
9
+ type: StringConstructor;
10
+ };
11
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
@@ -0,0 +1,16 @@
1
+ import { createElementBlock, defineComponent, openBlock, toDisplayString } from "vue";
2
+ //#region src/components/table/TextColumn.vue?vue&type=script&setup=true&lang.ts
3
+ var TextColumn_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
4
+ __name: "TextColumn",
5
+ props: { value: {
6
+ required: true,
7
+ type: String
8
+ } },
9
+ setup(__props) {
10
+ return (_ctx, _cache) => {
11
+ return openBlock(), createElementBlock("span", null, toDisplayString(__props.value), 1);
12
+ };
13
+ }
14
+ });
15
+ //#endregion
16
+ export { TextColumn_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,4 @@
1
+ import type { Component } from 'vue';
2
+ import type { ColumnFiltersInterface } from './column-filters-interface';
3
+ import type { ColumnSchemaInterface } from './column-schema-interface';
4
+ export declare const collectColumnFilters: <T>(columns: ColumnSchemaInterface<T, Component>[]) => ColumnFiltersInterface;