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.
- package/dist/module.d.mts +4 -0
- package/dist/module.json +1 -1
- package/dist/module.mjs +30 -15
- package/dist/runtime/form/components/actions/FormActions.d.vue.ts +0 -2
- package/dist/runtime/form/components/actions/FormActions.vue +5 -8
- package/dist/runtime/form/components/actions/FormActions.vue.d.ts +0 -2
- package/dist/runtime/form/components/layout/DrawerLayout.vue +5 -1
- package/dist/runtime/form/components/layout/ModalLayout.vue +5 -1
- package/dist/runtime/form/components/renderer/FormCompositeControl.d.vue.ts +15 -0
- package/dist/runtime/form/components/renderer/FormCompositeControl.vue +13 -0
- package/dist/runtime/form/components/renderer/FormCompositeControl.vue.d.ts +15 -0
- package/dist/runtime/form/components/renderer/FormFieldRenderer.d.vue.ts +1 -0
- package/dist/runtime/form/components/renderer/FormFieldRenderer.vue +19 -3
- package/dist/runtime/form/components/renderer/FormFieldRenderer.vue.d.ts +1 -0
- package/dist/runtime/form/components/renderer/FormFieldShell.d.vue.ts +4 -4
- package/dist/runtime/form/components/renderer/FormFieldShell.vue +15 -1
- package/dist/runtime/form/components/renderer/FormFieldShell.vue.d.ts +4 -4
- package/dist/runtime/form/components/root/Form.vue +5 -3
- package/dist/runtime/form/composables/use-field-control.d.ts +1 -1
- package/dist/runtime/form/composables/use-field-control.js +4 -0
- package/dist/runtime/form/composables/use-field-options.d.ts +1 -1
- package/dist/runtime/form/composables/use-field-options.js +75 -31
- package/dist/runtime/form/composables/use-form-field-chrome.d.ts +3 -0
- package/dist/runtime/form/composables/use-form-field-chrome.js +9 -0
- package/dist/runtime/form/composables/use-form-runtime.js +17 -5
- package/dist/runtime/form/fields/array-list/component.vue +4 -1
- package/dist/runtime/form/fields/auto-complete/component.vue +23 -16
- package/dist/runtime/form/fields/checkbox-card/component.vue +28 -29
- package/dist/runtime/form/fields/checkbox-group/component.vue +28 -29
- package/dist/runtime/form/fields/color-picker/component.vue +4 -2
- package/dist/runtime/form/fields/date-family/component.vue +9 -4
- package/dist/runtime/form/fields/hierarchy/SelectionCheckbox.d.vue.ts +13 -0
- package/dist/runtime/form/fields/hierarchy/SelectionCheckbox.vue +24 -0
- package/dist/runtime/form/fields/hierarchy/SelectionCheckbox.vue.d.ts +13 -0
- package/dist/runtime/form/fields/hierarchy/SelectionRadio.d.vue.ts +14 -0
- package/dist/runtime/form/fields/hierarchy/SelectionRadio.vue +27 -0
- package/dist/runtime/form/fields/hierarchy/SelectionRadio.vue.d.ts +14 -0
- package/dist/runtime/form/fields/hierarchy/component.vue +257 -142
- package/dist/runtime/form/fields/hierarchy/utils.d.ts +9 -0
- package/dist/runtime/form/fields/hierarchy/utils.js +32 -0
- package/dist/runtime/form/fields/input-group/component.vue +7 -30
- package/dist/runtime/form/fields/matrix/component.vue +9 -3
- package/dist/runtime/form/fields/phone-number/component.vue +7 -2
- package/dist/runtime/form/fields/rating/component.vue +25 -2
- package/dist/runtime/form/fields/select/component.vue +29 -21
- package/dist/runtime/form/fields/switch-group/component.vue +8 -3
- package/dist/runtime/form/fields/time/component.vue +7 -5
- package/dist/runtime/form/fields/upload/component.vue +5 -3
- package/dist/runtime/form/types/api.d.ts +9 -3
- package/dist/runtime/form/types/field-base.d.ts +3 -1
- package/dist/runtime/form/types/runtime.d.ts +2 -0
- package/dist/runtime/form/types/ui.d.ts +1 -0
- package/dist/runtime/form/utils/api.js +3 -0
- package/dist/runtime/form/utils/options.d.ts +11 -2
- package/dist/runtime/form/utils/options.js +57 -9
- package/dist/runtime/form/utils/state.js +10 -2
- package/dist/runtime/i18n/locales/en.js +38 -0
- package/dist/runtime/i18n/locales/fr.js +38 -0
- package/dist/runtime/i18n/types.d.ts +38 -0
- package/dist/runtime/i18n/use-locale.d.ts +2 -2
- package/dist/runtime/i18n/use-locale.js +3 -3
- package/dist/runtime/table/components/DataList.d.vue.ts +2 -0
- package/dist/runtime/table/components/DataList.vue.d.ts +2 -0
- package/dist/runtime/table/components/actions/RowActions.d.vue.ts +4 -2
- package/dist/runtime/table/components/actions/RowActions.vue +2 -0
- package/dist/runtime/table/components/actions/RowActions.vue.d.ts +4 -2
- package/dist/runtime/table/components/data-list/DataListAddFilter.d.vue.ts +5 -3
- package/dist/runtime/table/components/data-list/DataListAddFilter.vue +6 -1
- package/dist/runtime/table/components/data-list/DataListAddFilter.vue.d.ts +5 -3
- package/dist/runtime/table/components/data-list/DataListContent.d.vue.ts +24 -17
- package/dist/runtime/table/components/data-list/DataListContent.vue +70 -17
- package/dist/runtime/table/components/data-list/DataListContent.vue.d.ts +24 -17
- package/dist/runtime/table/components/data-list/DataListDefault.d.vue.ts +2 -0
- package/dist/runtime/table/components/data-list/DataListDefault.vue.d.ts +2 -0
- package/dist/runtime/table/components/data-list/DataListFilterTags.d.vue.ts +2 -0
- package/dist/runtime/table/components/data-list/DataListFilterTags.vue.d.ts +2 -0
- package/dist/runtime/table/components/data-list/DataListLayoutSwitch.vue +17 -11
- package/dist/runtime/table/components/data-list/DataListRoot.vue +2 -46
- package/dist/runtime/table/components/data-list/DataListSortMenu.vue +6 -0
- package/dist/runtime/table/components/filters/shared/DynamicFilterPicker.d.vue.ts +5 -0
- package/dist/runtime/table/components/filters/shared/DynamicFilterPicker.vue +182 -59
- package/dist/runtime/table/components/filters/shared/DynamicFilterPicker.vue.d.ts +5 -0
- package/dist/runtime/table/components/filters/shared/FilterMatchModeButton.d.vue.ts +3 -1
- package/dist/runtime/table/components/filters/shared/FilterMatchModeButton.vue +29 -5
- package/dist/runtime/table/components/filters/shared/FilterMatchModeButton.vue.d.ts +3 -1
- package/dist/runtime/table/components/filters/shared/FilterMatchModePanel.d.vue.ts +17 -0
- package/dist/runtime/table/components/filters/shared/FilterMatchModePanel.vue +47 -0
- package/dist/runtime/table/components/filters/shared/FilterMatchModePanel.vue.d.ts +17 -0
- package/dist/runtime/table/components/filters/shared/FilterOptionMultipleList.d.vue.ts +3 -1
- package/dist/runtime/table/components/filters/shared/FilterOptionMultipleList.vue +12 -3
- package/dist/runtime/table/components/filters/shared/FilterOptionMultipleList.vue.d.ts +3 -1
- package/dist/runtime/table/components/filters/shared/FilterOptionPickerContent.d.vue.ts +3 -0
- package/dist/runtime/table/components/filters/shared/FilterOptionPickerContent.vue +11 -1
- package/dist/runtime/table/components/filters/shared/FilterOptionPickerContent.vue.d.ts +3 -0
- package/dist/runtime/table/components/filters/shared/FilterOptionRow.d.vue.ts +3 -0
- package/dist/runtime/table/components/filters/shared/FilterOptionRow.vue +48 -9
- package/dist/runtime/table/components/filters/shared/FilterOptionRow.vue.d.ts +3 -0
- package/dist/runtime/table/components/filters/shared/FilterOptionSingleList.d.vue.ts +3 -0
- package/dist/runtime/table/components/filters/shared/FilterOptionSingleList.vue +35 -9
- package/dist/runtime/table/components/filters/shared/FilterOptionSingleList.vue.d.ts +3 -0
- package/dist/runtime/table/components/filters/shared/FilterOptionTreeContent.d.vue.ts +3 -0
- package/dist/runtime/table/components/filters/shared/FilterOptionTreeContent.vue +77 -20
- package/dist/runtime/table/components/filters/shared/FilterOptionTreeContent.vue.d.ts +3 -0
- package/dist/runtime/table/components/filters/shared/FilterPopoverShell.d.vue.ts +27 -0
- package/dist/runtime/table/components/filters/shared/FilterPopoverShell.vue +36 -0
- package/dist/runtime/table/components/filters/shared/FilterPopoverShell.vue.d.ts +27 -0
- package/dist/runtime/table/components/filters/shared/FilterSearchablePanel.d.vue.ts +3 -0
- package/dist/runtime/table/components/filters/shared/FilterSearchablePanel.vue +40 -10
- package/dist/runtime/table/components/filters/shared/FilterSearchablePanel.vue.d.ts +3 -0
- package/dist/runtime/table/components/filters/shared/FilterStageTransition.d.vue.ts +23 -0
- package/dist/runtime/table/components/filters/shared/FilterStageTransition.vue +21 -0
- package/dist/runtime/table/components/filters/shared/FilterStageTransition.vue.d.ts +23 -0
- package/dist/runtime/table/components/filters/shared/FilterTriggerTag.d.vue.ts +3 -2
- package/dist/runtime/table/components/filters/shared/FilterTriggerTag.vue +26 -25
- package/dist/runtime/table/components/filters/shared/FilterTriggerTag.vue.d.ts +3 -2
- package/dist/runtime/table/components/filters/tags/BooleanFilterTag.d.vue.ts +1 -1
- package/dist/runtime/table/components/filters/tags/BooleanFilterTag.vue +75 -22
- package/dist/runtime/table/components/filters/tags/BooleanFilterTag.vue.d.ts +1 -1
- package/dist/runtime/table/components/filters/tags/DateFilterTag.d.vue.ts +3 -1
- package/dist/runtime/table/components/filters/tags/DateFilterTag.vue +254 -160
- package/dist/runtime/table/components/filters/tags/DateFilterTag.vue.d.ts +3 -1
- package/dist/runtime/table/components/filters/tags/FilterTagsBar.d.vue.ts +7 -6
- package/dist/runtime/table/components/filters/tags/FilterTagsBar.vue +12 -27
- package/dist/runtime/table/components/filters/tags/FilterTagsBar.vue.d.ts +7 -6
- package/dist/runtime/table/components/filters/tags/NumberFilterTag.d.vue.ts +3 -2
- package/dist/runtime/table/components/filters/tags/NumberFilterTag.vue +192 -106
- package/dist/runtime/table/components/filters/tags/NumberFilterTag.vue.d.ts +3 -2
- package/dist/runtime/table/components/filters/tags/OptionFilterTag.d.vue.ts +3 -2
- package/dist/runtime/table/components/filters/tags/OptionFilterTag.vue +110 -48
- package/dist/runtime/table/components/filters/tags/OptionFilterTag.vue.d.ts +3 -2
- package/dist/runtime/table/components/filters/tags/TextFilterTag.d.vue.ts +3 -2
- package/dist/runtime/table/components/filters/tags/TextFilterTag.vue +120 -57
- package/dist/runtime/table/components/filters/tags/TextFilterTag.vue.d.ts +3 -2
- package/dist/runtime/table/components/grid/GridRenderer.vue +1 -1
- package/dist/runtime/table/components/layout/TableFooter.vue +1 -0
- package/dist/runtime/table/components/table/TableRenderer.vue +18 -9
- package/dist/runtime/table/composables/use-filter-tag-session.d.ts +3 -4
- package/dist/runtime/table/composables/use-filter-tag-session.js +12 -32
- package/dist/runtime/table/composables/use-query-state.d.ts +3 -3
- package/dist/runtime/table/composables/use-query-state.js +7 -32
- package/dist/runtime/table/composables/use-table-api.js +2 -2
- package/dist/runtime/table/composables/use-table-columns.d.ts +1 -11
- package/dist/runtime/table/composables/use-table-filter-presentation.d.ts +0 -3
- package/dist/runtime/table/composables/use-table-filter-presentation.js +0 -9
- package/dist/runtime/table/composables/use-table-filters.js +18 -7
- package/dist/runtime/table/composables/use-table-internals.d.ts +3 -42
- package/dist/runtime/table/types/actions.d.ts +1 -1
- package/dist/runtime/table/types/data-list.d.ts +41 -8
- package/dist/runtime/table/types/filters.d.ts +4 -0
- package/dist/runtime/table/utils/actions.d.ts +1 -1
- package/dist/runtime/table/utils/columns/menu.d.ts +2 -11
- package/dist/runtime/table/utils/columns/render.d.ts +2 -9
- package/dist/runtime/table/utils/columns/render.js +4 -4
- package/dist/runtime/table/utils/data-list-ui.d.ts +3 -1
- package/dist/runtime/table/utils/data-list-ui.js +45 -0
- package/dist/runtime/table/utils/filters/editor-size.d.ts +11 -0
- package/dist/runtime/table/utils/filters/editor-size.js +45 -0
- package/dist/runtime/table/utils/filters/index.d.ts +1 -1
- package/dist/runtime/table/utils/filters/index.js +1 -1
- package/dist/runtime/table/utils/query-state.d.ts +18 -1
- package/dist/runtime/table/utils/query-state.js +109 -0
- package/package.json +4 -2
- package/dist/runtime/table/utils/filters/operators.d.ts +0 -4
- 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,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.
|
|
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",
|