nuxt-ui-tools 0.1.0 → 0.1.2

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 (186) 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.d.vue.ts +2 -2
  19. package/dist/runtime/form/components/root/Form.vue +5 -3
  20. package/dist/runtime/form/components/root/Form.vue.d.ts +2 -2
  21. package/dist/runtime/form/composables/use-field-control.d.ts +1 -1
  22. package/dist/runtime/form/composables/use-field-control.js +4 -0
  23. package/dist/runtime/form/composables/use-field-options.d.ts +1 -1
  24. package/dist/runtime/form/composables/use-field-options.js +75 -31
  25. package/dist/runtime/form/composables/use-form-field-chrome.d.ts +3 -0
  26. package/dist/runtime/form/composables/use-form-field-chrome.js +9 -0
  27. package/dist/runtime/form/composables/use-form-runtime.js +17 -5
  28. package/dist/runtime/form/fields/array-list/component.vue +4 -1
  29. package/dist/runtime/form/fields/auto-complete/component.vue +23 -16
  30. package/dist/runtime/form/fields/checkbox-card/component.vue +28 -29
  31. package/dist/runtime/form/fields/checkbox-group/component.vue +28 -29
  32. package/dist/runtime/form/fields/color-picker/component.vue +4 -2
  33. package/dist/runtime/form/fields/date-family/component.vue +9 -4
  34. package/dist/runtime/form/fields/hierarchy/SelectionCheckbox.d.vue.ts +13 -0
  35. package/dist/runtime/form/fields/hierarchy/SelectionCheckbox.vue +24 -0
  36. package/dist/runtime/form/fields/hierarchy/SelectionCheckbox.vue.d.ts +13 -0
  37. package/dist/runtime/form/fields/hierarchy/SelectionRadio.d.vue.ts +14 -0
  38. package/dist/runtime/form/fields/hierarchy/SelectionRadio.vue +27 -0
  39. package/dist/runtime/form/fields/hierarchy/SelectionRadio.vue.d.ts +14 -0
  40. package/dist/runtime/form/fields/hierarchy/component.vue +257 -142
  41. package/dist/runtime/form/fields/hierarchy/utils.d.ts +9 -0
  42. package/dist/runtime/form/fields/hierarchy/utils.js +32 -0
  43. package/dist/runtime/form/fields/input-group/component.vue +7 -30
  44. package/dist/runtime/form/fields/matrix/component.vue +9 -3
  45. package/dist/runtime/form/fields/phone-number/component.vue +7 -2
  46. package/dist/runtime/form/fields/rating/component.vue +25 -2
  47. package/dist/runtime/form/fields/select/component.vue +29 -21
  48. package/dist/runtime/form/fields/switch-group/component.vue +8 -3
  49. package/dist/runtime/form/fields/time/component.vue +7 -5
  50. package/dist/runtime/form/fields/upload/component.vue +5 -3
  51. package/dist/runtime/form/types/api.d.ts +9 -3
  52. package/dist/runtime/form/types/field-base.d.ts +3 -1
  53. package/dist/runtime/form/types/runtime.d.ts +2 -0
  54. package/dist/runtime/form/types/ui.d.ts +1 -0
  55. package/dist/runtime/form/utils/api.js +3 -0
  56. package/dist/runtime/form/utils/options.d.ts +11 -2
  57. package/dist/runtime/form/utils/options.js +57 -9
  58. package/dist/runtime/form/utils/state.js +10 -2
  59. package/dist/runtime/i18n/locales/en.js +38 -0
  60. package/dist/runtime/i18n/locales/fr.js +38 -0
  61. package/dist/runtime/i18n/types.d.ts +38 -0
  62. package/dist/runtime/i18n/use-locale.d.ts +2 -2
  63. package/dist/runtime/i18n/use-locale.js +3 -3
  64. package/dist/runtime/spreadsheet/components/layout/SpreadsheetImportFooter.d.vue.ts +2 -2
  65. package/dist/runtime/spreadsheet/components/layout/SpreadsheetImportFooter.vue.d.ts +2 -2
  66. package/dist/runtime/spreadsheet/components/steps/review/SpreadsheetReviewInspection.d.vue.ts +2 -2
  67. package/dist/runtime/spreadsheet/components/steps/review/SpreadsheetReviewInspection.vue.d.ts +2 -2
  68. package/dist/runtime/spreadsheet/composables/use-spreadsheet-internals.d.ts +15 -15
  69. package/dist/runtime/spreadsheet/composables/use-spreadsheet-resolutions.d.ts +2 -2
  70. package/dist/runtime/spreadsheet/schema/normalize.d.ts +1 -1
  71. package/dist/runtime/spreadsheet/utils/references/sources.d.ts +1 -1
  72. package/dist/runtime/table/components/DataList.d.vue.ts +2 -0
  73. package/dist/runtime/table/components/DataList.vue.d.ts +2 -0
  74. package/dist/runtime/table/components/actions/RowActions.d.vue.ts +4 -2
  75. package/dist/runtime/table/components/actions/RowActions.vue +2 -0
  76. package/dist/runtime/table/components/actions/RowActions.vue.d.ts +4 -2
  77. package/dist/runtime/table/components/data-list/DataListAddFilter.d.vue.ts +5 -3
  78. package/dist/runtime/table/components/data-list/DataListAddFilter.vue +6 -1
  79. package/dist/runtime/table/components/data-list/DataListAddFilter.vue.d.ts +5 -3
  80. package/dist/runtime/table/components/data-list/DataListContent.d.vue.ts +24 -17
  81. package/dist/runtime/table/components/data-list/DataListContent.vue +70 -17
  82. package/dist/runtime/table/components/data-list/DataListContent.vue.d.ts +24 -17
  83. package/dist/runtime/table/components/data-list/DataListDefault.d.vue.ts +2 -0
  84. package/dist/runtime/table/components/data-list/DataListDefault.vue.d.ts +2 -0
  85. package/dist/runtime/table/components/data-list/DataListFilterTags.d.vue.ts +2 -0
  86. package/dist/runtime/table/components/data-list/DataListFilterTags.vue.d.ts +2 -0
  87. package/dist/runtime/table/components/data-list/DataListInfiniteLoader.d.vue.ts +1 -1
  88. package/dist/runtime/table/components/data-list/DataListInfiniteLoader.vue.d.ts +1 -1
  89. package/dist/runtime/table/components/data-list/DataListLayoutSwitch.vue +17 -11
  90. package/dist/runtime/table/components/data-list/DataListPagination.d.vue.ts +1 -1
  91. package/dist/runtime/table/components/data-list/DataListPagination.vue.d.ts +1 -1
  92. package/dist/runtime/table/components/data-list/DataListRoot.vue +2 -46
  93. package/dist/runtime/table/components/data-list/DataListSortMenu.d.vue.ts +1 -1
  94. package/dist/runtime/table/components/data-list/DataListSortMenu.vue +6 -0
  95. package/dist/runtime/table/components/data-list/DataListSortMenu.vue.d.ts +1 -1
  96. package/dist/runtime/table/components/filters/shared/DynamicFilterPicker.d.vue.ts +5 -0
  97. package/dist/runtime/table/components/filters/shared/DynamicFilterPicker.vue +182 -59
  98. package/dist/runtime/table/components/filters/shared/DynamicFilterPicker.vue.d.ts +5 -0
  99. package/dist/runtime/table/components/filters/shared/FilterMatchModeButton.d.vue.ts +3 -1
  100. package/dist/runtime/table/components/filters/shared/FilterMatchModeButton.vue +29 -5
  101. package/dist/runtime/table/components/filters/shared/FilterMatchModeButton.vue.d.ts +3 -1
  102. package/dist/runtime/table/components/filters/shared/FilterMatchModePanel.d.vue.ts +17 -0
  103. package/dist/runtime/table/components/filters/shared/FilterMatchModePanel.vue +47 -0
  104. package/dist/runtime/table/components/filters/shared/FilterMatchModePanel.vue.d.ts +17 -0
  105. package/dist/runtime/table/components/filters/shared/FilterOptionMultipleList.d.vue.ts +3 -1
  106. package/dist/runtime/table/components/filters/shared/FilterOptionMultipleList.vue +12 -3
  107. package/dist/runtime/table/components/filters/shared/FilterOptionMultipleList.vue.d.ts +3 -1
  108. package/dist/runtime/table/components/filters/shared/FilterOptionPickerContent.d.vue.ts +3 -0
  109. package/dist/runtime/table/components/filters/shared/FilterOptionPickerContent.vue +11 -1
  110. package/dist/runtime/table/components/filters/shared/FilterOptionPickerContent.vue.d.ts +3 -0
  111. package/dist/runtime/table/components/filters/shared/FilterOptionRow.d.vue.ts +3 -0
  112. package/dist/runtime/table/components/filters/shared/FilterOptionRow.vue +48 -9
  113. package/dist/runtime/table/components/filters/shared/FilterOptionRow.vue.d.ts +3 -0
  114. package/dist/runtime/table/components/filters/shared/FilterOptionSingleList.d.vue.ts +3 -0
  115. package/dist/runtime/table/components/filters/shared/FilterOptionSingleList.vue +35 -9
  116. package/dist/runtime/table/components/filters/shared/FilterOptionSingleList.vue.d.ts +3 -0
  117. package/dist/runtime/table/components/filters/shared/FilterOptionTreeContent.d.vue.ts +3 -0
  118. package/dist/runtime/table/components/filters/shared/FilterOptionTreeContent.vue +77 -20
  119. package/dist/runtime/table/components/filters/shared/FilterOptionTreeContent.vue.d.ts +3 -0
  120. package/dist/runtime/table/components/filters/shared/FilterPopoverShell.d.vue.ts +27 -0
  121. package/dist/runtime/table/components/filters/shared/FilterPopoverShell.vue +36 -0
  122. package/dist/runtime/table/components/filters/shared/FilterPopoverShell.vue.d.ts +27 -0
  123. package/dist/runtime/table/components/filters/shared/FilterSearchablePanel.d.vue.ts +3 -0
  124. package/dist/runtime/table/components/filters/shared/FilterSearchablePanel.vue +40 -10
  125. package/dist/runtime/table/components/filters/shared/FilterSearchablePanel.vue.d.ts +3 -0
  126. package/dist/runtime/table/components/filters/shared/FilterStageTransition.d.vue.ts +23 -0
  127. package/dist/runtime/table/components/filters/shared/FilterStageTransition.vue +21 -0
  128. package/dist/runtime/table/components/filters/shared/FilterStageTransition.vue.d.ts +23 -0
  129. package/dist/runtime/table/components/filters/shared/FilterTriggerTag.d.vue.ts +3 -2
  130. package/dist/runtime/table/components/filters/shared/FilterTriggerTag.vue +26 -25
  131. package/dist/runtime/table/components/filters/shared/FilterTriggerTag.vue.d.ts +3 -2
  132. package/dist/runtime/table/components/filters/tags/BooleanFilterTag.d.vue.ts +1 -1
  133. package/dist/runtime/table/components/filters/tags/BooleanFilterTag.vue +75 -22
  134. package/dist/runtime/table/components/filters/tags/BooleanFilterTag.vue.d.ts +1 -1
  135. package/dist/runtime/table/components/filters/tags/DateFilterTag.d.vue.ts +3 -1
  136. package/dist/runtime/table/components/filters/tags/DateFilterTag.vue +254 -160
  137. package/dist/runtime/table/components/filters/tags/DateFilterTag.vue.d.ts +3 -1
  138. package/dist/runtime/table/components/filters/tags/FilterTagsBar.d.vue.ts +7 -6
  139. package/dist/runtime/table/components/filters/tags/FilterTagsBar.vue +12 -27
  140. package/dist/runtime/table/components/filters/tags/FilterTagsBar.vue.d.ts +7 -6
  141. package/dist/runtime/table/components/filters/tags/NumberFilterTag.d.vue.ts +3 -2
  142. package/dist/runtime/table/components/filters/tags/NumberFilterTag.vue +192 -106
  143. package/dist/runtime/table/components/filters/tags/NumberFilterTag.vue.d.ts +3 -2
  144. package/dist/runtime/table/components/filters/tags/OptionFilterTag.d.vue.ts +3 -2
  145. package/dist/runtime/table/components/filters/tags/OptionFilterTag.vue +110 -48
  146. package/dist/runtime/table/components/filters/tags/OptionFilterTag.vue.d.ts +3 -2
  147. package/dist/runtime/table/components/filters/tags/TextFilterTag.d.vue.ts +3 -2
  148. package/dist/runtime/table/components/filters/tags/TextFilterTag.vue +120 -57
  149. package/dist/runtime/table/components/filters/tags/TextFilterTag.vue.d.ts +3 -2
  150. package/dist/runtime/table/components/grid/GridRenderer.vue +1 -1
  151. package/dist/runtime/table/components/layout/TableFooter.d.vue.ts +1 -1
  152. package/dist/runtime/table/components/layout/TableFooter.vue +1 -0
  153. package/dist/runtime/table/components/layout/TableFooter.vue.d.ts +1 -1
  154. package/dist/runtime/table/components/table/TableCellEllipsis.d.ts +1 -1
  155. package/dist/runtime/table/components/table/TableRenderer.vue +24 -12
  156. package/dist/runtime/table/composables/use-filter-tag-session.d.ts +3 -4
  157. package/dist/runtime/table/composables/use-filter-tag-session.js +12 -32
  158. package/dist/runtime/table/composables/use-query-state.d.ts +5 -5
  159. package/dist/runtime/table/composables/use-query-state.js +7 -32
  160. package/dist/runtime/table/composables/use-table-api.js +2 -2
  161. package/dist/runtime/table/composables/use-table-columns.d.ts +4 -14
  162. package/dist/runtime/table/composables/use-table-filter-presentation.d.ts +0 -3
  163. package/dist/runtime/table/composables/use-table-filter-presentation.js +0 -9
  164. package/dist/runtime/table/composables/use-table-filters.js +18 -7
  165. package/dist/runtime/table/composables/use-table-internals.d.ts +24 -63
  166. package/dist/runtime/table/composables/use-table-pagination.d.ts +2 -2
  167. package/dist/runtime/table/composables/use-table-state.d.ts +2 -2
  168. package/dist/runtime/table/types/actions.d.ts +1 -1
  169. package/dist/runtime/table/types/data-list.d.ts +41 -8
  170. package/dist/runtime/table/types/filters.d.ts +4 -0
  171. package/dist/runtime/table/utils/actions.d.ts +1 -1
  172. package/dist/runtime/table/utils/columns/menu.d.ts +2 -11
  173. package/dist/runtime/table/utils/columns/render.d.ts +2 -9
  174. package/dist/runtime/table/utils/columns/render.js +39 -30
  175. package/dist/runtime/table/utils/columns/state.d.ts +1 -1
  176. package/dist/runtime/table/utils/data-list-ui.d.ts +3 -1
  177. package/dist/runtime/table/utils/data-list-ui.js +45 -0
  178. package/dist/runtime/table/utils/filters/editor-size.d.ts +11 -0
  179. package/dist/runtime/table/utils/filters/editor-size.js +45 -0
  180. package/dist/runtime/table/utils/filters/index.d.ts +1 -1
  181. package/dist/runtime/table/utils/filters/index.js +1 -1
  182. package/dist/runtime/table/utils/query-state.d.ts +18 -1
  183. package/dist/runtime/table/utils/query-state.js +109 -0
  184. package/package.json +4 -2
  185. package/dist/runtime/table/utils/filters/operators.d.ts +0 -4
  186. package/dist/runtime/table/utils/filters/operators.js +0 -6
