nuxt-ui-tools 0.1.0 → 0.1.1

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 (164) hide show
  1. package/dist/module.d.mts +4 -0
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +30 -15
  4. package/dist/runtime/form/components/actions/FormActions.d.vue.ts +0 -2
  5. package/dist/runtime/form/components/actions/FormActions.vue +5 -8
  6. package/dist/runtime/form/components/actions/FormActions.vue.d.ts +0 -2
  7. package/dist/runtime/form/components/layout/DrawerLayout.vue +5 -1
  8. package/dist/runtime/form/components/layout/ModalLayout.vue +5 -1
  9. package/dist/runtime/form/components/renderer/FormCompositeControl.d.vue.ts +15 -0
  10. package/dist/runtime/form/components/renderer/FormCompositeControl.vue +13 -0
  11. package/dist/runtime/form/components/renderer/FormCompositeControl.vue.d.ts +15 -0
  12. package/dist/runtime/form/components/renderer/FormFieldRenderer.d.vue.ts +1 -0
  13. package/dist/runtime/form/components/renderer/FormFieldRenderer.vue +19 -3
  14. package/dist/runtime/form/components/renderer/FormFieldRenderer.vue.d.ts +1 -0
  15. package/dist/runtime/form/components/renderer/FormFieldShell.d.vue.ts +4 -4
  16. package/dist/runtime/form/components/renderer/FormFieldShell.vue +15 -1
  17. package/dist/runtime/form/components/renderer/FormFieldShell.vue.d.ts +4 -4
  18. package/dist/runtime/form/components/root/Form.vue +5 -3
  19. package/dist/runtime/form/composables/use-field-control.d.ts +1 -1
  20. package/dist/runtime/form/composables/use-field-control.js +4 -0
  21. package/dist/runtime/form/composables/use-field-options.d.ts +1 -1
  22. package/dist/runtime/form/composables/use-field-options.js +75 -31
  23. package/dist/runtime/form/composables/use-form-field-chrome.d.ts +3 -0
  24. package/dist/runtime/form/composables/use-form-field-chrome.js +9 -0
  25. package/dist/runtime/form/composables/use-form-runtime.js +17 -5
  26. package/dist/runtime/form/fields/array-list/component.vue +4 -1
  27. package/dist/runtime/form/fields/auto-complete/component.vue +23 -16
  28. package/dist/runtime/form/fields/checkbox-card/component.vue +28 -29
  29. package/dist/runtime/form/fields/checkbox-group/component.vue +28 -29
  30. package/dist/runtime/form/fields/color-picker/component.vue +4 -2
  31. package/dist/runtime/form/fields/date-family/component.vue +9 -4
  32. package/dist/runtime/form/fields/hierarchy/SelectionCheckbox.d.vue.ts +13 -0
  33. package/dist/runtime/form/fields/hierarchy/SelectionCheckbox.vue +24 -0
  34. package/dist/runtime/form/fields/hierarchy/SelectionCheckbox.vue.d.ts +13 -0
  35. package/dist/runtime/form/fields/hierarchy/SelectionRadio.d.vue.ts +14 -0
  36. package/dist/runtime/form/fields/hierarchy/SelectionRadio.vue +27 -0
  37. package/dist/runtime/form/fields/hierarchy/SelectionRadio.vue.d.ts +14 -0
  38. package/dist/runtime/form/fields/hierarchy/component.vue +257 -142
  39. package/dist/runtime/form/fields/hierarchy/utils.d.ts +9 -0
  40. package/dist/runtime/form/fields/hierarchy/utils.js +32 -0
  41. package/dist/runtime/form/fields/input-group/component.vue +7 -30
  42. package/dist/runtime/form/fields/matrix/component.vue +9 -3
  43. package/dist/runtime/form/fields/phone-number/component.vue +7 -2
  44. package/dist/runtime/form/fields/rating/component.vue +25 -2
  45. package/dist/runtime/form/fields/select/component.vue +29 -21
  46. package/dist/runtime/form/fields/switch-group/component.vue +8 -3
  47. package/dist/runtime/form/fields/time/component.vue +7 -5
  48. package/dist/runtime/form/fields/upload/component.vue +5 -3
  49. package/dist/runtime/form/types/api.d.ts +9 -3
  50. package/dist/runtime/form/types/field-base.d.ts +3 -1
  51. package/dist/runtime/form/types/runtime.d.ts +2 -0
  52. package/dist/runtime/form/types/ui.d.ts +1 -0
  53. package/dist/runtime/form/utils/api.js +3 -0
  54. package/dist/runtime/form/utils/options.d.ts +11 -2
  55. package/dist/runtime/form/utils/options.js +57 -9
  56. package/dist/runtime/form/utils/state.js +10 -2
  57. package/dist/runtime/i18n/locales/en.js +38 -0
  58. package/dist/runtime/i18n/locales/fr.js +38 -0
  59. package/dist/runtime/i18n/types.d.ts +38 -0
  60. package/dist/runtime/i18n/use-locale.d.ts +2 -2
  61. package/dist/runtime/i18n/use-locale.js +3 -3
  62. package/dist/runtime/table/components/DataList.d.vue.ts +2 -0
  63. package/dist/runtime/table/components/DataList.vue.d.ts +2 -0
  64. package/dist/runtime/table/components/actions/RowActions.d.vue.ts +4 -2
  65. package/dist/runtime/table/components/actions/RowActions.vue +2 -0
  66. package/dist/runtime/table/components/actions/RowActions.vue.d.ts +4 -2
  67. package/dist/runtime/table/components/data-list/DataListAddFilter.d.vue.ts +5 -3
  68. package/dist/runtime/table/components/data-list/DataListAddFilter.vue +6 -1
  69. package/dist/runtime/table/components/data-list/DataListAddFilter.vue.d.ts +5 -3
  70. package/dist/runtime/table/components/data-list/DataListContent.d.vue.ts +24 -17
  71. package/dist/runtime/table/components/data-list/DataListContent.vue +70 -17
  72. package/dist/runtime/table/components/data-list/DataListContent.vue.d.ts +24 -17
  73. package/dist/runtime/table/components/data-list/DataListDefault.d.vue.ts +2 -0
  74. package/dist/runtime/table/components/data-list/DataListDefault.vue.d.ts +2 -0
  75. package/dist/runtime/table/components/data-list/DataListFilterTags.d.vue.ts +2 -0
  76. package/dist/runtime/table/components/data-list/DataListFilterTags.vue.d.ts +2 -0
  77. package/dist/runtime/table/components/data-list/DataListLayoutSwitch.vue +17 -11
  78. package/dist/runtime/table/components/data-list/DataListRoot.vue +2 -46
  79. package/dist/runtime/table/components/data-list/DataListSortMenu.vue +6 -0
  80. package/dist/runtime/table/components/filters/shared/DynamicFilterPicker.d.vue.ts +5 -0
  81. package/dist/runtime/table/components/filters/shared/DynamicFilterPicker.vue +182 -59
  82. package/dist/runtime/table/components/filters/shared/DynamicFilterPicker.vue.d.ts +5 -0
  83. package/dist/runtime/table/components/filters/shared/FilterMatchModeButton.d.vue.ts +3 -1
  84. package/dist/runtime/table/components/filters/shared/FilterMatchModeButton.vue +29 -5
  85. package/dist/runtime/table/components/filters/shared/FilterMatchModeButton.vue.d.ts +3 -1
  86. package/dist/runtime/table/components/filters/shared/FilterMatchModePanel.d.vue.ts +17 -0
  87. package/dist/runtime/table/components/filters/shared/FilterMatchModePanel.vue +47 -0
  88. package/dist/runtime/table/components/filters/shared/FilterMatchModePanel.vue.d.ts +17 -0
  89. package/dist/runtime/table/components/filters/shared/FilterOptionMultipleList.d.vue.ts +3 -1
  90. package/dist/runtime/table/components/filters/shared/FilterOptionMultipleList.vue +12 -3
  91. package/dist/runtime/table/components/filters/shared/FilterOptionMultipleList.vue.d.ts +3 -1
  92. package/dist/runtime/table/components/filters/shared/FilterOptionPickerContent.d.vue.ts +3 -0
  93. package/dist/runtime/table/components/filters/shared/FilterOptionPickerContent.vue +11 -1
  94. package/dist/runtime/table/components/filters/shared/FilterOptionPickerContent.vue.d.ts +3 -0
  95. package/dist/runtime/table/components/filters/shared/FilterOptionRow.d.vue.ts +3 -0
  96. package/dist/runtime/table/components/filters/shared/FilterOptionRow.vue +48 -9
  97. package/dist/runtime/table/components/filters/shared/FilterOptionRow.vue.d.ts +3 -0
  98. package/dist/runtime/table/components/filters/shared/FilterOptionSingleList.d.vue.ts +3 -0
  99. package/dist/runtime/table/components/filters/shared/FilterOptionSingleList.vue +35 -9
  100. package/dist/runtime/table/components/filters/shared/FilterOptionSingleList.vue.d.ts +3 -0
  101. package/dist/runtime/table/components/filters/shared/FilterOptionTreeContent.d.vue.ts +3 -0
  102. package/dist/runtime/table/components/filters/shared/FilterOptionTreeContent.vue +77 -20
  103. package/dist/runtime/table/components/filters/shared/FilterOptionTreeContent.vue.d.ts +3 -0
  104. package/dist/runtime/table/components/filters/shared/FilterPopoverShell.d.vue.ts +27 -0
  105. package/dist/runtime/table/components/filters/shared/FilterPopoverShell.vue +36 -0
  106. package/dist/runtime/table/components/filters/shared/FilterPopoverShell.vue.d.ts +27 -0
  107. package/dist/runtime/table/components/filters/shared/FilterSearchablePanel.d.vue.ts +3 -0
  108. package/dist/runtime/table/components/filters/shared/FilterSearchablePanel.vue +40 -10
  109. package/dist/runtime/table/components/filters/shared/FilterSearchablePanel.vue.d.ts +3 -0
  110. package/dist/runtime/table/components/filters/shared/FilterStageTransition.d.vue.ts +23 -0
  111. package/dist/runtime/table/components/filters/shared/FilterStageTransition.vue +21 -0
  112. package/dist/runtime/table/components/filters/shared/FilterStageTransition.vue.d.ts +23 -0
  113. package/dist/runtime/table/components/filters/shared/FilterTriggerTag.d.vue.ts +3 -2
  114. package/dist/runtime/table/components/filters/shared/FilterTriggerTag.vue +26 -25
  115. package/dist/runtime/table/components/filters/shared/FilterTriggerTag.vue.d.ts +3 -2
  116. package/dist/runtime/table/components/filters/tags/BooleanFilterTag.d.vue.ts +1 -1
  117. package/dist/runtime/table/components/filters/tags/BooleanFilterTag.vue +75 -22
  118. package/dist/runtime/table/components/filters/tags/BooleanFilterTag.vue.d.ts +1 -1
  119. package/dist/runtime/table/components/filters/tags/DateFilterTag.d.vue.ts +3 -1
  120. package/dist/runtime/table/components/filters/tags/DateFilterTag.vue +254 -160
  121. package/dist/runtime/table/components/filters/tags/DateFilterTag.vue.d.ts +3 -1
  122. package/dist/runtime/table/components/filters/tags/FilterTagsBar.d.vue.ts +7 -6
  123. package/dist/runtime/table/components/filters/tags/FilterTagsBar.vue +12 -27
  124. package/dist/runtime/table/components/filters/tags/FilterTagsBar.vue.d.ts +7 -6
  125. package/dist/runtime/table/components/filters/tags/NumberFilterTag.d.vue.ts +3 -2
  126. package/dist/runtime/table/components/filters/tags/NumberFilterTag.vue +192 -106
  127. package/dist/runtime/table/components/filters/tags/NumberFilterTag.vue.d.ts +3 -2
  128. package/dist/runtime/table/components/filters/tags/OptionFilterTag.d.vue.ts +3 -2
  129. package/dist/runtime/table/components/filters/tags/OptionFilterTag.vue +110 -48
  130. package/dist/runtime/table/components/filters/tags/OptionFilterTag.vue.d.ts +3 -2
  131. package/dist/runtime/table/components/filters/tags/TextFilterTag.d.vue.ts +3 -2
  132. package/dist/runtime/table/components/filters/tags/TextFilterTag.vue +120 -57
  133. package/dist/runtime/table/components/filters/tags/TextFilterTag.vue.d.ts +3 -2
  134. package/dist/runtime/table/components/grid/GridRenderer.vue +1 -1
  135. package/dist/runtime/table/components/layout/TableFooter.vue +1 -0
  136. package/dist/runtime/table/components/table/TableRenderer.vue +18 -9
  137. package/dist/runtime/table/composables/use-filter-tag-session.d.ts +3 -4
  138. package/dist/runtime/table/composables/use-filter-tag-session.js +12 -32
  139. package/dist/runtime/table/composables/use-query-state.d.ts +3 -3
  140. package/dist/runtime/table/composables/use-query-state.js +7 -32
  141. package/dist/runtime/table/composables/use-table-api.js +2 -2
  142. package/dist/runtime/table/composables/use-table-columns.d.ts +1 -11
  143. package/dist/runtime/table/composables/use-table-filter-presentation.d.ts +0 -3
  144. package/dist/runtime/table/composables/use-table-filter-presentation.js +0 -9
  145. package/dist/runtime/table/composables/use-table-filters.js +18 -7
  146. package/dist/runtime/table/composables/use-table-internals.d.ts +3 -42
  147. package/dist/runtime/table/types/actions.d.ts +1 -1
  148. package/dist/runtime/table/types/data-list.d.ts +41 -8
  149. package/dist/runtime/table/types/filters.d.ts +4 -0
  150. package/dist/runtime/table/utils/actions.d.ts +1 -1
  151. package/dist/runtime/table/utils/columns/menu.d.ts +2 -11
  152. package/dist/runtime/table/utils/columns/render.d.ts +2 -9
  153. package/dist/runtime/table/utils/columns/render.js +4 -4
  154. package/dist/runtime/table/utils/data-list-ui.d.ts +3 -1
  155. package/dist/runtime/table/utils/data-list-ui.js +45 -0
  156. package/dist/runtime/table/utils/filters/editor-size.d.ts +11 -0
  157. package/dist/runtime/table/utils/filters/editor-size.js +45 -0
  158. package/dist/runtime/table/utils/filters/index.d.ts +1 -1
  159. package/dist/runtime/table/utils/filters/index.js +1 -1
  160. package/dist/runtime/table/utils/query-state.d.ts +18 -1
  161. package/dist/runtime/table/utils/query-state.js +109 -0
  162. package/package.json +4 -2
  163. package/dist/runtime/table/utils/filters/operators.d.ts +0 -4
  164. package/dist/runtime/table/utils/filters/operators.js +0 -6
