@ssa-ui-kit/core 3.26.3 → 3.27.0
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.
- package/dist/ai/source-map.md +164 -84
- package/dist/components/Calendar/Calendar.d.ts +11 -3
- package/dist/components/Calendar/CalendarContext.d.ts +12 -1
- package/dist/components/Calendar/components/CalendarToolbar.d.ts +5 -1
- package/dist/components/Calendar/components/DayView.d.ts +4 -2
- package/dist/components/Calendar/components/TimeZoneSelect.d.ts +14 -0
- package/dist/components/Calendar/consts.d.ts +14 -1
- package/dist/components/Calendar/styles.d.ts +37 -1
- package/dist/components/Calendar/types.d.ts +93 -5
- package/dist/components/Calendar/utils.d.ts +35 -5
- package/dist/components/DataTable/DataTable.d.ts +79 -0
- package/dist/components/DataTable/DataTableColumnPicker.d.ts +66 -0
- package/dist/components/DataTable/ExpanderCell.d.ts +10 -0
- package/dist/components/DataTable/SelectionCell.d.ts +25 -0
- package/dist/components/DataTable/index.d.ts +4 -0
- package/dist/components/DataTable/styles.d.ts +47 -0
- package/dist/components/DataTable/types.d.ts +378 -0
- package/dist/components/DataTable/useColumnReorder.d.ts +31 -0
- package/dist/components/DataTable/useDataTableModel.d.ts +36 -0
- package/dist/components/DataTable/utils.d.ts +82 -0
- package/dist/components/DropdownOptionGroup/DropdownOptionGroup.d.ts +40 -0
- package/dist/components/DropdownOptionGroup/index.d.ts +2 -0
- package/dist/components/DropdownOptions/useToggleListKeys.d.ts +2 -2
- package/dist/components/DropdownOptions/utils.d.ts +11 -4
- package/dist/components/NestedTable/WithNestedTableRow.d.ts +4 -0
- package/dist/components/NestedTable/components/NestedTable.d.ts +4 -0
- package/dist/components/NestedTable/components/NestedTableCell.d.ts +4 -0
- package/dist/components/NestedTable/components/NestedTableCellHeader.d.ts +4 -0
- package/dist/components/NestedTable/components/NestedTableRow.d.ts +4 -0
- package/dist/components/Table/ColumnFreezeMenu.d.ts +11 -1
- package/dist/components/Table/ColumnMenu.d.ts +30 -0
- package/dist/components/Table/Table.d.ts +4 -4
- package/dist/components/Table/types.d.ts +77 -6
- package/dist/components/TableCellHeader/TableCellHeader.d.ts +1 -1
- package/dist/components/TableCellHeader/types.d.ts +14 -5
- package/dist/components/Typeahead/Typeahead.context.d.ts +1 -1
- package/dist/components/Typeahead/Typeahead.d.ts +1 -1
- package/dist/components/Typeahead/components/TypeaheadOptionGroup.d.ts +43 -0
- package/dist/components/Typeahead/components/index.d.ts +1 -0
- package/dist/components/Typeahead/index.d.ts +1 -0
- package/dist/components/Typeahead/types.d.ts +9 -1
- package/dist/components/Typeahead/useTypeahead.d.ts +3 -3
- package/dist/components/index.d.ts +4 -0
- package/dist/index.js +2785 -599
- package/dist/index.mjs +2783 -600
- package/dist/tsbuildcache +1 -1
- package/package.json +6 -5
|
@@ -99,10 +99,33 @@ export type CalendarDayHighlight = {
|
|
|
99
99
|
/** Makes the badge row clickable. */
|
|
100
100
|
onClick?: () => void;
|
|
101
101
|
};
|
|
102
|
+
/**
|
|
103
|
+
* A day's working time on the day view's timeline, in hours from midnight —
|
|
104
|
+
* `{ start: 8, end: 20 }` is 08:00–20:00, `17.5` is 17:30. The hours
|
|
105
|
+
* outside it are shaded grey, but stay open for adding entries.
|
|
106
|
+
*/
|
|
107
|
+
export type CalendarWorkingHours = {
|
|
108
|
+
/** Hour the working time starts, 0–24. */
|
|
109
|
+
start: number;
|
|
110
|
+
/** Hour the working time ends, 0–24; after `start`. */
|
|
111
|
+
end: number;
|
|
112
|
+
};
|
|
113
|
+
/** A weekday, as keyed in {@link CalendarWorkingHoursByWeekday}. */
|
|
114
|
+
export type CalendarWeekday = 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat' | 'sun';
|
|
115
|
+
/**
|
|
116
|
+
* Working time per weekday. A weekday left out, or set to `null`, has no
|
|
117
|
+
* working time — the whole day is shaded.
|
|
118
|
+
*/
|
|
119
|
+
export type CalendarWorkingHoursByWeekday = Partial<Record<CalendarWeekday, CalendarWorkingHours | null>>;
|
|
102
120
|
/**
|
|
103
121
|
* Per-day options returned by `getDayProps`.
|
|
104
122
|
*/
|
|
105
123
|
export type CalendarDayProps = {
|
|
124
|
+
/**
|
|
125
|
+
* The day's working time, over `workingHours` — e.g. a short day before a
|
|
126
|
+
* holiday. `null` shades the whole day.
|
|
127
|
+
*/
|
|
128
|
+
workingHours?: CalendarWorkingHours | null;
|
|
106
129
|
/** Turns the day into a highlighted, whole-day cell. */
|
|
107
130
|
highlight?: CalendarDayHighlight;
|
|
108
131
|
/**
|
|
@@ -189,13 +212,16 @@ export type CalendarEventDetailsControls = {
|
|
|
189
212
|
close: () => void;
|
|
190
213
|
};
|
|
191
214
|
/**
|
|
192
|
-
* The days a view shows, handed to `onRangeChange`.
|
|
215
|
+
* The days a view shows, handed to `onRangeChange`. Unlike the calendar's
|
|
216
|
+
* other day values, `start` and `end` are moments — the span to fetch timed
|
|
217
|
+
* entries for — so with a `timeZone` they're that zone's midnights, not
|
|
218
|
+
* local ones.
|
|
193
219
|
*/
|
|
194
220
|
export type CalendarRange = {
|
|
195
221
|
view: CalendarView;
|
|
196
|
-
/** Start of the first day shown. */
|
|
222
|
+
/** Start of the first day shown, in the calendar's time zone. */
|
|
197
223
|
start: Date;
|
|
198
|
-
/** End of the last day shown (23:59:59.999). */
|
|
224
|
+
/** End of the last day shown (23:59:59.999), in the calendar's time zone. */
|
|
199
225
|
end: Date;
|
|
200
226
|
};
|
|
201
227
|
/**
|
|
@@ -302,7 +328,9 @@ export type CalendarProps<TData = unknown> = {
|
|
|
302
328
|
getDayProps?: (date: Date) => CalendarDayProps | undefined;
|
|
303
329
|
/**
|
|
304
330
|
* Shows an add button on each day (on hover in the month grid) and in the
|
|
305
|
-
* day view header. Receives the day clicked
|
|
331
|
+
* day view header. Receives the day clicked (its start, in local time
|
|
332
|
+
* like every day value), or the hour clicked on the day view's timeline
|
|
333
|
+
* — a moment, which in another `timeZone` reads differently locally.
|
|
306
334
|
*/
|
|
307
335
|
onAddEvent?: (date: Date) => void;
|
|
308
336
|
/**
|
|
@@ -373,9 +401,69 @@ export type CalendarProps<TData = unknown> = {
|
|
|
373
401
|
locale?: string;
|
|
374
402
|
/**
|
|
375
403
|
* Hour the day view scrolls to when it opens. Defaults to an hour before
|
|
376
|
-
* the current time on today, and to
|
|
404
|
+
* the current time on today, and to the start of the working time (see
|
|
405
|
+
* `workingHours`) or 8:00 on other days.
|
|
377
406
|
*/
|
|
378
407
|
scrollToHour?: number;
|
|
408
|
+
/**
|
|
409
|
+
* Working time of the day view: the hours outside it get a grey
|
|
410
|
+
* background. They stay open for adding entries — the shading is only a
|
|
411
|
+
* hint. One range for every day, or a range per weekday; for one-off days
|
|
412
|
+
* use `getDayProps(date).workingHours`.
|
|
413
|
+
*
|
|
414
|
+
* Unset, no hours are shaded.
|
|
415
|
+
*/
|
|
416
|
+
workingHours?: CalendarWorkingHours | CalendarWorkingHoursByWeekday;
|
|
417
|
+
/**
|
|
418
|
+
* Height of one hour on the day view's timeline, in px. Passing it makes
|
|
419
|
+
* it controlled: change it from `onHourHeightChange`.
|
|
420
|
+
*/
|
|
421
|
+
hourHeight?: number;
|
|
422
|
+
/**
|
|
423
|
+
* Hour height to start with when `hourHeight` isn't controlled, and the
|
|
424
|
+
* one a double click on the hour labels goes back to.
|
|
425
|
+
* @default 68
|
|
426
|
+
*/
|
|
427
|
+
defaultHourHeight?: number;
|
|
428
|
+
/** Called as the user resizes the hours — see `resizableHours`. */
|
|
429
|
+
onHourHeightChange?: (hourHeight: number) => void;
|
|
430
|
+
/**
|
|
431
|
+
* Lets the user make the day view's hours taller or shorter by dragging
|
|
432
|
+
* the hour labels column up or down, or with the arrow keys when it's
|
|
433
|
+
* focused — from the whole day fitting the view to a single hour filling
|
|
434
|
+
* it. A double click on the column goes back to `defaultHourHeight`.
|
|
435
|
+
* @default false
|
|
436
|
+
*/
|
|
437
|
+
resizableHours?: boolean;
|
|
438
|
+
/**
|
|
439
|
+
* IANA time zone the calendar shows times in, e.g. `'Europe/Kyiv'` or
|
|
440
|
+
* `'UTC'`. Passing it makes it controlled: change it from
|
|
441
|
+
* `onTimeZoneChange`.
|
|
442
|
+
*
|
|
443
|
+
* Timed entries are moved into the zone — an entry at 09:00 in Kyiv shows
|
|
444
|
+
* at 07:00 in `'UTC'`. Untimed entries, `date` and the other day values
|
|
445
|
+
* are calendar days and stay on their day. "Today" and the now line follow
|
|
446
|
+
* the zone.
|
|
447
|
+
*
|
|
448
|
+
* @default the browser's time zone
|
|
449
|
+
*/
|
|
450
|
+
timeZone?: string;
|
|
451
|
+
/** Time zone to start in when `timeZone` isn't controlled. */
|
|
452
|
+
defaultTimeZone?: string;
|
|
453
|
+
/** Called when the user picks a time zone — see `timeZoneSelector`. */
|
|
454
|
+
onTimeZoneChange?: (timeZone: string) => void;
|
|
455
|
+
/**
|
|
456
|
+
* Shows a time zone button that opens a searchable list of zones. It sits
|
|
457
|
+
* in the toolbar next to the Month/Day toggle; without `toolbar`, in the
|
|
458
|
+
* day view's header.
|
|
459
|
+
* @default false
|
|
460
|
+
*/
|
|
461
|
+
timeZoneSelector?: boolean;
|
|
462
|
+
/**
|
|
463
|
+
* Zones the selector offers.
|
|
464
|
+
* @default every zone the browser knows
|
|
465
|
+
*/
|
|
466
|
+
timeZones?: string[];
|
|
379
467
|
/** Accessible name of the calendar region. */
|
|
380
468
|
'aria-label'?: string;
|
|
381
469
|
className?: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { DateTime } from 'luxon';
|
|
3
|
-
import { CalendarDateInput, CalendarEvent } from './types';
|
|
3
|
+
import { CalendarDateInput, CalendarEvent, CalendarWorkingHours, CalendarWorkingHoursByWeekday } from './types';
|
|
4
4
|
/** Length given to a timed event that has no `end`. */
|
|
5
5
|
export declare const DEFAULT_EVENT_MINUTES = 30;
|
|
6
6
|
/**
|
|
@@ -8,8 +8,23 @@ export declare const DEFAULT_EVENT_MINUTES = 30;
|
|
|
8
8
|
* otherwise fill every cell up to it.
|
|
9
9
|
*/
|
|
10
10
|
export declare const MAX_SPAN_DAYS = 366;
|
|
11
|
-
/**
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* `Date` or ISO string → luxon. A string without an offset is read in local
|
|
13
|
+
* time. With a `zone`, the moment is then shown in that zone.
|
|
14
|
+
*/
|
|
15
|
+
export declare const toDateTime: (value: CalendarDateInput, zone?: string) => DateTime;
|
|
16
|
+
/**
|
|
17
|
+
* A day value (`date`, an untimed entry, an add limit): its local calendar
|
|
18
|
+
* date, as the start of that day in `zone`. Days stay on their date whatever
|
|
19
|
+
* the zone — only moments move.
|
|
20
|
+
*/
|
|
21
|
+
export declare const toZonedDay: (value: CalendarDateInput, zone?: string) => DateTime;
|
|
22
|
+
/** The reverse of `toZonedDay`: the same calendar day, as local midnight. */
|
|
23
|
+
export declare const toLocalDayDate: (day: DateTime) => Date;
|
|
24
|
+
/** The current moment, in `zone` when given. */
|
|
25
|
+
export declare const nowIn: (zone?: string) => DateTime<true> | DateTime<false>;
|
|
26
|
+
/** The browser's IANA time zone. */
|
|
27
|
+
export declare const getLocalTimeZone: () => string;
|
|
13
28
|
/** `yyyy-MM-dd` of a date — the key events are grouped by. */
|
|
14
29
|
export declare const toDayKey: (value: DateTime) => string;
|
|
15
30
|
/**
|
|
@@ -26,7 +41,7 @@ export type NormalizedEvent<TData = unknown> = {
|
|
|
26
41
|
/** Which of those days this copy is on, from 1. */
|
|
27
42
|
dayOfSpan: number;
|
|
28
43
|
};
|
|
29
|
-
export declare const normalizeEvent: <TData>(event: CalendarEvent<TData
|
|
44
|
+
export declare const normalizeEvent: <TData>(event: CalendarEvent<TData>, zone?: string) => NormalizedEvent<TData> | undefined;
|
|
30
45
|
/**
|
|
31
46
|
* Whether an entry fills a day: untimed, or timed and running from before
|
|
32
47
|
* the day starts to after it ends. Such entries are listed above the day
|
|
@@ -38,7 +53,7 @@ export declare const isWholeDay: (item: NormalizedEvent, day: DateTime) => boole
|
|
|
38
53
|
* spanning several days (see `NormalizedEvent.spanDays`) is repeated on
|
|
39
54
|
* each, with its `dayOfSpan`. Events with an unparsable `start` are dropped.
|
|
40
55
|
*/
|
|
41
|
-
export declare const groupEventsByDay: <TData>(events: CalendarEvent<TData>[]) => Map<string, NormalizedEvent<TData>[]>;
|
|
56
|
+
export declare const groupEventsByDay: <TData>(events: CalendarEvent<TData>[], zone?: string) => Map<string, NormalizedEvent<TData>[]>;
|
|
42
57
|
/** A cell of the month grid. */
|
|
43
58
|
export type MonthDay = {
|
|
44
59
|
date: DateTime;
|
|
@@ -98,6 +113,21 @@ export type PositionedEvent<TData = unknown> = {
|
|
|
98
113
|
* past either midnight are clipped to the day; events not on it are skipped.
|
|
99
114
|
*/
|
|
100
115
|
export declare const layoutDayEvents: <TData>(items: NormalizedEvent<TData>[], day: DateTime) => PositionedEvent<TData>[];
|
|
116
|
+
/**
|
|
117
|
+
* A day's working time: the day's own override, else its weekday's entry or
|
|
118
|
+
* the single range. `null` — none, the whole day is shaded; `undefined` —
|
|
119
|
+
* working hours aren't set, nothing is shaded.
|
|
120
|
+
*/
|
|
121
|
+
export declare const resolveWorkingHours: (workingHours: CalendarWorkingHours | CalendarWorkingHoursByWeekday | undefined, day: DateTime, override?: CalendarWorkingHours | null) => CalendarWorkingHours | null | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* The stretches of a day outside its working time, in minutes from
|
|
124
|
+
* midnight. Hours are clamped to the day; a range that ends before it
|
|
125
|
+
* starts leaves the whole day outside.
|
|
126
|
+
*/
|
|
127
|
+
export declare const getNonWorkingRanges: (hours: CalendarWorkingHours | null) => {
|
|
128
|
+
start: number;
|
|
129
|
+
end: number;
|
|
130
|
+
}[];
|
|
101
131
|
/** Applies `locale` when given; otherwise keeps luxon's default. */
|
|
102
132
|
export declare const withLocale: (value: DateTime, locale?: string) => DateTime<boolean>;
|
|
103
133
|
/**
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { DataTableProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* DataTable - A table driven by data: give it rows and column definitions
|
|
4
|
+
* and it renders, sorts and lays out the columns itself.
|
|
5
|
+
*
|
|
6
|
+
* Use it for interactive data tables. For a static table whose markup you
|
|
7
|
+
* want to write by hand, use `Table` and its row and cell components, which
|
|
8
|
+
* this is built from.
|
|
9
|
+
*
|
|
10
|
+
* ### Sorting
|
|
11
|
+
*
|
|
12
|
+
* Mark a column `sortable` and clicking its header reports a new sort through
|
|
13
|
+
* `onSortChange`: ascending first, then toggling. By default the table only
|
|
14
|
+
* reports it, expecting the server to send the rows back sorted, and passes
|
|
15
|
+
* the column's `sortKey` along for the request. Give the column a `sortFn` to
|
|
16
|
+
* sort the rows in the browser instead.
|
|
17
|
+
*
|
|
18
|
+
* ### Column layout
|
|
19
|
+
*
|
|
20
|
+
* Widths, frozen columns, order and hidden columns live in one
|
|
21
|
+
* `DataTableColumnState`, keyed by column id. Read it from
|
|
22
|
+
* `onColumnStateChange`, store it, and pass it back through
|
|
23
|
+
* `defaultColumnState` to remember a user's layout.
|
|
24
|
+
*
|
|
25
|
+
* With `reorderableColumns` the user can move columns, by dragging the grip
|
|
26
|
+
* in the header or from the header menu. A column only moves among columns
|
|
27
|
+
* frozen to the same edge, or among the unfrozen ones.
|
|
28
|
+
*
|
|
29
|
+
* ### Nested rows
|
|
30
|
+
*
|
|
31
|
+
* `getSubRows` nests rows under rows, to any depth, with an expand button
|
|
32
|
+
* per parent; `expandedRowIds` or `defaultExpanded` say which are open.
|
|
33
|
+
*
|
|
34
|
+
* ### Selection and hidden columns
|
|
35
|
+
*
|
|
36
|
+
* `selectionMode` adds a checkbox (or radio) column; the selection is a list
|
|
37
|
+
* of row ids, reported through `onSelectionChange`. `hideableColumns` adds
|
|
38
|
+
* "Hide column" to the header menu, and `DataTableColumnPicker` brings
|
|
39
|
+
* hidden columns back.
|
|
40
|
+
*
|
|
41
|
+
* @category Components
|
|
42
|
+
* @subcategory Data Display
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```tsx
|
|
46
|
+
* const columns: DataTableColumn<Employee>[] = [
|
|
47
|
+
* { id: 'name', header: 'Name', cell: (row) => row.name, sortable: true },
|
|
48
|
+
* { id: 'role', header: 'Role', cell: (row) => row.role },
|
|
49
|
+
* ];
|
|
50
|
+
*
|
|
51
|
+
* <DataTable
|
|
52
|
+
* data={employees}
|
|
53
|
+
* columns={columns}
|
|
54
|
+
* sort={sort}
|
|
55
|
+
* onSortChange={(next, sortKey) => {
|
|
56
|
+
* setSort(next);
|
|
57
|
+
* refetch({ sortBy: sortKey, descending: next?.direction === 'desc' });
|
|
58
|
+
* }}
|
|
59
|
+
* isLoading={isFetching}
|
|
60
|
+
* />
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```tsx
|
|
65
|
+
* // Resizable, freezable columns whose layout is remembered
|
|
66
|
+
* <DataTable
|
|
67
|
+
* data={rows}
|
|
68
|
+
* columns={columns}
|
|
69
|
+
* resizableColumns
|
|
70
|
+
* freezeControls
|
|
71
|
+
* defaultColumnState={loadLayout()}
|
|
72
|
+
* onColumnStateChange={saveLayout}
|
|
73
|
+
* />
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @see {@link Table} - the building blocks, for hand-written tables
|
|
77
|
+
*/
|
|
78
|
+
declare const DataTable: <Row>(props: DataTableProps<Row>) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
79
|
+
export default DataTable;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { DataTableColumn, DataTableColumnState } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Props of {@link DataTableColumnPicker}.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* <DataTableColumnPicker
|
|
9
|
+
* columns={columns}
|
|
10
|
+
* columnState={columnState}
|
|
11
|
+
* onColumnStateChange={setColumnState}
|
|
12
|
+
* />
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export interface DataTableColumnPickerProps<Row> {
|
|
16
|
+
/** The same columns the table gets. */
|
|
17
|
+
columns: DataTableColumn<Row>[];
|
|
18
|
+
/** The table's column state, as passed to its `columnState`. */
|
|
19
|
+
columnState?: Partial<DataTableColumnState>;
|
|
20
|
+
/** Called with the whole new column state when a column is shown or hidden. */
|
|
21
|
+
onColumnStateChange: (columnState: DataTableColumnState) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Text of the button that opens the list.
|
|
24
|
+
* @default 'Columns'
|
|
25
|
+
*/
|
|
26
|
+
label?: ReactNode;
|
|
27
|
+
/** Class name of the button. */
|
|
28
|
+
className?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* DataTableColumnPicker - A button that opens a checklist of a
|
|
32
|
+
* {@link DataTable}'s columns, to show or hide each one.
|
|
33
|
+
*
|
|
34
|
+
* Place it wherever the page keeps its table controls, such as next to the
|
|
35
|
+
* filters, and share a controlled `columnState` between it and the table.
|
|
36
|
+
* Columns are listed in display order. Columns with `hideable: false` stay
|
|
37
|
+
* checked and cannot be cleared, and neither can the last one shown.
|
|
38
|
+
*
|
|
39
|
+
* @category Components
|
|
40
|
+
* @subcategory Data Display
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```tsx
|
|
44
|
+
* const [columnState, setColumnState] = useState<Partial<DataTableColumnState>>({});
|
|
45
|
+
*
|
|
46
|
+
* <DataTableColumnPicker
|
|
47
|
+
* columns={columns}
|
|
48
|
+
* columnState={columnState}
|
|
49
|
+
* onColumnStateChange={setColumnState}
|
|
50
|
+
* />
|
|
51
|
+
* <DataTable
|
|
52
|
+
* data={rows}
|
|
53
|
+
* columns={columns}
|
|
54
|
+
* columnState={columnState}
|
|
55
|
+
* onColumnStateChange={setColumnState}
|
|
56
|
+
* />
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @see {@link DataTable} - `hideableColumns` adds "Hide column" to its header menu
|
|
60
|
+
*
|
|
61
|
+
* @accessibility
|
|
62
|
+
* - The list is a multi-select listbox: arrows move, Space or Enter toggles
|
|
63
|
+
* - Escape closes it and returns focus to the button
|
|
64
|
+
*/
|
|
65
|
+
export declare const DataTableColumnPicker: <Row>({ columns, columnState, onColumnStateChange, label, className, }: DataTableColumnPickerProps<Row>) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
66
|
+
export default DataTableColumnPicker;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** The empty header above the expand buttons. */
|
|
2
|
+
export declare const ExpanderHeaderCell: () => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
3
|
+
interface ExpanderCellProps {
|
|
4
|
+
hasChildren: boolean;
|
|
5
|
+
isExpanded: boolean;
|
|
6
|
+
onToggle: () => void;
|
|
7
|
+
}
|
|
8
|
+
/** A row's expand/collapse button, or nothing for a row without children. */
|
|
9
|
+
export declare const ExpanderCell: ({ hasChildren, isExpanded, onToggle, }: ExpanderCellProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DataTableSelectionMode } from './types';
|
|
2
|
+
interface SelectionHeaderCellProps {
|
|
3
|
+
mode: Exclude<DataTableSelectionMode, 'none'>;
|
|
4
|
+
checked: boolean;
|
|
5
|
+
indeterminate: boolean;
|
|
6
|
+
disabled: boolean;
|
|
7
|
+
onToggle: () => void;
|
|
8
|
+
}
|
|
9
|
+
/** The header of the selection column: select-all, or a label for radios. */
|
|
10
|
+
export declare const SelectionHeaderCell: ({ mode, checked, indeterminate, disabled, onToggle, }: SelectionHeaderCellProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
interface SelectionCellProps {
|
|
12
|
+
mode: Exclude<DataTableSelectionMode, 'none'>;
|
|
13
|
+
/** Groups the radios of one table. */
|
|
14
|
+
name: string;
|
|
15
|
+
rowId: string;
|
|
16
|
+
label: string;
|
|
17
|
+
checked: boolean;
|
|
18
|
+
/** Some of the rows below are selected, not all. */
|
|
19
|
+
indeterminate?: boolean;
|
|
20
|
+
disabled: boolean;
|
|
21
|
+
onChange: (checked: boolean) => void;
|
|
22
|
+
}
|
|
23
|
+
/** A row's checkbox or radio. */
|
|
24
|
+
export declare const SelectionCell: ({ mode, name, rowId, label, checked, indeterminate, disabled, onChange, }: SelectionCellProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Theme } from '@emotion/react';
|
|
2
|
+
export declare const root: import("@emotion/react").SerializedStyles;
|
|
3
|
+
/** A header button that looks like the header text it wraps. */
|
|
4
|
+
export declare const sortButton: (theme: Theme) => import("@emotion/react").SerializedStyles;
|
|
5
|
+
export declare const headerLabel: import("@emotion/react").SerializedStyles;
|
|
6
|
+
/** Rows stay readable but plainly stale while a re-fetch is in flight. */
|
|
7
|
+
export declare const busyBody: import("@emotion/react").SerializedStyles;
|
|
8
|
+
export declare const clickableRow: (theme: Theme) => import("@emotion/react").SerializedStyles;
|
|
9
|
+
export declare const stateCell: (theme: Theme) => import("@emotion/react").SerializedStyles;
|
|
10
|
+
/**
|
|
11
|
+
* Every header cell. Relative so the grip, the menu and the drop line have
|
|
12
|
+
* something to sit against; a frozen header keeps its sticky position, whose
|
|
13
|
+
* rule in TableBase is the more specific one.
|
|
14
|
+
*/
|
|
15
|
+
export declare const header: (theme: Theme) => import("@emotion/react").SerializedStyles;
|
|
16
|
+
/** Room on the right for the menu, so long header text never runs under it. */
|
|
17
|
+
export declare const headerWithMenu: import("@emotion/react").SerializedStyles;
|
|
18
|
+
/**
|
|
19
|
+
* Pinned to the right edge of the header, clear of the resize handle, so it
|
|
20
|
+
* lines up from column to column whatever the header text.
|
|
21
|
+
*/
|
|
22
|
+
export declare const headerMenu: import("@emotion/react").SerializedStyles;
|
|
23
|
+
/**
|
|
24
|
+
* Sits in the cell's left padding, so showing it never moves the header
|
|
25
|
+
* text. Hidden until the header is hovered, like the column menu.
|
|
26
|
+
*/
|
|
27
|
+
export declare const grip: import("@emotion/react").SerializedStyles;
|
|
28
|
+
/** The checkbox or radio column: narrow, its control centred. */
|
|
29
|
+
export declare const selectionCell: import("@emotion/react").SerializedStyles;
|
|
30
|
+
export declare const selectedRow: (theme: Theme) => import("@emotion/react").SerializedStyles;
|
|
31
|
+
export declare const visuallyHidden: import("@emotion/react").SerializedStyles;
|
|
32
|
+
/** The expand/collapse column. */
|
|
33
|
+
export declare const expanderCell: import("@emotion/react").SerializedStyles;
|
|
34
|
+
export declare const expanderButton: (theme: Theme) => import("@emotion/react").SerializedStyles;
|
|
35
|
+
/**
|
|
36
|
+
* A row given a `background` by getRowProps. The colour arrives as a custom
|
|
37
|
+
* property, so every tinted row shares this one class whatever its colour.
|
|
38
|
+
* Layered over white: frozen cells must stay opaque. Hover and selection
|
|
39
|
+
* rules come later or weigh more, so they paint over it.
|
|
40
|
+
*/
|
|
41
|
+
export declare const tintedRow: import("@emotion/react").SerializedStyles;
|
|
42
|
+
/** A row with children, as NestedTable draws its group rows. */
|
|
43
|
+
export declare const parentRow: (theme: Theme) => import("@emotion/react").SerializedStyles;
|
|
44
|
+
/** A tinted row with children: the row's tint over the parent grey. */
|
|
45
|
+
export declare const tintedParentRow: (theme: Theme) => import("@emotion/react").SerializedStyles;
|
|
46
|
+
/** A selected row with children: the selected tint over the parent grey. */
|
|
47
|
+
export declare const selectedParentRow: (theme: Theme) => import("@emotion/react").SerializedStyles;
|