@craftercms/studio-ui
Version:
Services, components, models & utils to build CrafterCMS authoring extensions.
86 lines (84 loc) • 2.93 kB
JavaScript
/*
* Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3 as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import List from '@mui/material/List';
import NavItem from './PathNavigatorItem';
import React, { useMemo } from 'react';
import useUpdateRefs from '../../hooks/useUpdateRefs';
function PathNavigatorList(props) {
var _a;
const {
items,
onPathSelected,
onPreview,
locale,
computeActiveItems,
isSelectMode,
onSelectItem,
onOpenItemMenu,
onItemClicked,
showItemNavigateToButton
} = props;
const fnRefs = useUpdateRefs({ computeActiveItems });
const active = useMemo(() => {
var _a, _b, _c;
return (_c =
(_b = (_a = fnRefs.current).computeActiveItems) === null || _b === void 0 ? void 0 : _b.call(_a, items)) !==
null && _c !== void 0
? _c
: [];
}, [items, fnRefs]);
return React.createElement(
List,
{
component: 'nav',
disablePadding: true,
classes: { root: (_a = props.classes) === null || _a === void 0 ? void 0 : _a.root }
},
items === null || items === void 0
? void 0
: items.map((item) =>
React.createElement(NavItem, {
item: item,
key: item.id,
isActive: active.includes(item.path),
locale: locale,
onChangeParent: onPathSelected,
onPreview: onPreview,
isSelectMode: isSelectMode,
onItemChecked: onSelectItem,
onOpenItemMenu: onOpenItemMenu,
onItemClicked: onItemClicked,
showItemNavigateToButton: showItemNavigateToButton
})
)
);
}
export default PathNavigatorList;