@adobe-commerce/aio-experience-kit 1.0.2 → 1.0.4
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/CHANGELOG.md +117 -0
- package/README.md +590 -2
- package/dist/cjs/components/DataForm/ButtonContainer/index.js +158 -0
- package/dist/cjs/components/DataForm/ButtonContainer/index.js.map +1 -0
- package/dist/cjs/components/DataForm/FieldBuilder/index.js +3 -2
- package/dist/cjs/components/DataForm/FieldBuilder/index.js.map +1 -1
- package/dist/cjs/components/DataForm/FormBuilder/index.js +178 -65
- package/dist/cjs/components/DataForm/FormBuilder/index.js.map +1 -1
- package/dist/cjs/components/DataForm/FormBuilder/types.js.map +1 -1
- package/dist/cjs/components/DataForm/index.js +6 -3
- package/dist/cjs/components/DataForm/index.js.map +1 -1
- package/dist/cjs/components/DataTable/GridBuilder/index.js +72 -58
- package/dist/cjs/components/DataTable/GridBuilder/index.js.map +1 -1
- package/dist/cjs/components/DataTable/SearchBar/index.js +184 -0
- package/dist/cjs/components/DataTable/SearchBar/index.js.map +1 -0
- package/dist/cjs/components/DataTable/index.js +53 -33
- package/dist/cjs/components/DataTable/index.js.map +1 -1
- package/dist/cjs/components/DataTable/types.js.map +1 -1
- package/dist/cjs/components/FileUpload/index.js +12 -2
- package/dist/cjs/components/FileUpload/index.js.map +1 -1
- package/dist/esm/components/DataForm/ButtonContainer/index.js +154 -0
- package/dist/esm/components/DataForm/ButtonContainer/index.js.map +1 -0
- package/dist/esm/components/DataForm/FieldBuilder/index.js +3 -2
- package/dist/esm/components/DataForm/FieldBuilder/index.js.map +1 -1
- package/dist/esm/components/DataForm/FormBuilder/index.js +180 -67
- package/dist/esm/components/DataForm/FormBuilder/index.js.map +1 -1
- package/dist/esm/components/DataForm/FormBuilder/types.js.map +1 -1
- package/dist/esm/components/DataForm/index.js +7 -4
- package/dist/esm/components/DataForm/index.js.map +1 -1
- package/dist/esm/components/DataTable/GridBuilder/index.js +74 -60
- package/dist/esm/components/DataTable/GridBuilder/index.js.map +1 -1
- package/dist/esm/components/DataTable/SearchBar/index.js +180 -0
- package/dist/esm/components/DataTable/SearchBar/index.js.map +1 -0
- package/dist/esm/components/DataTable/index.js +53 -33
- package/dist/esm/components/DataTable/index.js.map +1 -1
- package/dist/esm/components/DataTable/types.js.map +1 -1
- package/dist/esm/components/FileUpload/index.js +13 -3
- package/dist/esm/components/FileUpload/index.js.map +1 -1
- package/dist/esm/types/components/DataForm/ButtonContainer/index.d.ts +12 -0
- package/dist/esm/types/components/DataForm/ButtonContainer/index.d.ts.map +1 -0
- package/dist/esm/types/components/DataForm/ButtonContainer/types.d.ts +82 -0
- package/dist/esm/types/components/DataForm/ButtonContainer/types.d.ts.map +1 -0
- package/dist/esm/types/components/DataForm/FieldBuilder/index.d.ts.map +1 -1
- package/dist/esm/types/components/DataForm/FormBuilder/index.d.ts.map +1 -1
- package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts +40 -0
- package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts.map +1 -1
- package/dist/esm/types/components/DataForm/index.d.ts.map +1 -1
- package/dist/esm/types/components/DataForm/types.d.ts +2 -0
- package/dist/esm/types/components/DataForm/types.d.ts.map +1 -1
- package/dist/esm/types/components/DataTable/GridBuilder/index.d.ts +1 -1
- package/dist/esm/types/components/DataTable/GridBuilder/index.d.ts.map +1 -1
- package/dist/esm/types/components/DataTable/GridBuilder/types.d.ts +1 -0
- package/dist/esm/types/components/DataTable/GridBuilder/types.d.ts.map +1 -1
- package/dist/esm/types/components/DataTable/SearchBar/index.d.ts +11 -0
- package/dist/esm/types/components/DataTable/SearchBar/index.d.ts.map +1 -0
- package/dist/esm/types/components/DataTable/index.d.ts +1 -1
- package/dist/esm/types/components/DataTable/index.d.ts.map +1 -1
- package/dist/esm/types/components/DataTable/types.d.ts +38 -0
- package/dist/esm/types/components/DataTable/types.d.ts.map +1 -1
- package/dist/esm/types/components/FileUpload/index.d.ts +2 -3
- package/dist/esm/types/components/FileUpload/index.d.ts.map +1 -1
- package/dist/esm/types/components/FileUpload/types.d.ts +14 -0
- package/dist/esm/types/components/FileUpload/types.d.ts.map +1 -1
- package/dist/esm/types/components/index.d.ts +2 -1
- package/dist/esm/types/components/index.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { asyncToGenerator as _asyncToGenerator, regenerator as _regenerator } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
|
+
import { objectSpread2 as _objectSpread2, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
-
import { View, IllustratedMessage, Heading, Content, TableView, TableHeader, Column, TableBody, Row, Cell } from '@adobe/react-spectrum';
|
|
3
|
+
import { View, IllustratedMessage, Heading, Content, TableView, TableHeader, Column, TableBody, Row, Cell, Flex } from '@adobe/react-spectrum';
|
|
4
4
|
import { GridAction } from '../types.js';
|
|
5
5
|
import LinksRenderer from './LinksRenderer/index.js';
|
|
6
6
|
import ButtonsRenderer from './ButtonsRenderer/index.js';
|
|
@@ -27,7 +27,8 @@ var GridBuilder = function GridBuilder(_ref) {
|
|
|
27
27
|
}, _callee);
|
|
28
28
|
})) : _ref$onGridActionPres,
|
|
29
29
|
_ref$onSelectionChang = _ref.onSelectionChange,
|
|
30
|
-
onSelectionChange = _ref$onSelectionChang === void 0 ? function () {} : _ref$onSelectionChang
|
|
30
|
+
onSelectionChange = _ref$onSelectionChang === void 0 ? function () {} : _ref$onSelectionChang,
|
|
31
|
+
maxHeight = _ref.maxHeight;
|
|
31
32
|
var selectionMode = isMassActionsEnabled ? 'multiple' : 'none';
|
|
32
33
|
// Handle empty columns gracefully
|
|
33
34
|
if (columns.length === 0) {
|
|
@@ -43,66 +44,79 @@ var GridBuilder = function GridBuilder(_ref) {
|
|
|
43
44
|
})
|
|
44
45
|
});
|
|
45
46
|
}
|
|
47
|
+
var tableView = jsxs(TableView, _objectSpread2(_objectSpread2({
|
|
48
|
+
selectionMode: selectionMode,
|
|
49
|
+
onSelectionChange: onSelectionChange,
|
|
50
|
+
minHeight: 'size-6000'
|
|
51
|
+
}, maxHeight && {
|
|
52
|
+
flex: true
|
|
53
|
+
}), {}, {
|
|
54
|
+
renderEmptyState: function renderEmptyState() {
|
|
55
|
+
return jsxs(IllustratedMessage, {
|
|
56
|
+
children: [jsx(Heading, {
|
|
57
|
+
children: "No results"
|
|
58
|
+
}), jsx(Content, {
|
|
59
|
+
children: "No results found"
|
|
60
|
+
})]
|
|
61
|
+
});
|
|
62
|
+
},
|
|
63
|
+
children: [jsx(TableHeader, {
|
|
64
|
+
columns: columns,
|
|
65
|
+
children: function children(column) {
|
|
66
|
+
return jsx(Column, {
|
|
67
|
+
align: column.uid === 'actions' ? 'end' : 'start',
|
|
68
|
+
children: column.name
|
|
69
|
+
}, column.uid);
|
|
70
|
+
}
|
|
71
|
+
}), jsx(TableBody, {
|
|
72
|
+
items: data,
|
|
73
|
+
children: function children(item) {
|
|
74
|
+
return jsx(Row, {
|
|
75
|
+
children: function children(columnKey) {
|
|
76
|
+
return columnKey === 'actions' ? jsx(Cell, {
|
|
77
|
+
children: function () {
|
|
78
|
+
switch (gridAction) {
|
|
79
|
+
case GridAction.LINKS:
|
|
80
|
+
return jsx(LinksRenderer, {
|
|
81
|
+
item: item,
|
|
82
|
+
gridActions: gridActions,
|
|
83
|
+
onGridActionPress: onGridActionPress
|
|
84
|
+
});
|
|
85
|
+
case GridAction.BUTTONS:
|
|
86
|
+
return jsx(ButtonsRenderer, {
|
|
87
|
+
item: item,
|
|
88
|
+
gridActions: gridActions,
|
|
89
|
+
onGridActionPress: onGridActionPress
|
|
90
|
+
});
|
|
91
|
+
default:
|
|
92
|
+
return jsx(ActionMenuRenderer, {
|
|
93
|
+
item: item,
|
|
94
|
+
gridActions: gridActions,
|
|
95
|
+
onGridActionPress: onGridActionPress
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}()
|
|
99
|
+
}) : jsx(Cell, {
|
|
100
|
+
children: item[columnKey]
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
})]
|
|
106
|
+
}));
|
|
107
|
+
if (maxHeight) {
|
|
108
|
+
return jsx(Flex, {
|
|
109
|
+
height: maxHeight,
|
|
110
|
+
width: '100%',
|
|
111
|
+
direction: "column",
|
|
112
|
+
marginTop: 'size-200',
|
|
113
|
+
children: tableView
|
|
114
|
+
});
|
|
115
|
+
}
|
|
46
116
|
return jsx(View, {
|
|
47
117
|
width: '100%',
|
|
48
118
|
marginTop: 'size-200',
|
|
49
|
-
children:
|
|
50
|
-
selectionMode: selectionMode,
|
|
51
|
-
onSelectionChange: onSelectionChange,
|
|
52
|
-
minHeight: 'size-6000',
|
|
53
|
-
renderEmptyState: function renderEmptyState() {
|
|
54
|
-
return jsxs(IllustratedMessage, {
|
|
55
|
-
children: [jsx(Heading, {
|
|
56
|
-
children: "No results"
|
|
57
|
-
}), jsx(Content, {
|
|
58
|
-
children: "No results found"
|
|
59
|
-
})]
|
|
60
|
-
});
|
|
61
|
-
},
|
|
62
|
-
children: [jsx(TableHeader, {
|
|
63
|
-
columns: columns,
|
|
64
|
-
children: function children(column) {
|
|
65
|
-
return jsx(Column, {
|
|
66
|
-
align: column.uid === 'actions' ? 'end' : 'start',
|
|
67
|
-
children: column.name
|
|
68
|
-
}, column.uid);
|
|
69
|
-
}
|
|
70
|
-
}), jsx(TableBody, {
|
|
71
|
-
items: data,
|
|
72
|
-
children: function children(item) {
|
|
73
|
-
return jsx(Row, {
|
|
74
|
-
children: function children(columnKey) {
|
|
75
|
-
return columnKey === 'actions' ? jsx(Cell, {
|
|
76
|
-
children: function () {
|
|
77
|
-
switch (gridAction) {
|
|
78
|
-
case GridAction.LINKS:
|
|
79
|
-
return jsx(LinksRenderer, {
|
|
80
|
-
item: item,
|
|
81
|
-
gridActions: gridActions,
|
|
82
|
-
onGridActionPress: onGridActionPress
|
|
83
|
-
});
|
|
84
|
-
case GridAction.BUTTONS:
|
|
85
|
-
return jsx(ButtonsRenderer, {
|
|
86
|
-
item: item,
|
|
87
|
-
gridActions: gridActions,
|
|
88
|
-
onGridActionPress: onGridActionPress
|
|
89
|
-
});
|
|
90
|
-
default:
|
|
91
|
-
return jsx(ActionMenuRenderer, {
|
|
92
|
-
item: item,
|
|
93
|
-
gridActions: gridActions,
|
|
94
|
-
onGridActionPress: onGridActionPress
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
}()
|
|
98
|
-
}) : jsx(Cell, {
|
|
99
|
-
children: item[columnKey]
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
})]
|
|
105
|
-
})
|
|
119
|
+
children: tableView
|
|
106
120
|
});
|
|
107
121
|
};
|
|
108
122
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/components/DataTable/GridBuilder/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\n// import React from 'react'\nimport {\n Cell,\n Column,\n Content,\n Heading,\n IllustratedMessage,\n Row,\n TableBody,\n TableHeader,\n TableView,\n View,\n} from '@adobe/react-spectrum';\n// import NotFound from '@spectrum-icons/illustrations/NotFound';\nimport { GridBuilderProps } from './types';\nimport { GridAction, DataTableRow } from '../types';\nimport LinksRenderer from './LinksRenderer';\nimport ButtonsRenderer from './ButtonsRenderer';\nimport ActionMenuRenderer from './ActionMenuRenderer';\n\nconst GridBuilder = <T extends DataTableRow = DataTableRow>({\n columns = [],\n data = [],\n isMassActionsEnabled = false,\n gridAction = GridAction.ACTION_MENU,\n gridActions = [],\n onGridActionPress = async (): Promise<void> => {},\n onSelectionChange = (): void => {},\n}: GridBuilderProps<T>): JSX.Element => {\n const selectionMode = isMassActionsEnabled ? 'multiple' : 'none';\n\n // Handle empty columns gracefully\n if (columns.length === 0) {\n return (\n <View width={'100%'} marginTop={'size-200'}>\n <IllustratedMessage>\n <Heading>No columns configured</Heading>\n <Content>Please configure columns to display data</Content>\n </IllustratedMessage>\n </View>\n );\n }\n\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/DataTable/GridBuilder/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\n// import React from 'react'\nimport {\n Cell,\n Column,\n Content,\n Flex,\n Heading,\n IllustratedMessage,\n Row,\n TableBody,\n TableHeader,\n TableView,\n View,\n} from '@adobe/react-spectrum';\n// import NotFound from '@spectrum-icons/illustrations/NotFound';\nimport { GridBuilderProps } from './types';\nimport { GridAction, DataTableRow } from '../types';\nimport LinksRenderer from './LinksRenderer';\nimport ButtonsRenderer from './ButtonsRenderer';\nimport ActionMenuRenderer from './ActionMenuRenderer';\n\nconst GridBuilder = <T extends DataTableRow = DataTableRow>({\n columns = [],\n data = [],\n isMassActionsEnabled = false,\n gridAction = GridAction.ACTION_MENU,\n gridActions = [],\n onGridActionPress = async (): Promise<void> => {},\n onSelectionChange = (): void => {},\n maxHeight,\n}: GridBuilderProps<T>): JSX.Element => {\n const selectionMode = isMassActionsEnabled ? 'multiple' : 'none';\n\n // Handle empty columns gracefully\n if (columns.length === 0) {\n return (\n <View width={'100%'} marginTop={'size-200'}>\n <IllustratedMessage>\n <Heading>No columns configured</Heading>\n <Content>Please configure columns to display data</Content>\n </IllustratedMessage>\n </View>\n );\n }\n\n const tableView = (\n <TableView\n selectionMode={selectionMode}\n onSelectionChange={onSelectionChange}\n minHeight={'size-6000'}\n {...(maxHeight && { flex: true })}\n renderEmptyState={(): JSX.Element => {\n return (\n <IllustratedMessage>\n <Heading>No results</Heading>\n <Content>No results found</Content>\n </IllustratedMessage>\n );\n }}\n >\n <TableHeader columns={columns}>\n {(column: { uid: string; name: string }): JSX.Element => (\n <Column key={column.uid} align={column.uid === 'actions' ? 'end' : 'start'}>\n {column.name}\n </Column>\n )}\n </TableHeader>\n <TableBody items={data}>\n {(item: T): JSX.Element => (\n <Row>\n {(columnKey: React.Key): JSX.Element =>\n columnKey === 'actions' ? (\n <Cell>\n {((): JSX.Element => {\n switch (gridAction) {\n case GridAction.LINKS:\n return (\n <LinksRenderer\n item={item}\n gridActions={gridActions}\n onGridActionPress={onGridActionPress}\n />\n );\n case GridAction.BUTTONS:\n return (\n <ButtonsRenderer\n item={item}\n gridActions={gridActions}\n onGridActionPress={onGridActionPress}\n />\n );\n default:\n return (\n <ActionMenuRenderer\n item={item}\n gridActions={gridActions}\n onGridActionPress={onGridActionPress}\n />\n );\n }\n })()}\n </Cell>\n ) : (\n <Cell>{item[columnKey as string] as any}</Cell>\n )\n }\n </Row>\n )}\n </TableBody>\n </TableView>\n );\n\n if (maxHeight) {\n return (\n <Flex height={maxHeight} width={'100%'} direction=\"column\" marginTop={'size-200'}>\n {tableView}\n </Flex>\n );\n }\n\n return (\n <View width={'100%'} marginTop={'size-200'}>\n {tableView}\n </View>\n );\n};\n\nexport default GridBuilder;\n"],"names":["GridBuilder","_ref","_ref$columns","columns","_ref$data","data","_ref$isMassActionsEna","isMassActionsEnabled","_ref$gridAction","gridAction","GridAction","ACTION_MENU","_ref$gridActions","gridActions","_ref$onGridActionPres","onGridActionPress","_asyncToGenerator","_regenerator","m","_callee","w","_context","n","a","_ref$onSelectionChang","onSelectionChange","maxHeight","selectionMode","length","_jsx","View","width","marginTop","children","_jsxs","IllustratedMessage","Heading","Content","tableView","TableView","_objectSpread","minHeight","flex","renderEmptyState","TableHeader","column","Column","align","uid","name","TableBody","items","item","Row","columnKey","Cell","LINKS","LinksRenderer","BUTTONS","ButtonsRenderer","ActionMenuRenderer","Flex","height","direction"],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, objectSpread2 as _objectSpread2 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
3
|
+
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
4
|
+
import { Flex, SearchField, ActionButton, ProgressCircle, Text } from '@adobe/react-spectrum';
|
|
5
|
+
|
|
6
|
+
var SearchBar = function SearchBar(_ref) {
|
|
7
|
+
var searchConfig = _ref.searchConfig,
|
|
8
|
+
onSearch = _ref.onSearch;
|
|
9
|
+
var _searchConfig$enabled = searchConfig.enabled,
|
|
10
|
+
enabled = _searchConfig$enabled === void 0 ? false : _searchConfig$enabled,
|
|
11
|
+
_searchConfig$placeho = searchConfig.placeholder,
|
|
12
|
+
placeholder = _searchConfig$placeho === void 0 ? 'Search...' : _searchConfig$placeho,
|
|
13
|
+
_searchConfig$searchB = searchConfig.searchButtonLabel,
|
|
14
|
+
searchButtonLabel = _searchConfig$searchB === void 0 ? 'Search' : _searchConfig$searchB,
|
|
15
|
+
_searchConfig$showCle = searchConfig.showClearButton,
|
|
16
|
+
showClearButton = _searchConfig$showCle === void 0 ? true : _searchConfig$showCle,
|
|
17
|
+
_searchConfig$searchO = searchConfig.searchOnType,
|
|
18
|
+
searchOnType = _searchConfig$searchO === void 0 ? false : _searchConfig$searchO,
|
|
19
|
+
_searchConfig$debounc = searchConfig.debounceMs,
|
|
20
|
+
debounceMs = _searchConfig$debounc === void 0 ? 300 : _searchConfig$debounc,
|
|
21
|
+
_searchConfig$searcha = searchConfig.searchableColumns,
|
|
22
|
+
searchableColumns = _searchConfig$searcha === void 0 ? [] : _searchConfig$searcha,
|
|
23
|
+
_searchConfig$minChar = searchConfig.minCharacters,
|
|
24
|
+
minCharacters = _searchConfig$minChar === void 0 ? 1 : _searchConfig$minChar,
|
|
25
|
+
_searchConfig$maxLeng = searchConfig.maxLength,
|
|
26
|
+
maxLength = _searchConfig$maxLeng === void 0 ? 100 : _searchConfig$maxLeng,
|
|
27
|
+
_searchConfig$isSearc = searchConfig.isSearching,
|
|
28
|
+
isSearching = _searchConfig$isSearc === void 0 ? false : _searchConfig$isSearc,
|
|
29
|
+
_searchConfig$ariaLab = searchConfig.ariaLabel,
|
|
30
|
+
ariaLabel = _searchConfig$ariaLab === void 0 ? 'Search table' : _searchConfig$ariaLab;
|
|
31
|
+
var _useState = useState(''),
|
|
32
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
33
|
+
searchText = _useState2[0],
|
|
34
|
+
setSearchText = _useState2[1];
|
|
35
|
+
var debounceTimerRef = useRef(null);
|
|
36
|
+
var isUnmountedRef = useRef(false);
|
|
37
|
+
// Cleanup on unmount
|
|
38
|
+
useEffect(function () {
|
|
39
|
+
return function () {
|
|
40
|
+
isUnmountedRef.current = true;
|
|
41
|
+
if (debounceTimerRef.current) {
|
|
42
|
+
clearTimeout(debounceTimerRef.current);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}, []);
|
|
46
|
+
// Stable reference to onSearch to prevent re-creating callbacks
|
|
47
|
+
var onSearchRef = useRef(onSearch);
|
|
48
|
+
useEffect(function () {
|
|
49
|
+
onSearchRef.current = onSearch;
|
|
50
|
+
}, [onSearch]);
|
|
51
|
+
// Perform search with validation
|
|
52
|
+
var performSearch = useCallback(/*#__PURE__*/function () {
|
|
53
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(text) {
|
|
54
|
+
var trimmedText, columnsToSearch;
|
|
55
|
+
return _regenerator().w(function (_context) {
|
|
56
|
+
while (1) switch (_context.n) {
|
|
57
|
+
case 0:
|
|
58
|
+
if (!isUnmountedRef.current) {
|
|
59
|
+
_context.n = 1;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
return _context.a(2);
|
|
63
|
+
case 1:
|
|
64
|
+
if (!(text.length > 0 && text.length < minCharacters)) {
|
|
65
|
+
_context.n = 2;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
return _context.a(2);
|
|
69
|
+
case 2:
|
|
70
|
+
// Trim the search text
|
|
71
|
+
trimmedText = text.trim(); // Call onSearch callback with searchable columns if specified
|
|
72
|
+
columnsToSearch = searchableColumns.length > 0 ? searchableColumns : undefined;
|
|
73
|
+
_context.n = 3;
|
|
74
|
+
return onSearchRef.current(trimmedText, columnsToSearch);
|
|
75
|
+
case 3:
|
|
76
|
+
return _context.a(2);
|
|
77
|
+
}
|
|
78
|
+
}, _callee);
|
|
79
|
+
}));
|
|
80
|
+
return function (_x) {
|
|
81
|
+
return _ref2.apply(this, arguments);
|
|
82
|
+
};
|
|
83
|
+
}(), [minCharacters, searchableColumns]);
|
|
84
|
+
// Handle debounced search for search-as-you-type mode
|
|
85
|
+
useEffect(function () {
|
|
86
|
+
if (!searchOnType) return function () {};
|
|
87
|
+
// Clear existing timer
|
|
88
|
+
if (debounceTimerRef.current) {
|
|
89
|
+
clearTimeout(debounceTimerRef.current);
|
|
90
|
+
}
|
|
91
|
+
// Set new debounce timer
|
|
92
|
+
debounceTimerRef.current = setTimeout(function () {
|
|
93
|
+
performSearch(searchText);
|
|
94
|
+
}, debounceMs);
|
|
95
|
+
// Cleanup function
|
|
96
|
+
return function () {
|
|
97
|
+
if (debounceTimerRef.current) {
|
|
98
|
+
clearTimeout(debounceTimerRef.current);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}, [searchText, searchOnType, debounceMs, performSearch]);
|
|
102
|
+
// Handle search button click (for button mode)
|
|
103
|
+
var handleSearchButtonClick = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
104
|
+
return _regenerator().w(function (_context2) {
|
|
105
|
+
while (1) switch (_context2.n) {
|
|
106
|
+
case 0:
|
|
107
|
+
if (searchOnType) {
|
|
108
|
+
_context2.n = 1;
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
_context2.n = 1;
|
|
112
|
+
return performSearch(searchText);
|
|
113
|
+
case 1:
|
|
114
|
+
return _context2.a(2);
|
|
115
|
+
}
|
|
116
|
+
}, _callee2);
|
|
117
|
+
})), [searchOnType, searchText, performSearch]);
|
|
118
|
+
// Handle clear button
|
|
119
|
+
var handleClear = useCallback(function () {
|
|
120
|
+
// Cancel pending searches
|
|
121
|
+
if (debounceTimerRef.current) {
|
|
122
|
+
clearTimeout(debounceTimerRef.current);
|
|
123
|
+
debounceTimerRef.current = null;
|
|
124
|
+
}
|
|
125
|
+
setSearchText('');
|
|
126
|
+
// Trigger search with empty string
|
|
127
|
+
performSearch('');
|
|
128
|
+
}, [performSearch]);
|
|
129
|
+
// Handle Enter key press
|
|
130
|
+
var handleKeyDown = useCallback(function (e) {
|
|
131
|
+
if (e.key === 'Enter') {
|
|
132
|
+
// In button mode, Enter triggers search
|
|
133
|
+
// In type mode, Enter also triggers immediate search (bypassing debounce)
|
|
134
|
+
performSearch(searchText);
|
|
135
|
+
} else if (e.key === 'Escape' && showClearButton) {
|
|
136
|
+
handleClear();
|
|
137
|
+
}
|
|
138
|
+
}, [searchText, showClearButton, performSearch, handleClear]);
|
|
139
|
+
// Don't render if search is not enabled
|
|
140
|
+
if (!enabled) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
return jsxs(Flex, {
|
|
144
|
+
direction: "row",
|
|
145
|
+
gap: "size-100",
|
|
146
|
+
alignItems: "center",
|
|
147
|
+
children: [jsx(SearchField, _objectSpread2({
|
|
148
|
+
"aria-label": ariaLabel,
|
|
149
|
+
placeholder: placeholder,
|
|
150
|
+
value: searchText,
|
|
151
|
+
onChange: setSearchText,
|
|
152
|
+
onKeyDown: handleKeyDown,
|
|
153
|
+
maxLength: maxLength,
|
|
154
|
+
width: "size-3000",
|
|
155
|
+
isDisabled: isSearching
|
|
156
|
+
}, showClearButton && {
|
|
157
|
+
onClear: handleClear
|
|
158
|
+
})), !searchOnType && jsx(ActionButton, {
|
|
159
|
+
"aria-label": searchButtonLabel,
|
|
160
|
+
onPress: handleSearchButtonClick,
|
|
161
|
+
isDisabled: isSearching || searchText.length > 0 && searchText.length < minCharacters,
|
|
162
|
+
children: isSearching ? jsx(ProgressCircle, {
|
|
163
|
+
size: "S",
|
|
164
|
+
"aria-label": "Searching...",
|
|
165
|
+
isIndeterminate: true
|
|
166
|
+
}) : jsx(Fragment, {
|
|
167
|
+
children: jsx(Text, {
|
|
168
|
+
children: searchButtonLabel
|
|
169
|
+
})
|
|
170
|
+
})
|
|
171
|
+
}), searchOnType && isSearching && jsx(ProgressCircle, {
|
|
172
|
+
size: "S",
|
|
173
|
+
"aria-label": "Searching...",
|
|
174
|
+
isIndeterminate: true
|
|
175
|
+
})]
|
|
176
|
+
});
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
export { SearchBar as default };
|
|
180
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/DataTable/SearchBar/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport { Flex, SearchField, ActionButton, ProgressCircle, Text } from '@adobe/react-spectrum';\nimport { DataTableSearchConfig } from '../types';\n\nexport interface SearchBarProps {\n searchConfig: DataTableSearchConfig;\n onSearch: (searchText: string, searchColumns?: string[]) => Promise<void>;\n}\n\nconst SearchBar = ({ searchConfig, onSearch }: SearchBarProps): JSX.Element | null => {\n const {\n enabled = false,\n placeholder = 'Search...',\n searchButtonLabel = 'Search',\n showClearButton = true,\n searchOnType = false,\n debounceMs = 300,\n searchableColumns = [],\n minCharacters = 1,\n maxLength = 100,\n isSearching = false,\n ariaLabel = 'Search table',\n } = searchConfig;\n\n const [searchText, setSearchText] = useState('');\n const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isUnmountedRef = useRef(false);\n\n // Cleanup on unmount\n useEffect((): (() => void) => {\n return (): void => {\n isUnmountedRef.current = true;\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n };\n }, []);\n\n // Stable reference to onSearch to prevent re-creating callbacks\n const onSearchRef = useRef(onSearch);\n useEffect(() => {\n onSearchRef.current = onSearch;\n }, [onSearch]);\n\n // Perform search with validation\n const performSearch = useCallback(\n async (text: string) => {\n // Skip if unmounted\n if (isUnmountedRef.current) return;\n\n // Validate minimum characters (except for empty string which means \"clear search\")\n if (text.length > 0 && text.length < minCharacters) {\n return;\n }\n\n // Trim the search text\n const trimmedText = text.trim();\n\n // Call onSearch callback with searchable columns if specified\n const columnsToSearch = searchableColumns.length > 0 ? searchableColumns : undefined;\n await onSearchRef.current(trimmedText, columnsToSearch);\n },\n [minCharacters, searchableColumns]\n );\n\n // Handle debounced search for search-as-you-type mode\n useEffect((): (() => void) => {\n if (!searchOnType) return (): void => {};\n\n // Clear existing timer\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n\n // Set new debounce timer\n debounceTimerRef.current = setTimeout(() => {\n performSearch(searchText);\n }, debounceMs);\n\n // Cleanup function\n return (): void => {\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n };\n }, [searchText, searchOnType, debounceMs, performSearch]);\n\n // Handle search button click (for button mode)\n const handleSearchButtonClick = useCallback(async () => {\n if (!searchOnType) {\n await performSearch(searchText);\n }\n }, [searchOnType, searchText, performSearch]);\n\n // Handle clear button\n const handleClear = useCallback(() => {\n // Cancel pending searches\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = null;\n }\n\n setSearchText('');\n // Trigger search with empty string\n performSearch('');\n }, [performSearch]);\n\n // Handle Enter key press\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n // In button mode, Enter triggers search\n // In type mode, Enter also triggers immediate search (bypassing debounce)\n performSearch(searchText);\n } else if (e.key === 'Escape' && showClearButton) {\n handleClear();\n }\n },\n [searchText, showClearButton, performSearch, handleClear]\n );\n\n // Don't render if search is not enabled\n if (!enabled) {\n return null;\n }\n\n return (\n <Flex direction=\"row\" gap=\"size-100\" alignItems=\"center\">\n <SearchField\n aria-label={ariaLabel}\n placeholder={placeholder}\n value={searchText}\n onChange={setSearchText}\n onKeyDown={handleKeyDown}\n maxLength={maxLength}\n width=\"size-3000\"\n isDisabled={isSearching}\n // We'll use the built-in clear button from SearchField\n {...(showClearButton && { onClear: handleClear })}\n />\n {!searchOnType && (\n <ActionButton\n aria-label={searchButtonLabel}\n onPress={handleSearchButtonClick}\n isDisabled={isSearching || (searchText.length > 0 && searchText.length < minCharacters)}\n >\n {isSearching ? (\n <ProgressCircle size=\"S\" aria-label=\"Searching...\" isIndeterminate />\n ) : (\n <>\n <Text>{searchButtonLabel}</Text>\n </>\n )}\n </ActionButton>\n )}\n {searchOnType && isSearching && (\n <ProgressCircle size=\"S\" aria-label=\"Searching...\" isIndeterminate />\n )}\n </Flex>\n );\n};\n\nexport default SearchBar;\n"],"names":["SearchBar","_ref","searchConfig","onSearch","_searchConfig$enabled","enabled","_searchConfig$placeho","placeholder","_searchConfig$searchB","searchButtonLabel","_searchConfig$showCle","showClearButton","_searchConfig$searchO","searchOnType","_searchConfig$debounc","debounceMs","_searchConfig$searcha","searchableColumns","_searchConfig$minChar","minCharacters","_searchConfig$maxLeng","maxLength","_searchConfig$isSearc","isSearching","_searchConfig$ariaLab","ariaLabel","_useState","useState","_useState2","_slicedToArray","searchText","setSearchText","debounceTimerRef","useRef","isUnmountedRef","useEffect","current","clearTimeout","onSearchRef","performSearch","useCallback","_ref2","_asyncToGenerator","_regenerator","m","_callee","text","trimmedText","columnsToSearch","w","_context","n","a","length","trim","undefined","_x","apply","arguments","setTimeout","handleSearchButtonClick","_callee2","_context2","handleClear","handleKeyDown","e","key","_jsxs","Flex","direction","gap","alignItems","children","_jsx","SearchField","_objectSpread","value","onChange","onKeyDown","width","isDisabled","onClear","ActionButton","onPress","ProgressCircle","size","isIndeterminate","_Fragment","Text"],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator,
|
|
1
|
+
import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, objectSpread2 as _objectSpread2, toConsumableArray as _toConsumableArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
3
|
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
4
4
|
import { Flex, ProgressCircle, View } from '@adobe/react-spectrum';
|
|
5
5
|
import ActionsBuilder from './ActionsBuilder/index.js';
|
|
6
6
|
import GridBuilder from './GridBuilder/index.js';
|
|
7
|
+
import SearchBar from './SearchBar/index.js';
|
|
7
8
|
import { GridAction } from './types.js';
|
|
8
9
|
|
|
9
10
|
var DataTable = function DataTable(_ref) {
|
|
@@ -32,7 +33,13 @@ var DataTable = function DataTable(_ref) {
|
|
|
32
33
|
return Promise.resolve();
|
|
33
34
|
} : _ref$onGridLoad,
|
|
34
35
|
_ref$isProcessing = _ref.isProcessing,
|
|
35
|
-
isProcessing = _ref$isProcessing === void 0 ? false : _ref$isProcessing
|
|
36
|
+
isProcessing = _ref$isProcessing === void 0 ? false : _ref$isProcessing,
|
|
37
|
+
maxHeight = _ref.maxHeight,
|
|
38
|
+
searchConfig = _ref.searchConfig,
|
|
39
|
+
_ref$onSearch = _ref.onSearch,
|
|
40
|
+
onSearch = _ref$onSearch === void 0 ? function () {
|
|
41
|
+
return Promise.resolve();
|
|
42
|
+
} : _ref$onSearch;
|
|
36
43
|
var _useState = useState(true),
|
|
37
44
|
_useState2 = _slicedToArray(_useState, 2),
|
|
38
45
|
isLoading = _useState2[0],
|
|
@@ -81,44 +88,57 @@ var DataTable = function DataTable(_ref) {
|
|
|
81
88
|
children: jsxs(Flex, {
|
|
82
89
|
direction: "row",
|
|
83
90
|
width: "100%",
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
91
|
+
justifyContent: "space-between",
|
|
92
|
+
alignItems: "center",
|
|
93
|
+
children: [jsxs(Flex, {
|
|
94
|
+
direction: "row",
|
|
95
|
+
gap: "size-100",
|
|
96
|
+
alignItems: "center",
|
|
97
|
+
children: [jsx(ActionsBuilder, {
|
|
98
|
+
buttons: buttons,
|
|
99
|
+
massActions: massActions,
|
|
100
|
+
isMassActionDisabled: ids.length === 0 || isProcessing,
|
|
101
|
+
onMassActionPress: function () {
|
|
102
|
+
var _onMassActionPress2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(key) {
|
|
103
|
+
return _regenerator().w(function (_context2) {
|
|
104
|
+
while (1) switch (_context2.n) {
|
|
105
|
+
case 0:
|
|
106
|
+
_context2.n = 1;
|
|
107
|
+
return _onMassActionPress(key, ids);
|
|
108
|
+
case 1:
|
|
109
|
+
setIds([]);
|
|
110
|
+
case 2:
|
|
111
|
+
return _context2.a(2);
|
|
112
|
+
}
|
|
113
|
+
}, _callee2);
|
|
114
|
+
}));
|
|
115
|
+
function onMassActionPress(_x) {
|
|
116
|
+
return _onMassActionPress2.apply(this, arguments);
|
|
117
|
+
}
|
|
118
|
+
return onMassActionPress;
|
|
119
|
+
}()
|
|
120
|
+
}), isProcessing && jsx(ProgressCircle, {
|
|
121
|
+
size: "M",
|
|
122
|
+
"aria-label": "Syncing..",
|
|
123
|
+
isIndeterminate: true,
|
|
124
|
+
marginEnd: "size-100"
|
|
125
|
+
})]
|
|
126
|
+
}), (searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.enabled) && jsx(SearchBar, {
|
|
127
|
+
searchConfig: searchConfig,
|
|
128
|
+
onSearch: onSearch
|
|
112
129
|
})]
|
|
113
130
|
})
|
|
114
131
|
}), jsx(View, {
|
|
115
132
|
gridArea: "content",
|
|
116
|
-
children: jsx(GridBuilder, {
|
|
133
|
+
children: jsx(GridBuilder, _objectSpread2(_objectSpread2({
|
|
117
134
|
columns: columns,
|
|
118
135
|
data: data,
|
|
119
136
|
isMassActionsEnabled: massActions.length > 0,
|
|
120
137
|
gridAction: gridAction,
|
|
121
|
-
gridActions: gridActions
|
|
138
|
+
gridActions: gridActions
|
|
139
|
+
}, maxHeight && {
|
|
140
|
+
maxHeight: maxHeight
|
|
141
|
+
}), {}, {
|
|
122
142
|
onGridActionPress: function () {
|
|
123
143
|
var _onGridActionPress2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(key, item) {
|
|
124
144
|
return _regenerator().w(function (_context3) {
|
|
@@ -147,7 +167,7 @@ var DataTable = function DataTable(_ref) {
|
|
|
147
167
|
}
|
|
148
168
|
setIds(selectedIds);
|
|
149
169
|
}
|
|
150
|
-
})
|
|
170
|
+
}))
|
|
151
171
|
})]
|
|
152
172
|
})
|
|
153
173
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/DataTable/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\nimport { useEffect, useState, useCallback, useRef } from 'react';\nimport { Flex, View, ProgressCircle } from '@adobe/react-spectrum';\nimport ActionsBuilder from './ActionsBuilder';\nimport GridBuilder from './GridBuilder';\nimport { DataTableProps, GridAction, DataTableRow } from './types';\nimport { Selection } from '@react-types/shared';\n\nconst DataTable = <T extends DataTableRow = DataTableRow>({\n columns = [],\n data = [],\n buttons = [],\n massActions = [],\n onMassActionPress = (): Promise<void> => Promise.resolve(),\n gridAction = GridAction.ACTION_MENU,\n gridActions = [],\n onGridActionPress = (): Promise<void> => Promise.resolve(),\n onGridLoad = (): Promise<void> => Promise.resolve(),\n isProcessing = false,\n}: DataTableProps<T>): JSX.Element => {\n const [isLoading, setLoading] = useState(true);\n const [ids, setIds] = useState<(number | string)[]>([]);\n\n // Stable reference to onGridLoad to prevent infinite loops\n const onGridLoadRef = useRef(onGridLoad);\n\n // Update ref in useEffect instead of during render\n useEffect(() => {\n onGridLoadRef.current = onGridLoad;\n }, [onGridLoad]);\n\n // Stable callback that won't change on every render\n const stableOnGridLoad = useCallback(() => {\n return onGridLoadRef.current();\n }, []);\n\n // Initial load effect - runs once on mount\n useEffect((): void => {\n (async (): Promise<void> => {\n await stableOnGridLoad();\n setLoading(false);\n })();\n }, [stableOnGridLoad]);\n\n return (\n <Flex width=\"100%\" alignItems=\"center\">\n {isLoading ? (\n <ProgressCircle size=\"L\" aria-label=\"Loading...\" isIndeterminate />\n ) : (\n <View width=\"100%\">\n <View gridArea=\"header\">\n <Flex direction=\"row\" width=\"100%\">\n <ActionsBuilder\n buttons={buttons}\n massActions={massActions}\n isMassActionDisabled={ids.length === 0 || isProcessing}\n onMassActionPress={async (key: string) => {\n await onMassActionPress(key, ids);\n setIds([]);\n }}\n />\n {isProcessing && (\n <ProgressCircle\n size=\"M\"\n aria-label=\"Syncing..\"\n isIndeterminate\n marginEnd=\"size-100\"\n />\n )}\n </Flex>\n </View>\n <View gridArea=\"content\">\n <GridBuilder<T>\n columns={columns}\n data={data}\n isMassActionsEnabled={massActions.length > 0}\n gridAction={gridAction}\n gridActions={gridActions}\n onGridActionPress={async (key: string, item: T) => {\n await onGridActionPress(key, item);\n }}\n onSelectionChange={(keys: Selection) => {\n const selectedIds: (string | number)[] = [];\n if (typeof keys === 'string' && keys === 'all') {\n data.forEach(item => {\n selectedIds.push(item.id);\n });\n } else {\n selectedIds.push(...keys);\n }\n setIds(selectedIds);\n }}\n />\n </View>\n </View>\n )}\n </Flex>\n );\n};\n\nexport default DataTable;\n"],"names":["DataTable","_ref","_ref$columns","columns","_ref$data","data","_ref$buttons","buttons","_ref$massActions","massActions","_ref$onMassActionPres","onMassActionPress","Promise","resolve","_ref$gridAction","gridAction","GridAction","ACTION_MENU","_ref$gridActions","gridActions","_ref$onGridActionPres","onGridActionPress","_ref$onGridLoad","onGridLoad","_ref$isProcessing","isProcessing","_useState","useState","_useState2","_slicedToArray","isLoading","setLoading","_useState3","_useState4","ids","setIds","onGridLoadRef","useRef","useEffect","current","stableOnGridLoad","useCallback","_asyncToGenerator","_regenerator","m","_callee","w","_context","n","a","_jsx","Flex","width","alignItems","ProgressCircle","size","isIndeterminate","_jsxs","View","gridArea","children","direction","ActionsBuilder","isMassActionDisabled","length","_onMassActionPress2","_callee2","key","_context2","_x","apply","arguments","marginEnd","GridBuilder","isMassActionsEnabled","_onGridActionPress2","_callee3","item","_context3","_x2","_x3","onSelectionChange","keys","selectedIds","forEach","push","id","_toConsumableArray"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/DataTable/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\nimport { useEffect, useState, useCallback, useRef } from 'react';\nimport { Flex, View, ProgressCircle } from '@adobe/react-spectrum';\nimport ActionsBuilder from './ActionsBuilder';\nimport GridBuilder from './GridBuilder';\nimport SearchBar from './SearchBar';\nimport { DataTableProps, GridAction, DataTableRow } from './types';\nimport { Selection } from '@react-types/shared';\n\nconst DataTable = <T extends DataTableRow = DataTableRow>({\n columns = [],\n data = [],\n buttons = [],\n massActions = [],\n onMassActionPress = (): Promise<void> => Promise.resolve(),\n gridAction = GridAction.ACTION_MENU,\n gridActions = [],\n onGridActionPress = (): Promise<void> => Promise.resolve(),\n onGridLoad = (): Promise<void> => Promise.resolve(),\n isProcessing = false,\n maxHeight,\n searchConfig,\n onSearch = (): Promise<void> => Promise.resolve(),\n}: DataTableProps<T>): JSX.Element => {\n const [isLoading, setLoading] = useState(true);\n const [ids, setIds] = useState<(number | string)[]>([]);\n\n // Stable reference to onGridLoad to prevent infinite loops\n const onGridLoadRef = useRef(onGridLoad);\n\n // Update ref in useEffect instead of during render\n useEffect(() => {\n onGridLoadRef.current = onGridLoad;\n }, [onGridLoad]);\n\n // Stable callback that won't change on every render\n const stableOnGridLoad = useCallback(() => {\n return onGridLoadRef.current();\n }, []);\n\n // Initial load effect - runs once on mount\n useEffect((): void => {\n (async (): Promise<void> => {\n await stableOnGridLoad();\n setLoading(false);\n })();\n }, [stableOnGridLoad]);\n\n return (\n <Flex width=\"100%\" alignItems=\"center\">\n {isLoading ? (\n <ProgressCircle size=\"L\" aria-label=\"Loading...\" isIndeterminate />\n ) : (\n <View width=\"100%\">\n <View gridArea=\"header\">\n <Flex direction=\"row\" width=\"100%\" justifyContent=\"space-between\" alignItems=\"center\">\n <Flex direction=\"row\" gap=\"size-100\" alignItems=\"center\">\n <ActionsBuilder\n buttons={buttons}\n massActions={massActions}\n isMassActionDisabled={ids.length === 0 || isProcessing}\n onMassActionPress={async (key: string) => {\n await onMassActionPress(key, ids);\n setIds([]);\n }}\n />\n {isProcessing && (\n <ProgressCircle\n size=\"M\"\n aria-label=\"Syncing..\"\n isIndeterminate\n marginEnd=\"size-100\"\n />\n )}\n </Flex>\n {searchConfig?.enabled && (\n <SearchBar searchConfig={searchConfig} onSearch={onSearch} />\n )}\n </Flex>\n </View>\n <View gridArea=\"content\">\n <GridBuilder<T>\n columns={columns}\n data={data}\n isMassActionsEnabled={massActions.length > 0}\n gridAction={gridAction}\n gridActions={gridActions}\n {...(maxHeight && { maxHeight })}\n onGridActionPress={async (key: string, item: T) => {\n await onGridActionPress(key, item);\n }}\n onSelectionChange={(keys: Selection) => {\n const selectedIds: (string | number)[] = [];\n if (typeof keys === 'string' && keys === 'all') {\n data.forEach(item => {\n selectedIds.push(item.id);\n });\n } else {\n selectedIds.push(...keys);\n }\n setIds(selectedIds);\n }}\n />\n </View>\n </View>\n )}\n </Flex>\n );\n};\n\nexport default DataTable;\n"],"names":["DataTable","_ref","_ref$columns","columns","_ref$data","data","_ref$buttons","buttons","_ref$massActions","massActions","_ref$onMassActionPres","onMassActionPress","Promise","resolve","_ref$gridAction","gridAction","GridAction","ACTION_MENU","_ref$gridActions","gridActions","_ref$onGridActionPres","onGridActionPress","_ref$onGridLoad","onGridLoad","_ref$isProcessing","isProcessing","maxHeight","searchConfig","_ref$onSearch","onSearch","_useState","useState","_useState2","_slicedToArray","isLoading","setLoading","_useState3","_useState4","ids","setIds","onGridLoadRef","useRef","useEffect","current","stableOnGridLoad","useCallback","_asyncToGenerator","_regenerator","m","_callee","w","_context","n","a","_jsx","Flex","width","alignItems","children","ProgressCircle","size","isIndeterminate","_jsxs","View","gridArea","direction","justifyContent","gap","ActionsBuilder","isMassActionDisabled","length","_onMassActionPress2","_callee2","key","_context2","_x","apply","arguments","marginEnd","enabled","SearchBar","GridBuilder","_objectSpread","isMassActionsEnabled","_onGridActionPress2","_callee3","item","_context3","_x2","_x3","onSelectionChange","keys","selectedIds","forEach","push","id","_toConsumableArray"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../../src/components/DataTable/types.ts"],"sourcesContent":["/**\n * <license header>\n */\n\nimport { ReactElement } from 'react';\n\nexport interface DataTableColumn {\n uid: string;\n name: string;\n sortable?: boolean;\n width?: string | number;\n}\n\nexport interface DataTableRow {\n id: string | number;\n [key: string]: any;\n}\n\nexport interface DataTableProps<T extends DataTableRow = DataTableRow> {\n columns?: DataTableColumn[];\n data?: T[];\n buttons?: ReactElement[];\n massActions?: MassActionProps[];\n onMassActionPress?: (key: string, selections: (string | number)[]) => Promise<void>;\n gridAction?: GridAction;\n gridActions?: GridActionProps<T>[];\n onGridActionPress?: (key: string, item: T) => Promise<void>;\n onGridLoad?: () => Promise<void>;\n isProcessing?: boolean;\n}\n\nexport interface MassActionProps {\n key: string;\n text: string;\n}\n\nexport interface GridActionProps<T extends DataTableRow = DataTableRow> {\n key: string;\n text: string;\n isVisible?: (item: T) => Promise<boolean>;\n}\n\nexport enum GridAction {\n ACTION_MENU = 'action-menu',\n BUTTONS = 'buttons',\n LINKS = 'links',\n}\n"],"names":["GridAction"],"mappings":"AAAA;;AAEG;
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../src/components/DataTable/types.ts"],"sourcesContent":["/**\n * <license header>\n */\n\nimport { ReactElement } from 'react';\n\nexport interface DataTableColumn {\n uid: string;\n name: string;\n sortable?: boolean;\n width?: string | number;\n}\n\nexport interface DataTableRow {\n id: string | number;\n [key: string]: any;\n}\n\n/**\n * Configuration options for DataTable search functionality\n */\nexport interface DataTableSearchConfig {\n /** Flag to enable/disable search bar */\n enabled: boolean;\n /** Placeholder text for search input (default: \"Search...\") */\n placeholder?: string;\n /** Accessible label for search button (default: \"Search\") */\n searchButtonLabel?: string;\n /** Accessible label for clear button (default: \"Clear search\") */\n clearButtonLabel?: string;\n /** Show clear button when text exists (default: true) */\n showClearButton?: boolean;\n /** Search while typing vs. button click only (default: false) */\n searchOnType?: boolean;\n /** Debounce time for search-as-you-type in ms (default: 300, only applies when searchOnType: true) */\n debounceMs?: number;\n /** Case-sensitive search (default: false) */\n caseSensitive?: boolean;\n /** Specific columns to search (empty = all columns) */\n searchableColumns?: string[];\n /** Minimum characters before search triggers (default: 1) */\n minCharacters?: number;\n /** Maximum length of search input (default: 100) */\n maxLength?: number;\n /** Show count of filtered results (default: false) */\n showResultsCount?: boolean;\n /** Show loading state in search button */\n isSearching?: boolean;\n /** ARIA label for search input (default: \"Search table\") */\n ariaLabel?: string;\n}\n\nexport interface DataTableProps<T extends DataTableRow = DataTableRow> {\n columns?: DataTableColumn[];\n data?: T[];\n buttons?: ReactElement[];\n massActions?: MassActionProps[];\n onMassActionPress?: (key: string, selections: (string | number)[]) => Promise<void>;\n gridAction?: GridAction;\n gridActions?: GridActionProps<T>[];\n onGridActionPress?: (key: string, item: T) => Promise<void>;\n onGridLoad?: () => Promise<void>;\n isProcessing?: boolean;\n maxHeight?: string;\n /** Search configuration options */\n searchConfig?: DataTableSearchConfig;\n /** Callback triggered when search is performed */\n onSearch?: (searchText: string, searchColumns?: string[]) => Promise<void>;\n}\n\nexport interface MassActionProps {\n key: string;\n text: string;\n}\n\nexport interface GridActionProps<T extends DataTableRow = DataTableRow> {\n key: string;\n text: string;\n isVisible?: (item: T) => Promise<boolean>;\n}\n\nexport enum GridAction {\n ACTION_MENU = 'action-menu',\n BUTTONS = 'buttons',\n LINKS = 'links',\n}\n"],"names":["GridAction"],"mappings":"AAAA;;AAEG;IA+ESA;AAAZ,CAAA,UAAYA,UAAU,EAAA;AACpBA,EAAAA,UAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3BA,EAAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnBA,EAAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EAJWA,UAAU,KAAVA,UAAU,GAAA,EAAA,CAAA,CAAA;;;;"}
|