@@ -0,0 +1,45 @@
1
+ const filterEditorSizeClasses = {
2
+ xs: {
3
+ editor: "w-[min(13rem,calc(100vw-1rem))] min-w-44 max-w-52",
4
+ searchHeader: "p-1",
5
+ scrollArea: "p-1",
6
+ option: "gap-1.5 px-1.5 py-1 text-xs",
7
+ optionIcon: "size-3.5",
8
+ optionLabel: "text-xs",
9
+ footer: "p-1",
10
+ empty: "px-2 py-4 text-xs"
11
+ },
12
+ sm: {
13
+ editor: "w-[min(15rem,calc(100vw-1rem))] min-w-48 max-w-60",
14
+ searchHeader: "p-1.5",
15
+ scrollArea: "p-1",
16
+ option: "gap-2 px-2 py-1.5 text-xs",
17
+ optionIcon: "size-3.5",
18
+ optionLabel: "text-xs",
19
+ footer: "p-1.5",
20
+ empty: "px-2.5 py-5 text-xs"
21
+ },
22
+ md: {
23
+ editor: "w-[min(17rem,calc(100vw-1rem))] min-w-52 max-w-68",
24
+ searchHeader: "p-2",
25
+ scrollArea: "p-2",
26
+ option: "gap-3 px-3 py-2 text-sm",
27
+ optionIcon: "size-4",
28
+ optionLabel: "text-sm",
29
+ footer: "p-2",
30
+ empty: "px-3 py-8 text-sm"
31
+ },
32
+ lg: {
33
+ editor: "w-[min(19rem,calc(100vw-1rem))] min-w-56 max-w-76",
34
+ searchHeader: "p-2.5",
35
+ scrollArea: "p-2.5",
36
+ option: "gap-3 px-3.5 py-2.5 text-sm",
37
+ optionIcon: "size-4.5",
38
+ optionLabel: "text-sm",
39
+ footer: "p-2.5",
40
+ empty: "px-3.5 py-9 text-sm"
41
+ }
42
+ };
43
+ export function resolveFilterEditorSizeClasses(size) {
44
+ return filterEditorSizeClasses[size ?? "md"];
45
+ }
@@ -1,6 +1,6 @@
1
1
  export * from './common.js';
