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
@@ -0,0 +1,23 @@
1
+ type __VLS_Props = {
2
+ stageKey: string;
3
+ direction?: 'forward' | 'backward';
4
+ };
5
+ declare var __VLS_9: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_9) => any;
8
+ };
9
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
+ settled: () => any;
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
12
+ onSettled?: (() => any) | undefined;
13
+ }>, {
14
+ direction: "forward" | "backward";
15
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
19
+ type __VLS_WithSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -2,6 +2,7 @@ import type { TableFilterOperator } from '../../../types/index.js';
2
2
  type __VLS_Props = {
3
3
  label: string;
4
4
  leadingIcon: string;
5
+ operator: TableFilterOperator;
5
6
  operatorLabel: string;
6
7
  operatorItems: Array<{
7
8
  label: string;
@@ -13,12 +14,12 @@ type __VLS_Props = {
13
14
  };
14
15
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
16
  clear: () => any;
16
- selectOperator: (value: TableFilterOperator) => any;
17
17
  activate: (operator: TableFilterOperator) => any;
18
+ requestMatchMode: () => any;
18
19
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
20
  onClear?: (() => any) | undefined;
20
- onSelectOperator?: ((value: TableFilterOperator) => any) | undefined;
21
21
  onActivate?: ((operator: TableFilterOperator) => any) | undefined;
22
+ onRequestMatchMode?: (() => any) | undefined;
22
23
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
24
  declare const _default: typeof __VLS_export;
24
25
  export default _default;
@@ -1,23 +1,22 @@
1
1
  <script setup>
2
2
  import UBadge from "@nuxt/ui/components/Badge.vue";
3
3
  import UButton from "@nuxt/ui/components/Button.vue";
4
- import UDropdownMenu from "@nuxt/ui/components/DropdownMenu.vue";
5
4
  import UFieldGroup from "@nuxt/ui/components/FieldGroup.vue";
6
5
  import UIcon from "@nuxt/ui/components/Icon.vue";
7
6
  import { computed } from "vue";
8
7
  import { useDataListUi } from "../../../composables/use-data-list-ui";
9
8
  import { mergeDataListUiClass } from "../../../utils";
10
- import FilterMatchModeButton from "./FilterMatchModeButton.vue";
11
9
  const props = defineProps({
12
10
  label: { type: String, required: true },
13
11
  leadingIcon: { type: String, required: true },
12
+ operator: { type: String, required: true },
14
13
  operatorLabel: { type: String, required: true },
15
14
  operatorItems: { type: Array, required: true },
16
15
  previewTags: { type: Array, required: false },
17
16
  previewSummary: { type: String, required: false },
18
17
  active: { type: Boolean, required: false }
19
18
  });
20
- const emit = defineEmits(["selectOperator", "activate", "clear"]);
19
+ const emit = defineEmits(["activate", "requestMatchMode", "clear"]);
21
20
  const showMatchMode = computed(() => props.operatorItems.length > 1);
22
21
  const showOperatorPickerFirst = computed(() => !props.active && showMatchMode.value);
23
22
  const dataListUi = useDataListUi();
@@ -29,26 +28,15 @@ const ui = computed(() => dataListUi.ui.value.filterTags?.ui);
29
28
  <div
30
29
  :class="mergeDataListUiClass('inline-flex min-w-0 max-w-full align-top', void 0, ui?.root)"
31
30
  >
32
- <UDropdownMenu
33
- v-if="showOperatorPickerFirst"
34
- :items="[
35
- operatorItems.map((item) => ({
36
- label: item.label,
37
- onSelect: () => {
38
- emit('activate', item.value);
39
- }
40
- }))
41
- ]"
42
- :content="{ side: 'bottom', align: 'start', sideOffset: 6 }"
43
- :ui="{ content: 'w-fit p-1 shadow-none' }"
44
- >
31
+ <template v-if="showOperatorPickerFirst">
45
32
  <UButton
46
33
  color="neutral"
47
34
  :variant="props.active ? 'subtle' : 'outline'"
48
35
  :size="size"
49
- :ui="{ base: mergeDataListUiClass('min-w-0 shrink-0', void 0, ui?.trigger) }"
50
- @pointerdown.stop
51
- @click.stop
36
+ :ui="{
37
+ base: mergeDataListUiClass('min-w-0 shrink-0', void 0, ui?.trigger)
38
+ }"
39
+ @click.stop="emit('requestMatchMode')"
52
40
  >
53
41
  <span
54
42
  :class="mergeDataListUiClass('flex min-w-0 items-center gap-2', void 0, ui?.label)"
@@ -57,14 +45,17 @@ const ui = computed(() => dataListUi.ui.value.filterTags?.ui);
57
45
  <span class="truncate">{{ props.label }}</span>
58
46
  </span>
59
47
  </UButton>
60
- </UDropdownMenu>
48
+ </template>
61
49
 
62
50
  <UButton
63
51
  v-else-if="!props.active"
64
52
  color="neutral"
65
53
  variant="outline"
66
54
  :size="size"
67
- :ui="{ base: mergeDataListUiClass('min-w-0 shrink-0', void 0, ui?.trigger) }"
55
+ :ui="{
56
+ base: mergeDataListUiClass('min-w-0 shrink-0', void 0, ui?.trigger)
57
+ }"
58
+ @click.stop="emit('activate', props.operator)"
68
59
  >
