@laerdal/life-react-components 1.10.3-dev.8.full → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/Banners/Banner.cjs +51 -43
  2. package/dist/Banners/Banner.cjs.map +1 -1
  3. package/dist/Banners/Banner.d.ts +2 -1
  4. package/dist/Banners/Banner.js +50 -42
  5. package/dist/Banners/Banner.js.map +1 -1
  6. package/dist/Button/DualFunctionButton.cjs +1 -0
  7. package/dist/Button/DualFunctionButton.cjs.map +1 -1
  8. package/dist/Button/DualFunctionButton.js +1 -0
  9. package/dist/Button/DualFunctionButton.js.map +1 -1
  10. package/dist/Button/Iconbutton.cjs +0 -5
  11. package/dist/Button/Iconbutton.cjs.map +1 -1
  12. package/dist/Button/Iconbutton.d.ts +1 -7
  13. package/dist/Button/Iconbutton.js +0 -5
  14. package/dist/Button/Iconbutton.js.map +1 -1
  15. package/dist/ChipsInput/ChipDropdownInput.cjs +1 -0
  16. package/dist/ChipsInput/ChipDropdownInput.cjs.map +1 -1
  17. package/dist/ChipsInput/ChipDropdownInput.js +1 -0
  18. package/dist/ChipsInput/ChipDropdownInput.js.map +1 -1
  19. package/dist/Dropdown/BasicDropdown.cjs +9 -4
  20. package/dist/Dropdown/BasicDropdown.cjs.map +1 -1
  21. package/dist/Dropdown/BasicDropdown.d.ts +2 -2
  22. package/dist/Dropdown/BasicDropdown.js +9 -4
  23. package/dist/Dropdown/BasicDropdown.js.map +1 -1
  24. package/dist/Dropdown/CommonStyling.cjs +2 -2
  25. package/dist/Dropdown/CommonStyling.cjs.map +1 -1
  26. package/dist/Dropdown/CommonStyling.js +2 -2
  27. package/dist/Dropdown/CommonStyling.js.map +1 -1
  28. package/dist/Dropdown/DropdownButton.cjs +8 -4
  29. package/dist/Dropdown/DropdownButton.cjs.map +1 -1
  30. package/dist/Dropdown/DropdownButton.js +8 -4
  31. package/dist/Dropdown/DropdownButton.js.map +1 -1
  32. package/dist/Dropdown/DropdownContent.cjs +94 -53
  33. package/dist/Dropdown/DropdownContent.cjs.map +1 -1
  34. package/dist/Dropdown/DropdownContent.d.ts +3 -1
  35. package/dist/Dropdown/DropdownContent.js +92 -53
  36. package/dist/Dropdown/DropdownContent.js.map +1 -1
  37. package/dist/Dropdown/DropdownFilter.cjs +1 -1
  38. package/dist/Dropdown/DropdownFilter.cjs.map +1 -1
  39. package/dist/Dropdown/DropdownFilter.js +1 -1
  40. package/dist/Dropdown/DropdownFilter.js.map +1 -1
  41. package/dist/GlobalNavigationBar/GlobalNavigationBar.cjs +14 -13
  42. package/dist/GlobalNavigationBar/GlobalNavigationBar.cjs.map +1 -1
  43. package/dist/GlobalNavigationBar/GlobalNavigationBar.d.ts +2 -1
  44. package/dist/GlobalNavigationBar/GlobalNavigationBar.js +13 -12
  45. package/dist/GlobalNavigationBar/GlobalNavigationBar.js.map +1 -1
  46. package/dist/GlobalNavigationBar/Logo.cjs +4 -4
  47. package/dist/GlobalNavigationBar/Logo.cjs.map +1 -1
  48. package/dist/GlobalNavigationBar/Logo.js +4 -4
  49. package/dist/GlobalNavigationBar/Logo.js.map +1 -1
  50. package/dist/GlobalNavigationBar/desktop/DesktopActions.cjs +70 -36
  51. package/dist/GlobalNavigationBar/desktop/DesktopActions.cjs.map +1 -1
  52. package/dist/GlobalNavigationBar/desktop/DesktopActions.js +68 -36
  53. package/dist/GlobalNavigationBar/desktop/DesktopActions.js.map +1 -1
  54. package/dist/GlobalNavigationBar/desktop/MainMenu.cjs +48 -23
  55. package/dist/GlobalNavigationBar/desktop/MainMenu.cjs.map +1 -1
  56. package/dist/GlobalNavigationBar/desktop/MainMenu.js +47 -23
  57. package/dist/GlobalNavigationBar/desktop/MainMenu.js.map +1 -1
  58. package/dist/GlobalNavigationBar/desktop/RightSideNav.cjs +3 -3
  59. package/dist/GlobalNavigationBar/desktop/RightSideNav.cjs.map +1 -1
  60. package/dist/GlobalNavigationBar/desktop/RightSideNav.js +3 -3
  61. package/dist/GlobalNavigationBar/desktop/RightSideNav.js.map +1 -1
  62. package/dist/GlobalNavigationBar/desktop/UserMenu.cjs +3 -3
  63. package/dist/GlobalNavigationBar/desktop/UserMenu.cjs.map +1 -1
  64. package/dist/GlobalNavigationBar/desktop/UserMenu.js +3 -3
  65. package/dist/GlobalNavigationBar/desktop/UserMenu.js.map +1 -1
  66. package/dist/GlobalNavigationBar/mobile/MobileMenu.cjs +1 -1
  67. package/dist/GlobalNavigationBar/mobile/MobileMenu.cjs.map +1 -1
  68. package/dist/GlobalNavigationBar/mobile/MobileMenu.js +1 -1
  69. package/dist/GlobalNavigationBar/mobile/MobileMenu.js.map +1 -1
  70. package/dist/GlobalNavigationBar/mobile/MobileMenuContent.cjs +4 -4
  71. package/dist/GlobalNavigationBar/mobile/MobileMenuContent.cjs.map +1 -1
  72. package/dist/GlobalNavigationBar/mobile/MobileMenuContent.js +4 -4
  73. package/dist/GlobalNavigationBar/mobile/MobileMenuContent.js.map +1 -1
  74. package/dist/GlobalNavigationBar/mobile/MobileMenuHeader.cjs +60 -31
  75. package/dist/GlobalNavigationBar/mobile/MobileMenuHeader.cjs.map +1 -1
  76. package/dist/GlobalNavigationBar/mobile/MobileMenuHeader.js +59 -31
  77. package/dist/GlobalNavigationBar/mobile/MobileMenuHeader.js.map +1 -1
  78. package/dist/GlobalNavigationBar/types.d.ts +9 -10
  79. package/dist/InputFields/SearchBar.cjs +1 -0
  80. package/dist/InputFields/SearchBar.cjs.map +1 -1
  81. package/dist/InputFields/SearchBar.js +1 -0
  82. package/dist/InputFields/SearchBar.js.map +1 -1
  83. package/dist/List/ListRow.cjs +1 -1
  84. package/dist/List/ListRow.cjs.map +1 -1
  85. package/dist/List/ListRow.js +1 -1
  86. package/dist/List/ListRow.js.map +1 -1
  87. package/dist/MenuItem/MenuItem.cjs +4 -2
  88. package/dist/MenuItem/MenuItem.cjs.map +1 -1
  89. package/dist/MenuItem/MenuItem.js +4 -2
  90. package/dist/MenuItem/MenuItem.js.map +1 -1
  91. package/dist/Modals/ModalContainer.cjs +3 -3
  92. package/dist/Modals/ModalContainer.cjs.map +1 -1
  93. package/dist/Modals/ModalContainer.js +3 -3
  94. package/dist/Modals/ModalContainer.js.map +1 -1
  95. package/dist/Modals/ModalDialog.cjs +3 -5
  96. package/dist/Modals/ModalDialog.cjs.map +1 -1
  97. package/dist/Modals/ModalDialog.js +3 -6
  98. package/dist/Modals/ModalDialog.js.map +1 -1
  99. package/dist/Modals/ModalStyles.cjs +3 -3
  100. package/dist/Modals/ModalStyles.cjs.map +1 -1
  101. package/dist/Modals/ModalStyles.js +3 -3
  102. package/dist/Modals/ModalStyles.js.map +1 -1
  103. package/dist/ProfileButton/ProfileButton.cjs.map +1 -1
  104. package/dist/ProfileButton/ProfileButton.d.ts +8 -0
  105. package/dist/ProfileButton/ProfileButton.js.map +1 -1
  106. package/dist/Switcher/SwitcherMenuItem.cjs +4 -1
  107. package/dist/Switcher/SwitcherMenuItem.cjs.map +1 -1
  108. package/dist/Switcher/SwitcherMenuItem.js +3 -1
  109. package/dist/Switcher/SwitcherMenuItem.js.map +1 -1
  110. package/dist/Table/Table.cjs +21 -28
  111. package/dist/Table/Table.cjs.map +1 -1
  112. package/dist/Table/Table.js +22 -29
  113. package/dist/Table/Table.js.map +1 -1
  114. package/dist/Table/TableBody.cjs +122 -42
  115. package/dist/Table/TableBody.cjs.map +1 -1
  116. package/dist/Table/TableBody.d.ts +4 -1
  117. package/dist/Table/TableBody.js +120 -43
  118. package/dist/Table/TableBody.js.map +1 -1
  119. package/dist/Table/TableFooter.cjs +54 -59
  120. package/dist/Table/TableFooter.cjs.map +1 -1
  121. package/dist/Table/TableFooter.js +54 -59
  122. package/dist/Table/TableFooter.js.map +1 -1
  123. package/dist/Table/TableHeaders.cjs +13 -67
  124. package/dist/Table/TableHeaders.cjs.map +1 -1
  125. package/dist/Table/TableHeaders.d.ts +1 -4
  126. package/dist/Table/TableHeaders.js +15 -64
  127. package/dist/Table/TableHeaders.js.map +1 -1
  128. package/dist/Table/TableStyles.cjs +30 -20
  129. package/dist/Table/TableStyles.cjs.map +1 -1
  130. package/dist/Table/TableStyles.d.ts +5 -3
  131. package/dist/Table/TableStyles.js +23 -20
  132. package/dist/Table/TableStyles.js.map +1 -1
  133. package/dist/Tabs/TabLink.cjs +2 -2
  134. package/dist/Tabs/TabLink.cjs.map +1 -1
  135. package/dist/Tabs/TabLink.d.ts +1 -1
  136. package/dist/Tabs/TabLink.js +2 -2
  137. package/dist/Tabs/TabLink.js.map +1 -1
  138. package/dist/Tabs/VerticalTabs.cjs +2 -2
  139. package/dist/Tabs/VerticalTabs.cjs.map +1 -1
  140. package/dist/Tabs/VerticalTabs.d.ts +1 -1
  141. package/dist/Tabs/VerticalTabs.js +2 -2
  142. package/dist/Tabs/VerticalTabs.js.map +1 -1
  143. package/dist/common/ClickOutside.cjs +1 -1
  144. package/dist/common/ClickOutside.cjs.map +1 -1
  145. package/dist/common/ClickOutside.js +1 -1
  146. package/dist/common/ClickOutside.js.map +1 -1
  147. package/dist/{GlobalNavigationBar → common}/NavigationHelper.cjs +0 -0
  148. package/dist/common/NavigationHelper.cjs.map +1 -0
  149. package/dist/{GlobalNavigationBar → common}/NavigationHelper.d.ts +0 -0
  150. package/dist/{GlobalNavigationBar → common}/NavigationHelper.js +0 -0
  151. package/dist/common/NavigationHelper.js.map +1 -0
  152. package/package.json +1 -1
  153. package/dist/GlobalNavigationBar/NavigationHelper.cjs.map +0 -1
  154. package/dist/GlobalNavigationBar/NavigationHelper.js.map +0 -1
  155. package/dist/hooks/useClickOutside.cjs +0 -39
  156. package/dist/hooks/useClickOutside.cjs.map +0 -1
  157. package/dist/hooks/useClickOutside.d.ts +0 -5
  158. package/dist/hooks/useClickOutside.js +0 -26
  159. package/dist/hooks/useClickOutside.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Dropdown/DropdownButton.tsx"],"names":["React","IconButton","DropdownContent","styled","defaultOnMouseDownHandler","useClickOutsideRef","useFocusOutsideRef","TextButtonDropdownArrow","TextButtonDropdownContent","TextButtonDropdownIcon","TextButtonDropdownText","TextButtonDropdownWrapper","ArrowDropDown","ArrowDropUp","Wrapper","div","DropdownButton","forwardRef","ref","items","icon","disabled","onClick","itemsType","action","actionLabel","actionVariant","actionIcon","actionLoading","size","width","alignLeft","multiSelect","scrollable","pinTopItem","maxHeight","className","value","rest","useState","dropdownOpen","setDropdownOpen","selectedValues","setSelectedValues","focused","setFocused","keyboardNavigated","setKeyboardNavigated","containerRef","useEffect","handleValueSelect","values","renderButton","type","event","detail","label","keepLabel","length","filter","a","includes","map","displayLabel","join","cls","e","key","preventDefault","stopPropagation","onValueUpdate"],"mappings":"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","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom components.\n */\nimport {IconButton} from '../Button';\nimport DropdownContent from './DropdownContent';\nimport styled from 'styled-components';\n\n/**\n * Import custom types.\n */\nimport {DropdownButtonProps} from './DropdownButtonTypes';\nimport {defaultOnMouseDownHandler, useClickOutsideRef, useFocusOutsideRef} from '../common';\nimport {\n TextButtonDropdownArrow,\n TextButtonDropdownContent,\n TextButtonDropdownIcon,\n TextButtonDropdownText,\n TextButtonDropdownWrapper\n} from './CommonStyling';\nimport {ArrowDropDown, ArrowDropUp} from '../icons/systemicons/SystemIcons';\n\nconst Wrapper = styled.div`\n position: relative;\n display: inline-block;\n`;\n\nconst DropdownButton = React.forwardRef( ({\n items,\n icon,\n disabled,\n onClick,\n itemsType = 'normal',\n action,\n actionLabel = '',\n actionVariant,\n actionIcon,\n actionLoading,\n size,\n width,\n alignLeft,\n multiSelect = false,\n scrollable = false,\n pinTopItem = false,\n maxHeight,\n className,\n value,\n ...rest\n }: DropdownButtonProps, ref: React.Ref<HTMLButtonElement>) => {\n // Globally used variables within the view.\n const [dropdownOpen, setDropdownOpen] = React.useState<boolean>(false);\n const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\n const [focused, setFocused] = React.useState<number | null>(null);\n const [keyboardNavigated, setKeyboardNavigated] = React.useState<boolean>(false);\n\n const containerRef = useClickOutsideRef(() => setDropdownOpen(false), [], useFocusOutsideRef(() => setDropdownOpen(false)));\n\n React.useEffect(() => {\n !dropdownOpen && setKeyboardNavigated(false)\n }, [dropdownOpen]);\n\n React.useEffect(() => {\n disabled && setDropdownOpen(false)\n }, [disabled]);\n\n React.useEffect(() => {\n setSelectedValues(value || []);\n }, [value]);\n\n const handleValueSelect = (values: string[]) => {\n // Do all required actions\n onClick(values);\n };\n\n /**\n * Renders Icon Button dropdown menu.\n * @returns HTML View for the Icon button dropdown menu.\n */\n const renderButton = () => {\n switch (rest.type) {\n case 'icon':\n return (\n <IconButton ref={ref}\n variant=\"secondary\"\n shape=\"circular\"\n action={(event: any) => {\n setDropdownOpen(!dropdownOpen);\n if (event?.detail !== 1) {\n setKeyboardNavigated(true);\n }\n }}\n disabled={disabled}>\n {icon}\n </IconButton>\n );\n case 'text':\n const label = rest.keepLabel || !selectedValues?.length\n ? rest.label\n : items.filter(a => selectedValues.includes(a.value)).map(a => a.displayLabel ?? a.value).join(', ');\n const cls = `${disabled && 'disabled'} ${dropdownOpen && 'expanded'} ${className}`;\n return <TextButtonDropdownWrapper tabIndex={!disabled ? 0 : -1}\n className={cls}\n onMouseDown={defaultOnMouseDownHandler}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n setDropdownOpen(!dropdownOpen);\n setKeyboardNavigated(true);\n }\n }}\n onClick={() => !disabled && setDropdownOpen(!dropdownOpen)}>\n <TextButtonDropdownContent>\n {icon && <TextButtonDropdownIcon>{icon}</TextButtonDropdownIcon>}\n <TextButtonDropdownText>{label}</TextButtonDropdownText>\n <TextButtonDropdownArrow>\n {\n dropdownOpen\n ? <ArrowDropUp size=\"24px\"/>\n : <ArrowDropDown size=\"24px\"/>\n }\n </TextButtonDropdownArrow>\n </TextButtonDropdownContent>\n </TextButtonDropdownWrapper>\n }\n };\n\n return (\n <Wrapper className={className} ref={containerRef}>\n {renderButton()}\n <DropdownContent\n customizationProps={{\n itemsType: itemsType,\n action: action ?? (() => {\n }),\n actionLabel: actionLabel,\n actionVariant: actionVariant,\n onValueUpdate: handleValueSelect,\n multiSelect: multiSelect,\n actionIcon: actionIcon,\n actionLoading: actionLoading,\n scrollable: scrollable,\n pinTopItem: pinTopItem,\n maxHeight: maxHeight,\n items: items\n }}\n focused={focused}\n setFocused={setFocused}\n size={size}\n width={width}\n alignLeft={alignLeft}\n isOpen={dropdownOpen}\n setIsOpen={setDropdownOpen}\n outline={keyboardNavigated}\n filter=\"\"\n selectedValues={rest.type === 'icon' && itemsType === 'normal' ? [] : selectedValues}\n setSelectedValues={setSelectedValues}\n messageOnNoResults=\"No results\"\n isButton={true}\n id=\"dropdown-content\"\n />\n </Wrapper>\n );\n});\n\nexport default DropdownButton;\n"],"file":"DropdownButton.js"}
1
+ {"version":3,"sources":["../../src/Dropdown/DropdownButton.tsx"],"names":["React","IconButton","DropdownContent","styled","defaultOnMouseDownHandler","useClickOutsideRef","useFocusOutsideRef","TextButtonDropdownArrow","TextButtonDropdownContent","TextButtonDropdownIcon","TextButtonDropdownText","TextButtonDropdownWrapper","ArrowDropDown","ArrowDropUp","Wrapper","div","DropdownButton","forwardRef","ref","items","icon","disabled","onClick","itemsType","action","actionLabel","actionVariant","actionIcon","actionLoading","size","width","alignLeft","multiSelect","scrollable","pinTopItem","maxHeight","className","value","rest","useState","dropdownOpen","setDropdownOpen","selectedValues","setSelectedValues","focused","setFocused","keyboardNavigated","setKeyboardNavigated","dropdownRef","useRef","containerRef","useEffect","handleValueSelect","values","renderButton","type","event","detail","label","keepLabel","length","filter","a","includes","map","displayLabel","join","cls","e","key","preventDefault","stopPropagation","onValueUpdate"],"mappings":"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","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom components.\n */\nimport {IconButton} from '../Button';\nimport DropdownContent from './DropdownContent';\nimport styled from 'styled-components';\n\n/**\n * Import custom types.\n */\nimport {DropdownButtonProps} from './DropdownButtonTypes';\nimport {defaultOnMouseDownHandler, useClickOutsideRef, useFocusOutsideRef} from '../common';\nimport {\n TextButtonDropdownArrow,\n TextButtonDropdownContent,\n TextButtonDropdownIcon,\n TextButtonDropdownText,\n TextButtonDropdownWrapper\n} from './CommonStyling';\nimport {ArrowDropDown, ArrowDropUp} from '../icons/systemicons/SystemIcons';\n\nconst Wrapper = styled.div`\n display: inline-block;\n`;\n\nconst DropdownButton = React.forwardRef( ({\n items,\n icon,\n disabled,\n onClick,\n itemsType = 'normal',\n action,\n actionLabel = '',\n actionVariant,\n actionIcon,\n actionLoading,\n size,\n width,\n alignLeft,\n multiSelect = false,\n scrollable = false,\n pinTopItem = false,\n maxHeight,\n className,\n value,\n ...rest\n }: DropdownButtonProps, ref: React.Ref<HTMLButtonElement>) => {\n // Globally used variables within the view.\n const [dropdownOpen, setDropdownOpen] = React.useState<boolean>(false);\n const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\n const [focused, setFocused] = React.useState<number | null>(null);\n const [keyboardNavigated, setKeyboardNavigated] = React.useState<boolean>(false);\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n\n const containerRef = useFocusOutsideRef(() => setDropdownOpen(false), [dropdownRef]);\n useClickOutsideRef(() => setDropdownOpen(false), [], containerRef);\n\n React.useEffect(() => {\n !dropdownOpen && setKeyboardNavigated(false)\n }, [dropdownOpen]);\n\n React.useEffect(() => {\n disabled && setDropdownOpen(false)\n }, [disabled]);\n\n React.useEffect(() => {\n setSelectedValues(value || []);\n }, [value]);\n\n const handleValueSelect = (values: string[]) => {\n // Do all required actions\n onClick(values);\n };\n\n /**\n * Renders Icon Button dropdown menu.\n * @returns HTML View for the Icon button dropdown menu.\n */\n const renderButton = () => {\n switch (rest.type) {\n case 'icon':\n return (\n <IconButton ref={ref}\n variant=\"secondary\"\n shape=\"circular\"\n action={(event: any) => {\n setDropdownOpen(!dropdownOpen);\n if (event?.detail !== 1) {\n setKeyboardNavigated(true);\n }\n }}\n disabled={disabled}>\n {icon}\n </IconButton>\n );\n case 'text':\n const label = rest.keepLabel || !selectedValues?.length\n ? rest.label\n : items.filter(a => selectedValues.includes(a.value)).map(a => a.displayLabel ?? a.value).join(', ');\n const cls = `${disabled && 'disabled'} ${dropdownOpen && 'expanded'} ${className}`;\n return <TextButtonDropdownWrapper tabIndex={!disabled ? 0 : -1}\n className={cls}\n onMouseDown={defaultOnMouseDownHandler}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n setDropdownOpen(!dropdownOpen);\n setKeyboardNavigated(true);\n }\n }}\n onClick={() => !disabled && setDropdownOpen(!dropdownOpen)}>\n <TextButtonDropdownContent>\n {icon && <TextButtonDropdownIcon>{icon}</TextButtonDropdownIcon>}\n <TextButtonDropdownText>{label}</TextButtonDropdownText>\n <TextButtonDropdownArrow>\n {\n dropdownOpen\n ? <ArrowDropUp size=\"24px\"/>\n : <ArrowDropDown size=\"24px\"/>\n }\n </TextButtonDropdownArrow>\n </TextButtonDropdownContent>\n </TextButtonDropdownWrapper>\n }\n };\n\n return (\n <Wrapper className={className} ref={containerRef}>\n {renderButton()}\n <DropdownContent\n ref={dropdownRef}\n containerRef={containerRef}\n customizationProps={{\n itemsType: itemsType,\n action: action ?? (() => {\n }),\n actionLabel: actionLabel,\n actionVariant: actionVariant,\n onValueUpdate: handleValueSelect,\n multiSelect: multiSelect,\n actionIcon: actionIcon,\n actionLoading: actionLoading,\n scrollable: scrollable,\n pinTopItem: pinTopItem,\n maxHeight: maxHeight,\n items: items\n }}\n focused={focused}\n setFocused={setFocused}\n size={size}\n width={width}\n alignLeft={alignLeft}\n isOpen={dropdownOpen}\n setIsOpen={setDropdownOpen}\n outline={keyboardNavigated}\n filter=\"\"\n selectedValues={rest.type === 'icon' && itemsType === 'normal' ? [] : selectedValues}\n setSelectedValues={setSelectedValues}\n messageOnNoResults=\"No results\"\n isButton={true}\n id=\"dropdown-content\"\n />\n </Wrapper>\n );\n});\n\nexport default DropdownButton;\n"],"file":"DropdownButton.js"}
@@ -37,7 +37,7 @@ var _MenuItem = _interopRequireDefault(require("../MenuItem/MenuItem"));
37
37
 
38
38
  var _jsxRuntime = require("react/jsx-runtime");
39
39
 
40
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
40
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
41
41
 
42
42
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
43
43
 
@@ -49,13 +49,11 @@ var MAX_MENU_HEIGHT = 240;
49
49
  var AVG_OPTION_HEIGHT = 48;
50
50
  var OFFSET_BEFORE_SHOW = 1000000;
51
51
 
52
- var DDContainer = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: none;\n position: absolute;\n background-color: ", ";\n\n width: ", ";\n z-index: ", ";\n margin: ", ";\n\n &.show {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n\n &.up {\n top: auto;\n bottom: 100%;\n }\n\n transform: translate(-", "px, -", "px);\n\n &.up,\n &.down {\n transform: translate(0, 0);\n }\n\n &.outline:focus:after {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n outline: 4px solid black;\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n &:focus {\n outline: none;\n }\n\n ", "\n\n ", ";\n\n border: 1px solid ", ";\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\n padding: 4px 0px;\n\n min-width: ", ";\n border-radius: ", ";\n\n max-height: ", ";\n\n"])), _styles.COLORS.white, function (props) {
53
- return props.width ? props.width : '100%';
54
- }, _zIndexes.Z_INDEXES.dropdown, function (props) {
52
+ var DDContainer = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: none;\n pointer-events: auto;\n position: absolute;\n background-color: ", ";\n\n z-index: ", ";\n margin: ", ";\n\n &.show {\n display: flex;\n flex-direction: column;\n justify-content: center;\n &.down,\n &.up {\n ", "\n }\n }\n\n transform: translate(-", "px, -", "px);\n\n &.outline:focus:after {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n outline: 4px solid black;\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n &:focus {\n outline: none;\n }\n\n ", ";\n\n border: 1px solid ", ";\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\n padding: 4px 0px;\n\n min-width: ", ";\n border-radius: ", ";\n\n max-height: ", ";\n\n"])), _styles.COLORS.white, _zIndexes.Z_INDEXES.dropdown, function (props) {
55
53
  return props.isButton ? '-4px' : '4px 0px';
56
- }, OFFSET_BEFORE_SHOW, OFFSET_BEFORE_SHOW, function (props) {
57
- return props.alignLeft ? 'left: 0px;' : '';
58
54
  }, function (props) {
55
+ return "transform: translate(".concat(props.offsetLeft, ", ").concat(props.offsetTop, ");");
56
+ }, OFFSET_BEFORE_SHOW, OFFSET_BEFORE_SHOW, function (props) {
59
57
  return props.isButton ? _CommonStyling.ButtonDropdownContentStyling : '';
60
58
  }, _styles.COLORS.neutral_100, function (props) {
61
59
  return props.size == _types.Size.Large ? '320px' : props.size == _types.Size.Medium ? '280px' : '240px';
@@ -115,6 +113,8 @@ var ActionButtonContainer = _styledComponents.default.div(_templateObject7 || (_
115
113
  return props.size === _types.Size.Small || !props.size ? '4px 16px 0px' : props.size === _types.Size.Medium ? '12px 16px 8px' : '16px 16px 12px';
116
114
  });
117
115
 
116
+ var Overlay = _styledComponents.default.div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: ", ";\n"])), _zIndexes.Z_INDEXES.modal);
117
+
118
118
  var DropdownContent = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
119
119
  var _ref2, _customizationProps$a;
120
120
 
@@ -132,7 +132,8 @@ var DropdownContent = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
132
132
  selectedValues = _ref.selectedValues,
133
133
  setSelectedValues = _ref.setSelectedValues,
134
134
  messageOnNoResults = _ref.messageOnNoResults,
135
- outline = _ref.outline;
135
+ outline = _ref.outline,
136
+ containerRef = _ref.containerRef;
136
137
 
137
138
  var _React$useState = _react.default.useState(false),
138
139
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
@@ -144,6 +145,14 @@ var DropdownContent = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
144
145
  locationDefined = _React$useState4[0],
145
146
  setLocationDefined = _React$useState4[1];
146
147
 
148
+ var _React$useState5 = _react.default.useState({
149
+ top: '0',
150
+ left: '0'
151
+ }),
152
+ _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
153
+ offset = _React$useState6[0],
154
+ setOffset = _React$useState6[1];
155
+
147
156
  var dropdownContentRef = (_ref2 = ref) !== null && _ref2 !== void 0 ? _ref2 : _react.default.useRef(null);
148
157
  if (!customizationProps.itemsType) customizationProps.itemsType = 'normal';
149
158
  if (!size) size = _types.Size.Small;
@@ -154,12 +163,16 @@ var DropdownContent = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
154
163
 
155
164
  var determineDropUp = function determineDropUp() {
156
165
  var options = customizationProps.items;
157
- var node = dropdownContentRef.current;
158
- if (!node) return;
166
+ var rect = containerRef.current.getBoundingClientRect();
159
167
  var windowHeight = window.innerHeight;
160
168
  var menuHeight = Math.min(MAX_MENU_HEIGHT, options.length * AVG_OPTION_HEIGHT);
161
- var instOffsetWithMenu = node.getBoundingClientRect().top + menuHeight + OFFSET_BEFORE_SHOW;
162
- setIsUp(instOffsetWithMenu >= windowHeight);
169
+ var instOffsetWithMenu = rect.top + rect.height + menuHeight;
170
+ var up = instOffsetWithMenu >= windowHeight;
171
+ setOffset({
172
+ top: up ? "calc(-100% - ".concat(rect.height, "px ").concat(isButton ? '' : '- 8px', ")") : '0',
173
+ left: alignLeft ? "calc(-".concat(rect.width, "px)") : "calc(-100%)"
174
+ });
175
+ setIsUp(up);
163
176
  setLocationDefined(true);
164
177
  };
165
178
 
@@ -268,10 +281,10 @@ var DropdownContent = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
268
281
 
269
282
  var arrLength = getFilteredItems().length;
270
283
 
271
- var _React$useState5 = _react.default.useState([]),
272
- _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
273
- elRefs = _React$useState6[0],
274
- setElRefs = _React$useState6[1];
284
+ var _React$useState7 = _react.default.useState([]),
285
+ _React$useState8 = (0, _slicedToArray2.default)(_React$useState7, 2),
286
+ elRefs = _React$useState8[0],
287
+ setElRefs = _React$useState8[1];
275
288
 
276
289
  _react.default.useEffect(function () {
277
290
  if ((elRefs === null || elRefs === void 0 ? void 0 : elRefs.length) !== arrLength) {
@@ -362,6 +375,19 @@ var DropdownContent = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
362
375
  }
363
376
  }, [isOpen]);
364
377
 
378
+ _react.default.useEffect(function () {
379
+ if (isOpen) {
380
+ calculateOffset();
381
+ window.addEventListener('scroll', calculateOffset);
382
+ window.addEventListener('resize', calculateOffset);
383
+ }
384
+
385
+ return function () {
386
+ window.removeEventListener('scroll', calculateOffset);
387
+ window.addEventListener('resize', calculateOffset);
388
+ };
389
+ }, [isOpen]);
390
+
365
391
  var handleItemClick = function handleItemClick(selected, item) {
366
392
  var newValue = [];
367
393
 
@@ -520,50 +546,65 @@ var DropdownContent = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
520
546
  });
521
547
  };
522
548
 
549
+ var calculateOffset = function calculateOffset() {
550
+ var _containerRef$current;
551
+
552
+ var rect = containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.getBoundingClientRect();
553
+
554
+ if (rect) {
555
+ dropdownContentRef.current.style.left = "".concat(rect.x + rect.width, "px");
556
+ dropdownContentRef.current.style.top = "".concat(rect.y + rect.height, "px");
557
+ dropdownContentRef.current.style.width = width !== null && width !== void 0 ? width : "".concat(rect.width, "px");
558
+ }
559
+ };
560
+
523
561
  var cls = "".concat(isOpen ? 'show' : '', " ").concat(isOpen && outline ? 'outline' : '', " ").concat(locationDefined ? isUp ? 'up' : 'down' : '');
524
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(DDContainer, {
525
- ref: dropdownContentRef,
526
- size: size,
527
- width: width,
528
- tabIndex: -1,
529
- isButton: isButton,
530
- alignLeft: alignLeft,
531
- scrollable: customizationProps.scrollable,
532
- maxHeight: customizationProps.maxHeight,
533
- className: cls,
534
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(ListContainer, {
562
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Overlay, {
563
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(DDContainer, {
564
+ ref: dropdownContentRef,
535
565
  size: size,
536
- itemsType: customizationProps.itemsType,
537
- onScroll: handleScroll,
538
- ref: itemsListRef,
539
- outline: outline,
566
+ offsetTop: offset.top,
567
+ offsetLeft: offset.left,
568
+ tabIndex: -1,
569
+ isButton: isButton,
570
+ alignLeft: alignLeft,
540
571
  scrollable: customizationProps.scrollable,
541
- children: [customizationProps.menuContent && /*#__PURE__*/(0, _jsxRuntime.jsxs)(MenuContentContainer, {
572
+ maxHeight: customizationProps.maxHeight,
573
+ className: cls,
574
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(ListContainer, {
542
575
  size: size,
543
- children: [customizationProps.menuContent, /*#__PURE__*/(0, _jsxRuntime.jsx)(DividerContainer, {
576
+ itemsType: customizationProps.itemsType,
577
+ onScroll: handleScroll,
578
+ ref: itemsListRef,
579
+ outline: outline,
580
+ scrollable: customizationProps.scrollable,
581
+ children: [customizationProps.menuContent && /*#__PURE__*/(0, _jsxRuntime.jsxs)(MenuContentContainer, {
544
582
  size: size,
545
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
546
- className: "divider"
547
- })
548
- })]
549
- }), customizationProps.pinTopItem && getTopItem(), getElements(messageOnNoResults, size)]
550
- }), customizationProps.action && customizationProps.actionLabel && /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionButtonContainer, {
551
- size: size,
552
- scrollable: customizationProps.scrollable,
553
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
554
- width: "100%",
555
- icon: customizationProps.actionIcon,
556
- ref: actionButtonRef,
557
- loading: customizationProps.actionLoading,
558
- disabled: customizationProps.actionDisabled,
559
- variant: (_customizationProps$a = customizationProps.actionVariant) !== null && _customizationProps$a !== void 0 ? _customizationProps$a : 'primary',
583
+ children: [customizationProps.menuContent, /*#__PURE__*/(0, _jsxRuntime.jsx)(DividerContainer, {
584
+ size: size,
585
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
586
+ className: "divider"
587
+ })
588
+ })]
589
+ }), customizationProps.pinTopItem && getTopItem(), getElements(messageOnNoResults, size)]
590
+ }), customizationProps.action && customizationProps.actionLabel && /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionButtonContainer, {
560
591
  size: size,
561
- onClick: function onClick() {
562
- return customizationProps.action() && setIsOpen(false);
563
- },
564
- children: customizationProps.actionLabel
565
- })
566
- })]
592
+ scrollable: customizationProps.scrollable,
593
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
594
+ width: "100%",
595
+ icon: customizationProps.actionIcon,
596
+ ref: actionButtonRef,
597
+ loading: customizationProps.actionLoading,
598
+ disabled: customizationProps.actionDisabled,
599
+ variant: (_customizationProps$a = customizationProps.actionVariant) !== null && _customizationProps$a !== void 0 ? _customizationProps$a : 'primary',
600
+ size: size,
601
+ onClick: function onClick() {
602
+ return customizationProps.action() && setIsOpen(false);
603
+ },
604
+ children: customizationProps.actionLabel
605
+ })
606
+ })]
607
+ })
567
608
  });
