@povio/ui 2.2.9-rc.2 → 2.2.9-rc.20

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 (92) hide show
  1. package/dist/components/buttons/InlineIconButton/InlineIconButton.d.ts +1 -1
  2. package/dist/components/buttons/InlineIconButton/InlineIconButton.js +2 -2
  3. package/dist/components/inputs/Checkbox/Checkbox.js +6 -1
  4. package/dist/components/inputs/Checkbox/checkbox.cva.d.ts +3 -0
  5. package/dist/components/inputs/Checkbox/checkbox.cva.js +2 -1
  6. package/dist/components/inputs/DateTime/DatePicker/DatePicker.d.ts +9 -4
  7. package/dist/components/inputs/DateTime/DatePicker/DatePicker.js +96 -9
  8. package/dist/components/inputs/DateTime/DateRangePicker/DateRangePicker.d.ts +9 -4
  9. package/dist/components/inputs/DateTime/DateRangePicker/DateRangePicker.js +114 -7
  10. package/dist/components/inputs/DateTime/DateTimePicker/DateTimePicker.d.ts +10 -4
  11. package/dist/components/inputs/DateTime/DateTimePicker/DateTimePicker.js +91 -7
  12. package/dist/components/inputs/DateTime/TimePicker/TimePicker.d.ts +5 -3
  13. package/dist/components/inputs/DateTime/TimePicker/TimePicker.js +80 -6
  14. package/dist/components/inputs/DateTime/shared/Calendar.d.ts +5 -2
  15. package/dist/components/inputs/DateTime/shared/Calendar.js +23 -6
  16. package/dist/components/inputs/DateTime/shared/CalendarCell.d.ts +1 -1
  17. package/dist/components/inputs/DateTime/shared/CalendarCell.js +3 -3
  18. package/dist/components/inputs/DateTime/shared/CalendarGrid.d.ts +1 -1
  19. package/dist/components/inputs/DateTime/shared/DatePickerInput.d.ts +5 -2
  20. package/dist/components/inputs/DateTime/shared/DatePickerInput.js +21 -12
  21. package/dist/components/inputs/DateTime/shared/TimePickerInput.js +7 -3
  22. package/dist/components/inputs/DateTime/shared/datePicker.types.d.ts +3 -0
  23. package/dist/components/inputs/DateTime/shared/datePickerInput.cva.d.ts +7 -0
  24. package/dist/components/inputs/DateTime/shared/datePickerInput.cva.js +13 -0
  25. package/dist/components/inputs/DateTime/shared/datePickerTodayIcon.d.ts +6 -0
  26. package/dist/components/inputs/DateTime/shared/datePickerTodayIcon.js +20 -0
  27. package/dist/components/inputs/FormField/FormField.d.ts +3 -3
  28. package/dist/components/inputs/FormField/FormFieldHeader.js +3 -1
  29. package/dist/components/inputs/FormField/formFieldHeader.cva.d.ts +6 -0
  30. package/dist/components/inputs/FormField/formFieldHeader.cva.js +11 -0
  31. package/dist/components/inputs/Input/NumberInput/NumberInput.d.ts +5 -2
  32. package/dist/components/inputs/Input/NumberInput/NumberInput.js +92 -8
  33. package/dist/components/inputs/Input/TextInput/TextInput.d.ts +3 -1
  34. package/dist/components/inputs/Input/TextInput/TextInput.js +95 -8
  35. package/dist/components/inputs/Inputs/InputItem.d.ts +14 -18
  36. package/dist/components/inputs/RadioGroup/RadioGroup.js +17 -9
  37. package/dist/components/inputs/RadioGroup/radio.cva.d.ts +3 -0
  38. package/dist/components/inputs/RadioGroup/radio.cva.js +2 -1
  39. package/dist/components/inputs/Selection/Autocomplete/Autocomplete.d.ts +6 -2
  40. package/dist/components/inputs/Selection/Autocomplete/Autocomplete.js +86 -6
  41. package/dist/components/inputs/Selection/Autocomplete/QueryAutocomplete.d.ts +1 -1
  42. package/dist/components/inputs/Selection/Autocomplete/QueryAutocomplete.js +15 -10
  43. package/dist/components/inputs/Selection/Autocomplete/queryAutocomplete.types.d.ts +25 -19
  44. package/dist/components/inputs/Selection/Select/QuerySelect.d.ts +1 -2
  45. package/dist/components/inputs/Selection/Select/QuerySelect.js +5 -3
  46. package/dist/components/inputs/Selection/Select/Select.d.ts +7 -3
  47. package/dist/components/inputs/Selection/Select/Select.js +84 -4
  48. package/dist/components/inputs/Selection/shared/SelectBase.d.ts +4 -1
  49. package/dist/components/inputs/Selection/shared/SelectBase.js +3 -2
  50. package/dist/components/inputs/Selection/shared/SelectDesktop.d.ts +1 -1
  51. package/dist/components/inputs/Selection/shared/SelectDesktop.js +8 -4
  52. package/dist/components/inputs/Selection/shared/SelectInput.d.ts +2 -2
  53. package/dist/components/inputs/Selection/shared/SelectInput.js +12 -2
  54. package/dist/components/inputs/Selection/shared/SelectListBox.d.ts +2 -2
  55. package/dist/components/inputs/Selection/shared/SelectListBox.js +3 -3
  56. package/dist/components/inputs/Selection/shared/SelectMobile.d.ts +1 -1
  57. package/dist/components/inputs/Selection/shared/SelectMobile.js +5 -3
  58. package/dist/components/inputs/Selection/shared/select.context.d.ts +3 -2
  59. package/dist/components/inputs/Selection/shared/select.context.js +22 -4
  60. package/dist/components/inputs/Selection/shared/select.types.d.ts +3 -2
  61. package/dist/components/inputs/Selection/shared/selectDesktop.cva.d.ts +3 -0
  62. package/dist/components/inputs/Selection/shared/selectDesktop.cva.js +5 -0
  63. package/dist/components/inputs/Selection/shared/staticSelect.utils.d.ts +23 -0
  64. package/dist/components/inputs/Selection/shared/staticSelect.utils.js +35 -0
  65. package/dist/components/inputs/Toggle/Toggle.js +6 -1
  66. package/dist/components/inputs/Toggle/toggle.cva.d.ts +3 -0
  67. package/dist/components/inputs/Toggle/toggle.cva.js +2 -1
  68. package/dist/components/inputs/shared/CheckContent.d.ts +2 -1
  69. package/dist/components/inputs/shared/CheckContent.js +3 -4
  70. package/dist/components/inputs/shared/StaticInput.d.ts +34 -0
  71. package/dist/components/inputs/shared/StaticInput.js +88 -0
  72. package/dist/components/inputs/shared/TooltipWrapper.js +5 -1
  73. package/dist/components/inputs/shared/input.cva.d.ts +5 -0
  74. package/dist/components/inputs/shared/input.cva.js +10 -1
  75. package/dist/components/inputs/shared/tooltipWrapper.cva.d.ts +4 -0
  76. package/dist/components/inputs/shared/tooltipWrapper.cva.js +5 -0
  77. package/dist/config/uiConfig.context.d.ts +8 -2
  78. package/dist/config/uiConfig.context.js +11 -1
  79. package/dist/config/uiStyle.context.d.ts +19 -3
  80. package/dist/helpers/dynamicInputs.d.ts +5 -5
  81. package/dist/helpers/dynamicInputs.js +3 -0
  82. package/dist/hooks/useIntersectionObserver.d.ts +1 -1
  83. package/dist/hooks/useIntersectionObserver.js +29 -10
  84. package/dist/hooks/useQueryAutocomplete.d.ts +5 -16
  85. package/dist/hooks/useQueryAutocomplete.js +13 -3
  86. package/dist/index.d.ts +5 -0
  87. package/dist/index.js +3 -2
  88. package/dist/utils/date-time.utils.d.ts +10 -0
  89. package/dist/utils/date-time.utils.js +87 -1
  90. package/dist/utils/query.utils.d.ts +4 -0
  91. package/dist/utils/query.utils.js +8 -0
  92. package/package.json +1 -1
