{"version":3,"sources":["webpack:///./js/react/menu/MenuList.tsx","webpack:///./js/react/menu/MenuListContainer.tsx","webpack:///./js/react/menu/MenuRoot.tsx","webpack:///./js/react/hooks/useFilters.js"],"names":["MenuList","_ref","currentMenu","onBackPress","onBrowsePress","homeLabel","backLabel","allPrefix","cssHasToolBar","Level","initSimplebar","isMobile","data-simplebar","_useState2","_slicedToArray","useState","cssClass","setCssClass","useEffect","setTimeout","active","react_default","a","createElement","className","style","zIndex","data-id","Id","href","Url","onClick","event","MenuList_IconChevronRight","Items","_extends","concat","Object","isEmpty","SectionName","Name","IsShowSectionName","target","Target","Fragment","map","item","_item$Items","liCss","IsActive","length","type","renderMenuItem","IconChevronRight","viewBox","xlinkHref","propTypes","PropTypes","any","isRequired","func","string","DEFAULT_MENU","IsAZListLink","ParentId","ParentName","TargetId","MenuListContainer","$navMain","document","querySelector","$header","_useHabitat","useHabitat","_useHabitat$rootMenu","rootMenu","_useHabitat$homeLabel","_useHabitat$backLabel","_useHabitat$allPrefix","initCollection","_toConsumableArray","listSelected","data","tree","arguments","undefined","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","next","done","value","list","err","return","reduce","acc","_objectSpread","_defineProperty","MenuListContainer_slicedToArray","collection","setCollection","observer","MutationObserver","mutationList","forEach","mutation","attributeName","height","window","innerHeight","clientHeight","observe","attributes","preventDefault","keys","key","menu_MenuList","client","GraphQLClient","url","MenuRoot","useFilters","graphql_hooks","Provider","esm","reachHistory","globalHistory","menu_MenuListContainer","FilterContext","createContext","FilterProvider","children","_useReducer2","useReducer","filterReducer","state","dispatch","selectFilter","payload","deselectFilter","resetFilter","useContext","action","index","indexOf","slice","Error"],"mappings":"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","file":"menu-list-a452379f4d4502038c25.js","sourcesContent":["import React, { useEffect, useState } from 'react';\r\nimport { isEmpty } from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { Menu } from '../../model/Menu';\r\n\r\nconst CSS_CLASS_TOOL_BAR = 'has-tool-bar';\r\nconst CSS_CLASS_SUB_MENU = 'sub-menu-container';\r\nconst CSS_CLASS_SUB_MENU_ACTIVE = 'sub-menu-container active';\r\n\r\ninterface Props{\r\n currentMenu:Menu;\r\n onBackPress:(item:Menu, event: React.MouseEvent)=>void;\r\n onBrowsePress:(item:Menu,event: React.MouseEvent)=>void;\r\n homeLabel:string;\r\n backLabel:string;\r\n allPrefix:string;\r\n}\r\n\r\nconst MenuList: React.FC = ({ currentMenu, onBackPress, onBrowsePress, homeLabel, backLabel, allPrefix }) => {\r\n const cssHasToolBar = currentMenu?.Level > 0 ? CSS_CLASS_TOOL_BAR : '';\r\n const initSimplebar = isMobile ? {} : { 'data-simplebar': 'init' };\r\n const [cssClass, setCssClass] = useState(CSS_CLASS_SUB_MENU);\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n setCssClass(currentMenu.active ? CSS_CLASS_SUB_MENU_ACTIVE : CSS_CLASS_SUB_MENU);\r\n }, 50);\r\n }, [currentMenu.active]);\r\n\r\n const renderPrefixName = () => {\r\n if (\r\n (!isEmpty(currentMenu.SectionName) || !isEmpty(currentMenu.Name)) &&\r\n currentMenu.Level > 0 &&\r\n currentMenu.IsShowSectionName\r\n ) {\r\n return (\r\n
  • \r\n \r\n {isEmpty(currentMenu.SectionName)\r\n ? `${allPrefix} ${currentMenu.Name}`\r\n : currentMenu.SectionName}\r\n \r\n
  • \r\n );\r\n }\r\n return <>;\r\n };\r\n\r\n const renderMenuItem = (item:Menu) => {\r\n const liCss = `side-navigation__item side-navigation__item--l${item.Level} ${\r\n item.IsActive ? 'side-navigation__item--active' : ''\r\n }`;\r\n return (\r\n <>\r\n
  • \r\n
    \r\n onBrowsePress(item, event)}\r\n >\r\n {item.Name}\r\n \r\n {item.Items?.length > 0 && (\r\n onBrowsePress(item, event)}\r\n className=\"side-navigation__browse\"\r\n type=\"button\"\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n
  • \r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n {currentMenu?.Level > 0 && (\r\n onBackPress(currentMenu, event)}\r\n >\r\n \r\n \r\n \r\n {currentMenu.Level > 1 ? (\r\n

    {backLabel}

    \r\n ) : (\r\n

    {homeLabel}

    \r\n )}\r\n \r\n )}\r\n {currentMenu.Items && (\r\n
      \r\n {renderPrefixName()}\r\n {currentMenu.Items.map(item => (\r\n <>{renderMenuItem(item)}\r\n ))}\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nconst IconChevronRight = () => (\r\n \r\n \r\n \r\n);\r\n\r\nMenuList.propTypes = {\r\n currentMenu: PropTypes.any.isRequired,\r\n onBrowsePress: PropTypes.func.isRequired,\r\n onBackPress: PropTypes.func.isRequired,\r\n homeLabel: PropTypes.string.isRequired,\r\n backLabel: PropTypes.string.isRequired,\r\n allPrefix: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default MenuList;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useHabitat } from '../shared/HabitatContext';\r\nimport MenuList from './MenuList';\r\nimport { Menu } from '../../model/Menu';\r\n\r\nconst DEFAULT_MENU: Menu = {\r\n Id: 0,\r\n IsAZListLink: false,\r\n IsActive: false,\r\n IsShowSectionName: false,\r\n Items: [],\r\n Level: 0,\r\n Name: '',\r\n ParentId: 0,\r\n ParentName: '',\r\n SectionName: '',\r\n Target: '',\r\n TargetId: 0,\r\n Url: '/',\r\n active:false\r\n};\r\nconst MenuListContainer = () => {\r\n const $navMain = document.querySelector('.js-nav-main');\r\n const $header = document.querySelector('.header');\r\n const {\r\n rootMenu = DEFAULT_MENU,\r\n homeLabel = '',\r\n backLabel = '',\r\n allPrefix = '',\r\n }: {\r\n rootMenu?: Menu;\r\n homeLabel?: string;\r\n backLabel?: string;\r\n allPrefix?: string;\r\n } = useHabitat();\r\n\r\n const getActiveCollection = (): Menu[] => {\r\n const listSelected = (data, tree: Menu[] = []) => {\r\n // eslint-disable-next-line no-restricted-syntax\r\n for (const item of data) {\r\n if (item.IsActive && item.ParentId !== 1) {\r\n return tree;\r\n }\r\n const list = listSelected(item.Items || [], [...tree, item]);\r\n if (list) {\r\n return list;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n return [rootMenu, ...(listSelected(rootMenu.Items) || [])].reduce(\r\n (acc, item) => ({ ...acc, [item.Id]: { ...item, active: true } }),\r\n {},\r\n );\r\n };\r\n const initCollection = getActiveCollection();\r\n const [collection, setCollection] = useState({});\r\n\r\n const setNavMainHeight = () => {\r\n if ($navMain && $header) {\r\n $navMain.style.height = `${window.innerHeight - $header.clientHeight}px`;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const observer = new MutationObserver(mutationList => {\r\n mutationList.forEach(mutation => {\r\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\r\n setCollection(initCollection);\r\n setNavMainHeight();\r\n }\r\n });\r\n });\r\n\r\n if ($navMain) observer.observe($navMain, { attributes: true });\r\n }, []);\r\n\r\n const onBrowsePress =(item:Menu,event: React.MouseEvent)=>{\r\n if (item.Items && item.Items.length) {\r\n event.preventDefault();\r\n setCollection(data => ({\r\n ...data,\r\n [item.Id]: {\r\n ...item,\r\n active: true,\r\n },\r\n }));\r\n }\r\n }\r\n\r\n const onBackPress = (item:Menu, event: React.MouseEvent) => {\r\n event.preventDefault();\r\n setCollection(data => ({\r\n ...data,\r\n [item.Id]: {\r\n ...data[item.Id],\r\n active: false,\r\n },\r\n }));\r\n };\r\n\r\n return (\r\n
    \r\n {Object.keys(collection).map(key => (\r\n \r\n ))}\r\n
    \r\n );\r\n};\r\n\r\nexport default MenuListContainer;\r\n","import { ClientContext, GraphQLClient } from 'graphql-hooks';\r\nimport { globalHistory } from '@reach/router';\r\nimport React from 'react';\r\nimport { QueryParamProvider } from 'use-query-params';\r\nimport { FilterProvider } from \"../hooks/useFilters\";\r\nimport MenuListContainer from \"./MenuListContainer\"; \r\n\r\nconst client = new GraphQLClient({\r\n url: '/api/graphql',\r\n});\r\n\r\nconst MenuRoot = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default MenuRoot;\r\n","import { createContext, createElement, useContext, useReducer } from 'react';\r\n\r\nconst FilterContext = createContext();\r\n\r\nconst FilterProvider = ({ children }) => {\r\n const [state, dispatch] = useReducer(filterReducer, []);\r\n\r\n return createElement(FilterContext.Provider, {\r\n children,\r\n value: {\r\n state,\r\n selectFilter,\r\n deselectFilter,\r\n resetFilter,\r\n },\r\n });\r\n\r\n function selectFilter(value) {\r\n return dispatch({\r\n type: 'select',\r\n payload: value,\r\n });\r\n }\r\n\r\n function deselectFilter(value) {\r\n return dispatch({\r\n type: 'deselect',\r\n payload: value,\r\n });\r\n }\r\n\r\n function resetFilter() {\r\n return dispatch({\r\n type: 'reset',\r\n });\r\n }\r\n};\r\n\r\nfunction useFilters() {\r\n return useContext(FilterContext);\r\n}\r\n\r\nfunction filterReducer(state, action) {\r\n switch (action.type) {\r\n case 'select': {\r\n return [...state, action.payload];\r\n }\r\n case 'deselect': {\r\n const index = state.indexOf(action.payload);\r\n return [...state.slice(0, index), ...state.slice(index + 1)];\r\n }\r\n case 'reset': {\r\n return [];\r\n }\r\n default:\r\n throw new Error('Invalid action type.');\r\n }\r\n}\r\n\r\nexport { FilterProvider, useFilters };\r\n"],"sourceRoot":""}