@carbon/react 1.40.0 → 1.41.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +1428 -695
- package/es/components/Accordion/Accordion.Skeleton.d.ts +0 -5
- package/es/components/Accordion/Accordion.Skeleton.js +0 -5
- package/es/components/Breadcrumb/BreadcrumbItem.js +3 -1
- package/es/components/Checkbox/Checkbox.js +3 -6
- package/es/components/CodeSnippet/CodeSnippet.js +5 -12
- package/es/components/ComboBox/ComboBox.d.ts +1 -5
- package/es/components/ComboBox/ComboBox.js +6 -20
- package/es/components/ComposedModal/ComposedModal.js +1 -4
- package/es/components/ComposedModal/ModalFooter.js +4 -9
- package/es/components/ComposedModal/ModalHeader.js +1 -4
- package/es/components/ContentSwitcher/ContentSwitcher.d.ts +3 -8
- package/es/components/ContentSwitcher/ContentSwitcher.js +7 -11
- package/es/components/Copy/Copy.js +4 -8
- package/es/components/CopyButton/CopyButton.js +8 -7
- package/es/components/DataTable/DataTable.d.ts +3 -39
- package/es/components/DataTable/DataTable.js +10 -18
- package/es/components/DataTable/Table.d.ts +0 -4
- package/es/components/DataTable/Table.js +0 -4
- package/es/components/DataTable/TableBatchAction.js +12 -5
- package/es/components/DataTable/TableBatchActions.js +1 -6
- package/es/components/DataTable/TableBody.d.ts +0 -3
- package/es/components/DataTable/TableBody.js +1 -3
- package/es/components/DataTable/TableHeader.js +3 -8
- package/es/components/DataTable/TableSelectAll.d.ts +0 -3
- package/es/components/DataTable/TableSelectAll.js +1 -4
- package/es/components/DataTable/TableToolbar.d.ts +10 -0
- package/es/components/DataTable/TableToolbar.js +15 -7
- package/es/components/DataTable/TableToolbarMenu.js +2 -6
- package/es/components/DataTable/TableToolbarSearch.d.ts +2 -8
- package/es/components/DataTable/TableToolbarSearch.js +6 -11
- package/es/components/DataTable/tools/sorting.js +2 -2
- package/es/components/DatePicker/DatePicker.d.ts +4 -4
- package/es/components/DatePicker/DatePicker.js +9 -4
- package/es/components/DatePicker/plugins/fixEventsPlugin.js +6 -0
- package/es/components/DatePickerInput/DatePickerInput.js +12 -6
- package/es/components/Dropdown/Dropdown.js +6 -15
- package/es/components/FileUploader/FileUploader.d.ts +2 -11
- package/es/components/FileUploader/FileUploader.js +15 -19
- package/es/components/FileUploader/FileUploaderButton.js +2 -2
- package/es/components/FileUploader/FileUploaderDropContainer.d.ts +0 -7
- package/es/components/FileUploader/FileUploaderDropContainer.js +2 -8
- package/es/components/FileUploader/FileUploaderItem.d.ts +0 -4
- package/es/components/FileUploader/FileUploaderItem.js +12 -9
- package/es/components/FileUploader/Filename.d.ts +6 -10
- package/es/components/FileUploader/Filename.js +7 -11
- package/es/components/FormGroup/FormGroup.d.ts +0 -5
- package/es/components/FormGroup/FormGroup.js +3 -8
- package/es/components/FormItem/FormItem.d.ts +32 -0
- package/es/components/FormItem/index.d.ts +9 -0
- package/es/components/FormLabel/FormLabel.js +4 -1
- package/es/components/ListBox/ListBox.js +4 -8
- package/es/components/ListBox/ListBoxMenuIcon.js +1 -4
- package/es/components/ListBox/ListBoxMenuItem.js +4 -8
- package/es/components/ListBox/ListBoxSelection.d.ts +5 -5
- package/es/components/ListBox/ListBoxSelection.js +12 -13
- package/es/components/ListBox/next/ListBoxSelection.js +12 -13
- package/es/components/ListBox/next/ListBoxTrigger.js +3 -5
- package/es/components/ListItem/ListItem.d.ts +1 -1
- package/es/components/ListItem/ListItem.js +6 -2
- package/es/components/Menu/MenuItem.js +4 -1
- package/es/components/Modal/Modal.js +16 -27
- package/es/components/ModalWrapper/ModalWrapper.js +13 -19
- package/es/components/MultiSelect/FilterableMultiSelect.js +14 -28
- package/es/components/MultiSelect/MultiSelect.js +17 -33
- package/es/components/MultiSelect/MultiSelectPropTypes.js +2 -2
- package/es/components/MultiSelect/tools/sorting.js +2 -2
- package/es/components/Notification/Notification.d.ts +11 -29
- package/es/components/Notification/Notification.js +38 -57
- package/es/components/NumberInput/NumberInput.js +6 -2
- package/es/components/OverflowMenu/OverflowMenu.js +27 -33
- package/es/components/OverflowMenuItem/OverflowMenuItem.js +4 -1
- package/es/components/Pagination/experimental/PageSelector.js +3 -8
- package/es/components/Pagination/experimental/Pagination.js +16 -34
- package/es/components/ProgressIndicator/ProgressIndicator.js +7 -6
- package/es/components/RadioTile/RadioTile.js +6 -7
- package/es/components/Search/Search.Skeleton.d.ts +0 -3
- package/es/components/Search/Search.Skeleton.js +1 -4
- package/es/components/Select/Select.d.ts +2 -2
- package/es/components/Select/Select.js +13 -16
- package/es/components/SelectItem/SelectItem.d.ts +0 -6
- package/es/components/SelectItem/SelectItem.js +4 -10
- package/es/components/SelectItemGroup/SelectItemGroup.d.ts +0 -3
- package/es/components/SelectItemGroup/SelectItemGroup.js +1 -4
- package/es/components/SkeletonIcon/SkeletonIcon.d.ts +13 -0
- package/es/components/SkeletonIcon/SkeletonIcon.js +2 -3
- package/es/components/SkeletonText/SkeletonText.d.ts +0 -6
- package/es/components/SkeletonText/SkeletonText.js +0 -6
- package/es/components/Slider/Slider.Skeleton.d.ts +9 -1
- package/es/components/Slider/Slider.Skeleton.js +20 -4
- package/es/components/Slider/Slider.d.ts +137 -25
- package/es/components/Slider/Slider.js +779 -186
- package/es/components/StructuredList/StructuredList.js +5 -2
- package/es/components/Switch/Switch.js +3 -7
- package/es/components/Tabs/Tabs.js +5 -2
- package/es/components/Tag/Tag.js +4 -2
- package/es/components/Text/Text.js +1 -1
- package/es/components/Text/TextDirection.d.ts +1 -1
- package/es/components/TextArea/TextArea.js +30 -34
- package/es/components/TextInput/ControlledPasswordInput.js +12 -19
- package/es/components/TextInput/TextInput.js +8 -3
- package/es/components/Tile/Tile.js +4 -2
- package/es/components/TileGroup/TileGroup.js +5 -4
- package/es/components/Toggle/Toggle.js +4 -2
- package/es/components/UIShell/Content.js +1 -4
- package/es/components/UIShell/SideNav.d.ts +1 -1
- package/es/components/UIShell/SideNavDetails.d.ts +32 -0
- package/es/components/UIShell/SideNavDetails.js +1 -2
- package/es/components/UIShell/SideNavDivider.d.ts +15 -0
- package/es/components/UIShell/SideNavDivider.js +2 -2
- package/es/components/UIShell/SideNavFooter.js +2 -5
- package/es/components/UIShell/SideNavIcon.d.ts +25 -0
- package/es/components/UIShell/SideNavIcon.js +4 -7
- package/es/components/UIShell/SideNavSwitcher.d.ts +31 -0
- package/es/components/UIShell/SideNavSwitcher.js +6 -5
- package/es/index.js +1 -1
- package/es/internal/FloatingMenu.js +2 -7
- package/es/internal/Selection.js +0 -3
- package/es/internal/noopFn.d.ts +7 -0
- package/es/internal/noopFn.js +10 -0
- package/es/internal/useNormalizedInputProps.js +6 -2
- package/lib/components/Accordion/Accordion.Skeleton.d.ts +0 -5
- package/lib/components/Accordion/Accordion.Skeleton.js +0 -5
- package/lib/components/Breadcrumb/BreadcrumbItem.js +3 -1
- package/lib/components/Checkbox/Checkbox.js +3 -6
- package/lib/components/CodeSnippet/CodeSnippet.js +5 -12
- package/lib/components/ComboBox/ComboBox.d.ts +1 -5
- package/lib/components/ComboBox/ComboBox.js +5 -19
- package/lib/components/ComposedModal/ComposedModal.js +1 -4
- package/lib/components/ComposedModal/ModalFooter.js +4 -9
- package/lib/components/ComposedModal/ModalHeader.js +1 -4
- package/lib/components/ContentSwitcher/ContentSwitcher.d.ts +3 -8
- package/lib/components/ContentSwitcher/ContentSwitcher.js +7 -11
- package/lib/components/Copy/Copy.js +4 -8
- package/lib/components/CopyButton/CopyButton.js +8 -7
- package/lib/components/DataTable/DataTable.d.ts +3 -39
- package/lib/components/DataTable/DataTable.js +13 -21
- package/lib/components/DataTable/Table.d.ts +0 -4
- package/lib/components/DataTable/Table.js +0 -4
- package/lib/components/DataTable/TableBatchAction.js +12 -5
- package/lib/components/DataTable/TableBatchActions.js +1 -6
- package/lib/components/DataTable/TableBody.d.ts +0 -3
- package/lib/components/DataTable/TableBody.js +1 -3
- package/lib/components/DataTable/TableHeader.js +3 -8
- package/lib/components/DataTable/TableSelectAll.d.ts +0 -3
- package/lib/components/DataTable/TableSelectAll.js +1 -4
- package/lib/components/DataTable/TableToolbar.d.ts +10 -0
- package/lib/components/DataTable/TableToolbar.js +15 -7
- package/lib/components/DataTable/TableToolbarMenu.js +2 -6
- package/lib/components/DataTable/TableToolbarSearch.d.ts +2 -8
- package/lib/components/DataTable/TableToolbarSearch.js +6 -11
- package/lib/components/DataTable/tools/sorting.js +2 -2
- package/lib/components/DatePicker/DatePicker.d.ts +4 -4
- package/lib/components/DatePicker/DatePicker.js +9 -4
- package/lib/components/DatePicker/plugins/fixEventsPlugin.js +6 -0
- package/lib/components/DatePickerInput/DatePickerInput.js +12 -6
- package/lib/components/Dropdown/Dropdown.js +6 -15
- package/lib/components/FileUploader/FileUploader.d.ts +2 -11
- package/lib/components/FileUploader/FileUploader.js +15 -19
- package/lib/components/FileUploader/FileUploaderButton.js +2 -2
- package/lib/components/FileUploader/FileUploaderDropContainer.d.ts +0 -7
- package/lib/components/FileUploader/FileUploaderDropContainer.js +2 -8
- package/lib/components/FileUploader/FileUploaderItem.d.ts +0 -4
- package/lib/components/FileUploader/FileUploaderItem.js +12 -9
- package/lib/components/FileUploader/Filename.d.ts +6 -10
- package/lib/components/FileUploader/Filename.js +7 -11
- package/lib/components/FormGroup/FormGroup.d.ts +0 -5
- package/lib/components/FormGroup/FormGroup.js +3 -8
- package/lib/components/FormItem/FormItem.d.ts +32 -0
- package/lib/components/FormItem/index.d.ts +9 -0
- package/lib/components/FormLabel/FormLabel.js +4 -1
- package/lib/components/ListBox/ListBox.js +4 -8
- package/lib/components/ListBox/ListBoxMenuIcon.js +1 -4
- package/lib/components/ListBox/ListBoxMenuItem.js +4 -8
- package/lib/components/ListBox/ListBoxSelection.d.ts +5 -5
- package/lib/components/ListBox/ListBoxSelection.js +12 -13
- package/lib/components/ListBox/next/ListBoxSelection.js +12 -13
- package/lib/components/ListBox/next/ListBoxTrigger.js +3 -5
- package/lib/components/ListItem/ListItem.d.ts +1 -1
- package/lib/components/ListItem/ListItem.js +6 -2
- package/lib/components/Menu/MenuItem.js +4 -1
- package/lib/components/Modal/Modal.js +16 -27
- package/lib/components/ModalWrapper/ModalWrapper.js +13 -19
- package/lib/components/MultiSelect/FilterableMultiSelect.js +18 -32
- package/lib/components/MultiSelect/MultiSelect.js +16 -32
- package/lib/components/MultiSelect/MultiSelectPropTypes.js +2 -2
- package/lib/components/MultiSelect/tools/sorting.js +2 -2
- package/lib/components/Notification/Notification.d.ts +11 -29
- package/lib/components/Notification/Notification.js +38 -57
- package/lib/components/NumberInput/NumberInput.js +6 -2
- package/lib/components/OverflowMenu/OverflowMenu.js +27 -33
- package/lib/components/OverflowMenuItem/OverflowMenuItem.js +4 -1
- package/lib/components/Pagination/experimental/PageSelector.js +3 -8
- package/lib/components/Pagination/experimental/Pagination.js +16 -34
- package/lib/components/ProgressIndicator/ProgressIndicator.js +7 -6
- package/lib/components/RadioTile/RadioTile.js +6 -7
- package/lib/components/Search/Search.Skeleton.d.ts +0 -3
- package/lib/components/Search/Search.Skeleton.js +1 -4
- package/lib/components/Select/Select.d.ts +2 -2
- package/lib/components/Select/Select.js +13 -16
- package/lib/components/SelectItem/SelectItem.d.ts +0 -6
- package/lib/components/SelectItem/SelectItem.js +4 -10
- package/lib/components/SelectItemGroup/SelectItemGroup.d.ts +0 -3
- package/lib/components/SelectItemGroup/SelectItemGroup.js +1 -4
- package/lib/components/SkeletonIcon/SkeletonIcon.d.ts +13 -0
- package/lib/components/SkeletonIcon/SkeletonIcon.js +2 -3
- package/lib/components/SkeletonText/SkeletonText.d.ts +0 -6
- package/lib/components/SkeletonText/SkeletonText.js +0 -6
- package/lib/components/Slider/Slider.Skeleton.d.ts +9 -1
- package/lib/components/Slider/Slider.Skeleton.js +20 -4
- package/lib/components/Slider/Slider.d.ts +137 -25
- package/lib/components/Slider/Slider.js +778 -185
- package/lib/components/StructuredList/StructuredList.js +5 -2
- package/lib/components/Switch/Switch.js +3 -7
- package/lib/components/Tabs/Tabs.js +5 -2
- package/lib/components/Tag/Tag.js +4 -2
- package/lib/components/Text/Text.js +1 -1
- package/lib/components/Text/TextDirection.d.ts +1 -1
- package/lib/components/TextArea/TextArea.js +30 -34
- package/lib/components/TextInput/ControlledPasswordInput.js +12 -19
- package/lib/components/TextInput/TextInput.js +8 -3
- package/lib/components/Tile/Tile.js +4 -2
- package/lib/components/TileGroup/TileGroup.js +5 -4
- package/lib/components/Toggle/Toggle.js +4 -2
- package/lib/components/UIShell/Content.js +1 -4
- package/lib/components/UIShell/SideNav.d.ts +1 -1
- package/lib/components/UIShell/SideNavDetails.d.ts +32 -0
- package/lib/components/UIShell/SideNavDetails.js +1 -2
- package/lib/components/UIShell/SideNavDivider.d.ts +15 -0
- package/lib/components/UIShell/SideNavDivider.js +2 -2
- package/lib/components/UIShell/SideNavFooter.js +2 -5
- package/lib/components/UIShell/SideNavIcon.d.ts +25 -0
- package/lib/components/UIShell/SideNavIcon.js +4 -7
- package/lib/components/UIShell/SideNavSwitcher.d.ts +31 -0
- package/lib/components/UIShell/SideNavSwitcher.js +5 -4
- package/lib/index.js +2 -2
- package/lib/internal/FloatingMenu.js +2 -7
- package/lib/internal/Selection.js +0 -3
- package/lib/internal/noopFn.d.ts +7 -0
- package/lib/internal/noopFn.js +14 -0
- package/lib/internal/useNormalizedInputProps.js +6 -2
- package/package.json +9 -9
|
@@ -27,24 +27,6 @@ import TableToolbarAction from './TableToolbarAction';
|
|
|
27
27
|
import TableToolbarContent from './TableToolbarContent';
|
|
28
28
|
import TableToolbarSearch from './TableToolbarSearch';
|
|
29
29
|
import TableToolbarMenu from './TableToolbarMenu';
|
|
30
|
-
declare const dataTableDefaultProps: {
|
|
31
|
-
filterRows: ({ rowIds, headers, cellsById, inputValue, getCellId, }: {
|
|
32
|
-
rowIds: string[];
|
|
33
|
-
headers: any[];
|
|
34
|
-
cellsById: any;
|
|
35
|
-
inputValue: string;
|
|
36
|
-
getCellId: Function;
|
|
37
|
-
}) => string[];
|
|
38
|
-
locale: string;
|
|
39
|
-
overflowMenuOnHover: boolean;
|
|
40
|
-
size: string;
|
|
41
|
-
sortRow: (cellA: any, cellB: any, { sortDirection, sortStates, locale }: {
|
|
42
|
-
sortDirection: any;
|
|
43
|
-
sortStates: any;
|
|
44
|
-
locale: any;
|
|
45
|
-
}) => number;
|
|
46
|
-
translateWithId: (id: any) => string;
|
|
47
|
-
};
|
|
48
30
|
export type DataTableSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
49
31
|
export interface DataTableCell<T> {
|
|
50
32
|
id: string;
|
|
@@ -181,7 +163,7 @@ export interface DataTableProps<RowType, ColTypes extends any[]> {
|
|
|
181
163
|
children?: (renderProps: DataTableRenderProps<RowType, ColTypes>) => React.ReactElement;
|
|
182
164
|
experimentalAutoAlign?: boolean;
|
|
183
165
|
filterRows?: (filterRowsArgs: {
|
|
184
|
-
cellsById: Record<string, DataTableCell<
|
|
166
|
+
cellsById: Record<string, DataTableCell<ColTypes>>;
|
|
185
167
|
getCellId: (rowId: string, header: string) => string;
|
|
186
168
|
headers: Array<DataTableHeader>;
|
|
187
169
|
inputValue: string;
|
|
@@ -226,26 +208,8 @@ interface DataTableState<ColTypes extends any[]> {
|
|
|
226
208
|
* and updating the state of the single entity will cascade updates to the
|
|
227
209
|
* consumer.
|
|
228
210
|
*/
|
|
229
|
-
declare class DataTable<RowType, ColTypes extends any[]> extends React.Component<DataTableProps<RowType, ColTypes
|
|
211
|
+
declare class DataTable<RowType, ColTypes extends any[]> extends React.Component<DataTableProps<RowType, ColTypes>, DataTableState<ColTypes>> {
|
|
230
212
|
instanceId: number;
|
|
231
|
-
static defaultProps: {
|
|
232
|
-
filterRows: ({ rowIds, headers, cellsById, inputValue, getCellId, }: {
|
|
233
|
-
rowIds: string[];
|
|
234
|
-
headers: any[];
|
|
235
|
-
cellsById: any;
|
|
236
|
-
inputValue: string;
|
|
237
|
-
getCellId: Function;
|
|
238
|
-
}) => string[];
|
|
239
|
-
locale: string;
|
|
240
|
-
overflowMenuOnHover: boolean;
|
|
241
|
-
size: string;
|
|
242
|
-
sortRow: (cellA: any, cellB: any, { sortDirection, sortStates, locale }: {
|
|
243
|
-
sortDirection: any;
|
|
244
|
-
sortStates: any;
|
|
245
|
-
locale: any;
|
|
246
|
-
}) => number;
|
|
247
|
-
translateWithId: (id: any) => string;
|
|
248
|
-
};
|
|
249
213
|
static propTypes: {
|
|
250
214
|
/**
|
|
251
215
|
* Experimental property. Allows table to align cell contents to the top if there is text wrapping in the content. Might have performance issues, intended for smaller tables
|
|
@@ -488,7 +452,7 @@ declare class DataTable<RowType, ColTypes extends any[]> extends React.Component
|
|
|
488
452
|
*/
|
|
489
453
|
getTableProps: () => {
|
|
490
454
|
useZebraStyles: boolean | undefined;
|
|
491
|
-
size:
|
|
455
|
+
size: DataTableSize;
|
|
492
456
|
isSortable: boolean | undefined;
|
|
493
457
|
useStaticWidth: boolean | undefined;
|
|
494
458
|
stickyHeader: boolean | undefined;
|
|
@@ -14,12 +14,11 @@ var PropTypes = require('prop-types');
|
|
|
14
14
|
var React = require('react');
|
|
15
15
|
var isEqual = require('lodash.isequal');
|
|
16
16
|
var getDerivedStateFromProps = require('./state/getDerivedStateFromProps.js');
|
|
17
|
-
var sorting
|
|
17
|
+
var sorting = require('./state/sorting.js');
|
|
18
18
|
var cells = require('./tools/cells.js');
|
|
19
19
|
var denormalize = require('./tools/denormalize.js');
|
|
20
20
|
var events = require('../../tools/events.js');
|
|
21
21
|
var filter = require('./tools/filter.js');
|
|
22
|
-
var sorting = require('./tools/sorting.js');
|
|
23
22
|
var instanceId = require('./tools/instanceId.js');
|
|
24
23
|
var Table = require('./Table.js');
|
|
25
24
|
var TableActionList = require('./TableActionList.js');
|
|
@@ -70,14 +69,6 @@ const defaultTranslations = {
|
|
|
70
69
|
[translationKeys.unselectRow]: 'Unselect row'
|
|
71
70
|
};
|
|
72
71
|
const translateWithId = id => defaultTranslations[id];
|
|
73
|
-
const dataTableDefaultProps = {
|
|
74
|
-
filterRows: filter.defaultFilterRows,
|
|
75
|
-
locale: 'en',
|
|
76
|
-
overflowMenuOnHover: true,
|
|
77
|
-
size: 'lg',
|
|
78
|
-
sortRow: sorting.defaultSortRow,
|
|
79
|
-
translateWithId
|
|
80
|
-
};
|
|
81
72
|
/**
|
|
82
73
|
* Data Tables are used to represent a collection of resources, displaying a
|
|
83
74
|
* subset of their fields in columns, or headers. We prioritize direct updates
|
|
@@ -122,7 +113,7 @@ class DataTable extends React__default["default"].Component {
|
|
|
122
113
|
isSortable,
|
|
123
114
|
isSortHeader: sortHeaderKey === header.key,
|
|
124
115
|
onClick: event => {
|
|
125
|
-
const nextSortState = sorting
|
|
116
|
+
const nextSortState = sorting.getNextSortState(this.props, this.state, {
|
|
126
117
|
key: header.key
|
|
127
118
|
});
|
|
128
119
|
this.setState(nextSortState, () => {
|
|
@@ -149,7 +140,7 @@ class DataTable extends React__default["default"].Component {
|
|
|
149
140
|
...rest
|
|
150
141
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
151
142
|
const {
|
|
152
|
-
translateWithId: t
|
|
143
|
+
translateWithId: t = translateWithId
|
|
153
144
|
} = _this.props;
|
|
154
145
|
const {
|
|
155
146
|
isExpandedAll,
|
|
@@ -208,7 +199,7 @@ class DataTable extends React__default["default"].Component {
|
|
|
208
199
|
...rest
|
|
209
200
|
} = _ref2;
|
|
210
201
|
const {
|
|
211
|
-
translateWithId: t
|
|
202
|
+
translateWithId: t = translateWithId
|
|
212
203
|
} = this.props;
|
|
213
204
|
const translationKey = row.isExpanded ? translationKeys.collapseRow : translationKeys.expandRow;
|
|
214
205
|
return {
|
|
@@ -260,7 +251,7 @@ class DataTable extends React__default["default"].Component {
|
|
|
260
251
|
...rest
|
|
261
252
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
262
253
|
const {
|
|
263
|
-
translateWithId: t
|
|
254
|
+
translateWithId: t = translateWithId
|
|
264
255
|
} = _this.props;
|
|
265
256
|
|
|
266
257
|
// If we're given a row, return the selection state values for that row
|
|
@@ -327,11 +318,11 @@ class DataTable extends React__default["default"].Component {
|
|
|
327
318
|
_rollupPluginBabelHelpers.defineProperty(this, "getTableProps", () => {
|
|
328
319
|
const {
|
|
329
320
|
useZebraStyles,
|
|
330
|
-
size,
|
|
321
|
+
size = 'lg',
|
|
331
322
|
isSortable,
|
|
332
323
|
useStaticWidth,
|
|
333
324
|
stickyHeader,
|
|
334
|
-
overflowMenuOnHover,
|
|
325
|
+
overflowMenuOnHover = true,
|
|
335
326
|
experimentalAutoAlign
|
|
336
327
|
} = this.props;
|
|
337
328
|
return {
|
|
@@ -370,7 +361,10 @@ class DataTable extends React__default["default"].Component {
|
|
|
370
361
|
* @returns {Array<string>} the array of rowIds that are currently included through the filter
|
|
371
362
|
* */
|
|
372
363
|
_rollupPluginBabelHelpers.defineProperty(this, "getFilteredRowIds", () => {
|
|
373
|
-
const
|
|
364
|
+
const {
|
|
365
|
+
filterRows = filter.defaultFilterRows
|
|
366
|
+
} = this.props;
|
|
367
|
+
const filteredRowIds = typeof this.state.filterInputValue === 'string' ? filterRows({
|
|
374
368
|
rowIds: this.state.rowIds,
|
|
375
369
|
headers: this.props.headers,
|
|
376
370
|
cellsById: this.state.cellsById,
|
|
@@ -540,7 +534,7 @@ class DataTable extends React__default["default"].Component {
|
|
|
540
534
|
* @returns {Function}
|
|
541
535
|
*/
|
|
542
536
|
_rollupPluginBabelHelpers.defineProperty(this, "handleSortBy", headerKey => () => {
|
|
543
|
-
this.setState(state => sorting
|
|
537
|
+
this.setState(state => sorting.getNextSortState(this.props, state, {
|
|
544
538
|
key: headerKey
|
|
545
539
|
}));
|
|
546
540
|
});
|
|
@@ -593,10 +587,9 @@ class DataTable extends React__default["default"].Component {
|
|
|
593
587
|
return true;
|
|
594
588
|
}
|
|
595
589
|
render() {
|
|
596
|
-
// eslint-disable-next-line react/prop-types
|
|
597
590
|
const {
|
|
598
591
|
children,
|
|
599
|
-
filterRows,
|
|
592
|
+
filterRows = filter.defaultFilterRows,
|
|
600
593
|
headers,
|
|
601
594
|
render
|
|
602
595
|
} = this.props;
|
|
@@ -647,7 +640,6 @@ class DataTable extends React__default["default"].Component {
|
|
|
647
640
|
return null;
|
|
648
641
|
}
|
|
649
642
|
}
|
|
650
|
-
_rollupPluginBabelHelpers.defineProperty(DataTable, "defaultProps", dataTableDefaultProps);
|
|
651
643
|
_rollupPluginBabelHelpers.defineProperty(DataTable, "propTypes", {
|
|
652
644
|
/**
|
|
653
645
|
* Experimental property. Allows table to align cell contents to the top if there is text wrapping in the content. Might have performance issues, intended for smaller tables
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
11
|
|
|
12
|
+
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
|
12
13
|
var PropTypes = require('prop-types');
|
|
13
14
|
var React = require('react');
|
|
14
15
|
var iconsReact = require('@carbon/icons-react');
|
|
@@ -20,7 +21,17 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
20
21
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
21
22
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
22
23
|
|
|
23
|
-
const TableBatchAction =
|
|
24
|
+
const TableBatchAction = _ref => {
|
|
25
|
+
let {
|
|
26
|
+
renderIcon = iconsReact.AddFilled,
|
|
27
|
+
iconDescription = 'Add',
|
|
28
|
+
...props
|
|
29
|
+
} = _ref;
|
|
30
|
+
return /*#__PURE__*/React__default["default"].createElement(Button["default"], _rollupPluginBabelHelpers["extends"]({
|
|
31
|
+
renderIcon: renderIcon,
|
|
32
|
+
iconDescription: iconDescription
|
|
33
|
+
}, props));
|
|
34
|
+
};
|
|
24
35
|
TableBatchAction.propTypes = {
|
|
25
36
|
/**
|
|
26
37
|
* Specify if the button is an icon-only button
|
|
@@ -41,10 +52,6 @@ TableBatchAction.propTypes = {
|
|
|
41
52
|
*/
|
|
42
53
|
renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object])
|
|
43
54
|
};
|
|
44
|
-
TableBatchAction.defaultProps = {
|
|
45
|
-
renderIcon: iconsReact.AddFilled,
|
|
46
|
-
iconDescription: 'Add'
|
|
47
|
-
};
|
|
48
55
|
var TableBatchAction$1 = TableBatchAction;
|
|
49
56
|
|
|
50
57
|
exports["default"] = TableBatchAction$1;
|
|
@@ -80,9 +80,7 @@ const TableBatchActions = _ref => {
|
|
|
80
80
|
className: batchSummaryClasses
|
|
81
81
|
}, /*#__PURE__*/React__default["default"].createElement("p", {
|
|
82
82
|
className: `${prefix}--batch-summary__para`
|
|
83
|
-
}, /*#__PURE__*/React__default["default"].createElement(Text.Text, {
|
|
84
|
-
as: "span"
|
|
85
|
-
}, totalSelected > 1 || totalSelected === 0 ? t('carbon.table.batch.items.selected', {
|
|
83
|
+
}, /*#__PURE__*/React__default["default"].createElement(Text.Text, null, totalSelected > 1 || totalSelected === 0 ? t('carbon.table.batch.items.selected', {
|
|
86
84
|
totalSelected
|
|
87
85
|
}) : t('carbon.table.batch.item.selected', {
|
|
88
86
|
totalSelected
|
|
@@ -136,8 +134,5 @@ TableBatchActions.propTypes = {
|
|
|
136
134
|
*/
|
|
137
135
|
translateWithId: PropTypes__default["default"].func
|
|
138
136
|
};
|
|
139
|
-
TableBatchActions.defaultProps = {
|
|
140
|
-
translateWithId
|
|
141
|
-
};
|
|
142
137
|
|
|
143
138
|
exports["default"] = TableBatchActions;
|
|
@@ -25,6 +25,7 @@ const TableBody = _ref => {
|
|
|
25
25
|
...rest
|
|
26
26
|
} = _ref;
|
|
27
27
|
return /*#__PURE__*/React__default["default"].createElement("tbody", _rollupPluginBabelHelpers["extends"]({
|
|
28
|
+
"aria-live": 'polite' ,
|
|
28
29
|
className: className
|
|
29
30
|
}, rest), children);
|
|
30
31
|
};
|
|
@@ -36,8 +37,5 @@ TableBody.propTypes = {
|
|
|
36
37
|
children: PropTypes__default["default"].node,
|
|
37
38
|
className: PropTypes__default["default"].string
|
|
38
39
|
};
|
|
39
|
-
TableBody.defaultProps = {
|
|
40
|
-
'aria-live': 'polite'
|
|
41
|
-
};
|
|
42
40
|
|
|
43
41
|
exports["default"] = TableBody;
|
|
@@ -56,12 +56,12 @@ const TableHeader = /*#__PURE__*/React__default["default"].forwardRef(function T
|
|
|
56
56
|
className: headerClassName,
|
|
57
57
|
children,
|
|
58
58
|
colSpan,
|
|
59
|
-
isSortable,
|
|
59
|
+
isSortable = false,
|
|
60
60
|
isSortHeader,
|
|
61
61
|
onClick,
|
|
62
62
|
scope = defaultScope,
|
|
63
63
|
sortDirection,
|
|
64
|
-
translateWithId: t,
|
|
64
|
+
translateWithId: t = translateWithId,
|
|
65
65
|
id,
|
|
66
66
|
...rest
|
|
67
67
|
} = _ref;
|
|
@@ -154,7 +154,7 @@ TableHeader.propTypes = {
|
|
|
154
154
|
* attribute at the following URL:
|
|
155
155
|
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-scope
|
|
156
156
|
*/
|
|
157
|
-
scope: PropTypes__default["default"].string
|
|
157
|
+
scope: PropTypes__default["default"].string,
|
|
158
158
|
/**
|
|
159
159
|
* Specify which direction we are currently sorting by, should be one of DESC,
|
|
160
160
|
* NONE, or ASC.
|
|
@@ -167,11 +167,6 @@ TableHeader.propTypes = {
|
|
|
167
167
|
*/
|
|
168
168
|
translateWithId: PropTypes__default["default"].func
|
|
169
169
|
};
|
|
170
|
-
TableHeader.defaultProps = {
|
|
171
|
-
isSortable: false,
|
|
172
|
-
scope: defaultScope,
|
|
173
|
-
translateWithId
|
|
174
|
-
};
|
|
175
170
|
TableHeader.translationKeys = Object.values(translationKeys);
|
|
176
171
|
TableHeader.displayName = 'TableHeader';
|
|
177
172
|
|
|
@@ -23,7 +23,7 @@ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
|
23
23
|
|
|
24
24
|
const TableSelectAll = _ref => {
|
|
25
25
|
let {
|
|
26
|
-
ariaLabel,
|
|
26
|
+
ariaLabel = 'Select all rows in the table',
|
|
27
27
|
checked,
|
|
28
28
|
id,
|
|
29
29
|
indeterminate,
|
|
@@ -81,8 +81,5 @@ TableSelectAll.propTypes = {
|
|
|
81
81
|
*/
|
|
82
82
|
onSelect: PropTypes__default["default"].func.isRequired
|
|
83
83
|
};
|
|
84
|
-
TableSelectAll.defaultProps = {
|
|
85
|
-
ariaLabel: 'Select all rows in the table'
|
|
86
|
-
};
|
|
87
84
|
|
|
88
85
|
exports["default"] = TableSelectAll;
|
|
@@ -6,6 +6,16 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
export interface TableToolbarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
9
|
+
/**
|
|
10
|
+
* Specify a label to be read by screen readers on the container node
|
|
11
|
+
* 'aria-label' of the TableToolbar component.
|
|
12
|
+
*/
|
|
13
|
+
['aria-label']?: string;
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated please use `aria-label` instead.
|
|
16
|
+
* 'aria-label' of the TableToolbar component.
|
|
17
|
+
*/
|
|
18
|
+
ariaLabel?: string;
|
|
9
19
|
/**
|
|
10
20
|
* Pass in the children that will be rendered inside the TableToolbar
|
|
11
21
|
*/
|
|
@@ -14,7 +14,7 @@ var cx = require('classnames');
|
|
|
14
14
|
var PropTypes = require('prop-types');
|
|
15
15
|
var React = require('react');
|
|
16
16
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
17
|
-
var
|
|
17
|
+
var deprecate = require('../../prop-types/deprecate.js');
|
|
18
18
|
|
|
19
19
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
20
20
|
|
|
@@ -24,6 +24,8 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
|
24
24
|
|
|
25
25
|
const TableToolbar = _ref => {
|
|
26
26
|
let {
|
|
27
|
+
['aria-label']: ariaLabel = 'data table toolbar',
|
|
28
|
+
ariaLabel: deprecatedAriaLabel,
|
|
27
29
|
children,
|
|
28
30
|
size,
|
|
29
31
|
...rest
|
|
@@ -33,15 +35,24 @@ const TableToolbar = _ref => {
|
|
|
33
35
|
[`${prefix}--table-toolbar`]: true,
|
|
34
36
|
[`${prefix}--table-toolbar--${size}`]: size
|
|
35
37
|
});
|
|
36
|
-
return /*#__PURE__*/React__default["default"].createElement("section", _rollupPluginBabelHelpers["extends"]({
|
|
38
|
+
return /*#__PURE__*/React__default["default"].createElement("section", _rollupPluginBabelHelpers["extends"]({
|
|
39
|
+
"aria-label": deprecatedAriaLabel || ariaLabel
|
|
40
|
+
}, rest, {
|
|
37
41
|
className: className
|
|
38
42
|
}), children);
|
|
39
43
|
};
|
|
40
44
|
TableToolbar.propTypes = {
|
|
41
45
|
/**
|
|
42
|
-
*
|
|
46
|
+
* 'aria-label' of the TableToolbar component.
|
|
47
|
+
* Specify a label to be read by screen readers on the container node
|
|
43
48
|
*/
|
|
44
|
-
|
|
49
|
+
['aria-label']: PropTypes__default["default"].string,
|
|
50
|
+
/**
|
|
51
|
+
* Deprecated, please use `aria-label` instead.
|
|
52
|
+
* Specify a label to be read by screen readers on the container node.
|
|
53
|
+
* 'aria-label' of the TableToolbar component.
|
|
54
|
+
*/
|
|
55
|
+
ariaLabel: deprecate["default"](PropTypes__default["default"].string, 'This prop syntax has been deprecated. Please use the new `aria-label`.'),
|
|
45
56
|
/**
|
|
46
57
|
* Pass in the children that will be rendered inside the TableToolbar
|
|
47
58
|
*/
|
|
@@ -51,8 +62,5 @@ TableToolbar.propTypes = {
|
|
|
51
62
|
*/
|
|
52
63
|
size: PropTypes__default["default"].oneOf(['sm', 'lg'])
|
|
53
64
|
};
|
|
54
|
-
TableToolbar.defaultProps = {
|
|
55
|
-
'aria-label': 'data table toolbar'
|
|
56
|
-
};
|
|
57
65
|
|
|
58
66
|
exports["default"] = TableToolbar;
|
|
@@ -27,7 +27,7 @@ const defaultIconDescription = 'Settings';
|
|
|
27
27
|
const TableToolbarMenu = _ref => {
|
|
28
28
|
let {
|
|
29
29
|
className,
|
|
30
|
-
renderIcon,
|
|
30
|
+
renderIcon = iconsReact.Settings,
|
|
31
31
|
iconDescription = defaultIconDescription,
|
|
32
32
|
children,
|
|
33
33
|
...rest
|
|
@@ -43,10 +43,6 @@ const TableToolbarMenu = _ref => {
|
|
|
43
43
|
flipped: true
|
|
44
44
|
}, rest), children);
|
|
45
45
|
};
|
|
46
|
-
TableToolbarMenu.defaultProps = {
|
|
47
|
-
renderIcon: iconsReact.Settings,
|
|
48
|
-
iconDescription: defaultIconDescription
|
|
49
|
-
};
|
|
50
46
|
TableToolbarMenu.propTypes = {
|
|
51
47
|
children: PropTypes__default["default"].node.isRequired,
|
|
52
48
|
/**
|
|
@@ -56,7 +52,7 @@ TableToolbarMenu.propTypes = {
|
|
|
56
52
|
/**
|
|
57
53
|
* The description of the menu icon.
|
|
58
54
|
*/
|
|
59
|
-
iconDescription: PropTypes__default["default"].string
|
|
55
|
+
iconDescription: PropTypes__default["default"].string,
|
|
60
56
|
/**
|
|
61
57
|
* Optional prop to allow overriding the default menu icon
|
|
62
58
|
*/
|
|
@@ -83,7 +83,7 @@ export interface TableToolbarSearchProps {
|
|
|
83
83
|
/**
|
|
84
84
|
* Provide custom text for the component for each translation id
|
|
85
85
|
*/
|
|
86
|
-
translateWithId
|
|
86
|
+
translateWithId?: (id: string) => string;
|
|
87
87
|
}
|
|
88
88
|
declare const TableToolbarSearch: {
|
|
89
89
|
({ className, searchContainerClass, onChange: onChangeProp, onClear, translateWithId: t, placeholder, labelText, expanded: expandedProp, defaultExpanded, defaultValue, disabled, onExpand, persistent, id, onBlur, onFocus, size, tabIndex, ...rest }: TableToolbarSearchProps): JSX.Element;
|
|
@@ -164,13 +164,7 @@ declare const TableToolbarSearch: {
|
|
|
164
164
|
/**
|
|
165
165
|
* Provide custom text for the component for each translation id
|
|
166
166
|
*/
|
|
167
|
-
translateWithId: PropTypes.
|
|
168
|
-
};
|
|
169
|
-
defaultProps: {
|
|
170
|
-
tabIndex: string;
|
|
171
|
-
translateWithId: (id: string) => string;
|
|
172
|
-
persistent: boolean;
|
|
173
|
-
onClear: () => void;
|
|
167
|
+
translateWithId: PropTypes.Requireable<(...args: any[]) => any>;
|
|
174
168
|
};
|
|
175
169
|
};
|
|
176
170
|
export default TableToolbarSearch;
|
|
@@ -17,6 +17,7 @@ var Search = require('../Search/Search.js');
|
|
|
17
17
|
require('../Search/Search.Skeleton.js');
|
|
18
18
|
var instanceId = require('./tools/instanceId.js');
|
|
19
19
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
20
|
+
var noopFn = require('../../internal/noopFn.js');
|
|
20
21
|
|
|
21
22
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
22
23
|
|
|
@@ -37,8 +38,8 @@ const TableToolbarSearch = _ref => {
|
|
|
37
38
|
className,
|
|
38
39
|
searchContainerClass,
|
|
39
40
|
onChange: onChangeProp,
|
|
40
|
-
onClear,
|
|
41
|
-
translateWithId: t,
|
|
41
|
+
onClear = noopFn.noopFn,
|
|
42
|
+
translateWithId: t = translateWithId,
|
|
42
43
|
placeholder,
|
|
43
44
|
labelText,
|
|
44
45
|
expanded: expandedProp,
|
|
@@ -46,12 +47,12 @@ const TableToolbarSearch = _ref => {
|
|
|
46
47
|
defaultValue,
|
|
47
48
|
disabled,
|
|
48
49
|
onExpand,
|
|
49
|
-
persistent,
|
|
50
|
+
persistent = false,
|
|
50
51
|
id,
|
|
51
52
|
onBlur,
|
|
52
53
|
onFocus,
|
|
53
54
|
size = 'lg',
|
|
54
|
-
tabIndex,
|
|
55
|
+
tabIndex = '0',
|
|
55
56
|
...rest
|
|
56
57
|
} = _ref;
|
|
57
58
|
const {
|
|
@@ -198,13 +199,7 @@ TableToolbarSearch.propTypes = {
|
|
|
198
199
|
/**
|
|
199
200
|
* Provide custom text for the component for each translation id
|
|
200
201
|
*/
|
|
201
|
-
translateWithId: PropTypes__default["default"].func
|
|
202
|
-
};
|
|
203
|
-
TableToolbarSearch.defaultProps = {
|
|
204
|
-
tabIndex: '0',
|
|
205
|
-
translateWithId,
|
|
206
|
-
persistent: false,
|
|
207
|
-
onClear: () => {}
|
|
202
|
+
translateWithId: PropTypes__default["default"].func
|
|
208
203
|
};
|
|
209
204
|
|
|
210
205
|
exports["default"] = TableToolbarSearch;
|
|
@@ -24,8 +24,8 @@ export type CalRef = {
|
|
|
24
24
|
};
|
|
25
25
|
interface DatePickerProps extends Omit<ReactAttr<HTMLDivElement>, ExcludedAttributes> {
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
27
|
+
* Flatpickr prop passthrough enables direct date input, and when set to false,
|
|
28
|
+
* we must clear dates manually by resetting the value prop to empty string making it a controlled input.
|
|
29
29
|
*/
|
|
30
30
|
allowInput?: boolean;
|
|
31
31
|
/**
|
|
@@ -87,11 +87,11 @@ interface DatePickerProps extends Omit<ReactAttr<HTMLDivElement>, ExcludedAttrib
|
|
|
87
87
|
/**
|
|
88
88
|
* The maximum date that a user can pick to.
|
|
89
89
|
*/
|
|
90
|
-
maxDate?: string;
|
|
90
|
+
maxDate?: string | number;
|
|
91
91
|
/**
|
|
92
92
|
* The minimum date that a user can start picking from.
|
|
93
93
|
*/
|
|
94
|
-
minDate?: string;
|
|
94
|
+
minDate?: string | number;
|
|
95
95
|
/**
|
|
96
96
|
* The `change` event handler.
|
|
97
97
|
*/
|
|
@@ -435,6 +435,11 @@ const DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function Da
|
|
|
435
435
|
calendarRef.current.set('minDate', minDate);
|
|
436
436
|
}
|
|
437
437
|
}, [minDate]);
|
|
438
|
+
React.useEffect(() => {
|
|
439
|
+
if (calendarRef?.current?.set) {
|
|
440
|
+
calendarRef.current.set('allowInput', allowInput);
|
|
441
|
+
}
|
|
442
|
+
}, [allowInput]);
|
|
438
443
|
React.useEffect(() => {
|
|
439
444
|
if (calendarRef?.current?.set) {
|
|
440
445
|
calendarRef.current.set('maxDate', maxDate);
|
|
@@ -497,8 +502,8 @@ const DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function Da
|
|
|
497
502
|
});
|
|
498
503
|
DatePicker.propTypes = {
|
|
499
504
|
/**
|
|
500
|
-
*
|
|
501
|
-
*
|
|
505
|
+
* Flatpickr prop passthrough enables direct date input, and when set to false,
|
|
506
|
+
* we must clear dates manually by resetting the value prop to empty string making it a controlled input.
|
|
502
507
|
*/
|
|
503
508
|
allowInput: PropTypes__default["default"].bool,
|
|
504
509
|
/**
|
|
@@ -682,11 +687,11 @@ DatePicker.propTypes = {
|
|
|
682
687
|
/**
|
|
683
688
|
* The maximum date that a user can pick to.
|
|
684
689
|
*/
|
|
685
|
-
maxDate: PropTypes__default["default"].string,
|
|
690
|
+
maxDate: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]),
|
|
686
691
|
/**
|
|
687
692
|
* The minimum date that a user can start picking from.
|
|
688
693
|
*/
|
|
689
|
-
minDate: PropTypes__default["default"].string,
|
|
694
|
+
minDate: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]),
|
|
690
695
|
/**
|
|
691
696
|
* The `change` event handler.
|
|
692
697
|
* `(dates: Date[], dStr: string, fp: Instance, data?: any):void;`
|
|
@@ -43,6 +43,12 @@ var carbonFlatpickrFixEventsPlugin = (config => fp => {
|
|
|
43
43
|
} else if (match.match(event, keys.ArrowDown)) {
|
|
44
44
|
event.preventDefault();
|
|
45
45
|
fp.open();
|
|
46
|
+
} else if (!fp.config.allowInput) {
|
|
47
|
+
// We override the default behaviour of Flatpickr, ideally when allowInput is set to false,
|
|
48
|
+
// the Delete/Backspace button clears all of the date, which we don't want, hence
|
|
49
|
+
// we stop event bubbling and the default Flatpickr's onChange behaviour here itself
|
|
50
|
+
event.stopPropagation();
|
|
51
|
+
event.preventDefault();
|
|
46
52
|
}
|
|
47
53
|
}
|
|
48
54
|
};
|