2
2
  export * from './date.js';
3
- export * from './operators.js';
3
+ export * from './editor-size.js';
4
4
  export * from './options.js';
5
5
  export * from './presentation.js';
6
6
  export * from './preview.js';
@@ -1,6 +1,6 @@
1
1
  export * from "./common.js";
2
2
  export * from "./date.js";
3
- export * from "./operators.js";
3
+ export * from "./editor-size.js";
4
4
  export * from "./options.js";
5
5
  export * from "./presentation.js";
6
6
  export * from "./preview/index.js";
@@ -1,5 +1,5 @@
1
1
  import type { QueryCodec } from '#ui-tools/query-state';
2
- import type { TableFilterOperator, TableLayout, TableUiFilterDefinition, TableQueryStateFilterDefinition, TableQueryStateFilterValue, TableSchemaView, TableSortingDirection, TablePaginationState, TablePaginationSchema } from '../types/index.js';
2
+ import type { TableFilterOperator, TableLayout, TableQueryStateFilterRule, TableUiFilterDefinition, TableQueryStateFilterDefinition, TableQueryStateFilterValue, TableSchemaView, TableSortingDirection, TablePaginationState, TablePaginationSchema } from '../types/index.js';
3
3
  export declare function getPaginationMode(schema: {
4
4
  pagination?: TablePaginationSchema;
5
5
  }): TablePaginationState['mode'];
