@amboss/design-system 3.36.2 → 3.36.3

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.
@@ -1,3 +1,3 @@
1
1
  import React from "react";
2
2
  import type { EntityListProps } from "./types";
3
- export declare function BaseEntityList({ data, size, onClick, isSelectable, selectedIds, onSelectionChange, onSelectionToggle, renderRightContent, getLeftIconProps, hideBorder, filterFn, isVirtualized, maxHeight, ariaAttributes: deprecatedAriaAttributes, slotProps, "data-e2e-test-id": dataE2eTestId, ...ariaAttributes }: EntityListProps): React.ReactElement;
3
+ export declare function BaseEntityList({ data, size, onClick, isSelectable, selectedIds, onSelectionChange, onSelectionToggle, renderRightContent, getLeftIconProps, hideBorder, filterFn, isVirtualized, maxHeight, ariaAttributes: deprecatedAriaAttributes, slotProps, role: roleProp, "data-e2e-test-id": dataE2eTestId, ...ariaAttributes }: EntityListProps): React.ReactElement;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"BaseEntityList",{enumerable:!0,get:function(){return BaseEntityList}});const _interop_require_default=require("@swc/helpers/_/_interop_require_default"),_react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_styled=/*#__PURE__*/_interop_require_default._(require("@emotion/styled")),_styledcomponents=require("./styled-components"),_useKeyboard=require("../../shared/useKeyboard"),_Icon=require("../Icon/Icon"),_EntityListItem=require("./EntityListItem"),_VirtualizedEntityList=require("./VirtualizedEntityList"),_useFocusByIndex=require("./useFocusByIndex"),StyledMinHeightCell=(0,_styled.default)("div",{target:"e18an0wv0",label:"StyledMinHeightCell"})(({theme,textSize})=>({minHeight:"s"===textSize?`calc(${theme.variables.size.spacing.m} + ${theme.variables.size.spacing.xxs})`:theme.variables.size.spacing.l,display:"flex",alignItems:"center"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9CYXNlRW50aXR5TGlzdC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvQmFzZUVudGl0eUxpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VSZWYsIHVzZU1lbW8sIHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IFN0eWxlZExpc3QgfSBmcm9tIFwiLi9zdHlsZWQtY29tcG9uZW50c1wiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHlMaXN0UHJvcHMsIExpc3ROb2RlLCBUZXh0U2l6ZVByb3BzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IHVzZUtleWJvYXJkIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC91c2VLZXlib2FyZFwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IEVudGl0eUxpc3RJdGVtIH0gZnJvbSBcIi4vRW50aXR5TGlzdEl0ZW1cIjtcbmltcG9ydCB7IFZpcnR1YWxpemVkRW50aXR5TGlzdCB9IGZyb20gXCIuL1ZpcnR1YWxpemVkRW50aXR5TGlzdFwiO1xuaW1wb3J0IHsgdXNlRm9jdXNCeUluZGV4IH0gZnJvbSBcIi4vdXNlRm9jdXNCeUluZGV4XCI7XG5cbi8vIFRoaXMgbWluSGVpZ2h0IGlzIG5lZWRlZCBmb3IgYWxpZ24gc21hbGwgaWNvbnMgaW4gdGhlIG1pZGRsZSBvZiAxIHJvdyB0ZXh0LFxuLy8gYnV0IGl0IHNob3VsZCBzdGF5IGF0IHRoZSB0b3AgaWYgdGhlcmUgaXMgbXVsdGlsaW5lIHRleHRcbmNvbnN0IFN0eWxlZE1pbkhlaWdodENlbGwgPSBzdHlsZWQuZGl2PFRleHRTaXplUHJvcHM+KFxuICAoeyB0aGVtZSwgdGV4dFNpemUgfSkgPT4gKHtcbiAgICBtaW5IZWlnaHQ6XG4gICAgICB0ZXh0U2l6ZSA9PT0gXCJzXCJcbiAgICAgICAgPyBgY2FsYygke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcubX0gKyAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzfSlgXG4gICAgICAgIDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5sLFxuICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIH0pXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gQmFzZUVudGl0eUxpc3Qoe1xuICBkYXRhLFxuICBzaXplID0gXCJtXCIsXG4gIG9uQ2xpY2ssXG4gIGlzU2VsZWN0YWJsZSxcbiAgc2VsZWN0ZWRJZHMsXG4gIG9uU2VsZWN0aW9uQ2hhbmdlLFxuICBvblNlbGVjdGlvblRvZ2dsZSxcbiAgcmVuZGVyUmlnaHRDb250ZW50LFxuICBnZXRMZWZ0SWNvblByb3BzLFxuICBoaWRlQm9yZGVyLFxuICBmaWx0ZXJGbixcbiAgaXNWaXJ0dWFsaXplZCxcbiAgbWF4SGVpZ2h0LFxuICBhcmlhQXR0cmlidXRlczogZGVwcmVjYXRlZEFyaWFBdHRyaWJ1dGVzLFxuICBzbG90UHJvcHMsXG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAuLi5hcmlhQXR0cmlidXRlc1xufTogRW50aXR5TGlzdFByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgYXJpYUxhYmVsRXhwYW5kID1cbiAgICBzbG90UHJvcHM/LnRvZ2dsZT8uW1wiYXJpYS1sYWJlbC1leHBhbmRcIl0gPz9cbiAgICBkZXByZWNhdGVkQXJpYUF0dHJpYnV0ZXM/LmFyaWFMYWJlbEV4cGFuZDtcbiAgY29uc3QgYXJpYUxhYmVsQ29sbGFwc2UgPVxuICAgIHNsb3RQcm9wcz8udG9nZ2xlPy5bXCJhcmlhLWxhYmVsLWNvbGxhcHNlXCJdID8/XG4gICAgZGVwcmVjYXRlZEFyaWFBdHRyaWJ1dGVzPy5hcmlhTGFiZWxDb2xsYXBzZTtcblxuICBjb25zdCBkYXRhU2hvd24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWRhdGEubGVuZ3RoKSByZXR1cm4gZGF0YTtcblxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGRhdGEuZmlsdGVyKGZpbHRlckZuKSA6IGRhdGE7XG4gIH0sIFtkYXRhLCBmaWx0ZXJGbl0pO1xuXG4gIGNvbnN0IHNlbGVjdGVkSWRzU2V0ID0gdXNlTWVtbygoKSA9PiBuZXcgU2V0KHNlbGVjdGVkSWRzKSwgW3NlbGVjdGVkSWRzXSk7XG5cbiAgY29uc3QgbGlzdFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgY29uc3QgZm9jdXNhYmxlSXRlbXMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBkYXRhU2hvd24ubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgaXNEaXNhYmxlZDogQm9vbGVhbihpdGVtLmlzRGlzYWJsZWQpLFxuICAgICAgfSkpLFxuICAgIFtkYXRhU2hvd25dXG4gICk7XG5cbiAgY29uc3QgeyBtb3ZlRm9jdXMsIGZvY3VzZWRJbmRleDogc2VsZWN0ZWRJbmRleCB9ID0gdXNlRm9jdXNCeUluZGV4KHtcbiAgICBjb250YWluZXJSZWY6IGxpc3RSZWYsXG4gICAgbm9kZVNlbGVjdG9yOiBcImRhdGEtbGlzdC1pdGVtXCIsXG4gICAgZGF0YTogZm9jdXNhYmxlSXRlbXMsXG4gICAgcHJldmVudFNjcm9sbDogaXNWaXJ0dWFsaXplZCxcbiAgfSk7XG5cbiAgdXNlS2V5Ym9hcmQoXG4gICAge1xuICAgICAgQXJyb3dEb3duOiAoKSA9PiB7XG4gICAgICAgIG1vdmVGb2N1cygxKTtcbiAgICAgIH0sXG4gICAgICBBcnJvd1VwOiAoKSA9PiB7XG4gICAgICAgIG1vdmVGb2N1cygtMSk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgbGlzdFJlZixcbiAgICBpc1NlbGVjdGFibGVcbiAgKTtcbiAgY29uc3QgaGFuZGxlT25DbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChpdGVtOiBMaXN0Tm9kZSkgPT4ge1xuICAgICAgY29uc3QgeyBpZCB9ID0gaXRlbTtcblxuICAgICAgaWYgKGlzU2VsZWN0YWJsZSkge1xuICAgICAgICBjb25zdCB3aWxsQmVTZWxlY3RlZCA9ICFzZWxlY3RlZElkc1NldC5oYXMoaWQpO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZElkc1NldCA9IG5ldyBTZXQoc2VsZWN0ZWRJZHNTZXQpO1xuXG4gICAgICAgIGlmICh3aWxsQmVTZWxlY3RlZCkge1xuICAgICAgICAgIG5ld1NlbGVjdGVkSWRzU2V0LmFkZChpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3U2VsZWN0ZWRJZHNTZXQuZGVsZXRlKGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9uU2VsZWN0aW9uVG9nZ2xlPy4oaWQsIHdpbGxCZVNlbGVjdGVkKTtcbiAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2U/LihBcnJheS5mcm9tKG5ld1NlbGVjdGVkSWRzU2V0KSk7XG4gICAgICB9XG5cbiAgICAgIG9uQ2xpY2s/LihpdGVtKTtcbiAgICB9LFxuICAgIFtcbiAgICAgIHNlbGVjdGVkSWRzU2V0LFxuICAgICAgb25TZWxlY3Rpb25DaGFuZ2UsXG4gICAgICBvblNlbGVjdGlvblRvZ2dsZSxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBpc1NlbGVjdGFibGUsXG4gICAgXVxuICApO1xuICBjb25zdCByZW5kZXJFbnRpdHlJdGVtID0gKGluZGV4OiBudW1iZXIpOiBSZWFjdC5SZWFjdE5vZGUgPT4ge1xuICAgIGNvbnN0IGl0ZW0gPSBkYXRhU2hvd25baW5kZXhdO1xuICAgIGlmICghaXRlbSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBpc0xhc3RJdGVtID0gaW5kZXggPT09IGRhdGFTaG93bi5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGlzRmlyc3RJdGVtID0gaW5kZXggPT09IDA7XG4gICAgY29uc3QgZGVmYXVsdFRhYkluZGV4ID0gaXNGaXJzdEl0ZW0gJiYgIXNlbGVjdGVkSW5kZXg7XG4gICAgY29uc3QgdGFiSW5kZXggPVxuICAgICAgIWl0ZW0uaXNEaXNhYmxlZCAmJlxuICAgICAgaXNTZWxlY3RhYmxlICYmXG4gICAgICAoaW5kZXggPT09IHNlbGVjdGVkSW5kZXggfHwgZGVmYXVsdFRhYkluZGV4KVxuICAgICAgICA/IDBcbiAgICAgICAgOiAtMTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gc2VsZWN0ZWRJZHNTZXQuaGFzKGl0ZW0uaWQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxFbnRpdHlMaXN0SXRlbVxuICAgICAgICBrZXk9e2l0ZW0uaWR9XG4gICAgICAgIGRhdGEtbGlzdC1pdGVtPXtpbmRleH1cbiAgICAgICAgYXJpYS1sYWJlbD17aXRlbVtcImFyaWEtbGFiZWxcIl0gfHwgaXRlbS5sYWJlbH1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgaGlkZUJvcmRlcj17aGlkZUJvcmRlciB8fCBpc0xhc3RJdGVtfVxuICAgICAgICBpc0FjdGl2ZT17aXRlbS5pc0FjdGl2ZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXRlbS5pc0Rpc2FibGVkfVxuICAgICAgICBpc0NsaWNrYWJsZT17Qm9vbGVhbihvbkNsaWNrIHx8IHNlbGVjdGVkSWRzKX1cbiAgICAgICAgaXNTZWxlY3RlZD17aXNTZWxlY3RhYmxlID8gaXNTZWxlY3RlZCA6IHVuZGVmaW5lZH1cbiAgICAgICAgZGVzY3JpcHRpb249e2l0ZW0uZGVzY3JpcHRpb259XG4gICAgICAgIG9uU3BhY2VFbnRlclByZXNzPXsoKSA9PiBoYW5kbGVPbkNsaWNrKGl0ZW0pfVxuICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgIGFyaWFMYWJlbEV4cGFuZD17YXJpYUxhYmVsRXhwYW5kfVxuICAgICAgICBhcmlhTGFiZWxDb2xsYXBzZT17YXJpYUxhYmVsQ29sbGFwc2V9XG4gICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNJbnNpZGVMYWJlbCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcImxhYmVsXCIpO1xuICAgICAgICAgIGlmICghaXNJbnNpZGVMYWJlbCkge1xuICAgICAgICAgICAgaGFuZGxlT25DbGljayhpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNoZWNrYm94UHJvcHM9e1xuICAgICAgICAgIGlzU2VsZWN0YWJsZSAmJiB7XG4gICAgICAgICAgICBuYW1lOiBcImxpc3QtY2hlY2tib3hcIixcbiAgICAgICAgICAgIHNpemU6IFwic1wiLFxuICAgICAgICAgICAgY2hlY2tlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiBoYW5kbGVPbkNsaWNrKGl0ZW0pLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZW5kZXJMYWJlbD17KCkgPT4gaXRlbS5sYWJlbH1cbiAgICAgICAgcmVuZGVyTGVmdD17XG4gICAgICAgICAgZ2V0TGVmdEljb25Qcm9wc1xuICAgICAgICAgICAgPyAoeyB0ZXh0U2l6ZSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPEljb24gey4uLmdldExlZnRJY29uUHJvcHMoaXRlbSl9IHNpemU9e3RleHRTaXplfSAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IG51bGxcbiAgICAgICAgfVxuICAgICAgICByZW5kZXJSaWdodD17KHsgYWN0aW9uU2l6ZSwgdGV4dFNpemUgfSkgPT5cbiAgICAgICAgICByZW5kZXJSaWdodENvbnRlbnQgPyAoXG4gICAgICAgICAgICA8U3R5bGVkTWluSGVpZ2h0Q2VsbCB0ZXh0U2l6ZT17dGV4dFNpemV9PlxuICAgICAgICAgICAgICB7cmVuZGVyUmlnaHRDb250ZW50KHsgdGV4dFNpemUsIGFjdGlvblNpemUsIC4uLml0ZW0gfSl9XG4gICAgICAgICAgICA8L1N0eWxlZE1pbkhlaWdodENlbGw+XG4gICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e2xpc3RSZWZ9PlxuICAgICAge2lzVmlydHVhbGl6ZWQgJiYgbWF4SGVpZ2h0ID8gKFxuICAgICAgICA8VmlydHVhbGl6ZWRFbnRpdHlMaXN0XG4gICAgICAgICAgaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgbWF4SGVpZ2h0PXttYXhIZWlnaHR9XG4gICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICBkYXRhU2hvd249e2RhdGFTaG93bn1cbiAgICAgICAgICBzZWxlY3RlZEluZGV4PXtzZWxlY3RlZEluZGV4fVxuICAgICAgICAgIGl0ZW1UZW1wbGF0ZT17cmVuZGVyRW50aXR5SXRlbX1cbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIHJvbGU9e2lzU2VsZWN0YWJsZSA/IFwibGlzdGJveFwiIDogXCJsaXN0XCJ9XG4gICAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9e2lzU2VsZWN0YWJsZSA/IHRydWUgOiB1bmRlZmluZWR9XG4gICAgICAgICAgey4uLmFyaWFBdHRyaWJ1dGVzfVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPFN0eWxlZExpc3RcbiAgICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgZGF0YS1kcy1pZD1cIkVudGl0eUxpc3RcIlxuICAgICAgICAgIHsuLi5hcmlhQXR0cmlidXRlc31cbiAgICAgICAgICByb2xlPXtpc1NlbGVjdGFibGUgPyBcImxpc3Rib3hcIiA6IFwibGlzdFwifVxuICAgICAgICAgIGFyaWEtbXVsdGlzZWxlY3RhYmxlPXtpc1NlbGVjdGFibGUgPyB0cnVlIDogdW5kZWZpbmVkfVxuICAgICAgICA+XG4gICAgICAgICAge2RhdGFTaG93bi5tYXAoKF9pdGVtLCBpKSA9PiByZW5kZXJFbnRpdHlJdGVtKGkpKX1cbiAgICAgICAgPC9TdHlsZWRMaXN0PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZNEIifQ== */");function BaseEntityList({data,size="m",onClick,isSelectable,selectedIds,onSelectionChange,onSelectionToggle,renderRightContent,getLeftIconProps,hideBorder,filterFn,isVirtualized,maxHeight,ariaAttributes:deprecatedAriaAttributes,slotProps,"data-e2e-test-id":dataE2eTestId,...ariaAttributes}){let ariaLabelExpand=slotProps?.toggle?.["aria-label-expand"]??deprecatedAriaAttributes?.ariaLabelExpand,ariaLabelCollapse=slotProps?.toggle?.["aria-label-collapse"]??deprecatedAriaAttributes?.ariaLabelCollapse,dataShown=(0,_react.useMemo)(()=>data.length&&filterFn?data.filter(filterFn):data,[data,filterFn]),selectedIdsSet=(0,_react.useMemo)(()=>new Set(selectedIds),[selectedIds]),listRef=(0,_react.useRef)(null),focusableItems=(0,_react.useMemo)(()=>dataShown.map(item=>({id:item.id,isDisabled:!!item.isDisabled})),[dataShown]),{moveFocus,focusedIndex:selectedIndex}=(0,_useFocusByIndex.useFocusByIndex)({containerRef:listRef,nodeSelector:"data-list-item",data:focusableItems,preventScroll:isVirtualized});(0,_useKeyboard.useKeyboard)({ArrowDown:()=>{moveFocus(1)},ArrowUp:()=>{moveFocus(-1)}},listRef,isSelectable);let handleOnClick=(0,_react.useCallback)(item=>{let{id}=item;if(isSelectable){let willBeSelected=!selectedIdsSet.has(id),newSelectedIdsSet=new Set(selectedIdsSet);willBeSelected?newSelectedIdsSet.add(id):newSelectedIdsSet.delete(id),onSelectionToggle?.(id,willBeSelected),onSelectionChange?.(Array.from(newSelectedIdsSet))}onClick?.(item)},[selectedIdsSet,onSelectionChange,onSelectionToggle,onClick,isSelectable]),renderEntityItem=index=>{let item=dataShown[index];if(!item)return null;let isLastItem=index===dataShown.length-1,tabIndex=item.isDisabled||!isSelectable||index!==selectedIndex&&(0!==index||selectedIndex)?-1:0,isSelected=selectedIdsSet.has(item.id);return _react.default.createElement(_EntityListItem.EntityListItem,{key:item.id,"data-list-item":index,"aria-label":item["aria-label"]||item.label,size:size,hideBorder:hideBorder||isLastItem,isActive:item.isActive,isDisabled:item.isDisabled,isClickable:!!(onClick||selectedIds),isSelected:isSelectable?isSelected:void 0,description:item.description,onSpaceEnterPress:()=>handleOnClick(item),tabIndex:tabIndex,ariaLabelExpand:ariaLabelExpand,ariaLabelCollapse:ariaLabelCollapse,onClick:e=>{e.target.closest("label")||handleOnClick(item)},checkboxProps:isSelectable&&{name:"list-checkbox",size:"s",checked:isSelected,onChange:()=>handleOnClick(item)},renderLabel:()=>item.label,renderLeft:getLeftIconProps?({textSize})=>_react.default.createElement(_Icon.Icon,{...getLeftIconProps(item),size:textSize}):null,renderRight:({actionSize,textSize})=>renderRightContent?_react.default.createElement(StyledMinHeightCell,{textSize:textSize},renderRightContent({textSize,actionSize,...item})):null})};return _react.default.createElement("div",{ref:listRef},isVirtualized&&maxHeight?_react.default.createElement(_VirtualizedEntityList.VirtualizedEntityList,{id:dataE2eTestId,maxHeight:maxHeight,size:size,dataShown:dataShown,selectedIndex:selectedIndex,itemTemplate:renderEntityItem,"data-e2e-test-id":dataE2eTestId,role:isSelectable?"listbox":"list","aria-multiselectable":!!isSelectable||void 0,...ariaAttributes}):_react.default.createElement(_styledcomponents.StyledList,{size:size,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityList",...ariaAttributes,role:isSelectable?"listbox":"list","aria-multiselectable":!!isSelectable||void 0},dataShown.map((_item,i)=>renderEntityItem(i))))}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"BaseEntityList",{enumerable:!0,get:function(){return BaseEntityList}});const _react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_styledcomponents=require("./styled-components"),_useKeyboard=require("../../shared/useKeyboard"),_Icon=require("../Icon/Icon"),_EntityListItem=require("./EntityListItem"),_VirtualizedEntityList=require("./VirtualizedEntityList"),_useFocusByIndex=require("./useFocusByIndex"),ITEM_ROLE_MAP={list:"listitem",listbox:"option",menu:"menuitem"};function BaseEntityList({data,size="m",onClick,isSelectable,selectedIds,onSelectionChange,onSelectionToggle,renderRightContent,getLeftIconProps,hideBorder,filterFn,isVirtualized,maxHeight,ariaAttributes:deprecatedAriaAttributes,slotProps,role:roleProp,"data-e2e-test-id":dataE2eTestId,...ariaAttributes}){let rootRole,{itemRole,...rootAriaProps}=(rootRole=roleProp??"list",isSelectable&&(rootRole="listbox"),{role:rootRole,itemRole:ITEM_ROLE_MAP[rootRole],"aria-multiselectable":"listbox"===rootRole&&!!isSelectable||void 0}),ariaLabelExpand=slotProps?.toggle?.["aria-label-expand"]??deprecatedAriaAttributes?.ariaLabelExpand,ariaLabelCollapse=slotProps?.toggle?.["aria-label-collapse"]??deprecatedAriaAttributes?.ariaLabelCollapse,dataShown=(0,_react.useMemo)(()=>data.length&&filterFn?data.filter(filterFn):data,[data,filterFn]),selectedIdsSet=(0,_react.useMemo)(()=>new Set(selectedIds),[selectedIds]),listRef=(0,_react.useRef)(null),focusableItems=(0,_react.useMemo)(()=>dataShown.map(item=>({id:item.id,isDisabled:!!item.isDisabled})),[dataShown]),initialActiveIndex=(0,_react.useMemo)(()=>{let index=dataShown.findIndex(item=>item.isActive);return -1!==index?index:0},[dataShown]),{moveFocus,focusedIndex:selectedIndex}=(0,_useFocusByIndex.useFocusByIndex)({containerRef:listRef,nodeSelector:"data-list-item",data:focusableItems,preventScroll:isVirtualized,initialIndex:initialActiveIndex});(0,_useKeyboard.useKeyboard)({ArrowDown:()=>{moveFocus(1)},ArrowUp:()=>{moveFocus(-1)}},listRef,isSelectable||!!onClick);let handleOnClick=(0,_react.useCallback)(item=>{let{id}=item;if(isSelectable){let willBeSelected=!selectedIdsSet.has(id),newSelectedIdsSet=new Set(selectedIdsSet);willBeSelected?newSelectedIdsSet.add(id):newSelectedIdsSet.delete(id),onSelectionToggle?.(id,willBeSelected),onSelectionChange?.(Array.from(newSelectedIdsSet))}onClick?.(item)},[selectedIdsSet,onSelectionChange,onSelectionToggle,onClick,isSelectable]),renderEntityItem=index=>{let tabIndex,item=dataShown[index];if(!item)return null;let isLastItem=index===dataShown.length-1,isSelected=selectedIdsSet.has(item.id);return(isSelectable||onClick)&&(tabIndex=item.isDisabled||index!==selectedIndex&&(0!==index||selectedIndex)?-1:0),_react.default.createElement(_EntityListItem.EntityListItem,{key:item.id,"data-list-item":index,"aria-label":item["aria-label"]||item.label,size:size,hideBorder:hideBorder||isLastItem,isActive:item.isActive,isDisabled:item.isDisabled,isClickable:!!(onClick||selectedIds),isSelected:isSelectable?isSelected:void 0,role:itemRole,description:item.description,onSpaceEnterPress:()=>handleOnClick(item),tabIndex:tabIndex,ariaLabelExpand:ariaLabelExpand,ariaLabelCollapse:ariaLabelCollapse,onClick:e=>{e.target.closest("label")||handleOnClick(item)},checkboxProps:isSelectable&&{name:"list-checkbox",size:"s",checked:isSelected,onChange:()=>handleOnClick(item)},renderLabel:()=>item.label,renderLeft:getLeftIconProps?({textSize})=>_react.default.createElement(_Icon.Icon,{...getLeftIconProps(item),size:textSize}):null,renderRight:renderRightProps=>renderRightContent?renderRightContent({...renderRightProps,...item}):void 0})};return _react.default.createElement("div",{ref:listRef},isVirtualized&&maxHeight?_react.default.createElement(_VirtualizedEntityList.VirtualizedEntityList,{id:dataE2eTestId,maxHeight:maxHeight,size:size,dataShown:dataShown,selectedIndex:selectedIndex,itemTemplate:renderEntityItem,"data-e2e-test-id":dataE2eTestId,...rootAriaProps,...ariaAttributes}):_react.default.createElement(_styledcomponents.StyledList,{size:size,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityList",...rootAriaProps,...ariaAttributes},dataShown.map((_item,i)=>renderEntityItem(i))))}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"EntityItemBody",{enumerable:!0,get:function(){return EntityItemBody}});const _interop_require_default=require("@swc/helpers/_/_interop_require_default"),_react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_styled=/*#__PURE__*/_interop_require_default._(require("@emotion/styled")),_Checkbox=require("../Form/Checkbox/Checkbox"),_EntityListItemText=require("./EntityListItemText"),_Inline=require("../Inline/Inline"),_styledcomponents=require("./styled-components"),StyledLabel=(0,_styled.default)(_styledcomponents.StyledWrapperOffset,{target:"e1nalbpv0",label:"StyledLabel"})(({theme,size})=>({cursor:"pointer",display:"block",margin:`-${theme.variables.size.spacing["xs"===size?"xxs":size]} 0`}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9FbnRpdHlJdGVtQm9keS50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvRW50aXR5SXRlbUJvZHkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbmltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB0eXBlIHsgSFRNTEF0dHJpYnV0ZXMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENoZWNrYm94UmF3IH0gZnJvbSBcIi4uL0Zvcm0vQ2hlY2tib3gvQ2hlY2tib3hcIjtcbmltcG9ydCB7IEVudGl0eUxpc3RJdGVtVGV4dCB9IGZyb20gXCIuL0VudGl0eUxpc3RJdGVtVGV4dFwiO1xuaW1wb3J0IHsgSW5saW5lIH0gZnJvbSBcIi4uL0lubGluZS9JbmxpbmVcIjtcbmltcG9ydCB7IFN0eWxlZFdyYXBwZXJPZmZzZXQgfSBmcm9tIFwiLi9zdHlsZWQtY29tcG9uZW50c1wiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHlMaXN0SXRlbVByb3BzIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuY29uc3QgU3R5bGVkTGFiZWwgPSBzdHlsZWQoU3R5bGVkV3JhcHBlck9mZnNldCkoKHsgdGhlbWUsIHNpemUgfSkgPT4gKHtcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgZGlzcGxheTogXCJibG9ja1wiLFxuICBtYXJnaW46IGAtJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nW3NpemUgPT09IFwieHNcIiA/IFwieHhzXCIgOiBzaXplXX0gMGAsXG59KSk7XG5cbmNvbnN0IGhhc0ludGVyYWN0aXZlUHJvcHMgPSAoZWxlbWVudDogUmVhY3QuUmVhY3RFbGVtZW50KTogYm9vbGVhbiA9PlxuICBbXCJvbkNsaWNrXCIsIFwib25Nb3VzZURvd25cIiwgXCJvblBvaW50ZXJEb3duXCJdLnNvbWUoXG4gICAgKHApID0+IHR5cGVvZiBlbGVtZW50LnByb3BzPy5bcF0gPT09IFwiZnVuY3Rpb25cIlxuICApO1xuXG5jb25zdCBpc0ludGVyYWN0aXZlRWxlbWVudCA9IChcbiAgZWxlbWVudDogUmVhY3QuUmVhY3ROb2RlXG4pOiBlbGVtZW50IGlzIFJlYWN0LlJlYWN0RWxlbWVudDxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4+ID0+XG4gIGlzVmFsaWRFbGVtZW50KGVsZW1lbnQpICYmXG4gIChoYXNJbnRlcmFjdGl2ZVByb3BzKGVsZW1lbnQpIHx8IFwiaHJlZlwiIGluIChlbGVtZW50LnByb3BzID8/IHt9KSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHlJdGVtQm9keSh7XG4gIGNoZWNrYm94UHJvcHMsXG4gIGRlc2NyaXB0aW9uLFxuICByZW5kZXJMYWJlbCxcbiAgcmVuZGVyTGVmdCxcbiAgcmVuZGVyUmlnaHQsXG4gIHRhYkluZGV4LFxuICBzaXplID0gXCJtXCIsXG59OiBQYXJ0aWFsPEVudGl0eUxpc3RJdGVtUHJvcHM+KTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgdGV4dFNpemUgPSBzaXplID09PSBcInhzXCIgPyBcInNcIiA6IFwibVwiO1xuICBjb25zdCBhY3Rpb25TaXplID0gc2l6ZSA9PT0gXCJsXCIgPyBcIm1cIiA6IFwic1wiO1xuICBjb25zdCByaWdodEVsZW1lbnQgPSByZW5kZXJSaWdodD8uKHsgdGV4dFNpemUsIGFjdGlvblNpemUgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8SW5saW5lIG5vV3JhcCBhbGlnbkl0ZW1zPVwic3BhY2VCZXR3ZWVuXCIgc3BhY2U9e1tcInhzXCIsIFwibVwiXX0+XG4gICAgICB7Y2hlY2tib3hQcm9wcyA/IChcbiAgICAgICAgPFN0eWxlZExhYmVsIGFzPVwibGFiZWxcIiBzaXplPXtzaXplfSBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8SW5saW5lIG5vV3JhcCBzcGFjZT17W1wieHNcIiwgXCJtXCJdfT5cbiAgICAgICAgICAgIDxDaGVja2JveFJhdyB7Li4uY2hlY2tib3hQcm9wc30gaW5lcnQ9XCJcIiAvPlxuICAgICAgICAgICAgPEVudGl0eUxpc3RJdGVtVGV4dCBzaXplPXt0ZXh0U2l6ZX0gZGVzY3JpcHRpb249e2Rlc2NyaXB0aW9ufT5cbiAgICAgICAgICAgICAge3JlbmRlckxhYmVsKHsgdGV4dFNpemUgfSl9XG4gICAgICAgICAgICA8L0VudGl0eUxpc3RJdGVtVGV4dD5cbiAgICAgICAgICA8L0lubGluZT5cbiAgICAgICAgPC9TdHlsZWRMYWJlbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxJbmxpbmUgbm9XcmFwIHNwYWNlPXtbXCJ4c1wiLCBcIm1cIl19PlxuICAgICAgICAgIHtyZW5kZXJMZWZ0ICYmIHJlbmRlckxlZnQoeyB0ZXh0U2l6ZSB9KX1cbiAgICAgICAgICA8RW50aXR5TGlzdEl0ZW1UZXh0IHNpemU9e3RleHRTaXplfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259PlxuICAgICAgICAgICAge3JlbmRlckxhYmVsKHsgdGV4dFNpemUgfSl9XG4gICAgICAgICAgPC9FbnRpdHlMaXN0SXRlbVRleHQ+XG4gICAgICAgIDwvSW5saW5lPlxuICAgICAgKX1cblxuICAgICAge2lzSW50ZXJhY3RpdmVFbGVtZW50KHJpZ2h0RWxlbWVudClcbiAgICAgICAgPyBjbG9uZUVsZW1lbnQocmlnaHRFbGVtZW50LCB7XG4gICAgICAgICAgICB0YWJJbmRleCxcbiAgICAgICAgICAgIG9uQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgIHJpZ2h0RWxlbWVudC5wcm9wcy5vbkNsaWNrPy4oZXZlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLihyaWdodEVsZW1lbnQucHJvcHMub25Nb3VzZURvd24gJiYge1xuICAgICAgICAgICAgICBvbk1vdXNlRG93bjogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIHJpZ2h0RWxlbWVudC5wcm9wcy5vbk1vdXNlRG93bj8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKHJpZ2h0RWxlbWVudC5wcm9wcy5vblBvaW50ZXJEb3duICYmIHtcbiAgICAgICAgICAgICAgb25Qb2ludGVyRG93bjogKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgcmlnaHRFbGVtZW50LnByb3BzLm9uUG9pbnRlckRvd24/LihldmVudCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KVxuICAgICAgICA6IHJpZ2h0RWxlbWVudH1cbiAgICA8L0lubGluZT5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVb0IifQ== */"),hasInteractiveProps=element=>["onClick","onMouseDown","onPointerDown"].some(p=>"function"==typeof element.props?.[p]),isInteractiveElement=element=>(0,_react.isValidElement)(element)&&(hasInteractiveProps(element)||"href"in(element.props??{}));function EntityItemBody({checkboxProps,description,renderLabel,renderLeft,renderRight,tabIndex,size="m"}){let textSize="xs"===size?"s":"m",rightElement=renderRight?.({textSize,actionSize:"l"===size?"m":"s"});return _react.default.createElement(_Inline.Inline,{noWrap:!0,alignItems:"spaceBetween",space:["xs","m"]},checkboxProps?_react.default.createElement(StyledLabel,{as:"label",size:size,"aria-hidden":"true"},_react.default.createElement(_Inline.Inline,{noWrap:!0,space:["xs","m"]},_react.default.createElement(_Checkbox.CheckboxRaw,{...checkboxProps,inert:""}),_react.default.createElement(_EntityListItemText.EntityListItemText,{size:textSize,description:description},renderLabel({textSize})))):_react.default.createElement(_Inline.Inline,{noWrap:!0,space:["xs","m"]},renderLeft&&renderLeft({textSize}),_react.default.createElement(_EntityListItemText.EntityListItemText,{size:textSize,description:description},renderLabel({textSize}))),isInteractiveElement(rightElement)?(0,_react.cloneElement)(rightElement,{tabIndex,onClick:event=>{event.stopPropagation(),rightElement.props.onClick?.(event)},...rightElement.props.onMouseDown&&{onMouseDown:event=>{event.stopPropagation(),rightElement.props.onMouseDown?.(event)}},...rightElement.props.onPointerDown&&{onPointerDown:event=>{event.stopPropagation(),rightElement.props.onPointerDown?.(event)}}}):rightElement)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"EntityItemBody",{enumerable:!0,get:function(){return EntityItemBody}});const _interop_require_default=require("@swc/helpers/_/_interop_require_default"),_react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_styled=/*#__PURE__*/_interop_require_default._(require("@emotion/styled")),_Checkbox=require("../Form/Checkbox/Checkbox"),_EntityListItemText=require("./EntityListItemText"),_Inline=require("../Inline/Inline"),_styledcomponents=require("./styled-components"),StyledLabel=(0,_styled.default)(_styledcomponents.StyledWrapperOffset,{target:"erqpiki0",label:"StyledLabel"})(({theme,size})=>({cursor:"pointer",display:"block",margin:`-${theme.variables.size.spacing["xs"===size?"xxs":size]} 0`}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9FbnRpdHlJdGVtQm9keS50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvRW50aXR5SXRlbUJvZHkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbmltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB0eXBlIHsgSFRNTEF0dHJpYnV0ZXMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENoZWNrYm94UmF3IH0gZnJvbSBcIi4uL0Zvcm0vQ2hlY2tib3gvQ2hlY2tib3hcIjtcbmltcG9ydCB7IEVudGl0eUxpc3RJdGVtVGV4dCB9IGZyb20gXCIuL0VudGl0eUxpc3RJdGVtVGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBUZXh0U2l6ZVByb3BzLCBFbnRpdHlMaXN0SXRlbVByb3BzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IElubGluZSB9IGZyb20gXCIuLi9JbmxpbmUvSW5saW5lXCI7XG5pbXBvcnQgeyBTdHlsZWRXcmFwcGVyT2Zmc2V0IH0gZnJvbSBcIi4vc3R5bGVkLWNvbXBvbmVudHNcIjtcblxuY29uc3QgU3R5bGVkTGFiZWwgPSBzdHlsZWQoU3R5bGVkV3JhcHBlck9mZnNldCkoKHsgdGhlbWUsIHNpemUgfSkgPT4gKHtcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgZGlzcGxheTogXCJibG9ja1wiLFxuICBtYXJnaW46IGAtJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nW3NpemUgPT09IFwieHNcIiA/IFwieHhzXCIgOiBzaXplXX0gMGAsXG59KSk7XG5cbi8vIFRoaXMgbWluSGVpZ2h0IGlzIG5lZWRlZCBmb3IgYWxpZ24gc21hbGwgaWNvbnMgaW4gdGhlIG1pZGRsZSBvZiAxIHJvdyB0ZXh0LFxuLy8gYnV0IGl0IHNob3VsZCBzdGF5IGF0IHRoZSB0b3AgaWYgdGhlcmUgaXMgbXVsdGlsaW5lIHRleHRcbmNvbnN0IFN0eWxlZE1pbkhlaWdodENlbGwgPSBzdHlsZWQuZGl2PFRleHRTaXplUHJvcHM+KFxuICAoeyB0aGVtZSwgdGV4dFNpemUgfSkgPT4gKHtcbiAgICBtaW5IZWlnaHQ6XG4gICAgICB0ZXh0U2l6ZSA9PT0gXCJzXCJcbiAgICAgICAgPyBgY2FsYygke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcubX0gKyAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzfSlgXG4gICAgICAgIDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5sLFxuICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIH0pXG4pO1xuXG5jb25zdCBoYXNJbnRlcmFjdGl2ZVByb3BzID0gKGVsZW1lbnQ6IFJlYWN0LlJlYWN0RWxlbWVudCk6IGJvb2xlYW4gPT5cbiAgW1wib25DbGlja1wiLCBcIm9uTW91c2VEb3duXCIsIFwib25Qb2ludGVyRG93blwiXS5zb21lKFxuICAgIChwKSA9PiB0eXBlb2YgZWxlbWVudC5wcm9wcz8uW3BdID09PSBcImZ1bmN0aW9uXCJcbiAgKTtcblxuY29uc3QgaXNJbnRlcmFjdGl2ZUVsZW1lbnQgPSAoXG4gIGVsZW1lbnQ6IFJlYWN0LlJlYWN0Tm9kZVxuKTogZWxlbWVudCBpcyBSZWFjdC5SZWFjdEVsZW1lbnQ8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+PiA9PlxuICBpc1ZhbGlkRWxlbWVudChlbGVtZW50KSAmJlxuICAoaGFzSW50ZXJhY3RpdmVQcm9wcyhlbGVtZW50KSB8fCBcImhyZWZcIiBpbiAoZWxlbWVudC5wcm9wcyA/PyB7fSkpO1xuXG5leHBvcnQgZnVuY3Rpb24gRW50aXR5SXRlbUJvZHkoe1xuICBjaGVja2JveFByb3BzLFxuICBkZXNjcmlwdGlvbixcbiAgcmVuZGVyTGFiZWwsXG4gIHJlbmRlckxlZnQsXG4gIHJlbmRlclJpZ2h0LFxuICB0YWJJbmRleCxcbiAgc2l6ZSA9IFwibVwiLFxufTogUGFydGlhbDxFbnRpdHlMaXN0SXRlbVByb3BzPik6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHRleHRTaXplID0gc2l6ZSA9PT0gXCJ4c1wiID8gXCJzXCIgOiBcIm1cIjtcbiAgY29uc3QgYWN0aW9uU2l6ZSA9IHNpemUgPT09IFwibFwiID8gXCJtXCIgOiBcInNcIjtcbiAgY29uc3QgcmlnaHRFbGVtZW50ID0gcmVuZGVyUmlnaHQ/Lih7IHRleHRTaXplLCBhY3Rpb25TaXplLCB0YWJJbmRleCB9KTtcblxuICByZXR1cm4gKFxuICAgIDxJbmxpbmUgbm9XcmFwIGFsaWduSXRlbXM9XCJzcGFjZUJldHdlZW5cIiBzcGFjZT17W1wieHNcIiwgXCJtXCJdfT5cbiAgICAgIHtjaGVja2JveFByb3BzID8gKFxuICAgICAgICA8U3R5bGVkTGFiZWwgYXM9XCJsYWJlbFwiIHNpemU9e3NpemV9IGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgIDxJbmxpbmUgbm9XcmFwIHNwYWNlPXtbXCJ4c1wiLCBcIm1cIl19PlxuICAgICAgICAgICAgPENoZWNrYm94UmF3IHsuLi5jaGVja2JveFByb3BzfSBpbmVydD1cIlwiIC8+XG4gICAgICAgICAgICA8RW50aXR5TGlzdEl0ZW1UZXh0IHNpemU9e3RleHRTaXplfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259PlxuICAgICAgICAgICAgICB7cmVuZGVyTGFiZWwoeyB0ZXh0U2l6ZSB9KX1cbiAgICAgICAgICAgIDwvRW50aXR5TGlzdEl0ZW1UZXh0PlxuICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICA8L1N0eWxlZExhYmVsPlxuICAgICAgKSA6IChcbiAgICAgICAgPElubGluZSBub1dyYXAgc3BhY2U9e1tcInhzXCIsIFwibVwiXX0+XG4gICAgICAgICAge3JlbmRlckxlZnQgJiYgcmVuZGVyTGVmdCh7IHRleHRTaXplIH0pfVxuICAgICAgICAgIDxFbnRpdHlMaXN0SXRlbVRleHQgc2l6ZT17dGV4dFNpemV9IGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn0+XG4gICAgICAgICAgICB7cmVuZGVyTGFiZWwoeyB0ZXh0U2l6ZSB9KX1cbiAgICAgICAgICA8L0VudGl0eUxpc3RJdGVtVGV4dD5cbiAgICAgICAgPC9JbmxpbmU+XG4gICAgICApfVxuXG4gICAgICB7cmlnaHRFbGVtZW50ICYmIChcbiAgICAgICAgPFN0eWxlZE1pbkhlaWdodENlbGwgdGV4dFNpemU9e3RleHRTaXplfT5cbiAgICAgICAgICB7aXNJbnRlcmFjdGl2ZUVsZW1lbnQocmlnaHRFbGVtZW50KVxuICAgICAgICAgICAgPyBjbG9uZUVsZW1lbnQocmlnaHRFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXgsXG4gICAgICAgICAgICAgICAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICByaWdodEVsZW1lbnQucHJvcHMub25DbGljaz8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLihyaWdodEVsZW1lbnQucHJvcHMub25Nb3VzZURvd24gJiYge1xuICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd246IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0RWxlbWVudC5wcm9wcy5vbk1vdXNlRG93bj8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLi4uKHJpZ2h0RWxlbWVudC5wcm9wcy5vblBvaW50ZXJEb3duICYmIHtcbiAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd246IChldmVudDogUmVhY3QuUG9pbnRlckV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRFbGVtZW50LnByb3BzLm9uUG9pbnRlckRvd24/LihldmVudCk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiByaWdodEVsZW1lbnR9XG4gICAgICAgIDwvU3R5bGVkTWluSGVpZ2h0Q2VsbD5cbiAgICAgICl9XG4gICAgPC9JbmxpbmU+XG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVW9CIn0= */"),StyledMinHeightCell=(0,_styled.default)("div",{target:"erqpiki1",label:"StyledMinHeightCell"})(({theme,textSize})=>({minHeight:"s"===textSize?`calc(${theme.variables.size.spacing.m} + ${theme.variables.size.spacing.xxs})`:theme.variables.size.spacing.l,display:"flex",alignItems:"center"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9FbnRpdHlJdGVtQm9keS50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvRW50aXR5SXRlbUJvZHkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbmltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB0eXBlIHsgSFRNTEF0dHJpYnV0ZXMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENoZWNrYm94UmF3IH0gZnJvbSBcIi4uL0Zvcm0vQ2hlY2tib3gvQ2hlY2tib3hcIjtcbmltcG9ydCB7IEVudGl0eUxpc3RJdGVtVGV4dCB9IGZyb20gXCIuL0VudGl0eUxpc3RJdGVtVGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBUZXh0U2l6ZVByb3BzLCBFbnRpdHlMaXN0SXRlbVByb3BzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IElubGluZSB9IGZyb20gXCIuLi9JbmxpbmUvSW5saW5lXCI7XG5pbXBvcnQgeyBTdHlsZWRXcmFwcGVyT2Zmc2V0IH0gZnJvbSBcIi4vc3R5bGVkLWNvbXBvbmVudHNcIjtcblxuY29uc3QgU3R5bGVkTGFiZWwgPSBzdHlsZWQoU3R5bGVkV3JhcHBlck9mZnNldCkoKHsgdGhlbWUsIHNpemUgfSkgPT4gKHtcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgZGlzcGxheTogXCJibG9ja1wiLFxuICBtYXJnaW46IGAtJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nW3NpemUgPT09IFwieHNcIiA/IFwieHhzXCIgOiBzaXplXX0gMGAsXG59KSk7XG5cbi8vIFRoaXMgbWluSGVpZ2h0IGlzIG5lZWRlZCBmb3IgYWxpZ24gc21hbGwgaWNvbnMgaW4gdGhlIG1pZGRsZSBvZiAxIHJvdyB0ZXh0LFxuLy8gYnV0IGl0IHNob3VsZCBzdGF5IGF0IHRoZSB0b3AgaWYgdGhlcmUgaXMgbXVsdGlsaW5lIHRleHRcbmNvbnN0IFN0eWxlZE1pbkhlaWdodENlbGwgPSBzdHlsZWQuZGl2PFRleHRTaXplUHJvcHM+KFxuICAoeyB0aGVtZSwgdGV4dFNpemUgfSkgPT4gKHtcbiAgICBtaW5IZWlnaHQ6XG4gICAgICB0ZXh0U2l6ZSA9PT0gXCJzXCJcbiAgICAgICAgPyBgY2FsYygke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcubX0gKyAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzfSlgXG4gICAgICAgIDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5sLFxuICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIH0pXG4pO1xuXG5jb25zdCBoYXNJbnRlcmFjdGl2ZVByb3BzID0gKGVsZW1lbnQ6IFJlYWN0LlJlYWN0RWxlbWVudCk6IGJvb2xlYW4gPT5cbiAgW1wib25DbGlja1wiLCBcIm9uTW91c2VEb3duXCIsIFwib25Qb2ludGVyRG93blwiXS5zb21lKFxuICAgIChwKSA9PiB0eXBlb2YgZWxlbWVudC5wcm9wcz8uW3BdID09PSBcImZ1bmN0aW9uXCJcbiAgKTtcblxuY29uc3QgaXNJbnRlcmFjdGl2ZUVsZW1lbnQgPSAoXG4gIGVsZW1lbnQ6IFJlYWN0LlJlYWN0Tm9kZVxuKTogZWxlbWVudCBpcyBSZWFjdC5SZWFjdEVsZW1lbnQ8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+PiA9PlxuICBpc1ZhbGlkRWxlbWVudChlbGVtZW50KSAmJlxuICAoaGFzSW50ZXJhY3RpdmVQcm9wcyhlbGVtZW50KSB8fCBcImhyZWZcIiBpbiAoZWxlbWVudC5wcm9wcyA/PyB7fSkpO1xuXG5leHBvcnQgZnVuY3Rpb24gRW50aXR5SXRlbUJvZHkoe1xuICBjaGVja2JveFByb3BzLFxuICBkZXNjcmlwdGlvbixcbiAgcmVuZGVyTGFiZWwsXG4gIHJlbmRlckxlZnQsXG4gIHJlbmRlclJpZ2h0LFxuICB0YWJJbmRleCxcbiAgc2l6ZSA9IFwibVwiLFxufTogUGFydGlhbDxFbnRpdHlMaXN0SXRlbVByb3BzPik6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHRleHRTaXplID0gc2l6ZSA9PT0gXCJ4c1wiID8gXCJzXCIgOiBcIm1cIjtcbiAgY29uc3QgYWN0aW9uU2l6ZSA9IHNpemUgPT09IFwibFwiID8gXCJtXCIgOiBcInNcIjtcbiAgY29uc3QgcmlnaHRFbGVtZW50ID0gcmVuZGVyUmlnaHQ/Lih7IHRleHRTaXplLCBhY3Rpb25TaXplLCB0YWJJbmRleCB9KTtcblxuICByZXR1cm4gKFxuICAgIDxJbmxpbmUgbm9XcmFwIGFsaWduSXRlbXM9XCJzcGFjZUJldHdlZW5cIiBzcGFjZT17W1wieHNcIiwgXCJtXCJdfT5cbiAgICAgIHtjaGVja2JveFByb3BzID8gKFxuICAgICAgICA8U3R5bGVkTGFiZWwgYXM9XCJsYWJlbFwiIHNpemU9e3NpemV9IGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgIDxJbmxpbmUgbm9XcmFwIHNwYWNlPXtbXCJ4c1wiLCBcIm1cIl19PlxuICAgICAgICAgICAgPENoZWNrYm94UmF3IHsuLi5jaGVja2JveFByb3BzfSBpbmVydD1cIlwiIC8+XG4gICAgICAgICAgICA8RW50aXR5TGlzdEl0ZW1UZXh0IHNpemU9e3RleHRTaXplfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259PlxuICAgICAgICAgICAgICB7cmVuZGVyTGFiZWwoeyB0ZXh0U2l6ZSB9KX1cbiAgICAgICAgICAgIDwvRW50aXR5TGlzdEl0ZW1UZXh0PlxuICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICA8L1N0eWxlZExhYmVsPlxuICAgICAgKSA6IChcbiAgICAgICAgPElubGluZSBub1dyYXAgc3BhY2U9e1tcInhzXCIsIFwibVwiXX0+XG4gICAgICAgICAge3JlbmRlckxlZnQgJiYgcmVuZGVyTGVmdCh7IHRleHRTaXplIH0pfVxuICAgICAgICAgIDxFbnRpdHlMaXN0SXRlbVRleHQgc2l6ZT17dGV4dFNpemV9IGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn0+XG4gICAgICAgICAgICB7cmVuZGVyTGFiZWwoeyB0ZXh0U2l6ZSB9KX1cbiAgICAgICAgICA8L0VudGl0eUxpc3RJdGVtVGV4dD5cbiAgICAgICAgPC9JbmxpbmU+XG4gICAgICApfVxuXG4gICAgICB7cmlnaHRFbGVtZW50ICYmIChcbiAgICAgICAgPFN0eWxlZE1pbkhlaWdodENlbGwgdGV4dFNpemU9e3RleHRTaXplfT5cbiAgICAgICAgICB7aXNJbnRlcmFjdGl2ZUVsZW1lbnQocmlnaHRFbGVtZW50KVxuICAgICAgICAgICAgPyBjbG9uZUVsZW1lbnQocmlnaHRFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXgsXG4gICAgICAgICAgICAgICAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICByaWdodEVsZW1lbnQucHJvcHMub25DbGljaz8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLihyaWdodEVsZW1lbnQucHJvcHMub25Nb3VzZURvd24gJiYge1xuICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd246IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0RWxlbWVudC5wcm9wcy5vbk1vdXNlRG93bj8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLi4uKHJpZ2h0RWxlbWVudC5wcm9wcy5vblBvaW50ZXJEb3duICYmIHtcbiAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd246IChldmVudDogUmVhY3QuUG9pbnRlckV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRFbGVtZW50LnByb3BzLm9uUG9pbnRlckRvd24/LihldmVudCk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiByaWdodEVsZW1lbnR9XG4gICAgICAgIDwvU3R5bGVkTWluSGVpZ2h0Q2VsbD5cbiAgICAgICl9XG4gICAgPC9JbmxpbmU+XG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0I0QiJ9 */"),hasInteractiveProps=element=>["onClick","onMouseDown","onPointerDown"].some(p=>"function"==typeof element.props?.[p]),isInteractiveElement=element=>(0,_react.isValidElement)(element)&&(hasInteractiveProps(element)||"href"in(element.props??{}));function EntityItemBody({checkboxProps,description,renderLabel,renderLeft,renderRight,tabIndex,size="m"}){let textSize="xs"===size?"s":"m",rightElement=renderRight?.({textSize,actionSize:"l"===size?"m":"s",tabIndex});return _react.default.createElement(_Inline.Inline,{noWrap:!0,alignItems:"spaceBetween",space:["xs","m"]},checkboxProps?_react.default.createElement(StyledLabel,{as:"label",size:size,"aria-hidden":"true"},_react.default.createElement(_Inline.Inline,{noWrap:!0,space:["xs","m"]},_react.default.createElement(_Checkbox.CheckboxRaw,{...checkboxProps,inert:""}),_react.default.createElement(_EntityListItemText.EntityListItemText,{size:textSize,description:description},renderLabel({textSize})))):_react.default.createElement(_Inline.Inline,{noWrap:!0,space:["xs","m"]},renderLeft&&renderLeft({textSize}),_react.default.createElement(_EntityListItemText.EntityListItemText,{size:textSize,description:description},renderLabel({textSize}))),rightElement&&_react.default.createElement(StyledMinHeightCell,{textSize:textSize},isInteractiveElement(rightElement)?(0,_react.cloneElement)(rightElement,{tabIndex,onClick:event=>{event.stopPropagation(),rightElement.props.onClick?.(event)},...rightElement.props.onMouseDown&&{onMouseDown:event=>{event.stopPropagation(),rightElement.props.onMouseDown?.(event)}},...rightElement.props.onPointerDown&&{onPointerDown:event=>{event.stopPropagation(),rightElement.props.onPointerDown?.(event)}}}):rightElement))}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"EntityListItem",{enumerable:!0,get:function(){return EntityListItem}});const _react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_EntityItemBody=require("./EntityItemBody"),_useKeyboard=require("../../shared/useKeyboard"),_styledcomponents=require("./styled-components"),useButtonKeyboard=({ref:globalRef,isActive,onSpaceEnterPress})=>{let localRef=(0,_react.useRef)(null);return(0,_useKeyboard.useKeyboard)({"Space Enter":onSpaceEnterPress},localRef,isActive,!0),(0,_react.useImperativeHandle)(globalRef,()=>localRef.current),localRef},EntityListItem=_react.default.forwardRef(({checkboxProps,description,hideBorder,isActive,isClickable,isDisabled,onClick,renderLabel,renderLeft,renderRight,tabIndex,onSpaceEnterPress,size="m","aria-label":ariaLabel,"data-list-item":dataListItem,isSelected},ref)=>{let handleOnClick=(0,_react.useCallback)(e=>{isClickable&&onClick&&onClick(e)},[onClick,isClickable]),buttonRef=useButtonKeyboard({ref,isActive:0===tabIndex&&isClickable,onSpaceEnterPress}),isListbox=void 0!==isSelected;return _react.default.createElement(_styledcomponents.StyledEntityListItemButton,{role:isListbox?"option":"listitem","aria-label":ariaLabel,"aria-selected":isListbox?isSelected:void 0,"aria-disabled":isDisabled,size:size,tabIndex:tabIndex,ref:buttonRef,"data-list-item":dataListItem,"data-id":"list-item",onClick:handleOnClick,isClickable:isClickable,isActive:isActive,isDisabled:isDisabled},_react.default.createElement(_styledcomponents.StyledEntityListItemWrapper,{size:size,hideBorder:hideBorder||"xs"===size},_react.default.createElement(_EntityItemBody.EntityItemBody,{size:size,tabIndex:tabIndex,checkboxProps:checkboxProps,description:description,renderLabel:renderLabel,renderLeft:renderLeft,renderRight:renderRight})))});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"EntityListItem",{enumerable:!0,get:function(){return EntityListItem}});const _react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_EntityItemBody=require("./EntityItemBody"),_useKeyboard=require("../../shared/useKeyboard"),_styledcomponents=require("./styled-components"),useButtonKeyboard=({ref:globalRef,isActive,onSpaceEnterPress})=>{let localRef=(0,_react.useRef)(null);return(0,_useKeyboard.useKeyboard)({"Space Enter":onSpaceEnterPress},localRef,isActive,!0),(0,_react.useImperativeHandle)(globalRef,()=>localRef.current),localRef},EntityListItem=_react.default.forwardRef(({checkboxProps,description,hideBorder,isActive,isClickable,isDisabled,onClick,renderLabel,renderLeft,renderRight,role,tabIndex,onSpaceEnterPress,size="m","aria-label":ariaLabel,"data-list-item":dataListItem,isSelected},ref)=>{let handleOnClick=(0,_react.useCallback)(e=>{isClickable&&onClick&&onClick(e)},[onClick,isClickable]),buttonRef=useButtonKeyboard({ref,isActive:isClickable&&!isDisabled&&void 0!==tabIndex,onSpaceEnterPress}),supportsAriaSelected="menuitem"!==role;return _react.default.createElement(_styledcomponents.StyledEntityListItemButton,{role:role,"aria-label":ariaLabel,"aria-selected":supportsAriaSelected?isSelected:void 0,"aria-disabled":isDisabled,size:size,tabIndex:tabIndex,ref:buttonRef,"data-list-item":dataListItem,"data-id":"list-item",onClick:handleOnClick,isClickable:isClickable,isActive:isActive,isDisabled:isDisabled},_react.default.createElement(_styledcomponents.StyledEntityListItemWrapper,{size:size,hideBorder:hideBorder||"xs"===size},_react.default.createElement(_EntityItemBody.EntityItemBody,{size:size,tabIndex:tabIndex,checkboxProps:checkboxProps,description:description,renderLabel:renderLabel,renderLeft:renderLeft,renderRight:renderRight})))});
@@ -9,7 +9,7 @@ export type VirtualizedEntityListProps = {
9
9
  selectedIndex: number;
10
10
  itemTemplate: (index: number) => React.ReactNode;
11
11
  "data-e2e-test-id"?: string;
12
- role?: "list" | "listbox";
12
+ role?: "list" | "listbox" | "menu";
13
13
  "aria-multiselectable"?: boolean;
14
14
  "aria-label"?: string;
15
15
  };
@@ -31,6 +31,9 @@ export type EntityListAriaAttributes = {
31
31
  /** @deprecated Use slotProps.toggle['aria-label-collapse'] instead */
32
32
  ariaLabelCollapse?: string;
33
33
  };
34
+ export type RenderRightProps = TextSizeProps & ActionSizeProps & {
35
+ tabIndex?: number;
36
+ };
34
37
  export type BaseEntityListProps = {
35
38
  /**
36
39
  * @param ListNode[].id
@@ -80,6 +83,8 @@ export type BaseEntityListProps = {
80
83
  slotProps?: EntityListSlotProps;
81
84
  "data-e2e-test-id"?: string;
82
85
  "aria-label"?: string;
86
+ /** ARIA role for the list container. Defaults to 'listbox' when isSelectable, 'list' otherwise. */
87
+ role?: "list" | "listbox" | "menu";
83
88
  };
84
89
  export type EntityListProps = BaseEntityListProps & ({
85
90
  /** Enable virtualization for large lists. When true, only visible items are rendered. */
@@ -107,7 +112,7 @@ export type EntityListItemProps = {
107
112
  onExpandClick?: (e: React.MouseEvent) => void;
108
113
  renderLabel: RenderProps;
109
114
  renderLeft?: RenderProps;
110
- renderRight?: (props: TextSizeProps & ActionSizeProps) => React.ReactNode;
115
+ renderRight?: (props: RenderRightProps) => React.ReactNode;
111
116
  role?: string;
112
117
  size?: ListSize;
113
118
  withWrapper?: (content: () => React.ReactNode) => React.ReactNode;
@@ -12,6 +12,7 @@ type UseFocusByIndexOptions = {
12
12
  containerRef: RefObject<HTMLDivElement | HTMLUListElement>;
13
13
  nodeSelector: string;
14
14
  preventScroll?: boolean;
15
+ initialIndex?: number;
15
16
  };
16
- export declare const useFocusByIndex: ({ data, containerRef, nodeSelector, preventScroll, }: UseFocusByIndexOptions) => UseFocusByIndexResult;
17
+ export declare const useFocusByIndex: ({ data, containerRef, nodeSelector, preventScroll, initialIndex, }: UseFocusByIndexOptions) => UseFocusByIndexResult;
17
18
  export {};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"useFocusByIndex",{enumerable:!0,get:function(){return useFocusByIndex}});const _react=require("react"),getNextEnabledIndex=(items,startIndex,direction)=>{let index=startIndex+direction;for(;index>=0&&index<items.length;){if(!items[index]?.isDisabled)return index;index+=direction}return -1},getClosestEnabledIndex=(items,currentIndex)=>{if(!items.length)return -1;if(currentIndex>=0&&currentIndex<items.length&&!items[currentIndex]?.isDisabled)return currentIndex;let forward=getNextEnabledIndex(items,currentIndex,1);return -1!==forward?forward:getNextEnabledIndex(items,currentIndex,-1)},useFocusByIndex=({data,containerRef,nodeSelector,preventScroll=!1})=>{let[focusedIndex,setFocusedIndex]=(0,_react.useState)(()=>getClosestEnabledIndex(data,0)),focusedIndexRef=(0,_react.useRef)(focusedIndex);(0,_react.useEffect)(()=>{focusedIndexRef.current=focusedIndex},[focusedIndex]);let focusItemAtIndex=(0,_react.useCallback)(index=>{if(-1===index)return;let container=containerRef.current;if(!container)return;let element=container.querySelector(`[${nodeSelector}="${index}"]`);!element||data[index]?.isDisabled||(element.focus({preventScroll}),setFocusedIndex(index))},[containerRef,data,nodeSelector,preventScroll]);return(0,_react.useEffect)(()=>{let container=containerRef.current;if(!container)return;let handleContainerFocus=()=>{let nextIndex=getClosestEnabledIndex(data,focusedIndexRef.current);-1!==nextIndex&&focusItemAtIndex(nextIndex)},handleFocusIn=event=>{let target=event.target;if(!container.contains(target))return;let attributeValue=target.getAttribute(nodeSelector);if(null===attributeValue)return;let parsedIndex=Number(attributeValue);Number.isNaN(parsedIndex)||data[parsedIndex]?.isDisabled||setFocusedIndex(parsedIndex)};return container.addEventListener("focus",handleContainerFocus),container.addEventListener("focusin",handleFocusIn),()=>{container.removeEventListener("focus",handleContainerFocus),container.removeEventListener("focusin",handleFocusIn)}},[containerRef,data,focusItemAtIndex,nodeSelector]),{moveFocus:(0,_react.useCallback)(offset=>{let nextIndex;if(!data.length)return;let direction=offset>0?1:-1,remainingSteps=Math.abs(offset);for(nextIndex=-1===focusedIndex?direction>0?-1:data.length:focusedIndex;remainingSteps>0;){let candidate=getNextEnabledIndex(data,nextIndex,direction);if(-1===candidate)return;nextIndex=candidate,remainingSteps-=1}nextIndex!==focusedIndex&&focusItemAtIndex(nextIndex)},[data,focusItemAtIndex,focusedIndex]),focusedIndex}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"useFocusByIndex",{enumerable:!0,get:function(){return useFocusByIndex}});const _react=require("react"),getNextEnabledIndex=(items,startIndex,direction)=>{let index=startIndex+direction;for(;index>=0&&index<items.length;){if(!items[index]?.isDisabled)return index;index+=direction}return -1},getClosestEnabledIndex=(items,currentIndex)=>{if(!items.length)return -1;if(currentIndex>=0&&currentIndex<items.length&&!items[currentIndex]?.isDisabled)return currentIndex;let forward=getNextEnabledIndex(items,currentIndex,1);return -1!==forward?forward:getNextEnabledIndex(items,currentIndex,-1)},useFocusByIndex=({data,containerRef,nodeSelector,preventScroll=!1,initialIndex=0})=>{let[focusedIndex,setFocusedIndex]=(0,_react.useState)(()=>getClosestEnabledIndex(data,initialIndex)),focusedIndexRef=(0,_react.useRef)(focusedIndex);(0,_react.useEffect)(()=>{focusedIndexRef.current=focusedIndex},[focusedIndex]);let focusItemAtIndex=(0,_react.useCallback)(index=>{if(-1===index)return;let container=containerRef.current;if(!container)return;let element=container.querySelector(`[${nodeSelector}="${index}"]`);!element||data[index]?.isDisabled||(element.focus({preventScroll}),setFocusedIndex(index))},[containerRef,data,nodeSelector,preventScroll]);return(0,_react.useEffect)(()=>{let container=containerRef.current;if(!container)return;let handleContainerFocus=()=>{let nextIndex=getClosestEnabledIndex(data,focusedIndexRef.current);-1!==nextIndex&&focusItemAtIndex(nextIndex)},handleFocusIn=event=>{let target=event.target;if(!container.contains(target))return;let attributeValue=target.getAttribute(nodeSelector);if(null===attributeValue)return;let parsedIndex=Number(attributeValue);Number.isNaN(parsedIndex)||data[parsedIndex]?.isDisabled||setFocusedIndex(parsedIndex)};return container.addEventListener("focus",handleContainerFocus),container.addEventListener("focusin",handleFocusIn),()=>{container.removeEventListener("focus",handleContainerFocus),container.removeEventListener("focusin",handleFocusIn)}},[containerRef,data,focusItemAtIndex,nodeSelector]),{moveFocus:(0,_react.useCallback)(offset=>{let nextIndex;if(!data.length)return;let direction=offset>0?1:-1,remainingSteps=Math.abs(offset);for(nextIndex=-1===focusedIndex?direction>0?-1:data.length:focusedIndex;remainingSteps>0;){let candidate=getNextEnabledIndex(data,nextIndex,direction);if(-1===candidate)return;nextIndex=candidate,remainingSteps-=1}nextIndex!==focusedIndex&&focusItemAtIndex(nextIndex)},[data,focusItemAtIndex,focusedIndex]),focusedIndex}};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"BaseEntityTree",{enumerable:!0,get:function(){return BaseEntityTree}});const _react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_Button=require("../Button/Button"),_Box=require("../Box/Box"),_styledcomponents=require("../EntityList/styled-components"),_EntityTreeItem=require("./EntityTreeItem"),_useKeyboard=require("../../shared/useKeyboard"),_useFocusByIndex=require("../EntityList/useFocusByIndex"),_Text=require("../Typography/Text/Text"),_tree=require("./tree"),flattenTree=(data,expandedIds,expadedAll)=>{let flattened=[];return data.forEach(node=>{flattened.push(node),(node.children.length>0&&expandedIds[node.id]||expadedAll)&&flattened.push(...flattenTree(node.children,expandedIds,expadedAll))}),flattened},getLastNodeOfList=({node,data,level,isParentsLastOfLvl})=>{let currentLastNodeOfLvl=node.id===data[data.length-1].id;return 0===level?currentLastNodeOfLvl:isParentsLastOfLvl&&currentLastNodeOfLvl},useTreeTruncation=({chunkSize,data,expandAll,nodeExpandedState})=>{let[maxNodesCount,setMaxNodesCount]=(0,_react.useState)(chunkSize),{result,hasMoreNodes}=(0,_react.useMemo)(()=>(0,_tree.trimDataByMaxSize)(data,nodeExpandedState,expandAll,maxNodesCount),[data,nodeExpandedState,expandAll,maxNodesCount]);return{handleIncreaseMaxNodeCount:(0,_react.useCallback)(()=>{setMaxNodesCount(prev=>prev+chunkSize)},[chunkSize]),result,hasMoreNodes}},Node=({isFirstNode,nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange,handleToggle,expandAll,onNodeClick,hideBorder,size,showItemsCount,renderRightContent,activeId,focusedNodeId,node,level,renderFn,isLastNodeOfList,ariaLabelExpand,ariaLabelCollapse,visibleNodeIndexMap})=>{let readOnly=null===nodeCheckboxState,hasChildren=node.children.length>0,expandedState=!!expandAll||!!nodeExpandedState[node.id],leafItems=(0,_tree.getLeafNodeIds)(nodeChildrenMap,node.id),totalItemsCount=leafItems.length,selectedItemsCount=nodeCheckboxState?leafItems.filter(leafId=>"checked"===nodeCheckboxState[leafId]).length:null,countLabel=nodeCheckboxState?`(${selectedItemsCount}/${totalItemsCount})`:`(${totalItemsCount})`,lastLeaf=!hasChildren&&!node.isFiltered,isExpanded=lastLeaf?void 0:expandedState,{children,...nodeDataWithoutChildren}=node,isFocused=focusedNodeId===node.id;return _react.default.createElement(_EntityTreeItem.EntityTreeItem,{key:node.id,"data-list-item":visibleNodeIndexMap[node.id],hideBorder:hideBorder||isLastNodeOfList&&(!isExpanded||node.isFiltered),tabIndex:isFocused||null===focusedNodeId&&isFirstNode?0:-1,size:size,lSpaceStep:level,onSpaceEnterPress:()=>{if(readOnly){handleToggle(node.id),onNodeClick?.(nodeDataWithoutChildren);return}handleSelectionChange(node.id)},description:node.description,renderLabel:({textSize})=>_react.default.createElement(_react.default.Fragment,null,node.label,showItemsCount&&!lastLeaf&&_react.default.createElement(_Text.Text,{as:"span",size:textSize,color:"tertiary"}," ",countLabel)),isActive:activeId===node.id,isExpanded:isExpanded,isDisabledExpand:expandAll,checkboxProps:!readOnly&&{size:"s",name:node.label,checked:nodeCheckboxState?.[node.id]==="checked",indeterminate:nodeCheckboxState?.[node.id]==="indeterminate",onChange:()=>handleSelectionChange(node.id)},onExpandClick:e=>{e.stopPropagation(),handleToggle(node.id)},isClickable:readOnly,onClick:()=>{handleToggle(node.id),onNodeClick?.(nodeDataWithoutChildren)},renderRight:renderRightContent?sizeProps=>renderRightContent({...sizeProps,...node}):void 0,ariaLabelExpand:ariaLabelExpand,ariaLabelCollapse:ariaLabelCollapse,"aria-label":node.label,"aria-level":level+1},hasChildren&&_react.default.createElement("div",{role:"group"},renderFn({data:children,level:level+1,renderFn,isParentsLastOfLvl:isLastNodeOfList})))},makeRenderTreeBranches=renderTreeArgs=>({data,level,renderFn,isParentsLastOfLvl})=>data.map((node,i)=>{let isFirstNode=0===level&&0===i,isLastNodeOfList=getLastNodeOfList({node,data,level,isParentsLastOfLvl});return _react.default.createElement(Node,{key:node.id,level:level,node:node,isFirstNode:isFirstNode,renderFn:renderFn,isLastNodeOfList:isLastNodeOfList,...renderTreeArgs})}),BaseEntityTree=({ariaAttributes:deprecatedAriaAttributes,slotProps,data,selectedIds,onSelectionChange,onSelectionToggle,onNodeClick,expandedIds=[],onToggle,activeId,chunkSize=10,filterFn,onTreeChange,hideBorder=!1,size="m",showItemsCount=!0,showMoreButtonLabel,renderRightContent,"data-e2e-test-id":dataE2eTestId,...ariaAttributes})=>{let nodeChildrenMap=Object.assign({},...data.map(tree=>(0,_tree.getNodeChildrenMap)(tree))),nodeCheckboxState=selectedIds?Object.assign({},...data.map(tree=>(0,_tree.getTreeCheckboxState)(nodeChildrenMap,tree.id,selectedIds))):null,nodeExpandedState=expandedIds.reduce((acc,id)=>(acc[id]=!0,acc),{}),visibleActiveNodeId=(0,_tree.getVisibleActiveNodeId)(nodeChildrenMap,nodeExpandedState,activeId),handleExpand=(0,_react.useCallback)(targetId=>{onToggle&&!expandedIds.includes(targetId)&&onToggle(expandedIds.concat([targetId]))},[expandedIds,onToggle]),handleCollapse=(0,_react.useCallback)(targetId=>{onToggle&&expandedIds.includes(targetId)&&onToggle(expandedIds.filter(id=>id!==targetId))},[expandedIds,onToggle]),handleToggle=(0,_react.useCallback)(targetId=>{expandedIds.includes(targetId)?handleCollapse(targetId):handleExpand(targetId)},[expandedIds,handleCollapse,handleExpand]),dataShown=filterFn?data.map(tree=>(0,_tree.filterTree)(tree,filterFn)).filter(Boolean):data;(0,_react.useEffect)(()=>{onTreeChange&&onTreeChange(dataShown.map(tree=>(0,_tree.mapTree)(tree,node=>({...node,checkedState:!!nodeCheckboxState&&nodeCheckboxState[node.id],isExpanded:!!nodeExpandedState[node.id]}))))},[dataShown,nodeCheckboxState,nodeExpandedState,onTreeChange]);let expandAll=!!filterFn,{hasMoreNodes,handleIncreaseMaxNodeCount,result}=useTreeTruncation({chunkSize,data:dataShown,nodeExpandedState,expandAll}),listRef=_react.default.useRef(null),visibleNodes=(0,_react.useMemo)(()=>flattenTree(result,nodeExpandedState,expandAll),[result,nodeExpandedState,expandAll]),visibleNodeIndexMap=(0,_react.useMemo)(()=>visibleNodes.reduce((acc,node,index)=>(acc[node.id]=index,acc),{}),[visibleNodes]),focusableNodes=(0,_react.useMemo)(()=>visibleNodes.map(node=>({id:node.id,isDisabled:!!node.isDisabled})),[visibleNodes]),{moveFocus,focusedIndex}=(0,_useFocusByIndex.useFocusByIndex)({containerRef:listRef,nodeSelector:"data-list-item",data:focusableNodes}),focusedNodeId=focusedIndex>=0?visibleNodes[focusedIndex]?.id??null:null;(0,_useKeyboard.useKeyboard)({ArrowDown:()=>{moveFocus(1)},ArrowUp:()=>{moveFocus(-1)},ArrowRight:()=>{!expandAll&&focusedNodeId&&nodeChildrenMap[focusedNodeId]?.length&&!nodeExpandedState[focusedNodeId]&&handleExpand(focusedNodeId)},ArrowLeft:()=>{!expandAll&&focusedNodeId&&nodeChildrenMap[focusedNodeId]?.length&&nodeExpandedState[focusedNodeId]&&handleCollapse(focusedNodeId)}},listRef,!!visibleNodes.length);let renderTreeBranches=makeRenderTreeBranches({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange:targetId=>{if(onSelectionChange){let isSelected,updatedSelectedIds=[];if(0===nodeChildrenMap[targetId].length)isSelected=!selectedIds.includes(targetId),updatedSelectedIds=selectedIds.includes(targetId)?selectedIds.filter(id=>id!==targetId):selectedIds.concat([targetId]);else{let affectedLeafNodeIds=(0,_tree.getLeafNodeIds)(nodeChildrenMap,targetId),hasUncheckedChildren=affectedLeafNodeIds.some(leafId=>!selectedIds.includes(leafId));updatedSelectedIds=hasUncheckedChildren?selectedIds.concat(affectedLeafNodeIds.filter(id=>!selectedIds.includes(id))):selectedIds.filter(id=>!affectedLeafNodeIds.includes(id)),isSelected=hasUncheckedChildren}onSelectionToggle?.(targetId,isSelected),onSelectionChange(updatedSelectedIds)}},handleToggle,onNodeClick:node=>{onNodeClick?.(node)},expandAll,hideBorder,size,showItemsCount,renderRightContent,activeId:visibleActiveNodeId,focusedNodeId,visibleNodeIndexMap,ariaLabelExpand:slotProps?.toggle?.["aria-label-expand"]??deprecatedAriaAttributes?.ariaLabelExpand,ariaLabelCollapse:slotProps?.toggle?.["aria-label-collapse"]??deprecatedAriaAttributes?.ariaLabelCollapse});return _react.default.createElement("div",null,_react.default.createElement(_styledcomponents.StyledList,{ref:listRef,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityTree",size:size,...ariaAttributes,role:"tree","aria-multiselectable":!!nodeCheckboxState||void 0},renderTreeBranches({data:result,level:0,renderFn:renderTreeBranches})),hasMoreNodes&&_react.default.createElement(_styledcomponents.StyledShowMore,null,_react.default.createElement(_Box.Box,{alignText:"center",space:"xs"},_react.default.createElement(_Button.Button,{fullWidth:!0,size:"s",variant:"tertiary",onClick:handleIncreaseMaxNodeCount},showMoreButtonLabel))))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"BaseEntityTree",{enumerable:!0,get:function(){return BaseEntityTree}});const _react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_Button=require("../Button/Button"),_Box=require("../Box/Box"),_styledcomponents=require("../EntityList/styled-components"),_EntityTreeItem=require("./EntityTreeItem"),_useKeyboard=require("../../shared/useKeyboard"),_useFocusByIndex=require("../EntityList/useFocusByIndex"),_Text=require("../Typography/Text/Text"),_tree=require("./tree"),flattenTree=(data,expandedIds,expadedAll)=>{let flattened=[];return data.forEach(node=>{flattened.push(node),(node.children.length>0&&expandedIds[node.id]||expadedAll)&&flattened.push(...flattenTree(node.children,expandedIds,expadedAll))}),flattened},getLastNodeOfList=({node,data,level,isParentsLastOfLvl})=>{let currentLastNodeOfLvl=node.id===data[data.length-1].id;return 0===level?currentLastNodeOfLvl:isParentsLastOfLvl&&currentLastNodeOfLvl},useTreeTruncation=({chunkSize,data,expandAll,nodeExpandedState})=>{let[maxNodesCount,setMaxNodesCount]=(0,_react.useState)(chunkSize),{result,hasMoreNodes}=(0,_react.useMemo)(()=>(0,_tree.trimDataByMaxSize)(data,nodeExpandedState,expandAll,maxNodesCount),[data,nodeExpandedState,expandAll,maxNodesCount]);return{handleIncreaseMaxNodeCount:(0,_react.useCallback)(()=>{setMaxNodesCount(prev=>prev+chunkSize)},[chunkSize]),result,hasMoreNodes}},Node=({isFirstNode,nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange,handleToggle,expandAll,onNodeClick,hideBorder,size,showItemsCount,renderRightContent,activeId,focusedNodeId,node,level,renderFn,isLastNodeOfList,ariaLabelExpand,ariaLabelCollapse,visibleNodeIndexMap})=>{let readOnly=null===nodeCheckboxState,hasChildren=node.children.length>0,expandedState=!!expandAll||!!nodeExpandedState[node.id],leafItems=(0,_tree.getLeafNodeIds)(nodeChildrenMap,node.id),totalItemsCount=leafItems.length,selectedItemsCount=nodeCheckboxState?leafItems.filter(leafId=>"checked"===nodeCheckboxState[leafId]).length:null,countLabel=nodeCheckboxState?`(${selectedItemsCount}/${totalItemsCount})`:`(${totalItemsCount})`,lastLeaf=!hasChildren&&!node.isFiltered,isExpanded=lastLeaf?void 0:expandedState,{children,...nodeDataWithoutChildren}=node,isFocused=focusedNodeId===node.id;return _react.default.createElement(_EntityTreeItem.EntityTreeItem,{key:node.id,"data-list-item":visibleNodeIndexMap[node.id],hideBorder:hideBorder||isLastNodeOfList&&(!isExpanded||node.isFiltered),tabIndex:isFocused||null===focusedNodeId&&isFirstNode?0:-1,size:size,lSpaceStep:level,onSpaceEnterPress:()=>{if(readOnly){handleToggle(node.id),onNodeClick?.(nodeDataWithoutChildren);return}handleSelectionChange(node.id)},description:node.description,renderLabel:({textSize})=>_react.default.createElement(_react.default.Fragment,null,node.label,showItemsCount&&!lastLeaf&&_react.default.createElement(_Text.Text,{as:"span",size:textSize,color:"tertiary"}," ",countLabel)),isActive:activeId===node.id,isExpanded:isExpanded,isDisabledExpand:expandAll,checkboxProps:!readOnly&&{size:"s",name:node.label,checked:nodeCheckboxState?.[node.id]==="checked",indeterminate:nodeCheckboxState?.[node.id]==="indeterminate",onChange:()=>handleSelectionChange(node.id)},onExpandClick:e=>{e.stopPropagation(),handleToggle(node.id)},isClickable:readOnly,onClick:()=>{handleToggle(node.id),onNodeClick?.(nodeDataWithoutChildren)},renderRight:renderRightContent?renderRightProps=>renderRightContent({...renderRightProps,...node}):void 0,ariaLabelExpand:ariaLabelExpand,ariaLabelCollapse:ariaLabelCollapse,"aria-label":node.label,"aria-level":level+1},hasChildren&&_react.default.createElement("div",{role:"group"},renderFn({data:children,level:level+1,renderFn,isParentsLastOfLvl:isLastNodeOfList})))},makeRenderTreeBranches=renderTreeArgs=>({data,level,renderFn,isParentsLastOfLvl})=>data.map((node,i)=>{let isFirstNode=0===level&&0===i,isLastNodeOfList=getLastNodeOfList({node,data,level,isParentsLastOfLvl});return _react.default.createElement(Node,{key:node.id,level:level,node:node,isFirstNode:isFirstNode,renderFn:renderFn,isLastNodeOfList:isLastNodeOfList,...renderTreeArgs})}),BaseEntityTree=({ariaAttributes:deprecatedAriaAttributes,slotProps,data,selectedIds,onSelectionChange,onSelectionToggle,onNodeClick,expandedIds=[],onToggle,activeId,chunkSize=10,filterFn,onTreeChange,hideBorder=!1,size="m",showItemsCount=!0,showMoreButtonLabel,renderRightContent,"data-e2e-test-id":dataE2eTestId,...ariaAttributes})=>{let nodeChildrenMap=Object.assign({},...data.map(tree=>(0,_tree.getNodeChildrenMap)(tree))),nodeCheckboxState=selectedIds?Object.assign({},...data.map(tree=>(0,_tree.getTreeCheckboxState)(nodeChildrenMap,tree.id,selectedIds))):null,nodeExpandedState=expandedIds.reduce((acc,id)=>(acc[id]=!0,acc),{}),visibleActiveNodeId=(0,_tree.getVisibleActiveNodeId)(nodeChildrenMap,nodeExpandedState,activeId),handleExpand=(0,_react.useCallback)(targetId=>{onToggle&&!expandedIds.includes(targetId)&&onToggle(expandedIds.concat([targetId]))},[expandedIds,onToggle]),handleCollapse=(0,_react.useCallback)(targetId=>{onToggle&&expandedIds.includes(targetId)&&onToggle(expandedIds.filter(id=>id!==targetId))},[expandedIds,onToggle]),handleToggle=(0,_react.useCallback)(targetId=>{expandedIds.includes(targetId)?handleCollapse(targetId):handleExpand(targetId)},[expandedIds,handleCollapse,handleExpand]),dataShown=filterFn?data.map(tree=>(0,_tree.filterTree)(tree,filterFn)).filter(Boolean):data;(0,_react.useEffect)(()=>{onTreeChange&&onTreeChange(dataShown.map(tree=>(0,_tree.mapTree)(tree,node=>({...node,checkedState:!!nodeCheckboxState&&nodeCheckboxState[node.id],isExpanded:!!nodeExpandedState[node.id]}))))},[dataShown,nodeCheckboxState,nodeExpandedState,onTreeChange]);let expandAll=!!filterFn,{hasMoreNodes,handleIncreaseMaxNodeCount,result}=useTreeTruncation({chunkSize,data:dataShown,nodeExpandedState,expandAll}),listRef=_react.default.useRef(null),visibleNodes=(0,_react.useMemo)(()=>flattenTree(result,nodeExpandedState,expandAll),[result,nodeExpandedState,expandAll]),visibleNodeIndexMap=(0,_react.useMemo)(()=>visibleNodes.reduce((acc,node,index)=>(acc[node.id]=index,acc),{}),[visibleNodes]),focusableNodes=(0,_react.useMemo)(()=>visibleNodes.map(node=>({id:node.id,isDisabled:!!node.isDisabled})),[visibleNodes]),{moveFocus,focusedIndex}=(0,_useFocusByIndex.useFocusByIndex)({containerRef:listRef,nodeSelector:"data-list-item",data:focusableNodes}),focusedNodeId=focusedIndex>=0?visibleNodes[focusedIndex]?.id??null:null;(0,_useKeyboard.useKeyboard)({ArrowDown:()=>{moveFocus(1)},ArrowUp:()=>{moveFocus(-1)},ArrowRight:()=>{!expandAll&&focusedNodeId&&nodeChildrenMap[focusedNodeId]?.length&&!nodeExpandedState[focusedNodeId]&&handleExpand(focusedNodeId)},ArrowLeft:()=>{!expandAll&&focusedNodeId&&nodeChildrenMap[focusedNodeId]?.length&&nodeExpandedState[focusedNodeId]&&handleCollapse(focusedNodeId)}},listRef,!!visibleNodes.length);let renderTreeBranches=makeRenderTreeBranches({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange:targetId=>{if(onSelectionChange){let isSelected,updatedSelectedIds=[];if(0===nodeChildrenMap[targetId].length)isSelected=!selectedIds.includes(targetId),updatedSelectedIds=selectedIds.includes(targetId)?selectedIds.filter(id=>id!==targetId):selectedIds.concat([targetId]);else{let affectedLeafNodeIds=(0,_tree.getLeafNodeIds)(nodeChildrenMap,targetId),hasUncheckedChildren=affectedLeafNodeIds.some(leafId=>!selectedIds.includes(leafId));updatedSelectedIds=hasUncheckedChildren?selectedIds.concat(affectedLeafNodeIds.filter(id=>!selectedIds.includes(id))):selectedIds.filter(id=>!affectedLeafNodeIds.includes(id)),isSelected=hasUncheckedChildren}onSelectionToggle?.(targetId,isSelected),onSelectionChange(updatedSelectedIds)}},handleToggle,onNodeClick:node=>{onNodeClick?.(node)},expandAll,hideBorder,size,showItemsCount,renderRightContent,activeId:visibleActiveNodeId,focusedNodeId,visibleNodeIndexMap,ariaLabelExpand:slotProps?.toggle?.["aria-label-expand"]??deprecatedAriaAttributes?.ariaLabelExpand,ariaLabelCollapse:slotProps?.toggle?.["aria-label-collapse"]??deprecatedAriaAttributes?.ariaLabelCollapse});return _react.default.createElement("div",null,_react.default.createElement(_styledcomponents.StyledList,{ref:listRef,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityTree",size:size,...ariaAttributes,role:"tree","aria-multiselectable":!!nodeCheckboxState||void 0},renderTreeBranches({data:result,level:0,renderFn:renderTreeBranches})),hasMoreNodes&&_react.default.createElement(_styledcomponents.StyledShowMore,null,_react.default.createElement(_Box.Box,{alignText:"center",space:"xs"},_react.default.createElement(_Button.Button,{fullWidth:!0,size:"s",variant:"tertiary",onClick:handleIncreaseMaxNodeCount},showMoreButtonLabel))))};
@@ -1,3 +1,3 @@
1
1
  import React from "react";
2
2
  import type { EntityListProps } from "./types";
3
- export declare function BaseEntityList({ data, size, onClick, isSelectable, selectedIds, onSelectionChange, onSelectionToggle, renderRightContent, getLeftIconProps, hideBorder, filterFn, isVirtualized, maxHeight, ariaAttributes: deprecatedAriaAttributes, slotProps, "data-e2e-test-id": dataE2eTestId, ...ariaAttributes }: EntityListProps): React.ReactElement;
3
+ export declare function BaseEntityList({ data, size, onClick, isSelectable, selectedIds, onSelectionChange, onSelectionToggle, renderRightContent, getLeftIconProps, hideBorder, filterFn, isVirtualized, maxHeight, ariaAttributes: deprecatedAriaAttributes, slotProps, role: roleProp, "data-e2e-test-id": dataE2eTestId, ...ariaAttributes }: EntityListProps): React.ReactElement;
@@ -1 +1 @@
1
- import React,{useRef,useMemo,useCallback}from"react";import styled from"@emotion/styled";import{StyledList}from"./styled-components";import{useKeyboard}from"../../shared/useKeyboard";import{Icon}from"../Icon/Icon";import{EntityListItem}from"./EntityListItem";import{VirtualizedEntityList}from"./VirtualizedEntityList";import{useFocusByIndex}from"./useFocusByIndex";let StyledMinHeightCell=styled("div",{target:"e18an0wv0",label:"StyledMinHeightCell"})(({theme,textSize})=>({minHeight:"s"===textSize?`calc(${theme.variables.size.spacing.m} + ${theme.variables.size.spacing.xxs})`:theme.variables.size.spacing.l,display:"flex",alignItems:"center"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9CYXNlRW50aXR5TGlzdC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvQmFzZUVudGl0eUxpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VSZWYsIHVzZU1lbW8sIHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IFN0eWxlZExpc3QgfSBmcm9tIFwiLi9zdHlsZWQtY29tcG9uZW50c1wiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHlMaXN0UHJvcHMsIExpc3ROb2RlLCBUZXh0U2l6ZVByb3BzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IHVzZUtleWJvYXJkIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC91c2VLZXlib2FyZFwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IEVudGl0eUxpc3RJdGVtIH0gZnJvbSBcIi4vRW50aXR5TGlzdEl0ZW1cIjtcbmltcG9ydCB7IFZpcnR1YWxpemVkRW50aXR5TGlzdCB9IGZyb20gXCIuL1ZpcnR1YWxpemVkRW50aXR5TGlzdFwiO1xuaW1wb3J0IHsgdXNlRm9jdXNCeUluZGV4IH0gZnJvbSBcIi4vdXNlRm9jdXNCeUluZGV4XCI7XG5cbi8vIFRoaXMgbWluSGVpZ2h0IGlzIG5lZWRlZCBmb3IgYWxpZ24gc21hbGwgaWNvbnMgaW4gdGhlIG1pZGRsZSBvZiAxIHJvdyB0ZXh0LFxuLy8gYnV0IGl0IHNob3VsZCBzdGF5IGF0IHRoZSB0b3AgaWYgdGhlcmUgaXMgbXVsdGlsaW5lIHRleHRcbmNvbnN0IFN0eWxlZE1pbkhlaWdodENlbGwgPSBzdHlsZWQuZGl2PFRleHRTaXplUHJvcHM+KFxuICAoeyB0aGVtZSwgdGV4dFNpemUgfSkgPT4gKHtcbiAgICBtaW5IZWlnaHQ6XG4gICAgICB0ZXh0U2l6ZSA9PT0gXCJzXCJcbiAgICAgICAgPyBgY2FsYygke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcubX0gKyAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzfSlgXG4gICAgICAgIDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5sLFxuICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIH0pXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gQmFzZUVudGl0eUxpc3Qoe1xuICBkYXRhLFxuICBzaXplID0gXCJtXCIsXG4gIG9uQ2xpY2ssXG4gIGlzU2VsZWN0YWJsZSxcbiAgc2VsZWN0ZWRJZHMsXG4gIG9uU2VsZWN0aW9uQ2hhbmdlLFxuICBvblNlbGVjdGlvblRvZ2dsZSxcbiAgcmVuZGVyUmlnaHRDb250ZW50LFxuICBnZXRMZWZ0SWNvblByb3BzLFxuICBoaWRlQm9yZGVyLFxuICBmaWx0ZXJGbixcbiAgaXNWaXJ0dWFsaXplZCxcbiAgbWF4SGVpZ2h0LFxuICBhcmlhQXR0cmlidXRlczogZGVwcmVjYXRlZEFyaWFBdHRyaWJ1dGVzLFxuICBzbG90UHJvcHMsXG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAuLi5hcmlhQXR0cmlidXRlc1xufTogRW50aXR5TGlzdFByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgYXJpYUxhYmVsRXhwYW5kID1cbiAgICBzbG90UHJvcHM/LnRvZ2dsZT8uW1wiYXJpYS1sYWJlbC1leHBhbmRcIl0gPz9cbiAgICBkZXByZWNhdGVkQXJpYUF0dHJpYnV0ZXM/LmFyaWFMYWJlbEV4cGFuZDtcbiAgY29uc3QgYXJpYUxhYmVsQ29sbGFwc2UgPVxuICAgIHNsb3RQcm9wcz8udG9nZ2xlPy5bXCJhcmlhLWxhYmVsLWNvbGxhcHNlXCJdID8/XG4gICAgZGVwcmVjYXRlZEFyaWFBdHRyaWJ1dGVzPy5hcmlhTGFiZWxDb2xsYXBzZTtcblxuICBjb25zdCBkYXRhU2hvd24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWRhdGEubGVuZ3RoKSByZXR1cm4gZGF0YTtcblxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGRhdGEuZmlsdGVyKGZpbHRlckZuKSA6IGRhdGE7XG4gIH0sIFtkYXRhLCBmaWx0ZXJGbl0pO1xuXG4gIGNvbnN0IHNlbGVjdGVkSWRzU2V0ID0gdXNlTWVtbygoKSA9PiBuZXcgU2V0KHNlbGVjdGVkSWRzKSwgW3NlbGVjdGVkSWRzXSk7XG5cbiAgY29uc3QgbGlzdFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgY29uc3QgZm9jdXNhYmxlSXRlbXMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBkYXRhU2hvd24ubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgaXNEaXNhYmxlZDogQm9vbGVhbihpdGVtLmlzRGlzYWJsZWQpLFxuICAgICAgfSkpLFxuICAgIFtkYXRhU2hvd25dXG4gICk7XG5cbiAgY29uc3QgeyBtb3ZlRm9jdXMsIGZvY3VzZWRJbmRleDogc2VsZWN0ZWRJbmRleCB9ID0gdXNlRm9jdXNCeUluZGV4KHtcbiAgICBjb250YWluZXJSZWY6IGxpc3RSZWYsXG4gICAgbm9kZVNlbGVjdG9yOiBcImRhdGEtbGlzdC1pdGVtXCIsXG4gICAgZGF0YTogZm9jdXNhYmxlSXRlbXMsXG4gICAgcHJldmVudFNjcm9sbDogaXNWaXJ0dWFsaXplZCxcbiAgfSk7XG5cbiAgdXNlS2V5Ym9hcmQoXG4gICAge1xuICAgICAgQXJyb3dEb3duOiAoKSA9PiB7XG4gICAgICAgIG1vdmVGb2N1cygxKTtcbiAgICAgIH0sXG4gICAgICBBcnJvd1VwOiAoKSA9PiB7XG4gICAgICAgIG1vdmVGb2N1cygtMSk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgbGlzdFJlZixcbiAgICBpc1NlbGVjdGFibGVcbiAgKTtcbiAgY29uc3QgaGFuZGxlT25DbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChpdGVtOiBMaXN0Tm9kZSkgPT4ge1xuICAgICAgY29uc3QgeyBpZCB9ID0gaXRlbTtcblxuICAgICAgaWYgKGlzU2VsZWN0YWJsZSkge1xuICAgICAgICBjb25zdCB3aWxsQmVTZWxlY3RlZCA9ICFzZWxlY3RlZElkc1NldC5oYXMoaWQpO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZElkc1NldCA9IG5ldyBTZXQoc2VsZWN0ZWRJZHNTZXQpO1xuXG4gICAgICAgIGlmICh3aWxsQmVTZWxlY3RlZCkge1xuICAgICAgICAgIG5ld1NlbGVjdGVkSWRzU2V0LmFkZChpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3U2VsZWN0ZWRJZHNTZXQuZGVsZXRlKGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9uU2VsZWN0aW9uVG9nZ2xlPy4oaWQsIHdpbGxCZVNlbGVjdGVkKTtcbiAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2U/LihBcnJheS5mcm9tKG5ld1NlbGVjdGVkSWRzU2V0KSk7XG4gICAgICB9XG5cbiAgICAgIG9uQ2xpY2s/LihpdGVtKTtcbiAgICB9LFxuICAgIFtcbiAgICAgIHNlbGVjdGVkSWRzU2V0LFxuICAgICAgb25TZWxlY3Rpb25DaGFuZ2UsXG4gICAgICBvblNlbGVjdGlvblRvZ2dsZSxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBpc1NlbGVjdGFibGUsXG4gICAgXVxuICApO1xuICBjb25zdCByZW5kZXJFbnRpdHlJdGVtID0gKGluZGV4OiBudW1iZXIpOiBSZWFjdC5SZWFjdE5vZGUgPT4ge1xuICAgIGNvbnN0IGl0ZW0gPSBkYXRhU2hvd25baW5kZXhdO1xuICAgIGlmICghaXRlbSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBpc0xhc3RJdGVtID0gaW5kZXggPT09IGRhdGFTaG93bi5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGlzRmlyc3RJdGVtID0gaW5kZXggPT09IDA7XG4gICAgY29uc3QgZGVmYXVsdFRhYkluZGV4ID0gaXNGaXJzdEl0ZW0gJiYgIXNlbGVjdGVkSW5kZXg7XG4gICAgY29uc3QgdGFiSW5kZXggPVxuICAgICAgIWl0ZW0uaXNEaXNhYmxlZCAmJlxuICAgICAgaXNTZWxlY3RhYmxlICYmXG4gICAgICAoaW5kZXggPT09IHNlbGVjdGVkSW5kZXggfHwgZGVmYXVsdFRhYkluZGV4KVxuICAgICAgICA/IDBcbiAgICAgICAgOiAtMTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gc2VsZWN0ZWRJZHNTZXQuaGFzKGl0ZW0uaWQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxFbnRpdHlMaXN0SXRlbVxuICAgICAgICBrZXk9e2l0ZW0uaWR9XG4gICAgICAgIGRhdGEtbGlzdC1pdGVtPXtpbmRleH1cbiAgICAgICAgYXJpYS1sYWJlbD17aXRlbVtcImFyaWEtbGFiZWxcIl0gfHwgaXRlbS5sYWJlbH1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgaGlkZUJvcmRlcj17aGlkZUJvcmRlciB8fCBpc0xhc3RJdGVtfVxuICAgICAgICBpc0FjdGl2ZT17aXRlbS5pc0FjdGl2ZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXRlbS5pc0Rpc2FibGVkfVxuICAgICAgICBpc0NsaWNrYWJsZT17Qm9vbGVhbihvbkNsaWNrIHx8IHNlbGVjdGVkSWRzKX1cbiAgICAgICAgaXNTZWxlY3RlZD17aXNTZWxlY3RhYmxlID8gaXNTZWxlY3RlZCA6IHVuZGVmaW5lZH1cbiAgICAgICAgZGVzY3JpcHRpb249e2l0ZW0uZGVzY3JpcHRpb259XG4gICAgICAgIG9uU3BhY2VFbnRlclByZXNzPXsoKSA9PiBoYW5kbGVPbkNsaWNrKGl0ZW0pfVxuICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgIGFyaWFMYWJlbEV4cGFuZD17YXJpYUxhYmVsRXhwYW5kfVxuICAgICAgICBhcmlhTGFiZWxDb2xsYXBzZT17YXJpYUxhYmVsQ29sbGFwc2V9XG4gICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNJbnNpZGVMYWJlbCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcImxhYmVsXCIpO1xuICAgICAgICAgIGlmICghaXNJbnNpZGVMYWJlbCkge1xuICAgICAgICAgICAgaGFuZGxlT25DbGljayhpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNoZWNrYm94UHJvcHM9e1xuICAgICAgICAgIGlzU2VsZWN0YWJsZSAmJiB7XG4gICAgICAgICAgICBuYW1lOiBcImxpc3QtY2hlY2tib3hcIixcbiAgICAgICAgICAgIHNpemU6IFwic1wiLFxuICAgICAgICAgICAgY2hlY2tlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiBoYW5kbGVPbkNsaWNrKGl0ZW0pLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZW5kZXJMYWJlbD17KCkgPT4gaXRlbS5sYWJlbH1cbiAgICAgICAgcmVuZGVyTGVmdD17XG4gICAgICAgICAgZ2V0TGVmdEljb25Qcm9wc1xuICAgICAgICAgICAgPyAoeyB0ZXh0U2l6ZSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPEljb24gey4uLmdldExlZnRJY29uUHJvcHMoaXRlbSl9IHNpemU9e3RleHRTaXplfSAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IG51bGxcbiAgICAgICAgfVxuICAgICAgICByZW5kZXJSaWdodD17KHsgYWN0aW9uU2l6ZSwgdGV4dFNpemUgfSkgPT5cbiAgICAgICAgICByZW5kZXJSaWdodENvbnRlbnQgPyAoXG4gICAgICAgICAgICA8U3R5bGVkTWluSGVpZ2h0Q2VsbCB0ZXh0U2l6ZT17dGV4dFNpemV9PlxuICAgICAgICAgICAgICB7cmVuZGVyUmlnaHRDb250ZW50KHsgdGV4dFNpemUsIGFjdGlvblNpemUsIC4uLml0ZW0gfSl9XG4gICAgICAgICAgICA8L1N0eWxlZE1pbkhlaWdodENlbGw+XG4gICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e2xpc3RSZWZ9PlxuICAgICAge2lzVmlydHVhbGl6ZWQgJiYgbWF4SGVpZ2h0ID8gKFxuICAgICAgICA8VmlydHVhbGl6ZWRFbnRpdHlMaXN0XG4gICAgICAgICAgaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgbWF4SGVpZ2h0PXttYXhIZWlnaHR9XG4gICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICBkYXRhU2hvd249e2RhdGFTaG93bn1cbiAgICAgICAgICBzZWxlY3RlZEluZGV4PXtzZWxlY3RlZEluZGV4fVxuICAgICAgICAgIGl0ZW1UZW1wbGF0ZT17cmVuZGVyRW50aXR5SXRlbX1cbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIHJvbGU9e2lzU2VsZWN0YWJsZSA/IFwibGlzdGJveFwiIDogXCJsaXN0XCJ9XG4gICAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9e2lzU2VsZWN0YWJsZSA/IHRydWUgOiB1bmRlZmluZWR9XG4gICAgICAgICAgey4uLmFyaWFBdHRyaWJ1dGVzfVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPFN0eWxlZExpc3RcbiAgICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgZGF0YS1kcy1pZD1cIkVudGl0eUxpc3RcIlxuICAgICAgICAgIHsuLi5hcmlhQXR0cmlidXRlc31cbiAgICAgICAgICByb2xlPXtpc1NlbGVjdGFibGUgPyBcImxpc3Rib3hcIiA6IFwibGlzdFwifVxuICAgICAgICAgIGFyaWEtbXVsdGlzZWxlY3RhYmxlPXtpc1NlbGVjdGFibGUgPyB0cnVlIDogdW5kZWZpbmVkfVxuICAgICAgICA+XG4gICAgICAgICAge2RhdGFTaG93bi5tYXAoKF9pdGVtLCBpKSA9PiByZW5kZXJFbnRpdHlJdGVtKGkpKX1cbiAgICAgICAgPC9TdHlsZWRMaXN0PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZNEIifQ== */");export function BaseEntityList({data,size="m",onClick,isSelectable,selectedIds,onSelectionChange,onSelectionToggle,renderRightContent,getLeftIconProps,hideBorder,filterFn,isVirtualized,maxHeight,ariaAttributes:deprecatedAriaAttributes,slotProps,"data-e2e-test-id":dataE2eTestId,...ariaAttributes}){let ariaLabelExpand=slotProps?.toggle?.["aria-label-expand"]??deprecatedAriaAttributes?.ariaLabelExpand,ariaLabelCollapse=slotProps?.toggle?.["aria-label-collapse"]??deprecatedAriaAttributes?.ariaLabelCollapse,dataShown=useMemo(()=>data.length&&filterFn?data.filter(filterFn):data,[data,filterFn]),selectedIdsSet=useMemo(()=>new Set(selectedIds),[selectedIds]),listRef=useRef(null),{moveFocus,focusedIndex:selectedIndex}=useFocusByIndex({containerRef:listRef,nodeSelector:"data-list-item",data:useMemo(()=>dataShown.map(item=>({id:item.id,isDisabled:!!item.isDisabled})),[dataShown]),preventScroll:isVirtualized});useKeyboard({ArrowDown:()=>{moveFocus(1)},ArrowUp:()=>{moveFocus(-1)}},listRef,isSelectable);let handleOnClick=useCallback(item=>{let{id}=item;if(isSelectable){let willBeSelected=!selectedIdsSet.has(id),newSelectedIdsSet=new Set(selectedIdsSet);willBeSelected?newSelectedIdsSet.add(id):newSelectedIdsSet.delete(id),onSelectionToggle?.(id,willBeSelected),onSelectionChange?.(Array.from(newSelectedIdsSet))}onClick?.(item)},[selectedIdsSet,onSelectionChange,onSelectionToggle,onClick,isSelectable]),renderEntityItem=index=>{let item=dataShown[index];if(!item)return null;let isLastItem=index===dataShown.length-1,tabIndex=item.isDisabled||!isSelectable||index!==selectedIndex&&(0!==index||selectedIndex)?-1:0,isSelected=selectedIdsSet.has(item.id);return React.createElement(EntityListItem,{key:item.id,"data-list-item":index,"aria-label":item["aria-label"]||item.label,size:size,hideBorder:hideBorder||isLastItem,isActive:item.isActive,isDisabled:item.isDisabled,isClickable:!!(onClick||selectedIds),isSelected:isSelectable?isSelected:void 0,description:item.description,onSpaceEnterPress:()=>handleOnClick(item),tabIndex:tabIndex,ariaLabelExpand:ariaLabelExpand,ariaLabelCollapse:ariaLabelCollapse,onClick:e=>{e.target.closest("label")||handleOnClick(item)},checkboxProps:isSelectable&&{name:"list-checkbox",size:"s",checked:isSelected,onChange:()=>handleOnClick(item)},renderLabel:()=>item.label,renderLeft:getLeftIconProps?({textSize})=>React.createElement(Icon,{...getLeftIconProps(item),size:textSize}):null,renderRight:({actionSize,textSize})=>renderRightContent?React.createElement(StyledMinHeightCell,{textSize:textSize},renderRightContent({textSize,actionSize,...item})):null})};return React.createElement("div",{ref:listRef},isVirtualized&&maxHeight?React.createElement(VirtualizedEntityList,{id:dataE2eTestId,maxHeight:maxHeight,size:size,dataShown:dataShown,selectedIndex:selectedIndex,itemTemplate:renderEntityItem,"data-e2e-test-id":dataE2eTestId,role:isSelectable?"listbox":"list","aria-multiselectable":!!isSelectable||void 0,...ariaAttributes}):React.createElement(StyledList,{size:size,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityList",...ariaAttributes,role:isSelectable?"listbox":"list","aria-multiselectable":!!isSelectable||void 0},dataShown.map((_item,i)=>renderEntityItem(i))))}
1
+ import React,{useRef,useMemo,useCallback}from"react";import{StyledList}from"./styled-components";import{useKeyboard}from"../../shared/useKeyboard";import{Icon}from"../Icon/Icon";import{EntityListItem}from"./EntityListItem";import{VirtualizedEntityList}from"./VirtualizedEntityList";import{useFocusByIndex}from"./useFocusByIndex";let ITEM_ROLE_MAP={list:"listitem",listbox:"option",menu:"menuitem"};export function BaseEntityList({data,size="m",onClick,isSelectable,selectedIds,onSelectionChange,onSelectionToggle,renderRightContent,getLeftIconProps,hideBorder,filterFn,isVirtualized,maxHeight,ariaAttributes:deprecatedAriaAttributes,slotProps,role:roleProp,"data-e2e-test-id":dataE2eTestId,...ariaAttributes}){let rootRole,{itemRole,...rootAriaProps}=(rootRole=roleProp??"list",isSelectable&&(rootRole="listbox"),{role:rootRole,itemRole:ITEM_ROLE_MAP[rootRole],"aria-multiselectable":"listbox"===rootRole&&!!isSelectable||void 0}),ariaLabelExpand=slotProps?.toggle?.["aria-label-expand"]??deprecatedAriaAttributes?.ariaLabelExpand,ariaLabelCollapse=slotProps?.toggle?.["aria-label-collapse"]??deprecatedAriaAttributes?.ariaLabelCollapse,dataShown=useMemo(()=>data.length&&filterFn?data.filter(filterFn):data,[data,filterFn]),selectedIdsSet=useMemo(()=>new Set(selectedIds),[selectedIds]),listRef=useRef(null),{moveFocus,focusedIndex:selectedIndex}=useFocusByIndex({containerRef:listRef,nodeSelector:"data-list-item",data:useMemo(()=>dataShown.map(item=>({id:item.id,isDisabled:!!item.isDisabled})),[dataShown]),preventScroll:isVirtualized,initialIndex:useMemo(()=>{let index=dataShown.findIndex(item=>item.isActive);return -1!==index?index:0},[dataShown])});useKeyboard({ArrowDown:()=>{moveFocus(1)},ArrowUp:()=>{moveFocus(-1)}},listRef,isSelectable||!!onClick);let handleOnClick=useCallback(item=>{let{id}=item;if(isSelectable){let willBeSelected=!selectedIdsSet.has(id),newSelectedIdsSet=new Set(selectedIdsSet);willBeSelected?newSelectedIdsSet.add(id):newSelectedIdsSet.delete(id),onSelectionToggle?.(id,willBeSelected),onSelectionChange?.(Array.from(newSelectedIdsSet))}onClick?.(item)},[selectedIdsSet,onSelectionChange,onSelectionToggle,onClick,isSelectable]),renderEntityItem=index=>{let tabIndex,item=dataShown[index];if(!item)return null;let isLastItem=index===dataShown.length-1,isSelected=selectedIdsSet.has(item.id);return(isSelectable||onClick)&&(tabIndex=item.isDisabled||index!==selectedIndex&&(0!==index||selectedIndex)?-1:0),React.createElement(EntityListItem,{key:item.id,"data-list-item":index,"aria-label":item["aria-label"]||item.label,size:size,hideBorder:hideBorder||isLastItem,isActive:item.isActive,isDisabled:item.isDisabled,isClickable:!!(onClick||selectedIds),isSelected:isSelectable?isSelected:void 0,role:itemRole,description:item.description,onSpaceEnterPress:()=>handleOnClick(item),tabIndex:tabIndex,ariaLabelExpand:ariaLabelExpand,ariaLabelCollapse:ariaLabelCollapse,onClick:e=>{e.target.closest("label")||handleOnClick(item)},checkboxProps:isSelectable&&{name:"list-checkbox",size:"s",checked:isSelected,onChange:()=>handleOnClick(item)},renderLabel:()=>item.label,renderLeft:getLeftIconProps?({textSize})=>React.createElement(Icon,{...getLeftIconProps(item),size:textSize}):null,renderRight:renderRightProps=>renderRightContent?renderRightContent({...renderRightProps,...item}):void 0})};return React.createElement("div",{ref:listRef},isVirtualized&&maxHeight?React.createElement(VirtualizedEntityList,{id:dataE2eTestId,maxHeight:maxHeight,size:size,dataShown:dataShown,selectedIndex:selectedIndex,itemTemplate:renderEntityItem,"data-e2e-test-id":dataE2eTestId,...rootAriaProps,...ariaAttributes}):React.createElement(StyledList,{size:size,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityList",...rootAriaProps,...ariaAttributes},dataShown.map((_item,i)=>renderEntityItem(i))))}
@@ -1 +1 @@
1
- import React,{cloneElement,isValidElement}from"react";import styled from"@emotion/styled";import{CheckboxRaw}from"../Form/Checkbox/Checkbox";import{EntityListItemText}from"./EntityListItemText";import{Inline}from"../Inline/Inline";import{StyledWrapperOffset}from"./styled-components";let StyledLabel=styled(StyledWrapperOffset,{target:"e1nalbpv0",label:"StyledLabel"})(({theme,size})=>({cursor:"pointer",display:"block",margin:`-${theme.variables.size.spacing["xs"===size?"xxs":size]} 0`}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9FbnRpdHlJdGVtQm9keS50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvRW50aXR5SXRlbUJvZHkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbmltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB0eXBlIHsgSFRNTEF0dHJpYnV0ZXMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENoZWNrYm94UmF3IH0gZnJvbSBcIi4uL0Zvcm0vQ2hlY2tib3gvQ2hlY2tib3hcIjtcbmltcG9ydCB7IEVudGl0eUxpc3RJdGVtVGV4dCB9IGZyb20gXCIuL0VudGl0eUxpc3RJdGVtVGV4dFwiO1xuaW1wb3J0IHsgSW5saW5lIH0gZnJvbSBcIi4uL0lubGluZS9JbmxpbmVcIjtcbmltcG9ydCB7IFN0eWxlZFdyYXBwZXJPZmZzZXQgfSBmcm9tIFwiLi9zdHlsZWQtY29tcG9uZW50c1wiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHlMaXN0SXRlbVByb3BzIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuY29uc3QgU3R5bGVkTGFiZWwgPSBzdHlsZWQoU3R5bGVkV3JhcHBlck9mZnNldCkoKHsgdGhlbWUsIHNpemUgfSkgPT4gKHtcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgZGlzcGxheTogXCJibG9ja1wiLFxuICBtYXJnaW46IGAtJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nW3NpemUgPT09IFwieHNcIiA/IFwieHhzXCIgOiBzaXplXX0gMGAsXG59KSk7XG5cbmNvbnN0IGhhc0ludGVyYWN0aXZlUHJvcHMgPSAoZWxlbWVudDogUmVhY3QuUmVhY3RFbGVtZW50KTogYm9vbGVhbiA9PlxuICBbXCJvbkNsaWNrXCIsIFwib25Nb3VzZURvd25cIiwgXCJvblBvaW50ZXJEb3duXCJdLnNvbWUoXG4gICAgKHApID0+IHR5cGVvZiBlbGVtZW50LnByb3BzPy5bcF0gPT09IFwiZnVuY3Rpb25cIlxuICApO1xuXG5jb25zdCBpc0ludGVyYWN0aXZlRWxlbWVudCA9IChcbiAgZWxlbWVudDogUmVhY3QuUmVhY3ROb2RlXG4pOiBlbGVtZW50IGlzIFJlYWN0LlJlYWN0RWxlbWVudDxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4+ID0+XG4gIGlzVmFsaWRFbGVtZW50KGVsZW1lbnQpICYmXG4gIChoYXNJbnRlcmFjdGl2ZVByb3BzKGVsZW1lbnQpIHx8IFwiaHJlZlwiIGluIChlbGVtZW50LnByb3BzID8/IHt9KSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHlJdGVtQm9keSh7XG4gIGNoZWNrYm94UHJvcHMsXG4gIGRlc2NyaXB0aW9uLFxuICByZW5kZXJMYWJlbCxcbiAgcmVuZGVyTGVmdCxcbiAgcmVuZGVyUmlnaHQsXG4gIHRhYkluZGV4LFxuICBzaXplID0gXCJtXCIsXG59OiBQYXJ0aWFsPEVudGl0eUxpc3RJdGVtUHJvcHM+KTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgdGV4dFNpemUgPSBzaXplID09PSBcInhzXCIgPyBcInNcIiA6IFwibVwiO1xuICBjb25zdCBhY3Rpb25TaXplID0gc2l6ZSA9PT0gXCJsXCIgPyBcIm1cIiA6IFwic1wiO1xuICBjb25zdCByaWdodEVsZW1lbnQgPSByZW5kZXJSaWdodD8uKHsgdGV4dFNpemUsIGFjdGlvblNpemUgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8SW5saW5lIG5vV3JhcCBhbGlnbkl0ZW1zPVwic3BhY2VCZXR3ZWVuXCIgc3BhY2U9e1tcInhzXCIsIFwibVwiXX0+XG4gICAgICB7Y2hlY2tib3hQcm9wcyA/IChcbiAgICAgICAgPFN0eWxlZExhYmVsIGFzPVwibGFiZWxcIiBzaXplPXtzaXplfSBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8SW5saW5lIG5vV3JhcCBzcGFjZT17W1wieHNcIiwgXCJtXCJdfT5cbiAgICAgICAgICAgIDxDaGVja2JveFJhdyB7Li4uY2hlY2tib3hQcm9wc30gaW5lcnQ9XCJcIiAvPlxuICAgICAgICAgICAgPEVudGl0eUxpc3RJdGVtVGV4dCBzaXplPXt0ZXh0U2l6ZX0gZGVzY3JpcHRpb249e2Rlc2NyaXB0aW9ufT5cbiAgICAgICAgICAgICAge3JlbmRlckxhYmVsKHsgdGV4dFNpemUgfSl9XG4gICAgICAgICAgICA8L0VudGl0eUxpc3RJdGVtVGV4dD5cbiAgICAgICAgICA8L0lubGluZT5cbiAgICAgICAgPC9TdHlsZWRMYWJlbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxJbmxpbmUgbm9XcmFwIHNwYWNlPXtbXCJ4c1wiLCBcIm1cIl19PlxuICAgICAgICAgIHtyZW5kZXJMZWZ0ICYmIHJlbmRlckxlZnQoeyB0ZXh0U2l6ZSB9KX1cbiAgICAgICAgICA8RW50aXR5TGlzdEl0ZW1UZXh0IHNpemU9e3RleHRTaXplfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259PlxuICAgICAgICAgICAge3JlbmRlckxhYmVsKHsgdGV4dFNpemUgfSl9XG4gICAgICAgICAgPC9FbnRpdHlMaXN0SXRlbVRleHQ+XG4gICAgICAgIDwvSW5saW5lPlxuICAgICAgKX1cblxuICAgICAge2lzSW50ZXJhY3RpdmVFbGVtZW50KHJpZ2h0RWxlbWVudClcbiAgICAgICAgPyBjbG9uZUVsZW1lbnQocmlnaHRFbGVtZW50LCB7XG4gICAgICAgICAgICB0YWJJbmRleCxcbiAgICAgICAgICAgIG9uQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgIHJpZ2h0RWxlbWVudC5wcm9wcy5vbkNsaWNrPy4oZXZlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLihyaWdodEVsZW1lbnQucHJvcHMub25Nb3VzZURvd24gJiYge1xuICAgICAgICAgICAgICBvbk1vdXNlRG93bjogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIHJpZ2h0RWxlbWVudC5wcm9wcy5vbk1vdXNlRG93bj8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKHJpZ2h0RWxlbWVudC5wcm9wcy5vblBvaW50ZXJEb3duICYmIHtcbiAgICAgICAgICAgICAgb25Qb2ludGVyRG93bjogKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgcmlnaHRFbGVtZW50LnByb3BzLm9uUG9pbnRlckRvd24/LihldmVudCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KVxuICAgICAgICA6IHJpZ2h0RWxlbWVudH1cbiAgICA8L0lubGluZT5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVb0IifQ== */"),hasInteractiveProps=element=>["onClick","onMouseDown","onPointerDown"].some(p=>"function"==typeof element.props?.[p]),isInteractiveElement=element=>isValidElement(element)&&(hasInteractiveProps(element)||"href"in(element.props??{}));export function EntityItemBody({checkboxProps,description,renderLabel,renderLeft,renderRight,tabIndex,size="m"}){let textSize="xs"===size?"s":"m",rightElement=renderRight?.({textSize,actionSize:"l"===size?"m":"s"});return React.createElement(Inline,{noWrap:!0,alignItems:"spaceBetween",space:["xs","m"]},checkboxProps?React.createElement(StyledLabel,{as:"label",size:size,"aria-hidden":"true"},React.createElement(Inline,{noWrap:!0,space:["xs","m"]},React.createElement(CheckboxRaw,{...checkboxProps,inert:""}),React.createElement(EntityListItemText,{size:textSize,description:description},renderLabel({textSize})))):React.createElement(Inline,{noWrap:!0,space:["xs","m"]},renderLeft&&renderLeft({textSize}),React.createElement(EntityListItemText,{size:textSize,description:description},renderLabel({textSize}))),isInteractiveElement(rightElement)?cloneElement(rightElement,{tabIndex,onClick:event=>{event.stopPropagation(),rightElement.props.onClick?.(event)},...rightElement.props.onMouseDown&&{onMouseDown:event=>{event.stopPropagation(),rightElement.props.onMouseDown?.(event)}},...rightElement.props.onPointerDown&&{onPointerDown:event=>{event.stopPropagation(),rightElement.props.onPointerDown?.(event)}}}):rightElement)}
1
+ import React,{cloneElement,isValidElement}from"react";import styled from"@emotion/styled";import{CheckboxRaw}from"../Form/Checkbox/Checkbox";import{EntityListItemText}from"./EntityListItemText";import{Inline}from"../Inline/Inline";import{StyledWrapperOffset}from"./styled-components";let StyledLabel=styled(StyledWrapperOffset,{target:"erqpiki0",label:"StyledLabel"})(({theme,size})=>({cursor:"pointer",display:"block",margin:`-${theme.variables.size.spacing["xs"===size?"xxs":size]} 0`}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9FbnRpdHlJdGVtQm9keS50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvRW50aXR5SXRlbUJvZHkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbmltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB0eXBlIHsgSFRNTEF0dHJpYnV0ZXMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENoZWNrYm94UmF3IH0gZnJvbSBcIi4uL0Zvcm0vQ2hlY2tib3gvQ2hlY2tib3hcIjtcbmltcG9ydCB7IEVudGl0eUxpc3RJdGVtVGV4dCB9IGZyb20gXCIuL0VudGl0eUxpc3RJdGVtVGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBUZXh0U2l6ZVByb3BzLCBFbnRpdHlMaXN0SXRlbVByb3BzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IElubGluZSB9IGZyb20gXCIuLi9JbmxpbmUvSW5saW5lXCI7XG5pbXBvcnQgeyBTdHlsZWRXcmFwcGVyT2Zmc2V0IH0gZnJvbSBcIi4vc3R5bGVkLWNvbXBvbmVudHNcIjtcblxuY29uc3QgU3R5bGVkTGFiZWwgPSBzdHlsZWQoU3R5bGVkV3JhcHBlck9mZnNldCkoKHsgdGhlbWUsIHNpemUgfSkgPT4gKHtcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgZGlzcGxheTogXCJibG9ja1wiLFxuICBtYXJnaW46IGAtJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nW3NpemUgPT09IFwieHNcIiA/IFwieHhzXCIgOiBzaXplXX0gMGAsXG59KSk7XG5cbi8vIFRoaXMgbWluSGVpZ2h0IGlzIG5lZWRlZCBmb3IgYWxpZ24gc21hbGwgaWNvbnMgaW4gdGhlIG1pZGRsZSBvZiAxIHJvdyB0ZXh0LFxuLy8gYnV0IGl0IHNob3VsZCBzdGF5IGF0IHRoZSB0b3AgaWYgdGhlcmUgaXMgbXVsdGlsaW5lIHRleHRcbmNvbnN0IFN0eWxlZE1pbkhlaWdodENlbGwgPSBzdHlsZWQuZGl2PFRleHRTaXplUHJvcHM+KFxuICAoeyB0aGVtZSwgdGV4dFNpemUgfSkgPT4gKHtcbiAgICBtaW5IZWlnaHQ6XG4gICAgICB0ZXh0U2l6ZSA9PT0gXCJzXCJcbiAgICAgICAgPyBgY2FsYygke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcubX0gKyAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzfSlgXG4gICAgICAgIDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5sLFxuICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIH0pXG4pO1xuXG5jb25zdCBoYXNJbnRlcmFjdGl2ZVByb3BzID0gKGVsZW1lbnQ6IFJlYWN0LlJlYWN0RWxlbWVudCk6IGJvb2xlYW4gPT5cbiAgW1wib25DbGlja1wiLCBcIm9uTW91c2VEb3duXCIsIFwib25Qb2ludGVyRG93blwiXS5zb21lKFxuICAgIChwKSA9PiB0eXBlb2YgZWxlbWVudC5wcm9wcz8uW3BdID09PSBcImZ1bmN0aW9uXCJcbiAgKTtcblxuY29uc3QgaXNJbnRlcmFjdGl2ZUVsZW1lbnQgPSAoXG4gIGVsZW1lbnQ6IFJlYWN0LlJlYWN0Tm9kZVxuKTogZWxlbWVudCBpcyBSZWFjdC5SZWFjdEVsZW1lbnQ8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+PiA9PlxuICBpc1ZhbGlkRWxlbWVudChlbGVtZW50KSAmJlxuICAoaGFzSW50ZXJhY3RpdmVQcm9wcyhlbGVtZW50KSB8fCBcImhyZWZcIiBpbiAoZWxlbWVudC5wcm9wcyA/PyB7fSkpO1xuXG5leHBvcnQgZnVuY3Rpb24gRW50aXR5SXRlbUJvZHkoe1xuICBjaGVja2JveFByb3BzLFxuICBkZXNjcmlwdGlvbixcbiAgcmVuZGVyTGFiZWwsXG4gIHJlbmRlckxlZnQsXG4gIHJlbmRlclJpZ2h0LFxuICB0YWJJbmRleCxcbiAgc2l6ZSA9IFwibVwiLFxufTogUGFydGlhbDxFbnRpdHlMaXN0SXRlbVByb3BzPik6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHRleHRTaXplID0gc2l6ZSA9PT0gXCJ4c1wiID8gXCJzXCIgOiBcIm1cIjtcbiAgY29uc3QgYWN0aW9uU2l6ZSA9IHNpemUgPT09IFwibFwiID8gXCJtXCIgOiBcInNcIjtcbiAgY29uc3QgcmlnaHRFbGVtZW50ID0gcmVuZGVyUmlnaHQ/Lih7IHRleHRTaXplLCBhY3Rpb25TaXplLCB0YWJJbmRleCB9KTtcblxuICByZXR1cm4gKFxuICAgIDxJbmxpbmUgbm9XcmFwIGFsaWduSXRlbXM9XCJzcGFjZUJldHdlZW5cIiBzcGFjZT17W1wieHNcIiwgXCJtXCJdfT5cbiAgICAgIHtjaGVja2JveFByb3BzID8gKFxuICAgICAgICA8U3R5bGVkTGFiZWwgYXM9XCJsYWJlbFwiIHNpemU9e3NpemV9IGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgIDxJbmxpbmUgbm9XcmFwIHNwYWNlPXtbXCJ4c1wiLCBcIm1cIl19PlxuICAgICAgICAgICAgPENoZWNrYm94UmF3IHsuLi5jaGVja2JveFByb3BzfSBpbmVydD1cIlwiIC8+XG4gICAgICAgICAgICA8RW50aXR5TGlzdEl0ZW1UZXh0IHNpemU9e3RleHRTaXplfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259PlxuICAgICAgICAgICAgICB7cmVuZGVyTGFiZWwoeyB0ZXh0U2l6ZSB9KX1cbiAgICAgICAgICAgIDwvRW50aXR5TGlzdEl0ZW1UZXh0PlxuICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICA8L1N0eWxlZExhYmVsPlxuICAgICAgKSA6IChcbiAgICAgICAgPElubGluZSBub1dyYXAgc3BhY2U9e1tcInhzXCIsIFwibVwiXX0+XG4gICAgICAgICAge3JlbmRlckxlZnQgJiYgcmVuZGVyTGVmdCh7IHRleHRTaXplIH0pfVxuICAgICAgICAgIDxFbnRpdHlMaXN0SXRlbVRleHQgc2l6ZT17dGV4dFNpemV9IGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn0+XG4gICAgICAgICAgICB7cmVuZGVyTGFiZWwoeyB0ZXh0U2l6ZSB9KX1cbiAgICAgICAgICA8L0VudGl0eUxpc3RJdGVtVGV4dD5cbiAgICAgICAgPC9JbmxpbmU+XG4gICAgICApfVxuXG4gICAgICB7cmlnaHRFbGVtZW50ICYmIChcbiAgICAgICAgPFN0eWxlZE1pbkhlaWdodENlbGwgdGV4dFNpemU9e3RleHRTaXplfT5cbiAgICAgICAgICB7aXNJbnRlcmFjdGl2ZUVsZW1lbnQocmlnaHRFbGVtZW50KVxuICAgICAgICAgICAgPyBjbG9uZUVsZW1lbnQocmlnaHRFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXgsXG4gICAgICAgICAgICAgICAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICByaWdodEVsZW1lbnQucHJvcHMub25DbGljaz8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLihyaWdodEVsZW1lbnQucHJvcHMub25Nb3VzZURvd24gJiYge1xuICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd246IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0RWxlbWVudC5wcm9wcy5vbk1vdXNlRG93bj8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLi4uKHJpZ2h0RWxlbWVudC5wcm9wcy5vblBvaW50ZXJEb3duICYmIHtcbiAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd246IChldmVudDogUmVhY3QuUG9pbnRlckV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRFbGVtZW50LnByb3BzLm9uUG9pbnRlckRvd24/LihldmVudCk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiByaWdodEVsZW1lbnR9XG4gICAgICAgIDwvU3R5bGVkTWluSGVpZ2h0Q2VsbD5cbiAgICAgICl9XG4gICAgPC9JbmxpbmU+XG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVW9CIn0= */"),StyledMinHeightCell=styled("div",{target:"erqpiki1",label:"StyledMinHeightCell"})(({theme,textSize})=>({minHeight:"s"===textSize?`calc(${theme.variables.size.spacing.m} + ${theme.variables.size.spacing.xxs})`:theme.variables.size.spacing.l,display:"flex",alignItems:"center"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9FbnRpdHlJdGVtQm9keS50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvRW50aXR5SXRlbUJvZHkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbmltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB0eXBlIHsgSFRNTEF0dHJpYnV0ZXMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENoZWNrYm94UmF3IH0gZnJvbSBcIi4uL0Zvcm0vQ2hlY2tib3gvQ2hlY2tib3hcIjtcbmltcG9ydCB7IEVudGl0eUxpc3RJdGVtVGV4dCB9IGZyb20gXCIuL0VudGl0eUxpc3RJdGVtVGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBUZXh0U2l6ZVByb3BzLCBFbnRpdHlMaXN0SXRlbVByb3BzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IElubGluZSB9IGZyb20gXCIuLi9JbmxpbmUvSW5saW5lXCI7XG5pbXBvcnQgeyBTdHlsZWRXcmFwcGVyT2Zmc2V0IH0gZnJvbSBcIi4vc3R5bGVkLWNvbXBvbmVudHNcIjtcblxuY29uc3QgU3R5bGVkTGFiZWwgPSBzdHlsZWQoU3R5bGVkV3JhcHBlck9mZnNldCkoKHsgdGhlbWUsIHNpemUgfSkgPT4gKHtcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgZGlzcGxheTogXCJibG9ja1wiLFxuICBtYXJnaW46IGAtJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nW3NpemUgPT09IFwieHNcIiA/IFwieHhzXCIgOiBzaXplXX0gMGAsXG59KSk7XG5cbi8vIFRoaXMgbWluSGVpZ2h0IGlzIG5lZWRlZCBmb3IgYWxpZ24gc21hbGwgaWNvbnMgaW4gdGhlIG1pZGRsZSBvZiAxIHJvdyB0ZXh0LFxuLy8gYnV0IGl0IHNob3VsZCBzdGF5IGF0IHRoZSB0b3AgaWYgdGhlcmUgaXMgbXVsdGlsaW5lIHRleHRcbmNvbnN0IFN0eWxlZE1pbkhlaWdodENlbGwgPSBzdHlsZWQuZGl2PFRleHRTaXplUHJvcHM+KFxuICAoeyB0aGVtZSwgdGV4dFNpemUgfSkgPT4gKHtcbiAgICBtaW5IZWlnaHQ6XG4gICAgICB0ZXh0U2l6ZSA9PT0gXCJzXCJcbiAgICAgICAgPyBgY2FsYygke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcubX0gKyAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzfSlgXG4gICAgICAgIDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5sLFxuICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIH0pXG4pO1xuXG5jb25zdCBoYXNJbnRlcmFjdGl2ZVByb3BzID0gKGVsZW1lbnQ6IFJlYWN0LlJlYWN0RWxlbWVudCk6IGJvb2xlYW4gPT5cbiAgW1wib25DbGlja1wiLCBcIm9uTW91c2VEb3duXCIsIFwib25Qb2ludGVyRG93blwiXS5zb21lKFxuICAgIChwKSA9PiB0eXBlb2YgZWxlbWVudC5wcm9wcz8uW3BdID09PSBcImZ1bmN0aW9uXCJcbiAgKTtcblxuY29uc3QgaXNJbnRlcmFjdGl2ZUVsZW1lbnQgPSAoXG4gIGVsZW1lbnQ6IFJlYWN0LlJlYWN0Tm9kZVxuKTogZWxlbWVudCBpcyBSZWFjdC5SZWFjdEVsZW1lbnQ8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+PiA9PlxuICBpc1ZhbGlkRWxlbWVudChlbGVtZW50KSAmJlxuICAoaGFzSW50ZXJhY3RpdmVQcm9wcyhlbGVtZW50KSB8fCBcImhyZWZcIiBpbiAoZWxlbWVudC5wcm9wcyA/PyB7fSkpO1xuXG5leHBvcnQgZnVuY3Rpb24gRW50aXR5SXRlbUJvZHkoe1xuICBjaGVja2JveFByb3BzLFxuICBkZXNjcmlwdGlvbixcbiAgcmVuZGVyTGFiZWwsXG4gIHJlbmRlckxlZnQsXG4gIHJlbmRlclJpZ2h0LFxuICB0YWJJbmRleCxcbiAgc2l6ZSA9IFwibVwiLFxufTogUGFydGlhbDxFbnRpdHlMaXN0SXRlbVByb3BzPik6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHRleHRTaXplID0gc2l6ZSA9PT0gXCJ4c1wiID8gXCJzXCIgOiBcIm1cIjtcbiAgY29uc3QgYWN0aW9uU2l6ZSA9IHNpemUgPT09IFwibFwiID8gXCJtXCIgOiBcInNcIjtcbiAgY29uc3QgcmlnaHRFbGVtZW50ID0gcmVuZGVyUmlnaHQ/Lih7IHRleHRTaXplLCBhY3Rpb25TaXplLCB0YWJJbmRleCB9KTtcblxuICByZXR1cm4gKFxuICAgIDxJbmxpbmUgbm9XcmFwIGFsaWduSXRlbXM9XCJzcGFjZUJldHdlZW5cIiBzcGFjZT17W1wieHNcIiwgXCJtXCJdfT5cbiAgICAgIHtjaGVja2JveFByb3BzID8gKFxuICAgICAgICA8U3R5bGVkTGFiZWwgYXM9XCJsYWJlbFwiIHNpemU9e3NpemV9IGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgIDxJbmxpbmUgbm9XcmFwIHNwYWNlPXtbXCJ4c1wiLCBcIm1cIl19PlxuICAgICAgICAgICAgPENoZWNrYm94UmF3IHsuLi5jaGVja2JveFByb3BzfSBpbmVydD1cIlwiIC8+XG4gICAgICAgICAgICA8RW50aXR5TGlzdEl0ZW1UZXh0IHNpemU9e3RleHRTaXplfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259PlxuICAgICAgICAgICAgICB7cmVuZGVyTGFiZWwoeyB0ZXh0U2l6ZSB9KX1cbiAgICAgICAgICAgIDwvRW50aXR5TGlzdEl0ZW1UZXh0PlxuICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICA8L1N0eWxlZExhYmVsPlxuICAgICAgKSA6IChcbiAgICAgICAgPElubGluZSBub1dyYXAgc3BhY2U9e1tcInhzXCIsIFwibVwiXX0+XG4gICAgICAgICAge3JlbmRlckxlZnQgJiYgcmVuZGVyTGVmdCh7IHRleHRTaXplIH0pfVxuICAgICAgICAgIDxFbnRpdHlMaXN0SXRlbVRleHQgc2l6ZT17dGV4dFNpemV9IGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn0+XG4gICAgICAgICAgICB7cmVuZGVyTGFiZWwoeyB0ZXh0U2l6ZSB9KX1cbiAgICAgICAgICA8L0VudGl0eUxpc3RJdGVtVGV4dD5cbiAgICAgICAgPC9JbmxpbmU+XG4gICAgICApfVxuXG4gICAgICB7cmlnaHRFbGVtZW50ICYmIChcbiAgICAgICAgPFN0eWxlZE1pbkhlaWdodENlbGwgdGV4dFNpemU9e3RleHRTaXplfT5cbiAgICAgICAgICB7aXNJbnRlcmFjdGl2ZUVsZW1lbnQocmlnaHRFbGVtZW50KVxuICAgICAgICAgICAgPyBjbG9uZUVsZW1lbnQocmlnaHRFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXgsXG4gICAgICAgICAgICAgICAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICByaWdodEVsZW1lbnQucHJvcHMub25DbGljaz8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLihyaWdodEVsZW1lbnQucHJvcHMub25Nb3VzZURvd24gJiYge1xuICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd246IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0RWxlbWVudC5wcm9wcy5vbk1vdXNlRG93bj8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLi4uKHJpZ2h0RWxlbWVudC5wcm9wcy5vblBvaW50ZXJEb3duICYmIHtcbiAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd246IChldmVudDogUmVhY3QuUG9pbnRlckV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRFbGVtZW50LnByb3BzLm9uUG9pbnRlckRvd24/LihldmVudCk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiByaWdodEVsZW1lbnR9XG4gICAgICAgIDwvU3R5bGVkTWluSGVpZ2h0Q2VsbD5cbiAgICAgICl9XG4gICAgPC9JbmxpbmU+XG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0I0QiJ9 */"),hasInteractiveProps=element=>["onClick","onMouseDown","onPointerDown"].some(p=>"function"==typeof element.props?.[p]),isInteractiveElement=element=>isValidElement(element)&&(hasInteractiveProps(element)||"href"in(element.props??{}));export function EntityItemBody({checkboxProps,description,renderLabel,renderLeft,renderRight,tabIndex,size="m"}){let textSize="xs"===size?"s":"m",rightElement=renderRight?.({textSize,actionSize:"l"===size?"m":"s",tabIndex});return React.createElement(Inline,{noWrap:!0,alignItems:"spaceBetween",space:["xs","m"]},checkboxProps?React.createElement(StyledLabel,{as:"label",size:size,"aria-hidden":"true"},React.createElement(Inline,{noWrap:!0,space:["xs","m"]},React.createElement(CheckboxRaw,{...checkboxProps,inert:""}),React.createElement(EntityListItemText,{size:textSize,description:description},renderLabel({textSize})))):React.createElement(Inline,{noWrap:!0,space:["xs","m"]},renderLeft&&renderLeft({textSize}),React.createElement(EntityListItemText,{size:textSize,description:description},renderLabel({textSize}))),rightElement&&React.createElement(StyledMinHeightCell,{textSize:textSize},isInteractiveElement(rightElement)?cloneElement(rightElement,{tabIndex,onClick:event=>{event.stopPropagation(),rightElement.props.onClick?.(event)},...rightElement.props.onMouseDown&&{onMouseDown:event=>{event.stopPropagation(),rightElement.props.onMouseDown?.(event)}},...rightElement.props.onPointerDown&&{onPointerDown:event=>{event.stopPropagation(),rightElement.props.onPointerDown?.(event)}}}):rightElement))}
@@ -1 +1 @@
1
- import React,{useCallback,useImperativeHandle,useRef}from"react";import{EntityItemBody}from"./EntityItemBody";import{useKeyboard}from"../../shared/useKeyboard";import{StyledEntityListItemWrapper,StyledEntityListItemButton}from"./styled-components";let useButtonKeyboard=({ref:globalRef,isActive,onSpaceEnterPress})=>{let localRef=useRef(null);return useKeyboard({"Space Enter":onSpaceEnterPress},localRef,isActive,!0),useImperativeHandle(globalRef,()=>localRef.current),localRef};export const EntityListItem=React.forwardRef(({checkboxProps,description,hideBorder,isActive,isClickable,isDisabled,onClick,renderLabel,renderLeft,renderRight,tabIndex,onSpaceEnterPress,size="m","aria-label":ariaLabel,"data-list-item":dataListItem,isSelected},ref)=>{let handleOnClick=useCallback(e=>{isClickable&&onClick&&onClick(e)},[onClick,isClickable]),buttonRef=useButtonKeyboard({ref,isActive:0===tabIndex&&isClickable,onSpaceEnterPress}),isListbox=void 0!==isSelected;return React.createElement(StyledEntityListItemButton,{role:isListbox?"option":"listitem","aria-label":ariaLabel,"aria-selected":isListbox?isSelected:void 0,"aria-disabled":isDisabled,size:size,tabIndex:tabIndex,ref:buttonRef,"data-list-item":dataListItem,"data-id":"list-item",onClick:handleOnClick,isClickable:isClickable,isActive:isActive,isDisabled:isDisabled},React.createElement(StyledEntityListItemWrapper,{size:size,hideBorder:hideBorder||"xs"===size},React.createElement(EntityItemBody,{size:size,tabIndex:tabIndex,checkboxProps:checkboxProps,description:description,renderLabel:renderLabel,renderLeft:renderLeft,renderRight:renderRight})))});
1
+ import React,{useCallback,useImperativeHandle,useRef}from"react";import{EntityItemBody}from"./EntityItemBody";import{useKeyboard}from"../../shared/useKeyboard";import{StyledEntityListItemWrapper,StyledEntityListItemButton}from"./styled-components";let useButtonKeyboard=({ref:globalRef,isActive,onSpaceEnterPress})=>{let localRef=useRef(null);return useKeyboard({"Space Enter":onSpaceEnterPress},localRef,isActive,!0),useImperativeHandle(globalRef,()=>localRef.current),localRef};export const EntityListItem=React.forwardRef(({checkboxProps,description,hideBorder,isActive,isClickable,isDisabled,onClick,renderLabel,renderLeft,renderRight,role,tabIndex,onSpaceEnterPress,size="m","aria-label":ariaLabel,"data-list-item":dataListItem,isSelected},ref)=>{let handleOnClick=useCallback(e=>{isClickable&&onClick&&onClick(e)},[onClick,isClickable]),buttonRef=useButtonKeyboard({ref,isActive:isClickable&&!isDisabled&&void 0!==tabIndex,onSpaceEnterPress}),supportsAriaSelected="menuitem"!==role;return React.createElement(StyledEntityListItemButton,{role:role,"aria-label":ariaLabel,"aria-selected":supportsAriaSelected?isSelected:void 0,"aria-disabled":isDisabled,size:size,tabIndex:tabIndex,ref:buttonRef,"data-list-item":dataListItem,"data-id":"list-item",onClick:handleOnClick,isClickable:isClickable,isActive:isActive,isDisabled:isDisabled},React.createElement(StyledEntityListItemWrapper,{size:size,hideBorder:hideBorder||"xs"===size},React.createElement(EntityItemBody,{size:size,tabIndex:tabIndex,checkboxProps:checkboxProps,description:description,renderLabel:renderLabel,renderLeft:renderLeft,renderRight:renderRight})))});
@@ -9,7 +9,7 @@ export type VirtualizedEntityListProps = {
9
9
  selectedIndex: number;
10
10
  itemTemplate: (index: number) => React.ReactNode;
11
11
  "data-e2e-test-id"?: string;
12
- role?: "list" | "listbox";
12
+ role?: "list" | "listbox" | "menu";
13
13
  "aria-multiselectable"?: boolean;
14
14
  "aria-label"?: string;
15
15
  };
@@ -31,6 +31,9 @@ export type EntityListAriaAttributes = {
31
31
  /** @deprecated Use slotProps.toggle['aria-label-collapse'] instead */
32
32
  ariaLabelCollapse?: string;
33
33
  };
34
+ export type RenderRightProps = TextSizeProps & ActionSizeProps & {
35
+ tabIndex?: number;
36
+ };
34
37
  export type BaseEntityListProps = {
35
38
  /**
36
39
  * @param ListNode[].id
@@ -80,6 +83,8 @@ export type BaseEntityListProps = {
80
83
  slotProps?: EntityListSlotProps;
81
84
  "data-e2e-test-id"?: string;
82
85
  "aria-label"?: string;
86
+ /** ARIA role for the list container. Defaults to 'listbox' when isSelectable, 'list' otherwise. */
87
+ role?: "list" | "listbox" | "menu";
83
88
  };
84
89
  export type EntityListProps = BaseEntityListProps & ({
85
90
  /** Enable virtualization for large lists. When true, only visible items are rendered. */
@@ -107,7 +112,7 @@ export type EntityListItemProps = {
107
112
  onExpandClick?: (e: React.MouseEvent) => void;
108
113
  renderLabel: RenderProps;
109
114
  renderLeft?: RenderProps;
110
- renderRight?: (props: TextSizeProps & ActionSizeProps) => React.ReactNode;
115
+ renderRight?: (props: RenderRightProps) => React.ReactNode;
111
116
  role?: string;
112
117
  size?: ListSize;
113
118
  withWrapper?: (content: () => React.ReactNode) => React.ReactNode;
@@ -12,6 +12,7 @@ type UseFocusByIndexOptions = {
12
12
  containerRef: RefObject<HTMLDivElement | HTMLUListElement>;
13
13
  nodeSelector: string;
14
14
  preventScroll?: boolean;
15
+ initialIndex?: number;
15
16
  };
16
- export declare const useFocusByIndex: ({ data, containerRef, nodeSelector, preventScroll, }: UseFocusByIndexOptions) => UseFocusByIndexResult;
17
+ export declare const useFocusByIndex: ({ data, containerRef, nodeSelector, preventScroll, initialIndex, }: UseFocusByIndexOptions) => UseFocusByIndexResult;
17
18
  export {};
@@ -1 +1 @@
1
- import{useCallback,useEffect,useRef,useState}from"react";let getNextEnabledIndex=(items,startIndex,direction)=>{let index=startIndex+direction;for(;index>=0&&index<items.length;){if(!items[index]?.isDisabled)return index;index+=direction}return -1},getClosestEnabledIndex=(items,currentIndex)=>{if(!items.length)return -1;if(currentIndex>=0&&currentIndex<items.length&&!items[currentIndex]?.isDisabled)return currentIndex;let forward=getNextEnabledIndex(items,currentIndex,1);return -1!==forward?forward:getNextEnabledIndex(items,currentIndex,-1)};export const useFocusByIndex=({data,containerRef,nodeSelector,preventScroll=!1})=>{let[focusedIndex,setFocusedIndex]=useState(()=>getClosestEnabledIndex(data,0)),focusedIndexRef=useRef(focusedIndex);useEffect(()=>{focusedIndexRef.current=focusedIndex},[focusedIndex]);let focusItemAtIndex=useCallback(index=>{if(-1===index)return;let container=containerRef.current;if(!container)return;let element=container.querySelector(`[${nodeSelector}="${index}"]`);!element||data[index]?.isDisabled||(element.focus({preventScroll}),setFocusedIndex(index))},[containerRef,data,nodeSelector,preventScroll]);return useEffect(()=>{let container=containerRef.current;if(!container)return;let handleContainerFocus=()=>{let nextIndex=getClosestEnabledIndex(data,focusedIndexRef.current);-1!==nextIndex&&focusItemAtIndex(nextIndex)},handleFocusIn=event=>{let target=event.target;if(!container.contains(target))return;let attributeValue=target.getAttribute(nodeSelector);if(null===attributeValue)return;let parsedIndex=Number(attributeValue);Number.isNaN(parsedIndex)||data[parsedIndex]?.isDisabled||setFocusedIndex(parsedIndex)};return container.addEventListener("focus",handleContainerFocus),container.addEventListener("focusin",handleFocusIn),()=>{container.removeEventListener("focus",handleContainerFocus),container.removeEventListener("focusin",handleFocusIn)}},[containerRef,data,focusItemAtIndex,nodeSelector]),{moveFocus:useCallback(offset=>{let nextIndex;if(!data.length)return;let direction=offset>0?1:-1,remainingSteps=Math.abs(offset);for(nextIndex=-1===focusedIndex?direction>0?-1:data.length:focusedIndex;remainingSteps>0;){let candidate=getNextEnabledIndex(data,nextIndex,direction);if(-1===candidate)return;nextIndex=candidate,remainingSteps-=1}nextIndex!==focusedIndex&&focusItemAtIndex(nextIndex)},[data,focusItemAtIndex,focusedIndex]),focusedIndex}};
1
+ import{useCallback,useEffect,useRef,useState}from"react";let getNextEnabledIndex=(items,startIndex,direction)=>{let index=startIndex+direction;for(;index>=0&&index<items.length;){if(!items[index]?.isDisabled)return index;index+=direction}return -1},getClosestEnabledIndex=(items,currentIndex)=>{if(!items.length)return -1;if(currentIndex>=0&&currentIndex<items.length&&!items[currentIndex]?.isDisabled)return currentIndex;let forward=getNextEnabledIndex(items,currentIndex,1);return -1!==forward?forward:getNextEnabledIndex(items,currentIndex,-1)};export const useFocusByIndex=({data,containerRef,nodeSelector,preventScroll=!1,initialIndex=0})=>{let[focusedIndex,setFocusedIndex]=useState(()=>getClosestEnabledIndex(data,initialIndex)),focusedIndexRef=useRef(focusedIndex);useEffect(()=>{focusedIndexRef.current=focusedIndex},[focusedIndex]);let focusItemAtIndex=useCallback(index=>{if(-1===index)return;let container=containerRef.current;if(!container)return;let element=container.querySelector(`[${nodeSelector}="${index}"]`);!element||data[index]?.isDisabled||(element.focus({preventScroll}),setFocusedIndex(index))},[containerRef,data,nodeSelector,preventScroll]);return useEffect(()=>{let container=containerRef.current;if(!container)return;let handleContainerFocus=()=>{let nextIndex=getClosestEnabledIndex(data,focusedIndexRef.current);-1!==nextIndex&&focusItemAtIndex(nextIndex)},handleFocusIn=event=>{let target=event.target;if(!container.contains(target))return;let attributeValue=target.getAttribute(nodeSelector);if(null===attributeValue)return;let parsedIndex=Number(attributeValue);Number.isNaN(parsedIndex)||data[parsedIndex]?.isDisabled||setFocusedIndex(parsedIndex)};return container.addEventListener("focus",handleContainerFocus),container.addEventListener("focusin",handleFocusIn),()=>{container.removeEventListener("focus",handleContainerFocus),container.removeEventListener("focusin",handleFocusIn)}},[containerRef,data,focusItemAtIndex,nodeSelector]),{moveFocus:useCallback(offset=>{let nextIndex;if(!data.length)return;let direction=offset>0?1:-1,remainingSteps=Math.abs(offset);for(nextIndex=-1===focusedIndex?direction>0?-1:data.length:focusedIndex;remainingSteps>0;){let candidate=getNextEnabledIndex(data,nextIndex,direction);if(-1===candidate)return;nextIndex=candidate,remainingSteps-=1}nextIndex!==focusedIndex&&focusItemAtIndex(nextIndex)},[data,focusItemAtIndex,focusedIndex]),focusedIndex}};
@@ -1 +1 @@
1
- import React,{useMemo,useState,useEffect,useCallback}from"react";import{Button}from"../Button/Button";import{Box}from"../Box/Box";import{StyledList,StyledShowMore}from"../EntityList/styled-components";import{EntityTreeItem}from"./EntityTreeItem";import{useKeyboard}from"../../shared/useKeyboard";import{useFocusByIndex}from"../EntityList/useFocusByIndex";import{Text}from"../Typography/Text/Text";import{getNodeChildrenMap,getTreeCheckboxState,getVisibleActiveNodeId,getLeafNodeIds,filterTree,mapTree,trimDataByMaxSize}from"./tree";let flattenTree=(data,expandedIds,expadedAll)=>{let flattened=[];return data.forEach(node=>{flattened.push(node),(node.children.length>0&&expandedIds[node.id]||expadedAll)&&flattened.push(...flattenTree(node.children,expandedIds,expadedAll))}),flattened},getLastNodeOfList=({node,data,level,isParentsLastOfLvl})=>{let currentLastNodeOfLvl=node.id===data[data.length-1].id;return 0===level?currentLastNodeOfLvl:isParentsLastOfLvl&&currentLastNodeOfLvl},useTreeTruncation=({chunkSize,data,expandAll,nodeExpandedState})=>{let[maxNodesCount,setMaxNodesCount]=useState(chunkSize),{result,hasMoreNodes}=useMemo(()=>trimDataByMaxSize(data,nodeExpandedState,expandAll,maxNodesCount),[data,nodeExpandedState,expandAll,maxNodesCount]);return{handleIncreaseMaxNodeCount:useCallback(()=>{setMaxNodesCount(prev=>prev+chunkSize)},[chunkSize]),result,hasMoreNodes}},Node=({isFirstNode,nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange,handleToggle,expandAll,onNodeClick,hideBorder,size,showItemsCount,renderRightContent,activeId,focusedNodeId,node,level,renderFn,isLastNodeOfList,ariaLabelExpand,ariaLabelCollapse,visibleNodeIndexMap})=>{let readOnly=null===nodeCheckboxState,hasChildren=node.children.length>0,expandedState=!!expandAll||!!nodeExpandedState[node.id],leafItems=getLeafNodeIds(nodeChildrenMap,node.id),totalItemsCount=leafItems.length,selectedItemsCount=nodeCheckboxState?leafItems.filter(leafId=>"checked"===nodeCheckboxState[leafId]).length:null,countLabel=nodeCheckboxState?`(${selectedItemsCount}/${totalItemsCount})`:`(${totalItemsCount})`,lastLeaf=!hasChildren&&!node.isFiltered,isExpanded=lastLeaf?void 0:expandedState,{children,...nodeDataWithoutChildren}=node,isFocused=focusedNodeId===node.id;return React.createElement(EntityTreeItem,{key:node.id,"data-list-item":visibleNodeIndexMap[node.id],hideBorder:hideBorder||isLastNodeOfList&&(!isExpanded||node.isFiltered),tabIndex:isFocused||null===focusedNodeId&&isFirstNode?0:-1,size:size,lSpaceStep:level,onSpaceEnterPress:()=>{if(readOnly){handleToggle(node.id),onNodeClick?.(nodeDataWithoutChildren);return}handleSelectionChange(node.id)},description:node.description,renderLabel:({textSize})=>React.createElement(React.Fragment,null,node.label,showItemsCount&&!lastLeaf&&React.createElement(Text,{as:"span",size:textSize,color:"tertiary"}," ",countLabel)),isActive:activeId===node.id,isExpanded:isExpanded,isDisabledExpand:expandAll,checkboxProps:!readOnly&&{size:"s",name:node.label,checked:nodeCheckboxState?.[node.id]==="checked",indeterminate:nodeCheckboxState?.[node.id]==="indeterminate",onChange:()=>handleSelectionChange(node.id)},onExpandClick:e=>{e.stopPropagation(),handleToggle(node.id)},isClickable:readOnly,onClick:()=>{handleToggle(node.id),onNodeClick?.(nodeDataWithoutChildren)},renderRight:renderRightContent?sizeProps=>renderRightContent({...sizeProps,...node}):void 0,ariaLabelExpand:ariaLabelExpand,ariaLabelCollapse:ariaLabelCollapse,"aria-label":node.label,"aria-level":level+1},hasChildren&&React.createElement("div",{role:"group"},renderFn({data:children,level:level+1,renderFn,isParentsLastOfLvl:isLastNodeOfList})))},makeRenderTreeBranches=renderTreeArgs=>({data,level,renderFn,isParentsLastOfLvl})=>data.map((node,i)=>{let isFirstNode=0===level&&0===i,isLastNodeOfList=getLastNodeOfList({node,data,level,isParentsLastOfLvl});return React.createElement(Node,{key:node.id,level:level,node:node,isFirstNode:isFirstNode,renderFn:renderFn,isLastNodeOfList:isLastNodeOfList,...renderTreeArgs})});export const BaseEntityTree=({ariaAttributes:deprecatedAriaAttributes,slotProps,data,selectedIds,onSelectionChange,onSelectionToggle,onNodeClick,expandedIds=[],onToggle,activeId,chunkSize=10,filterFn,onTreeChange,hideBorder=!1,size="m",showItemsCount=!0,showMoreButtonLabel,renderRightContent,"data-e2e-test-id":dataE2eTestId,...ariaAttributes})=>{let nodeChildrenMap=Object.assign({},...data.map(tree=>getNodeChildrenMap(tree))),nodeCheckboxState=selectedIds?Object.assign({},...data.map(tree=>getTreeCheckboxState(nodeChildrenMap,tree.id,selectedIds))):null,nodeExpandedState=expandedIds.reduce((acc,id)=>(acc[id]=!0,acc),{}),visibleActiveNodeId=getVisibleActiveNodeId(nodeChildrenMap,nodeExpandedState,activeId),handleExpand=useCallback(targetId=>{onToggle&&!expandedIds.includes(targetId)&&onToggle(expandedIds.concat([targetId]))},[expandedIds,onToggle]),handleCollapse=useCallback(targetId=>{onToggle&&expandedIds.includes(targetId)&&onToggle(expandedIds.filter(id=>id!==targetId))},[expandedIds,onToggle]),handleToggle=useCallback(targetId=>{expandedIds.includes(targetId)?handleCollapse(targetId):handleExpand(targetId)},[expandedIds,handleCollapse,handleExpand]),dataShown=filterFn?data.map(tree=>filterTree(tree,filterFn)).filter(Boolean):data;useEffect(()=>{onTreeChange&&onTreeChange(dataShown.map(tree=>mapTree(tree,node=>({...node,checkedState:!!nodeCheckboxState&&nodeCheckboxState[node.id],isExpanded:!!nodeExpandedState[node.id]}))))},[dataShown,nodeCheckboxState,nodeExpandedState,onTreeChange]);let expandAll=!!filterFn,{hasMoreNodes,handleIncreaseMaxNodeCount,result}=useTreeTruncation({chunkSize,data:dataShown,nodeExpandedState,expandAll}),listRef=React.useRef(null),visibleNodes=useMemo(()=>flattenTree(result,nodeExpandedState,expandAll),[result,nodeExpandedState,expandAll]),visibleNodeIndexMap=useMemo(()=>visibleNodes.reduce((acc,node,index)=>(acc[node.id]=index,acc),{}),[visibleNodes]),{moveFocus,focusedIndex}=useFocusByIndex({containerRef:listRef,nodeSelector:"data-list-item",data:useMemo(()=>visibleNodes.map(node=>({id:node.id,isDisabled:!!node.isDisabled})),[visibleNodes])}),focusedNodeId=focusedIndex>=0?visibleNodes[focusedIndex]?.id??null:null;useKeyboard({ArrowDown:()=>{moveFocus(1)},ArrowUp:()=>{moveFocus(-1)},ArrowRight:()=>{!expandAll&&focusedNodeId&&nodeChildrenMap[focusedNodeId]?.length&&!nodeExpandedState[focusedNodeId]&&handleExpand(focusedNodeId)},ArrowLeft:()=>{!expandAll&&focusedNodeId&&nodeChildrenMap[focusedNodeId]?.length&&nodeExpandedState[focusedNodeId]&&handleCollapse(focusedNodeId)}},listRef,!!visibleNodes.length);let renderTreeBranches=makeRenderTreeBranches({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange:targetId=>{if(onSelectionChange){let isSelected,updatedSelectedIds=[];if(0===nodeChildrenMap[targetId].length)isSelected=!selectedIds.includes(targetId),updatedSelectedIds=selectedIds.includes(targetId)?selectedIds.filter(id=>id!==targetId):selectedIds.concat([targetId]);else{let affectedLeafNodeIds=getLeafNodeIds(nodeChildrenMap,targetId),hasUncheckedChildren=affectedLeafNodeIds.some(leafId=>!selectedIds.includes(leafId));updatedSelectedIds=hasUncheckedChildren?selectedIds.concat(affectedLeafNodeIds.filter(id=>!selectedIds.includes(id))):selectedIds.filter(id=>!affectedLeafNodeIds.includes(id)),isSelected=hasUncheckedChildren}onSelectionToggle?.(targetId,isSelected),onSelectionChange(updatedSelectedIds)}},handleToggle,onNodeClick:node=>{onNodeClick?.(node)},expandAll,hideBorder,size,showItemsCount,renderRightContent,activeId:visibleActiveNodeId,focusedNodeId,visibleNodeIndexMap,ariaLabelExpand:slotProps?.toggle?.["aria-label-expand"]??deprecatedAriaAttributes?.ariaLabelExpand,ariaLabelCollapse:slotProps?.toggle?.["aria-label-collapse"]??deprecatedAriaAttributes?.ariaLabelCollapse});return React.createElement("div",null,React.createElement(StyledList,{ref:listRef,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityTree",size:size,...ariaAttributes,role:"tree","aria-multiselectable":!!nodeCheckboxState||void 0},renderTreeBranches({data:result,level:0,renderFn:renderTreeBranches})),hasMoreNodes&&React.createElement(StyledShowMore,null,React.createElement(Box,{alignText:"center",space:"xs"},React.createElement(Button,{fullWidth:!0,size:"s",variant:"tertiary",onClick:handleIncreaseMaxNodeCount},showMoreButtonLabel))))};
1
+ import React,{useMemo,useState,useEffect,useCallback}from"react";import{Button}from"../Button/Button";import{Box}from"../Box/Box";import{StyledList,StyledShowMore}from"../EntityList/styled-components";import{EntityTreeItem}from"./EntityTreeItem";import{useKeyboard}from"../../shared/useKeyboard";import{useFocusByIndex}from"../EntityList/useFocusByIndex";import{Text}from"../Typography/Text/Text";import{getNodeChildrenMap,getTreeCheckboxState,getVisibleActiveNodeId,getLeafNodeIds,filterTree,mapTree,trimDataByMaxSize}from"./tree";let flattenTree=(data,expandedIds,expadedAll)=>{let flattened=[];return data.forEach(node=>{flattened.push(node),(node.children.length>0&&expandedIds[node.id]||expadedAll)&&flattened.push(...flattenTree(node.children,expandedIds,expadedAll))}),flattened},getLastNodeOfList=({node,data,level,isParentsLastOfLvl})=>{let currentLastNodeOfLvl=node.id===data[data.length-1].id;return 0===level?currentLastNodeOfLvl:isParentsLastOfLvl&&currentLastNodeOfLvl},useTreeTruncation=({chunkSize,data,expandAll,nodeExpandedState})=>{let[maxNodesCount,setMaxNodesCount]=useState(chunkSize),{result,hasMoreNodes}=useMemo(()=>trimDataByMaxSize(data,nodeExpandedState,expandAll,maxNodesCount),[data,nodeExpandedState,expandAll,maxNodesCount]);return{handleIncreaseMaxNodeCount:useCallback(()=>{setMaxNodesCount(prev=>prev+chunkSize)},[chunkSize]),result,hasMoreNodes}},Node=({isFirstNode,nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange,handleToggle,expandAll,onNodeClick,hideBorder,size,showItemsCount,renderRightContent,activeId,focusedNodeId,node,level,renderFn,isLastNodeOfList,ariaLabelExpand,ariaLabelCollapse,visibleNodeIndexMap})=>{let readOnly=null===nodeCheckboxState,hasChildren=node.children.length>0,expandedState=!!expandAll||!!nodeExpandedState[node.id],leafItems=getLeafNodeIds(nodeChildrenMap,node.id),totalItemsCount=leafItems.length,selectedItemsCount=nodeCheckboxState?leafItems.filter(leafId=>"checked"===nodeCheckboxState[leafId]).length:null,countLabel=nodeCheckboxState?`(${selectedItemsCount}/${totalItemsCount})`:`(${totalItemsCount})`,lastLeaf=!hasChildren&&!node.isFiltered,isExpanded=lastLeaf?void 0:expandedState,{children,...nodeDataWithoutChildren}=node,isFocused=focusedNodeId===node.id;return React.createElement(EntityTreeItem,{key:node.id,"data-list-item":visibleNodeIndexMap[node.id],hideBorder:hideBorder||isLastNodeOfList&&(!isExpanded||node.isFiltered),tabIndex:isFocused||null===focusedNodeId&&isFirstNode?0:-1,size:size,lSpaceStep:level,onSpaceEnterPress:()=>{if(readOnly){handleToggle(node.id),onNodeClick?.(nodeDataWithoutChildren);return}handleSelectionChange(node.id)},description:node.description,renderLabel:({textSize})=>React.createElement(React.Fragment,null,node.label,showItemsCount&&!lastLeaf&&React.createElement(Text,{as:"span",size:textSize,color:"tertiary"}," ",countLabel)),isActive:activeId===node.id,isExpanded:isExpanded,isDisabledExpand:expandAll,checkboxProps:!readOnly&&{size:"s",name:node.label,checked:nodeCheckboxState?.[node.id]==="checked",indeterminate:nodeCheckboxState?.[node.id]==="indeterminate",onChange:()=>handleSelectionChange(node.id)},onExpandClick:e=>{e.stopPropagation(),handleToggle(node.id)},isClickable:readOnly,onClick:()=>{handleToggle(node.id),onNodeClick?.(nodeDataWithoutChildren)},renderRight:renderRightContent?renderRightProps=>renderRightContent({...renderRightProps,...node}):void 0,ariaLabelExpand:ariaLabelExpand,ariaLabelCollapse:ariaLabelCollapse,"aria-label":node.label,"aria-level":level+1},hasChildren&&React.createElement("div",{role:"group"},renderFn({data:children,level:level+1,renderFn,isParentsLastOfLvl:isLastNodeOfList})))},makeRenderTreeBranches=renderTreeArgs=>({data,level,renderFn,isParentsLastOfLvl})=>data.map((node,i)=>{let isFirstNode=0===level&&0===i,isLastNodeOfList=getLastNodeOfList({node,data,level,isParentsLastOfLvl});return React.createElement(Node,{key:node.id,level:level,node:node,isFirstNode:isFirstNode,renderFn:renderFn,isLastNodeOfList:isLastNodeOfList,...renderTreeArgs})});export const BaseEntityTree=({ariaAttributes:deprecatedAriaAttributes,slotProps,data,selectedIds,onSelectionChange,onSelectionToggle,onNodeClick,expandedIds=[],onToggle,activeId,chunkSize=10,filterFn,onTreeChange,hideBorder=!1,size="m",showItemsCount=!0,showMoreButtonLabel,renderRightContent,"data-e2e-test-id":dataE2eTestId,...ariaAttributes})=>{let nodeChildrenMap=Object.assign({},...data.map(tree=>getNodeChildrenMap(tree))),nodeCheckboxState=selectedIds?Object.assign({},...data.map(tree=>getTreeCheckboxState(nodeChildrenMap,tree.id,selectedIds))):null,nodeExpandedState=expandedIds.reduce((acc,id)=>(acc[id]=!0,acc),{}),visibleActiveNodeId=getVisibleActiveNodeId(nodeChildrenMap,nodeExpandedState,activeId),handleExpand=useCallback(targetId=>{onToggle&&!expandedIds.includes(targetId)&&onToggle(expandedIds.concat([targetId]))},[expandedIds,onToggle]),handleCollapse=useCallback(targetId=>{onToggle&&expandedIds.includes(targetId)&&onToggle(expandedIds.filter(id=>id!==targetId))},[expandedIds,onToggle]),handleToggle=useCallback(targetId=>{expandedIds.includes(targetId)?handleCollapse(targetId):handleExpand(targetId)},[expandedIds,handleCollapse,handleExpand]),dataShown=filterFn?data.map(tree=>filterTree(tree,filterFn)).filter(Boolean):data;useEffect(()=>{onTreeChange&&onTreeChange(dataShown.map(tree=>mapTree(tree,node=>({...node,checkedState:!!nodeCheckboxState&&nodeCheckboxState[node.id],isExpanded:!!nodeExpandedState[node.id]}))))},[dataShown,nodeCheckboxState,nodeExpandedState,onTreeChange]);let expandAll=!!filterFn,{hasMoreNodes,handleIncreaseMaxNodeCount,result}=useTreeTruncation({chunkSize,data:dataShown,nodeExpandedState,expandAll}),listRef=React.useRef(null),visibleNodes=useMemo(()=>flattenTree(result,nodeExpandedState,expandAll),[result,nodeExpandedState,expandAll]),visibleNodeIndexMap=useMemo(()=>visibleNodes.reduce((acc,node,index)=>(acc[node.id]=index,acc),{}),[visibleNodes]),{moveFocus,focusedIndex}=useFocusByIndex({containerRef:listRef,nodeSelector:"data-list-item",data:useMemo(()=>visibleNodes.map(node=>({id:node.id,isDisabled:!!node.isDisabled})),[visibleNodes])}),focusedNodeId=focusedIndex>=0?visibleNodes[focusedIndex]?.id??null:null;useKeyboard({ArrowDown:()=>{moveFocus(1)},ArrowUp:()=>{moveFocus(-1)},ArrowRight:()=>{!expandAll&&focusedNodeId&&nodeChildrenMap[focusedNodeId]?.length&&!nodeExpandedState[focusedNodeId]&&handleExpand(focusedNodeId)},ArrowLeft:()=>{!expandAll&&focusedNodeId&&nodeChildrenMap[focusedNodeId]?.length&&nodeExpandedState[focusedNodeId]&&handleCollapse(focusedNodeId)}},listRef,!!visibleNodes.length);let renderTreeBranches=makeRenderTreeBranches({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange:targetId=>{if(onSelectionChange){let isSelected,updatedSelectedIds=[];if(0===nodeChildrenMap[targetId].length)isSelected=!selectedIds.includes(targetId),updatedSelectedIds=selectedIds.includes(targetId)?selectedIds.filter(id=>id!==targetId):selectedIds.concat([targetId]);else{let affectedLeafNodeIds=getLeafNodeIds(nodeChildrenMap,targetId),hasUncheckedChildren=affectedLeafNodeIds.some(leafId=>!selectedIds.includes(leafId));updatedSelectedIds=hasUncheckedChildren?selectedIds.concat(affectedLeafNodeIds.filter(id=>!selectedIds.includes(id))):selectedIds.filter(id=>!affectedLeafNodeIds.includes(id)),isSelected=hasUncheckedChildren}onSelectionToggle?.(targetId,isSelected),onSelectionChange(updatedSelectedIds)}},handleToggle,onNodeClick:node=>{onNodeClick?.(node)},expandAll,hideBorder,size,showItemsCount,renderRightContent,activeId:visibleActiveNodeId,focusedNodeId,visibleNodeIndexMap,ariaLabelExpand:slotProps?.toggle?.["aria-label-expand"]??deprecatedAriaAttributes?.ariaLabelExpand,ariaLabelCollapse:slotProps?.toggle?.["aria-label-collapse"]??deprecatedAriaAttributes?.ariaLabelCollapse});return React.createElement("div",null,React.createElement(StyledList,{ref:listRef,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityTree",size:size,...ariaAttributes,role:"tree","aria-multiselectable":!!nodeCheckboxState||void 0},renderTreeBranches({data:result,level:0,renderFn:renderTreeBranches})),hasMoreNodes&&React.createElement(StyledShowMore,null,React.createElement(Box,{alignText:"center",space:"xs"},React.createElement(Button,{fullWidth:!0,size:"s",variant:"tertiary",onClick:handleIncreaseMaxNodeCount},showMoreButtonLabel))))};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amboss/design-system",
3
- "version": "3.36.2",
3
+ "version": "3.36.3",
4
4
  "description": "the design system for AMBOSS products",
5
5
  "author": "AMBOSS",
6
6
  "license": "ISC",