@rio-cloud/uikit-mcp 1.0.0 → 1.1.0

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 (388) hide show
  1. package/README.md +75 -40
  2. package/dist/doc-metadata.json +1872 -0
  3. package/dist/docs/components/accentBar.md +582 -0
  4. package/dist/docs/components/activity.md +330 -0
  5. package/dist/docs/components/animatedNumber.md +88 -0
  6. package/dist/docs/components/animatedTextReveal.md +381 -0
  7. package/dist/docs/components/animations.md +459 -0
  8. package/dist/docs/components/appHeader.md +737 -0
  9. package/dist/docs/components/appLayout.md +2016 -0
  10. package/dist/docs/components/appNavigationBar.md +274 -0
  11. package/dist/docs/components/areaCharts.md +828 -0
  12. package/dist/docs/components/aspectRatioPlaceholder.md +106 -0
  13. package/dist/docs/components/assetTree.md +3223 -0
  14. package/dist/docs/components/autosuggests.md +1177 -0
  15. package/dist/docs/components/avatar.md +206 -0
  16. package/dist/docs/components/banner.md +668 -0
  17. package/dist/docs/components/barCharts.md +2785 -0
  18. package/dist/docs/components/barList.md +517 -0
  19. package/dist/docs/components/basicMap.md +167 -0
  20. package/dist/docs/components/bottomSheet.md +721 -0
  21. package/dist/docs/components/button.md +775 -0
  22. package/dist/docs/components/buttonToolbar.md +134 -0
  23. package/dist/docs/components/calendarStripe.md +525 -0
  24. package/dist/docs/components/card.md +86 -0
  25. package/dist/docs/components/carousel.md +128 -0
  26. package/dist/docs/components/chartColors.md +716 -0
  27. package/dist/docs/components/chartsGettingStarted.md +28 -0
  28. package/dist/docs/components/chat.md +932 -0
  29. package/dist/docs/components/checkbox.md +996 -0
  30. package/dist/docs/components/clearableInput.md +806 -0
  31. package/dist/docs/components/collapse.md +189 -0
  32. package/dist/docs/components/composedCharts.md +424 -0
  33. package/dist/docs/components/contentLoader.md +674 -0
  34. package/dist/docs/components/dataTabs.md +1251 -0
  35. package/dist/docs/components/datepickers.md +2543 -0
  36. package/dist/docs/components/dialogs.md +2244 -0
  37. package/dist/docs/components/divider.md +219 -0
  38. package/dist/docs/components/dropdowns.md +17550 -0
  39. package/dist/docs/components/editableContent.md +1127 -0
  40. package/dist/docs/components/expander.md +970 -0
  41. package/dist/docs/components/fade.md +836 -0
  42. package/dist/docs/components/fadeExpander.md +180 -0
  43. package/dist/docs/components/fadeUp.md +396 -0
  44. package/dist/docs/components/feedback.md +758 -0
  45. package/dist/docs/components/filePickers.md +370 -0
  46. package/dist/docs/components/formLabel.md +251 -0
  47. package/dist/docs/components/fullscreenMap.md +10 -0
  48. package/dist/docs/components/groupedItemList.md +1001 -0
  49. package/dist/docs/components/iconList.md +306 -0
  50. package/dist/docs/components/imagePreloader.md +167 -0
  51. package/dist/docs/components/labeledElement.md +115 -0
  52. package/dist/docs/components/licensePlate.md +412 -0
  53. package/dist/docs/components/lineCharts.md +2014 -0
  54. package/dist/docs/components/listMenu.md +392 -0
  55. package/dist/docs/components/loadMore.md +219 -0
  56. package/dist/docs/components/mainNavigation.md +129 -0
  57. package/dist/docs/components/mapCircle.md +93 -0
  58. package/dist/docs/components/mapCluster.md +337 -0
  59. package/dist/docs/components/mapContext.md +284 -0
  60. package/dist/docs/components/mapDraggableMarker.md +150 -0
  61. package/dist/docs/components/mapGettingStarted.md +39 -0
  62. package/dist/docs/components/mapInfoBubble.md +135 -0
  63. package/dist/docs/components/mapLayerGroup.md +94 -0
  64. package/dist/docs/components/mapMarker.md +1814 -0
  65. package/dist/docs/components/mapPolygon.md +959 -0
  66. package/dist/docs/components/mapRoute.md +3816 -0
  67. package/dist/docs/components/mapRouteGenerator.md +6 -0
  68. package/dist/docs/components/mapSettings.md +1040 -0
  69. package/dist/docs/components/mapUtils.md +132 -0
  70. package/dist/docs/components/multiselects.md +1921 -0
  71. package/dist/docs/components/noData.md +210 -0
  72. package/dist/docs/components/notifications.md +314 -0
  73. package/dist/docs/components/numbercontrol.md +706 -0
  74. package/dist/docs/components/onboarding.md +297 -0
  75. package/dist/docs/components/page.md +241 -0
  76. package/dist/docs/components/pager.md +133 -0
  77. package/dist/docs/components/pieCharts.md +1284 -0
  78. package/dist/docs/components/popover.md +222 -0
  79. package/dist/docs/components/position.md +50 -0
  80. package/dist/docs/components/radialBarCharts.md +3663 -0
  81. package/dist/docs/components/radiobutton.md +1271 -0
  82. package/dist/docs/components/releaseNotes.md +135 -0
  83. package/dist/docs/components/resizer.md +162 -0
  84. package/dist/docs/components/responsiveColumnStripe.md +435 -0
  85. package/dist/docs/components/responsiveVideo.md +71 -0
  86. package/dist/docs/components/rioglyph.md +331 -0
  87. package/dist/docs/components/rules.md +965 -0
  88. package/dist/docs/components/saveableInput.md +1721 -0
  89. package/dist/docs/components/selects.md +1993 -0
  90. package/dist/docs/components/sidebar.md +332 -0
  91. package/dist/docs/components/sliders.md +376 -0
  92. package/dist/docs/components/smoothScrollbars.md +1180 -0
  93. package/dist/docs/components/spinners.md +506 -0
  94. package/dist/docs/components/states.md +1176 -0
  95. package/dist/docs/components/statsWidgets.md +636 -0
  96. package/dist/docs/components/statusBar.md +644 -0
  97. package/dist/docs/components/stepButton.md +61 -0
  98. package/dist/docs/components/steppedProgressBars.md +1064 -0
  99. package/dist/docs/components/subNavigation.md +470 -0
  100. package/dist/docs/components/supportMarker.md +115 -0
  101. package/dist/docs/components/svgImage.md +248 -0
  102. package/dist/docs/components/switch.md +554 -0
  103. package/dist/docs/components/tables.md +8 -0
  104. package/dist/docs/components/tagManager.md +476 -0
  105. package/dist/docs/components/tags.md +785 -0
  106. package/dist/docs/components/teaser.md +925 -0
  107. package/dist/docs/components/timeline.md +514 -0
  108. package/dist/docs/components/timepicker.md +262 -0
  109. package/dist/docs/components/toggleButton.md +178 -0
  110. package/dist/docs/components/tooltip.md +454 -0
  111. package/dist/docs/components/virtualList.md +483 -0
  112. package/dist/docs/foundations.md +20901 -0
  113. package/dist/docs/start/changelog.md +439 -0
  114. package/dist/docs/start/goodtoknow.md +14 -0
  115. package/dist/docs/start/guidelines/color-combinations.md +678 -0
  116. package/dist/docs/start/guidelines/custom-css.md +42 -0
  117. package/dist/docs/start/guidelines/custom-rioglyph.md +35 -0
  118. package/dist/docs/start/guidelines/formatting.md +587 -0
  119. package/dist/docs/start/guidelines/iframe.md +323 -0
  120. package/dist/docs/start/guidelines/obfuscate-data.md +30 -0
  121. package/dist/docs/start/guidelines/print-css.md +36 -0
  122. package/dist/docs/start/guidelines/spinner.md +710 -0
  123. package/dist/docs/start/guidelines/supported-browsers.md +10 -0
  124. package/dist/docs/start/guidelines/writing.md +635 -0
  125. package/dist/docs/start/howto.md +187 -0
  126. package/dist/docs/start/intro.md +43 -0
  127. package/dist/docs/start/responsiveness.md +98 -0
  128. package/dist/docs/templates/common-table.md +1111 -0
  129. package/dist/docs/templates/detail-views.md +942 -0
  130. package/dist/docs/templates/expandable-details.md +228 -0
  131. package/dist/docs/templates/feature-cards.md +549 -0
  132. package/dist/docs/templates/form-summary.md +199 -0
  133. package/dist/docs/templates/form-toggle.md +367 -0
  134. package/dist/docs/templates/list-blocks.md +1021 -0
  135. package/dist/docs/templates/loading-progress.md +109 -0
  136. package/dist/docs/templates/options-panel.md +152 -0
  137. package/dist/docs/templates/panel-variants.md +164 -0
  138. package/dist/docs/templates/progress-cards.md +607 -0
  139. package/dist/docs/templates/progress-success.md +142 -0
  140. package/dist/docs/templates/settings-form.md +434 -0
  141. package/dist/docs/templates/stats-blocks.md +1381 -0
  142. package/dist/docs/templates/table-panel.md +184 -0
  143. package/dist/docs/templates/table-row-animation.md +317 -0
  144. package/dist/docs/templates/usage-cards.md +227 -0
  145. package/dist/docs/utilities/deviceUtils.md +123 -0
  146. package/dist/docs/utilities/featureToggles.md +90 -0
  147. package/dist/docs/utilities/fuelTypeUtils.md +186 -0
  148. package/dist/docs/utilities/routeUtils.md +138 -0
  149. package/dist/docs/utilities/useAfterMount.md +66 -0
  150. package/dist/docs/utilities/useAutoAnimate.md +193 -0
  151. package/dist/docs/utilities/useAverage.md +95 -0
  152. package/dist/docs/utilities/useClickOutside.md +61 -0
  153. package/dist/docs/utilities/useClipboard.md +93 -0
  154. package/dist/docs/utilities/useCount.md +178 -0
  155. package/dist/docs/utilities/useDarkMode.md +49 -0
  156. package/dist/docs/utilities/useDebugInfo.md +126 -0
  157. package/dist/docs/utilities/useEffectOnce.md +58 -0
  158. package/dist/docs/utilities/useElapsedTime.md +58 -0
  159. package/dist/docs/utilities/useElementSize.md +71 -0
  160. package/dist/docs/utilities/useEsc.md +58 -0
  161. package/dist/docs/utilities/useEvent.md +64 -0
  162. package/dist/docs/utilities/useFocusTrap.md +85 -0
  163. package/dist/docs/utilities/useFullscreen.md +198 -0
  164. package/dist/docs/utilities/useHover.md +55 -0
  165. package/dist/docs/utilities/useIncomingPostMessages.md +237 -0
  166. package/dist/docs/utilities/useInterval.md +85 -0
  167. package/dist/docs/utilities/useIsFocusWithin.md +114 -0
  168. package/dist/docs/utilities/useKey.md +151 -0
  169. package/dist/docs/utilities/useLocalStorage.md +91 -0
  170. package/dist/docs/utilities/useLocationSuggestions.md +114 -0
  171. package/dist/docs/utilities/useMax.md +62 -0
  172. package/dist/docs/utilities/useMin.md +78 -0
  173. package/dist/docs/utilities/useMutationObserver.md +113 -0
  174. package/dist/docs/utilities/useOnScreen.md +138 -0
  175. package/dist/docs/utilities/useOnlineStatus.md +49 -0
  176. package/dist/docs/utilities/usePostMessage.md +117 -0
  177. package/dist/docs/utilities/usePostMessageSender.md +257 -0
  178. package/dist/docs/utilities/usePrevious.md +101 -0
  179. package/dist/docs/utilities/useResizeObserver.md +151 -0
  180. package/dist/docs/utilities/useScrollPosition.md +252 -0
  181. package/dist/docs/utilities/useSearch.md +228 -0
  182. package/dist/docs/utilities/useSorting.md +389 -0
  183. package/dist/docs/utilities/useStateWithValidation.md +83 -0
  184. package/dist/docs/utilities/useSum.md +155 -0
  185. package/dist/docs/utilities/useTableExport.md +404 -0
  186. package/dist/docs/utilities/useTableSelection.md +1120 -0
  187. package/dist/docs/utilities/useTimeout.md +55 -0
  188. package/dist/docs/utilities/useToggle.md +115 -0
  189. package/dist/docs/utilities/useWindowResize.md +70 -0
  190. package/dist/index.mjs +271 -0
  191. package/dist/search-synonyms.json +134 -0
  192. package/dist/version.json +4 -0
  193. package/package.json +23 -19
  194. package/bin/uikit-mcp.mjs +0 -23
  195. package/data/pages/Components/components/accentbar.json +0 -207
  196. package/data/pages/Components/components/activity.json +0 -87
  197. package/data/pages/Components/components/animatednumber.json +0 -99
  198. package/data/pages/Components/components/animations.json +0 -87
  199. package/data/pages/Components/components/appheader.json +0 -291
  200. package/data/pages/Components/components/applayout.json +0 -1198
  201. package/data/pages/Components/components/appnavigationbar.json +0 -327
  202. package/data/pages/Components/components/areacharts.json +0 -563
  203. package/data/pages/Components/components/aspectratioplaceholder.json +0 -75
  204. package/data/pages/Components/components/assettree.json +0 -3080
  205. package/data/pages/Components/components/autosuggests.json +0 -710
  206. package/data/pages/Components/components/avatar.json +0 -157
  207. package/data/pages/Components/components/banner.json +0 -599
  208. package/data/pages/Components/components/barcharts.json +0 -1507
  209. package/data/pages/Components/components/barlist.json +0 -223
  210. package/data/pages/Components/components/basicmap.json +0 -68
  211. package/data/pages/Components/components/bottomsheet.json +0 -601
  212. package/data/pages/Components/components/button.json +0 -583
  213. package/data/pages/Components/components/buttontoolbar.json +0 -63
  214. package/data/pages/Components/components/calendarstripe.json +0 -235
  215. package/data/pages/Components/components/card.json +0 -69
  216. package/data/pages/Components/components/carousel.json +0 -39
  217. package/data/pages/Components/components/chartcolors.json +0 -34
  218. package/data/pages/Components/components/chartsgettingstarted.json +0 -32
  219. package/data/pages/Components/components/chat.json +0 -39
  220. package/data/pages/Components/components/checkbox.json +0 -847
  221. package/data/pages/Components/components/clearableinput.json +0 -789
  222. package/data/pages/Components/components/collapse.json +0 -175
  223. package/data/pages/Components/components/composedcharts.json +0 -159
  224. package/data/pages/Components/components/contentloader.json +0 -233
  225. package/data/pages/Components/components/datatabs.json +0 -680
  226. package/data/pages/Components/components/datepickers.json +0 -287
  227. package/data/pages/Components/components/dialogs.json +0 -1492
  228. package/data/pages/Components/components/divider.json +0 -93
  229. package/data/pages/Components/components/dropdowns.json +0 -936
  230. package/data/pages/Components/components/editablecontent.json +0 -1117
  231. package/data/pages/Components/components/expander.json +0 -377
  232. package/data/pages/Components/components/fade.json +0 -403
  233. package/data/pages/Components/components/fadeexpander.json +0 -75
  234. package/data/pages/Components/components/fadeup.json +0 -127
  235. package/data/pages/Components/components/feedback.json +0 -269
  236. package/data/pages/Components/components/filepickers.json +0 -269
  237. package/data/pages/Components/components/formlabel.json +0 -115
  238. package/data/pages/Components/components/fullscreenmap.json +0 -22
  239. package/data/pages/Components/components/groupeditemlist.json +0 -323
  240. package/data/pages/Components/components/iconlist.json +0 -45
  241. package/data/pages/Components/components/imagepreloader.json +0 -81
  242. package/data/pages/Components/components/labeledelement.json +0 -75
  243. package/data/pages/Components/components/licenseplate.json +0 -69
  244. package/data/pages/Components/components/linecharts.json +0 -987
  245. package/data/pages/Components/components/listmenu.json +0 -313
  246. package/data/pages/Components/components/loadmore.json +0 -175
  247. package/data/pages/Components/components/mainnavigation.json +0 -39
  248. package/data/pages/Components/components/mapcircle.json +0 -34
  249. package/data/pages/Components/components/mapcluster.json +0 -51
  250. package/data/pages/Components/components/mapcontext.json +0 -105
  251. package/data/pages/Components/components/mapdraggablemarker.json +0 -34
  252. package/data/pages/Components/components/mapgettingstarted.json +0 -27
  253. package/data/pages/Components/components/mapgroup.json +0 -1198
  254. package/data/pages/Components/components/mapinfobubble.json +0 -34
  255. package/data/pages/Components/components/maplayergroup.json +0 -34
  256. package/data/pages/Components/components/mapmarker.json +0 -700
  257. package/data/pages/Components/components/mappolygon.json +0 -45
  258. package/data/pages/Components/components/maproute.json +0 -623
  259. package/data/pages/Components/components/maproutegenerator.json +0 -16
  260. package/data/pages/Components/components/mapsettings.json +0 -51
  261. package/data/pages/Components/components/maputils.json +0 -34
  262. package/data/pages/Components/components/multiselects.json +0 -1451
  263. package/data/pages/Components/components/nodata.json +0 -139
  264. package/data/pages/Components/components/notifications.json +0 -65
  265. package/data/pages/Components/components/numbercontrol.json +0 -301
  266. package/data/pages/Components/components/onboarding.json +0 -302
  267. package/data/pages/Components/components/page.json +0 -197
  268. package/data/pages/Components/components/pager.json +0 -93
  269. package/data/pages/Components/components/piecharts.json +0 -731
  270. package/data/pages/Components/components/popover.json +0 -251
  271. package/data/pages/Components/components/position.json +0 -69
  272. package/data/pages/Components/components/radialbarcharts.json +0 -1304
  273. package/data/pages/Components/components/radiobutton.json +0 -1105
  274. package/data/pages/Components/components/releasenotes.json +0 -44
  275. package/data/pages/Components/components/resizer.json +0 -93
  276. package/data/pages/Components/components/responsivecolumnstripe.json +0 -123
  277. package/data/pages/Components/components/responsivevideo.json +0 -75
  278. package/data/pages/Components/components/rioglyph.json +0 -93
  279. package/data/pages/Components/components/rules.json +0 -410
  280. package/data/pages/Components/components/saveableinput.json +0 -703
  281. package/data/pages/Components/components/selects.json +0 -701
  282. package/data/pages/Components/components/sidebar.json +0 -243
  283. package/data/pages/Components/components/sliders.json +0 -235
  284. package/data/pages/Components/components/smoothscrollbars.json +0 -335
  285. package/data/pages/Components/components/spinners.json +0 -343
  286. package/data/pages/Components/components/states.json +0 -1705
  287. package/data/pages/Components/components/statswidgets.json +0 -314
  288. package/data/pages/Components/components/statusbar.json +0 -177
  289. package/data/pages/Components/components/stepbutton.json +0 -57
  290. package/data/pages/Components/components/steppedprogressbars.json +0 -417
  291. package/data/pages/Components/components/subnavigation.json +0 -107
  292. package/data/pages/Components/components/supportmarker.json +0 -45
  293. package/data/pages/Components/components/svgimage.json +0 -81
  294. package/data/pages/Components/components/switch.json +0 -111
  295. package/data/pages/Components/components/tables.json +0 -144
  296. package/data/pages/Components/components/tagmanager.json +0 -86
  297. package/data/pages/Components/components/tags.json +0 -146
  298. package/data/pages/Components/components/teaser.json +0 -188
  299. package/data/pages/Components/components/timeline.json +0 -45
  300. package/data/pages/Components/components/timepicker.json +0 -163
  301. package/data/pages/Components/components/togglebutton.json +0 -247
  302. package/data/pages/Components/components/tooltip.json +0 -270
  303. package/data/pages/Components/components/virtuallist.json +0 -175
  304. package/data/pages/Foundations/foundations.json +0 -2475
  305. package/data/pages/Getting-started/start/changelog.json +0 -22
  306. package/data/pages/Getting-started/start/goodtoknow.json +0 -32
  307. package/data/pages/Getting-started/start/guidelines/color-combinations.json +0 -58
  308. package/data/pages/Getting-started/start/guidelines/custom-css.json +0 -27
  309. package/data/pages/Getting-started/start/guidelines/custom-rioglyph.json +0 -22
  310. package/data/pages/Getting-started/start/guidelines/formatting.json +0 -97
  311. package/data/pages/Getting-started/start/guidelines/iframe.json +0 -93
  312. package/data/pages/Getting-started/start/guidelines/obfuscate-data.json +0 -22
  313. package/data/pages/Getting-started/start/guidelines/print-css.json +0 -37
  314. package/data/pages/Getting-started/start/guidelines/spinner.json +0 -144
  315. package/data/pages/Getting-started/start/guidelines/supported-browsers.json +0 -22
  316. package/data/pages/Getting-started/start/guidelines/writing.json +0 -242
  317. package/data/pages/Getting-started/start/howto.json +0 -72
  318. package/data/pages/Getting-started/start/intro.json +0 -37
  319. package/data/pages/Getting-started/start/responsiveness.json +0 -52
  320. package/data/pages/Templates/templates/common-table.json +0 -39
  321. package/data/pages/Templates/templates/detail-views.json +0 -71
  322. package/data/pages/Templates/templates/expandable-details.json +0 -39
  323. package/data/pages/Templates/templates/feature-cards.json +0 -103
  324. package/data/pages/Templates/templates/form-summary.json +0 -39
  325. package/data/pages/Templates/templates/form-toggle.json +0 -39
  326. package/data/pages/Templates/templates/list-blocks.json +0 -119
  327. package/data/pages/Templates/templates/loading-progress.json +0 -39
  328. package/data/pages/Templates/templates/options-panel.json +0 -39
  329. package/data/pages/Templates/templates/panel-variants.json +0 -39
  330. package/data/pages/Templates/templates/progress-cards.json +0 -71
  331. package/data/pages/Templates/templates/progress-success.json +0 -39
  332. package/data/pages/Templates/templates/settings-form.json +0 -39
  333. package/data/pages/Templates/templates/stats-blocks.json +0 -135
  334. package/data/pages/Templates/templates/table-panel.json +0 -39
  335. package/data/pages/Templates/templates/table-row-animation.json +0 -39
  336. package/data/pages/Templates/templates/usage-cards.json +0 -39
  337. package/data/pages/Utilities/utilities/deviceutils.json +0 -39
  338. package/data/pages/Utilities/utilities/featuretoggles.json +0 -42
  339. package/data/pages/Utilities/utilities/fueltypeutils.json +0 -118
  340. package/data/pages/Utilities/utilities/routeutils.json +0 -34
  341. package/data/pages/Utilities/utilities/useaftermount.json +0 -63
  342. package/data/pages/Utilities/utilities/useaverage.json +0 -86
  343. package/data/pages/Utilities/utilities/useclickoutside.json +0 -69
  344. package/data/pages/Utilities/utilities/useclipboard.json +0 -57
  345. package/data/pages/Utilities/utilities/usecount.json +0 -92
  346. package/data/pages/Utilities/utilities/usedarkmode.json +0 -50
  347. package/data/pages/Utilities/utilities/usedebuginfo.json +0 -63
  348. package/data/pages/Utilities/utilities/useeffectonce.json +0 -57
  349. package/data/pages/Utilities/utilities/useelapsedtime.json +0 -57
  350. package/data/pages/Utilities/utilities/useelementsize.json +0 -63
  351. package/data/pages/Utilities/utilities/useesc.json +0 -57
  352. package/data/pages/Utilities/utilities/useevent.json +0 -75
  353. package/data/pages/Utilities/utilities/usefocustrap.json +0 -57
  354. package/data/pages/Utilities/utilities/usefullscreen.json +0 -197
  355. package/data/pages/Utilities/utilities/usehover.json +0 -57
  356. package/data/pages/Utilities/utilities/useinterval.json +0 -63
  357. package/data/pages/Utilities/utilities/useisfocuswithin.json +0 -75
  358. package/data/pages/Utilities/utilities/usekey.json +0 -75
  359. package/data/pages/Utilities/utilities/uselocalstorage.json +0 -69
  360. package/data/pages/Utilities/utilities/uselocationsuggestions.json +0 -110
  361. package/data/pages/Utilities/utilities/usemax.json +0 -86
  362. package/data/pages/Utilities/utilities/usemin.json +0 -86
  363. package/data/pages/Utilities/utilities/usemutationobserver.json +0 -69
  364. package/data/pages/Utilities/utilities/useonlinestatus.json +0 -39
  365. package/data/pages/Utilities/utilities/useonscreen.json +0 -63
  366. package/data/pages/Utilities/utilities/usepostmessage.json +0 -80
  367. package/data/pages/Utilities/utilities/useprevious.json +0 -63
  368. package/data/pages/Utilities/utilities/useresizeobserver.json +0 -65
  369. package/data/pages/Utilities/utilities/usescrollposition.json +0 -103
  370. package/data/pages/Utilities/utilities/usesearch.json +0 -197
  371. package/data/pages/Utilities/utilities/usesorting.json +0 -139
  372. package/data/pages/Utilities/utilities/usestatewithvalidation.json +0 -69
  373. package/data/pages/Utilities/utilities/usesum.json +0 -86
  374. package/data/pages/Utilities/utilities/usetableexport.json +0 -87
  375. package/data/pages/Utilities/utilities/usetableselection.json +0 -311
  376. package/data/pages/Utilities/utilities/usetimeout.json +0 -63
  377. package/data/pages/Utilities/utilities/usetoggle.json +0 -75
  378. package/data/pages/Utilities/utilities/usewindowresize.json +0 -63
  379. package/data/version.json +0 -4
  380. package/docs/content-schema.md +0 -147
  381. package/docs/navigation-inventory.json +0 -1310
  382. package/docs/search-synonyms.json +0 -43
  383. package/server/index.mjs +0 -268
  384. package/server/lib/load-docs.mjs +0 -48
  385. package/server/lib/normalise-doc.mjs +0 -220
  386. package/server/lib/render-markdown.mjs +0 -82
  387. package/server/lib/search-index.mjs +0 -49
  388. package/server/lib/types.js +0 -99
