@amboss/design-system 3.13.9 → 3.13.11

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, renderRightContent, getLeftIconProps, hideBorder, "data-e2e-test-id": dataE2eTestId, }: EntityListProps): React.ReactElement;
3
+ export declare function BaseEntityList({ data, size, onClick, isSelectable, selectedIds, onSelectionChange, renderRightContent, getLeftIconProps, hideBorder, filterFn, "data-e2e-test-id": dataE2eTestId, }: 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"),StyledMinHeightCell=(0,_styled.default)("div",{target:"e1svcpfc0",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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9CYXNlRW50aXR5TGlzdC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvQmFzZUVudGl0eUxpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZUNhbGxiYWNrLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgU3R5bGVkTGlzdCB9IGZyb20gXCIuL3N0eWxlZC1jb21wb25lbnRzXCI7XG5pbXBvcnQgdHlwZSB7IEVudGl0eUxpc3RQcm9wcywgTGlzdE5vZGUsIFRleHRTaXplUHJvcHMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgdXNlS2V5Ym9hcmQgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUtleWJvYXJkXCI7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgRW50aXR5TGlzdEl0ZW0gfSBmcm9tIFwiLi9FbnRpdHlMaXN0SXRlbVwiO1xuXG4vLyBUaGlzIG1pbkhlaWdodCBpcyBuZWVkZWQgZm9yIGFsaWduIHNtYWxsIGljb25zIGluIHRoZSBtaWRkbGUgb2YgMSByb3cgdGV4dCxcbi8vIGJ1dCBpdCBzaG91bGQgc3RheSBhdCB0aGUgdG9wIGlmIHRoZXJlIGlzIG11bHRpbGluZSB0ZXh0XG5jb25zdCBTdHlsZWRNaW5IZWlnaHRDZWxsID0gc3R5bGVkLmRpdjxUZXh0U2l6ZVByb3BzPihcbiAgKHsgdGhlbWUsIHRleHRTaXplIH0pID0+ICh7XG4gICAgbWluSGVpZ2h0OlxuICAgICAgdGV4dFNpemUgPT09IFwic1wiXG4gICAgICAgID8gYGNhbGMoJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLm19ICsgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4c30pYFxuICAgICAgICA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcubCxcbiAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICB9KVxuKTtcblxuY29uc3QgZmluZEVuYWJsZWRJdGVtSW5kZXggPSAoXG4gIGl0ZW1zOiBMaXN0Tm9kZVtdLFxuICBzdGFydEluZGV4OiBudW1iZXIsXG4gIGRpcmVjdGlvbiA9IFwibmV4dFwiXG4pOiBudW1iZXIgPT4ge1xuICBpZiAoZGlyZWN0aW9uID09PSBcIm5leHRcIikge1xuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4ICsgMTsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoIWl0ZW1zW2ldLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gXCJwcmV2aW91c1wiKSB7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgICAgaWYgKCFpdGVtc1tpXS5pc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3RhcnRJbmRleDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBCYXNlRW50aXR5TGlzdCh7XG4gIGRhdGEsXG4gIHNpemUgPSBcIm1cIixcbiAgb25DbGljayxcbiAgaXNTZWxlY3RhYmxlLFxuICBzZWxlY3RlZElkcyxcbiAgb25TZWxlY3Rpb25DaGFuZ2UsXG4gIHJlbmRlclJpZ2h0Q29udGVudCxcbiAgZ2V0TGVmdEljb25Qcm9wcyxcbiAgaGlkZUJvcmRlcixcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI6IGRhdGFFMmVUZXN0SWQsXG59OiBFbnRpdHlMaXN0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBzZWxlY3RlZElkc1NldCA9IHVzZU1lbW8oKCkgPT4gbmV3IFNldChzZWxlY3RlZElkcyksIFtzZWxlY3RlZElkc10pO1xuICBjb25zdCBbaXNLZXlib2FyZEZvY3VzLCBzZXRJc0tleWJvYXJkRm9jdXNdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2VsZWN0ZWRJbmRleCwgc2V0U2VsZWN0ZWRJbmRleF0gPSB1c2VTdGF0ZTxudW1iZXI+KCgpID0+XG4gICAgaXNTZWxlY3RhYmxlIHx8IG9uQ2xpY2sgPyBmaW5kRW5hYmxlZEl0ZW1JbmRleChkYXRhLCAtMSkgOiAtMVxuICApO1xuICBjb25zdCByZWZMaXN0ID0gdXNlUmVmPEhUTUxVTGlzdEVsZW1lbnQ+KG51bGwpO1xuICB1c2VLZXlib2FyZChcbiAgICB7XG4gICAgICBBcnJvd0Rvd246ICgpID0+IHtcbiAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKHRydWUpO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSBmaW5kRW5hYmxlZEl0ZW1JbmRleChkYXRhLCBzZWxlY3RlZEluZGV4KTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChuZXh0SW5kZXgpO1xuICAgICAgfSxcbiAgICAgIEFycm93VXA6ICgpID0+IHtcbiAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKHRydWUpO1xuICAgICAgICBjb25zdCBwcmV2SW5kZXggPSBmaW5kRW5hYmxlZEl0ZW1JbmRleChkYXRhLCBzZWxlY3RlZEluZGV4LCBcInByZXZpb3VzXCIpO1xuICAgICAgICBzZXRTZWxlY3RlZEluZGV4KHByZXZJbmRleCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVmTGlzdCxcbiAgICBzZWxlY3RlZEluZGV4ICE9PSAtMVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZkxpc3QgJiYgcmVmTGlzdC5jdXJyZW50ICYmIGlzS2V5Ym9hcmRGb2N1cyAmJiBzZWxlY3RlZEluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGJ1dHRvbnMgPSByZWZMaXN0LmN1cnJlbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJ2RpdltkYXRhLWlkPVwibGlzdC1pdGVtXCJdJ1xuICAgICAgKTtcblxuICAgICAgKGJ1dHRvbnNbTWF0aC5hYnMoc2VsZWN0ZWRJbmRleCkgJSBidXR0b25zLmxlbmd0aF0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKHtcbiAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3NlbGVjdGVkSW5kZXgsIGlzS2V5Ym9hcmRGb2N1c10pO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoaXRlbTogTGlzdE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHsgaWQgfSA9IGl0ZW07XG5cbiAgICAgIC8vIEhhbmRsZSBjaGVja2JveCBjaGFuZ2VcbiAgICAgIGlmIChpc1NlbGVjdGFibGUpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSWRzU2V0LmhhcyhpZCkpIHtcbiAgICAgICAgICBzZWxlY3RlZElkc1NldC5kZWxldGUoaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGVjdGVkSWRzU2V0LmFkZChpZCk7XG4gICAgICAgIH1cbiAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2U/LihBcnJheS5mcm9tKHNlbGVjdGVkSWRzU2V0KSk7XG4gICAgICB9XG5cbiAgICAgIG9uQ2xpY2s/LihpdGVtKTtcbiAgICB9LFxuICAgIFtzZWxlY3RlZElkc1NldCwgb25TZWxlY3Rpb25DaGFuZ2UsIG9uQ2xpY2ssIGlzU2VsZWN0YWJsZV1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHdhaXQgZm9yIGZvY3VzIHRvIGZ1bGx5IHByb3BhZ2F0ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICByZWZMaXN0LmN1cnJlbnQgJiZcbiAgICAgICAgIXJlZkxpc3QuY3VycmVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KVxuICAgICAgKSB7XG4gICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyhmYWxzZSk7XG4gICAgICAgIHNldFNlbGVjdGVkSW5kZXgoKCkgPT4gZmluZEVuYWJsZWRJdGVtSW5kZXgoZGF0YSwgLTEpKTtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfSwgW3JlZkxpc3QsIHNldFNlbGVjdGVkSW5kZXgsIGRhdGFdKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRMaXN0XG4gICAgICByZWY9e3JlZkxpc3R9XG4gICAgICBzaXplPXtzaXplfVxuICAgICAgZGF0YS1lMmUtdGVzdC1pZD17ZGF0YUUyZVRlc3RJZH1cbiAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgIGRhdGEtZHMtaWQ9XCJFbnRpdHlMaXN0XCJcbiAgICAgIHJvbGU9XCJsaXN0XCJcbiAgICA+XG4gICAgICB7ZGF0YS5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgY29uc3QgdGFiSW5kZXggPSAhaXRlbS5pc0Rpc2FibGVkICYmIGkgPT09IHNlbGVjdGVkSW5kZXggPyAwIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8RW50aXR5TGlzdEl0ZW1cbiAgICAgICAgICAgIGtleT17aXRlbS5pZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2l0ZW1bXCJhcmlhLWxhYmVsXCJdIHx8IGl0ZW0ubGFiZWx9XG4gICAgICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICAgICAgaGlkZUJvcmRlcj17aGlkZUJvcmRlciB8fCBpID09PSBkYXRhLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICBpc0FjdGl2ZT17aXRlbS5pc0FjdGl2ZSB8fCAoaXNLZXlib2FyZEZvY3VzICYmIHNlbGVjdGVkSW5kZXggPT09IGkpfVxuICAgICAgICAgICAgaXNEaXNhYmxlZD17aXRlbS5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgaXNDbGlja2FibGU9e0Jvb2xlYW4ob25DbGljayB8fCBzZWxlY3RlZElkcyl9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbj17aXRlbS5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgIG9uS2V5RG93bj17KCkgPT4gaGFuZGxlT25DbGljayhpdGVtKX1cbiAgICAgICAgICAgIHRhYkluZGV4PXt0YWJJbmRleH1cbiAgICAgICAgICAgIG9uRm9jdXM9eygpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG9uQ2xpY2sgfHwgaXNTZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChpKTtcbiAgICAgICAgICAgICAgICBzZXRJc0tleWJvYXJkRm9jdXModHJ1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2soaXRlbSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2hlY2tib3hQcm9wcz17XG4gICAgICAgICAgICAgIGlzU2VsZWN0YWJsZSAmJiB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJsaXN0LWNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgc2l6ZTogXCJzXCIsXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6ICgpID0+IGhhbmRsZU9uQ2xpY2soaXRlbSksXG4gICAgICAgICAgICAgICAgY2hlY2tlZDogc2VsZWN0ZWRJZHNTZXQuaGFzKGl0ZW0uaWQpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZW5kZXJMYWJlbD17KCkgPT4gaXRlbS5sYWJlbH1cbiAgICAgICAgICAgIHJlbmRlckxlZnQ9e1xuICAgICAgICAgICAgICBnZXRMZWZ0SWNvblByb3BzXG4gICAgICAgICAgICAgICAgPyAoeyB0ZXh0U2l6ZSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0TGVmdEljb25Qcm9wcyhpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgICBzaXplPXt0ZXh0U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlbmRlclJpZ2h0PXsoeyBhY3Rpb25TaXplLCB0ZXh0U2l6ZSB9KSA9PlxuICAgICAgICAgICAgICByZW5kZXJSaWdodENvbnRlbnQgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZE1pbkhlaWdodENlbGwgdGV4dFNpemU9e3RleHRTaXplfT5cbiAgICAgICAgICAgICAgICAgIHtyZW5kZXJSaWdodENvbnRlbnQoeyB0ZXh0U2l6ZSwgYWN0aW9uU2l6ZSwgLi4uaXRlbSB9KX1cbiAgICAgICAgICAgICAgICA8L1N0eWxlZE1pbkhlaWdodENlbGw+XG4gICAgICAgICAgICAgICkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvU3R5bGVkTGlzdD5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQjRCIn0= */"),findEnabledItemIndex=(items,startIndex,direction="next")=>{if("next"===direction){for(let i=startIndex+1;i<items.length;i+=1)if(!items[i].isDisabled)return i}else if("previous"===direction){for(let i=startIndex-1;i>=0;i-=1)if(!items[i].isDisabled)return i}return startIndex};function BaseEntityList({data,size="m",onClick,isSelectable,selectedIds,onSelectionChange,renderRightContent,getLeftIconProps,hideBorder,"data-e2e-test-id":dataE2eTestId}){let selectedIdsSet=(0,_react.useMemo)(()=>new Set(selectedIds),[selectedIds]),[isKeyboardFocus,setIsKeyboardFocus]=(0,_react.useState)(!1),[selectedIndex,setSelectedIndex]=(0,_react.useState)(()=>isSelectable||onClick?findEnabledItemIndex(data,-1):-1),refList=(0,_react.useRef)(null);(0,_useKeyboard.useKeyboard)({ArrowDown:()=>{setIsKeyboardFocus(!0),setSelectedIndex(findEnabledItemIndex(data,selectedIndex))},ArrowUp:()=>{setIsKeyboardFocus(!0),setSelectedIndex(findEnabledItemIndex(data,selectedIndex,"previous"))}},refList,-1!==selectedIndex),(0,_react.useEffect)(()=>{if(refList&&refList.current&&isKeyboardFocus&&selectedIndex>=0){let buttons=refList.current.querySelectorAll('div[data-id="list-item"]');buttons[Math.abs(selectedIndex)%buttons.length].focus({preventScroll:!0})}},[selectedIndex,isKeyboardFocus]);let handleOnClick=(0,_react.useCallback)(item=>{let{id}=item;isSelectable&&(selectedIdsSet.has(id)?selectedIdsSet.delete(id):selectedIdsSet.add(id),onSelectionChange?.(Array.from(selectedIdsSet))),onClick?.(item)},[selectedIdsSet,onSelectionChange,onClick,isSelectable]),handleBlur=(0,_react.useCallback)(()=>{setTimeout(()=>{refList.current&&!refList.current.contains(document.activeElement)&&(setIsKeyboardFocus(!1),setSelectedIndex(()=>findEnabledItemIndex(data,-1)))},0)},[refList,setSelectedIndex,data]);return _react.default.createElement(_styledcomponents.StyledList,{ref:refList,size:size,"data-e2e-test-id":dataE2eTestId,onBlur:handleBlur,"data-ds-id":"EntityList",role:"list"},data.map((item,i)=>{let tabIndex=item.isDisabled||i!==selectedIndex?-1:0;return _react.default.createElement(_EntityListItem.EntityListItem,{key:item.id,"aria-label":item["aria-label"]||item.label,size:size,hideBorder:hideBorder||i===data.length-1,isActive:item.isActive||isKeyboardFocus&&selectedIndex===i,isDisabled:item.isDisabled,isClickable:!!(onClick||selectedIds),description:item.description,onKeyDown:()=>handleOnClick(item),tabIndex:tabIndex,onFocus:()=>{(onClick||isSelectable)&&(setSelectedIndex(i),setIsKeyboardFocus(!0))},onClick:()=>{setIsKeyboardFocus(!1),handleOnClick(item)},checkboxProps:isSelectable&&{name:"list-checkbox",size:"s",onChange:()=>handleOnClick(item),checked:selectedIdsSet.has(item.id)},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})}))}
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"),StyledMinHeightCell=(0,_styled.default)("div",{target:"e9t25660",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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9CYXNlRW50aXR5TGlzdC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvQmFzZUVudGl0eUxpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZUNhbGxiYWNrLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgU3R5bGVkTGlzdCB9IGZyb20gXCIuL3N0eWxlZC1jb21wb25lbnRzXCI7XG5pbXBvcnQgdHlwZSB7IEVudGl0eUxpc3RQcm9wcywgTGlzdE5vZGUsIFRleHRTaXplUHJvcHMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgdXNlS2V5Ym9hcmQgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUtleWJvYXJkXCI7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgRW50aXR5TGlzdEl0ZW0gfSBmcm9tIFwiLi9FbnRpdHlMaXN0SXRlbVwiO1xuXG4vLyBUaGlzIG1pbkhlaWdodCBpcyBuZWVkZWQgZm9yIGFsaWduIHNtYWxsIGljb25zIGluIHRoZSBtaWRkbGUgb2YgMSByb3cgdGV4dCxcbi8vIGJ1dCBpdCBzaG91bGQgc3RheSBhdCB0aGUgdG9wIGlmIHRoZXJlIGlzIG11bHRpbGluZSB0ZXh0XG5jb25zdCBTdHlsZWRNaW5IZWlnaHRDZWxsID0gc3R5bGVkLmRpdjxUZXh0U2l6ZVByb3BzPihcbiAgKHsgdGhlbWUsIHRleHRTaXplIH0pID0+ICh7XG4gICAgbWluSGVpZ2h0OlxuICAgICAgdGV4dFNpemUgPT09IFwic1wiXG4gICAgICAgID8gYGNhbGMoJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLm19ICsgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4c30pYFxuICAgICAgICA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcubCxcbiAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICB9KVxuKTtcblxuY29uc3QgZmluZEVuYWJsZWRJdGVtSW5kZXggPSAoXG4gIGl0ZW1zOiBMaXN0Tm9kZVtdLFxuICBzdGFydEluZGV4OiBudW1iZXIsXG4gIGRpcmVjdGlvbiA9IFwibmV4dFwiXG4pOiBudW1iZXIgPT4ge1xuICBpZiAoZGlyZWN0aW9uID09PSBcIm5leHRcIikge1xuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4ICsgMTsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoIWl0ZW1zW2ldLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gXCJwcmV2aW91c1wiKSB7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgICAgaWYgKCFpdGVtc1tpXS5pc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3RhcnRJbmRleDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBCYXNlRW50aXR5TGlzdCh7XG4gIGRhdGEsXG4gIHNpemUgPSBcIm1cIixcbiAgb25DbGljayxcbiAgaXNTZWxlY3RhYmxlLFxuICBzZWxlY3RlZElkcyxcbiAgb25TZWxlY3Rpb25DaGFuZ2UsXG4gIHJlbmRlclJpZ2h0Q29udGVudCxcbiAgZ2V0TGVmdEljb25Qcm9wcyxcbiAgaGlkZUJvcmRlcixcbiAgZmlsdGVyRm4sXG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxufTogRW50aXR5TGlzdFByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgZGF0YVNob3duID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFkYXRhLmxlbmd0aCkgcmV0dXJuIGRhdGE7XG5cbiAgICByZXR1cm4gZmlsdGVyRm4gPyBkYXRhLmZpbHRlcihmaWx0ZXJGbikgOiBkYXRhO1xuICB9LCBbZGF0YSwgZmlsdGVyRm5dKTtcbiAgY29uc3Qgc2VsZWN0ZWRJZHNTZXQgPSB1c2VNZW1vKCgpID0+IG5ldyBTZXQoc2VsZWN0ZWRJZHMpLCBbc2VsZWN0ZWRJZHNdKTtcbiAgY29uc3QgW2lzS2V5Ym9hcmRGb2N1cywgc2V0SXNLZXlib2FyZEZvY3VzXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGU8bnVtYmVyPigoKSA9PlxuICAgIGlzU2VsZWN0YWJsZSB8fCBvbkNsaWNrID8gZmluZEVuYWJsZWRJdGVtSW5kZXgoZGF0YVNob3duLCAtMSkgOiAtMVxuICApO1xuICBjb25zdCByZWZMaXN0ID0gdXNlUmVmPEhUTUxVTGlzdEVsZW1lbnQ+KG51bGwpO1xuICB1c2VLZXlib2FyZChcbiAgICB7XG4gICAgICBBcnJvd0Rvd246ICgpID0+IHtcbiAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKHRydWUpO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSBmaW5kRW5hYmxlZEl0ZW1JbmRleChkYXRhU2hvd24sIHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICBzZXRTZWxlY3RlZEluZGV4KG5leHRJbmRleCk7XG4gICAgICB9LFxuICAgICAgQXJyb3dVcDogKCkgPT4ge1xuICAgICAgICBzZXRJc0tleWJvYXJkRm9jdXModHJ1ZSk7XG4gICAgICAgIGNvbnN0IHByZXZJbmRleCA9IGZpbmRFbmFibGVkSXRlbUluZGV4KFxuICAgICAgICAgIGRhdGFTaG93bixcbiAgICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICAgIFwicHJldmlvdXNcIlxuICAgICAgICApO1xuICAgICAgICBzZXRTZWxlY3RlZEluZGV4KHByZXZJbmRleCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVmTGlzdCxcbiAgICBzZWxlY3RlZEluZGV4ICE9PSAtMVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZkxpc3QgJiYgcmVmTGlzdC5jdXJyZW50ICYmIGlzS2V5Ym9hcmRGb2N1cyAmJiBzZWxlY3RlZEluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGJ1dHRvbnMgPSByZWZMaXN0LmN1cnJlbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJ2RpdltkYXRhLWlkPVwibGlzdC1pdGVtXCJdJ1xuICAgICAgKTtcblxuICAgICAgKGJ1dHRvbnNbTWF0aC5hYnMoc2VsZWN0ZWRJbmRleCkgJSBidXR0b25zLmxlbmd0aF0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKHtcbiAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3NlbGVjdGVkSW5kZXgsIGlzS2V5Ym9hcmRGb2N1c10pO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoaXRlbTogTGlzdE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHsgaWQgfSA9IGl0ZW07XG5cbiAgICAgIC8vIEhhbmRsZSBjaGVja2JveCBjaGFuZ2VcbiAgICAgIGlmIChpc1NlbGVjdGFibGUpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSWRzU2V0LmhhcyhpZCkpIHtcbiAgICAgICAgICBzZWxlY3RlZElkc1NldC5kZWxldGUoaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGVjdGVkSWRzU2V0LmFkZChpZCk7XG4gICAgICAgIH1cbiAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2U/LihBcnJheS5mcm9tKHNlbGVjdGVkSWRzU2V0KSk7XG4gICAgICB9XG5cbiAgICAgIG9uQ2xpY2s/LihpdGVtKTtcbiAgICB9LFxuICAgIFtzZWxlY3RlZElkc1NldCwgb25TZWxlY3Rpb25DaGFuZ2UsIG9uQ2xpY2ssIGlzU2VsZWN0YWJsZV1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHdhaXQgZm9yIGZvY3VzIHRvIGZ1bGx5IHByb3BhZ2F0ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICByZWZMaXN0LmN1cnJlbnQgJiZcbiAgICAgICAgIXJlZkxpc3QuY3VycmVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KVxuICAgICAgKSB7XG4gICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyhmYWxzZSk7XG4gICAgICAgIHNldFNlbGVjdGVkSW5kZXgoKCkgPT4gZmluZEVuYWJsZWRJdGVtSW5kZXgoZGF0YVNob3duLCAtMSkpO1xuICAgICAgfVxuICAgIH0sIDApO1xuICB9LCBbcmVmTGlzdCwgc2V0U2VsZWN0ZWRJbmRleCwgZGF0YVNob3duXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkTGlzdFxuICAgICAgcmVmPXtyZWZMaXN0fVxuICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICBkYXRhLWRzLWlkPVwiRW50aXR5TGlzdFwiXG4gICAgICByb2xlPVwibGlzdFwiXG4gICAgPlxuICAgICAge2RhdGFTaG93bi5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgY29uc3QgdGFiSW5kZXggPSAhaXRlbS5pc0Rpc2FibGVkICYmIGkgPT09IHNlbGVjdGVkSW5kZXggPyAwIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8RW50aXR5TGlzdEl0ZW1cbiAgICAgICAgICAgIGtleT17aXRlbS5pZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2l0ZW1bXCJhcmlhLWxhYmVsXCJdIHx8IGl0ZW0ubGFiZWx9XG4gICAgICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICAgICAgaGlkZUJvcmRlcj17aGlkZUJvcmRlciB8fCBpID09PSBkYXRhU2hvd24ubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgIGlzQWN0aXZlPXtpdGVtLmlzQWN0aXZlIHx8IChpc0tleWJvYXJkRm9jdXMgJiYgc2VsZWN0ZWRJbmRleCA9PT0gaSl9XG4gICAgICAgICAgICBpc0Rpc2FibGVkPXtpdGVtLmlzRGlzYWJsZWR9XG4gICAgICAgICAgICBpc0NsaWNrYWJsZT17Qm9vbGVhbihvbkNsaWNrIHx8IHNlbGVjdGVkSWRzKX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtpdGVtLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgb25LZXlEb3duPXsoKSA9PiBoYW5kbGVPbkNsaWNrKGl0ZW0pfVxuICAgICAgICAgICAgdGFiSW5kZXg9e3RhYkluZGV4fVxuICAgICAgICAgICAgb25Gb2N1cz17KCkgPT4ge1xuICAgICAgICAgICAgICBpZiAob25DbGljayB8fCBpc1NlbGVjdGFibGUpIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4KGkpO1xuICAgICAgICAgICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKGZhbHNlKTtcbiAgICAgICAgICAgICAgaGFuZGxlT25DbGljayhpdGVtKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjaGVja2JveFByb3BzPXtcbiAgICAgICAgICAgICAgaXNTZWxlY3RhYmxlICYmIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImxpc3QtY2hlY2tib3hcIixcbiAgICAgICAgICAgICAgICBzaXplOiBcInNcIixcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogKCkgPT4gaGFuZGxlT25DbGljayhpdGVtKSxcbiAgICAgICAgICAgICAgICBjaGVja2VkOiBzZWxlY3RlZElkc1NldC5oYXMoaXRlbS5pZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlbmRlckxhYmVsPXsoKSA9PiBpdGVtLmxhYmVsfVxuICAgICAgICAgICAgcmVuZGVyTGVmdD17XG4gICAgICAgICAgICAgIGdldExlZnRJY29uUHJvcHNcbiAgICAgICAgICAgICAgICA/ICh7IHRleHRTaXplIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXRMZWZ0SWNvblByb3BzKGl0ZW0pfVxuICAgICAgICAgICAgICAgICAgICAgIHNpemU9e3RleHRTaXplfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVuZGVyUmlnaHQ9eyh7IGFjdGlvblNpemUsIHRleHRTaXplIH0pID0+XG4gICAgICAgICAgICAgIHJlbmRlclJpZ2h0Q29udGVudCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkTWluSGVpZ2h0Q2VsbCB0ZXh0U2l6ZT17dGV4dFNpemV9PlxuICAgICAgICAgICAgICAgICAge3JlbmRlclJpZ2h0Q29udGVudCh7IHRleHRTaXplLCBhY3Rpb25TaXplLCAuLi5pdGVtIH0pfVxuICAgICAgICAgICAgICAgIDwvU3R5bGVkTWluSGVpZ2h0Q2VsbD5cbiAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC9TdHlsZWRMaXN0PlxuICApO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCNEIifQ== */"),findEnabledItemIndex=(items,startIndex,direction="next")=>{if("next"===direction){for(let i=startIndex+1;i<items.length;i+=1)if(!items[i].isDisabled)return i}else if("previous"===direction){for(let i=startIndex-1;i>=0;i-=1)if(!items[i].isDisabled)return i}return startIndex};function BaseEntityList({data,size="m",onClick,isSelectable,selectedIds,onSelectionChange,renderRightContent,getLeftIconProps,hideBorder,filterFn,"data-e2e-test-id":dataE2eTestId}){let dataShown=(0,_react.useMemo)(()=>data.length&&filterFn?data.filter(filterFn):data,[data,filterFn]),selectedIdsSet=(0,_react.useMemo)(()=>new Set(selectedIds),[selectedIds]),[isKeyboardFocus,setIsKeyboardFocus]=(0,_react.useState)(!1),[selectedIndex,setSelectedIndex]=(0,_react.useState)(()=>isSelectable||onClick?findEnabledItemIndex(dataShown,-1):-1),refList=(0,_react.useRef)(null);(0,_useKeyboard.useKeyboard)({ArrowDown:()=>{setIsKeyboardFocus(!0),setSelectedIndex(findEnabledItemIndex(dataShown,selectedIndex))},ArrowUp:()=>{setIsKeyboardFocus(!0),setSelectedIndex(findEnabledItemIndex(dataShown,selectedIndex,"previous"))}},refList,-1!==selectedIndex),(0,_react.useEffect)(()=>{if(refList&&refList.current&&isKeyboardFocus&&selectedIndex>=0){let buttons=refList.current.querySelectorAll('div[data-id="list-item"]');buttons[Math.abs(selectedIndex)%buttons.length].focus({preventScroll:!0})}},[selectedIndex,isKeyboardFocus]);let handleOnClick=(0,_react.useCallback)(item=>{let{id}=item;isSelectable&&(selectedIdsSet.has(id)?selectedIdsSet.delete(id):selectedIdsSet.add(id),onSelectionChange?.(Array.from(selectedIdsSet))),onClick?.(item)},[selectedIdsSet,onSelectionChange,onClick,isSelectable]),handleBlur=(0,_react.useCallback)(()=>{setTimeout(()=>{refList.current&&!refList.current.contains(document.activeElement)&&(setIsKeyboardFocus(!1),setSelectedIndex(()=>findEnabledItemIndex(dataShown,-1)))},0)},[refList,setSelectedIndex,dataShown]);return _react.default.createElement(_styledcomponents.StyledList,{ref:refList,size:size,"data-e2e-test-id":dataE2eTestId,onBlur:handleBlur,"data-ds-id":"EntityList",role:"list"},dataShown.map((item,i)=>{let tabIndex=item.isDisabled||i!==selectedIndex?-1:0;return _react.default.createElement(_EntityListItem.EntityListItem,{key:item.id,"aria-label":item["aria-label"]||item.label,size:size,hideBorder:hideBorder||i===dataShown.length-1,isActive:item.isActive||isKeyboardFocus&&selectedIndex===i,isDisabled:item.isDisabled,isClickable:!!(onClick||selectedIds),description:item.description,onKeyDown:()=>handleOnClick(item),tabIndex:tabIndex,onFocus:()=>{(onClick||isSelectable)&&(setSelectedIndex(i),setIsKeyboardFocus(!0))},onClick:()=>{setIsKeyboardFocus(!1),handleOnClick(item)},checkboxProps:isSelectable&&{name:"list-checkbox",size:"s",onChange:()=>handleOnClick(item),checked:selectedIdsSet.has(item.id)},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})}))}
@@ -44,6 +44,17 @@ export type EntityListProps = {
44
44
  renderRightContent?: (props: ListNodeProps & ActionSizeProps) => React.ReactNode;
45
45
  /** Hides the border around the list items. */
46
46
  hideBorder?: boolean;
47
+ /**
48
+ * Optional function to filter list items. Returns true to include the item.
49
+ * Filtered items are completely removed from the list and keyboard navigation.
50
+ *
51
+ * Performance considerations:
52
+ * - The filter is applied on every render when data or filterFn changes
53
+ * - For large datasets (>1000 items), consider memoizing filterFn with useCallback
54
+ * - For real-time search, consider debouncing filter changes to reduce computations
55
+ * - Complex filters may impact performance on slower devices
56
+ */
57
+ filterFn?: (node: ListNode) => boolean;
47
58
  ariaAttributes?: EntityListAriaAttributes;
48
59
  "data-e2e-test-id"?: string;
49
60
  };
