@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.
Files changed (66) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/README.md +590 -2
  3. package/dist/cjs/components/DataForm/ButtonContainer/index.js +158 -0
  4. package/dist/cjs/components/DataForm/ButtonContainer/index.js.map +1 -0
  5. package/dist/cjs/components/DataForm/FieldBuilder/index.js +3 -2
  6. package/dist/cjs/components/DataForm/FieldBuilder/index.js.map +1 -1
  7. package/dist/cjs/components/DataForm/FormBuilder/index.js +178 -65
  8. package/dist/cjs/components/DataForm/FormBuilder/index.js.map +1 -1
  9. package/dist/cjs/components/DataForm/FormBuilder/types.js.map +1 -1
  10. package/dist/cjs/components/DataForm/index.js +6 -3
  11. package/dist/cjs/components/DataForm/index.js.map +1 -1
  12. package/dist/cjs/components/DataTable/GridBuilder/index.js +72 -58
  13. package/dist/cjs/components/DataTable/GridBuilder/index.js.map +1 -1
  14. package/dist/cjs/components/DataTable/SearchBar/index.js +184 -0
  15. package/dist/cjs/components/DataTable/SearchBar/index.js.map +1 -0
  16. package/dist/cjs/components/DataTable/index.js +53 -33
  17. package/dist/cjs/components/DataTable/index.js.map +1 -1
  18. package/dist/cjs/components/DataTable/types.js.map +1 -1
  19. package/dist/cjs/components/FileUpload/index.js +12 -2
  20. package/dist/cjs/components/FileUpload/index.js.map +1 -1
  21. package/dist/esm/components/DataForm/ButtonContainer/index.js +154 -0
  22. package/dist/esm/components/DataForm/ButtonContainer/index.js.map +1 -0
  23. package/dist/esm/components/DataForm/FieldBuilder/index.js +3 -2
  24. package/dist/esm/components/DataForm/FieldBuilder/index.js.map +1 -1
  25. package/dist/esm/components/DataForm/FormBuilder/index.js +180 -67
  26. package/dist/esm/components/DataForm/FormBuilder/index.js.map +1 -1
  27. package/dist/esm/components/DataForm/FormBuilder/types.js.map +1 -1
  28. package/dist/esm/components/DataForm/index.js +7 -4
  29. package/dist/esm/components/DataForm/index.js.map +1 -1
  30. package/dist/esm/components/DataTable/GridBuilder/index.js +74 -60
  31. package/dist/esm/components/DataTable/GridBuilder/index.js.map +1 -1
  32. package/dist/esm/components/DataTable/SearchBar/index.js +180 -0
  33. package/dist/esm/components/DataTable/SearchBar/index.js.map +1 -0
  34. package/dist/esm/components/DataTable/index.js +53 -33
  35. package/dist/esm/components/DataTable/index.js.map +1 -1
  36. package/dist/esm/components/DataTable/types.js.map +1 -1
  37. package/dist/esm/components/FileUpload/index.js +13 -3
  38. package/dist/esm/components/FileUpload/index.js.map +1 -1
  39. package/dist/esm/types/components/DataForm/ButtonContainer/index.d.ts +12 -0
  40. package/dist/esm/types/components/DataForm/ButtonContainer/index.d.ts.map +1 -0
  41. package/dist/esm/types/components/DataForm/ButtonContainer/types.d.ts +82 -0
  42. package/dist/esm/types/components/DataForm/ButtonContainer/types.d.ts.map +1 -0
  43. package/dist/esm/types/components/DataForm/FieldBuilder/index.d.ts.map +1 -1
  44. package/dist/esm/types/components/DataForm/FormBuilder/index.d.ts.map +1 -1
  45. package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts +40 -0
  46. package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts.map +1 -1
  47. package/dist/esm/types/components/DataForm/index.d.ts.map +1 -1
  48. package/dist/esm/types/components/DataForm/types.d.ts +2 -0
  49. package/dist/esm/types/components/DataForm/types.d.ts.map +1 -1
  50. package/dist/esm/types/components/DataTable/GridBuilder/index.d.ts +1 -1
  51. package/dist/esm/types/components/DataTable/GridBuilder/index.d.ts.map +1 -1
  52. package/dist/esm/types/components/DataTable/GridBuilder/types.d.ts +1 -0
  53. package/dist/esm/types/components/DataTable/GridBuilder/types.d.ts.map +1 -1
  54. package/dist/esm/types/components/DataTable/SearchBar/index.d.ts +11 -0
  55. package/dist/esm/types/components/DataTable/SearchBar/index.d.ts.map +1 -0
  56. package/dist/esm/types/components/DataTable/index.d.ts +1 -1
  57. package/dist/esm/types/components/DataTable/index.d.ts.map +1 -1
  58. package/dist/esm/types/components/DataTable/types.d.ts +38 -0
  59. package/dist/esm/types/components/DataTable/types.d.ts.map +1 -1
  60. package/dist/esm/types/components/FileUpload/index.d.ts +2 -3
  61. package/dist/esm/types/components/FileUpload/index.d.ts.map +1 -1
  62. package/dist/esm/types/components/FileUpload/types.d.ts +14 -0
  63. package/dist/esm/types/components/FileUpload/types.d.ts.map +1 -1
  64. package/dist/esm/types/components/index.d.ts +2 -1
  65. package/dist/esm/types/components/index.d.ts.map +1 -1
  66. 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: jsxs(TableView, {
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 return (\n <View width={'100%'} marginTop={'size-200'}>\n <TableView\n selectionMode={selectionMode}\n onSelectionChange={onSelectionChange}\n minHeight={'size-6000'}\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): 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): JSX.Element => (\n <Row>\n {(columnKey): 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 any}</Cell>\n )\n }\n </Row>\n )}\n </TableBody>\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","selectionMode","length","_jsx","View","width","marginTop","children","_jsxs","IllustratedMessage","Heading","Content","TableView","minHeight","renderEmptyState","TableHeader","column","Column","align","uid","name","TableBody","items","item","Row","columnKey","Cell","LINKS","LinksRenderer","BUTTONS","ButtonsRenderer","ActionMenuRenderer"],"mappings":"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"}
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, toConsumableArray as _toConsumableArray, regenerator as _regenerator } from '../../_virtual/_rollupPluginBabelHelpers.js';
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
- children: [jsx(ActionsBuilder, {
85
- buttons: buttons,
86
- massActions: massActions,
87
- isMassActionDisabled: ids.length === 0 || isProcessing,
88
- onMassActionPress: function () {
89
- var _onMassActionPress2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(key) {
90
- return _regenerator().w(function (_context2) {
91
- while (1) switch (_context2.n) {
92
- case 0:
93
- _context2.n = 1;
94
- return _onMassActionPress(key, ids);
95
- case 1:
96
- setIds([]);
97
- case 2:
98
- return _context2.a(2);
99
- }
100
- }, _callee2);
101
- }));
102
- function onMassActionPress(_x) {
103
- return _onMassActionPress2.apply(this, arguments);
104
- }
105
- return onMassActionPress;
106
- }()
107
- }), isProcessing && jsx(ProgressCircle, {
108
- size: "M",
109
- "aria-label": "Syncing..",
110
- isIndeterminate: true,
111
- marginEnd: "size-100"
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;IAwCSA;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;;;;"}
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;;;;"}