@bsol-oss/react-datatable5 13.0.1-beta.32 → 13.0.1-beta.33
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.
|
@@ -0,0 +1,227 @@
|
|
|
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
|
+
minorDivisions?: number;
|
|
109
|
+
majorLineColor?: string;
|
|
110
|
+
minorLineColor?: string;
|
|
111
|
+
showMinorLines?: boolean;
|
|
112
|
+
zIndex?: number;
|
|
113
|
+
animationDurationMs?: number;
|
|
114
|
+
animationEasing?: string;
|
|
115
|
+
}
|
|
116
|
+
export interface TimeViewportBlocksProps {
|
|
117
|
+
blocks: TimeViewportBlockItem[];
|
|
118
|
+
viewportStart?: TimeInput;
|
|
119
|
+
viewportEnd?: TimeInput;
|
|
120
|
+
height?: string | number;
|
|
121
|
+
minWidthPx?: number;
|
|
122
|
+
borderRadius?: string | number;
|
|
123
|
+
defaultColorPalette?: string;
|
|
124
|
+
showLabel?: boolean;
|
|
125
|
+
hideWhenOutOfView?: boolean;
|
|
126
|
+
hideEmptyTracks?: boolean;
|
|
127
|
+
gap?: number;
|
|
128
|
+
allowOverlap?: boolean;
|
|
129
|
+
overlapOpacity?: number;
|
|
130
|
+
renderTrackPrefix?: (args: {
|
|
131
|
+
trackIndex: number;
|
|
132
|
+
trackBlocks: TimeViewportBlockItem[];
|
|
133
|
+
trackKey?: string | number;
|
|
134
|
+
}) => ReactNode;
|
|
135
|
+
renderTrackSuffix?: (args: {
|
|
136
|
+
trackIndex: number;
|
|
137
|
+
trackBlocks: TimeViewportBlockItem[];
|
|
138
|
+
trackKey?: string | number;
|
|
139
|
+
}) => ReactNode;
|
|
140
|
+
onBlockClick?: (block: TimeViewportBlockItem) => void;
|
|
141
|
+
}
|
|
142
|
+
export interface TimeViewportRootProps {
|
|
143
|
+
viewportStart: TimeInput;
|
|
144
|
+
viewportEnd: TimeInput;
|
|
145
|
+
children: ReactNode;
|
|
146
|
+
onViewportChange?: (range: {
|
|
147
|
+
start: Date;
|
|
148
|
+
end: Date;
|
|
149
|
+
}) => void;
|
|
150
|
+
enableDragPan?: boolean;
|
|
151
|
+
enableCtrlWheelZoom?: boolean;
|
|
152
|
+
wheelZoomFactor?: number;
|
|
153
|
+
minDurationMs?: number;
|
|
154
|
+
maxDurationMs?: number;
|
|
155
|
+
}
|
|
156
|
+
export declare function TimeViewportRoot({ viewportStart, viewportEnd, children, onViewportChange, enableDragPan, enableCtrlWheelZoom, wheelZoomFactor, minDurationMs, maxDurationMs, }: TimeViewportRootProps): import("react/jsx-runtime").JSX.Element;
|
|
157
|
+
export interface UseTimeRangeZoomResult {
|
|
158
|
+
labels: Required<TimeRangeZoomLabels>;
|
|
159
|
+
start: dayjs.Dayjs;
|
|
160
|
+
end: dayjs.Dayjs;
|
|
161
|
+
durationMs: number;
|
|
162
|
+
canZoomIn: boolean;
|
|
163
|
+
canZoomOut: boolean;
|
|
164
|
+
hasValidDisplayRange: boolean;
|
|
165
|
+
visibleRangeText: string;
|
|
166
|
+
durationText: string;
|
|
167
|
+
zoomIn: () => void;
|
|
168
|
+
zoomOut: () => void;
|
|
169
|
+
reset: () => void;
|
|
170
|
+
}
|
|
171
|
+
export interface UseTimeViewportBlockGeometryResult {
|
|
172
|
+
hasValidViewport: boolean;
|
|
173
|
+
getGeometry: (start?: TimeInput, end?: TimeInput) => {
|
|
174
|
+
valid: boolean;
|
|
175
|
+
leftPercent: number;
|
|
176
|
+
widthPercent: number;
|
|
177
|
+
};
|
|
178
|
+
toTimeMs: (value?: TimeInput) => number | null;
|
|
179
|
+
}
|
|
180
|
+
export interface UseTimeViewportDerivedResult {
|
|
181
|
+
isValidViewport: boolean;
|
|
182
|
+
toTimeMs: (value?: TimeInput) => number | null;
|
|
183
|
+
getGeometry: (start?: TimeInput, end?: TimeInput) => {
|
|
184
|
+
valid: boolean;
|
|
185
|
+
leftPercent: number;
|
|
186
|
+
widthPercent: number;
|
|
187
|
+
};
|
|
188
|
+
getTimestampPercent: (timestamp?: TimeInput) => {
|
|
189
|
+
valid: boolean;
|
|
190
|
+
percent: number;
|
|
191
|
+
inView: boolean;
|
|
192
|
+
};
|
|
193
|
+
getTicksByCount: (tickCount?: number) => TimeViewportHeaderTick[];
|
|
194
|
+
getTicksByTimeUnit: (tickUnit?: TimeViewportHeaderProps['tickUnit'], tickStep?: number) => TimeViewportHeaderTick[];
|
|
195
|
+
getTicks: (options?: {
|
|
196
|
+
tickStrategy?: TimeViewportHeaderProps['tickStrategy'];
|
|
197
|
+
tickCount?: number;
|
|
198
|
+
tickUnit?: TimeViewportHeaderProps['tickUnit'];
|
|
199
|
+
tickStep?: number;
|
|
200
|
+
}) => TimeViewportHeaderTick[];
|
|
201
|
+
}
|
|
202
|
+
export declare function useTimeViewport(viewportStart?: TimeInput, viewportEnd?: TimeInput, format?: string): UseTimeViewportDerivedResult;
|
|
203
|
+
export declare function useTimeViewportBlockGeometry(viewportStart?: TimeInput, viewportEnd?: TimeInput): UseTimeViewportBlockGeometryResult;
|
|
204
|
+
export declare function useTimeViewportTicks({ viewportStart, viewportEnd, format, }: Pick<TimeViewportHeaderProps, 'viewportStart' | 'viewportEnd' | 'format'>): UseTimeViewportTicksResult;
|
|
205
|
+
export declare const useTimeViewportHeader: typeof useTimeViewportTicks;
|
|
206
|
+
/**
|
|
207
|
+
* A resizable timeline block based on block time range and viewport time range.
|
|
208
|
+
* Width and offset are automatically derived from datetime overlap.
|
|
209
|
+
*/
|
|
210
|
+
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;
|
|
211
|
+
/**
|
|
212
|
+
* Vertical marker line for a timestamp in the current viewport.
|
|
213
|
+
*/
|
|
214
|
+
export declare function TimeViewportMarkerLine({ timestamp, viewportStart, viewportEnd, height, colorPalette, color, lineWidthPx, label, showLabel, hideWhenOutOfView, }: TimeViewportMarkerLineProps): import("react/jsx-runtime").JSX.Element | null;
|
|
215
|
+
/**
|
|
216
|
+
* Header labels for timeline viewport time scale.
|
|
217
|
+
*/
|
|
218
|
+
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;
|
|
219
|
+
/**
|
|
220
|
+
* Vertical grid lines for measuring block positions in the viewport.
|
|
221
|
+
* Render inside a relative container that also contains blocks.
|
|
222
|
+
*/
|
|
223
|
+
export declare function TimeViewportGrid({ viewportStart, viewportEnd, tickCount, minorDivisions, majorLineColor, minorLineColor, showMinorLines, zIndex, animationDurationMs, animationEasing, }: TimeViewportGridProps): import("react/jsx-runtime").JSX.Element | null;
|
|
224
|
+
export declare function TimeViewportBlocks({ blocks, viewportStart, viewportEnd, height, minWidthPx, borderRadius, defaultColorPalette, showLabel, hideWhenOutOfView, hideEmptyTracks, gap, allowOverlap, overlapOpacity, renderTrackPrefix, renderTrackSuffix, onBlockClick, }: TimeViewportBlocksProps): import("react/jsx-runtime").JSX.Element;
|
|
225
|
+
export declare function TimeRangeZoom({ range, onRangeChange, minDurationMs, maxDurationMs, zoomFactor, resetDurationMs, showResetButton, disabled, labels, }: TimeRangeZoomProps): import("react/jsx-runtime").JSX.Element;
|
|
226
|
+
export declare function useTimeRangeZoom({ range, onRangeChange, minDurationMs, maxDurationMs, zoomFactor, resetDurationMs, disabled, labels, }: TimeRangeZoomProps): UseTimeRangeZoomResult;
|
|
227
|
+
export {};
|
|
@@ -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, TimeViewportGridProps, TimeViewportHeaderProps, TimeViewportMarkerLineProps, } from './TimeRangeZoom';
|
package/dist/types/index.d.ts
CHANGED
|
@@ -134,6 +134,7 @@ export * from './components/DatePicker/DatePicker';
|
|
|
134
134
|
export * from './components/DatePicker/getMultiDates';
|
|
135
135
|
export * from './components/DatePicker/getRangeDates';
|
|
136
136
|
export * from './components/DatePicker/RangeDatePicker';
|
|
137
|
+
export * from './components/DatePicker/TimeRangeZoom';
|
|
137
138
|
export * from './components/DataTable/display/RecordDisplay';
|
|
138
139
|
export * from './components/DataTable/display/TableDataDisplay';
|
|
139
140
|
export * from './components/DataTable/DefaultTable';
|