nuxt-ui-tools 1.1.0 → 1.3.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.
- package/dist/module.json +1 -1
- package/dist/module.mjs +10 -1
- package/dist/runtime/dashboard/components/block/dashboard-block-state.d.vue.ts +2 -0
- package/dist/runtime/dashboard/components/block/dashboard-block-state.vue +4 -1
- package/dist/runtime/dashboard/components/block/dashboard-block-state.vue.d.ts +2 -0
- package/dist/runtime/dashboard/components/block/dashboard-chips.d.vue.ts +20 -0
- package/dist/runtime/dashboard/components/block/dashboard-chips.vue +42 -0
- package/dist/runtime/dashboard/components/block/dashboard-chips.vue.d.ts +20 -0
- package/dist/runtime/dashboard/components/block/dashboard-series-picker.d.vue.ts +8 -0
- package/dist/runtime/dashboard/components/block/dashboard-series-picker.vue +29 -0
- package/dist/runtime/dashboard/components/block/dashboard-series-picker.vue.d.ts +8 -0
- package/dist/runtime/dashboard/components/block/dashboard-skeleton.d.vue.ts +1 -1
- package/dist/runtime/dashboard/components/block/dashboard-skeleton.vue +6 -3
- package/dist/runtime/dashboard/components/block/dashboard-skeleton.vue.d.ts +1 -1
- package/dist/runtime/dashboard/components/block/dashboard-view-scope.d.vue.ts +21 -0
- package/dist/runtime/dashboard/components/block/dashboard-view-scope.vue +12 -0
- package/dist/runtime/dashboard/components/block/dashboard-view-scope.vue.d.ts +21 -0
- package/dist/runtime/dashboard/components/dashboard-alerts.vue +3 -3
- package/dist/runtime/dashboard/components/dashboard-bar-chart.d.vue.ts +14 -3
- package/dist/runtime/dashboard/components/dashboard-bar-chart.vue +30 -9
- package/dist/runtime/dashboard/components/dashboard-bar-chart.vue.d.ts +14 -3
- package/dist/runtime/dashboard/components/dashboard-bars.vue +4 -4
- package/dist/runtime/dashboard/components/dashboard-card.vue +28 -6
- package/dist/runtime/dashboard/components/dashboard-combo-chart.d.vue.ts +6 -1
- package/dist/runtime/dashboard/components/dashboard-combo-chart.vue +13 -3
- package/dist/runtime/dashboard/components/dashboard-combo-chart.vue.d.ts +6 -1
- package/dist/runtime/dashboard/components/dashboard-donut-chart.vue +5 -5
- package/dist/runtime/dashboard/components/dashboard-feed.vue +8 -7
- package/dist/runtime/dashboard/components/dashboard-filter.d.vue.ts +67 -0
- package/dist/runtime/dashboard/components/dashboard-filter.vue +134 -0
- package/dist/runtime/dashboard/components/dashboard-filter.vue.d.ts +67 -0
- package/dist/runtime/dashboard/components/dashboard-filters.d.vue.ts +49 -0
- package/dist/runtime/dashboard/components/dashboard-filters.vue +96 -0
- package/dist/runtime/dashboard/components/dashboard-filters.vue.d.ts +49 -0
- package/dist/runtime/dashboard/components/dashboard-funnel.vue +5 -5
- package/dist/runtime/dashboard/components/dashboard-gauge.vue +3 -3
- package/dist/runtime/dashboard/components/dashboard-grid.d.vue.ts +10 -3
- package/dist/runtime/dashboard/components/dashboard-grid.vue +24 -9
- package/dist/runtime/dashboard/components/dashboard-grid.vue.d.ts +10 -3
- package/dist/runtime/dashboard/components/dashboard-line-chart.d.vue.ts +14 -3
- package/dist/runtime/dashboard/components/dashboard-line-chart.vue +30 -9
- package/dist/runtime/dashboard/components/dashboard-line-chart.vue.d.ts +14 -3
- package/dist/runtime/dashboard/components/dashboard-list.d.vue.ts +3 -0
- package/dist/runtime/dashboard/components/dashboard-list.vue +18 -6
- package/dist/runtime/dashboard/components/dashboard-list.vue.d.ts +3 -0
- package/dist/runtime/dashboard/components/dashboard-page.d.vue.ts +53 -0
- package/dist/runtime/dashboard/components/dashboard-page.vue +156 -0
- package/dist/runtime/dashboard/components/dashboard-page.vue.d.ts +53 -0
- package/dist/runtime/dashboard/components/dashboard-paired-bars.vue +4 -4
- package/dist/runtime/dashboard/components/dashboard-refresh.d.vue.ts +1 -1
- package/dist/runtime/dashboard/components/dashboard-refresh.vue +1 -0
- package/dist/runtime/dashboard/components/dashboard-refresh.vue.d.ts +1 -1
- package/dist/runtime/dashboard/components/dashboard-stack-bar.vue +4 -4
- package/dist/runtime/dashboard/components/dashboard-stat.d.vue.ts +14 -2
- package/dist/runtime/dashboard/components/dashboard-stat.vue +28 -10
- package/dist/runtime/dashboard/components/dashboard-stat.vue.d.ts +14 -2
- package/dist/runtime/dashboard/components/dashboard-stats.vue +3 -3
- package/dist/runtime/dashboard/components/dashboard-table.d.vue.ts +1 -1
- package/dist/runtime/dashboard/components/dashboard-table.vue +3 -3
- package/dist/runtime/dashboard/components/dashboard-table.vue.d.ts +1 -1
- package/dist/runtime/dashboard/components/dashboard-tabs.d.vue.ts +1 -1
- package/dist/runtime/dashboard/components/dashboard-tabs.vue.d.ts +1 -1
- package/dist/runtime/dashboard/components/dashboard-total.d.vue.ts +7 -2
- package/dist/runtime/dashboard/components/dashboard-total.vue +10 -2
- package/dist/runtime/dashboard/components/dashboard-total.vue.d.ts +7 -2
- package/dist/runtime/dashboard/components/dashboard-view-tabs.d.vue.ts +33 -0
- package/dist/runtime/dashboard/components/dashboard-view-tabs.vue +66 -0
- package/dist/runtime/dashboard/components/dashboard-view-tabs.vue.d.ts +33 -0
- package/dist/runtime/dashboard/components/dashboard-widget.vue +1 -1
- package/dist/runtime/dashboard/components/filter/dashboard-filter-menu.d.vue.ts +44 -0
- package/dist/runtime/dashboard/components/filter/dashboard-filter-menu.vue +220 -0
- package/dist/runtime/dashboard/components/filter/dashboard-filter-menu.vue.d.ts +44 -0
- package/dist/runtime/dashboard/composables/use-dashboard-api.d.ts +6 -1
- package/dist/runtime/dashboard/composables/use-dashboard-api.js +29 -6
- package/dist/runtime/dashboard/composables/use-dashboard-block.d.ts +5 -4
- package/dist/runtime/dashboard/composables/use-dashboard-block.js +32 -15
- package/dist/runtime/dashboard/composables/use-dashboard-chart.d.ts +8 -1
- package/dist/runtime/dashboard/composables/use-dashboard-chart.js +16 -4
- package/dist/runtime/dashboard/composables/use-dashboard-context.d.ts +50 -0
- package/dist/runtime/dashboard/composables/use-dashboard-context.js +56 -0
- package/dist/runtime/dashboard/composables/use-dashboard-derived.js +6 -1
- package/dist/runtime/dashboard/composables/use-dashboard-filter-control.d.ts +16 -0
- package/dist/runtime/dashboard/composables/use-dashboard-filter-control.js +161 -0
- package/dist/runtime/dashboard/composables/use-dashboard-filter-scope.d.ts +37 -0
- package/dist/runtime/dashboard/composables/use-dashboard-filter-scope.js +107 -0
- package/dist/runtime/dashboard/composables/use-dashboard-format.d.ts +46 -6
- package/dist/runtime/dashboard/composables/use-dashboard-format.js +51 -8
- package/dist/runtime/dashboard/composables/use-dashboard-options.d.ts +11 -4
- package/dist/runtime/dashboard/composables/use-dashboard-options.js +33 -47
- package/dist/runtime/dashboard/composables/use-dashboard-remote-options.d.ts +8 -5
- package/dist/runtime/dashboard/composables/use-dashboard-remote-options.js +66 -77
- package/dist/runtime/dashboard/composables/use-dashboard-resource.d.ts +15 -4
- package/dist/runtime/dashboard/composables/use-dashboard-resource.js +52 -17
- package/dist/runtime/dashboard/composables/use-dashboard-scope.d.ts +10 -7
- package/dist/runtime/dashboard/composables/use-dashboard-scope.js +26 -16
- package/dist/runtime/dashboard/composables/use-dashboard-series-picker.d.ts +20 -0
- package/dist/runtime/dashboard/composables/use-dashboard-series-picker.js +30 -0
- package/dist/runtime/dashboard/composables/use-dashboard-time.d.ts +2 -0
- package/dist/runtime/dashboard/composables/use-dashboard-time.js +4 -1
- package/dist/runtime/dashboard/composables/use-dashboard-ui.d.ts +12 -2
- package/dist/runtime/dashboard/composables/use-dashboard-ui.js +3 -0
- package/dist/runtime/dashboard/composables/use-dashboard-views.d.ts +15 -3
- package/dist/runtime/dashboard/composables/use-dashboard-views.js +33 -10
- package/dist/runtime/dashboard/composables/use-dashboard.d.ts +18 -12
- package/dist/runtime/dashboard/composables/use-dashboard.js +98 -9
- package/dist/runtime/dashboard/index.d.ts +3 -1
- package/dist/runtime/dashboard/index.js +3 -1
- package/dist/runtime/dashboard/schema/index.d.ts +62 -30
- package/dist/runtime/dashboard/schema/index.js +3 -0
- package/dist/runtime/dashboard/types/blocks.d.ts +30 -4
- package/dist/runtime/dashboard/types/charts.d.ts +2 -2
- package/dist/runtime/dashboard/types/controls.d.ts +123 -0
- package/dist/runtime/dashboard/types/filters.d.ts +236 -0
- package/dist/runtime/dashboard/types/index.d.ts +3 -2
- package/dist/runtime/dashboard/types/page.d.ts +17 -0
- package/dist/runtime/dashboard/types/page.js +0 -0
- package/dist/runtime/dashboard/types/resource.d.ts +66 -28
- package/dist/runtime/dashboard/types/runtime.d.ts +39 -8
- package/dist/runtime/dashboard/types/schema.d.ts +94 -54
- package/dist/runtime/dashboard/types/ui.d.ts +78 -0
- package/dist/runtime/dashboard/utils/builders/dashboard-filters.d.ts +142 -0
- package/dist/runtime/dashboard/utils/builders/dashboard-filters.js +135 -0
- package/dist/runtime/dashboard/utils/charts.d.ts +4 -15
- package/dist/runtime/dashboard/utils/charts.js +26 -28
- package/dist/runtime/dashboard/utils/{params/codecs.d.ts → codecs.d.ts} +2 -2
- package/dist/runtime/dashboard/utils/{params/codecs.js → codecs.js} +1 -1
- package/dist/runtime/dashboard/utils/environment.d.ts +36 -0
- package/dist/runtime/dashboard/utils/environment.js +30 -0
- package/dist/runtime/dashboard/utils/filters.d.ts +44 -0
- package/dist/runtime/dashboard/utils/filters.js +62 -0
- package/dist/runtime/dashboard/utils/format.d.ts +25 -0
- package/dist/runtime/dashboard/utils/format.js +66 -0
- package/dist/runtime/dashboard/utils/grid.d.ts +17 -0
- package/dist/runtime/dashboard/utils/grid.js +14 -0
- package/dist/runtime/dashboard/utils/options.d.ts +3 -8
- package/dist/runtime/dashboard/utils/options.js +6 -5
- package/dist/runtime/dashboard/utils/remote.d.ts +7 -0
- package/dist/runtime/dashboard/utils/remote.js +14 -0
- package/dist/runtime/dashboard/utils/resource.d.ts +16 -7
- package/dist/runtime/dashboard/utils/resource.js +15 -9
- package/dist/runtime/dashboard/utils/schema.d.ts +8 -3
- package/dist/runtime/dashboard/utils/schema.js +9 -4
- package/dist/runtime/dashboard/utils/state.d.ts +11 -6
- package/dist/runtime/dashboard/utils/state.js +10 -5
- package/dist/runtime/dashboard/utils/time.d.ts +2 -0
- package/dist/runtime/dashboard/utils/time.js +11 -1
- package/dist/runtime/dashboard/utils/ui.d.ts +1 -1
- package/dist/runtime/dashboard/utils/ui.js +1 -1
- package/dist/runtime/form/components/root/form.vue +1 -1
- package/dist/runtime/form/fields/card-selection.d.ts +1 -0
- package/dist/runtime/form/fields/card-selection.js +1 -0
- package/dist/runtime/form/fields/checkbox-card/component.vue +3 -1
- package/dist/runtime/form/fields/checkbox-group/component.vue +5 -0
- package/dist/runtime/form/fields/radio/component.vue +10 -0
- package/dist/runtime/form/fields/radio-card/component.vue +3 -1
- package/dist/runtime/form/types/options.d.ts +1 -11
- package/dist/runtime/form/utils/focus.js +1 -1
- package/dist/runtime/i18n/locales/en.js +32 -1
- package/dist/runtime/i18n/locales/fr.js +32 -1
- package/dist/runtime/i18n/types.d.ts +44 -0
- package/dist/runtime/shared/styles/scrollbars.css +1 -1
- package/dist/runtime/shared/styles/tokens.css +1 -1
- package/dist/runtime/shared/types/query.d.ts +8 -0
- package/dist/runtime/shared/utils/remote-options.d.ts +10 -0
- package/dist/runtime/shared/utils/remote-options.js +6 -0
- package/dist/runtime/table/components/filters/shared/filter-option-list-end.d.vue.ts +11 -0
- package/dist/runtime/table/components/filters/shared/filter-option-list-end.vue +76 -0
- package/dist/runtime/table/components/filters/shared/filter-option-list-end.vue.d.ts +11 -0
- package/dist/runtime/table/components/filters/shared/filter-option-loading-list.d.vue.ts +3 -0
- package/dist/runtime/table/components/filters/shared/filter-option-loading-list.vue +2 -1
- package/dist/runtime/table/components/filters/shared/filter-option-loading-list.vue.d.ts +3 -0
- package/dist/runtime/table/components/filters/shared/filter-option-multiple-list.vue +1 -1
- package/dist/runtime/table/components/filters/shared/filter-option-picker-content.vue +13 -0
- package/dist/runtime/table/components/filters/shared/filter-option-single-list.d.vue.ts +2 -0
- package/dist/runtime/table/components/filters/shared/filter-option-single-list.vue +1 -1
- package/dist/runtime/table/components/filters/shared/filter-option-single-list.vue.d.ts +2 -0
- package/dist/runtime/table/components/filters/shared/filter-option-tree-content.d.vue.ts +3 -0
- package/dist/runtime/table/components/filters/shared/filter-option-tree-content.vue +2 -2
- package/dist/runtime/table/components/filters/shared/filter-option-tree-content.vue.d.ts +3 -0
- package/dist/runtime/table/components/filters/shared/filter-searchable-panel.vue +1 -0
- package/dist/runtime/table/composables/use-option-filter-editor-state.d.ts +13 -1
- package/dist/runtime/table/composables/use-option-filter-editor-state.js +6 -2
- package/dist/runtime/table/composables/use-table-filter-options.d.ts +11 -1
- package/dist/runtime/table/composables/use-table-filter-options.js +128 -17
- package/dist/runtime/table/composables/use-table-filter-selected-options.d.ts +20 -0
- package/dist/runtime/table/composables/use-table-filter-selected-options.js +99 -0
- package/dist/runtime/table/composables/use-table-filters.d.ts +5 -0
- package/dist/runtime/table/composables/use-table-filters.js +20 -1
- package/dist/runtime/table/composables/use-table-internals.d.ts +15 -0
- package/dist/runtime/table/composables/use-table-remote-filter-options.d.ts +42 -0
- package/dist/runtime/table/composables/use-table-remote-filter-options.js +102 -0
- package/dist/runtime/table/types/filters.d.ts +42 -0
- package/dist/runtime/table/types/index.d.ts +1 -0
- package/dist/runtime/table/types/remote-options.d.ts +64 -0
- package/dist/runtime/table/types/remote-options.js +0 -0
- package/dist/runtime/table/types/source.d.ts +15 -1
- package/dist/runtime/table/utils/builders/table-source.d.ts +2 -6
- package/dist/runtime/table/utils/filters/options.d.ts +2 -0
- package/dist/runtime/table/utils/filters/options.js +1 -1
- package/dist/runtime/table/utils/index.d.ts +1 -0
- package/dist/runtime/table/utils/index.js +1 -0
- package/dist/runtime/table/utils/prefetch.js +21 -1
- package/dist/runtime/table/utils/remote-table-options.d.ts +26 -0
- package/dist/runtime/table/utils/remote-table-options.js +88 -0
- package/package.json +4 -1
- package/dist/runtime/dashboard/composables/use-dashboard-param-scope.d.ts +0 -30
- package/dist/runtime/dashboard/composables/use-dashboard-param-scope.js +0 -71
- package/dist/runtime/dashboard/types/options.d.ts +0 -46
- package/dist/runtime/dashboard/types/params.d.ts +0 -115
- package/dist/runtime/dashboard/utils/builders/dashboard-params.d.ts +0 -85
- package/dist/runtime/dashboard/utils/builders/dashboard-params.js +0 -87
- /package/dist/runtime/dashboard/types/{options.js → controls.js} +0 -0
- /package/dist/runtime/dashboard/types/{params.js → filters.js} +0 -0
|
@@ -19,6 +19,27 @@ export default defineUiToolsLocale({
|
|
|
19
19
|
series: "{label} (p\xE9riode pr\xE9c\xE9dente)",
|
|
20
20
|
year: "Ann\xE9e pr\xE9c\xE9dente"
|
|
21
21
|
},
|
|
22
|
+
filters: {
|
|
23
|
+
all: "Tous",
|
|
24
|
+
clear: "Effacer le filtre {label}",
|
|
25
|
+
clearSelection: "Effacer la s\xE9lection",
|
|
26
|
+
empty: "Aucun r\xE9sultat",
|
|
27
|
+
label: "Filtres",
|
|
28
|
+
loadError: "Impossible de charger les options",
|
|
29
|
+
loading: "Chargement\u2026",
|
|
30
|
+
more: "{label} +{count}",
|
|
31
|
+
no: "Non",
|
|
32
|
+
presets: "Pr\xE9r\xE9glages",
|
|
33
|
+
reset: "R\xE9initialiser",
|
|
34
|
+
retry: "R\xE9essayer",
|
|
35
|
+
search: "Rechercher\u2026",
|
|
36
|
+
views: "Vues",
|
|
37
|
+
yes: "Oui"
|
|
38
|
+
},
|
|
39
|
+
format: {
|
|
40
|
+
pointsOne: "{value} pt",
|
|
41
|
+
pointsOther: "{value} pts"
|
|
42
|
+
},
|
|
22
43
|
freshness: {
|
|
23
44
|
prefix: "Mis \xE0 jour",
|
|
24
45
|
updated: "Mis \xE0 jour {time}"
|
|
@@ -39,6 +60,14 @@ export default defineUiToolsLocale({
|
|
|
39
60
|
label: "Actualiser",
|
|
40
61
|
off: "D\xE9sactiv\xE9e"
|
|
41
62
|
},
|
|
63
|
+
page: {
|
|
64
|
+
loading: "chargement\u2026",
|
|
65
|
+
updated: "mis \xE0 jour"
|
|
66
|
+
},
|
|
67
|
+
series: {
|
|
68
|
+
add: "Ajouter",
|
|
69
|
+
remove: "Retirer {label}"
|
|
70
|
+
},
|
|
42
71
|
rowActions: "Actions pour {label}",
|
|
43
72
|
stat: {
|
|
44
73
|
goal: "Objectif {value}"
|
|
@@ -352,7 +381,9 @@ export default defineUiToolsLocale({
|
|
|
352
381
|
lte: "au plus"
|
|
353
382
|
},
|
|
354
383
|
options: {
|
|
355
|
-
empty: "Aucune option correspondante."
|
|
384
|
+
empty: "Aucune option correspondante.",
|
|
385
|
+
loadError: "Impossible de charger les options.",
|
|
386
|
+
retry: "R\xE9essayer"
|
|
356
387
|
},
|
|
357
388
|
panel: {
|
|
358
389
|
apply: "Appliquer",
|
|
@@ -78,6 +78,9 @@ export interface UiToolsTableMessages {
|
|
|
78
78
|
};
|
|
79
79
|
options: {
|
|
80
80
|
empty: string;
|
|
81
|
+
/** Remote option pages failed to load. */
|
|
82
|
+
loadError: string;
|
|
83
|
+
retry: string;
|
|
81
84
|
};
|
|
82
85
|
booleans: {
|
|
83
86
|
true: string;
|
|
@@ -416,6 +419,47 @@ export interface UiToolsDashboardMessages {
|
|
|
416
419
|
auto: string;
|
|
417
420
|
off: string;
|
|
418
421
|
};
|
|
422
|
+
page: {
|
|
423
|
+
/** Before the time the data on screen was fetched, after the date: "updated" 3 min ago. */
|
|
424
|
+
updated: string;
|
|
425
|
+
/** While the first data loads, after the date. */
|
|
426
|
+
loading: string;
|
|
427
|
+
};
|
|
428
|
+
series: {
|
|
429
|
+
/** Button of a chart whose series a filter picks, listing the options. */
|
|
430
|
+
add: string;
|
|
431
|
+
/** Accessible name of a series chip's remove button: "Remove {label}". */
|
|
432
|
+
remove: string;
|
|
433
|
+
};
|
|
434
|
+
filters: {
|
|
435
|
+
/** Accessible name of a filter bar. */
|
|
436
|
+
label: string;
|
|
437
|
+
/** Accessible name of the view tabs. */
|
|
438
|
+
views: string;
|
|
439
|
+
/** Text of an empty selection. */
|
|
440
|
+
all: string;
|
|
441
|
+
/** Items of a boolean filter. */
|
|
442
|
+
yes: string;
|
|
443
|
+
no: string;
|
|
444
|
+
/** Pill text of several selected values: "{label} +{count}". */
|
|
445
|
+
more: string;
|
|
446
|
+
search: string;
|
|
447
|
+
empty: string;
|
|
448
|
+
loading: string;
|
|
449
|
+
loadError: string;
|
|
450
|
+
retry: string;
|
|
451
|
+
clearSelection: string;
|
|
452
|
+
/** Heading of the presets under a filter's options. */
|
|
453
|
+
presets: string;
|
|
454
|
+
/** Accessible name of a pill's clear button: "Clear {label}". */
|
|
455
|
+
clear: string;
|
|
456
|
+
reset: string;
|
|
457
|
+
};
|
|
458
|
+
format: {
|
|
459
|
+
/** Signed difference of two percentages, `Intl.PluralRules` "one" form: "{value} pt". */
|
|
460
|
+
pointsOne: string;
|
|
461
|
+
pointsOther: string;
|
|
462
|
+
};
|
|
419
463
|
/** Accessible name of a row's `⋮` menu. */
|
|
420
464
|
rowActions: string;
|
|
421
465
|
alerts: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--nut-scrollbar-size:11px;--nut-scrollbar-gap:3px;--nut-scrollbar-thumb:color-mix(in srgb,var(--ui-text,#1f1d1a) 18%,transparent);--nut-scrollbar-thumb-hover:color-mix(in srgb,var(--ui-text,#1f1d1a) 32%,transparent);--nut-scrollbar-thumb-active:color-mix(in srgb,var(--ui-text,#1f1d1a) 44%,transparent)}@supports
|
|
1
|
+
:root{--nut-scrollbar-size:11px;--nut-scrollbar-gap:3px;--nut-scrollbar-thumb:color-mix(in srgb,var(--ui-text,#1f1d1a) 18%,transparent);--nut-scrollbar-thumb-hover:color-mix(in srgb,var(--ui-text,#1f1d1a) 32%,transparent);--nut-scrollbar-thumb-active:color-mix(in srgb,var(--ui-text,#1f1d1a) 44%,transparent)}@supports (scrollbar-width:thin){*{scrollbar-color:transparent transparent;scrollbar-width:thin;transition:scrollbar-color .2s ease}:hover{scrollbar-color:var(--nut-scrollbar-thumb) transparent}}@supports not (scrollbar-width:thin){::-webkit-scrollbar{background:transparent;height:var(--nut-scrollbar-size);width:var(--nut-scrollbar-size)}::-webkit-scrollbar-corner,::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:transparent;border:var(--nut-scrollbar-gap) solid transparent;border-radius:999px}:hover::-webkit-scrollbar-thumb{background-color:var(--nut-scrollbar-thumb)}::-webkit-scrollbar-thumb:hover{background-color:var(--nut-scrollbar-thumb-hover)}::-webkit-scrollbar-thumb:active{background-color:var(--nut-scrollbar-thumb-active)}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--nut-form-veil:rgba(31,29,26,.18)}.dark{--nut-form-veil:rgba(0,0,0,.45)}:where(:root){--nut-dash-s1:var(--ui-primary);--nut-dash-s2:var(--ui-color-neutral-400);--nut-dash-s3:var(--ui-secondary);--nut-dash-s4:color-mix(in oklab,var(--ui-primary) 20%,var(--ui-bg));--nut-dash-s5:var(--ui-warning);--nut-dash-s6:color-mix(in oklab,var(--ui-secondary) 35%,var(--ui-bg));--nut-dash-up:var(--ui-success);--nut-dash-up-mark:var(--nut-dash-up);--nut-dash-down:var(--ui-error);--nut-dash-muted:var(--ui-border-accented);--nut-dash-track:var(--ui-bg-elevated);--nut-dash-grid:var(--ui-border-muted);--nut-dash-axis:var(--ui-text-dimmed);--nut-dash-ref:var(--ui-text-dimmed);--nut-dash-ref-label:var(--ui-text-muted);--nut-dash-ghost:var(--ui-bg-accented);--nut-dash-ghost-shine:color-mix(in oklab,var(--ui-bg) 70%,transparent)}:where(.dark){--nut-dash-s2:var(--ui-color-neutral-500);--nut-dash-s4:color-mix(in oklab,var(--ui-primary) 30%,var(--ui-bg));--nut-dash-s6:color-mix(in oklab,var(--ui-secondary) 40%,var(--ui-bg))}@supports (color:oklch(from red l c h)){:where(:root){--nut-dash-s4:oklch(from var(--ui-primary) 0.88 calc(c * 0.45) h);--nut-dash-s6:oklch(from var(--ui-secondary) 0.8 calc(c * 0.55) h)}:where(.dark){--nut-dash-s4:oklch(from var(--ui-primary) 0.42 calc(c * 0.6) h);--nut-dash-s6:oklch(from var(--ui-secondary) 0.45 calc(c * 0.65) h)}}.nut-dash-chart{--vis-font-family:inherit;--vis-axis-tick-label-color:var(--nut-dash-axis);--vis-axis-tick-label-font-size:10px;--vis-axis-grid-color:var(--nut-dash-grid);--vis-axis-domain-color:var(--nut-dash-grid);--vis-crosshair-line-stroke-color:var(--ui-border-accented);--vis-crosshair-circle-stroke-color:var(--ui-bg);--vis-tooltip-background-color:var(--ui-bg);--vis-tooltip-border-color:var(--ui-border);--vis-tooltip-text-color:var(--ui-text);--vis-tooltip-padding:8px 10px;--vis-tooltip-border-radius:calc(var(--ui-radius)*1.5);--vis-tooltip-shadow-color:rgb(0 0 0/8%);--vis-plotline-label-font-size:10px}.nut-dash-chart--bars [data-vis-component] rect:hover{opacity:.8}.nut-dash-tip{display:flex;flex-direction:column;font-size:12px;gap:4px;min-width:9rem}.nut-dash-tip-title{color:var(--ui-text-muted);font-weight:500}.nut-dash-tip-row{align-items:center;display:flex;gap:6px}.nut-dash-tip-row i{border-radius:2px;height:8px;width:8px}.nut-dash-tip-row span{color:var(--ui-text-muted);flex:1}.nut-dash-tip-row b{font-variant-numeric:tabular-nums;font-weight:600}.nut-dash-ghost{background:var(--nut-dash-ghost)}.nut-dash-shimmer{overflow:hidden;position:relative}.nut-dash-shimmer:after{animation:nut-dash-shimmer 1.6s ease-in-out infinite;background:linear-gradient(100deg,transparent 25%,var(--nut-dash-ghost-shine) 50%,transparent 75%);content:"";inset:0;pointer-events:none;position:absolute;transform:translateX(-100%);will-change:transform}@keyframes nut-dash-shimmer{to{transform:translateX(100%)}}.nut-dash-enter{animation:nut-dash-enter .28s ease-out}@keyframes nut-dash-enter{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}.nut-dash-progress{animation:nut-dash-progress 1.1s ease-in-out infinite}@keyframes nut-dash-progress{0%{transform:translateX(-100%)}to{transform:translateX(300%)}}@media (prefers-reduced-motion:reduce){.nut-dash-shimmer:after{display:none}.nut-dash-enter{animation:none}.nut-dash-progress{animation-duration:3s}}
|
|
1
|
+
:root{--nut-form-veil:rgba(31,29,26,.18)}.dark{--nut-form-veil:rgba(0,0,0,.45)}:where(:root){--nut-dash-s1:var(--ui-primary);--nut-dash-s2:var(--ui-color-neutral-400);--nut-dash-s3:var(--ui-secondary);--nut-dash-s4:color-mix(in oklab,var(--ui-primary) 20%,var(--ui-bg));--nut-dash-s5:var(--ui-warning);--nut-dash-s6:color-mix(in oklab,var(--ui-secondary) 35%,var(--ui-bg));--nut-dash-up:var(--ui-success);--nut-dash-up-mark:var(--nut-dash-up);--nut-dash-down:var(--ui-error);--nut-dash-muted:var(--ui-border-accented);--nut-dash-track:var(--ui-bg-elevated);--nut-dash-grid:var(--ui-border-muted);--nut-dash-axis:var(--ui-text-dimmed);--nut-dash-ref:var(--ui-text-dimmed);--nut-dash-ref-label:var(--ui-text-muted);--nut-dash-ghost:var(--ui-bg-accented);--nut-dash-ghost-shine:color-mix(in oklab,var(--ui-bg) 70%,transparent);--nut-dash-filter-active:color-mix(in oklab,var(--ui-primary) 9%,var(--ui-bg));--nut-dash-filter-active-line:color-mix(in oklab,var(--ui-primary) 35%,var(--ui-border));--nut-dash-filter-ink:var(--nut-dl-accent-ink,var(--ui-primary));--nut-dash-row-hover:var(--ui-bg-elevated)}:where(.dark){--nut-dash-s2:var(--ui-color-neutral-500);--nut-dash-s4:color-mix(in oklab,var(--ui-primary) 30%,var(--ui-bg));--nut-dash-s6:color-mix(in oklab,var(--ui-secondary) 40%,var(--ui-bg))}@supports (color:oklch(from red l c h)){:where(:root){--nut-dash-s4:oklch(from var(--ui-primary) 0.88 calc(c * 0.45) h);--nut-dash-s6:oklch(from var(--ui-secondary) 0.8 calc(c * 0.55) h)}:where(.dark){--nut-dash-s4:oklch(from var(--ui-primary) 0.42 calc(c * 0.6) h);--nut-dash-s6:oklch(from var(--ui-secondary) 0.45 calc(c * 0.65) h)}}.nut-dash-chart{--vis-font-family:inherit;--vis-axis-tick-label-color:var(--nut-dash-axis);--vis-axis-tick-label-font-size:10px;--vis-axis-grid-color:var(--nut-dash-grid);--vis-axis-domain-color:var(--nut-dash-grid);--vis-crosshair-line-stroke-color:var(--ui-border-accented);--vis-crosshair-circle-stroke-color:var(--ui-bg);--vis-tooltip-background-color:var(--ui-bg);--vis-tooltip-border-color:var(--ui-border);--vis-tooltip-text-color:var(--ui-text);--vis-tooltip-padding:8px 10px;--vis-tooltip-border-radius:calc(var(--ui-radius)*1.5);--vis-tooltip-shadow-color:rgb(0 0 0/8%);--vis-plotline-label-font-size:10px}.nut-dash-chart--bars [data-vis-component] rect:hover{opacity:.8}.nut-dash-tip{display:flex;flex-direction:column;font-size:12px;gap:4px;min-width:9rem}.nut-dash-tip-title{color:var(--ui-text-muted);font-weight:500}.nut-dash-tip-row{align-items:center;display:flex;gap:6px}.nut-dash-tip-row i{border-radius:2px;height:8px;width:8px}.nut-dash-tip-row span{color:var(--ui-text-muted);flex:1}.nut-dash-tip-row b{font-variant-numeric:tabular-nums;font-weight:600}.nut-dash-ghost{background:var(--nut-dash-ghost)}.nut-dash-shimmer{overflow:hidden;position:relative}.nut-dash-shimmer:after{animation:nut-dash-shimmer 1.6s ease-in-out infinite;background:linear-gradient(100deg,transparent 25%,var(--nut-dash-ghost-shine) 50%,transparent 75%);content:"";inset:0;pointer-events:none;position:absolute;transform:translateX(-100%);will-change:transform}@keyframes nut-dash-shimmer{to{transform:translateX(100%)}}.nut-dash-enter{animation:nut-dash-enter .28s ease-out}@keyframes nut-dash-enter{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}.nut-dash-progress{animation:nut-dash-progress 1.1s ease-in-out infinite}@keyframes nut-dash-progress{0%{transform:translateX(-100%)}to{transform:translateX(300%)}}@media (prefers-reduced-motion:reduce){.nut-dash-shimmer:after{display:none}.nut-dash-enter{animation:none}.nut-dash-progress{animation-duration:3s}}
|
|
@@ -8,3 +8,11 @@ export type QueryDefinition<TData = unknown> = Omit<UseQueryOptions<TData>, 'que
|
|
|
8
8
|
queryKey: QueryKey;
|
|
9
9
|
queryFn?: QueryFunction<TData, QueryKey, string | null>;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* The smallest query definition: a key and the function that fetches it. Covariant in its data, so
|
|
13
|
+
* a definition of specific options fits wherever a broader option type is expected.
|
|
14
|
+
*/
|
|
15
|
+
export interface QueryFnDefinition<TData = unknown> {
|
|
16
|
+
queryKey: QueryKey;
|
|
17
|
+
queryFn: QueryFunction<TData, QueryKey, string | null>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RemoteOptionsResult } from '../types/remote-options.js';
|
|
2
|
+
/** Position of a page in a remote option source: its 1-based index, and its cursor when paged by cursor. */
|
|
3
|
+
export interface RemoteOptionsPageParam {
|
|
4
|
+
index: number;
|
|
5
|
+
cursor: string | null;
|
|
6
|
+
}
|
|
7
|
+
/** First page of any remote option source. */
|
|
8
|
+
export declare const REMOTE_OPTIONS_FIRST_PAGE: RemoteOptionsPageParam;
|
|
9
|
+
/** Next page of a page- or cursor-paginated remote option source, or `undefined` at the end. */
|
|
10
|
+
export declare function resolveRemoteOptionsNextPage<TOption>(page: RemoteOptionsResult<TOption>, loadedPages: number): RemoteOptionsPageParam | undefined;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const REMOTE_OPTIONS_FIRST_PAGE = { cursor: null, index: 1 };
|
|
2
|
+
export function resolveRemoteOptionsNextPage(page, loadedPages) {
|
|
3
|
+
if ("nextCursor" in page)
|
|
4
|
+
return page.nextCursor ? { cursor: page.nextCursor, index: loadedPages + 1 } : void 0;
|
|
5
|
+
return page.hasMore ? { cursor: null, index: loadedPages + 1 } : void 0;
|
|
6
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { useTableFilterOptions } from '../../../composables/use-table-filter-options.js';
|
|
2
|
+
import type { DataListControlSize, DataListFilterEditorUi } from '../../../types/index.js';
|
|
3
|
+
type __VLS_Props = {
|
|
4
|
+
remote: ReturnType<typeof useTableFilterOptions>['remote'];
|
|
5
|
+
indicator: 'checkbox' | 'radio';
|
|
6
|
+
size?: DataListControlSize;
|
|
7
|
+
ui?: DataListFilterEditorUi;
|
|
8
|
+
};
|
|
9
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
|
+
declare const _default: typeof __VLS_export;
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { useEventListener } from "@vueuse/core";
|
|
3
|
+
import { nextTick, shallowRef, watch } from "vue";
|
|
4
|
+
import { useUiToolsLocale } from "#ui-tools/i18n";
|
|
5
|
+
import FilterOptionLoadingList from "./filter-option-loading-list.vue";
|
|
6
|
+
const PREFETCH_VIEWPORTS = 3;
|
|
7
|
+
const props = defineProps({
|
|
8
|
+
remote: { type: null, required: true },
|
|
9
|
+
indicator: { type: String, required: true },
|
|
10
|
+
size: { type: String, required: false },
|
|
11
|
+
ui: { type: Object, required: false }
|
|
12
|
+
});
|
|
13
|
+
const { t } = useUiToolsLocale();
|
|
14
|
+
const sentinel = shallowRef(null);
|
|
15
|
+
const viewport = shallowRef(null);
|
|
16
|
+
watch(sentinel, (element) => {
|
|
17
|
+
viewport.value = findScrollContainer(element);
|
|
18
|
+
});
|
|
19
|
+
useEventListener(viewport, "scroll", loadAhead, { passive: true });
|
|
20
|
+
watch(
|
|
21
|
+
() => [props.remote.hasMore.value, props.remote.loadingMore.value, viewport.value],
|
|
22
|
+
async () => {
|
|
23
|
+
await nextTick();
|
|
24
|
+
loadAhead();
|
|
25
|
+
},
|
|
26
|
+
{ immediate: true }
|
|
27
|
+
);
|
|
28
|
+
function loadAhead() {
|
|
29
|
+
const element = viewport.value;
|
|
30
|
+
const { failed, hasMore, loadingMore, prefetchDistance } = props.remote;
|
|
31
|
+
if (!element || element.clientHeight === 0) return;
|
|
32
|
+
if (!hasMore.value || loadingMore.value || failed.value) return;
|
|
33
|
+
const distance = prefetchDistance.value;
|
|
34
|
+
const threshold = distance === "viewport" ? element.clientHeight * PREFETCH_VIEWPORTS : Math.max(0, distance);
|
|
35
|
+
if (element.scrollHeight - element.scrollTop - element.clientHeight <= threshold) {
|
|
36
|
+
props.remote.loadMore();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function findScrollContainer(element) {
|
|
40
|
+
const marked = element?.closest("[data-filter-option-scroll]");
|
|
41
|
+
if (marked instanceof HTMLElement) return marked;
|
|
42
|
+
for (let current = element?.parentElement; current; current = current.parentElement) {
|
|
43
|
+
if (/(auto|scroll)/.test(getComputedStyle(current).overflowY)) return current;
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
</script>
|
|
48
|
+
|
|
49
|
+
<template>
|
|
50
|
+
<div data-filter-option-list-end>
|
|
51
|
+
<FilterOptionLoadingList
|
|
52
|
+
v-if="remote.loadingMore.value"
|
|
53
|
+
:count="3"
|
|
54
|
+
:indicator="indicator"
|
|
55
|
+
:size="size"
|
|
56
|
+
:ui="ui"
|
|
57
|
+
data-filter-option-loading-more
|
|
58
|
+
/>
|
|
59
|
+
<div
|
|
60
|
+
v-else-if="remote.failed.value"
|
|
61
|
+
class="flex items-center justify-between gap-2 px-2 py-1.5 text-xs text-error"
|
|
62
|
+
data-filter-option-error
|
|
63
|
+
>
|
|
64
|
+
<span class="truncate">{{ t("table.filters.options.loadError") }}</span>
|
|
65
|
+
<button
|
|
66
|
+
type="button"
|
|
67
|
+
class="shrink-0 font-medium underline-offset-2 hover:underline focus-visible:underline focus-visible:outline-none"
|
|
68
|
+
data-filter-option-retry
|
|
69
|
+
@click="remote.retry()"
|
|
70
|
+
>
|
|
71
|
+
{{ t("table.filters.options.retry") }}
|
|
72
|
+
</button>
|
|
73
|
+
</div>
|
|
74
|
+
<span ref="sentinel" aria-hidden="true" class="block h-px w-full" />
|
|
75
|
+
</div>
|
|
76
|
+
</template>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { useTableFilterOptions } from '../../../composables/use-table-filter-options.js';
|
|
2
|
+
import type { DataListControlSize, DataListFilterEditorUi } from '../../../types/index.js';
|
|
3
|
+
type __VLS_Props = {
|
|
4
|
+
remote: ReturnType<typeof useTableFilterOptions>['remote'];
|
|
5
|
+
indicator: 'checkbox' | 'radio';
|
|
6
|
+
size?: DataListControlSize;
|
|
7
|
+
ui?: DataListFilterEditorUi;
|
|
8
|
+
};
|
|
9
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
|
+
declare const _default: typeof __VLS_export;
|
|
11
|
+
export default _default;
|
|
@@ -2,9 +2,12 @@ import type { DataListControlSize, DataListFilterEditorUi } from '../../../types
|
|
|
2
2
|
type __VLS_Props = {
|
|
3
3
|
size?: DataListControlSize;
|
|
4
4
|
indicator?: 'checkbox' | 'radio';
|
|
5
|
+
/** Placeholder rows. */
|
|
6
|
+
count?: number;
|
|
5
7
|
ui?: DataListFilterEditorUi;
|
|
6
8
|
};
|
|
7
9
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
10
|
+
count: number;
|
|
8
11
|
indicator: "checkbox" | "radio";
|
|
9
12
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
13
|
declare const _default: typeof __VLS_export;
|
|
@@ -6,6 +6,7 @@ import { mergeDataListUiClass, resolveFilterEditorSizeClasses } from "../../../u
|
|
|
6
6
|
const props = defineProps({
|
|
7
7
|
size: { type: String, required: false },
|
|
8
8
|
indicator: { type: String, required: false, default: "radio" },
|
|
9
|
+
count: { type: Number, required: false, default: 5 },
|
|
9
10
|
ui: { type: Object, required: false }
|
|
10
11
|
});
|
|
11
12
|
const dataListUi = useDataListUi();
|
|
@@ -18,7 +19,7 @@ const sizeClasses = computed(() => resolveFilterEditorSizeClasses(resolvedSize.v
|
|
|
18
19
|
<template>
|
|
19
20
|
<div :class="mergeDataListUiClass('grid gap-0.5', void 0, ui?.list)">
|
|
20
21
|
<div
|
|
21
|
-
v-for="index in
|
|
22
|
+
v-for="index in props.count"
|
|
22
23
|
:key="index"
|
|
23
24
|
:class="
|
|
24
25
|
mergeDataListUiClass(
|
|
@@ -2,9 +2,12 @@ import type { DataListControlSize, DataListFilterEditorUi } from '../../../types
|
|
|
2
2
|
type __VLS_Props = {
|
|
3
3
|
size?: DataListControlSize;
|
|
4
4
|
indicator?: 'checkbox' | 'radio';
|
|
5
|
+
/** Placeholder rows. */
|
|
6
|
+
count?: number;
|
|
5
7
|
ui?: DataListFilterEditorUi;
|
|
6
8
|
};
|
|
7
9
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
10
|
+
count: number;
|
|
8
11
|
indicator: "checkbox" | "radio";
|
|
9
12
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
13
|
declare const _default: typeof __VLS_export;
|
|
@@ -100,7 +100,7 @@ const geometry = computed(() => resolveDataListControlGeometry(size.value));
|
|
|
100
100
|
</button>
|
|
101
101
|
|
|
102
102
|
<USkeleton
|
|
103
|
-
v-if="props.showCounts && props.countLoading"
|
|
103
|
+
v-if="props.showCounts && (props.countLoading || entry.count == null)"
|
|
104
104
|
:class="[sizeClasses.skeletonCount, 'shrink-0 rounded-full']"
|
|
105
105
|
/>
|
|
106
106
|
<span
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { isNullish } from "../../../../shared/utils/predicate";
|
|
3
|
+
import FilterOptionListEnd from "./filter-option-list-end.vue";
|
|
3
4
|
import FilterOptionLoadingList from "./filter-option-loading-list.vue";
|
|
4
5
|
import FilterOptionMultipleList from "./filter-option-multiple-list.vue";
|
|
5
6
|
import FilterOptionSingleList from "./filter-option-single-list.vue";
|
|
@@ -105,5 +106,17 @@ function handleSelect(options) {
|
|
|
105
106
|
:ui="props.ui"
|
|
106
107
|
/>
|
|
107
108
|
</template>
|
|
109
|
+
|
|
110
|
+
<FilterOptionListEnd
|
|
111
|
+
v-if="
|
|
112
|
+
props.state.optionSource.remote.enabled.value && !props.state.optionSource.isLoading.value
|
|
113
|
+
"
|
|
114
|
+
:remote="props.state.optionSource.remote"
|
|
115
|
+
:indicator="
|
|
116
|
+
props.state.filterUi.value.selection.mode === 'multiple' || props.state.filterUi.value.presentation === 'tree' ? 'checkbox' : 'radio'
|
|
117
|
+
"
|
|
118
|
+
:size="props.size"
|
|
119
|
+
:ui="props.ui"
|
|
120
|
+
/>
|
|
108
121
|
</FilterSearchablePanel>
|
|
109
122
|
</template>
|
|
@@ -71,7 +71,7 @@ const modelValue = defineModel({ type: null, ...{
|
|
|
71
71
|
{{ item.label }}
|
|
72
72
|
</span>
|
|
73
73
|
<USkeleton
|
|
74
|
-
v-if="countLoading"
|
|
74
|
+
v-if="countLoading || item.countPending"
|
|
75
75
|
:class="[sizeClasses.skeletonCount, 'shrink-0 rounded-full']"
|
|
76
76
|
/>
|
|
77
77
|
<span v-else-if="item.count != null" class="shrink-0 text-muted">
|
|
@@ -4,6 +4,8 @@ interface TreeEntry {
|
|
|
4
4
|
label: string;
|
|
5
5
|
value?: string | number | boolean;
|
|
6
6
|
count?: number;
|
|
7
|
+
/** Counts are shown but this option's is not known yet. */
|
|
8
|
+
countPending?: boolean;
|
|
7
9
|
icon?: string;
|
|
8
10
|
depth: number;
|
|
9
11
|
expandable: boolean;
|
|
@@ -21,6 +23,7 @@ type __VLS_Props = {
|
|
|
21
23
|
label: string;
|
|
22
24
|
value: string;
|
|
23
25
|
count?: number;
|
|
26
|
+
countPending?: boolean;
|
|
24
27
|
icon?: string;
|
|
25
28
|
truncate?: boolean;
|
|
26
29
|
depth: number;
|
|
@@ -138,7 +138,7 @@ function activateTreeEntry(entry) {
|
|
|
138
138
|
</button>
|
|
139
139
|
|
|
140
140
|
<USkeleton
|
|
141
|
-
v-if="countLoading"
|
|
141
|
+
v-if="countLoading || entry.countPending"
|
|
142
142
|
:class="[sizeClasses.skeletonCount, 'shrink-0 rounded-full']"
|
|
143
143
|
/>
|
|
144
144
|
<span
|
|
@@ -210,7 +210,7 @@ function activateTreeEntry(entry) {
|
|
|
210
210
|
{{ item.label }}
|
|
211
211
|
</span>
|
|
212
212
|
<USkeleton
|
|
213
|
-
v-if="countLoading"
|
|
213
|
+
v-if="countLoading || item.countPending"
|
|
214
214
|
:class="[sizeClasses.skeletonCount, 'shrink-0 rounded-full']"
|
|
215
215
|
/>
|
|
216
216
|
<span v-else-if="item.count != null" class="shrink-0 text-muted">
|
|
@@ -4,6 +4,8 @@ interface TreeEntry {
|
|
|
4
4
|
label: string;
|
|
5
5
|
value?: string | number | boolean;
|
|
6
6
|
count?: number;
|
|
7
|
+
/** Counts are shown but this option's is not known yet. */
|
|
8
|
+
countPending?: boolean;
|
|
7
9
|
icon?: string;
|
|
8
10
|
depth: number;
|
|
9
11
|
expandable: boolean;
|
|
@@ -21,6 +23,7 @@ type __VLS_Props = {
|
|
|
21
23
|
label: string;
|
|
22
24
|
value: string;
|
|
23
25
|
count?: number;
|
|
26
|
+
countPending?: boolean;
|
|
24
27
|
icon?: string;
|
|
25
28
|
truncate?: boolean;
|
|
26
29
|
depth: number;
|
|
@@ -30,6 +30,7 @@ export declare function useOptionFilterEditorState(options: UseOptionFilterEdito
|
|
|
30
30
|
flatRadioItems: ComputedRef<{
|
|
31
31
|
color: string | undefined;
|
|
32
32
|
count: number | undefined;
|
|
33
|
+
countPending: boolean;
|
|
33
34
|
icon: string | undefined;
|
|
34
35
|
label: string;
|
|
35
36
|
truncate: boolean;
|
|
@@ -47,7 +48,16 @@ export declare function useOptionFilterEditorState(options: UseOptionFilterEdito
|
|
|
47
48
|
isError: ComputedRef<boolean>;
|
|
48
49
|
isLoading: ComputedRef<boolean>;
|
|
49
50
|
isStaleLoading: ComputedRef<boolean>;
|
|
50
|
-
refresh: () => Promise<[import("@tanstack/vue-query").QueryObserverResult<TableFilterOptionEntry[] | import("../types/index.js").TableFilterOptionQueryResult, Error>, import("@tanstack/vue-query").QueryObserverResult<import("../types/index.js").TableFacetExecutionResult<string, unknown>, Error>]>;
|
|
51
|
+
refresh: () => Promise<[import("@tanstack/vue-query").QueryObserverResult<import("@tanstack/vue-query").InfiniteData<import("../../shared/index.js").RemoteOptionsPage<TableFilterOptionEntry> | import("../../shared/index.js").RemoteCursorOptionsPage<TableFilterOptionEntry>, import("../../shared/utils/remote-options.js").RemoteOptionsPageParam>, Error> | import("@tanstack/vue-query").QueryObserverResult<TableFilterOptionEntry[] | import("../types/index.js").TableFilterOptionQueryResult, Error>, import("@tanstack/vue-query").QueryObserverResult<import("../types/index.js").TableFacetExecutionResult<string, unknown>, Error>]>;
|
|
52
|
+
remote: {
|
|
53
|
+
enabled: ComputedRef<boolean>;
|
|
54
|
+
failed: ComputedRef<boolean>;
|
|
55
|
+
hasMore: ComputedRef<boolean>;
|
|
56
|
+
loadMore: () => void;
|
|
57
|
+
loadingMore: ComputedRef<boolean>;
|
|
58
|
+
prefetchDistance: ComputedRef<number | "viewport">;
|
|
59
|
+
retry: () => Promise<import("@tanstack/vue-query").QueryObserverResult<import("@tanstack/vue-query").InfiniteData<import("../../shared/index.js").RemoteOptionsPage<TableFilterOptionEntry> | import("../../shared/index.js").RemoteCursorOptionsPage<TableFilterOptionEntry>, import("../../shared/utils/remote-options.js").RemoteOptionsPageParam>, Error>>;
|
|
60
|
+
};
|
|
51
61
|
searchExpandedIds: ComputedRef<string[]>;
|
|
52
62
|
showCounts: ComputedRef<boolean>;
|
|
53
63
|
sourceEntries: ComputedRef<(TableResolvedFilterOptionEntry<import("../types/index.js").TableFilterPrimitiveValue> & {
|
|
@@ -68,6 +78,7 @@ export declare function useOptionFilterEditorState(options: UseOptionFilterEdito
|
|
|
68
78
|
treeRadioItems: ComputedRef<{
|
|
69
79
|
color: string | undefined;
|
|
70
80
|
count: number | undefined;
|
|
81
|
+
countPending: boolean;
|
|
71
82
|
depth: number;
|
|
72
83
|
disabled: boolean;
|
|
73
84
|
expandable: boolean;
|
|
@@ -82,6 +93,7 @@ export declare function useOptionFilterEditorState(options: UseOptionFilterEdito
|
|
|
82
93
|
treeRadioValue: import("vue").WritableComputedRef<string | undefined, string | undefined>;
|
|
83
94
|
triggerSummary: ComputedRef<string>;
|
|
84
95
|
visibleTreeEntries: ComputedRef<{
|
|
96
|
+
countPending: boolean;
|
|
85
97
|
expanded: boolean;
|
|
86
98
|
indeterminate: boolean;
|
|
87
99
|
id: string;
|
|
@@ -88,6 +88,7 @@ export function useOptionFilterEditorState(options) {
|
|
|
88
88
|
if (!entry.branchSelectable) {
|
|
89
89
|
return {
|
|
90
90
|
...entry,
|
|
91
|
+
countPending: optionSource.showCounts.value && isNullish(entry.count),
|
|
91
92
|
expanded: effectiveExpandedIds.value.has(entry.id),
|
|
92
93
|
indeterminate: false
|
|
93
94
|
};
|
|
@@ -102,6 +103,7 @@ export function useOptionFilterEditorState(options) {
|
|
|
102
103
|
).length;
|
|
103
104
|
return {
|
|
104
105
|
...entry,
|
|
106
|
+
countPending: optionSource.showCounts.value && isNullish(entry.count),
|
|
105
107
|
expanded: effectiveExpandedIds.value.has(entry.id),
|
|
106
108
|
indeterminate: selectedCount > 0 && selectedCount < descendantValues.length,
|
|
107
109
|
selected: descendantValues.length > 0 && selectedCount === descendantValues.length
|
|
@@ -111,7 +113,8 @@ export function useOptionFilterEditorState(options) {
|
|
|
111
113
|
const flatRadioItems = computed(
|
|
112
114
|
() => displayEntries.value.map((entry) => ({
|
|
113
115
|
color: entry.color,
|
|
114
|
-
count: optionSource.showCounts.value ? entry.count
|
|
116
|
+
count: optionSource.showCounts.value ? entry.count : void 0,
|
|
117
|
+
countPending: optionSource.showCounts.value && isNullish(entry.count),
|
|
115
118
|
icon: entry.icon,
|
|
116
119
|
label: entry.label,
|
|
117
120
|
truncate: filterUi.value.row.truncate,
|
|
@@ -134,7 +137,8 @@ export function useOptionFilterEditorState(options) {
|
|
|
134
137
|
const treeRadioItems = computed(
|
|
135
138
|
() => visibleTreeEntries.value.map((entry) => ({
|
|
136
139
|
color: entry.color,
|
|
137
|
-
count: optionSource.showCounts.value ? entry.count
|
|
140
|
+
count: optionSource.showCounts.value ? entry.count : void 0,
|
|
141
|
+
countPending: optionSource.showCounts.value && isNullish(entry.count),
|
|
138
142
|
depth: entry.depth,
|
|
139
143
|
disabled: !entry.selectable,
|
|
140
144
|
expandable: entry.expandable,
|
|
@@ -22,7 +22,17 @@ export declare function useTableFilterOptions(options: UseTableFilterOptionsPara
|
|
|
22
22
|
isError: ComputedRef<boolean>;
|
|
23
23
|
isLoading: ComputedRef<boolean>;
|
|
24
24
|
isStaleLoading: ComputedRef<boolean>;
|
|
25
|
-
refresh: () => Promise<[import("@tanstack/vue-query").QueryObserverResult<TableFilterOptionEntry[] | TableFilterOptionQueryResult, Error>, import("@tanstack/vue-query").QueryObserverResult<TableFacetExecutionResult<string, unknown>, Error>]>;
|
|
25
|
+
refresh: () => Promise<[import("@tanstack/vue-query").QueryObserverResult<import("@tanstack/vue-query").InfiniteData<import("../../shared/index.js").RemoteOptionsPage<TableFilterOptionEntry> | import("../../shared/index.js").RemoteCursorOptionsPage<TableFilterOptionEntry>, import("../../shared/utils/remote-options.js").RemoteOptionsPageParam>, Error> | import("@tanstack/vue-query").QueryObserverResult<TableFilterOptionEntry[] | TableFilterOptionQueryResult, Error>, import("@tanstack/vue-query").QueryObserverResult<TableFacetExecutionResult<string, unknown>, Error>]>;
|
|
26
|
+
/** Paging of `source.remote`: the editor list loads the next page ahead of the scroll. */
|
|
27
|
+
remote: {
|
|
28
|
+
enabled: ComputedRef<boolean>;
|
|
29
|
+
failed: ComputedRef<boolean>;
|
|
30
|
+
hasMore: ComputedRef<boolean>;
|
|
31
|
+
loadMore: () => void;
|
|
32
|
+
loadingMore: ComputedRef<boolean>;
|
|
33
|
+
prefetchDistance: ComputedRef<number | "viewport">;
|
|
34
|
+
retry: () => Promise<import("@tanstack/vue-query").QueryObserverResult<import("@tanstack/vue-query").InfiniteData<import("../../shared/index.js").RemoteOptionsPage<TableFilterOptionEntry> | import("../../shared/index.js").RemoteCursorOptionsPage<TableFilterOptionEntry>, import("../../shared/utils/remote-options.js").RemoteOptionsPageParam>, Error>>;
|
|
35
|
+
};
|
|
26
36
|
searchExpandedIds: ComputedRef<string[]>;
|
|
27
37
|
showCounts: ComputedRef<boolean>;
|
|
28
38
|
sourceEntries: ComputedRef<(TableResolvedFilterOptionEntry<import("../types/index.js").TableFilterPrimitiveValue> & {
|