@rio-cloud/uikit-mcp 1.1.8 → 1.1.10

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 (210) hide show
  1. package/README.md +17 -7
  2. package/dist/doc-metadata.json +325 -85
  3. package/dist/docs/components/accentBar.md +110 -116
  4. package/dist/docs/components/activity.md +1 -1
  5. package/dist/docs/components/analyticsAnalysisOverlay.md +628 -0
  6. package/dist/docs/components/animatedNumber.md +2 -2
  7. package/dist/docs/components/animatedTextReveal.md +53 -55
  8. package/dist/docs/components/animations.md +22 -22
  9. package/dist/docs/components/appHeader.md +27 -38
  10. package/dist/docs/components/appLayout.md +38 -42
  11. package/dist/docs/components/appNavigationBar.md +1 -1
  12. package/dist/docs/components/areaCharts.md +57 -63
  13. package/dist/docs/components/aspectRatioPlaceholder.md +1 -1
  14. package/dist/docs/components/assetTree.md +200 -167
  15. package/dist/docs/components/autosuggests.md +1 -1
  16. package/dist/docs/components/avatar.md +1 -1
  17. package/dist/docs/components/banner.md +2 -2
  18. package/dist/docs/components/barCharts.md +531 -417
  19. package/dist/docs/components/barList.md +9 -9
  20. package/dist/docs/components/basicMap.md +60 -39
  21. package/dist/docs/components/bottomSheet.md +2 -2
  22. package/dist/docs/components/button.md +8 -2
  23. package/dist/docs/components/buttonToolbar.md +1 -1
  24. package/dist/docs/components/calendarStripe.md +57 -65
  25. package/dist/docs/components/card.md +1 -1
  26. package/dist/docs/components/carousel.md +1 -1
  27. package/dist/docs/components/chartColors.md +1 -3
  28. package/dist/docs/components/chartsGettingStarted.md +1 -3
  29. package/dist/docs/components/chat.md +2 -2
  30. package/dist/docs/components/checkbox.md +15 -12
  31. package/dist/docs/components/circularProgress.md +8 -8
  32. package/dist/docs/components/clearableInput.md +1 -1
  33. package/dist/docs/components/collapse.md +2 -4
  34. package/dist/docs/components/composedCharts.md +63 -53
  35. package/dist/docs/components/contentLoader.md +1 -1
  36. package/dist/docs/components/dataTabs.md +33 -33
  37. package/dist/docs/components/datepickers.md +693 -687
  38. package/dist/docs/components/dayPicker.md +5574 -0
  39. package/dist/docs/components/dayPickerCalendar.md +5269 -0
  40. package/dist/docs/components/dialogs.md +17 -19
  41. package/dist/docs/components/divider.md +1 -1
  42. package/dist/docs/components/dropdowns.md +3252 -3276
  43. package/dist/docs/components/editableContent.md +91 -91
  44. package/dist/docs/components/expander.md +4 -1
  45. package/dist/docs/components/fade.md +1 -1
  46. package/dist/docs/components/fadeExpander.md +1 -1
  47. package/dist/docs/components/fadeUp.md +32 -36
  48. package/dist/docs/components/feedback.md +1 -1
  49. package/dist/docs/components/filePickers.md +1 -1
  50. package/dist/docs/components/formLabel.md +29 -31
  51. package/dist/docs/components/groupedItemList.md +3 -7
  52. package/dist/docs/components/htmlTable.md +5074 -0
  53. package/dist/docs/components/iconList.md +4 -4
  54. package/dist/docs/components/imagePreloader.md +1 -1
  55. package/dist/docs/components/labeledElement.md +1 -1
  56. package/dist/docs/components/licensePlate.md +1 -1
  57. package/dist/docs/components/lineCharts.md +172 -172
  58. package/dist/docs/components/listMenu.md +15 -12
  59. package/dist/docs/components/loadMore.md +4 -2
  60. package/dist/docs/components/mainNavigation.md +1 -1
  61. package/dist/docs/components/mapCircle.md +10 -1
  62. package/dist/docs/components/mapCluster.md +23 -1
  63. package/dist/docs/components/mapContext.md +12 -4
  64. package/dist/docs/components/mapDraggableMarker.md +12 -1
  65. package/dist/docs/components/mapGettingStarted.md +1 -1
  66. package/dist/docs/components/mapInfoBubble.md +129 -2
  67. package/dist/docs/components/mapLayerGroup.md +10 -1
  68. package/dist/docs/components/mapMarker.md +10 -3
  69. package/dist/docs/components/mapPolygon.md +288 -85
  70. package/dist/docs/components/mapRoute.md +262 -172
  71. package/dist/docs/components/mapRouteGenerator.md +1 -1
  72. package/dist/docs/components/mapSettings.md +23 -1
  73. package/dist/docs/components/mapUtils.md +1 -1
  74. package/dist/docs/components/multiselects.md +211 -18
  75. package/dist/docs/components/noData.md +1 -1
  76. package/dist/docs/components/notifications.md +2 -2
  77. package/dist/docs/components/numbercontrol.md +15 -15
  78. package/dist/docs/components/onboarding.md +1 -1
  79. package/dist/docs/components/page.md +1 -1
  80. package/dist/docs/components/pager.md +1 -1
  81. package/dist/docs/components/pieCharts.md +237 -213
  82. package/dist/docs/components/popover.md +1 -1
  83. package/dist/docs/components/position.md +1 -1
  84. package/dist/docs/components/radialBarCharts.md +446 -400
  85. package/dist/docs/components/radioCardGroup.md +1 -1
  86. package/dist/docs/components/radiobutton.md +96 -98
  87. package/dist/docs/components/releaseNotes.md +1 -1
  88. package/dist/docs/components/resizer.md +1 -3
  89. package/dist/docs/components/responsiveColumnStripe.md +1 -3
  90. package/dist/docs/components/responsiveVideo.md +1 -1
  91. package/dist/docs/components/rioglyph.md +1 -1
  92. package/dist/docs/components/rules.md +41 -47
  93. package/dist/docs/components/saveableInput.md +252 -252
  94. package/dist/docs/components/selects.md +165 -111
  95. package/dist/docs/components/sidebar.md +1 -1
  96. package/dist/docs/components/sliders.md +1 -1
  97. package/dist/docs/components/smoothScrollbars.md +19 -15
  98. package/dist/docs/components/spinners.md +1 -1
  99. package/dist/docs/components/states.md +1 -1
  100. package/dist/docs/components/statsWidgets.md +1 -1
  101. package/dist/docs/components/statusBar.md +1 -1
  102. package/dist/docs/components/stepButton.md +1 -1
  103. package/dist/docs/components/steppedProgressBars.md +9 -11
  104. package/dist/docs/components/subNavigation.md +1 -1
  105. package/dist/docs/components/supportMarker.md +1 -1
  106. package/dist/docs/components/svgImage.md +1 -1
  107. package/dist/docs/components/switch.md +3 -1
  108. package/dist/docs/components/table.md +19584 -0
  109. package/dist/docs/components/tableControls.md +982 -0
  110. package/dist/docs/components/tagManager.md +1 -1
  111. package/dist/docs/components/tags.md +1 -1
  112. package/dist/docs/components/teaser.md +1 -3
  113. package/dist/docs/components/textTruncateMiddle.md +1 -1
  114. package/dist/docs/components/timeline.md +1 -1
  115. package/dist/docs/components/timepicker.md +1 -1
  116. package/dist/docs/components/toggleButton.md +3 -1
  117. package/dist/docs/components/tooltip.md +4 -2
  118. package/dist/docs/components/tracker.md +1 -1
  119. package/dist/docs/components/virtualList.md +56 -56
  120. package/dist/docs/foundations.md +640 -3122
  121. package/dist/docs/start/changelog.md +53 -3
  122. package/dist/docs/start/goodtoknow.md +2 -4
  123. package/dist/docs/start/guidelines/color-combinations.md +1 -1
  124. package/dist/docs/start/guidelines/custom-css.md +1 -1
  125. package/dist/docs/start/guidelines/custom-rioglyph.md +1 -1
  126. package/dist/docs/start/guidelines/formatting.md +1 -3
  127. package/dist/docs/start/guidelines/iframe.md +17 -19
  128. package/dist/docs/start/guidelines/obfuscate-data.md +2 -4
  129. package/dist/docs/start/guidelines/print-css.md +1 -1
  130. package/dist/docs/start/guidelines/spinner.md +1 -1
  131. package/dist/docs/start/guidelines/state-in-url.md +1 -1
  132. package/dist/docs/start/guidelines/supported-browsers.md +1 -1
  133. package/dist/docs/start/guidelines/writing.md +1 -1
  134. package/dist/docs/start/howto.md +12 -20
  135. package/dist/docs/start/intro.md +1 -1
  136. package/dist/docs/start/responsiveness.md +1 -3
  137. package/dist/docs/templates/ai-assistant.md +311 -0
  138. package/dist/docs/templates/common-table.md +814 -0
  139. package/dist/docs/templates/detail-views.md +846 -0
  140. package/dist/docs/templates/expandable-details.md +214 -0
  141. package/dist/docs/templates/feature-cards.md +479 -0
  142. package/dist/docs/templates/form-summary.md +179 -0
  143. package/dist/docs/templates/form-toggle.md +329 -0
  144. package/dist/docs/templates/list-blocks.md +872 -0
  145. package/dist/docs/templates/loading-progress.md +100 -0
  146. package/dist/docs/templates/options-panel.md +132 -0
  147. package/dist/docs/templates/panel-variants.md +137 -0
  148. package/dist/docs/templates/progress-cards.md +541 -0
  149. package/dist/docs/templates/progress-success.md +125 -0
  150. package/dist/docs/templates/settings-form.md +401 -0
  151. package/dist/docs/templates/stats-blocks.md +1245 -0
  152. package/dist/docs/templates/table-panel.md +310 -0
  153. package/dist/docs/templates/usage-cards.md +199 -0
  154. package/dist/docs/utilities/classNames.md +1 -1
  155. package/dist/docs/utilities/deviceUtils.md +2 -2
  156. package/dist/docs/utilities/featureToggles.md +1 -1
  157. package/dist/docs/utilities/fuelTypeUtils.md +27 -29
  158. package/dist/docs/utilities/getTrackingAttributes.md +277 -0
  159. package/dist/docs/utilities/routeUtils.md +2 -2
  160. package/dist/docs/utilities/useAfterMount.md +1 -1
  161. package/dist/docs/utilities/useAutoAnimate.md +1 -1
  162. package/dist/docs/utilities/useAverage.md +1 -1
  163. package/dist/docs/utilities/useClickOutside.md +1 -1
  164. package/dist/docs/utilities/useClipboard.md +2 -2
  165. package/dist/docs/utilities/useCookies.md +1 -1
  166. package/dist/docs/utilities/useCount.md +1 -1
  167. package/dist/docs/utilities/useDarkMode.md +5 -4
  168. package/dist/docs/utilities/useDebugInfo.md +3 -3
  169. package/dist/docs/utilities/useDraggableElement.md +281 -0
  170. package/dist/docs/utilities/useEffectOnce.md +1 -1
  171. package/dist/docs/utilities/useElapsedTime.md +1 -1
  172. package/dist/docs/utilities/useElementSize.md +1 -1
  173. package/dist/docs/utilities/useEsc.md +1 -1
  174. package/dist/docs/utilities/useEvent.md +1 -1
  175. package/dist/docs/utilities/useFocusTrap.md +1 -1
  176. package/dist/docs/utilities/useFullscreen.md +1 -1
  177. package/dist/docs/utilities/useHover.md +1 -1
  178. package/dist/docs/utilities/useIncomingPostMessages.md +1 -1
  179. package/dist/docs/utilities/useInterval.md +1 -1
  180. package/dist/docs/utilities/useIsFocusWithin.md +1 -1
  181. package/dist/docs/utilities/useKey.md +8 -10
  182. package/dist/docs/utilities/useLocalStorage.md +1 -1
  183. package/dist/docs/utilities/useLocationSuggestions.md +1 -1
  184. package/dist/docs/utilities/useMax.md +1 -1
  185. package/dist/docs/utilities/useMin.md +1 -1
  186. package/dist/docs/utilities/useMutationObserver.md +1 -1
  187. package/dist/docs/utilities/useOnScreen.md +1 -1
  188. package/dist/docs/utilities/useOnlineStatus.md +1 -1
  189. package/dist/docs/utilities/usePostMessage.md +2 -2
  190. package/dist/docs/utilities/usePostMessageSender.md +1 -1
  191. package/dist/docs/utilities/usePrevious.md +2 -4
  192. package/dist/docs/utilities/useResizeObserver.md +35 -15
  193. package/dist/docs/utilities/useRioCookieConsent.md +1 -1
  194. package/dist/docs/utilities/useScrollPosition.md +3 -6
  195. package/dist/docs/utilities/useSearch.md +1 -3
  196. package/dist/docs/utilities/useSearchHighlight.md +1 -1
  197. package/dist/docs/utilities/useSorting.md +370 -239
  198. package/dist/docs/utilities/useStateWithValidation.md +1 -1
  199. package/dist/docs/utilities/useSum.md +1 -1
  200. package/dist/docs/utilities/useTableExport.md +364 -288
  201. package/dist/docs/utilities/useTableSelection.md +88 -92
  202. package/dist/docs/utilities/useTimeout.md +1 -1
  203. package/dist/docs/utilities/useToggle.md +1 -1
  204. package/dist/docs/utilities/useUrlState.md +1 -1
  205. package/dist/docs/utilities/useWindowResize.md +1 -1
  206. package/dist/index.mjs +2 -8
  207. package/dist/search-synonyms.json +2 -2
  208. package/dist/version.json +2 -2
  209. package/package.json +15 -9
  210. package/dist/docs/components/tables.md +0 -8
