@iress-oss/ids-mcp-server 5.15.0 → 5.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/generated/docs/components_components-alert-docs.md +492 -0
  2. package/generated/docs/components_components-autocomplete-docs.md +3485 -0
  3. package/generated/docs/{components-autocomplete-recipes-docs.md → components_components-autocomplete-recipes-docs.md} +32 -14
  4. package/generated/docs/{components-badge-docs.md → components_components-badge-docs.md} +222 -30
  5. package/generated/docs/components_components-button-docs.md +2078 -0
  6. package/generated/docs/components_components-button-recipes-docs.md +37 -0
  7. package/generated/docs/components_components-buttongroup-docs.md +1045 -0
  8. package/generated/docs/components_components-card-docs.md +2276 -0
  9. package/generated/docs/{components-card-recipes-docs.md → components_components-card-recipes-docs.md} +131 -14
  10. package/generated/docs/components_components-checkbox-docs.md +1054 -0
  11. package/generated/docs/{components-checkboxgroup-docs.md → components_components-checkboxgroup-docs.md} +1000 -81
  12. package/generated/docs/{components-checkboxgroup-recipes-docs.md → components_components-checkboxgroup-recipes-docs.md} +101 -11
  13. package/generated/docs/{components-col-docs.md → components_components-col-docs.md} +331 -58
  14. package/generated/docs/components_components-combobox-docs.md +3767 -0
  15. package/generated/docs/{components-container-docs.md → components_components-container-docs.md} +61 -24
  16. package/generated/docs/{components-divider-docs.md → components_components-divider-docs.md} +83 -24
  17. package/generated/docs/{components-expander-docs.md → components_components-expander-docs.md} +264 -33
  18. package/generated/docs/{components-field-docs.md → components_components-field-docs.md} +814 -120
  19. package/generated/docs/components_components-filter-docs.md +4080 -0
  20. package/generated/docs/{components-form-docs.md → components_components-form-docs.md} +1515 -353
  21. package/generated/docs/{components-form-recipes-docs.md → components_components-form-recipes-docs.md} +170 -54
  22. package/generated/docs/components_components-hide-docs.md +293 -0
  23. package/generated/docs/components_components-icon-docs.md +1337 -0
  24. package/generated/docs/{components-inline-docs.md → components_components-inline-docs.md} +462 -42
  25. package/generated/docs/components_components-input-docs.md +1468 -0
  26. package/generated/docs/components_components-input-recipes-docs.md +367 -0
  27. package/generated/docs/components_components-inputcurrency-docs.md +432 -0
  28. package/generated/docs/{components-inputcurrency-recipes-docs.md → components_components-inputcurrency-recipes-docs.md} +110 -17
  29. package/generated/docs/components_components-label-docs.md +323 -0
  30. package/generated/docs/components_components-menu-docs.md +2345 -0
  31. package/generated/docs/components_components-menu-menuitem-docs.md +633 -0
  32. package/generated/docs/{components-modal-docs.md → components_components-modal-docs.md} +1625 -232
  33. package/generated/docs/components_components-navbar-docs.md +1847 -0
  34. package/generated/docs/{components-navbar-recipes-docs.md → components_components-navbar-recipes-docs.md} +697 -39
  35. package/generated/docs/{components-panel-docs.md → components_components-panel-docs.md} +754 -57
  36. package/generated/docs/components_components-placeholder-docs.md +92 -0
  37. package/generated/docs/components_components-popover-docs.md +1641 -0
  38. package/generated/docs/{components-popover-recipes-docs.md → components_components-popover-recipes-docs.md} +347 -17
  39. package/generated/docs/components_components-progress-docs.md +115 -0
  40. package/generated/docs/{components-provider-docs.md → components_components-provider-docs.md} +41 -32
  41. package/generated/docs/components_components-radio-docs.md +491 -0
  42. package/generated/docs/{components-radiogroup-docs.md → components_components-radiogroup-docs.md} +943 -75
  43. package/generated/docs/components_components-readonly-docs.md +263 -0
  44. package/generated/docs/components_components-richselect-docs.md +6497 -0
  45. package/generated/docs/{components-row-docs.md → components_components-row-docs.md} +353 -43
  46. package/generated/docs/{components-select-docs.md → components_components-select-docs.md} +719 -61
  47. package/generated/docs/components_components-skeleton-docs.md +480 -0
  48. package/generated/docs/{components-skeleton-recipes-docs.md → components_components-skeleton-recipes-docs.md} +50 -10
  49. package/generated/docs/{components-skiplink-docs.md → components_components-skiplink-docs.md} +53 -14
  50. package/generated/docs/components_components-slideout-docs.md +2262 -0
  51. package/generated/docs/components_components-slider-docs.md +1276 -0
  52. package/generated/docs/components_components-spinner-docs.md +82 -0
  53. package/generated/docs/{components-stack-docs.md → components_components-stack-docs.md} +223 -40
  54. package/generated/docs/components_components-table-docs.md +3651 -0
  55. package/generated/docs/components_components-tabset-docs.md +772 -0
  56. package/generated/docs/components_components-tabset-tab-docs.md +262 -0
  57. package/generated/docs/components_components-tag-docs.md +259 -0
  58. package/generated/docs/{components-text-docs.md → components_components-text-docs.md} +491 -51
  59. package/generated/docs/{components-toaster-docs.md → components_components-toaster-docs.md} +181 -79
  60. package/generated/docs/components_components-toaster-toast-docs.md +634 -0
  61. package/generated/docs/components_components-toggle-docs.md +461 -0
  62. package/generated/docs/{components-tooltip-docs.md → components_components-tooltip-docs.md} +286 -41
  63. package/generated/docs/{components-validationmessage-docs.md → components_components-validationmessage-docs.md} +230 -61
  64. package/generated/docs/components_contact-us-docs.md +12 -0
  65. package/generated/docs/{foundations-accessibility-docs.md → components_foundations-accessibility-docs.md} +11 -21
  66. package/generated/docs/{foundations-colours-docs.md → components_foundations-colour-030-colours.md} +8 -15
  67. package/generated/docs/{foundations-consistency-docs.md → components_foundations-consistency-docs.md} +12 -20
  68. package/generated/docs/{foundations-content-docs.md → components_foundations-content-docs.md} +6 -11
  69. package/generated/docs/components_foundations-introduction-docs.md +15 -0
  70. package/generated/docs/{foundations-principles-docs.md → components_foundations-principles-docs.md} +14 -24
  71. package/generated/docs/components_foundations-typography-docs.md +608 -0
  72. package/generated/docs/{foundations-user-experience-docs.md → components_foundations-user-experience-docs.md} +16 -26
  73. package/generated/docs/{foundations-visual-design-docs.md → components_foundations-visual-design-docs.md} +10 -17
  74. package/generated/docs/{frequently-asked-questions-docs.md → components_frequently-asked-questions-docs.md} +14 -23
  75. package/generated/docs/components_get-started-develop-docs.md +84 -0
  76. package/generated/docs/components_get-started-using-storybook-docs.md +55 -0
  77. package/generated/docs/components_introduction-docs.md +15 -0
  78. package/generated/docs/{patterns-loading-docs.md → components_patterns-loading-docs.md} +711 -143
  79. package/generated/docs/components_resources-changelog-docs.md +4 -0
  80. package/generated/docs/{resources-code-katas-docs.md → components_resources-code-katas-docs.md} +5 -9
  81. package/generated/docs/{resources-migration-guides-from-v4-to-v5-docs.md → components_resources-migration-guides-from-v4-to-v5-docs.md} +54 -239
  82. package/generated/docs/{versions-docs.md → components_versions-docs.md} +5 -8
  83. package/generated/docs/guidelines.md +484 -200
  84. package/generated/docs/introduction-docs.md +19 -30
  85. package/package.json +41 -45
  86. package/generated/docs/components-alert-docs.md +0 -130
  87. package/generated/docs/components-autocomplete-docs.md +0 -754
  88. package/generated/docs/components-button-docs.md +0 -362
  89. package/generated/docs/components-button-recipes-docs.md +0 -76
  90. package/generated/docs/components-buttongroup-docs.md +0 -310
  91. package/generated/docs/components-card-docs.md +0 -494
  92. package/generated/docs/components-checkbox-docs.md +0 -193
  93. package/generated/docs/components-combobox-docs.md +0 -1016
  94. package/generated/docs/components-filter-docs.md +0 -1109
  95. package/generated/docs/components-hide-docs.md +0 -265
  96. package/generated/docs/components-icon-docs.md +0 -553
  97. package/generated/docs/components-input-docs.md +0 -335
  98. package/generated/docs/components-input-recipes-docs.md +0 -140
  99. package/generated/docs/components-inputcurrency-docs.md +0 -157
  100. package/generated/docs/components-label-docs.md +0 -135
  101. package/generated/docs/components-menu-docs.md +0 -704
  102. package/generated/docs/components-menu-menuitem-docs.md +0 -193
  103. package/generated/docs/components-navbar-docs.md +0 -291
  104. package/generated/docs/components-placeholder-docs.md +0 -27
  105. package/generated/docs/components-popover-docs.md +0 -464
  106. package/generated/docs/components-progress-docs.md +0 -104
  107. package/generated/docs/components-radio-docs.md +0 -107
  108. package/generated/docs/components-readonly-docs.md +0 -89
  109. package/generated/docs/components-richselect-docs.md +0 -2433
  110. package/generated/docs/components-skeleton-docs.md +0 -214
  111. package/generated/docs/components-slideout-docs.md +0 -538
  112. package/generated/docs/components-slider-docs.md +0 -346
  113. package/generated/docs/components-spinner-docs.md +0 -59
  114. package/generated/docs/components-table-ag-grid-docs.md +0 -1074
  115. package/generated/docs/components-table-docs.md +0 -1305
  116. package/generated/docs/components-tabset-docs.md +0 -341
  117. package/generated/docs/components-tabset-tab-docs.md +0 -86
  118. package/generated/docs/components-tag-docs.md +0 -115
  119. package/generated/docs/components-toaster-toast-docs.md +0 -157
  120. package/generated/docs/components-toggle-docs.md +0 -158
  121. package/generated/docs/contact-us-docs.md +0 -27
  122. package/generated/docs/extensions-editor-docs.md +0 -288
  123. package/generated/docs/extensions-editor-recipes-docs.md +0 -39
  124. package/generated/docs/foundations-introduction-docs.md +0 -17
  125. package/generated/docs/foundations-typography-docs.md +0 -191
  126. package/generated/docs/get-started-develop-docs.md +0 -209
  127. package/generated/docs/get-started-using-storybook-docs.md +0 -68
  128. package/generated/docs/resources-changelog-docs.md +0 -6
  129. package/generated/docs/themes-available-themes-docs.md +0 -66
  130. package/generated/docs/themes-introduction-docs.md +0 -121
  131. package/generated/docs/themes-tokens-docs.md +0 -1200
  132. /package/{LICENSE.txt → LICENSE} +0 -0
