@patternfly/react-core 5.3.0-prerelease.3 → 5.3.0-prerelease.4

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 (251) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/Chip/package.json +1 -1
  21. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  22. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  23. package/dist/dynamic/components/DataList/package.json +1 -1
  24. package/dist/dynamic/components/DatePicker/package.json +1 -1
  25. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  26. package/dist/dynamic/components/Divider/package.json +1 -1
  27. package/dist/dynamic/components/DragDrop/package.json +1 -1
  28. package/dist/dynamic/components/Drawer/package.json +1 -1
  29. package/dist/dynamic/components/Dropdown/package.json +1 -1
  30. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  31. package/dist/dynamic/components/EmptyState/package.json +1 -1
  32. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  33. package/dist/dynamic/components/FileUpload/package.json +1 -1
  34. package/dist/dynamic/components/Form/package.json +1 -1
  35. package/dist/dynamic/components/FormSelect/package.json +1 -1
  36. package/dist/dynamic/components/HelperText/package.json +1 -1
  37. package/dist/dynamic/components/Hint/package.json +1 -1
  38. package/dist/dynamic/components/Icon/package.json +1 -1
  39. package/dist/dynamic/components/InputGroup/package.json +1 -1
  40. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  41. package/dist/dynamic/components/Label/package.json +1 -1
  42. package/dist/dynamic/components/List/package.json +1 -1
  43. package/dist/dynamic/components/LoginPage/package.json +1 -1
  44. package/dist/dynamic/components/Masthead/package.json +1 -1
  45. package/dist/dynamic/components/Menu/package.json +1 -1
  46. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  47. package/dist/dynamic/components/Modal/package.json +1 -1
  48. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  49. package/dist/dynamic/components/Nav/package.json +1 -1
  50. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  51. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  52. package/dist/dynamic/components/NumberInput/package.json +1 -1
  53. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  54. package/dist/dynamic/components/Page/package.json +1 -1
  55. package/dist/dynamic/components/Pagination/package.json +1 -1
  56. package/dist/dynamic/components/Panel/package.json +1 -1
  57. package/dist/dynamic/components/Popover/package.json +1 -1
  58. package/dist/dynamic/components/Progress/package.json +1 -1
  59. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  60. package/dist/dynamic/components/Radio/package.json +1 -1
  61. package/dist/dynamic/components/SearchInput/package.json +1 -1
  62. package/dist/dynamic/components/Select/package.json +1 -1
  63. package/dist/dynamic/components/Sidebar/package.json +1 -1
  64. package/dist/dynamic/components/SimpleList/package.json +1 -1
  65. package/dist/dynamic/components/Skeleton/package.json +1 -1
  66. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  67. package/dist/dynamic/components/Slider/package.json +1 -1
  68. package/dist/dynamic/components/Spinner/package.json +1 -1
  69. package/dist/dynamic/components/Switch/package.json +1 -1
  70. package/dist/dynamic/components/Tabs/package.json +1 -1
  71. package/dist/dynamic/components/Text/package.json +1 -1
  72. package/dist/dynamic/components/TextArea/package.json +1 -1
  73. package/dist/dynamic/components/TextInput/package.json +1 -1
  74. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  75. package/dist/dynamic/components/Tile/package.json +1 -1
  76. package/dist/dynamic/components/TimePicker/package.json +1 -1
  77. package/dist/dynamic/components/Timestamp/package.json +1 -1
  78. package/dist/dynamic/components/Title/package.json +1 -1
  79. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  80. package/dist/dynamic/components/Toolbar/package.json +1 -1
  81. package/dist/dynamic/components/Tooltip/package.json +1 -1
  82. package/dist/dynamic/components/TreeView/package.json +1 -1
  83. package/dist/dynamic/components/Truncate/package.json +1 -1
  84. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  85. package/dist/dynamic/components/Wizard/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/Select/package.json +1 -1
  92. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  93. package/dist/dynamic/deprecated/components/package.json +1 -1
  94. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  95. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  96. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  97. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  98. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  99. package/dist/dynamic/helpers/constants/package.json +1 -1
  100. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/favorites/package.json +1 -1
  102. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  103. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  104. package/dist/dynamic/helpers/package.json +1 -1
  105. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  106. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  107. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  108. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  109. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  110. package/dist/dynamic/helpers/util/package.json +1 -1
  111. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  112. package/dist/dynamic/layouts/Flex/package.json +1 -1
  113. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  114. package/dist/dynamic/layouts/Grid/package.json +1 -1
  115. package/dist/dynamic/layouts/Level/package.json +1 -1
  116. package/dist/dynamic/layouts/Split/package.json +1 -1
  117. package/dist/dynamic/layouts/Stack/package.json +1 -1
  118. package/dist/dynamic/next/components/DualListSelector/package.json +1 -0
  119. package/dist/dynamic/next/components/Modal/package.json +1 -1
  120. package/dist/dynamic/next/components/package.json +1 -1
  121. package/dist/dynamic/styles/package.json +1 -1
  122. package/dist/esm/next/components/DualListSelector/DualListSelector.d.ts +23 -0
  123. package/dist/esm/next/components/DualListSelector/DualListSelector.d.ts.map +1 -0
  124. package/dist/esm/next/components/DualListSelector/DualListSelector.js +23 -0
  125. package/dist/esm/next/components/DualListSelector/DualListSelector.js.map +1 -0
  126. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.d.ts +19 -0
  127. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.d.ts.map +1 -0
  128. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.js +5 -0
  129. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.js.map +1 -0
  130. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.d.ts +25 -0
  131. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.d.ts.map +1 -0
  132. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.js +18 -0
  133. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.js.map +1 -0
  134. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts +15 -0
  135. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts.map +1 -0
  136. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.js +35 -0
  137. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.js.map +1 -0
  138. package/dist/esm/next/components/DualListSelector/DualListSelectorList.d.ts +8 -0
  139. package/dist/esm/next/components/DualListSelector/DualListSelectorList.d.ts.map +1 -0
  140. package/dist/esm/next/components/DualListSelector/DualListSelectorList.js +26 -0
  141. package/dist/esm/next/components/DualListSelector/DualListSelectorList.js.map +1 -0
  142. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.d.ts +29 -0
  143. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.d.ts.map +1 -0
  144. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.js +38 -0
  145. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.js.map +1 -0
  146. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.d.ts +24 -0
  147. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.d.ts.map +1 -0
  148. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.js +59 -0
  149. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.js.map +1 -0
  150. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.d.ts +31 -0
  151. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.d.ts.map +1 -0
  152. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.js +27 -0
  153. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.js.map +1 -0
  154. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.d.ts +48 -0
  155. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -0
  156. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.js +15 -0
  157. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.js.map +1 -0
  158. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.d.ts +32 -0
  159. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -0
  160. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.js +75 -0
  161. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -0
  162. package/dist/esm/next/components/DualListSelector/index.d.ts +8 -0
  163. package/dist/esm/next/components/DualListSelector/index.d.ts.map +1 -0
  164. package/dist/esm/next/components/DualListSelector/index.js +8 -0
  165. package/dist/esm/next/components/DualListSelector/index.js.map +1 -0
  166. package/dist/esm/next/components/DualListSelector/treeUtils.d.ts +8 -0
  167. package/dist/esm/next/components/DualListSelector/treeUtils.d.ts.map +1 -0
  168. package/dist/esm/next/components/DualListSelector/treeUtils.js +68 -0
  169. package/dist/esm/next/components/DualListSelector/treeUtils.js.map +1 -0
  170. package/dist/esm/next/components/index.d.ts +1 -0
  171. package/dist/esm/next/components/index.d.ts.map +1 -1
  172. package/dist/esm/next/components/index.js +1 -0
  173. package/dist/esm/next/components/index.js.map +1 -1
  174. package/dist/js/next/components/DualListSelector/DualListSelector.d.ts +23 -0
  175. package/dist/js/next/components/DualListSelector/DualListSelector.d.ts.map +1 -0
  176. package/dist/js/next/components/DualListSelector/DualListSelector.js +26 -0
  177. package/dist/js/next/components/DualListSelector/DualListSelector.js.map +1 -0
  178. package/dist/js/next/components/DualListSelector/DualListSelectorContext.d.ts +19 -0
  179. package/dist/js/next/components/DualListSelector/DualListSelectorContext.d.ts.map +1 -0
  180. package/dist/js/next/components/DualListSelector/DualListSelectorContext.js +9 -0
  181. package/dist/js/next/components/DualListSelector/DualListSelectorContext.js.map +1 -0
  182. package/dist/js/next/components/DualListSelector/DualListSelectorControl.d.ts +25 -0
  183. package/dist/js/next/components/DualListSelector/DualListSelectorControl.d.ts.map +1 -0
  184. package/dist/js/next/components/DualListSelector/DualListSelectorControl.js +22 -0
  185. package/dist/js/next/components/DualListSelector/DualListSelectorControl.js.map +1 -0
  186. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts +15 -0
  187. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts.map +1 -0
  188. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.js +39 -0
  189. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.js.map +1 -0
  190. package/dist/js/next/components/DualListSelector/DualListSelectorList.d.ts +8 -0
  191. package/dist/js/next/components/DualListSelector/DualListSelectorList.d.ts.map +1 -0
  192. package/dist/js/next/components/DualListSelector/DualListSelectorList.js +30 -0
  193. package/dist/js/next/components/DualListSelector/DualListSelectorList.js.map +1 -0
  194. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.d.ts +29 -0
  195. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.d.ts.map +1 -0
  196. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.js +42 -0
  197. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.js.map +1 -0
  198. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.d.ts +24 -0
  199. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.d.ts.map +1 -0
  200. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.js +63 -0
  201. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.js.map +1 -0
  202. package/dist/js/next/components/DualListSelector/DualListSelectorPane.d.ts +31 -0
  203. package/dist/js/next/components/DualListSelector/DualListSelectorPane.d.ts.map +1 -0
  204. package/dist/js/next/components/DualListSelector/DualListSelectorPane.js +31 -0
  205. package/dist/js/next/components/DualListSelector/DualListSelectorPane.js.map +1 -0
  206. package/dist/js/next/components/DualListSelector/DualListSelectorTree.d.ts +48 -0
  207. package/dist/js/next/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -0
  208. package/dist/js/next/components/DualListSelector/DualListSelectorTree.js +19 -0
  209. package/dist/js/next/components/DualListSelector/DualListSelectorTree.js.map +1 -0
  210. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.d.ts +32 -0
  211. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -0
  212. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.js +78 -0
  213. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -0
  214. package/dist/js/next/components/DualListSelector/index.d.ts +8 -0
  215. package/dist/js/next/components/DualListSelector/index.d.ts.map +1 -0
  216. package/dist/js/next/components/DualListSelector/index.js +11 -0
  217. package/dist/js/next/components/DualListSelector/index.js.map +1 -0
  218. package/dist/js/next/components/DualListSelector/treeUtils.d.ts +8 -0
  219. package/dist/js/next/components/DualListSelector/treeUtils.d.ts.map +1 -0
  220. package/dist/js/next/components/DualListSelector/treeUtils.js +77 -0
  221. package/dist/js/next/components/DualListSelector/treeUtils.js.map +1 -0
  222. package/dist/js/next/components/index.d.ts +1 -0
  223. package/dist/js/next/components/index.d.ts.map +1 -1
  224. package/dist/js/next/components/index.js +1 -0
  225. package/dist/js/next/components/index.js.map +1 -1
  226. package/helpers/package.json +1 -1
  227. package/layouts/package.json +1 -1
  228. package/next/package.json +1 -1
  229. package/package.json +2 -2
  230. package/src/next/components/DualListSelector/DualListSelector.tsx +50 -0
  231. package/src/next/components/DualListSelector/DualListSelectorContext.ts +21 -0
  232. package/src/next/components/DualListSelector/DualListSelectorControl.tsx +66 -0
  233. package/src/next/components/DualListSelector/DualListSelectorControlsWrapper.tsx +87 -0
  234. package/src/next/components/DualListSelector/DualListSelectorList.tsx +57 -0
  235. package/src/next/components/DualListSelector/DualListSelectorListItem.tsx +105 -0
  236. package/src/next/components/DualListSelector/DualListSelectorListWrapper.tsx +124 -0
  237. package/src/next/components/DualListSelector/DualListSelectorPane.tsx +94 -0
  238. package/src/next/components/DualListSelector/DualListSelectorTree.tsx +110 -0
  239. package/src/next/components/DualListSelector/DualListSelectorTreeItem.tsx +184 -0
  240. package/src/next/components/DualListSelector/__tests__/DualListSelector.test.tsx +26 -0
  241. package/src/next/components/DualListSelector/__tests__/__snapshots__/DualListSelector.test.tsx.snap +122 -0
  242. package/src/next/components/DualListSelector/examples/DualListSelector.md +99 -0
  243. package/src/next/components/DualListSelector/examples/DualListSelectorBasic.tsx +157 -0
  244. package/src/next/components/DualListSelector/examples/DualListSelectorBasicSearch.tsx +214 -0
  245. package/src/next/components/DualListSelector/examples/DualListSelectorBasicTooltips.tsx +165 -0
  246. package/src/next/components/DualListSelector/examples/DualListSelectorComplexOptionsActions.tsx +347 -0
  247. package/src/next/components/DualListSelector/examples/DualListSelectorDragDrop.tsx +184 -0
  248. package/src/next/components/DualListSelector/examples/DualListSelectorTree.tsx +380 -0
  249. package/src/next/components/DualListSelector/index.ts +7 -0
  250. package/src/next/components/DualListSelector/treeUtils.ts +81 -0
  251. package/src/next/components/index.ts +1 -0
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DualListSelectorTreeItem = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const dual_list_selector_1 = tslib_1.__importDefault(require("@patternfly/react-styles/css/components/DualListSelector/dual-list-selector"));
7
+ const react_styles_1 = require("@patternfly/react-styles");
8
+ const Badge_1 = require("../../../components/Badge");
9
+ const angle_right_icon_1 = tslib_1.__importDefault(require('@patternfly/react-icons/dist/js/icons/angle-right-icon'));
10
+ const treeUtils_1 = require("./treeUtils");
11
+ const DualListSelectorContext_1 = require("./DualListSelectorContext");
12
+ const DualListSelectorTreeItemBase = (_a) => {
13
+ var { onOptionCheck, children, className, id, text, defaultExpanded, hasBadge, isChecked, checkProps, badgeProps, itemData, isDisabled = false,
14
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
+ useMemo } = _a, props = tslib_1.__rest(_a, ["onOptionCheck", "children", "className", "id", "text", "defaultExpanded", "hasBadge", "isChecked", "checkProps", "badgeProps", "itemData", "isDisabled", "useMemo"]);
16
+ const ref = React.useRef(null);
17
+ const [isExpanded, setIsExpanded] = React.useState(defaultExpanded || false);
18
+ const { setFocusedOption } = React.useContext(DualListSelectorContext_1.DualListSelectorListContext);
19
+ React.useEffect(() => {
20
+ setIsExpanded(defaultExpanded);
21
+ }, [defaultExpanded]);
22
+ return (React.createElement("li", Object.assign({ className: (0, react_styles_1.css)(dual_list_selector_1.default.dualListSelectorListItem, className, children && dual_list_selector_1.default.modifiers.expandable, isExpanded && dual_list_selector_1.default.modifiers.expanded, isDisabled && dual_list_selector_1.default.modifiers.disabled), id: id }, props, { "aria-selected": isChecked, role: "treeitem" }, (isExpanded && { 'aria-expanded': 'true' })),
23
+ React.createElement("div", { className: (0, react_styles_1.css)(dual_list_selector_1.default.dualListSelectorListItemRow, isChecked && dual_list_selector_1.default.modifiers.selected, dual_list_selector_1.default.modifiers.check) },
24
+ React.createElement("div", { className: (0, react_styles_1.css)(dual_list_selector_1.default.dualListSelectorItem), ref: ref, tabIndex: -1, onClick: isDisabled
25
+ ? undefined
26
+ : (evt) => {
27
+ onOptionCheck && onOptionCheck(evt, !isChecked, itemData);
28
+ setFocusedOption(id);
29
+ } },
30
+ React.createElement("span", { className: (0, react_styles_1.css)(dual_list_selector_1.default.dualListSelectorItemMain) },
31
+ children && (React.createElement("div", { className: (0, react_styles_1.css)(dual_list_selector_1.default.dualListSelectorItemToggle), onClick: (e) => {
32
+ if (children) {
33
+ setIsExpanded(!isExpanded);
34
+ }
35
+ e.stopPropagation();
36
+ }, onKeyDown: (e) => {
37
+ if (e.key === ' ' || e.key === 'Enter') {
38
+ document.activeElement.click();
39
+ e.preventDefault();
40
+ }
41
+ }, tabIndex: -1 },
42
+ React.createElement("span", { className: (0, react_styles_1.css)(dual_list_selector_1.default.dualListSelectorItemToggleIcon) },
43
+ React.createElement(angle_right_icon_1.default, { "aria-hidden": true })))),
44
+ React.createElement("span", { className: (0, react_styles_1.css)(dual_list_selector_1.default.dualListSelectorItemCheck) },
45
+ React.createElement("input", Object.assign({ type: "checkbox", onChange: (evt) => {
46
+ onOptionCheck && onOptionCheck(evt, !isChecked, itemData);
47
+ setFocusedOption(id);
48
+ }, onClick: (evt) => evt.stopPropagation(), onKeyDown: (e) => {
49
+ if (e.key === ' ' || e.key === 'Enter') {
50
+ onOptionCheck && onOptionCheck(e, !isChecked, itemData);
51
+ setFocusedOption(id);
52
+ e.preventDefault();
53
+ }
54
+ }, ref: (elem) => elem && (elem.indeterminate = isChecked === null), checked: isChecked || false, tabIndex: -1 }, checkProps))),
55
+ React.createElement("span", { className: (0, react_styles_1.css)(dual_list_selector_1.default.dualListSelectorItemText) }, text),
56
+ hasBadge && children && (React.createElement("span", { className: (0, react_styles_1.css)(dual_list_selector_1.default.dualListSelectorItemCount) },
57
+ React.createElement(Badge_1.Badge, Object.assign({}, badgeProps), (0, treeUtils_1.flattenTree)(children.props.data).length)))))),
58
+ isExpanded && children));
59
+ };
60
+ exports.DualListSelectorTreeItem = React.memo(DualListSelectorTreeItemBase, (prevProps, nextProps) => {
61
+ if (!nextProps.useMemo) {
62
+ return false;
63
+ }
64
+ if (prevProps.className !== nextProps.className ||
65
+ prevProps.text !== nextProps.text ||
66
+ prevProps.id !== nextProps.id ||
67
+ prevProps.defaultExpanded !== nextProps.defaultExpanded ||
68
+ prevProps.checkProps !== nextProps.checkProps ||
69
+ prevProps.hasBadge !== nextProps.hasBadge ||
70
+ prevProps.badgeProps !== nextProps.badgeProps ||
71
+ prevProps.isChecked !== nextProps.isChecked ||
72
+ prevProps.itemData !== nextProps.itemData) {
73
+ return false;
74
+ }
75
+ return true;
76
+ });
77
+ exports.DualListSelectorTreeItem.displayName = 'DualListSelectorTreeItem';
78
+ //# sourceMappingURL=DualListSelectorTreeItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DualListSelectorTreeItem.js","sourceRoot":"","sources":["../../../../../src/next/components/DualListSelector/DualListSelectorTreeItem.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from './DualListSelector';
2
+ export * from './DualListSelectorControl';
3
+ export * from './DualListSelectorControlsWrapper';
4
+ export * from './DualListSelectorPane';
5
+ export * from './DualListSelectorList';
6
+ export * from './DualListSelectorListItem';
7
+ export * from './DualListSelectorTree';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/DualListSelector/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./DualListSelector"), exports);
5
+ tslib_1.__exportStar(require("./DualListSelectorControl"), exports);
6
+ tslib_1.__exportStar(require("./DualListSelectorControlsWrapper"), exports);
7
+ tslib_1.__exportStar(require("./DualListSelectorPane"), exports);
8
+ tslib_1.__exportStar(require("./DualListSelectorList"), exports);
9
+ tslib_1.__exportStar(require("./DualListSelectorListItem"), exports);
10
+ tslib_1.__exportStar(require("./DualListSelectorTree"), exports);
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/next/components/DualListSelector/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,oEAA0C;AAC1C,4EAAkD;AAClD,iEAAuC;AACvC,iEAAuC;AACvC,qEAA2C;AAC3C,iEAAuC"}
@@ -0,0 +1,8 @@
1
+ import { DualListSelectorTreeItemData } from './DualListSelectorTree';
2
+ export declare function flattenTree(tree: DualListSelectorTreeItemData[]): string[];
3
+ export declare function flattenTreeWithFolders(tree: DualListSelectorTreeItemData[]): string[];
4
+ export declare function filterFolders(tree: DualListSelectorTreeItemData[], inputList: string[]): string[];
5
+ export declare function filterTreeItems(item: DualListSelectorTreeItemData, inputList: string[]): boolean;
6
+ export declare function filterTreeItemsWithoutFolders(item: DualListSelectorTreeItemData, inputList: string[]): boolean;
7
+ export declare function filterRestTreeItems(item: DualListSelectorTreeItemData, inputList: string[]): boolean;
8
+ //# sourceMappingURL=treeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeUtils.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/DualListSelector/treeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAEtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,4BAA4B,EAAE,GAAG,MAAM,EAAE,CAU1E;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,4BAA4B,EAAE,GAAG,MAAM,EAAE,CASrF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,4BAA4B,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAYjG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,4BAA4B,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAWhG;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,4BAA4B,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAc9G;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,4BAA4B,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAYpG"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterRestTreeItems = exports.filterTreeItemsWithoutFolders = exports.filterTreeItems = exports.filterFolders = exports.flattenTreeWithFolders = exports.flattenTree = void 0;
4
+ function flattenTree(tree) {
5
+ let result = [];
6
+ tree.forEach((item) => {
7
+ if (item.children) {
8
+ result = result.concat(flattenTree(item.children));
9
+ }
10
+ else {
11
+ result.push(item.id);
12
+ }
13
+ });
14
+ return result;
15
+ }
16
+ exports.flattenTree = flattenTree;
17
+ function flattenTreeWithFolders(tree) {
18
+ let result = [];
19
+ tree.forEach((item) => {
20
+ result.push(item.id);
21
+ if (item.children) {
22
+ result = result.concat(flattenTreeWithFolders(item.children));
23
+ }
24
+ });
25
+ return result;
26
+ }
27
+ exports.flattenTreeWithFolders = flattenTreeWithFolders;
28
+ function filterFolders(tree, inputList) {
29
+ let result = [];
30
+ tree.forEach((item) => {
31
+ if (item.children) {
32
+ result = result.concat(filterFolders(item.children, inputList));
33
+ }
34
+ else {
35
+ if (inputList.includes(item.id)) {
36
+ result.push(item.id);
37
+ }
38
+ }
39
+ });
40
+ return result;
41
+ }
42
+ exports.filterFolders = filterFolders;
43
+ function filterTreeItems(item, inputList) {
44
+ if (inputList.includes(item.id)) {
45
+ return true;
46
+ }
47
+ if (item.children) {
48
+ return ((item.children = item.children
49
+ .map((opt) => Object.assign({}, opt))
50
+ .filter((child) => filterTreeItems(child, inputList))).length > 0);
51
+ }
52
+ }
53
+ exports.filterTreeItems = filterTreeItems;
54
+ function filterTreeItemsWithoutFolders(item, inputList) {
55
+ if (item.children) {
56
+ return ((item.children = item.children
57
+ .map((opt) => Object.assign({}, opt))
58
+ .filter((child) => child.children ? filterTreeItemsWithoutFolders(child, inputList) : filterTreeItems(child, inputList))).length > 0);
59
+ }
60
+ if (inputList.includes(item.id)) {
61
+ return true;
62
+ }
63
+ }
64
+ exports.filterTreeItemsWithoutFolders = filterTreeItemsWithoutFolders;
65
+ function filterRestTreeItems(item, inputList) {
66
+ if (item.children) {
67
+ const child = (item.children = item.children
68
+ .map((opt) => Object.assign({}, opt))
69
+ .filter((child) => filterRestTreeItems(child, inputList))).length > 0;
70
+ return child;
71
+ }
72
+ if (!inputList.includes(item.id)) {
73
+ return true;
74
+ }
75
+ }
76
+ exports.filterRestTreeItems = filterRestTreeItems;
77
+ //# sourceMappingURL=treeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeUtils.js","sourceRoot":"","sources":["../../../../../src/next/components/DualListSelector/treeUtils.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export * from './Modal';
2
+ export * from './DualListSelector';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/next/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/next/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC"}
@@ -2,4 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./Modal"), exports);
5
+ tslib_1.__exportStar(require("./DualListSelector"), exports);
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/next/components/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/next/components/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,6DAAmC"}
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"5.3.0-prerelease.2","private":true}
1
+ {"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"5.3.0-prerelease.3","private":true}
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"5.3.0-prerelease.2","private":true}
1
+ {"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"5.3.0-prerelease.3","private":true}
package/next/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"5.3.0-prerelease.2","private":true}
1
+ {"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"5.3.0-prerelease.3","private":true}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "5.3.0-prerelease.3",
3
+ "version": "5.3.0-prerelease.4",
4
4
  "description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
5
5
  "main": "dist/js/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -72,5 +72,5 @@
72
72
  "react": "^17 || ^18",
73
73
  "react-dom": "^17 || ^18"
74
74
  },
