@spothero/ui 15.10.9 → 16.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +1 -1
- package/babel.config.js +1 -0
- package/dex.config.js +1 -1
- package/jest.config.json +4 -2
- package/package.json +11 -26
- package/v2/index.js +1 -1
- package/v2/index.js.map +1 -1
- package/backlog/Alert/Alert.js +0 -37
- package/backlog/AutoSuggestInput/AutoSuggestInput.js +0 -474
- package/backlog/AutoSuggestInput/AutoSuggestItem.js +0 -99
- package/backlog/AutoSuggestInput/AutoSuggestList.js +0 -126
- package/backlog/Badge/Badge.js +0 -28
- package/backlog/Chart/Chart.js +0 -211
- package/backlog/Checkbox/Checkbox.js +0 -167
- package/backlog/DateTime/DatePicker.js +0 -279
- package/backlog/DateTime/DatePickerCalendar.js +0 -199
- package/backlog/DateTime/DatePickerCalendarNavigation.js +0 -102
- package/backlog/DateTime/DatePickerCalendarWithRange.js +0 -241
- package/backlog/DateTime/DateTimePicker.js +0 -216
- package/backlog/DateTime/DateTimeRangePicker.js +0 -530
- package/backlog/DateTime/TimePicker.js +0 -180
- package/backlog/DateTime/date-time-assertions.js +0 -66
- package/backlog/DateTime/index.js +0 -55
- package/backlog/ErrorBoundary/ErrorBoundary.js +0 -125
- package/backlog/Flyout/Flyout.js +0 -198
- package/backlog/Form/Form.js +0 -193
- package/backlog/Form/FormElementError.js +0 -24
- package/backlog/Form/FormGroup.js +0 -30
- package/backlog/Form/FormGroupError.js +0 -28
- package/backlog/Form/index.js +0 -39
- package/backlog/GooglePlacesSearchInput/GooglePlacesSearchInput.js +0 -253
- package/backlog/GooglePlacesSearchInput/PoweredByGoogle.js +0 -38
- package/backlog/GooglePlacesSearchInput/index.js +0 -23
- package/backlog/HorizontalRule/HorizontalRule.js +0 -30
- package/backlog/Label/Label.js +0 -31
- package/backlog/Notification/Notification.js +0 -178
- package/backlog/Notification/NotificationContainer.js +0 -131
- package/backlog/Notification/NotificationPropTypes.js +0 -37
- package/backlog/Notification/index.js +0 -23
- package/backlog/PasswordControl/PasswordControl.js +0 -201
- package/backlog/Portal/Portal.js +0 -110
- package/backlog/PulseLoader/PulseLoader.js +0 -62
- package/backlog/Radio/Radio.js +0 -135
- package/backlog/Radio/RadioGroup.js +0 -123
- package/backlog/Radio/index.js +0 -23
- package/backlog/RenderInBody/RenderInBody.js +0 -103
- package/backlog/Select/Select.js +0 -275
- package/backlog/Select/SelectItemPropTypes.js +0 -32
- package/backlog/Select/index.js +0 -23
- package/backlog/SelectControlled/SelectControlled.js +0 -270
- package/backlog/SelectControlled/index.js +0 -15
- package/backlog/Sprite/Sprite.js +0 -24
- package/backlog/Tabs/Tab.js +0 -94
- package/backlog/Tabs/TabContent.js +0 -56
- package/backlog/Tabs/TabNavigation.js +0 -108
- package/backlog/Tabs/TabPanel.js +0 -29
- package/backlog/Tabs/Tabs.js +0 -126
- package/backlog/Tabs/index.js +0 -47
- package/backlog/TextArea/TextArea.js +0 -155
- package/backlog/TextInput/TextInput.js +0 -230
- package/backlog/TextInput/TextInputPropTypes.js +0 -114
- package/backlog/TextInput/index.js +0 -23
- package/backlog/Tooltip/Tooltip.js +0 -249
- package/backlog/index.js +0 -393
- package/backlog/v1/components/Button/Button.js +0 -64
- package/backlog/v1/components/Button/button-props.js +0 -48
- package/backlog/v1/components/Image/Image.js +0 -193
- package/backlog/v1/components/Loader/Loader.js +0 -51
- package/backlog/v1/components/Modal/Modal.js +0 -325
- package/backlog/v1/components/Modal/ModalContent.js +0 -154
- package/backlog/v1/components/Modal/ModalFooter.js +0 -89
- package/backlog/v1/components/Modal/index.js +0 -31
- package/backlog/v1/components/Panel/Panel.js +0 -209
- package/backlog/v1/components/Table/Table.js +0 -336
- package/backlog/v1/components/Table/TableCell.js +0 -28
- package/backlog/v1/components/Table/TableCellPropTypes.js +0 -22
- package/backlog/v1/components/Table/TableControls.js +0 -56
- package/backlog/v1/components/Table/TableFooter.js +0 -63
- package/backlog/v1/components/Table/TableHeading.js +0 -126
- package/backlog/v1/components/Table/TableHeadingPropTypes.js +0 -35
- package/backlog/v1/components/Table/TableSortSelector.js +0 -125
- package/backlog/v1/components/Table/TableSortType.js +0 -11
- package/backlog/v1/components/Table/index.js +0 -47
- package/backlog/v1/components/TextButton/TextButton.js +0 -74
- package/backlog/v1/components/index.js +0 -75
- package/backlog/v1/utils/deprecate.js +0 -61
- package/styles/Alert/_Alert.scss +0 -51
- package/styles/AutoSuggestInput/_AutoSuggestInput.scss +0 -116
- package/styles/Badge/_Badge.scss +0 -33
- package/styles/Chart/_Chart.scss +0 -105
- package/styles/Chart/_chartist-settings.scss +0 -131
- package/styles/Chart/_chartist.scss +0 -295
- package/styles/Checkbox/_Checkbox.scss +0 -173
- package/styles/DateTime/_DatePicker.scss +0 -61
- package/styles/DateTime/_DatePickerCalendar.scss +0 -159
- package/styles/DateTime/_DateTime.scss +0 -4
- package/styles/DateTime/_DateTimePicker.scss +0 -46
- package/styles/DateTime/_TimePicker.scss +0 -30
- package/styles/ErrorBoundary/_ErrorBoundary.scss +0 -18
- package/styles/Flyout/_Flyout.scss +0 -73
- package/styles/Form/_Form.scss +0 -53
- package/styles/GooglePlacesSearchInput/_GooglePlacesSearchInput.scss +0 -3
- package/styles/GooglePlacesSearchInput/_PoweredByGoogle.scss +0 -21
- package/styles/HorizontalRule/_HorizontalRule.scss +0 -48
- package/styles/Label/_Label.scss +0 -6
- package/styles/Notification/_Notification.scss +0 -113
- package/styles/PasswordControl/_PasswordControl.scss +0 -86
- package/styles/PulseLoader/_PulseLoader.scss +0 -60
- package/styles/Radio/_Radio.scss +0 -93
- package/styles/Select/_Select.scss +0 -94
- package/styles/Tabs/_Tabs.scss +0 -57
- package/styles/TextArea/_TextArea.scss +0 -26
- package/styles/TextInput/_TextInput.scss +0 -43
- package/styles/Tooltip/_Tooltip.scss +0 -108
- package/styles/_index.scss +0 -34
- package/styles/common/sass/_control-sizing.scss +0 -5
- package/styles/common/sass/_disable-scrolling.scss +0 -7
- package/styles/common/sass/_forms.scss +0 -72
- package/styles/index.js +0 -50
- package/styles/v1/components/Button/Button.jsx +0 -48
- package/styles/v1/components/Button/Button.spec.js +0 -76
- package/styles/v1/components/Button/_Button.scss +0 -178
- package/styles/v1/components/Button/button-props.js +0 -30
- package/styles/v1/components/Button/stories/button.js +0 -20
- package/styles/v1/components/Button/stories/index.stories.js +0 -92
- package/styles/v1/components/Button/stories/overview.js +0 -87
- package/styles/v1/components/Button/stories/types.js +0 -31
- package/styles/v1/components/Image/Image.jsx +0 -175
- package/styles/v1/components/Image/Image.spec.js +0 -113
- package/styles/v1/components/Image/_Image.scss +0 -24
- package/styles/v1/components/Image/stories/Cloudinary.stories.js +0 -39
- package/styles/v1/components/Image/stories/Display.stories.js +0 -92
- package/styles/v1/components/Loader/Loader.jsx +0 -54
- package/styles/v1/components/Loader/Loader.spec.js +0 -67
- package/styles/v1/components/Loader/_Loader.scss +0 -18
- package/styles/v1/components/Loader/stories/Display.stories.js +0 -55
- package/styles/v1/components/Modal/Modal.jsx +0 -315
- package/styles/v1/components/Modal/Modal.spec.js +0 -293
- package/styles/v1/components/Modal/ModalContent.jsx +0 -126
- package/styles/v1/components/Modal/ModalFooter.jsx +0 -53
- package/styles/v1/components/Modal/_Modal.scss +0 -262
- package/styles/v1/components/Modal/index.js +0 -3
- package/styles/v1/components/Modal/stories/Content.stories.js +0 -314
- package/styles/v1/components/Modal/stories/Display.stories.js +0 -208
- package/styles/v1/components/Modal/stories/Methods.stories.js +0 -44
- package/styles/v1/components/Modal/stories/Width.stories.js +0 -82
- package/styles/v1/components/Modal/stories/helpers/ReduxConsumer.jsx +0 -21
- package/styles/v1/components/Panel/Panel.jsx +0 -202
- package/styles/v1/components/Panel/Panel.spec.js +0 -196
- package/styles/v1/components/Panel/_Panel.scss +0 -55
- package/styles/v1/components/Panel/stories/Display.stories.js +0 -82
- package/styles/v1/components/Panel/stories/Methods.stories.js +0 -76
- package/styles/v1/components/Table/Table.jsx +0 -367
- package/styles/v1/components/Table/Table.spec.js +0 -526
- package/styles/v1/components/Table/TableCell.jsx +0 -17
- package/styles/v1/components/Table/TableCellPropTypes.js +0 -10
- package/styles/v1/components/Table/TableControls.jsx +0 -61
- package/styles/v1/components/Table/TableFooter.jsx +0 -72
- package/styles/v1/components/Table/TableHeading.jsx +0 -58
- package/styles/v1/components/Table/TableHeadingPropTypes.js +0 -20
- package/styles/v1/components/Table/TableSortSelector.jsx +0 -63
- package/styles/v1/components/Table/TableSortType.js +0 -4
- package/styles/v1/components/Table/_Table.scss +0 -263
- package/styles/v1/components/Table/index.js +0 -5
- package/styles/v1/components/Table/stories/Display.stories.js +0 -194
- package/styles/v1/components/Table/stories/Methods.stories.js +0 -141
- package/styles/v1/components/Table/stories/helpers/TableCellEmail.jsx +0 -25
- package/styles/v1/components/Table/stories/helpers/TableCustomRow.jsx +0 -35
- package/styles/v1/components/Table/stories/helpers/TableHeadingEmail.jsx +0 -20
- package/styles/v1/components/Table/stories/helpers/table-data.js +0 -26
- package/styles/v1/components/Table/stories/helpers/table-headers.js +0 -14
- package/styles/v1/components/TextButton/TextButton.jsx +0 -78
- package/styles/v1/components/TextButton/TextButton.spec.js +0 -95
- package/styles/v1/components/TextButton/_TextButton.scss +0 -114
- package/styles/v1/components/TextButton/stories/Display.stories.js +0 -46
- package/styles/v1/components/index.js +0 -7
- package/styles/v1/utils/deprecate.js +0 -45
- package/styles/v2/components/Accordion/Accordion.jsx +0 -1
- package/styles/v2/components/Accordion/Accordion.stories.js +0 -103
- package/styles/v2/components/Accordion/index.js +0 -7
- package/styles/v2/components/Accordion/styles/button.js +0 -16
- package/styles/v2/components/Accordion/styles/container.js +0 -9
- package/styles/v2/components/Accordion/styles/index.js +0 -19
- package/styles/v2/components/Accordion/styles/panel.js +0 -7
- package/styles/v2/components/Alert/Alert.jsx +0 -121
- package/styles/v2/components/Alert/Alert.stories.js +0 -50
- package/styles/v2/components/Alert/index.js +0 -1
- package/styles/v2/components/Alert/styles/index.js +0 -166
- package/styles/v2/components/AutoSuggestSelect/AutoSuggestSelect.jsx +0 -187
- package/styles/v2/components/AutoSuggestSelect/index.js +0 -1
- package/styles/v2/components/Badge/Badge.jsx +0 -1
- package/styles/v2/components/Badge/Badge.stories.js +0 -32
- package/styles/v2/components/Badge/styles/index.js +0 -29
- package/styles/v2/components/Button/Button.jsx +0 -31
- package/styles/v2/components/Button/Button.spec.js +0 -29
- package/styles/v2/components/Button/Button.styles.js +0 -156
- package/styles/v2/components/Button/button-props.js +0 -66
- package/styles/v2/components/Button/index.js +0 -2
- package/styles/v2/components/Button/stories/button.js +0 -59
- package/styles/v2/components/Button/stories/index.stories.js +0 -82
- package/styles/v2/components/Button/stories/overview.js +0 -73
- package/styles/v2/components/Card/Card.jsx +0 -16
- package/styles/v2/components/Card/Card.stories.js +0 -33
- package/styles/v2/components/Checkbox/Checkbox.jsx +0 -1
- package/styles/v2/components/Checkbox/Checkbox.stories.js +0 -41
- package/styles/v2/components/Checkbox/index.js +0 -1
- package/styles/v2/components/Checkbox/styles/index.js +0 -31
- package/styles/v2/components/Container/Container.jsx +0 -10
- package/styles/v2/components/Container/Container.stories.js +0 -52
- package/styles/v2/components/Container/Container.styles.js +0 -11
- package/styles/v2/components/Divider/Divider.jsx +0 -31
- package/styles/v2/components/Divider/Divider.stories.js +0 -41
- package/styles/v2/components/Divider/Divider.styles.js +0 -15
- package/styles/v2/components/FormControl/FormControl.jsx +0 -77
- package/styles/v2/components/Grid/Grid.jsx +0 -25
- package/styles/v2/components/Grid/Grid.stories.js +0 -128
- package/styles/v2/components/Grid/Grid.styles.js +0 -12
- package/styles/v2/components/Grid/GridItem.jsx +0 -10
- package/styles/v2/components/Grid/GridItem.styles.js +0 -8
- package/styles/v2/components/Grid/index.js +0 -2
- package/styles/v2/components/Heading/Heading.jsx +0 -23
- package/styles/v2/components/Heading/Heading.stories.js +0 -40
- package/styles/v2/components/Heading/Heading.styles.js +0 -61
- package/styles/v2/components/Icon/Icon.jsx +0 -1
- package/styles/v2/components/Icon/Icon.stories.js +0 -38
- package/styles/v2/components/Image/Image.jsx +0 -97
- package/styles/v2/components/Image/Image.spec.js +0 -100
- package/styles/v2/components/Image/Image.stories.js +0 -142
- package/styles/v2/components/Input/Input.jsx +0 -51
- package/styles/v2/components/Input/Input.stories.js +0 -60
- package/styles/v2/components/Input/index.js +0 -1
- package/styles/v2/components/Input/styles/index.js +0 -49
- package/styles/v2/components/Link/Link.jsx +0 -1
- package/styles/v2/components/Link/Link.stories.js +0 -82
- package/styles/v2/components/Link/Link.styles.js +0 -38
- package/styles/v2/components/List/List.jsx +0 -57
- package/styles/v2/components/List/List.stories.js +0 -96
- package/styles/v2/components/List/index.js +0 -2
- package/styles/v2/components/List/styles/index.js +0 -12
- package/styles/v2/components/List/styles/item.styles.js +0 -5
- package/styles/v2/components/Loader/Loader.jsx +0 -75
- package/styles/v2/components/Loader/Loader.stories.js +0 -145
- package/styles/v2/components/Modal/Modal.jsx +0 -71
- package/styles/v2/components/Modal/Modal.stories.js +0 -278
- package/styles/v2/components/Modal/index.js +0 -1
- package/styles/v2/components/Modal/styles/body.js +0 -24
- package/styles/v2/components/Modal/styles/closeButton.js +0 -17
- package/styles/v2/components/Modal/styles/dialog.js +0 -10
- package/styles/v2/components/Modal/styles/dialogContainer.js +0 -10
- package/styles/v2/components/Modal/styles/footer.js +0 -5
- package/styles/v2/components/Modal/styles/header.js +0 -7
- package/styles/v2/components/Modal/styles/index.js +0 -47
- package/styles/v2/components/Modal/styles/overlay.js +0 -4
- package/styles/v2/components/Popover/Popover.jsx +0 -28
- package/styles/v2/components/Popover/Popover.stories.js +0 -113
- package/styles/v2/components/Popover/PopoverArrow.jsx +0 -10
- package/styles/v2/components/Popover/PopoverCloseButton.jsx +0 -10
- package/styles/v2/components/Popover/PopoverContent.jsx +0 -41
- package/styles/v2/components/Popover/index.js +0 -3
- package/styles/v2/components/Popover/styles/index.js +0 -21
- package/styles/v2/components/Popover/styles/popover-arrow.js +0 -5
- package/styles/v2/components/Popover/styles/popover-body.js +0 -5
- package/styles/v2/components/Popover/styles/popover-close-button.js +0 -17
- package/styles/v2/components/Popover/styles/popover-content.js +0 -16
- package/styles/v2/components/Popover/styles/popover-header.js +0 -6
- package/styles/v2/components/Popover/styles/popper.js +0 -5
- package/styles/v2/components/Radio/Radio.jsx +0 -50
- package/styles/v2/components/Radio/Radio.stories.js +0 -155
- package/styles/v2/components/Radio/RadioGroup.jsx +0 -69
- package/styles/v2/components/Radio/index.js +0 -2
- package/styles/v2/components/Radio/styles/index.js +0 -52
- package/styles/v2/components/Select/Select.jsx +0 -62
- package/styles/v2/components/Select/Select.stories.js +0 -60
- package/styles/v2/components/Select/index.js +0 -1
- package/styles/v2/components/Select/styles/index.js +0 -29
- package/styles/v2/components/Skeleton/Skeleton.stories.jsx +0 -34
- package/styles/v2/components/Skeleton/Skeleton.styles.js +0 -3
- package/styles/v2/components/Skeleton/index.js +0 -1
- package/styles/v2/components/Spinner/Spinner.jsx +0 -40
- package/styles/v2/components/Spinner/Spinner.stories.js +0 -98
- package/styles/v2/components/Spinner/Spinner.styles.js +0 -57
- package/styles/v2/components/Switch/Switch.jsx +0 -52
- package/styles/v2/components/Switch/Switch.stories.js +0 -88
- package/styles/v2/components/Switch/index.js +0 -1
- package/styles/v2/components/Switch/styles/index.js +0 -17
- package/styles/v2/components/Table/Table.jsx +0 -1
- package/styles/v2/components/Table/Table.stories.js +0 -90
- package/styles/v2/components/Table/Table.styles.js +0 -66
- package/styles/v2/components/Table/index.js +0 -2
- package/styles/v2/components/Tabs/Tabs.jsx +0 -39
- package/styles/v2/components/Tabs/Tabs.stories.js +0 -47
- package/styles/v2/components/Tabs/combineSizeWithVariant.js +0 -29
- package/styles/v2/components/Tabs/index.js +0 -2
- package/styles/v2/components/Tabs/styles/index.js +0 -40
- package/styles/v2/components/Text/Text.jsx +0 -35
- package/styles/v2/components/Text/Text.stories.js +0 -47
- package/styles/v2/components/Text/Text.styles.js +0 -33
- package/styles/v2/components/Text/combineAsWithVariant.js +0 -106
- package/styles/v2/components/Text/options.js +0 -92
- package/styles/v2/components/ThemeProvider/ThemeProvider.jsx +0 -39
- package/styles/v2/components/ThemeProvider/ThemeProvider.stories.js +0 -85
- package/styles/v2/components/index.js +0 -70
- package/styles/v2/components/styles.js +0 -21
- package/styles/v2/theme/base/breakpoints.js +0 -16
- package/styles/v2/theme/base/colors.js +0 -136
- package/styles/v2/theme/base/index.js +0 -5
- package/styles/v2/theme/base/sizes.js +0 -48
- package/styles/v2/theme/base/typography.js +0 -24
- package/styles/v2/theme/base/zindices.js +0 -17
- package/styles/v2/theme/global.js +0 -118
- package/styles/v2/theme/index.js +0 -27
- package/styles/v2/utils/Spaces.js +0 -16
- package/v1/assets-manifest.json +0 -5
- package/v1/index.html +0 -1
- package/v1/index.js +0 -3
- package/v1/index.js.LICENSE.txt +0 -23
- package/v1/index.js.map +0 -1
|
@@ -1,367 +0,0 @@
|
|
|
1
|
-
import find from 'lodash/find';
|
|
2
|
-
import isFunction from 'lodash/isFunction';
|
|
3
|
-
import isNumber from 'lodash/isNumber';
|
|
4
|
-
import isObject from 'lodash/isObject';
|
|
5
|
-
import map from 'lodash/map';
|
|
6
|
-
import some from 'lodash/some';
|
|
7
|
-
import sortBy from 'lodash/sortBy';
|
|
8
|
-
import React, {Component} from 'react';
|
|
9
|
-
import PropTypes from 'prop-types';
|
|
10
|
-
import classNames from 'classnames';
|
|
11
|
-
import TableHeading from './TableHeading';
|
|
12
|
-
import TableCell from './TableCell';
|
|
13
|
-
import TableFooter from './TableFooter';
|
|
14
|
-
import TableSortSelector from './TableSortSelector';
|
|
15
|
-
import TableSortType from './TableSortType';
|
|
16
|
-
import deprecate from 'v1/utils/deprecate';
|
|
17
|
-
|
|
18
|
-
deprecate({
|
|
19
|
-
name: 'Table',
|
|
20
|
-
newName: 'Table',
|
|
21
|
-
changes: [
|
|
22
|
-
'---- Props ----',
|
|
23
|
-
'In order to accomplish the same functionality as using `footerMessage`, now use the `<Tfoot />` component in the table structure instead of passing in as a prop',
|
|
24
|
-
'Pagination and Sorting are not yet supported in the v2 Table component',
|
|
25
|
-
'---- Changes in v2 component ----',
|
|
26
|
-
'New v2 Table component is now a paired-down in functionality compaired to v1 version',
|
|
27
|
-
'`containerClassName`, `headers`, `data`, `currentPage`, `sortOrder`, `sortDataKey`, `totalDataRowCount`, `rowSize`, `showFooterMessage`, `footerMessage`, `pageSize`, `sorting`, `onPageChange`, `onSortChange`, and `noDataAvailableMessage` are not yet supported in the v2 Table component',
|
|
28
|
-
'---- Additional Information ----',
|
|
29
|
-
'new props are documented at: https://chakra-ui.com/docs/data-display/table',
|
|
30
|
-
],
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
const PAGE_SIZE_MIN = 1;
|
|
34
|
-
const PAGE_SIZE_MAX = 25;
|
|
35
|
-
|
|
36
|
-
export default class Table extends Component {
|
|
37
|
-
static propTypes = {
|
|
38
|
-
/** Additional class(es) to add to the Table. */
|
|
39
|
-
className: PropTypes.string,
|
|
40
|
-
/** Additional class(es) to add to the container of the Table. */
|
|
41
|
-
containerClassName: PropTypes.string,
|
|
42
|
-
/** An array of header data for each column. */
|
|
43
|
-
headers: PropTypes.arrayOf(
|
|
44
|
-
PropTypes.shape({
|
|
45
|
-
/** The header label. */
|
|
46
|
-
label: PropTypes.string.isRequired,
|
|
47
|
-
/** The header data key which identifies the column for other processes (such as sorting, etc). Each data key should be unique. */
|
|
48
|
-
dataKey: PropTypes.string.isRequired,
|
|
49
|
-
/** Additional class(es) to add to the header cell. */
|
|
50
|
-
className: PropTypes.string,
|
|
51
|
-
/** Determines whether or not table can sort by header cell dataKey. */
|
|
52
|
-
isSortable: PropTypes.bool,
|
|
53
|
-
/** A function to render a custom layout for the header cell. The function is passed the `TableHeadingPropTypes` as props. */
|
|
54
|
-
render: PropTypes.func,
|
|
55
|
-
})
|
|
56
|
-
).isRequired,
|
|
57
|
-
/** An array of objects that captures table data for each row. An object can have key/value pairs or a key/object pair. The keys should match the `dataKey` from each column. A key/object pair can contain `value (String, required)`, `className (String)`, and `render (Function)`. The `render` function is passed `TableCellPropTypes` as props. You can also pass an object with a `customRowRender` function that will allow you to render custom row layouts (see examples). */
|
|
58
|
-
data: PropTypes.arrayOf(PropTypes.object),
|
|
59
|
-
/** The default page of data to display when the component is mounted. */
|
|
60
|
-
currentPage: PropTypes.number,
|
|
61
|
-
/** Determines if table data will be sorted in ascending or descending order. */
|
|
62
|
-
sortOrder: PropTypes.oneOf([TableSortType.ASC, TableSortType.DESC]),
|
|
63
|
-
/** The header data key the table will be sorted on. */
|
|
64
|
-
sortDataKey: PropTypes.string,
|
|
65
|
-
/** The total number of rows expected in the table. This determines if pagination should be shown and properly lays out pagination controls. */
|
|
66
|
-
totalDataRowCount: PropTypes.number,
|
|
67
|
-
/** Determines the default height of each row of data on larger viewports. */
|
|
68
|
-
rowSize: PropTypes.oneOf(['normal', 'large']),
|
|
69
|
-
/** Determines if table footer message should be shown. */
|
|
70
|
-
showFooterMessage: PropTypes.bool,
|
|
71
|
-
/** A custom message to display in the table footer. */
|
|
72
|
-
footerMessage: PropTypes.node,
|
|
73
|
-
/** The number of rows to display per page. For performance reasons, the max pageSize is 25.
|
|
74
|
-
*
|
|
75
|
-
* @param {Object} props - The props for the component.
|
|
76
|
-
* @param {String} propName - The name of the prop being tested against.
|
|
77
|
-
* @param {String} componentName - The name of the component.
|
|
78
|
-
* @returns {Error} - An error if the prop isn't a number or not between 1 and 25.
|
|
79
|
-
*/
|
|
80
|
-
pageSize: (props, propName, componentName) => {
|
|
81
|
-
if (!isNumber(props[propName])) {
|
|
82
|
-
return new Error(
|
|
83
|
-
`Invalid type of ${propName} supplied to ${componentName}. Must be a number. Validation failed.`
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
if (
|
|
88
|
-
props[propName] < PAGE_SIZE_MIN ||
|
|
89
|
-
props[propName] > PAGE_SIZE_MAX
|
|
90
|
-
) {
|
|
91
|
-
return new Error(
|
|
92
|
-
`Invalid prop ${propName} supplied to ${componentName}. Number must be between 1 and 25. Validation failed.`
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
/** A custom sorting function or an array of the dataKey(s) of the header(s) to sort the table by. If multiple are provided then sort order will be determined by column using the first key, then the second, and so on to sort the data with multiple keys in mind. See <a href="https://lodash.com/docs#sortBy" target="_blank">sortBy</a>. */
|
|
97
|
-
sorting: PropTypes.oneOfType([
|
|
98
|
-
PropTypes.func,
|
|
99
|
-
PropTypes.arrayOf(PropTypes.string),
|
|
100
|
-
]),
|
|
101
|
-
/**
|
|
102
|
-
* A function to call when a page change occurs.
|
|
103
|
-
*
|
|
104
|
-
* @param {Number} currentPage - The currently visible page.
|
|
105
|
-
* @param {Number} previousPage - The last page that was visible.
|
|
106
|
-
*/
|
|
107
|
-
onPageChange: PropTypes.func,
|
|
108
|
-
/**
|
|
109
|
-
* A function to call when a header sort occurs.
|
|
110
|
-
*
|
|
111
|
-
* @param {Number} dataKey - The header's dataKey.
|
|
112
|
-
* @param {Number} sortOrder - The sort order to use (ASC or DESC).
|
|
113
|
-
*/
|
|
114
|
-
onSortChange: PropTypes.func,
|
|
115
|
-
/** A custom message to display when there is no data available for the table. */
|
|
116
|
-
noDataAvailableMessage: PropTypes.node,
|
|
117
|
-
};
|
|
118
|
-
static defaultProps = {
|
|
119
|
-
currentPage: 1,
|
|
120
|
-
totalDataRowCount: 0,
|
|
121
|
-
rowSize: 'normal',
|
|
122
|
-
pageSize: 25,
|
|
123
|
-
noDataAvailableMessage: 'No data available at this time.',
|
|
124
|
-
showFooterMessage: true,
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
constructor(props) {
|
|
128
|
-
super(props);
|
|
129
|
-
|
|
130
|
-
const {
|
|
131
|
-
headers,
|
|
132
|
-
currentPage,
|
|
133
|
-
totalDataRowCount,
|
|
134
|
-
pageSize,
|
|
135
|
-
sortOrder,
|
|
136
|
-
sortDataKey,
|
|
137
|
-
} = props;
|
|
138
|
-
|
|
139
|
-
this._HEADERS = headers;
|
|
140
|
-
|
|
141
|
-
this.state = {
|
|
142
|
-
sortOrder,
|
|
143
|
-
sortDataKey,
|
|
144
|
-
currentPage,
|
|
145
|
-
totalPages: Math.ceil(totalDataRowCount / pageSize),
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
componentDidUpdate(prevProps, prevState) {
|
|
150
|
-
const {onPageChange, onSortChange, totalDataRowCount, pageSize} = this.props;
|
|
151
|
-
const {
|
|
152
|
-
currentPage: previousCurrentPage,
|
|
153
|
-
sortOrder: previousSortOrder,
|
|
154
|
-
sortDataKey: previousSortDataKey,
|
|
155
|
-
} = prevState;
|
|
156
|
-
const {totalPages, currentPage, sortOrder, sortDataKey} = this.state;
|
|
157
|
-
|
|
158
|
-
if (totalDataRowCount !== prevProps.totalDataRowCount || pageSize !== prevProps.pageSize) {
|
|
159
|
-
this.setState({
|
|
160
|
-
totalPages: Math.ceil(totalDataRowCount / pageSize)
|
|
161
|
-
})
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
if (previousCurrentPage !== currentPage && onPageChange) {
|
|
165
|
-
onPageChange({
|
|
166
|
-
totalPages,
|
|
167
|
-
currentPage,
|
|
168
|
-
previousPage: previousCurrentPage,
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
if (
|
|
173
|
-
(previousSortOrder !== sortOrder ||
|
|
174
|
-
previousSortDataKey !== sortDataKey) &&
|
|
175
|
-
onSortChange
|
|
176
|
-
) {
|
|
177
|
-
onSortChange({
|
|
178
|
-
sortOrder,
|
|
179
|
-
dataKey: sortDataKey,
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
_onPageChange = ({value}) => {
|
|
185
|
-
this.setState({
|
|
186
|
-
currentPage: parseInt(value, 10),
|
|
187
|
-
});
|
|
188
|
-
};
|
|
189
|
-
|
|
190
|
-
_onPreviousPage = evt => {
|
|
191
|
-
this.setState((prevState, props) => {
|
|
192
|
-
return {
|
|
193
|
-
currentPage: prevState.currentPage - 1,
|
|
194
|
-
};
|
|
195
|
-
});
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
_onNextPage = evt => {
|
|
199
|
-
this.setState((prevState, props) => {
|
|
200
|
-
return {
|
|
201
|
-
currentPage: prevState.currentPage + 1,
|
|
202
|
-
};
|
|
203
|
-
});
|
|
204
|
-
};
|
|
205
|
-
|
|
206
|
-
_onSortChange = ({dataKey, sortOrder}) => {
|
|
207
|
-
this.setState({
|
|
208
|
-
sortOrder,
|
|
209
|
-
sortDataKey: dataKey,
|
|
210
|
-
});
|
|
211
|
-
};
|
|
212
|
-
|
|
213
|
-
_renderHeadings = () => {
|
|
214
|
-
const {sortOrder, sortDataKey} = this.state;
|
|
215
|
-
|
|
216
|
-
return (
|
|
217
|
-
<thead className="TableHead">
|
|
218
|
-
<tr>
|
|
219
|
-
{this._HEADERS.map(header => {
|
|
220
|
-
const {render, ...headerProps} = header;
|
|
221
|
-
const {dataKey, isSortable} = headerProps;
|
|
222
|
-
const Heading = render ? render : TableHeading;
|
|
223
|
-
|
|
224
|
-
if (isSortable) {
|
|
225
|
-
headerProps.onSortClick = this._onSortChange;
|
|
226
|
-
headerProps.sortOrder =
|
|
227
|
-
dataKey === sortDataKey ? sortOrder : null;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
return <Heading key={dataKey} {...headerProps} />;
|
|
231
|
-
})}
|
|
232
|
-
</tr>
|
|
233
|
-
</thead>
|
|
234
|
-
);
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
_renderRows = () => {
|
|
238
|
-
const {data, sorting, noDataAvailableMessage} = this.props;
|
|
239
|
-
|
|
240
|
-
if (!data.length) {
|
|
241
|
-
return (
|
|
242
|
-
<tbody className="TableBody Table-no-data">
|
|
243
|
-
<tr>
|
|
244
|
-
<td colSpan={this._HEADERS.length}>
|
|
245
|
-
<div>{noDataAvailableMessage}</div>
|
|
246
|
-
</td>
|
|
247
|
-
</tr>
|
|
248
|
-
</tbody>
|
|
249
|
-
);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
let sortedData = data;
|
|
253
|
-
|
|
254
|
-
if (sorting) {
|
|
255
|
-
const sort = isFunction(sorting) ? [sorting] : [...sorting];
|
|
256
|
-
|
|
257
|
-
sortedData = sortBy(data, sort);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
return (
|
|
261
|
-
<tbody className="TableBody">
|
|
262
|
-
{sortedData.map(({className: rowClass, ...row}, i) => {
|
|
263
|
-
if (row.customRowRender) {
|
|
264
|
-
return row.customRowRender({key: i, row});
|
|
265
|
-
} else {
|
|
266
|
-
return (
|
|
267
|
-
<tr key={i} className={rowClass}>
|
|
268
|
-
{map(row, (cell, dataKey) => {
|
|
269
|
-
const {className, value} = cell;
|
|
270
|
-
const Cell =
|
|
271
|
-
isObject(cell) && cell.render
|
|
272
|
-
? cell.render
|
|
273
|
-
: TableCell;
|
|
274
|
-
const key = `${i}-${dataKey}`;
|
|
275
|
-
const label = find(this._HEADERS, {dataKey})
|
|
276
|
-
.label;
|
|
277
|
-
const cellValue = isObject(cell)
|
|
278
|
-
? value
|
|
279
|
-
: cell;
|
|
280
|
-
|
|
281
|
-
return (
|
|
282
|
-
<Cell
|
|
283
|
-
key={key}
|
|
284
|
-
className={className}
|
|
285
|
-
headingLabel={label}
|
|
286
|
-
value={cellValue}
|
|
287
|
-
/>
|
|
288
|
-
);
|
|
289
|
-
})}
|
|
290
|
-
</tr>
|
|
291
|
-
);
|
|
292
|
-
}
|
|
293
|
-
})}
|
|
294
|
-
</tbody>
|
|
295
|
-
);
|
|
296
|
-
};
|
|
297
|
-
|
|
298
|
-
_renderFooter = () => {
|
|
299
|
-
const {
|
|
300
|
-
rowSize,
|
|
301
|
-
pageSize,
|
|
302
|
-
data,
|
|
303
|
-
totalDataRowCount,
|
|
304
|
-
showFooterMessage,
|
|
305
|
-
footerMessage,
|
|
306
|
-
} = this.props;
|
|
307
|
-
const {currentPage, totalPages} = this.state;
|
|
308
|
-
|
|
309
|
-
return (
|
|
310
|
-
<TableFooter
|
|
311
|
-
rowSize={rowSize}
|
|
312
|
-
pageSize={pageSize}
|
|
313
|
-
totalDataRowCount={totalDataRowCount}
|
|
314
|
-
currentPage={currentPage}
|
|
315
|
-
totalPages={totalPages}
|
|
316
|
-
currentPageLength={data.length}
|
|
317
|
-
showMessage={showFooterMessage}
|
|
318
|
-
message={footerMessage}
|
|
319
|
-
onPageChange={this._onPageChange}
|
|
320
|
-
onPreviousPage={this._onPreviousPage}
|
|
321
|
-
onNextPage={this._onNextPage}
|
|
322
|
-
/>
|
|
323
|
-
);
|
|
324
|
-
};
|
|
325
|
-
|
|
326
|
-
_renderTableSortDropdown = () => {
|
|
327
|
-
const {sortOrder, sortDataKey} = this.state;
|
|
328
|
-
const hasSortableHeaders = some(this._HEADERS, 'isSortable');
|
|
329
|
-
|
|
330
|
-
if (!hasSortableHeaders) {
|
|
331
|
-
return null;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
return (
|
|
335
|
-
<TableSortSelector
|
|
336
|
-
headers={this._HEADERS}
|
|
337
|
-
sortOrder={sortOrder}
|
|
338
|
-
sortDataKey={sortDataKey}
|
|
339
|
-
onSortChange={this._onSortChange}
|
|
340
|
-
/>
|
|
341
|
-
);
|
|
342
|
-
};
|
|
343
|
-
|
|
344
|
-
render() {
|
|
345
|
-
const {containerClassName, className, rowSize} = this.props;
|
|
346
|
-
const containerClasses = classNames(
|
|
347
|
-
'Table-container',
|
|
348
|
-
containerClassName
|
|
349
|
-
);
|
|
350
|
-
const tableClasses = classNames(
|
|
351
|
-
'Table',
|
|
352
|
-
{'Table-large': rowSize === 'large'},
|
|
353
|
-
className
|
|
354
|
-
);
|
|
355
|
-
|
|
356
|
-
return (
|
|
357
|
-
<div className={containerClasses}>
|
|
358
|
-
{this._renderTableSortDropdown()}
|
|
359
|
-
<table className={tableClasses}>
|
|
360
|
-
{this._renderHeadings()}
|
|
361
|
-
{this._renderRows()}
|
|
362
|
-
</table>
|
|
363
|
-
{this._renderFooter()}
|
|
364
|
-
</div>
|
|
365
|
-
);
|
|
366
|
-
}
|
|
367
|
-
}
|