@rio-cloud/uikit-mcp 1.1.7 → 1.1.9

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 (201) hide show
  1. package/README.md +24 -18
  2. package/dist/doc-metadata.json +125 -295
  3. package/dist/docs/components/accentBar.md +16 -69
  4. package/dist/docs/components/activity.md +7 -44
  5. package/dist/docs/components/animatedNumber.md +3 -11
  6. package/dist/docs/components/animatedTextReveal.md +6 -34
  7. package/dist/docs/components/animations.md +21 -54
  8. package/dist/docs/components/appHeader.md +11 -30
  9. package/dist/docs/components/appLayout.md +40 -193
  10. package/dist/docs/components/appNavigationBar.md +1 -24
  11. package/dist/docs/components/areaCharts.md +7 -22
  12. package/dist/docs/components/aspectRatioPlaceholder.md +1 -9
  13. package/dist/docs/components/assetTree.md +241 -280
  14. package/dist/docs/components/autosuggests.md +3 -102
  15. package/dist/docs/components/avatar.md +1 -16
  16. package/dist/docs/components/banner.md +4 -37
  17. package/dist/docs/components/barCharts.md +20 -75
  18. package/dist/docs/components/barList.md +10 -78
  19. package/dist/docs/components/basicMap.md +1 -67
  20. package/dist/docs/components/bottomSheet.md +2 -28
  21. package/dist/docs/components/button.md +12 -65
  22. package/dist/docs/components/buttonToolbar.md +5 -19
  23. package/dist/docs/components/calendarStripe.md +50 -100
  24. package/dist/docs/components/card.md +1 -9
  25. package/dist/docs/components/carousel.md +1 -14
  26. package/dist/docs/components/chartColors.md +1 -156
  27. package/dist/docs/components/chartsGettingStarted.md +1 -1
  28. package/dist/docs/components/chat.md +2 -81
  29. package/dist/docs/components/checkbox.md +11 -72
  30. package/dist/docs/components/circularProgress.md +8 -49
  31. package/dist/docs/components/clearableInput.md +3 -62
  32. package/dist/docs/components/collapse.md +2 -15
  33. package/dist/docs/components/composedCharts.md +16 -26
  34. package/dist/docs/components/contentLoader.md +7 -25
  35. package/dist/docs/components/dataTabs.md +16 -104
  36. package/dist/docs/components/datepickers.md +710 -962
  37. package/dist/docs/components/dialogs.md +5 -67
  38. package/dist/docs/components/divider.md +1 -33
  39. package/dist/docs/components/dropdowns.md +3424 -5567
  40. package/dist/docs/components/editableContent.md +4 -82
  41. package/dist/docs/components/expander.md +15 -88
  42. package/dist/docs/components/fade.md +4 -61
  43. package/dist/docs/components/fadeExpander.md +1 -7
  44. package/dist/docs/components/fadeUp.md +2 -76
  45. package/dist/docs/components/feedback.md +9 -68
  46. package/dist/docs/components/filePickers.md +4 -18
  47. package/dist/docs/components/formLabel.md +7 -27
  48. package/dist/docs/components/groupedItemList.md +2 -158
  49. package/dist/docs/components/iconList.md +7 -64
  50. package/dist/docs/components/imagePreloader.md +1 -9
  51. package/dist/docs/components/labeledElement.md +3 -18
  52. package/dist/docs/components/licensePlate.md +1 -43
  53. package/dist/docs/components/lineCharts.md +8 -39
  54. package/dist/docs/components/listMenu.md +2 -34
  55. package/dist/docs/components/loadMore.md +5 -24
  56. package/dist/docs/components/mainNavigation.md +1 -9
  57. package/dist/docs/components/mapCircle.md +1 -23
  58. package/dist/docs/components/mapCluster.md +2 -54
  59. package/dist/docs/components/mapContext.md +1 -23
  60. package/dist/docs/components/mapDraggableMarker.md +2 -28
  61. package/dist/docs/components/mapGettingStarted.md +2 -2
  62. package/dist/docs/components/mapInfoBubble.md +1 -27
  63. package/dist/docs/components/mapLayerGroup.md +1 -23
  64. package/dist/docs/components/mapMarker.md +1 -99
  65. package/dist/docs/components/mapPolygon.md +2 -116
  66. package/dist/docs/components/mapRoute.md +6 -1465
  67. package/dist/docs/components/mapRouteGenerator.md +1 -1
  68. package/dist/docs/components/mapSettings.md +11 -128
  69. package/dist/docs/components/mapUtils.md +10 -113
  70. package/dist/docs/components/multiselects.md +14 -163
  71. package/dist/docs/components/noData.md +8 -22
  72. package/dist/docs/components/notifications.md +3 -19
  73. package/dist/docs/components/numbercontrol.md +3 -47
  74. package/dist/docs/components/onboarding.md +3 -15
  75. package/dist/docs/components/page.md +1 -33
  76. package/dist/docs/components/pager.md +1 -17
  77. package/dist/docs/components/pieCharts.md +40 -71
  78. package/dist/docs/components/popover.md +1 -12
  79. package/dist/docs/components/position.md +2 -6
  80. package/dist/docs/components/radialBarCharts.md +32 -116
  81. package/dist/docs/components/radioCardGroup.md +6 -48
  82. package/dist/docs/components/radiobutton.md +6 -75
  83. package/dist/docs/components/releaseNotes.md +3 -21
  84. package/dist/docs/components/resizer.md +1 -7
  85. package/dist/docs/components/responsiveColumnStripe.md +9 -49
  86. package/dist/docs/components/responsiveVideo.md +1 -7
  87. package/dist/docs/components/rioglyph.md +1 -17
  88. package/dist/docs/components/rules.md +7 -70
  89. package/dist/docs/components/saveableInput.md +267 -401
  90. package/dist/docs/components/selects.md +27 -1164
  91. package/dist/docs/components/sidebar.md +6 -17
  92. package/dist/docs/components/sliders.md +1 -27
  93. package/dist/docs/components/smoothScrollbars.md +1 -73
  94. package/dist/docs/components/spinners.md +6 -51
  95. package/dist/docs/components/states.md +6 -92
  96. package/dist/docs/components/statsWidgets.md +1 -76
  97. package/dist/docs/components/statusBar.md +1 -57
  98. package/dist/docs/components/stepButton.md +2 -7
  99. package/dist/docs/components/steppedProgressBars.md +5 -62
  100. package/dist/docs/components/subNavigation.md +1 -31
  101. package/dist/docs/components/supportMarker.md +2 -14
  102. package/dist/docs/components/svgImage.md +1 -5
  103. package/dist/docs/components/switch.md +2 -33
  104. package/dist/docs/components/tables.md +1 -1
  105. package/dist/docs/components/tagManager.md +1 -41
  106. package/dist/docs/components/tags.md +1 -138
  107. package/dist/docs/components/teaser.md +2 -122
  108. package/dist/docs/components/textTruncateMiddle.md +2 -9
  109. package/dist/docs/components/timeline.md +1 -99
  110. package/dist/docs/components/timepicker.md +4 -79
  111. package/dist/docs/components/toggleButton.md +2 -15
  112. package/dist/docs/components/tooltip.md +9 -30
  113. package/dist/docs/components/tracker.md +2 -19
  114. package/dist/docs/components/virtualList.md +61 -130
  115. package/dist/docs/foundations.md +749 -4069
  116. package/dist/docs/start/changelog.md +5 -1
  117. package/dist/docs/start/goodtoknow.md +1 -1
  118. package/dist/docs/start/guidelines/color-combinations.md +149 -483
  119. package/dist/docs/start/guidelines/custom-css.md +1 -1
  120. package/dist/docs/start/guidelines/custom-rioglyph.md +1 -1
  121. package/dist/docs/start/guidelines/formatting.md +1 -1
  122. package/dist/docs/start/guidelines/iframe.md +4 -16
  123. package/dist/docs/start/guidelines/obfuscate-data.md +1 -1
  124. package/dist/docs/start/guidelines/print-css.md +1 -1
  125. package/dist/docs/start/guidelines/spinner.md +13 -67
  126. package/dist/docs/start/guidelines/state-in-url.md +1 -1
  127. package/dist/docs/start/guidelines/supported-browsers.md +1 -1
  128. package/dist/docs/start/guidelines/writing.md +1 -1
  129. package/dist/docs/start/howto.md +11 -11
  130. package/dist/docs/start/intro.md +1 -1
  131. package/dist/docs/start/responsiveness.md +1 -1
  132. package/dist/docs/utilities/classNames.md +3 -18
  133. package/dist/docs/utilities/deviceUtils.md +7 -13
  134. package/dist/docs/utilities/featureToggles.md +1 -1
  135. package/dist/docs/utilities/fuelTypeUtils.md +2 -12
  136. package/dist/docs/utilities/routeUtils.md +25 -343
  137. package/dist/docs/utilities/useAfterMount.md +1 -6
  138. package/dist/docs/utilities/useAutoAnimate.md +2 -15
  139. package/dist/docs/utilities/useAverage.md +1 -6
  140. package/dist/docs/utilities/useClickOutside.md +1 -5
  141. package/dist/docs/utilities/useClipboard.md +2 -6
  142. package/dist/docs/utilities/useCookies.md +2 -10
  143. package/dist/docs/utilities/useCount.md +7 -16
  144. package/dist/docs/utilities/useDarkMode.md +2 -6
  145. package/dist/docs/utilities/useDebugInfo.md +6 -20
  146. package/dist/docs/utilities/useEffectOnce.md +1 -6
  147. package/dist/docs/utilities/useElapsedTime.md +2 -6
  148. package/dist/docs/utilities/useElementSize.md +1 -7
  149. package/dist/docs/utilities/useEsc.md +1 -5
  150. package/dist/docs/utilities/useEvent.md +1 -5
  151. package/dist/docs/utilities/useFocusTrap.md +1 -5
  152. package/dist/docs/utilities/useFullscreen.md +2 -15
  153. package/dist/docs/utilities/useHover.md +1 -5
  154. package/dist/docs/utilities/useIncomingPostMessages.md +2 -18
  155. package/dist/docs/utilities/useInterval.md +2 -8
  156. package/dist/docs/utilities/useIsFocusWithin.md +1 -10
  157. package/dist/docs/utilities/useKey.md +1 -15
  158. package/dist/docs/utilities/useLocalStorage.md +2 -11
  159. package/dist/docs/utilities/useLocationSuggestions.md +1 -5
  160. package/dist/docs/utilities/useMax.md +1 -5
  161. package/dist/docs/utilities/useMin.md +1 -5
  162. package/dist/docs/utilities/useMutationObserver.md +3 -11
  163. package/dist/docs/utilities/useOnScreen.md +1 -8
  164. package/dist/docs/utilities/useOnlineStatus.md +1 -5
  165. package/dist/docs/utilities/usePostMessage.md +3 -9
  166. package/dist/docs/utilities/usePostMessageSender.md +3 -13
  167. package/dist/docs/utilities/usePrevious.md +1 -5
  168. package/dist/docs/utilities/useResizeObserver.md +3 -11
  169. package/dist/docs/utilities/useRioCookieConsent.md +1 -5
  170. package/dist/docs/utilities/useScrollPosition.md +3 -59
  171. package/dist/docs/utilities/useSearch.md +2 -16
  172. package/dist/docs/utilities/useSearchHighlight.md +13 -78
  173. package/dist/docs/utilities/useSorting.md +18 -43
  174. package/dist/docs/utilities/useStateWithValidation.md +1 -5
  175. package/dist/docs/utilities/useSum.md +1 -9
  176. package/dist/docs/utilities/useTableExport.md +42 -59
  177. package/dist/docs/utilities/useTableSelection.md +74 -119
  178. package/dist/docs/utilities/useTimeout.md +2 -6
  179. package/dist/docs/utilities/useToggle.md +4 -14
  180. package/dist/docs/utilities/useUrlState.md +2 -27
  181. package/dist/docs/utilities/useWindowResize.md +1 -5
  182. package/dist/index.mjs +46 -16
  183. package/dist/version.json +2 -2
  184. package/package.json +15 -9
  185. package/dist/docs/templates/common-table.md +0 -1112
  186. package/dist/docs/templates/detail-views.md +0 -942
  187. package/dist/docs/templates/expandable-details.md +0 -228
  188. package/dist/docs/templates/feature-cards.md +0 -549
  189. package/dist/docs/templates/form-summary.md +0 -199
  190. package/dist/docs/templates/form-toggle.md +0 -367
  191. package/dist/docs/templates/list-blocks.md +0 -1021
  192. package/dist/docs/templates/loading-progress.md +0 -109
  193. package/dist/docs/templates/options-panel.md +0 -152
  194. package/dist/docs/templates/panel-variants.md +0 -164
  195. package/dist/docs/templates/progress-cards.md +0 -607
  196. package/dist/docs/templates/progress-success.md +0 -142
  197. package/dist/docs/templates/settings-form.md +0 -434
  198. package/dist/docs/templates/stats-blocks.md +0 -1381
  199. package/dist/docs/templates/table-panel.md +0 -184
  200. package/dist/docs/templates/table-row-animation.md +0 -317
  201. package/dist/docs/templates/usage-cards.md +0 -227
