@rio-cloud/uikit-mcp 1.0.1 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -39
- package/dist/doc-metadata.json +1872 -0
- package/dist/docs/components/accentBar.md +582 -0
- package/dist/docs/components/activity.md +330 -0
- package/dist/docs/components/animatedNumber.md +88 -0
- package/dist/docs/components/animatedTextReveal.md +381 -0
- package/dist/docs/components/animations.md +459 -0
- package/dist/docs/components/appHeader.md +737 -0
- package/dist/docs/components/appLayout.md +2033 -0
- package/dist/docs/components/appNavigationBar.md +274 -0
- package/dist/docs/components/areaCharts.md +828 -0
- package/dist/docs/components/aspectRatioPlaceholder.md +106 -0
- package/dist/docs/components/assetTree.md +3132 -0
- package/dist/docs/components/autosuggests.md +1177 -0
- package/dist/docs/components/avatar.md +206 -0
- package/dist/docs/components/banner.md +668 -0
- package/dist/docs/components/barCharts.md +2765 -0
- package/dist/docs/components/barList.md +517 -0
- package/dist/docs/components/basicMap.md +167 -0
- package/dist/docs/components/bottomSheet.md +721 -0
- package/dist/docs/components/button.md +775 -0
- package/dist/docs/components/buttonToolbar.md +134 -0
- package/dist/docs/components/calendarStripe.md +533 -0
- package/dist/docs/components/card.md +86 -0
- package/dist/docs/components/carousel.md +128 -0
- package/dist/docs/components/chartColors.md +716 -0
- package/dist/docs/components/chartsGettingStarted.md +28 -0
- package/dist/docs/components/chat.md +935 -0
- package/dist/docs/components/checkbox.md +996 -0
- package/dist/docs/components/clearableInput.md +806 -0
- package/dist/docs/components/collapse.md +189 -0
- package/dist/docs/components/composedCharts.md +424 -0
- package/dist/docs/components/contentLoader.md +674 -0
- package/dist/docs/components/dataTabs.md +1251 -0
- package/dist/docs/components/datepickers.md +2543 -0
- package/dist/docs/components/dialogs.md +2244 -0
- package/dist/docs/components/divider.md +219 -0
- package/dist/docs/components/dropdowns.md +17538 -0
- package/dist/docs/components/editableContent.md +1127 -0
- package/dist/docs/components/expander.md +970 -0
- package/dist/docs/components/fade.md +836 -0
- package/dist/docs/components/fadeExpander.md +180 -0
- package/dist/docs/components/fadeUp.md +396 -0
- package/dist/docs/components/feedback.md +758 -0
- package/dist/docs/components/filePickers.md +370 -0
- package/dist/docs/components/formLabel.md +251 -0
- package/dist/docs/components/fullscreenMap.md +10 -0
- package/dist/docs/components/groupedItemList.md +1001 -0
- package/dist/docs/components/iconList.md +306 -0
- package/dist/docs/components/imagePreloader.md +167 -0
- package/dist/docs/components/labeledElement.md +115 -0
- package/dist/docs/components/licensePlate.md +412 -0
- package/dist/docs/components/lineCharts.md +2014 -0
- package/dist/docs/components/listMenu.md +392 -0
- package/dist/docs/components/loadMore.md +219 -0
- package/dist/docs/components/mainNavigation.md +129 -0
- package/dist/docs/components/mapCircle.md +93 -0
- package/dist/docs/components/mapCluster.md +337 -0
- package/dist/docs/components/mapContext.md +284 -0
- package/dist/docs/components/mapDraggableMarker.md +150 -0
- package/dist/docs/components/mapGettingStarted.md +39 -0
- package/dist/docs/components/mapInfoBubble.md +135 -0
- package/dist/docs/components/mapLayerGroup.md +94 -0
- package/dist/docs/components/mapMarker.md +1814 -0
- package/dist/docs/components/mapPolygon.md +959 -0
- package/dist/docs/components/mapRoute.md +3816 -0
- package/dist/docs/components/mapRouteGenerator.md +6 -0
- package/dist/docs/components/mapSettings.md +1040 -0
- package/dist/docs/components/mapUtils.md +132 -0
- package/dist/docs/components/multiselects.md +1921 -0
- package/dist/docs/components/noData.md +210 -0
- package/dist/docs/components/notifications.md +314 -0
- package/dist/docs/components/numbercontrol.md +706 -0
- package/dist/docs/components/onboarding.md +297 -0
- package/dist/docs/components/page.md +241 -0
- package/dist/docs/components/pager.md +133 -0
- package/dist/docs/components/pieCharts.md +1284 -0
- package/dist/docs/components/popover.md +222 -0
- package/dist/docs/components/position.md +50 -0
- package/dist/docs/components/radialBarCharts.md +3663 -0
- package/dist/docs/components/radiobutton.md +1271 -0
- package/dist/docs/components/releaseNotes.md +135 -0
- package/dist/docs/components/resizer.md +162 -0
- package/dist/docs/components/responsiveColumnStripe.md +435 -0
- package/dist/docs/components/responsiveVideo.md +71 -0
- package/dist/docs/components/rioglyph.md +331 -0
- package/dist/docs/components/rules.md +965 -0
- package/dist/docs/components/saveableInput.md +1721 -0
- package/dist/docs/components/selects.md +1993 -0
- package/dist/docs/components/sidebar.md +332 -0
- package/dist/docs/components/sliders.md +376 -0
- package/dist/docs/components/smoothScrollbars.md +1180 -0
- package/dist/docs/components/spinners.md +506 -0
- package/dist/docs/components/states.md +1176 -0
- package/dist/docs/components/statsWidgets.md +636 -0
- package/dist/docs/components/statusBar.md +644 -0
- package/dist/docs/components/stepButton.md +61 -0
- package/dist/docs/components/steppedProgressBars.md +1064 -0
- package/dist/docs/components/subNavigation.md +470 -0
- package/dist/docs/components/supportMarker.md +115 -0
- package/dist/docs/components/svgImage.md +248 -0
- package/dist/docs/components/switch.md +554 -0
- package/dist/docs/components/tables.md +8 -0
- package/dist/docs/components/tagManager.md +476 -0
- package/dist/docs/components/tags.md +785 -0
- package/dist/docs/components/teaser.md +925 -0
- package/dist/docs/components/timeline.md +514 -0
- package/dist/docs/components/timepicker.md +262 -0
- package/dist/docs/components/toggleButton.md +178 -0
- package/dist/docs/components/tooltip.md +454 -0
- package/dist/docs/components/virtualList.md +486 -0
- package/dist/docs/foundations.md +20901 -0
- package/dist/docs/start/changelog.md +714 -0
- package/dist/docs/start/goodtoknow.md +14 -0
- package/dist/docs/start/guidelines/color-combinations.md +678 -0
- package/dist/docs/start/guidelines/custom-css.md +42 -0
- package/dist/docs/start/guidelines/custom-rioglyph.md +35 -0
- package/dist/docs/start/guidelines/formatting.md +587 -0
- package/dist/docs/start/guidelines/iframe.md +323 -0
- package/dist/docs/start/guidelines/obfuscate-data.md +30 -0
- package/dist/docs/start/guidelines/print-css.md +36 -0
- package/dist/docs/start/guidelines/spinner.md +710 -0
- package/dist/docs/start/guidelines/supported-browsers.md +10 -0
- package/dist/docs/start/guidelines/writing.md +635 -0
- package/dist/docs/start/howto.md +187 -0
- package/dist/docs/start/intro.md +43 -0
- package/dist/docs/start/responsiveness.md +98 -0
- package/dist/docs/templates/common-table.md +1111 -0
- package/dist/docs/templates/detail-views.md +942 -0
- package/dist/docs/templates/expandable-details.md +228 -0
- package/dist/docs/templates/feature-cards.md +549 -0
- package/dist/docs/templates/form-summary.md +199 -0
- package/dist/docs/templates/form-toggle.md +367 -0
- package/dist/docs/templates/list-blocks.md +1021 -0
- package/dist/docs/templates/loading-progress.md +109 -0
- package/dist/docs/templates/options-panel.md +152 -0
- package/dist/docs/templates/panel-variants.md +164 -0
- package/dist/docs/templates/progress-cards.md +607 -0
- package/dist/docs/templates/progress-success.md +142 -0
- package/dist/docs/templates/settings-form.md +434 -0
- package/dist/docs/templates/stats-blocks.md +1381 -0
- package/dist/docs/templates/table-panel.md +184 -0
- package/dist/docs/templates/table-row-animation.md +317 -0
- package/dist/docs/templates/usage-cards.md +227 -0
- package/dist/docs/utilities/deviceUtils.md +123 -0
- package/dist/docs/utilities/featureToggles.md +90 -0
- package/dist/docs/utilities/fuelTypeUtils.md +186 -0
- package/dist/docs/utilities/routeUtils.md +138 -0
- package/dist/docs/utilities/useAfterMount.md +66 -0
- package/dist/docs/utilities/useAutoAnimate.md +193 -0
- package/dist/docs/utilities/useAverage.md +95 -0
- package/dist/docs/utilities/useClickOutside.md +61 -0
- package/dist/docs/utilities/useClipboard.md +93 -0
- package/dist/docs/utilities/useCount.md +178 -0
- package/dist/docs/utilities/useDarkMode.md +49 -0
- package/dist/docs/utilities/useDebugInfo.md +126 -0
- package/dist/docs/utilities/useEffectOnce.md +58 -0
- package/dist/docs/utilities/useElapsedTime.md +58 -0
- package/dist/docs/utilities/useElementSize.md +71 -0
- package/dist/docs/utilities/useEsc.md +58 -0
- package/dist/docs/utilities/useEvent.md +64 -0
- package/dist/docs/utilities/useFocusTrap.md +85 -0
- package/dist/docs/utilities/useFullscreen.md +198 -0
- package/dist/docs/utilities/useHover.md +55 -0
- package/dist/docs/utilities/useIncomingPostMessages.md +237 -0
- package/dist/docs/utilities/useInterval.md +85 -0
- package/dist/docs/utilities/useIsFocusWithin.md +114 -0
- package/dist/docs/utilities/useKey.md +151 -0
- package/dist/docs/utilities/useLocalStorage.md +91 -0
- package/dist/docs/utilities/useLocationSuggestions.md +114 -0
- package/dist/docs/utilities/useMax.md +62 -0
- package/dist/docs/utilities/useMin.md +78 -0
- package/dist/docs/utilities/useMutationObserver.md +113 -0
- package/dist/docs/utilities/useOnScreen.md +138 -0
- package/dist/docs/utilities/useOnlineStatus.md +49 -0
- package/dist/docs/utilities/usePostMessage.md +117 -0
- package/dist/docs/utilities/usePostMessageSender.md +257 -0
- package/dist/docs/utilities/usePrevious.md +101 -0
- package/dist/docs/utilities/useResizeObserver.md +151 -0
- package/dist/docs/utilities/useScrollPosition.md +252 -0
- package/dist/docs/utilities/useSearch.md +228 -0
- package/dist/docs/utilities/useSorting.md +389 -0
- package/dist/docs/utilities/useStateWithValidation.md +83 -0
- package/dist/docs/utilities/useSum.md +155 -0
- package/dist/docs/utilities/useTableExport.md +404 -0
- package/dist/docs/utilities/useTableSelection.md +1120 -0
- package/dist/docs/utilities/useTimeout.md +55 -0
- package/dist/docs/utilities/useToggle.md +115 -0
- package/dist/docs/utilities/useWindowResize.md +70 -0
- package/dist/index.mjs +271 -0
- package/dist/search-synonyms.json +134 -0
- package/dist/version.json +4 -0
- package/package.json +23 -19
- package/bin/uikit-mcp.mjs +0 -23
- package/data/pages/Components/components/accentbar.json +0 -207
- package/data/pages/Components/components/activity.json +0 -87
- package/data/pages/Components/components/animatednumber.json +0 -99
- package/data/pages/Components/components/animations.json +0 -87
- package/data/pages/Components/components/appheader.json +0 -291
- package/data/pages/Components/components/applayout.json +0 -1198
- package/data/pages/Components/components/appnavigationbar.json +0 -327
- package/data/pages/Components/components/areacharts.json +0 -563
- package/data/pages/Components/components/aspectratioplaceholder.json +0 -75
- package/data/pages/Components/components/assettree.json +0 -3080
- package/data/pages/Components/components/autosuggests.json +0 -710
- package/data/pages/Components/components/avatar.json +0 -157
- package/data/pages/Components/components/banner.json +0 -599
- package/data/pages/Components/components/barcharts.json +0 -1507
- package/data/pages/Components/components/barlist.json +0 -223
- package/data/pages/Components/components/basicmap.json +0 -68
- package/data/pages/Components/components/bottomsheet.json +0 -601
- package/data/pages/Components/components/button.json +0 -583
- package/data/pages/Components/components/buttontoolbar.json +0 -63
- package/data/pages/Components/components/calendarstripe.json +0 -235
- package/data/pages/Components/components/card.json +0 -69
- package/data/pages/Components/components/carousel.json +0 -39
- package/data/pages/Components/components/chartcolors.json +0 -34
- package/data/pages/Components/components/chartsgettingstarted.json +0 -32
- package/data/pages/Components/components/chat.json +0 -39
- package/data/pages/Components/components/checkbox.json +0 -847
- package/data/pages/Components/components/clearableinput.json +0 -789
- package/data/pages/Components/components/collapse.json +0 -175
- package/data/pages/Components/components/composedcharts.json +0 -159
- package/data/pages/Components/components/contentloader.json +0 -233
- package/data/pages/Components/components/datatabs.json +0 -680
- package/data/pages/Components/components/datepickers.json +0 -287
- package/data/pages/Components/components/dialogs.json +0 -1492
- package/data/pages/Components/components/divider.json +0 -93
- package/data/pages/Components/components/dropdowns.json +0 -936
- package/data/pages/Components/components/editablecontent.json +0 -1117
- package/data/pages/Components/components/expander.json +0 -377
- package/data/pages/Components/components/fade.json +0 -403
- package/data/pages/Components/components/fadeexpander.json +0 -75
- package/data/pages/Components/components/fadeup.json +0 -127
- package/data/pages/Components/components/feedback.json +0 -269
- package/data/pages/Components/components/filepickers.json +0 -269
- package/data/pages/Components/components/formlabel.json +0 -115
- package/data/pages/Components/components/fullscreenmap.json +0 -22
- package/data/pages/Components/components/groupeditemlist.json +0 -323
- package/data/pages/Components/components/iconlist.json +0 -45
- package/data/pages/Components/components/imagepreloader.json +0 -81
- package/data/pages/Components/components/labeledelement.json +0 -75
- package/data/pages/Components/components/licenseplate.json +0 -69
- package/data/pages/Components/components/linecharts.json +0 -987
- package/data/pages/Components/components/listmenu.json +0 -313
- package/data/pages/Components/components/loadmore.json +0 -175
- package/data/pages/Components/components/mainnavigation.json +0 -39
- package/data/pages/Components/components/mapcircle.json +0 -34
- package/data/pages/Components/components/mapcluster.json +0 -51
- package/data/pages/Components/components/mapcontext.json +0 -105
- package/data/pages/Components/components/mapdraggablemarker.json +0 -34
- package/data/pages/Components/components/mapgettingstarted.json +0 -27
- package/data/pages/Components/components/mapgroup.json +0 -1198
- package/data/pages/Components/components/mapinfobubble.json +0 -34
- package/data/pages/Components/components/maplayergroup.json +0 -34
- package/data/pages/Components/components/mapmarker.json +0 -700
- package/data/pages/Components/components/mappolygon.json +0 -45
- package/data/pages/Components/components/maproute.json +0 -623
- package/data/pages/Components/components/maproutegenerator.json +0 -16
- package/data/pages/Components/components/mapsettings.json +0 -51
- package/data/pages/Components/components/maputils.json +0 -34
- package/data/pages/Components/components/multiselects.json +0 -1451
- package/data/pages/Components/components/nodata.json +0 -139
- package/data/pages/Components/components/notifications.json +0 -65
- package/data/pages/Components/components/numbercontrol.json +0 -301
- package/data/pages/Components/components/onboarding.json +0 -302
- package/data/pages/Components/components/page.json +0 -197
- package/data/pages/Components/components/pager.json +0 -93
- package/data/pages/Components/components/piecharts.json +0 -731
- package/data/pages/Components/components/popover.json +0 -251
- package/data/pages/Components/components/position.json +0 -69
- package/data/pages/Components/components/radialbarcharts.json +0 -1304
- package/data/pages/Components/components/radiobutton.json +0 -1105
- package/data/pages/Components/components/releasenotes.json +0 -44
- package/data/pages/Components/components/resizer.json +0 -93
- package/data/pages/Components/components/responsivecolumnstripe.json +0 -123
- package/data/pages/Components/components/responsivevideo.json +0 -75
- package/data/pages/Components/components/rioglyph.json +0 -93
- package/data/pages/Components/components/rules.json +0 -410
- package/data/pages/Components/components/saveableinput.json +0 -703
- package/data/pages/Components/components/selects.json +0 -701
- package/data/pages/Components/components/sidebar.json +0 -243
- package/data/pages/Components/components/sliders.json +0 -235
- package/data/pages/Components/components/smoothscrollbars.json +0 -335
- package/data/pages/Components/components/spinners.json +0 -343
- package/data/pages/Components/components/states.json +0 -1705
- package/data/pages/Components/components/statswidgets.json +0 -314
- package/data/pages/Components/components/statusbar.json +0 -177
- package/data/pages/Components/components/stepbutton.json +0 -57
- package/data/pages/Components/components/steppedprogressbars.json +0 -417
- package/data/pages/Components/components/subnavigation.json +0 -107
- package/data/pages/Components/components/supportmarker.json +0 -45
- package/data/pages/Components/components/svgimage.json +0 -81
- package/data/pages/Components/components/switch.json +0 -111
- package/data/pages/Components/components/tables.json +0 -144
- package/data/pages/Components/components/tagmanager.json +0 -86
- package/data/pages/Components/components/tags.json +0 -146
- package/data/pages/Components/components/teaser.json +0 -188
- package/data/pages/Components/components/timeline.json +0 -45
- package/data/pages/Components/components/timepicker.json +0 -163
- package/data/pages/Components/components/togglebutton.json +0 -247
- package/data/pages/Components/components/tooltip.json +0 -270
- package/data/pages/Components/components/virtuallist.json +0 -175
- package/data/pages/Foundations/foundations.json +0 -2475
- package/data/pages/Getting-started/start/changelog.json +0 -22
- package/data/pages/Getting-started/start/goodtoknow.json +0 -32
- package/data/pages/Getting-started/start/guidelines/color-combinations.json +0 -58
- package/data/pages/Getting-started/start/guidelines/custom-css.json +0 -27
- package/data/pages/Getting-started/start/guidelines/custom-rioglyph.json +0 -22
- package/data/pages/Getting-started/start/guidelines/formatting.json +0 -97
- package/data/pages/Getting-started/start/guidelines/iframe.json +0 -93
- package/data/pages/Getting-started/start/guidelines/obfuscate-data.json +0 -22
- package/data/pages/Getting-started/start/guidelines/print-css.json +0 -37
- package/data/pages/Getting-started/start/guidelines/spinner.json +0 -144
- package/data/pages/Getting-started/start/guidelines/supported-browsers.json +0 -22
- package/data/pages/Getting-started/start/guidelines/writing.json +0 -242
- package/data/pages/Getting-started/start/howto.json +0 -72
- package/data/pages/Getting-started/start/intro.json +0 -37
- package/data/pages/Getting-started/start/responsiveness.json +0 -52
- package/data/pages/Templates/templates/common-table.json +0 -39
- package/data/pages/Templates/templates/detail-views.json +0 -71
- package/data/pages/Templates/templates/expandable-details.json +0 -39
- package/data/pages/Templates/templates/feature-cards.json +0 -103
- package/data/pages/Templates/templates/form-summary.json +0 -39
- package/data/pages/Templates/templates/form-toggle.json +0 -39
- package/data/pages/Templates/templates/list-blocks.json +0 -119
- package/data/pages/Templates/templates/loading-progress.json +0 -39
- package/data/pages/Templates/templates/options-panel.json +0 -39
- package/data/pages/Templates/templates/panel-variants.json +0 -39
- package/data/pages/Templates/templates/progress-cards.json +0 -71
- package/data/pages/Templates/templates/progress-success.json +0 -39
- package/data/pages/Templates/templates/settings-form.json +0 -39
- package/data/pages/Templates/templates/stats-blocks.json +0 -135
- package/data/pages/Templates/templates/table-panel.json +0 -39
- package/data/pages/Templates/templates/table-row-animation.json +0 -39
- package/data/pages/Templates/templates/usage-cards.json +0 -39
- package/data/pages/Utilities/utilities/deviceutils.json +0 -39
- package/data/pages/Utilities/utilities/featuretoggles.json +0 -42
- package/data/pages/Utilities/utilities/fueltypeutils.json +0 -118
- package/data/pages/Utilities/utilities/routeutils.json +0 -34
- package/data/pages/Utilities/utilities/useaftermount.json +0 -63
- package/data/pages/Utilities/utilities/useaverage.json +0 -86
- package/data/pages/Utilities/utilities/useclickoutside.json +0 -69
- package/data/pages/Utilities/utilities/useclipboard.json +0 -57
- package/data/pages/Utilities/utilities/usecount.json +0 -92
- package/data/pages/Utilities/utilities/usedarkmode.json +0 -50
- package/data/pages/Utilities/utilities/usedebuginfo.json +0 -63
- package/data/pages/Utilities/utilities/useeffectonce.json +0 -57
- package/data/pages/Utilities/utilities/useelapsedtime.json +0 -57
- package/data/pages/Utilities/utilities/useelementsize.json +0 -63
- package/data/pages/Utilities/utilities/useesc.json +0 -57
- package/data/pages/Utilities/utilities/useevent.json +0 -75
- package/data/pages/Utilities/utilities/usefocustrap.json +0 -57
- package/data/pages/Utilities/utilities/usefullscreen.json +0 -197
- package/data/pages/Utilities/utilities/usehover.json +0 -57
- package/data/pages/Utilities/utilities/useinterval.json +0 -63
- package/data/pages/Utilities/utilities/useisfocuswithin.json +0 -75
- package/data/pages/Utilities/utilities/usekey.json +0 -75
- package/data/pages/Utilities/utilities/uselocalstorage.json +0 -69
- package/data/pages/Utilities/utilities/uselocationsuggestions.json +0 -110
- package/data/pages/Utilities/utilities/usemax.json +0 -86
- package/data/pages/Utilities/utilities/usemin.json +0 -86
- package/data/pages/Utilities/utilities/usemutationobserver.json +0 -69
- package/data/pages/Utilities/utilities/useonlinestatus.json +0 -39
- package/data/pages/Utilities/utilities/useonscreen.json +0 -63
- package/data/pages/Utilities/utilities/usepostmessage.json +0 -80
- package/data/pages/Utilities/utilities/useprevious.json +0 -63
- package/data/pages/Utilities/utilities/useresizeobserver.json +0 -65
- package/data/pages/Utilities/utilities/usescrollposition.json +0 -103
- package/data/pages/Utilities/utilities/usesearch.json +0 -197
- package/data/pages/Utilities/utilities/usesorting.json +0 -139
- package/data/pages/Utilities/utilities/usestatewithvalidation.json +0 -69
- package/data/pages/Utilities/utilities/usesum.json +0 -86
- package/data/pages/Utilities/utilities/usetableexport.json +0 -87
- package/data/pages/Utilities/utilities/usetableselection.json +0 -311
- package/data/pages/Utilities/utilities/usetimeout.json +0 -63
- package/data/pages/Utilities/utilities/usetoggle.json +0 -75
- package/data/pages/Utilities/utilities/usewindowresize.json +0 -63
- package/data/version.json +0 -4
- package/docs/content-schema.md +0 -147
- package/docs/navigation-inventory.json +0 -1310
- package/docs/search-synonyms.json +0 -43
- package/server/index.mjs +0 -268
- package/server/lib/load-docs.mjs +0 -48
- package/server/lib/normalise-doc.mjs +0 -220
- package/server/lib/render-markdown.mjs +0 -82
- package/server/lib/search-index.mjs +0 -49
- package/server/lib/types.js +0 -99
|
@@ -0,0 +1,1111 @@
|
|
|
1
|
+
# Common table
|
|
2
|
+
|
|
3
|
+
*Category:* Templates
|
|
4
|
+
*Section:* Tables
|
|
5
|
+
*Source:* https://uikit.developers.rio.cloud/#templates/common-table
|
|
6
|
+
*Captured:* 2025-12-12T14:21:38.777Z
|
|
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
|
+
import classNames from 'classnames';
|
|
84
|
+
|
|
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 columns = columnOrder.filter(name => !hiddenColumns.includes(name));
|
|
311
|
+
|
|
312
|
+
// Filter data to omit hidden columns
|
|
313
|
+
const filteredRows = sortedItems.map(vehicle => omit(vehicle, hiddenColumns)) as Vehicle[];
|
|
314
|
+
|
|
315
|
+
// In case a search value is given, filter the data accordingly
|
|
316
|
+
const searchResult = useMemo(() => {
|
|
317
|
+
if (!searchValue) {
|
|
318
|
+
return filteredRows;
|
|
319
|
+
}
|
|
320
|
+
return filteredRows.filter((row: Partial<Vehicle>) =>
|
|
321
|
+
columns.some(col => {
|
|
322
|
+
const value = row[col as keyof Vehicle];
|
|
323
|
+
if (value == null) {
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
return String(value).toLowerCase().includes(searchValue.toLowerCase());
|
|
327
|
+
})
|
|
328
|
+
);
|
|
329
|
+
}, [searchValue, filteredRows, columns]);
|
|
330
|
+
|
|
331
|
+
// Filter according to filter dialog settings
|
|
332
|
+
const rows = useMemo(() => applyFilter(searchResult, filter), [searchResult, filter]);
|
|
333
|
+
|
|
334
|
+
const tableClassNames = classNames(
|
|
335
|
+
'table',
|
|
336
|
+
'table-layout-fixed',
|
|
337
|
+
'table-column-overflow-hidden',
|
|
338
|
+
'table-bordered',
|
|
339
|
+
'table-sticky',
|
|
340
|
+
'table-head-filled',
|
|
341
|
+
viewType === TableViewToggles.VIEW_TYPE_SINGLE_CARD && 'table-cards table-single-card',
|
|
342
|
+
viewType === TableViewToggles.VIEW_TYPE_MULTI_CARDS && 'table-cards table-multi-cards'
|
|
343
|
+
);
|
|
344
|
+
|
|
345
|
+
const isViewTypeTable = viewType === TableViewToggles.VIEW_TYPE_TABLE;
|
|
346
|
+
|
|
347
|
+
const cardSortingSelectOptions = columns.map(column => {
|
|
348
|
+
return {
|
|
349
|
+
id: column,
|
|
350
|
+
label: columnLabels[column],
|
|
351
|
+
selected: column === sortKey,
|
|
352
|
+
disabled: false,
|
|
353
|
+
};
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
return (
|
|
357
|
+
<div>
|
|
358
|
+
<TableToolbar>
|
|
359
|
+
<div className='table-toolbar-container'>
|
|
360
|
+
<div className='table-toolbar-group-left'>
|
|
361
|
+
<div className='table-toolbar-column'>
|
|
362
|
+
<ButtonToolbar className='display-grid grid-cols-3 display-flex-ls'>
|
|
363
|
+
<Button bsStyle={Button.PRIMARY} iconName='rioglyph-plus'>
|
|
364
|
+
New
|
|
365
|
+
</Button>
|
|
366
|
+
<ButtonDropdown id='myActionButton' title='Button' items={dummyActionOptions} />
|
|
367
|
+
</ButtonToolbar>
|
|
368
|
+
</div>
|
|
369
|
+
</div>
|
|
370
|
+
<div className='table-toolbar-group-right'>
|
|
371
|
+
<div className='table-toolbar-column'>
|
|
372
|
+
<Button
|
|
373
|
+
iconName={isEmpty(filter) ? 'rioglyph-filter' : 'rioglyph-filter-active'}
|
|
374
|
+
onClick={() => setShowFilterDialog(true)}
|
|
375
|
+
>
|
|
376
|
+
Filter
|
|
377
|
+
</Button>
|
|
378
|
+
<TableFilterDialog
|
|
379
|
+
show={showFilterDialog}
|
|
380
|
+
onClose={() => setShowFilterDialog(false)}
|
|
381
|
+
filter={filter}
|
|
382
|
+
onSetFilter={setFilter}
|
|
383
|
+
/>
|
|
384
|
+
</div>
|
|
385
|
+
<div className='table-toolbar-column table-toolbar-column-spacer'>
|
|
386
|
+
<TableSearch
|
|
387
|
+
value={searchValue}
|
|
388
|
+
onChange={handleSearchValueChange}
|
|
389
|
+
placeholder='Search in table'
|
|
390
|
+
/>
|
|
391
|
+
</div>
|
|
392
|
+
<div className='table-toolbar-column display-flex flex-row align-items-end gap-15'>
|
|
393
|
+
<div>
|
|
394
|
+
<FormLabel className='table-toolbar-label'>Label</FormLabel>
|
|
395
|
+
<TableViewToggles
|
|
396
|
+
initialViewType={viewType}
|
|
397
|
+
onViewTypeChange={handleViewTypeChange}
|
|
398
|
+
tableViewTooltipContent='Table view'
|
|
399
|
+
singleCardViewTooltipContent='List view'
|
|
400
|
+
multiCardsViewTooltipContent='Cards view'
|
|
401
|
+
/>
|
|
402
|
+
</div>
|
|
403
|
+
<Button iconOnly iconName='rioglyph-settings' onClick={handleToggleTableSettingsDialog} />
|
|
404
|
+
</div>
|
|
405
|
+
</div>
|
|
406
|
+
{showTableSettingsDialog && (
|
|
407
|
+
<TableSettingsDialog
|
|
408
|
+
show={showTableSettingsDialog}
|
|
409
|
+
title='Table settings'
|
|
410
|
+
onHide={handleToggleTableSettingsDialog}
|
|
411
|
+
onColumnChange={handleColumnChange}
|
|
412
|
+
defaultColumnOrder={defaultColumnOrder}
|
|
413
|
+
defaultHiddenColumns={[]}
|
|
414
|
+
columnOrder={columnOrder}
|
|
415
|
+
hiddenColumns={hiddenColumns}
|
|
416
|
+
columnLabels={columnLabels}
|
|
417
|
+
disabledColumns={disabledColumns}
|
|
418
|
+
closeButtonText='Close'
|
|
419
|
+
resetButtonText='Reset to default'
|
|
420
|
+
searchPlaceholder='Search by column name'
|
|
421
|
+
notFoundMessage='No column found for this search value'
|
|
422
|
+
columnsDetails={columnsDetails}
|
|
423
|
+
autoLabel='Auto'
|
|
424
|
+
onColumnDetailsChange={handleColumnDetailsChange}
|
|
425
|
+
onSearchChange={(val: string) => console.log(val)}
|
|
426
|
+
immediateChange
|
|
427
|
+
/>
|
|
428
|
+
)}
|
|
429
|
+
</div>
|
|
430
|
+
</TableToolbar>
|
|
431
|
+
{sortKey && !isViewTypeTable && (
|
|
432
|
+
<TableCardsSorting
|
|
433
|
+
selectOptions={cardSortingSelectOptions}
|
|
434
|
+
sortName={sortKey as string}
|
|
435
|
+
sortOrder={sortDirection}
|
|
436
|
+
onSortChange={handleCardSortChange}
|
|
437
|
+
/>
|
|
438
|
+
)}
|
|
439
|
+
<div className='table-responsive'>
|
|
440
|
+
{isEmpty(rows) && !isViewTypeTable && (
|
|
441
|
+
<NotFoundState headline='Nothing found' message='Please refine your search' />
|
|
442
|
+
)}
|
|
443
|
+
<table ref={tableRef} className={tableClassNames}>
|
|
444
|
+
<colgroup>
|
|
445
|
+
{columns.map(column => (
|
|
446
|
+
<TableCol key={column} columnDetails={columnsDetails[column]} />
|
|
447
|
+
))}
|
|
448
|
+
<TableCol className='table-action' />
|
|
449
|
+
</colgroup>
|
|
450
|
+
<thead>
|
|
451
|
+
<tr>
|
|
452
|
+
{columns.map(column => (
|
|
453
|
+
<TableHead
|
|
454
|
+
key={column}
|
|
455
|
+
label={columnLabels[column]}
|
|
456
|
+
column={column}
|
|
457
|
+
sortBy={sortKey as string}
|
|
458
|
+
sortDir={sortDirection}
|
|
459
|
+
onClick={handleSortChange}
|
|
460
|
+
/>
|
|
461
|
+
))}
|
|
462
|
+
<TableHead className='table-action' />
|
|
463
|
+
</tr>
|
|
464
|
+
</thead>
|
|
465
|
+
<tbody>
|
|
466
|
+
{isEmpty(rows) && isViewTypeTable && (
|
|
467
|
+
<tr>
|
|
468
|
+
<td colSpan={columns.length + 1}>
|
|
469
|
+
<NotFoundState
|
|
470
|
+
outerClassName='border-none'
|
|
471
|
+
headline='Nothing found'
|
|
472
|
+
message='Please refine your search'
|
|
473
|
+
/>
|
|
474
|
+
</td>
|
|
475
|
+
</tr>
|
|
476
|
+
)}
|
|
477
|
+
{rows.map(row => (
|
|
478
|
+
<tr
|
|
479
|
+
key={row.vehicleId}
|
|
480
|
+
data-id={row.vehicleId}
|
|
481
|
+
onClick={onActiveRowChange}
|
|
482
|
+
className='cursor-pointer'
|
|
483
|
+
>
|
|
484
|
+
{columns.map(col => {
|
|
485
|
+
const item = row[col as keyof Vehicle] ?? <NoData text='No data' />;
|
|
486
|
+
return (
|
|
487
|
+
<td key={col} data-field={columnLabels[col]}>
|
|
488
|
+
<span>{item}</span>
|
|
489
|
+
</td>
|
|
490
|
+
);
|
|
491
|
+
})}
|
|
492
|
+
<td className='table-action'>
|
|
493
|
+
<DummyRowDropdown />
|
|
494
|
+
</td>
|
|
495
|
+
</tr>
|
|
496
|
+
))}
|
|
497
|
+
{/* Placeholder workaround for equal with cards of the last row */}
|
|
498
|
+
<tr className='table-card-placeholder' />
|
|
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
|
+
</tbody>
|
|
509
|
+
</table>
|
|
510
|
+
</div>
|
|
511
|
+
<LoadMoreButton
|
|
512
|
+
loaded={70}
|
|
513
|
+
total={100}
|
|
514
|
+
onLoadMore={() => {}}
|
|
515
|
+
loadMoreMessage='Load more'
|
|
516
|
+
noMoreMessage='Everything loaded'
|
|
517
|
+
/>
|
|
518
|
+
</div>
|
|
519
|
+
);
|
|
520
|
+
};
|
|
521
|
+
|
|
522
|
+
const DummyRowDropdown = () => (
|
|
523
|
+
<span>
|
|
524
|
+
<ButtonDropdown
|
|
525
|
+
title={<span className='rioglyph rioglyph-option-vertical' />}
|
|
526
|
+
variant='link'
|
|
527
|
+
iconOnly
|
|
528
|
+
items={[
|
|
529
|
+
{
|
|
530
|
+
value: (
|
|
531
|
+
<div className='display-flex align-items-center gap-10'>
|
|
532
|
+
<span className='rioglyph rioglyph-pencil' />
|
|
533
|
+
<span>Edit</span>
|
|
534
|
+
</div>
|
|
535
|
+
),
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
value: (
|
|
539
|
+
<div className='display-flex align-items-center gap-10'>
|
|
540
|
+
<span className='rioglyph rioglyph-duplicate' />
|
|
541
|
+
<span>Duplicate</span>
|
|
542
|
+
</div>
|
|
543
|
+
),
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
value: (
|
|
547
|
+
<div className='display-flex align-items-center gap-10'>
|
|
548
|
+
<span className='rioglyph rioglyph-trash' />
|
|
549
|
+
<span>Delete</span>
|
|
550
|
+
</div>
|
|
551
|
+
),
|
|
552
|
+
},
|
|
553
|
+
]}
|
|
554
|
+
/>
|
|
555
|
+
</span>
|
|
556
|
+
);
|
|
557
|
+
|
|
558
|
+
const FILTER_KAY_MISSING_VIN = 'missingVin';
|
|
559
|
+
type TableFilterKey = typeof FILTER_KAY_MISSING_VIN;
|
|
560
|
+
|
|
561
|
+
const TABLE_FILTERS: Record<TableFilterKey, { label: string }> = {
|
|
562
|
+
missingVin: { label: 'Hide items without VIN' },
|
|
563
|
+
};
|
|
564
|
+
|
|
565
|
+
const applyFilter = (items: Vehicle[], filter: string[]) => {
|
|
566
|
+
const filterSet = new Set(filter);
|
|
567
|
+
|
|
568
|
+
return items.filter(item => {
|
|
569
|
+
// If 'missingVin' is in the filter set, keep only items with a VIN (!!item.vin is true).
|
|
570
|
+
// If 'missingVin' is NOT in the filter set, this specific condition doesn't remove the item.
|
|
571
|
+
if (filterSet.has(FILTER_KAY_MISSING_VIN) && !item.vin) {
|
|
572
|
+
return false; // Hide items without VIN if filter is active
|
|
573
|
+
}
|
|
574
|
+
// Add more filter conditions here as needed.
|
|
575
|
+
// If no active filter criteria cause the item to be excluded, keep it.
|
|
576
|
+
return true;
|
|
577
|
+
});
|
|
578
|
+
};
|
|
579
|
+
|
|
580
|
+
const TableFilterDialog = (props: {
|
|
581
|
+
show: boolean;
|
|
582
|
+
onClose: VoidFunction;
|
|
583
|
+
filter: TableFilterKey[];
|
|
584
|
+
onSetFilter: (filter: TableFilterKey[]) => void;
|
|
585
|
+
}) => {
|
|
586
|
+
const { show, onClose, filter, onSetFilter } = props;
|
|
587
|
+
|
|
588
|
+
const filterSet = new Set(filter);
|
|
589
|
+
|
|
590
|
+
const toggleFilter = (key: TableFilterKey) => {
|
|
591
|
+
const newFilter = new Set(filter);
|
|
592
|
+
if (newFilter.has(key)) {
|
|
593
|
+
newFilter.delete(key);
|
|
594
|
+
} else {
|
|
595
|
+
newFilter.add(key);
|
|
596
|
+
}
|
|
597
|
+
onSetFilter(Array.from(newFilter));
|
|
598
|
+
};
|
|
599
|
+
|
|
600
|
+
return (
|
|
601
|
+
<Dialog
|
|
602
|
+
show={show}
|
|
603
|
+
bsSize='sm'
|
|
604
|
+
onClose={onClose}
|
|
605
|
+
title='Table filter'
|
|
606
|
+
body={
|
|
607
|
+
<div>
|
|
608
|
+
<fieldset className='margin-bottom-25'>
|
|
609
|
+
<legend>Vehicle properties</legend>
|
|
610
|
+
<div className='display-flex flex-column gap-10'>
|
|
611
|
+
{Object.entries(TABLE_FILTERS).map(([key, { label }]) => (
|
|
612
|
+
<Checkbox
|
|
613
|
+
key={key}
|
|
614
|
+
checked={filterSet.has(key as TableFilterKey)}
|
|
615
|
+
onChange={() => toggleFilter(key as TableFilterKey)}
|
|
616
|
+
className='user-select-none'
|
|
617
|
+
>
|
|
618
|
+
{label}
|
|
619
|
+
</Checkbox>
|
|
620
|
+
))}
|
|
621
|
+
<Checkbox disabled>Lorem ipsum dolor</Checkbox>
|
|
622
|
+
<Checkbox disabled>Dolor sit amet</Checkbox>
|
|
623
|
+
</div>
|
|
624
|
+
</fieldset>
|
|
625
|
+
<fieldset>
|
|
626
|
+
<legend>More filter options</legend>
|
|
627
|
+
<div className='display-flex flex-column gap-10'>
|
|
628
|
+
<Checkbox disabled>Lorem ipsum dolor</Checkbox>
|
|
629
|
+
<Checkbox disabled>Dolor sit amet</Checkbox>
|
|
630
|
+
</div>
|
|
631
|
+
</fieldset>
|
|
632
|
+
</div>
|
|
633
|
+
}
|
|
634
|
+
footer={
|
|
635
|
+
<div className='btn-toolbar'>
|
|
636
|
+
<Button onClick={onClose}>
|
|
637
|
+
<span>Close</span>
|
|
638
|
+
</Button>
|
|
639
|
+
</div>
|
|
640
|
+
}
|
|
641
|
+
/>
|
|
642
|
+
);
|
|
643
|
+
};
|
|
644
|
+
|
|
645
|
+
export default TableCommonDemo;
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
#### HTML (html)
|
|
649
|
+
|
|
650
|
+
```html
|
|
651
|
+
<div>
|
|
652
|
+
<div class="table-toolbar">
|
|
653
|
+
<div class="table-toolbar-container">
|
|
654
|
+
<div class="table-toolbar-group-left">
|
|
655
|
+
<div class="table-toolbar-column">
|
|
656
|
+
<div class="display-grid grid-cols-3 display-flex-ls btn-toolbar">
|
|
657
|
+
<button type="button" class="btn btn-primary btn-component" tabindex="0">
|
|
658
|
+
<span class="rioglyph rioglyph-plus">
|
|
659
|
+
</span>New</button>
|
|
660
|
+
<div class="dropdown btn-group">
|
|
661
|
+
<button type="button" id="myActionButton" class="btn btn-default btn-md btn-component dropdown-toggle" tabindex="0">Button<span class="caret">
|
|
662
|
+
</span>
|
|
663
|
+
</button>
|
|
664
|
+
</div>
|
|
665
|
+
</div>
|
|
666
|
+
</div>
|
|
667
|
+
</div>
|
|
668
|
+
<div class="table-toolbar-group-right">
|
|
669
|
+
<div class="table-toolbar-column">
|
|
670
|
+
<button type="button" class="btn btn-default btn-component" tabindex="0">
|
|
671
|
+
<span class="rioglyph rioglyph-filter">
|
|
672
|
+
</span>Filter</button>
|
|
673
|
+
</div>
|
|
674
|
+
<div class="table-toolbar-column table-toolbar-column-spacer">
|
|
675
|
+
<div class="table-toolbar-search input-group">
|
|
676
|
+
<span class="input-group-addon">
|
|
677
|
+
<span class="rioglyph rioglyph-search">
|
|
678
|
+
</span>
|
|
679
|
+
</span>
|
|
680
|
+
<div class="ClearableInput input-group">
|
|
681
|
+
<input placeholder="Search in table" class="form-control" type="text" tabindex="0" value="">
|
|
682
|
+
<span class="clearButton hide">
|
|
683
|
+
<span class="clearButtonIcon rioglyph rioglyph-remove-sign">
|
|
684
|
+
</span>
|
|
685
|
+
</span>
|
|
686
|
+
</div>
|
|
687
|
+
</div>
|
|
688
|
+
</div>
|
|
689
|
+
<div class="table-toolbar-column display-flex flex-row align-items-end gap-15">
|
|
690
|
+
<div>
|
|
691
|
+
<div class="text-color-dark max-width-100pct text-size-12 display-inline-block margin-bottom-5 table-toolbar-label">Label</div>
|
|
692
|
+
<div class="TableViewToggles btn-group display-flex flex-row">
|
|
693
|
+
<button class="btn btn-default btn-icon-only active" type="button">
|
|
694
|
+
<span class="rioglyph rioglyph-table-view">
|
|
695
|
+
</span>
|
|
696
|
+
</button>
|
|
697
|
+
<button class="btn btn-default btn-icon-only" type="button">
|
|
698
|
+
<span class="rioglyph rioglyph-th-list">
|
|
699
|
+
</span>
|
|
700
|
+
</button>
|
|
701
|
+
<button class="btn btn-default btn-icon-only" type="button">
|
|
702
|
+
<span class="rioglyph rioglyph-split-view">
|
|
703
|
+
</span>
|
|
704
|
+
</button>
|
|
705
|
+
</div>
|
|
706
|
+
</div>
|
|
707
|
+
<button type="button" class="btn btn-default btn-icon-only btn-component" tabindex="0">
|
|
708
|
+
<span class="rioglyph rioglyph-settings">
|
|
709
|
+
</span>
|
|
710
|
+
</button>
|
|
711
|
+
</div>
|
|
712
|
+
</div>
|
|
713
|
+
</div>
|
|
714
|
+
</div>
|
|
715
|
+
<div class="table-responsive">
|
|
716
|
+
<table class="table table-layout-fixed table-column-overflow-hidden table-bordered table-sticky table-head-filled">
|
|
717
|
+
<colgroup>
|
|
718
|
+
<col class="" style="min-width: 60px; width: 60px;">
|
|
719
|
+
<col class="" style="min-width: 200px; width: 200px;">
|
|
720
|
+
<col class="">
|
|
721
|
+
<col class="">
|
|
722
|
+
<col class="">
|
|
723
|
+
<col class="table-action">
|
|
724
|
+
</colgroup>
|
|
725
|
+
<thead>
|
|
726
|
+
<tr>
|
|
727
|
+
<th class="user-select-none sort-column" data-field="vehicleId" data-sortby="vehicleId" title="Id">
|
|
728
|
+
<span>
|
|
729
|
+
<span class="sort-arrows sort-asc">
|
|
730
|
+
</span>
|
|
731
|
+
<span>Id</span>
|
|
732
|
+
</span>
|
|
733
|
+
</th>
|
|
734
|
+
<th class="user-select-none sort-column" data-field="name" data-sortby="name" title="Name">
|
|
735
|
+
<span>
|
|
736
|
+
<span class="sort-arrows ">
|
|
737
|
+
</span>
|
|
738
|
+
<span>Name</span>
|
|
739
|
+
</span>
|
|
740
|
+
</th>
|
|
741
|
+
<th class="user-select-none sort-column" data-field="vin" data-sortby="vin" title="VIN">
|
|
742
|
+
<span>
|
|
743
|
+
<span class="sort-arrows ">
|
|
744
|
+
</span>
|
|
745
|
+
<span>VIN</span>
|
|
746
|
+
</span>
|
|
747
|
+
</th>
|
|
748
|
+
<th class="user-select-none sort-column" data-field="status" data-sortby="status" title="Status">
|
|
749
|
+
<span>
|
|
750
|
+
<span class="sort-arrows ">
|
|
751
|
+
</span>
|
|
752
|
+
<span>Status</span>
|
|
753
|
+
</span>
|
|
754
|
+
</th>
|
|
755
|
+
<th class="user-select-none sort-column" data-field="duration" data-sortby="duration" title="Duration">
|
|
756
|
+
<span>
|
|
757
|
+
<span class="sort-arrows ">
|
|
758
|
+
</span>
|
|
759
|
+
<span>Duration</span>
|
|
760
|
+
</span>
|
|
761
|
+
</th>
|
|
762
|
+
<th class="user-select-none sort-column table-action" title="">
|
|
763
|
+
</th>
|
|
764
|
+
</tr>
|
|
765
|
+
</thead>
|
|
766
|
+
<tbody>
|
|
767
|
+
<tr data-id="233" class="cursor-pointer">
|
|
768
|
+
<td data-field="Id">
|
|
769
|
+
<span>233</span>
|
|
770
|
+
</td>
|
|
771
|
+
<td data-field="Name">
|
|
772
|
+
<span>Ipsum</span>
|
|
773
|
+
</td>
|
|
774
|
+
<td data-field="VIN">
|
|
775
|
+
<span>
|
|
776
|
+
<span class="NoData">
|
|
777
|
+
<span class="pointer-events-none user-select-none">No data</span>
|
|
778
|
+
</span>
|
|
779
|
+
</span>
|
|
780
|
+
</td>
|
|
781
|
+
<td data-field="Status">
|
|
782
|
+
<span>Inactive</span>
|
|
783
|
+
</td>
|
|
784
|
+
<td data-field="Duration">
|
|
785
|
+
<span>5h 15m</span>
|
|
786
|
+
</td>
|
|
787
|
+
<td class="table-action">
|
|
788
|
+
<span>
|
|
789
|
+
<div class="dropdown btn-group">
|
|
790
|
+
<button type="button" id="vpsj8rypurp" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
|
|
791
|
+
<span class="rioglyph rioglyph-option-vertical">
|
|
792
|
+
</span>
|
|
793
|
+
</button>
|
|
794
|
+
</div>
|
|
795
|
+
</span>
|
|
796
|
+
</td>
|
|
797
|
+
</tr>
|
|
798
|
+
<tr data-id="456" class="cursor-pointer">
|
|
799
|
+
<td data-field="Id">
|
|
800
|
+
<span>456</span>
|
|
801
|
+
</td>
|
|
802
|
+
<td data-field="Name">
|
|
803
|
+
<span>
|
|
804
|
+
<span class="NoData">
|
|
805
|
+
<span class="pointer-events-none user-select-none">No data</span>
|
|
806
|
+
</span>
|
|
807
|
+
</span>
|
|
808
|
+
</td>
|
|
809
|
+
<td data-field="VIN">
|
|
810
|
+
<span>456</span>
|
|
811
|
+
</td>
|
|
812
|
+
<td data-field="Status">
|
|
813
|
+
<span>Active</span>
|
|
814
|
+
</td>
|
|
815
|
+
<td data-field="Duration">
|
|
816
|
+
<span>4h 55m</span>
|
|
817
|
+
</td>
|
|
818
|
+
<td class="table-action">
|
|
819
|
+
<span>
|
|
820
|
+
<div class="dropdown btn-group">
|
|
821
|
+
<button type="button" id="xnq3f9zn1or" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
|
|
822
|
+
<span class="rioglyph rioglyph-option-vertical">
|
|
823
|
+
</span>
|
|
824
|
+
</button>
|
|
825
|
+
</div>
|
|
826
|
+
</span>
|
|
827
|
+
</td>
|
|
828
|
+
</tr>
|
|
829
|
+
<tr data-id="878" class="cursor-pointer">
|
|
830
|
+
<td data-field="Id">
|
|
831
|
+
<span>878</span>
|
|
832
|
+
</td>
|
|
833
|
+
<td data-field="Name">
|
|
834
|
+
<span>
|
|
835
|
+
<span class="NoData">
|
|
836
|
+
<span class="pointer-events-none user-select-none">No data</span>
|
|
837
|
+
</span>
|
|
838
|
+
</span>
|
|
839
|
+
</td>
|
|
840
|
+
<td data-field="VIN">
|
|
841
|
+
<span>878</span>
|
|
842
|
+
</td>
|
|
843
|
+
<td data-field="Status">
|
|
844
|
+
<span>Active</span>
|
|
845
|
+
</td>
|
|
846
|
+
<td data-field="Duration">
|
|
847
|
+
<span>9h 10m</span>
|
|
848
|
+
</td>
|
|
849
|
+
<td class="table-action">
|
|
850
|
+
<span>
|
|
851
|
+
<div class="dropdown btn-group">
|
|
852
|
+
<button type="button" id="s0qbncho0ip" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
|
|
853
|
+
<span class="rioglyph rioglyph-option-vertical">
|
|
854
|
+
</span>
|
|
855
|
+
</button>
|
|
856
|
+
</div>
|
|
857
|
+
</span>
|
|
858
|
+
</td>
|
|
859
|
+
</tr>
|
|
860
|
+
<tr data-id="895" class="cursor-pointer">
|
|
861
|
+
<td data-field="Id">
|
|
862
|
+
<span>895</span>
|
|
863
|
+
</td>
|
|
864
|
+
<td data-field="Name">
|
|
865
|
+
<span>
|
|
866
|
+
<span class="NoData">
|
|
867
|
+
<span class="pointer-events-none user-select-none">No data</span>
|
|
868
|
+
</span>
|
|
869
|
+
</span>
|
|
870
|
+
</td>
|
|
871
|
+
<td data-field="VIN">
|
|
872
|
+
<span>895</span>
|
|
873
|
+
</td>
|
|
874
|
+
<td data-field="Status">
|
|
875
|
+
<span>Active</span>
|
|
876
|
+
</td>
|
|
877
|
+
<td data-field="Duration">
|
|
878
|
+
<span>8h 45m</span>
|
|
879
|
+
</td>
|
|
880
|
+
<td class="table-action">
|
|
881
|
+
<span>
|
|
882
|
+
<div class="dropdown btn-group">
|
|
883
|
+
<button type="button" id="cjhctz5rnlc" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
|
|
884
|
+
<span class="rioglyph rioglyph-option-vertical">
|
|
885
|
+
</span>
|
|
886
|
+
</button>
|
|
887
|
+
</div>
|
|
888
|
+
</span>
|
|
889
|
+
</td>
|
|
890
|
+
</tr>
|
|
891
|
+
<tr data-id="978" class="cursor-pointer">
|
|
892
|
+
<td data-field="Id">
|
|
893
|
+
<span>978</span>
|
|
894
|
+
</td>
|
|
895
|
+
<td data-field="Name">
|
|
896
|
+
<span>Ipsum</span>
|
|
897
|
+
</td>
|
|
898
|
+
<td data-field="VIN">
|
|
899
|
+
<span>
|
|
900
|
+
<span class="NoData">
|
|
901
|
+
<span class="pointer-events-none user-select-none">No data</span>
|
|
902
|
+
</span>
|
|
903
|
+
</span>
|
|
904
|
+
</td>
|
|
905
|
+
<td data-field="Status">
|
|
906
|
+
<span>Inactive</span>
|
|
907
|
+
</td>
|
|
908
|
+
<td data-field="Duration">
|
|
909
|
+
<span>6h 35m</span>
|
|
910
|
+
</td>
|
|
911
|
+
<td class="table-action">
|
|
912
|
+
<span>
|
|
913
|
+
<div class="dropdown btn-group">
|
|
914
|
+
<button type="button" id="5iacsci0yi" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
|
|
915
|
+
<span class="rioglyph rioglyph-option-vertical">
|
|
916
|
+
</span>
|
|
917
|
+
</button>
|
|
918
|
+
</div>
|
|
919
|
+
</span>
|
|
920
|
+
</td>
|
|
921
|
+
</tr>
|
|
922
|
+
<tr data-id="2345" class="cursor-pointer">
|
|
923
|
+
<td data-field="Id">
|
|
924
|
+
<span>2345</span>
|
|
925
|
+
</td>
|
|
926
|
+
<td data-field="Name">
|
|
927
|
+
<span>Lorem</span>
|
|
928
|
+
</td>
|
|
929
|
+
<td data-field="VIN">
|
|
930
|
+
<span>2345</span>
|
|
931
|
+
</td>
|
|
932
|
+
<td data-field="Status">
|
|
933
|
+
<span>Active</span>
|
|
934
|
+
</td>
|
|
935
|
+
<td data-field="Duration">
|
|
936
|
+
<span>11h 50m</span>
|
|
937
|
+
</td>
|
|
938
|
+
<td class="table-action">
|
|
939
|
+
<span>
|
|
940
|
+
<div class="dropdown btn-group">
|
|
941
|
+
<button type="button" id="qm66xtyznu" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
|
|
942
|
+
<span class="rioglyph rioglyph-option-vertical">
|
|
943
|
+
</span>
|
|
944
|
+
</button>
|
|
945
|
+
</div>
|
|
946
|
+
</span>
|
|
947
|
+
</td>
|
|
948
|
+
</tr>
|
|
949
|
+
<tr data-id="2445" class="cursor-pointer">
|
|
950
|
+
<td data-field="Id">
|
|
951
|
+
<span>2445</span>
|
|
952
|
+
</td>
|
|
953
|
+
<td data-field="Name">
|
|
954
|
+
<span>
|
|
955
|
+
<span class="NoData">
|
|
956
|
+
<span class="pointer-events-none user-select-none">No data</span>
|
|
957
|
+
</span>
|
|
958
|
+
</span>
|
|
959
|
+
</td>
|
|
960
|
+
<td data-field="VIN">
|
|
961
|
+
<span>2445</span>
|
|
962
|
+
</td>
|
|
963
|
+
<td data-field="Status">
|
|
964
|
+
<span>Active</span>
|
|
965
|
+
</td>
|
|
966
|
+
<td data-field="Duration">
|
|
967
|
+
<span>7h 25m</span>
|
|
968
|
+
</td>
|
|
969
|
+
<td class="table-action">
|
|
970
|
+
<span>
|
|
971
|
+
<div class="dropdown btn-group">
|
|
972
|
+
<button type="button" id="0296eztcd15j" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
|
|
973
|
+
<span class="rioglyph rioglyph-option-vertical">
|
|
974
|
+
</span>
|
|
975
|
+
</button>
|
|
976
|
+
</div>
|
|
977
|
+
</span>
|
|
978
|
+
</td>
|
|
979
|
+
</tr>
|
|
980
|
+
<tr data-id="3456" class="cursor-pointer">
|
|
981
|
+
<td data-field="Id">
|
|
982
|
+
<span>3456</span>
|
|
983
|
+
</td>
|
|
984
|
+
<td data-field="Name">
|
|
985
|
+
<span>
|
|
986
|
+
<span class="NoData">
|
|
987
|
+
<span class="pointer-events-none user-select-none">No data</span>
|
|
988
|
+
</span>
|
|
989
|
+
</span>
|
|
990
|
+
</td>
|
|
991
|
+
<td data-field="VIN">
|
|
992
|
+
<span>3456</span>
|
|
993
|
+
</td>
|
|
994
|
+
<td data-field="Status">
|
|
995
|
+
<span>Active</span>
|
|
996
|
+
</td>
|
|
997
|
+
<td data-field="Duration">
|
|
998
|
+
<span>12h 00m</span>
|
|
999
|
+
</td>
|
|
1000
|
+
<td class="table-action">
|
|
1001
|
+
<span>
|
|
1002
|
+
<div class="dropdown btn-group">
|
|
1003
|
+
<button type="button" id="0df3rjzvahe" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
|
|
1004
|
+
<span class="rioglyph rioglyph-option-vertical">
|
|
1005
|
+
</span>
|
|
1006
|
+
</button>
|
|
1007
|
+
</div>
|
|
1008
|
+
</span>
|
|
1009
|
+
</td>
|
|
1010
|
+
</tr>
|
|
1011
|
+
<tr data-id="4567" class="cursor-pointer">
|
|
1012
|
+
<td data-field="Id">
|
|
1013
|
+
<span>4567</span>
|
|
1014
|
+
</td>
|
|
1015
|
+
<td data-field="Name">
|
|
1016
|
+
<span>
|
|
1017
|
+
<span class="NoData">
|
|
1018
|
+
<span class="pointer-events-none user-select-none">No data</span>
|
|
1019
|
+
</span>
|
|
1020
|
+
</span>
|
|
1021
|
+
</td>
|
|
1022
|
+
<td data-field="VIN">
|
|
1023
|
+
<span>4567</span>
|
|
1024
|
+
</td>
|
|
1025
|
+
<td data-field="Status">
|
|
1026
|
+
<span>Active</span>
|
|
1027
|
+
</td>
|
|
1028
|
+
<td data-field="Duration">
|
|
1029
|
+
<span>10h 20m</span>
|
|
1030
|
+
</td>
|
|
1031
|
+
<td class="table-action">
|
|
1032
|
+
<span>
|
|
1033
|
+
<div class="dropdown btn-group">
|
|
1034
|
+
<button type="button" id="zmays3vrfsr" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
|
|
1035
|
+
<span class="rioglyph rioglyph-option-vertical">
|
|
1036
|
+
</span>
|
|
1037
|
+
</button>
|
|
1038
|
+
</div>
|
|
1039
|
+
</span>
|
|
1040
|
+
</td>
|
|
1041
|
+
</tr>
|
|
1042
|
+
<tr data-id="7354" class="cursor-pointer">
|
|
1043
|
+
<td data-field="Id">
|
|
1044
|
+
<span>7354</span>
|
|
1045
|
+
</td>
|
|
1046
|
+
<td data-field="Name">
|
|
1047
|
+
<span>Lorem</span>
|
|
1048
|
+
</td>
|
|
1049
|
+
<td data-field="VIN">
|
|
1050
|
+
<span>7354</span>
|
|
1051
|
+
</td>
|
|
1052
|
+
<td data-field="Status">
|
|
1053
|
+
<span>Active</span>
|
|
1054
|
+
</td>
|
|
1055
|
+
<td data-field="Duration">
|
|
1056
|
+
<span>10h 30m</span>
|
|
1057
|
+
</td>
|
|
1058
|
+
<td class="table-action">
|
|
1059
|
+
<span>
|
|
1060
|
+
<div class="dropdown btn-group">
|
|
1061
|
+
<button type="button" id="k9wqezo8n1h" class="btn btn-default btn-link btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
|
|
1062
|
+
<span class="rioglyph rioglyph-option-vertical">
|
|
1063
|
+
</span>
|
|
1064
|
+
</button>
|
|
1065
|
+
</div>
|
|
1066
|
+
</span>
|
|
1067
|
+
</td>
|
|
1068
|
+
</tr>
|
|
1069
|
+
<tr class="table-card-placeholder">
|
|
1070
|
+
</tr>
|
|
1071
|
+
<tr class="table-card-placeholder">
|
|
1072
|
+
</tr>
|
|
1073
|
+
<tr class="table-card-placeholder">
|
|
1074
|
+
</tr>
|
|
1075
|
+
<tr class="table-card-placeholder">
|
|
1076
|
+
</tr>
|
|
1077
|
+
<tr class="table-card-placeholder">
|
|
1078
|
+
</tr>
|
|
1079
|
+
<tr class="table-card-placeholder">
|
|
1080
|
+
</tr>
|
|
1081
|
+
<tr class="table-card-placeholder">
|
|
1082
|
+
</tr>
|
|
1083
|
+
<tr class="table-card-placeholder">
|
|
1084
|
+
</tr>
|
|
1085
|
+
<tr class="table-card-placeholder">
|
|
1086
|
+
</tr>
|
|
1087
|
+
<tr class="table-card-placeholder">
|
|
1088
|
+
</tr>
|
|
1089
|
+
</tbody>
|
|
1090
|
+
</table>
|
|
1091
|
+
</div>
|
|
1092
|
+
<div class="LoadMoreButton align-items-center display-flex justify-content-center margin-top-25 margin-bottom-25 non-printable">
|
|
1093
|
+
<div class="min-width-150">
|
|
1094
|
+
<div class="text-center margin-bottom-3">
|
|
1095
|
+
<span class="text-medium">70</span>
|
|
1096
|
+
<span class="margin-left-5 margin-right-5">/</span>
|
|
1097
|
+
<span class="text-medium">100</span>
|
|
1098
|
+
</div>
|
|
1099
|
+
<div class="progress height-2 margin-bottom-10 bg-white">
|
|
1100
|
+
<div class="progress-bar" style="width: 70%;">
|
|
1101
|
+
</div>
|
|
1102
|
+
</div>
|
|
1103
|
+
<div class="display-flex justify-content-center">
|
|
1104
|
+
<button class="btn btn-link padding-right-20 margin-top--5" type="button">
|
|
1105
|
+
<span class="rioglyph rioglyph-arrow-down">
|
|
1106
|
+
</span>Load more</button>
|
|
1107
|
+
</div>
|
|
1108
|
+
</div>
|
|
1109
|
+
</div>
|
|
1110
|
+
</div>
|
|
1111
|
+
```
|