@@ -5,12 +5,6 @@ export declare const DISTANCE_FROM_TRIGGER = 4;
5
5
  export declare const ANIMATION_DISTANCE = 8;
6
6
  export declare const ARROW_SIZE = 6;
7
7
  export declare const ARROW_SIZE_BIG = 8;
8
- /**
9
- * Additional offset for placement calculations to account for fixed position
10
- * elements (e.g., navigation bars, toolbars) that may not be included in viewport height.
11
- * This prevents tooltips from being positioned behind these fixed elements.
12
- */
13
- export declare const FIXED_ELEMENT_OFFSET = 56;
14
8
  export declare const getArrowOffset: (size: number) => number;
15
9
  type GetTooltipStyleParams = {
16
10
  placement: TooltipProps["placement"];
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get ANIMATION_DISTANCE(){return ANIMATION_DISTANCE},get ARROW_SIZE(){return ARROW_SIZE},get ARROW_SIZE_BIG(){return ARROW_SIZE_BIG},get DISTANCE_FROM_TRIGGER(){return DISTANCE_FROM_TRIGGER},get FIXED_ELEMENT_OFFSET(){return FIXED_ELEMENT_OFFSET},get getArrowOffset(){return getArrowOffset},get getTooltipStyle(){return getTooltipStyle}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});const DISTANCE_FROM_TRIGGER=4,ANIMATION_DISTANCE=8,ARROW_SIZE=6,ARROW_SIZE_BIG=8,FIXED_ELEMENT_OFFSET=56,getArrowOffset=size=>2*size;function getTooltipStyle({placement,defaultVerticalPlacement="top",triggerRef,tooltipRef,document,window,arrowSize,onOverflowViewport}){let triggerRect=triggerRef.current.getBoundingClientRect(),tooltipRect=tooltipRef.current.getBoundingClientRect(),viewportWidth=document.documentElement.clientWidth,viewportHeight=document.documentElement.clientHeight,top=0,left=0,verticalPlacement=defaultVerticalPlacement,horizontalPlacement="center",arrowOffset=getArrowOffset(arrowSize),tooltipMargin=arrowSize+ANIMATION_DISTANCE+DISTANCE_FROM_TRIGGER;switch(placement){case"top":case"bottom":verticalPlacement=placement;break;case"top-left":case"top-right":case"bottom-left":case"bottom-right":{let placements=placement.split("-");verticalPlacement=placements[0],horizontalPlacement=placements[1];break}default:{let canPlaceAboveTrigger=triggerRect.top>=tooltipRect.height+FIXED_ELEMENT_OFFSET,canPlaceBelowTrigger=triggerRect.bottom+tooltipRect.height+FIXED_ELEMENT_OFFSET<viewportHeight;canPlaceBelowTrigger||canPlaceAboveTrigger||onOverflowViewport?.(triggerRect,tooltipRect,viewportHeight),"top"===verticalPlacement&&!canPlaceAboveTrigger&&canPlaceBelowTrigger?verticalPlacement="bottom":"bottom"!==verticalPlacement||canPlaceBelowTrigger||(verticalPlacement="top"),triggerRect.left>=tooltipRect.width/2?triggerRect.left+triggerRect.width/2+tooltipRect.width/2>=viewportWidth&&(horizontalPlacement="left"):horizontalPlacement="right"}}switch(top="top"===verticalPlacement?triggerRect.top-tooltipRect.height-tooltipMargin:triggerRect.bottom+tooltipMargin,horizontalPlacement){case"left":left=arrowSize?triggerRect.left+triggerRect.width/2-tooltipRect.width+arrowOffset+arrowSize:triggerRect.right-tooltipRect.width;break;case"right":left=arrowSize?triggerRect.left+triggerRect.width/2-arrowOffset-arrowSize:triggerRect.left;break;default:left=triggerRect.left+triggerRect.width/2}return{top:top+window.scrollY,left:left+window.scrollX,horizontalPlacement,verticalPlacement}}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get ANIMATION_DISTANCE(){return ANIMATION_DISTANCE},get ARROW_SIZE(){return ARROW_SIZE},get ARROW_SIZE_BIG(){return ARROW_SIZE_BIG},get DISTANCE_FROM_TRIGGER(){return DISTANCE_FROM_TRIGGER},get getArrowOffset(){return getArrowOffset},get getTooltipStyle(){return getTooltipStyle}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});const DISTANCE_FROM_TRIGGER=4,ANIMATION_DISTANCE=8,ARROW_SIZE=6,ARROW_SIZE_BIG=8,getArrowOffset=size=>2*size;function getTooltipStyle({placement,defaultVerticalPlacement="top",triggerRef,tooltipRef,document,window,arrowSize,onOverflowViewport}){let triggerRect=triggerRef.current.getBoundingClientRect(),tooltipRect=tooltipRef.current.getBoundingClientRect(),viewportWidth=document.documentElement.clientWidth,viewportHeight=document.documentElement.clientHeight,top=0,left=0,verticalPlacement=defaultVerticalPlacement,horizontalPlacement="center",arrowOffset=getArrowOffset(arrowSize),tooltipMargin=arrowSize+ANIMATION_DISTANCE+DISTANCE_FROM_TRIGGER;switch(placement){case"top":case"bottom":verticalPlacement=placement;break;case"top-left":case"top-right":case"bottom-left":case"bottom-right":{let placements=placement.split("-");verticalPlacement=placements[0],horizontalPlacement=placements[1];break}default:{let canPlaceAboveTrigger=triggerRect.top>=tooltipRect.height,canPlaceBelowTrigger=triggerRect.bottom+tooltipRect.height<viewportHeight;canPlaceBelowTrigger||canPlaceAboveTrigger||onOverflowViewport?.(triggerRect,tooltipRect,viewportHeight),"top"===verticalPlacement&&!canPlaceAboveTrigger&&canPlaceBelowTrigger?verticalPlacement="bottom":"bottom"!==verticalPlacement||canPlaceBelowTrigger||(verticalPlacement="top"),triggerRect.left>=tooltipRect.width/2?triggerRect.left+triggerRect.width/2+tooltipRect.width/2>=viewportWidth&&(horizontalPlacement="left"):horizontalPlacement="right"}}switch(top="top"===verticalPlacement?triggerRect.top-tooltipRect.height-tooltipMargin:triggerRect.bottom+tooltipMargin,horizontalPlacement){case"left":left=arrowSize?triggerRect.left+triggerRect.width/2-tooltipRect.width+arrowOffset+arrowSize:triggerRect.right-tooltipRect.width;break;case"right":left=arrowSize?triggerRect.left+triggerRect.width/2-arrowOffset-arrowSize:triggerRect.left;break;default:left=triggerRect.left+triggerRect.width/2}return{top:top+window.scrollY,left:left+window.scrollX,horizontalPlacement,verticalPlacement}}
@@ -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, renderRightContent, getLeftIconProps, hideBorder, "data-e2e-test-id": dataE2eTestId, }: EntityListProps): React.ReactElement;
3
+ export declare function BaseEntityList({ data, size, onClick, isSelectable, selectedIds, onSelectionChange, renderRightContent, getLeftIconProps, hideBorder, filterFn, "data-e2e-test-id": dataE2eTestId, }: EntityListProps): React.ReactElement;
@@ -1 +1 @@
1
- import React,{useRef,useState,useEffect,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";let StyledMinHeightCell=styled("div",{target:"e1svcpfc0",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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9CYXNlRW50aXR5TGlzdC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvQmFzZUVudGl0eUxpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZUNhbGxiYWNrLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgU3R5bGVkTGlzdCB9IGZyb20gXCIuL3N0eWxlZC1jb21wb25lbnRzXCI7XG5pbXBvcnQgdHlwZSB7IEVudGl0eUxpc3RQcm9wcywgTGlzdE5vZGUsIFRleHRTaXplUHJvcHMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgdXNlS2V5Ym9hcmQgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUtleWJvYXJkXCI7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgRW50aXR5TGlzdEl0ZW0gfSBmcm9tIFwiLi9FbnRpdHlMaXN0SXRlbVwiO1xuXG4vLyBUaGlzIG1pbkhlaWdodCBpcyBuZWVkZWQgZm9yIGFsaWduIHNtYWxsIGljb25zIGluIHRoZSBtaWRkbGUgb2YgMSByb3cgdGV4dCxcbi8vIGJ1dCBpdCBzaG91bGQgc3RheSBhdCB0aGUgdG9wIGlmIHRoZXJlIGlzIG11bHRpbGluZSB0ZXh0XG5jb25zdCBTdHlsZWRNaW5IZWlnaHRDZWxsID0gc3R5bGVkLmRpdjxUZXh0U2l6ZVByb3BzPihcbiAgKHsgdGhlbWUsIHRleHRTaXplIH0pID0+ICh7XG4gICAgbWluSGVpZ2h0OlxuICAgICAgdGV4dFNpemUgPT09IFwic1wiXG4gICAgICAgID8gYGNhbGMoJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLm19ICsgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4c30pYFxuICAgICAgICA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcubCxcbiAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICB9KVxuKTtcblxuY29uc3QgZmluZEVuYWJsZWRJdGVtSW5kZXggPSAoXG4gIGl0ZW1zOiBMaXN0Tm9kZVtdLFxuICBzdGFydEluZGV4OiBudW1iZXIsXG4gIGRpcmVjdGlvbiA9IFwibmV4dFwiXG4pOiBudW1iZXIgPT4ge1xuICBpZiAoZGlyZWN0aW9uID09PSBcIm5leHRcIikge1xuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4ICsgMTsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoIWl0ZW1zW2ldLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gXCJwcmV2aW91c1wiKSB7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgICAgaWYgKCFpdGVtc1tpXS5pc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3RhcnRJbmRleDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBCYXNlRW50aXR5TGlzdCh7XG4gIGRhdGEsXG4gIHNpemUgPSBcIm1cIixcbiAgb25DbGljayxcbiAgaXNTZWxlY3RhYmxlLFxuICBzZWxlY3RlZElkcyxcbiAgb25TZWxlY3Rpb25DaGFuZ2UsXG4gIHJlbmRlclJpZ2h0Q29udGVudCxcbiAgZ2V0TGVmdEljb25Qcm9wcyxcbiAgaGlkZUJvcmRlcixcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI6IGRhdGFFMmVUZXN0SWQsXG59OiBFbnRpdHlMaXN0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBzZWxlY3RlZElkc1NldCA9IHVzZU1lbW8oKCkgPT4gbmV3IFNldChzZWxlY3RlZElkcyksIFtzZWxlY3RlZElkc10pO1xuICBjb25zdCBbaXNLZXlib2FyZEZvY3VzLCBzZXRJc0tleWJvYXJkRm9jdXNdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2VsZWN0ZWRJbmRleCwgc2V0U2VsZWN0ZWRJbmRleF0gPSB1c2VTdGF0ZTxudW1iZXI+KCgpID0+XG4gICAgaXNTZWxlY3RhYmxlIHx8IG9uQ2xpY2sgPyBmaW5kRW5hYmxlZEl0ZW1JbmRleChkYXRhLCAtMSkgOiAtMVxuICApO1xuICBjb25zdCByZWZMaXN0ID0gdXNlUmVmPEhUTUxVTGlzdEVsZW1lbnQ+KG51bGwpO1xuICB1c2VLZXlib2FyZChcbiAgICB7XG4gICAgICBBcnJvd0Rvd246ICgpID0+IHtcbiAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKHRydWUpO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSBmaW5kRW5hYmxlZEl0ZW1JbmRleChkYXRhLCBzZWxlY3RlZEluZGV4KTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChuZXh0SW5kZXgpO1xuICAgICAgfSxcbiAgICAgIEFycm93VXA6ICgpID0+IHtcbiAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKHRydWUpO1xuICAgICAgICBjb25zdCBwcmV2SW5kZXggPSBmaW5kRW5hYmxlZEl0ZW1JbmRleChkYXRhLCBzZWxlY3RlZEluZGV4LCBcInByZXZpb3VzXCIpO1xuICAgICAgICBzZXRTZWxlY3RlZEluZGV4KHByZXZJbmRleCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVmTGlzdCxcbiAgICBzZWxlY3RlZEluZGV4ICE9PSAtMVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZkxpc3QgJiYgcmVmTGlzdC5jdXJyZW50ICYmIGlzS2V5Ym9hcmRGb2N1cyAmJiBzZWxlY3RlZEluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGJ1dHRvbnMgPSByZWZMaXN0LmN1cnJlbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJ2RpdltkYXRhLWlkPVwibGlzdC1pdGVtXCJdJ1xuICAgICAgKTtcblxuICAgICAgKGJ1dHRvbnNbTWF0aC5hYnMoc2VsZWN0ZWRJbmRleCkgJSBidXR0b25zLmxlbmd0aF0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKHtcbiAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3NlbGVjdGVkSW5kZXgsIGlzS2V5Ym9hcmRGb2N1c10pO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoaXRlbTogTGlzdE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHsgaWQgfSA9IGl0ZW07XG5cbiAgICAgIC8vIEhhbmRsZSBjaGVja2JveCBjaGFuZ2VcbiAgICAgIGlmIChpc1NlbGVjdGFibGUpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSWRzU2V0LmhhcyhpZCkpIHtcbiAgICAgICAgICBzZWxlY3RlZElkc1NldC5kZWxldGUoaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGVjdGVkSWRzU2V0LmFkZChpZCk7XG4gICAgICAgIH1cbiAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2U/LihBcnJheS5mcm9tKHNlbGVjdGVkSWRzU2V0KSk7XG4gICAgICB9XG5cbiAgICAgIG9uQ2xpY2s/LihpdGVtKTtcbiAgICB9LFxuICAgIFtzZWxlY3RlZElkc1NldCwgb25TZWxlY3Rpb25DaGFuZ2UsIG9uQ2xpY2ssIGlzU2VsZWN0YWJsZV1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHdhaXQgZm9yIGZvY3VzIHRvIGZ1bGx5IHByb3BhZ2F0ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICByZWZMaXN0LmN1cnJlbnQgJiZcbiAgICAgICAgIXJlZkxpc3QuY3VycmVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KVxuICAgICAgKSB7XG4gICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyhmYWxzZSk7XG4gICAgICAgIHNldFNlbGVjdGVkSW5kZXgoKCkgPT4gZmluZEVuYWJsZWRJdGVtSW5kZXgoZGF0YSwgLTEpKTtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfSwgW3JlZkxpc3QsIHNldFNlbGVjdGVkSW5kZXgsIGRhdGFdKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRMaXN0XG4gICAgICByZWY9e3JlZkxpc3R9XG4gICAgICBzaXplPXtzaXplfVxuICAgICAgZGF0YS1lMmUtdGVzdC1pZD17ZGF0YUUyZVRlc3RJZH1cbiAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgIGRhdGEtZHMtaWQ9XCJFbnRpdHlMaXN0XCJcbiAgICAgIHJvbGU9XCJsaXN0XCJcbiAgICA+XG4gICAgICB7ZGF0YS5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgY29uc3QgdGFiSW5kZXggPSAhaXRlbS5pc0Rpc2FibGVkICYmIGkgPT09IHNlbGVjdGVkSW5kZXggPyAwIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8RW50aXR5TGlzdEl0ZW1cbiAgICAgICAgICAgIGtleT17aXRlbS5pZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2l0ZW1bXCJhcmlhLWxhYmVsXCJdIHx8IGl0ZW0ubGFiZWx9XG4gICAgICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICAgICAgaGlkZUJvcmRlcj17aGlkZUJvcmRlciB8fCBpID09PSBkYXRhLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICBpc0FjdGl2ZT17aXRlbS5pc0FjdGl2ZSB8fCAoaXNLZXlib2FyZEZvY3VzICYmIHNlbGVjdGVkSW5kZXggPT09IGkpfVxuICAgICAgICAgICAgaXNEaXNhYmxlZD17aXRlbS5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgaXNDbGlja2FibGU9e0Jvb2xlYW4ob25DbGljayB8fCBzZWxlY3RlZElkcyl9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbj17aXRlbS5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgIG9uS2V5RG93bj17KCkgPT4gaGFuZGxlT25DbGljayhpdGVtKX1cbiAgICAgICAgICAgIHRhYkluZGV4PXt0YWJJbmRleH1cbiAgICAgICAgICAgIG9uRm9jdXM9eygpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG9uQ2xpY2sgfHwgaXNTZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChpKTtcbiAgICAgICAgICAgICAgICBzZXRJc0tleWJvYXJkRm9jdXModHJ1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2soaXRlbSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2hlY2tib3hQcm9wcz17XG4gICAgICAgICAgICAgIGlzU2VsZWN0YWJsZSAmJiB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJsaXN0LWNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgc2l6ZTogXCJzXCIsXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6ICgpID0+IGhhbmRsZU9uQ2xpY2soaXRlbSksXG4gICAgICAgICAgICAgICAgY2hlY2tlZDogc2VsZWN0ZWRJZHNTZXQuaGFzKGl0ZW0uaWQpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZW5kZXJMYWJlbD17KCkgPT4gaXRlbS5sYWJlbH1cbiAgICAgICAgICAgIHJlbmRlckxlZnQ9e1xuICAgICAgICAgICAgICBnZXRMZWZ0SWNvblByb3BzXG4gICAgICAgICAgICAgICAgPyAoeyB0ZXh0U2l6ZSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0TGVmdEljb25Qcm9wcyhpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgICBzaXplPXt0ZXh0U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlbmRlclJpZ2h0PXsoeyBhY3Rpb25TaXplLCB0ZXh0U2l6ZSB9KSA9PlxuICAgICAgICAgICAgICByZW5kZXJSaWdodENvbnRlbnQgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZE1pbkhlaWdodENlbGwgdGV4dFNpemU9e3RleHRTaXplfT5cbiAgICAgICAgICAgICAgICAgIHtyZW5kZXJSaWdodENvbnRlbnQoeyB0ZXh0U2l6ZSwgYWN0aW9uU2l6ZSwgLi4uaXRlbSB9KX1cbiAgICAgICAgICAgICAgICA8L1N0eWxlZE1pbkhlaWdodENlbGw+XG4gICAgICAgICAgICAgICkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvU3R5bGVkTGlzdD5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQjRCIn0= */"),findEnabledItemIndex=(items,startIndex,direction="next")=>{if("next"===direction){for(let i=startIndex+1;i<items.length;i+=1)if(!items[i].isDisabled)return i}else if("previous"===direction){for(let i=startIndex-1;i>=0;i-=1)if(!items[i].isDisabled)return i}return startIndex};export function BaseEntityList({data,size="m",onClick,isSelectable,selectedIds,onSelectionChange,renderRightContent,getLeftIconProps,hideBorder,"data-e2e-test-id":dataE2eTestId}){let selectedIdsSet=useMemo(()=>new Set(selectedIds),[selectedIds]),[isKeyboardFocus,setIsKeyboardFocus]=useState(!1),[selectedIndex,setSelectedIndex]=useState(()=>isSelectable||onClick?findEnabledItemIndex(data,-1):-1),refList=useRef(null);useKeyboard({ArrowDown:()=>{setIsKeyboardFocus(!0),setSelectedIndex(findEnabledItemIndex(data,selectedIndex))},ArrowUp:()=>{setIsKeyboardFocus(!0),setSelectedIndex(findEnabledItemIndex(data,selectedIndex,"previous"))}},refList,-1!==selectedIndex),useEffect(()=>{if(refList&&refList.current&&isKeyboardFocus&&selectedIndex>=0){let buttons=refList.current.querySelectorAll('div[data-id="list-item"]');buttons[Math.abs(selectedIndex)%buttons.length].focus({preventScroll:!0})}},[selectedIndex,isKeyboardFocus]);let handleOnClick=useCallback(item=>{let{id}=item;isSelectable&&(selectedIdsSet.has(id)?selectedIdsSet.delete(id):selectedIdsSet.add(id),onSelectionChange?.(Array.from(selectedIdsSet))),onClick?.(item)},[selectedIdsSet,onSelectionChange,onClick,isSelectable]),handleBlur=useCallback(()=>{setTimeout(()=>{refList.current&&!refList.current.contains(document.activeElement)&&(setIsKeyboardFocus(!1),setSelectedIndex(()=>findEnabledItemIndex(data,-1)))},0)},[refList,setSelectedIndex,data]);return React.createElement(StyledList,{ref:refList,size:size,"data-e2e-test-id":dataE2eTestId,onBlur:handleBlur,"data-ds-id":"EntityList",role:"list"},data.map((item,i)=>{let tabIndex=item.isDisabled||i!==selectedIndex?-1:0;return React.createElement(EntityListItem,{key:item.id,"aria-label":item["aria-label"]||item.label,size:size,hideBorder:hideBorder||i===data.length-1,isActive:item.isActive||isKeyboardFocus&&selectedIndex===i,isDisabled:item.isDisabled,isClickable:!!(onClick||selectedIds),description:item.description,onKeyDown:()=>handleOnClick(item),tabIndex:tabIndex,onFocus:()=>{(onClick||isSelectable)&&(setSelectedIndex(i),setIsKeyboardFocus(!0))},onClick:()=>{setIsKeyboardFocus(!1),handleOnClick(item)},checkboxProps:isSelectable&&{name:"list-checkbox",size:"s",onChange:()=>handleOnClick(item),checked:selectedIdsSet.has(item.id)},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})}))}
1
+ import React,{useRef,useState,useEffect,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";let StyledMinHeightCell=styled("div",{target:"e9t25660",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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvRW50aXR5TGlzdC9CYXNlRW50aXR5TGlzdC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0VudGl0eUxpc3QvQmFzZUVudGl0eUxpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZUNhbGxiYWNrLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgU3R5bGVkTGlzdCB9IGZyb20gXCIuL3N0eWxlZC1jb21wb25lbnRzXCI7XG5pbXBvcnQgdHlwZSB7IEVudGl0eUxpc3RQcm9wcywgTGlzdE5vZGUsIFRleHRTaXplUHJvcHMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgdXNlS2V5Ym9hcmQgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUtleWJvYXJkXCI7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgRW50aXR5TGlzdEl0ZW0gfSBmcm9tIFwiLi9FbnRpdHlMaXN0SXRlbVwiO1xuXG4vLyBUaGlzIG1pbkhlaWdodCBpcyBuZWVkZWQgZm9yIGFsaWduIHNtYWxsIGljb25zIGluIHRoZSBtaWRkbGUgb2YgMSByb3cgdGV4dCxcbi8vIGJ1dCBpdCBzaG91bGQgc3RheSBhdCB0aGUgdG9wIGlmIHRoZXJlIGlzIG11bHRpbGluZSB0ZXh0XG5jb25zdCBTdHlsZWRNaW5IZWlnaHRDZWxsID0gc3R5bGVkLmRpdjxUZXh0U2l6ZVByb3BzPihcbiAgKHsgdGhlbWUsIHRleHRTaXplIH0pID0+ICh7XG4gICAgbWluSGVpZ2h0OlxuICAgICAgdGV4dFNpemUgPT09IFwic1wiXG4gICAgICAgID8gYGNhbGMoJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLm19ICsgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnh4c30pYFxuICAgICAgICA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcubCxcbiAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICB9KVxuKTtcblxuY29uc3QgZmluZEVuYWJsZWRJdGVtSW5kZXggPSAoXG4gIGl0ZW1zOiBMaXN0Tm9kZVtdLFxuICBzdGFydEluZGV4OiBudW1iZXIsXG4gIGRpcmVjdGlvbiA9IFwibmV4dFwiXG4pOiBudW1iZXIgPT4ge1xuICBpZiAoZGlyZWN0aW9uID09PSBcIm5leHRcIikge1xuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4ICsgMTsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoIWl0ZW1zW2ldLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gXCJwcmV2aW91c1wiKSB7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgICAgaWYgKCFpdGVtc1tpXS5pc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3RhcnRJbmRleDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBCYXNlRW50aXR5TGlzdCh7XG4gIGRhdGEsXG4gIHNpemUgPSBcIm1cIixcbiAgb25DbGljayxcbiAgaXNTZWxlY3RhYmxlLFxuICBzZWxlY3RlZElkcyxcbiAgb25TZWxlY3Rpb25DaGFuZ2UsXG4gIHJlbmRlclJpZ2h0Q29udGVudCxcbiAgZ2V0TGVmdEljb25Qcm9wcyxcbiAgaGlkZUJvcmRlcixcbiAgZmlsdGVyRm4sXG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxufTogRW50aXR5TGlzdFByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgZGF0YVNob3duID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFkYXRhLmxlbmd0aCkgcmV0dXJuIGRhdGE7XG5cbiAgICByZXR1cm4gZmlsdGVyRm4gPyBkYXRhLmZpbHRlcihmaWx0ZXJGbikgOiBkYXRhO1xuICB9LCBbZGF0YSwgZmlsdGVyRm5dKTtcbiAgY29uc3Qgc2VsZWN0ZWRJZHNTZXQgPSB1c2VNZW1vKCgpID0+IG5ldyBTZXQoc2VsZWN0ZWRJZHMpLCBbc2VsZWN0ZWRJZHNdKTtcbiAgY29uc3QgW2lzS2V5Ym9hcmRGb2N1cywgc2V0SXNLZXlib2FyZEZvY3VzXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGU8bnVtYmVyPigoKSA9PlxuICAgIGlzU2VsZWN0YWJsZSB8fCBvbkNsaWNrID8gZmluZEVuYWJsZWRJdGVtSW5kZXgoZGF0YVNob3duLCAtMSkgOiAtMVxuICApO1xuICBjb25zdCByZWZMaXN0ID0gdXNlUmVmPEhUTUxVTGlzdEVsZW1lbnQ+KG51bGwpO1xuICB1c2VLZXlib2FyZChcbiAgICB7XG4gICAgICBBcnJvd0Rvd246ICgpID0+IHtcbiAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKHRydWUpO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSBmaW5kRW5hYmxlZEl0ZW1JbmRleChkYXRhU2hvd24sIHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICBzZXRTZWxlY3RlZEluZGV4KG5leHRJbmRleCk7XG4gICAgICB9LFxuICAgICAgQXJyb3dVcDogKCkgPT4ge1xuICAgICAgICBzZXRJc0tleWJvYXJkRm9jdXModHJ1ZSk7XG4gICAgICAgIGNvbnN0IHByZXZJbmRleCA9IGZpbmRFbmFibGVkSXRlbUluZGV4KFxuICAgICAgICAgIGRhdGFTaG93bixcbiAgICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICAgIFwicHJldmlvdXNcIlxuICAgICAgICApO1xuICAgICAgICBzZXRTZWxlY3RlZEluZGV4KHByZXZJbmRleCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVmTGlzdCxcbiAgICBzZWxlY3RlZEluZGV4ICE9PSAtMVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZkxpc3QgJiYgcmVmTGlzdC5jdXJyZW50ICYmIGlzS2V5Ym9hcmRGb2N1cyAmJiBzZWxlY3RlZEluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGJ1dHRvbnMgPSByZWZMaXN0LmN1cnJlbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJ2RpdltkYXRhLWlkPVwibGlzdC1pdGVtXCJdJ1xuICAgICAgKTtcblxuICAgICAgKGJ1dHRvbnNbTWF0aC5hYnMoc2VsZWN0ZWRJbmRleCkgJSBidXR0b25zLmxlbmd0aF0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKHtcbiAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3NlbGVjdGVkSW5kZXgsIGlzS2V5Ym9hcmRGb2N1c10pO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoaXRlbTogTGlzdE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHsgaWQgfSA9IGl0ZW07XG5cbiAgICAgIC8vIEhhbmRsZSBjaGVja2JveCBjaGFuZ2VcbiAgICAgIGlmIChpc1NlbGVjdGFibGUpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSWRzU2V0LmhhcyhpZCkpIHtcbiAgICAgICAgICBzZWxlY3RlZElkc1NldC5kZWxldGUoaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGVjdGVkSWRzU2V0LmFkZChpZCk7XG4gICAgICAgIH1cbiAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2U/LihBcnJheS5mcm9tKHNlbGVjdGVkSWRzU2V0KSk7XG4gICAgICB9XG5cbiAgICAgIG9uQ2xpY2s/LihpdGVtKTtcbiAgICB9LFxuICAgIFtzZWxlY3RlZElkc1NldCwgb25TZWxlY3Rpb25DaGFuZ2UsIG9uQ2xpY2ssIGlzU2VsZWN0YWJsZV1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHdhaXQgZm9yIGZvY3VzIHRvIGZ1bGx5IHByb3BhZ2F0ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICByZWZMaXN0LmN1cnJlbnQgJiZcbiAgICAgICAgIXJlZkxpc3QuY3VycmVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KVxuICAgICAgKSB7XG4gICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyhmYWxzZSk7XG4gICAgICAgIHNldFNlbGVjdGVkSW5kZXgoKCkgPT4gZmluZEVuYWJsZWRJdGVtSW5kZXgoZGF0YVNob3duLCAtMSkpO1xuICAgICAgfVxuICAgIH0sIDApO1xuICB9LCBbcmVmTGlzdCwgc2V0U2VsZWN0ZWRJbmRleCwgZGF0YVNob3duXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkTGlzdFxuICAgICAgcmVmPXtyZWZMaXN0fVxuICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICBkYXRhLWRzLWlkPVwiRW50aXR5TGlzdFwiXG4gICAgICByb2xlPVwibGlzdFwiXG4gICAgPlxuICAgICAge2RhdGFTaG93bi5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgY29uc3QgdGFiSW5kZXggPSAhaXRlbS5pc0Rpc2FibGVkICYmIGkgPT09IHNlbGVjdGVkSW5kZXggPyAwIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8RW50aXR5TGlzdEl0ZW1cbiAgICAgICAgICAgIGtleT17aXRlbS5pZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2l0ZW1bXCJhcmlhLWxhYmVsXCJdIHx8IGl0ZW0ubGFiZWx9XG4gICAgICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICAgICAgaGlkZUJvcmRlcj17aGlkZUJvcmRlciB8fCBpID09PSBkYXRhU2hvd24ubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgIGlzQWN0aXZlPXtpdGVtLmlzQWN0aXZlIHx8IChpc0tleWJvYXJkRm9jdXMgJiYgc2VsZWN0ZWRJbmRleCA9PT0gaSl9XG4gICAgICAgICAgICBpc0Rpc2FibGVkPXtpdGVtLmlzRGlzYWJsZWR9XG4gICAgICAgICAgICBpc0NsaWNrYWJsZT17Qm9vbGVhbihvbkNsaWNrIHx8IHNlbGVjdGVkSWRzKX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtpdGVtLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgb25LZXlEb3duPXsoKSA9PiBoYW5kbGVPbkNsaWNrKGl0ZW0pfVxuICAgICAgICAgICAgdGFiSW5kZXg9e3RhYkluZGV4fVxuICAgICAgICAgICAgb25Gb2N1cz17KCkgPT4ge1xuICAgICAgICAgICAgICBpZiAob25DbGljayB8fCBpc1NlbGVjdGFibGUpIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4KGkpO1xuICAgICAgICAgICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKGZhbHNlKTtcbiAgICAgICAgICAgICAgaGFuZGxlT25DbGljayhpdGVtKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjaGVja2JveFByb3BzPXtcbiAgICAgICAgICAgICAgaXNTZWxlY3RhYmxlICYmIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImxpc3QtY2hlY2tib3hcIixcbiAgICAgICAgICAgICAgICBzaXplOiBcInNcIixcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogKCkgPT4gaGFuZGxlT25DbGljayhpdGVtKSxcbiAgICAgICAgICAgICAgICBjaGVja2VkOiBzZWxlY3RlZElkc1NldC5oYXMoaXRlbS5pZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlbmRlckxhYmVsPXsoKSA9PiBpdGVtLmxhYmVsfVxuICAgICAgICAgICAgcmVuZGVyTGVmdD17XG4gICAgICAgICAgICAgIGdldExlZnRJY29uUHJvcHNcbiAgICAgICAgICAgICAgICA/ICh7IHRleHRTaXplIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXRMZWZ0SWNvblByb3BzKGl0ZW0pfVxuICAgICAgICAgICAgICAgICAgICAgIHNpemU9e3RleHRTaXplfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVuZGVyUmlnaHQ9eyh7IGFjdGlvblNpemUsIHRleHRTaXplIH0pID0+XG4gICAgICAgICAgICAgIHJlbmRlclJpZ2h0Q29udGVudCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkTWluSGVpZ2h0Q2VsbCB0ZXh0U2l6ZT17dGV4dFNpemV9PlxuICAgICAgICAgICAgICAgICAge3JlbmRlclJpZ2h0Q29udGVudCh7IHRleHRTaXplLCBhY3Rpb25TaXplLCAuLi5pdGVtIH0pfVxuICAgICAgICAgICAgICAgIDwvU3R5bGVkTWluSGVpZ2h0Q2VsbD5cbiAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC9TdHlsZWRMaXN0PlxuICApO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCNEIifQ== */"),findEnabledItemIndex=(items,startIndex,direction="next")=>{if("next"===direction){for(let i=startIndex+1;i<items.length;i+=1)if(!items[i].isDisabled)return i}else if("previous"===direction){for(let i=startIndex-1;i>=0;i-=1)if(!items[i].isDisabled)return i}return startIndex};export function BaseEntityList({data,size="m",onClick,isSelectable,selectedIds,onSelectionChange,renderRightContent,getLeftIconProps,hideBorder,filterFn,"data-e2e-test-id":dataE2eTestId}){let dataShown=useMemo(()=>data.length&&filterFn?data.filter(filterFn):data,[data,filterFn]),selectedIdsSet=useMemo(()=>new Set(selectedIds),[selectedIds]),[isKeyboardFocus,setIsKeyboardFocus]=useState(!1),[selectedIndex,setSelectedIndex]=useState(()=>isSelectable||onClick?findEnabledItemIndex(dataShown,-1):-1),refList=useRef(null);useKeyboard({ArrowDown:()=>{setIsKeyboardFocus(!0),setSelectedIndex(findEnabledItemIndex(dataShown,selectedIndex))},ArrowUp:()=>{setIsKeyboardFocus(!0),setSelectedIndex(findEnabledItemIndex(dataShown,selectedIndex,"previous"))}},refList,-1!==selectedIndex),useEffect(()=>{if(refList&&refList.current&&isKeyboardFocus&&selectedIndex>=0){let buttons=refList.current.querySelectorAll('div[data-id="list-item"]');buttons[Math.abs(selectedIndex)%buttons.length].focus({preventScroll:!0})}},[selectedIndex,isKeyboardFocus]);let handleOnClick=useCallback(item=>{let{id}=item;isSelectable&&(selectedIdsSet.has(id)?selectedIdsSet.delete(id):selectedIdsSet.add(id),onSelectionChange?.(Array.from(selectedIdsSet))),onClick?.(item)},[selectedIdsSet,onSelectionChange,onClick,isSelectable]),handleBlur=useCallback(()=>{setTimeout(()=>{refList.current&&!refList.current.contains(document.activeElement)&&(setIsKeyboardFocus(!1),setSelectedIndex(()=>findEnabledItemIndex(dataShown,-1)))},0)},[refList,setSelectedIndex,dataShown]);return React.createElement(StyledList,{ref:refList,size:size,"data-e2e-test-id":dataE2eTestId,onBlur:handleBlur,"data-ds-id":"EntityList",role:"list"},dataShown.map((item,i)=>{let tabIndex=item.isDisabled||i!==selectedIndex?-1:0;return React.createElement(EntityListItem,{key:item.id,"aria-label":item["aria-label"]||item.label,size:size,hideBorder:hideBorder||i===dataShown.length-1,isActive:item.isActive||isKeyboardFocus&&selectedIndex===i,isDisabled:item.isDisabled,isClickable:!!(onClick||selectedIds),description:item.description,onKeyDown:()=>handleOnClick(item),tabIndex:tabIndex,onFocus:()=>{(onClick||isSelectable)&&(setSelectedIndex(i),setIsKeyboardFocus(!0))},onClick:()=>{setIsKeyboardFocus(!1),handleOnClick(item)},checkboxProps:isSelectable&&{name:"list-checkbox",size:"s",onChange:()=>handleOnClick(item),checked:selectedIdsSet.has(item.id)},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})}))}
@@ -44,6 +44,17 @@ export type EntityListProps = {
44
44
  renderRightContent?: (props: ListNodeProps & ActionSizeProps) => React.ReactNode;
45
45
  /** Hides the border around the list items. */
46
46
  hideBorder?: boolean;
47
+ /**
48
+ * Optional function to filter list items. Returns true to include the item.
49
+ * Filtered items are completely removed from the list and keyboard navigation.
50
+ *
51
+ * Performance considerations:
52
+ * - The filter is applied on every render when data or filterFn changes
53
+ * - For large datasets (>1000 items), consider memoizing filterFn with useCallback
54
+ * - For real-time search, consider debouncing filter changes to reduce computations
55
+ * - Complex filters may impact performance on slower devices
56
+ */
57
+ filterFn?: (node: ListNode) => boolean;
47
58
  ariaAttributes?: EntityListAriaAttributes;
48
59
  "data-e2e-test-id"?: string;
49
60
  };