@@ -21,14 +21,14 @@ export type AllowedComponentType<TZodType extends z.ZodType> = ZodUtils.ZodTypeS
21
21
  datetime: "datePicker" | "dateTimePicker" | "timePicker";
22
22
  dateRange: "dateRangePicker";
23
23
  boolean: "toggle" | "checkbox";
24
- number: "numberInput" | "slider" | "select" | "autocomplete" | "queryAutocomplete" | "segment";
25
- enum: "select" | "autocomplete" | "segment";
26
- string: "textInput" | "passwordInput" | "textArea" | "select" | "autocomplete" | "queryAutocomplete" | "segment";
24
+ number: "numberInput" | "slider" | "select" | "querySelect" | "autocomplete" | "queryAutocomplete" | "segment";
25
+ enum: "select" | "querySelect" | "autocomplete" | "segment";
26
+ string: "textInput" | "passwordInput" | "textArea" | "textEditor" | "select" | "querySelect" | "autocomplete" | "queryAutocomplete" | "segment";
27
27
  email: "textInput";
28
- array: "select" | "autocomplete" | "queryAutocomplete" | "segment";
28
+ array: "select" | "querySelect" | "autocomplete" | "queryAutocomplete" | "segment";
29
29
  object: InputComponentType;
30
30
  unknown: InputComponentType;
