pne-ui 4.3.0-rc.7 → 4.3.0-rc.8
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 +144 -0
- package/cjs/component/search-ui/SearchUI.d.ts +23 -15
- package/cjs/component/search-ui/SearchUI.js +221 -9
- package/cjs/component/search-ui/SearchUI.js.map +1 -1
- package/cjs/component/search-ui/SearchUITableSelection.d.ts +68 -0
- package/cjs/component/search-ui/SearchUITableSelection.js +30 -0
- package/cjs/component/search-ui/SearchUITableSelection.js.map +1 -0
- package/cjs/component/table/AbstractTable.js +26 -13
- package/cjs/component/table/AbstractTable.js.map +1 -1
- package/cjs/component/table/PneTablePaginationActions.js +41 -9
- package/cjs/component/table/PneTablePaginationActions.js.map +1 -1
- package/cjs/component/table/PneTableSelectionCell.d.ts +21 -0
- package/cjs/component/table/PneTableSelectionCell.js +44 -0
- package/cjs/component/table/PneTableSelectionCell.js.map +1 -0
- package/cjs/component/table/PneTableSelectionControls.d.ts +12 -0
- package/cjs/component/table/PneTableSelectionControls.js +46 -0
- package/cjs/component/table/PneTableSelectionControls.js.map +1 -0
- package/cjs/component/table/PneTableSelectionHeaderCell.d.ts +15 -0
- package/cjs/component/table/PneTableSelectionHeaderCell.js +48 -0
- package/cjs/component/table/PneTableSelectionHeaderCell.js.map +1 -0
- package/cjs/component/table/PneTableToolbar.d.ts +26 -0
- package/cjs/component/table/PneTableToolbar.js +126 -0
- package/cjs/component/table/PneTableToolbar.js.map +1 -0
- package/cjs/component/table/tableSelection.d.ts +26 -0
- package/cjs/component/table/tableSelection.js +173 -0
- package/cjs/component/table/tableSelection.js.map +1 -0
- package/cjs/component/table/useTableSelection.d.ts +46 -0
- package/cjs/component/table/useTableSelection.js +178 -0
- package/cjs/component/table/useTableSelection.js.map +1 -0
- package/cjs/exports/search.d.ts +2 -1
- package/cjs/exports/search.js.map +1 -1
- package/cjs/exports/table.d.ts +11 -0
- package/cjs/exports/table.js +20 -1
- package/cjs/exports/table.js.map +1 -1
- package/esm/component/search-ui/SearchUI.d.ts +23 -15
- package/esm/component/search-ui/SearchUI.js +223 -11
- package/esm/component/search-ui/SearchUI.js.map +1 -1
- package/esm/component/search-ui/SearchUITableSelection.d.ts +68 -0
- package/esm/component/search-ui/SearchUITableSelection.js +26 -0
- package/esm/component/search-ui/SearchUITableSelection.js.map +1 -0
- package/esm/component/table/AbstractTable.js +26 -13
- package/esm/component/table/AbstractTable.js.map +1 -1
- package/esm/component/table/PneTablePaginationActions.js +41 -9
- package/esm/component/table/PneTablePaginationActions.js.map +1 -1
- package/esm/component/table/PneTableSelectionCell.d.ts +21 -0
- package/esm/component/table/PneTableSelectionCell.js +40 -0
- package/esm/component/table/PneTableSelectionCell.js.map +1 -0
- package/esm/component/table/PneTableSelectionControls.d.ts +12 -0
- package/esm/component/table/PneTableSelectionControls.js +43 -0
- package/esm/component/table/PneTableSelectionControls.js.map +1 -0
- package/esm/component/table/PneTableSelectionHeaderCell.d.ts +15 -0
- package/esm/component/table/PneTableSelectionHeaderCell.js +45 -0
- package/esm/component/table/PneTableSelectionHeaderCell.js.map +1 -0
- package/esm/component/table/PneTableToolbar.d.ts +26 -0
- package/esm/component/table/PneTableToolbar.js +121 -0
- package/esm/component/table/PneTableToolbar.js.map +1 -0
- package/esm/component/table/tableSelection.d.ts +26 -0
- package/esm/component/table/tableSelection.js +162 -0
- package/esm/component/table/tableSelection.js.map +1 -0
- package/esm/component/table/useTableSelection.d.ts +46 -0
- package/esm/component/table/useTableSelection.js +176 -0
- package/esm/component/table/useTableSelection.js.map +1 -0
- package/esm/exports/search.d.ts +2 -1
- package/esm/exports/search.js.map +1 -1
- package/esm/exports/table.d.ts +11 -0
- package/esm/exports/table.js +6 -0
- package/esm/exports/table.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -96,6 +96,146 @@ DOM-позиции или пользовательских/секретных д
|
|
|
96
96
|
- пустой результат: существующая строка `data-autotest="empty-state"`;
|
|
97
97
|
- disabled/checked/selected состояния: только нативные DOM/ARIA-свойства, без test-only копий.
|
|
98
98
|
|
|
99
|
+
#### Выбор строк
|
|
100
|
+
|
|
101
|
+
`useTableSelection` хранит выбор в одной из двух взаимоисключающих форм:
|
|
102
|
+
|
|
103
|
+
- `explicit` — явно выбранные стабильные ID;
|
|
104
|
+
- `allMatching` — все selectable-строки текущей применённой выдачи, кроме `excludedIds`.
|
|
105
|
+
|
|
106
|
+
Header checkbox управляет только загруженной страницей. Выбор всей выдачи является отдельным действием:
|
|
107
|
+
consumer получает точное число selectable-результатов от своего API и передаёт его в
|
|
108
|
+
`selectAllMatching(matchingCount)`. `matchingCount`, `excludedIds`, `isRowSelectable` и backend query обязаны
|
|
109
|
+
описывать один и тот же applied-result scope. Сериализацию `Set` и domain request выполняйте только на границе
|
|
110
|
+
приложения.
|
|
111
|
+
|
|
112
|
+
```tsx
|
|
113
|
+
const selection = useTableSelection({
|
|
114
|
+
rows: orders,
|
|
115
|
+
getRowId: order => order.id,
|
|
116
|
+
maxSelected: 20_000,
|
|
117
|
+
scopeKey: appliedSearchFingerprint,
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
<PneTable<Order>
|
|
121
|
+
autoTestId="orders"
|
|
122
|
+
tableAriaLabel="Orders"
|
|
123
|
+
data={orders}
|
|
124
|
+
createTableHeader={() => <PneTableRow>
|
|
125
|
+
<PneTableSelectionHeaderCell
|
|
126
|
+
aria-label="Select current page"
|
|
127
|
+
state={selection.pageState}
|
|
128
|
+
disabled={selection.interactionDisabled || selection.pageSelectableCount === 0}
|
|
129
|
+
onChange={selection.setPageSelected}
|
|
130
|
+
/>
|
|
131
|
+
{/* business headers */}
|
|
132
|
+
</PneTableRow>}
|
|
133
|
+
createRow={order => <PneTableRow
|
|
134
|
+
key={order.id}
|
|
135
|
+
selected={selection.isRowSelected(order)}
|
|
136
|
+
aria-selected={selection.isRowSelected(order)}
|
|
137
|
+
>
|
|
138
|
+
<PneTableSelectionCell
|
|
139
|
+
aria-label={`Select order ${order.id}`}
|
|
140
|
+
checked={selection.isRowSelected(order)}
|
|
141
|
+
disabled={selection.interactionDisabled || !selection.isRowSelectable(order)}
|
|
142
|
+
onChange={checked => selection.setRowSelected(order, checked)}
|
|
143
|
+
/>
|
|
144
|
+
{/* business cells */}
|
|
145
|
+
</PneTableRow>}
|
|
146
|
+
toolbar={<PneTableToolbar
|
|
147
|
+
aria-label="Table controls"
|
|
148
|
+
contextual={<PneTableSelectionControls
|
|
149
|
+
summary={`${selection.selectedCount} selected`}
|
|
150
|
+
actions={consumerOwnedBulkActions}
|
|
151
|
+
status={consumerOwnedLimitWarning}
|
|
152
|
+
/>}
|
|
153
|
+
persistent={optionalViewSelector}
|
|
154
|
+
/>}
|
|
155
|
+
/* остальные props */
|
|
156
|
+
/>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
`maxSelected` отклоняет всю row/page/all-matching операцию атомарно: возвращённый
|
|
160
|
+
`TableSelectionUpdate.limitExceeded` равен `true`, а модель не меняется. Смена primitive `scopeKey` очищает
|
|
161
|
+
выбор; pagination, sort и refresh не должны входить в этот ключ. В controlled-режиме consumer обязан принять
|
|
162
|
+
scope-reset и вернуть canonical empty-модель `{mode: 'explicit', selectedIds: new Set()}`.
|
|
163
|
+
|
|
164
|
+
`PneTableToolbar` объединяет contextual selection controls и persistent View controls в существующей верхней
|
|
165
|
+
полосе таблицы. Он измеряет фактическое содержимое и сохраняет DOM/keyboard-порядок Selection → View →
|
|
166
|
+
Pagination при переходе на несколько строк, включая поддерживаемую ширину viewport 360px.
|
|
167
|
+
|
|
168
|
+
#### Выбор строк в SearchUI
|
|
169
|
+
|
|
170
|
+
`SearchUI.tableSelection` добавляет тот же controller к consumer-owned header/row factories и автоматически
|
|
171
|
+
связывает его scope с применёнными критериями поиска. Draft-фильтры manual search, page, page size, sort и
|
|
172
|
+
value-equivalent refresh сохраняют выбор. Новые применённые критерии очищают его. При настроенных Views в scope
|
|
173
|
+
по умолчанию входит фактически выбранный View; `preserveAcrossViews` включайте только для Views с одинаковой
|
|
174
|
+
семантикой строк и совместимыми ID.
|
|
175
|
+
|
|
176
|
+
```tsx
|
|
177
|
+
<SearchUI<Order, OrderViewId, number>
|
|
178
|
+
/* search props */
|
|
179
|
+
tableSelection={{
|
|
180
|
+
selection,
|
|
181
|
+
onSelectionChange: setSelection,
|
|
182
|
+
getRowId: order => order.id,
|
|
183
|
+
maxSelected: knownClientLimit,
|
|
184
|
+
resolveAllMatchingCount: async ({appliedSearchCriteria, viewId}) => {
|
|
185
|
+
const summary = await getSelectionSummary(appliedSearchCriteria, viewId)
|
|
186
|
+
if (summary.limitExceeded) {
|
|
187
|
+
showConsumerOwnedLimitWarning(summary.selectionLimit)
|
|
188
|
+
throw new Error('Selection limit exceeded')
|
|
189
|
+
}
|
|
190
|
+
return summary.matchingCount
|
|
191
|
+
},
|
|
192
|
+
renderControls: ({selection: controller}) => (
|
|
193
|
+
<PneTableSelectionControls
|
|
194
|
+
summary={`${controller.selectedCount} selected`}
|
|
195
|
+
actions={<button
|
|
196
|
+
disabled={controller.interactionDisabled}
|
|
197
|
+
onClick={() => controller.selectAllMatchingResults?.().catch(handleSelectionError)}
|
|
198
|
+
>
|
|
199
|
+
Select all results
|
|
200
|
+
</button>}
|
|
201
|
+
status={controller.selectingAllMatching ? 'Selecting…' : selectionStatus}
|
|
202
|
+
/>
|
|
203
|
+
),
|
|
204
|
+
toolbarAriaLabel: 'Order table controls',
|
|
205
|
+
}}
|
|
206
|
+
createTableHeader={(params, context) => {
|
|
207
|
+
const controller = context?.selection
|
|
208
|
+
if (!controller) throw new Error('Table selection context is required')
|
|
209
|
+
return <>{/* explicit selection cell + headers */}</>
|
|
210
|
+
}}
|
|
211
|
+
createTableRow={(row, index, data, setData, context) => {
|
|
212
|
+
const controller = context?.selection
|
|
213
|
+
if (!controller) throw new Error('Table selection context is required')
|
|
214
|
+
return <>{/* explicit selection cell + business cells */}</>
|
|
215
|
+
}}
|
|
216
|
+
/>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Factory context optional только для source compatibility с прежними прямыми вызовами фабрик; сам `SearchUI`
|
|
220
|
+
всегда передаёт context, а `selection` присутствует при настроенном `tableSelection`. Selection-aware consumer
|
|
221
|
+
всё равно должен сделать явный guard/assertion, чтобы его callback оставался корректным вне вызова из `SearchUI`.
|
|
222
|
+
|
|
223
|
+
`resolveAllMatchingCount` получает snapshot применённых критериев и resolved View. На один SearchUI допускается
|
|
224
|
+
один in-flight запрос: повторный вызов возвращает тот же Promise, controller временно блокирует selection, а
|
|
225
|
+
ответ применяется только к той же occurrence scope. Старые ответы после `A → B → A`, unmount, смены
|
|
226
|
+
`maxSelected` или consumer `disabled` игнорируются. Активная ошибка возвращается caller-коду, после чего controller
|
|
227
|
+
снова доступен. Same-scope refresh/pagination/sort не отменяют запрос. Уже начатый запрос детерминированно
|
|
228
|
+
завершается тем resolver, с которым он был запущен: замена callback действует со следующего запроса, а удаление
|
|
229
|
+
resolver отменяет pending work.
|
|
230
|
+
|
|
231
|
+
Если backend возвращает typed summary, consumer должен обработать server `limitExceeded` до возврата count.
|
|
232
|
+
`maxSelected` — синхронный client-side guard, а не замена повторной серверной проверке при batch operation.
|
|
233
|
+
|
|
234
|
+
Selection не записывается в SearchUI retention/profile/browser storage. Uncontrolled selection исчезает при
|
|
235
|
+
remount. В controlled-режиме lifetime принадлежит consumer: если state намеренно расположен выше размонтируемого
|
|
236
|
+
экрана, consumer сам должен очистить его при navigation/remount. Строковое представление applied scope остаётся
|
|
237
|
+
в памяти библиотеки и не выводится в DOM/storage.
|
|
238
|
+
|
|
99
239
|
### SearchUI и SearchUIFilters
|
|
100
240
|
|
|
101
241
|
Передавайте стабильный несекретный `autoTestId` как Selenium scope поискового интерфейса. Если prop не задан,
|
|
@@ -267,6 +407,10 @@ assertEquals("true", enabled.getAttribute("aria-pressed"));
|
|
|
267
407
|
|---|---|---|
|
|
268
408
|
| Верхняя пагинация | `[data-autotest="pagination"][data-autotest-value="top"]` | Native button `disabled`; `current-page` внутри |
|
|
269
409
|
| Нижняя пагинация | `[data-autotest="pagination"][data-autotest-value="bottom"]` | Native button `disabled`; `current-page` внутри |
|
|
410
|
+
| Общая полоса контролов | `[data-autotest="table-control-bar"]` | `data-autotest-value="inline|stacked"` |
|
|
411
|
+
| Выбор текущей страницы | `input[data-autotest="page-selection"]` | Native `checked`, `disabled`, `aria-checked="mixed"` |
|
|
412
|
+
| Выбор строки | `input[data-autotest="row-selection"]` | Native `checked`, `disabled`; consumer может задать `autoTestId`/`autoTestValue` |
|
|
413
|
+
| Selection summary/actions/status | `[data-autotest="selection-summary"]`, `[data-autotest="selection-actions"]`, `[data-autotest="selection-status"]` | Summary является polite live status |
|
|
270
414
|
| Пустой результат | `[data-autotest="empty-state"]` | Наличие существующей empty row |
|
|
271
415
|
| Загрузка | Semantic `table` | `aria-busy="true|false"` |
|
|
272
416
|
| Активная сортировка | `th[aria-sort="ascending"], th[aria-sort="descending"]` | Значение `aria-sort` |
|
|
@@ -2,8 +2,9 @@ import React, { Dispatch, SetStateAction } from 'react';
|
|
|
2
2
|
import { SearchUIFiltersConfig } from './filters/SearchUIFilters';
|
|
3
3
|
import { CriterionTypeEnum, ExactCriterionSearchLabelEnum, SearchCriteria, SearchUIConditions } from './filters/types';
|
|
4
4
|
import { GetPagedOrderedSortedListRequest, Order } from '../../common';
|
|
5
|
-
import { PneTableViewOption, PneTableViewSelectorProps,
|
|
5
|
+
import { PneTableViewOption, PneTableViewSelectorProps, ITableCreateHeaderParams, TableRowId } from '../..';
|
|
6
6
|
import { UseTableParams } from '../table/useTable';
|
|
7
|
+
import { SearchUITableFactoryContext, SearchUITableSelectionConfig } from './SearchUITableSelection';
|
|
7
8
|
/**
|
|
8
9
|
* Параметры запроса поиска, отправляемые в обработчик данных таблицы.
|
|
9
10
|
* Тип формируется на основе SearchCriteria без служебного флага `initialized`
|
|
@@ -14,7 +15,7 @@ export type SearchParams = Omit<SearchCriteria & GetPagedOrderedSortedListReques
|
|
|
14
15
|
* Свойства компонента {@link SearchUI}.
|
|
15
16
|
* @template D Тип строки данных, возвращаемых запросом поиска и отображаемых в таблице.
|
|
16
17
|
*/
|
|
17
|
-
type SearchUICommonProps<D extends object> = {
|
|
18
|
+
type SearchUICommonProps<D extends object, TViewId extends string, TKey extends TableRowId> = {
|
|
18
19
|
/**
|
|
19
20
|
* Stable non-secret Selenium scope shared by the filters and results table.
|
|
20
21
|
* Defaults to settingsContextName; set it explicitly when multiple instances may render together.
|
|
@@ -56,20 +57,27 @@ type SearchUICommonProps<D extends object> = {
|
|
|
56
57
|
* Конфигурация виджета фильтров.
|
|
57
58
|
*/
|
|
58
59
|
config?: SearchUIFiltersConfig;
|
|
60
|
+
/** Optional transient selection controller for the current applied result set. */
|
|
61
|
+
tableSelection?: SearchUITableSelectionConfig<D, TKey, TViewId>;
|
|
59
62
|
};
|
|
60
63
|
export type SearchUIDataSource<D extends object> = (searchParams: SearchParams) => Promise<D[]>;
|
|
61
|
-
export type
|
|
64
|
+
export type SearchUITableHeaderFactory<D extends object, TKey extends TableRowId = TableRowId, TViewId extends string = string> = (headerParams: ITableCreateHeaderParams,
|
|
65
|
+
/** Optional so previously exported factories remain directly callable with one argument. */
|
|
66
|
+
context?: SearchUITableFactoryContext<D, TKey, TViewId>) => React.ReactElement;
|
|
67
|
+
export type SearchUITableRowFactory<D extends object, TKey extends TableRowId = TableRowId, TViewId extends string = string> = (rowData: D, index: number, data: D[], setData: Dispatch<SetStateAction<D[]>>,
|
|
68
|
+
/** Optional so previously exported factories remain directly callable with four arguments. */
|
|
69
|
+
context?: SearchUITableFactoryContext<D, TKey, TViewId>) => React.ReactElement;
|
|
62
70
|
export type SearchUIViewSort = 'preserve' | {
|
|
63
71
|
sortColumnIndex: number;
|
|
64
72
|
sortAsc: boolean;
|
|
65
73
|
};
|
|
66
|
-
export type SearchUIView<D extends object, TViewId extends string = string> = PneTableViewOption<TViewId> & {
|
|
74
|
+
export type SearchUIView<D extends object, TViewId extends string = string, TKey extends TableRowId = TableRowId> = PneTableViewOption<TViewId> & {
|
|
67
75
|
/** Data source used only while this view is selected. */
|
|
68
76
|
searchData: SearchUIDataSource<D>;
|
|
69
77
|
/** Header rendered only while this view is selected. */
|
|
70
|
-
createTableHeader:
|
|
78
|
+
createTableHeader: SearchUITableHeaderFactory<D, TKey, TViewId>;
|
|
71
79
|
/** Row renderer used only while this view is selected. */
|
|
72
|
-
createTableRow: SearchUITableRowFactory<D>;
|
|
80
|
+
createTableRow: SearchUITableRowFactory<D, TKey, TViewId>;
|
|
73
81
|
/** Optional consumer-owned actions rendered while this view is selected. */
|
|
74
82
|
actions?: React.ReactNode;
|
|
75
83
|
/** Defaults to the common safe sort; preserving another view's sort must be explicit. */
|
|
@@ -83,34 +91,34 @@ type SearchUIViewsAccessibleName = {
|
|
|
83
91
|
'aria-labelledby': string;
|
|
84
92
|
};
|
|
85
93
|
type SearchUIViewsBaseConfig<TViewId extends string> = Omit<PneTableViewSelectorProps<TViewId>, 'actions' | 'aria-label' | 'aria-labelledby' | 'views'>;
|
|
86
|
-
export type SearchUIViewsConfig<D extends object, TViewId extends string = string> = SearchUIViewsBaseConfig<TViewId> & SearchUIViewsAccessibleName & {
|
|
87
|
-
views: readonly SearchUIView<D, TViewId>[];
|
|
94
|
+
export type SearchUIViewsConfig<D extends object, TViewId extends string = string, TKey extends TableRowId = TableRowId> = SearchUIViewsBaseConfig<TViewId> & SearchUIViewsAccessibleName & {
|
|
95
|
+
views: readonly SearchUIView<D, TViewId, TKey>[];
|
|
88
96
|
/** Optional compatibility/layout wrapper around the library-owned selector. */
|
|
89
97
|
renderViewSelector?: (selector: React.ReactElement) => React.ReactNode;
|
|
90
98
|
};
|
|
91
|
-
type SearchUILegacyTableProps<D extends object> = {
|
|
99
|
+
type SearchUILegacyTableProps<D extends object, TViewId extends string, TKey extends TableRowId> = {
|
|
92
100
|
tableViews?: never;
|
|
93
101
|
/** Function that loads rows for the current search and table state. */
|
|
94
102
|
searchData: SearchUIDataSource<D>;
|
|
95
103
|
/** Table header factory. */
|
|
96
|
-
createTableHeader:
|
|
104
|
+
createTableHeader: SearchUITableHeaderFactory<D, TKey, TViewId>;
|
|
97
105
|
/** Table row factory. */
|
|
98
|
-
createTableRow: SearchUITableRowFactory<D>;
|
|
106
|
+
createTableRow: SearchUITableRowFactory<D, TKey, TViewId>;
|
|
99
107
|
};
|
|
100
|
-
type SearchUIViewTableProps<D extends object, TViewId extends string> = {
|
|
108
|
+
type SearchUIViewTableProps<D extends object, TViewId extends string, TKey extends TableRowId> = {
|
|
101
109
|
/** Controlled generic table-view configuration. */
|
|
102
|
-
tableViews: SearchUIViewsConfig<D, TViewId>;
|
|
110
|
+
tableViews: SearchUIViewsConfig<D, TViewId, TKey>;
|
|
103
111
|
searchData?: never;
|
|
104
112
|
createTableHeader?: never;
|
|
105
113
|
createTableRow?: never;
|
|
106
114
|
};
|
|
107
|
-
export type SearchUIProps<D extends object, TViewId extends string = string> = SearchUICommonProps<D> & (SearchUILegacyTableProps<D> | SearchUIViewTableProps<D, TViewId>);
|
|
115
|
+
export type SearchUIProps<D extends object, TViewId extends string = string, TKey extends TableRowId = TableRowId> = SearchUICommonProps<D, TViewId, TKey> & (SearchUILegacyTableProps<D, TViewId, TKey> | SearchUIViewTableProps<D, TViewId, TKey>);
|
|
108
116
|
/**
|
|
109
117
|
* Высокоуровневый компонент поискового UI, объединяющий фильтры и таблицу с результатами.
|
|
110
118
|
* @template D Тип строки данных, отображаемых в таблице.
|
|
111
119
|
* @param props Свойства компонента.
|
|
112
120
|
*/
|
|
113
|
-
export declare const SearchUI: <D extends object, TViewId extends string = string>(props: SearchUIProps<D, TViewId>) => React.ReactElement;
|
|
121
|
+
export declare const SearchUI: <D extends object, TViewId extends string = string, TKey extends TableRowId = TableRowId>(props: SearchUIProps<D, TViewId, TKey>) => React.ReactElement;
|
|
114
122
|
/**
|
|
115
123
|
* Преобразует внутреннее состояние фильтров и таблицы в параметры запроса для загрузки данных.
|
|
116
124
|
* @param searchCriteria Текущее состояние критериев поиска.
|
|
@@ -8,6 +8,10 @@ const material_1 = require("@mui/material");
|
|
|
8
8
|
const __1 = require("../..");
|
|
9
9
|
const store_1 = require("./filters/state/store");
|
|
10
10
|
const SearchUIFiltersStoreProvider_1 = require("./filters/state/SearchUIFiltersStoreProvider");
|
|
11
|
+
const SearchUITableSelection_1 = require("./SearchUITableSelection");
|
|
12
|
+
const useSearchUISelectionLayoutEffect = typeof window === 'undefined'
|
|
13
|
+
? react_1.useEffect
|
|
14
|
+
: react_1.useLayoutEffect;
|
|
11
15
|
/**
|
|
12
16
|
* Высокоуровневый компонент поискового UI, объединяющий фильтры и таблицу с результатами.
|
|
13
17
|
* @template D Тип строки данных, отображаемых в таблице.
|
|
@@ -19,7 +23,7 @@ const SearchUI = (props) => {
|
|
|
19
23
|
};
|
|
20
24
|
exports.SearchUI = SearchUI;
|
|
21
25
|
const SearchUIContent = (props) => {
|
|
22
|
-
const { autoTestId = props.settingsContextName, settingsContextName, possibleCriteria, predefinedCriteria, exactSearchLabels, initialSearchConditions, searchConditions, tableParams, dataUseState, config, } = props;
|
|
26
|
+
const { autoTestId = props.settingsContextName, settingsContextName, possibleCriteria, predefinedCriteria, exactSearchLabels, initialSearchConditions, searchConditions, tableParams, dataUseState, config, tableSelection, } = props;
|
|
23
27
|
const resolvedTable = resolveSearchUITable(props);
|
|
24
28
|
const searchCriteria = (0, store_1.useSearchUIFiltersStore)(store => store.appliedSearchCriteria);
|
|
25
29
|
const filtersSettingsContextName = (0, store_1.useSearchUIFiltersStore)(store => store.settingsContextName);
|
|
@@ -73,17 +77,225 @@ const SearchUIContent = (props) => {
|
|
|
73
77
|
const tableViewSelector = props.tableViews
|
|
74
78
|
? createTableViewSelector(props.tableViews, resolvedTable.viewId, resolvedTable.actions, autoTestId)
|
|
75
79
|
: undefined;
|
|
80
|
+
const renderTable = (selection, toolbar) => {
|
|
81
|
+
const factoryContext = {
|
|
82
|
+
appliedSearchCriteria: searchCriteria,
|
|
83
|
+
selection,
|
|
84
|
+
viewId: resolvedTable.viewId,
|
|
85
|
+
};
|
|
86
|
+
return react_1.default.createElement(__1.PneTable, { autoTestId: autoTestId, data: data, createTableHeader: headerParams => resolvedTable.createTableHeader(headerParams, factoryContext), sortOptions: {
|
|
87
|
+
order,
|
|
88
|
+
setOrder,
|
|
89
|
+
sortIndex,
|
|
90
|
+
setSortIndex,
|
|
91
|
+
onSortChange,
|
|
92
|
+
}, createRow: (item, index, arr) => resolvedTable.createTableRow(item, index, arr, setData, factoryContext), paginator: paginator, loading: loading, loadingKey: resolvedTable.viewId, toolbar: toolbar });
|
|
93
|
+
};
|
|
94
|
+
const table = tableSelection
|
|
95
|
+
? react_1.default.createElement(SearchUISelectableTable, { appliedSearchCriteria: searchCriteria, config: tableSelection, data: data, loading: loading, persistentControls: tableViewSelector, renderTable: renderTable, viewId: resolvedTable.viewId })
|
|
96
|
+
: renderTable(undefined, tableViewSelector);
|
|
76
97
|
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
77
98
|
react_1.default.createElement(SearchUIFilters_1.SearchUIFiltersContent, { autoTestId: autoTestId, settingsContextName: settingsContextName, possibleCriteria: possibleCriteria, predefinedCriteria: predefinedCriteria, exactSearchLabels: exactSearchLabels, initialSearchConditions: initialSearchConditions, searchConditions: searchConditions, onFiltersUpdate: ignoreAppliedSearchCriteria, config: config, searchLoading: loading }),
|
|
78
99
|
react_1.default.createElement(material_1.Divider, null),
|
|
79
|
-
react_1.default.createElement(material_1.Box, { sx: tableBoxSx },
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
100
|
+
react_1.default.createElement(material_1.Box, { sx: tableBoxSx }, table));
|
|
101
|
+
};
|
|
102
|
+
const SearchUISelectableTable = (props) => {
|
|
103
|
+
const { appliedSearchCriteria, config, data, loading, persistentControls, renderTable, viewId, } = props;
|
|
104
|
+
const scopeKey = (0, SearchUITableSelection_1.createSearchUITableSelectionScopeKey)(appliedSearchCriteria, viewId, config.preserveAcrossViews ?? false);
|
|
105
|
+
const scope = (0, react_1.useMemo)(() => ({
|
|
106
|
+
appliedSearchCriteria,
|
|
107
|
+
scopeKey,
|
|
108
|
+
viewId,
|
|
109
|
+
}), [appliedSearchCriteria, scopeKey, viewId]);
|
|
110
|
+
const [selectingAllMatching, setSelectingAllMatching] = (0, react_1.useState)(false);
|
|
111
|
+
const requestSequenceRef = (0, react_1.useRef)(0);
|
|
112
|
+
const requestPendingRef = (0, react_1.useRef)(false);
|
|
113
|
+
const requestPromiseRef = (0, react_1.useRef)(null);
|
|
114
|
+
const mountedRef = (0, react_1.useRef)(false);
|
|
115
|
+
const previousScopeKeyRef = (0, react_1.useRef)(scopeKey);
|
|
116
|
+
const previousMaxSelectedRef = (0, react_1.useRef)(config.maxSelected);
|
|
117
|
+
const previousConfiguredDisabledRef = (0, react_1.useRef)(config.disabled ?? false);
|
|
118
|
+
const previousResolverEnabledRef = (0, react_1.useRef)(config.resolveAllMatchingCount !== undefined);
|
|
119
|
+
const resolverRef = (0, react_1.useRef)(config.resolveAllMatchingCount);
|
|
120
|
+
const scopeOccurrenceRef = (0, react_1.useRef)(0);
|
|
121
|
+
const [scopeOccurrence, setScopeOccurrence] = (0, react_1.useState)(0);
|
|
122
|
+
const allMatchingAllowedRef = (0, react_1.useRef)(appliedSearchCriteria !== null && !config.disabled);
|
|
123
|
+
const selectionInteractionsAllowedRef = (0, react_1.useRef)(appliedSearchCriteria !== null && !config.disabled && !loading);
|
|
124
|
+
useSearchUISelectionLayoutEffect(() => {
|
|
125
|
+
mountedRef.current = true;
|
|
126
|
+
return () => {
|
|
127
|
+
mountedRef.current = false;
|
|
128
|
+
requestSequenceRef.current += 1;
|
|
129
|
+
requestPendingRef.current = false;
|
|
130
|
+
requestPromiseRef.current = null;
|
|
131
|
+
};
|
|
132
|
+
}, []);
|
|
133
|
+
useSearchUISelectionLayoutEffect(() => {
|
|
134
|
+
allMatchingAllowedRef.current = appliedSearchCriteria !== null && !config.disabled;
|
|
135
|
+
selectionInteractionsAllowedRef.current = allMatchingAllowedRef.current && !loading;
|
|
136
|
+
resolverRef.current = config.resolveAllMatchingCount;
|
|
137
|
+
}, [appliedSearchCriteria, config.disabled, config.resolveAllMatchingCount, loading]);
|
|
138
|
+
useSearchUISelectionLayoutEffect(() => {
|
|
139
|
+
if (Object.is(previousScopeKeyRef.current, scopeKey)) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
previousScopeKeyRef.current = scopeKey;
|
|
143
|
+
const nextScopeOccurrence = scopeOccurrenceRef.current + 1;
|
|
144
|
+
scopeOccurrenceRef.current = nextScopeOccurrence;
|
|
145
|
+
setScopeOccurrence(nextScopeOccurrence);
|
|
146
|
+
requestSequenceRef.current += 1;
|
|
147
|
+
requestPendingRef.current = false;
|
|
148
|
+
requestPromiseRef.current = null;
|
|
149
|
+
setSelectingAllMatching(false);
|
|
150
|
+
}, [scopeKey]);
|
|
151
|
+
useSearchUISelectionLayoutEffect(() => {
|
|
152
|
+
const configuredDisabled = config.disabled ?? false;
|
|
153
|
+
const maxSelectedChanged = !Object.is(previousMaxSelectedRef.current, config.maxSelected);
|
|
154
|
+
const becameDisabled = configuredDisabled && !previousConfiguredDisabledRef.current;
|
|
155
|
+
const resolverEnabled = config.resolveAllMatchingCount !== undefined;
|
|
156
|
+
const resolverRemoved = previousResolverEnabledRef.current && !resolverEnabled;
|
|
157
|
+
previousMaxSelectedRef.current = config.maxSelected;
|
|
158
|
+
previousConfiguredDisabledRef.current = configuredDisabled;
|
|
159
|
+
previousResolverEnabledRef.current = resolverEnabled;
|
|
160
|
+
if (!maxSelectedChanged && !becameDisabled && !resolverRemoved) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
requestSequenceRef.current += 1;
|
|
164
|
+
requestPendingRef.current = false;
|
|
165
|
+
requestPromiseRef.current = null;
|
|
166
|
+
setSelectingAllMatching(false);
|
|
167
|
+
}, [config.disabled, config.maxSelected, config.resolveAllMatchingCount]);
|
|
168
|
+
const selectionParams = createSearchUITableSelectionParams(config, data, scopeKey, appliedSearchCriteria === null);
|
|
169
|
+
const tableSelection = (0, __1.useTableSelection)(selectionParams);
|
|
170
|
+
const tableSelectionRef = (0, react_1.useRef)(tableSelection);
|
|
171
|
+
useSearchUISelectionLayoutEffect(() => {
|
|
172
|
+
tableSelectionRef.current = tableSelection;
|
|
173
|
+
}, [tableSelection]);
|
|
174
|
+
const createBlockedUpdate = (0, react_1.useCallback)(() => ({
|
|
175
|
+
selection: tableSelectionRef.current.selection,
|
|
176
|
+
changed: false,
|
|
177
|
+
limitExceeded: false,
|
|
178
|
+
}), []);
|
|
179
|
+
const selectAllMatchingResults = (0, react_1.useCallback)(() => {
|
|
180
|
+
const resolver = resolverRef.current;
|
|
181
|
+
const currentSelection = tableSelectionRef.current;
|
|
182
|
+
if (!mountedRef.current
|
|
183
|
+
|| scopeOccurrenceRef.current !== scopeOccurrence
|
|
184
|
+
|| !resolver
|
|
185
|
+
|| !selectionInteractionsAllowedRef.current) {
|
|
186
|
+
return Promise.resolve(createBlockedUpdate());
|
|
187
|
+
}
|
|
188
|
+
if (requestPendingRef.current && requestPromiseRef.current) {
|
|
189
|
+
return requestPromiseRef.current;
|
|
190
|
+
}
|
|
191
|
+
if (currentSelection.interactionDisabled) {
|
|
192
|
+
return Promise.resolve(createBlockedUpdate());
|
|
193
|
+
}
|
|
194
|
+
const requestSequence = requestSequenceRef.current + 1;
|
|
195
|
+
requestSequenceRef.current = requestSequence;
|
|
196
|
+
requestPendingRef.current = true;
|
|
197
|
+
setSelectingAllMatching(true);
|
|
198
|
+
const requestScope = scope;
|
|
199
|
+
const runRequest = async () => {
|
|
200
|
+
try {
|
|
201
|
+
await Promise.resolve();
|
|
202
|
+
if (!mountedRef.current
|
|
203
|
+
|| requestSequenceRef.current !== requestSequence
|
|
204
|
+
|| !allMatchingAllowedRef.current
|
|
205
|
+
|| !resolverRef.current) {
|
|
206
|
+
return createBlockedUpdate();
|
|
207
|
+
}
|
|
208
|
+
const matchingCount = await resolver(requestScope);
|
|
209
|
+
if (!mountedRef.current
|
|
210
|
+
|| requestSequenceRef.current !== requestSequence
|
|
211
|
+
|| !allMatchingAllowedRef.current
|
|
212
|
+
|| !resolverRef.current) {
|
|
213
|
+
return createBlockedUpdate();
|
|
214
|
+
}
|
|
215
|
+
return tableSelectionRef.current.selectAllMatching(matchingCount);
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
if (!mountedRef.current || requestSequenceRef.current !== requestSequence) {
|
|
219
|
+
return createBlockedUpdate();
|
|
220
|
+
}
|
|
221
|
+
throw error;
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
if (mountedRef.current && requestSequenceRef.current === requestSequence) {
|
|
225
|
+
requestPendingRef.current = false;
|
|
226
|
+
requestPromiseRef.current = null;
|
|
227
|
+
setSelectingAllMatching(false);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
const requestPromise = runRequest();
|
|
232
|
+
requestPromiseRef.current = requestPromise;
|
|
233
|
+
return requestPromise;
|
|
234
|
+
}, [createBlockedUpdate, scope, scopeOccurrence]);
|
|
235
|
+
const selection = {
|
|
236
|
+
...tableSelection,
|
|
237
|
+
clear: () => !mountedRef.current
|
|
238
|
+
|| requestPendingRef.current
|
|
239
|
+
|| scopeOccurrenceRef.current !== scopeOccurrence
|
|
240
|
+
|| !selectionInteractionsAllowedRef.current
|
|
241
|
+
? createBlockedUpdate()
|
|
242
|
+
: tableSelectionRef.current.clear(),
|
|
243
|
+
interactionDisabled: tableSelection.interactionDisabled || loading || selectingAllMatching,
|
|
244
|
+
selectAllMatching: matchingCount => !mountedRef.current
|
|
245
|
+
|| requestPendingRef.current
|
|
246
|
+
|| scopeOccurrenceRef.current !== scopeOccurrence
|
|
247
|
+
|| !selectionInteractionsAllowedRef.current
|
|
248
|
+
? createBlockedUpdate()
|
|
249
|
+
: tableSelectionRef.current.selectAllMatching(matchingCount),
|
|
250
|
+
setPageSelected: selected => !mountedRef.current
|
|
251
|
+
|| requestPendingRef.current
|
|
252
|
+
|| scopeOccurrenceRef.current !== scopeOccurrence
|
|
253
|
+
|| !selectionInteractionsAllowedRef.current
|
|
254
|
+
? createBlockedUpdate()
|
|
255
|
+
: tableSelectionRef.current.setPageSelected(selected),
|
|
256
|
+
setRowSelected: (row, selected) => !mountedRef.current
|
|
257
|
+
|| requestPendingRef.current
|
|
258
|
+
|| scopeOccurrenceRef.current !== scopeOccurrence
|
|
259
|
+
|| !selectionInteractionsAllowedRef.current
|
|
260
|
+
? createBlockedUpdate()
|
|
261
|
+
: tableSelectionRef.current.setRowSelected(row, selected),
|
|
262
|
+
scope,
|
|
263
|
+
selectingAllMatching,
|
|
264
|
+
selectAllMatchingResults: config.resolveAllMatchingCount
|
|
265
|
+
? selectAllMatchingResults
|
|
266
|
+
: undefined,
|
|
267
|
+
};
|
|
268
|
+
const contextualControls = config.renderControls({
|
|
269
|
+
appliedSearchCriteria,
|
|
270
|
+
selection,
|
|
271
|
+
viewId,
|
|
272
|
+
});
|
|
273
|
+
const toolbar = config.toolbarAriaLabel !== undefined
|
|
274
|
+
? react_1.default.createElement(__1.PneTableToolbar, { "aria-label": config.toolbarAriaLabel, contextual: contextualControls, persistent: persistentControls })
|
|
275
|
+
: react_1.default.createElement(__1.PneTableToolbar, { "aria-labelledby": config.toolbarAriaLabelledBy, contextual: contextualControls, persistent: persistentControls });
|
|
276
|
+
return renderTable(selection, toolbar);
|
|
277
|
+
};
|
|
278
|
+
const createSearchUITableSelectionParams = (config, rows, scopeKey, interactionsUnavailable) => {
|
|
279
|
+
const common = {
|
|
280
|
+
disabled: config.disabled || interactionsUnavailable,
|
|
281
|
+
getRowId: config.getRowId,
|
|
282
|
+
isRowSelectable: config.isRowSelectable,
|
|
283
|
+
maxSelected: config.maxSelected,
|
|
284
|
+
rows,
|
|
285
|
+
scopeKey,
|
|
286
|
+
};
|
|
287
|
+
if (config.selection !== undefined) {
|
|
288
|
+
return {
|
|
289
|
+
...common,
|
|
290
|
+
onSelectionChange: config.onSelectionChange,
|
|
291
|
+
selection: config.selection,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
...common,
|
|
296
|
+
defaultSelection: config.defaultSelection,
|
|
297
|
+
onSelectionChange: config.onSelectionChange,
|
|
298
|
+
};
|
|
87
299
|
};
|
|
88
300
|
const resolveSearchUITable = (props) => {
|
|
89
301
|
if (!props.tableViews) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchUI.js","sourceRoot":"","sources":["../../../src/component/search-ui/SearchUI.tsx"],"names":[],"mappings":";;;;AAAA,uDAA0E;AAC1E,+DAAyF;AAEzF,4CAAqD;AAErD,6BAQc;AAEd,iDAA+D;AAC/D,+FAA2F;AAoI3F;;;;GAIG;AACI,MAAM,QAAQ,GAAG,CACpB,KAAgC,EACd,EAAE;IACpB,OAAO,8BAAC,2DAA4B,IAChC,GAAG,EAAE,KAAK,CAAC,mBAAmB,EAC9B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAE9C,8BAAC,eAAe,OAAK,KAAK,GAAG,CACF,CAAA;AACnC,CAAC,CAAA;AATY,QAAA,QAAQ,YASpB;AAED,MAAM,eAAe,GAAG,CACpB,KAAgC,EACd,EAAE;IACpB,MAAM,EACF,UAAU,GAAG,KAAK,CAAC,mBAAmB,EACtC,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,MAAM,GACT,GAAG,KAAK,CAAA;IACT,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAEjD,MAAM,cAAc,GAAG,IAAA,+BAAuB,EAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACpF,MAAM,0BAA0B,GAAG,IAAA,+BAAuB,EAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAC9F,MAAM,mBAAmB,GAAG,0BAA0B,KAAK,mBAAmB,CAAA;IAE9E,sDAAsD;IACtD,MAAM,qBAAqB,GAAwB;QAC/C,GAAG,qBAAqB;QACxB,GAAG,WAAW,EAAE,cAAc;KACjC,CAAA;IACD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAsB,qBAAqB,CAAC,CAAA;IAChG,MAAM,sBAAsB,GAAG,aAAa,CAAC,MAAM,KAAK,SAAS;WAC1D,aAAa,CAAC,cAAc,KAAK,UAAU;QAC9C,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC;YACE,GAAG,qBAAqB;YACxB,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,GAAG,aAAa,CAAC,cAAc;SAClC,CAAA;IAEL,MAAM,kBAAkB,GAAG,IAAA,eAAO,EAC9B,GAAG,EAAE,CAAC,CAAC,cAAc,EAAE,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAC,EACjE,CAAC,cAAc,EAAE,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAC,CAC9D,CAAA;IAED,MAAM,EACF,OAAO,EACP,SAAS,EACT,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,QAAQ,EACf,YAAY,GACf,GAAG,IAAA,YAAQ,EAAI;QACZ,kBAAkB,EAAE,WAAW,EAAE,kBAAkB;QACnD,mBAAmB,EAAE,WAAW,EAAE,mBAAmB;QACrD,uBAAuB,EAAE,WAAW,EAAE,uBAAuB;QAC7D,cAAc,EAAE,sBAAsB;QACtC,sBAAsB,EAAE,iBAAiB;QACzC,mBAAmB,EAAE,mBAAmB;QACxC,YAAY,EAAE,YAAY;QAC1B,kBAAkB,EAAE,kBAAkB;QACtC,mBAAmB,EAAE,aAAa,CAAC,MAAM,KAAK,SAAS;YACnD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,aAAa,CAAC,cAAc,KAAK,UAAU;gBACzC,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC;oBACE,eAAe,EAAE,sBAAsB,CAAC,eAAe;oBACvD,OAAO,EAAE,sBAAsB,CAAC,OAAO;iBAC1C;QACT,QAAQ,EAAE,aAAa,CAAC,MAAM;QAC9B,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;YAChD,IAAI,CAAC,cAAc,EAAE,WAAW,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACvD,OAAO,OAAO,CAAC,OAAO,CAAM,EAAE,CAAC,CAAA;YACnC,CAAC;YAED,MAAM,YAAY,GAAG,IAAA,0BAAkB,EAAC,cAAc,EAAE;gBACpD,IAAI;gBACJ,QAAQ;gBACR,KAAK;gBACL,SAAS;aACZ,CAAC,CAAA;YAEF,OAAO,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QACjD,CAAC;KACJ,CAAC,CAAA;IAEF,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU;QACtC,CAAC,CAAC,uBAAuB,CACrB,KAAK,CAAC,UAAU,EAChB,aAAa,CAAC,MAAiB,EAC/B,aAAa,CAAC,OAAO,EACrB,UAAU,CACb;QACD,CAAC,CAAC,SAAS,CAAA;IAEf,OAAO;QACH,8BAAC,wCAAsB,IACnB,UAAU,EAAE,UAAU,EACtB,mBAAmB,EAAE,mBAAmB,EACxC,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,uBAAuB,EAChD,gBAAgB,EAAE,gBAAgB,EAClC,eAAe,EAAE,2BAA2B,EAC5C,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACxB;QACF,8BAAC,kBAAO,OAAE;QACV,8BAAC,cAAG,IAAC,EAAE,EAAE,UAAU;YACf,8BAAC,YAAQ,IACL,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,iBAAiB,EAAE,aAAa,CAAC,iBAAiB,EAClD,WAAW,EAAE;oBACT,KAAK;oBACL,QAAQ;oBACR,SAAS;oBACT,YAAY;oBACZ,YAAY;iBACf,EACD,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EACxF,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,aAAa,CAAC,MAAM,EAChC,OAAO,EAAE,iBAAiB,GAC5B,CACA,CACP,CAAA;AACP,CAAC,CAAA;AAWD,MAAM,oBAAoB,GAAG,CACzB,KAAgC,EACC,EAAE;IACnC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO;YACH,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,cAAc,EAAE,KAAK,CAAC,cAAc;SACvC,CAAA;IACL,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAW,CAAA;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QACrE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACxB,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACxF,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,UAAU,CAAC,KAAK,qBAAqB,CAAC,CAAA;QAClG,CAAC;QACD,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO;QACH,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;QAC/C,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,MAAM,EAAE,UAAU,CAAC,EAAE;KACxB,CAAA;AACL,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAC5B,MAAuC,EACvC,KAAc,EACd,OAAwB,EACxB,kBAA0B,EACR,EAAE;IACpB,MAAM,EACF,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,UAAU,GAAG,kBAAkB,EAC/B,kBAAkB,EAClB,KAAK,EAAE,gBAAgB,EACvB,KAAK,EACL,GAAG,aAAa,EACnB,GAAG,MAAM,CAAA;IACV,MAAM,OAAO,GAA2C,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KAC1B,CAAC,CAAC,CAAA;IAEH,IAAI,QAA4B,CAAA;IAChC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1B,QAAQ,GAAG,8BAAC,wBAAoB,OACxB,aAAa,gBACL,SAAS,EACrB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,OAAO,GAChB,CAAA;IACN,CAAC;SAAM,CAAC;QACJ,QAAQ,GAAG,8BAAC,wBAAoB,OACxB,aAAa,qBACA,cAAwB,EACzC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,OAAO,GAChB,CAAA;IACN,CAAC;IAED,OAAO,kBAAkB,CAAC,CAAC,CAAC,8DAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;AAC9E,CAAC,CAAA;AAED,MAAM,2BAA2B,GAAG,GAAS,EAAE;IAC3C,6EAA6E;AACjF,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAwB;IAC/C,QAAQ,EAAE,EAAE;IACZ,eAAe,EAAE,CAAC;IAClB,OAAO,EAAE,IAAI;CAChB,CAAA;AAED,MAAM,UAAU,GAAY;IACxB,CAAC,EAAE,kBAAkB;CACxB,CAAA;AAED;;;;;GAKG;AACI,MAAM,kBAAkB,GAAG,CAC9B,cAA8B,EAC9B,OAA6E,EACjE,EAAE,CAAC,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ;IACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC,SAAS;IAC1B,SAAS,EAAE,OAAO,CAAC,KAAK;IAExB,gBAAgB,EAAE,cAAc,CAAC,gBAAgB;IACjD,gBAAgB,EAAE,cAAc,CAAC,gBAAgB;IACjD,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;IACnD,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;IACnD,eAAe,EAAE,cAAc,CAAC,eAAe;IAC/C,MAAM,EAAE,cAAc,CAAC,MAAM;IAC7B,MAAM,EAAE,cAAc,CAAC,MAAM;IAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;IACrC,SAAS,EAAE,cAAc,CAAC,SAAS;IACnC,QAAQ,EAAE,cAAc,CAAC,QAAQ;IACjC,MAAM,EAAE,cAAc,CAAC,MAAM;IAC7B,aAAa,EAAE,cAAc,CAAC,aAAa;IAC3C,SAAS,EAAE,cAAc,CAAC,SAAS;IACnC,gBAAgB,EAAE,cAAc,CAAC,gBAAgB;IACjD,mBAAmB,EAAE,cAAc,CAAC,mBAAmB;IACvD,0BAA0B,EAAE,cAAc,CAAC,0BAA0B;IACrE,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;IACnD,sBAAsB,EAAE,cAAc,CAAC,sBAAsB;IAC7D,UAAU,EAAE,cAAc,CAAC,UAAU;IACrC,gBAAgB,EAAE,cAAc,CAAC,gBAAgB;IACjD,eAAe,EAAE,cAAc,CAAC,eAAe;IAC/C,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;IACrD,qBAAqB,EAAE,cAAc,CAAC,qBAAqB;IAC3D,WAAW,EAAE,cAAc,CAAC,WAAW;IACvC,YAAY,EAAE,cAAc,CAAC,YAAY;IACzC,qBAAqB,EAAE,cAAc,CAAC,qBAAqB;IAC3D,SAAS,EAAE,cAAc,CAAC,SAAS;CACtC,CAAC,CAAA;AApCW,QAAA,kBAAkB,sBAoC7B"}
|
|
1
|
+
{"version":3,"file":"SearchUI.js","sourceRoot":"","sources":["../../../src/component/search-ui/SearchUI.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { TableRowId, TableSelectionModel, TableSelectionUpdate } from '../table/tableSelection';
|
|
3
|
+
import type { TableSelectionChangeDetails, UseTableSelectionResult } from '../table/useTableSelection';
|
|
4
|
+
import type { SearchCriteria } from './filters/types';
|
|
5
|
+
export type SearchUITableSelectionScopeContext<TViewId extends string = string> = {
|
|
6
|
+
/** Criteria that produced the currently applied result set; draft filters are intentionally excluded. */
|
|
7
|
+
appliedSearchCriteria: Readonly<SearchCriteria> | null;
|
|
8
|
+
/** Active table View, when SearchUI is configured with views. */
|
|
9
|
+
viewId?: TViewId;
|
|
10
|
+
};
|
|
11
|
+
export type SearchUITableSelectionScope<TViewId extends string = string> = SearchUITableSelectionScopeContext<TViewId> & {
|
|
12
|
+
/** Canonical in-memory identity used to reject stale selection work. */
|
|
13
|
+
scopeKey: string;
|
|
14
|
+
};
|
|
15
|
+
export type SearchUITableSelectionController<D extends object, TKey extends TableRowId = TableRowId, TViewId extends string = string> = UseTableSelectionResult<D, TKey> & {
|
|
16
|
+
scope: SearchUITableSelectionScope<TViewId>;
|
|
17
|
+
/** True while SearchUI is resolving the selectable all-results count. */
|
|
18
|
+
selectingAllMatching: boolean;
|
|
19
|
+
/** Present only when resolveAllMatchingCount is configured. */
|
|
20
|
+
selectAllMatchingResults?: () => Promise<TableSelectionUpdate<TKey>>;
|
|
21
|
+
};
|
|
22
|
+
export type SearchUITableFactoryContext<D extends object, TKey extends TableRowId = TableRowId, TViewId extends string = string> = SearchUITableSelectionScopeContext<TViewId> & {
|
|
23
|
+
/** Present only when SearchUI table selection is configured. */
|
|
24
|
+
selection?: SearchUITableSelectionController<D, TKey, TViewId>;
|
|
25
|
+
};
|
|
26
|
+
export type SearchUITableSelectionRenderContext<D extends object, TKey extends TableRowId = TableRowId, TViewId extends string = string> = SearchUITableSelectionScopeContext<TViewId> & {
|
|
27
|
+
selection: SearchUITableSelectionController<D, TKey, TViewId>;
|
|
28
|
+
};
|
|
29
|
+
type SearchUITableSelectionToolbarAccessibleName = {
|
|
30
|
+
toolbarAriaLabel: string;
|
|
31
|
+
toolbarAriaLabelledBy?: never;
|
|
32
|
+
} | {
|
|
33
|
+
toolbarAriaLabel?: never;
|
|
34
|
+
toolbarAriaLabelledBy: string;
|
|
35
|
+
};
|
|
36
|
+
type SearchUITableSelectionBaseConfig<D extends object, TKey extends TableRowId, TViewId extends string> = SearchUITableSelectionToolbarAccessibleName & {
|
|
37
|
+
getRowId: (row: D) => TKey;
|
|
38
|
+
isRowSelectable?: (row: D) => boolean;
|
|
39
|
+
maxSelected?: number;
|
|
40
|
+
disabled?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* By default a View change starts a new selection scope. Enable only when
|
|
43
|
+
* every View represents the same rows with compatible stable IDs.
|
|
44
|
+
*/
|
|
45
|
+
preserveAcrossViews?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Resolve the selectable count for the applied result scope. SearchUI keeps
|
|
48
|
+
* the request transient and applies the result only while that scope is current.
|
|
49
|
+
* An in-flight request keeps the resolver active when it started; replacing
|
|
50
|
+
* the callback affects the next request, while removing it cancels pending work.
|
|
51
|
+
*/
|
|
52
|
+
resolveAllMatchingCount?: (scope: SearchUITableSelectionScope<TViewId>) => Promise<number>;
|
|
53
|
+
/** Consumer-owned, localized summary, status, and bulk actions. */
|
|
54
|
+
renderControls: (context: SearchUITableSelectionRenderContext<D, TKey, TViewId>) => React.ReactNode;
|
|
55
|
+
};
|
|
56
|
+
type SearchUIControlledTableSelectionConfig<TKey extends TableRowId> = {
|
|
57
|
+
selection: TableSelectionModel<TKey>;
|
|
58
|
+
defaultSelection?: never;
|
|
59
|
+
onSelectionChange: (selection: TableSelectionModel<TKey>, details: TableSelectionChangeDetails) => void;
|
|
60
|
+
};
|
|
61
|
+
type SearchUIUncontrolledTableSelectionConfig<TKey extends TableRowId> = {
|
|
62
|
+
selection?: never;
|
|
63
|
+
defaultSelection?: TableSelectionModel<TKey>;
|
|
64
|
+
onSelectionChange?: (selection: TableSelectionModel<TKey>, details: TableSelectionChangeDetails) => void;
|
|
65
|
+
};
|
|
66
|
+
export type SearchUITableSelectionConfig<D extends object, TKey extends TableRowId = TableRowId, TViewId extends string = string> = SearchUITableSelectionBaseConfig<D, TKey, TViewId> & (SearchUIControlledTableSelectionConfig<TKey> | SearchUIUncontrolledTableSelectionConfig<TKey>);
|
|
67
|
+
export declare const createSearchUITableSelectionScopeKey: (appliedSearchCriteria: Readonly<SearchCriteria> | null, viewId: string | undefined, preserveAcrossViews: boolean) => string;
|
|
68
|
+
export {};
|