@rio-cloud/uikit-mcp 1.0.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.
- package/LICENSE +202 -0
- package/README.md +91 -0
- package/bin/uikit-mcp.mjs +23 -0
- package/data/pages/Components/components/accentbar.json +207 -0
- package/data/pages/Components/components/activity.json +87 -0
- package/data/pages/Components/components/animatednumber.json +99 -0
- package/data/pages/Components/components/animations.json +87 -0
- package/data/pages/Components/components/appheader.json +291 -0
- package/data/pages/Components/components/applayout.json +1198 -0
- package/data/pages/Components/components/appnavigationbar.json +327 -0
- package/data/pages/Components/components/areacharts.json +563 -0
- package/data/pages/Components/components/aspectratioplaceholder.json +75 -0
- package/data/pages/Components/components/assettree.json +3080 -0
- package/data/pages/Components/components/autosuggests.json +710 -0
- package/data/pages/Components/components/avatar.json +157 -0
- package/data/pages/Components/components/banner.json +599 -0
- package/data/pages/Components/components/barcharts.json +1507 -0
- package/data/pages/Components/components/barlist.json +223 -0
- package/data/pages/Components/components/basicmap.json +68 -0
- package/data/pages/Components/components/bottomsheet.json +601 -0
- package/data/pages/Components/components/button.json +583 -0
- package/data/pages/Components/components/buttontoolbar.json +63 -0
- package/data/pages/Components/components/calendarstripe.json +235 -0
- package/data/pages/Components/components/card.json +69 -0
- package/data/pages/Components/components/carousel.json +39 -0
- package/data/pages/Components/components/chartcolors.json +34 -0
- package/data/pages/Components/components/chartsgettingstarted.json +32 -0
- package/data/pages/Components/components/chat.json +39 -0
- package/data/pages/Components/components/checkbox.json +847 -0
- package/data/pages/Components/components/clearableinput.json +789 -0
- package/data/pages/Components/components/collapse.json +175 -0
- package/data/pages/Components/components/composedcharts.json +159 -0
- package/data/pages/Components/components/contentloader.json +233 -0
- package/data/pages/Components/components/datatabs.json +680 -0
- package/data/pages/Components/components/datepickers.json +287 -0
- package/data/pages/Components/components/dialogs.json +1492 -0
- package/data/pages/Components/components/divider.json +93 -0
- package/data/pages/Components/components/dropdowns.json +936 -0
- package/data/pages/Components/components/editablecontent.json +1117 -0
- package/data/pages/Components/components/expander.json +377 -0
- package/data/pages/Components/components/fade.json +403 -0
- package/data/pages/Components/components/fadeexpander.json +75 -0
- package/data/pages/Components/components/fadeup.json +127 -0
- package/data/pages/Components/components/feedback.json +269 -0
- package/data/pages/Components/components/filepickers.json +269 -0
- package/data/pages/Components/components/formlabel.json +115 -0
- package/data/pages/Components/components/fullscreenmap.json +22 -0
- package/data/pages/Components/components/groupeditemlist.json +323 -0
- package/data/pages/Components/components/iconlist.json +45 -0
- package/data/pages/Components/components/imagepreloader.json +81 -0
- package/data/pages/Components/components/labeledelement.json +75 -0
- package/data/pages/Components/components/licenseplate.json +69 -0
- package/data/pages/Components/components/linecharts.json +987 -0
- package/data/pages/Components/components/listmenu.json +313 -0
- package/data/pages/Components/components/loadmore.json +175 -0
- package/data/pages/Components/components/mainnavigation.json +39 -0
- package/data/pages/Components/components/mapcircle.json +34 -0
- package/data/pages/Components/components/mapcluster.json +51 -0
- package/data/pages/Components/components/mapcontext.json +105 -0
- package/data/pages/Components/components/mapdraggablemarker.json +34 -0
- package/data/pages/Components/components/mapgettingstarted.json +27 -0
- package/data/pages/Components/components/mapgroup.json +1198 -0
- package/data/pages/Components/components/mapinfobubble.json +34 -0
- package/data/pages/Components/components/maplayergroup.json +34 -0
- package/data/pages/Components/components/mapmarker.json +700 -0
- package/data/pages/Components/components/mappolygon.json +45 -0
- package/data/pages/Components/components/maproute.json +623 -0
- package/data/pages/Components/components/maproutegenerator.json +16 -0
- package/data/pages/Components/components/mapsettings.json +51 -0
- package/data/pages/Components/components/maputils.json +34 -0
- package/data/pages/Components/components/multiselects.json +1451 -0
- package/data/pages/Components/components/nodata.json +139 -0
- package/data/pages/Components/components/notifications.json +65 -0
- package/data/pages/Components/components/numbercontrol.json +301 -0
- package/data/pages/Components/components/onboarding.json +302 -0
- package/data/pages/Components/components/page.json +197 -0
- package/data/pages/Components/components/pager.json +93 -0
- package/data/pages/Components/components/piecharts.json +731 -0
- package/data/pages/Components/components/popover.json +251 -0
- package/data/pages/Components/components/position.json +69 -0
- package/data/pages/Components/components/radialbarcharts.json +1304 -0
- package/data/pages/Components/components/radiobutton.json +1105 -0
- package/data/pages/Components/components/releasenotes.json +44 -0
- package/data/pages/Components/components/resizer.json +93 -0
- package/data/pages/Components/components/responsivecolumnstripe.json +123 -0
- package/data/pages/Components/components/responsivevideo.json +75 -0
- package/data/pages/Components/components/rioglyph.json +93 -0
- package/data/pages/Components/components/rules.json +410 -0
- package/data/pages/Components/components/saveableinput.json +703 -0
- package/data/pages/Components/components/selects.json +701 -0
- package/data/pages/Components/components/sidebar.json +243 -0
- package/data/pages/Components/components/sliders.json +235 -0
- package/data/pages/Components/components/smoothscrollbars.json +335 -0
- package/data/pages/Components/components/spinners.json +343 -0
- package/data/pages/Components/components/states.json +1705 -0
- package/data/pages/Components/components/statswidgets.json +314 -0
- package/data/pages/Components/components/statusbar.json +177 -0
- package/data/pages/Components/components/stepbutton.json +57 -0
- package/data/pages/Components/components/steppedprogressbars.json +417 -0
- package/data/pages/Components/components/subnavigation.json +107 -0
- package/data/pages/Components/components/supportmarker.json +45 -0
- package/data/pages/Components/components/svgimage.json +81 -0
- package/data/pages/Components/components/switch.json +111 -0
- package/data/pages/Components/components/tables.json +144 -0
- package/data/pages/Components/components/tagmanager.json +86 -0
- package/data/pages/Components/components/tags.json +146 -0
- package/data/pages/Components/components/teaser.json +188 -0
- package/data/pages/Components/components/timeline.json +45 -0
- package/data/pages/Components/components/timepicker.json +163 -0
- package/data/pages/Components/components/togglebutton.json +247 -0
- package/data/pages/Components/components/tooltip.json +270 -0
- package/data/pages/Components/components/virtuallist.json +175 -0
- package/data/pages/Foundations/foundations.json +2475 -0
- package/data/pages/Getting-started/start/changelog.json +22 -0
- package/data/pages/Getting-started/start/goodtoknow.json +32 -0
- package/data/pages/Getting-started/start/guidelines/color-combinations.json +58 -0
- package/data/pages/Getting-started/start/guidelines/custom-css.json +27 -0
- package/data/pages/Getting-started/start/guidelines/custom-rioglyph.json +22 -0
- package/data/pages/Getting-started/start/guidelines/formatting.json +97 -0
- package/data/pages/Getting-started/start/guidelines/iframe.json +93 -0
- package/data/pages/Getting-started/start/guidelines/obfuscate-data.json +22 -0
- package/data/pages/Getting-started/start/guidelines/print-css.json +37 -0
- package/data/pages/Getting-started/start/guidelines/spinner.json +144 -0
- package/data/pages/Getting-started/start/guidelines/supported-browsers.json +22 -0
- package/data/pages/Getting-started/start/guidelines/writing.json +242 -0
- package/data/pages/Getting-started/start/howto.json +72 -0
- package/data/pages/Getting-started/start/intro.json +37 -0
- package/data/pages/Getting-started/start/responsiveness.json +52 -0
- package/data/pages/Templates/templates/common-table.json +39 -0
- package/data/pages/Templates/templates/detail-views.json +71 -0
- package/data/pages/Templates/templates/expandable-details.json +39 -0
- package/data/pages/Templates/templates/feature-cards.json +103 -0
- package/data/pages/Templates/templates/form-summary.json +39 -0
- package/data/pages/Templates/templates/form-toggle.json +39 -0
- package/data/pages/Templates/templates/list-blocks.json +119 -0
- package/data/pages/Templates/templates/loading-progress.json +39 -0
- package/data/pages/Templates/templates/options-panel.json +39 -0
- package/data/pages/Templates/templates/panel-variants.json +39 -0
- package/data/pages/Templates/templates/progress-cards.json +71 -0
- package/data/pages/Templates/templates/progress-success.json +39 -0
- package/data/pages/Templates/templates/settings-form.json +39 -0
- package/data/pages/Templates/templates/stats-blocks.json +135 -0
- package/data/pages/Templates/templates/table-panel.json +39 -0
- package/data/pages/Templates/templates/table-row-animation.json +39 -0
- package/data/pages/Templates/templates/usage-cards.json +39 -0
- package/data/pages/Utilities/utilities/deviceutils.json +39 -0
- package/data/pages/Utilities/utilities/featuretoggles.json +42 -0
- package/data/pages/Utilities/utilities/fueltypeutils.json +118 -0
- package/data/pages/Utilities/utilities/routeutils.json +34 -0
- package/data/pages/Utilities/utilities/useaftermount.json +63 -0
- package/data/pages/Utilities/utilities/useaverage.json +86 -0
- package/data/pages/Utilities/utilities/useclickoutside.json +69 -0
- package/data/pages/Utilities/utilities/useclipboard.json +57 -0
- package/data/pages/Utilities/utilities/usecount.json +92 -0
- package/data/pages/Utilities/utilities/usedarkmode.json +50 -0
- package/data/pages/Utilities/utilities/usedebuginfo.json +63 -0
- package/data/pages/Utilities/utilities/useeffectonce.json +57 -0
- package/data/pages/Utilities/utilities/useelapsedtime.json +57 -0
- package/data/pages/Utilities/utilities/useelementsize.json +63 -0
- package/data/pages/Utilities/utilities/useesc.json +57 -0
- package/data/pages/Utilities/utilities/useevent.json +75 -0
- package/data/pages/Utilities/utilities/usefocustrap.json +57 -0
- package/data/pages/Utilities/utilities/usefullscreen.json +197 -0
- package/data/pages/Utilities/utilities/usehover.json +57 -0
- package/data/pages/Utilities/utilities/useinterval.json +63 -0
- package/data/pages/Utilities/utilities/useisfocuswithin.json +75 -0
- package/data/pages/Utilities/utilities/usekey.json +75 -0
- package/data/pages/Utilities/utilities/uselocalstorage.json +69 -0
- package/data/pages/Utilities/utilities/uselocationsuggestions.json +110 -0
- package/data/pages/Utilities/utilities/usemax.json +86 -0
- package/data/pages/Utilities/utilities/usemin.json +86 -0
- package/data/pages/Utilities/utilities/usemutationobserver.json +69 -0
- package/data/pages/Utilities/utilities/useonlinestatus.json +39 -0
- package/data/pages/Utilities/utilities/useonscreen.json +63 -0
- package/data/pages/Utilities/utilities/usepostmessage.json +80 -0
- package/data/pages/Utilities/utilities/useprevious.json +63 -0
- package/data/pages/Utilities/utilities/useresizeobserver.json +65 -0
- package/data/pages/Utilities/utilities/usescrollposition.json +103 -0
- package/data/pages/Utilities/utilities/usesearch.json +197 -0
- package/data/pages/Utilities/utilities/usesorting.json +139 -0
- package/data/pages/Utilities/utilities/usestatewithvalidation.json +69 -0
- package/data/pages/Utilities/utilities/usesum.json +86 -0
- package/data/pages/Utilities/utilities/usetableexport.json +87 -0
- package/data/pages/Utilities/utilities/usetableselection.json +311 -0
- package/data/pages/Utilities/utilities/usetimeout.json +63 -0
- package/data/pages/Utilities/utilities/usetoggle.json +75 -0
- package/data/pages/Utilities/utilities/usewindowresize.json +63 -0
- package/data/version.json +4 -0
- package/docs/content-schema.md +147 -0
- package/docs/navigation-inventory.json +1310 -0
- package/docs/search-synonyms.json +43 -0
- package/package.json +38 -0
- package/server/index.mjs +268 -0
- package/server/lib/load-docs.mjs +48 -0
- package/server/lib/normalise-doc.mjs +220 -0
- package/server/lib/render-markdown.mjs +82 -0
- package/server/lib/search-index.mjs +49 -0
- package/server/lib/types.js +99 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"captured_at": "2025-11-21T12:08:45.553Z",
|
|
4
|
+
"source": "https://uikit.developers.rio.cloud/#utilities/useLocationSuggestions",
|
|
5
|
+
"category": "Utilities",
|
|
6
|
+
"section": "UI state & input hooks",
|
|
7
|
+
"slug": "utilities/uselocationsuggestions",
|
|
8
|
+
"version": "v1.13.2",
|
|
9
|
+
"hash_algorithm": "sha256",
|
|
10
|
+
"hash": "f3c9a3bb71df3b7a71b5b2fe0fde3c0f9ff747da11d62b70aa4909a728ffbfb4"
|
|
11
|
+
},
|
|
12
|
+
"title": "useLocationSuggestions",
|
|
13
|
+
"lead": "The useLocationSuggestions hook allows to use a side effect after the component has been mounted and rendered. The effect will not be triggered on mount and only when the dependencies change.",
|
|
14
|
+
"content": [
|
|
15
|
+
{
|
|
16
|
+
"heading": "useLocationSuggestions",
|
|
17
|
+
"body": "",
|
|
18
|
+
"examples": [
|
|
19
|
+
{
|
|
20
|
+
"caption": "Example 1",
|
|
21
|
+
"rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div class=\"max-width-600\"><label for=\"locationAutosuggest\" class=\"display-inline-block\"><span>Here map location search</span></label><div class=\"AutoSuggest dropdown\"><div class=\"input-group width-100pct\"><span class=\"input-group-addon\"><span class=\"rioglyph rioglyph rioglyph-search\" aria-hidden=\"true\"></span></span><div class=\"ClearableInput input-group\"><input id=\"locationAutosuggest\" placeholder=\"Search for location\" class=\"form-control\" autocomplete=\"off\" type=\"text\" tabindex=\"0\" value=\"\"><span class=\"clearButton hide\"><span class=\"clearButtonIcon rioglyph rioglyph-remove-sign\"></span></span></div></div></div></div></div>",
|
|
22
|
+
"tabs": [
|
|
23
|
+
{
|
|
24
|
+
"label": "React",
|
|
25
|
+
"language": "tsx",
|
|
26
|
+
"code": "import { useState } from 'react';\n\nimport { UIKIT_DEMO_CREDENTIALS_ARE_NOT_ALLOWED_IN_PROD_ENVIRONMENT } from '../../components/map/uikit_demo_credentials';\nimport AutoSuggest, { type AutoSuggestSuggestion } from '@rio-cloud/rio-uikit/AutoSuggest';\nimport FormLabel from '@rio-cloud/rio-uikit/FormLabel';\nimport useLocationSuggestions from '@rio-cloud/rio-uikit/useLocationSuggestions';\n\nexport default () => {\n const [searchValue, setSearchValue] = useState('');\n\n const { suggestions, loading, error } = useLocationSuggestions(searchValue, {\n apiKey: UIKIT_DEMO_CREDENTIALS_ARE_NOT_ALLOWED_IN_PROD_ENVIRONMENT.apikey,\n limit: 20, // optional, but has to be between 5...20\n lang: 'de-DE', // optional\n // ... Add any additional options dynamically. See API documentation - https://www.here.com/docs/bundle/geocoding-and-search-api-v7-api-reference/page/index.html#/paths/~1autocomplete/get\n });\n\n const handleSuggestionsFetchRequested = (result: { value: string }) => {\n setSearchValue(result.value);\n };\n\n const renderSuggestion = (suggestion: AutoSuggestSuggestion) => <span>{suggestion.label}</span>;\n\n const inputProps = {\n icon: 'rioglyph rioglyph-search',\n placeholder: 'Search for location',\n value: searchValue,\n };\n\n return (\n <div className='max-width-600'>\n <FormLabel htmlFor='locationAutosuggest'>Here map location search</FormLabel>\n <AutoSuggest\n id='locationAutosuggest'\n inputProps={inputProps}\n suggestions={suggestions}\n onSuggestionsFetchRequested={handleSuggestionsFetchRequested}\n renderSuggestion={renderSuggestion}\n isLoading={loading}\n openOnFocus={false}\n />\n {error && <div>{error.message}</div>}\n </div>\n );\n};"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"label": "HTML",
|
|
30
|
+
"language": "html",
|
|
31
|
+
"code": "<div class=\"max-width-600\">\n <label for=\"locationAutosuggest\" class=\"display-inline-block\">\n <span>Here map location search</span>\n </label>\n <div class=\"AutoSuggest dropdown\">\n <div class=\"input-group width-100pct\">\n <span class=\"input-group-addon\">\n <span class=\"rioglyph rioglyph rioglyph-search\" aria-hidden=\"true\">\n </span>\n </span>\n <div class=\"ClearableInput input-group\">\n <input id=\"locationAutosuggest\" placeholder=\"Search for location\" class=\"form-control\" autocomplete=\"off\" type=\"text\" tabindex=\"0\" value=\"\">\n <span class=\"clearButton hide\">\n <span class=\"clearButtonIcon rioglyph rioglyph-remove-sign\">\n </span>\n </span>\n </div>\n </div>\n </div>\n</div>"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"label": "Props",
|
|
35
|
+
"language": "json",
|
|
36
|
+
"code": null,
|
|
37
|
+
"props": [
|
|
38
|
+
{
|
|
39
|
+
"heading": null,
|
|
40
|
+
"rows": [
|
|
41
|
+
{
|
|
42
|
+
"name": "query",
|
|
43
|
+
"type": "string",
|
|
44
|
+
"default": "",
|
|
45
|
+
"description": "The user input string to search for location suggestions."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "options",
|
|
49
|
+
"type": "object",
|
|
50
|
+
"default": "",
|
|
51
|
+
"description": "Optional configuration for the hook."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "└apiKey",
|
|
55
|
+
"type": "string",
|
|
56
|
+
"default": "",
|
|
57
|
+
"description": "Your HERE Maps API key. Defaults to \"YOUR_API_KEY\" if not provided."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "└fetchUrl",
|
|
61
|
+
"type": "string",
|
|
62
|
+
"default": "",
|
|
63
|
+
"description": "Optional override for the autocomplete endpoint URL. Defaults to HERE Maps API URL."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "└limit",
|
|
67
|
+
"type": "number",
|
|
68
|
+
"default": "5",
|
|
69
|
+
"description": "Optional value to define the result limit (between 5 and 20)."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "└...additionalOptions",
|
|
73
|
+
"type": "unknown",
|
|
74
|
+
"default": "",
|
|
75
|
+
"description": "Pass in any additional option for the fetch API."
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"heading": "Returns",
|
|
81
|
+
"rows": [
|
|
82
|
+
{
|
|
83
|
+
"name": "suggestions",
|
|
84
|
+
"type": "LocationSuggestion[]",
|
|
85
|
+
"default": "",
|
|
86
|
+
"description": "An array of suggestion objects containing an id and label."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "loading",
|
|
90
|
+
"type": "boolean",
|
|
91
|
+
"default": "",
|
|
92
|
+
"description": "Indicates whether the suggestions are currently being fetched."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "error",
|
|
96
|
+
"type": "Error | null",
|
|
97
|
+
"default": "",
|
|
98
|
+
"description": "Error object if the fetch fails, otherwise null."
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"see_also": []
|
|
110
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"captured_at": "2025-11-21T12:08:47.621Z",
|
|
4
|
+
"source": "https://uikit.developers.rio.cloud/#utilities/useMax",
|
|
5
|
+
"category": "Utilities",
|
|
6
|
+
"section": "Data aggregation hooks",
|
|
7
|
+
"slug": "utilities/usemax",
|
|
8
|
+
"version": "v1.13.2",
|
|
9
|
+
"hash_algorithm": "sha256",
|
|
10
|
+
"hash": "581281227aba01d0368f15d4725086bf01642ffb37515d2cb9214e7e6f1bebdf"
|
|
11
|
+
},
|
|
12
|
+
"title": "useMax",
|
|
13
|
+
"lead": "Returns the largest valid numeric value found at the specified path within a list of objects. Supports localized formats and gracefully skips unparsable values.",
|
|
14
|
+
"content": [
|
|
15
|
+
{
|
|
16
|
+
"heading": "useMax",
|
|
17
|
+
"body": "",
|
|
18
|
+
"examples": [
|
|
19
|
+
{
|
|
20
|
+
"caption": "Example 1",
|
|
21
|
+
"rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div>Longest duration: 1440 min</div></div>",
|
|
22
|
+
"tabs": [
|
|
23
|
+
{
|
|
24
|
+
"label": "React",
|
|
25
|
+
"language": "tsx",
|
|
26
|
+
"code": "import useMax from '@rio-cloud/rio-uikit/useMax';\n\nconst deliveries = [\n { shipment: { duration: 90 } }, // in minutes\n { shipment: { duration: 150 } },\n { shipment: { duration: 1440 } },\n { shipment: { duration: 180 } },\n];\n\nexport default () => {\n const maxDuration = useMax(deliveries, 'shipment.duration');\n\n return <div>Longest duration: {maxDuration} min</div>;\n};"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"label": "HTML",
|
|
30
|
+
"language": "html",
|
|
31
|
+
"code": "<div>Longest duration: 1440 min</div>"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"label": "Props",
|
|
35
|
+
"language": "json",
|
|
36
|
+
"code": null,
|
|
37
|
+
"props": [
|
|
38
|
+
{
|
|
39
|
+
"heading": "Options for the `useMax` hook",
|
|
40
|
+
"rows": [
|
|
41
|
+
{
|
|
42
|
+
"name": "items",
|
|
43
|
+
"type": "unknown[]",
|
|
44
|
+
"default": "",
|
|
45
|
+
"description": "The array of objects to evaluate."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "path",
|
|
49
|
+
"type": "string",
|
|
50
|
+
"default": "",
|
|
51
|
+
"description": "Dot-separated path to the numeric value inside each object."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "options",
|
|
55
|
+
"type": "object",
|
|
56
|
+
"default": "",
|
|
57
|
+
"description": "Optional configuration for number parsing."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "└locale",
|
|
61
|
+
"type": "string",
|
|
62
|
+
"default": "\"en-GB\"",
|
|
63
|
+
"description": "Locale string used for parsing localized number formats. Affects grouping and decimal separator interpretation."
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"heading": "Return value of the `useMax` hook",
|
|
69
|
+
"rows": [
|
|
70
|
+
{
|
|
71
|
+
"name": "value",
|
|
72
|
+
"type": "number",
|
|
73
|
+
"default": "",
|
|
74
|
+
"description": "The largest valid numeric value found at the given path, or 0 if none could be parsed."
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"see_also": []
|
|
86
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"captured_at": "2025-11-21T12:08:47.852Z",
|
|
4
|
+
"source": "https://uikit.developers.rio.cloud/#utilities/useMin",
|
|
5
|
+
"category": "Utilities",
|
|
6
|
+
"section": "Data aggregation hooks",
|
|
7
|
+
"slug": "utilities/usemin",
|
|
8
|
+
"version": "v1.13.2",
|
|
9
|
+
"hash_algorithm": "sha256",
|
|
10
|
+
"hash": "df8f296cf5139bc46145c72a7dd8c8546417dc5eb725c20163aa79b0c6479838"
|
|
11
|
+
},
|
|
12
|
+
"title": "useMin",
|
|
13
|
+
"lead": "Returns the smallest valid numeric value found at the specified path within a list of objects. Handles localized number strings and safely ignores invalid values.",
|
|
14
|
+
"content": [
|
|
15
|
+
{
|
|
16
|
+
"heading": "useMin",
|
|
17
|
+
"body": "",
|
|
18
|
+
"examples": [
|
|
19
|
+
{
|
|
20
|
+
"caption": "Example 1",
|
|
21
|
+
"rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div>Lowest shipment value: 850 €</div></div>",
|
|
22
|
+
"tabs": [
|
|
23
|
+
{
|
|
24
|
+
"label": "React",
|
|
25
|
+
"language": "tsx",
|
|
26
|
+
"code": "import { FormattedNumber, IntlProvider } from 'react-intl';\nimport useMin from '@rio-cloud/rio-uikit/useMin';\n\nconst deliveries = [\n { shipment: { value: '2.345,50 €' } },\n { shipment: { value: '1.000,75 €' } },\n { shipment: { value: 850 } },\n { shipment: { value: '2.000' } },\n];\n\nexport default () => {\n const minValue = useMin(deliveries, 'shipment.value', {\n locale: 'de-DE',\n });\n\n return (\n <IntlProvider locale='de-DE'>\n <div>\n Lowest shipment value:{' '}\n <FormattedNumber\n value={minValue}\n style='currency'\n currency='EUR'\n minimumFractionDigits={0}\n maximumFractionDigits={0}\n />\n </div>\n </IntlProvider>\n );\n};"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"label": "HTML",
|
|
30
|
+
"language": "html",
|
|
31
|
+
"code": "<div>Lowest shipment value: 850 €</div>"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"label": "Props",
|
|
35
|
+
"language": "json",
|
|
36
|
+
"code": null,
|
|
37
|
+
"props": [
|
|
38
|
+
{
|
|
39
|
+
"heading": "Options for the `useMin` hook",
|
|
40
|
+
"rows": [
|
|
41
|
+
{
|
|
42
|
+
"name": "items",
|
|
43
|
+
"type": "unknown[]",
|
|
44
|
+
"default": "",
|
|
45
|
+
"description": "The array of objects to evaluate."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "path",
|
|
49
|
+
"type": "string",
|
|
50
|
+
"default": "",
|
|
51
|
+
"description": "Dot-separated path to the numeric value inside each object."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "options",
|
|
55
|
+
"type": "object",
|
|
56
|
+
"default": "",
|
|
57
|
+
"description": "Optional configuration for number parsing."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "└locale",
|
|
61
|
+
"type": "string",
|
|
62
|
+
"default": "\"en-GB\"",
|
|
63
|
+
"description": "Locale string used for parsing localized number formats. Affects grouping and decimal separator interpretation."
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"heading": "Return value of the `useMin` hook",
|
|
69
|
+
"rows": [
|
|
70
|
+
{
|
|
71
|
+
"name": "value",
|
|
72
|
+
"type": "number",
|
|
73
|
+
"default": "",
|
|
74
|
+
"description": "The smallest valid numeric value found at the given path, or 0 if none could be parsed."
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"see_also": []
|
|
86
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"captured_at": "2025-11-21T12:08:41.235Z",
|
|
4
|
+
"source": "https://uikit.developers.rio.cloud/#utilities/useMutationObserver",
|
|
5
|
+
"category": "Utilities",
|
|
6
|
+
"section": "DOM behavior hooks",
|
|
7
|
+
"slug": "utilities/usemutationobserver",
|
|
8
|
+
"version": "v1.13.2",
|
|
9
|
+
"hash_algorithm": "sha256",
|
|
10
|
+
"hash": "d319386425b8b2201644d797d7e65ea0cf664fb306d3fbf53257e86158b01eec"
|
|
11
|
+
},
|
|
12
|
+
"title": "useMutationObserver",
|
|
13
|
+
"lead": "The useMutationObserver hook enables you to listen for changes on the given element or on its children. For more details, check out https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver",
|
|
14
|
+
"content": [
|
|
15
|
+
{
|
|
16
|
+
"heading": "useMutationObserver",
|
|
17
|
+
"body": "",
|
|
18
|
+
"examples": [
|
|
19
|
+
{
|
|
20
|
+
"caption": "Example 1",
|
|
21
|
+
"rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div class=\"display-grid\"><div class=\"margin-y-15\"><div class=\"callout callout-default\"><div class=\" text-medium text-size-20 line-height-125rel margin-bottom-10\">Demo callout</div><p>At vero eos et accusam et justo duo dolores et ea rebum clita kasd gubergren, no sea takimata.</p></div></div><div class=\"margin-top-20\"><div class=\"btn-toolbar\"><button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Set Default Style</button><button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Set Primary Style</button><button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Set Secondary Style</button><button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Set Warning Style</button><button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Set Danger Style</button></div><div class=\"margin-top-15\"><label>Element Changes:</label><div>-</div></div></div></div></div>",
|
|
22
|
+
"tabs": [
|
|
23
|
+
{
|
|
24
|
+
"label": "React",
|
|
25
|
+
"language": "tsx",
|
|
26
|
+
"code": "import { useRef, useCallback, useState } from 'react';\n\nimport Button from '@rio-cloud/rio-uikit/Button';\nimport useMutationObserver from '@rio-cloud/rio-uikit/useMutationObserver';\n\nexport default () => {\n const [changes, setChanges] = useState('-');\n const [calloutStyle, setCalloutStyle] = useState('default');\n\n const ref = useRef<HTMLElement>(null);\n\n const handleTargetMutation = useCallback((mutationList: MutationRecord[]) => {\n mutationList.map((mutation: MutationRecord) => {\n console.log(mutation);\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n setChanges(`className: ${(mutation.target as HTMLElement).className}`);\n }\n });\n }, []);\n\n useMutationObserver(ref, handleTargetMutation);\n\n return (\n <div className='display-grid'>\n <div className='margin-y-15'>\n <div ref={ref} className={`callout callout-${calloutStyle}`}>\n <div className=' text-medium text-size-20 line-height-125rel margin-bottom-10'>Demo callout</div>\n <p>\n At vero eos et accusam et justo duo dolores et ea rebum clita kasd gubergren, no sea takimata.\n </p>\n </div>\n </div>\n <div className='margin-top-20'>\n <div className='btn-toolbar'>\n <Button onClick={() => setCalloutStyle('default')}>Set Default Style</Button>\n <Button onClick={() => setCalloutStyle('primary')}>Set Primary Style</Button>\n <Button onClick={() => setCalloutStyle('secondary')}>Set Secondary Style</Button>\n <Button onClick={() => setCalloutStyle('warning')}>Set Warning Style</Button>\n <Button onClick={() => setCalloutStyle('danger')}>Set Danger Style</Button>\n </div>\n <div className='margin-top-15'>\n <label>Element Changes:</label>\n <div>{changes}</div>\n </div>\n </div>\n </div>\n );\n};"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"label": "HTML",
|
|
30
|
+
"language": "html",
|
|
31
|
+
"code": "<div class=\"display-grid\">\n <div class=\"margin-y-15\">\n <div class=\"callout callout-default\">\n <div class=\" text-medium text-size-20 line-height-125rel margin-bottom-10\">Demo callout</div>\n <p>At vero eos et accusam et justo duo dolores et ea rebum clita kasd gubergren, no sea takimata.</p>\n </div>\n </div>\n <div class=\"margin-top-20\">\n <div class=\"btn-toolbar\">\n <button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Set Default Style</button>\n <button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Set Primary Style</button>\n <button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Set Secondary Style</button>\n <button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Set Warning Style</button>\n <button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Set Danger Style</button>\n </div>\n <div class=\"margin-top-15\">\n <label>Element Changes:</label>\n <div>-</div>\n </div>\n </div>\n</div>"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"label": "Props",
|
|
35
|
+
"language": "json",
|
|
36
|
+
"code": null,
|
|
37
|
+
"props": [
|
|
38
|
+
{
|
|
39
|
+
"heading": null,
|
|
40
|
+
"rows": [
|
|
41
|
+
{
|
|
42
|
+
"name": "targetElement",
|
|
43
|
+
"type": "HTMLElement | React.MutableRefObject<object> | null | undefined",
|
|
44
|
+
"default": "",
|
|
45
|
+
"description": "The ref or target element to observe changes for."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "callback",
|
|
49
|
+
"type": "MutationCallback",
|
|
50
|
+
"default": "",
|
|
51
|
+
"description": "The callback to execute when mutations are observed."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "options",
|
|
55
|
+
"type": "{ attributes?: boolean; childList?: boolean; subtree?: boolean; }",
|
|
56
|
+
"default": "",
|
|
57
|
+
"description": "Options passed to the mutation observer."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"see_also": []
|
|
69
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"captured_at": "2025-11-21T12:08:44.149Z",
|
|
4
|
+
"source": "https://uikit.developers.rio.cloud/#utilities/useOnlineStatus",
|
|
5
|
+
"category": "Utilities",
|
|
6
|
+
"section": "Browser & device hooks",
|
|
7
|
+
"slug": "utilities/useonlinestatus",
|
|
8
|
+
"version": "v1.13.2",
|
|
9
|
+
"hash_algorithm": "sha256",
|
|
10
|
+
"hash": "98b3e3aaec261d01ad5114973db557e74f3fc070b0fa57548171f8f89a9585fa"
|
|
11
|
+
},
|
|
12
|
+
"title": "useOnlineStatus",
|
|
13
|
+
"lead": "The useOnlineStatus hook tells you when there is a network connection or not.",
|
|
14
|
+
"content": [
|
|
15
|
+
{
|
|
16
|
+
"heading": "useOnlineStatus",
|
|
17
|
+
"body": "",
|
|
18
|
+
"examples": [
|
|
19
|
+
{
|
|
20
|
+
"caption": "Example 1",
|
|
21
|
+
"rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div class=\"display-flex justify-content-center align-items-center\"><div class=\"display-flex flex-column align-items-center text-size-14\"><span class=\"rioglyph rioglyph-wifi text-size-200pct \"></span><div>You are online</div></div></div></div>",
|
|
22
|
+
"tabs": [
|
|
23
|
+
{
|
|
24
|
+
"label": "React",
|
|
25
|
+
"language": "tsx",
|
|
26
|
+
"code": "import useOnlineStatus from '@rio-cloud/rio-uikit/useOnlineStatus';\n\nexport default () => {\n const isOnline = useOnlineStatus();\n\n return (\n <div className='display-flex justify-content-center align-items-center'>\n <div className='display-flex flex-column align-items-center text-size-14'>\n <span className={`rioglyph rioglyph-wifi text-size-200pct ${isOnline ? '' : 'text-color-light'}`} />\n <div>{`You are ${isOnline ? 'online' : 'offline'}`}</div>\n </div>\n </div>\n );\n};"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"label": "HTML",
|
|
30
|
+
"language": "html",
|
|
31
|
+
"code": "<div class=\"display-flex justify-content-center align-items-center\">\n <div class=\"display-flex flex-column align-items-center text-size-14\">\n <span class=\"rioglyph rioglyph-wifi text-size-200pct \">\n </span>\n <div>You are online</div>\n </div>\n</div>"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"see_also": []
|
|
39
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"captured_at": "2025-11-21T12:08:41.374Z",
|
|
4
|
+
"source": "https://uikit.developers.rio.cloud/#utilities/useOnScreen",
|
|
5
|
+
"category": "Utilities",
|
|
6
|
+
"section": "DOM behavior hooks",
|
|
7
|
+
"slug": "utilities/useonscreen",
|
|
8
|
+
"version": "v1.13.2",
|
|
9
|
+
"hash_algorithm": "sha256",
|
|
10
|
+
"hash": "afb31ed6d19bcdc11f1de1380ac7be5eafa4a12178202cfe2991ed79dfa60e6f"
|
|
11
|
+
},
|
|
12
|
+
"title": "useOnScreen",
|
|
13
|
+
"lead": "The useOnScreen hook tells you when an element is visible on screen.",
|
|
14
|
+
"content": [
|
|
15
|
+
{
|
|
16
|
+
"heading": "useOnScreen",
|
|
17
|
+
"body": "",
|
|
18
|
+
"examples": [
|
|
19
|
+
{
|
|
20
|
+
"caption": "Example 1",
|
|
21
|
+
"rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div><div class=\"text-medium text-size-14\">Header 2 is not visible</div><hr><div class=\"height-300 overflow-scroll\"><div class=\"h1\">Header</div><div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde incidunt, nam id itaque error dicta? Numquam earum iusto optio officia, molestias debitis illum facilis nemo asperiores eaque voluptates modi? Dicta mollitia fugit doloremque vitae, dolores sequi fuga quas vel incidunt animi architecto dignissimos amet in quam praesentium corrupti voluptate dolorem impedit numquam aut cupiditate nulla! Nisi dolore dicta, cumque illum tempora enim dolores eum quis itaque nostrum architecto vel cum officiis aperiam qui exercitationem voluptatibus. Veritatis unde doloribus dolorem architecto, eum reprehenderit possimus similique eius cum obcaecati totam placeat. Delectus nulla, quae temporibus omnis assumenda autem ad quibusdam facilis aspernatur inventore nobis. Vitae architecto, unde consequuntur velit consequatur dicta mollitia, fuga iure hic accusamus blanditiis. Dignissimos, tenetur amet adipisci nostrum perferendis ad rerum accusamus distinctio repellendus eius, quisquam repellat nesciunt, consequatur culpa neque? Inventore vitae laborum aperiam ullam dolorem officiis ipsum aliquid doloribus pariatur, commodi iure illum soluta delectus, architecto ratione maiores accusamus. Provident quia sequi dolorum asperiores necessitatibus consequatur perspiciatis at a, inventore, deserunt corporis recusandae earum vero voluptas saepe pariatur, libero illo. Numquam facilis magnam exercitationem ipsam libero quidem minima dolores perferendis eveniet impedit eos, nesciunt unde velit facere itaque eum quasi laboriosam veritatis aliquid tenetur. Blanditiis exercitationem laborum, optio nulla minima libero sed doloremque soluta, dignissimos tempora rerum id nostrum iusto eveniet illo corrupti dicta. Non fuga exercitationem sit dignissimos voluptatibus cumque nobis iste asperiores illum fugit</div><div class=\"h1\">Header 2 </div><div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde incidunt, nam id itaque error dicta? Numquam earum iusto optio officia, molestias debitis illum facilis nemo asperiores eaque voluptates modi? Dicta mollitia fugit doloremque vitae, dolores sequi fuga quas vel incidunt animi architecto dignissimos amet in quam praesentium corrupti voluptate dolorem impedit numquam aut cupiditate nulla! Nisi dolore dicta, cumque illum tempora enim dolores eum quis itaque nostrum architecto vel cum officiis aperiam qui exercitationem voluptatibus. Veritatis unde doloribus dolorem architecto, eum reprehenderit possimus similique eius cum obcaecati totam placeat. Delectus nulla, quae temporibus omnis assumenda autem ad quibusdam facilis aspernatur inventore nobis. Vitae architecto, unde consequuntur velit consequatur dicta mollitia, fuga iure hic accusamus blanditiis. Dignissimos, tenetur amet adipisci nostrum perferendis ad rerum accusamus distinctio repellendus eius, quisquam repellat nesciunt, consequatur culpa neque? Inventore vitae laborum aperiam ullam dolorem officiis ipsum aliquid doloribus pariatur, commodi iure illum soluta delectus, architecto ratione maiores accusamus. Provident quia sequi dolorum asperiores necessitatibus consequatur perspiciatis at a, inventore, deserunt corporis recusandae earum vero voluptas saepe pariatur, libero illo. Numquam facilis magnam exercitationem ipsam libero quidem minima dolores perferendis eveniet impedit eos, nesciunt unde velit facere itaque eum quasi laboriosam veritatis aliquid tenetur. Blanditiis exercitationem laborum, optio nulla minima libero sed doloremque soluta, dignissimos tempora rerum id nostrum iusto eveniet illo corrupti dicta. Non fuga exercitationem sit dignissimos voluptatibus cumque nobis iste asperiores illum fugit veritatis fugiat quia voluptates cupiditate vel rerum eligendi facere sint nostrum quam, maiores dolorem repellat voluptas! Magnam ullam quis quas aut consequuntur quo doloremque, earum sint soluta vero iste quasi voluptates labore rerum aspernatur illum esse maxime laudantium? Tempore perspiciatis perferendis ea dolorem et quasi eos illo beatae consectetur maxime, enim ducimus corrupti, accusantium quisquam rem dolorum itaque iste velit. Amet similique accusamus doloribus expedita modi a architecto accusantium labore unde non, dolore totam quaerat sit laboriosam quae ullam impedit, pariatur repudiandae quisquam debitis repellendus nihil. Cumque blanditiis ut recusandae illum! Maiores eveniet nulla exercitationem natus delectus est minus a architecto pariatur molestias quo nihil maxime quasi facere magnam neque dolorem ad, doloribus hic! Qui corporis perspiciatis dolores rem minima tenetur. Fugit ipsa consectetur ad reiciendis, quia iste, sapiente rerum exercitationem reprehenderit laborum eligendi cumque? Quia porro modi repudiandae nostrum accusamus! Corporis eum fugit nihil facilis placeat ab est obcaecati consequuntur qui atque tempore soluta aliquid saepe ducimus, at sed modi illo ipsa numquam ratione vero eos reprehenderit! Sapiente nesciunt consequatur labore iste quas possimus rem cumque, fugit laborum repellendus nisi adipisci officia temporibus quaerat! Beatae doloribus veritatis at, maiores suscipit debitis reiciendis cum impedit non aut modi iste? Placeat illo quisquam assumenda esse cum ipsum quasi perspiciatis voluptatem rerum itaque, similique quidem molestias exercitationem ullam eum amet tempore dolor aliquid unde deserunt dolore excepturi. Aut dolore rerum sequi nihil soluta eum expedita consequatur aliquid consequuntur saepe esse necessitatibus repudiandae, natus, officia enim odit rem nobis adipisci, voluptates autem dolor blanditiis ipsam animi a. Illo accusantium iure qui aperiam commodi, quidem, dolorem error eum animi, id nam? Corporis, non adipisci!</div></div></div></div>",
|
|
22
|
+
"tabs": [
|
|
23
|
+
{
|
|
24
|
+
"label": "React",
|
|
25
|
+
"language": "tsx",
|
|
26
|
+
"code": "import { useRef } from 'react';\n\nimport useOnScreen from '@rio-cloud/rio-uikit/useOnScreen';\n\nexport default () => {\n const headerTwoRef = useRef<HTMLDivElement>(null);\n const visible = useOnScreen(headerTwoRef);\n\n console.log(visible);\n\n return (\n <div>\n <div className='text-medium text-size-14'>{`Header 2 is ${visible ? 'visible' : 'not visible'}`}</div>\n <hr />\n <div className='height-300 overflow-scroll'>\n <div className='h1'>Header</div>\n <div>\n Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde incidunt, nam id itaque error dicta?\n Numquam earum iusto optio officia, molestias debitis illum facilis nemo asperiores eaque voluptates\n modi? Dicta mollitia fugit doloremque vitae, dolores sequi fuga quas vel incidunt animi architecto\n dignissimos amet in quam praesentium corrupti voluptate dolorem impedit numquam aut cupiditate\n nulla! Nisi dolore dicta, cumque illum tempora enim dolores eum quis itaque nostrum architecto vel\n cum officiis aperiam qui exercitationem voluptatibus. Veritatis unde doloribus dolorem architecto,\n eum reprehenderit possimus similique eius cum obcaecati totam placeat. Delectus nulla, quae\n temporibus omnis assumenda autem ad quibusdam facilis aspernatur inventore nobis. Vitae architecto,\n unde consequuntur velit consequatur dicta mollitia, fuga iure hic accusamus blanditiis. Dignissimos,\n tenetur amet adipisci nostrum perferendis ad rerum accusamus distinctio repellendus eius, quisquam\n repellat nesciunt, consequatur culpa neque? Inventore vitae laborum aperiam ullam dolorem officiis\n ipsum aliquid doloribus pariatur, commodi iure illum soluta delectus, architecto ratione maiores\n accusamus. Provident quia sequi dolorum asperiores necessitatibus consequatur perspiciatis at a,\n inventore, deserunt corporis recusandae earum vero voluptas saepe pariatur, libero illo. Numquam\n facilis magnam exercitationem ipsam libero quidem minima dolores perferendis eveniet impedit eos,\n nesciunt unde velit facere itaque eum quasi laboriosam veritatis aliquid tenetur. Blanditiis\n exercitationem laborum, optio nulla minima libero sed doloremque soluta, dignissimos tempora rerum\n id nostrum iusto eveniet illo corrupti dicta. Non fuga exercitationem sit dignissimos voluptatibus\n cumque nobis iste asperiores illum fugit\n </div>\n <div className='h1' ref={headerTwoRef}>\n Header 2 {visible && '(Visible)'}\n </div>\n <div>\n Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde incidunt, nam id itaque error dicta?\n Numquam earum iusto optio officia, molestias debitis illum facilis nemo asperiores eaque voluptates\n modi? Dicta mollitia fugit doloremque vitae, dolores sequi fuga quas vel incidunt animi architecto\n dignissimos amet in quam praesentium corrupti voluptate dolorem impedit numquam aut cupiditate\n nulla! Nisi dolore dicta, cumque illum tempora enim dolores eum quis itaque nostrum architecto vel\n cum officiis aperiam qui exercitationem voluptatibus. Veritatis unde doloribus dolorem architecto,\n eum reprehenderit possimus similique eius cum obcaecati totam placeat. Delectus nulla, quae\n temporibus omnis assumenda autem ad quibusdam facilis aspernatur inventore nobis. Vitae architecto,\n unde consequuntur velit consequatur dicta mollitia, fuga iure hic accusamus blanditiis. Dignissimos,\n tenetur amet adipisci nostrum perferendis ad rerum accusamus distinctio repellendus eius, quisquam\n repellat nesciunt, consequatur culpa neque? Inventore vitae laborum aperiam ullam dolorem officiis\n ipsum aliquid doloribus pariatur, commodi iure illum soluta delectus, architecto ratione maiores\n accusamus. Provident quia sequi dolorum asperiores necessitatibus consequatur perspiciatis at a,\n inventore, deserunt corporis recusandae earum vero voluptas saepe pariatur, libero illo. Numquam\n facilis magnam exercitationem ipsam libero quidem minima dolores perferendis eveniet impedit eos,\n nesciunt unde velit facere itaque eum quasi laboriosam veritatis aliquid tenetur. Blanditiis\n exercitationem laborum, optio nulla minima libero sed doloremque soluta, dignissimos tempora rerum\n id nostrum iusto eveniet illo corrupti dicta. Non fuga exercitationem sit dignissimos voluptatibus\n cumque nobis iste asperiores illum fugit veritatis fugiat quia voluptates cupiditate vel rerum\n eligendi facere sint nostrum quam, maiores dolorem repellat voluptas! Magnam ullam quis quas aut\n consequuntur quo doloremque, earum sint soluta vero iste quasi voluptates labore rerum aspernatur\n illum esse maxime laudantium? Tempore perspiciatis perferendis ea dolorem et quasi eos illo beatae\n consectetur maxime, enim ducimus corrupti, accusantium quisquam rem dolorum itaque iste velit. Amet\n similique accusamus doloribus expedita modi a architecto accusantium labore unde non, dolore totam\n quaerat sit laboriosam quae ullam impedit, pariatur repudiandae quisquam debitis repellendus nihil.\n Cumque blanditiis ut recusandae illum! Maiores eveniet nulla exercitationem natus delectus est minus\n a architecto pariatur molestias quo nihil maxime quasi facere magnam neque dolorem ad, doloribus\n hic! Qui corporis perspiciatis dolores rem minima tenetur. Fugit ipsa consectetur ad reiciendis,\n quia iste, sapiente rerum exercitationem reprehenderit laborum eligendi cumque? Quia porro modi\n repudiandae nostrum accusamus! Corporis eum fugit nihil facilis placeat ab est obcaecati\n consequuntur qui atque tempore soluta aliquid saepe ducimus, at sed modi illo ipsa numquam ratione\n vero eos reprehenderit! Sapiente nesciunt consequatur labore iste quas possimus rem cumque, fugit\n laborum repellendus nisi adipisci officia temporibus quaerat! Beatae doloribus veritatis at, maiores\n suscipit debitis reiciendis cum impedit non aut modi iste? Placeat illo quisquam assumenda esse cum\n ipsum quasi perspiciatis voluptatem rerum itaque, similique quidem molestias exercitationem ullam\n eum amet tempore dolor aliquid unde deserunt dolore excepturi. Aut dolore rerum sequi nihil soluta\n eum expedita consequatur aliquid consequuntur saepe esse necessitatibus repudiandae, natus, officia\n enim odit rem nobis adipisci, voluptates autem dolor blanditiis ipsam animi a. Illo accusantium iure\n qui aperiam commodi, quidem, dolorem error eum animi, id nam? Corporis, non adipisci!\n </div>\n </div>\n </div>\n );\n};"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"label": "HTML",
|
|
30
|
+
"language": "html",
|
|
31
|
+
"code": "<div>\n <div class=\"text-medium text-size-14\">Header 2 is not visible</div>\n <hr>\n <div class=\"height-300 overflow-scroll\">\n <div class=\"h1\">Header</div>\n <div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde incidunt, nam id itaque error dicta? Numquam earum iusto optio officia, molestias debitis illum facilis nemo asperiores eaque voluptates modi? Dicta mollitia fugit doloremque vitae, dolores sequi fuga quas vel incidunt animi architecto dignissimos amet in quam praesentium corrupti voluptate dolorem impedit numquam aut cupiditate nulla! Nisi dolore dicta, cumque illum tempora enim dolores eum quis itaque nostrum architecto vel cum officiis aperiam qui exercitationem voluptatibus. Veritatis unde doloribus dolorem architecto, eum reprehenderit possimus similique eius cum obcaecati totam placeat. Delectus nulla, quae temporibus omnis assumenda autem ad quibusdam facilis aspernatur inventore nobis. Vitae architecto, unde consequuntur velit consequatur dicta mollitia, fuga iure hic accusamus blanditiis. Dignissimos, tenetur amet adipisci nostrum perferendis ad rerum accusamus distinctio repellendus eius, quisquam repellat nesciunt, consequatur culpa neque? Inventore vitae laborum aperiam ullam dolorem officiis ipsum aliquid doloribus pariatur, commodi iure illum soluta delectus, architecto ratione maiores accusamus. Provident quia sequi dolorum asperiores necessitatibus consequatur perspiciatis at a, inventore, deserunt corporis recusandae earum vero voluptas saepe pariatur, libero illo. Numquam facilis magnam exercitationem ipsam libero quidem minima dolores perferendis eveniet impedit eos, nesciunt unde velit facere itaque eum quasi laboriosam veritatis aliquid tenetur. Blanditiis exercitationem laborum, optio nulla minima libero sed doloremque soluta, dignissimos tempora rerum id nostrum iusto eveniet illo corrupti dicta. Non fuga exercitationem sit dignissimos voluptatibus cumque nobis iste asperiores illum fugit</div>\n <div class=\"h1\">Header 2 </div>\n <div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde incidunt, nam id itaque error dicta? Numquam earum iusto optio officia, molestias debitis illum facilis nemo asperiores eaque voluptates modi? Dicta mollitia fugit doloremque vitae, dolores sequi fuga quas vel incidunt animi architecto dignissimos amet in quam praesentium corrupti voluptate dolorem impedit numquam aut cupiditate nulla! Nisi dolore dicta, cumque illum tempora enim dolores eum quis itaque nostrum architecto vel cum officiis aperiam qui exercitationem voluptatibus. Veritatis unde doloribus dolorem architecto, eum reprehenderit possimus similique eius cum obcaecati totam placeat. Delectus nulla, quae temporibus omnis assumenda autem ad quibusdam facilis aspernatur inventore nobis. Vitae architecto, unde consequuntur velit consequatur dicta mollitia, fuga iure hic accusamus blanditiis. Dignissimos, tenetur amet adipisci nostrum perferendis ad rerum accusamus distinctio repellendus eius, quisquam repellat nesciunt, consequatur culpa neque? Inventore vitae laborum aperiam ullam dolorem officiis ipsum aliquid doloribus pariatur, commodi iure illum soluta delectus, architecto ratione maiores accusamus. Provident quia sequi dolorum asperiores necessitatibus consequatur perspiciatis at a, inventore, deserunt corporis recusandae earum vero voluptas saepe pariatur, libero illo. Numquam facilis magnam exercitationem ipsam libero quidem minima dolores perferendis eveniet impedit eos, nesciunt unde velit facere itaque eum quasi laboriosam veritatis aliquid tenetur. Blanditiis exercitationem laborum, optio nulla minima libero sed doloremque soluta, dignissimos tempora rerum id nostrum iusto eveniet illo corrupti dicta. Non fuga exercitationem sit dignissimos voluptatibus cumque nobis iste asperiores illum fugit veritatis fugiat quia voluptates cupiditate vel rerum eligendi facere sint nostrum quam, maiores dolorem repellat voluptas! Magnam ullam quis quas aut consequuntur quo doloremque, earum sint soluta vero iste quasi voluptates labore rerum aspernatur illum esse maxime laudantium? Tempore perspiciatis perferendis ea dolorem et quasi eos illo beatae consectetur maxime, enim ducimus corrupti, accusantium quisquam rem dolorum itaque iste velit. Amet similique accusamus doloribus expedita modi a architecto accusantium labore unde non, dolore totam quaerat sit laboriosam quae ullam impedit, pariatur repudiandae quisquam debitis repellendus nihil. Cumque blanditiis ut recusandae illum! Maiores eveniet nulla exercitationem natus delectus est minus a architecto pariatur molestias quo nihil maxime quasi facere magnam neque dolorem ad, doloribus hic! Qui corporis perspiciatis dolores rem minima tenetur. Fugit ipsa consectetur ad reiciendis, quia iste, sapiente rerum exercitationem reprehenderit laborum eligendi cumque? Quia porro modi repudiandae nostrum accusamus! Corporis eum fugit nihil facilis placeat ab est obcaecati consequuntur qui atque tempore soluta aliquid saepe ducimus, at sed modi illo ipsa numquam ratione vero eos reprehenderit! Sapiente nesciunt consequatur labore iste quas possimus rem cumque, fugit laborum repellendus nisi adipisci officia temporibus quaerat! Beatae doloribus veritatis at, maiores suscipit debitis reiciendis cum impedit non aut modi iste? Placeat illo quisquam assumenda esse cum ipsum quasi perspiciatis voluptatem rerum itaque, similique quidem molestias exercitationem ullam eum amet tempore dolor aliquid unde deserunt dolore excepturi. Aut dolore rerum sequi nihil soluta eum expedita consequatur aliquid consequuntur saepe esse necessitatibus repudiandae, natus, officia enim odit rem nobis adipisci, voluptates autem dolor blanditiis ipsam animi a. Illo accusantium iure qui aperiam commodi, quidem, dolorem error eum animi, id nam? Corporis, non adipisci!</div>\n </div>\n</div>"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"label": "Props",
|
|
35
|
+
"language": "json",
|
|
36
|
+
"code": null,
|
|
37
|
+
"props": [
|
|
38
|
+
{
|
|
39
|
+
"heading": null,
|
|
40
|
+
"rows": [
|
|
41
|
+
{
|
|
42
|
+
"name": "ref",
|
|
43
|
+
"type": "React.MutableRefObject<HTMLElement>",
|
|
44
|
+
"default": "",
|
|
45
|
+
"description": "The react ref to the element to observe visibility for."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "options",
|
|
49
|
+
"type": "Object",
|
|
50
|
+
"default": "{ rootMargin: \"0px\" }",
|
|
51
|
+
"description": "Additional IntersectionObserver options. See https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"see_also": []
|
|
63
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"captured_at": "2025-11-21T12:08:44.352Z",
|
|
4
|
+
"source": "https://uikit.developers.rio.cloud/#utilities/usePostMessage",
|
|
5
|
+
"category": "Utilities",
|
|
6
|
+
"section": "Browser & device hooks",
|
|
7
|
+
"slug": "utilities/usepostmessage",
|
|
8
|
+
"version": "v1.13.2",
|
|
9
|
+
"hash_algorithm": "sha256",
|
|
10
|
+
"hash": "b4be9019abc63ba95b485d4762a0fedaf0ded3bf05a9f3c6886903c410c070c5"
|
|
11
|
+
},
|
|
12
|
+
"title": "usePostMessage",
|
|
13
|
+
"lead": "The usePostMessage hook allows to easily exchange events and data between the parent windown and embedded iframes.",
|
|
14
|
+
"content": [
|
|
15
|
+
{
|
|
16
|
+
"heading": "usePostMessage",
|
|
17
|
+
"body": "",
|
|
18
|
+
"examples": [
|
|
19
|
+
{
|
|
20
|
+
"caption": "Example 1",
|
|
21
|
+
"rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div class=\"display-flex gap-25\"><div class=\"border rounded padding-20 height-200\"><div class=\"text-medium\">Parent window</div><div class=\"btn-toolbar margin-top-20\"><button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Send message to widget iframe</button></div><div class=\"margin-top-20\"><label>Message from widget:</label><div>-</div></div></div><div class=\"iframe-wrapper\"><iframe title=\"iframe\" id=\"postMessageExample\" src=\"/#postMessageExample\" class=\"unstyled width-100pct\" style=\"width: 1px; min-width: 100%; overflow: hidden;\" scrolling=\"no\"></iframe></div></div></div>",
|
|
22
|
+
"tabs": [
|
|
23
|
+
{
|
|
24
|
+
"label": "React",
|
|
25
|
+
"language": "tsx",
|
|
26
|
+
"code": "import { useState } from 'react';\nimport IframeResizer from 'iframe-resizer-react';\n\nimport Button from '@rio-cloud/rio-uikit/Button';\nimport usePostMessage, { type RemoteAction } from '@rio-cloud/rio-uikit/usePostMessage';\n\nconst PREFIX = 'EVENT';\nconst EVENT_TYPE = `${PREFIX}_POST_MESSAGE_EXAMPLE`;\n\nexport default () => {\n const [messageFromWidget, setMessageFromWidget] = useState('-');\n\n const { sendMessageToWidget } = usePostMessage(PREFIX, (remoteAction: RemoteAction) => {\n if (remoteAction.type === EVENT_TYPE) {\n setMessageFromWidget(remoteAction.payload);\n }\n });\n\n const handleSentToWidget = () => {\n sendMessageToWidget(\n {\n type: EVENT_TYPE,\n payload: 'Hello from the parent',\n },\n document.getElementById('postMessageExample') as HTMLIFrameElement\n );\n };\n\n return (\n <div className='display-flex gap-25'>\n <div className='border rounded padding-20 height-200'>\n <div className='text-medium'>Parent window</div>\n <div className='btn-toolbar margin-top-20'>\n <Button onClick={handleSentToWidget}>Send message to widget iframe</Button>\n </div>\n <div className='margin-top-20'>\n <label>Message from widget:</label>\n <div>{messageFromWidget}</div>\n </div>\n </div>\n <div className='iframe-wrapper'>\n <IframeResizer\n id='postMessageExample'\n src='/#postMessageExample'\n className='unstyled width-100pct'\n style={{ width: '1px', minWidth: '100%' }}\n />\n </div>\n </div>\n );\n};"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"label": "HTML",
|
|
30
|
+
"language": "html",
|
|
31
|
+
"code": "<div class=\"display-flex gap-25\">\n <div class=\"border rounded padding-20 height-200\">\n <div class=\"text-medium\">Parent window</div>\n <div class=\"btn-toolbar margin-top-20\">\n <button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Send message to widget iframe</button>\n </div>\n <div class=\"margin-top-20\">\n <label>Message from widget:</label>\n <div>-</div>\n </div>\n </div>\n <div class=\"iframe-wrapper\">\n <iframe title=\"iframe\" id=\"postMessageExample\" src=\"/#postMessageExample\" class=\"unstyled width-100pct\" style=\"width: 1px; min-width: 100%; overflow: hidden; height: 200px;\" scrolling=\"no\">\n </iframe>\n </div>\n</div>"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"label": "Props",
|
|
35
|
+
"language": "json",
|
|
36
|
+
"code": null,
|
|
37
|
+
"props": [
|
|
38
|
+
{
|
|
39
|
+
"heading": null,
|
|
40
|
+
"rows": [
|
|
41
|
+
{
|
|
42
|
+
"name": "messagePrefix",
|
|
43
|
+
"type": "string",
|
|
44
|
+
"default": "",
|
|
45
|
+
"description": "A custom prefix to limit the event listener for these events."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "onReceiveMessage",
|
|
49
|
+
"type": "(eventData: any) => void",
|
|
50
|
+
"default": "",
|
|
51
|
+
"description": "A callback function triggered when a message is received."
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"heading": "Returns",
|
|
57
|
+
"rows": [
|
|
58
|
+
{
|
|
59
|
+
"name": "sendMessageToParent",
|
|
60
|
+
"type": "(message: RemoteAction) => void",
|
|
61
|
+
"default": "",
|
|
62
|
+
"description": "Function to send an event with payload to the parent window."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "sendMessageToWidget",
|
|
66
|
+
"type": "(message: RemoteAction, targetFrames: HTMLIFrameElement[])",
|
|
67
|
+
"default": "",
|
|
68
|
+
"description": "Function to send an event with payload to a list of iframes."
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"see_also": []
|
|
80
|
+
}
|