31
- uuid: "select" | "autocomplete" | "queryAutocomplete" | "segment";
31
+ uuid: "select" | "querySelect" | "autocomplete" | "queryAutocomplete" | "segment";
32
32
  }>;
33
33
  interface DynamicInputDefBase<TProps> {
34
34
  label?: string;
@@ -81,6 +81,7 @@ var getDefaultProps = (componentType, keyType) => {
81
81
  ].includes(componentType)) props.items = getDefaultSelectionItems(unwrappedType);
82
82
  if ([
83
83
  "select",
84
+ "querySelect",
84
85
  "autocomplete",
85
86
  "queryAutocomplete",
86
87
  "segment"
@@ -146,6 +147,8 @@ var populateInputDef = (schema, schemaKey, value, options) => {
146
147
  const inputWrapper = value.inputWrapper ?? options.globalInputWrapper;
147
148
  if ("render" in value) return {
148
149
  name,
150
+ label,
151
+ placeholder,
149
152
  render: value.render
150
153
  };
151
154
  const schemaKeyType = schema.shape[schemaKey];
@@ -3,6 +3,6 @@ type UseIntersectionObserverProps = {
3
3
  onIntersectionChange?: (entry: IntersectionObserverEntry) => void;
4
4
  } & IntersectionObserverInit;
5
5
  export declare const useIntersectionObserver: <T extends HTMLElement>({ onIntersection, onIntersectionChange, root, rootMargin, threshold, }: UseIntersectionObserverProps) => {
6
- ref: import('react').RefObject<T | null>;
6
+ ref: (element: T | null) => void;
7
7
  };
8
8
  export {};
@@ -1,25 +1,44 @@
1
- import { useEffect, useRef } from "react";
1
+ import { useCallback, useEffect, useMemo, useRef } from "react";
2
2
  //#region src/hooks/useIntersectionObserver.ts
3
3
  var useIntersectionObserver = ({ onIntersection, onIntersectionChange, root, rootMargin, threshold }) => {
4
- const ref = useRef(null);
4
+ const elementRef = useRef(null);
5
+ const observerRef = useRef(null);
6
+ const onIntersectionRef = useRef(onIntersection);
7
+ const onIntersectionChangeRef = useRef(onIntersectionChange);
8
+ useEffect(() => {
9
+ onIntersectionRef.current = onIntersection;
10
+ }, [onIntersection]);
11
+ useEffect(() => {
12
+ onIntersectionChangeRef.current = onIntersectionChange;
13
+ }, [onIntersectionChange]);
5
14
  useEffect(() => {
6
15
  const observer = new IntersectionObserver((entries) => {
7
- if (entries.some((entry) => entry.isIntersecting)) onIntersection?.();
8
- onIntersectionChange?.(entries[0]);
16
+ if (entries.some((entry) => entry.isIntersecting)) onIntersectionRef.current?.();
17
+ onIntersectionChangeRef.current?.(entries[0]);
9
18
  }, {
10
19
  root,
11
20
  rootMargin,
12
21
  threshold
13
22
  });
14
- if (ref.current) observer.observe(ref.current);
15
- return () => observer.disconnect();
23
+ observerRef.current = observer;
24
+ if (elementRef.current) observer.observe(elementRef.current);
25
+ return () => {
26
+ if (elementRef.current) observer.unobserve(elementRef.current);
27
+ observer.disconnect();
28
+ observerRef.current = null;
29
+ };
16
30
  }, [
17
- ref,
18
31
  root,
19
- onIntersection,
20
- onIntersectionChange
32
+ rootMargin,
33
+ threshold
21
34
  ]);
22
- return { ref };
35
+ const ref = useCallback((element) => {
36
+ if (elementRef.current === element) return;
37
+ if (observerRef.current && elementRef.current) observerRef.current.unobserve(elementRef.current);
38
+ elementRef.current = element;
39
+ if (observerRef.current && elementRef.current) observerRef.current.observe(elementRef.current);
40
+ }, []);
41
+ return useMemo(() => ({ ref }), [ref]);
23
42
  };
24
43
  //#endregion
25
44
  export { useIntersectionObserver };
@@ -1,25 +1,14 @@
1
- import { UseInfiniteQueryResult, UseQueryResult } from '@tanstack/react-query';
1
+ import { InfiniteData } from '@tanstack/react-query';
2
2
  import { Key } from 'react-aria-components';
3
- import { SelectItem } from '../components/inputs/Selection/shared/select.types';
4
- type QueryResult<TData = any> = UseQueryResult<TData> | UseInfiniteQueryResult<TData>;
5
- type QueryFn<TData = any> = (...args: any[]) => QueryResult<TData>;
6
- type QueryDataType<TQueryFn extends QueryFn> = Exclude<ReturnType<TQueryFn>["data"], undefined>;
7
- interface UseQueryAutocompleteOptions<TQueryFn extends QueryFn, TKey extends Key = Key> {
8
- query: TQueryFn;
9
- queryParams?: Parameters<TQueryFn>[0];
10
- queryOptions?: Parameters<TQueryFn>[1];
11
- mapItems: (data: QueryDataType<TQueryFn>) => SelectItem<TKey>[];
12
- initialQueryState?: boolean;
13
- search?: string;
14
- }
3
+ import { InfiniteQueryPage, QueryFn, UseQueryAutocompleteOptions } from '../components/inputs/Selection/Autocomplete/queryAutocomplete.types';
15
4
  export declare const useQueryAutocomplete: <TQueryFn extends QueryFn, TKey extends Key = Key>({ query, queryParams, queryOptions, mapItems, initialQueryState, search, }: UseQueryAutocompleteOptions<TQueryFn, TKey>) => {
16
5
  data: any;
17
6
  isLoading: boolean;
18
7
  isQueryEnabled: boolean;
19
8
  handleEnableQuery: () => void;
20
- items: SelectItem<TKey>[];
9
+ items: import('..').SelectItem<TKey>[];
10
+ totalItems: number | undefined;
21
11
  hasNextPage: boolean;
22
- fetchNextPage: (() => Promise<unknown>) | ((options?: import('@tanstack/react-query').FetchNextPageOptions) => Promise<import('@tanstack/react-query').InfiniteQueryObserverResult<any, Error>>) | undefined;
12
+ fetchNextPage: ((options?: import('@tanstack/react-query').FetchNextPageOptions) => Promise<import('@tanstack/react-query').InfiniteQueryObserverResult<InfiniteData<InfiniteQueryPage<TKey>, unknown>, Error>>) | undefined;
23
13
  isFetchingNextPage: boolean;
24
14
  };
25
- export {};
@@ -1,10 +1,19 @@
1
+ import { ApiQueryUtils } from "../utils/query.utils.js";
1
2
  import { useMemo, useState } from "react";
2
3
  //#region src/hooks/useQueryAutocomplete.ts
4
+ var isFilterSearchParams = (params) => {
5
+ return typeof params === "object" && params !== null && "filter" in params;
6
+ };
3
7
  var useQueryAutocomplete = ({ query, queryParams, queryOptions, mapItems, initialQueryState, search }) => {
4
8
  const [isQueryEnabled, setIsQueryEnabled] = useState(!initialQueryState);
5
9
  const queryResult = query(search === void 0 ? queryParams : {
10
+ ...queryParams,
11
+ limit: queryParams?.limit ?? ApiQueryUtils.DEFAULT_LIMIT,
6
12
  search,
7
- ...queryParams
13
+ ...isFilterSearchParams(queryParams) ? { filter: {
14
+ ...queryParams.filter,
15
+ search
16
+ } } : {}
8
17
  }, {
9
18
  ...queryOptions,
10
19
  enabled: isQueryEnabled && (queryOptions?.enabled ?? true)
@@ -14,14 +23,14 @@ var useQueryAutocomplete = ({ query, queryParams, queryOptions, mapItems, initia
14
23
  const isInfiniteQueryResult = (result) => {
15
24
  return "hasNextPage" in result && "fetchNextPage" in result;
16
25
  };
17
- const isInfiniteQuery = isInfiniteQueryResult(queryResult);
18
26
  const handleEnableQuery = () => {
19
27
  setIsQueryEnabled(true);
20
28
  };
21
- const infiniteQueryResult = isInfiniteQuery ? queryResult : void 0;
29
+ const infiniteQueryResult = isInfiniteQueryResult(queryResult) ? queryResult : void 0;
22
30
  const hasNextPage = infiniteQueryResult?.hasNextPage ?? false;
23
31
  const fetchNextPage = infiniteQueryResult?.fetchNextPage;
24
32
  const isFetchingNextPage = infiniteQueryResult?.isFetchingNextPage ?? false;
33
+ const totalItems = infiniteQueryResult?.data?.pages?.[0]?.totalItems;
25
34
  const items = useMemo(() => {
26
35
  if (!data) return [];
27
36
  return mapItems(data);
@@ -32,6 +41,7 @@ var useQueryAutocomplete = ({ query, queryParams, queryOptions, mapItems, initia
32
41
  isQueryEnabled,
33
42
  handleEnableQuery,
34
43
  items,
44
+ totalItems,
35
45
  hasNextPage,
36
46
  fetchNextPage,
37
47
  isFetchingNextPage
package/dist/index.d.ts CHANGED
@@ -94,11 +94,16 @@ export type { RadioVariantProps } from './components/inputs/RadioGroup/radio.cva
94
94
  export type { AutocompleteProps, ControlledAutocompleteProps, } from './components/inputs/Selection/Autocomplete/Autocomplete';
95
95
  export { Autocomplete } from './components/inputs/Selection/Autocomplete/Autocomplete';
96
96
  export { QueryAutocomplete } from './components/inputs/Selection/Autocomplete/QueryAutocomplete';
97
+ export type { SelectBaseProps } from './components/inputs/Selection/shared/SelectBase';
98
+ export type { DefaultInitialSelectItem, SelectAsyncProps, SelectItem, } from './components/inputs/Selection/shared/select.types';
99
+ export type { QuerySelectProps } from './components/inputs/Selection/Select/QuerySelect';
100
+ export { QuerySelect } from './components/inputs/Selection/Select/QuerySelect';
97
101
  export type { ControlledSelectProps, SelectProps } from './components/inputs/Selection/Select/Select';
98
102
  export { Select } from './components/inputs/Selection/Select/Select';
99
103
  export type { ControlledSliderProps, SliderProps } from './components/inputs/Slider/Slider';
100
104
  export { Slider } from './components/inputs/Slider/Slider';
101
105
  export type { InputVariantProps } from './components/inputs/shared/input.cva';
106
+ export type { TooltipWrapperTriggerVariantProps } from './components/inputs/shared/tooltipWrapper.cva';
102
107
  export type { ControlledToggleProps, ToggleProps } from './components/inputs/Toggle/Toggle';
103
108
  export { Toggle } from './components/inputs/Toggle/Toggle';
104
109
  export type { MenuProps } from './components/Menu/Menu';
package/dist/index.js CHANGED
@@ -68,10 +68,10 @@ import { Checkbox } from "./components/inputs/Checkbox/Checkbox.js";
68
68
  import { useLongPressRepeat } from "./hooks/useLongPressRepeat.js";
69
69
  import { useScrollableListBox } from "./hooks/useScrollableListBox.js";
70
70
  import { FormField } from "./components/inputs/FormField/FormField.js";
71
+ import { useDebounceCallback } from "./hooks/useDebounceCallback.js";
71
72
  import { DateTimeUtils } from "./utils/date-time.utils.js";
72
73
  import { DatePicker } from "./components/inputs/DateTime/DatePicker/DatePicker.js";
73
74
  import { Tag } from "./components/text/Tag/Tag.js";
74
- import { useDebounceCallback } from "./hooks/useDebounceCallback.js";
75
75
  import { useIntersectionObserver } from "./hooks/useIntersectionObserver.js";
76
76
  import { TextInput } from "./components/inputs/Input/TextInput/TextInput.js";
77
77
  import { Select } from "./components/inputs/Selection/Select/Select.js";
@@ -92,6 +92,7 @@ import { QueryAutocomplete } from "./components/inputs/Selection/Autocomplete/Qu
92
92
  import { Slider } from "./components/inputs/Slider/Slider.js";
93
93
  import { Toggle } from "./components/inputs/Toggle/Toggle.js";
94
94
  import { Segment } from "./components/segment/Segment.js";
95
+ import { QuerySelect } from "./components/inputs/Selection/Select/QuerySelect.js";
95
96
  import { ResponsivePopover } from "./components/overlays/ResponsivePopover/ResponsivePopover.js";
96
97
  import { StringUtils } from "./utils/string.utils.js";
97
98
  import { dynamicInputs } from "./helpers/dynamicInputs.js";
@@ -135,4 +136,4 @@ import { useTableColumnConfig } from "./hooks/useTableColumnConfig.js";
135
136
  import { ArrayUtils } from "./utils/array.utils.js";
136
137
  import { QueriesUtils } from "./utils/queries.utils.js";
137
138
  import { RoutingUtils } from "./utils/routing.utils.js";
138
- export { Accordion, ActionModal, Alert, AlignCenterIcon, AlignLeftIcon, AlignLeftRightIcon, AlignRightIcon, ArrayUtils, ArrowDropDownIcon, ArrowDropUpIcon, ArrowLeftIcon, ArrowRightIcon, Autocomplete, BoldIcon, BottomSheet, Breadcrumbs, BulletedListIcon, Button, CalendarIcon, CellText, CheckIcon, Checkbox, CheckboxCheckmarkIcon, CheckboxIndeterminateIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, ClockIcon, CloseIcon, ColumnConfigModal, Confirmation, DatePicker, DateRangePicker, DateTimeIcon, DateTimePicker, DateTimeUtils, DateUtils, DomUtils, Drawer, FileUpload, FileUploadContainer, FileUtils, Form, FormField, HeaderText, HighlightIcon, HighlightOnIcon, HomeIcon, IconButton, InfiniteTable, InfoIcon, InlineIconButton, InputUpload, Inputs, ItalicIcon, Link, LinkContext, LinkIcon, Loader, Menu, MenuIcon, MenuItem, MenuPopover, Modal, NumberInput, NumberedListIcon, ObjectUtils, PaginatedTable, Pagination, PaginationList, PasswordInput, PillButton, PointerHorizontalIcon, PointerVerticalIcon, ProgressBar, QueriesUtils, QueryAutocomplete, RadioGroup, ResponsivePopover, RestUtils, RoutingUtils, Segment, Select, SendIcon, Slider, SplitButton, Stepper, StrikethroughIcon, StringUtils, Table, Tag, TextArea, TextButton, TextColorIcon, TextInput, ThemeContext, TimePicker, Toast, ToastContainer, Toggle, ToggleButton, Tooltip, TooltipEllipsis, Typography, UIConfig, UIRouter, UIStyle, UnderlinedIcon, VisibilityIcon, VisibilityOffIcon, compoundMapper, dynamicColumns, dynamicInputs, isEqual, logger, ns, resources, uiOutlineClass, useAutosave, useBreakpoint, useDebounceCallback, useDeepCompareEffect, useDeepCompareLayoutEffect, useDeepCompareMemo, useFilters, useForm, useFormAutosave, useIntersectionObserver, useLocalStorage, useLongPressRepeat, usePagination, useScrollableListBox, useSorting, useStateAndRef, useTableColumnConfig, useTableNav, useToast, useTranslationMemo };
139
+ export { Accordion, ActionModal, Alert, AlignCenterIcon, AlignLeftIcon, AlignLeftRightIcon, AlignRightIcon, ArrayUtils, ArrowDropDownIcon, ArrowDropUpIcon, ArrowLeftIcon, ArrowRightIcon, Autocomplete, BoldIcon, BottomSheet, Breadcrumbs, BulletedListIcon, Button, CalendarIcon, CellText, CheckIcon, Checkbox, CheckboxCheckmarkIcon, CheckboxIndeterminateIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, ClockIcon, CloseIcon, ColumnConfigModal, Confirmation, DatePicker, DateRangePicker, DateTimeIcon, DateTimePicker, DateTimeUtils, DateUtils, DomUtils, Drawer, FileUpload, FileUploadContainer, FileUtils, Form, FormField, HeaderText, HighlightIcon, HighlightOnIcon, HomeIcon, IconButton, InfiniteTable, InfoIcon, InlineIconButton, InputUpload, Inputs, ItalicIcon, Link, LinkContext, LinkIcon, Loader, Menu, MenuIcon, MenuItem, MenuPopover, Modal, NumberInput, NumberedListIcon, ObjectUtils, PaginatedTable, Pagination, PaginationList, PasswordInput, PillButton, PointerHorizontalIcon, PointerVerticalIcon, ProgressBar, QueriesUtils, QueryAutocomplete, QuerySelect, RadioGroup, ResponsivePopover, RestUtils, RoutingUtils, Segment, Select, SendIcon, Slider, SplitButton, Stepper, StrikethroughIcon, StringUtils, Table, Tag, TextArea, TextButton, TextColorIcon, TextInput, ThemeContext, TimePicker, Toast, ToastContainer, Toggle, ToggleButton, Tooltip, TooltipEllipsis, Typography, UIConfig, UIRouter, UIStyle, UnderlinedIcon, VisibilityIcon, VisibilityOffIcon, compoundMapper, dynamicColumns, dynamicInputs, isEqual, logger, ns, resources, uiOutlineClass, useAutosave, useBreakpoint, useDebounceCallback, useDeepCompareEffect, useDeepCompareLayoutEffect, useDeepCompareMemo, useFilters, useForm, useFormAutosave, useIntersectionObserver, useLocalStorage, useLongPressRepeat, usePagination, useScrollableListBox, useSorting, useStateAndRef, useTableColumnConfig, useTableNav, useToast, useTranslationMemo };
@@ -1,5 +1,15 @@
1
1
  import { CalendarDate, CalendarDateTime, DateValue, ZonedDateTime } from '@internationalized/date';
2
2
  export declare namespace DateTimeUtils {
3
+ function getDatePlaceholder(locale?: string): string;
4
+ function getTimePlaceholder(locale?: string): string;
5
+ function getDateTimePlaceholder(locale?: string): string;
6
+ function getDateRangePlaceholder(locale?: string): string;
7
+ function formatCalendarDateLocalized(calendarDate: CalendarDate, locale?: string): string;
8
+ function formatTimeLocalized(timeValue: {
9
+ hour: number;
10
+ minute: number;
11
+ }, locale?: string): string;
12
+ function formatCalendarDateTimeLocalized(calendarDateTime: Pick<CalendarDateTime, "day" | "month" | "year" | "hour" | "minute">, locale?: string): string;
3
13
  function fromISOtoZonedDateTime(isoString: string): ZonedDateTime;
4
14
  function fromDateValueToISO(dateValue: DateValue): string;
5
15
  function fromLocalToZonedDateTime(date: Date): ZonedDateTime;
@@ -1,7 +1,93 @@
1
- import { CalendarDate, CalendarDateTime, fromDate, getLocalTimeZone, parseAbsolute, parseAbsoluteToLocal } from "@internationalized/date";
1
+ import { CalendarDate, CalendarDateTime, DateFormatter, fromDate, getLocalTimeZone, parseAbsolute, parseAbsoluteToLocal } from "@internationalized/date";
2
2
  //#region src/utils/date-time.utils.ts
3
3
  var DateTimeUtils;
4
4
  (function(_DateTimeUtils) {
5
+ const DATE_SAMPLE_DATE_UTC = new Date(Date.UTC(2e3, 10, 22));
6
+ const TIME_SAMPLE_DATE_UTC = new Date(Date.UTC(2e3, 10, 22, 13, 45));
7
+ const getDatePlaceholderFormatter = (locale) => new Intl.DateTimeFormat(locale, {
8
+ day: "2-digit",
9
+ month: "2-digit",
10
+ year: "numeric"
11
+ });
12
+ const getTimePlaceholderFormatter = (locale) => new Intl.DateTimeFormat(locale, {
13
+ hour: "2-digit",
14
+ minute: "2-digit",
15
+ hourCycle: "h23"
16
+ });
17
+ const getResolvedLocale = (locale) => {
18
+ if (locale) return locale;
19
+ return new Intl.DateTimeFormat().resolvedOptions().locale;
20
+ };
21
+ const getDateFormatter = (locale) => new DateFormatter(getResolvedLocale(locale), {
22
+ day: "2-digit",
23
+ month: "2-digit",
24
+ year: "numeric",
25
+ timeZone: "UTC"
26
+ });
27
+ const getTimeFormatter = (locale) => new DateFormatter(getResolvedLocale(locale), {
28
+ hour: "2-digit",
29
+ minute: "2-digit",
30
+ hourCycle: "h23",
31
+ timeZone: "UTC"
32
+ });
33
+ const getDateTimeFormatter = (locale) => new DateFormatter(getResolvedLocale(locale), {
34
+ day: "2-digit",
35
+ month: "2-digit",
36
+ year: "numeric",
37
+ hour: "2-digit",
38
+ minute: "2-digit",
39
+ hourCycle: "h23",
40
+ timeZone: "UTC"
41
+ });
42
+ const repeatLocalizedFieldLabel = (type, length, locale) => {
43
+ const placeholderChar = new Intl.DisplayNames(getResolvedLocale(locale), { type: "dateTimeField" }).of(type)?.trim().charAt(0).toLocaleLowerCase(getResolvedLocale(locale));
44
+ if (!placeholderChar) return null;
45
+ return placeholderChar.repeat(length);
46
+ };
47
+ const mapTypeToPlaceholder = (type, locale) => {
48
+ switch (type) {
49
+ case "day": return repeatLocalizedFieldLabel(type, 2, locale);
50
+ case "month": return repeatLocalizedFieldLabel(type, 2, locale);
51
+ case "year": return repeatLocalizedFieldLabel(type, 4, locale);
52
+ case "hour": return "hh";
53
+ case "minute": return "mm";
54
+ default: return null;
55
+ }
56
+ };
57
+ const formatPlaceholder = (formatter, sampleDate) => {
58
+ return formatter.formatToParts(sampleDate).map((part) => mapTypeToPlaceholder(part.type, formatter.resolvedOptions().locale) ?? part.value.replace(/\s+/gu, "")).join("");
59
+ };
60
+ function getDatePlaceholder(locale) {
61
+ return formatPlaceholder(getDatePlaceholderFormatter(locale), DATE_SAMPLE_DATE_UTC);
62
+ }
63
+ _DateTimeUtils.getDatePlaceholder = getDatePlaceholder;
64
+ function getTimePlaceholder(locale) {
65
+ return formatPlaceholder(getTimePlaceholderFormatter(locale), TIME_SAMPLE_DATE_UTC);
66
+ }
67
+ _DateTimeUtils.getTimePlaceholder = getTimePlaceholder;
68
+ function getDateTimePlaceholder(locale) {
69
+ return `${getDatePlaceholder(locale)}, ${getTimePlaceholder(locale)}`;
70
+ }
71
+ _DateTimeUtils.getDateTimePlaceholder = getDateTimePlaceholder;
72
+ function getDateRangePlaceholder(locale) {
73
+ const datePlaceholder = getDatePlaceholder(locale);
74
+ return `${datePlaceholder} – ${datePlaceholder}`;
75
+ }
76
+ _DateTimeUtils.getDateRangePlaceholder = getDateRangePlaceholder;
77
+ function formatCalendarDateLocalized(calendarDate, locale) {
78
+ return getDateFormatter(locale).format(calendarDate.toDate("UTC"));
79
+ }
80
+ _DateTimeUtils.formatCalendarDateLocalized = formatCalendarDateLocalized;
81
+ function formatTimeLocalized(timeValue, locale) {
82
+ const dateTime = new CalendarDateTime(2e3, 11, 22, timeValue.hour, timeValue.minute);
83
+ return getTimeFormatter(locale).format(dateTime.toDate("UTC"));
84
+ }
85
+ _DateTimeUtils.formatTimeLocalized = formatTimeLocalized;
86
+ function formatCalendarDateTimeLocalized(calendarDateTime, locale) {
87
+ const normalizedValue = new CalendarDateTime(calendarDateTime.year, calendarDateTime.month, calendarDateTime.day, calendarDateTime.hour, calendarDateTime.minute);
88
+ return getDateTimeFormatter(locale).format(normalizedValue.toDate("UTC"));
89
+ }
90
+ _DateTimeUtils.formatCalendarDateTimeLocalized = formatCalendarDateTimeLocalized;
5
91
  function fromISOtoZonedDateTime(isoString) {
6
92
  return parseAbsoluteToLocal(isoString);
7
93
  }
@@ -0,0 +1,4 @@
1
+ export declare namespace ApiQueryUtils {
2
+ const DEFAULT_LIMIT = 20;
3
+ const DEFAULT_PAGE = 1;
4
+ }
@@ -0,0 +1,8 @@
1
+ //#region src/utils/query.utils.ts
2
+ var ApiQueryUtils;
3
+ (function(_ApiQueryUtils) {
4
+ _ApiQueryUtils.DEFAULT_LIMIT = 20;
5
+ _ApiQueryUtils.DEFAULT_PAGE = 1;
6
+ })(ApiQueryUtils || (ApiQueryUtils = {}));
7
+ //#endregion
8
+ export { ApiQueryUtils };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@povio/ui",
3
- "version": "2.2.9-rc.2",
3
+ "version": "2.2.9-rc.20",
4
4
  "type": "module",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",