@@ -0,0 +1,1127 @@
1
+ # EditableContent
2
+
3
+ *Category:* Components
4
+ *Section:* Interaction
5
+ *Source:* https://uikit.developers.rio.cloud/#components/editableContent
6
+ *Captured:* 2025-12-12T12:38:17.131Z
7
+
8
+ The EditableContent component allows for inline editing text or other values. To make sure the user can recognize such an element, it's best to mark the text or content with a dotted line depending on the situation and where it is placed. Alternatively, you can place the "pencil" icon next to the content. Especially on mobile where no hover is available, the editable content must be marked permanently.
9
+
10
+ ## EditableContent
11
+
12
+ Please also check out the usage guidelines below.
13
+
14
+ ### Example: Example 1
15
+
16
+ Simple editable content
17
+ Click Me!
18
+
19
+ #### Summary
20
+
21
+ Simple editable content
22
+ Click Me!
23
+
24
+ #### React (tsx)
25
+
26
+ ```tsx
27
+ /* eslint-disable max-len */
28
+ import { useState } from 'react';
29
+
30
+ import EditableContent from '@rio-cloud/rio-uikit/EditableContent';
31
+
32
+ export default () => {
33
+ const [text, setText] = useState('Click Me!');
34
+
35
+ const handleSaveText = (value: string) => setText(value);
36
+
37
+ return (
38
+ <>
39
+ <div>
40
+ <label>Simple editable content</label>
41
+ </div>
42
+ <EditableContent onSave={handleSaveText}>
43
+ <span className='border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted'>
44
+ {text || <i>&nbsp;&nbsp;&nbsp;&nbsp;</i>}
45
+ </span>
46
+ </EditableContent>
47
+ </>
48
+ );
49
+ };
50
+ ```
51
+
52
+ #### HTML (html)
53
+
54
+ ```html
55
+ <div>
56
+ <label>Simple editable content</label>
57
+ </div>
58
+ <span class="">
59
+ <span class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted">Click Me!</span>
60
+ </span>
61
+ ```
62
+
63
+ #### Props
64
+
65
+ | Name | Type | Default | Description |
66
+ | --- | --- | --- | --- |
67
+ | show | Boolean | — | Visibility flag used to control edit mode from outside. |
68
+ | onSave | (value: string) => void | — | Callback function triggered when the save button is clicked. |
69
+ | onCancel | VoidFunction | — | Callback function triggered when the cancel button is clicked. |
70
+ | onFocus | VoidFunction | — | Callback function triggered when the input gets focused. |
71
+ | onBlur | VoidFunction | — | Callback function triggered when input looses the focus. |
72
+ | onEditMode | VoidFunction | — | Callback function triggered when entering the edit mode. |
73
+ | onSaveValidation | (value: string) => boolean | — | Validation function to intercept saving and prevent save on error. |
74
+ | isValid | boolean | true | Controls the error message visibility from outside. This is useful when using a custom input where the validation happens outside of this component. |
75
+ | errorMessage | ReactNode | — | The error message that shall be shown to the user in case the validation fails. |
76
+ | customEditor | ReactNode | — | Use this prop to define a custom editor input component like Select, NumberInput, TimePicker or DatePicker. Handling input state changes of a custom editor need to be handled outside of this component. By default the EditableContent uses a built-in textarea to allow resizing for larger text. the text element has borders, spacings different text sizes. |
77
+ | editorOffsetTop | Number | 0 | Offset value to control the vertical position for the editor in case the text element has borders, spacings different text sizes. |
78
+ | editorOffsetLeft | Number | 0 | Offset value to control the horizontal position for the editor in case the text element has borders, spacings different text sizes. |
79
+ | size | String | md | Defines the input and button size. Use "lg" for headlines. |
80
+ | allowResize | Boolean | false | Defines if the internal textarea is allowed to resize vertically. This comes in handy for larger text and when using multiple input rows. |
81
+ | inputRows | Number | 1 | Defines the number of rows to use by the internal textarea component. |
82
+ | inputClassName | String | — | Additional classes to be set on the editor input itself. |
83
+ | editorClassName | String | — | Additional classes to be set on the editor wrapper element. |
84
+ | className | String | — | Additional classes to be set on the text wrapper element. |
85
+
86
+ ### Example: Headline that can change
87
+
88
+ Editable headline - like dialog or panel header
89
+ Headline that can change
90
+
91
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.
92
+
93
+ #### Summary
94
+
95
+ Editable headline - like dialog or panel header
96
+ Headline that can change
97
+
98
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.
99
+
100
+ #### React (tsx)
101
+
102
+ ```tsx
103
+ /* eslint-disable max-len */
104
+ import { useState } from 'react';
105
+
106
+ import EditableContent from '@rio-cloud/rio-uikit/EditableContent';
107
+ import { dummyText } from '../../../utils/data';
108
+
109
+ export default () => {
110
+ const [text, setText] = useState('Headline that can change');
111
+
112
+ const handleSaveText = (value: string) => setText(value);
113
+
114
+ return (
115
+ <>
116
+ <div>
117
+ <label>Editable headline - like dialog or panel header</label>
118
+ </div>
119
+ <div className='panel panel-default'>
120
+ <div className='panel-heading'>
121
+ <EditableContent
122
+ onSave={handleSaveText}
123
+ editorOffsetTop={-3}
124
+ inputClassName='min-width-300'
125
+ size='lg'
126
+ >
127
+ <h4 className='display-flex align-items-center gap-5 text-color-darker hover-text-color-darkest text-thin cursor-pointer margin-0'>
128
+ <span>{text}</span>
129
+ <span className='rioglyph rioglyph-pencil text-size-20' />
130
+ </h4>
131
+ </EditableContent>
132
+ </div>
133
+ <div className='panel-body'>{dummyText}</div>
134
+ </div>
135
+ </>
136
+ );
137
+ };
138
+ ```
139
+
140
+ #### HTML (html)
141
+
142
+ ```html
143
+ <div>
144
+ <label>Editable headline - like dialog or panel header</label>
145
+ </div>
146
+ <div class="panel panel-default">
147
+ <div class="panel-heading">
148
+ <span class="">
149
+ <h4 class="display-flex align-items-center gap-5 text-color-darker hover-text-color-darkest text-thin cursor-pointer margin-0">
150
+ <span>Headline that can change</span>
151
+ <span class="rioglyph rioglyph-pencil text-size-20">
152
+ </span>
153
+ </h4>
154
+ </span>
155
+ </div>
156
+ <div class="panel-body">
157
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.</div>
158
+ </div>
159
+ ```
160
+
161
+ #### Props
162
+
163
+ | Name | Type | Default | Description |
164
+ | --- | --- | --- | --- |
165
+ | show | Boolean | — | Visibility flag used to control edit mode from outside. |
166
+ | onSave | (value: string) => void | — | Callback function triggered when the save button is clicked. |
167
+ | onCancel | VoidFunction | — | Callback function triggered when the cancel button is clicked. |
168
+ | onFocus | VoidFunction | — | Callback function triggered when the input gets focused. |
169
+ | onBlur | VoidFunction | — | Callback function triggered when input looses the focus. |
170
+ | onEditMode | VoidFunction | — | Callback function triggered when entering the edit mode. |
171
+ | onSaveValidation | (value: string) => boolean | — | Validation function to intercept saving and prevent save on error. |
172
+ | isValid | boolean | true | Controls the error message visibility from outside. This is useful when using a custom input where the validation happens outside of this component. |
173
+ | errorMessage | ReactNode | — | The error message that shall be shown to the user in case the validation fails. |
174
+ | customEditor | ReactNode | — | Use this prop to define a custom editor input component like Select, NumberInput, TimePicker or DatePicker. Handling input state changes of a custom editor need to be handled outside of this component. By default the EditableContent uses a built-in textarea to allow resizing for larger text. the text element has borders, spacings different text sizes. |
175
+ | editorOffsetTop | Number | 0 | Offset value to control the vertical position for the editor in case the text element has borders, spacings different text sizes. |
176
+ | editorOffsetLeft | Number | 0 | Offset value to control the horizontal position for the editor in case the text element has borders, spacings different text sizes. |
177
+ | size | String | md | Defines the input and button size. Use "lg" for headlines. |
178
+ | allowResize | Boolean | false | Defines if the internal textarea is allowed to resize vertically. This comes in handy for larger text and when using multiple input rows. |
179
+ | inputRows | Number | 1 | Defines the number of rows to use by the internal textarea component. |
180
+ | inputClassName | String | — | Additional classes to be set on the editor input itself. |
181
+ | editorClassName | String | — | Additional classes to be set on the editor wrapper element. |
182
+ | className | String | — | Additional classes to be set on the text wrapper element. |
183
+
184
+ ### Example: Example 3
185
+
186
+ Editable content using a resizable textarea
187
+ This text can be edited on multiple lines
188
+
189
+ #### Summary
190
+
191
+ Editable content using a resizable textarea
192
+ This text can be edited on multiple lines
193
+
194
+ #### React (tsx)
195
+
196
+ ```tsx
197
+ /* eslint-disable max-len */
198
+ import { useState } from 'react';
199
+
200
+ import EditableContent from '@rio-cloud/rio-uikit/EditableContent';
201
+
202
+ export default () => {
203
+ const [text, setText] = useState('This text can be edited on multiple lines');
204
+
205
+ const handleSaveText = (value: string) => setText(value);
206
+
207
+ return (
208
+ <>
209
+ <div>
210
+ <label>Editable content using a resizable textarea</label>
211
+ </div>
212
+ <div className='bg-lightest rounded padding-10'>
213
+ <EditableContent
214
+ onSave={handleSaveText}
215
+ inputClassName='min-width-300'
216
+ inputRows={2}
217
+ editorOffsetTop={1}
218
+ allowResize
219
+ >
220
+ <div>
221
+ <span className='border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted'>
222
+ {text}
223
+ </span>
224
+ </div>
225
+ </EditableContent>
226
+ </div>
227
+ </>
228
+ );
229
+ };
230
+ ```
231
+
232
+ #### HTML (html)
233
+
234
+ ```html
235
+ <div>
236
+ <label>Editable content using a resizable textarea</label>
237
+ </div>
238
+ <div class="bg-lightest rounded padding-10">
239
+ <span class="">
240
+ <div>
241
+ <span class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted">This text can be edited on multiple lines</span>
242
+ </div>
243
+ </span>
244
+ </div>
245
+ ```
246
+
247
+ #### Props
248
+
249
+ | Name | Type | Default | Description |
250
+ | --- | --- | --- | --- |
251
+ | show | Boolean | — | Visibility flag used to control edit mode from outside. |
252
+ | onSave | (value: string) => void | — | Callback function triggered when the save button is clicked. |
253
+ | onCancel | VoidFunction | — | Callback function triggered when the cancel button is clicked. |
254
+ | onFocus | VoidFunction | — | Callback function triggered when the input gets focused. |
255
+ | onBlur | VoidFunction | — | Callback function triggered when input looses the focus. |
256
+ | onEditMode | VoidFunction | — | Callback function triggered when entering the edit mode. |
257
+ | onSaveValidation | (value: string) => boolean | — | Validation function to intercept saving and prevent save on error. |
258
+ | isValid | boolean | true | Controls the error message visibility from outside. This is useful when using a custom input where the validation happens outside of this component. |
259
+ | errorMessage | ReactNode | — | The error message that shall be shown to the user in case the validation fails. |
260
+ | customEditor | ReactNode | — | Use this prop to define a custom editor input component like Select, NumberInput, TimePicker or DatePicker. Handling input state changes of a custom editor need to be handled outside of this component. By default the EditableContent uses a built-in textarea to allow resizing for larger text. the text element has borders, spacings different text sizes. |
261
+ | editorOffsetTop | Number | 0 | Offset value to control the vertical position for the editor in case the text element has borders, spacings different text sizes. |
262
+ | editorOffsetLeft | Number | 0 | Offset value to control the horizontal position for the editor in case the text element has borders, spacings different text sizes. |
263
+ | size | String | md | Defines the input and button size. Use "lg" for headlines. |
264
+ | allowResize | Boolean | false | Defines if the internal textarea is allowed to resize vertically. This comes in handy for larger text and when using multiple input rows. |
265
+ | inputRows | Number | 1 | Defines the number of rows to use by the internal textarea component. |
266
+ | inputClassName | String | — | Additional classes to be set on the editor input itself. |
267
+ | editorClassName | String | — | Additional classes to be set on the editor wrapper element. |
268
+ | className | String | — | Additional classes to be set on the text wrapper element. |
269
+
270
+ ### Example: Example 4
271
+
272
+ Focusable editable content with input validationThis content must not contain numbers.
273
+
274
+ #### Summary
275
+
276
+ Focusable editable content with input validationThis content must not contain numbers.
277
+
278
+ #### React (tsx)
279
+
280
+ ```tsx
281
+ /* eslint-disable max-len */
282
+ import { useRef, useState } from 'react';
283
+
284
+ import EditableContent from '@rio-cloud/rio-uikit/EditableContent';
285
+ import useKey from '@rio-cloud/rio-uikit/useKey';
286
+
287
+ export default () => {
288
+ const [isEditMode, setIsEditMode] = useState(false);
289
+ const [text, setText] = useState('This content must not contain numbers.');
290
+
291
+ const ref = useRef<HTMLDivElement>(null);
292
+
293
+ useKey(event => {
294
+ if (event.key === 'Enter' && document.activeElement === ref.current) {
295
+ setIsEditMode(true);
296
+ }
297
+ });
298
+
299
+ const handleSaveText = (value: string) => {
300
+ setText(value);
301
+ setIsEditMode(false);
302
+ };
303
+
304
+ const handleCancelText = () => setIsEditMode(false);
305
+
306
+ const handleValidation = (value: string) => !/\d/.test(value);
307
+
308
+ return (
309
+ <div>
310
+ <label>Focusable editable content with input validation</label>
311
+ <EditableContent
312
+ show={isEditMode}
313
+ onSave={handleSaveText}
314
+ onCancel={handleCancelText}
315
+ onSaveValidation={handleValidation}
316
+ editorOffsetTop={1}
317
+ errorMessage={<span>Numbers are not allowed</span>}
318
+ inputClassName='min-width-200'
319
+ editorClassName='max-width-350'
320
+ >
321
+ <div
322
+ ref={ref}
323
+ className='border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted'
324
+ tabIndex={0}
325
+ >
326
+ <span>{text}</span>
327
+ </div>
328
+ </EditableContent>
329
+ </div>
330
+ );
331
+ };
332
+ ```
333
+
334
+ #### HTML (html)
335
+
336
+ ```html
337
+ <div>
338
+ <label>Focusable editable content with input validation</label>
339
+ <span class="">
340
+ <div class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted" tabindex="0">
341
+ <span>This content must not contain numbers.</span>
342
+ </div>
343
+ </span>
344
+ </div>
345
+ ```
346
+
347
+ #### Props
348
+
349
+ | Name | Type | Default | Description |
350
+ | --- | --- | --- | --- |
351
+ | show | Boolean | — | Visibility flag used to control edit mode from outside. |
352
+ | onSave | (value: string) => void | — | Callback function triggered when the save button is clicked. |
353
+ | onCancel | VoidFunction | — | Callback function triggered when the cancel button is clicked. |
354
+ | onFocus | VoidFunction | — | Callback function triggered when the input gets focused. |
355
+ | onBlur | VoidFunction | — | Callback function triggered when input looses the focus. |
356
+ | onEditMode | VoidFunction | — | Callback function triggered when entering the edit mode. |
357
+ | onSaveValidation | (value: string) => boolean | — | Validation function to intercept saving and prevent save on error. |
358
+ | isValid | boolean | true | Controls the error message visibility from outside. This is useful when using a custom input where the validation happens outside of this component. |
359
+ | errorMessage | ReactNode | — | The error message that shall be shown to the user in case the validation fails. |
360
+ | customEditor | ReactNode | — | Use this prop to define a custom editor input component like Select, NumberInput, TimePicker or DatePicker. Handling input state changes of a custom editor need to be handled outside of this component. By default the EditableContent uses a built-in textarea to allow resizing for larger text. the text element has borders, spacings different text sizes. |
361
+ | editorOffsetTop | Number | 0 | Offset value to control the vertical position for the editor in case the text element has borders, spacings different text sizes. |
362
+ | editorOffsetLeft | Number | 0 | Offset value to control the horizontal position for the editor in case the text element has borders, spacings different text sizes. |
363
+ | size | String | md | Defines the input and button size. Use "lg" for headlines. |
364
+ | allowResize | Boolean | false | Defines if the internal textarea is allowed to resize vertically. This comes in handy for larger text and when using multiple input rows. |
365
+ | inputRows | Number | 1 | Defines the number of rows to use by the internal textarea component. |
366
+ | inputClassName | String | — | Additional classes to be set on the editor input itself. |
367
+ | editorClassName | String | — | Additional classes to be set on the editor wrapper element. |
368
+ | className | String | — | Additional classes to be set on the text wrapper element. |
369
+
370
+ ### Example: Example 5
371
+
372
+ Editable text inside of another textLorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. This text can be edited Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.`;
373
+
374
+ #### Summary
375
+
376
+ Editable text inside of another textLorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. This text can be edited Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.`;
377
+
378
+ #### React (tsx)
379
+
380
+ ```tsx
381
+ import { useState } from 'react';
382
+
383
+ import EditableContent from '@rio-cloud/rio-uikit/EditableContent';
384
+
385
+ export default () => {
386
+ const [text, setText] = useState('This text can be edited');
387
+
388
+ const handleSaveText = (value: string) => setText(value);
389
+
390
+ return (
391
+ <>
392
+ <label>Editable text inside of another text</label>
393
+ <p>
394
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam
395
+ condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est
396
+ sagittis semper.{' '}
397
+ <EditableContent onSave={handleSaveText}>
398
+ <span className='border border-bottom-only border-color-dark border-style-dotted hover-bg-lighter'>
399
+ {text}
400
+ </span>
401
+ </EditableContent>{' '}
402
+ Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis,
403
+ viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in
404
+ molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus
405
+ lorem in, fringilla pretium velit.`;
406
+ </p>
407
+ </>
408
+ );
409
+ };
410
+ ```
411
+
412
+ #### HTML (html)
413
+
414
+ ```html
415
+ <label>Editable text inside of another text</label>
416
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. <span class="">
417
+ <span class="border border-bottom-only border-color-dark border-style-dotted hover-bg-lighter">This text can be edited</span>
418
+ </span> Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.`;</p>
419
+ ```
420
+
421
+ #### Props
422
+
423
+ | Name | Type | Default | Description |
424
+ | --- | --- | --- | --- |
425
+ | show | Boolean | — | Visibility flag used to control edit mode from outside. |
426
+ | onSave | (value: string) => void | — | Callback function triggered when the save button is clicked. |
427
+ | onCancel | VoidFunction | — | Callback function triggered when the cancel button is clicked. |
428
+ | onFocus | VoidFunction | — | Callback function triggered when the input gets focused. |
429
+ | onBlur | VoidFunction | — | Callback function triggered when input looses the focus. |
430
+ | onEditMode | VoidFunction | — | Callback function triggered when entering the edit mode. |
431
+ | onSaveValidation | (value: string) => boolean | — | Validation function to intercept saving and prevent save on error. |
432
+ | isValid | boolean | true | Controls the error message visibility from outside. This is useful when using a custom input where the validation happens outside of this component. |
433
+ | errorMessage | ReactNode | — | The error message that shall be shown to the user in case the validation fails. |
434
+ | customEditor | ReactNode | — | Use this prop to define a custom editor input component like Select, NumberInput, TimePicker or DatePicker. Handling input state changes of a custom editor need to be handled outside of this component. By default the EditableContent uses a built-in textarea to allow resizing for larger text. the text element has borders, spacings different text sizes. |
435
+ | editorOffsetTop | Number | 0 | Offset value to control the vertical position for the editor in case the text element has borders, spacings different text sizes. |
436
+ | editorOffsetLeft | Number | 0 | Offset value to control the horizontal position for the editor in case the text element has borders, spacings different text sizes. |
437
+ | size | String | md | Defines the input and button size. Use "lg" for headlines. |
438
+ | allowResize | Boolean | false | Defines if the internal textarea is allowed to resize vertically. This comes in handy for larger text and when using multiple input rows. |
439
+ | inputRows | Number | 1 | Defines the number of rows to use by the internal textarea component. |
440
+ | inputClassName | String | — | Additional classes to be set on the editor input itself. |
441
+ | editorClassName | String | — | Additional classes to be set on the editor wrapper element. |
442
+ | className | String | — | Additional classes to be set on the text wrapper element. |
443
+
444
+ ### Example: Example 6
445
+
446
+ Render NumberControl as custom editor component
447
+ 234
448
+
449
+ #### Summary
450
+
451
+ Render NumberControl as custom editor component
452
+ 234
453
+
454
+ #### React (tsx)
455
+
456
+ ```tsx
457
+ /* eslint-disable max-len */
458
+ import { forwardRef, useEffect, useRef, useState, type ForwardedRef } from 'react';
459
+
460
+ import EditableContent from '@rio-cloud/rio-uikit/EditableContent';
461
+ import NumberControl from '@rio-cloud/rio-uikit/NumberControl';
462
+
463
+ type CustomContentProps = {
464
+ value: number;
465
+ onChange: (newValue?: number | undefined) => void;
466
+ onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
467
+ };
468
+
469
+ const CustomContent = forwardRef((props: CustomContentProps, ref: ForwardedRef<HTMLInputElement>) => {
470
+ const { value, onChange, onKeyDown } = props;
471
+
472
+ return (
473
+ <NumberControl
474
+ ref={ref}
475
+ value={value}
476
+ onChange={onChange}
477
+ onKeyDown={onKeyDown}
478
+ className='margin-0 min-width-100'
479
+ />
480
+ );
481
+ });
482
+
483
+ export default () => {
484
+ const [data, setData] = useState(234);
485
+ const [transientData, setTransientData] = useState(0);
486
+
487
+ const [isEditMode, setIsEditMode] = useState(false);
488
+
489
+ const inputRef = useRef<HTMLInputElement>(null);
490
+
491
+ useEffect(() => {
492
+ if (isEditMode) {
493
+ inputRef.current?.focus();
494
+ }
495
+ }, [isEditMode]);
496
+
497
+ const handleChange = (value: number | undefined) => setTransientData(value || 0);
498
+
499
+ const handleCancel = () => setIsEditMode(false);
500
+
501
+ const handleSaveText = () => {
502
+ setData(transientData);
503
+ setIsEditMode(false);
504
+ };
505
+
506
+ const handleEnterEditMode = () => {
507
+ setTransientData(data);
508
+ setIsEditMode(true);
509
+ };
510
+
511
+ // Since we use a custom input instead of the built-in textarea, we need to handle keyboard
512
+ // events ourself for instance in order to save on enter.
513
+ const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
514
+ if (event.key === 'Enter') {
515
+ handleSaveText();
516
+ }
517
+ };
518
+
519
+ return (
520
+ <div>
521
+ <div>
522
+ <label className='margin-right-20'>Render NumberControl as custom editor component</label>
523
+ </div>
524
+ <div className='display-flex gap-25'>
525
+ <EditableContent
526
+ show={isEditMode}
527
+ onSave={handleSaveText}
528
+ onCancel={handleCancel}
529
+ onEditMode={handleEnterEditMode}
530
+ customEditor={
531
+ <CustomContent
532
+ ref={inputRef}
533
+ value={transientData}
534
+ onChange={handleChange}
535
+ onKeyDown={handleKeyDown}
536
+ />
537
+ }
538
+ editorOffsetTop={1}
539
+ >
540
+ <span className='border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted'>
541
+ {data}
542
+ </span>
543
+ </EditableContent>
544
+ </div>
545
+ </div>
546
+ );
547
+ };
548
+ ```
549
+
550
+ #### HTML (html)
551
+
552
+ ```html
553
+ <div>
554
+ <div>
555
+ <label class="margin-right-20">Render NumberControl as custom editor component</label>
556
+ </div>
557
+ <div class="display-flex gap-25">
558
+ <span class="">
559
+ <span class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted">234</span>
560
+ </span>
561
+ </div>
562
+ </div>
563
+ ```
564
+
565
+ #### Props
566
+
567
+ | Name | Type | Default | Description |
568
+ | --- | --- | --- | --- |
569
+ | show | Boolean | — | Visibility flag used to control edit mode from outside. |
570
+ | onSave | (value: string) => void | — | Callback function triggered when the save button is clicked. |
571
+ | onCancel | VoidFunction | — | Callback function triggered when the cancel button is clicked. |
572
+ | onFocus | VoidFunction | — | Callback function triggered when the input gets focused. |
573
+ | onBlur | VoidFunction | — | Callback function triggered when input looses the focus. |
574
+ | onEditMode | VoidFunction | — | Callback function triggered when entering the edit mode. |
575
+ | onSaveValidation | (value: string) => boolean | — | Validation function to intercept saving and prevent save on error. |
576
+ | isValid | boolean | true | Controls the error message visibility from outside. This is useful when using a custom input where the validation happens outside of this component. |
577
+ | errorMessage | ReactNode | — | The error message that shall be shown to the user in case the validation fails. |
578
+ | customEditor | ReactNode | — | Use this prop to define a custom editor input component like Select, NumberInput, TimePicker or DatePicker. Handling input state changes of a custom editor need to be handled outside of this component. By default the EditableContent uses a built-in textarea to allow resizing for larger text. the text element has borders, spacings different text sizes. |
579
+ | editorOffsetTop | Number | 0 | Offset value to control the vertical position for the editor in case the text element has borders, spacings different text sizes. |
580
+ | editorOffsetLeft | Number | 0 | Offset value to control the horizontal position for the editor in case the text element has borders, spacings different text sizes. |
581
+ | size | String | md | Defines the input and button size. Use "lg" for headlines. |
582
+ | allowResize | Boolean | false | Defines if the internal textarea is allowed to resize vertically. This comes in handy for larger text and when using multiple input rows. |
583
+ | inputRows | Number | 1 | Defines the number of rows to use by the internal textarea component. |
584
+ | inputClassName | String | — | Additional classes to be set on the editor input itself. |
585
+ | editorClassName | String | — | Additional classes to be set on the editor wrapper element. |
586
+ | className | String | — | Additional classes to be set on the text wrapper element. |
587
+
588
+ ### Example: Example 7
589
+
590
+ Render NumberInput as custom editor component with input validation
591
+ 234
592
+
593
+ #### Summary
594
+
595
+ Render NumberInput as custom editor component with input validation
596
+ 234
597
+
598
+ #### React (tsx)
599
+
600
+ ```tsx
601
+ /* eslint-disable max-len */
602
+ import { useEffect, useRef, useState } from 'react';
603
+
604
+ import EditableContent from '@rio-cloud/rio-uikit/EditableContent';
605
+ import NumberInput from '@rio-cloud/rio-uikit/NumberInput';
606
+
607
+ export default () => {
608
+ const [data, setData] = useState(234);
609
+ const [transientData, setTransientData] = useState(0);
610
+
611
+ const [isEditMode, setIsEditMode] = useState(false);
612
+ const [isValid, setIsValid] = useState(true);
613
+
614
+ const inputRef = useRef<HTMLInputElement>(null);
615
+
616
+ // Focus on the custom input element when entering the edit mode
617
+ useEffect(() => {
618
+ isEditMode && inputRef.current?.focus();
619
+ }, [isEditMode]);
620
+
621
+ // Handle change of unsaved entered input values as we control the input ourself
622
+ const handleChange = (value: number | undefined) => setTransientData(value || 0);
623
+
624
+ const handleCancel = () => setIsEditMode(false);
625
+
626
+ const handleSaveText = () => {
627
+ setData(transientData);
628
+ setIsEditMode(false);
629
+ };
630
+
631
+ const handleEnterEditMode = () => {
632
+ setTransientData(data);
633
+ setIsEditMode(true);
634
+ };
635
+
636
+ // Since we use a custom input instead of the built-in textarea, we need to handle keyboard
637
+ // events ourself for instance in order to save on enter.
638
+ const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
639
+ if (event.key === 'Enter') {
640
+ validateInput() ? handleSaveText() : setIsValid(false);
641
+ }
642
+ };
643
+
644
+ // We have to take care of the input validation here as we use a custom input
645
+ // and render the error message in case.
646
+ const handleValidateOnSave = () => {
647
+ const result = validateInput();
648
+ setIsValid(result);
649
+ return result;
650
+ };
651
+
652
+ // Simple input validation for demo purpose. Replace it with a more meaningful validation.
653
+ const validateInput = (): boolean => transientData <= 999;
654
+
655
+ return (
656
+ <div>
657
+ <div>
658
+ <label className='margin-right-20'>
659
+ Render NumberInput as custom editor component with input validation
660
+ </label>
661
+ </div>
662
+ <div className='display-flex gap-25'>
663
+ <EditableContent
664
+ show={isEditMode}
665
+ onSave={handleSaveText}
666
+ onCancel={handleCancel}
667
+ onEditMode={handleEnterEditMode}
668
+ onSaveValidation={handleValidateOnSave}
669
+ isValid={isValid}
670
+ errorMessage='Please insert maximum 3 digit number'
671
+ customEditor={
672
+ <div className='margin-0 min-width-150'>
673
+ <NumberInput
674
+ ref={inputRef}
675
+ value={transientData}
676
+ onChange={handleChange}
677
+ onKeyDown={handleKeyDown}
678
+ digitPrecision={0}
679
+ unit='km'
680
+ />
681
+ </div>
682
+ }
683
+ editorOffsetTop={1}
684
+ >
685
+ <span className='border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted'>
686
+ {data}
687
+ </span>
688
+ </EditableContent>
689
+ </div>
690
+ </div>
691
+ );
692
+ };
693
+ ```
694
+
695
+ #### HTML (html)
696
+
697
+ ```html
698
+ <div>
699
+ <div>
700
+ <label class="margin-right-20">Render NumberInput as custom editor component with input validation</label>
701
+ </div>
702
+ <div class="display-flex gap-25">
703
+ <span class="">
704
+ <span class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted">234</span>
705
+ </span>
706
+ </div>
707
+ </div>
708
+ ```
709
+
710
+ #### Props
711
+
712
+ | Name | Type | Default | Description |
713
+ | --- | --- | --- | --- |
714
+ | show | Boolean | — | Visibility flag used to control edit mode from outside. |
715
+ | onSave | (value: string) => void | — | Callback function triggered when the save button is clicked. |
716
+ | onCancel | VoidFunction | — | Callback function triggered when the cancel button is clicked. |
717
+ | onFocus | VoidFunction | — | Callback function triggered when the input gets focused. |
718
+ | onBlur | VoidFunction | — | Callback function triggered when input looses the focus. |
719
+ | onEditMode | VoidFunction | — | Callback function triggered when entering the edit mode. |
720
+ | onSaveValidation | (value: string) => boolean | — | Validation function to intercept saving and prevent save on error. |
721
+ | isValid | boolean | true | Controls the error message visibility from outside. This is useful when using a custom input where the validation happens outside of this component. |
722
+ | errorMessage | ReactNode | — | The error message that shall be shown to the user in case the validation fails. |
723
+ | customEditor | ReactNode | — | Use this prop to define a custom editor input component like Select, NumberInput, TimePicker or DatePicker. Handling input state changes of a custom editor need to be handled outside of this component. By default the EditableContent uses a built-in textarea to allow resizing for larger text. the text element has borders, spacings different text sizes. |
724
+ | editorOffsetTop | Number | 0 | Offset value to control the vertical position for the editor in case the text element has borders, spacings different text sizes. |
725
+ | editorOffsetLeft | Number | 0 | Offset value to control the horizontal position for the editor in case the text element has borders, spacings different text sizes. |
726
+ | size | String | md | Defines the input and button size. Use "lg" for headlines. |
727
+ | allowResize | Boolean | false | Defines if the internal textarea is allowed to resize vertically. This comes in handy for larger text and when using multiple input rows. |
728
+ | inputRows | Number | 1 | Defines the number of rows to use by the internal textarea component. |
729
+ | inputClassName | String | — | Additional classes to be set on the editor input itself. |
730
+ | editorClassName | String | — | Additional classes to be set on the editor wrapper element. |
731
+ | className | String | — | Additional classes to be set on the text wrapper element. |
732
+
733
+ ## Usage guidelines
734
+
735
+ ### Example: Example 8
736
+
737
+ Don't
738
+ Avoid overuse in lists or tables. Avoid many repetitions of edit icons.
739
+ Lorem ipsum dolor
740
+
741
+ Lorem ipsum dolor
742
+
743
+ Lorem ipsum dolor
744
+
745
+ Lorem ipsum dolor
746
+
747
+ Lorem ipsum dolor
748
+
749
+ Lorem ipsum dolor
750
+
751
+ Lorem ipsum dolor
752
+
753
+ Do
754
+ Use an underline to indicate editable text and use a hover icon on Desktop if possible.
755
+ Lorem ipsum dolor
756
+
757
+ Lorem ipsum dolor
758
+
759
+ Lorem ipsum dolor
760
+
761
+ Lorem ipsum dolor
762
+
763
+ Lorem ipsum dolor
764
+
765
+ Lorem ipsum dolor
766
+
767
+ Lorem ipsum dolor
768
+
769
+ Do
770
+ Using the editable field in isolation like inside a panel header or a like, you can permanently show a edit icon.
771
+ Lorem ipsum dolor
772
+ Lorem ipsum dolor
773
+
774
+ Note
775
+ In general, don't make every cell in a table editable. The indication style would be too repetitive and the user does not expect this behavior as it is not implemented in other services like so. Strive for a common look and feel with regards to other services.
776
+
777
+ #### Summary
778
+
779
+ Don't
780
+ Avoid overuse in lists or tables. Avoid many repetitions of edit icons.
781
+ Lorem ipsum dolor
782
+
783
+ Lorem ipsum dolor
784
+
785
+ Lorem ipsum dolor
786
+
787
+ Lorem ipsum dolor
788
+
789
+ Lorem ipsum dolor
790
+
791
+ Lorem ipsum dolor
792
+
793
+ Lorem ipsum dolor
794
+
795
+ Do
796
+ Use an underline to indicate editable text and use a hover icon on Desktop if possible.
797
+ Lorem ipsum dolor
798
+
799
+ Lorem ipsum dolor
800
+
801
+ Lorem ipsum dolor
802
+
803
+ Lorem ipsum dolor
804
+
805
+ Lorem ipsum dolor
806
+
807
+ Lorem ipsum dolor
808
+
809
+ Lorem ipsum dolor
810
+
811
+ Do
812
+ Using the editable field in isolation like inside a panel header or a like, you can permanently show a edit icon.
813
+ Lorem ipsum dolor
814
+ Lorem ipsum dolor
815
+
816
+ Note
817
+ In general, don't make every cell in a table editable. The indication style would be too repetitive and the user does not expect this behavior as it is not implemented in other services like so. Strive for a common look and feel with regards to other services.
818
+
819
+ #### React (tsx)
820
+
821
+ ```tsx
822
+ /* eslint-disable max-len */
823
+ import { useRef } from 'react';
824
+
825
+ import { Note } from '../../../components/Note';
826
+
827
+ import EditableContent from '@rio-cloud/rio-uikit/EditableContent';
828
+ import useHover from '@rio-cloud/rio-uikit/useHover';
829
+
830
+ const Demo1 = () => (
831
+ <EditableContent editorOffsetTop={1}>
832
+ <div className='display-flex align-items-center gap-5 cursor-pointer'>
833
+ <span>Lorem ipsum dolor</span>
834
+ <span className='rioglyph rioglyph-pencil' />
835
+ </div>
836
+ </EditableContent>
837
+ );
838
+
839
+ const Demo2 = () => {
840
+ const targetRef = useRef<HTMLDivElement>(null);
841
+ const isHover = useHover(targetRef);
842
+
843
+ return (
844
+ <EditableContent editorOffsetTop={1}>
845
+ <div ref={targetRef} className='display-flex align-items-center gap-5 cursor-pointer'>
846
+ <span className='border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted'>
847
+ Lorem ipsum dolor
848
+ </span>
849
+ {isHover && <span className='rioglyph rioglyph-pencil' />}
850
+ </div>
851
+ </EditableContent>
852
+ );
853
+ };
854
+
855
+ export default () => {
856
+ return (
857
+ <>
858
+ <div className='display-grid grid-cols-2 grid-cols-3-md grid-auto-rows gap-15 margin-bottom-20'>
859
+ <div>
860
+ <div className='text-size-16 text-color-danger'>Don't</div>
861
+ <p>Avoid overuse in lists or tables. Avoid many repetitions of edit icons.</p>
862
+ <ul className='list-group rounded border'>
863
+ <li className='list-group-item'>
864
+ <Demo1 />
865
+ </li>
866
+ <li className='list-group-item'>
867
+ <Demo1 />
868
+ </li>
869
+ <li className='list-group-item'>
870
+ <Demo1 />
871
+ </li>
872
+ <li className='list-group-item'>
873
+ <Demo1 />
874
+ </li>
875
+ <li className='list-group-item'>
876
+ <Demo1 />
877
+ </li>
878
+ <li className='list-group-item'>
879
+ <Demo1 />
880
+ </li>
881
+ <li className='list-group-item'>
882
+ <Demo1 />
883
+ </li>
884
+ </ul>
885
+ </div>
886
+ <div>
887
+ <div className='text-size-16 text-color-success'>Do</div>
888
+ <p>Use an underline to indicate editable text and use a hover icon on Desktop if possible.</p>
889
+ <ul className='list-group rounded border'>
890
+ <li className='list-group-item'>
891
+ <Demo2 />
892
+ </li>
893
+ <li className='list-group-item'>
894
+ <Demo2 />
895
+ </li>
896
+ <li className='list-group-item'>
897
+ <Demo2 />
898
+ </li>
899
+ <li className='list-group-item'>
900
+ <Demo2 />
901
+ </li>
902
+ <li className='list-group-item'>
903
+ <Demo2 />
904
+ </li>
905
+ <li className='list-group-item'>
906
+ <Demo2 />
907
+ </li>
908
+ <li className='list-group-item'>
909
+ <Demo2 />
910
+ </li>
911
+ </ul>
912
+ </div>
913
+ <div className='grid-colspan-2 grid-colspan-1-md'>
914
+ <div className='text-size-16 text-color-success'>Do</div>
915
+ <p>
916
+ Using the editable field in isolation like inside a panel header or a like, you can permanently
917
+ show a edit icon.
918
+ </p>
919
+ <EditableContent editorOffsetTop={1}>
920
+ <h5 className='display-flex align-items-center gap-5 text-thin cursor-pointer'>
921
+ <span>Lorem ipsum dolor</span>
922
+ <span className='rioglyph rioglyph-pencil' />
923
+ </h5>
924
+ </EditableContent>
925
+ <hr />
926
+ <EditableContent editorOffsetTop={1}>
927
+ <div className='display-flex align-items-center gap-5 text-size-h4 text-thin cursor-pointer'>
928
+ <span>Lorem ipsum dolor</span>
929
+ <span className='rioglyph rioglyph-pencil' />
930
+ </div>
931
+ </EditableContent>
932
+ <hr />
933
+ </div>
934
+ </div>
935
+ <b>
936
+ <Note>
937
+ In general, don't make every cell in a table editable. The indication style would be too repetitive
938
+ and the user does not expect this behavior as it is not implemented in other services like so.
939
+ Strive for a common look and feel with regards to other services.
940
+ </Note>
941
+ </b>
942
+ </>
943
+ );
944
+ };
945
+ ```
946
+
947
+ #### HTML (html)
948
+
949
+ ```html
950
+ <div class="display-grid grid-cols-2 grid-cols-3-md grid-auto-rows gap-15 margin-bottom-20">
951
+ <div>
952
+ <div class="text-size-16 text-color-danger">Don't</div>
953
+ <p>Avoid overuse in lists or tables. Avoid many repetitions of edit icons.</p>
954
+ <ul class="list-group rounded border">
955
+ <li class="list-group-item">
956
+ <span class="">
957
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
958
+ <span>Lorem ipsum dolor</span>
959
+ <span class="rioglyph rioglyph-pencil">
960
+ </span>
961
+ </div>
962
+ </span>
963
+ </li>
964
+ <li class="list-group-item">
965
+ <span class="">
966
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
967
+ <span>Lorem ipsum dolor</span>
968
+ <span class="rioglyph rioglyph-pencil">
969
+ </span>
970
+ </div>
971
+ </span>
972
+ </li>
973
+ <li class="list-group-item">
974
+ <span class="">
975
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
976
+ <span>Lorem ipsum dolor</span>
977
+ <span class="rioglyph rioglyph-pencil">
978
+ </span>
979
+ </div>
980
+ </span>
981
+ </li>
982
+ <li class="list-group-item">
983
+ <span class="">
984
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
985
+ <span>Lorem ipsum dolor</span>
986
+ <span class="rioglyph rioglyph-pencil">
987
+ </span>
988
+ </div>
989
+ </span>
990
+ </li>
991
+ <li class="list-group-item">
992
+ <span class="">
993
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
994
+ <span>Lorem ipsum dolor</span>
995
+ <span class="rioglyph rioglyph-pencil">
996
+ </span>
997
+ </div>
998
+ </span>
999
+ </li>
1000
+ <li class="list-group-item">
1001
+ <span class="">
1002
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
1003
+ <span>Lorem ipsum dolor</span>
1004
+ <span class="rioglyph rioglyph-pencil">
1005
+ </span>
1006
+ </div>
1007
+ </span>
1008
+ </li>
1009
+ <li class="list-group-item">
1010
+ <span class="">
1011
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
1012
+ <span>Lorem ipsum dolor</span>
1013
+ <span class="rioglyph rioglyph-pencil">
1014
+ </span>
1015
+ </div>
1016
+ </span>
1017
+ </li>
1018
+ </ul>
1019
+ </div>
1020
+ <div>
1021
+ <div class="text-size-16 text-color-success">Do</div>
1022
+ <p>Use an underline to indicate editable text and use a hover icon on Desktop if possible.</p>
1023
+ <ul class="list-group rounded border">
1024
+ <li class="list-group-item">
1025
+ <span class="">
1026
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
1027
+ <span class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted">Lorem ipsum dolor</span>
1028
+ </div>
1029
+ </span>
1030
+ </li>
1031
+ <li class="list-group-item">
1032
+ <span class="">
1033
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
1034
+ <span class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted">Lorem ipsum dolor</span>
1035
+ </div>
1036
+ </span>
1037
+ </li>
1038
+ <li class="list-group-item">
1039
+ <span class="">
1040
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
1041
+ <span class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted">Lorem ipsum dolor</span>
1042
+ </div>
1043
+ </span>
1044
+ </li>
1045
+ <li class="list-group-item">
1046
+ <span class="">
1047
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
1048
+ <span class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted">Lorem ipsum dolor</span>
1049
+ </div>
1050
+ </span>
1051
+ </li>
1052
+ <li class="list-group-item">
1053
+ <span class="">
1054
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
1055
+ <span class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted">Lorem ipsum dolor</span>
1056
+ </div>
1057
+ </span>
1058
+ </li>
1059
+ <li class="list-group-item">
1060
+ <span class="">
1061
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
1062
+ <span class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted">Lorem ipsum dolor</span>
1063
+ </div>
1064
+ </span>
1065
+ </li>
1066
+ <li class="list-group-item">
1067
+ <span class="">
1068
+ <div class="display-flex align-items-center gap-5 cursor-pointer">
1069
+ <span class="border border-bottom-only border-color-gray hover-border-color-darkest border-style-dotted">Lorem ipsum dolor</span>
1070
+ </div>
1071
+ </span>
1072
+ </li>
1073
+ </ul>
1074
+ </div>
1075
+ <div class="grid-colspan-2 grid-colspan-1-md">
1076
+ <div class="text-size-16 text-color-success">Do</div>
1077
+ <p>Using the editable field in isolation like inside a panel header or a like, you can permanently show a edit icon.</p>
1078
+ <span class="">
1079
+ <h5 class="display-flex align-items-center gap-5 text-thin cursor-pointer">
1080
+ <span>Lorem ipsum dolor</span>
1081
+ <span class="rioglyph rioglyph-pencil">
1082
+ </span>
1083
+ </h5>
1084
+ </span>
1085
+ <hr>
1086
+ <span class="">
1087
+ <div class="display-flex align-items-center gap-5 text-size-h4 text-thin cursor-pointer">
1088
+ <span>Lorem ipsum dolor</span>
1089
+ <span class="rioglyph rioglyph-pencil">
1090
+ </span>
1091
+ </div>
1092
+ </span>
1093
+ <hr>
1094
+ </div>
1095
+ </div>
1096
+ <b>
1097
+ <div class="display-flex gap-10 max-width-1000 margin-bottom-10 last-child-margin-bottom-0" data-capture-callout="true">
1098
+ <div>
1099
+ <span class="label label-info label-condensed label-filled">Note</span>
1100
+ </div>
1101
+ <div class="width-100pct children-first-margin-top-0 children-last-margin-bottom-0 padding-top-1">In general, don't make every cell in a table editable. The indication style would be too repetitive and the user does not expect this behavior as it is not implemented in other services like so. Strive for a common look and feel with regards to other services.</div>
1102
+ </div>
1103
+ </b>
1104
+ ```
1105
+
1106
+ #### Props
1107
+
1108
+ | Name | Type | Default | Description |
1109
+ | --- | --- | --- | --- |
1110
+ | show | Boolean | — | Visibility flag used to control edit mode from outside. |
1111
+ | onSave | (value: string) => void | — | Callback function triggered when the save button is clicked. |
1112
+ | onCancel | VoidFunction | — | Callback function triggered when the cancel button is clicked. |
1113
+ | onFocus | VoidFunction | — | Callback function triggered when the input gets focused. |
1114
+ | onBlur | VoidFunction | — | Callback function triggered when input looses the focus. |
1115
+ | onEditMode | VoidFunction | — | Callback function triggered when entering the edit mode. |
1116
+ | onSaveValidation | (value: string) => boolean | — | Validation function to intercept saving and prevent save on error. |
1117
+ | isValid | boolean | true | Controls the error message visibility from outside. This is useful when using a custom input where the validation happens outside of this component. |
1118
+ | errorMessage | ReactNode | — | The error message that shall be shown to the user in case the validation fails. |
1119
+ | customEditor | ReactNode | — | Use this prop to define a custom editor input component like Select, NumberInput, TimePicker or DatePicker. Handling input state changes of a custom editor need to be handled outside of this component. By default the EditableContent uses a built-in textarea to allow resizing for larger text. the text element has borders, spacings different text sizes. |
1120
+ | editorOffsetTop | Number | 0 | Offset value to control the vertical position for the editor in case the text element has borders, spacings different text sizes. |
1121
+ | editorOffsetLeft | Number | 0 | Offset value to control the horizontal position for the editor in case the text element has borders, spacings different text sizes. |
1122
+ | size | String | md | Defines the input and button size. Use "lg" for headlines. |
1123
+ | allowResize | Boolean | false | Defines if the internal textarea is allowed to resize vertically. This comes in handy for larger text and when using multiple input rows. |
1124
+ | inputRows | Number | 1 | Defines the number of rows to use by the internal textarea component. |
1125
+ | inputClassName | String | — | Additional classes to be set on the editor input itself. |
1126
+ | editorClassName | String | — | Additional classes to be set on the editor wrapper element. |
1127
+ | className | String | — | Additional classes to be set on the text wrapper element. |