@@ -1,1112 +0,0 @@
1
- # Common table
2
-
3
- *Category:* Templates
4
- *Section:* Tables
5
- *Source:* https://uikit.developers.rio.cloud/#/templates/common-table
6
- *Captured:* 2026-02-23T15:49:41.008Z
7
-
8
- ## Common table
9
-
10
- ### Example: Label
11
-
12
- NewButton
13
-
14
- Filter
15
-
16
- Label
17
-
18
- IdNameVINStatusDuration
19
-
20
- 233IpsumNo dataInactive5h 15m
21
-
22
- 456No data456Active4h 55m
23
-
24
- 878No data878Active9h 10m
25
-
26
- 895No data895Active8h 45m
27
-
28
- 978IpsumNo dataInactive6h 35m
29
-
30
- 2345Lorem2345Active11h 50m
31
-
32
- 2445No data2445Active7h 25m
33
-
34
- 3456No data3456Active12h 00m
35
-
36
- 4567No data4567Active10h 20m
37
-
38
- 7354Lorem7354Active10h 30m
39
-
40
- 70/100
41
-
42
- Load more
43
-
44
- #### Summary
45
-
46
- NewButton
47
-
48
- Filter
49
-
50
- Label
51
-
52
- IdNameVINStatusDuration
53
-
54
- 233IpsumNo dataInactive5h 15m
55
-
56
- 456No data456Active4h 55m
57
-
58
- 878No data878Active9h 10m
59
-
60
- 895No data895Active8h 45m
61
-
62
- 978IpsumNo dataInactive6h 35m
63
-
64
- 2345Lorem2345Active11h 50m
65
-
66
- 2445No data2445Active7h 25m
67
-
68
- 3456No data3456Active12h 00m
69
-
70
- 4567No data4567Active10h 20m
71
-
72
- 7354Lorem7354Active10h 30m
73
-
74
- 70/100
75
-
76
- Load more
77
-
78
- #### React (tsx)
79
-
80
- ```tsx
81
- import { useEffect, useMemo, useState } from 'react';
82
- import { isEmpty, omit } from 'es-toolkit/compat';
83
-
84
- import classNames from '@rio-cloud/rio-uikit/classNames';
85
- import TableToolbar from '@rio-cloud/rio-uikit/TableToolbar';
86
- import TableViewToggles, { type TableViewTogglesViewType } from '@rio-cloud/rio-uikit/TableViewToggles';
87
- import TableSearch from '@rio-cloud/rio-uikit/TableSearch';
88
- import TableCardsSorting from '@rio-cloud/rio-uikit/TableCardsSorting';
89
- import TableSettingsDialog from '@rio-cloud/rio-uikit/TableSettingsDialog';
90
- import type { SortDirectionType } from '@rio-cloud/rio-uikit/SortDirection';
91
- import ButtonDropdown from '@rio-cloud/rio-uikit/ButtonDropdown';
92
- import NotFoundState from '@rio-cloud/rio-uikit/NotFoundState';
93
- import NoData from '@rio-cloud/rio-uikit/NoData';
94
- import Button from '@rio-cloud/rio-uikit/Button';
95
- import useSorting from '@rio-cloud/rio-uikit/useSorting';
96
- import useTableSelection from '@rio-cloud/rio-uikit/useTableSelection';
97
- import TableCol from '@rio-cloud/rio-uikit/TableCol';
98
- import TableHead from '@rio-cloud/rio-uikit/TableHead';
99
- import FormLabel from '@rio-cloud/rio-uikit/FormLabel';
100
- import LoadMoreButton from '@rio-cloud/rio-uikit/LoadMoreButton';
101
- import ButtonToolbar from '@rio-cloud/rio-uikit/ButtonToolbar';
102
- import Checkbox from '@rio-cloud/rio-uikit/Checkbox';
103
- import Dialog from '@rio-cloud/rio-uikit/Dialog';
104
-
105
- const defaultColumnOrder = ['vehicleId', 'name', 'vin', 'status', 'duration'];
106
- const disabledColumns = ['vin'];
107
-
108
- type ColumnLabel = { [key: string]: string };
109
-
110
- const columnLabels: ColumnLabel = {
111
- vehicleId: 'Id',
112
- name: 'Name',
113
- vin: 'VIN',
114
- status: 'Status',
115
- duration: 'Duration',
116
- };
117
-
118
- type ColumnDetails = {
119
- [key: string]: number;
120
- };
121
-
122
- type ColumnDetailsMap = {
123
- [key: string]: ColumnDetails;
124
- };
125
-
126
- const demoColumnsDetails: ColumnDetailsMap = {
127
- vehicleId: {
128
- width: 60,
129
- defaultWidth: 60,
130
- maxWidth: 300,
131
- },
132
- name: {
133
- width: 200,
134
- defaultWidth: 200,
135
- maxWidth: 350,
136
- },
137
- // Note: 0 means auto width
138
- vin: {
139
- width: 0,
140
- defaultWidth: 0,
141
- maxWidth: 350,
142
- },
143
- status: {
144
- // Not defined as it will be defined when its used
145
- // width: 350,
146
- // defaultWidth: 0,
147
- },
148
- };
149
-
150
- type Vehicle = {
151
- vehicleId: number;
152
- name: string | null;
153
- vin: string | null;
154
- status: string;
155
- duration: string;
156
- };
157
-
158
- const vehicleList: Vehicle[] = [
159
- {
160
- vehicleId: 7354,
161
- name: 'Lorem',
162
- vin: '7354',
163
- status: 'Active',
164
- duration: '10h 30m',
165
- },
166
- {
167
- vehicleId: 233,
168
- name: 'Ipsum',
169
- vin: null,
170
- status: 'Inactive',
171
- duration: '5h 15m',
172
- },
173
- {
174
- vehicleId: 895,
175
- name: null,
176
- vin: '895',
177
- status: 'Active',
178
- duration: '8h 45m',
179
- },
180
- {
181
- vehicleId: 3456,
182
- name: null,
183
- vin: '3456',
184
- status: 'Active',
185
- duration: '12h 00m',
186
- },
187
- {
188
- vehicleId: 2445,
189
- name: null,
190
- vin: '2445',
191
- status: 'Active',
192
- duration: '7h 25m',
193
- },
194
- {
195
- vehicleId: 878,
196
- name: null,
197
- vin: '878',
198
- status: 'Active',
199
- duration: '9h 10m',
200
- },
201
- {
202
- vehicleId: 2345,
203
- name: 'Lorem',
204
- vin: '2345',
205
- status: 'Active',
206
- duration: '11h 50m',
207
- },
208
- {
209
- vehicleId: 978,
210
- name: 'Ipsum',
211
- vin: null,
212
- status: 'Inactive',
213
- duration: '6h 35m',
214
- },
215
- {
216
- vehicleId: 456,
217
- name: null,
218
- vin: '456',
219
- status: 'Active',
220
- duration: '4h 55m',
221
- },
222
- {
223
- vehicleId: 4567,
224
- name: null,
225
- vin: '4567',
226
- status: 'Active',
227
- duration: '10h 20m',
228
- },
229
- ];
230
-
231
- const dummyActionOptions = [
232
- { value: 'Option 1', onSelect: () => {} },
233
- { value: 'Option 2', onSelect: () => {} },
234
- { value: 'Option 3', onSelect: () => {} },
235
- { divider: true },
236
- { value: 'Option 4', onSelect: () => {}, disabled: true },
237
- ];
238
-
239
- export type TableCommonDemoProps = {
240
- viewType: TableViewTogglesViewType;
241
- };
242
-
243
- const TableCommonDemo = (props: TableCommonDemoProps) => {
244
- const { viewType: externalViewType } = props;
245
-
246
- const [searchValue, setSearchValue] = useState('');
247
- const [showTableSettingsDialog, setShowTableSettingsDialog] = useState(false);
248
-
249
- const [showFilterDialog, setShowFilterDialog] = useState(false);
250
- const [filter, setFilter] = useState<TableFilterKey[]>([]);
251
-
252
- const [columnOrder, setColumnOrder] = useState<string[]>(defaultColumnOrder);
253
- const [hiddenColumns, setHiddenColumns] = useState<string[]>([]);
254
- const [columnsDetails, setColumnsDetails] = useState(demoColumnsDetails);
255
-
256
- const [viewType, setViewType] = useState(externalViewType || TableViewToggles.VIEW_TYPE_TABLE);
257
-
258
- const { sortedItems, sortKey, sortDirection, setSortKey, setSortDirection, toggleDirection } = useSorting(
259
- vehicleList,
260
- 'vehicleId'
261
- );
262
-
263
- const { tableRef, updateRowSelection, activeRowId, onActiveRowChange } = useTableSelection<Vehicle>({
264
- tableData: vehicleList,
265
- idKey: 'vehicleId' as keyof Vehicle, // Specify the unique identifier key
266
- });
267
-
268
- // console.log({ activeRowId });
269
-
270
- // When the search value changes and hence the rendered rows, update the highlighting and selection
271
- useEffect(() => updateRowSelection(), [searchValue]);
272
-
273
- const handleToggleTableSettingsDialog = () => setShowTableSettingsDialog(!showTableSettingsDialog);
274
- const handleViewTypeChange = (newViewType: TableViewTogglesViewType) => setViewType(newViewType);
275
- const handleSearchValueChange = (newSearchValue: string) => setSearchValue(newSearchValue);
276
-
277
- const handleColumnChange = (
278
- newColumnOrder: string[],
279
- newHiddenColumns: string[],
280
- newColumnsDetails = columnsDetails
281
- ) => {
282
- setColumnOrder(newColumnOrder);
283
- setHiddenColumns(newHiddenColumns);
284
- setColumnsDetails(newColumnsDetails);
285
- };
286
-
287
- // For immediate effect
288
- const handleColumnDetailsChange = (column: string, newColumnDetails: ColumnDetails) => {
289
- const updatedColumnsDetails = { ...columnsDetails };
290
- updatedColumnsDetails[column] = newColumnDetails;
291
- setColumnsDetails(updatedColumnsDetails);
292
- };
293
-
294
- const handleSortChange = (event: React.MouseEvent<HTMLTableCellElement>) => {
295
- const newSortBy = event.currentTarget.getAttribute('data-sortby');
296
- if (newSortBy) {
297
- setSortKey(newSortBy as keyof Vehicle);
298
- }
299
- if (newSortBy === sortKey) {
300
- toggleDirection();
301
- }
302
- };
303
-
304
- const handleCardSortChange = (newSortBy: string, newSortDir: SortDirectionType) => {
305
- setSortKey(newSortBy as keyof Vehicle);
306
- setSortDirection(newSortDir);
307
- };
308
-
309
- // Filter for hidden columns
310
- const hiddenColumnsSet = new Set(hiddenColumns);
311
- const columns = columnOrder.filter(name => !hiddenColumnsSet.has(name));
312
-
313
- // Filter data to omit hidden columns
314
- const filteredRows = sortedItems.map(vehicle => omit(vehicle, hiddenColumns)) as Vehicle[];
315
-
316
- // In case a search value is given, filter the data accordingly
317
- const searchResult = useMemo(() => {
318
- if (!searchValue) {
319
- return filteredRows;
320
- }
321
- return filteredRows.filter((row: Partial<Vehicle>) =>
322
- columns.some(col => {
323
- const value = row[col as keyof Vehicle];
324
- if (value == null) {
325
- return false;
326
- }
327
- return String(value).toLowerCase().includes(searchValue.toLowerCase());
328
- })
329
- );
330
- }, [searchValue, filteredRows, columns]);
331
-
332
- // Filter according to filter dialog settings
333
- const rows = useMemo(() => applyFilter(searchResult, filter), [searchResult, filter]);
334
-
335
- const tableClassNames = classNames(
336
- 'table',
337
- 'table-layout-fixed',
338
- 'table-column-overflow-hidden',
339
- 'table-bordered',
340
- 'table-sticky',
341
- 'table-head-filled',
342
- viewType === TableViewToggles.VIEW_TYPE_SINGLE_CARD && 'table-cards table-single-card',
343
- viewType === TableViewToggles.VIEW_TYPE_MULTI_CARDS && 'table-cards table-multi-cards'
344
- );
345
-
346
- const isViewTypeTable = viewType === TableViewToggles.VIEW_TYPE_TABLE;
347
-
348
- const cardSortingSelectOptions = columns.map(column => {
349
- return {
350
- id: column,
351
- label: columnLabels[column],
352
- selected: column === sortKey,
353
- disabled: false,
354
- };
355
- });
356
-
357
- return (
358
- <div>
359
- <TableToolbar>
360
- <div className='table-toolbar-container'>
361
- <div className='table-toolbar-group-left'>
362
- <div className='table-toolbar-column'>
363
- <ButtonToolbar className='display-grid grid-cols-3 display-flex-ls'>
364
- <Button bsStyle={Button.PRIMARY} iconName='rioglyph-plus'>
365
- New
366
- </Button>
367
- <ButtonDropdown id='myActionButton' title='Button' items={dummyActionOptions} />
368
- </ButtonToolbar>
369
- </div>
370
- </div>
371
- <div className='table-toolbar-group-right'>
372
- <div className='table-toolbar-column'>
373
- <Button
374
- iconName={isEmpty(filter) ? 'rioglyph-filter' : 'rioglyph-filter-active'}
375
- onClick={() => setShowFilterDialog(true)}
376
- >
377
- Filter
378
- </Button>
379
- <TableFilterDialog
380
- show={showFilterDialog}
381
- onClose={() => setShowFilterDialog(false)}
382
- filter={filter}
383
- onSetFilter={setFilter}
384
- />
385
- </div>
386
- <div className='table-toolbar-column table-toolbar-column-spacer'>
387
- <TableSearch
388
- value={searchValue}
389
- onChange={handleSearchValueChange}
390
- placeholder='Search in table'
391
- />
392
- </div>
393
- <div className='table-toolbar-column display-flex flex-row align-items-end gap-15'>
394
- <div>
395
- <FormLabel className='table-toolbar-label'>Label</FormLabel>
396
- <TableViewToggles
397
- initialViewType={viewType}
398
- onViewTypeChange={handleViewTypeChange}
399
- tableViewTooltipContent='Table view'
400
- singleCardViewTooltipContent='List view'
401
- multiCardsViewTooltipContent='Cards view'
402
- />
403
- </div>
404
- <Button iconOnly iconName='rioglyph-settings' onClick={handleToggleTableSettingsDialog} />
405
- </div>
406
- </div>
407
- {showTableSettingsDialog && (
408
- <TableSettingsDialog
409
- show={showTableSettingsDialog}
410
- title='Table settings'
411
- onHide={handleToggleTableSettingsDialog}
412
- onColumnChange={handleColumnChange}
413
- defaultColumnOrder={defaultColumnOrder}
414
- defaultHiddenColumns={[]}
415
- columnOrder={columnOrder}
416
- hiddenColumns={hiddenColumns}
417
- columnLabels={columnLabels}
418
- disabledColumns={disabledColumns}
419
- closeButtonText='Close'
420
- resetButtonText='Reset to default'
421
- searchPlaceholder='Search by column name'
422
- notFoundMessage='No column found for this search value'
423
- columnsDetails={columnsDetails}
424
- autoLabel='Auto'
425
- onColumnDetailsChange={handleColumnDetailsChange}
426
- onSearchChange={(val: string) => console.log(val)}
427
- immediateChange
428
- />
429
- )}
430
- </div>
431
- </TableToolbar>
432
- {sortKey && !isViewTypeTable && (
433
- <TableCardsSorting
434
- selectOptions={cardSortingSelectOptions}
435
- sortName={sortKey as string}
436
- sortOrder={sortDirection}
437
- onSortChange={handleCardSortChange}
438
- />
439
- )}
440
- <div className='table-responsive'>
441
- {isEmpty(rows) && !isViewTypeTable && (
442
- <NotFoundState headline='Nothing found' message='Please refine your search' />
443
- )}
444
- <table ref={tableRef} className={tableClassNames}>
445
- <colgroup>
446
- {columns.map(column => (
447
- <TableCol key={column} columnDetails={columnsDetails[column]} />
448
- ))}
449
- <TableCol className='table-action' />
450
- </colgroup>
451
- <thead>
452
- <tr>
453
- {columns.map(column => (
454
- <TableHead
455
- key={column}
456
- label={columnLabels[column]}
457
- column={column}
458
- sortBy={sortKey as string}
459
- sortDir={sortDirection}
460
- onClick={handleSortChange}
461
- />
462
- ))}
463
- <TableHead className='table-action' />
464
- </tr>
465
- </thead>
466
- <tbody>
467
- {isEmpty(rows) && isViewTypeTable && (
468
- <tr>
469
- <td colSpan={columns.length + 1}>
470
- <NotFoundState
471
- outerClassName='border-none'
472
- headline='Nothing found'
473
- message='Please refine your search'
474
- />
475
- </td>
476
- </tr>
477
- )}
478
- {rows.map(row => (
479
- <tr
480
- key={row.vehicleId}
481
- data-id={row.vehicleId}
482
- onClick={onActiveRowChange}
483
- className='cursor-pointer'
484
- >
485
- {columns.map(col => {
486
- const item = row[col as keyof Vehicle] ?? <NoData text='No data' />;
487
- return (
488
- <td key={col} data-field={columnLabels[col]}>
489
- <span>{item}</span>
490
- </td>
491
- );
492
- })}
493
- <td className='table-action'>
494
- <DummyRowDropdown />
495
- </td>
496
- </tr>
497
- ))}
498
- {/* Placeholder workaround for equal with cards of the last row */}
499
- <tr className='table-card-placeholder' />
500
- <tr className='table-card-placeholder' />
501
- <tr className='table-card-placeholder' />
502
- <tr className='table-card-placeholder' />
503
- <tr className='table-card-placeholder' />
504
- <tr className='table-card-placeholder' />
505
- <tr className='table-card-placeholder' />
506
- <tr className='table-card-placeholder' />
507
- <tr className='table-card-placeholder' />
508
- <tr className='table-card-placeholder' />
509
- </tbody>
510
- </table>
511
- </div>
512
- <LoadMoreButton
513
- loaded={70}
514
- total={100}
515
- onLoadMore={() => {}}
516
- loadMoreMessage='Load more'
517
- noMoreMessage='Everything loaded'
518
- />
519
- </div>
520
- );
521
- };
522
-
523
- const DummyRowDropdown = () => (
524
- <span>
525
- <ButtonDropdown
526
- title={<span className='rioglyph rioglyph-option-vertical' />}
527
- variant='link'
528
- iconOnly
529
- items={[
530
- {
531
- value: (
532
- <div className='display-flex align-items-center gap-10'>
533
- <span className='rioglyph rioglyph-pencil' />
534
- <span>Edit</span>
535
- </div>
536
- ),
537
- },
538
- {
539
- value: (
540
- <div className='display-flex align-items-center gap-10'>
541
- <span className='rioglyph rioglyph-duplicate' />
542
- <span>Duplicate</span>
543
- </div>
544
- ),
545
- },
546
- {
547
- value: (
548
- <div className='display-flex align-items-center gap-10'>
549
- <span className='rioglyph rioglyph-trash' />
550
- <span>Delete</span>
551
- </div>
552
- ),
553
- },
554
- ]}
555
- />
556
- </span>
557
- );
558
-
559
- const FILTER_KAY_MISSING_VIN = 'missingVin';
560
- type TableFilterKey = typeof FILTER_KAY_MISSING_VIN;
561
-
562
- const TABLE_FILTERS: Record<TableFilterKey, { label: string }> = {
563
- missingVin: { label: 'Hide items without VIN' },
564
- };
565
-
566
- const applyFilter = (items: Vehicle[], filter: string[]) => {
567
- const filterSet = new Set(filter);
568
-
569
- return items.filter(item => {
570
- // If 'missingVin' is in the filter set, keep only items with a VIN (!!item.vin is true).
571
- // If 'missingVin' is NOT in the filter set, this specific condition doesn't remove the item.
572
- if (filterSet.has(FILTER_KAY_MISSING_VIN) && !item.vin) {
573
- return false; // Hide items without VIN if filter is active
574
- }
575
- // Add more filter conditions here as needed.
576
- // If no active filter criteria cause the item to be excluded, keep it.
577
- return true;
578
- });
579
- };
580
-
581
- const TableFilterDialog = (props: {
582
- show: boolean;
583
- onClose: VoidFunction;
584
- filter: TableFilterKey[];
585
- onSetFilter: (filter: TableFilterKey[]) => void;
586
- }) => {
587
- const { show, onClose, filter, onSetFilter } = props;
588
-
589
- const filterSet = new Set(filter);
590
-
591
- const toggleFilter = (key: TableFilterKey) => {
592
- const newFilter = new Set(filter);
593
- if (newFilter.has(key)) {
594
- newFilter.delete(key);
595
- } else {
596
- newFilter.add(key);
597
- }
598
- onSetFilter(Array.from(newFilter));
599
- };
600
-
601
- return (
602
- <Dialog
603
- show={show}
604
- bsSize='sm'
605
- onClose={onClose}
606
- title='Table filter'
607
- body={
608
- <div>
609
- <fieldset className='margin-bottom-25'>
610
- <legend>Vehicle properties</legend>
611
- <div className='display-flex flex-column gap-10'>
612
- {Object.entries(TABLE_FILTERS).map(([key, { label }]) => (
613
- <Checkbox
614
- key={key}
615
- checked={filterSet.has(key as TableFilterKey)}
616
- onChange={() => toggleFilter(key as TableFilterKey)}
617
- className='user-select-none'
618
- >
619
- {label}
620
- </Checkbox>
621
- ))}
622
- <Checkbox disabled>Lorem ipsum dolor</Checkbox>
623
- <Checkbox disabled>Dolor sit amet</Checkbox>
624
- </div>
625
- </fieldset>
626
- <fieldset>
627
- <legend>More filter options</legend>
628
- <div className='display-flex flex-column gap-10'>
629
- <Checkbox disabled>Lorem ipsum dolor</Checkbox>
630
- <Checkbox disabled>Dolor sit amet</Checkbox>
631
- </div>
632
- </fieldset>
633
- </div>
634
- }
635
- footer={
636
- <div className='btn-toolbar'>
637
- <Button onClick={onClose}>
638
- <span>Close</span>
639
- </Button>
640
- </div>
641
- }
642
- />
643
- );
644
- };
645
-
646
- export default TableCommonDemo;
647
- ```
648
-
649
- #### HTML (html)
650
-
651
- ```html
652
- <div>
653
- <div class="table-toolbar">
654
- <div class="table-toolbar-container">
655
- <div class="table-toolbar-group-left">
656
- <div class="table-toolbar-column">
657
- <div class="display-grid grid-cols-3 display-flex-ls btn-toolbar">
658
- <button type="button" class="btn btn-primary btn-component" tabindex="0">
659
- <span class="rioglyph rioglyph-plus">
660
- </span>New</button>
661
- <div class="dropdown btn-group">
662
- <button type="button" id="myActionButton" class="btn btn-default btn-md btn-component dropdown-toggle" tabindex="0">Button<span class="caret">
663
- </span>
664
- </button>
665
- </div>
666
- </div>
667
- </div>
668
- </div>
669
- <div class="table-toolbar-group-right">
670
- <div class="table-toolbar-column">
671
- <button type="button" class="btn btn-default btn-component" tabindex="0">
672
- <span class="rioglyph rioglyph-filter">
673
- </span>Filter</button>
674
- </div>
675
- <div class="table-toolbar-column table-toolbar-column-spacer">
676
- <div class="table-toolbar-search input-group">
677
- <span class="input-group-addon">
678
- <span class="rioglyph rioglyph-search">
679
- </span>
680
- </span>
681
- <div class="ClearableInput input-group">
682
- <input placeholder="Search in table" class="form-control" type="text" tabindex="0" value="">
683
- <span class="clearButton hide">
684
- <span class="clearButtonIcon rioglyph rioglyph-remove-sign">
685
- </span>
686
- </span>
687
- </div>
688
- </div>
689
- </div>
690
- <div class="table-toolbar-column display-flex flex-row align-items-end gap-15">
691
- <div>
692
- <div class="text-color-dark max-width-100pct text-size-12 display-inline-block margin-bottom-5 table-toolbar-label">Label</div>
693
- <div class="TableViewToggles btn-group display-flex flex-row">
694
- <button class="btn btn-default btn-icon-only active" type="button">
695
- <span class="rioglyph rioglyph-table-view">
696
- </span>
697
- </button>
698
- <button class="btn btn-default btn-icon-only" type="button">
699
- <span class="rioglyph rioglyph-th-list">
700
- </span>
701
- </button>
702
- <button class="btn btn-default btn-icon-only" type="button">
703
- <span class="rioglyph rioglyph-split-view">
704
- </span>
705
- </button>
706
- </div>
707
- </div>
708
- <button type="button" class="btn btn-default btn-icon-only btn-component" tabindex="0">
709
- <span class="rioglyph rioglyph-settings">
710
- </span>
711
- </button>
712
- </div>
713
- </div>
714
- </div>
715
- </div>
716
- <div class="table-responsive">
717
- <table class="table table-layout-fixed table-column-overflow-hidden table-bordered table-sticky table-head-filled">
718
- <colgroup>
719
- <col class="" style="min-width: 60px; width: 60px;">
720
- <col class="" style="min-width: 200px; width: 200px;">
721
- <col class="">
722
- <col class="">
723
- <col class="">
724
- <col class="table-action">
725
- </colgroup>
726
- <thead>
727
- <tr>
728
- <th class="user-select-none sort-column" data-field="vehicleId" data-sortby="vehicleId" title="Id">
729
- <span>
730
- <span class="sort-arrows sort-asc">
731
- </span>
732
- <span>Id</span>
733
- </span>
734
- </th>
735
- <th class="user-select-none sort-column" data-field="name" data-sortby="name" title="Name">
736
- <span>
737
- <span class="sort-arrows ">
738
- </span>
739
- <span>Name</span>
740
- </span>
741
- </th>
742
- <th class="user-select-none sort-column" data-field="vin" data-sortby="vin" title="VIN">
743
- <span>
744
- <span class="sort-arrows ">
745
- </span>
746
- <span>VIN</span>
747
- </span>
748
- </th>
749
- <th class="user-select-none sort-column" data-field="status" data-sortby="status" title="Status">
750
- <span>
751
- <span class="sort-arrows ">
752
- </span>
753
- <span>Status</span>
754
- </span>
755
- </th>
756
- <th class="user-select-none sort-column" data-field="duration" data-sortby="duration" title="Duration">
757
- <span>
758
- <span class="sort-arrows ">
759
- </span>
760
- <span>Duration</span>
761
- </span>
762
- </th>
763
- <th class="user-select-none sort-column table-action" title="">
764
- </th>
765
- </tr>
766
- </thead>
767
- <tbody>
768
- <tr data-id="233" class="cursor-pointer">
769
- <td data-field="Id">
770
- <span>233</span>
771
- </td>
772
- <td data-field="Name">
773
- <span>Ipsum</span>
774
- </td>
775
- <td data-field="VIN">
776
- <span>
777
- <span class="NoData">
778
- <span class="pointer-events-none user-select-none">No data</span>
779
- </span>
780
- </span>
781
- </td>
782
- <td data-field="Status">
783
- <span>Inactive</span>
784
- </td>
785
- <td data-field="Duration">
786
- <span>5h 15m</span>
787
- </td>
788
- <td class="table-action">
789
- <span>
790
- <div class="dropdown btn-group">
791
- <button type="button" id="tt7amh4ncm" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
792
- <span class="rioglyph rioglyph-option-vertical">
793
- </span>
794
- </button>
795
- </div>
796
- </span>
797
- </td>
798
- </tr>
799
- <tr data-id="456" class="cursor-pointer">
800
- <td data-field="Id">
801
- <span>456</span>
802
- </td>
803
- <td data-field="Name">
804
- <span>
805
- <span class="NoData">
806
- <span class="pointer-events-none user-select-none">No data</span>
807
- </span>
808
- </span>
809
- </td>
810
- <td data-field="VIN">
811
- <span>456</span>
812
- </td>
813
- <td data-field="Status">
814
- <span>Active</span>
815
- </td>
816
- <td data-field="Duration">
817
- <span>4h 55m</span>
818
- </td>
819
- <td class="table-action">
820
- <span>
821
- <div class="dropdown btn-group">
822
- <button type="button" id="6q48z5xy6uu" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
823
- <span class="rioglyph rioglyph-option-vertical">
824
- </span>
825
- </button>
826
- </div>
827
- </span>
828
- </td>
829
- </tr>
830
- <tr data-id="878" class="cursor-pointer">
831
- <td data-field="Id">
832
- <span>878</span>
833
- </td>
834
- <td data-field="Name">
835
- <span>
836
- <span class="NoData">
837
- <span class="pointer-events-none user-select-none">No data</span>
838
- </span>
839
- </span>
840
- </td>
841
- <td data-field="VIN">
842
- <span>878</span>
843
- </td>
844
- <td data-field="Status">
845
- <span>Active</span>
846
- </td>
847
- <td data-field="Duration">
848
- <span>9h 10m</span>
849
- </td>
850
- <td class="table-action">
851
- <span>
852
- <div class="dropdown btn-group">
853
- <button type="button" id="zsdhts8n5g" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
854
- <span class="rioglyph rioglyph-option-vertical">
855
- </span>
856
- </button>
857
- </div>
858
- </span>
859
- </td>
860
- </tr>
861
- <tr data-id="895" class="cursor-pointer">
862
- <td data-field="Id">
863
- <span>895</span>
864
- </td>
865
- <td data-field="Name">
866
- <span>
867
- <span class="NoData">
868
- <span class="pointer-events-none user-select-none">No data</span>
869
- </span>
870
- </span>
871
- </td>
872
- <td data-field="VIN">
873
- <span>895</span>
874
- </td>
875
- <td data-field="Status">
876
- <span>Active</span>
877
- </td>
878
- <td data-field="Duration">
879
- <span>8h 45m</span>
880
- </td>
881
- <td class="table-action">
882
- <span>
883
- <div class="dropdown btn-group">
884
- <button type="button" id="6rvj7fp1fr9" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
885
- <span class="rioglyph rioglyph-option-vertical">
886
- </span>
887
- </button>
888
- </div>
889
- </span>
890
- </td>
891
- </tr>
892
- <tr data-id="978" class="cursor-pointer">
893
- <td data-field="Id">
894
- <span>978</span>
895
- </td>
896
- <td data-field="Name">
897
- <span>Ipsum</span>
898
- </td>
899
- <td data-field="VIN">
900
- <span>
901
- <span class="NoData">
902
- <span class="pointer-events-none user-select-none">No data</span>
903
- </span>
904
- </span>
905
- </td>
906
- <td data-field="Status">
907
- <span>Inactive</span>
908
- </td>
909
- <td data-field="Duration">
910
- <span>6h 35m</span>
911
- </td>
912
- <td class="table-action">
913
- <span>
914
- <div class="dropdown btn-group">
915
- <button type="button" id="bpw8bismz8n" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
916
- <span class="rioglyph rioglyph-option-vertical">
917
- </span>
918
- </button>
919
- </div>
920
- </span>
921
- </td>
922
- </tr>
923
- <tr data-id="2345" class="cursor-pointer">
924
- <td data-field="Id">
925
- <span>2345</span>
926
- </td>
927
- <td data-field="Name">
928
- <span>Lorem</span>
929
- </td>
930
- <td data-field="VIN">
931
- <span>2345</span>
932
- </td>
933
- <td data-field="Status">
934
- <span>Active</span>
935
- </td>
936
- <td data-field="Duration">
937
- <span>11h 50m</span>
938
- </td>
939
- <td class="table-action">
940
- <span>
941
- <div class="dropdown btn-group">
942
- <button type="button" id="tioncbd131" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
943
- <span class="rioglyph rioglyph-option-vertical">
944
- </span>
945
- </button>
946
- </div>
947
- </span>
948
- </td>
949
- </tr>
950
- <tr data-id="2445" class="cursor-pointer">
951
- <td data-field="Id">
952
- <span>2445</span>
953
- </td>
954
- <td data-field="Name">
955
- <span>
956
- <span class="NoData">
957
- <span class="pointer-events-none user-select-none">No data</span>
958
- </span>
959
- </span>
960
- </td>
961
- <td data-field="VIN">
962
- <span>2445</span>
963
- </td>
964
- <td data-field="Status">
965
- <span>Active</span>
966
- </td>
967
- <td data-field="Duration">
968
- <span>7h 25m</span>
969
- </td>
970
- <td class="table-action">
971
- <span>
972
- <div class="dropdown btn-group">
973
- <button type="button" id="1re6dmpq3j8" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
974
- <span class="rioglyph rioglyph-option-vertical">
975
- </span>
976
- </button>
977
- </div>
978
- </span>
979
- </td>
980
- </tr>
981
- <tr data-id="3456" class="cursor-pointer">
982
- <td data-field="Id">
983
- <span>3456</span>
984
- </td>
985
- <td data-field="Name">
986
- <span>
987
- <span class="NoData">
988
- <span class="pointer-events-none user-select-none">No data</span>
989
- </span>
990
- </span>
991
- </td>
992
- <td data-field="VIN">
993
- <span>3456</span>
994
- </td>
995
- <td data-field="Status">
996
- <span>Active</span>
997
- </td>
998
- <td data-field="Duration">
999
- <span>12h 00m</span>
1000
- </td>
1001
- <td class="table-action">
1002
- <span>
1003
- <div class="dropdown btn-group">
1004
- <button type="button" id="6hsw746njhy" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
1005
- <span class="rioglyph rioglyph-option-vertical">
1006
- </span>
1007
- </button>
1008
- </div>
1009
- </span>
1010
- </td>
1011
- </tr>
1012
- <tr data-id="4567" class="cursor-pointer">
1013
- <td data-field="Id">
1014
- <span>4567</span>
1015
- </td>
1016
- <td data-field="Name">
1017
- <span>
1018
- <span class="NoData">
1019
- <span class="pointer-events-none user-select-none">No data</span>
1020
- </span>
1021
- </span>
1022
- </td>
1023
- <td data-field="VIN">
1024
- <span>4567</span>
1025
- </td>
1026
- <td data-field="Status">
1027
- <span>Active</span>
1028
- </td>
1029
- <td data-field="Duration">
1030
- <span>10h 20m</span>
1031
- </td>
1032
- <td class="table-action">
1033
- <span>
1034
- <div class="dropdown btn-group">
1035
- <button type="button" id="bg7yaoxc7oo" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
1036
- <span class="rioglyph rioglyph-option-vertical">
1037
- </span>
1038
- </button>
1039
- </div>
1040
- </span>
1041
- </td>
1042
- </tr>
1043
- <tr data-id="7354" class="cursor-pointer">
1044
- <td data-field="Id">
1045
- <span>7354</span>
1046
- </td>
1047
- <td data-field="Name">
1048
- <span>Lorem</span>
1049
- </td>
1050
- <td data-field="VIN">
1051
- <span>7354</span>
1052
- </td>
1053
- <td data-field="Status">
1054
- <span>Active</span>
1055
- </td>
1056
- <td data-field="Duration">
1057
- <span>10h 30m</span>
1058
- </td>
1059
- <td class="table-action">
1060
- <span>
1061
- <div class="dropdown btn-group">
1062
- <button type="button" id="atfm8lhvq9u" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
1063
- <span class="rioglyph rioglyph-option-vertical">
1064
- </span>
1065
- </button>
1066
- </div>
1067
- </span>
1068
- </td>
1069
- </tr>
1070
- <tr class="table-card-placeholder">
1071
- </tr>
1072
- <tr class="table-card-placeholder">
1073
- </tr>
1074
- <tr class="table-card-placeholder">
1075
- </tr>
1076
- <tr class="table-card-placeholder">
1077
- </tr>
1078
- <tr class="table-card-placeholder">
1079
- </tr>
1080
- <tr class="table-card-placeholder">
1081
- </tr>
1082
- <tr class="table-card-placeholder">
1083
- </tr>
1084
- <tr class="table-card-placeholder">
1085
- </tr>
1086
- <tr class="table-card-placeholder">
1087
- </tr>
1088
- <tr class="table-card-placeholder">
1089
- </tr>
1090
- </tbody>
1091
- </table>
1092
- </div>
1093
- <div class="LoadMoreButton align-items-center display-flex justify-content-center margin-top-25 margin-bottom-25 non-printable">
1094
- <div class="min-width-150">
1095
- <div class="text-center margin-bottom-3">
1096
- <span class="text-medium">70</span>
1097
- <span class="margin-left-5 margin-right-5">/</span>
1098
- <span class="text-medium">100</span>
1099
- </div>
1100
- <div class="progress height-2 margin-bottom-10 bg-white">
1101
- <div class="progress-bar" style="width: 70%;">
1102
- </div>
1103
- </div>
1104
- <div class="display-flex justify-content-center">
1105
- <button class="btn btn-link padding-right-20 margin-top--5" type="button">
1106
- <span class="rioglyph rioglyph-arrow-down">
1107
- </span>Load more</button>
1108
- </div>
1109
- </div>
1110
- </div>
1111
- </div>
1112
- ```