@bsol-oss/react-datatable5 13.0.1-beta.9 → 13.0.1

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 (51) hide show
  1. package/README.md +8 -323
  2. package/dist/index.d.ts +492 -419
  3. package/dist/index.js +1727 -4118
  4. package/dist/index.mjs +1720 -4116
  5. package/dist/types/components/DataTable/context/DataTableContext.d.ts +3 -0
  6. package/dist/types/components/DataTable/controls/ColumnFilterMenu.d.ts +20 -0
  7. package/dist/types/components/DataTable/controls/MobileTableControls.d.ts +1 -1
  8. package/dist/types/components/DataTable/controls/TableControls.d.ts +1 -3
  9. package/dist/types/components/DataTable/controls/TableFilterTags.d.ts +10 -1
  10. package/dist/types/components/DataTable/display/DataDisplay.d.ts +1 -1
  11. package/dist/types/components/DataTable/display/TableCardContainer.d.ts +5 -5
  12. package/dist/types/components/DataTable/hooks/useResponsiveColumnVisibility.d.ts +1 -1
  13. package/dist/types/components/DataTable/useDataTableServer.d.ts +1 -1
  14. package/dist/types/components/DataTable/utils/selectors.d.ts +1 -1
  15. package/dist/types/components/DatePicker/Calendar.d.ts +2 -0
  16. package/dist/types/components/DatePicker/DatePicker.d.ts +7 -47
  17. package/dist/types/components/DatePicker/DateTimePicker.d.ts +4 -1
  18. package/dist/types/components/DatePicker/RangeDatePicker.d.ts +4 -40
  19. package/dist/types/components/DatePicker/TimeRangeZoom.d.ts +255 -0
  20. package/dist/types/components/DatePicker/datePickerContext.d.ts +5 -0
  21. package/dist/types/components/DatePicker/datePickerTypes.d.ts +39 -0
  22. package/dist/types/components/DatePicker/dateValueUtils.d.ts +10 -0
  23. package/dist/types/components/DatePicker/index.d.ts +2 -0
  24. package/dist/types/components/Form/SchemaFormContext.d.ts +6 -40
  25. package/dist/types/components/Form/components/MediaLibraryBrowser.d.ts +1 -1
  26. package/dist/types/components/Form/components/core/DefaultForm.d.ts +3 -4
  27. package/dist/types/components/Form/components/core/FormRoot.d.ts +32 -34
  28. package/dist/types/components/Form/components/fields/StringInputField.d.ts +0 -25
  29. package/dist/types/components/Form/components/fields/useIdPickerData.d.ts +3 -4
  30. package/dist/types/components/Form/components/types/CustomJSONSchema7.d.ts +143 -34
  31. package/dist/types/components/Form/components/viewers/FileViewer.d.ts +7 -5
  32. package/dist/types/components/Form/useForm.d.ts +8 -16
  33. package/dist/types/components/Form/utils/ajvResolver.d.ts +4 -0
  34. package/dist/types/components/Form/utils/getNestedError.d.ts +12 -0
  35. package/dist/types/components/Form/utils/getTableData.d.ts +1 -2
  36. package/dist/types/components/Form/utils/useFormLabel.d.ts +12 -0
  37. package/dist/types/components/TextArea/TextArea.d.ts +4 -19
  38. package/dist/types/components/TimePicker/TimePicker.d.ts +13 -41
  39. package/dist/types/index.d.ts +11 -3
  40. package/package.json +11 -2
  41. package/dist/types/components/DataTable/utils/getColumns.d.ts +0 -14
  42. package/dist/types/components/DatePicker/PickerDemo.d.ts +0 -1
  43. package/dist/types/components/Form/components/core/FormTitle.d.ts +0 -1
  44. package/dist/types/components/Form/components/core/SubmitButton.d.ts +0 -1
  45. package/dist/types/components/Form/components/fields/TagPicker.d.ts +0 -25
  46. package/dist/types/components/Form/components/viewers/TagViewer.d.ts +0 -30
  47. package/dist/types/components/Form/utils/buildErrorMessages.d.ts +0 -223
  48. package/dist/types/components/Form/utils/getFieldError.d.ts +0 -6
  49. package/dist/types/components/Form/utils/idListSanityCheck.d.ts +0 -1
  50. package/dist/types/components/Form/utils/useFormI18n.d.ts +0 -41
  51. package/dist/types/components/ui/number-input.d.ts +0 -8
@@ -17,6 +17,9 @@ export interface DataTableLabel {
17
17
  globalFilterPlaceholder: string;
18
18
  trueLabel: string;
19
19
  falseLabel: string;
20
+ noFiltersMatchText: string;
21
+ filterByLabel: string;
22
+ filterLabelsPlaceholder: string;
20
23
  }
