@geneui/components 2.11.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.
Files changed (154) hide show
  1. package/ActionableList.js +1761 -0
  2. package/AdvancedSearch.js +872 -0
  3. package/Alert.js +98 -0
  4. package/Avatar.js +77 -0
  5. package/Badge.js +76 -0
  6. package/Breadcrumb.js +128 -0
  7. package/BusyLoader.js +69 -0
  8. package/Button.js +130 -0
  9. package/CHANGELOG.md +424 -0
  10. package/Card.js +513 -0
  11. package/CardList.js +705 -0
  12. package/CellMeasurerCache-c11cec83.js +229 -0
  13. package/Charts.js +99 -0
  14. package/Checkbox.js +232 -0
  15. package/CheckboxGroup.js +206 -0
  16. package/CheckboxGroupWithSearch.js +279 -0
  17. package/Collapse.js +196 -0
  18. package/ColorPicker.js +210 -0
  19. package/ComboBox.js +99 -0
  20. package/Counter.js +99 -0
  21. package/DateFilter.js +179 -0
  22. package/DatePicker.js +1231 -0
  23. package/DatePickerInput.js +30 -0
  24. package/Divider.js +56 -0
  25. package/Drawer.js +264 -0
  26. package/Dropdown.js +99 -0
  27. package/Editor.js +22965 -0
  28. package/Empty.js +132 -0
  29. package/ExtendedInput.js +578 -0
  30. package/Form.js +116 -0
  31. package/FormContainer.js +189 -0
  32. package/FormableCheckbox.js +27 -0
  33. package/FormableDatePicker.js +39 -0
  34. package/FormableDropdown.js +105 -0
  35. package/FormableEditor.js +24 -0
  36. package/FormableHOC-21051057.js +83 -0
  37. package/FormableMultiSelectDropdown.js +105 -0
  38. package/FormableNumberInput.js +31 -0
  39. package/FormableRadio.js +23 -0
  40. package/FormableSwitcher.js +23 -0
  41. package/FormableTextInput.js +31 -0
  42. package/FormableUploader.js +40 -0
  43. package/GeneUIProvider.js +256 -0
  44. package/Grid.js +166 -0
  45. package/Holder.js +99 -0
  46. package/Icon.js +63 -0
  47. package/Image.js +130 -0
  48. package/ImagePreview.js +99 -0
  49. package/KeyValue.js +63 -0
  50. package/Label.js +58 -0
  51. package/LinkButton.js +104 -0
  52. package/Menu.js +277 -0
  53. package/MobileNavigation.js +95 -0
  54. package/MobilePopup.js +180 -0
  55. package/Modal.js +251 -0
  56. package/ModuleTitle.js +99 -0
  57. package/NavigationMenu.js +212 -0
  58. package/Notification.js +120 -0
  59. package/Option.js +186 -0
  60. package/Overlay.js +99 -0
  61. package/Overspread.js +343 -0
  62. package/Pagination.js +258 -0
  63. package/Paper.js +97 -0
  64. package/Popover-f4d1cac0.js +411 -0
  65. package/Popover.js +20 -0
  66. package/PopoverV2.js +19 -0
  67. package/Portal.js +58 -0
  68. package/Products.js +115 -0
  69. package/Profile.js +99 -0
  70. package/Progress.js +200 -0
  71. package/QRCode.js +816 -0
  72. package/README.md +90 -0
  73. package/Radio.js +152 -0
  74. package/RadioGroup.js +105 -0
  75. package/Range.js +14 -0
  76. package/RichEditor-b7928765.js +228 -0
  77. package/RichEditor.js +13 -0
  78. package/Scrollbar.js +1587 -0
  79. package/Search.js +72 -0
  80. package/SearchWithDropdown.js +195 -0
  81. package/Section.js +62 -0
  82. package/SkeletonLoader.js +82 -0
  83. package/Slider.js +256 -0
  84. package/Status.js +104 -0
  85. package/Steps.js +312 -0
  86. package/SuggestionList.js +15 -0
  87. package/Switcher.js +194 -0
  88. package/Table.js +102 -0
  89. package/TableCompositions.js +17028 -0
  90. package/Tabs.js +236 -0
  91. package/Tag.js +103 -0
  92. package/TextLink.js +22 -0
  93. package/Textarea.js +239 -0
  94. package/Time.js +63 -0
  95. package/TimePicker.js +99 -0
  96. package/Timeline.js +114 -0
  97. package/Title.js +66 -0
  98. package/Toaster.js +116 -0
  99. package/Tooltip.js +157 -0
  100. package/TransferList.js +502 -0
  101. package/Uploader.js +32 -0
  102. package/ValidatableCheckbox.js +126 -0
  103. package/ValidatableDatePicker.js +312 -0
  104. package/ValidatableDropdown.js +99 -0
  105. package/ValidatableElements.js +99 -0
  106. package/ValidatableMultiSelectDropdown.js +99 -0
  107. package/ValidatableNumberInput.js +194 -0
  108. package/ValidatableRadio.js +117 -0
  109. package/ValidatableSwitcher.js +94 -0
  110. package/ValidatableTextInput.js +164 -0
  111. package/ValidatableTimeInput.js +171 -0
  112. package/ValidatableUploader.js +94 -0
  113. package/Widget.js +99 -0
  114. package/_commonjsHelpers-24198af3.js +35 -0
  115. package/_rollupPluginBabelHelpers-e8fb2e5c.js +16 -0
  116. package/checkTimeValidation-e56771be.js +16 -0
  117. package/checkboxRadioSwitcher-5b69d7bd.js +4 -0
  118. package/clsx.m-2bb6df4b.js +3 -0
  119. package/configs-91c86664.js +96 -0
  120. package/configs.js +131 -0
  121. package/dateValidation-67caec66.js +225 -0
  122. package/debounce-4419bc2f.js +17 -0
  123. package/globalStyling-9c60a159.js +4 -0
  124. package/guid-8ddf77b3.js +16 -0
  125. package/index-00fe8887.js +193 -0
  126. package/index-0cf65939.js +30991 -0
  127. package/index-122432cd.js +270 -0
  128. package/index-262edd7a.js +77 -0
  129. package/index-5cea9a7d.js +407 -0
  130. package/index-5e722d91.js +867 -0
  131. package/index-67f4d4d1.js +6568 -0
  132. package/index-6ff23041.js +66 -0
  133. package/index-702bf24a.js +1938 -0
  134. package/index-a4635754.js +329 -0
  135. package/index-a59530cd.js +4 -0
  136. package/index-ac59cb10.js +169 -0
  137. package/index-b7a33c58.js +11 -0
  138. package/index-d9e8a888.js +987 -0
  139. package/index-e0af0caf.js +1182 -0
  140. package/index-e8776f3d.js +807 -0
  141. package/index.js +128 -0
  142. package/localization-4ba17032.js +46 -0
  143. package/objectWithoutPropertiesLoose-299691d8.js +78 -0
  144. package/package.json +190 -0
  145. package/rangeAndSlider-20599da4.js +8839 -0
  146. package/react-beautiful-dnd.esm-38c37304.js +10117 -0
  147. package/style-inject.es-746bb8ed.js +28 -0
  148. package/useClickOutside-5183e396.js +25 -0
  149. package/useDeviceType-dd51db38.js +15 -0
  150. package/useEllipsisDetection-ef536015.js +23 -0
  151. package/useKeyDown-38102ae7.js +21 -0
  152. package/useMount-6fef51a5.js +9 -0
  153. package/useWidth-9f4647f8.js +15 -0
  154. package/useWindowSize-80369d76.js +33 -0