@@ -1,25 +1,26 @@
1
+ import type { TableUiFilterDefinition } from '../../../types/index.js';
1
2
  type __VLS_Props = {
2
3
  showAdd?: boolean;
3
4
  showClear?: boolean;
4
5
  };
5
- declare var __VLS_10: any, __VLS_22: any, __VLS_33: {
6
+ declare var __VLS_10: any, __VLS_22: {
6
7
  open: () => void;
7
8
  close: () => void;
8
9
  toggle: () => void;
9
10
  openState: boolean;
11
+ stage: "editor" | "match-mode" | "picker";
12
+ definition: TableUiFilterDefinition | undefined;
10
13
  triggerProps: {
11
14
  type: string;
12
15
  'aria-expanded': boolean;
13
16
  };
14
- }, __VLS_43: {};
17
+ }, __VLS_32: {};
15
18
  type __VLS_Slots = {} & {
16
19
  filter?: (props: typeof __VLS_10) => any;
17
20
  } & {
18
- filter?: (props: typeof __VLS_22) => any;
21
+ 'add-filter-trigger'?: (props: typeof __VLS_22) => any;
19
22
  } & {
20
- 'add-filter-trigger'?: (props: typeof __VLS_33) => any;
21
- } & {
22
- 'clear-filter-label'?: (props: typeof __VLS_43) => any;
23
+ 'clear-filter-label'?: (props: typeof __VLS_32) => any;
23
24
  };
