@povio/ui 2.3.0-rc.4 → 2.3.0-rc.40

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 (231) hide show
  1. package/dist/assets/icons/AlignCenter.js +26 -11
  2. package/dist/assets/icons/AlignLeft.js +26 -11
  3. package/dist/assets/icons/AlignLeftRight.js +26 -11
  4. package/dist/assets/icons/AlignRight.js +26 -11
  5. package/dist/assets/icons/ArrowDropDown.js +26 -11
  6. package/dist/assets/icons/ArrowDropUp.js +26 -11
  7. package/dist/assets/icons/ArrowLeft.js +26 -11
  8. package/dist/assets/icons/ArrowRight.js +26 -11
  9. package/dist/assets/icons/Bold.js +26 -11
  10. package/dist/assets/icons/BulletedList.js +26 -11
  11. package/dist/assets/icons/Calendar.js +28 -13
  12. package/dist/assets/icons/Check.js +28 -13
  13. package/dist/assets/icons/CheckCircle.js +26 -11
  14. package/dist/assets/icons/CheckboxCheckmark.js +29 -14
  15. package/dist/assets/icons/CheckboxIndeterminate.js +29 -14
  16. package/dist/assets/icons/ChevronDown.js +28 -13
  17. package/dist/assets/icons/ChevronLeft.js +28 -13
  18. package/dist/assets/icons/ChevronRight.js +28 -13
  19. package/dist/assets/icons/ChevronUp.js +28 -13
  20. package/dist/assets/icons/ChevronsLeft.js +28 -13
  21. package/dist/assets/icons/ChevronsRight.js +28 -13
  22. package/dist/assets/icons/Clock.js +26 -11
  23. package/dist/assets/icons/Close.js +26 -11
  24. package/dist/assets/icons/DateTime.js +35 -14
  25. package/dist/assets/icons/DragIndicator.js +26 -11
  26. package/dist/assets/icons/File.js +28 -13
  27. package/dist/assets/icons/Highlight.js +26 -11
  28. package/dist/assets/icons/HighlightOn.js +49 -15
  29. package/dist/assets/icons/Home.js +26 -11
  30. package/dist/assets/icons/Info.js +37 -16
  31. package/dist/assets/icons/Italic.js +26 -11
  32. package/dist/assets/icons/Link.js +26 -11
  33. package/dist/assets/icons/Menu.js +26 -11
  34. package/dist/assets/icons/NumberedList.js +26 -11
  35. package/dist/assets/icons/PointerHorizontal.js +26 -11
  36. package/dist/assets/icons/PointerVertical.js +26 -11
  37. package/dist/assets/icons/Search.js +26 -11
  38. package/dist/assets/icons/Send.js +28 -13
  39. package/dist/assets/icons/Strikethrough.js +26 -11
  40. package/dist/assets/icons/TextColor.js +48 -14
  41. package/dist/assets/icons/Today.js +26 -11
  42. package/dist/assets/icons/Underlined.js +28 -13
  43. package/dist/assets/icons/Upload.js +35 -14
  44. package/dist/assets/icons/Visibility.js +26 -11
  45. package/dist/assets/icons/VisibilityOff.js +26 -11
  46. package/dist/assets/icons/WarningFilled.js +28 -13
  47. package/dist/components/Breadcrumbs/Breadcrumbs.js +207 -56
  48. package/dist/components/Menu/Menu.js +18 -2
  49. package/dist/components/Menu/MenuDesktop.js +41 -7
  50. package/dist/components/Menu/MenuItem.js +32 -9
  51. package/dist/components/Menu/MenuMobile.js +97 -38
  52. package/dist/components/Menu/MenuPopover.js +105 -29
  53. package/dist/components/buttons/IconButton/IconButton.js +40 -8
  54. package/dist/components/buttons/InlineIconButton/InlineIconButton.js +34 -9
  55. package/dist/components/buttons/PillButton/PillButton.js +55 -17
  56. package/dist/components/buttons/SplitButton/SplitButton.js +103 -18
  57. package/dist/components/buttons/TextButton/TextButton.js +30 -8
  58. package/dist/components/buttons/ToggleButton/ToggleButton.js +28 -8
  59. package/dist/components/buttons/shared/ButtonContent.js +80 -22
  60. package/dist/components/inputs/Checkbox/Checkbox.d.ts +1 -0
  61. package/dist/components/inputs/Checkbox/Checkbox.js +193 -34
  62. package/dist/components/inputs/Checkbox/CheckboxCheckmark.js +24 -10
  63. package/dist/components/inputs/Checkbox/checkbox.cva.js +2 -0
  64. package/dist/components/inputs/DateTime/DatePicker/DatePicker.d.ts +1 -0
  65. package/dist/components/inputs/DateTime/DatePicker/DatePicker.js +289 -93
  66. package/dist/components/inputs/DateTime/DateRangePicker/DateRangePicker.d.ts +1 -0
  67. package/dist/components/inputs/DateTime/DateRangePicker/DateRangePicker.js +376 -189
  68. package/dist/components/inputs/DateTime/DateTimePicker/DateTimePicker.d.ts +1 -0
  69. package/dist/components/inputs/DateTime/DateTimePicker/DateTimePicker.js +189 -75
  70. package/dist/components/inputs/DateTime/TimePicker/TimePicker.d.ts +1 -0
  71. package/dist/components/inputs/DateTime/TimePicker/TimePicker.js +559 -159
  72. package/dist/components/inputs/DateTime/shared/Calendar.js +333 -137
  73. package/dist/components/inputs/DateTime/shared/CalendarCell.d.ts +2 -1
  74. package/dist/components/inputs/DateTime/shared/CalendarCell.js +301 -102
  75. package/dist/components/inputs/DateTime/shared/CalendarGrid.d.ts +2 -1
  76. package/dist/components/inputs/DateTime/shared/CalendarGrid.js +146 -33
  77. package/dist/components/inputs/DateTime/shared/CalendarHeader.js +245 -90
  78. package/dist/components/inputs/DateTime/shared/CalendarSelectHeader.js +318 -137
  79. package/dist/components/inputs/DateTime/shared/DateField.js +311 -112
  80. package/dist/components/inputs/DateTime/shared/DatePickerInput.d.ts +7 -1
  81. package/dist/components/inputs/DateTime/shared/DatePickerInput.js +374 -147
  82. package/dist/components/inputs/DateTime/shared/DateSegmentItem.d.ts +3 -2
  83. package/dist/components/inputs/DateTime/shared/DateSegmentItem.js +93 -21
  84. package/dist/components/inputs/DateTime/shared/DateTimeDialog.js +81 -27
  85. package/dist/components/inputs/DateTime/shared/DateTimeDialogFooter.js +59 -10
  86. package/dist/components/inputs/DateTime/shared/MonthPicker.js +103 -58
  87. package/dist/components/inputs/DateTime/shared/RangeCalendar.js +193 -82
  88. package/dist/components/inputs/DateTime/shared/TimeField.js +27 -8
  89. package/dist/components/inputs/DateTime/shared/TimePickerForm.js +279 -110
  90. package/dist/components/inputs/DateTime/shared/TimePickerInput.d.ts +3 -1
  91. package/dist/components/inputs/DateTime/shared/TimePickerInput.js +208 -70
  92. package/dist/components/inputs/DateTime/shared/YearPicker.js +119 -68
  93. package/dist/components/inputs/DateTime/shared/datePickerTodayIcon.d.ts +9 -1
  94. package/dist/components/inputs/DateTime/shared/datePickerTodayIcon.js +43 -7
  95. package/dist/components/inputs/DateTime/shared/staticDateTimeSegments.d.ts +16 -8
  96. package/dist/components/inputs/DateTime/shared/staticDateTimeSegments.js +46 -41
  97. package/dist/components/inputs/File/FileUpload.js +86 -44
  98. package/dist/components/inputs/File/FileUploadContainer.js +15 -7
  99. package/dist/components/inputs/File/InputUpload.js +317 -79
  100. package/dist/components/inputs/File/shared/FileCard.js +104 -41
  101. package/dist/components/inputs/File/shared/FileCardList.js +47 -12
  102. package/dist/components/inputs/File/shared/FileUploadContent.js +175 -44
  103. package/dist/components/inputs/File/shared/FileUploadContentEmpty.js +149 -46
  104. package/dist/components/inputs/File/shared/FileUploadContentError.js +234 -93
  105. package/dist/components/inputs/File/shared/FileUploadContentFilled.js +230 -97
  106. package/dist/components/inputs/File/shared/FileUploadContentLoading.js +199 -55
  107. package/dist/components/inputs/File/shared/InputUploadContent.js +148 -35
  108. package/dist/components/inputs/File/shared/InputUploadFilled.js +50 -9
  109. package/dist/components/inputs/File/shared/ProgressBar.js +48 -9
  110. package/dist/components/inputs/FormField/FormField.js +119 -37
  111. package/dist/components/inputs/FormField/FormFieldError.js +25 -5
  112. package/dist/components/inputs/FormField/FormFieldHeader.js +79 -22
  113. package/dist/components/inputs/FormField/FormFieldHeaderClose.js +31 -7
  114. package/dist/components/inputs/FormField/FormFieldHelper.js +26 -6
  115. package/dist/components/inputs/FormField/FormFieldLabel.js +40 -9
  116. package/dist/components/inputs/Input/NumberInput/NumberInput.js +400 -125
  117. package/dist/components/inputs/Input/NumberRangeInput/NumberRangeField.js +541 -116
  118. package/dist/components/inputs/Input/NumberRangeInput/NumberRangeInput.js +486 -146
  119. package/dist/components/inputs/Input/PasswordInput/PasswordInput.js +48 -9
  120. package/dist/components/inputs/Input/TextArea/TextArea.js +298 -89
  121. package/dist/components/inputs/Input/TextInput/TextInput.js +370 -121
  122. package/dist/components/inputs/Input/shared/InputContent.js +190 -58
  123. package/dist/components/inputs/Inputs/Form.js +40 -11
  124. package/dist/components/inputs/Inputs/InputItem.d.ts +0 -1
  125. package/dist/components/inputs/Inputs/InputItem.js +65 -16
  126. package/dist/components/inputs/Inputs/Inputs.js +37 -11
  127. package/dist/components/inputs/RadioGroup/RadioGroup.d.ts +1 -0
  128. package/dist/components/inputs/RadioGroup/RadioGroup.js +320 -108
  129. package/dist/components/inputs/Selection/Autocomplete/Autocomplete.js +146 -50
  130. package/dist/components/inputs/Selection/Autocomplete/QueryAutocomplete.js +4 -4
  131. package/dist/components/inputs/Selection/Select/QuerySelect.js +90 -28
  132. package/dist/components/inputs/Selection/Select/Select.js +140 -45
  133. package/dist/components/inputs/Selection/shared/SelectBase.js +69 -20
  134. package/dist/components/inputs/Selection/shared/SelectDesktop.js +390 -143
  135. package/dist/components/inputs/Selection/shared/SelectInput.d.ts +2 -2
  136. package/dist/components/inputs/Selection/shared/SelectInput.js +328 -137
  137. package/dist/components/inputs/Selection/shared/SelectInputTags.js +99 -25
  138. package/dist/components/inputs/Selection/shared/SelectListBox.js +163 -51
  139. package/dist/components/inputs/Selection/shared/SelectListBoxItem.js +85 -35
  140. package/dist/components/inputs/Selection/shared/SelectListBoxItemSelectAll.js +69 -16
  141. package/dist/components/inputs/Selection/shared/SelectListBoxLoadingItem.js +70 -21
  142. package/dist/components/inputs/Selection/shared/SelectListBoxSelectionBar.js +58 -9
  143. package/dist/components/inputs/Selection/shared/SelectMobile.js +3 -2
  144. package/dist/components/inputs/Selection/shared/StaticSelectTrailingContent.d.ts +9 -0
  145. package/dist/components/inputs/Selection/shared/StaticSelectTrailingContent.js +47 -0
  146. package/dist/components/inputs/Selection/shared/querySelect.utils.d.ts +1 -0
  147. package/dist/components/inputs/Selection/shared/querySelect.utils.js +12 -1
  148. package/dist/components/inputs/Selection/shared/select.context.d.ts +2 -2
  149. package/dist/components/inputs/Selection/shared/select.context.js +47 -39
  150. package/dist/components/inputs/Selection/shared/selectInput.cva.d.ts +5 -0
  151. package/dist/components/inputs/Selection/shared/selectInput.cva.js +5 -0
  152. package/dist/components/inputs/Selection/shared/useSelectItems.js +109 -49
  153. package/dist/components/inputs/Skeleton/InputFrame.d.ts +3 -0
  154. package/dist/components/inputs/Skeleton/InputFrame.js +445 -117
  155. package/dist/components/inputs/Slider/Slider.d.ts +2 -1
  156. package/dist/components/inputs/Slider/Slider.js +265 -78
  157. package/dist/components/inputs/TextEditor/TextEditor.js +447 -103
  158. package/dist/components/inputs/TextEditor/Toolbar/ColorPicker.js +37 -11
  159. package/dist/components/inputs/TextEditor/Toolbar/ColorPickerDropdown.js +102 -30
  160. package/dist/components/inputs/TextEditor/Toolbar/HyperlinkAction.js +194 -45
  161. package/dist/components/inputs/TextEditor/Toolbar/TextAlignSelect.js +88 -28
  162. package/dist/components/inputs/TextEditor/Toolbar/TextColorSelect.js +48 -14
  163. package/dist/components/inputs/TextEditor/Toolbar/TextEditorToolbar.js +66 -19
  164. package/dist/components/inputs/TextEditor/Toolbar/TextHighlightSelect.js +49 -15
  165. package/dist/components/inputs/TextEditor/Toolbar/TextListActions.js +92 -32
  166. package/dist/components/inputs/TextEditor/Toolbar/TextMarksActions.js +126 -54
  167. package/dist/components/inputs/TextEditor/Toolbar/TextStyleSelect.js +141 -38
  168. package/dist/components/inputs/Toggle/Toggle.d.ts +1 -0
  169. package/dist/components/inputs/Toggle/Toggle.js +212 -41
  170. package/dist/components/inputs/Toggle/toggle.cva.js +2 -1
  171. package/dist/components/inputs/shared/CheckContent.js +21 -10
  172. package/dist/components/inputs/shared/InputClear.js +88 -21
  173. package/dist/components/inputs/shared/TooltipWrapper.js +47 -12
  174. package/dist/components/inputs/shared/input.cva.js +35 -13
  175. package/dist/components/inputs/shared/label.cva.js +2 -2
  176. package/dist/components/inputs/shared/useStaticInputHandoff.js +83 -40
  177. package/dist/components/navigation/Accordion/Accordion.js +69 -22
  178. package/dist/components/navigation/Accordion/AccordionItem.js +86 -41
  179. package/dist/components/navigation/Stepper/Stepper.js +67 -22
  180. package/dist/components/navigation/Stepper/StepperItem.js +104 -31
  181. package/dist/components/navigation/Stepper/StepperSeparator.js +23 -5
  182. package/dist/components/overlays/ActionModal/ActionModal.js +169 -35
  183. package/dist/components/overlays/BottomSheet/BottomSheet.js +122 -25
  184. package/dist/components/overlays/BottomSheet/BottomSheetHeader.js +48 -8
  185. package/dist/components/overlays/Drawer/Drawer.js +62 -20
  186. package/dist/components/overlays/ResponsivePopover/ResponsivePopover.js +83 -27
  187. package/dist/components/overlays/Tooltip/Tooltip.js +137 -28
  188. package/dist/components/overlays/Tooltip/TooltipEllipsis.js +37 -12
  189. package/dist/components/segment/Segment.js +218 -57
  190. package/dist/components/segment/SegmentItem.js +67 -10
  191. package/dist/components/shared/pagination/Pagination.js +108 -22
  192. package/dist/components/shared/pagination/PaginationList.js +167 -64
  193. package/dist/components/status/Alert/Alert.js +97 -30
  194. package/dist/components/status/Loader/Loader.js +77 -22
  195. package/dist/components/status/Toast/Toast.js +21 -13
  196. package/dist/components/status/Toast/useToast.js +62 -57
  197. package/dist/components/table/ColumnConfig.js +158 -54
  198. package/dist/components/table/InfiniteTable.js +67 -16
  199. package/dist/components/table/PaginatedTable.js +84 -18
  200. package/dist/components/table/Table.js +23 -23
  201. package/dist/components/text/Link/Link.js +19 -7
  202. package/dist/components/text/Typography/Typography.js +23 -8
  203. package/dist/config/confirmation.context.js +1 -1
  204. package/dist/config/link.context.js +23 -9
  205. package/dist/config/router.context.js +42 -16
  206. package/dist/config/theme.context.js +98 -45
  207. package/dist/config/uiConfig.context.d.ts +7 -5
  208. package/dist/config/uiConfig.context.js +52 -12
  209. package/dist/config/uiStyle.context.js +15 -5
  210. package/dist/helpers/dynamicInputs.d.ts +1 -1
  211. package/dist/hooks/useBreakpoint.js +16 -3
  212. package/dist/hooks/useDebounceCallback.js +51 -17
  213. package/dist/hooks/useFilters.js +125 -64
  214. package/dist/hooks/useForm.js +42 -8
  215. package/dist/hooks/useFormAutosave.js +101 -30
  216. package/dist/hooks/useIntersectionObserver.js +86 -32
  217. package/dist/hooks/useLocalStorage.js +43 -10
  218. package/dist/hooks/useLongPressRepeat.js +55 -20
  219. package/dist/hooks/usePagination.js +49 -19
  220. package/dist/hooks/useQueryAutocomplete.js +1 -0
  221. package/dist/hooks/useScrollableListBox.js +37 -16
  222. package/dist/hooks/useSorting.js +69 -28
  223. package/dist/hooks/useStateAndRef.js +21 -7
  224. package/dist/hooks/useTableColumnConfig.js +124 -31
  225. package/dist/hooks/useTranslationMemo.js +25 -5
  226. package/dist/index.js +2 -2
  227. package/dist/tw-ui-plugin.js +6 -1
  228. package/dist/utils/date-time.utils.d.ts +7 -0
  229. package/dist/utils/date-time.utils.js +34 -23
  230. package/dist/utils/dom.utils.js +1 -1
  231. package/package.json +1 -1