@@ -27,3 +27,20 @@ export declare function createTableFilterValueCodec(definition: TableQueryStateF
27
27
  export declare function resolveFilterDefaultOperator(definition: TableQueryStateFilterDefinition): TableFilterOperator;
28
28
  export declare function resolveFilterSupportedOperators(definition: TableQueryStateFilterDefinition): TableFilterOperator[];
29
29
  export declare function normalizeFilterDefinition(definition: TableQueryStateFilterDefinition | TableUiFilterDefinition): TableQueryStateFilterDefinition;
30
+ export declare function resolveTableFilterDefaultRules(definitions: TableUiFilterDefinition[]): TableQueryStateFilterRule[];
31
+ export declare function mergeTableFilterDefaultRules(options: {
32
+ rules: TableQueryStateFilterRule[];
33
+ definitions: TableUiFilterDefinition[];
34
+ }): TableQueryStateFilterRule[];
35
+ export declare function isTableFilterRuleDefault(options: {
36
+ rule: TableQueryStateFilterRule;
37
+ definition: TableUiFilterDefinition;
38
+ }): boolean;
39
+ export declare function parseTableFilterQueryState(options: {
40
+ entries: ReadonlyMap<string, unknown>;
41
+ definitions: TableUiFilterDefinition[];
42
+ }): TableQueryStateFilterRule[];
43
+ export declare function serializeTableFilterQueryState(options: {
44
+ rules: TableQueryStateFilterRule[];
45
+ definitions: TableUiFilterDefinition[];
46
+ }): Map<string, unknown>;
@@ -160,12 +160,121 @@ export function normalizeFilterDefinition(definition) {
160
160
  defaultValue
161
161
  };
162
162
  }
