@iress-oss/ids-mcp-server 0.0.1 → 5.14.2

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 (122) hide show
  1. package/LICENSE.txt +201 -0
  2. package/README.md +29 -159
  3. package/dist/componentHandlers.js +241 -0
  4. package/dist/componentHandlers.test.js +380 -0
  5. package/{build → dist}/config.js +5 -5
  6. package/dist/index.js +53 -0
  7. package/{build → dist}/iressHandlers.js +52 -46
  8. package/dist/iressHandlers.test.js +316 -0
  9. package/{build → dist}/resourceHandlers.js +23 -22
  10. package/dist/resourceHandlers.test.js +352 -0
  11. package/{build → dist}/searchHandlers.js +107 -92
  12. package/dist/searchHandlers.test.js +524 -0
  13. package/{build → dist}/toolHandler.js +13 -13
  14. package/dist/toolHandler.test.js +369 -0
  15. package/dist/tools.js +165 -0
  16. package/{build → dist}/utils.js +11 -15
  17. package/dist/utils.test.js +286 -0
  18. package/{docs/ids → generated/docs}/components-autocomplete-docs.md +3 -3
  19. package/{docs/ids → generated/docs}/components-autocomplete-recipes-docs.md +17 -51
  20. package/{docs/ids → generated/docs}/components-card-recipes-docs.md +1 -1
  21. package/{docs/ids → generated/docs}/components-checkbox-docs.md +6 -19
  22. package/{docs/ids → generated/docs}/components-checkboxgroup-docs.md +18 -18
  23. package/{docs/ids → generated/docs}/components-checkboxgroup-recipes-docs.md +9 -9
  24. package/{docs/ids → generated/docs}/components-col-docs.md +1 -1
  25. package/{docs/ids → generated/docs}/components-combobox-docs.md +4 -4
  26. package/{docs/ids → generated/docs}/components-container-docs.md +8 -42
  27. package/{docs/ids → generated/docs}/components-filter-docs.md +14 -67
  28. package/{docs/ids → generated/docs}/components-form-docs.md +341 -335
  29. package/{docs/ids → generated/docs}/components-form-recipes-docs.md +198 -1
  30. package/{docs/ids → generated/docs}/components-hide-docs.md +16 -70
  31. package/{docs/ids → generated/docs}/components-icon-docs.md +4 -4
  32. package/{docs/ids → generated/docs}/components-input-recipes-docs.md +2 -2
  33. package/{docs/ids → generated/docs}/components-inputcurrency-recipes-docs.md +6 -40
  34. package/{docs/ids → generated/docs}/components-modal-docs.md +3 -113
  35. package/generated/docs/components-popover-docs.md +464 -0
  36. package/{docs/ids → generated/docs}/components-radiogroup-docs.md +21 -21
  37. package/{docs/ids → generated/docs}/components-richselect-docs.md +149 -111
  38. package/{docs/ids → generated/docs}/components-row-docs.md +4 -4
  39. package/{docs/ids → generated/docs}/components-skeleton-docs.md +3 -3
  40. package/{docs/ids → generated/docs}/components-skeleton-recipes-docs.md +1 -1
  41. package/{docs/ids → generated/docs}/components-skiplink-docs.md +1 -1
  42. package/{docs/ids → generated/docs}/components-slideout-docs.md +3 -113
  43. package/{docs/ids → generated/docs}/components-table-ag-grid-docs.md +109 -137
  44. package/{docs/ids → generated/docs}/components-table-docs.md +92 -597
  45. package/{docs/ids → generated/docs}/components-tabset-docs.md +2 -2
  46. package/{docs/ids → generated/docs}/components-tag-docs.md +1 -1
  47. package/{docs/ids → generated/docs}/components-toaster-docs.md +5 -5
  48. package/{docs/ids → generated/docs}/extensions-editor-docs.md +4 -4
  49. package/generated/docs/foundations-accessibility-docs.md +62 -0
  50. package/{docs/ids → generated/docs}/foundations-colours-docs.md +1 -1
  51. package/generated/docs/foundations-consistency-docs.md +52 -0
  52. package/generated/docs/foundations-content-docs.md +23 -0
  53. package/generated/docs/foundations-introduction-docs.md +17 -0
  54. package/generated/docs/foundations-principles-docs.md +70 -0
  55. package/{docs/ids → generated/docs}/foundations-typography-docs.md +7 -2
  56. package/generated/docs/foundations-user-experience-docs.md +63 -0
  57. package/generated/docs/foundations-visual-design-docs.md +46 -0
  58. package/{docs/ids → generated/docs}/get-started-develop-docs.md +3 -3
  59. package/generated/docs/guidelines.md +812 -0
  60. package/{docs/ids → generated/docs}/introduction-docs.md +4 -4
  61. package/{docs/ids → generated/docs}/patterns-loading-docs.md +332 -2
  62. package/generated/docs/resources-migration-guides-from-v4-to-v5-docs.md +437 -0
  63. package/generated/docs/themes-available-themes-docs.md +66 -0
  64. package/generated/docs/themes-tokens-docs.md +1200 -0
  65. package/generated/docs/versions-docs.md +17 -0
  66. package/package.json +42 -14
  67. package/LICENSE +0 -193
  68. package/build/componentHandlers.js +0 -205
  69. package/build/index.js +0 -51
  70. package/build/tools.js +0 -165
  71. package/docs/api-reference.md +0 -0
  72. package/docs/best-practices.md +0 -0
  73. package/docs/configuration.md +0 -0
  74. package/docs/examples.md +0 -0
  75. package/docs/guidelines.md +0 -269
  76. package/docs/ids/components-popover-docs.md +0 -4
  77. package/docs/ids/resources-migration-guides-from-v4-to-v5-docs.md +0 -639
  78. package/docs/ids/themes-available-themes-docs.md +0 -74
  79. package/docs/ids/themes-tokens-docs.md +0 -4580
  80. package/docs/ids/versions-docs.md +0 -27
  81. package/docs/tutorials/basic-integration.md +0 -0
  82. /package/{build → dist}/types.js +0 -0
  83. /package/{docs/ids → generated/docs}/components-alert-docs.md +0 -0
  84. /package/{docs/ids → generated/docs}/components-badge-docs.md +0 -0
  85. /package/{docs/ids → generated/docs}/components-button-docs.md +0 -0
  86. /package/{docs/ids → generated/docs}/components-button-recipes-docs.md +0 -0
  87. /package/{docs/ids → generated/docs}/components-buttongroup-docs.md +0 -0
  88. /package/{docs/ids → generated/docs}/components-card-docs.md +0 -0
  89. /package/{docs/ids → generated/docs}/components-divider-docs.md +0 -0
  90. /package/{docs/ids → generated/docs}/components-expander-docs.md +0 -0
  91. /package/{docs/ids → generated/docs}/components-field-docs.md +0 -0
  92. /package/{docs/ids → generated/docs}/components-inline-docs.md +0 -0
  93. /package/{docs/ids → generated/docs}/components-input-docs.md +0 -0
  94. /package/{docs/ids → generated/docs}/components-inputcurrency-docs.md +0 -0
  95. /package/{docs/ids → generated/docs}/components-label-docs.md +0 -0
  96. /package/{docs/ids → generated/docs}/components-menu-docs.md +0 -0
  97. /package/{docs/ids → generated/docs}/components-menu-menuitem-docs.md +0 -0
  98. /package/{docs/ids → generated/docs}/components-navbar-docs.md +0 -0
  99. /package/{docs/ids → generated/docs}/components-navbar-recipes-docs.md +0 -0
  100. /package/{docs/ids → generated/docs}/components-panel-docs.md +0 -0
  101. /package/{docs/ids → generated/docs}/components-placeholder-docs.md +0 -0
  102. /package/{docs/ids → generated/docs}/components-popover-recipes-docs.md +0 -0
  103. /package/{docs/ids → generated/docs}/components-progress-docs.md +0 -0
  104. /package/{docs/ids → generated/docs}/components-radio-docs.md +0 -0
  105. /package/{docs/ids → generated/docs}/components-readonly-docs.md +0 -0
  106. /package/{docs/ids → generated/docs}/components-select-docs.md +0 -0
  107. /package/{docs/ids → generated/docs}/components-slider-docs.md +0 -0
  108. /package/{docs/ids → generated/docs}/components-spinner-docs.md +0 -0
  109. /package/{docs/ids → generated/docs}/components-stack-docs.md +0 -0
  110. /package/{docs/ids → generated/docs}/components-tabset-tab-docs.md +0 -0
  111. /package/{docs/ids → generated/docs}/components-text-docs.md +0 -0
  112. /package/{docs/ids → generated/docs}/components-toaster-toast-docs.md +0 -0
  113. /package/{docs/ids → generated/docs}/components-toggle-docs.md +0 -0
  114. /package/{docs/ids → generated/docs}/components-tooltip-docs.md +0 -0
  115. /package/{docs/ids → generated/docs}/components-validationmessage-docs.md +0 -0
  116. /package/{docs/ids → generated/docs}/contact-us-docs.md +0 -0
  117. /package/{docs/ids → generated/docs}/extensions-editor-recipes-docs.md +0 -0
  118. /package/{docs/ids → generated/docs}/frequently-asked-questions-docs.md +0 -0
  119. /package/{docs/ids → generated/docs}/get-started-using-storybook-docs.md +0 -0
  120. /package/{docs/ids → generated/docs}/resources-changelog-docs.md +0 -0
  121. /package/{docs/ids → generated/docs}/resources-code-katas-docs.md +0 -0
  122. /package/{docs/ids → generated/docs}/themes-introduction-docs.md +0 -0