568
609
  });
569
610
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Dropdown/DropdownContent.tsx"],"names":["MAX_MENU_HEIGHT","AVG_OPTION_HEIGHT","OFFSET_BEFORE_SHOW","DDContainer","styled","div","COLORS","white","props","width","Z_INDEXES","dropdown","isButton","alignLeft","ButtonDropdownContentStyling","neutral_100","size","Size","Large","Medium","scrollable","maxHeight","ItemsContainer","hover","active","focus","ListContainer","itemsType","Small","MenuContentContainer","ComponentTextStyle","Bold","neutral_500","Regular","DividerContainer","TopItemContainer","neutral_200","ActionButtonContainer","DropdownContent","React","forwardRef","ref","id","customizationProps","isOpen","setIsOpen","filter","focused","setFocused","selectedValues","setSelectedValues","messageOnNoResults","outline","useState","isUp","setIsUp","locationDefined","setLocationDefined","dropdownContentRef","useRef","itemsListRef","actionButtonRef","determineDropUp","options","items","node","current","windowHeight","window","innerHeight","menuHeight","Math","min","length","instOffsetWithMenu","getBoundingClientRect","top","setNewFocusedElement","index","newFocusedElement","elRefs","oldFocusedElement","classList","remove","add","scrollIntoView","block","inline","getFilteredItems","filtrationString","toUpperCase","x","value","includes","displayLabel","findNextActiveIndex","direction","i","disabled","handleKeyDown","e","key","preventDefault","focusedNow","arrLength","haveTopItem","target","focusedElement","click","useEffect","document","addEventListener","removeEventListener","scrollPosition","handleScroll","scrollTop","useLayoutEffect","getCorrectRef","createRef","setElRefs","Array","fill","map","_","pinTopItem","multiSelect","getSuggestions","suggestion","elRef","blur","handleItemClick","selected","item","newValue","onValueUpdate","getTopItem","visibleItems","allSelected","some","y","showTopItem","suggestions","find","c","undefined","selectedFirst","newValues","stopPropagation","getElements","customContent","cls","menuContent","action","actionLabel","actionIcon","actionLoading","actionDisabled","actionVariant","noteLabel","showDividerAbove","locked","icon"],"mappings":"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","sourcesContent":["import React, {MutableRefObject} from 'react';\nimport styled, {css} from 'styled-components';\nimport Button from '../Button/Button';\nimport {Size} from '../types';\nimport {ButtonDropdownContentStyling} from './CommonStyling';\nimport {\n ComponentLStyling,\n ComponentXLStyling,\n ComponentMStyling,\n ComponentSStyling,\n ComponentTextStyle\n} from '../styles/typography';\nimport {COLORS, focusStyles, scrollBarStyling} from '../styles';\nimport {Checkbox, RadioButton} from '../InputFields';\nimport {Z_INDEXES} from '../styles/z-indexes';\nimport MenuItem from '../MenuItem/MenuItem';\nimport {defaultOnMouseDownHandler} from '../common';\n\nconst MAX_MENU_HEIGHT = 240;\nconst AVG_OPTION_HEIGHT = 48;\nconst OFFSET_BEFORE_SHOW = 1000000;\n\nexport const DDContainer = styled.div<{ isButton: boolean; width?: string; alignLeft?: boolean; size?: Size; scrollable?: boolean; maxHeight?: string }>`\n display: none;\n position: absolute;\n background-color: ${COLORS.white};\n\n width: ${(props) => (props.width ? props.width : '100%')};\n z-index: ${Z_INDEXES.dropdown};\n margin: ${(props) => (props.isButton ? '-4px' : '4px 0px')};\n\n &.show {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n\n &.up {\n top: auto;\n bottom: 100%;\n }\n\n transform: translate(-${OFFSET_BEFORE_SHOW}px, -${OFFSET_BEFORE_SHOW}px);\n\n &.up,\n &.down {\n transform: translate(0, 0);\n }\n\n &.outline:focus:after {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n outline: 4px solid black;\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n &:focus {\n outline: none;\n }\n\n ${(props) => (props.alignLeft ? 'left: 0px;' : '')}\n\n ${(props) => (props.isButton ? ButtonDropdownContentStyling : '')};\n\n border: 1px solid ${COLORS.neutral_100};\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\n padding: 4px 0px;\n\n min-width: ${(props) => (props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px')};\n border-radius: ${(props) => (props.size == Size.Large ? '10px' : props.size == Size.Medium ? '8px' : '6px')};\n\n max-height: ${(props) => (!props.scrollable ? 'auto' : props.maxHeight ? props.maxHeight : props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px')};\n\n`;\n\nconst ItemsContainer = styled.div<{ size?: Size }>`\n > *:hover {\n z-index: ${Z_INDEXES.hover};\n }\n\n > *:active,\n > *.active {\n z-index: ${Z_INDEXES.active};\n }\n\n > *:focus {\n z-index: ${Z_INDEXES.focus};\n }\n`;\n\nconst ListContainer = styled.div<{ scrollable?: boolean; size?: Size; itemsType?: string; outline?: boolean }>`\n ${(props) => (props.scrollable ? 'overflow-y: scroll;' : '')}\n ${(props) => (props.scrollable ? 'margin-right: 6px;' : '')}\n ${(props) => (props.scrollable ? 'padding-right: 6px;' : '')}\n ${(props) => (props.itemsType != 'normal' ? 'margin-left: 4px;' : '')}\n div.divider {\n display: block;\n width: calc(100% - 40px);\n margin-left: 16px;\n border-top: 1px solid #e5e5e5;\n position: absolute;\n top: 0px;\n }\n\n ${ItemsContainer} {\n padding-top: ${props => props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px'};\n padding-bottom: ${props => props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px'};\n\n word-break: break-word;\n }\n\n *:focus {\n outline: none !important;\n }\n\n ${scrollBarStyling(Size.Small)}\n`;\n\n\nconst MenuContentContainer = styled.div<{ size?: Size }>`\n h1, h2, h3 {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ${props => props.size == Size.Large && ComponentXLStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}\n ${props => props.size == Size.Medium && ComponentLStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}\n ${props => (props.size == Size.Small || !props.size) && ComponentMStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}\n padding: ${props => props.size == Size.Small || !props.size ? '10px 16px 6px' :\n props.size == Size.Medium ? '16px 24px 8px' : '16px 32px 8px'};\n }\n\n p {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ${props => props.size == Size.Large && ComponentLStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}\n ${props => props.size == Size.Medium && ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}\n ${props => (props.size == Size.Small || !props.size) && ComponentSStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}\n padding: ${props => props.size == Size.Small || !props.size ? '8px 16px' :\n props.size == Size.Medium ? '12px 24px' : '16px 32px'};\n }\n`;\n\nconst DividerContainer = styled.div<{ size?: Size }>`\n position: relative;\n\n margin-top: ${props => props.size == Size.Large ? '16px' :\n props.size == Size.Medium ? '12px' :\n (props.size == Size.Small || !props.size) ? '8px' : '6px'};\n\n div.divider {\n width: 100%;\n margin: 0px;\n }\n`;\n\nconst TopItemContainer = styled.div<{ size?: Size }>`\n border-bottom-style: solid;\n border-bottom-color: ${COLORS.neutral_200};\n border-bottom-width: 1px;\n margin-right: 22px;\n`;\n\nconst ActionButtonContainer = styled.div<{ size?: Size, scrollable?: boolean }>`\n ${(props) => (props.scrollable ? `border-top: 1px solid ${COLORS.neutral_200};` : '')}\n ${(props) => (props.scrollable ? 'margin-top: 4px;' : '')}\n\n padding: ${(props) => props.size === Size.Small || !props.size\n ? '4px 16px 0px'\n : props.size === Size.Medium\n ? '12px 16px 8px'\n : '16px 16px 12px'};\n\n button {\n width: 100%;\n }\n`;\n\n\nexport interface DropdownItem {\n value: string;\n displayLabel?: string;\n noteLabel?: string;\n suggestion?: boolean;\n showDividerAbove?: boolean;\n disabled?: boolean;\n locked?: boolean;\n icon?: React.ReactNode;\n customContent?: React.ReactNode;\n}\n\nexport interface DropdownCustomizationProps {\n itemsType?: 'radio' | 'checkbox' | 'normal';\n menuContent?: React.ReactNode;\n scrollable?: boolean;\n multiSelect?: boolean;\n maxHeight?: string;\n actionLabel?: string;\n actionVariant?: 'primary' | 'secondary' | 'tertiary' | undefined;\n actionIcon?: React.ReactNode;\n actionLoading?: boolean;\n actionDisabled?: boolean;\n action: () => boolean | void | undefined;\n pinTopItem?: boolean;\n onValueUpdate: (values: string[]) => boolean | void | undefined;\n items: DropdownItem[];\n}\n\nexport interface DropdownProps {\n isButton: boolean;\n customizationProps: DropdownCustomizationProps;\n alignLeft?: boolean;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n size?: Size;\n id: string;\n filter: string;\n width?: string;\n selectedValues: string[];\n setSelectedValues: (val: string[]) => void;\n messageOnNoResults: string;\n focused: number | null;\n setFocused: (focused: number | null) => void;\n outline?: boolean;\n}\n\nconst DropdownContent = React.forwardRef<HTMLDivElement, DropdownProps>(({\n id,\n customizationProps,\n alignLeft,\n isButton,\n size,\n isOpen,\n width,\n setIsOpen,\n filter,\n focused,\n setFocused,\n selectedValues,\n setSelectedValues,\n messageOnNoResults,\n outline\n }, ref) => {\n const [isUp, setIsUp] = React.useState<boolean>(false);\n const [locationDefined, setLocationDefined] = React.useState<boolean>(false);\n const dropdownContentRef = ref as MutableRefObject<HTMLDivElement> ?? React.useRef<HTMLDivElement>(null);\n\n if (!customizationProps.itemsType) customizationProps.itemsType = 'normal';\n if (!size) size = Size.Small;\n\n const itemsListRef = React.useRef<HTMLDivElement>(null);\n const actionButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const determineDropUp = () => {\n const options = customizationProps.items;\n const node = dropdownContentRef.current;\n\n if (!node) return;\n\n const windowHeight = window.innerHeight;\n const menuHeight = Math.min(MAX_MENU_HEIGHT, options.length * AVG_OPTION_HEIGHT);\n const instOffsetWithMenu = node.getBoundingClientRect().top + menuHeight + OFFSET_BEFORE_SHOW;\n setIsUp(instOffsetWithMenu >= windowHeight);\n setLocationDefined(true);\n };\n\n const setNewFocusedElement = (index: number) => {\n if (outline) dropdownContentRef.current?.focus();\n\n const newFocusedElement = elRefs[index];\n const oldFocusedElement = focused || focused === 0 ? elRefs[focused] : null;\n if (newFocusedElement && newFocusedElement !== oldFocusedElement) {\n setFocused(index);\n oldFocusedElement?.current?.classList.remove('dropdown-hover');\n\n newFocusedElement.current?.classList.add('dropdown-hover');\n newFocusedElement.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest'\n });\n }\n };\n\n const getFilteredItems = () => {\n const filtrationString = (filter ?? '').toUpperCase();\n return customizationProps.items.filter((x) => x?.value?.toUpperCase().includes(filtrationString) || x?.displayLabel?.toUpperCase().includes(filtrationString));\n };\n\n const findNextActiveIndex = (index: number, direction: number, items: DropdownItem[]) => {\n for (let i = index + direction; i > 0 && i <= items.length; i += direction) {\n if (!items[i - 1]?.disabled) {\n return i;\n }\n }\n\n return index;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (isOpen) {\n if (e.key === 'ArrowUp' || e.key === 'Up') {\n e.preventDefault();\n let focusedNow = focused || focused === 0 ? focused : arrLength + 1;\n if (!!focusedNow) {\n\n focusedNow =\n focusedNow === 1 && haveTopItem()\n ? 0\n : findNextActiveIndex(focusedNow, -1, getFilteredItems());\n\n setNewFocusedElement(focusedNow);\n }\n } else if (e.key === 'ArrowDown' || e.key === 'Down') {\n e.preventDefault();\n let focusedNow = focused;\n\n focusedNow =\n !!focusedNow || focusedNow === 0\n ? findNextActiveIndex(focusedNow, 1, getFilteredItems())\n : haveTopItem() ? 0 : 1;\n\n setNewFocusedElement(focusedNow);\n } else if (e.key === 'Escape' || e.key === 'Esc') {\n setIsOpen(false);\n setFocused(null);\n } else if ((e.key === 'Enter' || e.key === ' ') && focused !== null && e.target !== actionButtonRef?.current) {\n e.preventDefault();\n const focusedElement = elRefs[focused];\n if (focusedElement) {\n focusedElement.current?.click();\n }\n }\n }\n };\n\n React.useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n });\n\n const scrollPosition = React.useRef<number | undefined>(0);\n const handleScroll = () => {\n scrollPosition.current = itemsListRef.current?.scrollTop;\n };\n React.useLayoutEffect(() => {\n if (itemsListRef.current) itemsListRef.current.scrollTop = scrollPosition.current ?? 0;\n }, [selectedValues]);\n\n const getCorrectRef = (ref: React.RefObject<HTMLElement>): React.RefObject<HTMLElement> => {\n switch (customizationProps.itemsType) {\n case 'normal':\n return (ref as React.RefObject<HTMLButtonElement>) || React.createRef<HTMLButtonElement>();\n default:\n return (ref as React.RefObject<HTMLDivElement>) || React.createRef<HTMLDivElement>();\n }\n };\n\n const arrLength = getFilteredItems().length;\n const [elRefs, setElRefs] = React.useState<React.RefObject<HTMLElement>[]>([]);\n\n React.useEffect(() => {\n if (elRefs?.length !== arrLength) {\n setFocused(null);\n }\n\n setElRefs((elRefs) =>\n Array(arrLength + 1)\n .fill(null)\n .map((_, i) => getCorrectRef(elRefs[i])),\n );\n }, [isOpen, arrLength]);\n\n React.useLayoutEffect(() => {\n isOpen && !locationDefined && determineDropUp();\n }, [isOpen, locationDefined]);\n\n const haveTopItem = () => {\n if (!customizationProps.pinTopItem) return false;\n\n if (customizationProps.itemsType === 'radio' && selectedValues && selectedValues?.length > 0) return true;\n else if (customizationProps.itemsType === 'checkbox' && (customizationProps.multiSelect || selectedValues?.length > 0)) return true;\n else if (customizationProps.itemsType === 'normal' && getSuggestions()?.length > 0) return true;\n return false;\n };\n\n const getSuggestions = () => {\n return getFilteredItems().filter((x) => x.suggestion);\n };\n\n /**\n * when dropdown opens set correct position of focused item\n * */\n React.useLayoutEffect(() => {\n if (isOpen && (focused || focused === 0)) {\n setNewFocusedElement(focused === 0 && !haveTopItem() ? 1 : focused);\n }\n }, [isOpen, focused]);\n\n /**\n * Reset dropdown content state on close\n * */\n React.useEffect(() => {\n if (!isOpen) {\n setLocationDefined(false);\n for (let elRef of elRefs) {\n elRef.current?.classList.remove('dropdown-hover');\n\n }\n setFocused(null);\n dropdownContentRef.current?.classList.remove('outline');\n dropdownContentRef.current?.blur();\n } else {\n if (outline) {\n dropdownContentRef.current?.classList.add('outline');\n dropdownContentRef.current?.focus();\n }\n }\n }, [isOpen, dropdownContentRef, focused, outline]);\n\n /**\n * Scroll item container to top when dropdown opens\n * */\n React.useEffect(() => {\n if (isOpen && itemsListRef.current) {\n itemsListRef.current.scrollTop = 0;\n }\n }, [isOpen]);\n\n\n const handleItemClick = (selected: boolean, item: DropdownItem) => {\n let newValue: string[] = [];\n if (customizationProps.multiSelect) {\n if (selected) newValue = [...selectedValues, item.value];\n else newValue = selectedValues.filter((x) => x != item.value);\n } else newValue = selected ? [item.value] : [];\n\n setSelectedValues(newValue);\n if (customizationProps.onValueUpdate && customizationProps.onValueUpdate(newValue)) {\n setIsOpen(false);\n }\n };\n\n const getTopItem = () => {\n if (!customizationProps.pinTopItem) return;\n const visibleItems = getFilteredItems();\n const allSelected = selectedValues?.filter((x) => visibleItems.some((y) => y.value == x)).length == visibleItems.length;\n let showTopItem = false;\n const suggestions = getSuggestions();\n const displayLabel = selectedValues[0] ? customizationProps.items?.find((c) => c.value === selectedValues[0])?.displayLabel : undefined;\n if (customizationProps.itemsType == 'radio' && selectedValues && selectedValues?.length > 0) showTopItem = true;\n else if (customizationProps.itemsType == 'checkbox' && (customizationProps.multiSelect || selectedValues?.length > 0)) showTopItem = true;\n else if (customizationProps.itemsType == 'normal' && suggestions.length > 0) showTopItem = true;\n\n if (!showTopItem) return;\n\n const selectedFirst = selectedValues.length > 0 ? visibleItems.find(x => x.value == selectedValues[0]) : null;\n\n return (\n <TopItemContainer size={size}>\n {customizationProps.itemsType === 'radio' && (\n <RadioButton\n ref={elRefs[0] as React.RefObject<HTMLDivElement>}\n iconPointerEventsTransparent={true}\n tabIndexVal={-1}\n className={`${focused === 0 ? 'dropdown-hover' : ''}`}\n select={() => {\n }}\n label={selectedFirst?.displayLabel ?? selectedFirst?.value}\n size={size}\n id={`${id}_topitem`}\n selected={true}\n />\n )}\n {customizationProps.itemsType === 'checkbox' && (\n <Checkbox\n ref={elRefs[0] as React.RefObject<HTMLDivElement>}\n tabIndexVal={-1}\n className={`${focused === 0 ? 'dropdown-hover' : ''}`}\n select={(selected: boolean) => {\n if (!customizationProps.multiSelect) return;\n\n const newValues = selected ? visibleItems.map((x) => x.value) : [];\n setSelectedValues(newValues);\n if (customizationProps.onValueUpdate && customizationProps.onValueUpdate(newValues))\n setIsOpen(false);\n }}\n iconPointerEventsTransparent={true}\n semiSelected={customizationProps.multiSelect && !allSelected && selectedValues?.length > 0}\n size={size}\n id={`${id}_checkbox_selectall`}\n label={customizationProps.multiSelect ? 'Select all' : (selectedFirst?.displayLabel ?? selectedFirst?.value)}\n selected={!customizationProps.multiSelect || allSelected}\n />\n )}\n {customizationProps.itemsType === 'normal' && (\n <>\n {suggestions.map((x) => (\n <MenuItem\n key={`${id}_topitem_${x.value}`}\n item={x}\n size={size}\n active={false}\n tabIndex={-1}\n className={`${focused === 0 ? 'dropdown-hover' : ''}`}\n ref={elRefs[0] as React.RefObject<HTMLButtonElement>}\n id={`${id}_topitem`}\n onClickHandler={(e: any) => {\n e.stopPropagation();\n customizationProps.onValueUpdate([x.value]);\n setSelectedValues([x.value]);\n setIsOpen(false);\n setFocused(null);\n }}/>\n ))}\n </>\n )}\n </TopItemContainer>\n );\n };\n\n const getElements = (messageOnNoResults: string, size: Size) => {\n if (getFilteredItems().length === 0) {\n return (\n <MenuItem item={{value:messageOnNoResults, disabled: true}} size={size} id='noResultsFound' active={false} onClickHandler={e => {}}/>\n );\n }\n return (\n <ItemsContainer size={size}>\n {getFilteredItems()\n .filter((x) => x && (customizationProps.itemsType != 'normal' || !x.suggestion))\n .map((item, index) => {\n return (\n <React.Fragment key={`key_${id}_${item.value}`}>\n {item.customContent}\n {!item.customContent && customizationProps.itemsType == 'radio' && (\n <RadioButton\n select={(selected: boolean) => handleItemClick(selected, item)}\n ref={elRefs[index + 1] as React.RefObject<HTMLDivElement>}\n size={size}\n tabIndexVal={-1}\n className={`${index + 1 === focused ? 'dropdown-hover' : ''}`}\n iconPointerEventsTransparent={true}\n disabled={item?.disabled}\n key={`key_${id}_${index + 1}`}\n id={`${id}_${index + 1}`}\n label={item.displayLabel ?? item.value}\n selected={selectedValues?.includes(item.value)}\n />\n )}\n {!item.customContent && customizationProps.itemsType == 'checkbox' && (\n <Checkbox\n select={(selected: boolean) => handleItemClick(selected, item)}\n iconPointerEventsTransparent={true}\n disabled={item?.disabled}\n className={`${index + 1 === focused ? 'dropdown-hover' : ''}`}\n ref={elRefs[index + 1] as React.RefObject<HTMLDivElement>}\n size={size}\n tabIndexVal={-1}\n key={`key_${id}_${index + 1}`}\n id={`${id}_${index + 1}`}\n label={item.displayLabel ?? item.value}\n selected={selectedValues?.includes(item.value)}\n />\n )}\n {!item.customContent && (customizationProps.itemsType == 'normal' || !customizationProps.itemsType) && (\n <MenuItem\n key={`key_${id}_${index + 1}`}\n id={`${id}_${index + 1}`}\n item={item}\n tabIndex={-1}\n className={`${index + 1 === focused ? 'dropdown-hover' : ''}`}\n size={size}\n active={selectedValues?.includes(item.value)}\n ref={elRefs[index + 1] as React.RefObject<HTMLButtonElement>}\n onClickHandler={(e: any) => {\n e.stopPropagation();\n customizationProps.onValueUpdate([item.value]);\n setSelectedValues([item.value]);\n setIsOpen(false);\n setFocused(null);\n }}/>\n )}\n </React.Fragment>\n );\n })}\n </ItemsContainer>\n );\n };\n\n const cls = `${isOpen ? 'show' : ''} ${isOpen && outline ? 'outline' : ''} ${locationDefined ? isUp ? 'up' : 'down' : ''}`\n\n return (\n <DDContainer\n ref={dropdownContentRef}\n size={size}\n width={width}\n tabIndex={-1}\n isButton={isButton}\n alignLeft={alignLeft}\n scrollable={customizationProps.scrollable}\n maxHeight={customizationProps.maxHeight}\n className={cls}>\n <ListContainer size={size}\n itemsType={customizationProps.itemsType}\n onScroll={handleScroll}\n ref={itemsListRef}\n outline={outline}\n scrollable={customizationProps.scrollable}>\n {customizationProps.menuContent &&\n <MenuContentContainer size={size}>\n {customizationProps.menuContent}\n <DividerContainer size={size}>\n <div className=\"divider\"/>\n </DividerContainer>\n </MenuContentContainer>}\n {customizationProps.pinTopItem && getTopItem()}\n {getElements(messageOnNoResults, size)}\n </ListContainer>\n {customizationProps.action && customizationProps.actionLabel && (\n <ActionButtonContainer size={size} scrollable={customizationProps.scrollable}>\n <Button width=\"100%\"\n icon={customizationProps.actionIcon}\n ref={actionButtonRef}\n loading={customizationProps.actionLoading}\n disabled={customizationProps.actionDisabled}\n variant={customizationProps.actionVariant ?? 'primary'}\n size={size}\n onClick={() => customizationProps.action() && setIsOpen(false)}>\n {customizationProps.actionLabel}\n </Button>\n </ActionButtonContainer>\n )}\n </DDContainer>\n );\n});\n\nexport default DropdownContent;\n\n"],"file":"DropdownContent.cjs"}
1
+ {"version":3,"sources":["../../src/Dropdown/DropdownContent.tsx"],"names":["MAX_MENU_HEIGHT","AVG_OPTION_HEIGHT","OFFSET_BEFORE_SHOW","DDContainer","styled","div","COLORS","white","Z_INDEXES","dropdown","props","isButton","offsetLeft","offsetTop","ButtonDropdownContentStyling","neutral_100","size","Size","Large","Medium","scrollable","maxHeight","ItemsContainer","hover","active","focus","ListContainer","itemsType","Small","MenuContentContainer","ComponentTextStyle","Bold","neutral_500","Regular","DividerContainer","TopItemContainer","neutral_200","ActionButtonContainer","Overlay","modal","DropdownContent","React","forwardRef","ref","id","customizationProps","alignLeft","isOpen","width","setIsOpen","filter","focused","setFocused","selectedValues","setSelectedValues","messageOnNoResults","outline","containerRef","useState","isUp","setIsUp","locationDefined","setLocationDefined","top","left","offset","setOffset","dropdownContentRef","useRef","itemsListRef","actionButtonRef","determineDropUp","options","items","rect","current","getBoundingClientRect","windowHeight","window","innerHeight","menuHeight","Math","min","length","instOffsetWithMenu","height","up","setNewFocusedElement","index","newFocusedElement","elRefs","oldFocusedElement","classList","remove","add","scrollIntoView","block","inline","getFilteredItems","filtrationString","toUpperCase","x","value","includes","displayLabel","findNextActiveIndex","direction","i","disabled","handleKeyDown","e","key","preventDefault","focusedNow","arrLength","haveTopItem","target","focusedElement","click","useEffect","document","addEventListener","removeEventListener","scrollPosition","handleScroll","scrollTop","useLayoutEffect","getCorrectRef","createRef","setElRefs","Array","fill","map","_","pinTopItem","multiSelect","getSuggestions","suggestion","elRef","blur","calculateOffset","handleItemClick","selected","item","newValue","onValueUpdate","getTopItem","visibleItems","allSelected","some","y","showTopItem","suggestions","find","c","undefined","selectedFirst","newValues","stopPropagation","getElements","customContent","style","cls","menuContent","action","actionLabel","actionIcon","actionLoading","actionDisabled","actionVariant","noteLabel","showDividerAbove","locked","icon"],"mappings":"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","sourcesContent":["import React, {MutableRefObject} from 'react';\nimport styled, {css} from 'styled-components';\nimport Button from '../Button/Button';\nimport {Size} from '../types';\nimport {ButtonDropdownContentStyling} from './CommonStyling';\nimport {\n ComponentLStyling,\n ComponentXLStyling,\n ComponentMStyling,\n ComponentSStyling,\n ComponentTextStyle\n} from '../styles/typography';\nimport {COLORS, focusStyles, scrollBarStyling} from '../styles';\nimport {Checkbox, RadioButton} from '../InputFields';\nimport {Z_INDEXES} from '../styles/z-indexes';\nimport MenuItem from '../MenuItem/MenuItem';\nimport {defaultOnMouseDownHandler} from '../common';\nimport ReactDOM from 'react-dom';\n\nconst MAX_MENU_HEIGHT = 240;\nconst AVG_OPTION_HEIGHT = 48;\nconst OFFSET_BEFORE_SHOW = 1000000;\n\nexport const DDContainer = styled.div<{ offsetTop: string, offsetLeft: string; isButton: boolean; alignLeft?: boolean; size?: Size; scrollable?: boolean; maxHeight?: string }>`\n display: none;\n pointer-events: auto;\n position: absolute;\n background-color: ${COLORS.white};\n\n z-index: ${Z_INDEXES.dropdown};\n margin: ${(props) => (props.isButton ? '-4px' : '4px 0px')};\n\n &.show {\n display: flex;\n flex-direction: column;\n justify-content: center;\n &.down,\n &.up {\n ${props => `transform: translate(${props.offsetLeft}, ${props.offsetTop});`}\n }\n }\n\n transform: translate(-${OFFSET_BEFORE_SHOW}px, -${OFFSET_BEFORE_SHOW}px);\n\n &.outline:focus:after {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n outline: 4px solid black;\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n &:focus {\n outline: none;\n }\n\n ${(props) => (props.isButton ? ButtonDropdownContentStyling : '')};\n\n border: 1px solid ${COLORS.neutral_100};\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\n padding: 4px 0px;\n\n min-width: ${(props) => (props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px')};\n border-radius: ${(props) => (props.size == Size.Large ? '10px' : props.size == Size.Medium ? '8px' : '6px')};\n\n max-height: ${(props) => (!props.scrollable ? 'auto' : props.maxHeight ? props.maxHeight : props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px')};\n\n`;\n\nconst ItemsContainer = styled.div<{ size?: Size }>`\n > *:hover {\n z-index: ${Z_INDEXES.hover};\n }\n\n > *:active,\n > *.active {\n z-index: ${Z_INDEXES.active};\n }\n\n > *:focus {\n z-index: ${Z_INDEXES.focus};\n }\n`;\n\nconst ListContainer = styled.div<{ scrollable?: boolean; size?: Size; itemsType?: string; outline?: boolean }>`\n ${(props) => (props.scrollable ? 'overflow-y: scroll;' : '')}\n ${(props) => (props.scrollable ? 'margin-right: 6px;' : '')}\n ${(props) => (props.scrollable ? 'padding-right: 6px;' : '')}\n ${(props) => (props.itemsType != 'normal' ? 'margin-left: 4px;' : '')}\n div.divider {\n display: block;\n width: calc(100% - 40px);\n margin-left: 16px;\n border-top: 1px solid #e5e5e5;\n position: absolute;\n top: 0px;\n }\n\n ${ItemsContainer} {\n padding-top: ${props => props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px'};\n padding-bottom: ${props => props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px'};\n\n word-break: break-word;\n }\n\n *:focus {\n outline: none !important;\n }\n\n ${scrollBarStyling(Size.Small)}\n`;\n\n\nconst MenuContentContainer = styled.div<{ size?: Size }>`\n h1, h2, h3 {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ${props => props.size == Size.Large && ComponentXLStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}\n ${props => props.size == Size.Medium && ComponentLStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}\n ${props => (props.size == Size.Small || !props.size) && ComponentMStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}\n padding: ${props => props.size == Size.Small || !props.size ? '10px 16px 6px' :\n props.size == Size.Medium ? '16px 24px 8px' : '16px 32px 8px'};\n }\n\n p {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ${props => props.size == Size.Large && ComponentLStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}\n ${props => props.size == Size.Medium && ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}\n ${props => (props.size == Size.Small || !props.size) && ComponentSStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}\n padding: ${props => props.size == Size.Small || !props.size ? '8px 16px' :\n props.size == Size.Medium ? '12px 24px' : '16px 32px'};\n }\n`;\n\nconst DividerContainer = styled.div<{ size?: Size }>`\n position: relative;\n\n margin-top: ${props => props.size == Size.Large ? '16px' :\n props.size == Size.Medium ? '12px' :\n (props.size == Size.Small || !props.size) ? '8px' : '6px'};\n\n div.divider {\n width: 100%;\n margin: 0px;\n }\n`;\n\nconst TopItemContainer = styled.div<{ size?: Size }>`\n border-bottom-style: solid;\n border-bottom-color: ${COLORS.neutral_200};\n border-bottom-width: 1px;\n margin-right: 22px;\n`;\n\nconst ActionButtonContainer = styled.div<{ size?: Size, scrollable?: boolean }>`\n ${(props) => (props.scrollable ? `border-top: 1px solid ${COLORS.neutral_200};` : '')}\n ${(props) => (props.scrollable ? 'margin-top: 4px;' : '')}\n\n padding: ${(props) => props.size === Size.Small || !props.size\n ? '4px 16px 0px'\n : props.size === Size.Medium\n ? '12px 16px 8px'\n : '16px 16px 12px'};\n\n button {\n width: 100%;\n }\n`;\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: ${Z_INDEXES.modal};\n`;\n\nexport interface DropdownItem {\n value: string;\n displayLabel?: string;\n noteLabel?: string;\n suggestion?: boolean;\n showDividerAbove?: boolean;\n disabled?: boolean;\n locked?: boolean;\n icon?: React.ReactNode;\n customContent?: React.ReactNode;\n}\n\nexport interface DropdownCustomizationProps {\n itemsType?: 'radio' | 'checkbox' | 'normal';\n menuContent?: React.ReactNode;\n scrollable?: boolean;\n multiSelect?: boolean;\n maxHeight?: string;\n actionLabel?: string;\n actionVariant?: 'primary' | 'secondary' | 'tertiary' | undefined;\n actionIcon?: React.ReactNode;\n actionLoading?: boolean;\n actionDisabled?: boolean;\n action: () => boolean | void | undefined;\n pinTopItem?: boolean;\n onValueUpdate: (values: string[]) => boolean | void | undefined;\n items: DropdownItem[];\n}\n\nexport interface DropdownProps {\n isButton: boolean;\n customizationProps: DropdownCustomizationProps;\n alignLeft?: boolean;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n size?: Size;\n id: string;\n filter: string;\n width?: string;\n selectedValues: string[];\n setSelectedValues: (val: string[]) => void;\n messageOnNoResults: string;\n focused: number | null;\n setFocused: (focused: number | null) => void;\n outline?: boolean;\n containerRef: React.RefObject<HTMLDivElement>;\n}\n\nconst DropdownContent = React.forwardRef<HTMLDivElement, DropdownProps>(({\n id,\n customizationProps,\n alignLeft,\n isButton,\n size,\n isOpen,\n width,\n setIsOpen,\n filter,\n focused,\n setFocused,\n selectedValues,\n setSelectedValues,\n messageOnNoResults,\n outline,\n containerRef\n }, ref) => {\n const [isUp, setIsUp] = React.useState<boolean>(false);\n const [locationDefined, setLocationDefined] = React.useState<boolean>(false);\n const [offset, setOffset] = React.useState<{ top: string; left: string }>({top: '0', left: '0'});\n\n const dropdownContentRef = ref as MutableRefObject<HTMLDivElement> ?? React.useRef<HTMLDivElement>(null);\n\n if (!customizationProps.itemsType) customizationProps.itemsType = 'normal';\n if (!size) size = Size.Small;\n\n const itemsListRef = React.useRef<HTMLDivElement>(null);\n const actionButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const determineDropUp = () => {\n const options = customizationProps.items;\n\n const rect = containerRef.current!.getBoundingClientRect();\n\n const windowHeight = window.innerHeight;\n const menuHeight = Math.min(MAX_MENU_HEIGHT, options.length * AVG_OPTION_HEIGHT);\n const instOffsetWithMenu = rect.top + rect.height + menuHeight;\n\n const up = instOffsetWithMenu >= windowHeight;\n\n setOffset({\n top: up ? `calc(-100% - ${rect.height}px ${isButton ? '' : '- 8px'})` : '0',\n left: alignLeft ? `calc(-${rect.width}px)`: `calc(-100%)`\n });\n\n setIsUp(up);\n setLocationDefined(true);\n };\n\n const setNewFocusedElement = (index: number) => {\n if (outline) dropdownContentRef.current?.focus();\n\n const newFocusedElement = elRefs[index];\n const oldFocusedElement = focused || focused === 0 ? elRefs[focused] : null;\n if (newFocusedElement && newFocusedElement !== oldFocusedElement) {\n setFocused(index);\n oldFocusedElement?.current?.classList.remove('dropdown-hover');\n\n newFocusedElement.current?.classList.add('dropdown-hover');\n newFocusedElement.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest'\n });\n }\n };\n\n const getFilteredItems = () => {\n const filtrationString = (filter ?? '').toUpperCase();\n return customizationProps.items.filter((x) => x?.value?.toUpperCase().includes(filtrationString) || x?.displayLabel?.toUpperCase().includes(filtrationString));\n };\n\n const findNextActiveIndex = (index: number, direction: number, items: DropdownItem[]) => {\n for (let i = index + direction; i > 0 && i <= items.length; i += direction) {\n if (!items[i - 1]?.disabled) {\n return i;\n }\n }\n\n return index;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (isOpen) {\n if (e.key === 'ArrowUp' || e.key === 'Up') {\n e.preventDefault();\n let focusedNow = focused || focused === 0 ? focused : arrLength + 1;\n if (!!focusedNow) {\n\n focusedNow =\n focusedNow === 1 && haveTopItem()\n ? 0\n : findNextActiveIndex(focusedNow, -1, getFilteredItems());\n\n setNewFocusedElement(focusedNow);\n }\n } else if (e.key === 'ArrowDown' || e.key === 'Down') {\n e.preventDefault();\n let focusedNow = focused;\n\n focusedNow =\n !!focusedNow || focusedNow === 0\n ? findNextActiveIndex(focusedNow, 1, getFilteredItems())\n : haveTopItem() ? 0 : 1;\n\n setNewFocusedElement(focusedNow);\n } else if (e.key === 'Escape' || e.key === 'Esc') {\n setIsOpen(false);\n setFocused(null);\n } else if ((e.key === 'Enter' || e.key === ' ') && focused !== null && e.target !== actionButtonRef?.current) {\n e.preventDefault();\n const focusedElement = elRefs[focused];\n if (focusedElement) {\n focusedElement.current?.click();\n }\n }\n }\n };\n\n React.useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n });\n\n const scrollPosition = React.useRef<number | undefined>(0);\n const handleScroll = () => {\n scrollPosition.current = itemsListRef.current?.scrollTop;\n };\n React.useLayoutEffect(() => {\n if (itemsListRef.current) itemsListRef.current.scrollTop = scrollPosition.current ?? 0;\n }, [selectedValues]);\n\n const getCorrectRef = (ref: React.RefObject<HTMLElement>): React.RefObject<HTMLElement> => {\n switch (customizationProps.itemsType) {\n case 'normal':\n return (ref as React.RefObject<HTMLButtonElement>) || React.createRef<HTMLButtonElement>();\n default:\n return (ref as React.RefObject<HTMLDivElement>) || React.createRef<HTMLDivElement>();\n }\n };\n\n const arrLength = getFilteredItems().length;\n const [elRefs, setElRefs] = React.useState<React.RefObject<HTMLElement>[]>([]);\n\n React.useEffect(() => {\n if (elRefs?.length !== arrLength) {\n setFocused(null);\n }\n\n setElRefs((elRefs) =>\n Array(arrLength + 1)\n .fill(null)\n .map((_, i) => getCorrectRef(elRefs[i])),\n );\n }, [isOpen, arrLength]);\n\n React.useLayoutEffect(() => {\n isOpen && !locationDefined && determineDropUp();\n }, [isOpen, locationDefined]);\n\n const haveTopItem = () => {\n if (!customizationProps.pinTopItem) return false;\n\n if (customizationProps.itemsType === 'radio' && selectedValues && selectedValues?.length > 0) return true;\n else if (customizationProps.itemsType === 'checkbox' && (customizationProps.multiSelect || selectedValues?.length > 0)) return true;\n else if (customizationProps.itemsType === 'normal' && getSuggestions()?.length > 0) return true;\n return false;\n };\n\n const getSuggestions = () => {\n return getFilteredItems().filter((x) => x.suggestion);\n };\n\n /**\n * when dropdown opens set correct position of focused item\n * */\n React.useLayoutEffect(() => {\n if (isOpen && (focused || focused === 0)) {\n setNewFocusedElement(focused === 0 && !haveTopItem() ? 1 : focused);\n }\n }, [isOpen, focused]);\n\n /**\n * Reset dropdown content state on close\n * */\n React.useEffect(() => {\n if (!isOpen) {\n setLocationDefined(false);\n for (let elRef of elRefs) {\n elRef.current?.classList.remove('dropdown-hover');\n\n }\n setFocused(null);\n dropdownContentRef.current?.classList.remove('outline');\n dropdownContentRef.current?.blur();\n } else {\n if (outline) {\n dropdownContentRef.current?.classList.add('outline');\n dropdownContentRef.current?.focus();\n }\n }\n }, [isOpen, dropdownContentRef, focused, outline]);\n\n /**\n * Scroll item container to top when dropdown opens\n * */\n React.useEffect(() => {\n if (isOpen && itemsListRef.current) {\n itemsListRef.current.scrollTop = 0;\n }\n }, [isOpen]);\n\n React.useEffect(() => {\n if (isOpen){\n calculateOffset();\n window.addEventListener('scroll', calculateOffset);\n window.addEventListener('resize', calculateOffset);\n }\n return () => {\n window.removeEventListener('scroll', calculateOffset);\n window.addEventListener('resize', calculateOffset);\n }\n }, [isOpen])\n\n const handleItemClick = (selected: boolean, item: DropdownItem) => {\n let newValue: string[] = [];\n if (customizationProps.multiSelect) {\n if (selected) newValue = [...selectedValues, item.value];\n else newValue = selectedValues.filter((x) => x != item.value);\n } else newValue = selected ? [item.value] : [];\n\n setSelectedValues(newValue);\n if (customizationProps.onValueUpdate && customizationProps.onValueUpdate(newValue)) {\n setIsOpen(false);\n }\n };\n\n const getTopItem = () => {\n if (!customizationProps.pinTopItem) return;\n const visibleItems = getFilteredItems();\n const allSelected = selectedValues?.filter((x) => visibleItems.some((y) => y.value == x)).length == visibleItems.length;\n let showTopItem = false;\n const suggestions = getSuggestions();\n const displayLabel = selectedValues[0] ? customizationProps.items?.find((c) => c.value === selectedValues[0])?.displayLabel : undefined;\n if (customizationProps.itemsType == 'radio' && selectedValues && selectedValues?.length > 0) showTopItem = true;\n else if (customizationProps.itemsType == 'checkbox' && (customizationProps.multiSelect || selectedValues?.length > 0)) showTopItem = true;\n else if (customizationProps.itemsType == 'normal' && suggestions.length > 0) showTopItem = true;\n\n if (!showTopItem) return;\n\n const selectedFirst = selectedValues.length > 0 ? visibleItems.find(x => x.value == selectedValues[0]) : null;\n\n return (\n <TopItemContainer size={size}>\n {customizationProps.itemsType === 'radio' && (\n <RadioButton\n ref={elRefs[0] as React.RefObject<HTMLDivElement>}\n iconPointerEventsTransparent={true}\n tabIndexVal={-1}\n className={`${focused === 0 ? 'dropdown-hover' : ''}`}\n select={() => {\n }}\n label={selectedFirst?.displayLabel ?? selectedFirst?.value}\n size={size}\n id={`${id}_topitem`}\n selected={true}\n />\n )}\n {customizationProps.itemsType === 'checkbox' && (\n <Checkbox\n ref={elRefs[0] as React.RefObject<HTMLDivElement>}\n tabIndexVal={-1}\n className={`${focused === 0 ? 'dropdown-hover' : ''}`}\n select={(selected: boolean) => {\n if (!customizationProps.multiSelect) return;\n\n const newValues = selected ? visibleItems.map((x) => x.value) : [];\n setSelectedValues(newValues);\n if (customizationProps.onValueUpdate && customizationProps.onValueUpdate(newValues))\n setIsOpen(false);\n }}\n iconPointerEventsTransparent={true}\n semiSelected={customizationProps.multiSelect && !allSelected && selectedValues?.length > 0}\n size={size}\n id={`${id}_checkbox_selectall`}\n label={customizationProps.multiSelect ? 'Select all' : (selectedFirst?.displayLabel ?? selectedFirst?.value)}\n selected={!customizationProps.multiSelect || allSelected}\n />\n )}\n {customizationProps.itemsType === 'normal' && (\n <>\n {suggestions.map((x) => (\n <MenuItem\n key={`${id}_topitem_${x.value}`}\n item={x}\n size={size}\n active={false}\n tabIndex={-1}\n className={`${focused === 0 ? 'dropdown-hover' : ''}`}\n ref={elRefs[0] as React.RefObject<HTMLButtonElement>}\n id={`${id}_topitem`}\n onClickHandler={(e: any) => {\n e.stopPropagation();\n customizationProps.onValueUpdate([x.value]);\n setSelectedValues([x.value]);\n setIsOpen(false);\n setFocused(null);\n }}/>\n ))}\n </>\n )}\n </TopItemContainer>\n );\n };\n\n const getElements = (messageOnNoResults: string, size: Size) => {\n if (getFilteredItems().length === 0) {\n return (\n <MenuItem item={{value:messageOnNoResults, disabled: true}} size={size} id='noResultsFound' active={false} onClickHandler={e => {}}/>\n );\n }\n return (\n <ItemsContainer size={size}>\n {getFilteredItems()\n .filter((x) => x && (customizationProps.itemsType != 'normal' || !x.suggestion))\n .map((item, index) => {\n return (\n <React.Fragment key={`key_${id}_${item.value}`}>\n {item.customContent}\n {!item.customContent && customizationProps.itemsType == 'radio' && (\n <RadioButton\n select={(selected: boolean) => handleItemClick(selected, item)}\n ref={elRefs[index + 1] as React.RefObject<HTMLDivElement>}\n size={size}\n tabIndexVal={-1}\n className={`${index + 1 === focused ? 'dropdown-hover' : ''}`}\n iconPointerEventsTransparent={true}\n disabled={item?.disabled}\n key={`key_${id}_${index + 1}`}\n id={`${id}_${index + 1}`}\n label={item.displayLabel ?? item.value}\n selected={selectedValues?.includes(item.value)}\n />\n )}\n {!item.customContent && customizationProps.itemsType == 'checkbox' && (\n <Checkbox\n select={(selected: boolean) => handleItemClick(selected, item)}\n iconPointerEventsTransparent={true}\n disabled={item?.disabled}\n className={`${index + 1 === focused ? 'dropdown-hover' : ''}`}\n ref={elRefs[index + 1] as React.RefObject<HTMLDivElement>}\n size={size}\n tabIndexVal={-1}\n key={`key_${id}_${index + 1}`}\n id={`${id}_${index + 1}`}\n label={item.displayLabel ?? item.value}\n selected={selectedValues?.includes(item.value)}\n />\n )}\n {!item.customContent && (customizationProps.itemsType == 'normal' || !customizationProps.itemsType) && (\n <MenuItem\n key={`key_${id}_${index + 1}`}\n id={`${id}_${index + 1}`}\n item={item}\n tabIndex={-1}\n className={`${index + 1 === focused ? 'dropdown-hover' : ''}`}\n size={size}\n active={selectedValues?.includes(item.value)}\n ref={elRefs[index + 1] as React.RefObject<HTMLButtonElement>}\n onClickHandler={(e: any) => {\n e.stopPropagation();\n customizationProps.onValueUpdate([item.value]);\n setSelectedValues([item.value]);\n setIsOpen(false);\n setFocused(null);\n }}/>\n )}\n </React.Fragment>\n );\n })}\n </ItemsContainer>\n );\n };\n\n const calculateOffset = () => {\n const rect = containerRef?.current?.getBoundingClientRect();\n if (rect){\n dropdownContentRef.current.style.left = `${rect.x + rect.width}px`;\n dropdownContentRef.current.style.top = `${rect.y + rect.height}px`;\n dropdownContentRef.current.style.width = width ?? `${rect.width}px`;\n }\n }\n\n const cls = `${isOpen ? 'show' : ''} ${isOpen && outline ? 'outline' : ''} ${locationDefined ? isUp ? 'up' : 'down' : ''}`\n\n return (\n <Overlay>\n <DDContainer\n ref={dropdownContentRef}\n size={size}\n offsetTop={offset.top}\n offsetLeft={offset.left}\n tabIndex={-1}\n isButton={isButton}\n alignLeft={alignLeft}\n scrollable={customizationProps.scrollable}\n maxHeight={customizationProps.maxHeight}\n className={cls}>\n <ListContainer size={size}\n itemsType={customizationProps.itemsType}\n onScroll={handleScroll}\n ref={itemsListRef}\n outline={outline}\n scrollable={customizationProps.scrollable}>\n {customizationProps.menuContent &&\n <MenuContentContainer size={size}>\n {customizationProps.menuContent}\n <DividerContainer size={size}>\n <div className=\"divider\"/>\n </DividerContainer>\n </MenuContentContainer>}\n {customizationProps.pinTopItem && getTopItem()}\n {getElements(messageOnNoResults, size)}\n </ListContainer>\n {customizationProps.action && customizationProps.actionLabel && (\n <ActionButtonContainer size={size} scrollable={customizationProps.scrollable}>\n <Button width=\"100%\"\n icon={customizationProps.actionIcon}\n ref={actionButtonRef}\n loading={customizationProps.actionLoading}\n disabled={customizationProps.actionDisabled}\n variant={customizationProps.actionVariant ?? 'primary'}\n size={size}\n onClick={() => customizationProps.action() && setIsOpen(false)}>\n {customizationProps.actionLabel}\n </Button>\n </ActionButtonContainer>\n )}\n </DDContainer>\n </Overlay>);\n});\n\nexport default DropdownContent;\n\n"],"file":"DropdownContent.cjs"}
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
2
  import { Size } from '../types';
3
3
  export declare const DDContainer: import("styled-components").StyledComponent<"div", any, {
4
+ offsetTop: string;
5
+ offsetLeft: string;
4
6
  isButton: boolean;
5
- width?: string | undefined;
6
7
  alignLeft?: boolean | undefined;
7
8
  size?: Size | undefined;
8
9
  scrollable?: boolean | undefined;
@@ -51,6 +52,7 @@ export interface DropdownProps {
51
52
  focused: number | null;
52
53
  setFocused: (focused: number | null) => void;
53
54
  outline?: boolean;
55
+ containerRef: React.RefObject<HTMLDivElement>;
54
56
  }
55
57
  declare const DropdownContent: React.ForwardRefExoticComponent<DropdownProps & React.RefAttributes<HTMLDivElement>>;
56
58
  export default DropdownContent;