163
+ export function resolveTableFilterDefaultRules(definitions) {
164
+ return definitions.flatMap((definition) => {
165
+ const normalizedDefinition = normalizeFilterDefinition(definition);
166
+ const value = normalizedDefinition.defaultValue;
167
+ if (value === void 0 || !hasFilterValue(value)) {
168
+ return [];
169
+ }
170
+ return [
171
+ {
172
+ key: normalizedDefinition.key,
173
+ operator: resolveFilterDefaultOperator(normalizedDefinition),
174
+ value
175
+ }
176
+ ];
177
+ });
178
+ }
179
+ export function mergeTableFilterDefaultRules(options) {
180
+ const defaults = new Map(
181
+ resolveTableFilterDefaultRules(options.definitions).map((rule) => [rule.key, rule])
182
+ );
183
+ const definitionKeys = new Set(options.definitions.map((definition) => definition.key));
184
+ const merged = options.definitions.flatMap((definition) => {
185
+ const rule = options.rules.find((candidate) => candidate.key === definition.key);
186
+ const defaultRule = defaults.get(definition.key);
187
+ return rule ? [rule] : defaultRule ? [defaultRule] : [];
188
+ });
189
+ return [...merged, ...options.rules.filter((rule) => !definitionKeys.has(rule.key))];
190
+ }
191
+ export function isTableFilterRuleDefault(options) {
192
+ const normalizedDefinition = normalizeFilterDefinition(options.definition);
193
+ const defaultValue = normalizedDefinition.defaultValue;
194
+ return defaultValue !== void 0 && (options.rule.operator ?? resolveFilterDefaultOperator(normalizedDefinition)) === resolveFilterDefaultOperator(normalizedDefinition) && areFilterValuesEqual(options.rule.value, defaultValue);
195
+ }
196
+ export function parseTableFilterQueryState(options) {
197
+ const rules = [];
198
+ for (const filter of options.definitions) {
199
+ const definition = normalizeFilterDefinition(filter);
200
+ const operators = resolveFilterSupportedOperators(definition);
201
+ const defaultOperator = resolveFilterDefaultOperator(definition);
202
+ for (const operator of operators) {
203
+ const urlKey = operator === defaultOperator ? definition.key : `${definition.key}~${operator}`;
204
+ const value = options.entries.get(urlKey);
205
+ if (isTableFilterValue(value)) {
206
+ rules.push({ key: definition.key, operator, value });
207
+ break;
208
+ }
209
+ }
210
+ }
211
+ return mergeTableFilterDefaultRules({ rules, definitions: options.definitions });
212
+ }
213
+ export function serializeTableFilterQueryState(options) {
214
+ const result = /* @__PURE__ */ new Map();
215
+ for (const rule of options.rules) {
216
+ const filter = options.definitions.find((definition2) => definition2.key === rule.key);
217
+ if (!filter || isTableFilterRuleDefault({ rule, definition: filter })) continue;
218
+ const definition = normalizeFilterDefinition(filter);
219
+ const operator = rule.operator ?? resolveFilterDefaultOperator(definition);
220
+ const defaultOperator = resolveFilterDefaultOperator(definition);
221
+ const urlKey = operator === defaultOperator ? definition.key : `${definition.key}~${operator}`;
222
+ result.set(urlKey, rule.value);
223
+ }
224
+ return result;
225
+ }
163
226
  function isRange(value) {
164
227
  if (!value || typeof value !== "object") {
165
228
  return false;
166
229
  }
167
230
  return "from" in value || "to" in value;
168
231
  }