24
25
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
25
26
  showAdd: boolean;
@@ -1,9 +1,10 @@
1
- import type { TableNumberFilterDefinition } from '../../../types/index.js';
1
+ import type { TableFilterOperator, TableNumberFilterDefinition } from '../../../types/index.js';
2
2
  type __VLS_Props = {
3
3
  definition: TableNumberFilterDefinition;
4
4
  dynamic?: boolean;
5
5
  session?: boolean;
6
- activationToken?: number;
6
+ embedded?: boolean;
7
+ initialOperator?: TableFilterOperator;
7
8
  };
8
9
  declare var __VLS_10: {
9
10
  preview: import("../../../utils/index.js").FilterPreviewResult;
@@ -1,24 +1,38 @@
1
1
  <script setup>
2
2
  import UButton from "@nuxt/ui/components/Button.vue";
3
3
  import UInputNumber from "@nuxt/ui/components/InputNumber.vue";
4
- import UPopover from "@nuxt/ui/components/Popover.vue";
5
4
  import USlider from "@nuxt/ui/components/Slider.vue";
6
- import { computed, ref, toRef, watch } from "vue";
5
+ import { computed, ref, watch } from "vue";
6
+ import { useDataListUi } from "../../../composables/use-data-list-ui";
7
7
  import { useFilterTagSession } from "../../../composables/use-filter-tag-session";
8
8
  import { useTableInternals } from "../../../composables/use-table-internals";
9
- import { resolveFilterTriggerIcon, resolveNumberFilterUi } from "../../../utils";
9
+ import {
10
+ mergeDataListUiClass,
11
+ resolveFilterTriggerIcon,
12
+ resolveNumberFilterUi
13
+ } from "../../../utils";
14
+ import FilterMatchModePanel from "../shared/FilterMatchModePanel.vue";
15
+ import FilterPopoverShell from "../shared/FilterPopoverShell.vue";
16
+ import FilterStageTransition from "../shared/FilterStageTransition.vue";
10
17
  import TableFilterTrigger from "../shared/FilterTriggerTag.vue";
11
18
  const props = defineProps({
12
19
  definition: { type: Object, required: true },
13
20
  dynamic: { type: Boolean, required: false },
14
21
  session: { type: Boolean, required: false },
15
- activationToken: { type: Number, required: false }
22
+ embedded: { type: Boolean, required: false },
23
+ initialOperator: { type: String, required: false }
16
24
  });
17
25
  const emit = defineEmits(["dismiss", "sessionClosed"]);
18
26
  const internals = useTableInternals();
19
- const pendingOperator = ref();
27
+ const dataListUi = useDataListUi();
28
+ const dataListFilterUi = computed(() => dataListUi.ui.value.filterTags?.ui);
29
+ const size = computed(() => dataListUi.ui.value.filterTags?.size ?? dataListUi.controlSize.value);
30
+ const pendingOperator = ref(props.initialOperator);
20
31
  const localValue = ref("");
21
32
  const rangeValue = ref({ from: "", to: "" });
33
+ const stage = ref("editor");
34
+ const stageDirection = ref("forward");
35
+ const stageTransitioning = ref(false);
22
36
  const preview = computed(
23
37
  () => internals.filters.getFilterPreview({
24
38
  key: props.definition.key
@@ -58,11 +72,10 @@ const sliderRangeValue = computed(() => [
58
72
  rangeValue.value.to === "" ? sliderBounds.value.max : Number(rangeValue.value.to)
59
73
  ]);
60
74
  const session = useFilterTagSession({
61
- activationToken: toRef(props, "activationToken"),
62
75
  session: props.session,
63
76
  dynamic: props.dynamic,
77
+ embedded: props.embedded,
64
78
  hasCommittedState: () => internals.filters.getFilterState({ key: props.definition.key }) != null,
65
- onActivated: () => handleActivate(operator.value),
66
79
  onOpen: initLocalState,
67
80
  onClose: () => {
68
81
  pendingOperator.value = void 0;
@@ -77,7 +90,9 @@ watch(
77
90
  }
78
91
  );
79
92
  function initLocalState() {
80
- const value = internals.filters.getFilterState({ key: props.definition.key })?.value;
93
+ const value = internals.filters.getFilterState({
94
+ key: props.definition.key
95
+ })?.value;
81
96
  if (operator.value === "between") {
82
97
  if (value && typeof value === "object" && !Array.isArray(value) && !(value instanceof Date)) {
83
98
  rangeValue.value = {
@@ -95,16 +110,23 @@ function initLocalState() {
95
110
  }
96
111
  function handleActivate(op) {
97
112
  pendingOperator.value = op;
98
- session.openWithLock();
113
+ stage.value = "editor";
114
+ stageDirection.value = "backward";
115
+ session.open();
116
+ }
117
+ function handleRequestMatchMode() {
118
+ stageDirection.value = "forward";
119
+ stageTransitioning.value = true;
120
+ stage.value = "match-mode";
121
+ session.open();
99
122
  }
100
123
  function handleOperatorChange(op) {
101
- if (filterUi.value.clearOnOperatorChange) {
102
- internals.filters.clearFilter({ key: props.definition.key });
103
- }
104
124
  localValue.value = "";
105
125
  rangeValue.value = { from: "", to: "" };
106
- if (filterUi.value.reopenOnOperatorChange) handleActivate(op);
107
- else pendingOperator.value = op;
126
+ pendingOperator.value = op;
127
+ stageDirection.value = "forward";
128
+ stageTransitioning.value = true;
129
+ stage.value = "editor";
108
130
  }
109
131
  function commitIfAuto() {
110
132
  if (filterUi.value.commitMode === "auto") applyFilter();
@@ -174,11 +196,14 @@ function resolveIncrementConfig(hideStepper) {
174
196
  </script>
175
197
 
176
198
  <template>
177
- <UPopover
199
+ <FilterPopoverShell
178
200
  :open="session.isOpen.value"
179
- :content="{ side: 'bottom', align: 'start', sideOffset: 8 }"
180
- :ui="{ content: 'w-fit overflow-hidden p-0 shadow-none' }"
181
- @update:open="session.handleOpenChange"
201
+ :embedded="embedded"
202
+ :transitioning="stageTransitioning"
203
+ :content-class="
204
+ mergeDataListUiClass('w-fit overflow-hidden p-0', void 0, dataListFilterUi?.popoverContent)
205
+ "
206
+ @update-open="session.handleOpenChange"
182
207
  >
183
208
  <slot
184
209
  name="trigger"
@@ -194,128 +219,189 @@ function resolveIncrementConfig(hideStepper) {
194
219
  <TableFilterTrigger
195
220
  :label="internals.filters.getFilterLabelText({ label: definition.label })"
196
221
  :leading-icon="resolveFilterTriggerIcon(definition)"
222
+ :operator="operator"
197
223
  :operator-label="operatorLabel"
198
224
  :operator-items="operatorItems"
199
225
  :preview-summary="preview.summary"
200
226
  :active="preview.active"
201
- @select-operator="handleOperatorChange"
202
227
  @activate="handleActivate"
228
+ @request-match-mode="handleRequestMatchMode"
203
229
  @clear="clearFilter"
204
230
  />
205
231
  </slot>
206
232
 
207
233
  <template #content>
208
- <div class="min-w-[16rem] max-w-[calc(100vw-1rem)] bg-default">
209
- <div v-if="operator === 'between'" class="grid gap-3 border-b border-default p-3">
234
+ <FilterStageTransition
235
+ :stage-key="stage"
236
+ :direction="stageDirection"
237
+ @settled="stageTransitioning = false"
238
+ >
239
+ <FilterMatchModePanel
240
+ v-if="stage === 'match-mode'"
241
+ :items="operatorItems"
242
+ :selected="operator"
243
+ :size="size"
244
+ :ui="dataListFilterUi"
245
+ @select="handleOperatorChange"
246
+ />
247
+ <div
248
+ v-else
249
+ :class="
250
+ mergeDataListUiClass(
251
+ 'min-w-[16rem] max-w-[calc(100vw-1rem)] bg-default',
252
+ void 0,
253
+ dataListFilterUi?.editor
254
+ )
255
+ "
256
+ >
210
257
  <div
211
- v-if="filterUi.range.display === 'inputs' || filterUi.range.display === 'inputs-slider'"
212
- class="grid grid-cols-2 gap-2"
258
+ v-if="operator === 'between'"
259
+ :class="
260
+ mergeDataListUiClass(
261
+ 'grid gap-3 border-b border-default p-3',
262
+ void 0,
263
+ dataListFilterUi?.inputs
264
+ )
265
+ "
213
266
  >
214
- <UInputNumber
215
- :model-value="rangeValue.from === '' ? void 0 : Number(rangeValue.from)"
216
- :placeholder="filterUi.range.inputs.fromPlaceholder"
217
- :min="filterUi.min"
218
- :max="filterUi.max"
219
- :step="filterUi.step"
220
- :format-options="filterUi.formatOptions"
221
- :disable-wheel-change="filterUi.range.inputs.disableWheelChange"
222
- :increment="resolveIncrementConfig(filterUi.range.inputs.hideStepper)"
223
- :decrement="resolveIncrementConfig(filterUi.range.inputs.hideStepper)"
224
- :ui="{
267
+ <div
268
+ v-if="
269
+ filterUi.range.display === 'inputs' || filterUi.range.display === 'inputs-slider'
270
+ "
271
+ class="grid grid-cols-2 gap-2"
272
+ >
273
+ <UInputNumber
274
+ :model-value="rangeValue.from === '' ? void 0 : Number(rangeValue.from)"
275
+ :placeholder="filterUi.range.inputs.fromPlaceholder"
276
+ :min="filterUi.min"
277
+ :max="filterUi.max"
278
+ :step="filterUi.step"
279
+ :format-options="filterUi.formatOptions"
280
+ :disable-wheel-change="filterUi.range.inputs.disableWheelChange"
281
+ :increment="resolveIncrementConfig(filterUi.range.inputs.hideStepper)"
282
+ :decrement="resolveIncrementConfig(filterUi.range.inputs.hideStepper)"
283
+ :size="size"
284
+ :ui="{
225
285
  base: 'h-9 px-2',
226
286
  increment: 'size-7 rounded-md',
227
287
  decrement: 'size-7 rounded-md'
228
288
  }"
229
- @update:model-value="updateRangeFrom"
230
- @keydown.enter.prevent="applyFilter"
289
+ @update:model-value="updateRangeFrom"
290
+ @keydown.enter.prevent="applyFilter"
291
+ />
292
+
293
+ <UInputNumber
294
+ :model-value="rangeValue.to === '' ? void 0 : Number(rangeValue.to)"
295
+ :placeholder="filterUi.range.inputs.toPlaceholder"
296
+ :min="filterUi.min"
297
+ :max="filterUi.max"
298
+ :step="filterUi.step"
299
+ :format-options="filterUi.formatOptions"
300
+ :disable-wheel-change="filterUi.range.inputs.disableWheelChange"
301
+ :increment="resolveIncrementConfig(filterUi.range.inputs.hideStepper)"
302
+ :decrement="resolveIncrementConfig(filterUi.range.inputs.hideStepper)"
303
+ :size="size"
304
+ :ui="{
305
+ base: 'h-9 px-2',
306
+ increment: 'size-7 rounded-md',
307
+ decrement: 'size-7 rounded-md'
308
+ }"
309
+ @update:model-value="updateRangeTo"
310
+ @keydown.enter.prevent="applyFilter"
311
+ />
312
+ </div>
313
+
314
+ <USlider
315
+ v-if="
316
+ filterUi.range.display === 'slider' || filterUi.range.display === 'inputs-slider'
317
+ "
318
+ :model-value="sliderRangeValue"
319
+ :min="filterUi.range.slider.min ?? sliderBounds.min"
320
+ :max="filterUi.range.slider.max ?? sliderBounds.max"
321
+ :step="filterUi.range.slider.step ?? filterUi.step"
322
+ :min-steps-between-thumbs="filterUi.range.minGap"
323
+ :tooltip="filterUi.range.slider.showTooltip"
324
+ :class="dataListFilterUi?.slider"
325
+ @update:model-value="updateSliderRangeValue"
231
326
  />
327
+ </div>
232
328
 
329
+ <div
330
+ v-else
331
+ :class="
332
+ mergeDataListUiClass(
333
+ 'grid gap-3 border-b border-default p-3',
334
+ void 0,
335
+ dataListFilterUi?.inputs
336
+ )
337
+ "
338
+ >
233
339
  <UInputNumber
234
- :model-value="rangeValue.to === '' ? void 0 : Number(rangeValue.to)"
235
- :placeholder="filterUi.range.inputs.toPlaceholder"
340
+ v-if="
341
+ filterUi.scalar.display === 'input' || filterUi.scalar.display === 'input-slider'
342
+ "
343
+ :model-value="scalarValue"
344
+ :placeholder="filterUi.scalar.input.placeholder"
236
345
  :min="filterUi.min"
237
346
  :max="filterUi.max"
238
347
  :step="filterUi.step"
239
348
  :format-options="filterUi.formatOptions"
240
- :disable-wheel-change="filterUi.range.inputs.disableWheelChange"
241
- :increment="resolveIncrementConfig(filterUi.range.inputs.hideStepper)"
242
- :decrement="resolveIncrementConfig(filterUi.range.inputs.hideStepper)"
349
+ :disable-wheel-change="filterUi.scalar.input.disableWheelChange"
350
+ :increment="resolveIncrementConfig(filterUi.scalar.input.hideStepper)"
351
+ :decrement="resolveIncrementConfig(filterUi.scalar.input.hideStepper)"
352
+ :size="size"
243
353
  :ui="{
244
354
  base: 'h-9 px-2',
245
355
  increment: 'size-7 rounded-md',
246
356
  decrement: 'size-7 rounded-md'
247
357
  }"
248
- @update:model-value="updateRangeTo"
358
+ @update:model-value="updateScalarValue"
249
359
  @keydown.enter.prevent="applyFilter"
250
360
  />
251
- </div>
252
-
253
- <USlider
254
- v-if="filterUi.range.display === 'slider' || filterUi.range.display === 'inputs-slider'"
255
- :model-value="sliderRangeValue"
256
- :min="filterUi.range.slider.min ?? sliderBounds.min"
257
- :max="filterUi.range.slider.max ?? sliderBounds.max"
258
- :step="filterUi.range.slider.step ?? filterUi.step"
259
- :min-steps-between-thumbs="filterUi.range.minGap"
260
- :tooltip="filterUi.range.slider.showTooltip"
261
- @update:model-value="updateSliderRangeValue"
262
- />
263
- </div>
264
-
265
- <div v-else class="grid gap-3 border-b border-default p-3">
266
- <UInputNumber
267
- v-if="filterUi.scalar.display === 'input' || filterUi.scalar.display === 'input-slider'"
268
- :model-value="scalarValue"
269
- :placeholder="filterUi.scalar.input.placeholder"
270
- :min="filterUi.min"
271
- :max="filterUi.max"
272
- :step="filterUi.step"
273
- :format-options="filterUi.formatOptions"
274
- :disable-wheel-change="filterUi.scalar.input.disableWheelChange"
275
- :increment="resolveIncrementConfig(filterUi.scalar.input.hideStepper)"
276
- :decrement="resolveIncrementConfig(filterUi.scalar.input.hideStepper)"
277
- :ui="{
278
- base: 'h-9 px-2',
279
- increment: 'size-7 rounded-md',
280
- decrement: 'size-7 rounded-md'
281
- }"
282
- @update:model-value="updateScalarValue"
283
- @keydown.enter.prevent="applyFilter"
284
- />
285
361
 
286
- <USlider
287
- v-if="
362
+ <USlider
363
+ v-if="
288
364
  filterUi.scalar.display === 'slider' || filterUi.scalar.display === 'input-slider'
289
365
  "
290
- :model-value="scalarValue"
291
- :min="filterUi.scalar.slider.min ?? sliderBounds.min"
292
- :max="filterUi.scalar.slider.max ?? sliderBounds.max"
293
- :step="filterUi.scalar.slider.step ?? filterUi.step"
294
- :tooltip="filterUi.scalar.slider.showTooltip"
295
- @update:model-value="updateSliderScalarValue"
296
- />
297
- </div>
366
+ :model-value="scalarValue"
367
+ :min="filterUi.scalar.slider.min ?? sliderBounds.min"
368
+ :max="filterUi.scalar.slider.max ?? sliderBounds.max"
369
+ :step="filterUi.scalar.slider.step ?? filterUi.step"
370
+ :tooltip="filterUi.scalar.slider.showTooltip"
371
+ :class="dataListFilterUi?.slider"
372
+ @update:model-value="updateSliderScalarValue"
373
+ />
374
+ </div>
298
375
 
299
- <div
300
- v-if="filterUi.commitMode === 'manual'"
301
- class="flex items-center justify-between border-t border-default p-2"
302
- >
303
- <UButton
304
- color="neutral"
305
- variant="ghost"
306
- size="sm"
307
- :label="filterUi.actions.clear"
308
- @click="clearFilter"
309
- />
310
- <UButton
311
- color="neutral"
312
- variant="subtle"
313
- size="sm"
314
- :label="filterUi.actions.apply"
315
- @click="applyFilter"
316
- />
376
+ <div
377
+ v-if="filterUi.commitMode === 'manual'"
378
+ :class="
379
+ mergeDataListUiClass(
380
+ 'flex items-center justify-between border-t border-default p-2',
381
+ void 0,
382
+ dataListFilterUi?.footer
383
+ )
384
+ "
385
+ >
386
+ <UButton
387
+ color="neutral"
388
+ variant="ghost"
389
+ :size="size"
390
+ :label="filterUi.actions.clear"
391
+ :ui="{ base: dataListFilterUi?.clear }"
392
+ @click="clearFilter"
393
+ />
394
+ <UButton
395
+ color="neutral"
396
+ variant="subtle"
397
+ :size="size"
398
+ :label="filterUi.actions.apply"
399
+ :ui="{ base: dataListFilterUi?.apply }"
400
+ @click="applyFilter"
401
+ />
402
+ </div>
317
403
  </div>
318
- </div>
404
+ </FilterStageTransition>
319
405
  </template>
320
- </UPopover>
406
+ </FilterPopoverShell>
321
407
  </template>
@@ -1,9 +1,10 @@
1
- import type { TableNumberFilterDefinition } from '../../../types/index.js';
1
+ import type { TableFilterOperator, TableNumberFilterDefinition } from '../../../types/index.js';
2
2
  type __VLS_Props = {
3
3
  definition: TableNumberFilterDefinition;
4
4
  dynamic?: boolean;
5
5
  session?: boolean;
6
- activationToken?: number;
6
+ embedded?: boolean;
7
+ initialOperator?: TableFilterOperator;
7
8
  };
8
9
  declare var __VLS_10: {
9
10
  preview: import("../../../utils/index.js").FilterPreviewResult;
@@ -1,9 +1,10 @@
1
- import type { TableOptionFilterDefinition } from '../../../types/index.js';
1
+ import type { TableFilterOperator, TableOptionFilterDefinition } from '../../../types/index.js';
2
2
  type __VLS_Props = {
3
3
  definition: TableOptionFilterDefinition;
4
4
  dynamic?: boolean;
5
5
  session?: boolean;
6
- activationToken?: number;
6
+ embedded?: boolean;
7
+ initialOperator?: TableFilterOperator;
7
8
  };
8
9
  declare var __VLS_10: {
9
10
  preview: import("../../../utils/index.js").FilterPreviewResult;