@mortenbrudvik/waveui 0.13.0 → 0.14.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.
- package/README.md +302 -49
- package/dist/components/data-display/Avatar.context.cjs.map +1 -1
- package/dist/components/data-display/Avatar.context.mjs.map +1 -1
- package/dist/components/data-display/List.cjs +1 -1
- package/dist/components/data-display/List.cjs.map +1 -1
- package/dist/components/data-display/List.mjs +245 -195
- package/dist/components/data-display/List.mjs.map +1 -1
- package/dist/components/data-display/List.registry.cjs.map +1 -1
- package/dist/components/data-display/List.registry.mjs.map +1 -1
- package/dist/components/layout/Overflow.cjs +1 -1
- package/dist/components/layout/Overflow.cjs.map +1 -1
- package/dist/components/layout/Overflow.mjs +240 -192
- package/dist/components/layout/Overflow.mjs.map +1 -1
- package/dist/components/layout/Overflow.store.cjs +2 -0
- package/dist/components/layout/Overflow.store.cjs.map +1 -0
- package/dist/components/layout/Overflow.store.mjs +209 -0
- package/dist/components/layout/Overflow.store.mjs.map +1 -0
- package/dist/components/navigation/Breadcrumb.cjs +1 -1
- package/dist/components/navigation/Breadcrumb.cjs.map +1 -1
- package/dist/components/navigation/Breadcrumb.mjs +239 -84
- package/dist/components/navigation/Breadcrumb.mjs.map +1 -1
- package/dist/components/overlays/Dialog.slots.cjs +1 -1
- package/dist/components/overlays/Dialog.slots.cjs.map +1 -1
- package/dist/components/overlays/Dialog.slots.mjs +19 -15
- package/dist/components/overlays/Dialog.slots.mjs.map +1 -1
- package/dist/components/overlays/TeachingPopover.cjs +1 -1
- package/dist/components/overlays/TeachingPopover.cjs.map +1 -1
- package/dist/components/overlays/TeachingPopover.context.cjs +2 -0
- package/dist/components/overlays/TeachingPopover.context.cjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.context.mjs +51 -0
- package/dist/components/overlays/TeachingPopover.context.mjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.mjs +15 -185
- package/dist/components/overlays/TeachingPopover.mjs.map +1 -1
- package/dist/components/overlays/TeachingPopover.parts.cjs +2 -0
- package/dist/components/overlays/TeachingPopover.parts.cjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.parts.mjs +405 -0
- package/dist/components/overlays/TeachingPopover.parts.mjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.root.cjs +2 -0
- package/dist/components/overlays/TeachingPopover.root.cjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.root.mjs +158 -0
- package/dist/components/overlays/TeachingPopover.root.mjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.stack.cjs +2 -0
- package/dist/components/overlays/TeachingPopover.stack.cjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.stack.mjs +86 -0
- package/dist/components/overlays/TeachingPopover.stack.mjs.map +1 -0
- package/dist/components/table/DataGrid.cjs +1 -1
- package/dist/components/table/DataGrid.cjs.map +1 -1
- package/dist/components/table/DataGrid.mjs +540 -311
- package/dist/components/table/DataGrid.mjs.map +1 -1
- package/dist/components/table/Table.cjs +1 -1
- package/dist/components/table/Table.cjs.map +1 -1
- package/dist/components/table/Table.mjs +183 -60
- package/dist/components/table/Table.mjs.map +1 -1
- package/dist/components/table/Table.shared.cjs +2 -0
- package/dist/components/table/Table.shared.cjs.map +1 -0
- package/dist/components/table/Table.shared.mjs +65 -0
- package/dist/components/table/Table.shared.mjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1755 -162
- package/dist/index.d.ts +1755 -162
- package/dist/index.mjs +135 -132
- package/dist/lib/breadcrumb.cjs +2 -0
- package/dist/lib/breadcrumb.cjs.map +1 -0
- package/dist/lib/breadcrumb.mjs +26 -0
- package/dist/lib/breadcrumb.mjs.map +1 -0
- package/dist/lib/classNames.cjs +1 -1
- package/dist/lib/classNames.cjs.map +1 -1
- package/dist/lib/classNames.mjs +66 -38
- package/dist/lib/classNames.mjs.map +1 -1
- package/dist/lib/events.cjs +1 -1
- package/dist/lib/events.cjs.map +1 -1
- package/dist/lib/events.mjs +35 -8
- package/dist/lib/events.mjs.map +1 -1
- package/dist/lib/icons.cjs +1 -1
- package/dist/lib/icons.cjs.map +1 -1
- package/dist/lib/icons.mjs +34 -20
- package/dist/lib/icons.mjs.map +1 -1
- package/dist/lib/table.cjs +2 -0
- package/dist/lib/table.cjs.map +1 -0
- package/dist/lib/table.mjs +16 -0
- package/dist/lib/table.mjs.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -691,7 +691,12 @@ export declare interface BadgeProps extends React_2.HTMLAttributes<HTMLSpanEleme
|
|
|
691
691
|
* A breadcrumb trail: a `<nav aria-label="Breadcrumb">` landmark with an ordered list. Each child
|
|
692
692
|
* is placed in its own list item (Fragments are opened, so each of their items gets one too); from
|
|
693
693
|
* the second one on, the item begins with a decorative separator chevron that is mirrored in
|
|
694
|
-
* right-to-left layouts.
|
|
694
|
+
* right-to-left layouts (`divider` replaces or hides it).
|
|
695
|
+
*
|
|
696
|
+
* `maxDisplayedItems` collapses the middle of a long trail into a "…" menu button, and
|
|
697
|
+
* `overflow="auto"` collapses it to the room it has instead (a "…" menu button stands in for the
|
|
698
|
+
* hidden middle items); `size` sets the text step and `focusMode="arrow"` makes the trail one Tab
|
|
699
|
+
* stop with arrow-key navigation.
|
|
695
700
|
*
|
|
696
701
|
* `Breadcrumb.Item` is also exported as `BreadcrumbItem`: React Server Components import the flat
|
|
697
702
|
* name, because dotted access needs a client file.
|
|
@@ -703,21 +708,26 @@ export declare interface BadgeProps extends React_2.HTMLAttributes<HTMLSpanEleme
|
|
|
703
708
|
* </Breadcrumb>
|
|
704
709
|
*/
|
|
705
710
|
export declare const Breadcrumb: {
|
|
706
|
-
({ children, className, ref, ...rest }: BreadcrumbProps): React_2.JSX.Element;
|
|
711
|
+
({ children, maxDisplayedItems, overflowIndex, overflow, overflowLabel, size, focusMode, divider, className, onKeyDown, onFocus, ref, ...rest }: BreadcrumbProps): React_2.JSX.Element;
|
|
707
712
|
displayName: string;
|
|
708
713
|
} & {
|
|
709
714
|
Item: typeof BreadcrumbItem;
|
|
710
715
|
};
|
|
711
716
|
|
|
712
717
|
/**
|
|
713
|
-
* Breadcrumb: `root` on the `<nav>`; `list` on
|
|
714
|
-
* on each
|
|
718
|
+
* Breadcrumb: `root` on the `<nav>`; `list` on the trail's list element (its `<ol>`, or with
|
|
719
|
+
* `overflow="auto"` the Overflow's `role="list"` element); `listItem` on each `<li>`; `divider` on
|
|
720
|
+
* each separator (the default chevron `<svg>`, or the `<span>` of a custom `divider`);
|
|
721
|
+
* `overflowButton` on the "…" `<button>` that opens the menu of the collapsed items, with
|
|
722
|
+
* `maxDisplayedItems` and with `overflow="auto"`. With `overflow="auto"` the "…" list item is the
|
|
723
|
+
* Overflow's button wrapper, not an `<li>`, so it carries no `listItem` class.
|
|
715
724
|
*/
|
|
716
725
|
export declare const breadcrumbClassNames: {
|
|
717
726
|
readonly root: "wave-breadcrumb";
|
|
718
727
|
readonly list: "wave-breadcrumb__list";
|
|
719
728
|
readonly listItem: "wave-breadcrumb__list-item";
|
|
720
729
|
readonly divider: "wave-breadcrumb__divider";
|
|
730
|
+
readonly overflowButton: "wave-breadcrumb__overflow-button";
|
|
721
731
|
};
|
|
722
732
|
|
|
723
733
|
/**
|
|
@@ -852,6 +862,58 @@ export declare interface BreadcrumbProps extends React_2.HTMLAttributes<HTMLElem
|
|
|
852
862
|
* the items of a conditional group (`{isAdmin && <>…</>}`) each get their own list item too.
|
|
853
863
|
*/
|
|
854
864
|
children: React_2.ReactNode;
|
|
865
|
+
/**
|
|
866
|
+
* The most items the trail shows, the overflow button not counted. A longer trail collapses its
|
|
867
|
+
* middle items, from `overflowIndex`, into a "…" button that opens a menu of them (a link item
|
|
868
|
+
* becomes a `Menu.ItemLink`, an `asChild` element of a component (a router link) a
|
|
869
|
+
* `Menu.ItemLink` rendered by that component with the element's own props, its `as` included,
|
|
870
|
+
* a button item a `Menu.Item`). The first item and the last `current` item are never hidden.
|
|
871
|
+
* Without it the whole trail is shown.
|
|
872
|
+
* A value below 1 means 6, as in `partitionBreadcrumbItems`. Ignored with `overflow="auto"`.
|
|
873
|
+
*/
|
|
874
|
+
maxDisplayedItems?: number;
|
|
875
|
+
/**
|
|
876
|
+
* The index of the first collapsed item (with `maxDisplayedItems`). It is at least 1, so the
|
|
877
|
+
* first item stays, and at most `maxDisplayedItems - 1`. Ignored with `overflow="auto"`.
|
|
878
|
+
* @default 1
|
|
879
|
+
*/
|
|
880
|
+
overflowIndex?: number;
|
|
881
|
+
/**
|
|
882
|
+
* `'auto'` fits the trail to its room: the middle items that do not fit are hidden, from the
|
|
883
|
+
* start of the trail; the first item and the last `current` item never are. A "…" list item
|
|
884
|
+
* with its own separator then stands just before the first hidden item (so the trail reads
|
|
885
|
+
* "Home › … › Parent › Page"), and its button (`overflowLabel`) opens a menu of the hidden
|
|
886
|
+
* items, in trail order. When even the first and the current item do not fit, the button covers
|
|
887
|
+
* the end of the trail. The room decides alone: `maxDisplayedItems` and `overflowIndex` do not
|
|
888
|
+
* apply. The trail list is then an `Overflow` (a `role="list"` element with the `wave-overflow`
|
|
889
|
+
* class and 4px of padding) that measures with `ResizeObserver`. `'none'` shows the trail as
|
|
890
|
+
* the other props say.
|
|
891
|
+
* @default 'none'
|
|
892
|
+
*/
|
|
893
|
+
overflow?: 'none' | 'auto';
|
|
894
|
+
/**
|
|
895
|
+
* Accessible name of the overflow button (with `maxDisplayedItems` or `overflow="auto"`).
|
|
896
|
+
* @default "More items"
|
|
897
|
+
*/
|
|
898
|
+
overflowLabel?: string;
|
|
899
|
+
/**
|
|
900
|
+
* Text and divider size.
|
|
901
|
+
* @default 'medium'
|
|
902
|
+
*/
|
|
903
|
+
size?: CoreSize;
|
|
904
|
+
/**
|
|
905
|
+
* `'tab'`: every link is a Tab stop. `'arrow'`: the trail is one Tab stop (the last focused link
|
|
906
|
+
* or button, at first the first one) and the arrow keys (mirrored in right-to-left layouts),
|
|
907
|
+
* Home and End move between its links and the overflow button.
|
|
908
|
+
* @default 'tab'
|
|
909
|
+
*/
|
|
910
|
+
focusMode?: FocusMode;
|
|
911
|
+
/**
|
|
912
|
+
* The separator between items; a decorative `<span>`. `null` or `undefined` keep the chevron
|
|
913
|
+
* (mirrored in right-to-left layouts); `false`, or content that renders nothing, hides the
|
|
914
|
+
* separators. A custom divider is not mirrored.
|
|
915
|
+
*/
|
|
916
|
+
divider?: Slot<'span'>;
|
|
855
917
|
/** Ref to the `<nav>` element. */
|
|
856
918
|
ref?: React_2.Ref<HTMLElement>;
|
|
857
919
|
}
|
|
@@ -3039,6 +3101,46 @@ export declare interface CounterBadgeProps extends React_2.HTMLAttributes<HTMLSp
|
|
|
3039
3101
|
ref?: React_2.Ref<HTMLSpanElement>;
|
|
3040
3102
|
}
|
|
3041
3103
|
|
|
3104
|
+
/**
|
|
3105
|
+
* Creates a column for DataGrid's `columns`, typed by the grid's items, with `sortable` resolved
|
|
3106
|
+
* (`true` when the column has `compare`, unless `sortable` says otherwise). Returns a new object
|
|
3107
|
+
* with every member of {@link CreateTableColumnOptions}; the options are not changed. The
|
|
3108
|
+
* function is pure and server-safe.
|
|
3109
|
+
*
|
|
3110
|
+
* @example
|
|
3111
|
+
* const columns = [
|
|
3112
|
+
* createTableColumn<Person>({
|
|
3113
|
+
* columnId: 'name',
|
|
3114
|
+
* label: 'Name',
|
|
3115
|
+
* compare: (a, b) => a.name.localeCompare(b.name),
|
|
3116
|
+
* renderCell: (person) => person.name,
|
|
3117
|
+
* }),
|
|
3118
|
+
* ];
|
|
3119
|
+
*/
|
|
3120
|
+
export declare function createTableColumn<T>(options: CreateTableColumnOptions<T>): DataGridColumn<T>;
|
|
3121
|
+
|
|
3122
|
+
/** Options of {@link createTableColumn}: a DataGrid column, with `columnId` required. */
|
|
3123
|
+
export declare interface CreateTableColumnOptions<T> {
|
|
3124
|
+
/** The column's id: the header cell's `columnId` and the `columnId` of the grid's sort. */
|
|
3125
|
+
columnId: string;
|
|
3126
|
+
/** The header content, unless `renderHeaderCell` is given. */
|
|
3127
|
+
label?: React_2.ReactNode;
|
|
3128
|
+
/**
|
|
3129
|
+
* Orders two items of the column, as `Array.prototype.sort` does (negative: `a` first). Makes the
|
|
3130
|
+
* column sortable unless `sortable` is `false`.
|
|
3131
|
+
*/
|
|
3132
|
+
compare?: (a: T, b: T) => number;
|
|
3133
|
+
/** Renders the column's cell content for one item. Without it, the column's cells are empty. */
|
|
3134
|
+
renderCell?: (item: T) => React_2.ReactNode;
|
|
3135
|
+
/** Renders the header content in place of `label`. */
|
|
3136
|
+
renderHeaderCell?: () => React_2.ReactNode;
|
|
3137
|
+
/**
|
|
3138
|
+
* Whether the header is a sort button.
|
|
3139
|
+
* @default compare !== undefined
|
|
3140
|
+
*/
|
|
3141
|
+
sortable?: boolean;
|
|
3142
|
+
}
|
|
3143
|
+
|
|
3042
3144
|
/**
|
|
3043
3145
|
* Creates a handle. It touches no DOM, so a module-scope handle is safe during server rendering;
|
|
3044
3146
|
* a dispatch on the server does nothing (it returns the id), so no toast is carried from one
|
|
@@ -3064,49 +3166,71 @@ export declare function createToaster(): ToasterHandle;
|
|
|
3064
3166
|
* the visual column, so a grouped header with spanning cells works), Enter/F2 to interact with a
|
|
3065
3167
|
* cell's widgets and Escape to return to the cell. A composite widget in a cell (a Toolbar,
|
|
3066
3168
|
* RadioGroup, TabList, …) is entered with Enter/F2 like a text field; it manages its own tab
|
|
3067
|
-
* indexes, so it keeps its own Tab stop. Supports sortable columns (
|
|
3068
|
-
*
|
|
3069
|
-
* row selection with a select-all header checkbox.
|
|
3169
|
+
* indexes, so it keeps its own Tab stop. Supports sortable columns (`onSortChange` reports the new
|
|
3170
|
+
* sort; a grid with `items` orders its rows by the sorted column's `compare`, otherwise the consumer
|
|
3171
|
+
* orders them) and single or multiple row selection with a select-all header checkbox.
|
|
3172
|
+
*
|
|
3173
|
+
* Selection is made with the row's control, Space on a cell, and, with `selectOnRowClick`, a
|
|
3174
|
+
* click on the row. `selectionAppearance` picks the fill of a selected row, `subtleSelection`
|
|
3175
|
+
* hides the unchecked controls until their row (or, for select-all, the grid) is hovered or holds
|
|
3176
|
+
* focus, and a row's `selectionCellProps` disables, hides or names its control. The selection
|
|
3177
|
+
* column comes first; a `DataGrid.SelectionCell` places it elsewhere in a row.
|
|
3178
|
+
*
|
|
3179
|
+
* The grid is composed from its parts, or rendered from data: with `items` and typed `columns`
|
|
3180
|
+
* (`DataGridColumn<T>`, see `createTableColumn`) it renders the header, the rows and the cells
|
|
3181
|
+
* itself, and `DataGrid.Body` also takes a render function that returns each item's row. Rows
|
|
3182
|
+
* rendered from `items` take their `rowId` from `getRowId` (by default the item's index).
|
|
3070
3183
|
*
|
|
3071
3184
|
* Sub-components are available as `DataGrid.Header`, `DataGrid.HeaderCell`, `DataGrid.Body`,
|
|
3072
|
-
* `DataGrid.Row` and `DataGrid.
|
|
3073
|
-
* `DataGridHeader`, `DataGridHeaderCell`, `DataGridBody`, `DataGridRow
|
|
3074
|
-
* form React Server Components can import).
|
|
3185
|
+
* `DataGrid.Row`, `DataGrid.Cell` and `DataGrid.SelectionCell` in client components, and as the
|
|
3186
|
+
* flat exports `DataGridHeader`, `DataGridHeaderCell`, `DataGridBody`, `DataGridRow`,
|
|
3187
|
+
* `DataGridCell` and `DataGridSelectionCell` (the form React Server Components can import).
|
|
3075
3188
|
*/
|
|
3076
|
-
export declare const DataGrid: {
|
|
3077
|
-
(props: DataGridProps): React_2.JSX.Element;
|
|
3078
|
-
displayName: string;
|
|
3079
|
-
} & {
|
|
3189
|
+
export declare const DataGrid: typeof DataGridRoot & {
|
|
3080
3190
|
Header: {
|
|
3081
3191
|
({ children, className, ref, ...rest }: DataGridHeaderProps): React_2.JSX.Element;
|
|
3082
3192
|
displayName: string;
|
|
3083
3193
|
};
|
|
3084
3194
|
HeaderCell: {
|
|
3085
|
-
({ columnId, sortable, children, className, onClick, ref, ...rest }: DataGridHeaderCellProps): React_2.JSX.Element;
|
|
3195
|
+
({ columnId, sortable, sortIcon, children, className, onClick, ref, ...rest }: DataGridHeaderCellProps): React_2.JSX.Element;
|
|
3086
3196
|
displayName: string;
|
|
3087
3197
|
};
|
|
3088
3198
|
Body: {
|
|
3089
|
-
({ children, className, ref, ...rest }: DataGridBodyProps): React_2.JSX.Element;
|
|
3199
|
+
<T>({ children, className, ref, ...rest }: DataGridBodyProps<T>): React_2.JSX.Element;
|
|
3090
3200
|
displayName: string;
|
|
3091
3201
|
};
|
|
3092
3202
|
Row: {
|
|
3093
|
-
({ rowId, selectionLabel, children, className, onKeyDown, ref, ...rest }: DataGridRowProps): React_2.JSX.Element;
|
|
3203
|
+
({ rowId: rowIdProp, selectionLabel, selectionCellProps, children, className, onClick, onKeyDown, ref, ...rest }: DataGridRowProps): React_2.JSX.Element;
|
|
3094
3204
|
displayName: string;
|
|
3095
3205
|
};
|
|
3096
3206
|
Cell: {
|
|
3097
3207
|
({ children, className, ref, ...rest }: DataGridCellProps): React_2.JSX.Element;
|
|
3098
3208
|
displayName: string;
|
|
3099
3209
|
};
|
|
3210
|
+
SelectionCell: {
|
|
3211
|
+
({ disabled, invisible, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, controlRef, ref, ...rest }: DataGridSelectionCellProps): React_2.JSX.Element | null;
|
|
3212
|
+
displayName: string;
|
|
3213
|
+
};
|
|
3100
3214
|
};
|
|
3101
3215
|
|
|
3102
|
-
/** Props of every DataGrid, whatever sort API it uses. */
|
|
3103
|
-
export declare interface DataGridBaseProps extends React_2.HTMLAttributes<HTMLTableElement> {
|
|
3216
|
+
/** Props of every DataGrid, whatever sort API it uses. `T` is the type of its `items`. */
|
|
3217
|
+
export declare interface DataGridBaseProps<T = unknown> extends React_2.HTMLAttributes<HTMLTableElement> {
|
|
3218
|
+
/**
|
|
3219
|
+
* The row id of an item: the `rowId` of its row (for selection), for rows rendered from `items`.
|
|
3220
|
+
* A row's own `rowId` wins. Ids must be unique (a duplicate warns in development).
|
|
3221
|
+
* @default the item's index in `items`, as a string
|
|
3222
|
+
*/
|
|
3223
|
+
getRowId?: (item: T) => string;
|
|
3104
3224
|
/**
|
|
3105
3225
|
* Column definitions. When given and no `DataGrid.Header` child is present, the header row
|
|
3106
|
-
* (including the selection column) is rendered from them: `
|
|
3107
|
-
* `columnId`, `label` its content, `sortable`
|
|
3226
|
+
* (including the selection column) is rendered from them: `columnId` becomes the header cell's
|
|
3227
|
+
* `columnId`, `renderHeaderCell()` (else `label`) its content, and `sortable` (by default, having
|
|
3228
|
+
* `compare`) makes it a sort button. With `items` and no `DataGrid.Body` child, the body rows are
|
|
3229
|
+
* rendered from them too: one `DataGrid.Cell` per column, filled by `renderCell`. Those rows
|
|
3230
|
+
* render again whenever the array changes, so keep it stable (defined outside the component, or
|
|
3231
|
+
* memoised).
|
|
3108
3232
|
*/
|
|
3109
|
-
columns?: readonly DataGridColumn[];
|
|
3233
|
+
columns?: readonly DataGridColumn<T>[];
|
|
3110
3234
|
/**
|
|
3111
3235
|
* Row selection mode. `'multiple'` adds a checkbox column with a "Select all rows" header
|
|
3112
3236
|
* checkbox; `'single'` adds a radio column (its header reads "Selection" to assistive
|
|
@@ -3120,6 +3244,33 @@ export declare interface DataGridBaseProps extends React_2.HTMLAttributes<HTMLTa
|
|
|
3120
3244
|
* `selectionLabel`.
|
|
3121
3245
|
*/
|
|
3122
3246
|
labels?: DataGridLabels;
|
|
3247
|
+
/**
|
|
3248
|
+
* Whether a click on a body row toggles its selection in a selectable grid (single mode: selects
|
|
3249
|
+
* the row alone, or clears it). The row's own `onClick` runs first; calling `preventDefault()`
|
|
3250
|
+
* in it keeps the selection. A click never toggles when it lands on an interactive element in
|
|
3251
|
+
* the row (a link, a button, an input, a label, an element with `tabindex` or a widget role, the
|
|
3252
|
+
* selection control included), comes from a popup portaled from the row (a Menu, a Popover), or
|
|
3253
|
+
* ends a text selection in the row (a drag across its text); nor does a click on a header row
|
|
3254
|
+
* or on a row whose selection is disabled (`selectionCellProps.disabled`). Space on a cell
|
|
3255
|
+
* toggles the row either way.
|
|
3256
|
+
* @default false
|
|
3257
|
+
*/
|
|
3258
|
+
selectOnRowClick?: boolean;
|
|
3259
|
+
/**
|
|
3260
|
+
* How a selected row is filled: `'brand'` with the selected token, `'neutral'` with the subtle
|
|
3261
|
+
* selected token, `'none'` not at all (the selection control, `aria-selected` and, in forced
|
|
3262
|
+
* colors, the row's outline still show it). Rendered as `data-selection-appearance` on the grid.
|
|
3263
|
+
* @default 'brand'
|
|
3264
|
+
*/
|
|
3265
|
+
selectionAppearance?: DataGridSelectionAppearance;
|
|
3266
|
+
/**
|
|
3267
|
+
* Subtle selection controls: a row's control is transparent while the row is not selected, until
|
|
3268
|
+
* the row is hovered or holds focus, and the select-all checkbox while no row is selected, until
|
|
3269
|
+
* the grid is hovered or holds focus. Forced colors and a coarse pointer (touch) always draw
|
|
3270
|
+
* them; they stay focusable and named. Rendered as `data-subtle-selection` on the grid.
|
|
3271
|
+
* @default false
|
|
3272
|
+
*/
|
|
3273
|
+
subtleSelection?: boolean;
|
|
3123
3274
|
/**
|
|
3124
3275
|
* Controlled selected row ids (`DataGrid.Row` `rowId`). In single mode pass at most one id: with
|
|
3125
3276
|
* several, only the first one whose row is rendered is selected (a development warning says so).
|
|
@@ -3128,12 +3279,13 @@ export declare interface DataGridBaseProps extends React_2.HTMLAttributes<HTMLTa
|
|
|
3128
3279
|
/** Initially selected row ids (uncontrolled). In single mode, at most one (see `selectedItems`). */
|
|
3129
3280
|
defaultSelectedItems?: readonly string[];
|
|
3130
3281
|
/**
|
|
3131
|
-
* Called with the new selected row ids when the selection changes
|
|
3132
|
-
*
|
|
3133
|
-
*
|
|
3134
|
-
* re-added with the same `rowId` before
|
|
3282
|
+
* Called with the new selected row ids when the selection changes, then `details` (`{ event }`,
|
|
3283
|
+
* the click or key press behind the change). Ids of rows that are not rendered are left out of
|
|
3284
|
+
* the reported selection and of the select-all state, so the next change drops them. Until that
|
|
3285
|
+
* change an uncontrolled grid still holds such an id: a row re-added with the same `rowId` before
|
|
3286
|
+
* then is shown selected again.
|
|
3135
3287
|
*/
|
|
3136
|
-
onSelectedItemsChange?: (selectedItems: string[]) => void;
|
|
3288
|
+
onSelectedItemsChange?: (selectedItems: string[], details?: DataGridSelectedItemsChangeDetails) => void;
|
|
3137
3289
|
/** @deprecated Use `selectedItems` (an array). A `Set` or an array is accepted. */
|
|
3138
3290
|
selectedKeys?: ReadonlySet<string> | readonly string[];
|
|
3139
3291
|
/** @deprecated Use `defaultSelectedItems` (an array). A `Set` or an array is accepted. */
|
|
@@ -3148,15 +3300,22 @@ export declare interface DataGridBaseProps extends React_2.HTMLAttributes<HTMLTa
|
|
|
3148
3300
|
* without one they are dropped with a development warning. Name the grid with `aria-label`.
|
|
3149
3301
|
*/
|
|
3150
3302
|
containerProps?: Omit<React_2.ComponentPropsWithRef<'div'>, 'children'>;
|
|
3151
|
-
/**
|
|
3152
|
-
|
|
3303
|
+
/**
|
|
3304
|
+
* DataGrid header, body, and row elements. Optional when `items` and `columns` render the grid;
|
|
3305
|
+
* a generated body is placed after the header and before a `<tfoot>` child.
|
|
3306
|
+
*/
|
|
3307
|
+
children?: React_2.ReactNode;
|
|
3153
3308
|
/** Ref to the `<table role="grid">` element. */
|
|
3154
3309
|
ref?: React_2.Ref<HTMLTableElement>;
|
|
3155
3310
|
}
|
|
3156
3311
|
|
|
3157
|
-
/**
|
|
3312
|
+
/**
|
|
3313
|
+
* The grid's `<tbody>`. Its child can also be a render function, called with each item of the
|
|
3314
|
+
* grid's `items` (and its index there) to render the item's row; without children, a grid with
|
|
3315
|
+
* `items` and `columns` renders the rows from the columns.
|
|
3316
|
+
*/
|
|
3158
3317
|
export declare const DataGridBody: {
|
|
3159
|
-
({ children, className, ref, ...rest }: DataGridBodyProps): React_2.JSX.Element;
|
|
3318
|
+
<T>({ children, className, ref, ...rest }: DataGridBodyProps<T>): React_2.JSX.Element;
|
|
3160
3319
|
displayName: string;
|
|
3161
3320
|
};
|
|
3162
3321
|
|
|
@@ -3165,15 +3324,27 @@ export declare const dataGridBodyClassNames: {
|
|
|
3165
3324
|
readonly root: "wave-data-grid-body";
|
|
3166
3325
|
};
|
|
3167
3326
|
|
|
3168
|
-
/** Properties for the DataGridBody sub-component
|
|
3169
|
-
export declare interface DataGridBodyProps extends React_2.HTMLAttributes<HTMLTableSectionElement> {
|
|
3170
|
-
/**
|
|
3171
|
-
|
|
3327
|
+
/** Properties for the DataGridBody sub-component, in a grid whose `items` are of type `T`. */
|
|
3328
|
+
export declare interface DataGridBodyProps<T = unknown> extends Omit<React_2.HTMLAttributes<HTMLTableSectionElement>, 'children'> {
|
|
3329
|
+
/**
|
|
3330
|
+
* The body rows: `DataGrid.Row` elements, or a render function called with each item of the
|
|
3331
|
+
* grid's `items` (in the grid's sort order) and the item's index in `items` (its position there,
|
|
3332
|
+
* whatever the sort), which returns the item's `DataGrid.Row`. The grid keys each returned row
|
|
3333
|
+
* by its row id and gives it that id as `rowId` (from `getRowId`), and renders it again only
|
|
3334
|
+
* when its item, its index or the function change (a sort moves the rows). Type the function
|
|
3335
|
+
* by annotating its item parameter (`(person: Person) => …`) or with `DataGrid.Body<Person>`.
|
|
3336
|
+
* Without children, a grid with `items` and `columns` renders the rows from the columns; empty
|
|
3337
|
+
* children are no rows.
|
|
3338
|
+
*/
|
|
3339
|
+
children?: React_2.ReactNode | ((item: T, index: number) => React_2.ReactNode);
|
|
3172
3340
|
/** Ref to the `<tbody>` element. */
|
|
3173
3341
|
ref?: React_2.Ref<HTMLTableSectionElement>;
|
|
3174
3342
|
}
|
|
3175
3343
|
|
|
3176
|
-
/**
|
|
3344
|
+
/**
|
|
3345
|
+
* A grid cell (`<td>`), focusable through the grid's keyboard navigation. It is the positioning
|
|
3346
|
+
* box of a `Table.CellActions` inside it.
|
|
3347
|
+
*/
|
|
3177
3348
|
export declare const DataGridCell: {
|
|
3178
3349
|
({ children, className, ref, ...rest }: DataGridCellProps): React_2.JSX.Element;
|
|
3179
3350
|
displayName: string;
|
|
@@ -3198,36 +3369,71 @@ export declare const dataGridClassNames: {
|
|
|
3198
3369
|
readonly container: "wave-data-grid__container";
|
|
3199
3370
|
};
|
|
3200
3371
|
|
|
3201
|
-
/**
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3372
|
+
/**
|
|
3373
|
+
* Defines a column of the DataGrid, typed by the grid's items (`T`): the header cell it renders
|
|
3374
|
+
* and, with `items`, the cell of each row. `createTableColumn` builds one with `sortable` resolved.
|
|
3375
|
+
* A column with functions (`compare`, `renderCell`, `renderHeaderCell`) cannot be passed from a
|
|
3376
|
+
* Server Component to the DataGrid, since functions are not serializable: define such columns in a
|
|
3377
|
+
* client component.
|
|
3378
|
+
*/
|
|
3379
|
+
export declare interface DataGridColumn<T = unknown> {
|
|
3380
|
+
/**
|
|
3381
|
+
* Unique identifier of the column: the `columnId` of its header cell (and of the grid's sort) and
|
|
3382
|
+
* the React key of its cells. Required in practice: a column without it (and without the
|
|
3383
|
+
* deprecated `id`) cannot sort, with a development warning.
|
|
3384
|
+
*/
|
|
3385
|
+
columnId?: string;
|
|
3386
|
+
/**
|
|
3387
|
+
* @deprecated Use `columnId`. Read only when `columnId` is not given, with a development
|
|
3388
|
+
* warning.
|
|
3389
|
+
*/
|
|
3390
|
+
id?: string;
|
|
3391
|
+
/** The header content (text or any React node), unless `renderHeaderCell` is given. */
|
|
3392
|
+
label: React_2.ReactNode;
|
|
3393
|
+
/**
|
|
3394
|
+
* Orders two items of the column, as for `Array.prototype.sort` (negative: `a` first). A column
|
|
3395
|
+
* with `compare` is sortable unless `sortable` is `false`. While the grid's sort names the column
|
|
3396
|
+
* (its own sort, or a controlled `sort`), a grid with `items` renders its rows in this order: a
|
|
3397
|
+
* stable sort of a copy of `items`, so items that compare equal keep their order in `items`,
|
|
3398
|
+
* in both directions (descending negates `compare`). Without `compare` the grid never reorders
|
|
3399
|
+
* the rows: leave it out when the rows arrive sorted (a server-sorted grid).
|
|
3400
|
+
*/
|
|
3401
|
+
compare?: (a: T, b: T) => number;
|
|
3402
|
+
/**
|
|
3403
|
+
* Renders the content of the column's cell for one item (rows rendered from `items`). Without
|
|
3404
|
+
* it, the column's cells are empty.
|
|
3405
|
+
*/
|
|
3406
|
+
renderCell?: (item: T) => React_2.ReactNode;
|
|
3407
|
+
/** Renders the header content, in place of `label`. */
|
|
3408
|
+
renderHeaderCell?: () => React_2.ReactNode;
|
|
3409
|
+
/**
|
|
3410
|
+
* Whether the column's header is a sort button (the header cell carries `aria-sort`).
|
|
3411
|
+
* @default compare !== undefined
|
|
3412
|
+
*/
|
|
3208
3413
|
sortable?: boolean;
|
|
3209
3414
|
}
|
|
3210
3415
|
|
|
3211
|
-
/** The 0.5 sort API, controlled: `sort` + `onSortChange(sort)`. */
|
|
3416
|
+
/** The 0.5 sort API, controlled: `sort` + `onSortChange(sort, details)`. */
|
|
3212
3417
|
export declare interface DataGridControlledSortProps extends NoDeprecatedSortProps {
|
|
3213
3418
|
/** The controlled sort, or `null` for an unsorted grid. */
|
|
3214
3419
|
sort: DataGridSort | null;
|
|
3215
3420
|
/** Initial sort while `sort` is not given yet. */
|
|
3216
3421
|
defaultSort?: DataGridSort | null;
|
|
3217
3422
|
/**
|
|
3218
|
-
* Called with the new sort when a sortable header is activated
|
|
3219
|
-
*
|
|
3423
|
+
* Called with the new sort when a sortable header is activated, then `details` (`{ event }`).
|
|
3424
|
+
* With `items`, the grid orders its rows by the sorted column's `compare` (see
|
|
3425
|
+
* `DataGridColumn.compare`), also while `sort` is controlled; otherwise the consumer orders them.
|
|
3220
3426
|
*/
|
|
3221
|
-
onSortChange?: (sort: DataGridSort) => void;
|
|
3427
|
+
onSortChange?: (sort: DataGridSort, details?: DataGridSortChangeDetails) => void;
|
|
3222
3428
|
}
|
|
3223
3429
|
|
|
3224
3430
|
/**
|
|
3225
3431
|
* The grid's `<thead>`. When the grid is selectable, it prepends the selection column's header
|
|
3226
|
-
* cell to each `<tr>` child, also inside a Fragment
|
|
3227
|
-
*
|
|
3228
|
-
*
|
|
3229
|
-
*
|
|
3230
|
-
* which adds the cell itself.
|
|
3432
|
+
* cell to each `<tr>` child, also inside a Fragment, unless the row holds a
|
|
3433
|
+
* `DataGrid.SelectionCell`: the first header row gets the "Select all rows" checkbox (multiple
|
|
3434
|
+
* mode) or the "Selection" header (single mode; DataGrid's `labels` localizes both), later rows of
|
|
3435
|
+
* a grouped header an empty cell. A header row rendered by another component cannot get it (a
|
|
3436
|
+
* development warning says so): use `DataGrid.Row` for such a row, which adds the cell itself.
|
|
3231
3437
|
*/
|
|
3232
3438
|
export declare const DataGridHeader: {
|
|
3233
3439
|
({ children, className, ref, ...rest }: DataGridHeaderProps): React_2.JSX.Element;
|
|
@@ -3236,18 +3442,19 @@ export declare const DataGridHeader: {
|
|
|
3236
3442
|
|
|
3237
3443
|
/**
|
|
3238
3444
|
* A column header cell. A `sortable` header (with a `columnId`) renders its content inside a
|
|
3239
|
-
* `<button type="button">` that toggles the sort
|
|
3240
|
-
*
|
|
3241
|
-
* sort (
|
|
3445
|
+
* `<button type="button">` that toggles the sort, followed by the direction glyph (`sortIcon`)
|
|
3446
|
+
* while its column is sorted; the `<th>` carries `aria-sort`. A consumer `onClick` (on the `<th>`)
|
|
3447
|
+
* runs before the sort, and calling `preventDefault()` in it cancels the sort (also for
|
|
3448
|
+
* Enter/Space on the button, which click it).
|
|
3242
3449
|
*/
|
|
3243
3450
|
export declare const DataGridHeaderCell: {
|
|
3244
|
-
({ columnId, sortable, children, className, onClick, ref, ...rest }: DataGridHeaderCellProps): React_2.JSX.Element;
|
|
3451
|
+
({ columnId, sortable, sortIcon, children, className, onClick, ref, ...rest }: DataGridHeaderCellProps): React_2.JSX.Element;
|
|
3245
3452
|
displayName: string;
|
|
3246
3453
|
};
|
|
3247
3454
|
|
|
3248
3455
|
/**
|
|
3249
3456
|
* DataGrid.HeaderCell: `root` on the `<th>`; `button` on the sort button; `sortIcon` on its
|
|
3250
|
-
* direction `<svg
|
|
3457
|
+
* direction glyph (the default arrow `<svg>`, or the `<span>` of a `sortIcon` slot).
|
|
3251
3458
|
*/
|
|
3252
3459
|
export declare const dataGridHeaderCellClassNames: {
|
|
3253
3460
|
readonly root: "wave-data-grid-header-cell";
|
|
@@ -3265,6 +3472,16 @@ export declare interface DataGridHeaderCellProps extends React_2.ThHTMLAttribute
|
|
|
3265
3472
|
* @default false
|
|
3266
3473
|
*/
|
|
3267
3474
|
sortable?: boolean;
|
|
3475
|
+
/**
|
|
3476
|
+
* The glyph a sortable header shows after its content while its column is sorted, in place of
|
|
3477
|
+
* the default arrow (up for ascending, down for descending). It is decorative (`aria-hidden`:
|
|
3478
|
+
* `aria-sort` on the header tells the direction) and carries `data-direction` (`ascending` or
|
|
3479
|
+
* `descending`), so one glyph can be turned by a selector on it. `null` and `undefined` keep the
|
|
3480
|
+
* arrow; `false`, or any value that renders nothing, shows no glyph. A `<button>` or `Button`
|
|
3481
|
+
* element (or a slot object whose `as` is one) is not nested in the sort button: its children
|
|
3482
|
+
* become the glyph and its props are dropped, with a development warning.
|
|
3483
|
+
*/
|
|
3484
|
+
sortIcon?: Slot<'span'>;
|
|
3268
3485
|
/** Header cell content. */
|
|
3269
3486
|
children: React_2.ReactNode;
|
|
3270
3487
|
/** Ref to the `<th>` element. */
|
|
@@ -3285,15 +3502,53 @@ export declare const dataGridHeaderClassNames: {
|
|
|
3285
3502
|
export declare interface DataGridHeaderProps extends React_2.HTMLAttributes<HTMLTableSectionElement> {
|
|
3286
3503
|
/**
|
|
3287
3504
|
* Header row elements. Each `<tr>` child (also inside a Fragment) gets the selection column's
|
|
3288
|
-
* header cell prepended when the grid is selectable
|
|
3289
|
-
*
|
|
3290
|
-
*
|
|
3505
|
+
* header cell prepended when the grid is selectable, unless the row holds a
|
|
3506
|
+
* `DataGrid.SelectionCell` (which then is that cell, where it stands); a header row rendered by
|
|
3507
|
+
* another component should be a `DataGrid.Row`, which adds the cell itself. With several header
|
|
3508
|
+
* rows (a grouped header), only the first one gets the "Select all rows" control; later rows get
|
|
3509
|
+
* an empty cell.
|
|
3291
3510
|
*/
|
|
3292
3511
|
children: React_2.ReactNode;
|
|
3293
3512
|
/** Ref to the `<thead>` element. */
|
|
3294
3513
|
ref?: React_2.Ref<HTMLTableSectionElement>;
|
|
3295
3514
|
}
|
|
3296
3515
|
|
|
3516
|
+
/**
|
|
3517
|
+
* The `items` prop of a DataGrid that renders its rows from data, part of every sort form of
|
|
3518
|
+
* `DataGridProps` but the 0.4 one. `T` is the type of the items.
|
|
3519
|
+
*/
|
|
3520
|
+
export declare interface DataGridItemsProps<T = unknown> {
|
|
3521
|
+
/**
|
|
3522
|
+
* The grid's data, one body row per item, in this order unless the sorted column has `compare`
|
|
3523
|
+
* (see `DataGridColumn.compare`). With `columns` and no `DataGrid.Body` child (or one without
|
|
3524
|
+
* children), the grid renders the rows and cells from the columns; a `DataGrid.Body` whose child
|
|
3525
|
+
* is a render function renders the row of each item. Each row's `rowId` comes from `getRowId`.
|
|
3526
|
+
* The grid reads the array and never changes it. With `items`, `onSortChange` receives a
|
|
3527
|
+
* `DataGridSort` object and `details`, never the 0.4 arguments. `items` may not be `undefined`
|
|
3528
|
+
* unless `sort` or `defaultSort` is given; pass `items={data ?? []}` while loading.
|
|
3529
|
+
*/
|
|
3530
|
+
items?: readonly T[];
|
|
3531
|
+
}
|
|
3532
|
+
|
|
3533
|
+
/**
|
|
3534
|
+
* The sort props of a grid with `items`: the 0.5 sort API, whether or not `sort` or `defaultSort`
|
|
3535
|
+
* is given (unsorted at first without them). The 0.4 positional `onSortChange` and the deprecated
|
|
3536
|
+
* sort props do not apply to such a grid.
|
|
3537
|
+
*/
|
|
3538
|
+
export declare interface DataGridItemsSortProps<T = unknown> extends DataGridItemsProps<T>, NoDeprecatedSortProps {
|
|
3539
|
+
/** The grid's data (see `DataGridItemsProps.items`). */
|
|
3540
|
+
items: readonly T[];
|
|
3541
|
+
/** The controlled sort, or `null` for an unsorted grid; `undefined` leaves the sort to the grid. */
|
|
3542
|
+
sort?: DataGridSort | null;
|
|
3543
|
+
/** The initial sort while `sort` is not given. */
|
|
3544
|
+
defaultSort?: DataGridSort | null;
|
|
3545
|
+
/**
|
|
3546
|
+
* Called with the new sort when a sortable header is activated, then `details` (`{ event }`).
|
|
3547
|
+
* The grid orders its rows by the sorted column's `compare` (see `DataGridColumn.compare`).
|
|
3548
|
+
*/
|
|
3549
|
+
onSortChange?: (sort: DataGridSort, details?: DataGridSortChangeDetails) => void;
|
|
3550
|
+
}
|
|
3551
|
+
|
|
3297
3552
|
/** The built-in text of a DataGrid, for localization (see `DataGridBaseProps.labels`). */
|
|
3298
3553
|
export declare interface DataGridLabels {
|
|
3299
3554
|
/** Accessible name of the select-all checkbox in the header (`selectionMode="multiple"`).
|
|
@@ -3310,11 +3565,14 @@ export declare interface DataGridLabels {
|
|
|
3310
3565
|
|
|
3311
3566
|
/**
|
|
3312
3567
|
* The 0.4 sort API: `onSortChange(columnId, direction)` and the deprecated `sortColumn`/
|
|
3313
|
-
* `sortDirection` props. It applies whenever
|
|
3314
|
-
* the column and the direction can be controlled independently: the half that is not
|
|
3315
|
-
* kept internally and follows every sort request (mixed control, warned in
|
|
3568
|
+
* `sortDirection` props. It applies whenever none of `items`, `sort` and `defaultSort` is given.
|
|
3569
|
+
* As in 0.4, the column and the direction can be controlled independently: the half that is not
|
|
3570
|
+
* controlled is kept internally and follows every sort request (mixed control, warned in
|
|
3571
|
+
* development).
|
|
3316
3572
|
*/
|
|
3317
3573
|
export declare interface DataGridLegacySortProps {
|
|
3574
|
+
/** A grid with `items` uses the 0.5 sort API (`DataGridItemsSortProps`). */
|
|
3575
|
+
items?: undefined;
|
|
3318
3576
|
sort?: undefined;
|
|
3319
3577
|
defaultSort?: undefined;
|
|
3320
3578
|
/**
|
|
@@ -3332,10 +3590,10 @@ export declare interface DataGridLegacySortProps {
|
|
|
3332
3590
|
/** @deprecated Use `defaultSort`. */
|
|
3333
3591
|
defaultSortDirection?: SortDirection;
|
|
3334
3592
|
/**
|
|
3335
|
-
* Called when a sortable header is activated, with the 0.4 arguments. Pass `sort` or
|
|
3336
|
-
* `defaultSort` to receive a `DataGridSort` object
|
|
3337
|
-
* object form on for an initially unsorted grid. A `sort` that is
|
|
3338
|
-
* data loads) does not: pass `sort={sort ?? null}`.
|
|
3593
|
+
* Called when a sortable header is activated, with the 0.4 arguments. Pass `items`, `sort` or
|
|
3594
|
+
* `defaultSort` to receive a `DataGridSort` object (and `details`) instead:
|
|
3595
|
+
* `defaultSort={null}` turns the object form on for an initially unsorted grid. A `sort` that is
|
|
3596
|
+
* still `undefined` (e.g. while data loads) does not: pass `sort={sort ?? null}`.
|
|
3339
3597
|
*
|
|
3340
3598
|
* @example
|
|
3341
3599
|
* <DataGrid defaultSort={null} onSortChange={(sort) => setSort(sort)}>…</DataGrid>
|
|
@@ -3344,19 +3602,36 @@ export declare interface DataGridLegacySortProps {
|
|
|
3344
3602
|
}
|
|
3345
3603
|
|
|
3346
3604
|
/**
|
|
3347
|
-
* Properties for the DataGrid component
|
|
3348
|
-
* `onSortChange(sort)` (0.5
|
|
3349
|
-
*
|
|
3350
|
-
*
|
|
3605
|
+
* Properties for the DataGrid component, whose `items` are of type `T`. The sort props form a
|
|
3606
|
+
* union: `sort`/`defaultSort` with `onSortChange(sort, details)` (0.5, also the form of every grid
|
|
3607
|
+
* with `items`), or the 0.4 form `onSortChange(columnId, direction)` with the deprecated
|
|
3608
|
+
* `sortColumn`/`sortDirection`/`defaultSortColumn`/`defaultSortDirection`, for a grid without
|
|
3609
|
+
* `items`. The two cannot be mixed.
|
|
3351
3610
|
*/
|
|
3352
|
-
export declare type DataGridProps = DataGridBaseProps & (DataGridControlledSortProps | DataGridUncontrolledSortProps | DataGridLegacySortProps);
|
|
3611
|
+
export declare type DataGridProps<T = unknown> = DataGridBaseProps<T> & ((DataGridItemsProps<T> & DataGridControlledSortProps) | (DataGridItemsProps<T> & DataGridUncontrolledSortProps) | DataGridItemsSortProps<T> | DataGridLegacySortProps);
|
|
3612
|
+
|
|
3613
|
+
declare function DataGridRoot<T>(props: DataGridBaseProps<T> & DataGridItemsSortProps<T>): React_2.JSX.Element;
|
|
3614
|
+
|
|
3615
|
+
declare function DataGridRoot<T = unknown>(props: DataGridProps<T>): React_2.JSX.Element;
|
|
3616
|
+
|
|
3617
|
+
declare namespace DataGridRoot {
|
|
3618
|
+
var displayName: string;
|
|
3619
|
+
}
|
|
3353
3620
|
|
|
3354
3621
|
/**
|
|
3355
3622
|
* A grid row. In a selectable grid it starts with a selection cell (checkbox or radio) named
|
|
3356
|
-
* after the row's first cell (or `selectionLabel`)
|
|
3623
|
+
* after the row's first cell (or `selectionLabel`), unless a `DataGrid.SelectionCell` child is
|
|
3624
|
+
* its selection cell; Space on one of its cells toggles the row, and so does a click on the row
|
|
3625
|
+
* with the grid's `selectOnRowClick`.
|
|
3626
|
+
*
|
|
3627
|
+
* The row is the `group/table-row` group whose hover or focus draws a subtle selection control
|
|
3628
|
+
* (`subtleSelection`) and the `Table.CellActions` of its cells. A group is matched by any
|
|
3629
|
+
* ancestor, so the rows of a grid nested in a cell
|
|
3630
|
+
* share it: hovering the outer row also draws the subtle controls of the nested grid (a limit of
|
|
3631
|
+
* CSS groups). A Tree in a cell keeps its own rows' group.
|
|
3357
3632
|
*/
|
|
3358
3633
|
export declare const DataGridRow: {
|
|
3359
|
-
({ rowId, selectionLabel, children, className, onKeyDown, ref, ...rest }: DataGridRowProps): React_2.JSX.Element;
|
|
3634
|
+
({ rowId: rowIdProp, selectionLabel, selectionCellProps, children, className, onClick, onKeyDown, ref, ...rest }: DataGridRowProps): React_2.JSX.Element;
|
|
3360
3635
|
displayName: string;
|
|
3361
3636
|
};
|
|
3362
3637
|
|
|
@@ -3375,22 +3650,119 @@ export declare interface DataGridRowProps extends React_2.HTMLAttributes<HTMLTab
|
|
|
3375
3650
|
/**
|
|
3376
3651
|
* Unique identifier for this row, used for selection (rows that share one are selected together;
|
|
3377
3652
|
* a duplicate warns in development). A selectable grid renders no selection control (and warns
|
|
3378
|
-
* in development) for a row without it.
|
|
3653
|
+
* in development) for a row without it. A row rendered from the grid's `items` (by
|
|
3654
|
+
* `DataGrid.Body`'s render function or from `columns`) defaults to the item's row id
|
|
3655
|
+
* (`getRowId`).
|
|
3379
3656
|
*/
|
|
3380
3657
|
rowId?: string;
|
|
3381
3658
|
/**
|
|
3382
3659
|
* Accessible name of the row's selection control. Defaults to the row's first child that is a
|
|
3383
3660
|
* `DataGrid.Cell`, `<td>` or `<th>` element (`aria-labelledby`); a cell that another component
|
|
3384
3661
|
* renders is not seen, so pass `selectionLabel` when the row's first cell is one. Without such a
|
|
3385
|
-
* child the control is named "Select row" (with a development warning).
|
|
3662
|
+
* child the control is named "Select row" (with a development warning). The selection cell's
|
|
3663
|
+
* `aria-label` (`selectionCellProps`, or a `DataGrid.SelectionCell` child's) wins over it.
|
|
3386
3664
|
*/
|
|
3387
3665
|
selectionLabel?: string;
|
|
3388
|
-
/**
|
|
3666
|
+
/**
|
|
3667
|
+
* Props of the row's selection cell (`disabled`, `invisible`, `className`, `aria-label`): the
|
|
3668
|
+
* cell the row adds first in a selectable grid, or a `DataGrid.SelectionCell` child, whose own
|
|
3669
|
+
* props win (their classes are merged). In a header row they apply to the select-all cell.
|
|
3670
|
+
*/
|
|
3671
|
+
selectionCellProps?: DataGridRowSelectionCellProps;
|
|
3672
|
+
/**
|
|
3673
|
+
* DataGrid cell elements. A `DataGrid.SelectionCell` child (also inside a Fragment) is the row's
|
|
3674
|
+
* selection cell, where it stands: the row then adds none.
|
|
3675
|
+
*/
|
|
3389
3676
|
children: React_2.ReactNode;
|
|
3390
3677
|
/** Ref to the `<tr>` element. */
|
|
3391
3678
|
ref?: React_2.Ref<HTMLTableRowElement>;
|
|
3392
3679
|
}
|
|
3393
3680
|
|
|
3681
|
+
/**
|
|
3682
|
+
* The props of a row's selection cell (`DataGrid.Row` `selectionCellProps`), the automatic cell or
|
|
3683
|
+
* a `DataGrid.SelectionCell` child (whose own props win).
|
|
3684
|
+
*/
|
|
3685
|
+
export declare interface DataGridRowSelectionCellProps {
|
|
3686
|
+
/**
|
|
3687
|
+
* Disables the row's selection control natively. The control is then no focus target of the grid
|
|
3688
|
+
* (the cell takes focus), and neither a row click (`selectOnRowClick`), Space on a cell nor
|
|
3689
|
+
* select-all changes the row's selection: select-all skips it, keeps it as it is, and tells its
|
|
3690
|
+
* state from the other rows. In a header row it disables the select-all checkbox.
|
|
3691
|
+
* @default false
|
|
3692
|
+
*/
|
|
3693
|
+
disabled?: boolean;
|
|
3694
|
+
/**
|
|
3695
|
+
* Hides the selection control (it keeps its space and cannot be focused). The row is still
|
|
3696
|
+
* selected by a row click and Space, and tells its state with `aria-selected`.
|
|
3697
|
+
* @default false
|
|
3698
|
+
*/
|
|
3699
|
+
invisible?: boolean;
|
|
3700
|
+
/** Class of the selection cell (`<td>`, or the `<th>` of a header row). */
|
|
3701
|
+
className?: string;
|
|
3702
|
+
/**
|
|
3703
|
+
* Accessible name of the selection control, in place of `selectionLabel` and the name taken from
|
|
3704
|
+
* the row's first cell; in a header row, the name of the select-all checkbox.
|
|
3705
|
+
*/
|
|
3706
|
+
'aria-label'?: string;
|
|
3707
|
+
}
|
|
3708
|
+
|
|
3709
|
+
/** Second argument of `onSelectedItemsChange`: the event behind the change. */
|
|
3710
|
+
export declare interface DataGridSelectedItemsChangeDetails {
|
|
3711
|
+
/**
|
|
3712
|
+
* The DOM event behind the change: the click of a selection control (the select-all checkbox
|
|
3713
|
+
* included), or the key press of Space on a row.
|
|
3714
|
+
*/
|
|
3715
|
+
event: Event;
|
|
3716
|
+
}
|
|
3717
|
+
|
|
3718
|
+
/**
|
|
3719
|
+
* How a selected row of a DataGrid is filled (`selectionAppearance`): `'brand'` with the selected
|
|
3720
|
+
* token, `'neutral'` with the subtle selected token, `'none'` not at all.
|
|
3721
|
+
*/
|
|
3722
|
+
export declare type DataGridSelectionAppearance = 'brand' | 'neutral' | 'none';
|
|
3723
|
+
|
|
3724
|
+
/**
|
|
3725
|
+
* The selection cell of a row, rendered where it stands among the row's cells (the row and the
|
|
3726
|
+
* header then add none of their own). In a header row it is the select-all checkbox (multiple
|
|
3727
|
+
* mode; the "Selection" header text in single mode), the first header row's only, as the
|
|
3728
|
+
* automatic cell; in a body row (a `DataGrid.Row`) the row's checkbox or radio. It takes the
|
|
3729
|
+
* selection cell props of its row (`selectionCellProps`), its own winning. `aria-label`,
|
|
3730
|
+
* `aria-labelledby` and `aria-describedby` go to the control; the other props, `className` and
|
|
3731
|
+
* `ref` to the cell. In a grid without selection it renders nothing (with a development warning).
|
|
3732
|
+
*/
|
|
3733
|
+
export declare const DataGridSelectionCell: {
|
|
3734
|
+
({ disabled, invisible, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, controlRef, ref, ...rest }: DataGridSelectionCellProps): React_2.JSX.Element | null;
|
|
3735
|
+
displayName: string;
|
|
3736
|
+
};
|
|
3737
|
+
|
|
3738
|
+
/**
|
|
3739
|
+
* DataGrid.SelectionCell: `root` on the cell, which also carries the selection cell part of its
|
|
3740
|
+
* row (`dataGridRowClassNames.selectionCell`) or header (`dataGridHeaderClassNames.selectionCell`);
|
|
3741
|
+
* its control carries `dataGridRowClassNames.selectionControl` or
|
|
3742
|
+
* `dataGridHeaderClassNames.selectAllCheckbox`.
|
|
3743
|
+
*/
|
|
3744
|
+
export declare const dataGridSelectionCellClassNames: {
|
|
3745
|
+
readonly root: "wave-data-grid-selection-cell";
|
|
3746
|
+
};
|
|
3747
|
+
|
|
3748
|
+
/** Properties for the DataGridSelectionCell sub-component. */
|
|
3749
|
+
export declare interface DataGridSelectionCellProps extends Omit<React_2.TdHTMLAttributes<HTMLTableCellElement>, 'children'>, DataGridRowSelectionCellProps {
|
|
3750
|
+
/**
|
|
3751
|
+
* The cell holds no content of its own: the grid renders the selection control (or, in a
|
|
3752
|
+
* single-mode header row, the hidden "Selection" header text).
|
|
3753
|
+
*/
|
|
3754
|
+
children?: never;
|
|
3755
|
+
/**
|
|
3756
|
+
* Accessible name of the control, in place of `aria-label` and the row's `selectionLabel`.
|
|
3757
|
+
* Routed to the control, as `aria-label` and `aria-describedby` are.
|
|
3758
|
+
*/
|
|
3759
|
+
'aria-labelledby'?: string;
|
|
3760
|
+
/** Ref to the selection control (`<input type="checkbox">` or `<input type="radio">`). */
|
|
3761
|
+
controlRef?: React_2.Ref<HTMLInputElement>;
|
|
3762
|
+
/** Ref to the cell element (`<td>`, or the `<th>` of a header row's select-all). */
|
|
3763
|
+
ref?: React_2.Ref<HTMLTableCellElement>;
|
|
3764
|
+
}
|
|
3765
|
+
|
|
3394
3766
|
/** The sort state of a DataGrid: the sorted column and its direction. */
|
|
3395
3767
|
export declare interface DataGridSort {
|
|
3396
3768
|
/** The `columnId` of the sorted column. */
|
|
@@ -3399,16 +3771,23 @@ export declare interface DataGridSort {
|
|
|
3399
3771
|
direction: SortDirection;
|
|
3400
3772
|
}
|
|
3401
3773
|
|
|
3402
|
-
/**
|
|
3774
|
+
/** Second argument of `onSortChange` (the `DataGridSort` form): the event behind the sort. */
|
|
3775
|
+
export declare interface DataGridSortChangeDetails {
|
|
3776
|
+
/** The DOM event behind the sort: the click of the sort button (Enter and Space click it). */
|
|
3777
|
+
event: Event;
|
|
3778
|
+
}
|
|
3779
|
+
|
|
3780
|
+
/** The 0.5 sort API, uncontrolled: `defaultSort` (`null` for none) + `onSortChange(sort, details)`. */
|
|
3403
3781
|
export declare interface DataGridUncontrolledSortProps extends NoDeprecatedSortProps {
|
|
3404
3782
|
sort?: undefined;
|
|
3405
3783
|
/** The initial sort, or `null` for an initially unsorted grid. */
|
|
3406
3784
|
defaultSort: DataGridSort | null;
|
|
3407
3785
|
/**
|
|
3408
|
-
* Called with the new sort when a sortable header is activated
|
|
3409
|
-
*
|
|
3786
|
+
* Called with the new sort when a sortable header is activated, then `details` (`{ event }`).
|
|
3787
|
+
* With `items`, the grid orders its rows by the sorted column's `compare` (see
|
|
3788
|
+
* `DataGridColumn.compare`); otherwise the consumer orders them.
|
|
3410
3789
|
*/
|
|
3411
|
-
onSortChange?: (sort: DataGridSort) => void;
|
|
3790
|
+
onSortChange?: (sort: DataGridSort, details?: DataGridSortChangeDetails) => void;
|
|
3412
3791
|
}
|
|
3413
3792
|
|
|
3414
3793
|
/**
|
|
@@ -6492,6 +6871,13 @@ export declare interface InteractionTagSecondaryProps extends React_2.ButtonHTML
|
|
|
6492
6871
|
/** Whether both dates are on the same calendar day (time of day ignored); `false` when either is missing. */
|
|
6493
6872
|
export declare function isSameDay(a: Date | null | undefined, b: Date | null | undefined): boolean;
|
|
6494
6873
|
|
|
6874
|
+
/**
|
|
6875
|
+
* Whether breadcrumb text is longer than `maxLength` characters, so that
|
|
6876
|
+
* {@link truncateBreadcrumbLongName} or {@link truncateBreadcrumbLongTooltip} would cut it. Text of
|
|
6877
|
+
* exactly `maxLength` characters is not truncatable.
|
|
6878
|
+
*/
|
|
6879
|
+
export declare function isTruncatableBreadcrumbContent(content: string, maxLength: number): boolean;
|
|
6880
|
+
|
|
6495
6881
|
/**
|
|
6496
6882
|
* A text label for a form control (`htmlFor`), on the Fluent type ramp. The optional required
|
|
6497
6883
|
* indicator is decorative (`aria-hidden`). `Field` renders its own label; use `Label` for custom
|
|
@@ -6646,16 +7032,28 @@ export declare type LinkVariant = LinkAppearance;
|
|
|
6646
7032
|
* a text-entry widget takes focus itself: Enter/F2 enter the widget, Escape returns to the cell.
|
|
6647
7033
|
* Clicks and keys that start inside an action, or inside a popup it opens (a Popover, a Menu),
|
|
6648
7034
|
* never toggle selection.
|
|
7035
|
+
* - **Navigation without selection** (`navigationMode`): `'items'` makes the items of a plain list
|
|
7036
|
+
* one Tab stop (the item that last had focus) with the listbox's arrow keys, Home/End and
|
|
7037
|
+
* typeahead, keeping `role="list"`; `'composite'` renders the grid above from the first render,
|
|
7038
|
+
* for a selectable list too, so the items never remount when actions appear. The items of a
|
|
7039
|
+
* list without selection carry no `aria-selected`. The resolved mode is `data-navigation-mode`.
|
|
7040
|
+
* - **Actions on the item itself** (`List.Item onAction`): clicks and Enter run it, and Space on
|
|
7041
|
+
* an item that cannot be selected; in a selectable item it runs before the selection toggles,
|
|
7042
|
+
* and its `preventDefault()` keeps the selection. `List.Item disabledSelection` keeps an item's
|
|
7043
|
+
* selection as it is while the item stays focusable and in the arrow-key order.
|
|
7044
|
+
* - **Check marks** (`checkmark`, opt-in): a decorative check at the start of every item of a
|
|
7045
|
+
* selectable list, shown while the item is selected; `List.Item checkmark` replaces or hides it.
|
|
6649
7046
|
* - **Switching semantics remounts the items.** Listbox/list and grid use different elements
|
|
6650
7047
|
* (`ul`/`li` and `div`), so when a selectable list gains its first item action, loses its last
|
|
6651
|
-
* one, or `selectable`
|
|
6652
|
-
* content: state inside them (an inline rename input's draft, an uncontrolled checkbox) is
|
|
6653
|
-
* Focus that is on an item or inside it when the list switches moves to the same item (by
|
|
6654
|
-
* `value`, else by position; the next item when the focused one was removed),
|
|
6655
|
-
*
|
|
6656
|
-
*
|
|
6657
|
-
*
|
|
6658
|
-
*
|
|
7048
|
+
* one, or `selectable` or `navigationMode` changes the structure, React remounts the items and
|
|
7049
|
+
* their content: state inside them (an inline rename input's draft, an uncontrolled checkbox) is
|
|
7050
|
+
* reset. Focus that is on an item or inside it when the list switches moves to the same item (by
|
|
7051
|
+
* `value`, else by position; the next item when the focused one was removed), or to its first
|
|
7052
|
+
* focusable content when the item is no Tab stop any more, so the switch never drops it to
|
|
7053
|
+
* `<body>`. This includes focus inside the last action when that action removes itself (an
|
|
7054
|
+
* inline rename input that unmounts on Enter). An action that removes itself while focused
|
|
7055
|
+
* without causing a switch drops focus, like any removed element. When the list may switch,
|
|
7056
|
+
* keep such state in the parent, or pin the grid with `navigationMode="composite"`.
|
|
6659
7057
|
* - Selection: `selectionMode` `'single'` (default) or `'multiple'`; controlled with
|
|
6660
7058
|
* `selectedItems` (or `selectedItem` in single mode) or uncontrolled with the `default*` props.
|
|
6661
7059
|
* Values of items that are no longer rendered are dropped from the reported selection.
|
|
@@ -6666,13 +7064,19 @@ export declare type LinkVariant = LinkAppearance;
|
|
|
6666
7064
|
* <List.Item value="apple">Apple</List.Item>
|
|
6667
7065
|
* <List.Item value="banana">Banana</List.Item>
|
|
6668
7066
|
* </List>
|
|
7067
|
+
*
|
|
7068
|
+
* @example
|
|
7069
|
+
* <List navigationMode="items" aria-label="Recent files">
|
|
7070
|
+
* <List.Item value="report" onAction={() => open('report')}>Report</List.Item>
|
|
7071
|
+
* <List.Item value="budget" onAction={() => open('budget')}>Budget</List.Item>
|
|
7072
|
+
* </List>
|
|
6669
7073
|
*/
|
|
6670
7074
|
export declare const List: {
|
|
6671
7075
|
<M extends ListSelectionMode = "single">(props: ListProps<M>): React_2.ReactNode;
|
|
6672
7076
|
displayName: string;
|
|
6673
7077
|
} & {
|
|
6674
7078
|
Item: {
|
|
6675
|
-
({ value, action, className, children, onClick, onKeyDown, ref, ...rest }: ListItemProps): React_2.JSX.Element;
|
|
7079
|
+
({ value, action, onAction, disabledSelection, checkmark, className, children, onClick, onKeyDown, ref, ...rest }: ListItemProps): React_2.JSX.Element;
|
|
6676
7080
|
displayName: string;
|
|
6677
7081
|
};
|
|
6678
7082
|
};
|
|
@@ -7170,26 +7574,32 @@ export declare const listClassNames: {
|
|
|
7170
7574
|
|
|
7171
7575
|
/**
|
|
7172
7576
|
* An item of a {@link List} (also available as `List.Item`). Renders an `<li>` (`listitem`, or
|
|
7173
|
-
* `option` in a selectable list), or a `<div role="row">` in a selectable list with
|
|
7174
|
-
* selectable list, Enter and Space toggle the
|
|
7175
|
-
* pointer clicks
|
|
7577
|
+
* `option` in a selectable list), or a `<div role="row">` in a grid (a selectable list with
|
|
7578
|
+
* actions, or `navigationMode="composite"`). In a selectable list, Enter and Space toggle the
|
|
7579
|
+
* selection without calling `onClick`, which receives pointer clicks; `onAction` runs on clicks
|
|
7580
|
+
* and Enter (and Space where the item cannot be selected), before the selection toggles.
|
|
7176
7581
|
*
|
|
7177
7582
|
* Exported under the flat name `ListItem` so React Server Components can import it; `List.Item`
|
|
7178
7583
|
* (dotted access) needs a client module.
|
|
7179
7584
|
*/
|
|
7180
7585
|
export declare const ListItem: {
|
|
7181
|
-
({ value, action, className, children, onClick, onKeyDown, ref, ...rest }: ListItemProps): React_2.JSX.Element;
|
|
7586
|
+
({ value, action, onAction, disabledSelection, checkmark, className, children, onClick, onKeyDown, ref, ...rest }: ListItemProps): React_2.JSX.Element;
|
|
7182
7587
|
displayName: string;
|
|
7183
7588
|
};
|
|
7184
7589
|
|
|
7590
|
+
/** The event that activated a list item: a click, or Enter or Space on the focused item. */
|
|
7591
|
+
export declare type ListItemActionEvent = React_2.MouseEvent<HTMLElement> | React_2.KeyboardEvent<HTMLElement>;
|
|
7592
|
+
|
|
7185
7593
|
/**
|
|
7186
|
-
* List.Item: `root` on the `<li>` (the `role="row"` element of a list
|
|
7187
|
-
*
|
|
7594
|
+
* List.Item: `root` on the `<li>` (the `role="row"` element of a grid list); `content` on the
|
|
7595
|
+
* content element; `action` on the action cell; `checkmark` on the check mark element of an item
|
|
7596
|
+
* of a selectable list (the List's `checkmark`, or the item's own).
|
|
7188
7597
|
*/
|
|
7189
7598
|
export declare const listItemClassNames: {
|
|
7190
7599
|
readonly root: "wave-list-item";
|
|
7191
7600
|
readonly content: "wave-list-item__content";
|
|
7192
7601
|
readonly action: "wave-list-item__action";
|
|
7602
|
+
readonly checkmark: "wave-list-item__checkmark";
|
|
7193
7603
|
};
|
|
7194
7604
|
|
|
7195
7605
|
/** Properties for the ListItem component. */
|
|
@@ -7208,13 +7618,47 @@ export declare interface ListItemProps extends React_2.HTMLAttributes<HTMLLIElem
|
|
|
7208
7618
|
* with the arrow keys, and their focusable elements (also ones added later) get
|
|
7209
7619
|
* `tabindex="-1"`, except inside a nested composite widget such as a Toolbar, which keeps its own
|
|
7210
7620
|
* Tab stop. When the first action appears or the last one disappears, the items remount (see
|
|
7211
|
-
* {@link List}).
|
|
7621
|
+
* {@link List}), unless the List's `navigationMode="composite"` keeps the grid.
|
|
7212
7622
|
*/
|
|
7213
7623
|
action?: React_2.ReactNode;
|
|
7624
|
+
/**
|
|
7625
|
+
* Called when the item is activated: a click on it, or Enter on the focused item, and Space on
|
|
7626
|
+
* an item that cannot be selected (in a list without selection, or without a `value`); in a
|
|
7627
|
+
* selectable item Space only toggles the selection. Clicks and keys that start in an action or
|
|
7628
|
+
* in interactive content never run it. It runs after the item's `onClick` (whose
|
|
7629
|
+
* `preventDefault()` skips it) and before the selection toggles: call `event.preventDefault()`
|
|
7630
|
+
* to keep the selection as it is. Fires on every activation. The items of a list that does not
|
|
7631
|
+
* navigate them (`navigationMode` `'none'`, not selectable) cannot be reached with the keyboard:
|
|
7632
|
+
* there it runs on clicks only, and a development warning says so.
|
|
7633
|
+
*/
|
|
7634
|
+
onAction?: (event: ListItemActionEvent) => void;
|
|
7635
|
+
/**
|
|
7636
|
+
* In a selectable list: the item's selection cannot be toggled (click, Enter or Space; a
|
|
7637
|
+
* selected item stays selected). The item stays focusable and in the arrow-key order and renders
|
|
7638
|
+
* `data-disabled-selection`. Without `onAction` it is also `aria-disabled` (with `data-disabled`
|
|
7639
|
+
* and `data-disabled-focusable`); with `onAction`, clicks and Enter still run the action, while
|
|
7640
|
+
* Space, the selection key, does nothing. The item's `onClick` runs either way.
|
|
7641
|
+
* @default false
|
|
7642
|
+
*/
|
|
7643
|
+
disabledSelection?: boolean;
|
|
7644
|
+
/**
|
|
7645
|
+
* The item's check mark in a selectable list, a decorative `<span>` at the start of the item
|
|
7646
|
+
* shown while it is selected. `null` and `undefined` follow the List's `checkmark` (the default
|
|
7647
|
+
* check, or none); content replaces the glyph, also when the List draws none; `false`, or
|
|
7648
|
+
* content that renders nothing, hides it.
|
|
7649
|
+
*/
|
|
7650
|
+
checkmark?: Slot<'span'>;
|
|
7214
7651
|
/** Ref to the item element: an `<li>`, or a `<div role="row">` in grid mode. */
|
|
7215
7652
|
ref?: React_2.Ref<HTMLLIElement | HTMLDivElement>;
|
|
7216
7653
|
}
|
|
7217
7654
|
|
|
7655
|
+
/**
|
|
7656
|
+
* How the keyboard reaches the items of a {@link List} (Fluent's `navigationMode`): `'none'`, no
|
|
7657
|
+
* item is a Tab stop; `'items'`, the items are one Tab stop moved with the arrow keys; `'composite'`,
|
|
7658
|
+
* a grid whose rows are moved with Up/Down and whose actions are reached with Right/Left.
|
|
7659
|
+
*/
|
|
7660
|
+
export declare type ListNavigationMode = 'none' | 'items' | 'composite';
|
|
7661
|
+
|
|
7218
7662
|
/**
|
|
7219
7663
|
* Properties for the List component.
|
|
7220
7664
|
*
|
|
@@ -7250,9 +7694,39 @@ export declare interface ListProps<M extends ListSelectionMode = ListSelectionMo
|
|
|
7250
7694
|
defaultSelectedItem?: M extends 'single' ? string | null : never;
|
|
7251
7695
|
/** Single mode: called with the newly selected value, or `null` when it was deselected. */
|
|
7252
7696
|
onSelectedItemChange?: M extends 'single' ? (item: string | null) => void : never;
|
|
7697
|
+
/**
|
|
7698
|
+
* How the keyboard reaches the items. Unset, the list picks the mode itself: `'none'` for a plain
|
|
7699
|
+
* list, `'items'` for a selectable one (a listbox) and `'composite'` (a grid) for a selectable
|
|
7700
|
+
* list whose items have actions, which remounts the items when the first action appears or the
|
|
7701
|
+
* last one disappears. An explicit value pins the structure:
|
|
7702
|
+
*
|
|
7703
|
+
* - `'none'`: a plain list; its items are no Tab stops (their actions stay in the Tab order). A
|
|
7704
|
+
* selectable list always navigates its items: there `'none'` is ignored, with a development
|
|
7705
|
+
* warning.
|
|
7706
|
+
* - `'items'`: the items are one Tab stop (the first selected item, else the first item; in a
|
|
7707
|
+
* list without selection the item that last had focus), moved with ArrowUp/ArrowDown (wrapping)
|
|
7708
|
+
* and Home/End, with typeahead for more than 7 items. A plain list keeps `role="list"` and its
|
|
7709
|
+
* items carry no `aria-selected`; their actions stay in the Tab order. A selectable list whose
|
|
7710
|
+
* items have actions acts as `'composite'`, with a development warning.
|
|
7711
|
+
* - `'composite'`: a grid (`role="grid"`, `row`s and `gridcell`s) from the first render, so the
|
|
7712
|
+
* items never remount when actions appear. One Tab stop; Up/Down move between the rows and
|
|
7713
|
+
* Right/Left (mirrored in right-to-left layouts) into and out of their actions, which leave
|
|
7714
|
+
* the Tab order. The rows of a list without selection carry no `aria-selected`.
|
|
7715
|
+
*
|
|
7716
|
+
* The resolved mode is rendered as `data-navigation-mode`. Changing it while mounted can switch
|
|
7717
|
+
* between `ul`/`li` and `div` elements, which remounts the items (see {@link List}).
|
|
7718
|
+
*/
|
|
7719
|
+
navigationMode?: ListNavigationMode;
|
|
7720
|
+
/**
|
|
7721
|
+
* Draws a check mark at the start of every item of a selectable list, shown while the item is
|
|
7722
|
+
* selected (decorative: `aria-selected` carries the state). An item's own `checkmark` replaces
|
|
7723
|
+
* or hides it. Renders `data-checkmark` on the list while it draws them.
|
|
7724
|
+
* @default false
|
|
7725
|
+
*/
|
|
7726
|
+
checkmark?: boolean;
|
|
7253
7727
|
/**
|
|
7254
7728
|
* Ref to the root element: a `<ul>`, or a `<div role="grid">` for a selectable list whose items
|
|
7255
|
-
* have actions
|
|
7729
|
+
* have actions and for `navigationMode="composite"`.
|
|
7256
7730
|
*/
|
|
7257
7731
|
ref?: React_2.Ref<HTMLUListElement | HTMLDivElement>;
|
|
7258
7732
|
}
|
|
@@ -9359,19 +9833,36 @@ export declare interface OptionProps extends Omit<React_2.LiHTMLAttributes<HTMLL
|
|
|
9359
9833
|
export declare type Orientation = 'horizontal' | 'vertical';
|
|
9360
9834
|
|
|
9361
9835
|
/**
|
|
9362
|
-
* A single row that hides the items which do not fit and shows an overflow button
|
|
9363
|
-
*
|
|
9364
|
-
*
|
|
9365
|
-
*
|
|
9366
|
-
* (
|
|
9367
|
-
*
|
|
9368
|
-
*
|
|
9369
|
-
*
|
|
9370
|
-
*
|
|
9371
|
-
*
|
|
9372
|
-
*
|
|
9373
|
-
*
|
|
9374
|
-
*
|
|
9836
|
+
* A single row (or column) that hides the items which do not fit and shows an overflow button
|
|
9837
|
+
* instead.
|
|
9838
|
+
*
|
|
9839
|
+
* Wrap each entry in {@link OverflowItem} with a unique `itemId`; the row holds only items and
|
|
9840
|
+
* {@link OverflowDivider}s (other content is not measured, see `children`). Items are measured
|
|
9841
|
+
* while visible and hidden while they do not fit: by ascending `priority` (equal priorities from
|
|
9842
|
+
* the end of the DOM order, or from its start with `overflowDirection="start"`), never a `pinned`
|
|
9843
|
+
* item and never below `minimumVisible`. Until an item sets `priority` or `pinned`, the first item
|
|
9844
|
+
* (`end`) or the last one (`start`) always stays, as in 0.13. `orientation="vertical"` lays the
|
|
9845
|
+
* items out in a column and measures heights; the column needs a definite height. The room is the
|
|
9846
|
+
* row's own box, so it must not depend on the items shown: in a container as wide as its content,
|
|
9847
|
+
* such as a Toolbar at its default width, the row narrows as items hide and never gets the room
|
|
9848
|
+
* back to show them again; give the Overflow a width of its own, or put it in a row that takes its
|
|
9849
|
+
* width from its parent and let it fill that row.
|
|
9850
|
+
*
|
|
9851
|
+
* Items with the same `groupId` form a group that is `'visible'`, `'hidden'` or `'overflow'` (some
|
|
9852
|
+
* members hidden): a divider with that `groupId` hides with a hidden group,
|
|
9853
|
+
* {@link useIsOverflowGroupVisible} reads a group and {@link useHasHiddenItems} whether anything
|
|
9854
|
+
* is hidden. `onOverflowChange` reports the hidden `itemId`s and the group visibility when the
|
|
9855
|
+
* hidden items change. Hidden items get `data-overflow-hidden`, an inline `display: none`,
|
|
9856
|
+
* `aria-hidden` and `inert`. Reordered items (for example a keyed sort) are re-measured in their
|
|
9857
|
+
* new order. `overflowButton(count, hiddenIds)` renders the button after the visible items, or
|
|
9858
|
+
* just before the first hidden item with `buttonPosition="before-hidden"` (its measured size is
|
|
9859
|
+
* reserved); components inside it can use {@link useOverflowMenu} to list the
|
|
9860
|
+
* hidden items (e.g. in a Menu), and {@link useIsOverflowItemVisible} reports a single item. In a
|
|
9861
|
+
* horizontal row the button sticks to the inline end, so a first item wider than the room beside
|
|
9862
|
+
* it cannot push it out of view: it then covers the end of that item and gets
|
|
9863
|
+
* `data-overflow-pinned`, with the `background` token behind it (a vertical column sticks it to
|
|
9864
|
+
* the bottom). (In a right-to-left row, WebKit stops the pinned button short of the end, still
|
|
9865
|
+
* inside the row.)
|
|
9375
9866
|
*
|
|
9376
9867
|
* The row clips what does not fit. So that the focus indicators of its items are not cut off, it
|
|
9377
9868
|
* has a 4px padding: the items sit 4px in from its edges, and the row is 8px taller than they are.
|
|
@@ -9385,19 +9876,36 @@ export declare type Orientation = 'horizontal' | 'vertical';
|
|
|
9385
9876
|
* Works without `ResizeObserver` (jsdom, old browsers): it then re-measures on window resize and
|
|
9386
9877
|
* when items mount, unmount or move.
|
|
9387
9878
|
*
|
|
9388
|
-
* The item is also `Overflow.Item
|
|
9389
|
-
*
|
|
9879
|
+
* The item is also `Overflow.Item` and the divider `Overflow.Divider`. The same components are
|
|
9880
|
+
* exported as `OverflowItem` and `OverflowDivider`; React Server Components import those flat names
|
|
9881
|
+
* (dotted access needs a client file).
|
|
9390
9882
|
*/
|
|
9391
9883
|
export declare const Overflow: {
|
|
9392
|
-
({ overflowButton, children, className, ref, ...rest }: OverflowProps): React_2.JSX.Element;
|
|
9884
|
+
({ overflowButton, buttonPosition, overflowDirection, orientation, minimumVisible, hasHiddenItems, onOverflowChange, children, className, ref, ...rest }: OverflowProps): React_2.JSX.Element;
|
|
9393
9885
|
displayName: string;
|
|
9394
9886
|
} & {
|
|
9395
9887
|
Item: {
|
|
9396
|
-
({ itemId, children, className, style, ref, "aria-hidden": ariaHidden, inert, ...rest }: OverflowItemProps): React_2.JSX.Element;
|
|
9888
|
+
({ itemId, priority, pinned, groupId, asChild, children, className, style, ref, "aria-hidden": ariaHidden, inert, ...rest }: OverflowItemProps): React_2.JSX.Element;
|
|
9889
|
+
displayName: string;
|
|
9890
|
+
};
|
|
9891
|
+
Divider: {
|
|
9892
|
+
({ groupId, children, className, style, ref, "aria-hidden": ariaHidden, inert, ...rest }: OverflowDividerProps): React_2.JSX.Element;
|
|
9397
9893
|
displayName: string;
|
|
9398
9894
|
};
|
|
9399
9895
|
};
|
|
9400
9896
|
|
|
9897
|
+
/** What {@link OverflowProps.onOverflowChange} reports besides the hidden ids. */
|
|
9898
|
+
export declare interface OverflowChangeDetails {
|
|
9899
|
+
/** `itemId`s of the shown items, in DOM order. */
|
|
9900
|
+
visibleItems: string[];
|
|
9901
|
+
/**
|
|
9902
|
+
* The visibility of each item group, by `groupId` (only groups with an item; a record without a
|
|
9903
|
+
* prototype): `'visible'` when every member is shown, `'hidden'` when none is, `'overflow'` for
|
|
9904
|
+
* a mix.
|
|
9905
|
+
*/
|
|
9906
|
+
groupVisibility: Record<string, OverflowGroupVisibility>;
|
|
9907
|
+
}
|
|
9908
|
+
|
|
9401
9909
|
/**
|
|
9402
9910
|
* Overflow: `root` on the overflow element; `overflowButton` on the element around what
|
|
9403
9911
|
* `overflowButton` renders.
|
|
@@ -9408,52 +9916,186 @@ export declare const overflowClassNames: {
|
|
|
9408
9916
|
};
|
|
9409
9917
|
|
|
9410
9918
|
/**
|
|
9411
|
-
*
|
|
9412
|
-
*
|
|
9413
|
-
* `aria-hidden` and `inert`. The inline style wins over the consumer's `style.display` and over
|
|
9414
|
-
* display utilities in any cascade layer (a prefixed Tailwind app's `tw:flex` included), so a
|
|
9415
|
-
* hidden item is never shown while it is counted in "+N". Must be rendered inside `Overflow`.
|
|
9919
|
+
* Which end of the row overflows first: `'end'` hides the last items in DOM order first, `'start'`
|
|
9920
|
+
* the first ones. Equal priorities follow it.
|
|
9416
9921
|
*/
|
|
9417
|
-
export declare
|
|
9418
|
-
|
|
9922
|
+
export declare type OverflowDirection = 'end' | 'start';
|
|
9923
|
+
|
|
9924
|
+
/**
|
|
9925
|
+
* A divider between item groups of an {@link Overflow}, drawn by its children (for example a
|
|
9926
|
+
* vertical `Divider` or a `Toolbar.Divider`). It renders a `<div>` that stretches across the row
|
|
9927
|
+
* (to the row's height, or to a vertical column's width) and lays out its child on that axis, so
|
|
9928
|
+
* a child that stretches itself, such as `Toolbar.Divider`, spans the row; an explicitly sized
|
|
9929
|
+
* child is centred in a row and kept at the start of a column. It is measured like an item and
|
|
9930
|
+
* hidden, with `data-overflow-hidden`, an inline `display: none`, `aria-hidden` and `inert`, while
|
|
9931
|
+
* the group `groupId` is `'hidden'` (none of its items is shown). Must be rendered inside
|
|
9932
|
+
* `Overflow`.
|
|
9933
|
+
*/
|
|
9934
|
+
export declare const OverflowDivider: {
|
|
9935
|
+
({ groupId, children, className, style, ref, "aria-hidden": ariaHidden, inert, ...rest }: OverflowDividerProps): React_2.JSX.Element;
|
|
9419
9936
|
displayName: string;
|
|
9420
9937
|
};
|
|
9421
9938
|
|
|
9422
|
-
/** Overflow.
|
|
9423
|
-
export declare const
|
|
9424
|
-
readonly root: "wave-overflow-
|
|
9939
|
+
/** Overflow.Divider: `root` on the divider element. */
|
|
9940
|
+
export declare const overflowDividerClassNames: {
|
|
9941
|
+
readonly root: "wave-overflow-divider";
|
|
9425
9942
|
};
|
|
9426
9943
|
|
|
9427
|
-
/** Properties for the
|
|
9428
|
-
export declare interface
|
|
9944
|
+
/** Properties for the OverflowDivider sub-component. */
|
|
9945
|
+
export declare interface OverflowDividerProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
9946
|
+
/**
|
|
9947
|
+
* The group the divider belongs to: it is hidden while that group is `'hidden'` and takes room
|
|
9948
|
+
* in the row otherwise. A group without items counts as visible.
|
|
9949
|
+
*/
|
|
9950
|
+
groupId: string;
|
|
9951
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
9952
|
+
}
|
|
9953
|
+
|
|
9954
|
+
/**
|
|
9955
|
+
* How much of an item group is shown: `'visible'` (every member), `'hidden'` (none) or `'overflow'`
|
|
9956
|
+
* (some).
|
|
9957
|
+
*/
|
|
9958
|
+
export declare type OverflowGroupVisibility = 'visible' | 'hidden' | 'overflow';
|
|
9959
|
+
|
|
9960
|
+
/**
|
|
9961
|
+
* One entry of an {@link Overflow}. `priority` (higher overflows later, default 0) or `pinned`
|
|
9962
|
+
* (never overflows) decide when it hides; setting either on any item makes every item without
|
|
9963
|
+
* `pinned` hidable, the first one included. `groupId` puts it in a group that an
|
|
9964
|
+
* {@link OverflowDivider} and {@link useIsOverflowGroupVisible} follow. While it does not fit it
|
|
9965
|
+
* stays mounted but is hidden (`data-overflow-hidden` and an inline `display: none` placed after
|
|
9966
|
+
* the consumer's own `style`), `aria-hidden` and `inert`. The inline style wins over the
|
|
9967
|
+
* consumer's `style.display` and over display utilities in any cascade layer (a prefixed Tailwind
|
|
9968
|
+
* app's `tw:flex` included), so a hidden item is never shown while it is counted in "+N". With
|
|
9969
|
+
* `asChild` the item renders no wrapper: its props are merged onto its single element child.
|
|
9970
|
+
* Must be rendered inside `Overflow`.
|
|
9971
|
+
*/
|
|
9972
|
+
export declare const OverflowItem: {
|
|
9973
|
+
({ itemId, priority, pinned, groupId, asChild, children, className, style, ref, "aria-hidden": ariaHidden, inert, ...rest }: OverflowItemProps): React_2.JSX.Element;
|
|
9974
|
+
displayName: string;
|
|
9975
|
+
};
|
|
9976
|
+
|
|
9977
|
+
/** The props of an {@link OverflowItem} besides `priority` and `pinned`. */
|
|
9978
|
+
export declare interface OverflowItemBaseProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
9429
9979
|
/**
|
|
9430
9980
|
* Identifier for tracking this item's overflow visibility, unique within the Overflow (a
|
|
9431
9981
|
* duplicate warns in development: items that share one are hidden and shown together).
|
|
9432
9982
|
*/
|
|
9433
9983
|
itemId: string;
|
|
9434
|
-
/**
|
|
9984
|
+
/**
|
|
9985
|
+
* The group the item belongs to. A group is `'visible'`, `'hidden'` or `'overflow'` (some members
|
|
9986
|
+
* hidden); an {@link OverflowDivider} with the same `groupId` hides with a hidden group, and
|
|
9987
|
+
* {@link useIsOverflowGroupVisible} reads it.
|
|
9988
|
+
*/
|
|
9989
|
+
groupId?: string;
|
|
9990
|
+
/**
|
|
9991
|
+
* Puts the item's props on its single element child (an `<li>`, a Toolbar button) instead of on
|
|
9992
|
+
* a wrapper `<div>`: handlers and refs are composed with the child's, classes and styles merged,
|
|
9993
|
+
* and the hidden state (`data-overflow-hidden`, `display: none`, `aria-hidden`, `inert`) wins
|
|
9994
|
+
* over the child's own. A child that is not a single element (text, several elements) renders in
|
|
9995
|
+
* the wrapper `<div>` and warns in development.
|
|
9996
|
+
* @default false
|
|
9997
|
+
*/
|
|
9998
|
+
asChild?: boolean;
|
|
9999
|
+
/** Content of the overflow item: with `asChild`, the single element that takes its props. */
|
|
9435
10000
|
children: React_2.ReactNode;
|
|
9436
10001
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
9437
10002
|
}
|
|
9438
10003
|
|
|
10004
|
+
/** Overflow.Item: `root` on the item element. */
|
|
10005
|
+
export declare const overflowItemClassNames: {
|
|
10006
|
+
readonly root: "wave-overflow-item";
|
|
10007
|
+
};
|
|
10008
|
+
|
|
10009
|
+
/**
|
|
10010
|
+
* An item hides in ascending `priority` (higher overflows later, default 0), or it is `pinned` and
|
|
10011
|
+
* never hides: `priority` or `pinned`, never both.
|
|
10012
|
+
*/
|
|
10013
|
+
export declare type OverflowItemPriorityProps = {
|
|
10014
|
+
/**
|
|
10015
|
+
* Items with a lower priority overflow first; equal priorities follow the direction.
|
|
10016
|
+
* @default 0
|
|
10017
|
+
*/
|
|
10018
|
+
priority?: number;
|
|
10019
|
+
pinned?: never;
|
|
10020
|
+
} | {
|
|
10021
|
+
/**
|
|
10022
|
+
* The item never overflows. Pinning any item drops the 0.13 protection of the first item for
|
|
10023
|
+
* the whole row; `pinned={false}` alone keeps it.
|
|
10024
|
+
* @default false
|
|
10025
|
+
*/
|
|
10026
|
+
pinned?: boolean;
|
|
10027
|
+
priority?: never;
|
|
10028
|
+
};
|
|
10029
|
+
|
|
10030
|
+
/** Properties for the OverflowItem sub-component. */
|
|
10031
|
+
export declare type OverflowItemProps = OverflowItemBaseProps & OverflowItemPriorityProps;
|
|
10032
|
+
|
|
9439
10033
|
/** Properties for the Overflow component. */
|
|
9440
10034
|
export declare interface OverflowProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
9441
10035
|
/**
|
|
9442
10036
|
* Renders the overflow button (for example a "+3" menu trigger) while at least one item is
|
|
9443
10037
|
* hidden. Receives the number of hidden items and their `itemId`s in DOM order, so the button
|
|
9444
10038
|
* can open a menu of the hidden items. `hiddenIds` is the button's own array (sorting it in
|
|
9445
|
-
* place affects nobody else). Its width
|
|
10039
|
+
* place affects nobody else). Its size on the row's axis (width, or height for a vertical row)
|
|
10040
|
+
* is measured and reserved when items overflow. In a list row (`role="list"`, with `asChild`
|
|
10041
|
+
* `<li>` items) the button's wrapper is a list item (`role="listitem"`).
|
|
9446
10042
|
* Components rendered by it can also read the hidden items with {@link useOverflowMenu}.
|
|
9447
10043
|
*/
|
|
9448
10044
|
overflowButton?: (count: number, hiddenIds: string[]) => React_2.ReactNode;
|
|
9449
10045
|
/**
|
|
9450
|
-
* The {@link OverflowItem}s to lay out in one row
|
|
9451
|
-
* measured: the container's whole content box
|
|
9452
|
-
* the row is not accounted for and could clip
|
|
9453
|
-
* content outside the Overflow (for example in a
|
|
9454
|
-
* `OverflowItem`
|
|
10046
|
+
* The {@link OverflowItem}s (and {@link OverflowDivider}s) to lay out in one row or column.
|
|
10047
|
+
* Only items, dividers and the overflow button are measured: the container's whole content box
|
|
10048
|
+
* is the room for them, so other content placed in the row is not accounted for and could clip
|
|
10049
|
+
* items that still count as visible. Keep fixed content outside the Overflow (for example in a
|
|
10050
|
+
* surrounding flex row), or wrap it in an `OverflowItem` and pin it with `pinned`.
|
|
9455
10051
|
*/
|
|
9456
10052
|
children: React_2.ReactNode;
|
|
10053
|
+
/**
|
|
10054
|
+
* Which end of the row overflows first (`start` is the start of the DOM order, so the right side
|
|
10055
|
+
* of a right-to-left row). While no item sets `priority` or `pinned` (`pinned={false}` does not
|
|
10056
|
+
* count) the first item (`end`) or the last one (`start`) is never hidden, as in 0.13; once any
|
|
10057
|
+
* item pins itself or sets a priority, only `pinned` items are protected, the first one included.
|
|
10058
|
+
* @default 'end'
|
|
10059
|
+
*/
|
|
10060
|
+
overflowDirection?: OverflowDirection;
|
|
10061
|
+
/**
|
|
10062
|
+
* Where the overflow button goes while items are hidden: `'end'` after every item, sticking to
|
|
10063
|
+
* the end of the axis; `'before-hidden'` just before the first hidden item in DOM order, so it
|
|
10064
|
+
* stands in for the hidden items (a breadcrumb trail), and takes the row's gap as the items do.
|
|
10065
|
+
* With `'before-hidden'` the items must be children of the Overflow (Fragments and arrays are
|
|
10066
|
+
* opened): when the first hidden item is rendered by another component the button stays at the
|
|
10067
|
+
* end, with a development warning. The button moves without remounting. While nothing is
|
|
10068
|
+
* hidden there is no button, except the one `hasHiddenItems` reserves, at the end.
|
|
10069
|
+
* @default 'end'
|
|
10070
|
+
*/
|
|
10071
|
+
buttonPosition?: 'end' | 'before-hidden';
|
|
10072
|
+
/**
|
|
10073
|
+
* The axis items are laid out on. `'vertical'` stacks them in a column and measures heights
|
|
10074
|
+
* (Fluent's `overflowAxis`); the column needs a definite height (a `height`, or a flex or grid
|
|
10075
|
+
* cell with one), since it has no room to measure otherwise.
|
|
10076
|
+
* @default 'horizontal'
|
|
10077
|
+
*/
|
|
10078
|
+
orientation?: Orientation;
|
|
10079
|
+
/**
|
|
10080
|
+
* The number of items that stay visible however little room there is (pinned items count).
|
|
10081
|
+
* @default 0
|
|
10082
|
+
*/
|
|
10083
|
+
minimumVisible?: number;
|
|
10084
|
+
/**
|
|
10085
|
+
* Renders the overflow button before the first measurement (for example in the server HTML) so
|
|
10086
|
+
* the row reserves its room; `overflowButton` then receives `0` and `[]`. It goes away after the
|
|
10087
|
+
* first measurement when every item fits.
|
|
10088
|
+
* @default false
|
|
10089
|
+
*/
|
|
10090
|
+
hasHiddenItems?: boolean;
|
|
10091
|
+
/**
|
|
10092
|
+
* Called, from an effect, when the set of hidden items changes (not for the initial, empty set),
|
|
10093
|
+
* with the hidden `itemId`s in DOM order and the {@link OverflowChangeDetails}. Called once per
|
|
10094
|
+
* change in StrictMode, and only for a set that has been rendered. The Overflow always passes
|
|
10095
|
+
* `details`; it is typed optional until 1.0, as the second argument of every callback is, so a
|
|
10096
|
+
* handler of the hidden ids alone fits.
|
|
10097
|
+
*/
|
|
10098
|
+
onOverflowChange?: (hiddenItems: string[], details?: OverflowChangeDetails) => void;
|
|
9457
10099
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
9458
10100
|
}
|
|
9459
10101
|
|
|
@@ -9590,6 +10232,49 @@ export declare interface PartitionAvatarGroupItemsResult<T> {
|
|
|
9590
10232
|
overflowItems: T[] | undefined;
|
|
9591
10233
|
}
|
|
9592
10234
|
|
|
10235
|
+
/**
|
|
10236
|
+
* Splits a breadcrumb trail into the items shown before a collapse button, the items it hides and
|
|
10237
|
+
* the items shown after it, with the rules of Fluent UI's `partitionBreadcrumbItems`: it hides
|
|
10238
|
+
* `items.length - maxDisplayedItems` items starting at `overflowIndex`. A trail with no more items
|
|
10239
|
+
* than `maxDisplayedItems` is not split: all items are in `startDisplayedItems`, and the other two
|
|
10240
|
+
* lists are absent. The function is pure and server-safe.
|
|
10241
|
+
*
|
|
10242
|
+
* @example
|
|
10243
|
+
* const { startDisplayedItems, overflowItems, endDisplayedItems } = partitionBreadcrumbItems({
|
|
10244
|
+
* items: crumbs,
|
|
10245
|
+
* maxDisplayedItems: 4,
|
|
10246
|
+
* });
|
|
10247
|
+
*/
|
|
10248
|
+
export declare function partitionBreadcrumbItems<T>(options: PartitionBreadcrumbItemsOptions<T>): PartitionBreadcrumbItemsResult<T>;
|
|
10249
|
+
|
|
10250
|
+
/** Options of {@link partitionBreadcrumbItems}. */
|
|
10251
|
+
export declare interface PartitionBreadcrumbItemsOptions<T> {
|
|
10252
|
+
/** The trail, in order. Not changed. */
|
|
10253
|
+
items: readonly T[];
|
|
10254
|
+
/**
|
|
10255
|
+
* The most items shown, the collapse button not counted. A missing, zero, negative or non-numeric
|
|
10256
|
+
* value falls back to 6.
|
|
10257
|
+
* @default 6
|
|
10258
|
+
*/
|
|
10259
|
+
maxDisplayedItems?: number;
|
|
10260
|
+
/**
|
|
10261
|
+
* The index of the first hidden item. An index at or past `maxDisplayedItems` becomes
|
|
10262
|
+
* `maxDisplayedItems - 1`; a negative index becomes 0.
|
|
10263
|
+
* @default 1
|
|
10264
|
+
*/
|
|
10265
|
+
overflowIndex?: number;
|
|
10266
|
+
}
|
|
10267
|
+
|
|
10268
|
+
/** The result of {@link partitionBreadcrumbItems}. */
|
|
10269
|
+
export declare interface PartitionBreadcrumbItemsResult<T> {
|
|
10270
|
+
/** The items before the collapsed ones; the whole trail when nothing is hidden. */
|
|
10271
|
+
startDisplayedItems: T[];
|
|
10272
|
+
/** The hidden items, in order. Absent when the trail fits. */
|
|
10273
|
+
overflowItems?: T[];
|
|
10274
|
+
/** The items after the collapsed ones. Absent when the trail fits. */
|
|
10275
|
+
endDisplayedItems?: T[];
|
|
10276
|
+
}
|
|
10277
|
+
|
|
9593
10278
|
/**
|
|
9594
10279
|
* A person's avatar next to their name and up to three more text lines (job title, location,
|
|
9595
10280
|
* status), with an optional presence badge. The text can sit after, before or below the avatar
|
|
@@ -11316,6 +12001,7 @@ export declare type SlotObject<T extends React_2.ElementType = 'span'> = {
|
|
|
11316
12001
|
[dataAttribute: `data-${string}`]: unknown;
|
|
11317
12002
|
} & Omit<React_2.ComponentPropsWithoutRef<T>, 'children' | 'className' | 'style'>;
|
|
11318
12003
|
|
|
12004
|
+
/** The direction of a sorted column. */
|
|
11319
12005
|
export declare type SortDirection = 'ascending' | 'descending';
|
|
11320
12006
|
|
|
11321
12007
|
/**
|
|
@@ -12295,10 +12981,17 @@ export declare type SwitchSize = Extract<Size, 'small' | 'medium'>;
|
|
|
12295
12981
|
* scrollable wrapper; while it scrolls, the wrapper is a focusable region (named by
|
|
12296
12982
|
* `containerProps` or the `<caption>`) so keyboard users can scroll it.
|
|
12297
12983
|
*
|
|
12298
|
-
*
|
|
12299
|
-
*
|
|
12300
|
-
*
|
|
12301
|
-
*
|
|
12984
|
+
* The table keeps no state: a sortable `Table.HeaderCell` reports its clicks, and a
|
|
12985
|
+
* `Table.SelectionCell` (a native checkbox or radio) its changes, for your state to sort and
|
|
12986
|
+
* select the rows. `Table.CellLayout` lays out a cell's media, text and description, and
|
|
12987
|
+
* `Table.CellActions` shows a cell's actions while its row is hovered or holds focus.
|
|
12988
|
+
*
|
|
12989
|
+
* Sub-components are available as `Table.Header`, `Table.HeaderCell`, `Table.Body`, `Table.Row`,
|
|
12990
|
+
* `Table.Cell`, `Table.SelectionCell`, `Table.CellLayout` and `Table.CellActions` in client
|
|
12991
|
+
* components, and as the flat exports `TableHeader`, `TableHeaderCell`, `TableBody`, `TableRow`,
|
|
12992
|
+
* `TableCell`, `TableSelectionCell`, `TableCellLayout` and `TableCellActions` (the form React
|
|
12993
|
+
* Server Components can import). `Table.Head`/`Table.HeadCell` (`TableHead`/`TableHeadCell`) are
|
|
12994
|
+
* deprecated aliases.
|
|
12302
12995
|
*/
|
|
12303
12996
|
export declare const Table: {
|
|
12304
12997
|
({ striped, containerProps, children, className, ref, ...props }: TableProps): React_2.JSX.Element;
|
|
@@ -12309,7 +13002,7 @@ export declare const Table: {
|
|
|
12309
13002
|
displayName: string;
|
|
12310
13003
|
};
|
|
12311
13004
|
HeaderCell: {
|
|
12312
|
-
({ children, className, ref, ...props }: TableHeaderCellProps): React_2.JSX.Element;
|
|
13005
|
+
({ sortable, sortDirection, onSortClick, sortIcon, aside, children, className, ref, ...props }: TableHeaderCellProps): React_2.JSX.Element;
|
|
12313
13006
|
displayName: string;
|
|
12314
13007
|
};
|
|
12315
13008
|
/** @deprecated Use `Table.Header`. */
|
|
@@ -12334,6 +13027,18 @@ export declare const Table: {
|
|
|
12334
13027
|
({ children, className, ref, ...props }: TableCellProps): React_2.JSX.Element;
|
|
12335
13028
|
displayName: string;
|
|
12336
13029
|
};
|
|
13030
|
+
SelectionCell: {
|
|
13031
|
+
({ type, checked: checkedProp, defaultChecked, onCheckedChange, onChange, name, value, form, disabled, required, subtle, invisible, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, "aria-required": ariaRequired, "aria-errormessage": ariaErrorMessage, "aria-details": ariaDetails, autoFocus, tabIndex, onFocus, onBlur, onKeyDown, onKeyUp, controlRef, className, ref, ...rest }: TableSelectionCellProps): React_2.JSX.Element;
|
|
13032
|
+
displayName: string;
|
|
13033
|
+
};
|
|
13034
|
+
CellLayout: {
|
|
13035
|
+
({ media, description, truncate, appearance, children, className, ref, ...rest }: TableCellLayoutProps): React_2.JSX.Element;
|
|
13036
|
+
displayName: string;
|
|
13037
|
+
};
|
|
13038
|
+
CellActions: {
|
|
13039
|
+
({ visible, className, ref, ...rest }: TableCellActionsProps): React_2.JSX.Element;
|
|
13040
|
+
displayName: string;
|
|
13041
|
+
};
|
|
12337
13042
|
};
|
|
12338
13043
|
|
|
12339
13044
|
/** The table's `<tbody>`. */
|
|
@@ -12355,17 +13060,100 @@ export declare interface TableBodyProps extends React_2.HTMLAttributes<HTMLTable
|
|
|
12355
13060
|
ref?: React_2.Ref<HTMLTableSectionElement>;
|
|
12356
13061
|
}
|
|
12357
13062
|
|
|
12358
|
-
/** A data cell (`<td>`). */
|
|
13063
|
+
/** A data cell (`<td>`), the positioning box of a `Table.CellActions` inside it. */
|
|
12359
13064
|
export declare const TableCell: {
|
|
12360
13065
|
({ children, className, ref, ...props }: TableCellProps): React_2.JSX.Element;
|
|
12361
13066
|
displayName: string;
|
|
12362
13067
|
};
|
|
12363
13068
|
|
|
13069
|
+
/**
|
|
13070
|
+
* Actions of a cell (buttons, a menu button), shown over the end of the cell while its row is
|
|
13071
|
+
* hovered or holds focus, and always in forced colors and on a coarse pointer (touch); `visible`
|
|
13072
|
+
* keeps them shown. They stay in the tab order while hidden, and Tab into them shows them. Place
|
|
13073
|
+
* them in a `Table.Cell` or `DataGrid.Cell`, whose row (`Table.Row`, `DataGrid.Row`) is the group
|
|
13074
|
+
* that shows them. Their opaque background follows the row's (hover, a striped table's stripe, a
|
|
13075
|
+
* DataGrid's selected row); a row with a background of its own needs the same class on its
|
|
13076
|
+
* actions. The element carries `data-visible` while `visible` is set.
|
|
13077
|
+
*/
|
|
13078
|
+
export declare const TableCellActions: {
|
|
13079
|
+
({ visible, className, ref, ...rest }: TableCellActionsProps): React_2.JSX.Element;
|
|
13080
|
+
displayName: string;
|
|
13081
|
+
};
|
|
13082
|
+
|
|
13083
|
+
/** Table.CellActions: `root` on the element that holds the actions. */
|
|
13084
|
+
export declare const tableCellActionsClassNames: {
|
|
13085
|
+
readonly root: "wave-table-cell-actions";
|
|
13086
|
+
};
|
|
13087
|
+
|
|
13088
|
+
/** Properties for the TableCellActions sub-component. */
|
|
13089
|
+
export declare interface TableCellActionsProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
13090
|
+
/**
|
|
13091
|
+
* Keeps the actions shown, also while the row is neither hovered nor focused: for example while
|
|
13092
|
+
* a menu opened from one of them is open.
|
|
13093
|
+
* @default false
|
|
13094
|
+
*/
|
|
13095
|
+
visible?: boolean;
|
|
13096
|
+
/** The actions: buttons, a menu button. */
|
|
13097
|
+
children?: React_2.ReactNode;
|
|
13098
|
+
/** Ref to the `<div>` that holds the actions. */
|
|
13099
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
13100
|
+
}
|
|
13101
|
+
|
|
12364
13102
|
/** Table.Cell: `root` on the `<td>`. */
|
|
12365
13103
|
export declare const tableCellClassNames: {
|
|
12366
13104
|
readonly root: "wave-table-cell";
|
|
12367
13105
|
};
|
|
12368
13106
|
|
|
13107
|
+
/**
|
|
13108
|
+
* Lays out a cell's content: `media` (an icon or an Avatar), then the main text (children) with
|
|
13109
|
+
* an optional `description` under it. `truncate` keeps both lines to one line each with an
|
|
13110
|
+
* ellipsis; `appearance="primary"` draws the main text semibold, for the cell that names the row.
|
|
13111
|
+
*/
|
|
13112
|
+
export declare const TableCellLayout: {
|
|
13113
|
+
({ media, description, truncate, appearance, children, className, ref, ...rest }: TableCellLayoutProps): React_2.JSX.Element;
|
|
13114
|
+
displayName: string;
|
|
13115
|
+
};
|
|
13116
|
+
|
|
13117
|
+
/**
|
|
13118
|
+
* Table.CellLayout: `root` on the layout element; `media` on the media `<span>`; `content` on the
|
|
13119
|
+
* column that holds the text; `main` on the main text; `description` on the description line.
|
|
13120
|
+
*/
|
|
13121
|
+
export declare const tableCellLayoutClassNames: {
|
|
13122
|
+
readonly root: "wave-table-cell-layout";
|
|
13123
|
+
readonly media: "wave-table-cell-layout__media";
|
|
13124
|
+
readonly content: "wave-table-cell-layout__content";
|
|
13125
|
+
readonly main: "wave-table-cell-layout__main";
|
|
13126
|
+
readonly description: "wave-table-cell-layout__description";
|
|
13127
|
+
};
|
|
13128
|
+
|
|
13129
|
+
/** Properties for the TableCellLayout sub-component. */
|
|
13130
|
+
export declare interface TableCellLayoutProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
13131
|
+
/**
|
|
13132
|
+
* A picture before the text: an icon (drawn at 20px, 24px with the primary appearance) or an
|
|
13133
|
+
* Avatar, which takes a 32px box when it sets no `size` of its own. It is content, not hidden
|
|
13134
|
+
* from assistive technology: make an Avatar beside the person's name decorative.
|
|
13135
|
+
*/
|
|
13136
|
+
media?: Slot<'span'>;
|
|
13137
|
+
/** A second line under the main text, in the caption size and the muted color. */
|
|
13138
|
+
description?: Slot<'span'>;
|
|
13139
|
+
/**
|
|
13140
|
+
* Keeps the main text and the description on one line each, ending in an ellipsis where they do
|
|
13141
|
+
* not fit. It takes effect where the column's width is bounded (a width on the column, or a
|
|
13142
|
+
* table layout that does not widen columns to fit their content).
|
|
13143
|
+
* @default false
|
|
13144
|
+
*/
|
|
13145
|
+
truncate?: boolean;
|
|
13146
|
+
/**
|
|
13147
|
+
* `'primary'` draws the main text semibold and the media icon larger: the cell that names the
|
|
13148
|
+
* row. Rendered as `data-appearance` while set.
|
|
13149
|
+
*/
|
|
13150
|
+
appearance?: 'primary';
|
|
13151
|
+
/** The main text. */
|
|
13152
|
+
children?: React_2.ReactNode;
|
|
13153
|
+
/** Ref to the layout `<div>`. */
|
|
13154
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
13155
|
+
}
|
|
13156
|
+
|
|
12369
13157
|
/** Properties for the TableCell sub-component. */
|
|
12370
13158
|
export declare interface TableCellProps extends React_2.TdHTMLAttributes<HTMLTableCellElement> {
|
|
12371
13159
|
/** Cell content. */
|
|
@@ -12403,17 +13191,55 @@ export declare const TableHeader: {
|
|
|
12403
13191
|
|
|
12404
13192
|
/** A column header cell (`<th scope="col">`). */
|
|
12405
13193
|
export declare const TableHeaderCell: {
|
|
12406
|
-
({ children, className, ref, ...props }: TableHeaderCellProps): React_2.JSX.Element;
|
|
13194
|
+
({ sortable, sortDirection, onSortClick, sortIcon, aside, children, className, ref, ...props }: TableHeaderCellProps): React_2.JSX.Element;
|
|
12407
13195
|
displayName: string;
|
|
12408
13196
|
};
|
|
12409
13197
|
|
|
12410
|
-
/**
|
|
13198
|
+
/**
|
|
13199
|
+
* Table.HeaderCell (and the deprecated Table.HeadCell): `root` on the `<th>`; `button` on the sort
|
|
13200
|
+
* button of a sortable header; `sortIcon` on its direction glyph (the default arrow `<svg>`, or the
|
|
13201
|
+
* `<span>` of a `sortIcon` slot); `aside` on the aside `<span>`, outside the button.
|
|
13202
|
+
*/
|
|
12411
13203
|
export declare const tableHeaderCellClassNames: {
|
|
12412
13204
|
readonly root: "wave-table-header-cell";
|
|
13205
|
+
readonly button: "wave-table-header-cell__button";
|
|
13206
|
+
readonly sortIcon: "wave-table-header-cell__sort-icon";
|
|
13207
|
+
readonly aside: "wave-table-header-cell__aside";
|
|
12413
13208
|
};
|
|
12414
13209
|
|
|
12415
13210
|
/** Properties for the TableHeaderCell sub-component. */
|
|
12416
13211
|
export declare interface TableHeaderCellProps extends React_2.ThHTMLAttributes<HTMLTableCellElement> {
|
|
13212
|
+
/**
|
|
13213
|
+
* Makes the column header a sort control: the content is wrapped in a `<button>` that fills the
|
|
13214
|
+
* cell, and the cell carries `aria-sort` (`"none"` while `sortDirection` is not set). The table
|
|
13215
|
+
* does not sort or track the direction; keep it in your state, set `sortDirection` and sort the
|
|
13216
|
+
* rows in `onSortClick`. The table keeps no grid semantics.
|
|
13217
|
+
* @default false
|
|
13218
|
+
*/
|
|
13219
|
+
sortable?: boolean;
|
|
13220
|
+
/**
|
|
13221
|
+
* The direction the column is sorted in, shown as `aria-sort` and as the glyph of a sortable
|
|
13222
|
+
* header. Absent means the column is not sorted. Without `sortable` it has no effect.
|
|
13223
|
+
*/
|
|
13224
|
+
sortDirection?: SortDirection;
|
|
13225
|
+
/**
|
|
13226
|
+
* Called with the click event when the sort button is activated (click, Enter or Space).
|
|
13227
|
+
* Fluent's `onSortClick`.
|
|
13228
|
+
*/
|
|
13229
|
+
onSortClick?: React_2.MouseEventHandler<HTMLButtonElement>;
|
|
13230
|
+
/**
|
|
13231
|
+
* The glyph that shows the direction, only while `sortDirection` is set. It is decorative
|
|
13232
|
+
* (`aria-hidden`) and carries `data-direction`. `null` and `undefined` keep the default arrow
|
|
13233
|
+
* (up for ascending, down for descending); `false` or anything that renders nothing hides it. A
|
|
13234
|
+
* `<button>` or `Button` passed here is not nested: its children become the glyph.
|
|
13235
|
+
*/
|
|
13236
|
+
sortIcon?: Slot<'span'>;
|
|
13237
|
+
/**
|
|
13238
|
+
* Content beside the header content, outside the sort button (a filter button, an info
|
|
13239
|
+
* button), so it is not part of the button's name. Nothing renders for content that renders
|
|
13240
|
+
* nothing.
|
|
13241
|
+
*/
|
|
13242
|
+
aside?: Slot<'span'>;
|
|
12417
13243
|
/** Header cell content. */
|
|
12418
13244
|
children: React_2.ReactNode;
|
|
12419
13245
|
/** Ref to the `<th>` element. */
|
|
@@ -12460,7 +13286,11 @@ export declare interface TableProps extends React_2.HTMLAttributes<HTMLTableElem
|
|
|
12460
13286
|
ref?: React_2.Ref<HTMLTableElement>;
|
|
12461
13287
|
}
|
|
12462
13288
|
|
|
12463
|
-
/**
|
|
13289
|
+
/**
|
|
13290
|
+
* A table row. Striping comes from the table (`striped`), so rows need no context. The row is the
|
|
13291
|
+
* `group/table-row` group whose hover or focus draws the subtle selection controls and the cell
|
|
13292
|
+
* actions inside it (Tree's rows keep their own group).
|
|
13293
|
+
*/
|
|
12464
13294
|
export declare const TableRow: {
|
|
12465
13295
|
({ children, className, ref, ...props }: TableRowProps): React_2.JSX.Element;
|
|
12466
13296
|
displayName: string;
|
|
@@ -12479,6 +13309,111 @@ export declare interface TableRowProps extends React_2.HTMLAttributes<HTMLTableR
|
|
|
12479
13309
|
ref?: React_2.Ref<HTMLTableRowElement>;
|
|
12480
13310
|
}
|
|
12481
13311
|
|
|
13312
|
+
/**
|
|
13313
|
+
* A selection cell: a `<td>` with a native checkbox or radio (`type`), drawn as the DataGrid's.
|
|
13314
|
+
* The table keeps no selection, so the cell is usually controlled (`checked`, `onCheckedChange`)
|
|
13315
|
+
* from your rows' state; `checked="mixed"` draws a header select-all whose rows are partly
|
|
13316
|
+
* selected. `id`, `aria-label`, `aria-labelledby`, `aria-describedby`, the other ARIA state
|
|
13317
|
+
* props, `autoFocus`, `tabIndex`, the focus, key and change handlers and `name`, `value`, `form`,
|
|
13318
|
+
* `disabled` and `required` go to the control (`controlRef`); `className`, `style`, `data-*`, the
|
|
13319
|
+
* other handlers and `ref` stay on the cell, which carries `data-type`. Name the control with
|
|
13320
|
+
* `aria-label` or `aria-labelledby` (the row's first cell); a development warning reports a
|
|
13321
|
+
* control without a name.
|
|
13322
|
+
*/
|
|
13323
|
+
export declare const TableSelectionCell: {
|
|
13324
|
+
({ type, checked: checkedProp, defaultChecked, onCheckedChange, onChange, name, value, form, disabled, required, subtle, invisible, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, "aria-required": ariaRequired, "aria-errormessage": ariaErrorMessage, "aria-details": ariaDetails, autoFocus, tabIndex, onFocus, onBlur, onKeyDown, onKeyUp, controlRef, className, ref, ...rest }: TableSelectionCellProps): React_2.JSX.Element;
|
|
13325
|
+
displayName: string;
|
|
13326
|
+
};
|
|
13327
|
+
|
|
13328
|
+
/** Second argument of `Table.SelectionCell`'s `onCheckedChange`: the event behind the change. */
|
|
13329
|
+
export declare interface TableSelectionCellCheckedChangeDetails {
|
|
13330
|
+
/**
|
|
13331
|
+
* The DOM event behind the change: the click of the control (Space clicks it too), or, for an
|
|
13332
|
+
* uncontrolled radio, the click that checked another radio of its group.
|
|
13333
|
+
*/
|
|
13334
|
+
event: Event;
|
|
13335
|
+
}
|
|
13336
|
+
|
|
13337
|
+
/** Table.SelectionCell: `root` on the `<td>`; `control` on its checkbox or radio. */
|
|
13338
|
+
export declare const tableSelectionCellClassNames: {
|
|
13339
|
+
readonly root: "wave-table-selection-cell";
|
|
13340
|
+
readonly control: "wave-table-selection-cell__control";
|
|
13341
|
+
};
|
|
13342
|
+
|
|
13343
|
+
/**
|
|
13344
|
+
* Properties for the TableSelectionCell sub-component. The focus, key and change handlers are the
|
|
13345
|
+
* control's (C-ROUTING), so they replace the cell's.
|
|
13346
|
+
*/
|
|
13347
|
+
export declare interface TableSelectionCellProps extends Omit<React_2.TdHTMLAttributes<HTMLTableCellElement>, 'children' | 'defaultChecked' | 'onChange' | 'onFocus' | 'onBlur' | 'onKeyDown' | 'onKeyUp'> {
|
|
13348
|
+
/**
|
|
13349
|
+
* The control: a checkbox (multiple selection, or a select-all in the header) or a radio (single
|
|
13350
|
+
* selection).
|
|
13351
|
+
* @default 'checkbox'
|
|
13352
|
+
*/
|
|
13353
|
+
type?: 'checkbox' | 'radio';
|
|
13354
|
+
/**
|
|
13355
|
+
* Controlled checked state. `'mixed'` draws an indeterminate checkbox (a select-all whose rows
|
|
13356
|
+
* are partly selected); a click on it checks it. `'mixed'` is for checkboxes only: on a radio it
|
|
13357
|
+
* has no effect (the radio is drawn unchecked).
|
|
13358
|
+
*/
|
|
13359
|
+
checked?: boolean | 'mixed';
|
|
13360
|
+
/**
|
|
13361
|
+
* Initial checked state for uncontrolled usage, also the state a form reset restores.
|
|
13362
|
+
* Uncontrolled radios that share a `name` uncheck each other, as a native radio group does.
|
|
13363
|
+
* @default false
|
|
13364
|
+
*/
|
|
13365
|
+
defaultChecked?: boolean | 'mixed';
|
|
13366
|
+
/**
|
|
13367
|
+
* Called with the new checked state when the user checks or unchecks the control (not for no-op
|
|
13368
|
+
* updates), and when a form reset restores a `true` or `false` `defaultChecked`. The second
|
|
13369
|
+
* argument holds the event. The table keeps no selection: update your rows' state here.
|
|
13370
|
+
*/
|
|
13371
|
+
onCheckedChange?: (checked: boolean, details?: TableSelectionCellCheckedChangeDetails) => void;
|
|
13372
|
+
/**
|
|
13373
|
+
* The native change event of the control, called before `onCheckedChange`;
|
|
13374
|
+
* `event.preventDefault()` in it cancels the change.
|
|
13375
|
+
*/
|
|
13376
|
+
onChange?: React_2.ChangeEventHandler<HTMLInputElement>;
|
|
13377
|
+
/** Form field name of the control. With a name, the control submits `name=value` while checked. */
|
|
13378
|
+
name?: string;
|
|
13379
|
+
/**
|
|
13380
|
+
* Value the control submits while checked.
|
|
13381
|
+
* @default 'on'
|
|
13382
|
+
*/
|
|
13383
|
+
value?: string;
|
|
13384
|
+
/** Id of the form the control belongs to, when the table is rendered outside that form. */
|
|
13385
|
+
form?: string;
|
|
13386
|
+
/** Natively disables the control: it cannot be checked or focused. */
|
|
13387
|
+
disabled?: boolean;
|
|
13388
|
+
/** The form must not be submitted while the control is unchecked (native validation). */
|
|
13389
|
+
required?: boolean;
|
|
13390
|
+
/**
|
|
13391
|
+
* Draws an unchecked control only while its row (a `Table.Row`) is hovered or holds focus; its
|
|
13392
|
+
* own keyboard focus, forced colors and a coarse pointer (touch) always draw it. It stays
|
|
13393
|
+
* focusable and named.
|
|
13394
|
+
* @default false
|
|
13395
|
+
*/
|
|
13396
|
+
subtle?: boolean;
|
|
13397
|
+
/**
|
|
13398
|
+
* Hides the control and takes it out of the tab order, while the cell keeps its box (a row that
|
|
13399
|
+
* cannot be selected keeps the column aligned).
|
|
13400
|
+
* @default false
|
|
13401
|
+
*/
|
|
13402
|
+
invisible?: boolean;
|
|
13403
|
+
/** Focus handler of the control. */
|
|
13404
|
+
onFocus?: React_2.FocusEventHandler<HTMLInputElement>;
|
|
13405
|
+
/** Blur handler of the control. */
|
|
13406
|
+
onBlur?: React_2.FocusEventHandler<HTMLInputElement>;
|
|
13407
|
+
/** Keydown handler of the control. */
|
|
13408
|
+
onKeyDown?: React_2.KeyboardEventHandler<HTMLInputElement>;
|
|
13409
|
+
/** Keyup handler of the control. */
|
|
13410
|
+
onKeyUp?: React_2.KeyboardEventHandler<HTMLInputElement>;
|
|
13411
|
+
/** Ref to the `<input>` element. */
|
|
13412
|
+
controlRef?: React_2.Ref<HTMLInputElement>;
|
|
13413
|
+
/** Ref to the `<td>` element. */
|
|
13414
|
+
ref?: React_2.Ref<HTMLTableCellElement>;
|
|
13415
|
+
}
|
|
13416
|
+
|
|
12482
13417
|
/**
|
|
12483
13418
|
* A set of tabs with their panels (WAI-ARIA Tabs pattern): the arrow keys (Left/Right, mirrored
|
|
12484
13419
|
* in RTL; Up/Down when vertical), Home and End move focus and select (automatic activation); with
|
|
@@ -13671,11 +14606,19 @@ export declare type TagSize = Extract<Size, 'extra-small' | 'small' | 'medium'>;
|
|
|
13671
14606
|
* A step-by-step onboarding popover (a non-modal `role="dialog"`) with Back/Next (Done on the
|
|
13672
14607
|
* last step) and Close.
|
|
13673
14608
|
*
|
|
13674
|
-
* - Visibility is controllable: `open`/`defaultOpen` (default `true`
|
|
13675
|
-
*
|
|
14609
|
+
* - Visibility is controllable: `open`/`defaultOpen` (default `true`, or `false` with a direct
|
|
14610
|
+
* `TeachingPopover.Trigger`)/`onOpenChange`; Close, Done, Escape (anywhere in the document) and
|
|
14611
|
+
* the Trigger dismiss it and call `onDismiss`.
|
|
13676
14612
|
* - The step is controllable with `activeStep`/`defaultActiveStep`/`onStepChange` and clamped to
|
|
13677
|
-
* the available steps.
|
|
13678
|
-
*
|
|
14613
|
+
* the available steps. An uncontrolled step starts again at `defaultActiveStep` each time the
|
|
14614
|
+
* popover opens, so a tour finished with Done or closed midway starts over (`onStepChange`
|
|
14615
|
+
* reports the move back); a controlled `activeStep` is left as it is. The heading carries a
|
|
14616
|
+
* visually hidden “step n of m”, the new step is announced politely, and Back stays focusable
|
|
14617
|
+
* (`aria-disabled`) on the first step.
|
|
14618
|
+
* - `primaryAction` and `secondaryAction` (on the popover, or on a step, which wins) replace Next/Done
|
|
14619
|
+
* and Back: a label, a Button-like element or a slot object. The consumer's `onClick` runs first,
|
|
14620
|
+
* then the step's normal action unless it called `preventDefault()`. Done calls `onFinish`
|
|
14621
|
+
* (and, in 0.x, `onDismiss`); `footerLayout` stacks the buttons.
|
|
13679
14622
|
* - The built-in text is English: `labels` localizes Back, Next, Done and the step position, and
|
|
13680
14623
|
* `closeLabel` the Close button.
|
|
13681
14624
|
* - Focus moves to the popover when it opens and returns to the element that had it when it
|
|
@@ -13695,16 +14638,327 @@ export declare type TagSize = Extract<Size, 'extra-small' | 'small' | 'medium'>;
|
|
|
13695
14638
|
* With no control at or before the target, the popover is reached where it is portaled, at the
|
|
13696
14639
|
* end of the page: Tab from the page's last control and Shift+Tab from outside the page enter
|
|
13697
14640
|
* it.
|
|
14641
|
+
* - **Parts** (Fluent's composition): `TeachingPopover.Trigger` opens and closes the popover, gets
|
|
14642
|
+
* focus back when it closes and, without a `target`, is what it points at; written directly
|
|
14643
|
+
* inside TeachingPopover (a Fragment is fine), it makes the popover start closed (`defaultOpen`
|
|
14644
|
+
* `false`). `TeachingPopover.Surface` is the surface itself: it takes the `className`, `style`,
|
|
14645
|
+
* `ref` and other element props that the `steps` form takes on TeachingPopover. Inside it,
|
|
14646
|
+
* `TeachingPopover.Header` (the Close button, with an optional caption and `icon`),
|
|
14647
|
+
* `TeachingPopover.Title` (the step title with the hidden step position; it names the popover),
|
|
14648
|
+
* `TeachingPopover.Body` (the step body, after an optional `media`) and
|
|
14649
|
+
* `TeachingPopover.Footer` (the step dots and the buttons) each show their share of the current
|
|
14650
|
+
* step unless given children; a Surface without children shows all four, which is what the
|
|
14651
|
+
* `steps` form renders. Both forms share one state: the steps, the labels, the actions and the
|
|
14652
|
+
* callbacks stay on TeachingPopover. A part outside a TeachingPopover throws in development.
|
|
14653
|
+
* - **Carousel parts**: `TeachingPopover.Carousel` holds the current step's page (the title and
|
|
14654
|
+
* body) and `TeachingPopover.CarouselFooter`, the bottom row with the step buttons:
|
|
14655
|
+
* `initialStepText` turns the first step's Back into a button that dismisses the popover (“Not
|
|
14656
|
+
* now”), `finalStepText` relabels Done, and `layout` (`'offset'` or `'centered'`) places the
|
|
14657
|
+
* indicator. The indicator is the decorative step dots unless you place
|
|
14658
|
+
* `TeachingPopover.CarouselNav` (interactive step buttons, named by `labels.navButton`, each a
|
|
14659
|
+
* Tab stop, the current one with `aria-current="step"`) or `TeachingPopover.CarouselPageCount`
|
|
14660
|
+
* (a visible “2 of 3”, worded by a render function) there. `steps` stays the only source of
|
|
14661
|
+
* the pages, so there is no card part.
|
|
14662
|
+
*
|
|
14663
|
+
* The parts are also exported under flat names (`TeachingPopoverTrigger`,
|
|
14664
|
+
* `TeachingPopoverSurface`, `TeachingPopoverHeader`, `TeachingPopoverTitle`,
|
|
14665
|
+
* `TeachingPopoverBody`, `TeachingPopoverFooter`, `TeachingPopoverCarousel`,
|
|
14666
|
+
* `TeachingPopoverCarouselNav`, `TeachingPopoverCarouselPageCount`,
|
|
14667
|
+
* `TeachingPopoverCarouselFooter`) for React Server Components, which cannot use the dotted form;
|
|
14668
|
+
* dotted access (`TeachingPopover.Trigger`) needs a client file.
|
|
14669
|
+
*
|
|
14670
|
+
* @example
|
|
14671
|
+
* <TeachingPopover steps={steps} onFinish={markTourSeen}>
|
|
14672
|
+
* <TeachingPopover.Trigger>
|
|
14673
|
+
* <Button>Take the tour</Button>
|
|
14674
|
+
* </TeachingPopover.Trigger>
|
|
14675
|
+
* <TeachingPopover.Surface>
|
|
14676
|
+
* <TeachingPopover.Header icon={<LightbulbIcon />}>Tip</TeachingPopover.Header>
|
|
14677
|
+
* <TeachingPopover.Title />
|
|
14678
|
+
* <TeachingPopover.Body media={<img src="/tour/search.png" alt="" />} />
|
|
14679
|
+
* <TeachingPopover.Footer />
|
|
14680
|
+
* </TeachingPopover.Surface>
|
|
14681
|
+
* </TeachingPopover>
|
|
14682
|
+
*
|
|
14683
|
+
* @example
|
|
14684
|
+
* <TeachingPopover steps={steps} onFinish={markTourSeen}>
|
|
14685
|
+
* <TeachingPopover.Surface>
|
|
14686
|
+
* <TeachingPopover.Header>Tip</TeachingPopover.Header>
|
|
14687
|
+
* <TeachingPopover.Carousel>
|
|
14688
|
+
* <TeachingPopover.Title />
|
|
14689
|
+
* <TeachingPopover.Body />
|
|
14690
|
+
* <TeachingPopover.CarouselFooter initialStepText="Not now" finalStepText="Got it">
|
|
14691
|
+
* <TeachingPopover.CarouselNav />
|
|
14692
|
+
* </TeachingPopover.CarouselFooter>
|
|
14693
|
+
* </TeachingPopover.Carousel>
|
|
14694
|
+
* </TeachingPopover.Surface>
|
|
14695
|
+
* </TeachingPopover>
|
|
13698
14696
|
*/
|
|
13699
14697
|
export declare const TeachingPopover: {
|
|
13700
|
-
({ steps, activeStep: activeStepProp, defaultActiveStep, currentStep, defaultCurrentStep, onStepChange, onDismiss, open: openProp, defaultOpen, onOpenChange, closeLabel, labels, target: targetProp, positioning, side, align, className, style, onKeyDown, ref, ...rest }: TeachingPopoverProps):
|
|
14698
|
+
({ steps, activeStep: activeStepProp, defaultActiveStep, currentStep, defaultCurrentStep, onStepChange, onDismiss, onFinish, primaryAction: primaryActionProp, secondaryAction: secondaryActionProp, footerLayout, open: openProp, defaultOpen, onOpenChange, closeLabel, labels, target: targetProp, positioning, side, align, children, id, className, style, onKeyDown, ref, ...rest }: TeachingPopoverProps): JSX.Element;
|
|
14699
|
+
displayName: string;
|
|
14700
|
+
} & {
|
|
14701
|
+
Trigger: {
|
|
14702
|
+
({ children, asChild, onClick, ref, ...rest }: TeachingPopoverTriggerProps): ReactNode;
|
|
14703
|
+
displayName: string;
|
|
14704
|
+
};
|
|
14705
|
+
Surface: {
|
|
14706
|
+
({ id, ref, ...rest }: TeachingPopoverSurfaceProps): JSX.Element;
|
|
14707
|
+
displayName: string;
|
|
14708
|
+
};
|
|
14709
|
+
Header: {
|
|
14710
|
+
({ icon, dismissButton, className, children, ref, ...rest }: TeachingPopoverHeaderProps): JSX.Element | null;
|
|
14711
|
+
displayName: string;
|
|
14712
|
+
};
|
|
14713
|
+
Title: PolymorphicComponent<"h3", TeachingPopoverTitleOwnProps>;
|
|
14714
|
+
Body: {
|
|
14715
|
+
({ media, className, children, ref, ...rest }: TeachingPopoverBodyProps): JSX.Element | null;
|
|
14716
|
+
displayName: string;
|
|
14717
|
+
};
|
|
14718
|
+
Footer: {
|
|
14719
|
+
({ className, children, ref, ...rest }: TeachingPopoverFooterProps): JSX.Element | null;
|
|
14720
|
+
displayName: string;
|
|
14721
|
+
};
|
|
14722
|
+
Carousel: {
|
|
14723
|
+
({ className, children, ref, ...rest }: TeachingPopoverCarouselProps): JSX.Element | null;
|
|
14724
|
+
displayName: string;
|
|
14725
|
+
};
|
|
14726
|
+
CarouselNav: {
|
|
14727
|
+
({ className, ref, ...rest }: TeachingPopoverCarouselNavProps): JSX.Element | null;
|
|
14728
|
+
displayName: string;
|
|
14729
|
+
};
|
|
14730
|
+
CarouselPageCount: {
|
|
14731
|
+
({ className, children, ref, ...rest }: TeachingPopoverCarouselPageCountProps): JSX.Element | null;
|
|
14732
|
+
displayName: string;
|
|
14733
|
+
};
|
|
14734
|
+
CarouselFooter: {
|
|
14735
|
+
({ layout, initialStepText, finalStepText, className, children, ref, ...rest }: TeachingPopoverCarouselFooterProps): JSX.Element | null;
|
|
14736
|
+
displayName: string;
|
|
14737
|
+
};
|
|
14738
|
+
};
|
|
14739
|
+
|
|
14740
|
+
/**
|
|
14741
|
+
* A footer action of a TeachingPopover (`primaryAction`, `secondaryAction`): the label content, or
|
|
14742
|
+
* a Button-like slot (a `Button`, `<button>` or `<a>` element, or a slot object such as
|
|
14743
|
+
* `{ as: 'a', href, children }`; `as` changes the element, which stays a Wave Button).
|
|
14744
|
+
*
|
|
14745
|
+
* The consumer's `onClick` runs first; then the step's normal action runs (Next or Done for the
|
|
14746
|
+
* primary action, Back for the secondary one) unless the handler called `event.preventDefault()`.
|
|
14747
|
+
*/
|
|
14748
|
+
export declare type TeachingPopoverAction = React_2.ReactNode | (SlotObject<'button'> & Pick<React_2.AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target' | 'rel' | 'download'>);
|
|
14749
|
+
|
|
14750
|
+
/**
|
|
14751
|
+
* The step body (Fluent's `TeachingPopoverBody`): the current step's `body`, or your children,
|
|
14752
|
+
* after an optional `media` element.
|
|
14753
|
+
*
|
|
14754
|
+
* Also exported as `TeachingPopoverBody` for React Server Components, which cannot use the
|
|
14755
|
+
* dotted `TeachingPopover.Body` (that needs a client file).
|
|
14756
|
+
*/
|
|
14757
|
+
export declare const TeachingPopoverBody: {
|
|
14758
|
+
({ media, className, children, ref, ...rest }: TeachingPopoverBodyProps): React_2.JSX.Element | null;
|
|
14759
|
+
displayName: string;
|
|
14760
|
+
};
|
|
14761
|
+
|
|
14762
|
+
/**
|
|
14763
|
+
* TeachingPopover.Body: `root` on the body element (also the one the `steps` form renders), which
|
|
14764
|
+
* also carries TeachingPopover's `body`; `media` on the element of its `media` slot.
|
|
14765
|
+
*/
|
|
14766
|
+
export declare const teachingPopoverBodyClassNames: {
|
|
14767
|
+
readonly root: "wave-teaching-popover-body";
|
|
14768
|
+
readonly media: "wave-teaching-popover-body__media";
|
|
14769
|
+
};
|
|
14770
|
+
|
|
14771
|
+
/** Properties for the TeachingPopoverBody sub-component. */
|
|
14772
|
+
export declare interface TeachingPopoverBodyProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
14773
|
+
/**
|
|
14774
|
+
* The body content: the current step's `body` without children (or with children that render
|
|
14775
|
+
* nothing).
|
|
14776
|
+
*/
|
|
14777
|
+
children?: React_2.ReactNode;
|
|
14778
|
+
/**
|
|
14779
|
+
* Media above the content, such as a picture or a short video of the feature, inside a `<span>`
|
|
14780
|
+
* (`media={<img src="…" alt="…" />}`; a slot object sets the span's own attributes). It is
|
|
14781
|
+
* content, not decoration: give a picture its `alt` (`alt=""` when the text says it all). A
|
|
14782
|
+
* value that renders nothing renders no element.
|
|
14783
|
+
*/
|
|
14784
|
+
media?: Slot<'span'>;
|
|
14785
|
+
/** Ref to the body element. */
|
|
14786
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
14787
|
+
}
|
|
14788
|
+
|
|
14789
|
+
/**
|
|
14790
|
+
* The tour as a carousel (Fluent's `TeachingPopoverCarousel`): it holds the current step's page
|
|
14791
|
+
* and the carousel footer. The steps stay on TeachingPopover (its `steps` are the pages, so there
|
|
14792
|
+
* is no card part), and so do the step state and the callbacks: the carousel parts read them
|
|
14793
|
+
* wherever they are in the popover. Without children it shows the step title and body and a
|
|
14794
|
+
* `TeachingPopover.CarouselFooter`.
|
|
14795
|
+
*
|
|
14796
|
+
* Also exported as `TeachingPopoverCarousel` for React Server Components, which cannot use the
|
|
14797
|
+
* dotted `TeachingPopover.Carousel` (that needs a client file).
|
|
14798
|
+
*/
|
|
14799
|
+
export declare const TeachingPopoverCarousel: {
|
|
14800
|
+
({ className, children, ref, ...rest }: TeachingPopoverCarouselProps): React_2.JSX.Element | null;
|
|
14801
|
+
displayName: string;
|
|
14802
|
+
};
|
|
14803
|
+
|
|
14804
|
+
/**
|
|
14805
|
+
* TeachingPopover.Carousel: `root` on the element that holds the step content and the carousel
|
|
14806
|
+
* footer.
|
|
14807
|
+
*/
|
|
14808
|
+
export declare const teachingPopoverCarouselClassNames: {
|
|
14809
|
+
readonly root: "wave-teaching-popover-carousel";
|
|
14810
|
+
};
|
|
14811
|
+
|
|
14812
|
+
/**
|
|
14813
|
+
* The carousel's bottom row (Fluent's `TeachingPopoverCarouselFooter`): an indicator (the
|
|
14814
|
+
* decorative step dots, or your children) and the buttons of the current step, as in
|
|
14815
|
+
* `TeachingPopover.Footer`: Back and Next (Done on the last step), or the `secondaryAction` and
|
|
14816
|
+
* `primaryAction` that replace them. `initialStepText` turns the first step's Back into a button
|
|
14817
|
+
* that dismisses the popover (“Not now”), `finalStepText` relabels Done, and `layout` places the
|
|
14818
|
+
* indicator; the footer wraps instead of letting the indicator and the buttons overlap. The steps,
|
|
14819
|
+
* the actions and the callbacks stay on TeachingPopover.
|
|
14820
|
+
*
|
|
14821
|
+
* Also exported as `TeachingPopoverCarouselFooter` for React Server Components, which cannot use
|
|
14822
|
+
* the dotted `TeachingPopover.CarouselFooter` (that needs a client file).
|
|
14823
|
+
*/
|
|
14824
|
+
export declare const TeachingPopoverCarouselFooter: {
|
|
14825
|
+
({ layout, initialStepText, finalStepText, className, children, ref, ...rest }: TeachingPopoverCarouselFooterProps): React_2.JSX.Element | null;
|
|
14826
|
+
displayName: string;
|
|
14827
|
+
};
|
|
14828
|
+
|
|
14829
|
+
/**
|
|
14830
|
+
* TeachingPopover.CarouselFooter: `root` on the footer element, which also carries
|
|
14831
|
+
* TeachingPopover's `footer`. Its buttons carry TeachingPopover's button classes, and its
|
|
14832
|
+
* decorative step dots TeachingPopover's `dot`.
|
|
14833
|
+
*/
|
|
14834
|
+
export declare const teachingPopoverCarouselFooterClassNames: {
|
|
14835
|
+
readonly root: "wave-teaching-popover-carousel-footer";
|
|
14836
|
+
};
|
|
14837
|
+
|
|
14838
|
+
/** Properties for the TeachingPopoverCarouselFooter sub-component. */
|
|
14839
|
+
export declare interface TeachingPopoverCarouselFooterProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
14840
|
+
/**
|
|
14841
|
+
* Where the indicator sits: `'offset'` puts it at the start and the buttons together at the
|
|
14842
|
+
* end, as `TeachingPopover.Footer` does, and the buttons wrap to a row of their own (at the end)
|
|
14843
|
+
* when both do not fit in one row; `'centered'` puts it between the secondary button at the
|
|
14844
|
+
* start and the primary button at the end, in the middle of the footer whatever the buttons'
|
|
14845
|
+
* widths (also without a secondary button), and when that row does not fit, the indicator takes
|
|
14846
|
+
* a row of its own above the buttons and the footer gets `data-stacked`. While stacked, the
|
|
14847
|
+
* visual order differs from the Tab order, which stays the secondary button, the indicator's
|
|
14848
|
+
* step buttons, then the primary button. The indicator never shrinks below its content.
|
|
14849
|
+
* Rendered as `data-carousel-layout`. (Fluent's default is `'centered'`; WaveUI keeps its own
|
|
14850
|
+
* footer's arrangement.) TeachingPopover's `footerLayout` applies to `TeachingPopover.Footer`
|
|
14851
|
+
* only.
|
|
14852
|
+
* @default 'offset'
|
|
14853
|
+
*/
|
|
14854
|
+
layout?: 'offset' | 'centered';
|
|
14855
|
+
/**
|
|
14856
|
+
* The text of the first step's secondary button (“Not now”). Given, that button is enabled and
|
|
14857
|
+
* dismisses the popover as Close does (`onOpenChange(false)`, then `onDismiss`; not
|
|
14858
|
+
* `onFinish`), also on a single step. Without it the first step keeps Back, focusable and
|
|
14859
|
+
* `aria-disabled`, and a single step has none. A `secondaryAction` replaces the button.
|
|
14860
|
+
*/
|
|
14861
|
+
initialStepText?: string;
|
|
14862
|
+
/**
|
|
14863
|
+
* The text of the primary button on the last step (“Got it”), which finishes the tour as Done
|
|
14864
|
+
* does. A `primaryAction` replaces the button.
|
|
14865
|
+
* @default TeachingPopover's `labels.done` ('Done')
|
|
14866
|
+
*/
|
|
14867
|
+
finalStepText?: string;
|
|
14868
|
+
/**
|
|
14869
|
+
* The indicator: without children (or with children that render nothing) the decorative step
|
|
14870
|
+
* dots; give it `TeachingPopover.CarouselNav` for interactive step buttons, or
|
|
14871
|
+
* `TeachingPopover.CarouselPageCount` for a visible count. The buttons always render.
|
|
14872
|
+
*/
|
|
14873
|
+
children?: React_2.ReactNode;
|
|
14874
|
+
/** Ref to the footer element. */
|
|
14875
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
14876
|
+
}
|
|
14877
|
+
|
|
14878
|
+
/**
|
|
14879
|
+
* Interactive step buttons (Fluent's `TeachingPopoverCarouselNav`): a group named by
|
|
14880
|
+
* `labels.nav` (“Choose step”) with one button per step, each named by `labels.navButton`
|
|
14881
|
+
* (“Step 2 of 3”) and a Tab stop. The current step's button has `aria-current="step"`; activating
|
|
14882
|
+
* another one shows its step (`onStepChange`, then the step announcement), and focus stays on it.
|
|
14883
|
+
* Opt-in: the footers show decorative dots unless you place it, for example as the children of
|
|
14884
|
+
* `TeachingPopover.CarouselFooter`.
|
|
14885
|
+
*
|
|
14886
|
+
* Also exported as `TeachingPopoverCarouselNav` for React Server Components, which cannot use the
|
|
14887
|
+
* dotted `TeachingPopover.CarouselNav` (that needs a client file).
|
|
14888
|
+
*/
|
|
14889
|
+
export declare const TeachingPopoverCarouselNav: {
|
|
14890
|
+
({ className, ref, ...rest }: TeachingPopoverCarouselNavProps): React_2.JSX.Element | null;
|
|
14891
|
+
displayName: string;
|
|
14892
|
+
};
|
|
14893
|
+
|
|
14894
|
+
/**
|
|
14895
|
+
* TeachingPopover.CarouselNav: `root` on the `role="group"` element of the step buttons; `button`
|
|
14896
|
+
* on each step button; `indicator` on the dot inside it.
|
|
14897
|
+
*/
|
|
14898
|
+
export declare const teachingPopoverCarouselNavClassNames: {
|
|
14899
|
+
readonly root: "wave-teaching-popover-carousel-nav";
|
|
14900
|
+
readonly button: "wave-teaching-popover-carousel-nav__button";
|
|
14901
|
+
readonly indicator: "wave-teaching-popover-carousel-nav__indicator";
|
|
14902
|
+
};
|
|
14903
|
+
|
|
14904
|
+
/** Properties for the TeachingPopoverCarouselNav sub-component. */
|
|
14905
|
+
export declare interface TeachingPopoverCarouselNavProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
14906
|
+
/** Ref to the element of the step buttons. */
|
|
14907
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
14908
|
+
}
|
|
14909
|
+
|
|
14910
|
+
/**
|
|
14911
|
+
* The visible step count (Fluent's `TeachingPopoverCarouselPageCount`), such as “2 of 3”: the
|
|
14912
|
+
* current step and the step count, worded by a render function child. Place it in a footer,
|
|
14913
|
+
* for example in `TeachingPopover.CarouselFooter` next to or instead of `TeachingPopover.CarouselNav`.
|
|
14914
|
+
*
|
|
14915
|
+
* Also exported as `TeachingPopoverCarouselPageCount` for React Server Components, which cannot
|
|
14916
|
+
* use the dotted `TeachingPopover.CarouselPageCount` (that needs a client file).
|
|
14917
|
+
*/
|
|
14918
|
+
export declare const TeachingPopoverCarouselPageCount: {
|
|
14919
|
+
({ className, children, ref, ...rest }: TeachingPopoverCarouselPageCountProps): React_2.JSX.Element | null;
|
|
13701
14920
|
displayName: string;
|
|
13702
14921
|
};
|
|
13703
14922
|
|
|
14923
|
+
/** TeachingPopover.CarouselPageCount: `root` on the element of the visible step count. */
|
|
14924
|
+
export declare const teachingPopoverCarouselPageCountClassNames: {
|
|
14925
|
+
readonly root: "wave-teaching-popover-carousel-page-count";
|
|
14926
|
+
};
|
|
14927
|
+
|
|
14928
|
+
/** Properties for the TeachingPopoverCarouselPageCount sub-component. */
|
|
14929
|
+
export declare interface TeachingPopoverCarouselPageCountProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
14930
|
+
/**
|
|
14931
|
+
* The text from the one-based number of the current step and the step count (Fluent's render
|
|
14932
|
+
* function); it also localizes the text. A result that renders nothing keeps the default. A
|
|
14933
|
+
* Server Component cannot pass a function: write the part with one in a client file.
|
|
14934
|
+
* @default (current, total) => `${current} of ${total}`
|
|
14935
|
+
*/
|
|
14936
|
+
children?: (current: number, total: number) => React_2.ReactNode;
|
|
14937
|
+
/** Ref to the count element. */
|
|
14938
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
14939
|
+
}
|
|
14940
|
+
|
|
14941
|
+
/** Properties for the TeachingPopoverCarousel sub-component. */
|
|
14942
|
+
export declare interface TeachingPopoverCarouselProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
14943
|
+
/**
|
|
14944
|
+
* The carousel's content. Without children (or with children that render nothing) the current
|
|
14945
|
+
* step as a carousel page: `TeachingPopover.Title`, `TeachingPopover.Body` and
|
|
14946
|
+
* `TeachingPopover.CarouselFooter` without children of their own.
|
|
14947
|
+
*/
|
|
14948
|
+
children?: React_2.ReactNode;
|
|
14949
|
+
/** Ref to the carousel element. */
|
|
14950
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
14951
|
+
}
|
|
14952
|
+
|
|
13704
14953
|
/**
|
|
13705
|
-
* TeachingPopover: `root` on the `role="dialog"` surface
|
|
13706
|
-
*
|
|
13707
|
-
*
|
|
14954
|
+
* TeachingPopover: `root` on the `role="dialog"` surface (also when TeachingPopover.Surface
|
|
14955
|
+
* renders it); `beak` on the arrow; `closeButton`, `backButton` and `nextButton` on its buttons
|
|
14956
|
+
* (which also carry Button's root; `backButton` also on the first step's button that a
|
|
14957
|
+
* TeachingPopover.CarouselFooter's `initialStepText` names); `primaryButton` and `secondaryButton`
|
|
14958
|
+
* on the buttons that a `primaryAction` and a `secondaryAction` render in place of Next/Done and
|
|
14959
|
+
* Back; `title` on the step title (an `<h3>`, or the element of TeachingPopover.Title's `as`);
|
|
14960
|
+
* `body` on the step body; `footer` on the bottom row (TeachingPopover.Footer's, or
|
|
14961
|
+
* TeachingPopover.CarouselFooter's); `dot` on each decorative step dot.
|
|
13708
14962
|
*/
|
|
13709
14963
|
export declare const teachingPopoverClassNames: {
|
|
13710
14964
|
readonly root: "wave-teaching-popover";
|
|
@@ -13716,8 +14970,94 @@ export declare const teachingPopoverClassNames: {
|
|
|
13716
14970
|
readonly dot: "wave-teaching-popover__dot";
|
|
13717
14971
|
readonly backButton: "wave-teaching-popover__back-button";
|
|
13718
14972
|
readonly nextButton: "wave-teaching-popover__next-button";
|
|
14973
|
+
readonly primaryButton: "wave-teaching-popover__primary-button";
|
|
14974
|
+
readonly secondaryButton: "wave-teaching-popover__secondary-button";
|
|
14975
|
+
};
|
|
14976
|
+
|
|
14977
|
+
/**
|
|
14978
|
+
* The bottom row (Fluent's `TeachingPopoverFooter`): the step dots and the buttons of the current
|
|
14979
|
+
* step, laid out by TeachingPopover's `footerLayout` (rendered as `data-layout` here too), or your
|
|
14980
|
+
* children. The steps, the actions and their labels stay on TeachingPopover.
|
|
14981
|
+
*
|
|
14982
|
+
* Also exported as `TeachingPopoverFooter` for React Server Components, which cannot use the
|
|
14983
|
+
* dotted `TeachingPopover.Footer` (that needs a client file).
|
|
14984
|
+
*/
|
|
14985
|
+
export declare const TeachingPopoverFooter: {
|
|
14986
|
+
({ className, children, ref, ...rest }: TeachingPopoverFooterProps): React_2.JSX.Element | null;
|
|
14987
|
+
displayName: string;
|
|
13719
14988
|
};
|
|
13720
14989
|
|
|
14990
|
+
/**
|
|
14991
|
+
* TeachingPopover.Footer: `root` on the footer element (also the one the `steps` form renders),
|
|
14992
|
+
* which also carries TeachingPopover's `footer`.
|
|
14993
|
+
*/
|
|
14994
|
+
export declare const teachingPopoverFooterClassNames: {
|
|
14995
|
+
readonly root: "wave-teaching-popover-footer";
|
|
14996
|
+
};
|
|
14997
|
+
|
|
14998
|
+
/** Properties for the TeachingPopoverFooter sub-component. */
|
|
14999
|
+
export declare interface TeachingPopoverFooterProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
15000
|
+
/**
|
|
15001
|
+
* The footer content. Without children (or with children that render nothing) the step dots and
|
|
15002
|
+
* the buttons of the current step: Back and Next (Done on the last step), or the
|
|
15003
|
+
* `primaryAction` and `secondaryAction` that replace them.
|
|
15004
|
+
*/
|
|
15005
|
+
children?: React_2.ReactNode;
|
|
15006
|
+
/** Ref to the footer element. */
|
|
15007
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
15008
|
+
}
|
|
15009
|
+
|
|
15010
|
+
/**
|
|
15011
|
+
* The top of the popover (Fluent's `TeachingPopoverHeader`): the Close button, and an optional
|
|
15012
|
+
* caption with a decorative `icon` before the title. Without children it holds only the Close
|
|
15013
|
+
* button, as the `steps` form does. Place it first in a `TeachingPopover.Surface`.
|
|
15014
|
+
*
|
|
15015
|
+
* Also exported as `TeachingPopoverHeader` for React Server Components, which cannot use the
|
|
15016
|
+
* dotted `TeachingPopover.Header` (that needs a client file).
|
|
15017
|
+
*/
|
|
15018
|
+
export declare const TeachingPopoverHeader: {
|
|
15019
|
+
({ icon, dismissButton, className, children, ref, ...rest }: TeachingPopoverHeaderProps): React_2.JSX.Element | null;
|
|
15020
|
+
displayName: string;
|
|
15021
|
+
};
|
|
15022
|
+
|
|
15023
|
+
/**
|
|
15024
|
+
* TeachingPopover.Header: `root` on the header element (also the one the `steps` form renders
|
|
15025
|
+
* around its Close button); `icon` on the element of its `icon` slot. Its Close button carries
|
|
15026
|
+
* TeachingPopover's `closeButton`.
|
|
15027
|
+
*/
|
|
15028
|
+
export declare const teachingPopoverHeaderClassNames: {
|
|
15029
|
+
readonly root: "wave-teaching-popover-header";
|
|
15030
|
+
readonly icon: "wave-teaching-popover-header__icon";
|
|
15031
|
+
};
|
|
15032
|
+
|
|
15033
|
+
/** Properties for the TeachingPopoverHeader sub-component. */
|
|
15034
|
+
export declare interface TeachingPopoverHeaderProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
15035
|
+
/**
|
|
15036
|
+
* A short caption above the title, such as “Tip” or “New”. Without it (and without `icon`) the
|
|
15037
|
+
* header holds only the Close button, as the `steps` form's does; with either, they sit in a row
|
|
15038
|
+
* at the top of the popover, next to the Close button.
|
|
15039
|
+
*/
|
|
15040
|
+
children?: React_2.ReactNode;
|
|
15041
|
+
/**
|
|
15042
|
+
* A decorative icon before the caption (`aria-hidden`), such as a light bulb. None by default
|
|
15043
|
+
* (Fluent's header shows a light bulb). A value that renders nothing renders no element.
|
|
15044
|
+
*/
|
|
15045
|
+
icon?: Slot<'span'>;
|
|
15046
|
+
/**
|
|
15047
|
+
* The Close button at the popover's top end, which dismisses it (`onOpenChange(false)`, then
|
|
15048
|
+
* `onDismiss`) and is named by TeachingPopover's `closeLabel`. Content (an icon) replaces the
|
|
15049
|
+
* dismiss glyph inside the built-in button. A `<button>` or a `Button`, or a slot object whose
|
|
15050
|
+
* `as` is one, is merged into it, never nested: its props and handlers (called first) reach the
|
|
15051
|
+
* built-in button, its content goes inside, and a development warning says so; a text label of
|
|
15052
|
+
* two or more letters or digits in it names the button instead of `closeLabel` (WCAG 2.5.3,
|
|
15053
|
+
* Label in Name), as does its own `aria-label`. `null` renders no Close button; `undefined` and
|
|
15054
|
+
* booleans keep the default.
|
|
15055
|
+
*/
|
|
15056
|
+
dismissButton?: Slot<'span'>;
|
|
15057
|
+
/** Ref to the header element. */
|
|
15058
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
15059
|
+
}
|
|
15060
|
+
|
|
13721
15061
|
/** The built-in text of a TeachingPopover, for localization (see `TeachingPopoverProps.labels`). */
|
|
13722
15062
|
export declare interface TeachingPopoverLabels {
|
|
13723
15063
|
/** Text of the Back button.
|
|
@@ -13739,6 +15079,16 @@ export declare interface TeachingPopoverLabels {
|
|
|
13739
15079
|
* @default (index, count) => `step ${index + 1} of ${count}`
|
|
13740
15080
|
*/
|
|
13741
15081
|
step?: (index: number, count: number) => string;
|
|
15082
|
+
/** Name of the group of step buttons that `TeachingPopover.CarouselNav` renders.
|
|
15083
|
+
* @default 'Choose step'
|
|
15084
|
+
*/
|
|
15085
|
+
nav?: string;
|
|
15086
|
+
/**
|
|
15087
|
+
* Name of the `TeachingPopover.CarouselNav` button that shows the step at `index` (zero-based,
|
|
15088
|
+
* like `activeStep`) out of `count` steps.
|
|
15089
|
+
* @default (index, count) => `Step ${index + 1} of ${count}`
|
|
15090
|
+
*/
|
|
15091
|
+
navButton?: (index: number, count: number) => string;
|
|
13742
15092
|
}
|
|
13743
15093
|
|
|
13744
15094
|
/** Properties for the TeachingPopover component. */
|
|
@@ -13747,10 +15097,14 @@ export declare interface TeachingPopoverProps extends React_2.HTMLAttributes<HTM
|
|
|
13747
15097
|
steps: readonly TeachingPopoverStep[];
|
|
13748
15098
|
/**
|
|
13749
15099
|
* Controlled index of the displayed step. Out-of-range values are clamped to the first or last
|
|
13750
|
-
* step (with a development warning).
|
|
15100
|
+
* step (with a development warning). Opening the popover leaves it as it is.
|
|
13751
15101
|
*/
|
|
13752
15102
|
activeStep?: number;
|
|
13753
|
-
/**
|
|
15103
|
+
/**
|
|
15104
|
+
* Initial step index for uncontrolled usage, and the step the popover starts on again each time
|
|
15105
|
+
* it opens (after Done, Close, Escape or the Trigger closed it, or a controlled `open` turned it
|
|
15106
|
+
* off), so a tour opened again starts over; `onStepChange` is called with it when the step was
|
|
15107
|
+
* elsewhere.
|
|
13754
15108
|
* @default 0
|
|
13755
15109
|
*/
|
|
13756
15110
|
defaultActiveStep?: number;
|
|
@@ -13758,17 +15112,56 @@ export declare interface TeachingPopoverProps extends React_2.HTMLAttributes<HTM
|
|
|
13758
15112
|
currentStep?: number;
|
|
13759
15113
|
/** @deprecated Use `defaultActiveStep`. */
|
|
13760
15114
|
defaultCurrentStep?: number;
|
|
13761
|
-
/**
|
|
15115
|
+
/**
|
|
15116
|
+
* Called with the requested step index when Next, Back or a step button of
|
|
15117
|
+
* `TeachingPopover.CarouselNav` is activated (the button of the current step requests nothing),
|
|
15118
|
+
* and, while the step is uncontrolled, with the initial step when an opening moves the step back
|
|
15119
|
+
* to it (see `defaultActiveStep`).
|
|
15120
|
+
*/
|
|
13762
15121
|
onStepChange?: (step: number) => void;
|
|
13763
|
-
/**
|
|
15122
|
+
/**
|
|
15123
|
+
* Called when the popover is dismissed with Close, Done, Escape or a `TeachingPopover.Trigger`
|
|
15124
|
+
* that closes it.
|
|
15125
|
+
*
|
|
15126
|
+
* Done also calls it in 0.x, after `onFinish`, so that code written before `onFinish` keeps
|
|
15127
|
+
* working; from 1.0 only Close, Escape and the Trigger will.
|
|
15128
|
+
*/
|
|
13764
15129
|
onDismiss?: () => void;
|
|
15130
|
+
/**
|
|
15131
|
+
* Called when the tour is finished: Done, the button that replaces Next on the last step, or a
|
|
15132
|
+
* `primaryAction` on the last step whose click was not prevented. The popover closes first.
|
|
15133
|
+
* Close, Escape and the Trigger call only `onDismiss`. Fires on every activation, like
|
|
15134
|
+
* `onStepChange`.
|
|
15135
|
+
*/
|
|
15136
|
+
onFinish?: () => void;
|
|
15137
|
+
/**
|
|
15138
|
+
* Replaces the Next (or Done) button on every step that sets no `primaryAction` of its own.
|
|
15139
|
+
*/
|
|
15140
|
+
primaryAction?: TeachingPopoverAction;
|
|
15141
|
+
/**
|
|
15142
|
+
* Replaces the Back button on every step that sets no `secondaryAction` of its own.
|
|
15143
|
+
*/
|
|
15144
|
+
secondaryAction?: TeachingPopoverAction;
|
|
15145
|
+
/**
|
|
15146
|
+
* How the footer lays out the step dots and the buttons: side by side, or the dots above
|
|
15147
|
+
* buttons that fill the width. Rendered as `data-layout` on the popover and on its footer.
|
|
15148
|
+
* `TeachingPopover.CarouselFooter` has its own `layout` instead.
|
|
15149
|
+
* @default 'horizontal'
|
|
15150
|
+
*/
|
|
15151
|
+
footerLayout?: 'horizontal' | 'vertical';
|
|
13765
15152
|
/** Controlled visibility of the teaching popover. */
|
|
13766
15153
|
open?: boolean;
|
|
13767
|
-
/**
|
|
13768
|
-
*
|
|
15154
|
+
/**
|
|
15155
|
+
* Initial visibility for uncontrolled usage: `true` (a tour that shows on page load), or
|
|
15156
|
+
* `false` when a `TeachingPopover.Trigger` is a direct child (a Fragment is fine), which then
|
|
15157
|
+
* opens it.
|
|
15158
|
+
* @default true (false with a direct TeachingPopover.Trigger)
|
|
13769
15159
|
*/
|
|
13770
15160
|
defaultOpen?: boolean;
|
|
13771
|
-
/**
|
|
15161
|
+
/**
|
|
15162
|
+
* Called with `false` when Close, Done or Escape dismisses the popover, and with the new state
|
|
15163
|
+
* when a `TeachingPopover.Trigger` opens or closes it.
|
|
15164
|
+
*/
|
|
13772
15165
|
onOpenChange?: (open: boolean) => void;
|
|
13773
15166
|
/**
|
|
13774
15167
|
* Accessible name of the built-in Close button (an icon-only button). Localize it with the
|
|
@@ -13777,15 +15170,17 @@ export declare interface TeachingPopoverProps extends React_2.HTMLAttributes<HTM
|
|
|
13777
15170
|
*/
|
|
13778
15171
|
closeLabel?: string;
|
|
13779
15172
|
/**
|
|
13780
|
-
* Text of the Back, Next and Done buttons
|
|
13781
|
-
* for localization. Unset members keep
|
|
15173
|
+
* Text of the Back, Next and Done buttons, the wording of the step position (“step 2 of 3”) and
|
|
15174
|
+
* the names of `TeachingPopover.CarouselNav`'s step buttons, for localization. Unset members keep
|
|
15175
|
+
* their English defaults.
|
|
13782
15176
|
*/
|
|
13783
15177
|
labels?: TeachingPopoverLabels;
|
|
13784
15178
|
/**
|
|
13785
15179
|
* The element the popover points at (a ref, the element, or a `VirtualElement`: a rectangle such as a
|
|
13786
15180
|
* point; an inline object is fine). When given, the popover is
|
|
13787
15181
|
* rendered in a portal, positioned next to it with a beak, and flips or shifts to stay in view;
|
|
13788
|
-
* without it (`undefined`) the popover renders inline where it is placed (0.4 behaviour)
|
|
15182
|
+
* without it (`undefined`) the popover renders inline where it is placed (0.4 behaviour), or,
|
|
15183
|
+
* with a `TeachingPopover.Trigger`, points at the trigger.
|
|
13789
15184
|
* While the target is `null` or has not been positioned against yet (an element held in state
|
|
13790
15185
|
* that is not set yet, a ref that is not attached), the popover stays hidden: it is not
|
|
13791
15186
|
* shown, takes no focus, announces no step change and does not handle Escape until it can
|
|
@@ -13820,7 +15215,18 @@ export declare interface TeachingPopoverProps extends React_2.HTMLAttributes<HTM
|
|
|
13820
15215
|
* @default `{ offset: 12 }`
|
|
13821
15216
|
*/
|
|
13822
15217
|
positioning?: PopupPositioning;
|
|
13823
|
-
/**
|
|
15218
|
+
/**
|
|
15219
|
+
* `TeachingPopover.Trigger` and `TeachingPopover.Surface` (Fluent's composition), rendered where
|
|
15220
|
+
* they are written. Without a `TeachingPopover.Surface` among them, the popover renders its
|
|
15221
|
+
* surface itself, after the children, with the element props given here (`className`, `style`,
|
|
15222
|
+
* `ref`, …); with one (best written directly inside, a Fragment is fine: see
|
|
15223
|
+
* `TeachingPopover.Surface`), the Surface takes them instead.
|
|
15224
|
+
*/
|
|
15225
|
+
children?: React_2.ReactNode;
|
|
15226
|
+
/**
|
|
15227
|
+
* Ref to the popover surface (`role="dialog"`). Ignored next to a `TeachingPopover.Surface`
|
|
15228
|
+
* (pass it to the Surface).
|
|
15229
|
+
*/
|
|
13824
15230
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
13825
15231
|
}
|
|
13826
15232
|
|
|
@@ -13830,6 +15236,164 @@ export declare interface TeachingPopoverStep {
|
|
|
13830
15236
|
title: string;
|
|
13831
15237
|
/** Body content for the step. */
|
|
13832
15238
|
body: React_2.ReactNode;
|
|
15239
|
+
/**
|
|
15240
|
+
* Replaces the Next (or, on the last step, Done) button on this step; wins over the
|
|
15241
|
+
* popover's `primaryAction`.
|
|
15242
|
+
*/
|
|
15243
|
+
primaryAction?: TeachingPopoverAction;
|
|
15244
|
+
/**
|
|
15245
|
+
* Replaces the Back button on this step (also on a single-step popover, which has no Back);
|
|
15246
|
+
* wins over the popover's `secondaryAction`.
|
|
15247
|
+
*/
|
|
15248
|
+
secondaryAction?: TeachingPopoverAction;
|
|
15249
|
+
}
|
|
15250
|
+
|
|
15251
|
+
/**
|
|
15252
|
+
* The popover surface (Fluent's `TeachingPopoverSurface`): the non-modal `role="dialog"` element
|
|
15253
|
+
* that the `steps` form renders, with the same behaviour (in place, or portaled next to the
|
|
15254
|
+
* target with a beak; focus, dismissal, keyboard order and step announcements), so your
|
|
15255
|
+
* `className`, `style`, `ref` and other props reach the element the `steps` form gives
|
|
15256
|
+
* TeachingPopover's own. Without children it shows the current step as the `steps` form does;
|
|
15257
|
+
* children replace that content: build it from `TeachingPopover.Header`, `Title`, `Body` and
|
|
15258
|
+
* `Footer`, or from your own (then name the surface with `aria-label` or `aria-labelledby`).
|
|
15259
|
+
*
|
|
15260
|
+
* Render one inside TeachingPopover; TeachingPopover then renders no surface of its own, and its
|
|
15261
|
+
* own `className`, `style`, `ref` and other element props are ignored (a development warning says
|
|
15262
|
+
* so). Write it directly inside TeachingPopover (a Fragment is fine) where you can: there it is
|
|
15263
|
+
* found while rendering. One inside an element or a component of yours is found once it has
|
|
15264
|
+
* mounted, so until then TeachingPopover's own surface renders next to it: in the server HTML, and
|
|
15265
|
+
* in the browser's first commit (before anything is painted or focused). A second Surface renders
|
|
15266
|
+
* a second popover (a development warning says so).
|
|
15267
|
+
*
|
|
15268
|
+
* Also exported as `TeachingPopoverSurface` for React Server Components, which cannot use the
|
|
15269
|
+
* dotted `TeachingPopover.Surface` (that needs a client file).
|
|
15270
|
+
*/
|
|
15271
|
+
export declare const TeachingPopoverSurface: {
|
|
15272
|
+
({ id, ref, ...rest }: TeachingPopoverSurfaceProps): React_2.JSX.Element;
|
|
15273
|
+
displayName: string;
|
|
15274
|
+
};
|
|
15275
|
+
|
|
15276
|
+
/**
|
|
15277
|
+
* TeachingPopover.Surface: `root` on the `role="dialog"` surface it renders, which also carries
|
|
15278
|
+
* TeachingPopover's `root`; the content of the current step it shows without children carries
|
|
15279
|
+
* TeachingPopover's part classes.
|
|
15280
|
+
*/
|
|
15281
|
+
export declare const teachingPopoverSurfaceClassNames: {
|
|
15282
|
+
readonly root: "wave-teaching-popover-surface";
|
|
15283
|
+
};
|
|
15284
|
+
|
|
15285
|
+
/** Properties for the TeachingPopoverSurface sub-component. */
|
|
15286
|
+
export declare interface TeachingPopoverSurfaceProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
15287
|
+
/**
|
|
15288
|
+
* The popover's content. Without children (or with children that render nothing) the surface
|
|
15289
|
+
* shows the current step as the `steps` form does: `TeachingPopover.Header`, `Title`, `Body` and
|
|
15290
|
+
* `Footer` without children of their own (the Close button, the step title, its body, and the
|
|
15291
|
+
* footer with the step dots and the buttons). Children replace all of that: build it from those
|
|
15292
|
+
* parts, each showing its share of the current step unless you give it children, or from your
|
|
15293
|
+
* own content. A `TeachingPopover.Title` among the children (at any depth) names the surface;
|
|
15294
|
+
* without one, name it with `aria-label` or `aria-labelledby`.
|
|
15295
|
+
*/
|
|
15296
|
+
children?: React_2.ReactNode;
|
|
15297
|
+
/** Ref to the popover surface (`role="dialog"`). */
|
|
15298
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
15299
|
+
}
|
|
15300
|
+
|
|
15301
|
+
/**
|
|
15302
|
+
* The step title (Fluent's `TeachingPopoverTitle`): an `<h3>` (another level, or any element,
|
|
15303
|
+
* with `as`) holding the current step's `title`, or your children, and a visually hidden step
|
|
15304
|
+
* position. It names the surface: the surface's `aria-labelledby` points at its `id` (yours, or a
|
|
15305
|
+
* generated one), wherever it is among the Surface's children (inside `TeachingPopover.Body`, as
|
|
15306
|
+
* in Fluent, works too).
|
|
15307
|
+
*
|
|
15308
|
+
* Also exported as `TeachingPopoverTitle` for React Server Components, which cannot use the
|
|
15309
|
+
* dotted `TeachingPopover.Title` (that needs a client file).
|
|
15310
|
+
*/
|
|
15311
|
+
export declare const TeachingPopoverTitle: PolymorphicComponent<'h3', TeachingPopoverTitleOwnProps>;
|
|
15312
|
+
|
|
15313
|
+
/**
|
|
15314
|
+
* TeachingPopover.Title: `root` on the heading (also the one the `steps` form renders), which
|
|
15315
|
+
* also carries TeachingPopover's `title`.
|
|
15316
|
+
*/
|
|
15317
|
+
export declare const teachingPopoverTitleClassNames: {
|
|
15318
|
+
readonly root: "wave-teaching-popover-title";
|
|
15319
|
+
};
|
|
15320
|
+
|
|
15321
|
+
/** The TeachingPopover.Title's own props (component-specific props only). */
|
|
15322
|
+
export declare interface TeachingPopoverTitleOwnProps {
|
|
15323
|
+
/**
|
|
15324
|
+
* The title text: the current step's `title` without children (or with children that render
|
|
15325
|
+
* nothing). A visually hidden step position (“, step 2 of 3”, worded by `labels.step`) follows
|
|
15326
|
+
* either, so the heading, which names the popover, says where the tour is.
|
|
15327
|
+
*/
|
|
15328
|
+
children?: React_2.ReactNode;
|
|
15329
|
+
}
|
|
15330
|
+
|
|
15331
|
+
/** Props of {@link TeachingPopoverTitle} rendered as `C` (default `'h3'`), including `ref`. */
|
|
15332
|
+
export declare type TeachingPopoverTitleProps<C extends React_2.ElementType = 'h3'> = PolymorphicProps<C, TeachingPopoverTitleOwnProps>;
|
|
15333
|
+
|
|
15334
|
+
/**
|
|
15335
|
+
* The element that opens and closes the popover (Fluent's `TeachingPopoverTrigger`, as
|
|
15336
|
+
* `Popover.Trigger`). Its props are merged onto the single child (no wrapper element):
|
|
15337
|
+
* `aria-haspopup="dialog"`, `aria-expanded`, `aria-controls` (while open), a composed `onClick`
|
|
15338
|
+
* that opens the popover, or dismisses it while it is open (as Close does: `onOpenChange(false)`,
|
|
15339
|
+
* then `onDismiss`), and a ref. The child's own handlers and classes are kept; the live state ARIA
|
|
15340
|
+
* always wins. A render function receives the props instead; `asChild={false}` renders a wrapper
|
|
15341
|
+
* span, and a custom child that neither forwards `ref` nor spreads its props falls back to that
|
|
15342
|
+
* span automatically (with a development warning). On the span, the state ARIA goes to the first
|
|
15343
|
+
* element in the tab order inside it.
|
|
15344
|
+
*
|
|
15345
|
+
* When TeachingPopover has no `target` (and no `positioning.target`), the popover points at the
|
|
15346
|
+
* trigger: it is portaled next to it with a beak and takes its place in the keyboard order right
|
|
15347
|
+
* after it. Focus returns to the trigger when the popover closes, with a `target` too (as with
|
|
15348
|
+
* `Popover.Trigger`). Place it directly inside TeachingPopover (a Fragment is fine): the popover
|
|
15349
|
+
* then starts closed unless `defaultOpen` says otherwise. A trigger nested deeper still works, but
|
|
15350
|
+
* leaves `defaultOpen` at `true` and becomes the target once it has mounted.
|
|
15351
|
+
*
|
|
15352
|
+
* @example
|
|
15353
|
+
* <TeachingPopover steps={steps}>
|
|
15354
|
+
* <TeachingPopover.Trigger>
|
|
15355
|
+
* <Button>Take the tour</Button>
|
|
15356
|
+
* </TeachingPopover.Trigger>
|
|
15357
|
+
* </TeachingPopover>
|
|
15358
|
+
*
|
|
15359
|
+
* Also exported as `TeachingPopoverTrigger` for React Server Components, which cannot use the
|
|
15360
|
+
* dotted `TeachingPopover.Trigger` (that needs a client file).
|
|
15361
|
+
*/
|
|
15362
|
+
export declare const TeachingPopoverTrigger: {
|
|
15363
|
+
({ children, asChild, onClick, ref, ...rest }: TeachingPopoverTriggerProps): React_2.ReactNode;
|
|
15364
|
+
displayName: string;
|
|
15365
|
+
};
|
|
15366
|
+
|
|
15367
|
+
/**
|
|
15368
|
+
* Props a `TeachingPopover.Trigger` puts on its element; a render-prop child receives them (spread
|
|
15369
|
+
* them onto the element that opens the popover).
|
|
15370
|
+
*/
|
|
15371
|
+
export declare type TeachingPopoverTriggerChildProps = Omit<React_2.HTMLAttributes<HTMLElement>, 'children'> & {
|
|
15372
|
+
'aria-haspopup': 'dialog';
|
|
15373
|
+
'aria-expanded': boolean;
|
|
15374
|
+
/** The surface's id, only while the popover is open. */
|
|
15375
|
+
'aria-controls': string | undefined;
|
|
15376
|
+
onClick: React_2.MouseEventHandler<HTMLElement>;
|
|
15377
|
+
ref: React_2.RefCallback<HTMLElement>;
|
|
15378
|
+
};
|
|
15379
|
+
|
|
15380
|
+
/** Properties for the TeachingPopoverTrigger sub-component. */
|
|
15381
|
+
export declare interface TeachingPopoverTriggerProps extends Omit<React_2.HTMLAttributes<HTMLElement>, 'children'> {
|
|
15382
|
+
/**
|
|
15383
|
+
* The element that opens and closes the popover (its props are merged onto it), or a render
|
|
15384
|
+
* function that receives the trigger props.
|
|
15385
|
+
*/
|
|
15386
|
+
children: React_2.ReactNode | ((props: TeachingPopoverTriggerChildProps) => React_2.ReactNode);
|
|
15387
|
+
/**
|
|
15388
|
+
* `false` renders a wrapper `<span>` carrying the trigger props around the children instead of
|
|
15389
|
+
* merging them onto the child. `aria-haspopup`, `aria-expanded` and `aria-controls`, which a
|
|
15390
|
+
* generic element cannot carry, go to the first element in the tab order inside the span. A
|
|
15391
|
+
* render-prop child ignores `asChild` and receives every prop.
|
|
15392
|
+
* @default true
|
|
15393
|
+
*/
|
|
15394
|
+
asChild?: boolean;
|
|
15395
|
+
/** Ref to the trigger element (the child, or the wrapper span). */
|
|
15396
|
+
ref?: React_2.Ref<HTMLElement>;
|
|
13833
15397
|
}
|
|
13834
15398
|
|
|
13835
15399
|
/**
|
|
@@ -15402,6 +16966,23 @@ export declare interface TreeProps extends React_2.HTMLAttributes<HTMLDivElement
|
|
|
15402
16966
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
15403
16967
|
}
|
|
15404
16968
|
|
|
16969
|
+
/**
|
|
16970
|
+
* Shortens the text of a breadcrumb item that is longer than `maxLength` characters: it trims the
|
|
16971
|
+
* text, keeps the first `maxLength` characters and adds `...`. Shorter text, and text of exactly
|
|
16972
|
+
* `maxLength` characters, is returned unchanged. Show the full text in a tooltip when
|
|
16973
|
+
* {@link isTruncatableBreadcrumbContent} is true.
|
|
16974
|
+
* @default maxLength 30
|
|
16975
|
+
*/
|
|
16976
|
+
export declare function truncateBreadcrumbLongName(content: string, maxLength?: number): string;
|
|
16977
|
+
|
|
16978
|
+
/**
|
|
16979
|
+
* Shortens the text of a breadcrumb item's tooltip that is longer than `maxLength` characters, the
|
|
16980
|
+
* same way as {@link truncateBreadcrumbLongName}. Fluent UI spells this function
|
|
16981
|
+
* `truncateBreadcrumLongTooltip`; WaveUI spells it correctly and keeps no alias.
|
|
16982
|
+
* @default maxLength 80
|
|
16983
|
+
*/
|
|
16984
|
+
export declare function truncateBreadcrumbLongTooltip(content: string, maxLength?: number): string;
|
|
16985
|
+
|
|
15405
16986
|
/** Typography scale variant mapping to Fluent UI type ramp tokens. */
|
|
15406
16987
|
export declare type TypographyVariant = 'caption-2' | 'caption-1' | 'body-1' | 'body-2' | 'subtitle-2' | 'subtitle-1' | 'title-3' | 'title-2' | 'title-1' | 'large-title' | 'display';
|
|
15407
16988
|
|
|
@@ -15866,6 +17447,12 @@ export declare interface UseGridNavigationResult {
|
|
|
15866
17447
|
gridProps: GridNavigationHandlers;
|
|
15867
17448
|
}
|
|
15868
17449
|
|
|
17450
|
+
/**
|
|
17451
|
+
* Whether the enclosing {@link Overflow} currently hides at least one item (the button that the
|
|
17452
|
+
* `hasHiddenItems` prop reserves does not count). Must be called inside `Overflow`.
|
|
17453
|
+
*/
|
|
17454
|
+
export declare function useHasHiddenItems(): boolean;
|
|
17455
|
+
|
|
15869
17456
|
/**
|
|
15870
17457
|
* Generates a stable, SSR-safe unique id, optionally with a prefix. Wraps React's `useId` so every
|
|
15871
17458
|
* component builds DOM ids the same way (C-IDS).
|
|
@@ -15910,6 +17497,12 @@ export declare interface UseInitialFocusOptions {
|
|
|
15910
17497
|
*/
|
|
15911
17498
|
export declare function useIsClient(): boolean;
|
|
15912
17499
|
|
|
17500
|
+
/**
|
|
17501
|
+
* How much of the item group `groupId` is shown: `'visible'` (every member, and also a group
|
|
17502
|
+
* without items), `'hidden'` (none) or `'overflow'` (some). Must be called inside `Overflow`.
|
|
17503
|
+
*/
|
|
17504
|
+
export declare function useIsOverflowGroupVisible(groupId: string): OverflowGroupVisibility;
|
|
17505
|
+
|
|
15913
17506
|
/**
|
|
15914
17507
|
* Whether `target`'s content is wider than the element (`scrollWidth > clientWidth`).
|
|
15915
17508
|
*
|