@@ -5,12 +5,6 @@ export declare const DISTANCE_FROM_TRIGGER = 4;
5
5
  export declare const ANIMATION_DISTANCE = 8;
6
6
  export declare const ARROW_SIZE = 6;
7
7
  export declare const ARROW_SIZE_BIG = 8;
8
- /**
9
- * Additional offset for placement calculations to account for fixed position
10
- * elements (e.g., navigation bars, toolbars) that may not be included in viewport height.
11
- * This prevents tooltips from being positioned behind these fixed elements.
12
- */
13
- export declare const FIXED_ELEMENT_OFFSET = 56;
14
8
  export declare const getArrowOffset: (size: number) => number;
15
9
  type GetTooltipStyleParams = {
16
10
  placement: TooltipProps["placement"];
@@ -1 +1 @@
1
- export const DISTANCE_FROM_TRIGGER=4;export const ANIMATION_DISTANCE=8;export const ARROW_SIZE=6;export const ARROW_SIZE_BIG=8;export const FIXED_ELEMENT_OFFSET=56;export const getArrowOffset=size=>2*size;export function getTooltipStyle({placement,defaultVerticalPlacement="top",triggerRef,tooltipRef,document,window,arrowSize,onOverflowViewport}){let triggerRect=triggerRef.current.getBoundingClientRect(),tooltipRect=tooltipRef.current.getBoundingClientRect(),viewportWidth=document.documentElement.clientWidth,viewportHeight=document.documentElement.clientHeight,top=0,left=0,verticalPlacement=defaultVerticalPlacement,horizontalPlacement="center",arrowOffset=getArrowOffset(arrowSize),tooltipMargin=arrowSize+8+4;switch(placement){case"top":case"bottom":verticalPlacement=placement;break;case"top-left":case"top-right":case"bottom-left":case"bottom-right":{let placements=placement.split("-");verticalPlacement=placements[0],horizontalPlacement=placements[1];break}default:{let canPlaceAboveTrigger=triggerRect.top>=tooltipRect.height+56,canPlaceBelowTrigger=triggerRect.bottom+tooltipRect.height+56<viewportHeight;canPlaceBelowTrigger||canPlaceAboveTrigger||onOverflowViewport?.(triggerRect,tooltipRect,viewportHeight),"top"===verticalPlacement&&!canPlaceAboveTrigger&&canPlaceBelowTrigger?verticalPlacement="bottom":"bottom"!==verticalPlacement||canPlaceBelowTrigger||(verticalPlacement="top"),triggerRect.left>=tooltipRect.width/2?triggerRect.left+triggerRect.width/2+tooltipRect.width/2>=viewportWidth&&(horizontalPlacement="left"):horizontalPlacement="right"}}switch(top="top"===verticalPlacement?triggerRect.top-tooltipRect.height-tooltipMargin:triggerRect.bottom+tooltipMargin,horizontalPlacement){case"left":left=arrowSize?triggerRect.left+triggerRect.width/2-tooltipRect.width+arrowOffset+arrowSize:triggerRect.right-tooltipRect.width;break;case"right":left=arrowSize?triggerRect.left+triggerRect.width/2-arrowOffset-arrowSize:triggerRect.left;break;default:left=triggerRect.left+triggerRect.width/2}return{top:top+window.scrollY,left:left+window.scrollX,horizontalPlacement,verticalPlacement}}
1
+ export const DISTANCE_FROM_TRIGGER=4;export const ANIMATION_DISTANCE=8;export const ARROW_SIZE=6;export const ARROW_SIZE_BIG=8;export const getArrowOffset=size=>2*size;export function getTooltipStyle({placement,defaultVerticalPlacement="top",triggerRef,tooltipRef,document,window,arrowSize,onOverflowViewport}){let triggerRect=triggerRef.current.getBoundingClientRect(),tooltipRect=tooltipRef.current.getBoundingClientRect(),viewportWidth=document.documentElement.clientWidth,viewportHeight=document.documentElement.clientHeight,top=0,left=0,verticalPlacement=defaultVerticalPlacement,horizontalPlacement="center",arrowOffset=getArrowOffset(arrowSize),tooltipMargin=arrowSize+8+4;switch(placement){case"top":case"bottom":verticalPlacement=placement;break;case"top-left":case"top-right":case"bottom-left":case"bottom-right":{let placements=placement.split("-");verticalPlacement=placements[0],horizontalPlacement=placements[1];break}default:{let canPlaceAboveTrigger=triggerRect.top>=tooltipRect.height,canPlaceBelowTrigger=triggerRect.bottom+tooltipRect.height<viewportHeight;canPlaceBelowTrigger||canPlaceAboveTrigger||onOverflowViewport?.(triggerRect,tooltipRect,viewportHeight),"top"===verticalPlacement&&!canPlaceAboveTrigger&&canPlaceBelowTrigger?verticalPlacement="bottom":"bottom"!==verticalPlacement||canPlaceBelowTrigger||(verticalPlacement="top"),triggerRect.left>=tooltipRect.width/2?triggerRect.left+triggerRect.width/2+tooltipRect.width/2>=viewportWidth&&(horizontalPlacement="left"):horizontalPlacement="right"}}switch(top="top"===verticalPlacement?triggerRect.top-tooltipRect.height-tooltipMargin:triggerRect.bottom+tooltipMargin,horizontalPlacement){case"left":left=arrowSize?triggerRect.left+triggerRect.width/2-tooltipRect.width+arrowOffset+arrowSize:triggerRect.right-tooltipRect.width;break;case"right":left=arrowSize?triggerRect.left+triggerRect.width/2-arrowOffset-arrowSize:triggerRect.left;break;default:left=triggerRect.left+triggerRect.width/2}return{top:top+window.scrollY,left:left+window.scrollX,horizontalPlacement,verticalPlacement}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amboss/design-system",
3
- "version": "3.13.9",
3
+ "version": "3.13.11",
4
4
  "description": "the design system for AMBOSS products",
5
5
  "author": "AMBOSS",
6
6
  "license": "ISC",