232
+ function hasFilterValue(value) {
233
+ if (Array.isArray(value)) return value.length > 0;
234
+ if (typeof value === "string") return value.length > 0;
235
+ if (isRange(value)) return value.from != null || value.to != null;
236
+ return true;
237
+ }
238
+ function isTableFilterValue(value) {
239
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean" || value instanceof Date) {
240
+ return true;
241
+ }
242
+ if (Array.isArray(value)) {
243
+ return value.every(
244
+ (item) => typeof item === "string" || typeof item === "number" || typeof item === "boolean"
245
+ );
246
+ }
247
+ if (!isRange(value)) return false;
248
+ return [value.from, value.to].every(
249
+ (item) => item == null || typeof item === "number" || item instanceof Date
250
+ );
251
+ }
252
+ function areFilterValuesEqual(left, right) {
253
+ if (Array.isArray(left) || Array.isArray(right)) {
254
+ if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length) return false;
255
+ const unmatched = [...right];
256
+ for (const value of left) {
257
+ const index = unmatched.findIndex((candidate) => Object.is(candidate, value));
258
+ if (index === -1) return false;
259
+ unmatched.splice(index, 1);
260
+ }
261
+ return true;
262
+ }
263
+ if (left instanceof Date || right instanceof Date) {
264
+ return left instanceof Date && right instanceof Date && left.getTime() === right.getTime();
265
+ }
266
+ if (isRange(left) || isRange(right)) {
267
+ if (!isRange(left) || !isRange(right)) return false;
268
+ return areOptionalFilterValuesEqual(left.from, right.from) && areOptionalFilterValuesEqual(left.to, right.to);
269
+ }
270
+ return Object.is(left, right);
271
+ }
272
+ function areOptionalFilterValuesEqual(left, right) {
273
+ if (left instanceof Date || right instanceof Date) {
274
+ return left instanceof Date && right instanceof Date && left.getTime() === right.getTime();
275
+ }
276
+ return Object.is(left, right);
277
+ }
169
278
  function isMinMaxNumberRange(value) {
170
279
  if (!value || typeof value !== "object" || Array.isArray(value)) {
171
280
  return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxt-ui-tools",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Nuxt module and runtime toolkit for UI-heavy Nuxt applications",
5
5
  "homepage": "https://github.com/ChronicStone/nuxt-ui-tools#readme",
6
6
  "bugs": "https://github.com/ChronicStone/nuxt-ui-tools/issues",
@@ -130,10 +130,10 @@
130
130
  "dependencies": {
131
131
  "@internationalized/date": "^3.12.0",
132
132
  "@nuxt/kit": "^4.4.2",
133
- "@nuxt/ui": "^4.5.1",
134
133
  "@tanstack/pacer": "0.19.0",
135
134
  "@tanstack/vue-virtual": "3.13.23",
136
135
  "@vueuse/core": "14.2.1",
136
+ "cookiejs": "2.1.3",
137
137
  "libphonenumber-js": "1.13.1",
138
138
  "motion-v": "2.0.1",
139
139
  "nuxt-viewport": "2.4.0",
@@ -142,6 +142,7 @@
142
142
  "devDependencies": {
143
143
  "@nuxt/module-builder": "^1.0.2",
144
144
  "@nuxt/schema": "^4.4.2",
145
+ "@nuxt/ui": "^4.5.1",
145
146
  "@types/node": "25.4.0",
146
147
  "changelogen": "^0.6.2",
147
148
  "nuxt": "^4.4.2",
@@ -153,6 +154,7 @@
153
154
  "xlsx": "0.18.5"
154
155
  },
155
156
  "peerDependencies": {
157
+ "@nuxt/ui": ">=4.5.1",
156
158
  "@tanstack/vue-query": ">=5.0.0",
157
159
  "nuxt": ">=4.4.0",
158
160
  "tailwindcss": ">=4.0.0",
@@ -1,4 +0,0 @@
1
- import type { TableFilterOperator } from '../../types/index.js';
2
- export declare function getFilterOperatorLabel(options: {
3
- operator?: TableFilterOperator;
4
- }): string;
@@ -1,6 +0,0 @@
1
- import { useUiToolsLocale } from "#ui-tools/i18n";
2
- export function getFilterOperatorLabel(options) {
3
- const { t } = useUiToolsLocale();
4
- const operator = options.operator ?? "is";
5
- return t(`table.filters.operators.${operator}`);
6
- }