21
24
  export interface DataTableContextProps<TData = unknown> extends Omit<DataTableProps, 'translate'> {
22
25
  table: Table<TData>;
@@ -0,0 +1,20 @@
1
+ export interface ColumnFilterMenuLabels {
2
+ filterByLabel?: string;
3
+ filterLabelsPlaceholder?: string;
4
+ noFiltersMatchText?: string;
5
+ }
6
+ export interface ColumnFilterMenuProps {
7
+ displayName: string;
8
+ filterOptions: {
9
+ label: string;
10
+ value: string;
11
+ }[];
12
+ filterVariant?: 'select' | 'tag';
13
+ colorPalette: string;
14
+ value?: string[] | string | undefined;
15
+ onChange?: (value: string[] | string | undefined) => void;
16
+ labels?: ColumnFilterMenuLabels;
17
+ open?: boolean;
18
+ onOpenChange?: (open: boolean) => void;
19
+ }
20
+ export declare const ColumnFilterMenu: ({ displayName, filterOptions, filterVariant, colorPalette, value: controlledValue, onChange, labels, open: controlledOpen, onOpenChange, }: ColumnFilterMenuProps) => import("react/jsx-runtime").JSX.Element;
@@ -26,4 +26,4 @@ export interface MobileTableControlsProps {
26
26
  hasError?: boolean;
27
27
  gridProps?: GridProps;
28
28
  }
29
- export declare const MobileTableControls: ({ fitTableWidth, fitTableHeight, children, showGlobalFilter, showFilter, showFilterName, showFilterTags, showReload, showPagination, showPageSizeControl, showPageCountText, showView, filterTagsOptions, extraItems, loading, hasError, gridProps, }: MobileTableControlsProps) => import("react/jsx-runtime").JSX.Element;
29
+ export declare const MobileTableControls: ({ fitTableWidth, fitTableHeight, children, showGlobalFilter, showFilter, showFilterTags, showReload, showPagination, showPageSizeControl, showPageCountText, showView, filterTagsOptions, extraItems, loading, hasError, gridProps, }: MobileTableControlsProps) => import("react/jsx-runtime").JSX.Element;
@@ -7,8 +7,6 @@ export interface TableControlsProps {
7
7
  children?: ReactNode;
8
8
  showGlobalFilter?: boolean;
9
9
  showFilter?: boolean;
10
- showFilterName?: boolean;
11
- showFilterTags?: boolean;
12
10
  showReload?: boolean;
13
11
  showPagination?: boolean;
14
12
  showPageSizeControl?: boolean;
@@ -26,4 +24,4 @@ export interface TableControlsProps {
26
24
  hasError?: boolean;
27
25
  gridProps?: GridProps;
28
26
  }
29
- export declare const TableControls: ({ fitTableWidth, fitTableHeight, children, showGlobalFilter, showFilter, showFilterName, showFilterTags, showReload, showPagination, showPageSizeControl, showPageCountText, showView, filterTagsOptions, extraItems, loading, hasError, gridProps, }: TableControlsProps) => import("react/jsx-runtime").JSX.Element;
27
+ export declare const TableControls: ({ fitTableWidth, fitTableHeight, children, showGlobalFilter, showFilter, showReload, showPagination, showPageSizeControl, showPageCountText, showView, filterTagsOptions, extraItems, loading, hasError, gridProps, }: TableControlsProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1,10 @@
1
- export declare const TableFilterTags: () => import("react/jsx-runtime").JSX.Element;
1
+ export interface TableFilterTagsProps {
2
+ filterTagsOptions?: {
3
+ column: string;
4
+ options: {
5
+ label: string;
6
+ value: string;
7
+ }[];
8
+ }[];
9
+ }
10
+ export declare const TableFilterTags: ({ filterTagsOptions, }?: TableFilterTagsProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -1,4 +1,4 @@
1
1
  export interface DataDisplayProps {
2
2
  variant?: 'horizontal' | 'stats' | '';
3
3
  }
4
- export declare const DataDisplay: ({ variant }: DataDisplayProps) => import("react/jsx-runtime").JSX.Element;
4
+ export declare const DataDisplay: ({}: DataDisplayProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,10 +1,10 @@
1
- import { BoxProps, FlexProps } from "@chakra-ui/react";
2
- import { ReactNode } from "react";
3
- export interface TableCardContainerProps extends BoxProps {
1
+ import { FlexProps, GridProps } from '@chakra-ui/react';
2
+ import { ReactNode } from 'react';
3
+ export interface TableCardContainerProps extends Omit<GridProps, 'direction'> {
4
4
  children: ReactNode;
5
- variant?: "carousel" | "";
5
+ variant?: 'carousel' | '';
6
6
  gap?: string;
7
7
  gridTemplateColumns?: string;
8
- direction?: FlexProps["direction"];
8
+ direction?: FlexProps['direction'];
9
9
  }
10
10
  export declare const TableCardContainer: ({ children, variant, gap, gridTemplateColumns, direction, ...props }: TableCardContainerProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import { RefObject } from 'react';
2
2
  interface UseResponsiveColumnVisibilityOptions {
3
- containerRef: RefObject<HTMLElement>;
3
+ containerRef: RefObject<HTMLElement | null>;
4
4
  enabled: boolean;
5
5
  showSelector?: boolean;
6
6
  }
@@ -1,7 +1,7 @@
1
1
  import { UseQueryResult } from '@tanstack/react-query';
2
2
  import { ColumnFiltersState, SortingState } from '@tanstack/react-table';
3
3
  import { UseDataTableProps, UseDataTableReturn } from './useDataTable';
4
- export interface UseDataTableServerProps<TData> extends Omit<UseDataTableProps, 'keyPrefix'> {
4
+ export interface UseDataTableServerProps<TData> extends UseDataTableProps {
5
5
  /**
6
6
  * Delay to send the request if the `refreshData` called multiple times
7
7
  *
@@ -34,7 +34,7 @@ export declare function areSomePageRowsSelected<TData>(table: Table<TData>, rowS
34
34
  /**
35
35
  * Create a toggle handler for a specific row
36
36
  */
37
- export declare function createRowToggleHandler<TData>(row: Row<TData>, rowSelection: RowSelectionState, setRowSelection: OnChangeFn<RowSelectionState>): () => void;
37
+ export declare function createRowToggleHandler<TData>(row: Row<TData>, _rowSelection: RowSelectionState, setRowSelection: OnChangeFn<RowSelectionState>): () => void;
38
38
  /**
39
39
  * Create a toggle handler for all rows
40
40
  */
@@ -0,0 +1,2 @@
1
+ import type { CalendarProps } from './datePickerTypes';
2
+ export declare const Calendar: ({ calendars, getBackProps, getForwardProps, getDateProps, firstDayOfWeek, }: CalendarProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -1,50 +1,10 @@
1
1
  import React from 'react';
2
- import { type CalendarRenderProps } from './useCalendar';
3
- export interface CalendarProps extends CalendarRenderProps {
4
- firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
5
- }
6
- export interface GetDateColorProps {
7
- today: boolean;
8
- selected: boolean;
9
- selectable: boolean;
10
- }
11
- export interface GetVariantProps {
12
- today: boolean;
13
- selected: boolean;
14
- selectable: boolean;
15
- }
16
- export interface DatePickerProps {
17
- onDateSelected?: (obj: {
18
- date: Date;
19
- selected: Date | Date[];
20
- }) => void;
21
- selected: Date | Date[];
22
- firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
23
- showOutsideDays?: boolean;
24
- date?: Date;
25
- minDate?: Date;
26
- maxDate?: Date;
27
- monthsToDisplay?: number;
28
- labels?: {
29
- monthNamesShort: string[];
30
- weekdayNamesShort: string[];
31
- backButtonLabel?: string;
32
- forwardButtonLabel?: string;
33
- todayLabel?: string;
34
- yesterdayLabel?: string;
35
- tomorrowLabel?: string;
36
- };
37
- render?: (calendarData: CalendarRenderProps) => React.ReactNode;
38
- }
39
- export interface DatePickerLabels {
40
- monthNamesShort: string[];
41
- weekdayNamesShort: string[];
42
- backButtonLabel?: string;
43
- forwardButtonLabel?: string;
44
- todayLabel?: string;
45
- yesterdayLabel?: string;
46
- tomorrowLabel?: string;
47
- }
2
+ import type { DatePickerLabels, DatePickerProps } from './datePickerTypes';
3
+ export type { CalendarProps, GetDateColorProps, GetVariantProps, DatePickerLabels, DatePickerProps, } from './datePickerTypes';
4
+ export { DatePickerContext } from './datePickerContext';
5
+ /**
6
+ * Inline single-date calendar (Chakra DatePicker). Used by UniversalPicker and stories.
7
+ */
48
8
  declare const DatePicker: React.FC<DatePickerProps>;
49
9
  export default DatePicker;
50
10
  export interface DatePickerInputProps {
@@ -64,4 +24,4 @@ export interface DatePickerInputProps {
64
24
  readOnly?: boolean;
65
25
  showHelperButtons?: boolean;
66
26
  }
67
- export declare function DatePickerInput({ value, onChange, placeholder, dateFormat, displayFormat, labels, timezone, minDate, maxDate, firstDayOfWeek, showOutsideDays, monthsToDisplay, insideDialog, readOnly, showHelperButtons, }: DatePickerInputProps): import("react/jsx-runtime").JSX.Element;
27
+ export declare function DatePickerInput({ value, onChange, placeholder, dateFormat, displayFormat, timezone, minDate, maxDate, insideDialog, readOnly, }: DatePickerInputProps): import("react/jsx-runtime").JSX.Element;
@@ -10,6 +10,7 @@ interface DateTimePickerProps {
10
10
  startTime?: string;
11
11
  minDate?: Date;
12
12
  maxDate?: Date;
13
+ /** When true, calendar portal attaches to document (recommended outside dialogs). */
13
14
  portalled?: boolean;
14
15
  defaultDate?: string;
15
16
  defaultTime?: {
@@ -26,6 +27,8 @@ interface DateTimePickerProps {
26
27
  plus7Days?: string;
27
28
  };
28
29
  showTimezoneSelector?: boolean;
30
+ timezoneOffset?: string;
31
+ onTimezoneOffsetChange?: (offset: string) => void;
29
32
  }
30
- export declare function DateTimePicker({ value, onChange, format, showSeconds, labels, timePickerLabels, timezone: tz, startTime, minDate, maxDate, portalled, defaultDate, defaultTime, showQuickActions, quickActionLabels, showTimezoneSelector, }: DateTimePickerProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare function DateTimePicker({ value, onChange, format, showSeconds, timezone: tz, minDate, maxDate, portalled, }: DateTimePickerProps): import("react/jsx-runtime").JSX.Element;
31
34
  export {};
@@ -1,15 +1,4 @@
1
1
  import React from 'react';
2
- import { CalendarRenderProps } from './useCalendar';
3
- export interface RangeCalendarProps extends CalendarRenderProps {
4
- firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
5
- selected?: Date[];
6
- }
7
- export interface GetStyleProps {
8
- today: boolean;
9
- selected: boolean;
10
- unavailable: boolean;
11
- isInRange: boolean;
12
- }
13
2
  export interface RangeDatePickerLabels {
14
3
  monthNamesFull: string[];
15
4
  weekdayNamesShort: string[];
@@ -24,51 +13,26 @@ export interface RangeDatePickerProps {
24
13
  }) => void;
25
14
  selected?: Date[];
26
15
  firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
16
+ /** @deprecated No-op; kept for story compatibility */
27
17
  showOutsideDays?: boolean;
18
+ /** @deprecated No-op; kept for story compatibility */
28
19
  date?: Date;
29
20
  minDate?: Date;
30
21
  maxDate?: Date;
31
22
  monthsToDisplay?: number;
32
23
  labels?: RangeDatePickerLabels;
33
- /**
34
- * Whether to render the calendar in a popover with a trigger button.
35
- * @default true
36
- */
37
24
  withPopover?: boolean;
38
- /**
39
- * Controlled open state for the popover.
40
- */
41
25
  open?: boolean;
42
- /**
43
- * Callback when the popover open state changes.
44
- */
45
26
  onOpenChange?: (details: {
46
27
  open: boolean;
47
28
  }) => void;
48
- /**
49
- * The trigger button element. If not provided, a default button will be rendered.
50
- */
51
29
  trigger?: React.ReactNode;
52
- /**
53
- * Format string for displaying the selected date range in the trigger button.
54
- * @default "YYYY-MM-DD"
55
- */
56
30
  displayFormat?: string;
57
- /**
58
- * Placeholder text for the trigger button when no dates are selected.
59
- */
60
31
  placeholder?: string;
61
- /**
62
- * Whether to close the popover when clicking outside.
63
- * @default true
64
- */
65
32
  closeOnInteractOutside?: boolean;
66
- /**
67
- * Whether to portal the popover content.
68
- * @default true
69
- */
70
33
  portalled?: boolean;
71
- render?: (calendarData: CalendarRenderProps) => React.ReactNode;
34
+ /** IANA timezone for wall dates */
35
+ timezone?: string;
72
36
  }
73
37
  declare const RangeDatePicker: React.FC<RangeDatePickerProps>;
74
38
  export default RangeDatePicker;
@@ -0,0 +1,255 @@
1
+ import dayjs from 'dayjs';
2
+ import { type ReactNode } from 'react';
3
+ type TimeInput = Date | string | number;
4
+ export interface ViewableTimeRange {
5
+ start: TimeInput;
6
+ end: TimeInput;
7
+ }
8
+ export interface TimeRangeZoomLabels {
9
+ zoomIn?: string;
10
+ zoomOut?: string;
11
+ reset?: string;
12
+ visibleRange?: string;
13
+ duration?: string;
14
+ daysShort?: string;
15
+ hoursShort?: string;
16
+ minutesShort?: string;
17
+ secondsShort?: string;
18
+ invalidRange?: string;
19
+ dateTimeFormat?: string;
20
+ }
21
+ export interface TimeRangeZoomProps {
22
+ range: ViewableTimeRange;
23
+ onRangeChange: (range: {
24
+ start: Date;
25
+ end: Date;
26
+ }) => void;
27
+ minDurationMs?: number;
28
+ maxDurationMs?: number;
29
+ zoomFactor?: number;
30
+ resetDurationMs?: number;
31
+ showResetButton?: boolean;
32
+ disabled?: boolean;
33
+ labels?: TimeRangeZoomLabels;
34
+ }
35
+ export interface TimeViewportBlockProps {
36
+ start: TimeInput;
37
+ end: TimeInput;
38
+ viewportStart?: TimeInput;
39
+ viewportEnd?: TimeInput;
40
+ height?: string | number;
41
+ minWidthPx?: number;
42
+ borderRadius?: string | number;
43
+ colorPalette?: string;
44
+ background?: string;
45
+ label?: string;
46
+ showLabel?: boolean;
47
+ hideWhenOutOfView?: boolean;
48
+ onClick?: () => void;
49
+ }
50
+ export interface TimeViewportBlockItem {
51
+ id: string;
52
+ start?: TimeInput;
53
+ end?: TimeInput;
54
+ label?: string;
55
+ colorPalette?: string;
56
+ background?: string;
57
+ track?: string | number;
58
+ children?: TimeViewportBlockItem[];
59
+ onClick?: (block: TimeViewportBlockItem) => void;
60
+ }
61
+ export interface TimeViewportMarkerLineProps {
62
+ timestamp: TimeInput;
63
+ viewportStart?: TimeInput;
64
+ viewportEnd?: TimeInput;
65
+ height?: string | number;
66
+ colorPalette?: string;
67
+ color?: string;
68
+ lineWidthPx?: number;
69
+ label?: string;
70
+ showLabel?: boolean;
71
+ hideWhenOutOfView?: boolean;
72
+ }
73
+ export interface TimeViewportHeaderProps {
74
+ viewportStart?: TimeInput;
75
+ viewportEnd?: TimeInput;
76
+ tickCount?: number;
77
+ tickStrategy?: 'count' | 'timeUnit';
78
+ tickUnit?: 'minute' | 'hour' | 'day';
79
+ tickStep?: number;
80
+ format?: string;
81
+ height?: string | number;
82
+ color?: string;
83
+ borderColor?: string;
84
+ showBottomBorder?: boolean;
85
+ animationDurationMs?: number;
86
+ animationEasing?: string;
87
+ }
88
+ export interface TimeViewportHeaderTick {
89
+ index: number;
90
+ percent: number;
91
+ label: string;
92
+ }
93
+ export interface UseTimeViewportTicksResult {
94
+ isValidViewport: boolean;
95
+ getTicksByCount: (tickCount?: number) => TimeViewportHeaderTick[];
96
+ getTicksByTimeUnit: (tickUnit?: TimeViewportHeaderProps['tickUnit'], tickStep?: number) => TimeViewportHeaderTick[];
97
+ getTicks: (options?: {
98
+ tickStrategy?: TimeViewportHeaderProps['tickStrategy'];
99
+ tickCount?: number;
100
+ tickUnit?: TimeViewportHeaderProps['tickUnit'];
101
+ tickStep?: number;
102
+ }) => TimeViewportHeaderTick[];
103
+ }
104
+ export interface TimeViewportGridProps {
105
+ viewportStart?: TimeInput;
106
+ viewportEnd?: TimeInput;
107
+ tickCount?: number;
108
+ tickStrategy?: 'count' | 'timeUnit';
109
+ tickUnit?: 'minute' | 'hour' | 'day';
110
+ tickStep?: number;
111
+ format?: string;
112
+ minorDivisions?: number;
113
+ majorLineColor?: string;
114
+ minorLineColor?: string;
115
+ showMinorLines?: boolean;
116
+ zIndex?: number;
117
+ animationDurationMs?: number;
118
+ animationEasing?: string;
119
+ }
120
+ export interface TimeViewportBlockRenderArgs {
121
+ block: TimeViewportBlockItem;
122
+ geometry: {
123
+ leftPercent: number;
124
+ widthPercent: number;
125
+ };
126
+ index: number;
127
+ }
128
+ export interface TimeViewportTrackRenderArgs {
129
+ trackIndex: number;
130
+ trackKey?: string | number;
131
+ trackBlocks: TimeViewportBlockItem[];
132
+ defaultContent: ReactNode;
133
+ }
134
+ export interface TimeViewportBlocksProps {
135
+ blocks: TimeViewportBlockItem[];
136
+ viewportStart?: TimeInput;
137
+ viewportEnd?: TimeInput;
138
+ height?: string | number;
139
+ minWidthPx?: number;
140
+ borderRadius?: string | number;
141
+ defaultColorPalette?: string;
142
+ showLabel?: boolean;
143
+ hideWhenOutOfView?: boolean;
144
+ hideEmptyTracks?: boolean;
145
+ gap?: number;
146
+ allowOverlap?: boolean;
147
+ overlapOpacity?: number;
148
+ renderTrackPrefix?: (args: {
149
+ trackIndex: number;
150
+ trackBlocks: TimeViewportBlockItem[];
151
+ trackKey?: string | number;
152
+ }) => ReactNode;
153
+ renderTrackSuffix?: (args: {
154
+ trackIndex: number;
155
+ trackBlocks: TimeViewportBlockItem[];
156
+ trackKey?: string | number;
157
+ }) => ReactNode;
158
+ /** Custom render function for block content. The returned node is placed inside a positioning wrapper that handles translateX and transitions. */
159
+ renderBlock?: (args: TimeViewportBlockRenderArgs) => ReactNode;
160
+ /** Custom render function for an entire track row. Receives the default rendered content so you can wrap or replace it. */
161
+ renderTrack?: (args: TimeViewportTrackRenderArgs) => ReactNode;
162
+ onBlockClick?: (block: TimeViewportBlockItem) => void;
163
+ /** Enable virtual scrolling for large track lists. */
164
+ virtualize?: boolean;
165
+ /** Fixed pixel height of the scroll container when virtualize is true. Defaults to 400. */
166
+ virtualHeight?: number;
167
+ /** Number of off-screen rows to render above/below the visible area. Defaults to 5. */
168
+ overscan?: number;
169
+ }
170
+ export interface TimeViewportRootProps {
171
+ viewportStart: TimeInput;
172
+ viewportEnd: TimeInput;
173
+ children: ReactNode;
174
+ onViewportChange?: (range: {
175
+ start: Date;
176
+ end: Date;
177
+ }) => void;
178
+ enableDragPan?: boolean;
179
+ enableCtrlWheelZoom?: boolean;
180
+ wheelZoomFactor?: number;
181
+ minDurationMs?: number;
182
+ maxDurationMs?: number;
183
+ }
184
+ export declare function TimeViewportRoot({ viewportStart, viewportEnd, children, onViewportChange, enableDragPan, enableCtrlWheelZoom, wheelZoomFactor, minDurationMs, maxDurationMs, }: TimeViewportRootProps): import("react/jsx-runtime").JSX.Element;
185
+ export interface UseTimeRangeZoomResult {
186
+ labels: Required<TimeRangeZoomLabels>;
187
+ start: dayjs.Dayjs;
188
+ end: dayjs.Dayjs;
189
+ durationMs: number;
190
+ canZoomIn: boolean;
191
+ canZoomOut: boolean;
192
+ hasValidDisplayRange: boolean;
193
+ visibleRangeText: string;
194
+ durationText: string;
195
+ zoomIn: () => void;
196
+ zoomOut: () => void;
197
+ reset: () => void;
198
+ }
199
+ export interface UseTimeViewportBlockGeometryResult {
200
+ hasValidViewport: boolean;
201
+ getGeometry: (start?: TimeInput, end?: TimeInput) => {
202
+ valid: boolean;
203
+ leftPercent: number;
204
+ widthPercent: number;
205
+ };
206
+ toTimeMs: (value?: TimeInput) => number | null;
207
+ }
208
+ export interface UseTimeViewportDerivedResult {
209
+ isValidViewport: boolean;
210
+ toTimeMs: (value?: TimeInput) => number | null;
211
+ getGeometry: (start?: TimeInput, end?: TimeInput) => {
212
+ valid: boolean;
213
+ leftPercent: number;
214
+ widthPercent: number;
215
+ };
216
+ getTimestampPercent: (timestamp?: TimeInput) => {
217
+ valid: boolean;
218
+ percent: number;
219
+ inView: boolean;
220
+ };
221
+ getTicksByCount: (tickCount?: number) => TimeViewportHeaderTick[];
222
+ getTicksByTimeUnit: (tickUnit?: TimeViewportHeaderProps['tickUnit'], tickStep?: number) => TimeViewportHeaderTick[];
223
+ getTicks: (options?: {
224
+ tickStrategy?: TimeViewportHeaderProps['tickStrategy'];
225
+ tickCount?: number;
226
+ tickUnit?: TimeViewportHeaderProps['tickUnit'];
227
+ tickStep?: number;
228
+ }) => TimeViewportHeaderTick[];
229
+ }
230
+ export declare function useTimeViewport(viewportStart?: TimeInput, viewportEnd?: TimeInput, format?: string): UseTimeViewportDerivedResult;
231
+ export declare function useTimeViewportBlockGeometry(viewportStart?: TimeInput, viewportEnd?: TimeInput): UseTimeViewportBlockGeometryResult;
232
+ export declare function useTimeViewportTicks({ viewportStart, viewportEnd, format, }: Pick<TimeViewportHeaderProps, 'viewportStart' | 'viewportEnd' | 'format'>): UseTimeViewportTicksResult;
233
+ export declare const useTimeViewportHeader: typeof useTimeViewportTicks;
234
+ /**
235
+ * A resizable timeline block based on block time range and viewport time range.
236
+ * Width and offset are automatically derived from datetime overlap.
237
+ */
238
+ export declare function TimeViewportBlock({ start, end, viewportStart, viewportEnd, height, minWidthPx, borderRadius, colorPalette, background, label, showLabel, hideWhenOutOfView, onClick, }: TimeViewportBlockProps): import("react/jsx-runtime").JSX.Element | null;
239
+ /**
240
+ * Vertical marker line for a timestamp in the current viewport.
241
+ */
242
+ export declare function TimeViewportMarkerLine({ timestamp, viewportStart, viewportEnd, height, colorPalette, color, lineWidthPx, label, showLabel, hideWhenOutOfView, }: TimeViewportMarkerLineProps): import("react/jsx-runtime").JSX.Element | null;
243
+ /**
244
+ * Header labels for timeline viewport time scale.
245
+ */
246
+ export declare function TimeViewportHeader({ viewportStart, viewportEnd, tickCount, tickStrategy, tickUnit, tickStep, format, height, color, borderColor, showBottomBorder, animationDurationMs, animationEasing, }: TimeViewportHeaderProps): import("react/jsx-runtime").JSX.Element | null;
247
+ /**
248
+ * Vertical grid lines for measuring block positions in the viewport.
249
+ * Render inside a relative container that also contains blocks.
250
+ */
251
+ export declare function TimeViewportGrid({ viewportStart, viewportEnd, tickCount, tickStrategy, tickUnit, tickStep, format, minorDivisions, majorLineColor, minorLineColor, showMinorLines, zIndex, animationDurationMs, animationEasing, }: TimeViewportGridProps): import("react/jsx-runtime").JSX.Element | null;
252
+ export declare function TimeViewportBlocks({ blocks, viewportStart, viewportEnd, height, minWidthPx, borderRadius, defaultColorPalette, showLabel, hideWhenOutOfView, hideEmptyTracks, gap, allowOverlap, overlapOpacity, renderTrackPrefix, renderTrackSuffix, renderBlock, renderTrack, onBlockClick, virtualize, virtualHeight, overscan, }: TimeViewportBlocksProps): import("react/jsx-runtime").JSX.Element;
253
+ export declare function TimeRangeZoom({ range, onRangeChange, minDurationMs, maxDurationMs, zoomFactor, resetDurationMs, showResetButton, disabled, labels, }: TimeRangeZoomProps): import("react/jsx-runtime").JSX.Element;
254
+ export declare function useTimeRangeZoom({ range, onRangeChange, minDurationMs, maxDurationMs, zoomFactor, resetDurationMs, disabled, labels, }: TimeRangeZoomProps): UseTimeRangeZoomResult;
255
+ export {};
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import type { DatePickerLabels } from './datePickerTypes';
3
+ export declare const DatePickerContext: import("react").Context<{
4
+ labels: DatePickerLabels;
5
+ }>;
@@ -0,0 +1,39 @@
1
+ import type { CalendarRenderProps } from './useCalendar';
2
+ export interface CalendarProps extends CalendarRenderProps {
3
+ firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
4
+ }
5
+ export interface GetDateColorProps {
6
+ today: boolean;
7
+ selected: boolean;
8
+ selectable: boolean;
9
+ }
10
+ export interface GetVariantProps {
11
+ today: boolean;
12
+ selected: boolean;
13
+ selectable: boolean;
14
+ }
15
+ export interface DatePickerLabels {
16
+ monthNamesShort: string[];
17
+ weekdayNamesShort: string[];
18
+ backButtonLabel?: string;
19
+ forwardButtonLabel?: string;
20
+ todayLabel?: string;
21
+ yesterdayLabel?: string;
22
+ tomorrowLabel?: string;
23
+ }
24
+ export interface DatePickerProps {
25
+ onDateSelected?: (obj: {
26
+ date: Date;
27
+ selected: Date | Date[];
28
+ }) => void;
29
+ selected: Date | Date[];
30
+ firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
31
+ /** @deprecated No-op; kept for story compatibility */
32
+ showOutsideDays?: boolean;
33
+ /** @deprecated No-op; kept for story compatibility */
34
+ date?: Date;
35
+ minDate?: Date;
36
+ maxDate?: Date;
37
+ monthsToDisplay?: number;
38
+ labels?: DatePickerLabels;
39
+ }
@@ -0,0 +1,10 @@
1
+ import { CalendarDate } from '@internationalized/date';
2
+ import type { DateValue } from '@chakra-ui/react';
3
+ /** Wall calendar date in timezone → CalendarDate for Chakra DatePicker */
4
+ export declare function toCalendarDate(d: Date, tz: string): CalendarDate;
5
+ export declare function stringToCalendarDateValue(str: string | undefined, tz: string): DateValue[];
6
+ export declare function stringsToRangeValue(strs: string[] | undefined, tz: string, dateFormat: string): DateValue[];
7
+ export declare function calendarDateValueToString(v: DateValue | undefined, tz: string, format: string): string | undefined;
8
+ export declare function rangeValueToDateStrings(values: DateValue[], tz: string, format: string): string[];
9
+ /** CalendarDate at midnight in tz as JS Date (for filters using Date[]) */
10
+ export declare function dateValueToFilterDate(v: DateValue, tz: string): Date;
@@ -2,6 +2,8 @@ export { default as DatePicker } from './DatePicker';
2
2
  export { TimePicker } from '../TimePicker/TimePicker';
3
3
  export { DateTimePicker } from './DateTimePicker';
4
4
  export { DurationPicker } from './DurationPicker';
5
+ export { TimeRangeZoom, TimeViewportRoot, TimeViewportBlock, TimeViewportBlocks, TimeViewportGrid, TimeViewportHeader, TimeViewportMarkerLine, } from './TimeRangeZoom';
5
6
  export { UniversalPicker } from './UniversalPicker';
6
7
  export { DatePickerInput } from './DatePicker';
7
8
  export type { DatePickerProps, CalendarProps, GetDateColorProps, GetVariantProps, } from './DatePicker';
9
+ export type { ViewableTimeRange, TimeRangeZoomLabels, TimeRangeZoomProps, TimeViewportRootProps, TimeViewportBlockProps, TimeViewportBlockItem, TimeViewportBlocksProps, TimeViewportBlockRenderArgs, TimeViewportTrackRenderArgs, TimeViewportGridProps, TimeViewportHeaderProps, TimeViewportMarkerLineProps, } from './TimeRangeZoom';
@@ -1,52 +1,18 @@
1
- import { AxiosRequestConfig } from 'axios';
2
- import { JSONSchema7 } from 'json-schema';
3
- import { Dispatch, ReactNode, SetStateAction } from 'react';
4
- import { FieldValues, Resolver } from 'react-hook-form';
5
- import { Translate } from './useForm';
6
- import { DateTimePickerLabels, IdPickerLabels, EnumPickerLabels, FilePickerLabels, FormButtonLabels, TimePickerLabels } from './components/types/CustomJSONSchema7';
1
+ import { Dispatch, SetStateAction } from 'react';
2
+ import { FieldValues } from 'react-hook-form';
3
+ import { CustomJSONSchema7, DateTimePickerLabels, EnumPickerLabels, FilePickerLabels, FormButtonLabels, IdPickerLabels, TimePickerLabels } from './components/types/CustomJSONSchema7';
7
4
  export interface SchemaFormContext<TData extends FieldValues> {
8
- schema: JSONSchema7;
9
- requestUrl: string;
10
- order: string[];
11
- ignore: string[];
12
- include: string[];
5
+ schema: CustomJSONSchema7;
13
6
  onSubmit?: (data: TData) => Promise<void>;
14
- rowNumber?: number | string;
15
- idMap: Record<string, object>;
16
- setIdMap: Dispatch<SetStateAction<Record<string, object>>>;
17
- /** Translate object for fallback text (components prefer label objects) */
18
- translate: Translate;
19
- requestOptions: AxiosRequestConfig;
20
- isSuccess: boolean;
21
- setIsSuccess: Dispatch<SetStateAction<boolean>>;
22
- isError: boolean;
23
- setIsError: Dispatch<SetStateAction<boolean>>;
24
- isSubmiting: boolean;
25
- setIsSubmiting: Dispatch<SetStateAction<boolean>>;
26
- isConfirming: boolean;
27
- setIsConfirming: Dispatch<SetStateAction<boolean>>;
28
- validatedData: TData | undefined;
29
- setValidatedData: Dispatch<SetStateAction<TData>>;
30
- error: unknown;
31
- setError: Dispatch<SetStateAction<unknown>>;
32
- getUpdatedData: () => TData | Promise<TData>;
33
- customErrorRenderer?: (error: unknown) => ReactNode;
34
- customSuccessRenderer?: (resetHandler: () => void | Promise<void>) => ReactNode;
7
+ idMap: Record<string, unknown>;
8
+ setIdMap: Dispatch<SetStateAction<Record<string, unknown>>>;
35
9
  timezone?: string;
36
- displayConfig: {
37
- showSubmitButton?: boolean;
38
- showResetButton?: boolean;
39
- showTitle?: boolean;
40
- };
41
- requireConfirmation: boolean;
42
- onFormSubmit: (data: TData) => Promise<void>;
43
10
  dateTimePickerLabels?: DateTimePickerLabels;
44
11
  idPickerLabels?: IdPickerLabels;
45
12
  enumPickerLabels?: EnumPickerLabels;
46
13
  filePickerLabels?: FilePickerLabels;
47
14
  formButtonLabels?: FormButtonLabels;
48
15
  timePickerLabels?: TimePickerLabels;
49
- ajvResolver: Resolver<FieldValues>;
50
16
  insideDialog?: boolean;
51
17
  }
52
18
  export declare const SchemaFormContext: import("react").Context<SchemaFormContext<unknown>>;