package/CardList.js ADDED
@@ -0,0 +1,705 @@
1
+ import { _ as _extends } from './_rollupPluginBabelHelpers-e8fb2e5c.js';
2
+ import React__default, { useRef, useState, useMemo, useCallback, useEffect } from 'react';
3
+ import { p as propTypesExports } from './index-e0af0caf.js';
4
+ import { c as classnames } from './index-6ff23041.js';
5
+ import { M as ModuleTitle, W as Widget, m as Dropdown, o as InfiniteLoader, p as WindowScroller, r as List, s as CellMeasurer } from './index-0cf65939.js';
6
+ import Paper from './Paper.js';
7
+ import { C as CellMeasurerCache } from './CellMeasurerCache-c11cec83.js';
8
+ import { p as oneIsRequired, n as noop } from './index-ac59cb10.js';
9
+ import BusyLoader from './BusyLoader.js';
10
+ import Empty from './Empty.js';
11
+ import Icon from './Icon.js';
12
+ import Card from './Card.js';
13
+ import { s as styleInject } from './style-inject.es-746bb8ed.js';
14
+ import './Editor.js';
15
+ import './_commonjsHelpers-24198af3.js';
16
+ import 'react-dom';
17
+ import './useMount-6fef51a5.js';
18
+ import './useDeviceType-dd51db38.js';
19
+ import './configs-91c86664.js';
20
+ import './useWindowSize-80369d76.js';
21
+ import './Button.js';
22
+ import './globalStyling-9c60a159.js';
23
+ import './dateValidation-67caec66.js';
24
+ import './ValidatableUploader.js';
25
+ import './index-d9e8a888.js';
26
+ import './Grid.js';
27
+ import './useWidth-9f4647f8.js';
28
+ import './useKeyDown-38102ae7.js';
29
+ import './Image.js';
30
+ import './Tooltip.js';
31
+ import './Popover-f4d1cac0.js';
32
+ import './GeneUIProvider.js';
33
+ import './Checkbox.js';
34
+ import './checkboxRadioSwitcher-5b69d7bd.js';
35
+ import './guid-8ddf77b3.js';
36
+ import './ExtendedInput.js';
37
+ import './index-5cea9a7d.js';
38
+ import './useClickOutside-5183e396.js';
39
+ import './Scrollbar.js';
40
+ import './ValidatableRadio.js';
41
+ import './RadioGroup.js';
42
+ import './Radio.js';
43
+ import './ValidatableCheckbox.js';
44
+ import './ValidatableSwitcher.js';
45
+ import './Switcher.js';
46
+ import './ValidatableNumberInput.js';
47
+ import './ValidatableTextInput.js';
48
+ import './ValidatableDatePicker.js';
49
+ import './index-5e722d91.js';
50
+ import './index-702bf24a.js';
51
+ import './index-122432cd.js';
52
+ import './debounce-4419bc2f.js';
53
+ import './DatePicker.js';
54
+ import './localization-4ba17032.js';
55
+ import './checkTimeValidation-e56771be.js';
56
+ import './useEllipsisDetection-ef536015.js';
57
+ import './Tabs.js';
58
+ import './Steps.js';
59
+ import './index-a4635754.js';
60
+ import './Portal.js';
61
+ import './Timeline.js';
62
+ import './Tag.js';
63
+ import './Alert.js';
64
+ import './index-00fe8887.js';
65
+ import './rangeAndSlider-20599da4.js';
66
+ import './Slider.js';
67
+ import './Pagination.js';
68
+ import './Divider.js';
69
+ import './objectWithoutPropertiesLoose-299691d8.js';
70
+ import './clsx.m-2bb6df4b.js';
71
+ import './index-a59530cd.js';
72
+ import './Notification.js';
73
+ import './Modal.js';
74
+ import './Collapse.js';
75
+ import './Status.js';
76
+ import './Menu.js';
77
+ import './Option.js';
78
+ import './Avatar.js';
79
+ import './Search.js';
80
+ import './TextLink.js';
81
+ import './Label.js';
82
+ import './Badge.js';
83
+ import './configs.js';
84
+ import './SkeletonLoader.js';
85
+ import './Time.js';
86
+ import './Title.js';
87
+ import './KeyValue.js';
88
+ import './index-b7a33c58.js';
89
+ import './QRCode.js';
90
+ import './Progress.js';
91
+ import './MobileNavigation.js';
92
+ import './MobilePopup.js';
93
+ import './Products.js';
94
+ import './Breadcrumb.js';
95
+ import './Section.js';
96
+ import './ColorPicker.js';
97
+ import './NavigationMenu.js';
98
+ import './Textarea.js';
99
+ import './AdvancedSearch.js';
100
+ import './LinkButton.js';
101
+
102
+ function WithTitle(_ref) {
103
+ let {
104
+ name,
105
+ actions,
106
+ children,
107
+ ...restProps
108
+ } = _ref;
109
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ModuleTitle, _extends({
110
+ title: name,
111
+ cornerRadius: "position-radius"
112
+ }, restProps), actions), children);
113
+ }
114
+ WithTitle.propTypes = {
115
+ name: propTypesExports.oneOfType([propTypesExports.string, propTypesExports.node]).isRequired,
116
+ actions: propTypesExports.node,
117
+ children: propTypesExports.node
118
+ };
119
+
120
+ function PaperWrapper(_ref) {
121
+ let {
122
+ paperDirection,
123
+ cornerRadius,
124
+ className,
125
+ children,
126
+ shadow,
127
+ ...restProps
128
+ } = _ref;
129
+ return /*#__PURE__*/React__default.createElement(Paper, _extends({
130
+ shadow: shadow,
131
+ paperDirection: paperDirection,
132
+ cornerRadius: cornerRadius,
133
+ className: className
134
+ }, restProps), children);
135
+ }
136
+ PaperWrapper.propTypes = {
137
+ className: propTypesExports.string,
138
+ children: propTypesExports.node.isRequired,
139
+ cornerRadius: propTypesExports.string,
140
+ shadow: propTypesExports.bool,
141
+ ...Paper.propTypes
142
+ };
143
+ PaperWrapper.defaultProps = {
144
+ shadow: false,
145
+ cornerRadius: 'full-radius',
146
+ paperDirection: 'column'
147
+ };
148
+
149
+ var css_248z = "[data-gene-ui-version=\"2.11.0\"] .mobile-table-holder{position:relative;width:100%}[data-gene-ui-version=\"2.11.0\"] .paper>.mobile-table-holder{padding:1.6rem}[data-gene-ui-version=\"2.11.0\"] .m-popup-content>.paper>.mobile-table-holder{padding:1.6rem 0}[data-gene-ui-version=\"2.11.0\"] .mobile-table-head{margin:0 0 1rem;width:100%}[data-gene-ui-version=\"2.11.0\"] .mobile-table-head>ul{align-items:center;display:flex;width:100%}[data-gene-ui-version=\"2.11.0\"] .mobile-table-head>ul>li{align-items:center;display:flex;flex-shrink:0}[data-gene-ui-version=\"2.11.0\"] .mobile-table-head>ul>li+li{margin:0 0 0 3rem}[data-gene-ui-version=\"2.11.0\"] .mobile-table-head>ul>li:nth-child(2){flex:auto;max-width:20rem}[data-gene-ui-version=\"2.11.0\"] .mt-results-holder{font:600 1.4rem/1.8rem var(--font-family);opacity:.7;padding:0 1rem}[data-gene-ui-version=\"2.11.0\"] .mt-results-holder:not(:first-child){margin:1.6rem 0 0}[data-gene-ui-version=\"2.11.0\"] .mobile-table-cc{margin-inline-end:3rem;width:19.6rem}[data-gene-ui-version=\"2.11.0\"] .mobile-sort-button{align-items:center;cursor:pointer;display:flex;font:600 1.4rem/2.4rem var(--font-family)}[data-gene-ui-version=\"2.11.0\"] .mobile-sort-button p{transition:color .4s}[data-gene-ui-version=\"2.11.0\"] .mobile-sort-button .active{color:var(--hero)}[data-gene-ui-version=\"2.11.0\"] .mobile-sort-icons{height:2.4rem;margin-inline-start:1.2rem;position:relative;width:2.4rem}[data-gene-ui-version=\"2.11.0\"] .mobile-sort-icons .icon{left:0;position:absolute;top:0;transition:color .4s}[data-gene-ui-version=\"2.11.0\"] .mobile-sort-icons .icon:not(.active){color:rgba(var(--background-sc-rgb),.5)}[data-gene-ui-version=\"2.11.0\"] .mobile-table-body{width:100%}[data-gene-ui-version=\"2.11.0\"] .mobile-table-body .ReactVirtualized__Grid,[data-gene-ui-version=\"2.11.0\"] .mobile-table-body .ReactVirtualized__Grid__innerScrollContainer{overflow:visible!important}[data-gene-ui-version=\"2.11.0\"] .mobile-table-loading{align-items:center;display:flex;justify-content:center;padding:2.4rem 0;width:100%}[data-gene-ui-version=\"2.11.0\"] .mobile-table-loading.absolute-splash{background:rgba(var(--background-rgb),.6);height:100%;left:0;position:absolute;top:0}[data-gene-ui-version=\"2.11.0\"] .cards-empty-holder{align-items:center;display:flex;height:calc(100vh - 35.7rem);justify-content:center;width:100%}[data-gene-ui-version=\"2.11.0\"] .quick-view-holder{padding:1.6rem 0;width:100%}[data-gene-ui-version=\"2.11.0\"] .quick-view-holder>.card-list-col{grid-column-gap:3.8rem;align-items:center;display:grid;font:600 1.4rem/2.2rem var(--font-family);grid-template-columns:1fr 1fr}[data-gene-ui-version=\"2.11.0\"] .quick-view-holder>.card-list-col+.card-list-col{margin:2rem 0 0}[data-gene-ui-version=\"2.11.0\"] .quick-view-holder>.card-list-col .kv-label{opacity:.7}[data-gene-ui-version=\"2.11.0\"] .quick-view-holder>.card-list-col .kv-value{white-space:normal;word-break:break-word}[data-gene-ui-version=\"2.11.0\"] .quick-view-holder a:not([class]){color:var(--hero)}[data-gene-ui-version=\"2.11.0\"] .mc-widgets-holder{-webkit-overflow-scrolling:auto;margin:0 -1.6rem;overflow-x:auto;overflow-y:hidden;padding:0 1.6rem 1.6rem;width:calc(100% + 3.2rem)}[data-gene-ui-version=\"2.11.0\"] .mc-widgets-holder>ul{align-items:center;display:flex;min-width:100%}[data-gene-ui-version=\"2.11.0\"] .mc-widgets-holder>ul>li{margin-inline-end:1rem}[data-gene-ui-version=\"2.11.0\"] .mc-widgets-holder+.mobile-table-head{border-top:1px solid rgba(var(--background-sc-rgb),.1);padding:1.6rem 0 0}";
150
+ styleInject(css_248z);
151
+
152
+ const defaultSortFn = (prev, next, dataKey, type) => {
153
+ const first = prev.data[dataKey];
154
+ const second = next.data[dataKey];
155
+ if (first === null) return 1;
156
+ if (second === null) return -1;
157
+ const firstLowerCased = typeof first === 'string' ? first.toLowerCase() : first;
158
+ const secondLowerCased = typeof second === 'string' ? second.toLowerCase() : second;
159
+ if (type === 'asc') {
160
+ return firstLowerCased > secondLowerCased ? 1 : -1;
161
+ }
162
+ if (type === 'desc') {
163
+ return firstLowerCased > secondLowerCased ? -1 : 1;
164
+ }
165
+ return 0;
166
+ };
167
+ function CardList(props) {
168
+ const {
169
+ rowClassName,
170
+ onPaginationChange,
171
+ shadow,
172
+ border,
173
+ sortableColumns,
174
+ rowKey,
175
+ sortedColumn,
176
+ sortType,
177
+ defaultSortedColumn,
178
+ defaultSortType,
179
+ onSortChange,
180
+ columnLimit,
181
+ resultText,
182
+ className,
183
+ loading,
184
+ rows,
185
+ rowsCount,
186
+ columns,
187
+ columnKey,
188
+ rowActionBar,
189
+ getPopupProps,
190
+ customSubHeader,
191
+ rowsPerPage,
192
+ sortingPlaceholder,
193
+ viewCardText,
194
+ expandText,
195
+ cancelText,
196
+ sortByText,
197
+ expandedText,
198
+ emptyContent,
199
+ expandedCloseText,
200
+ scrollElement,
201
+ renderRowNestedChildren,
202
+ rowExtraClickMenuTitle,
203
+ getExpandIconDisableState,
204
+ onColumnChange,
205
+ totals,
206
+ rowExtraClick,
207
+ rowExtraClickNeeded,
208
+ closeWithOutsideClick,
209
+ isEditMode,
210
+ ...restProps
211
+ } = props;
212
+ const isCustomScrollElement = ('scrollElement' in props);
213
+ const isSortControlled = ('onSortChange' in props);
214
+ const virtualizedList = useRef(null);
215
+ const [sortDir, setSortDir] = useState(defaultSortType || null);
216
+ const [sortCol, setSortCol] = useState(defaultSortedColumn || null);
217
+ const [page, setPage] = useState(1);
218
+ const [listWidth, setListWidth] = useState(null);
219
+ const [pageLoading, setPageLoading] = useState(false);
220
+ const columnsWithSort = useMemo(() => columns.filter(_ref => {
221
+ let {
222
+ sortable
223
+ } = _ref;
224
+ return typeof sortable === 'boolean' ? sortable : sortableColumns;
225
+ }), [columns, sortableColumns]);
226
+ const sortedRows = useMemo(() => {
227
+ if (isSortControlled || !sortDir) return rows;
228
+ const column = columns.find(col => col.dataKey === sortCol) || {};
229
+ const sortFn = column.sortFn ? (prev, next) => column.sortFn(prev, next, sortCol, sortDir, column.formatter, column.removeSymbol) : (prev, next) => defaultSortFn(prev, next, sortCol, sortDir);
230
+ if (sortDir !== null) return [...rows].sort(sortFn);
231
+ return rows;
232
+ }, [isSortControlled, sortDir, rows, columns, sortCol]);
233
+ const handleSortChange = useCallback(() => {
234
+ const dir = !sortDir ? 'asc' : sortDir === 'asc' ? 'desc' : null;
235
+ const sortedColValue = isSortControlled ? sortedColumn : sortCol;
236
+ const column = columns.find(col => col[columnKey] === sortedColValue) || {};
237
+ if (sortCol) {
238
+ !isSortControlled && setSortDir(dir);
239
+ }
240
+ onSortChange && onSortChange({
241
+ column
242
+ }, sortCol, dir);
243
+ }, [sortDir, columns, sortCol, onSortChange, columnKey, sortedColumn, isSortControlled]);
244
+ const handlePageLoad = useCallback(_ref2 => {
245
+ let {
246
+ stopIndex
247
+ } = _ref2;
248
+ const loadedCount = stopIndex + 1;
249
+ if (loadedCount === rowsCount) return false;
250
+ if (loadedCount === rowsPerPage * page) {
251
+ const newPage = page + 1;
252
+ onPaginationChange(newPage, rowsPerPage);
253
+ setPageLoading(true);
254
+ setPage(newPage);
255
+ }
256
+ }, [rowsCount, rowsPerPage, page, onPaginationChange]);
257
+ useEffect(() => {
258
+ if (!loading) setPageLoading(false);
259
+ }, [loading]);
260
+ const sortedRowsLength = sortedRows.length;
261
+ const cache = useMemo(() => new CellMeasurerCache({
262
+ minHeight: 75,
263
+ defaultHeight: 200,
264
+ fixedWidth: true
265
+ }), []);
266
+ const rowRenderer = _ref3 => {
267
+ let {
268
+ index,
269
+ style,
270
+ parent
271
+ } = _ref3;
272
+ const {
273
+ onClick,
274
+ ...restItem
275
+ } = sortedRows[index];
276
+ return /*#__PURE__*/React__default.createElement(CellMeasurer, {
277
+ cache: cache,
278
+ columnIndex: 0,
279
+ key: index,
280
+ parent: parent,
281
+ rowIndex: index
282
+ }, /*#__PURE__*/React__default.createElement(Card, _extends({}, restItem, {
283
+ style: {
284
+ top: style.top
285
+ },
286
+ closeWithOutsideClick: closeWithOutsideClick,
287
+ isCustomScrollElement: isCustomScrollElement,
288
+ rowExtraClickMenuTitle: rowExtraClickMenuTitle,
289
+ getExpandIconDisableState: getExpandIconDisableState,
290
+ onRowClick: onClick,
291
+ index: index,
292
+ columnKey: columnKey,
293
+ columnLimit: columnLimit,
294
+ rowActionBar: rowActionBar,
295
+ getPopupProps: getPopupProps,
296
+ rowExtraClick: rowExtraClick,
297
+ isEditMode: isEditMode,
298
+ rowExtraClickNeeded: rowExtraClickNeeded,
299
+ rowHeightCache: cache,
300
+ row: restItem,
301
+ columns: columns,
302
+ className: rowClassName,
303
+ shadow: shadow,
304
+ border: border,
305
+ virtualizedList: virtualizedList.current,
306
+ viewCardText: viewCardText,
307
+ expandText: expandText,
308
+ cancelText: cancelText,
309
+ expandedText: expandedText,
310
+ expandedCloseText: expandedCloseText,
311
+ renderRowNestedChildren: renderRowNestedChildren
312
+ })));
313
+ };
314
+ const handleColumnChange = useCallback(_ref4 => {
315
+ let {
316
+ [columnKey]: value,
317
+ ...rest
318
+ } = _ref4;
319
+ setSortCol(value);
320
+ setSortDir(null);
321
+ onColumnChange && onColumnChange(value, rest);
322
+ }, [columnKey, onColumnChange]);
323
+ const customScrollElement = isCustomScrollElement && scrollElement ? scrollElement.current : undefined;
324
+ return /*#__PURE__*/React__default.createElement("div", _extends({
325
+ className: classnames('mobile-table-holder', className)
326
+ }, restProps), sortedRows.length ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, customSubHeader, !!Object.keys(totals).length && /*#__PURE__*/React__default.createElement("div", {
327
+ className: "mc-widgets-holder"
328
+ }, /*#__PURE__*/React__default.createElement("ul", null, columns.map(_ref5 => {
329
+ let {
330
+ text,
331
+ widgetColor,
332
+ [columnKey]: unique
333
+ } = _ref5;
334
+ return totals[unique] && /*#__PURE__*/React__default.createElement("li", {
335
+ key: unique
336
+ }, /*#__PURE__*/React__default.createElement(Widget, {
337
+ type: "colorful",
338
+ title: text,
339
+ color: widgetColor,
340
+ text: totals[unique],
341
+ size: "small"
342
+ }));
343
+ }))), /*#__PURE__*/React__default.createElement("div", {
344
+ className: "mobile-table-head"
345
+ }, !!columnsWithSort.length && /*#__PURE__*/React__default.createElement("ul", null, /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("button", {
346
+ className: "mobile-sort-button",
347
+ onClick: handleSortChange
348
+ }, /*#__PURE__*/React__default.createElement("p", {
349
+ className: classnames({
350
+ active: sortDir || sortType
351
+ })
352
+ }, sortByText), /*#__PURE__*/React__default.createElement("div", {
353
+ className: "mobile-sort-icons"
354
+ }, /*#__PURE__*/React__default.createElement(Icon, {
355
+ type: "bc-icon-sorting-down",
356
+ className: classnames({
357
+ active: sortDir === 'desc' || isSortControlled && sortType === 'desc'
358
+ })
359
+ }), /*#__PURE__*/React__default.createElement(Icon, {
360
+ type: "bc-icon-sorting-up",
361
+ className: classnames({
362
+ active: sortDir === 'asc' || isSortControlled && sortType === 'asc'
363
+ })
364
+ })))), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement(Dropdown, {
365
+ data: columnsWithSort,
366
+ defaultValue: isSortControlled ? sortedColumn : sortCol || null,
367
+ onChange: handleColumnChange,
368
+ placeholder: sortingPlaceholder,
369
+ labelKey: "text",
370
+ valueKey: columnKey
371
+ }))), /*#__PURE__*/React__default.createElement("div", {
372
+ className: "mt-results-holder"
373
+ }, resultText, " ", rowsCount || rows.length)), /*#__PURE__*/React__default.createElement("div", {
374
+ className: "mobile-table-body",
375
+ style: {
376
+ height: '100%'
377
+ },
378
+ ref: ref => ref && setListWidth(ref.clientWidth)
379
+ }, listWidth && (!isCustomScrollElement || scrollElement.current) && /*#__PURE__*/React__default.createElement(InfiniteLoader, {
380
+ minimumBatchSize: 0,
381
+ threshold: 0,
382
+ isRowLoaded: index => !!sortedRows[index],
383
+ loadMoreRows: handlePageLoad,
384
+ rowCount: sortedRowsLength
385
+ }, _ref6 => {
386
+ let {
387
+ onRowsRendered
388
+ } = _ref6;
389
+ return /*#__PURE__*/React__default.createElement(WindowScroller, {
390
+ scrollElement: customScrollElement
391
+ }, _ref7 => {
392
+ let {
393
+ height = 0,
394
+ scrollTop,
395
+ isScrolling
396
+ } = _ref7;
397
+ return /*#__PURE__*/React__default.createElement(List, {
398
+ ref: virtualizedList,
399
+ autoHeight: true,
400
+ height: height,
401
+ onRowsRendered: onRowsRendered,
402
+ isScrolling: isScrolling,
403
+ rowCount: sortedRowsLength,
404
+ rowHeight: row => cache.rowHeight(row),
405
+ rowRenderer: rowRenderer,
406
+ scrollTop: scrollTop,
407
+ width: listWidth
408
+ });
409
+ });
410
+ }))) : /*#__PURE__*/React__default.createElement("div", {
411
+ className: "cards-empty-holder"
412
+ }, emptyContent), loading && /*#__PURE__*/React__default.createElement("div", {
413
+ className: classnames('mobile-table-loading', {
414
+ 'absolute-splash': !pageLoading
415
+ })
416
+ }, /*#__PURE__*/React__default.createElement(BusyLoader, {
417
+ spinnerSize: pageLoading ? 'big' : 'small'
418
+ })));
419
+ }
420
+ CardList.propTypes = {
421
+ /**
422
+ * Show busy wrapper
423
+ */
424
+ loading: propTypesExports.bool,
425
+ /**
426
+ * Is have shadow
427
+ */
428
+ shadow: propTypesExports.bool,
429
+ /**
430
+ * Is have border
431
+ */
432
+ border: propTypesExports.bool,
433
+ /**
434
+ * Is card in edit mode
435
+ */
436
+ isEditMode: propTypesExports.bool,
437
+ /**
438
+ * Text for showing result
439
+ */
440
+ resultText: propTypesExports.string,
441
+ /**
442
+ * Classname for card items
443
+ */
444
+ rowClassName: propTypesExports.string,
445
+ /**
446
+ * Classname for card list
447
+ */
448
+ className: propTypesExports.string,
449
+ /**
450
+ * Type of sorting when it's controlled
451
+ */
452
+ sortType: propTypesExports.oneOf(['asc', 'desc', null]),
453
+ /**
454
+ * DataKey of column which was sorted
455
+ */
456
+ sortedColumn: propTypesExports.string,
457
+ /**
458
+ * DataKey of column which was sorted by default
459
+ */
460
+ defaultSortedColumn: propTypesExports.string,
461
+ /**
462
+ * Type of default sorting
463
+ */
464
+ defaultSortType: propTypesExports.oneOf(['asc', 'desc', null]),
465
+ /**
466
+ * Title for rowExtraClick menu item
467
+ */
468
+ rowExtraClickMenuTitle: propTypesExports.string,
469
+ /**
470
+ * Function which should return boolean
471
+ */
472
+ getExpandIconDisableState: propTypesExports.func,
473
+ /**
474
+ * Custom elements for sub header
475
+ */
476
+ customSubHeader: propTypesExports.node,
477
+ /**
478
+ * Are columns sortable?
479
+ */
480
+ sortableColumns: propTypesExports.bool,
481
+ /**
482
+ * Pass this function to catch sorting event and get related data
483
+ * ((type: string, dataKey: sting, column: PropTypes.columns[item]) => void
484
+ */
485
+ onSortChange: propTypesExports.func,
486
+ /**
487
+ * Placeholder for sorting dropdown
488
+ */
489
+ sortingPlaceholder: propTypesExports.string,
490
+ /**
491
+ * sortFn: Custom sort function for columns.((prev: PropTypes.rows[item], next: PropTypes.rows[item], rows: PropTypes.rows, dataKey: string) => {
492
+ * if (prev is less than next by some ordering criterion) {
493
+ * return -1;
494
+ * }
495
+ * if (prev is greater than next by the ordering criterion) {
496
+ * return 1;
497
+ * }
498
+ * prev is equal to next
499
+ * return 0;
500
+ * }
501
+ * })
502
+ *
503
+ * text: Text value for columns
504
+ *
505
+ * render: Function to render custom text.((column: PropTypes.columns[item], index: number, isEditActive: boolean) => return any)
506
+ *
507
+ * sortable: Allows sorting if true
508
+ *
509
+ * resizable: Allows resizing if true
510
+ *
511
+ * current column's data key
512
+ *
513
+ * draggable: Allows dragging if true
514
+ *
515
+ * colRenderer: Render custom component on certain column of each row. ((value: string || number, index: number, row: PropTypes.rows[item], isEditActive: boolean) => {
516
+ * return <div>Hello World</div>})
517
+ *
518
+ * getter: Function to define custom text. ((row: PropTypes.rows[item], index: number, isEditActive: boolean)) => {
519
+ * return some string
520
+ * })
521
+ *
522
+ * formatter: Function tp format displaying text. ((middleText: string, row: PropTypes.rows[item], index: number, isEditActive: boolean) => {
523
+ * return some string
524
+ * })
525
+ *
526
+ */
527
+ columns: propTypesExports.arrayOf(propTypesExports.shape({
528
+ sortFn: propTypesExports.func,
529
+ ...oneIsRequired({
530
+ text: propTypesExports.node,
531
+ render: propTypesExports.func
532
+ }),
533
+ sortable: propTypesExports.bool,
534
+ resizable: propTypesExports.bool,
535
+ dataKey: propTypesExports.string,
536
+ draggable: propTypesExports.bool,
537
+ colRenderer: propTypesExports.func,
538
+ getter: propTypesExports.func,
539
+ formatter: propTypesExports.func,
540
+ hide: propTypesExports.bool
541
+ })).isRequired,
542
+ /**
543
+ * Key from column's data which value is surely unique
544
+ */
545
+ columnKey: propTypesExports.string.isRequired,
546
+ /**
547
+ * hasHover: Allow hovering
548
+ * data: rows column's data
549
+ * nestedTable: object of columns: array of objects and rows: array of objects
550
+ * className: additional className for row element
551
+ * render: Render custom component on (row: PropTypes.rows[item] index: number) => {
552
+ * return <div>Hello World</div>})
553
+ */
554
+ rows: propTypesExports.arrayOf(propTypesExports.shape({
555
+ /**
556
+ * Expand button disabled state
557
+ */
558
+ expandDisabled: propTypesExports.bool,
559
+ data: propTypesExports.object,
560
+ className: propTypesExports.string,
561
+ render: propTypesExports.func
562
+ })),
563
+ /**
564
+ * Rows total count
565
+ */
566
+ rowsCount: propTypesExports.number,
567
+ /**
568
+ * Number of columns that will be shown
569
+ */
570
+ columnLimit: propTypesExports.number,
571
+ /**
572
+ * Function which will return Array of objects as row's action bar on the right corner of the row. ((row: PropTypes.rows[item] ,index: number) => [])
573
+ */
574
+ rowActionBar: propTypesExports.func,
575
+ /**
576
+ * Function which will return props for mobile popup. ((row: PropTypes.rows[item] ,index: number) => {})
577
+ */
578
+ getPopupProps: propTypesExports.func,
579
+ /**
580
+ * Text for View Card
581
+ */
582
+ viewCardText: propTypesExports.string,
583
+ /**
584
+ * Text for Expand
585
+ */
586
+ expandText: propTypesExports.string,
587
+ /**
588
+ * Text for Cancel
589
+ */
590
+ cancelText: propTypesExports.string,
591
+ /**
592
+ * Key from row's data which value is surely unique
593
+ */
594
+ rowKey: propTypesExports.string.isRequired,
595
+ /**
596
+ * Will render when there are no rows to render
597
+ */
598
+ emptyContent: propTypesExports.node,
599
+ /**
600
+ * Text for Expanded popup close button
601
+ */
602
+ expandedCloseText: propTypesExports.string,
603
+ /**
604
+ * Text for Expanded popup title
605
+ */
606
+ expandedText: propTypesExports.string,
607
+ /**
608
+ * Function which should return null or another
609
+ * Function which will return valid node
610
+ */
611
+ renderRowNestedChildren: propTypesExports.func,
612
+ /**
613
+ * Function will be called when page changes (page, rowsPerPage) => void
614
+ */
615
+ onPaginationChange: propTypesExports.func,
616
+ /**
617
+ * Rows count per page
618
+ */
619
+ rowsPerPage: propTypesExports.number,
620
+ /**
621
+ * Text for sort by
622
+ */
623
+ sortByText: propTypesExports.string,
624
+ /**
625
+ * Object with dataKeys and totals
626
+ */
627
+ totals: propTypesExports.object,
628
+ /**
629
+ * Extra click function for rows. ((e: event object, data: object, index: number, row: PropTypes.rows[item]) => custom logic)
630
+ */
631
+ rowExtraClick: propTypesExports.func,
632
+ /**
633
+ * Function for determining which rows should have extra click. ((e: event object, data: object, index: number, row: PropTypes.rows[item]) => return true or false)
634
+ */
635
+ rowExtraClickNeeded: propTypesExports.oneOfType([propTypesExports.func, propTypesExports.bool])
636
+ };
637
+ CardList.defaultProps = {
638
+ totals: {},
639
+ resultText: 'Result:',
640
+ sortByText: 'Sort by',
641
+ onPaginationChange: noop,
642
+ emptyContent: /*#__PURE__*/React__default.createElement(Empty, {
643
+ title: "No data to display"
644
+ }),
645
+ columnKey: 'dataKey',
646
+ sortingPlaceholder: 'Column',
647
+ rowExtraClickNeeded: noop,
648
+ sortableColumns: false,
649
+ columnLimit: 6,
650
+ shadow: true,
651
+ border: true,
652
+ rowsPerPage: 20
653
+ };
654
+
655
+ function WrapperTableContainer(_ref) {
656
+ let {
657
+ name,
658
+ titleActions,
659
+ className,
660
+ paperProps,
661
+ withTitle,
662
+ customSubHeader,
663
+ ...cardProps
664
+ } = _ref;
665
+ return /*#__PURE__*/React__default.createElement(PaperWrapper, _extends({
666
+ className: classnames(className)
667
+ }, paperProps), withTitle ? /*#__PURE__*/React__default.createElement(WithTitle, {
668
+ name: name,
669
+ actions: titleActions
670
+ }, customSubHeader, /*#__PURE__*/React__default.createElement(CardList, cardProps)) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, customSubHeader, /*#__PURE__*/React__default.createElement(CardList, cardProps)));
671
+ }
672
+ WrapperTableContainer.propTypes = {
673
+ /**
674
+ * Module title name
675
+ */
676
+ name: propTypesExports.node,
677
+ /**
678
+ * Actions for ModuleTitle component
679
+ */
680
+ titleActions: propTypesExports.node,
681
+ /**
682
+ * Custom elements for sub header
683
+ */
684
+ customSubHeader: propTypesExports.node,
685
+ /**
686
+ * Classname for card list
687
+ */
688
+ className: propTypesExports.string,
689
+ /**
690
+ * Props for Paper component
691
+ */
692
+ paperProps: propTypesExports.shape({
693
+ ...PaperWrapper.propTypes
694
+ }),
695
+ /**
696
+ * Show/Hide ModuleTitle component
697
+ */
698
+ withTitle: propTypesExports.bool,
699
+ ...CardList.propTypes
700
+ };
701
+ WrapperTableContainer.defaultProps = {
702
+ ...CardList.defaultProps
703
+ };
704
+
705
+ export { CardList, WrapperTableContainer as WrappedCardList };