@@ -0,0 +1,464 @@
1
+ [](#popover)Popover
2
+ ===================
3
+
4
+ Overview
5
+ --------
6
+
7
+ A popover is panel that is toggled on/off by an activator button or text input. The panel is positioned relative to its activator element.
8
+
9
+ Toggle popover
10
+
11
+ A little more information about this area.
12
+
13
+ Hide code
14
+
15
+ \[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; }
16
+
17
+ <IressPopover activator\={<IressButton\>Toggle popover</IressButton\>}\>
18
+ <IressPanel className\="iress-u-text"\>
19
+ A little more information about this area. </IressPanel\>
20
+ </IressPopover\>
21
+
22
+ Copy
23
+
24
+ [](#usage)Usage
25
+ ---------------
26
+
27
+ ### [](#activator)Activator
28
+
29
+ For the popover to render, the `activator` property is required. It is the element used to trigger the popover, and works best with an `IressButton`.
30
+
31
+ Anything added as the children of the `IressPopover` component will be displayed in the popover panel.
32
+
33
+ Toggle popover
34
+
35
+ A little more information about this area.
36
+
37
+ Hide code
38
+
39
+ \[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; }
40
+
41
+ <IressPopover activator\={<IressButton\>Toggle popover</IressButton\>}\>
42
+ <IressPanel className\="iress-u-text"\>
43
+ A little more information about this area. </IressPanel\>
44
+ </IressPopover\>
45
+
46
+ Copy
47
+
48
+ ### [](#the-show-property)The `show` property
49
+
50
+ You can use state to control the popover by setting the `show` property to `true` or `false`. To sync your state with the popover, you can use the `onActivated` and `onDeactivated` prop.
51
+
52
+ Show popover using state
53
+
54
+ A little more information about this area.
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 {
61
+ IressButton,
62
+ IressPanel,
63
+ IressPopover,
64
+ IressPopoverProps,
65
+ } from '@iress-oss/ids-components';
66
+ import { useState } from 'react';
67
+ export const PopoverUsingState \= () \=> {
68
+ const \[show, setShow\] \= useState(false);
69
+ return (
70
+ <IressPopover
71
+
72
+ activator\={
73
+ <IressButton onClick\={() \=> setShow(!show)}\>
74
+ Show popover using state </IressButton\>
75
+ }
76
+ show\={show}
77
+ onActivated\={() \=> setShow(true)}
78
+ onDeactivated\={() \=> setShow(false)}
79
+ \>
80
+ <IressPanel\>A little more information about this area.</IressPanel\>
81
+ </IressPopover\>
82
+ );
83
+ };
84
+
85
+ Copy
86
+
87
+ [](#behaviour)Behaviour
88
+ -----------------------
89
+
90
+ * The popover is opened when the activator is pressed
91
+ * Once activated, the popover will set focus to popover content
92
+ * When the activator is pressed whilst the popover is open, it will close
93
+ * When the escape key is pressed while it is open, it will close
94
+ * When the popover panel loses focus, it will close
95
+
96
+ [](#examples)Examples
97
+ ---------------------
98
+
99
+ ### [](#align)Align
100
+
101
+ The popover panel can be aligned in one of 12 positions relative to the activator element. The default value is `auto`.
102
+
103
+ The popover panel's position will change dynamically based on the amount of space available in it's container window, so that it doesn't overflow.
104
+
105
+ top-start
106
+
107
+ Hello!
108
+
109
+ top
110
+
111
+ Hello!
112
+
113
+ top-end
114
+
115
+ Hello!
116
+
117
+ left-start
118
+
119
+ Hello!
120
+
121
+ left
122
+
123
+ Hello!
124
+
125
+ left-end
126
+
127
+ Hello!
128
+
129
+ right-start
130
+
131
+ Hello!
132
+
133
+ right
134
+
135
+ Hello!
136
+
137
+ right-end
138
+
139
+ Hello!
140
+
141
+ bottom-start
142
+
143
+ Hello!
144
+
145
+ bottom
146
+
147
+ Hello!
148
+
149
+ bottom-end
150
+
151
+ Hello!
152
+
153
+ Hide code
154
+
155
+ \[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; }
156
+
157
+ <div
158
+ style\={{
159
+ padding: '80px 150px'
160
+ }}
161
+ \>
162
+ <IressStack gutter\="md"\>
163
+ <IressInline
164
+ gutter\="sm"
165
+ horizontalAlign\="center"
166
+ \>
167
+ <IressPopover
168
+ activator\={<IressTooltip align\="bottom-start" tooltipText\="Tooltips and popovers can go together if needed!"\><IressButton\>top-start</IressButton\></IressTooltip\>}
169
+ align\="top-start"
170
+ \>
171
+ <IressPanel className\="iress-u-text"\>
172
+ Hello! </IressPanel\>
173
+ </IressPopover\>
174
+ <IressPopover
175
+ activator\={<IressButton\>top</IressButton\>}
176
+ align\="top"
177
+ \>
178
+ <IressPanel className\="iress-u-text"\>
179
+ Hello! </IressPanel\>
180
+ </IressPopover\>
181
+ <IressPopover
182
+ activator\={<IressButton\>top-end</IressButton\>}
183
+ align\="top-end"
184
+ \>
185
+ <IressPanel className\="iress-u-text"\>
186
+ Hello! </IressPanel\>
187
+ </IressPopover\>
188
+ </IressInline\>
189
+ <IressInline horizontalAlign\="between"\>
190
+ <IressStack gutter\="sm"\>
191
+ <IressInline horizontalAlign\="left"\>
192
+ <IressPopover
193
+ activator\={<IressButton\>left-start</IressButton\>}
194
+ align\="left-start"
195
+ \>
196
+ <IressPanel className\="iress-u-text"\>
197
+ Hello! </IressPanel\>
198
+ </IressPopover\>
199
+ </IressInline\>
200
+ <IressInline horizontalAlign\="left"\>
201
+ <IressPopover
202
+ activator\={<IressButton\>left</IressButton\>}
203
+ align\="left"
204
+ \>
205
+ <IressPanel className\="iress-u-text"\>
206
+ Hello! </IressPanel\>
207
+ </IressPopover\>
208
+ </IressInline\>
209
+ <IressInline horizontalAlign\="left"\>
210
+ <IressPopover
211
+ activator\={<IressButton\>left-end</IressButton\>}
212
+ align\="left-end"
213
+ \>
214
+ <IressPanel className\="iress-u-text"\>
215
+ Hello! </IressPanel\>
216
+ </IressPopover\>
217
+ </IressInline\>
218
+ </IressStack\>
219
+ <IressStack gutter\="sm"\>
220
+ <IressInline horizontalAlign\="right"\>
221
+ <IressPopover
222
+ activator\={<IressButton\>right-start</IressButton\>}
223
+ align\="right-start"
224
+ \>
225
+ <IressPanel className\="iress-u-text"\>
226
+ Hello! </IressPanel\>
227
+ </IressPopover\>
228
+ </IressInline\>
229
+ <IressInline horizontalAlign\="right"\>
230
+ <IressPopover
231
+ activator\={<IressButton\>right</IressButton\>}
232
+ align\="right"
233
+ \>
234
+ <IressPanel className\="iress-u-text"\>
235
+ Hello! </IressPanel\>
236
+ </IressPopover\>
237
+ </IressInline\>
238
+ <IressInline horizontalAlign\="right"\>
239
+ <IressPopover
240
+ activator\={<IressButton\>right-end</IressButton\>}
241
+ align\="right-end"
242
+ \>
243
+ <IressPanel className\="iress-u-text"\>
244
+ Hello! </IressPanel\>
245
+ </IressPopover\>
246
+ </IressInline\>
247
+ </IressStack\>
248
+ </IressInline\>
249
+ <IressInline
250
+ gutter\="sm"
251
+ horizontalAlign\="center"
252
+ \>
253
+ <IressPopover
254
+ activator\={<IressButton\>bottom-start</IressButton\>}
255
+ align\="bottom-start"
256
+ \>
257
+ <IressPanel className\="iress-u-text"\>
258
+ Hello! </IressPanel\>
259
+ </IressPopover\>
260
+ <IressPopover
261
+ activator\={<IressButton\>bottom</IressButton\>}
262
+ align\="bottom"
263
+ \>
264
+ <IressPanel className\="iress-u-text"\>
265
+ Hello! </IressPanel\>
266
+ </IressPopover\>
267
+ <IressPopover
268
+ activator\={<IressButton\>bottom-end</IressButton\>}
269
+ align\="bottom-end"
270
+ \>
271
+ <IressPanel className\="iress-u-text"\>
272
+ Hello! </IressPanel\>
273
+ </IressPopover\>
274
+ </IressInline\>
275
+ </IressStack\>
276
+ </div\>
277
+
278
+ Copy
279
+
280
+ ### [](#width)Width
281
+
282
+ Occasionally, you may have more information to display than the width set by the theme can comfortably show.
283
+
284
+ This is where the `--iress-width` CSS token come in, it will allow you to set the width for the popover panel. For better results, its recommended to use it with the `--iress-max-width` CSS token, to allow your popovers to be responsive.
285
+
286
+ **Note:** The `width` prop has been deprecated in favour of the CSS tokens.
287
+
288
+ Toggle popover
289
+
290
+ Hide code
291
+
292
+ \[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; }
293
+
294
+ <IressPopover
295
+ activator\={<IressButton\>Toggle popover</IressButton\>}
296
+ container\={document.body}
297
+ style\={{
298
+ '--iress-max-width': '30rem',
299
+ '--iress-width': '100%'
300
+ }}
301
+ \>
302
+ <IressPanel\>
303
+ <IressRow\>
304
+ <IressCol span\={6}\>
305
+ <IressText\>
306
+ Client </IressText\>
307
+ <IressText noGutter\>
308
+ <ul\>
309
+ <li\>
310
+ Entity id 582323 </li\>
311
+ <li\>
312
+ Fruit Apple </li\>
313
+ <li\>
314
+ Preferred email mamaduke@gmail.com </li\>
315
+ </ul\>
316
+ </IressText\>
317
+ </IressCol\>
318
+ <IressCol span\={6}\>
319
+ <IressText\>
320
+ Client </IressText\>
321
+ <IressText noGutter\>
322
+ <ul\>
323
+ <li\>
324
+ Entity id 8766 </li\>
325
+ <li\>
326
+ Fruit Orange </li\>
327
+ <li\>
328
+ Preferred email felicity@yahoo.com </li\>
329
+ </ul\>
330
+ </IressText\>
331
+ </IressCol\>
332
+ </IressRow\>
333
+ </IressPanel\>
334
+ </IressPopover\>
335
+
336
+ Copy
337
+
338
+ ### [](#overflow)Overflow
339
+
340
+ Popovers can contain a wide variety of different content, including components that use popovers themselves (like Combobox). This can cause issues with overflowing content, so by default we allow popovers to grow in height based on their content.
341
+
342
+ If you need to fix the height of a popover, you can set a maximum height using the `--iress-max-height` theme token on your popover. You'll also need to change the overflow behaviour by setting the `--iress-overflow-y` theme token:
343
+
344
+ Normal popover
345
+
346
+ Fixed height popover
347
+
348
+ Hide code
349
+
350
+ \[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; }
351
+
352
+ <IressInline gutter\="md"\>
353
+ <IressPopover
354
+ activator\={<IressButton\>Normal popover</IressButton\>}
355
+ align\="bottom-start"
356
+ container\={document.body}
357
+ \>
358
+ <IressPanel\>
359
+ <IressText noGutter\>
360
+ <p\>
361
+ His head is gone, it is like it is been erased... Erased from existence. That was the day I invented time travel. I remember it vividly. I was standing on the edge of my toilet hanging a clock, the porces was wet, I slipped, hit my head on the edge of the sink. And when I came to I had a revelation, a picture, a picture in my head, a picture of this. This is what makes time travel possible. The flux capacitor. </p\>
362
+ </IressText\>
363
+ </IressPanel\>
364
+ </IressPopover\>
365
+ <IressPopover
366
+ activator\={<IressButton\>Fixed height popover</IressButton\>}
367
+ align\="bottom-start"
368
+ container\={document.body}
369
+ style\={{
370
+ '--iress-max-height': '200px',
371
+ '--iress-overflow-y': 'auto'
372
+ }}
373
+ \>
374
+ <IressPanel\>
375
+ <IressText noGutter\>
376
+ <p\>
377
+ His head is gone, it is like it is been erased... Erased from existence. That was the day I invented time travel. I remember it vividly. I was standing on the edge of my toilet hanging a clock, the porces was wet, I slipped, hit my head on the edge of the sink. And when I came to I had a revelation, a picture, a picture in my head, a picture of this. This is what makes time travel possible. The flux capacitor. </p\>
378
+ </IressText\>
379
+ </IressPanel\>
380
+ </IressPopover\>
381
+ </IressInline\>
382
+
383
+ Copy
384
+
385
+ ### [](#container)Container
386
+
387
+ By default, the popover will be rendered where its parent is rendered. If you need to render the popover in a different container, you can use the `container` prop.
388
+
389
+ **Note:** If the `container` doesn’t exist when the portal is mounted, ensure you pass an element directly (not a ref) and specify null as the default value before it is set. This lets it wait for the root to be available.
390
+
391
+ This will be the case when you are rendering into its parent container, which is not yet rendered when the popover is mounted. The example below shows how to use state instead of a reference to change where the popover is rendered.
392
+
393
+ Toggle
394
+
395
+ This content will be rendered in the parent container
396
+
397
+ Hide code
398
+
399
+ \[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; }
400
+
401
+ export const PopoverParentContainer \= () \=> {
402
+ const \[parentContainer, setParentContainer\] \= useState<HTMLDivElement | null\>(
403
+ null,
404
+ );
405
+ return (
406
+ <div id\="parent" ref\={setParentContainer}\>
407
+ <IressPopover
408
+ activator\={<IressButton\>Toggle</IressButton\>}
409
+ container\={parentContainer}
410
+ \>
411
+ <IressPanel\>
412
+ This content will be rendered in the parent container </IressPanel\>
413
+ </IressPopover\>
414
+ </div\>
415
+ );
416
+ };
417
+
418
+ Copy
419
+
420
+ [](#iressinputpopover)`IressInputPopover`
421
+ -----------------------------------------
422
+
423
+ If you need a popover that is triggered by input changes, you can use the `IressInputPopover` component. This component has an additional `minLength` prop that allows you to specify the minimum number of characters required before the popover is shown.
424
+
425
+ ### [](#behaviour-1)Behaviour
426
+
427
+ Input popovers work slightly different to normal popovers, where the focus inside the popover is **virtual**. This means that the popover content will act as if it is in focus, but the input will still be the actual focus.
428
+
429
+ * The popover is opened when the input has content that meets the `minLength` requirement
430
+ * The popover is closed when the input no longer meets the `minLength` requirement
431
+ * Once activated, virtual focus will be set to the popover content if it contains a menu (e.g. items will highlight as if in focus, but the user can still type in the input)
432
+ * When the `minLength` is 0, it will open on focus
433
+ * When the escape key is pressed while it is open, it will close
434
+ * When the input loses focus, it will close
435
+
436
+ Hide code
437
+
438
+ \[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; }
439
+
440
+ <IressInputPopover
441
+ activator\={<IressInput />}
442
+ container\={document.body}
443
+ \>
444
+ <IressPanel className\="iress-u-text"\>
445
+ A little more information about this area. </IressPanel\>
446
+ </IressInputPopover\>
447
+
448
+ Copy
449
+
450
+ On this page
451
+
452
+ * [Overview](#overview)
453
+ * [Props](#props)
454
+ * [Usage](#usage)
455
+ * [Activator](#activator)
456
+ * [The show property](#the-show-property)
457
+ * [Behaviour](#behaviour)
458
+ * [Examples](#examples)
459
+ * [Align](#align)
460
+ * [Width](#width)
461
+ * [Overflow](#overflow)
462
+ * [Container](#container)
463
+ * [IressInputPopover](#iressinputpopover)
464
+ * [Behaviour](#behaviour-1)
@@ -171,22 +171,22 @@ Hide code
171
171
  stack </h3\>
172
172
  <IressRadioGroup layout\="stack"\>
173
173
  <IressRadio
174
- className\="ids-styles--add-border-v5130"
174
+ className\="ids-styles--add-border-v5142"
175
175
  value\="google"
176
176
  \>
177
177
  Google </IressRadio\>
178
178
  <IressRadio
179
- className\="ids-styles--add-border-v5130"
179
+ className\="ids-styles--add-border-v5142"
180
180
  value\="newspaper"
181
181
  \>
182
182
  Newspaper </IressRadio\>
183
183
  <IressRadio
184
- className\="ids-styles--add-border-v5130"
184
+ className\="ids-styles--add-border-v5142"
185
185
  value\="friend"
186
186
  \>
187
187
  Friend </IressRadio\>
188
188
  <IressRadio
189
- className\="ids-styles--add-border-v5130"
189
+ className\="ids-styles--add-border-v5142"
190
190
  value\="other"
191
191
  \>
192
192
  Other </IressRadio\>
@@ -197,22 +197,22 @@ Hide code
197
197
  block </h3\>
198
198
  <IressRadioGroup layout\="block"\>
199
199
  <IressRadio
200
- className\="ids-styles--add-border-v5130"
200
+ className\="ids-styles--add-border-v5142"
201
201
  value\="google"
202
202
  \>
203
203
  Google </IressRadio\>
204
204
  <IressRadio
205
- className\="ids-styles--add-border-v5130"
205
+ className\="ids-styles--add-border-v5142"
206
206
  value\="newspaper"
207
207
  \>
208
208
  Newspaper </IressRadio\>
209
209
  <IressRadio
210
- className\="ids-styles--add-border-v5130"
210
+ className\="ids-styles--add-border-v5142"
211
211
  value\="friend"
212
212
  \>
213
213
  Friend </IressRadio\>
214
214
  <IressRadio
215
- className\="ids-styles--add-border-v5130"
215
+ className\="ids-styles--add-border-v5142"
216
216
  value\="other"
217
217
  \>
218
218
  Other </IressRadio\>
@@ -223,22 +223,22 @@ Hide code
223
223
  inline </h3\>
224
224
  <IressRadioGroup layout\="inline"\>
225
225
  <IressRadio
226
- className\="ids-styles--add-border-v5130"
226
+ className\="ids-styles--add-border-v5142"
227
227
  value\="google"
228
228
  \>
229
229
  Google </IressRadio\>
230
230
  <IressRadio
231
- className\="ids-styles--add-border-v5130"
231
+ className\="ids-styles--add-border-v5142"
232
232
  value\="newspaper"
233
233
  \>
234
234
  Newspaper </IressRadio\>
235
235
  <IressRadio
236
- className\="ids-styles--add-border-v5130"
236
+ className\="ids-styles--add-border-v5142"
237
237
  value\="friend"
238
238
  \>
239
239
  Friend </IressRadio\>
240
240
  <IressRadio
241
- className\="ids-styles--add-border-v5130"
241
+ className\="ids-styles--add-border-v5142"
242
242
  value\="other"
243
243
  \>
244
244
  Other </IressRadio\>
@@ -249,22 +249,22 @@ Hide code
249
249
  inlineFlex </h3\>
250
250
  <IressRadioGroup layout\="inlineFlex"\>
251
251
  <IressRadio
252
- className\="ids-styles--add-border-v5130"
252
+ className\="ids-styles--add-border-v5142"
253
253
  value\="google"
254
254
  \>
255
255
  Google </IressRadio\>
256
256
  <IressRadio
257
- className\="ids-styles--add-border-v5130"
257
+ className\="ids-styles--add-border-v5142"
258
258
  value\="newspaper"
259
259
  \>
260
260
  Newspaper </IressRadio\>
261
261
  <IressRadio
262
- className\="ids-styles--add-border-v5130"
262
+ className\="ids-styles--add-border-v5142"
263
263
  value\="friend"
264
264
  \>
265
265
  Friend </IressRadio\>
266
266
  <IressRadio
267
- className\="ids-styles--add-border-v5130"
267
+ className\="ids-styles--add-border-v5142"
268
268
  value\="other"
269
269
  \>
270
270
  Other </IressRadio\>
@@ -275,22 +275,22 @@ Hide code
275
275
  inlineEqualWidth </h3\>
276
276
  <IressRadioGroup layout\="inlineEqualWidth"\>
277
277
  <IressRadio
278
- className\="ids-styles--add-border-v5130"
278
+ className\="ids-styles--add-border-v5142"
279
279
  value\="google"
280
280
  \>
281
281
  Google </IressRadio\>
282
282
  <IressRadio
283
- className\="ids-styles--add-border-v5130"
283
+ className\="ids-styles--add-border-v5142"
284
284
  value\="newspaper"
285
285
  \>
286
286
  Newspaper </IressRadio\>
287
287
  <IressRadio
288
- className\="ids-styles--add-border-v5130"
288
+ className\="ids-styles--add-border-v5142"
289
289
  value\="friend"
290
290
  \>
291
291
  Friend </IressRadio\>
292
292
  <IressRadio
293
- className\="ids-styles--add-border-v5130"
293
+ className\="ids-styles--add-border-v5142"
294
294
  value\="other"
295
295
  \>
296
296
  Other </IressRadio\>
@@ -441,7 +441,7 @@ Hide code
441
441
  }}
442
442
  \>
443
443
  <div
444
- className\="ids-styles--resizable-v5130"
444
+ className\="ids-styles--resizable-v5142"
445
445
  style\={{
446
446
  display: 'grid',
447
447
  gridAutoRows: '1fr',