@@ -0,0 +1,982 @@
1
+ # Table controls
2
+
3
+ *Category:* Components
4
+ *Section:* Table
5
+ *Source:* https://uikit.developers.rio.cloud/#/components/tableControls
6
+ *Captured:* 2026-04-20T12:54:36.257Z
7
+
8
+ The toolbar and its content has to be implemented by each team itself. Please use the sample as a reference and adapt it accordingly.
9
+
10
+ ## Table controls
11
+
12
+ > These controls can be used with both Table component and HTML table components.
13
+
14
+ ## TableToolbar
15
+
16
+ ### Example: Example 1
17
+
18
+ TableToolbar label
19
+
20
+ ‹ April 2026 ›
21
+ Su Mo Tu We Th Fr Sa
22
+
23
+ 29 30 31 1 2 3 4
24
+ 5 6 7 8 9 10 11
25
+ 12 13 14 15 16 17 18
26
+ 19 20 21 22 23 24 25
27
+ 26 27 28 29 30 1 2
28
+ 3 4 5 6 7 8 9
29
+
30
+ 12:00 AM
31
+
32
+ TableToolbar button
33
+
34
+ TableToolbar label
35
+
36
+ Table view
37
+ Cards view
38
+ List view
39
+
40
+ #### React (tsx)
41
+
42
+ ```tsx
43
+ import TableToolbar, { TableToolbarColumn } from '@rio-cloud/rio-uikit/TableToolbar';
44
+ import TableSearch from '@rio-cloud/rio-uikit/TableSearch';
45
+ import DatePicker from '@rio-cloud/rio-uikit/DatePicker';
46
+ import Button from '@rio-cloud/rio-uikit/Button';
47
+ import TableViewToggles, { type TableViewTogglesViewType } from '@rio-cloud/rio-uikit/TableViewToggles';
48
+
49
+ const TableToolbarDemo = () => (
50
+ <TableToolbar>
51
+ <TableToolbarColumn label='TableToolbar label' className='min-width-200'>
52
+ <DatePicker inputProps={{ placeholder: 'Select Date' }} />
53
+ </TableToolbarColumn>
54
+ <TableToolbarColumn>
55
+ <Button bsStyle={Button.PRIMARY}>TableToolbar button</Button>
56
+ </TableToolbarColumn>
57
+ <TableToolbarColumn horizontalAlign='right' label='TableToolbar label'>
58
+ <TableSearch placeholder='Search in table' />
59
+ </TableToolbarColumn>
60
+ <TableToolbarColumn horizontalAlign='right' separator>
61
+ <TableViewToggles
62
+ initialViewType={TableViewToggles.VIEW_TYPE_TABLE}
63
+ tableViewLabel='Table view'
64
+ singleCardViewLabel='List view'
65
+ multiCardsViewLabel='Cards view'
66
+ onViewTypeChange={(viewType: TableViewTogglesViewType) => console.log(viewType)}
67
+ />
68
+ </TableToolbarColumn>
69
+ <TableToolbarColumn horizontalAlign='right'>
70
+ <Button iconOnly iconName='rioglyph-settings' />
71
+ </TableToolbarColumn>
72
+ </TableToolbar>
73
+ );
74
+
75
+ export default TableToolbarDemo;
76
+ ```
77
+
78
+ #### HTML (html)
79
+
80
+ ```html
81
+ <div class="table-toolbar">
82
+ <div class="table-toolbar-container">
83
+ <div class="table-toolbar-group-left">
84
+ <div class="table-toolbar-column align-self-end min-width-200">
85
+ <label class="table-toolbar-label">TableToolbar label</label>
86
+ <div class="rdt DatePicker form-group">
87
+ <div class="input-group">
88
+ <span class="input-group-addon">
89
+ <span class="rioglyph rioglyph-calendar" aria-hidden="true">
90
+ </span>
91
+ </span>
92
+ <div class="ClearableInput input-group">
93
+ <input type="text" class="form-control" placeholder="Select Date" value="">
94
+ </div>
95
+ </div>
96
+ <div class="rdtPicker">
97
+ <div class="rdtDays">
98
+ <table>
99
+ <thead>
100
+ <tr>
101
+ <th class="rdtPrev">
102
+ <span>‹</span>
103
+ </th>
104
+ <th class="rdtSwitch" colspan="5" data-value="3">April 2026</th>
105
+ <th class="rdtNext">
106
+ <span>›</span>
107
+ </th>
108
+ </tr>
109
+ <tr>
110
+ <th class="dow">Su</th>
111
+ <th class="dow">Mo</th>
112
+ <th class="dow">Tu</th>
113
+ <th class="dow">We</th>
114
+ <th class="dow">Th</th>
115
+ <th class="dow">Fr</th>
116
+ <th class="dow">Sa</th>
117
+ </tr>
118
+ </thead>
119
+ <tbody>
120
+ <tr>
121
+ <td data-value="29" data-month="2" data-year="2026" class="rdtDay rdtOld">29</td>
122
+ <td data-value="30" data-month="2" data-year="2026" class="rdtDay rdtOld">30</td>
123
+ <td data-value="31" data-month="2" data-year="2026" class="rdtDay rdtOld">31</td>
124
+ <td data-value="1" data-month="3" data-year="2026" class="rdtDay">1</td>
125
+ <td data-value="2" data-month="3" data-year="2026" class="rdtDay">2</td>
126
+ <td data-value="3" data-month="3" data-year="2026" class="rdtDay">3</td>
127
+ <td data-value="4" data-month="3" data-year="2026" class="rdtDay">4</td>
128
+ </tr>
129
+ <tr>
130
+ <td data-value="5" data-month="3" data-year="2026" class="rdtDay">5</td>
131
+ <td data-value="6" data-month="3" data-year="2026" class="rdtDay">6</td>
132
+ <td data-value="7" data-month="3" data-year="2026" class="rdtDay">7</td>
133
+ <td data-value="8" data-month="3" data-year="2026" class="rdtDay">8</td>
134
+ <td data-value="9" data-month="3" data-year="2026" class="rdtDay">9</td>
135
+ <td data-value="10" data-month="3" data-year="2026" class="rdtDay">10</td>
136
+ <td data-value="11" data-month="3" data-year="2026" class="rdtDay">11</td>
137
+ </tr>
138
+ <tr>
139
+ <td data-value="12" data-month="3" data-year="2026" class="rdtDay">12</td>
140
+ <td data-value="13" data-month="3" data-year="2026" class="rdtDay">13</td>
141
+ <td data-value="14" data-month="3" data-year="2026" class="rdtDay">14</td>
142
+ <td data-value="15" data-month="3" data-year="2026" class="rdtDay">15</td>
143
+ <td data-value="16" data-month="3" data-year="2026" class="rdtDay">16</td>
144
+ <td data-value="17" data-month="3" data-year="2026" class="rdtDay">17</td>
145
+ <td data-value="18" data-month="3" data-year="2026" class="rdtDay">18</td>
146
+ </tr>
147
+ <tr>
148
+ <td data-value="19" data-month="3" data-year="2026" class="rdtDay">19</td>
149
+ <td data-value="20" data-month="3" data-year="2026" class="rdtDay rdtToday">20</td>
150
+ <td data-value="21" data-month="3" data-year="2026" class="rdtDay">21</td>
151
+ <td data-value="22" data-month="3" data-year="2026" class="rdtDay">22</td>
152
+ <td data-value="23" data-month="3" data-year="2026" class="rdtDay">23</td>
153
+ <td data-value="24" data-month="3" data-year="2026" class="rdtDay">24</td>
154
+ <td data-value="25" data-month="3" data-year="2026" class="rdtDay">25</td>
155
+ </tr>
156
+ <tr>
157
+ <td data-value="26" data-month="3" data-year="2026" class="rdtDay">26</td>
158
+ <td data-value="27" data-month="3" data-year="2026" class="rdtDay">27</td>
159
+ <td data-value="28" data-month="3" data-year="2026" class="rdtDay">28</td>
160
+ <td data-value="29" data-month="3" data-year="2026" class="rdtDay">29</td>
161
+ <td data-value="30" data-month="3" data-year="2026" class="rdtDay">30</td>
162
+ <td data-value="1" data-month="4" data-year="2026" class="rdtDay rdtNew">1</td>
163
+ <td data-value="2" data-month="4" data-year="2026" class="rdtDay rdtNew">2</td>
164
+ </tr>
165
+ <tr>
166
+ <td data-value="3" data-month="4" data-year="2026" class="rdtDay rdtNew">3</td>
167
+ <td data-value="4" data-month="4" data-year="2026" class="rdtDay rdtNew">4</td>
168
+ <td data-value="5" data-month="4" data-year="2026" class="rdtDay rdtNew">5</td>
169
+ <td data-value="6" data-month="4" data-year="2026" class="rdtDay rdtNew">6</td>
170
+ <td data-value="7" data-month="4" data-year="2026" class="rdtDay rdtNew">7</td>
171
+ <td data-value="8" data-month="4" data-year="2026" class="rdtDay rdtNew">8</td>
172
+ <td data-value="9" data-month="4" data-year="2026" class="rdtDay rdtNew">9</td>
173
+ </tr>
174
+ </tbody>
175
+ <tfoot>
176
+ <tr>
177
+ <td colspan="7" class="rdtTimeToggle">12:00 AM</td>
178
+ </tr>
179
+ </tfoot>
180
+ </table>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ <div class="table-toolbar-column align-self-end">
186
+ <button type="button" class="btn btn-primary btn-component" tabindex="0">TableToolbar button</button>
187
+ </div>
188
+ </div>
189
+ <div class="table-toolbar-group-right">
190
+ <div class="table-toolbar-column align-self-end">
191
+ <label class="table-toolbar-label">TableToolbar label</label>
192
+ <div class="table-toolbar-search input-group">
193
+ <span class="input-group-addon">
194
+ <span class="rioglyph rioglyph-search">
195
+ </span>
196
+ </span>
197
+ <div class="ClearableInput input-group">
198
+ <input placeholder="Search in table" class="form-control" type="text" tabindex="0" value="">
199
+ <span class="clearButton hide">
200
+ <span class="clearButtonIcon rioglyph rioglyph-remove-sign">
201
+ </span>
202
+ </span>
203
+ </div>
204
+ </div>
205
+ </div>
206
+ <div class="table-toolbar-column align-self-end table-toolbar-column-separator">
207
+ <div class="TableViewToggles">
208
+ <div class="form-group margin-bottom-0">
209
+ <div class="select dropdown">
210
+ <button type="button" class="dropdown-toggle form-control text-left" data-toggle="dropdown" tabindex="0" aria-haspopup="true" aria-expanded="false">
211
+ <span class="selected-option-text">
212
+ <span>
213
+ <span class="rioglyph rioglyph-table-view">
214
+ </span>
215
+ </span>
216
+ </span>
217
+ <span class="select-toggle-actions">
218
+ <span class="clearButton hide pointer-events-none">
219
+ <span class="clearButtonIcon rioglyph rioglyph-remove-sign">
220
+ </span>
221
+ </span>
222
+ <span class="caret">
223
+ </span>
224
+ </span>
225
+ </button>
226
+ <ul class="dropdown-menu pull-right" role="menu">
227
+ <li class="" role="listitem">
228
+ <a role="menuitem" class="display-flex align-items-center gap-3" data-item-id="TABLE" data-item-index="0">
229
+ <span class="selected-option-dropdown-item">
230
+ <span class="rioglyph rioglyph-table-view">
231
+ </span>Table view</span>
232
+ <input type="hidden" value="TABLE">
233
+ </a>
234
+ </li>
235
+ <li class="" role="listitem">
236
+ <a role="menuitem" class="display-flex align-items-center gap-3" data-item-id="MULTI_CARDS" data-item-index="1">
237
+ <span class="selected-option-dropdown-item">
238
+ <span class="rioglyph rioglyph-split-view">
239
+ </span>Cards view</span>
240
+ <input type="hidden" value="MULTI_CARDS">
241
+ </a>
242
+ </li>
243
+ <li class="" role="listitem">
244
+ <a role="menuitem" class="display-flex align-items-center gap-3" data-item-id="SINGLE_CARD" data-item-index="2">
245
+ <span class="selected-option-dropdown-item">
246
+ <span class="rioglyph rioglyph-th-list">
247
+ </span>List view</span>
248
+ <input type="hidden" value="SINGLE_CARD">
249
+ </a>
250
+ </li>
251
+ </ul>
252
+ </div>
253
+ </div>
254
+ </div>
255
+ </div>
256
+ <div class="table-toolbar-column align-self-end">
257
+ <button type="button" class="btn btn-default btn-icon-only btn-component" tabindex="0">
258
+ <span class="rioglyph rioglyph-settings">
259
+ </span>
260
+ </button>
261
+ </div>
262
+ </div>
263
+ </div>
264
+ </div>
265
+ ```
266
+
267
+ #### Props: TableToolbar
268
+
269
+ ### TableToolbar
270
+
271
+ | Name | Type | Default | Description |
272
+ | --- | --- | --- | --- |
273
+ | className | string | — | Optional class names for the wrapper element. |
274
+ | collapseCardClassName | string | — | Optional class names for the card that wraps collapsed toolbar controls in the compact mobile layout. |
275
+ | responsiveCollapseBreakpoint | number | 544 | Optional toolbar width in pixels at which the toolbar switches into its compact mobile/collapsible layout. |
276
+ | disableResponsiveCollapse | boolean | false | Disables the compact mobile/collapsible toolbar layout. Use this as an escape hatch when a consuming service needs to keep the default wrapping toolbar behavior regardless of the available toolbar width. |
277
+
278
+ #### Props: TableCardsSorting
279
+
280
+ ### TableCardsSorting
281
+
282
+ | Name | Type | Default | Description |
283
+ | --- | --- | --- | --- |
284
+ | sortName | string | — | "Name", "Key", or "Id" of the current sorted column. |
285
+ | sortOrder | 'asc' \| 'desc' | 'asc' | Defines the sort direction. |
286
+ | selectOptions | TableCardsSortingOption[] | — | List of objects for the column name select component. |
287
+ | └id | string | — | ID to use for the select option. |
288
+ | └label | string \| React.ReactNode | — | Translated column label to be shown in the select. |
289
+ | └selected | boolean | — | Defines the column which is currently sorted by. |
290
+ | └disabled | boolean | — | Defines if the column can be sorted. Hence, it will be disabled in the select. |
291
+ | onSortChange | (name: string, order: 'asc' \| 'desc') => void | noop | Function that is called when the sort key or direction changes. |
292
+ | className | string | — | Optional class names for the wrapper element. |
293
+
294
+ ## TableSearch
295
+
296
+ ### Example: Example 2
297
+
298
+ ID
299
+
300
+ Name
301
+
302
+ Status
303
+
304
+ 7354
305
+
306
+ Vehicle 7354
307
+
308
+ Active
309
+
310
+ 233
311
+
312
+ Vehicle 233
313
+
314
+ Inactive
315
+
316
+ 895
317
+
318
+ Vehicle 895
319
+
320
+ Active
321
+
322
+ 3456
323
+
324
+ Vehicle 3456
325
+
326
+ Active
327
+
328
+ #### React (tsx)
329
+
330
+ ```tsx
331
+ import { useState } from 'react';
332
+
333
+ import Table, { TableBody, TableColumn, TableHeader, TableHeaderColumn, TableRow } from '@rio-cloud/rio-uikit/Table';
334
+ import TableToolbar, { TableToolbarColumn } from '@rio-cloud/rio-uikit/TableToolbar';
335
+ import TableSearch from '@rio-cloud/rio-uikit/TableSearch';
336
+
337
+ const demoItems = [
338
+ { id: '7354', name: 'Vehicle 7354', status: 'Active' },
339
+ { id: '233', name: 'Vehicle 233', status: 'Inactive' },
340
+ { id: '895', name: 'Vehicle 895', status: 'Active' },
341
+ { id: '3456', name: 'Vehicle 3456', status: 'Active' },
342
+ ];
343
+
344
+ const TableSearchDemo = () => {
345
+ const [searchValue, setSearchValue] = useState('');
346
+
347
+ const normalizedSearchValue = searchValue.toLowerCase();
348
+ const filteredItems = demoItems.filter(
349
+ item =>
350
+ item.id.toLowerCase().includes(normalizedSearchValue) ||
351
+ item.name.toLowerCase().includes(normalizedSearchValue) ||
352
+ item.status.toLowerCase().includes(normalizedSearchValue)
353
+ );
354
+
355
+ return (
356
+ <div>
357
+ <TableToolbar>
358
+ <TableToolbarColumn horizontalAlign='right'>
359
+ <TableSearch value={searchValue} onChange={setSearchValue} placeholder='Search in table' />
360
+ </TableToolbarColumn>
361
+ </TableToolbar>
362
+ <Table hover>
363
+ <TableHeader>
364
+ <TableHeaderColumn columnKey='id'>ID</TableHeaderColumn>
365
+ <TableHeaderColumn columnKey='name'>Name</TableHeaderColumn>
366
+ <TableHeaderColumn columnKey='status'>Status</TableHeaderColumn>
367
+ </TableHeader>
368
+ <TableBody>
369
+ {filteredItems.map(item => (
370
+ <TableRow key={item.id} id={item.id}>
371
+ <TableColumn>
372
+ <span>{item.id}</span>
373
+ </TableColumn>
374
+ <TableColumn>
375
+ <span>{item.name}</span>
376
+ </TableColumn>
377
+ <TableColumn>
378
+ <span>{item.status}</span>
379
+ </TableColumn>
380
+ </TableRow>
381
+ ))}
382
+ </TableBody>
383
+ </Table>
384
+ </div>
385
+ );
386
+ };
387
+
388
+ export default TableSearchDemo;
389
+ ```
390
+
391
+ #### HTML (html)
392
+
393
+ ```html
394
+ <div>
395
+ <div class="table-toolbar">
396
+ <div class="table-toolbar-container">
397
+ <div class="table-toolbar-group-right">
398
+ <div class="table-toolbar-column align-self-end">
399
+ <div class="table-toolbar-search input-group">
400
+ <span class="input-group-addon">
401
+ <span class="rioglyph rioglyph-search">
402
+ </span>
403
+ </span>
404
+ <div class="ClearableInput input-group">
405
+ <input placeholder="Search in table" class="form-control" type="text" tabindex="0" value="">
406
+ <span class="clearButton hide">
407
+ <span class="clearButtonIcon rioglyph rioglyph-remove-sign">
408
+ </span>
409
+ </span>
410
+ </div>
411
+ </div>
412
+ </div>
413
+ </div>
414
+ </div>
415
+ </div>
416
+ <div class="table table-view-table table-hover border table-rounded table-has-head" role="table" style="--table-columns: minmax(50px, 1fr) minmax(50px, 1fr) minmax(50px, 1fr); --table-areas: &quot;table-col-1 table-col-2 table-col-3&quot;; --table-column-count: 3; --table-sticky-reference-top: var(--table-sticky-offset); --table-width: 908px;" aria-colcount="3">
417
+ <div class="table-head" role="rowgroup">
418
+ <div class="table-head-grid" role="row" style="grid-template-rows: repeat(1, auto);">
419
+ <div class="table-head-cell table-head-cell-has-column-divider table-align-left table-vertical-align-middle" data-column="id" role="columnheader" aria-colindex="1" aria-rowindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
420
+ <div class="table-head-cell-content">
421
+ <div class="table-head-cell-content-row">
422
+ <span class="table-head-label-wrapper">
423
+ <span class="table-head-label">ID</span>
424
+ </span>
425
+ </div>
426
+ </div>
427
+ </div>
428
+ <div class="table-head-cell table-head-cell-has-column-divider table-align-left table-vertical-align-middle" data-column="name" role="columnheader" aria-colindex="2" aria-rowindex="1" style="grid-area: 1 / 2 / span 1 / span 1;">
429
+ <div class="table-head-cell-content">
430
+ <div class="table-head-cell-content-row">
431
+ <span class="table-head-label-wrapper">
432
+ <span class="table-head-label">Name</span>
433
+ </span>
434
+ </div>
435
+ </div>
436
+ </div>
437
+ <div class="table-head-cell table-align-left table-vertical-align-middle" data-column="status" role="columnheader" aria-colindex="3" aria-rowindex="1" style="grid-area: 1 / 3 / span 1 / span 1;">
438
+ <div class="table-head-cell-content">
439
+ <div class="table-head-cell-content-row">
440
+ <span class="table-head-label-wrapper">
441
+ <span class="table-head-label">Status</span>
442
+ </span>
443
+ </div>
444
+ </div>
445
+ </div>
446
+ </div>
447
+ </div>
448
+ <div class="table-body" role="rowgroup">
449
+ <div id="7354" class="table-row" data-index="0" data-row-id="0" role="row">
450
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="id" role="cell" aria-colindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
451
+ <div class="table-cell-content overflow-hidden">
452
+ <span>7354</span>
453
+ </div>
454
+ </div>
455
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="name" role="cell" aria-colindex="2" style="grid-area: 1 / 2 / span 1 / span 1;">
456
+ <div class="table-cell-content overflow-hidden">
457
+ <span>Vehicle 7354</span>
458
+ </div>
459
+ </div>
460
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="status" role="cell" aria-colindex="3" style="grid-area: 1 / 3 / span 1 / span 1;">
461
+ <div class="table-cell-content overflow-hidden">
462
+ <span>Active</span>
463
+ </div>
464
+ </div>
465
+ </div>
466
+ <div id="233" class="table-row" data-index="1" data-row-id="1" role="row">
467
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="id" role="cell" aria-colindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
468
+ <div class="table-cell-content overflow-hidden">
469
+ <span>233</span>
470
+ </div>
471
+ </div>
472
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="name" role="cell" aria-colindex="2" style="grid-area: 1 / 2 / span 1 / span 1;">
473
+ <div class="table-cell-content overflow-hidden">
474
+ <span>Vehicle 233</span>
475
+ </div>
476
+ </div>
477
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="status" role="cell" aria-colindex="3" style="grid-area: 1 / 3 / span 1 / span 1;">
478
+ <div class="table-cell-content overflow-hidden">
479
+ <span>Inactive</span>
480
+ </div>
481
+ </div>
482
+ </div>
483
+ <div id="895" class="table-row" data-index="2" data-row-id="2" role="row">
484
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="id" role="cell" aria-colindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
485
+ <div class="table-cell-content overflow-hidden">
486
+ <span>895</span>
487
+ </div>
488
+ </div>
489
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="name" role="cell" aria-colindex="2" style="grid-area: 1 / 2 / span 1 / span 1;">
490
+ <div class="table-cell-content overflow-hidden">
491
+ <span>Vehicle 895</span>
492
+ </div>
493
+ </div>
494
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="status" role="cell" aria-colindex="3" style="grid-area: 1 / 3 / span 1 / span 1;">
495
+ <div class="table-cell-content overflow-hidden">
496
+ <span>Active</span>
497
+ </div>
498
+ </div>
499
+ </div>
500
+ <div id="3456" class="table-row" data-index="3" data-row-id="3" role="row">
501
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="id" role="cell" aria-colindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
502
+ <div class="table-cell-content overflow-hidden">
503
+ <span>3456</span>
504
+ </div>
505
+ </div>
506
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="name" role="cell" aria-colindex="2" style="grid-area: 1 / 2 / span 1 / span 1;">
507
+ <div class="table-cell-content overflow-hidden">
508
+ <span>Vehicle 3456</span>
509
+ </div>
510
+ </div>
511
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="status" role="cell" aria-colindex="3" style="grid-area: 1 / 3 / span 1 / span 1;">
512
+ <div class="table-cell-content overflow-hidden">
513
+ <span>Active</span>
514
+ </div>
515
+ </div>
516
+ </div>
517
+ </div>
518
+ </div>
519
+ </div>
520
+ ```
521
+
522
+ #### Props: TableSearch
523
+
524
+ ### TableSearch
525
+
526
+ | Name | Type | Default | Description |
527
+ | --- | --- | --- | --- |
528
+ | className | string | — | Optional class names for the wrapper. |
529
+ | ...additional props | | — | As this component is using the ClearableInput component internally, checkout all possible props there. |
530
+
531
+ ## TableViewToggles
532
+
533
+ ### Example: Example 3
534
+
535
+ Table view
536
+ Cards view
537
+ List view
538
+
539
+ ID
540
+
541
+ Name
542
+
543
+ Status
544
+
545
+ 7354
546
+
547
+ Vehicle 7354
548
+
549
+ Active
550
+
551
+ 233
552
+
553
+ Vehicle 233
554
+
555
+ Inactive
556
+
557
+ 895
558
+
559
+ Vehicle 895
560
+
561
+ Maintenance
562
+
563
+ #### React (tsx)
564
+
565
+ ```tsx
566
+ import { useState } from 'react';
567
+
568
+ import Table, { TableBody, TableColumn, TableHeader, TableHeaderColumn, TableRow } from '@rio-cloud/rio-uikit/Table';
569
+ import TableToolbar, { TableToolbarColumn } from '@rio-cloud/rio-uikit/TableToolbar';
570
+ import TableViewToggles, { type TableViewTogglesViewType } from '@rio-cloud/rio-uikit/TableViewToggles';
571
+
572
+ const demoItems = [
573
+ { id: '7354', name: 'Vehicle 7354', status: 'Active' },
574
+ { id: '233', name: 'Vehicle 233', status: 'Inactive' },
575
+ { id: '895', name: 'Vehicle 895', status: 'Maintenance' },
576
+ ];
577
+
578
+ const statusLabelClassNames: Record<(typeof demoItems)[number]['status'], string> = {
579
+ Active: 'label label-success label-filled label-condensed',
580
+ Inactive: 'label label-warning label-filled label-condensed',
581
+ Maintenance: 'label label-info label-filled label-condensed',
582
+ };
583
+
584
+ const TableViewTogglesDemo = () => {
585
+ const [viewType, setViewType] = useState<TableViewTogglesViewType>(TableViewToggles.VIEW_TYPE_TABLE);
586
+
587
+ return (
588
+ <div>
589
+ <TableToolbar>
590
+ <TableToolbarColumn horizontalAlign='right'>
591
+ <TableViewToggles
592
+ viewType={viewType}
593
+ onViewTypeChange={setViewType}
594
+ tableViewLabel='Table view'
595
+ singleCardViewLabel='List view'
596
+ multiCardsViewLabel='Cards view'
597
+ />
598
+ </TableToolbarColumn>
599
+ </TableToolbar>
600
+ <Table viewType={viewType} hover>
601
+ <TableHeader>
602
+ <TableHeaderColumn columnKey='id'>ID</TableHeaderColumn>
603
+ <TableHeaderColumn columnKey='name'>Name</TableHeaderColumn>
604
+ <TableHeaderColumn columnKey='status'>Status</TableHeaderColumn>
605
+ </TableHeader>
606
+ <TableBody>
607
+ {demoItems.map(item => (
608
+ <TableRow key={item.id} id={item.id}>
609
+ <TableColumn>
610
+ <span>{item.id}</span>
611
+ </TableColumn>
612
+ <TableColumn>
613
+ <span>{item.name}</span>
614
+ </TableColumn>
615
+ <TableColumn>
616
+ <span className={statusLabelClassNames[item.status]}>{item.status}</span>
617
+ </TableColumn>
618
+ </TableRow>
619
+ ))}
620
+ </TableBody>
621
+ </Table>
622
+ </div>
623
+ );
624
+ };
625
+
626
+ export default TableViewTogglesDemo;
627
+ ```
628
+
629
+ #### HTML (html)
630
+
631
+ ```html
632
+ <div>
633
+ <div class="table-toolbar">
634
+ <div class="table-toolbar-container">
635
+ <div class="table-toolbar-group-right">
636
+ <div class="table-toolbar-column align-self-end">
637
+ <div class="TableViewToggles">
638
+ <div class="form-group margin-bottom-0">
639
+ <div class="select dropdown">
640
+ <button type="button" class="dropdown-toggle form-control text-left" data-toggle="dropdown" tabindex="0" aria-haspopup="true" aria-expanded="false">
641
+ <span class="selected-option-text">
642
+ <span>
643
+ <span class="rioglyph rioglyph-table-view">
644
+ </span>
645
+ </span>
646
+ </span>
647
+ <span class="select-toggle-actions">
648
+ <span class="clearButton hide pointer-events-none">
649
+ <span class="clearButtonIcon rioglyph rioglyph-remove-sign">
650
+ </span>
651
+ </span>
652
+ <span class="caret">
653
+ </span>
654
+ </span>
655
+ </button>
656
+ <ul class="dropdown-menu pull-right" role="menu">
657
+ <li class="" role="listitem">
658
+ <a role="menuitem" class="display-flex align-items-center gap-3" data-item-id="TABLE" data-item-index="0">
659
+ <span class="selected-option-dropdown-item">
660
+ <span class="rioglyph rioglyph-table-view">
661
+ </span>Table view</span>
662
+ <input type="hidden" value="TABLE">
663
+ </a>
664
+ </li>
665
+ <li class="" role="listitem">
666
+ <a role="menuitem" class="display-flex align-items-center gap-3" data-item-id="MULTI_CARDS" data-item-index="1">
667
+ <span class="selected-option-dropdown-item">
668
+ <span class="rioglyph rioglyph-split-view">
669
+ </span>Cards view</span>
670
+ <input type="hidden" value="MULTI_CARDS">
671
+ </a>
672
+ </li>
673
+ <li class="" role="listitem">
674
+ <a role="menuitem" class="display-flex align-items-center gap-3" data-item-id="SINGLE_CARD" data-item-index="2">
675
+ <span class="selected-option-dropdown-item">
676
+ <span class="rioglyph rioglyph-th-list">
677
+ </span>List view</span>
678
+ <input type="hidden" value="SINGLE_CARD">
679
+ </a>
680
+ </li>
681
+ </ul>
682
+ </div>
683
+ </div>
684
+ </div>
685
+ </div>
686
+ </div>
687
+ </div>
688
+ </div>
689
+ <div class="table table-view-table table-hover border table-rounded table-has-head" role="table" style="--table-columns: minmax(50px, 1fr) minmax(50px, 1fr) minmax(50px, 1fr); --table-areas: &quot;table-col-1 table-col-2 table-col-3&quot;; --table-column-count: 3; --table-sticky-reference-top: var(--table-sticky-offset); --table-width: 908px;" aria-colcount="3">
690
+ <div class="table-head" role="rowgroup">
691
+ <div class="table-head-grid" role="row" style="grid-template-rows: repeat(1, auto);">
692
+ <div class="table-head-cell table-head-cell-has-column-divider table-align-left table-vertical-align-middle" data-column="id" role="columnheader" aria-colindex="1" aria-rowindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
693
+ <div class="table-head-cell-content">
694
+ <div class="table-head-cell-content-row">
695
+ <span class="table-head-label-wrapper">
696
+ <span class="table-head-label">ID</span>
697
+ </span>
698
+ </div>
699
+ </div>
700
+ </div>
701
+ <div class="table-head-cell table-head-cell-has-column-divider table-align-left table-vertical-align-middle" data-column="name" role="columnheader" aria-colindex="2" aria-rowindex="1" style="grid-area: 1 / 2 / span 1 / span 1;">
702
+ <div class="table-head-cell-content">
703
+ <div class="table-head-cell-content-row">
704
+ <span class="table-head-label-wrapper">
705
+ <span class="table-head-label">Name</span>
706
+ </span>
707
+ </div>
708
+ </div>
709
+ </div>
710
+ <div class="table-head-cell table-align-left table-vertical-align-middle" data-column="status" role="columnheader" aria-colindex="3" aria-rowindex="1" style="grid-area: 1 / 3 / span 1 / span 1;">
711
+ <div class="table-head-cell-content">
712
+ <div class="table-head-cell-content-row">
713
+ <span class="table-head-label-wrapper">
714
+ <span class="table-head-label">Status</span>
715
+ </span>
716
+ </div>
717
+ </div>
718
+ </div>
719
+ </div>
720
+ </div>
721
+ <div class="table-body" role="rowgroup">
722
+ <div id="7354" class="table-row" data-index="0" data-row-id="0" role="row">
723
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="id" role="cell" aria-colindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
724
+ <div class="table-cell-content overflow-hidden">
725
+ <span>7354</span>
726
+ </div>
727
+ </div>
728
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="name" role="cell" aria-colindex="2" style="grid-area: 1 / 2 / span 1 / span 1;">
729
+ <div class="table-cell-content overflow-hidden">
730
+ <span>Vehicle 7354</span>
731
+ </div>
732
+ </div>
733
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="status" role="cell" aria-colindex="3" style="grid-area: 1 / 3 / span 1 / span 1;">
734
+ <div class="table-cell-content overflow-hidden">
735
+ <span class="label label-success label-filled label-condensed">Active</span>
736
+ </div>
737
+ </div>
738
+ </div>
739
+ <div id="233" class="table-row" data-index="1" data-row-id="1" role="row">
740
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="id" role="cell" aria-colindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
741
+ <div class="table-cell-content overflow-hidden">
742
+ <span>233</span>
743
+ </div>
744
+ </div>
745
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="name" role="cell" aria-colindex="2" style="grid-area: 1 / 2 / span 1 / span 1;">
746
+ <div class="table-cell-content overflow-hidden">
747
+ <span>Vehicle 233</span>
748
+ </div>
749
+ </div>
750
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="status" role="cell" aria-colindex="3" style="grid-area: 1 / 3 / span 1 / span 1;">
751
+ <div class="table-cell-content overflow-hidden">
752
+ <span class="label label-warning label-filled label-condensed">Inactive</span>
753
+ </div>
754
+ </div>
755
+ </div>
756
+ <div id="895" class="table-row" data-index="2" data-row-id="2" role="row">
757
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="id" role="cell" aria-colindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
758
+ <div class="table-cell-content overflow-hidden">
759
+ <span>895</span>
760
+ </div>
761
+ </div>
762
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="name" role="cell" aria-colindex="2" style="grid-area: 1 / 2 / span 1 / span 1;">
763
+ <div class="table-cell-content overflow-hidden">
764
+ <span>Vehicle 895</span>
765
+ </div>
766
+ </div>
767
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="status" role="cell" aria-colindex="3" style="grid-area: 1 / 3 / span 1 / span 1;">
768
+ <div class="table-cell-content overflow-hidden">
769
+ <span class="label label-info label-filled label-condensed">Maintenance</span>
770
+ </div>
771
+ </div>
772
+ </div>
773
+ </div>
774
+ </div>
775
+ </div>
776
+ ```
777
+
778
+ #### Props: TableViewToggles
779
+
780
+ ### TableViewToggles
781
+
782
+ | Name | Type | Default | Description |
783
+ | --- | --- | --- | --- |
784
+ | viewType | TableViewTogglesViewType | — | The current viewType for controlling the TablesViewToggles component. Possible values are: 'SINGLE_CARD' 'MULTI_CARDS' 'TABLE' TableViewToggles.VIEW_TYPE_TABLE TableViewToggles.VIEW_TYPE_SINGLE_CARD TableViewToggles.VIEW_TYPE_MULTI_CARDS |
785
+ | initialViewType | TableViewTogglesViewType | TableViewToggles.VIEW_TYPE_TABLE | Defines the initial viewType (when viewType is not controlled from the outside). Possible values are: 'SINGLE_CARD' 'MULTI_CARDS' 'TABLE' TableViewToggles.VIEW_TYPE_TABLE TableViewToggles.VIEW_TYPE_SINGLE_CARD TableViewToggles.VIEW_TYPE_MULTI_CARDS |
786
+ | disabledViewTypes | TableViewTogglesViewType[] | [] | Defines the view types which shall not be supported and are omitted. |
787
+ | onViewTypeChange | (viewType: TableViewTogglesViewType) => void | — | Callback function for when the user wants to change the viewType. Receives the new type as an argument. |
788
+ | tableViewTooltipContent(deprecated) | string \| ReactNode | — | Optional tooltip content for table view button. |
789
+ | tableViewLabel | string \| ReactNode | — | Optional label content for the table view select item. |
790
+ | singleCardViewTooltipContent(deprecated) | string \| ReactNode | — | Optional tooltip content for single card view button. |
791
+ | singleCardViewLabel | string \| ReactNode | — | Optional label content for the single card view select item. |
792
+ | multiCardsViewTooltipContent(deprecated) | string \| ReactNode | — | Optional tooltip content for multi card view button. |
793
+ | multiCardsViewLabel | string \| ReactNode | — | Optional label content for the multi cards view select item. |
794
+ | disabled | boolean | false | Disables all buttons. This means the buttons cannot be clicked. Used when disabling toolbar buttons during loading state or when the corresponding table is empty. |
795
+ | className | string | — | Optional class names for the wrapper element. |
796
+
797
+ ## TableRowActionsDropdown
798
+
799
+ Use TableRowActionsDropdown as the standardized overflow trigger for secondary row actions. It keeps the horizontal options icon and button styling consistent across different table implementations.
800
+
801
+ ### Example: Example 4
802
+
803
+ Workflow
804
+
805
+ When to use it
806
+
807
+ Actions
808
+
809
+ Archived order
810
+
811
+ Secondary actions in a compact overflow trigger.
812
+
813
+ Delivery run
814
+
815
+ Uses the same trigger for consistent row-action menus.
816
+
817
+ #### React (tsx)
818
+
819
+ ```tsx
820
+ import Notification from '@rio-cloud/rio-uikit/Notification';
821
+ import Table, { TableBody, TableColumn, TableHeader, TableHeaderColumn, TableRow } from '@rio-cloud/rio-uikit/Table';
822
+ import TableRowActionsDropdown from '@rio-cloud/rio-uikit/TableRowActionsDropdown';
823
+
824
+ const rows = [
825
+ {
826
+ id: 'archived-order',
827
+ workflow: 'Archived order',
828
+ intent: 'Secondary actions in a compact overflow trigger.',
829
+ items: [
830
+ {
831
+ value: 'Share',
832
+ onSelect: () => Notification.info('Share archived order'),
833
+ },
834
+ {
835
+ value: 'Duplicate',
836
+ onSelect: () => Notification.info('Duplicate archived order'),
837
+ },
838
+ {
839
+ divider: true,
840
+ },
841
+ {
842
+ value: 'Archive',
843
+ onSelect: () => Notification.info('Archive archived order'),
844
+ },
845
+ ],
846
+ },
847
+ {
848
+ id: 'delivery-run',
849
+ workflow: 'Delivery run',
850
+ intent: 'Uses the same trigger for consistent row-action menus.',
851
+ ariaLabel: 'Delivery run actions',
852
+ items: [
853
+ {
854
+ value: 'Assign',
855
+ onSelect: () => Notification.info('Assign delivery run'),
856
+ },
857
+ {
858
+ value: 'Reschedule',
859
+ onSelect: () => Notification.info('Reschedule delivery run'),
860
+ },
861
+ {
862
+ divider: true,
863
+ },
864
+ {
865
+ value: 'Cancel',
866
+ onSelect: () => Notification.info('Cancel delivery run'),
867
+ },
868
+ ],
869
+ },
870
+ ];
871
+
872
+ const TableRowActionsDropdownDemo = () => (
873
+ <Table hover>
874
+ <TableHeader>
875
+ <TableHeaderColumn columnKey='workflow' width='25%'>
876
+ Workflow
877
+ </TableHeaderColumn>
878
+ <TableHeaderColumn columnKey='intent'>When to use it</TableHeaderColumn>
879
+ <TableHeaderColumn columnKey='actions' width={120} horizontalAlign='right' className='padding-10'>
880
+ Actions
881
+ </TableHeaderColumn>
882
+ </TableHeader>
883
+ <TableBody>
884
+ {rows.map(row => (
885
+ <TableRow key={row.id} id={row.id}>
886
+ <TableColumn>{row.workflow}</TableColumn>
887
+ <TableColumn>{row.intent}</TableColumn>
888
+ <TableColumn columnKey='actions' horizontalAlign='right' className='padding-10'>
889
+ <TableRowActionsDropdown aria-label={row.ariaLabel} items={row.items} />
890
+ </TableColumn>
891
+ </TableRow>
892
+ ))}
893
+ </TableBody>
894
+ </Table>
895
+ );
896
+
897
+ export default TableRowActionsDropdownDemo;
898
+ ```
899
+
900
+ #### HTML (html)
901
+
902
+ ```html
903
+ <div class="table table-view-table table-hover border table-rounded table-has-head" role="table" style="--table-columns: minmax(0, calc(var(--table-width) * 25 / 100)) minmax(50px, 1fr) minmax(0, 120px); --table-areas: &quot;table-col-1 table-col-2 table-col-3&quot;; --table-column-count: 3; --table-sticky-reference-top: var(--table-sticky-offset); --table-width: 908px;" aria-colcount="3">
904
+ <div class="table-head" role="rowgroup">
905
+ <div class="table-head-grid" role="row" style="grid-template-rows: repeat(1, auto);">
906
+ <div class="table-head-cell table-head-cell-has-column-divider table-align-left table-vertical-align-middle" data-column="workflow" role="columnheader" aria-colindex="1" aria-rowindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
907
+ <div class="table-head-cell-content">
908
+ <div class="table-head-cell-content-row">
909
+ <span class="table-head-label-wrapper">
910
+ <span class="table-head-label">Workflow</span>
911
+ </span>
912
+ </div>
913
+ </div>
914
+ </div>
915
+ <div class="table-head-cell table-head-cell-has-column-divider table-align-left table-vertical-align-middle" data-column="intent" role="columnheader" aria-colindex="2" aria-rowindex="1" style="grid-area: 1 / 2 / span 1 / span 1;">
916
+ <div class="table-head-cell-content">
917
+ <div class="table-head-cell-content-row">
918
+ <span class="table-head-label-wrapper">
919
+ <span class="table-head-label">When to use it</span>
920
+ </span>
921
+ </div>
922
+ </div>
923
+ </div>
924
+ <div class="table-head-cell table-align-right table-vertical-align-middle padding-10" data-column="actions" role="columnheader" aria-colindex="3" aria-rowindex="1" style="grid-area: 1 / 3 / span 1 / span 1;">
925
+ <div class="table-head-cell-content">
926
+ <div class="table-head-cell-content-row">
927
+ <span class="table-head-label-wrapper">
928
+ <span class="table-head-label">Actions</span>
929
+ </span>
930
+ </div>
931
+ </div>
932
+ </div>
933
+ </div>
934
+ </div>
935
+ <div class="table-body" role="rowgroup">
936
+ <div id="archived-order" class="table-row" data-index="0" data-row-id="0" role="row">
937
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="workflow" role="cell" aria-colindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
938
+ <div class="table-cell-content overflow-hidden">Archived order</div>
939
+ </div>
940
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="intent" role="cell" aria-colindex="2" style="grid-area: 1 / 2 / span 1 / span 1;">
941
+ <div class="table-cell-content overflow-hidden">Secondary actions in a compact overflow trigger.</div>
942
+ </div>
943
+ <div class="table-cell table-align-right table-vertical-align-middle padding-10" data-column="actions" role="cell" aria-colindex="3" style="grid-area: 1 / 3 / span 1 / span 1;">
944
+ <div class="table-cell-content overflow-hidden">
945
+ <div class="dropdown btn-group">
946
+ <button type="button" aria-label="Row actions" id="mqlkojnyu3" class="btn btn-muted btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
947
+ <span class="rioglyph rioglyph-option-horizontal" aria-hidden="true">
948
+ </span>
949
+ </button>
950
+ </div>
951
+ </div>
952
+ </div>
953
+ </div>
954
+ <div id="delivery-run" class="table-row" data-index="1" data-row-id="1" role="row">
955
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="workflow" role="cell" aria-colindex="1" style="grid-area: 1 / 1 / span 1 / span 1;">
956
+ <div class="table-cell-content overflow-hidden">Delivery run</div>
957
+ </div>
958
+ <div class="table-cell table-align-left table-vertical-align-middle" data-column="intent" role="cell" aria-colindex="2" style="grid-area: 1 / 2 / span 1 / span 1;">
959
+ <div class="table-cell-content overflow-hidden">Uses the same trigger for consistent row-action menus.</div>
960
+ </div>
961
+ <div class="table-cell table-align-right table-vertical-align-middle padding-10" data-column="actions" role="cell" aria-colindex="3" style="grid-area: 1 / 3 / span 1 / span 1;">
962
+ <div class="table-cell-content overflow-hidden">
963
+ <div class="dropdown btn-group">
964
+ <button type="button" aria-label="Delivery run actions" id="8t0kb8e4cl" class="btn btn-muted btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
965
+ <span class="rioglyph rioglyph-option-horizontal" aria-hidden="true">
966
+ </span>
967
+ </button>
968
+ </div>
969
+ </div>
970
+ </div>
971
+ </div>
972
+ </div>
973
+ </div>
974
+ ```
975
+
976
+ #### Props: TableRowActionsDropdown
977
+
978
+ ### TableRowActionsDropdown
979
+
980
+ | Name | Type | Default | Description |
981
+ | --- | --- | --- | --- |
982
+ | aria-label | string | 'Row actions' | Accessible label applied to the icon-only trigger button. |