75
- "gitHead": "30a6d2d779a838ab2766be7e89b78202efd0c456"
75
+ "gitHead": "c07b540a74ca2c9a8b644cfa8bb38fd29ef4b0a7"
76
76
  }
@@ -0,0 +1,50 @@
1
+ import * as React from 'react';
2
+ import styles from '@patternfly/react-styles/css/components/DualListSelector/dual-list-selector';
3
+ import { css } from '@patternfly/react-styles';
4
+ import { GenerateId, PickOptional } from '../../../helpers';
5
+ import { DualListSelectorContext } from './DualListSelectorContext';
6
+
7
+ /** Acts as a container for all other DualListSelector sub-components when using a
8
+ * composable dual list selector.
9
+ */
10
+
11
+ export interface DualListSelectorProps {
12
+ /** Additional classes applied to the dual list selector. */
13
+ className?: string;
14
+ /** ID of the dual list selector. */
15
+ id?: string;
16
+ /** Flag indicating if the dual list selector uses trees instead of simple lists. */
17
+ isTree?: boolean;
18
+ /** Content to be rendered in the dual list selector. */
19
+ children?: React.ReactNode;
20
+ }
21
+
22
+ class DualListSelector extends React.Component<DualListSelectorProps> {
23
+ static displayName = 'DualListSelector';
24
+ static defaultProps: PickOptional<DualListSelectorProps> = {
25
+ children: '',
26
+ isTree: false
27
+ };
28
+
29
+ constructor(props: DualListSelectorProps) {
30
+ super(props);
31
+ }
32
+
33
+ render() {
34
+ const { className, children, id, isTree, ...props } = this.props;
35
+
36
+ return (
37
+ <DualListSelectorContext.Provider value={{ isTree }}>
38
+ <GenerateId>
39
+ {(randomId) => (
40
+ <div className={css(styles.dualListSelector, className)} id={id || randomId} {...props}>
41
+ {children}
42
+ </div>
43
+ )}
44
+ </GenerateId>
45
+ </DualListSelectorContext.Provider>
46
+ );
47
+ }
48
+ }
49
+
50
+ export { DualListSelector };
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+
3
+ export const DualListSelectorContext = React.createContext<{
4
+ isTree?: boolean;
5
+ }>({ isTree: false });
6
+
7
+ export const DualListSelectorListContext = React.createContext<{
8
+ setFocusedOption?: (id: string) => void;
9
+ isTree?: boolean;
10
+ ariaLabelledBy?: string;
11
+ focusedOption?: string;
12
+ displayOption?: (option: React.ReactNode) => boolean;
13
+ selectedOptions?: string[] | number[];
14
+ id?: string;
15
+ options?: React.ReactNode[];
16
+ isDisabled?: boolean;
17
+ }>({});
18
+
19
+ export const DualListSelectorPaneContext = React.createContext<{
20
+ isChosen: boolean;
21
+ }>({ isChosen: false });
@@ -0,0 +1,66 @@
1
+ import * as React from 'react';
2
+ import { css } from '@patternfly/react-styles';
3
+ import { Button, ButtonVariant } from '../../../components/Button';
4
+ import { Tooltip } from '../../../components/Tooltip';
5
+ import styles from '@patternfly/react-styles/css/components/DualListSelector/dual-list-selector';
6
+
7
+ /** Renders an individual control button for moving selected options between each
8
+ * dual list selector pane.
9
+ */
10
+
11
+ export interface DualListSelectorControlProps extends Omit<React.HTMLProps<HTMLDivElement>, 'onClick'> {
12
+ /** Content to be rendered in the dual list selector control. */
13
+ children?: React.ReactNode;
14
+ /** @hide forwarded ref */
15
+ innerRef?: React.Ref<any>;
16
+ /** Flag indicating the control is disabled. */
17
+ isDisabled?: boolean;
18
+ /** Additional classes applied to the dual list selector control. */
19
+ className?: string;
20
+ /** Callback fired when dual list selector control is selected. */
21
+ onClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
22
+ /** Accessible label for the dual list selector control. */
23
+ 'aria-label'?: string;
24
+ /** Content to be displayed in a tooltip on hover of control. */
25
+ tooltipContent?: React.ReactNode;
26
+ /** Additional tooltip properties passed to the tooltip. */
27
+ tooltipProps?: any;
28
+ }
29
+
30
+ export const DualListSelectorControlBase: React.FunctionComponent<DualListSelectorControlProps> = ({
31
+ innerRef,
32
+ children,
33
+ className,
34
+ 'aria-label': ariaLabel,
35
+ isDisabled = true,
36
+ onClick = () => {},
37
+ tooltipContent,
38
+ tooltipProps = {} as any,
39
+ ...props
40
+ }: DualListSelectorControlProps) => {
41
+ const privateRef = React.useRef(null);
42
+ const ref = innerRef || privateRef;
43
+ return (
44
+ <div className={css(styles.dualListSelectorControlsItem, className)} {...props}>
45
+ <Button
46
+ isDisabled={isDisabled}
47
+ aria-disabled={isDisabled}
48
+ variant={ButtonVariant.plain}
49
+ onClick={onClick}
50
+ aria-label={ariaLabel}
51
+ tabIndex={-1}
52
+ ref={ref}
53
+ >
54
+ {children}
55
+ </Button>
56
+ {tooltipContent && <Tooltip content={tooltipContent} position="left" triggerRef={ref} {...tooltipProps} />}
57
+ </div>
58
+ );
59
+ };
60
+ DualListSelectorControlBase.displayName = 'DualListSelectorControlBase';
61
+
62
+ export const DualListSelectorControl = React.forwardRef((props: DualListSelectorControlProps, ref: React.Ref<any>) => (
63
+ <DualListSelectorControlBase innerRef={ref} {...props} />
64
+ ));
65
+
66
+ DualListSelectorControl.displayName = 'DualListSelectorControl';
@@ -0,0 +1,87 @@
1
+ import * as React from 'react';
2
+ import styles from '@patternfly/react-styles/css/components/DualListSelector/dual-list-selector';
3
+ import { css } from '@patternfly/react-styles';
4
+ import { handleArrows } from '../../../helpers';
5
+
6
+ /** Acts as the container for the DualListSelectorControl sub-components. */
7
+
8
+ export interface DualListSelectorControlsWrapperProps extends React.HTMLProps<HTMLDivElement> {
9
+ /** Content to be rendered inside of the controls wrapper. */
10
+ children?: React.ReactNode;
11
+ /** Additional classes added to the wrapper. */
12
+ className?: string;
13
+ /** @hide Forwarded ref */
14
+ innerRef?: React.RefObject<HTMLDivElement>;
15
+ /** Accessible label for the dual list selector controls wrapper. */
16
+ 'aria-label'?: string;
17
+ }
18
+
19
+ export const DualListSelectorControlsWrapperBase: React.FunctionComponent<DualListSelectorControlsWrapperProps> = ({
20
+ innerRef,
21
+ children = null,
22
+ className,
23
+ 'aria-label': ariaLabel = 'Controls for moving options between lists',
24
+ ...props
25
+ }: DualListSelectorControlsWrapperProps) => {
26
+ const ref = React.useRef(null);
27
+ const wrapperRef = innerRef || ref;
28
+ // Adds keyboard navigation to the dynamically built dual list selector controls. Works when controls are dynamically built
29
+ // as well as when they are passed in via children.
30
+ const handleKeys = (event: KeyboardEvent) => {
31
+ if (
32
+ !wrapperRef.current ||
33
+ (wrapperRef.current !== (event.target as HTMLElement).closest(`.${styles.dualListSelectorControls}`) &&
34
+ !Array.from(wrapperRef.current.getElementsByClassName(styles.dualListSelectorControls)).includes(
35
+ (event.target as HTMLElement).closest(`.${styles.dualListSelectorControls}`)
36
+ ))
37
+ ) {
38
+ return;
39
+ }
40
+ event.stopImmediatePropagation();
41
+
42
+ const controls = (Array.from(wrapperRef.current.getElementsByTagName('BUTTON')) as Element[]).filter(
43
+ (el) => !el.classList.contains('pf-m-disabled')
44
+ );
45
+ const activeElement = document.activeElement;
46
+ handleArrows(
47
+ event,
48
+ controls,
49
+ (element: Element) => activeElement.contains(element),
50
+ (element: Element) => element,
51
+ undefined,
52
+ undefined,
53
+ true,
54
+ false
55
+ );
56
+ };
57
+
58
+ React.useEffect(() => {
59
+ window.addEventListener('keydown', handleKeys);
60
+ return () => {
61
+ window.removeEventListener('keydown', handleKeys);
62
+ };
63
+ // eslint-disable-next-line react-hooks/exhaustive-deps
64
+ }, [wrapperRef.current]);
65
+
66
+ return (
67
+ <div
68
+ className={css(styles.dualListSelectorControls, className)}
69
+ tabIndex={0}
70
+ ref={wrapperRef}
71
+ aria-label={ariaLabel}
72
+ {...props}
73
+ >
74
+ {children}
75
+ </div>
76
+ );
77
+ };
78
+
79
+ DualListSelectorControlsWrapperBase.displayName = 'DualListSelectorControlsWrapperBase';
80
+
81
+ export const DualListSelectorControlsWrapper = React.forwardRef(
82
+ (props: DualListSelectorControlsWrapperProps, ref: React.Ref<HTMLDivElement>) => (
83
+ <DualListSelectorControlsWrapperBase innerRef={ref as React.MutableRefObject<any>} role="group" {...props} />
84
+ )
85
+ );
86
+
87
+ DualListSelectorControlsWrapper.displayName = 'DualListSelectorControlsWrapper';
@@ -0,0 +1,57 @@
1
+ import { css } from '@patternfly/react-styles';
2
+ import styles from '@patternfly/react-styles/css/components/DualListSelector/dual-list-selector';
3
+ import { DualListSelectorListItem } from './DualListSelectorListItem';
4
+ import * as React from 'react';
5
+ import { DualListSelectorListContext } from './DualListSelectorContext';
6
+
7
+ /** Acts as the container for DualListSelectorListItem sub-components. */
8
+
9
+ export interface DualListSelectorListProps extends React.HTMLProps<HTMLUListElement> {
10
+ /** Content rendered inside the dual list selector list. */
11
+ children?: React.ReactNode;
12
+ }
13
+
14
+ export const DualListSelectorList: React.FunctionComponent<DualListSelectorListProps> = ({
15
+ children,
16
+ ...props
17
+ }: DualListSelectorListProps) => {
18
+ const { isTree, ariaLabelledBy, focusedOption, displayOption, selectedOptions, id, options, isDisabled } =
19
+ React.useContext(DualListSelectorListContext);
20
+
21
+ const hasOptions = () =>
22
+ options.length !== 0 || (children !== undefined && (children as React.ReactNode[]).length !== 0);
23
+
24
+ return (
25
+ <ul
26
+ className={css(styles.dualListSelectorList)}
27
+ {...(hasOptions() && {
28
+ role: isTree ? 'tree' : 'listbox',
29
+ 'aria-multiselectable': true,
30
+ 'aria-labelledby': ariaLabelledBy,
31
+ 'aria-activedescendant': focusedOption
32
+ })}
33
+ aria-disabled={isDisabled ? 'true' : undefined}
34
+ {...props}
35
+ >
36
+ {options.length === 0
37
+ ? children
38
+ : options.map((option, index) => {
39
+ if (displayOption(option)) {
40
+ return (
41
+ <DualListSelectorListItem
42
+ key={index}
43
+ isSelected={(selectedOptions as number[]).indexOf(index) !== -1}
44
+ id={`${id}-option-${index}`}
45
+ orderIndex={index}
46
+ isDisabled={isDisabled}
47
+ >
48
+ {option}
49
+ </DualListSelectorListItem>
50
+ );
51
+ }
52
+ return;
53
+ })}
54
+ </ul>
55
+ );
56
+ };
57
+ DualListSelectorList.displayName = 'DualListSelectorList';