69
60
  <span :class="mergeDataListUiClass('flex min-w-0 items-center gap-2', void 0, ui?.label)">
70
61
  <UIcon :name="props.leadingIcon" class="size-4 shrink-0 text-muted" />
@@ -78,6 +69,7 @@ const ui = computed(() => dataListUi.ui.value.filterTags?.ui);
78
69
  variant="subtle"
79
70
  :size="size"
80
71
  :ui="{ base: mergeDataListUiClass('shrink-0', void 0, ui?.trigger) }"
72
+ @click.stop="emit('activate', props.operator)"
81
73
  >
82
74
  <span
83
75
  :class="mergeDataListUiClass('flex min-w-0 items-center gap-2', void 0, ui?.label)"
@@ -87,18 +79,27 @@ const ui = computed(() => dataListUi.ui.value.filterTags?.ui);
87
79
  </span>
88
80
  </UButton>
89
81
 
90
- <FilterMatchModeButton
82
+ <UButton
91
83
  v-if="showMatchMode"
84
+ color="neutral"
85
+ variant="subtle"
86
+ :size="size"
92
87
  :label="props.operatorLabel"
93
- :items="props.operatorItems"
94
- @select="emit('selectOperator', $event)"
88
+ trailing-icon="i-lucide-chevron-down"
89
+ :ui="{
90
+ base: mergeDataListUiClass('shrink-0', void 0, ui?.operatorTrigger)
91
+ }"
92
+ @click.stop="emit('requestMatchMode')"
95
93
  />
96
94
 
97
95
  <UButton
98
96
  color="neutral"
99
97
  variant="subtle"
100
98
  :size="size"
101
- :ui="{ base: mergeDataListUiClass('min-w-0 max-w-full', void 0, ui?.value) }"
99
+ :ui="{
100
+ base: mergeDataListUiClass('min-w-0 max-w-full', void 0, ui?.value)
101
+ }"
102
+ @click.stop="emit('activate', props.operator)"
102
103
  >
103
104
  <span class="flex min-w-0 items-center gap-2">
104
105
  <UBadge
