@laerdal/life-react-components 3.5.0 → 3.5.1-uss.hackathon
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.
- package/dist/AuthPage/AuthPage.d.ts +2 -2
- package/dist/Banners/OverviewBanner.d.ts +1 -1
- package/dist/Dropdown/BasicDropdown.cjs +4 -6
- package/dist/Dropdown/BasicDropdown.cjs.map +1 -1
- package/dist/Dropdown/BasicDropdown.d.ts +0 -1
- package/dist/Dropdown/BasicDropdown.js +4 -6
- package/dist/Dropdown/BasicDropdown.js.map +1 -1
- package/dist/Dropdown/CommonStyling.cjs +2 -2
- package/dist/Dropdown/CommonStyling.cjs.map +1 -1
- package/dist/Dropdown/CommonStyling.js +2 -2
- package/dist/Dropdown/CommonStyling.js.map +1 -1
- package/dist/Dropdown/DropdownFilter.cjs +2 -4
- package/dist/Dropdown/DropdownFilter.cjs.map +1 -1
- package/dist/Dropdown/DropdownFilter.d.ts +0 -1
- package/dist/Dropdown/DropdownFilter.js +2 -4
- package/dist/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/Footer/Components/FooterBottomLinks.d.ts +2 -2
- package/dist/Footer/Components/FooterDropdownLinks.d.ts +2 -2
- package/dist/Footer/Components/FooterNavSection.d.ts +2 -2
- package/dist/Footer/Components/FooterNewsletterAndSocialSection.d.ts +2 -2
- package/dist/Footer/Components/FooterTop.d.ts +2 -2
- package/dist/Footer/Footer.d.ts +2 -2
- package/dist/Footer/SiteFooter.d.ts +1 -1
- package/dist/GlobalNavigationBar/GlobalNavigationBar.cjs +3 -1
- package/dist/GlobalNavigationBar/GlobalNavigationBar.cjs.map +1 -1
- package/dist/GlobalNavigationBar/GlobalNavigationBar.d.ts +2 -0
- package/dist/GlobalNavigationBar/GlobalNavigationBar.js +3 -1
- package/dist/GlobalNavigationBar/GlobalNavigationBar.js.map +1 -1
- package/dist/GlobalNavigationBar/business/SearchService.cjs +2 -0
- package/dist/GlobalNavigationBar/business/SearchService.cjs.map +1 -0
- package/dist/GlobalNavigationBar/business/SearchService.d.ts +0 -0
- package/dist/GlobalNavigationBar/business/SearchService.js +2 -0
- package/dist/GlobalNavigationBar/business/SearchService.js.map +1 -0
- package/dist/GlobalNavigationBar/desktop/DesktopActions.cjs +12 -3
- package/dist/GlobalNavigationBar/desktop/DesktopActions.cjs.map +1 -1
- package/dist/GlobalNavigationBar/desktop/DesktopActions.d.ts +2 -1
- package/dist/GlobalNavigationBar/desktop/DesktopActions.js +10 -2
- package/dist/GlobalNavigationBar/desktop/DesktopActions.js.map +1 -1
- package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.d.ts +2 -2
- package/dist/GlobalNavigationBar/desktop/MainMenu.cjs +2 -0
- package/dist/GlobalNavigationBar/desktop/MainMenu.cjs.map +1 -1
- package/dist/GlobalNavigationBar/desktop/MainMenu.js +2 -0
- package/dist/GlobalNavigationBar/desktop/MainMenu.js.map +1 -1
- package/dist/GlobalNavigationBar/desktop/UnifedSearchComponent.cjs +100 -0
- package/dist/GlobalNavigationBar/desktop/UnifedSearchComponent.cjs.map +1 -0
- package/dist/GlobalNavigationBar/desktop/UnifedSearchComponent.d.ts +8 -0
- package/dist/GlobalNavigationBar/desktop/UnifedSearchComponent.js +89 -0
- package/dist/GlobalNavigationBar/desktop/UnifedSearchComponent.js.map +1 -0
- package/dist/GlobalNavigationBar/desktop/UnifedSearchServiceApi.cjs +38 -0
- package/dist/GlobalNavigationBar/desktop/UnifedSearchServiceApi.cjs.map +1 -0
- package/dist/GlobalNavigationBar/desktop/UnifedSearchServiceApi.d.ts +21 -0
- package/dist/GlobalNavigationBar/desktop/UnifedSearchServiceApi.js +30 -0
- package/dist/GlobalNavigationBar/desktop/UnifedSearchServiceApi.js.map +1 -0
- package/dist/GlobalNavigationBar/desktop/UserMenu.d.ts +2 -2
- package/dist/GlobalNavigationBar/index.cjs +9 -1
- package/dist/GlobalNavigationBar/index.cjs.map +1 -1
- package/dist/GlobalNavigationBar/index.d.ts +1 -0
- package/dist/GlobalNavigationBar/index.js +1 -0
- package/dist/GlobalNavigationBar/index.js.map +1 -1
- package/dist/GlobalNavigationBar/mobile/MobileMenu.d.ts +2 -2
- package/dist/GlobalNavigationBar/types.cjs.map +1 -1
- package/dist/GlobalNavigationBar/types.d.ts +7 -2
- package/dist/GlobalNavigationBar/types.js.map +1 -1
- package/dist/Image/ImageWithFallbacks.d.ts +1 -1
- package/dist/InputFields/DatepickerField.cjs +3 -5
- package/dist/InputFields/DatepickerField.cjs.map +1 -1
- package/dist/InputFields/DatepickerField.d.ts +0 -2
- package/dist/InputFields/DatepickerField.js +3 -5
- package/dist/InputFields/DatepickerField.js.map +1 -1
- package/dist/InputFields/DatepickerFieldHeader.d.ts +5 -2
- package/dist/InputFields/NumberField.cjs +5 -7
- package/dist/InputFields/NumberField.cjs.map +1 -1
- package/dist/InputFields/NumberField.d.ts +0 -2
- package/dist/InputFields/NumberField.js +5 -7
- package/dist/InputFields/NumberField.js.map +1 -1
- package/dist/InputFields/PasswordField.d.ts +1 -1
- package/dist/InputFields/SearchBar.cjs +4 -1
- package/dist/InputFields/SearchBar.cjs.map +1 -1
- package/dist/InputFields/SearchBar.d.ts +1 -0
- package/dist/InputFields/SearchBar.js +4 -1
- package/dist/InputFields/SearchBar.js.map +1 -1
- package/dist/InputFields/TextField.cjs +2 -4
- package/dist/InputFields/TextField.cjs.map +1 -1
- package/dist/InputFields/TextField.d.ts +0 -2
- package/dist/InputFields/TextField.js +2 -4
- package/dist/InputFields/TextField.js.map +1 -1
- package/dist/InputFields/styling.cjs +2 -2
- package/dist/InputFields/styling.cjs.map +1 -1
- package/dist/InputFields/styling.js +2 -2
- package/dist/InputFields/styling.js.map +1 -1
- package/dist/LoadingIndicator/LoadingIndicator.d.ts +2 -2
- package/dist/MiniProductCard/MiniProductCard.d.ts +2 -2
- package/dist/Modals/Modal.d.ts +4 -4
- package/dist/Modals/ModalContainer.d.ts +1 -1
- package/dist/Modals/ModalDialog.cjs +6 -8
- package/dist/Modals/ModalDialog.cjs.map +1 -1
- package/dist/Modals/ModalDialog.js +6 -8
- package/dist/Modals/ModalDialog.js.map +1 -1
- package/dist/Modals/ModalTypes.cjs.map +1 -1
- package/dist/Modals/ModalTypes.d.ts +2 -3
- package/dist/Modals/ModalTypes.js.map +1 -1
- package/dist/NavItem/NavItem.d.ts +1 -1
- package/dist/Paginator/Paginator.d.ts +2 -2
- package/dist/Panel/Panel.cjs.map +1 -1
- package/dist/Panel/Panel.d.ts +2 -2
- package/dist/Panel/Panel.js.map +1 -1
- package/dist/SegmentControl/SegmentControl.cjs.map +1 -1
- package/dist/SegmentControl/SegmentControl.d.ts +1 -1
- package/dist/SegmentControl/SegmentControl.js.map +1 -1
- package/dist/SideMenu/SideMenuBody.d.ts +2 -2
- package/dist/SideMenu/SideMenuFooter.d.ts +2 -2
- package/dist/SideMenu/SideMenuHeader.d.ts +2 -2
- package/dist/Switcher/MobileSwitcherMenu.d.ts +1 -1
- package/dist/Switcher/SwitcherMenuItem.d.ts +2 -2
- package/dist/Tabs/HorizontalTabs.d.ts +1 -1
- package/dist/Tabs/VerticalTabs.d.ts +1 -1
- package/dist/Tile/TileCommonItems.d.ts +2 -2
- package/dist/Toasters/Toast.d.ts +1 -1
- package/dist/Tooltips/TooltipOverflow.cjs +7 -2
- package/dist/Tooltips/TooltipOverflow.cjs.map +1 -1
- package/dist/Tooltips/TooltipOverflow.d.ts +1 -1
- package/dist/Tooltips/TooltipOverflow.js +7 -2
- package/dist/Tooltips/TooltipOverflow.js.map +1 -1
- package/dist/Tooltips/TooltipStyles.cjs +5 -5
- package/dist/Tooltips/TooltipStyles.cjs.map +1 -1
- package/dist/Tooltips/TooltipStyles.d.ts +1 -2
- package/dist/Tooltips/TooltipStyles.js +5 -5
- package/dist/Tooltips/TooltipStyles.js.map +1 -1
- package/dist/Tooltips/TooltipWrapper.cjs +1 -2
- package/dist/Tooltips/TooltipWrapper.cjs.map +1 -1
- package/dist/Tooltips/TooltipWrapper.d.ts +2 -2
- package/dist/Tooltips/TooltipWrapper.js +1 -2
- package/dist/Tooltips/TooltipWrapper.js.map +1 -1
- package/dist/icons/index.cjs +1 -1
- package/dist/icons/index.cjs.map +1 -1
- package/dist/icons/index.js +1 -1
- package/dist/icons/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.default = void 0;
|
|
7
|
+
exports.default = exports.DesktopActionsCustomComponentWrapper = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
10
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
@@ -20,11 +20,13 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
20
20
|
var _excluded = ["placement", "type", "action"],
|
|
21
21
|
_excluded2 = ["placement", "type", "icon", "action"],
|
|
22
22
|
_excluded3 = ["placement", "type", "action"];
|
|
23
|
-
var _templateObject, _templateObject2;
|
|
23
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
24
24
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
25
25
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
26
26
|
var Wrapper = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n align-items: center;\n\n display: none;\n\n ", " {\n display: flex;\n }\n"])), _styles.BREAKPOINTS.MEDIUM);
|
|
27
|
-
var
|
|
27
|
+
var DesktopActionsCustomComponentWrapper = _styledComponents.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)([""])));
|
|
28
|
+
exports.DesktopActionsCustomComponentWrapper = DesktopActionsCustomComponentWrapper;
|
|
29
|
+
var ProfileWrapper = _styledComponents.default.div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n margin: 0 8px;\n"])));
|
|
28
30
|
var DesktopActions = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
29
31
|
var buttons = _ref.buttons,
|
|
30
32
|
user = _ref.user,
|
|
@@ -114,6 +116,13 @@ var DesktopActions = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
|
114
116
|
})
|
|
115
117
|
}), index);
|
|
116
118
|
}
|
|
119
|
+
case 'custom':
|
|
120
|
+
{
|
|
121
|
+
var content = item.content;
|
|
122
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(DesktopActionsCustomComponentWrapper, {
|
|
123
|
+
children: content()
|
|
124
|
+
});
|
|
125
|
+
}
|
|
117
126
|
}
|
|
118
127
|
};
|
|
119
128
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapper, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesktopActions.cjs","names":["Wrapper","styled","div","BREAKPOINTS","MEDIUM","ProfileWrapper","DesktopActions","React","forwardRef","ref","buttons","user","profileComponent","onShowUserMenu","useState","elRefs","setElRefs","length","useEffect","Array","fill","map","createRef","useImperativeHandle","r","index","type","renderItem","item","placement","action","rest","e","target","firstName","charAt","lastName","icon"],"sources":["../../../src/GlobalNavigationBar/desktop/DesktopActions.tsx"],"sourcesContent":["import React from 'react';\r\nimport styled from 'styled-components';\r\nimport {MenuAccountInfo, MobileMenuButtonTypes, DesktopMenuButtonTypes} from '../types';\r\nimport {IconButton} from '../../Button';\r\nimport {ProfileButton} from '../../ProfileButton';\r\nimport {SystemIcons} from '../../icons';\r\nimport {BREAKPOINTS} from '../../styles';\r\n\r\nconst Wrapper = styled.div`\r\n align-items: center;\r\n\r\n display: none;\r\n\r\n ${BREAKPOINTS.MEDIUM} {\r\n display: flex;\r\n }\r\n`;\r\n\r\nconst ProfileWrapper = styled.div`\r\n margin: 0 8px;\r\n`;\r\n\r\n\r\ninterface DesktopActionsProps {\r\n buttons?: DesktopMenuButtonTypes[];\r\n user?: MenuAccountInfo;\r\n profileComponent?: React.ReactNode\r\n onShowUserMenu: () => void;\r\n}\r\n\r\nexport interface DesktopActionsRef {\r\n buttons?: { ref: React.MutableRefObject<HTMLButtonElement | null>, type: 'profile' | 'action' | 'switcher' | undefined }[]\r\n}\r\n\r\nconst DesktopActions = React.forwardRef(({\r\n buttons,\r\n user,\r\n profileComponent,\r\n onShowUserMenu\r\n }: DesktopActionsProps, ref: React.Ref<DesktopActionsRef>) => {\r\n\r\n const [elRefs, setElRefs] = React.useState<React.RefObject<HTMLButtonElement>[]>([]);\r\n\r\n const length = buttons?.length || 0;\r\n\r\n React.useEffect(() => {\r\n setElRefs(Array(length || 0).fill(null).map(() => React.createRef<HTMLButtonElement>()));\r\n }, [length]);\r\n\r\n React.useImperativeHandle(ref, () => ({\r\n buttons: elRefs.map((r, index) => ({\r\n ref: r,\r\n type: buttons?.[index]?.type,\r\n }))\r\n }), [elRefs, buttons]);\r\n\r\n const renderItem = (item: MobileMenuButtonTypes, index: number) => {\r\n switch (item.type) {\r\n case 'profile': {\r\n const {placement, type, action, ...rest} = item;\r\n if(!!profileComponent)\r\n return <ProfileWrapper>{profileComponent}</ProfileWrapper>;\r\n else\r\n return <ProfileWrapper>\r\n <ProfileButton key={index}\r\n ref={elRefs[index]}\r\n hideOnLowWidth={true}\r\n onClick={e => {\r\n item.action ? item.action(e?.target) : onShowUserMenu()\r\n }}\r\n icon={!user && <SystemIcons.User/>}\r\n initials={(user?.firstName?.charAt(0) ?? '') + (user?.lastName?.charAt(0) ?? '')}\r\n {...rest}/>\r\n </ProfileWrapper>\r\n }\r\n case 'action': {\r\n const {placement, type, icon, action, ...rest} = item;\r\n return <IconButton key={index}\r\n ref={elRefs[index]}\r\n variant={'secondary'}\r\n shape={'circular'}\r\n hideOnLowWidth={true}\r\n action={e => item.action && item.action(e?.target)}\r\n {...rest}>\r\n {item.icon}\r\n </IconButton>\r\n }\r\n case 'switcher': {\r\n const {placement, type, action, ...rest} = item;\r\n return <IconButton key={index}\r\n ref={elRefs[index]}\r\n variant={'secondary'}\r\n shape={'circular'}\r\n hideOnLowWidth={true}\r\n id=\"globalNavAppsButton\"\r\n action={e => item.action && item.action(e?.target)}\r\n {...rest}>\r\n <SystemIcons.SwitchApp size=\"24px\"/>\r\n </IconButton>\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <Wrapper role=\"toolbar\" aria-label=\"Toolbar\">\r\n {buttons?.map((item, index) => renderItem(item, index))}\r\n </Wrapper>\r\n )\r\n});\r\n\r\n\r\nexport default DesktopActions;\r\n"],"mappings":";;;;;;;;;;;;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAyC;AAAA;EAAA;EAAA;AAAA;AAAA;AAAA;
|
|
1
|
+
{"version":3,"file":"DesktopActions.cjs","names":["Wrapper","styled","div","BREAKPOINTS","MEDIUM","DesktopActionsCustomComponentWrapper","ProfileWrapper","DesktopActions","React","forwardRef","ref","buttons","user","profileComponent","onShowUserMenu","useState","elRefs","setElRefs","length","useEffect","Array","fill","map","createRef","useImperativeHandle","r","index","type","renderItem","item","placement","action","rest","e","target","firstName","charAt","lastName","icon","content"],"sources":["../../../src/GlobalNavigationBar/desktop/DesktopActions.tsx"],"sourcesContent":["import React from 'react';\r\nimport styled from 'styled-components';\r\nimport {MenuAccountInfo, MobileMenuButtonTypes, DesktopMenuButtonTypes} from '../types';\r\nimport {IconButton} from '../../Button';\r\nimport {ProfileButton} from '../../ProfileButton';\r\nimport {SystemIcons} from '../../icons';\r\nimport {BREAKPOINTS} from '../../styles';\r\nimport { SearchBar } from 'src/InputFields';\r\nimport { Size } from 'src/types';\r\n\r\nconst Wrapper = styled.div`\r\n align-items: center;\r\n\r\n display: none;\r\n\r\n ${BREAKPOINTS.MEDIUM} {\r\n display: flex;\r\n }\r\n`;\r\n\r\nexport const DesktopActionsCustomComponentWrapper = styled.div``;\r\n\r\nconst ProfileWrapper = styled.div`\r\n margin: 0 8px;\r\n`;\r\n\r\n\r\ninterface DesktopActionsProps {\r\n buttons?: DesktopMenuButtonTypes[];\r\n user?: MenuAccountInfo;\r\n profileComponent?: React.ReactNode\r\n onShowUserMenu: () => void;\r\n}\r\n\r\nexport interface DesktopActionsRef {\r\n buttons?: { ref: React.MutableRefObject<HTMLButtonElement | null>, type: 'profile' | 'action' | 'switcher' | 'custom' | undefined }[]\r\n}\r\n\r\nconst DesktopActions = React.forwardRef(({\r\n buttons,\r\n user,\r\n profileComponent,\r\n onShowUserMenu\r\n }: DesktopActionsProps, ref: React.Ref<DesktopActionsRef>) => {\r\n\r\n const [elRefs, setElRefs] = React.useState<React.RefObject<HTMLButtonElement>[]>([]);\r\n\r\n const length = buttons?.length || 0;\r\n\r\n React.useEffect(() => {\r\n setElRefs(Array(length || 0).fill(null).map(() => React.createRef<HTMLButtonElement>()));\r\n }, [length]);\r\n\r\n React.useImperativeHandle(ref, () => ({\r\n buttons: elRefs.map((r, index) => ({\r\n ref: r,\r\n type: buttons?.[index]?.type,\r\n }))\r\n }), [elRefs, buttons]);\r\n\r\n const renderItem = (item: MobileMenuButtonTypes, index: number) => {\r\n switch (item.type) {\r\n case 'profile': {\r\n const {placement, type, action, ...rest} = item;\r\n if(!!profileComponent)\r\n return <ProfileWrapper>{profileComponent}</ProfileWrapper>;\r\n else\r\n return <ProfileWrapper>\r\n <ProfileButton key={index}\r\n ref={elRefs[index]}\r\n hideOnLowWidth={true}\r\n onClick={e => {\r\n item.action ? item.action(e?.target) : onShowUserMenu()\r\n }}\r\n icon={!user && <SystemIcons.User/>}\r\n initials={(user?.firstName?.charAt(0) ?? '') + (user?.lastName?.charAt(0) ?? '')}\r\n {...rest}/>\r\n </ProfileWrapper>\r\n }\r\n case 'action': {\r\n const {placement, type, icon, action, ...rest} = item;\r\n return <IconButton key={index}\r\n ref={elRefs[index]}\r\n variant={'secondary'}\r\n shape={'circular'}\r\n hideOnLowWidth={true}\r\n action={e => item.action && item.action(e?.target)}\r\n {...rest}>\r\n {item.icon}\r\n </IconButton>\r\n }\r\n case 'switcher': {\r\n const {placement, type, action, ...rest} = item;\r\n return <IconButton key={index}\r\n ref={elRefs[index]}\r\n variant={'secondary'}\r\n shape={'circular'}\r\n hideOnLowWidth={true}\r\n id=\"globalNavAppsButton\"\r\n action={e => item.action && item.action(e?.target)}\r\n {...rest}>\r\n <SystemIcons.SwitchApp size=\"24px\"/>\r\n </IconButton>\r\n }\r\n\r\n case 'custom': {\r\n const { content } = item;\r\n return <DesktopActionsCustomComponentWrapper>{content()}</DesktopActionsCustomComponentWrapper>;\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <Wrapper role=\"toolbar\" aria-label=\"Toolbar\">\r\n {buttons?.map((item, index) => renderItem(item, index))}\r\n </Wrapper>\r\n )\r\n});\r\n\r\n\r\nexport default DesktopActions;\r\n"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { MenuAccountInfo, DesktopMenuButtonTypes } from '../types';
|
|
3
|
+
export declare const DesktopActionsCustomComponentWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
4
|
interface DesktopActionsProps {
|
|
4
5
|
buttons?: DesktopMenuButtonTypes[];
|
|
5
6
|
user?: MenuAccountInfo;
|
|
@@ -9,7 +10,7 @@ interface DesktopActionsProps {
|
|
|
9
10
|
export interface DesktopActionsRef {
|
|
10
11
|
buttons?: {
|
|
11
12
|
ref: React.MutableRefObject<HTMLButtonElement | null>;
|
|
12
|
-
type: 'profile' | 'action' | 'switcher' | undefined;
|
|
13
|
+
type: 'profile' | 'action' | 'switcher' | 'custom' | undefined;
|
|
13
14
|
}[];
|
|
14
15
|
}
|
|
15
16
|
declare const DesktopActions: React.ForwardRefExoticComponent<DesktopActionsProps & React.RefAttributes<DesktopActionsRef>>;
|
|
@@ -6,7 +6,7 @@ import _pt from "prop-types";
|
|
|
6
6
|
var _excluded = ["placement", "type", "action"],
|
|
7
7
|
_excluded2 = ["placement", "type", "icon", "action"],
|
|
8
8
|
_excluded3 = ["placement", "type", "action"];
|
|
9
|
-
var _templateObject, _templateObject2;
|
|
9
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
10
10
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
11
11
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
12
12
|
import React from 'react';
|
|
@@ -17,7 +17,8 @@ import { SystemIcons } from '../../icons';
|
|
|
17
17
|
import { BREAKPOINTS } from '../../styles';
|
|
18
18
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
19
19
|
var Wrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n align-items: center;\n\n display: none;\n\n ", " {\n display: flex;\n }\n"])), BREAKPOINTS.MEDIUM);
|
|
20
|
-
var
|
|
20
|
+
export var DesktopActionsCustomComponentWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([""])));
|
|
21
|
+
var ProfileWrapper = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n margin: 0 8px;\n"])));
|
|
21
22
|
var DesktopActions = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
22
23
|
var buttons = _ref.buttons,
|
|
23
24
|
user = _ref.user,
|
|
@@ -107,6 +108,13 @@ var DesktopActions = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
107
108
|
})
|
|
108
109
|
}), index);
|
|
109
110
|
}
|
|
111
|
+
case 'custom':
|
|
112
|
+
{
|
|
113
|
+
var content = item.content;
|
|
114
|
+
return /*#__PURE__*/_jsx(DesktopActionsCustomComponentWrapper, {
|
|
115
|
+
children: content()
|
|
116
|
+
});
|
|
117
|
+
}
|
|
110
118
|
}
|
|
111
119
|
};
|
|
112
120
|
return /*#__PURE__*/_jsx(Wrapper, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesktopActions.js","names":["React","styled","IconButton","ProfileButton","SystemIcons","BREAKPOINTS","Wrapper","div","MEDIUM","ProfileWrapper","DesktopActions","forwardRef","ref","buttons","user","profileComponent","onShowUserMenu","useState","elRefs","setElRefs","length","useEffect","Array","fill","map","createRef","useImperativeHandle","r","index","type","renderItem","item","placement","action","rest","e","target","firstName","charAt","lastName","icon"],"sources":["../../../src/GlobalNavigationBar/desktop/DesktopActions.tsx"],"sourcesContent":["import React from 'react';\r\nimport styled from 'styled-components';\r\nimport {MenuAccountInfo, MobileMenuButtonTypes, DesktopMenuButtonTypes} from '../types';\r\nimport {IconButton} from '../../Button';\r\nimport {ProfileButton} from '../../ProfileButton';\r\nimport {SystemIcons} from '../../icons';\r\nimport {BREAKPOINTS} from '../../styles';\r\n\r\nconst Wrapper = styled.div`\r\n align-items: center;\r\n\r\n display: none;\r\n\r\n ${BREAKPOINTS.MEDIUM} {\r\n display: flex;\r\n }\r\n`;\r\n\r\nconst ProfileWrapper = styled.div`\r\n margin: 0 8px;\r\n`;\r\n\r\n\r\ninterface DesktopActionsProps {\r\n buttons?: DesktopMenuButtonTypes[];\r\n user?: MenuAccountInfo;\r\n profileComponent?: React.ReactNode\r\n onShowUserMenu: () => void;\r\n}\r\n\r\nexport interface DesktopActionsRef {\r\n buttons?: { ref: React.MutableRefObject<HTMLButtonElement | null>, type: 'profile' | 'action' | 'switcher' | undefined }[]\r\n}\r\n\r\nconst DesktopActions = React.forwardRef(({\r\n buttons,\r\n user,\r\n profileComponent,\r\n onShowUserMenu\r\n }: DesktopActionsProps, ref: React.Ref<DesktopActionsRef>) => {\r\n\r\n const [elRefs, setElRefs] = React.useState<React.RefObject<HTMLButtonElement>[]>([]);\r\n\r\n const length = buttons?.length || 0;\r\n\r\n React.useEffect(() => {\r\n setElRefs(Array(length || 0).fill(null).map(() => React.createRef<HTMLButtonElement>()));\r\n }, [length]);\r\n\r\n React.useImperativeHandle(ref, () => ({\r\n buttons: elRefs.map((r, index) => ({\r\n ref: r,\r\n type: buttons?.[index]?.type,\r\n }))\r\n }), [elRefs, buttons]);\r\n\r\n const renderItem = (item: MobileMenuButtonTypes, index: number) => {\r\n switch (item.type) {\r\n case 'profile': {\r\n const {placement, type, action, ...rest} = item;\r\n if(!!profileComponent)\r\n return <ProfileWrapper>{profileComponent}</ProfileWrapper>;\r\n else\r\n return <ProfileWrapper>\r\n <ProfileButton key={index}\r\n ref={elRefs[index]}\r\n hideOnLowWidth={true}\r\n onClick={e => {\r\n item.action ? item.action(e?.target) : onShowUserMenu()\r\n }}\r\n icon={!user && <SystemIcons.User/>}\r\n initials={(user?.firstName?.charAt(0) ?? '') + (user?.lastName?.charAt(0) ?? '')}\r\n {...rest}/>\r\n </ProfileWrapper>\r\n }\r\n case 'action': {\r\n const {placement, type, icon, action, ...rest} = item;\r\n return <IconButton key={index}\r\n ref={elRefs[index]}\r\n variant={'secondary'}\r\n shape={'circular'}\r\n hideOnLowWidth={true}\r\n action={e => item.action && item.action(e?.target)}\r\n {...rest}>\r\n {item.icon}\r\n </IconButton>\r\n }\r\n case 'switcher': {\r\n const {placement, type, action, ...rest} = item;\r\n return <IconButton key={index}\r\n ref={elRefs[index]}\r\n variant={'secondary'}\r\n shape={'circular'}\r\n hideOnLowWidth={true}\r\n id=\"globalNavAppsButton\"\r\n action={e => item.action && item.action(e?.target)}\r\n {...rest}>\r\n <SystemIcons.SwitchApp size=\"24px\"/>\r\n </IconButton>\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <Wrapper role=\"toolbar\" aria-label=\"Toolbar\">\r\n {buttons?.map((item, index) => renderItem(item, index))}\r\n </Wrapper>\r\n )\r\n});\r\n\r\n\r\nexport default DesktopActions;\r\n"],"mappings":";;;;;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,mBAAmB;AAEtC,SAAQC,UAAU,QAAO,cAAc;AACvC,SAAQC,aAAa,QAAO,qBAAqB;AACjD,SAAQC,WAAW,QAAO,aAAa;AACvC,SAAQC,WAAW,QAAO,cAAc;AAAC;
|
|
1
|
+
{"version":3,"file":"DesktopActions.js","names":["React","styled","IconButton","ProfileButton","SystemIcons","BREAKPOINTS","Wrapper","div","MEDIUM","DesktopActionsCustomComponentWrapper","ProfileWrapper","DesktopActions","forwardRef","ref","buttons","user","profileComponent","onShowUserMenu","useState","elRefs","setElRefs","length","useEffect","Array","fill","map","createRef","useImperativeHandle","r","index","type","renderItem","item","placement","action","rest","e","target","firstName","charAt","lastName","icon","content"],"sources":["../../../src/GlobalNavigationBar/desktop/DesktopActions.tsx"],"sourcesContent":["import React from 'react';\r\nimport styled from 'styled-components';\r\nimport {MenuAccountInfo, MobileMenuButtonTypes, DesktopMenuButtonTypes} from '../types';\r\nimport {IconButton} from '../../Button';\r\nimport {ProfileButton} from '../../ProfileButton';\r\nimport {SystemIcons} from '../../icons';\r\nimport {BREAKPOINTS} from '../../styles';\r\nimport { SearchBar } from 'src/InputFields';\r\nimport { Size } from 'src/types';\r\n\r\nconst Wrapper = styled.div`\r\n align-items: center;\r\n\r\n display: none;\r\n\r\n ${BREAKPOINTS.MEDIUM} {\r\n display: flex;\r\n }\r\n`;\r\n\r\nexport const DesktopActionsCustomComponentWrapper = styled.div``;\r\n\r\nconst ProfileWrapper = styled.div`\r\n margin: 0 8px;\r\n`;\r\n\r\n\r\ninterface DesktopActionsProps {\r\n buttons?: DesktopMenuButtonTypes[];\r\n user?: MenuAccountInfo;\r\n profileComponent?: React.ReactNode\r\n onShowUserMenu: () => void;\r\n}\r\n\r\nexport interface DesktopActionsRef {\r\n buttons?: { ref: React.MutableRefObject<HTMLButtonElement | null>, type: 'profile' | 'action' | 'switcher' | 'custom' | undefined }[]\r\n}\r\n\r\nconst DesktopActions = React.forwardRef(({\r\n buttons,\r\n user,\r\n profileComponent,\r\n onShowUserMenu\r\n }: DesktopActionsProps, ref: React.Ref<DesktopActionsRef>) => {\r\n\r\n const [elRefs, setElRefs] = React.useState<React.RefObject<HTMLButtonElement>[]>([]);\r\n\r\n const length = buttons?.length || 0;\r\n\r\n React.useEffect(() => {\r\n setElRefs(Array(length || 0).fill(null).map(() => React.createRef<HTMLButtonElement>()));\r\n }, [length]);\r\n\r\n React.useImperativeHandle(ref, () => ({\r\n buttons: elRefs.map((r, index) => ({\r\n ref: r,\r\n type: buttons?.[index]?.type,\r\n }))\r\n }), [elRefs, buttons]);\r\n\r\n const renderItem = (item: MobileMenuButtonTypes, index: number) => {\r\n switch (item.type) {\r\n case 'profile': {\r\n const {placement, type, action, ...rest} = item;\r\n if(!!profileComponent)\r\n return <ProfileWrapper>{profileComponent}</ProfileWrapper>;\r\n else\r\n return <ProfileWrapper>\r\n <ProfileButton key={index}\r\n ref={elRefs[index]}\r\n hideOnLowWidth={true}\r\n onClick={e => {\r\n item.action ? item.action(e?.target) : onShowUserMenu()\r\n }}\r\n icon={!user && <SystemIcons.User/>}\r\n initials={(user?.firstName?.charAt(0) ?? '') + (user?.lastName?.charAt(0) ?? '')}\r\n {...rest}/>\r\n </ProfileWrapper>\r\n }\r\n case 'action': {\r\n const {placement, type, icon, action, ...rest} = item;\r\n return <IconButton key={index}\r\n ref={elRefs[index]}\r\n variant={'secondary'}\r\n shape={'circular'}\r\n hideOnLowWidth={true}\r\n action={e => item.action && item.action(e?.target)}\r\n {...rest}>\r\n {item.icon}\r\n </IconButton>\r\n }\r\n case 'switcher': {\r\n const {placement, type, action, ...rest} = item;\r\n return <IconButton key={index}\r\n ref={elRefs[index]}\r\n variant={'secondary'}\r\n shape={'circular'}\r\n hideOnLowWidth={true}\r\n id=\"globalNavAppsButton\"\r\n action={e => item.action && item.action(e?.target)}\r\n {...rest}>\r\n <SystemIcons.SwitchApp size=\"24px\"/>\r\n </IconButton>\r\n }\r\n\r\n case 'custom': {\r\n const { content } = item;\r\n return <DesktopActionsCustomComponentWrapper>{content()}</DesktopActionsCustomComponentWrapper>;\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <Wrapper role=\"toolbar\" aria-label=\"Toolbar\">\r\n {buttons?.map((item, index) => renderItem(item, index))}\r\n </Wrapper>\r\n )\r\n});\r\n\r\n\r\nexport default DesktopActions;\r\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
import { MenuNavigationItemTypeItem } from '../../index';
|
|
3
3
|
export declare const flowDown: import("styled-components").Keyframes;
|
|
4
4
|
export declare const Menu: import("styled-components").StyledComponent<"ul", any, {}, never>;
|
|
@@ -8,5 +8,5 @@ type Props = {
|
|
|
8
8
|
clickMenuAction: () => void;
|
|
9
9
|
navigationOptions: MenuNavigationItemTypeItem[];
|
|
10
10
|
};
|
|
11
|
-
declare const ExtendedMainMenu: ({ clickMenuAction, navigationOptions }: Props) => JSX.Element;
|
|
11
|
+
declare const ExtendedMainMenu: ({ clickMenuAction, navigationOptions }: Props) => React.JSX.Element;
|
|
12
12
|
export default ExtendedMainMenu;
|
|
@@ -270,6 +270,8 @@ var MainMenu = function MainMenu(_ref) {
|
|
|
270
270
|
focusedItemId: focusedItemId,
|
|
271
271
|
ref: extendedMenuOptionRef,
|
|
272
272
|
onItemStateChanged: function onItemStateChanged(item, state) {
|
|
273
|
+
console.log(item);
|
|
274
|
+
console.log(state);
|
|
273
275
|
if (state) setActiveItemId(item);else if (item == activeItem) setActiveItemId('');
|
|
274
276
|
},
|
|
275
277
|
nestPath: [ExtendedMenuOption],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainMenu.cjs","names":["NavContainer","styled","div","BREAKPOINTS","MEDIUM","NavItemDiv","LARGE","NavButton","button","COLORS","white","ExtendedMenuWrapper","props","floatRight","ExtendedSection","SubMenuWrapper","Menu","topLevel","ExtendedMenuOption","MainMenu","items","rightSideRef","menuButtonRef","React","useRef","dropdownMenusOpenedArray","mainMenuRef","useState","numberOfItemsAllowed","setNumberOfItemsAllowed","subMenuRefs","setAllSubMenuRefs","extendedMenuOptionRef","createRef","useEffect","map","x","type","undefined","forceUpdate","activeItem","setActiveItemId","focusedItemId","setFocusedItemId","widthOfItem","recalculateNumberOfItemsAllowed","current","number","Math","floor","offsetLeft","onMouseLeave","event","id","filter","onMouseEnter","existingRefForId","find","window","addEventListener","removeEventListener","length","onFocus","onKeyDownTop","key","renderItem","item","index","icon","to","exact","disabled","external","action","label","note","pinned","rest","defaultOnMouseDownHandler","NavLink","e","existingRef","onClick","onKeyDown","code","containsActiveItem","checkIfContainsItem","position","Boolean","state","extended","extendedSectionKeyHandler","stopPropagation","slice"],"sources":["../../../src/GlobalNavigationBar/desktop/MainMenu.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { NavLink, useLocation } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\nimport { NavItem } from '../../NavItem';\r\nimport {SystemIcons} from '../../icons';\r\nimport { COLORS, BREAKPOINTS } from '../../styles';\r\nimport { Menu } from './ExtendedMainMenu';\r\nimport { SubMenu } from './SubMenu';\r\nimport { IconButton } from '../../Button';\r\nimport { defaultOnMouseDownHandler } from '../../common';\r\nimport { MenuNavigationItemTypeDesktopGroup, MenuNavigationItemTypeItem } from '../types';\r\nimport { NavItemDiv } from '../../NavItem/NavItem';\r\nimport { checkIfContainsItem } from '../utils';\r\n\r\nconst NavContainer = styled.div`\r\n display: none;\r\n flex-grow: 1;\r\n justify-content: flex-start;\r\n align-items: center;\r\n \r\n padding: 0 16px;\r\n\r\n ${BREAKPOINTS.MEDIUM} {\r\n display: flex;\r\n }\r\n \r\n ${NavItemDiv} {\r\n cursor: pointer;\r\n }\r\n ${BREAKPOINTS.LARGE} {\r\n padding: 0 32px;\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n }\r\n`;\r\n\r\nconst NavButton = styled.button`\r\n background: ${COLORS.white};\r\n border: 0;\r\n`;\r\n\r\ninterface ExtendedMenuWrapperProps {\r\n floatRight: boolean;\r\n}\r\n\r\nconst ExtendedMenuWrapper = styled.div<ExtendedMenuWrapperProps>`\r\n display: flex;\r\n margin-left: ${(props) => (props.floatRight ? 'auto' : 'unset')};\r\n\r\n position: absolute;\r\n flex-direction: column;\r\n left: 290px;\r\n top: 22px;\r\n\r\n height: 0;\r\n width: 0;\r\n\r\n &:focus-within,\r\n &:hover,\r\n &.open {\r\n background: ${COLORS.white};\r\n }\r\n`;\r\n\r\nconst ExtendedSection = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst SubMenuWrapper = styled.div<{ topLevel: boolean }>`\r\n ${Menu} {\r\n top: ${(props) => (props.topLevel ? '100%' : '0px')};\r\n left: ${(props) => (props.topLevel ? '0px' : 'calc(100% - 12px)')};\r\n }\r\n\r\n button {\r\n padding-left: 0px;\r\n }\r\n`;\r\n\r\nconst ExtendedMenuOption = 'extendedOption';\r\n\r\ntype Props = {\r\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\r\n rightSideRef?: React.RefObject<HTMLDivElement> | null | undefined;\r\n};\r\n\r\nconst MainMenu = ({ items, rightSideRef }: Props): React.ReactElement<Props> => {\r\n const menuButtonRef = React.useRef<HTMLButtonElement>(null);\r\n //we have to use refs instead of 'state' here, because when onmouseleave is triggered for multiple nested divs, state update is not being updated in between\r\n const dropdownMenusOpenedArray = React.useRef<string[]>([]);\r\n const mainMenuRef: React.RefObject<HTMLDivElement> | null | undefined = React.useRef(null);\r\n const [numberOfItemsAllowed, setNumberOfItemsAllowed] = React.useState<number>(1);\r\n const [subMenuRefs, setAllSubMenuRefs] = React.useState<(React.RefObject<HTMLUListElement> | undefined)[]>([]);\r\n const extendedMenuOptionRef = React.createRef<HTMLUListElement>();\r\n\r\n React.useEffect(() => {\r\n setAllSubMenuRefs(items.map((x) => (x.type == 'desktopgroup' ? React.createRef<HTMLUListElement>() : undefined)));\r\n }, [items]);\r\n\r\n const [, forceUpdate] = React.useState({});\r\n const [activeItem, setActiveItemId] = React.useState<string>('');\r\n const [focusedItemId, setFocusedItemId] = React.useState<string>('');\r\n\r\n const widthOfItem = 120;\r\n const recalculateNumberOfItemsAllowed = () => {\r\n if (rightSideRef?.current && mainMenuRef?.current) {\r\n const number = Math.floor((rightSideRef?.current?.offsetLeft - mainMenuRef?.current?.offsetLeft) / widthOfItem);\r\n if (number !== numberOfItemsAllowed) {\r\n setNumberOfItemsAllowed(number);\r\n }\r\n }\r\n };\r\n\r\n const onMouseLeave = (event: any, id: string) => {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current.filter((x) => x != id)];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n };\r\n\r\n const onMouseEnter = (event: any, id: string) => {\r\n const existingRefForId = dropdownMenusOpenedArray.current.find((x) => x == id);\r\n if (existingRefForId == null) {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n recalculateNumberOfItemsAllowed();\r\n // Bind the event listener\r\n window.addEventListener('resize', recalculateNumberOfItemsAllowed);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n window.removeEventListener('resize', recalculateNumberOfItemsAllowed);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n recalculateNumberOfItemsAllowed();\r\n }, [items.length]);\r\n\r\n const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\r\n //no open dropdowns if top level was entered\r\n dropdownMenusOpenedArray.current = [];\r\n forceUpdate({});\r\n };\r\n\r\n const onKeyDownTop = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n dropdownMenusOpenedArray.current = [];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n const renderItem = (item: MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup, index: number) => {\r\n if (index > numberOfItemsAllowed - 2) return null;\r\n if (item.type != 'desktopgroup') {\r\n const { icon, to, exact, disabled, external, action, label, note, pinned, ...rest } = item as MenuNavigationItemTypeItem;\r\n return item?.disabled ? (\r\n <NavItem as={NavButton} className=\"disabled\" key={item.label} onMouseDown={defaultOnMouseDownHandler}>\r\n {item?.label}\r\n </NavItem>\r\n ) : (\r\n <NavItem as={NavLink} onFocus={onFocus} to={to || ''} key={label} onMouseDown={defaultOnMouseDownHandler} onClick={(e: React.MouseEvent) => action && action(e)} {...rest}>\r\n {item?.label}\r\n </NavItem>\r\n );\r\n } else {\r\n const existingRef = dropdownMenusOpenedArray.current.find((x) => x == item.id);\r\n const onClick = () => {\r\n if (existingRef == null) {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key == 'Enter' || event.code == 'Space') {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n } \r\n };\r\n\r\n const containsActiveItem = checkIfContainsItem(item, activeItem);\r\n return (\r\n <div\r\n style={{ position: 'relative' }}\r\n onMouseEnter={(event) => onMouseEnter(event, item.id ?? '')}\r\n onMouseLeave={(event) => onMouseLeave(event, item.id ?? '')}>\r\n <NavItem\r\n id={item.id + '_parentOption'}\r\n aria-expanded={Boolean(existingRef)}\r\n aria-activedescendant={containsActiveItem ? activeItem : ''}\r\n aria-controls={item.id}\r\n role=\"listbox\"\r\n onFocus={onFocus}\r\n onKeyDown={onKeyDown}\r\n tabIndex={0}\r\n className={existingRef != null || checkIfContainsItem(item, activeItem) ? 'active' : ''}\r\n key={item.label}\r\n to={null}\r\n onClick={onClick}>\r\n {item?.label} <SystemIcons.ArrowDropDown size=\"24px\" />\r\n </NavItem>\r\n <SubMenu\r\n ariaLabelledBy={item.id + '_parentOption'}\r\n ref={subMenuRefs[index]}\r\n onItemFocused={setFocusedItemId}\r\n focusedItemId={focusedItemId}\r\n activeItemId={activeItem}\r\n nestPath={[item.id]}\r\n onItemStateChanged={(item, state) => {\r\n if (state) {\r\n setActiveItemId(item);\r\n } else if (item == activeItem) setActiveItemId('');\r\n }}\r\n item={item as MenuNavigationItemTypeDesktopGroup}\r\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\r\n index={index + 1}\r\n topLevel={true}\r\n />\r\n </div>\r\n );\r\n }\r\n };\r\n\r\n\r\n const extended = dropdownMenusOpenedArray.current.find((x) => x == ExtendedMenuOption);\r\n const extendedSectionKeyHandler = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key == 'Enter' || event.code == 'Space') {\r\n event.stopPropagation();\r\n\r\n dropdownMenusOpenedArray.current = [ExtendedMenuOption];\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n return (\r\n <NavContainer role=\"navigation\" className=\"GlobalNavigationMainMenu\" ref={mainMenuRef} onKeyDown={onKeyDownTop}>\r\n {items?.map(renderItem)}\r\n {items.length + 1 > numberOfItemsAllowed && (\r\n <ExtendedSection\r\n onKeyDown={(event) => extendedSectionKeyHandler(event)}\r\n onMouseEnter={(event) => onMouseEnter(event, ExtendedMenuOption)}\r\n onMouseLeave={(event) => onMouseLeave(event, ExtendedMenuOption)}>\r\n <IconButton\r\n id={ExtendedMenuOption + '_parentOption'}\r\n aria-expanded={Boolean(extended)}\r\n aria-activedescendant={checkIfContainsItem({ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }, activeItem) ? activeItem : ''}\r\n aria-controls={ExtendedMenuOption}\r\n role=\"listbox\"\r\n \r\n ref={menuButtonRef} variant={'secondary'} shape={'circular'} action={() => {}}>\r\n <SystemIcons.MoreHorizontal size=\"24px\"/>\r\n </IconButton>\r\n <SubMenu\r\n ariaLabelledBy={ExtendedMenuOption + '_parentOption'}\r\n activeItemId={activeItem}\r\n onItemFocused={setFocusedItemId}\r\n focusedItemId={focusedItemId}\r\n ref={extendedMenuOptionRef}\r\n onItemStateChanged={(item, state) => {\r\n if (state) setActiveItemId(item);\r\n else if (item == activeItem) setActiveItemId('');\r\n }}\r\n nestPath={[ExtendedMenuOption]}\r\n item={{ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }}\r\n topLevel={true}\r\n index={0}\r\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\r\n />\r\n </ExtendedSection>\r\n )}\r\n </NavContainer>\r\n );\r\n};\r\n\r\nexport default MainMenu;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MainMenu.cjs","names":["NavContainer","styled","div","BREAKPOINTS","MEDIUM","NavItemDiv","LARGE","NavButton","button","COLORS","white","ExtendedMenuWrapper","props","floatRight","ExtendedSection","SubMenuWrapper","Menu","topLevel","ExtendedMenuOption","MainMenu","items","rightSideRef","menuButtonRef","React","useRef","dropdownMenusOpenedArray","mainMenuRef","useState","numberOfItemsAllowed","setNumberOfItemsAllowed","subMenuRefs","setAllSubMenuRefs","extendedMenuOptionRef","createRef","useEffect","map","x","type","undefined","forceUpdate","activeItem","setActiveItemId","focusedItemId","setFocusedItemId","widthOfItem","recalculateNumberOfItemsAllowed","current","number","Math","floor","offsetLeft","onMouseLeave","event","id","filter","onMouseEnter","existingRefForId","find","window","addEventListener","removeEventListener","length","onFocus","onKeyDownTop","key","renderItem","item","index","icon","to","exact","disabled","external","action","label","note","pinned","rest","defaultOnMouseDownHandler","NavLink","e","existingRef","onClick","onKeyDown","code","containsActiveItem","checkIfContainsItem","position","Boolean","state","extended","extendedSectionKeyHandler","stopPropagation","slice","console","log"],"sources":["../../../src/GlobalNavigationBar/desktop/MainMenu.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { NavLink, useLocation } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\nimport { NavItem } from '../../NavItem';\r\nimport {SystemIcons} from '../../icons';\r\nimport { COLORS, BREAKPOINTS } from '../../styles';\r\nimport { Menu } from './ExtendedMainMenu';\r\nimport { SubMenu } from './SubMenu';\r\nimport { IconButton } from '../../Button';\r\nimport { defaultOnMouseDownHandler } from '../../common';\r\nimport { MenuNavigationItemTypeDesktopGroup, MenuNavigationItemTypeItem } from '../types';\r\nimport { NavItemDiv } from '../../NavItem/NavItem';\r\nimport { checkIfContainsItem } from '../utils';\r\n\r\nconst NavContainer = styled.div`\r\n display: none;\r\n flex-grow: 1;\r\n justify-content: flex-start;\r\n align-items: center;\r\n \r\n padding: 0 16px;\r\n\r\n ${BREAKPOINTS.MEDIUM} {\r\n display: flex;\r\n }\r\n \r\n ${NavItemDiv} {\r\n cursor: pointer;\r\n }\r\n ${BREAKPOINTS.LARGE} {\r\n padding: 0 32px;\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n }\r\n`;\r\n\r\nconst NavButton = styled.button`\r\n background: ${COLORS.white};\r\n border: 0;\r\n`;\r\n\r\ninterface ExtendedMenuWrapperProps {\r\n floatRight: boolean;\r\n}\r\n\r\nconst ExtendedMenuWrapper = styled.div<ExtendedMenuWrapperProps>`\r\n display: flex;\r\n margin-left: ${(props) => (props.floatRight ? 'auto' : 'unset')};\r\n\r\n position: absolute;\r\n flex-direction: column;\r\n left: 290px;\r\n top: 22px;\r\n\r\n height: 0;\r\n width: 0;\r\n\r\n &:focus-within,\r\n &:hover,\r\n &.open {\r\n background: ${COLORS.white};\r\n }\r\n`;\r\n\r\nconst ExtendedSection = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst SubMenuWrapper = styled.div<{ topLevel: boolean }>`\r\n ${Menu} {\r\n top: ${(props) => (props.topLevel ? '100%' : '0px')};\r\n left: ${(props) => (props.topLevel ? '0px' : 'calc(100% - 12px)')};\r\n }\r\n\r\n button {\r\n padding-left: 0px;\r\n }\r\n`;\r\n\r\nconst ExtendedMenuOption = 'extendedOption';\r\n\r\ntype Props = {\r\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\r\n rightSideRef?: React.RefObject<HTMLDivElement> | null | undefined;\r\n};\r\n\r\nconst MainMenu = ({ items, rightSideRef }: Props): React.ReactElement<Props> => {\r\n const menuButtonRef = React.useRef<HTMLButtonElement>(null);\r\n //we have to use refs instead of 'state' here, because when onmouseleave is triggered for multiple nested divs, state update is not being updated in between\r\n const dropdownMenusOpenedArray = React.useRef<string[]>([]);\r\n const mainMenuRef: React.RefObject<HTMLDivElement> | null | undefined = React.useRef(null);\r\n const [numberOfItemsAllowed, setNumberOfItemsAllowed] = React.useState<number>(1);\r\n const [subMenuRefs, setAllSubMenuRefs] = React.useState<(React.RefObject<HTMLUListElement> | undefined)[]>([]);\r\n const extendedMenuOptionRef = React.createRef<HTMLUListElement>();\r\n\r\n React.useEffect(() => {\r\n setAllSubMenuRefs(items.map((x) => (x.type == 'desktopgroup' ? React.createRef<HTMLUListElement>() : undefined)));\r\n }, [items]);\r\n\r\n const [, forceUpdate] = React.useState({});\r\n const [activeItem, setActiveItemId] = React.useState<string>('');\r\n const [focusedItemId, setFocusedItemId] = React.useState<string>('');\r\n\r\n const widthOfItem = 120;\r\n const recalculateNumberOfItemsAllowed = () => {\r\n if (rightSideRef?.current && mainMenuRef?.current) {\r\n const number = Math.floor((rightSideRef?.current?.offsetLeft - mainMenuRef?.current?.offsetLeft) / widthOfItem);\r\n if (number !== numberOfItemsAllowed) {\r\n setNumberOfItemsAllowed(number);\r\n }\r\n }\r\n };\r\n\r\n const onMouseLeave = (event: any, id: string) => {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current.filter((x) => x != id)];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n };\r\n\r\n const onMouseEnter = (event: any, id: string) => {\r\n const existingRefForId = dropdownMenusOpenedArray.current.find((x) => x == id);\r\n if (existingRefForId == null) {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n recalculateNumberOfItemsAllowed();\r\n // Bind the event listener\r\n window.addEventListener('resize', recalculateNumberOfItemsAllowed);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n window.removeEventListener('resize', recalculateNumberOfItemsAllowed);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n recalculateNumberOfItemsAllowed();\r\n }, [items.length]);\r\n\r\n const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\r\n //no open dropdowns if top level was entered\r\n dropdownMenusOpenedArray.current = [];\r\n forceUpdate({});\r\n };\r\n\r\n const onKeyDownTop = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n dropdownMenusOpenedArray.current = [];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n const renderItem = (item: MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup, index: number) => {\r\n if (index > numberOfItemsAllowed - 2) return null;\r\n if (item.type != 'desktopgroup') {\r\n const { icon, to, exact, disabled, external, action, label, note, pinned, ...rest } = item as MenuNavigationItemTypeItem;\r\n return item?.disabled ? (\r\n <NavItem as={NavButton} className=\"disabled\" key={item.label} onMouseDown={defaultOnMouseDownHandler}>\r\n {item?.label}\r\n </NavItem>\r\n ) : (\r\n <NavItem as={NavLink} onFocus={onFocus} to={to || ''} key={label} onMouseDown={defaultOnMouseDownHandler} onClick={(e: React.MouseEvent) => action && action(e)} {...rest}>\r\n {item?.label}\r\n </NavItem>\r\n );\r\n } else {\r\n const existingRef = dropdownMenusOpenedArray.current.find((x) => x == item.id);\r\n const onClick = () => {\r\n if (existingRef == null) {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key == 'Enter' || event.code == 'Space') {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n } \r\n };\r\n\r\n const containsActiveItem = checkIfContainsItem(item, activeItem);\r\n return (\r\n <div\r\n style={{ position: 'relative' }}\r\n onMouseEnter={(event) => onMouseEnter(event, item.id ?? '')}\r\n onMouseLeave={(event) => onMouseLeave(event, item.id ?? '')}>\r\n <NavItem\r\n id={item.id + '_parentOption'}\r\n aria-expanded={Boolean(existingRef)}\r\n aria-activedescendant={containsActiveItem ? activeItem : ''}\r\n aria-controls={item.id}\r\n role=\"listbox\"\r\n onFocus={onFocus}\r\n onKeyDown={onKeyDown}\r\n tabIndex={0}\r\n className={existingRef != null || checkIfContainsItem(item, activeItem) ? 'active' : ''}\r\n key={item.label}\r\n to={null}\r\n onClick={onClick}>\r\n {item?.label} <SystemIcons.ArrowDropDown size=\"24px\" />\r\n </NavItem>\r\n <SubMenu\r\n ariaLabelledBy={item.id + '_parentOption'}\r\n ref={subMenuRefs[index]}\r\n onItemFocused={setFocusedItemId}\r\n focusedItemId={focusedItemId}\r\n activeItemId={activeItem}\r\n nestPath={[item.id]}\r\n onItemStateChanged={(item, state) => {\r\n if (state) {\r\n setActiveItemId(item);\r\n } else if (item == activeItem) setActiveItemId('');\r\n }}\r\n item={item as MenuNavigationItemTypeDesktopGroup}\r\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\r\n index={index + 1}\r\n topLevel={true}\r\n />\r\n </div>\r\n );\r\n }\r\n };\r\n\r\n\r\n const extended = dropdownMenusOpenedArray.current.find((x) => x == ExtendedMenuOption);\r\n const extendedSectionKeyHandler = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key == 'Enter' || event.code == 'Space') {\r\n event.stopPropagation();\r\n\r\n dropdownMenusOpenedArray.current = [ExtendedMenuOption];\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n return (\r\n <NavContainer role=\"navigation\" className=\"GlobalNavigationMainMenu\" ref={mainMenuRef} onKeyDown={onKeyDownTop}>\r\n {items?.map(renderItem)}\r\n {items.length + 1 > numberOfItemsAllowed && (\r\n <ExtendedSection\r\n onKeyDown={(event) => extendedSectionKeyHandler(event)}\r\n onMouseEnter={(event) => onMouseEnter(event, ExtendedMenuOption)}\r\n onMouseLeave={(event) => onMouseLeave(event, ExtendedMenuOption)}>\r\n <IconButton\r\n id={ExtendedMenuOption + '_parentOption'}\r\n aria-expanded={Boolean(extended)}\r\n aria-activedescendant={checkIfContainsItem({ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }, activeItem) ? activeItem : ''}\r\n aria-controls={ExtendedMenuOption}\r\n role=\"listbox\"\r\n \r\n ref={menuButtonRef} variant={'secondary'} shape={'circular'} action={() => {}}>\r\n <SystemIcons.MoreHorizontal size=\"24px\"/>\r\n </IconButton>\r\n <SubMenu\r\n ariaLabelledBy={ExtendedMenuOption + '_parentOption'}\r\n activeItemId={activeItem}\r\n onItemFocused={setFocusedItemId}\r\n focusedItemId={focusedItemId}\r\n ref={extendedMenuOptionRef}\r\n onItemStateChanged={(item, state) => {\r\n console.log(item);\r\n console.log(state);\r\n if (state) setActiveItemId(item);\r\n else if (item == activeItem) setActiveItemId('');\r\n }}\r\n nestPath={[ExtendedMenuOption]}\r\n item={{ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }}\r\n topLevel={true}\r\n index={0}\r\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\r\n />\r\n </ExtendedSection>\r\n )}\r\n </NavContainer>\r\n );\r\n};\r\n\r\nexport default MainMenu;\r\n"],"mappings":"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"}
|
|
@@ -261,6 +261,8 @@ var MainMenu = function MainMenu(_ref) {
|
|
|
261
261
|
focusedItemId: focusedItemId,
|
|
262
262
|
ref: extendedMenuOptionRef,
|
|
263
263
|
onItemStateChanged: function onItemStateChanged(item, state) {
|
|
264
|
+
console.log(item);
|
|
265
|
+
console.log(state);
|
|
264
266
|
if (state) setActiveItemId(item);else if (item == activeItem) setActiveItemId('');
|
|
265
267
|
},
|
|
266
268
|
nestPath: [ExtendedMenuOption],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainMenu.js","names":["React","NavLink","styled","NavItem","SystemIcons","COLORS","BREAKPOINTS","Menu","SubMenu","IconButton","defaultOnMouseDownHandler","NavItemDiv","checkIfContainsItem","NavContainer","div","MEDIUM","LARGE","NavButton","button","white","ExtendedMenuWrapper","props","floatRight","ExtendedSection","SubMenuWrapper","topLevel","ExtendedMenuOption","MainMenu","items","rightSideRef","menuButtonRef","useRef","dropdownMenusOpenedArray","mainMenuRef","useState","numberOfItemsAllowed","setNumberOfItemsAllowed","subMenuRefs","setAllSubMenuRefs","extendedMenuOptionRef","createRef","useEffect","map","x","type","undefined","forceUpdate","activeItem","setActiveItemId","focusedItemId","setFocusedItemId","widthOfItem","recalculateNumberOfItemsAllowed","current","number","Math","floor","offsetLeft","onMouseLeave","event","id","filter","onMouseEnter","existingRefForId","find","window","addEventListener","removeEventListener","length","onFocus","onKeyDownTop","key","renderItem","item","index","icon","to","exact","disabled","external","action","label","note","pinned","rest","e","existingRef","onClick","onKeyDown","code","containsActiveItem","position","Boolean","state","extended","extendedSectionKeyHandler","stopPropagation","slice"],"sources":["../../../src/GlobalNavigationBar/desktop/MainMenu.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { NavLink, useLocation } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\nimport { NavItem } from '../../NavItem';\r\nimport {SystemIcons} from '../../icons';\r\nimport { COLORS, BREAKPOINTS } from '../../styles';\r\nimport { Menu } from './ExtendedMainMenu';\r\nimport { SubMenu } from './SubMenu';\r\nimport { IconButton } from '../../Button';\r\nimport { defaultOnMouseDownHandler } from '../../common';\r\nimport { MenuNavigationItemTypeDesktopGroup, MenuNavigationItemTypeItem } from '../types';\r\nimport { NavItemDiv } from '../../NavItem/NavItem';\r\nimport { checkIfContainsItem } from '../utils';\r\n\r\nconst NavContainer = styled.div`\r\n display: none;\r\n flex-grow: 1;\r\n justify-content: flex-start;\r\n align-items: center;\r\n \r\n padding: 0 16px;\r\n\r\n ${BREAKPOINTS.MEDIUM} {\r\n display: flex;\r\n }\r\n \r\n ${NavItemDiv} {\r\n cursor: pointer;\r\n }\r\n ${BREAKPOINTS.LARGE} {\r\n padding: 0 32px;\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n }\r\n`;\r\n\r\nconst NavButton = styled.button`\r\n background: ${COLORS.white};\r\n border: 0;\r\n`;\r\n\r\ninterface ExtendedMenuWrapperProps {\r\n floatRight: boolean;\r\n}\r\n\r\nconst ExtendedMenuWrapper = styled.div<ExtendedMenuWrapperProps>`\r\n display: flex;\r\n margin-left: ${(props) => (props.floatRight ? 'auto' : 'unset')};\r\n\r\n position: absolute;\r\n flex-direction: column;\r\n left: 290px;\r\n top: 22px;\r\n\r\n height: 0;\r\n width: 0;\r\n\r\n &:focus-within,\r\n &:hover,\r\n &.open {\r\n background: ${COLORS.white};\r\n }\r\n`;\r\n\r\nconst ExtendedSection = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst SubMenuWrapper = styled.div<{ topLevel: boolean }>`\r\n ${Menu} {\r\n top: ${(props) => (props.topLevel ? '100%' : '0px')};\r\n left: ${(props) => (props.topLevel ? '0px' : 'calc(100% - 12px)')};\r\n }\r\n\r\n button {\r\n padding-left: 0px;\r\n }\r\n`;\r\n\r\nconst ExtendedMenuOption = 'extendedOption';\r\n\r\ntype Props = {\r\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\r\n rightSideRef?: React.RefObject<HTMLDivElement> | null | undefined;\r\n};\r\n\r\nconst MainMenu = ({ items, rightSideRef }: Props): React.ReactElement<Props> => {\r\n const menuButtonRef = React.useRef<HTMLButtonElement>(null);\r\n //we have to use refs instead of 'state' here, because when onmouseleave is triggered for multiple nested divs, state update is not being updated in between\r\n const dropdownMenusOpenedArray = React.useRef<string[]>([]);\r\n const mainMenuRef: React.RefObject<HTMLDivElement> | null | undefined = React.useRef(null);\r\n const [numberOfItemsAllowed, setNumberOfItemsAllowed] = React.useState<number>(1);\r\n const [subMenuRefs, setAllSubMenuRefs] = React.useState<(React.RefObject<HTMLUListElement> | undefined)[]>([]);\r\n const extendedMenuOptionRef = React.createRef<HTMLUListElement>();\r\n\r\n React.useEffect(() => {\r\n setAllSubMenuRefs(items.map((x) => (x.type == 'desktopgroup' ? React.createRef<HTMLUListElement>() : undefined)));\r\n }, [items]);\r\n\r\n const [, forceUpdate] = React.useState({});\r\n const [activeItem, setActiveItemId] = React.useState<string>('');\r\n const [focusedItemId, setFocusedItemId] = React.useState<string>('');\r\n\r\n const widthOfItem = 120;\r\n const recalculateNumberOfItemsAllowed = () => {\r\n if (rightSideRef?.current && mainMenuRef?.current) {\r\n const number = Math.floor((rightSideRef?.current?.offsetLeft - mainMenuRef?.current?.offsetLeft) / widthOfItem);\r\n if (number !== numberOfItemsAllowed) {\r\n setNumberOfItemsAllowed(number);\r\n }\r\n }\r\n };\r\n\r\n const onMouseLeave = (event: any, id: string) => {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current.filter((x) => x != id)];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n };\r\n\r\n const onMouseEnter = (event: any, id: string) => {\r\n const existingRefForId = dropdownMenusOpenedArray.current.find((x) => x == id);\r\n if (existingRefForId == null) {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n recalculateNumberOfItemsAllowed();\r\n // Bind the event listener\r\n window.addEventListener('resize', recalculateNumberOfItemsAllowed);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n window.removeEventListener('resize', recalculateNumberOfItemsAllowed);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n recalculateNumberOfItemsAllowed();\r\n }, [items.length]);\r\n\r\n const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\r\n //no open dropdowns if top level was entered\r\n dropdownMenusOpenedArray.current = [];\r\n forceUpdate({});\r\n };\r\n\r\n const onKeyDownTop = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n dropdownMenusOpenedArray.current = [];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n const renderItem = (item: MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup, index: number) => {\r\n if (index > numberOfItemsAllowed - 2) return null;\r\n if (item.type != 'desktopgroup') {\r\n const { icon, to, exact, disabled, external, action, label, note, pinned, ...rest } = item as MenuNavigationItemTypeItem;\r\n return item?.disabled ? (\r\n <NavItem as={NavButton} className=\"disabled\" key={item.label} onMouseDown={defaultOnMouseDownHandler}>\r\n {item?.label}\r\n </NavItem>\r\n ) : (\r\n <NavItem as={NavLink} onFocus={onFocus} to={to || ''} key={label} onMouseDown={defaultOnMouseDownHandler} onClick={(e: React.MouseEvent) => action && action(e)} {...rest}>\r\n {item?.label}\r\n </NavItem>\r\n );\r\n } else {\r\n const existingRef = dropdownMenusOpenedArray.current.find((x) => x == item.id);\r\n const onClick = () => {\r\n if (existingRef == null) {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key == 'Enter' || event.code == 'Space') {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n } \r\n };\r\n\r\n const containsActiveItem = checkIfContainsItem(item, activeItem);\r\n return (\r\n <div\r\n style={{ position: 'relative' }}\r\n onMouseEnter={(event) => onMouseEnter(event, item.id ?? '')}\r\n onMouseLeave={(event) => onMouseLeave(event, item.id ?? '')}>\r\n <NavItem\r\n id={item.id + '_parentOption'}\r\n aria-expanded={Boolean(existingRef)}\r\n aria-activedescendant={containsActiveItem ? activeItem : ''}\r\n aria-controls={item.id}\r\n role=\"listbox\"\r\n onFocus={onFocus}\r\n onKeyDown={onKeyDown}\r\n tabIndex={0}\r\n className={existingRef != null || checkIfContainsItem(item, activeItem) ? 'active' : ''}\r\n key={item.label}\r\n to={null}\r\n onClick={onClick}>\r\n {item?.label} <SystemIcons.ArrowDropDown size=\"24px\" />\r\n </NavItem>\r\n <SubMenu\r\n ariaLabelledBy={item.id + '_parentOption'}\r\n ref={subMenuRefs[index]}\r\n onItemFocused={setFocusedItemId}\r\n focusedItemId={focusedItemId}\r\n activeItemId={activeItem}\r\n nestPath={[item.id]}\r\n onItemStateChanged={(item, state) => {\r\n if (state) {\r\n setActiveItemId(item);\r\n } else if (item == activeItem) setActiveItemId('');\r\n }}\r\n item={item as MenuNavigationItemTypeDesktopGroup}\r\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\r\n index={index + 1}\r\n topLevel={true}\r\n />\r\n </div>\r\n );\r\n }\r\n };\r\n\r\n\r\n const extended = dropdownMenusOpenedArray.current.find((x) => x == ExtendedMenuOption);\r\n const extendedSectionKeyHandler = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key == 'Enter' || event.code == 'Space') {\r\n event.stopPropagation();\r\n\r\n dropdownMenusOpenedArray.current = [ExtendedMenuOption];\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n return (\r\n <NavContainer role=\"navigation\" className=\"GlobalNavigationMainMenu\" ref={mainMenuRef} onKeyDown={onKeyDownTop}>\r\n {items?.map(renderItem)}\r\n {items.length + 1 > numberOfItemsAllowed && (\r\n <ExtendedSection\r\n onKeyDown={(event) => extendedSectionKeyHandler(event)}\r\n onMouseEnter={(event) => onMouseEnter(event, ExtendedMenuOption)}\r\n onMouseLeave={(event) => onMouseLeave(event, ExtendedMenuOption)}>\r\n <IconButton\r\n id={ExtendedMenuOption + '_parentOption'}\r\n aria-expanded={Boolean(extended)}\r\n aria-activedescendant={checkIfContainsItem({ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }, activeItem) ? activeItem : ''}\r\n aria-controls={ExtendedMenuOption}\r\n role=\"listbox\"\r\n \r\n ref={menuButtonRef} variant={'secondary'} shape={'circular'} action={() => {}}>\r\n <SystemIcons.MoreHorizontal size=\"24px\"/>\r\n </IconButton>\r\n <SubMenu\r\n ariaLabelledBy={ExtendedMenuOption + '_parentOption'}\r\n activeItemId={activeItem}\r\n onItemFocused={setFocusedItemId}\r\n focusedItemId={focusedItemId}\r\n ref={extendedMenuOptionRef}\r\n onItemStateChanged={(item, state) => {\r\n if (state) setActiveItemId(item);\r\n else if (item == activeItem) setActiveItemId('');\r\n }}\r\n nestPath={[ExtendedMenuOption]}\r\n item={{ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }}\r\n topLevel={true}\r\n index={0}\r\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\r\n />\r\n </ExtendedSection>\r\n )}\r\n </NavContainer>\r\n );\r\n};\r\n\r\nexport default MainMenu;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MainMenu.js","names":["React","NavLink","styled","NavItem","SystemIcons","COLORS","BREAKPOINTS","Menu","SubMenu","IconButton","defaultOnMouseDownHandler","NavItemDiv","checkIfContainsItem","NavContainer","div","MEDIUM","LARGE","NavButton","button","white","ExtendedMenuWrapper","props","floatRight","ExtendedSection","SubMenuWrapper","topLevel","ExtendedMenuOption","MainMenu","items","rightSideRef","menuButtonRef","useRef","dropdownMenusOpenedArray","mainMenuRef","useState","numberOfItemsAllowed","setNumberOfItemsAllowed","subMenuRefs","setAllSubMenuRefs","extendedMenuOptionRef","createRef","useEffect","map","x","type","undefined","forceUpdate","activeItem","setActiveItemId","focusedItemId","setFocusedItemId","widthOfItem","recalculateNumberOfItemsAllowed","current","number","Math","floor","offsetLeft","onMouseLeave","event","id","filter","onMouseEnter","existingRefForId","find","window","addEventListener","removeEventListener","length","onFocus","onKeyDownTop","key","renderItem","item","index","icon","to","exact","disabled","external","action","label","note","pinned","rest","e","existingRef","onClick","onKeyDown","code","containsActiveItem","position","Boolean","state","extended","extendedSectionKeyHandler","stopPropagation","slice","console","log"],"sources":["../../../src/GlobalNavigationBar/desktop/MainMenu.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { NavLink, useLocation } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\nimport { NavItem } from '../../NavItem';\r\nimport {SystemIcons} from '../../icons';\r\nimport { COLORS, BREAKPOINTS } from '../../styles';\r\nimport { Menu } from './ExtendedMainMenu';\r\nimport { SubMenu } from './SubMenu';\r\nimport { IconButton } from '../../Button';\r\nimport { defaultOnMouseDownHandler } from '../../common';\r\nimport { MenuNavigationItemTypeDesktopGroup, MenuNavigationItemTypeItem } from '../types';\r\nimport { NavItemDiv } from '../../NavItem/NavItem';\r\nimport { checkIfContainsItem } from '../utils';\r\n\r\nconst NavContainer = styled.div`\r\n display: none;\r\n flex-grow: 1;\r\n justify-content: flex-start;\r\n align-items: center;\r\n \r\n padding: 0 16px;\r\n\r\n ${BREAKPOINTS.MEDIUM} {\r\n display: flex;\r\n }\r\n \r\n ${NavItemDiv} {\r\n cursor: pointer;\r\n }\r\n ${BREAKPOINTS.LARGE} {\r\n padding: 0 32px;\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n }\r\n`;\r\n\r\nconst NavButton = styled.button`\r\n background: ${COLORS.white};\r\n border: 0;\r\n`;\r\n\r\ninterface ExtendedMenuWrapperProps {\r\n floatRight: boolean;\r\n}\r\n\r\nconst ExtendedMenuWrapper = styled.div<ExtendedMenuWrapperProps>`\r\n display: flex;\r\n margin-left: ${(props) => (props.floatRight ? 'auto' : 'unset')};\r\n\r\n position: absolute;\r\n flex-direction: column;\r\n left: 290px;\r\n top: 22px;\r\n\r\n height: 0;\r\n width: 0;\r\n\r\n &:focus-within,\r\n &:hover,\r\n &.open {\r\n background: ${COLORS.white};\r\n }\r\n`;\r\n\r\nconst ExtendedSection = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst SubMenuWrapper = styled.div<{ topLevel: boolean }>`\r\n ${Menu} {\r\n top: ${(props) => (props.topLevel ? '100%' : '0px')};\r\n left: ${(props) => (props.topLevel ? '0px' : 'calc(100% - 12px)')};\r\n }\r\n\r\n button {\r\n padding-left: 0px;\r\n }\r\n`;\r\n\r\nconst ExtendedMenuOption = 'extendedOption';\r\n\r\ntype Props = {\r\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\r\n rightSideRef?: React.RefObject<HTMLDivElement> | null | undefined;\r\n};\r\n\r\nconst MainMenu = ({ items, rightSideRef }: Props): React.ReactElement<Props> => {\r\n const menuButtonRef = React.useRef<HTMLButtonElement>(null);\r\n //we have to use refs instead of 'state' here, because when onmouseleave is triggered for multiple nested divs, state update is not being updated in between\r\n const dropdownMenusOpenedArray = React.useRef<string[]>([]);\r\n const mainMenuRef: React.RefObject<HTMLDivElement> | null | undefined = React.useRef(null);\r\n const [numberOfItemsAllowed, setNumberOfItemsAllowed] = React.useState<number>(1);\r\n const [subMenuRefs, setAllSubMenuRefs] = React.useState<(React.RefObject<HTMLUListElement> | undefined)[]>([]);\r\n const extendedMenuOptionRef = React.createRef<HTMLUListElement>();\r\n\r\n React.useEffect(() => {\r\n setAllSubMenuRefs(items.map((x) => (x.type == 'desktopgroup' ? React.createRef<HTMLUListElement>() : undefined)));\r\n }, [items]);\r\n\r\n const [, forceUpdate] = React.useState({});\r\n const [activeItem, setActiveItemId] = React.useState<string>('');\r\n const [focusedItemId, setFocusedItemId] = React.useState<string>('');\r\n\r\n const widthOfItem = 120;\r\n const recalculateNumberOfItemsAllowed = () => {\r\n if (rightSideRef?.current && mainMenuRef?.current) {\r\n const number = Math.floor((rightSideRef?.current?.offsetLeft - mainMenuRef?.current?.offsetLeft) / widthOfItem);\r\n if (number !== numberOfItemsAllowed) {\r\n setNumberOfItemsAllowed(number);\r\n }\r\n }\r\n };\r\n\r\n const onMouseLeave = (event: any, id: string) => {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current.filter((x) => x != id)];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n };\r\n\r\n const onMouseEnter = (event: any, id: string) => {\r\n const existingRefForId = dropdownMenusOpenedArray.current.find((x) => x == id);\r\n if (existingRefForId == null) {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n recalculateNumberOfItemsAllowed();\r\n // Bind the event listener\r\n window.addEventListener('resize', recalculateNumberOfItemsAllowed);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n window.removeEventListener('resize', recalculateNumberOfItemsAllowed);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n recalculateNumberOfItemsAllowed();\r\n }, [items.length]);\r\n\r\n const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\r\n //no open dropdowns if top level was entered\r\n dropdownMenusOpenedArray.current = [];\r\n forceUpdate({});\r\n };\r\n\r\n const onKeyDownTop = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n dropdownMenusOpenedArray.current = [];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n const renderItem = (item: MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup, index: number) => {\r\n if (index > numberOfItemsAllowed - 2) return null;\r\n if (item.type != 'desktopgroup') {\r\n const { icon, to, exact, disabled, external, action, label, note, pinned, ...rest } = item as MenuNavigationItemTypeItem;\r\n return item?.disabled ? (\r\n <NavItem as={NavButton} className=\"disabled\" key={item.label} onMouseDown={defaultOnMouseDownHandler}>\r\n {item?.label}\r\n </NavItem>\r\n ) : (\r\n <NavItem as={NavLink} onFocus={onFocus} to={to || ''} key={label} onMouseDown={defaultOnMouseDownHandler} onClick={(e: React.MouseEvent) => action && action(e)} {...rest}>\r\n {item?.label}\r\n </NavItem>\r\n );\r\n } else {\r\n const existingRef = dropdownMenusOpenedArray.current.find((x) => x == item.id);\r\n const onClick = () => {\r\n if (existingRef == null) {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n }\r\n };\r\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key == 'Enter' || event.code == 'Space') {\r\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\r\n //just trigger rerendering\r\n forceUpdate({});\r\n } \r\n };\r\n\r\n const containsActiveItem = checkIfContainsItem(item, activeItem);\r\n return (\r\n <div\r\n style={{ position: 'relative' }}\r\n onMouseEnter={(event) => onMouseEnter(event, item.id ?? '')}\r\n onMouseLeave={(event) => onMouseLeave(event, item.id ?? '')}>\r\n <NavItem\r\n id={item.id + '_parentOption'}\r\n aria-expanded={Boolean(existingRef)}\r\n aria-activedescendant={containsActiveItem ? activeItem : ''}\r\n aria-controls={item.id}\r\n role=\"listbox\"\r\n onFocus={onFocus}\r\n onKeyDown={onKeyDown}\r\n tabIndex={0}\r\n className={existingRef != null || checkIfContainsItem(item, activeItem) ? 'active' : ''}\r\n key={item.label}\r\n to={null}\r\n onClick={onClick}>\r\n {item?.label} <SystemIcons.ArrowDropDown size=\"24px\" />\r\n </NavItem>\r\n <SubMenu\r\n ariaLabelledBy={item.id + '_parentOption'}\r\n ref={subMenuRefs[index]}\r\n onItemFocused={setFocusedItemId}\r\n focusedItemId={focusedItemId}\r\n activeItemId={activeItem}\r\n nestPath={[item.id]}\r\n onItemStateChanged={(item, state) => {\r\n if (state) {\r\n setActiveItemId(item);\r\n } else if (item == activeItem) setActiveItemId('');\r\n }}\r\n item={item as MenuNavigationItemTypeDesktopGroup}\r\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\r\n index={index + 1}\r\n topLevel={true}\r\n />\r\n </div>\r\n );\r\n }\r\n };\r\n\r\n\r\n const extended = dropdownMenusOpenedArray.current.find((x) => x == ExtendedMenuOption);\r\n const extendedSectionKeyHandler = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key == 'Enter' || event.code == 'Space') {\r\n event.stopPropagation();\r\n\r\n dropdownMenusOpenedArray.current = [ExtendedMenuOption];\r\n forceUpdate({});\r\n }\r\n };\r\n\r\n return (\r\n <NavContainer role=\"navigation\" className=\"GlobalNavigationMainMenu\" ref={mainMenuRef} onKeyDown={onKeyDownTop}>\r\n {items?.map(renderItem)}\r\n {items.length + 1 > numberOfItemsAllowed && (\r\n <ExtendedSection\r\n onKeyDown={(event) => extendedSectionKeyHandler(event)}\r\n onMouseEnter={(event) => onMouseEnter(event, ExtendedMenuOption)}\r\n onMouseLeave={(event) => onMouseLeave(event, ExtendedMenuOption)}>\r\n <IconButton\r\n id={ExtendedMenuOption + '_parentOption'}\r\n aria-expanded={Boolean(extended)}\r\n aria-activedescendant={checkIfContainsItem({ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }, activeItem) ? activeItem : ''}\r\n aria-controls={ExtendedMenuOption}\r\n role=\"listbox\"\r\n \r\n ref={menuButtonRef} variant={'secondary'} shape={'circular'} action={() => {}}>\r\n <SystemIcons.MoreHorizontal size=\"24px\"/>\r\n </IconButton>\r\n <SubMenu\r\n ariaLabelledBy={ExtendedMenuOption + '_parentOption'}\r\n activeItemId={activeItem}\r\n onItemFocused={setFocusedItemId}\r\n focusedItemId={focusedItemId}\r\n ref={extendedMenuOptionRef}\r\n onItemStateChanged={(item, state) => {\r\n console.log(item);\r\n console.log(state);\r\n if (state) setActiveItemId(item);\r\n else if (item == activeItem) setActiveItemId('');\r\n }}\r\n nestPath={[ExtendedMenuOption]}\r\n item={{ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }}\r\n topLevel={true}\r\n index={0}\r\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\r\n />\r\n </ExtendedSection>\r\n )}\r\n </NavContainer>\r\n );\r\n};\r\n\r\nexport default MainMenu;\r\n"],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
var React = _interopRequireWildcard(require("react"));
|
|
16
|
+
var _InputFields = require("../../InputFields");
|
|
17
|
+
var _types = require("../../types");
|
|
18
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
19
|
+
var _UnifedSearchServiceApi = _interopRequireDefault(require("./UnifedSearchServiceApi"));
|
|
20
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
+
var _templateObject;
|
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
24
|
+
var Wrapper = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n"])));
|
|
25
|
+
var SearchResult = /*#__PURE__*/(0, _createClass2.default)(function SearchResult() {
|
|
26
|
+
(0, _classCallCheck2.default)(this, SearchResult);
|
|
27
|
+
(0, _defineProperty2.default)(this, "title", void 0);
|
|
28
|
+
(0, _defineProperty2.default)(this, "description", void 0);
|
|
29
|
+
(0, _defineProperty2.default)(this, "price", void 0);
|
|
30
|
+
(0, _defineProperty2.default)(this, "url", void 0);
|
|
31
|
+
(0, _defineProperty2.default)(this, "imageUrl", void 0);
|
|
32
|
+
(0, _defineProperty2.default)(this, "isPublic", void 0);
|
|
33
|
+
(0, _defineProperty2.default)(this, "type", void 0);
|
|
34
|
+
(0, _defineProperty2.default)(this, "sku", void 0);
|
|
35
|
+
(0, _defineProperty2.default)(this, "language", void 0);
|
|
36
|
+
});
|
|
37
|
+
var UnifiedSearchComponent = function UnifiedSearchComponent(props) {
|
|
38
|
+
var _React$useState = React.useState(''),
|
|
39
|
+
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
|
40
|
+
searchTerm = _React$useState2[0],
|
|
41
|
+
setSearchTerm = _React$useState2[1];
|
|
42
|
+
var _React$useState3 = React.useState(false),
|
|
43
|
+
_React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
|
|
44
|
+
loading = _React$useState4[0],
|
|
45
|
+
setLoading = _React$useState4[1];
|
|
46
|
+
var _React$useState5 = React.useState(),
|
|
47
|
+
_React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
|
|
48
|
+
results = _React$useState6[0],
|
|
49
|
+
setSearchResults = _React$useState6[1];
|
|
50
|
+
var key = props.key,
|
|
51
|
+
accessToken = props.accessToken,
|
|
52
|
+
ussBaseUrl = props.ussBaseUrl;
|
|
53
|
+
React.useEffect(function () {
|
|
54
|
+
_UnifedSearchServiceApi.default.storeJWT(accessToken);
|
|
55
|
+
_UnifedSearchServiceApi.default.storeBaseUrl(ussBaseUrl);
|
|
56
|
+
}, [accessToken, ussBaseUrl]);
|
|
57
|
+
var findIt = function findIt(event) {
|
|
58
|
+
event.preventDefault();
|
|
59
|
+
setLoading(true);
|
|
60
|
+
_UnifedSearchServiceApi.default.quickSearch(searchTerm).then(function (response) {
|
|
61
|
+
setSearchResults(response);
|
|
62
|
+
}).catch(function (error) {}).finally(function () {
|
|
63
|
+
setLoading(false);
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapper, {
|
|
67
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputFields.SearchBar, {
|
|
68
|
+
id: "unifiedSearchInputField",
|
|
69
|
+
placeholder: "Enter your search term",
|
|
70
|
+
enterSearch: findIt,
|
|
71
|
+
setSearchTerm: setSearchTerm,
|
|
72
|
+
searchTerm: searchTerm,
|
|
73
|
+
removeSearch: function removeSearch() {
|
|
74
|
+
setSearchTerm('');
|
|
75
|
+
},
|
|
76
|
+
showDropdown: true,
|
|
77
|
+
dropdownButtonLoading: loading,
|
|
78
|
+
dropdownButtonAction: loading ? function () {} : undefined,
|
|
79
|
+
dropdownButtonLabel: loading ? 'Loading' : undefined,
|
|
80
|
+
dropdownButtonVariant: "tertiary",
|
|
81
|
+
searchList: results === null || results === void 0 ? void 0 : results.map(function (x) {
|
|
82
|
+
var _ref, _x$url;
|
|
83
|
+
return {
|
|
84
|
+
value: (_ref = (_x$url = x.url) !== null && _x$url !== void 0 ? _x$url : x.title) !== null && _ref !== void 0 ? _ref : "blank",
|
|
85
|
+
noteLabel: x.description,
|
|
86
|
+
displayLabel: x.title
|
|
87
|
+
};
|
|
88
|
+
}),
|
|
89
|
+
size: _types.Size.Medium
|
|
90
|
+
})
|
|
91
|
+
}, key);
|
|
92
|
+
};
|
|
93
|
+
UnifiedSearchComponent.propTypes = {
|
|
94
|
+
key: _propTypes.default.string.isRequired,
|
|
95
|
+
accessToken: _propTypes.default.string,
|
|
96
|
+
ussBaseUrl: _propTypes.default.string
|
|
97
|
+
};
|
|
98
|
+
var _default = UnifiedSearchComponent;
|
|
99
|
+
exports.default = _default;
|
|
100
|
+
//# sourceMappingURL=UnifedSearchComponent.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnifedSearchComponent.cjs","names":["Wrapper","styled","div","SearchResult","UnifiedSearchComponent","props","React","useState","searchTerm","setSearchTerm","loading","setLoading","results","setSearchResults","key","accessToken","ussBaseUrl","useEffect","Api","storeJWT","storeBaseUrl","findIt","event","preventDefault","quickSearch","then","response","catch","error","finally","undefined","map","x","value","url","title","noteLabel","description","displayLabel","Size","Medium"],"sources":["../../../src/GlobalNavigationBar/desktop/UnifedSearchComponent.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { SearchBar } from '../../InputFields';\r\nimport { Size, ToastColor, ToastPosition } from '../../types';\r\nimport styled from 'styled-components';\r\nimport Api from './UnifedSearchServiceApi';\r\n\r\n\r\nconst Wrapper = styled.div`\r\n`;\r\n\r\nexport interface UnifiedSearchComponentProps {\r\n key: string;\r\n accessToken?: string;\r\n ussBaseUrl?: string;\r\n} \r\n\r\nclass SearchResult\r\n{\r\n title?: string;\r\n description?: string;\r\n price?: number;\r\n url?: string;\r\n imageUrl?: string;\r\n isPublic?: boolean;\r\n type?: string;\r\n sku?: string;\r\n language?: string;\r\n}\r\n\r\nconst UnifiedSearchComponent: React.FC<UnifiedSearchComponentProps> = (props: UnifiedSearchComponentProps) => {\r\n \r\n const [searchTerm, setSearchTerm] = React.useState('');\r\n const [loading, setLoading] = React.useState(false);\r\n const [results, setSearchResults] = React.useState<SearchResult[] | undefined>();\r\n\r\n const { key, accessToken, ussBaseUrl } = props;\r\n\r\n React.useEffect(() => {\r\n Api.storeJWT(accessToken);\r\n Api.storeBaseUrl(ussBaseUrl);\r\n }, [accessToken, ussBaseUrl]);\r\n\r\n const findIt = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n setLoading(true);\r\n Api.quickSearch(searchTerm)\r\n .then((response) => {\r\n setSearchResults(response);\r\n })\r\n .catch((error) => { })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n <Wrapper key={key}>\r\n <SearchBar\r\n id=\"unifiedSearchInputField\"\r\n placeholder=\"Enter your search term\"\r\n enterSearch={findIt}\r\n setSearchTerm={setSearchTerm}\r\n searchTerm={searchTerm}\r\n removeSearch={() => {\r\n setSearchTerm('');\r\n }}\r\n showDropdown={true}\r\n dropdownButtonLoading={loading}\r\n dropdownButtonAction={loading ? () => {} : undefined}\r\n dropdownButtonLabel={loading ? 'Loading' : undefined}\r\n dropdownButtonVariant='tertiary'\r\n searchList={results?.map(x => ({\r\n value: x.url ?? x.title ?? \"blank\",\r\n noteLabel: x.description,\r\n displayLabel: x.title,\r\n }))}\r\n size={Size.Medium}\r\n />\r\n </Wrapper>\r\n );\r\n};\r\n\r\nexport default UnifiedSearchComponent;"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAA2C;AAAA;AAAA;AAAA;AAG3C,IAAMA,OAAO,GAAGC,yBAAM,CAACC,GAAG,qFACzB;AAAC,IAQIC,YAAY;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AAAA;AAalB,IAAMC,sBAA6D,GAAG,SAAhEA,sBAA6D,CAAIC,KAAkC,EAAK;EAE1G,sBAAoCC,KAAK,CAACC,QAAQ,CAAC,EAAE,CAAC;IAAA;IAA/CC,UAAU;IAAEC,aAAa;EAChC,uBAA8BH,KAAK,CAACC,QAAQ,CAAC,KAAK,CAAC;IAAA;IAA5CG,OAAO;IAAEC,UAAU;EAC1B,uBAAoCL,KAAK,CAACC,QAAQ,EAA8B;IAAA;IAAzEK,OAAO;IAAEC,gBAAgB;EAEhC,IAAQC,GAAG,GAA8BT,KAAK,CAAtCS,GAAG;IAAEC,WAAW,GAAiBV,KAAK,CAAjCU,WAAW;IAAEC,UAAU,GAAKX,KAAK,CAApBW,UAAU;EAEpCV,KAAK,CAACW,SAAS,CAAC,YAAM;IAClBC,+BAAG,CAACC,QAAQ,CAACJ,WAAW,CAAC;IACzBG,+BAAG,CAACE,YAAY,CAACJ,UAAU,CAAC;EAChC,CAAC,EAAE,CAACD,WAAW,EAAEC,UAAU,CAAC,CAAC;EAE7B,IAAMK,MAAM,GAAG,SAATA,MAAM,CAAIC,KAAsB,EAAK;IACvCA,KAAK,CAACC,cAAc,EAAE;IACtBZ,UAAU,CAAC,IAAI,CAAC;IAChBO,+BAAG,CAACM,WAAW,CAAChB,UAAU,CAAC,CAC1BiB,IAAI,CAAC,UAACC,QAAQ,EAAK;MAChBb,gBAAgB,CAACa,QAAQ,CAAC;IAC9B,CAAC,CAAC,CACDC,KAAK,CAAC,UAACC,KAAK,EAAK,CAAE,CAAC,CAAC,CACrBC,OAAO,CAAC,YAAM;MACXlB,UAAU,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC;EACN,CAAC;EAED,oBACI,qBAAC,OAAO;IAAA,uBACR,qBAAC,sBAAS;MACL,EAAE,EAAC,yBAAyB;MAC5B,WAAW,EAAC,wBAAwB;MACpC,WAAW,EAAEU,MAAO;MACpB,aAAa,EAAEZ,aAAc;MAC7B,UAAU,EAAED,UAAW;MACvB,YAAY,EAAE,wBAAM;QAClBC,aAAa,CAAC,EAAE,CAAC;MACnB,CAAE;MACF,YAAY,EAAE,IAAK;MACnB,qBAAqB,EAAEC,OAAQ;MAC/B,oBAAoB,EAAEA,OAAO,GAAG,YAAM,CAAC,CAAC,GAAGoB,SAAU;MACrD,mBAAmB,EAAEpB,OAAO,GAAG,SAAS,GAAGoB,SAAU;MACrD,qBAAqB,EAAC,UAAU;MAChC,UAAU,EAAElB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEmB,GAAG,CAAC,UAAAC,CAAC;QAAA;QAAA,OAAK;UAC5BC,KAAK,oBAAED,CAAC,CAACE,GAAG,2CAAIF,CAAC,CAACG,KAAK,uCAAI,OAAO;UAClCC,SAAS,EAAEJ,CAAC,CAACK,WAAW;UACxBC,YAAY,EAAEN,CAAC,CAACG;QACnB,CAAC;MAAA,CAAC,CAAE;MACJ,IAAI,EAAEI,WAAI,CAACC;IAAO;EAClB,GArBS1B,GAAG,CAsBV;AAEf,CAAC;AAAC;EArEEA,GAAG;EACHC,WAAW;EACXC,UAAU;AAAA;AAAA,eAqECZ,sBAAsB;AAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface UnifiedSearchComponentProps {
|
|
3
|
+
key: string;
|
|
4
|
+
accessToken?: string;
|
|
5
|
+
ussBaseUrl?: string;
|
|
6
|
+
}
|
|
7
|
+
declare const UnifiedSearchComponent: React.FC<UnifiedSearchComponentProps>;
|
|
8
|
+
export default UnifiedSearchComponent;
|