@@ -56,7 +56,7 @@ var SelectMobile = ({ ref, error, showSelectionContent, inputClassName, containe
56
56
  ...formFieldProps,
57
57
  as,
58
58
  labelProps,
59
- className: clsx("w-full", containerClassName),
59
+ className: clsx("group w-full", containerClassName),
60
60
  onMouseEnter,
61
61
  onFocusCapture,
62
62
  children: /* @__PURE__ */ jsxs(DialogTrigger, {
@@ -109,7 +109,8 @@ var SelectMobile = ({ ref, error, showSelectionContent, inputClassName, containe
109
109
  inputClassName,
110
110
  className: "mb-list-height-title-bottom px-list-side-title",
111
111
  leadingIcon: !hideSearchIcon ? /* @__PURE__ */ jsx(SearchIcon, { className: "size-6" }) : void 0,
112
- size: "default"
112
+ size: "default",
113
+ isClearable
113
114
  }), /* @__PURE__ */ jsx(SelectListBox, {
114
115
  ...props,
115
116
  autoFocus: !isSearchable,
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ import { InputVariantProps } from '../../shared/input.cva';
3
+ interface StaticSelectTrailingContentProps extends Pick<InputVariantProps, "size"> {
4
+ trailingContent?: ReactNode;
5
+ hideDropdownIcon?: boolean;
6
+ isDisabled?: boolean;
7
+ }
8
+ export declare const StaticSelectTrailingContent: ({ trailingContent, hideDropdownIcon, isDisabled, size, }: StaticSelectTrailingContentProps) => import("react/jsx-runtime").JSX.Element | null;
9
+ export {};
@@ -0,0 +1,47 @@
1
+ import { ArrowDropDownIcon } from "../../../../assets/icons/ArrowDropDown.js";
2
+ import { UIStyle } from "../../../../config/uiStyle.context.js";
3
+ import { inputSize } from "../../shared/input.cva.js";
4
+ import { c } from "react/compiler-runtime";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { clsx } from "clsx";
7
+ //#region src/components/inputs/Selection/shared/StaticSelectTrailingContent.tsx
8
+ var StaticSelectTrailingContent = (t0) => {
9
+ const $ = c(10);
10
+ const { trailingContent, hideDropdownIcon, isDisabled, size } = t0;
11
+ const inputSizeCva = UIStyle.useCva("input.sizeCva", inputSize);
12
+ if (!trailingContent && hideDropdownIcon) return null;
13
+ let t1;
14
+ if ($[0] !== trailingContent) {
15
+ t1 = trailingContent && /* @__PURE__ */ jsx("div", {
16
+ className: "flex shrink-0 items-center",
17
+ children: trailingContent
18
+ });
19
+ $[0] = trailingContent;
20
+ $[1] = t1;
21
+ } else t1 = $[1];
22
+ let t2;
23
+ if ($[2] !== hideDropdownIcon || $[3] !== inputSizeCva || $[4] !== isDisabled || $[5] !== size) {
24
+ t2 = !hideDropdownIcon ? /* @__PURE__ */ jsx("button", {
25
+ type: "button",
26
+ tabIndex: -1,
27
+ className: clsx("self-stretch border-0! pl-1-5 outline-none", inputSizeCva({ size })),
28
+ "aria-hidden": "true",
29
+ children: /* @__PURE__ */ jsx(ArrowDropDownIcon, { className: clsx("size-6 shrink-0", isDisabled ? "text-interactive-text-secondary-disabled" : "text-interactive-text-secondary-idle") })
30
+ }) : void 0;
31
+ $[2] = hideDropdownIcon;
32
+ $[3] = inputSizeCva;
33
+ $[4] = isDisabled;
34
+ $[5] = size;
35
+ $[6] = t2;
36
+ } else t2 = $[6];
37
+ let t3;
38
+ if ($[7] !== t1 || $[8] !== t2) {
39
+ t3 = /* @__PURE__ */ jsxs(Fragment, { children: [t1, t2] });
40
+ $[7] = t1;
41
+ $[8] = t2;
42
+ $[9] = t3;
43
+ } else t3 = $[9];
44
+ return t3;
45
+ };
46
+ //#endregion
47
+ export { StaticSelectTrailingContent };
@@ -3,4 +3,5 @@ import { Key } from 'react-aria-components';
3
3
  import { SelectItem } from './select.types';
4
4
  export type QueryFn<TData = any> = (...args: any[]) => UseQueryResult<TData> | UseInfiniteQueryResult<TData>;
5
5
  export type QueryDataType<TQueryFn extends QueryFn> = Exclude<ReturnType<TQueryFn>["data"], undefined>;
6
+ export declare const isInitialSelectionLabelMissing: <TInitialSelectItem>(initialSelection: TInitialSelectItem | TInitialSelectItem[] | null | undefined, mapInitialToSelectItem?: (item: TInitialSelectItem) => SelectItem) => boolean;
6
7
  export declare const getQueryItems: <TQueryFn extends QueryFn, TKey extends Key = Key>(data: QueryDataType<TQueryFn> | undefined, queryMap?: (data: QueryDataType<TQueryFn>) => SelectItem<TKey>[]) => SelectItem<TKey>[];
@@ -1,4 +1,15 @@
1
1
  //#region src/components/inputs/Selection/shared/querySelect.utils.ts
2
+ var getDefaultInitialSelectionLabel = (initialSelection) => {
3
+ if (typeof initialSelection !== "object" || initialSelection === null) return "";
4
+ if ("label" in initialSelection && typeof initialSelection.label === "string") return initialSelection.label;
5
+ if ("name" in initialSelection && typeof initialSelection.name === "string") return initialSelection.name;
6
+ return "";
7
+ };
8
+ var isInitialSelectionLabelMissing = (initialSelection, mapInitialToSelectItem) => {
9
+ return (Array.isArray(initialSelection) ? initialSelection : initialSelection != null ? [initialSelection] : []).some((item) => {
10
+ return (mapInitialToSelectItem?.(item).label ?? getDefaultInitialSelectionLabel(item)) === "";
11
+ });
12
+ };
2
13
  var getQueryItems = (data, queryMap) => {
3
14
  if (!data) return [];
4
15
  if (queryMap) return queryMap(data);
@@ -10,4 +21,4 @@ var getQueryItems = (data, queryMap) => {
10
21
  return [];
11
22
  };
12
23
  //#endregion
13
- export { getQueryItems };
24
+ export { getQueryItems, isInitialSelectionLabelMissing };
@@ -24,8 +24,8 @@ export declare namespace SelectContext {
24
24
  selectedIds: Key[];
25
25
  isMultiple: boolean;
26
26
  } & Pick<SelectBaseProps, "onInputChange" | "isLoading" | "hasLoadMore">;
27
- export type ProviderProps = GroupedSelectProps & Pick<SelectBaseProps, "items" | "onInputChange" | "onSearchChange" | "showSelectAllOption" | "showNewItemOption" | "newItemMinLength" | "onNewItemOption" | "isLoading" | "hasLoadMore" | "mapInitialToSelectItem" | "isSearchable" | "isClientSearchDisabled" | "ignoreInputValueFiltering">;
28
- export const Provider: ({ items, onInputChange, onSearchChange, showSelectAllOption, showNewItemOption, newItemMinLength, onNewItemOption, isLoading, hasLoadMore, isClientSearchDisabled, ignoreInputValueFiltering, children, mapInitialToSelectItem, ...props }: PropsWithChildren<ProviderProps>) => import("react/jsx-runtime").JSX.Element;
27
+ export type ProviderProps = GroupedSelectProps & Pick<SelectBaseProps, "items" | "onInputChange" | "onSearchChange" | "showSelectAllOption" | "showNewItemOption" | "newItemMinLength" | "onNewItemOption" | "isLoading" | "hasLoadMore" | "mapInitialToSelectItem" | "isSearchable" | "isClientSearchDisabled" | "ignoreInputValueFiltering" | "fireBlurOnChange" | "onBlur">;
28
+ export const Provider: ({ items, onInputChange, onSearchChange, showSelectAllOption, showNewItemOption, newItemMinLength, onNewItemOption, isLoading, hasLoadMore, isClientSearchDisabled, ignoreInputValueFiltering, fireBlurOnChange, onBlur: fieldOnBlur, children, mapInitialToSelectItem, ...props }: PropsWithChildren<ProviderProps>) => import("react/jsx-runtime").JSX.Element;
29
29
  export const useSelect: () => Type;
30
30
  export {};
31
31
  }
@@ -1,5 +1,5 @@
1
- import { useSelectItems } from "./useSelectItems.js";
2
1
  import { useDebounceCallback } from "../../../../hooks/useDebounceCallback.js";
2
+ import { useSelectItems } from "./useSelectItems.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from "react";
5
5
  //#region src/components/inputs/Selection/shared/select.context.tsx
@@ -10,7 +10,7 @@ var SelectContext;
10
10
  id: item.id,
11
11
  label: item.label ?? item.name ?? ""
12
12
  });
13
- _SelectContext.Provider = ({ items, onInputChange, onSearchChange, showSelectAllOption, showNewItemOption, newItemMinLength, onNewItemOption, isLoading, hasLoadMore, isClientSearchDisabled, ignoreInputValueFiltering, children, mapInitialToSelectItem = defaultMapInitialToSelectItem, ...props }) => {
13
+ _SelectContext.Provider = ({ items, onInputChange, onSearchChange, showSelectAllOption, showNewItemOption, newItemMinLength, onNewItemOption, isLoading, hasLoadMore, isClientSearchDisabled, ignoreInputValueFiltering, fireBlurOnChange, onBlur: fieldOnBlur, children, mapInitialToSelectItem = defaultMapInitialToSelectItem, ...props }) => {
14
14
  const isMultiple = props.selectionMode === "multiple";
15
15
  const initialSelectedItems = useMemo(() => {
16
16
  if (!props.initialSelection) return null;
@@ -46,25 +46,27 @@ var SelectContext;
46
46
  });
47
47
  const selectedItems = useMemo(() => {
48
48
  const getItem = (id) => allItems.find((item) => item.id === id) ?? null;
49
- if (Array.isArray(fieldState.value)) return fieldState.value.map((id) => getItem(id)).filter((item) => item !== null);
49
+ if (Array.isArray(fieldState.value)) return fieldState.value.map((id_0) => getItem(id_0)).filter((item_0) => item_0 !== null);
50
50
  const selectedItem = fieldState.value != null ? getItem(fieldState.value) : null;
51
51
  return selectedItem ? [selectedItem] : [];
52
52
  }, [allItems, fieldState.value]);
53
- const selectedIds = useMemo(() => selectedItems.map(({ id }) => id), [selectedItems]);
54
- const getItem = useCallback((value) => allItems.find((item) => item && item.id === value) ?? null, [allItems]);
55
- const updateValue = useCallback((value) => {
56
- if (Array.isArray(value)) valueRef.current = value.map((id) => getItem(id)).filter((item) => item !== null);
57
- else valueRef.current = getItem(value);
58
- }, [getItem]);
59
- const getValueIds = () => Array.isArray(valueRef.current) ? valueRef.current.map(({ id }) => id) : valueRef.current?.id ?? null;
53
+ const selectedIds = useMemo(() => selectedItems.map(({ id: id_1 }) => id_1), [selectedItems]);
54
+ const getItem_0 = useCallback((value) => allItems.find((item_1) => item_1 && item_1.id === value) ?? null, [allItems]);
55
+ const updateValue = useCallback((value_0) => {
56
+ if (Array.isArray(value_0)) valueRef.current = value_0.map((id_2) => getItem_0(id_2)).filter((item_2) => item_2 !== null);
57
+ else valueRef.current = getItem_0(value_0);
58
+ }, [getItem_0]);
59
+ const getValueIds = () => Array.isArray(valueRef.current) ? valueRef.current.map(({ id: id_3 }) => id_3) : valueRef.current?.id ?? null;
60
60
  const emitStateChanges = useCallback((changes, skipSelectionChange) => {
61
- if (JSON.stringify(changes.value) !== JSON.stringify(getValueIds())) {
61
+ const valueChanged = JSON.stringify(changes.value) !== JSON.stringify(getValueIds());
62
+ if (valueChanged) {
62
63
  updateValue(changes.value);
63
64
  if (!skipSelectionChange) if (isMultiple) props.onChange?.(changes.value);
64
65
  else props.onChange?.(changes.value);
65
66
  }
66
67
  if (changes.inputValue !== fieldState.inputValue) onInputChange?.(changes.inputValue);
67
68
  if (changes.searchValue !== fieldState.searchValue) onSearchChangeDebounced?.(changes.searchValue);
69
+ return valueChanged;
68
70
  }, [
69
71
  fieldState,
70
72
  isMultiple,
@@ -73,10 +75,13 @@ var SelectContext;
73
75
  onSearchChangeDebounced,
74
76
  updateValue
75
77
  ]);
76
- const syncFieldState = (value) => {
78
+ const triggerBlurOnChange = useCallback(() => {
79
+ if (fireBlurOnChange) fieldOnBlur?.({});
80
+ }, [fireBlurOnChange, fieldOnBlur]);
81
+ const syncFieldState = (value_1) => {
77
82
  const newFieldState = {
78
- value,
79
- inputValue: isMultiple || Array.isArray(value) ? fieldState.inputValue : getItem(value)?.label ?? "",
83
+ value: value_1,
84
+ inputValue: isMultiple || Array.isArray(value_1) ? fieldState.inputValue : getItem_0(value_1)?.label ?? "",
80
85
  searchValue: ""
81
86
  };
82
87
  setFieldState(newFieldState);
@@ -84,21 +89,21 @@ var SelectContext;
84
89
  if (!isMultiple) setShowAll(true);
85
90
  };
86
91
  useEffect(() => {
87
- const value = props.value ?? null;
88
- if (JSON.stringify(value) !== JSON.stringify(fieldState.value)) syncFieldState(value);
89
- else updateValue(value);
92
+ const value_2 = props.value ?? null;
93
+ if (JSON.stringify(value_2) !== JSON.stringify(fieldState.value)) syncFieldState(value_2);
94
+ else updateValue(value_2);
90
95
  }, [props.value]);
91
96
  useEffect(() => {
92
- if (!isMultiple && props.value !== null && props.value !== void 0 && fieldState.value !== null && fieldState.value !== void 0 && fieldState.inputValue === "" && getItem(fieldState.value)?.label) syncFieldState(fieldState.value);
97
+ if (!isMultiple && props.value !== null && props.value !== void 0 && fieldState.value !== null && fieldState.value !== void 0 && fieldState.inputValue === "" && getItem_0(fieldState.value)?.label) syncFieldState(fieldState.value);
93
98
  }, [allListItems]);
94
99
  const handleInputChange = useCallback((inputValue) => {
95
- const newFieldState = {
100
+ const newFieldState_0 = {
96
101
  value: isMultiple || inputValue !== "" ? fieldState.value : null,
97
102
  inputValue,
98
103
  searchValue: inputValue
99
104
  };
100
- setFieldState(newFieldState);
101
- emitStateChanges(newFieldState);
105
+ setFieldState(newFieldState_0);
106
+ emitStateChanges(newFieldState_0);
102
107
  setShowAll(false);
103
108
  if (!isOpen && inputValue !== "" && props.isSearchable) setIsOpen(true);
104
109
  }, [
@@ -106,16 +111,16 @@ var SelectContext;
106
111
  fieldState.value,
107
112
  isMultiple
108
113
  ]);
109
- const onChange = useCallback((value) => {
110
- if (value === "new-item-id") onNewItemOption?.(fieldState.inputValue);
114
+ const onChange = useCallback((value_3) => {
115
+ if (value_3 === "new-item-id") onNewItemOption?.(fieldState.inputValue);
111
116
  else {
112
- const newFieldState = {
113
- value,
114
- inputValue: isMultiple || Array.isArray(value) ? "" : getItem(value)?.label ?? "",
117
+ const newFieldState_1 = {
118
+ value: value_3,
119
+ inputValue: isMultiple || Array.isArray(value_3) ? "" : getItem_0(value_3)?.label ?? "",
115
120
  searchValue: ""
116
121
  };
117
- setFieldState(newFieldState);
118
- emitStateChanges(newFieldState);
122
+ setFieldState(newFieldState_1);
123
+ if (emitStateChanges(newFieldState_1)) triggerBlurOnChange();
119
124
  }
120
125
  if (!isMultiple) {
121
126
  setIsOpen(false);
@@ -125,8 +130,9 @@ var SelectContext;
125
130
  emitStateChanges,
126
131
  onNewItemOption,
127
132
  fieldState.inputValue,
128
- getItem,
129
- isMultiple
133
+ getItem_0,
134
+ isMultiple,
135
+ triggerBlurOnChange
130
136
  ]);
131
137
  const onClear = useCallback(() => {
132
138
  if (!valueRef.current || Array.isArray(valueRef.current) && valueRef.current.length === 0) {
@@ -140,10 +146,10 @@ var SelectContext;
140
146
  else onChange(null);
141
147
  }, [isMultiple, onChange]);
142
148
  const onSelectAll = useCallback(() => {
143
- onChange(selectableListItems.map(({ id }) => id));
149
+ onChange(selectableListItems.map(({ id: id_4 }) => id_4));
144
150
  }, [selectableListItems, onChange]);
145
- const onRemove = useCallback((value) => {
146
- if (isMultiple && Array.isArray(fieldState.value)) onChange(fieldState.value.filter((id) => id !== value));
151
+ const onRemove = useCallback((value_4) => {
152
+ if (isMultiple && Array.isArray(fieldState.value)) onChange(fieldState.value.filter((id_5) => id_5 !== value_4));
147
153
  }, [
148
154
  isMultiple,
149
155
  fieldState.value,
@@ -151,21 +157,23 @@ var SelectContext;
151
157
  ]);
152
158
  const onBlur = useCallback(() => {
153
159
  if (props.isSearchable && isMultiple && fieldState.searchValue !== "") {
154
- const newFieldState = {
160
+ const newFieldState_2 = {
155
161
  ...fieldState,
156
162
  inputValue: "",
157
163
  searchValue: ""
158
164
  };
159
- setFieldState(newFieldState);
160
- emitStateChanges(newFieldState);
165
+ setFieldState(newFieldState_2);
166
+ emitStateChanges(newFieldState_2);
161
167
  setShowAll(true);
162
168
  }
169
+ fieldOnBlur?.({});
163
170
  }, [
164
171
  props.isSearchable,
165
172
  isMultiple,
166
- fieldState
173
+ fieldState,
174
+ fieldOnBlur
167
175
  ]);
168
- const value = useMemo(() => ({
176
+ const value_5 = useMemo(() => ({
169
177
  fieldState,
170
178
  isOpen,
171
179
  setIsOpen,
@@ -203,7 +211,7 @@ var SelectContext;
203
211
  hasLoadMore
204
212
  ]);
205
213
  return /* @__PURE__ */ jsx(Context.Provider, {
206
- value,
214
+ value: value_5,
207
215
  children
208
216
  });
209
217
  };
@@ -0,0 +1,5 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ export declare const selectInputTagsContentWrapperCva: (props?: ({
3
+ isSearchable?: boolean | null | undefined;
4
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
5
+ export type SelectInputTagsContentWrapperCva = VariantProps<typeof selectInputTagsContentWrapperCva>;
@@ -0,0 +1,5 @@
1
+ import { cva } from "class-variance-authority";
2
+ //#region src/components/inputs/Selection/shared/selectInput.cva.ts
3
+ var selectInputTagsContentWrapperCva = cva("flex flex-1 flex-wrap gap-input-gap-input-text-to-elements truncate", { variants: { isSearchable: { false: "pointer-events-none z-1" } } });
4
+ //#endregion
5
+ export { selectInputTagsContentWrapperCva };
@@ -1,4 +1,4 @@
1
- import { useMemo } from "react";
1
+ import { c } from "react/compiler-runtime";
2
2
  import { useFilter } from "react-aria-components";
3
3
  //#region src/components/inputs/Selection/shared/useSelectItems.tsx
4
4
  var SelectAllItemId = "all-item-id";
@@ -24,61 +24,121 @@ var ReservedItemIds = [
24
24
  NewItemId,
25
25
  LoadingItemId
26
26
  ];
27
- function useSelectItems({ initialSelectedItems, selectedItems, cachedItems, inputValue, showAll, isMultiple, showSelectAllOption, showNewItemOption, newItemMinLength = 3, isLoading, hasLoadMore, isClientSearchDisabled }) {
28
- const { contains } = useFilter({ sensitivity: "base" });
29
- const allListItems = useMemo(() => {
30
- const showSelectAllItem = isMultiple && showSelectAllOption && inputValue.length === 0 && !hasLoadMore;
31
- const showNewItem = showNewItemOption && inputValue.length >= newItemMinLength && !cachedItems.find((item) => contains(item.label, inputValue));
32
- const showLoadingItem = isLoading || hasLoadMore;
33
- return [
34
- ...showSelectAllItem ? [SelectAllItem(inputValue)] : [],
27
+ function useSelectItems(t0) {
28
+ const $ = c(37);
29
+ const { initialSelectedItems, selectedItems, cachedItems, inputValue, showAll, isMultiple, showSelectAllOption, showNewItemOption, newItemMinLength: t1, isLoading, hasLoadMore, isClientSearchDisabled } = t0;
30
+ const newItemMinLength = t1 === void 0 ? 3 : t1;
31
+ let t2;
32
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
33
+ t2 = { sensitivity: "base" };
34
+ $[0] = t2;
35
+ } else t2 = $[0];
36
+ const { contains } = useFilter(t2);
37
+ const showSelectAllItem = isMultiple && showSelectAllOption && inputValue.length === 0 && !hasLoadMore;
38
+ let t3;
39
+ if ($[1] !== cachedItems || $[2] !== contains || $[3] !== inputValue || $[4] !== newItemMinLength || $[5] !== showNewItemOption) {
40
+ t3 = showNewItemOption && inputValue.length >= newItemMinLength && !cachedItems.find((item) => contains(item.label, inputValue));
41
+ $[1] = cachedItems;
42
+ $[2] = contains;
43
+ $[3] = inputValue;
44
+ $[4] = newItemMinLength;
45
+ $[5] = showNewItemOption;
46
+ $[6] = t3;
47
+ } else t3 = $[6];
48
+ const showNewItem = t3;
49
+ const showLoadingItem = isLoading || hasLoadMore;
50
+ let t4;
51
+ if ($[7] !== inputValue || $[8] !== showSelectAllItem) {
52
+ t4 = showSelectAllItem ? [SelectAllItem(inputValue)] : [];
53
+ $[7] = inputValue;
54
+ $[8] = showSelectAllItem;
55
+ $[9] = t4;
56
+ } else t4 = $[9];
57
+ let t5;
58
+ if ($[10] !== inputValue || $[11] !== showNewItem) {
59
+ t5 = showNewItem ? [NewItem(inputValue)] : [];
60
+ $[10] = inputValue;
61
+ $[11] = showNewItem;
62
+ $[12] = t5;
63
+ } else t5 = $[12];
64
+ let t6;
65
+ if ($[13] !== inputValue || $[14] !== showLoadingItem) {
66
+ t6 = showLoadingItem ? [LoadingItem(inputValue)] : [];
67
+ $[13] = inputValue;
68
+ $[14] = showLoadingItem;
69
+ $[15] = t6;
70
+ } else t6 = $[15];
71
+ let t7;
72
+ if ($[16] !== cachedItems || $[17] !== t4 || $[18] !== t5 || $[19] !== t6) {
73
+ t7 = [
74
+ ...t4,
35
75
  ...cachedItems,
36
- ...showNewItem ? [NewItem(inputValue)] : [],
37
- ...showLoadingItem ? [LoadingItem(inputValue)] : []
76
+ ...t5,
77
+ ...t6
38
78
  ];
39
- }, [
40
- isMultiple,
41
- showNewItemOption,
42
- inputValue,
43
- newItemMinLength,
44
- cachedItems,
45
- contains,
46
- isLoading,
47
- hasLoadMore,
48
- showSelectAllOption
49
- ]);
50
- const allItems = useMemo(() => {
79
+ $[16] = cachedItems;
80
+ $[17] = t4;
81
+ $[18] = t5;
82
+ $[19] = t6;
83
+ $[20] = t7;
84
+ } else t7 = $[20];
85
+ const allListItems = t7;
86
+ let t8;
87
+ if ($[21] !== allListItems || $[22] !== initialSelectedItems || $[23] !== selectedItems) {
51
88
  const items = [
52
89
  ...Array.isArray(initialSelectedItems) ? initialSelectedItems : [initialSelectedItems],
53
90
  ...Array.isArray(selectedItems) ? selectedItems : [selectedItems],
54
91
  ...allListItems
55
- ].filter((item) => !!item);
92
+ ].filter(_temp);
56
93
  const allItemsMap = /* @__PURE__ */ new Map();
57
- items.forEach((item) => allItemsMap.set(item.id, item));
58
- return Array.from(allItemsMap.values());
59
- }, [
60
- allListItems,
61
- initialSelectedItems,
62
- selectedItems
63
- ]);
64
- const filteredListItems = useMemo(() => allListItems.filter((item) => contains(item.label, inputValue)), [
65
- allListItems,
66
- contains,
67
- inputValue
68
- ]);
69
- const listItems = useMemo(() => showAll || isClientSearchDisabled ? allListItems : filteredListItems, [
70
- showAll,
71
- isClientSearchDisabled,
72
- allListItems,
73
- filteredListItems
74
- ]);
75
- return {
76
- allItems,
77
- allListItems,
78
- filteredListItems,
79
- listItems,
80
- selectableListItems: useMemo(() => listItems.filter((item) => !item.isDisabled && !ReservedItemIds.includes(String(item.id))), [listItems])
81
- };
94
+ items.forEach((item_1) => allItemsMap.set(item_1.id, item_1));
95
+ t8 = Array.from(allItemsMap.values());
96
+ $[21] = allListItems;
97
+ $[22] = initialSelectedItems;
98
+ $[23] = selectedItems;
99
+ $[24] = t8;
100
+ } else t8 = $[24];
101
+ const allItems = t8;
102
+ let t9;
103
+ if ($[25] !== allListItems || $[26] !== contains || $[27] !== inputValue) {
104
+ t9 = allListItems.filter((item_2) => contains(item_2.label, inputValue));
105
+ $[25] = allListItems;
106
+ $[26] = contains;
107
+ $[27] = inputValue;
108
+ $[28] = t9;
109
+ } else t9 = $[28];
110
+ const filteredListItems = t9;
111
+ const listItems = showAll || isClientSearchDisabled ? allListItems : filteredListItems;
112
+ let t10;
113
+ if ($[29] !== listItems) {
114
+ t10 = listItems.filter(_temp2);
115
+ $[29] = listItems;
116
+ $[30] = t10;
117
+ } else t10 = $[30];
118
+ const selectableListItems = t10;
119
+ let t11;
120
+ if ($[31] !== allItems || $[32] !== allListItems || $[33] !== filteredListItems || $[34] !== listItems || $[35] !== selectableListItems) {
121
+ t11 = {
122
+ allItems,
123
+ allListItems,
124
+ filteredListItems,
125
+ listItems,
126
+ selectableListItems
127
+ };
128
+ $[31] = allItems;
129
+ $[32] = allListItems;
130
+ $[33] = filteredListItems;
131
+ $[34] = listItems;
132
+ $[35] = selectableListItems;
133
+ $[36] = t11;
134
+ } else t11 = $[36];
135
+ return t11;
136
+ }
137
+ function _temp2(item_3) {
138
+ return !item_3.isDisabled && !ReservedItemIds.includes(String(item_3.id));
139
+ }
140
+ function _temp(item_0) {
141
+ return !!item_0;
82
142
  }
83
143
  //#endregion
84
144
  export { NewItemId, SelectAllItemId, useSelectItems };
@@ -69,7 +69,10 @@ export interface InputFrameProps extends InputVariantProps, Partial<FormFieldPro
69
69
  inputClassName?: string;
70
70
  contentClassName?: string;
71
71
  contentWrapperClassName?: string;
72
+ contentAndTrailingClassName?: string;
72
73
  wrapContentAndTrailing?: boolean;
74
+ wrapTrailingContent?: boolean;
75
+ reserveTrailingContent?: boolean;
73
76
  labelPlacement?: InputFrameLabelPlacement;
74
77
  trailingClassName?: string;
75
78
  }