@@ -2,6 +2,7 @@ import type { TableFilterOperator } from '../../../types/index.js';
2
2
  type __VLS_Props = {
3
3
  label: string;
4
4
  leadingIcon: string;
5
+ operator: TableFilterOperator;
5
6
  operatorLabel: string;
6
7
  operatorItems: Array<{
7
8
  label: string;
@@ -13,12 +14,12 @@ type __VLS_Props = {
13
14
  };
14
15
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
16
  clear: () => any;
16
- selectOperator: (value: TableFilterOperator) => any;
17
17
  activate: (operator: TableFilterOperator) => any;
18
+ requestMatchMode: () => any;
18
19
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
20
  onClear?: (() => any) | undefined;
20
- onSelectOperator?: ((value: TableFilterOperator) => any) | undefined;
21
21
  onActivate?: ((operator: TableFilterOperator) => any) | undefined;
22
+ onRequestMatchMode?: (() => any) | undefined;
22
23
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
24
  declare const _default: typeof __VLS_export;
24
25
  export default _default;
@@ -3,7 +3,7 @@ type __VLS_Props = {
3
3
  definition: TableBooleanFilterDefinition;
4
4
  dynamic?: boolean;
5
5
  session?: boolean;
6
- activationToken?: number;
6
+ embedded?: boolean;
7
7
  };
8
8
  declare var __VLS_10: {
9
9
  preview: import("../../../utils/index.js").FilterPreviewResult;
@@ -1,23 +1,31 @@
1
1
  <script setup>
2
2
  import UButton from "@nuxt/ui/components/Button.vue";
3
3
  import UIcon from "@nuxt/ui/components/Icon.vue";
4
- import UPopover from "@nuxt/ui/components/Popover.vue";
5
4
  import URadioGroup from "@nuxt/ui/components/RadioGroup.vue";
6
5
  import USkeleton from "@nuxt/ui/components/Skeleton.vue";
7
- import { computed, ref, toRef } from "vue";
6
+ import { computed, ref } from "vue";
7
+ import { useDataListUi } from "../../../composables/use-data-list-ui";
8
8
  import { useFilterTagSession } from "../../../composables/use-filter-tag-session";
9
9
  import { useTableFilterOptions } from "../../../composables/use-table-filter-options";
10
10
  import { useTableInternals } from "../../../composables/use-table-internals";
11
- import { resolveBooleanFilterUi, resolveFilterTriggerIcon } from "../../../utils";
11
+ import {
12
+ mergeDataListUiClass,
13
+ resolveBooleanFilterUi,
14
+ resolveFilterTriggerIcon
15
+ } from "../../../utils";
16
+ import FilterPopoverShell from "../shared/FilterPopoverShell.vue";
12
17
  import TableFilterTrigger from "../shared/FilterTriggerTag.vue";
13
18
  const props = defineProps({
14
19
  definition: { type: Object, required: true },
15
20
  dynamic: { type: Boolean, required: false },
16
21
  session: { type: Boolean, required: false },
17
- activationToken: { type: Number, required: false }
22
+ embedded: { type: Boolean, required: false }
18
23
  });
19
24
  const emit = defineEmits(["dismiss", "sessionClosed"]);
20
25
  const internals = useTableInternals();
26
+ const dataListUi = useDataListUi();
27
+ const dataListFilterUi = computed(() => dataListUi.ui.value.filterTags?.ui);
28
+ const size = computed(() => dataListUi.ui.value.filterTags?.size ?? dataListUi.controlSize.value);
21
29
  const searchQuery = ref("");
22
30
  const isSessionOpen = ref(false);
23
31
  const isContentReady = ref(false);
@@ -71,11 +79,10 @@ const radioValue = computed({
71
79
  });
72
80
  const session = useFilterTagSession({
73
81
  isOpen: isSessionOpen,
74
- activationToken: toRef(props, "activationToken"),
75
82
  session: props.session,
76
83
  dynamic: props.dynamic,
84
+ embedded: props.embedded,
77
85
  hasCommittedState: () => internals.filters.getFilterState({ key: props.definition.key }) != null,
78
- onActivated: handleActivate,
79
86
  onOpen: initLocalState,
80
87
  onClose: () => {
81
88
  isContentReady.value = false;
@@ -84,7 +91,9 @@ const session = useFilterTagSession({
84
91
  onDismiss: () => emit("dismiss")
85
92
  });
86
93
  function initLocalState() {
87
- const committedRule = internals.filters.getFilterState({ key: props.definition.key });
94
+ const committedRule = internals.filters.getFilterState({
95
+ key: props.definition.key
96
+ });
88
97
  if (committedRule?.value === true || committedRule?.value === false) {
89
98
  localValue.value = committedRule.value;
90
99
  return;
@@ -92,7 +101,7 @@ function initLocalState() {
92
101
  localValue.value = null;
93
102
  }
94
103
  function handleActivate() {
95
- session.openWithLock();
104
+ session.open();
96
105
  }
97
106
  function handleContentMounted() {
98
107
  isContentReady.value = true;
@@ -115,11 +124,13 @@ function clearFilter() {
115
124
  </script>
116
125
 
117
126
  <template>
118
- <UPopover
127
+ <FilterPopoverShell
119
128
  :open="session.isOpen.value"
120
- :content="{ side: 'bottom', align: 'start', sideOffset: 8 }"
121
- :ui="{ content: 'w-fit overflow-hidden p-0 shadow-none' }"
122
- @update:open="session.handleOpenChange"
129
+ :embedded="embedded"
130
+ :content-class="
131
+ mergeDataListUiClass('w-fit overflow-hidden p-0', void 0, dataListFilterUi?.popoverContent)
132
+ "
133
+ @update-open="session.handleOpenChange"
123
134
  >
124
135
  <slot
125
136
  name="trigger"
@@ -135,6 +146,7 @@ function clearFilter() {
135
146
  <TableFilterTrigger
136
147
  :label="internals.filters.getFilterLabelText({ label: definition.label })"
137
148
  :leading-icon="resolveFilterTriggerIcon(definition)"
149
+ :operator="operator"
138
150
  operator-label="is"
139
151
  :operator-items="[]"
140
152
  :preview-tags="preview.tags"
@@ -146,21 +158,39 @@ function clearFilter() {
146
158
  </slot>
147
159
 
148
160
  <template #content>
149
- <div class="w-fit max-w-[calc(100vw-1rem)] bg-default" @vue:mounted="handleContentMounted">
150
- <div class="p-2">
161
+ <div
162
+ :class="
163
+ mergeDataListUiClass(
164
+ 'w-fit max-w-[calc(100vw-1rem)] bg-default',
165
+ void 0,
166
+ dataListFilterUi?.editor
167
+ )
168
+ "
169
+ @vue:mounted="handleContentMounted"
170
+ >
171
+ <div :class="mergeDataListUiClass('p-2', void 0, dataListFilterUi?.list)">
151
172
  <URadioGroup
152
173
  v-model="radioValue"
153
174
  :items="radioItems"
154
175
  color="neutral"
155
176
  variant="list"
177
+ :size="size"
156
178
  :ui="{
157
179
  root: 'w-full',
158
180
  fieldset: 'grid gap-0.5',
159
- item: 'flex items-center rounded-md transition-colors hover:bg-elevated data-[state=checked]:bg-elevated',
181
+ item: mergeDataListUiClass(
182
+ 'flex items-center rounded-md transition-colors hover:bg-elevated data-[state=checked]:bg-elevated',
183
+ void 0,
184
+ dataListFilterUi?.option
185
+ ),
160
186
  container: 'self-center pl-3',
161
187
  base: 'cursor-pointer',
162
188
  wrapper: 'min-w-0 flex-1 py-2 pr-3',
163
- label: 'w-full cursor-pointer text-sm text-default'
189
+ label: mergeDataListUiClass(
190
+ 'w-full cursor-pointer text-sm text-default',
191
+ void 0,
192
+ dataListFilterUi?.optionLabel
193
+ )
164
194
  }"
165
195
  >
166
196
  <template #label="{ item }">
@@ -168,7 +198,13 @@ function clearFilter() {
168
198
  <UIcon
169
199
  v-if="typeof item.icon === 'string'"
170
200
  :name="item.icon"
171
- class="size-4 shrink-0 text-muted"
201
+ :class="
202
+ mergeDataListUiClass(
203
+ 'size-4 shrink-0 text-muted',
204
+ void 0,
205
+ dataListFilterUi?.optionIcon
206
+ )
207
+ "
172
208
  />
173
209
 
174
210
  <span class="min-w-0 flex-1 truncate">
@@ -178,7 +214,16 @@ function clearFilter() {
178
214
  v-if="optionSource.isCountLoading.value"
179
215
  class="ml-3 h-3.5 w-6 shrink-0"
180
216
  />
181
- <span v-else-if="item.count != null" class="ml-3 shrink-0 text-muted">
217
+ <span
218
+ v-else-if="item.count != null"
219
+ :class="
220
+ mergeDataListUiClass(
221
+ 'ml-3 shrink-0 text-muted',
222
+ void 0,
223
+ dataListFilterUi?.optionCount
224
+ )
225
+ "
226
+ >
182
227
  {{ item.count }}
183
228
  </span>
184
229
  </div>
@@ -188,24 +233,32 @@ function clearFilter() {
188
233
 
189
234
  <div
190
235
  v-if="filterUi.commitMode === 'manual'"
191
- class="flex items-center justify-between border-t border-default p-2"
236
+ :class="
237
+ mergeDataListUiClass(
238
+ 'flex items-center justify-between border-t border-default p-2',
239
+ void 0,
240
+ dataListFilterUi?.footer
241
+ )
242
+ "
192
243
  >
193
244
  <UButton
194
245
  color="neutral"
195
246
  variant="ghost"
196
- size="sm"
247
+ :size="size"
197
248
  :label="filterUi.actions.clear"
249
+ :ui="{ base: dataListFilterUi?.clear }"
198
250
  @click="clearFilter"
199
251
  />
200
252
  <UButton
201
253
  color="neutral"
202
254
  variant="subtle"
203
- size="sm"
255
+ :size="size"
204
256
  :label="filterUi.actions.apply"
257
+ :ui="{ base: dataListFilterUi?.apply }"
205
258
  @click="applyFilter"
206
259
  />
207
260
  </div>
208
261
  </div>
209
262
  </template>
210
- </UPopover>
263
+ </FilterPopoverShell>
211
264
  </template>
@@ -3,7 +3,7 @@ type __VLS_Props = {
3
3
  definition: TableBooleanFilterDefinition;
4
4
  dynamic?: boolean;
5
5
  session?: boolean;
6
- activationToken?: number;
6
+ embedded?: boolean;
7
7
  };
8
8
  declare var __VLS_10: {
9
9
  preview: import("../../../utils/index.js").FilterPreviewResult;
@@ -1,9 +1,11 @@
1
+ import type { TableFilterOperator } from '../../../types/index.js';
1
2
  import type { TableDateFilterDefinition } from '../../../types/filters.js';
2
3
  type __VLS_Props = {
3
4
  definition: TableDateFilterDefinition;
4
5
  dynamic?: boolean;
5
6
  session?: boolean;
6
- activationToken?: number;
7
+ embedded?: boolean;
8
+ initialOperator?: TableFilterOperator;
7
9
  };
8
10
  declare var __VLS_10: {
9
11
  preview: import("../../../utils/index.js").FilterPreviewResult;