@@ -1,538 +0,0 @@
1
- [](#slideout)Slideout
2
- =====================
3
-
4
- Overview
5
- --------
6
-
7
- Slideouts are used to show additional information or to allow users to perform secondary tasks without leaving their normal workflow.
8
-
9
- Read more
10
-
11
- [](#use-a-slideout-when)Use a slideout when:
12
- --------------------------------------------
13
-
14
- * Providing supplemental tasks that require the underlying page to still be visible
15
- * Providing non-essential information related to the underlying page
16
-
17
- Show slideout
18
-
19
- Hide code
20
-
21
- \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
22
-
23
- const Story \= () \=> {
24
- const { showSlideout } \= useSlideout();
25
- const SLIDEOUT\_ID \= 'storybook-slideout';
26
- return (
27
- <\>
28
- <IressButton onClick\={() \=> showSlideout(SLIDEOUT\_ID)}\>
29
- Show slideout </IressButton\>
30
- <IressSlideout
31
- footer\="Footer slot"
32
- id\="storybook-slideout"
33
- \>
34
- Slideout content </IressSlideout\>
35
- </\>
36
- );
37
- };
38
-
39
- export const App \= () \=> (
40
- <IressSlideoutProvider\>
41
- <Story />
42
- </IressSlideoutProvider\>
43
- );
44
-
45
- Copy
46
-
47
- [](#controlling-the-slideout)Controlling the slideout
48
- -----------------------------------------------------
49
-
50
- ### [](#using-the-show-property)Using the `show` property
51
-
52
- You can use state to control the slideout by setting the `show` property to `true` or `false`. To sync your state with the slideout, you can use the `onShowChange` prop, which is normally passed the set function from `useState`.
53
-
54
- Show slideout using state
55
-
56
- Hide code
57
-
58
- \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
59
-
60
- import { IressButton, IressSlideout, IressSlideoutProps } from '@iress-oss/ids-components';
61
- import { useState } from 'react';
62
- export const SlideoutUsingState \= () \=> {
63
- const \[show, setShow\] \= useState(false);
64
- return (
65
- <\>
66
- <IressButton onClick\={() \=> setShow(true)}\>
67
- Show slideout using state </IressButton\>
68
- <IressSlideout
69
- {...{
70
- children: 'This slideout was opened via state',
71
- }}
72
- show\={show}
73
- onShowChange\={setShow}
74
- footer\={<IressButton onClick\={() \=> setShow(false)}\>Close</IressButton\>}
75
- />
76
- </\>
77
- );
78
- };
79
-
80
- Copy
81
-
82
- ### [](#using-the-iressslideoutprovider)Using the `IressSlideoutProvider`
83
-
84
- You can use the `IressSlideoutProvider` to open and close slideout from anywhere in your application, as long as the slideout has a unique `id`. In this case you would use the `useSlideout` hook to open and close the slideout.
85
-
86
- To use, wrap your `<App/>` or the component that you want to use the `useSlideout` hook with `<IressSlideoutProvider />`.
87
-
88
- Show slideout using provider
89
-
90
- Hide code
91
-
92
- \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
93
-
94
- const SLIDEOUT\_ID \= 'storybook-slideout';
95
- export const App \= (slideoutProps: IressSlideoutProps) \=> (
96
- <IressSlideoutProvider\>
97
- <SlideoutWithTrigger {...slideoutProps} />
98
- </IressSlideoutProvider\>
99
- );
100
- const SlideoutWithTrigger \= ({
101
- id \= SLIDEOUT\_ID,
102
- ...slideoutProps
103
- }: IressSlideoutProps) \=> {
104
- const { showSlideout } \= useSlideout();
105
- return (
106
- <\>
107
- <IressButton onClick\={() \=> showSlideout(id)}\>
108
- Show slideout using provider </IressButton\>
109
- <IressSlideout
110
- {...slideoutProps}
111
- id\={id}
112
- footer\={
113
- <IressButton onClick\={() \=> showSlideout(id, false)}\>
114
- Close slideout </IressButton\>
115
- }
116
- \>
117
- {slideoutProps.children ?? 'Slideout content'}
118
- </IressSlideout\>
119
- </\>
120
- );
121
- };
122
-
123
- Copy
124
-
125
- [](#examples)Examples
126
- ---------------------
127
-
128
- ### [](#modes)Modes
129
-
130
- Slideouts can be used in two modes - `overlay` and `push`. In `overlay` mode the slideout sits on top of the content, useful if space is at a premium. In `push` mode the slideout will push the page container to make it smaller; this means you can see all of the page content when the page is available. Overlay is the default.
131
-
132
- Overlay slideoutPush slideout
133
-
134
- Hide code
135
-
136
- \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
137
-
138
- const Story \= () \=> {
139
- const { showSlideout } \= useSlideout();
140
- const SLIDEOUT\_ID \= 'storybook-slideout';
141
- return (
142
- <IressInline gutter\="md"\>
143
- <IressButton onClick\={() \=> showSlideout("overlay")}\>
144
- Overlay slideout </IressButton\>
145
- <IressSlideout
146
- footer\=""
147
- id\="overlay"
148
- mode\="overlay"
149
- \>
150
- <h2\>
151
- Overlay </h2\>
152
- For most situations{' '}
153
- <code\>
154
- overlay </code\>
155
- {' '}will be what you need, which is why this is the default behaviour. You do not need to specify the mode if you want your slideout to sit on top of the page.
156
- </IressSlideout\>
157
- <IressButton onClick\={() \=> showSlideout("push")}\>
158
- Push slideout </IressButton\>
159
- <IressSlideout
160
- eleToPush\="#storybook-docs"
161
- footer\=""
162
- id\="push"
163
- mode\="push"
164
- \>
165
- <IressText\>
166
- <h2\>
167
- Push </h2\>
168
- <p\>
169
- If you have a data-heavy screen where you need all of the data to be visible when the slideout is open, use{' '}
170
- <code\>
171
- push </code\>
172
- . To allow push to work you will need to supply the ID of the element that needs to be pushed via the{' '}
173
- <code\>
174
- eleToPush </code\>
175
- {' '}prop. If the ID is not supplied, or the element cannot be found, the slideout will revert to{' '}
176
- <code\>
177
- overlay </code\>
178
- {' '}behaviour.
179
- </p\>
180
- <p\>
181
- {\`Be aware though that push will only work on larger screens (>1200px); on smaller screens the slideout will overlay the content.\`}
182
- </p\>
183
- </IressText\>
184
- </IressSlideout\>
185
- </IressInline\>
186
- );
187
- };
188
-
189
- export const App \= () \=> (
190
- <IressSlideoutProvider\>
191
- <Story />
192
- </IressSlideoutProvider\>
193
- );
194
-
195
- Copy
196
-
197
- ### [](#position)Position
198
-
199
- Slideouts can appear from the left or the right of the screen. The default is right, but you can use the `position` prop to set it to slide in from the left.
200
-
201
- rightleft
202
-
203
- Hide code
204
-
205
- \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
206
-
207
- const Slideouts \= () \=> {
208
- const { showSlideout } \= useSlideout();
209
- return (
210
- <IressInline gutter\="md"\>
211
- {SLIDEOUT\_POSITIONS.map((position) \=> (
212
- <\>
213
- <IressButton onClick\={() \=> showSlideout(position)}\>
214
- {position}
215
- </IressButton\>
216
- <IressSlideout id\={position} position\={position}\>
217
- Slideout opened on the {position}
218
- </IressSlideout\>
219
- </\>
220
- ))}
221
- </IressInline\>
222
- );
223
- };
224
- export const SlideoutPositions \= () \=> (
225
- <IressSlideoutProvider\>
226
- <Slideouts />
227
- </IressSlideoutProvider\>
228
- );
229
-
230
- Copy
231
-
232
- ### [](#backdrop)Backdrop
233
-
234
- Slideouts can be used with or without a backdrop. Using a backdrop places more emphasis on the slideout, but prevents users from accessing content on the rest of the page. If your users need to interact with page content (for example to copy information), don't use a backdrop.
235
-
236
- The slideout backdrop works in the same way as the modal backdrop; clicking on the backdrop will close the slideout.
237
-
238
- Show slideout with backdrop
239
-
240
- Hide code
241
-
242
- \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
243
-
244
- const Story \= () \=> {
245
- const { showSlideout } \= useSlideout();
246
- const SLIDEOUT\_ID \= 'storybook-slideout';
247
- return (
248
- <\>
249
- <IressButton onClick\={() \=> showSlideout(SLIDEOUT\_ID)}\>
250
- Show slideout with backdrop </IressButton\>
251
- <IressSlideout
252
- backdrop
253
- footer\="Footer slot"
254
- id\="storybook-slideout"
255
- \>
256
- Slideout content </IressSlideout\>
257
- </\>
258
- );
259
- };
260
-
261
- export const App \= () \=> (
262
- <IressSlideoutProvider\>
263
- <Story />
264
- </IressSlideoutProvider\>
265
- );
266
-
267
- Copy
268
-
269
- ### [](#size)Size
270
-
271
- The width of your slideout can be set using the `size` prop. By default it is `sm`, but it can be made larger by setting `size` to `md` or `lg`.
272
-
273
- smmdlg
274
-
275
- Hide code
276
-
277
- \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
278
-
279
- const Slideouts \= () \=> {
280
- const { showSlideout } \= useSlideout();
281
- return (
282
- <IressInline gutter\="md"\>
283
- {SLIDEOUT\_SIZES.map((size) \=> (
284
- <\>
285
- <IressButton onClick\={() \=> showSlideout(size)}\>{size}</IressButton\>
286
- <IressSlideout id\={size} size\={size}\>
287
- {size} slideout </IressSlideout\>
288
- </\>
289
- ))}
290
- </IressInline\>
291
- );
292
- };
293
- export const SlideoutSizes \= () \=> (
294
- <IressSlideoutProvider\>
295
- <Slideouts />
296
- </IressSlideoutProvider\>
297
- );
298
-
299
- Copy
300
-
301
- ### [](#padding)Padding
302
-
303
- Slideout padding follows the panel padding convention. It can be set to either `none`, `sm`, `md` or `lg`, and defaults to `md` if not set.
304
-
305
- nonesmmdlg
306
-
307
- Hide code
308
-
309
- \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
310
-
311
- const Slideouts \= () \=> {
312
- const { showSlideout } \= useSlideout();
313
- return (
314
- <IressInline gutter\="md"\>
315
- {PADDING\_SIZES.map((padding) \=> (
316
- <\>
317
- <IressButton onClick\={() \=> showSlideout(padding)}\>
318
- {padding}
319
- </IressButton\>
320
- <IressSlideout id\={padding} padding\={padding}\>
321
- Slideout opened with {padding} padding </IressSlideout\>
322
- </\>
323
- ))}
324
- </IressInline\>
325
- );
326
- };
327
- export const SlideoutPaddings \= () \=> (
328
- <IressSlideoutProvider\>
329
- <Slideouts />
330
- </IressSlideoutProvider\>
331
- );
332
-
333
- Copy
334
-
335
- ### [](#footer)Footer
336
-
337
- The `footer` prop is used to set content that should appear underneath the main content. Usually used for extra controls like buttons etc.
338
-
339
- Show slideout with footer
340
-
341
- Hide code
342
-
343
- \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
344
-
345
- const Story \= () \=> {
346
- const { showSlideout } \= useSlideout();
347
- const SLIDEOUT\_ID \= 'storybook-slideout';
348
- return (
349
- <\>
350
- <IressButton onClick\={() \=> showSlideout(SLIDEOUT\_ID)}\>
351
- Show slideout with footer </IressButton\>
352
- <IressSlideout
353
- footer\={<IressButton\>Footer button</IressButton\>}
354
- id\="storybook-slideout"
355
- \>
356
- Slideout content </IressSlideout\>
357
- </\>
358
- );
359
- };
360
-
361
- export const App \= () \=> (
362
- <IressSlideoutProvider\>
363
- <Story />
364
- </IressSlideoutProvider\>
365
- );
366
-
367
- Copy
368
-
369
- ### [](#absolute-position-slideouts)Absolute position slideouts
370
-
371
- By default, slideout is set to `position: fixed` which means it will appear from the edge of the browser window. By setting the `--iress-position` css variable to `absolute` the slideout can appear from the edge of its closest relative positioned container. You will also need to set the `container` prop to the a reference of the relatively positioned container, so it can appear in the correct place in the DOM.
372
-
373
- If you're using an absolutely positioned slideout you may also want to change the vertical and horizontal positioning. By default this will be the top left or top right of the container, but you can use `--iress-offset-top` and `--iress-initial-offset` to adjust that if you need to.
374
-
375
- Show slideout
376
-
377
- ### Absolute slideout
378
-
379
- Almost before was mighty present had him time. But scorching counsel if mine dote men have or, one yet from pangs and for and despair there. If below nor but the name these deemed oh..
380
-
381
- Hide code
382
-
383
- \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
384
-
385
- import {
386
- IressStack,
387
- IressButton,
388
- IressText,
389
- IressSlideout,
390
- IressSlideoutProps,
391
- } from '@iress-oss/ids-components';
392
- import { useRef, useState } from 'react';
393
- export const AbsolutePositionSlideout \= () \=> {
394
- const \[show, setShow\] \= useState(false);
395
- const containerRef \= useRef<HTMLDivElement | null\>(null);
396
- return (
397
- <IressStack gutter\="md"\>
398
- <IressButton onClick\={() \=> setShow(true)}\>Show slideout</IressButton\>
399
- <div
400
- ref\={containerRef}
401
- style\={{
402
- height: '300px',
403
- border:
404
- '1px solid var(--iress-g-border-color, var(--iress-default-border-color))',
405
- padding: '1rem',
406
- overflow: 'hidden',
407
- position: 'relative',
408
- }}
409
- \>
410
- <IressText id\="contents"\>
411
- <h3\>Absolute slideout</h3\>
412
- <p\>
413
- Almost before was mighty present had him time. But scorching counsel if mine dote men have or, one yet from pangs and for and despair there. If below nor but the name these deemed oh.. </p\>
414
- </IressText\>
415
- <IressSlideout
416
- {...{
417
- children: 'Slideout content',
418
- footer: 'Footer slot',
419
- id: 'storybook-slideout',
420
- eleToPush: '#contents',
421
- position: 'left',
422
- mode: 'push',
423
- }}
424
- container\={containerRef}
425
- show\={show}
426
- onShowChange\={setShow}
427
- style\={
428
- {
429
- '--iress-position': 'absolute',
430
- } as never
431
- }
432
- />
433
- </div\>
434
- </IressStack\>
435
- );
436
- };
437
-
438
- Copy
439
-
440
- [](#migrating-to-version-5)Migrating to version 5
441
- -------------------------------------------------
442
-
443
- ### [](#adding-the-provider)Adding the provider
444
-
445
- For your components to work as previously, you will need to set up the `IressSlideoutProvider` at the root of your application. This will allow you to use the `useSlideout` hook to open and close slideouts from anywhere in your application using the ID of the slideout.
446
-
447
- \[data-radix-scroll-area-viewport\] {
448
- scrollbar-width: none;
449
- -ms-overflow-style: none;
450
- -webkit-overflow-scrolling: touch;
451
- }
452
- \[data-radix-scroll-area-viewport\]::-webkit-scrollbar {
453
- display: none;
454
- }
455
- :where(\[data-radix-scroll-area-viewport\]) {
456
- display: flex;
457
- flex-direction: column;
458
- align-items: stretch;
459
- }
460
- :where(\[data-radix-scroll-area-content\]) {
461
- flex-grow: 1;
462
- }
463
-
464
- const App \= () \=> (
465
- <IressSlideoutProvider\>Rest of app here</IressSlideoutProvider\>
466
- );
467
-
468
- Copy
469
-
470
- ### [](#testing)Testing
471
-
472
- In version 5, slideouts are rendered conditionally, meaning they will not be available in the DOM until they are shown. This means that you will need to update your tests to account for this, as you cannot interact with its contents until it is shown, unlike in version 4.
473
-
474
- See below for an example in version 4 and version 5.
475
-
476
- Mode
477
-
478
- DiffOldNew
479
-
480
- <table class="css-1n5o7vh-diff-container"><tbody><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text">import { render, waitFor, screen } from '@testing-library/react';</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">import { render, screen, waitForElementToBeRemoved } from '@testing-library/react';</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text">import { idsFireEvent, componentLoad } from '@iress/ids-react-test-utils';</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">import { userEvent } from '@testing-library/user-event';</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text">test('opening and closing a slideout', async () =&gt; {</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> await componentLoad([</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> const trigger = screen.getByRole('button', { name: /open slideout/i });</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> 'slideout-trigger',</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> 'slideout',</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> // activate slideout</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> ]);</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> await userEvent.click(trigger);</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> const slideout = await screen.findByRole('complementary'); // this assumes the slideout has the role="complementary"</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> const trigger = screen.getByTestId('slideout-trigger');</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> const slideout = screen.getByTestId('slideout');</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> // In version 5, you can only interact with the slideout once it has been loaded here.</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-10regm7-empty-line"><pre></pre></td><td class="css-vl0irh-content css-10regm7-empty-line"><pre class="css-o1u8iu-content-text"></pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-10regm7-empty-line"><pre></pre></td><td class="css-vl0irh-content css-10regm7-empty-line"><pre class="css-o1u8iu-content-text"></pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> // In version 4, you can already interact with the slideout here as its in the DOM at this stage.</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> // activate slideout</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> idsFireEvent.click(trigger);</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> await waitFor(() =&gt; expect(slideout).toBeVisible());</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> // close slideout</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> const closeButton = screen.getByTestId('slideout__close-button');</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> const closeButton = screen.getByRole('button', { name: /close/i });</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> idsFireEvent.click(closeButton);</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> await userEvent.click(closeButton);</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> await waitFor(() =&gt; expect(slideout).not.toBeVisible());</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> await waitForElementToBeRemoved(slideout);</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text">});</pre></td></tr></tbody></table>
481
-
482
- ### [](#speed-up-tests)Speed up tests
483
-
484
- You can speed up tests by wrapping your tests in a provider that overrides the theme tokens for animations.
485
-
486
- \[data-radix-scroll-area-viewport\] {
487
- scrollbar-width: none;
488
- -ms-overflow-style: none;
489
- -webkit-overflow-scrolling: touch;
490
- }
491
- \[data-radix-scroll-area-viewport\]::-webkit-scrollbar {
492
- display: none;
493
- }
494
- :where(\[data-radix-scroll-area-viewport\]) {
495
- display: flex;
496
- flex-direction: column;
497
- align-items: stretch;
498
- }
499
- :where(\[data-radix-scroll-area-content\]) {
500
- flex-grow: 1;
501
- }
502
-
503
- const themeOverrides: Record<string, string\> \= {
504
- '--iress-slideout-animation-duration': '0s',
505
- };
506
- export const TestAppProvider \= ({ children }: PropsWithChildren) \=> {
507
- const containerRef \= useRef<HTMLDivElement\>(null);
508
- return (
509
- <IressModalProvider container\={containerRef}\>
510
- <div style\={themeOverrides} ref\={containerRef}\>
511
- {children}
512
- </div\>
513
- </IressModalProvider\>
514
- );
515
- };
516
-
517
- Copy
518
-
519
- On this page
520
-
521
- * [Overview](#overview)
522
- * [Use a slideout when:](#use-a-slideout-when)
523
- * [Props](#props)
524
- * [Controlling the slideout](#controlling-the-slideout)
525
- * [Using the show property](#using-the-show-property)
526
- * [Using the IressSlideoutProvider](#using-the-iressslideoutprovider)
527
- * [Examples](#examples)
528
- * [Modes](#modes)
529
- * [Position](#position)
530
- * [Backdrop](#backdrop)
531
- * [Size](#size)
532
- * [Padding](#padding)
533
- * [Footer](#footer)
534
- * [Absolute position slideouts](#absolute-position-slideouts)
535
- * [Migrating to version 5](#migrating-to-version-5)
536
- * [Adding the provider](#adding-the-provider)
537
- * [Testing](#testing)
538
- * [Speed up tests](#speed-up-tests)