All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.resources.js.admin.components.MoveModal.js Maven / Gradle / Ivy

The newest version!
/**
 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

import {TreeView as ClayTreeView} from '@clayui/core';
import ClayIcon from '@clayui/icon';
import classnames from 'classnames';
import {getOpener} from 'frontend-js-web';
import PropTypes from 'prop-types';
import React, {useMemo, useState} from 'react';

import getSearchItems from '../utils/getSearchItems';
import normalizeItems from '../utils/normalizeItems';
import SearchField from './SearchField';

const ITEM_TYPES_SYMBOL = {
	KBArticle: 'document-text',
	KBFolder: 'folder',
};

const SELECT_EVENT_NAME = 'selectKBMoveFolder';

export default function MoveModal({items: initialItems, moveParentKBObjectId}) {
	const items = useMemo(() => normalizeItems(initialItems), [initialItems]);

	const searchItems = useMemo(
		() => getSearchItems(initialItems),
		[initialItems]
	);

	const [searchActive, setSearchActive] = useState(false);

	const handleItemMove = (currentItem, destinationItem, index) => {
		getOpener().Liferay.fire(SELECT_EVENT_NAME, {
			destinationItem,
			index,
		});
	};

	const onItemClick = (destinationItem) => {
		const index = {next: destinationItem.children.length};
		getOpener().Liferay.fire(SELECT_EVENT_NAME, {destinationItem, index});
	};

	const handleSearchChange = ({isSearchActive}) => {
		setSearchActive(isSearchActive);
	};

	const handleSearchOnclickItem = (searchItem) => {
		const selectedItem = items.reduce(function reducer(acc, item) {
			if (item.id === searchItem.id) {
				acc.push(item);
			}

			if (item.children) {
				item.children.reduce(reducer, acc);
			}

			return acc;
		}, []);

		onItemClick(selectedItem[0]);
	};

	const [selectedItemId, setSelectedItemId] = useState();

	return (
		
{!searchActive && ( {(item) => { return ( { event.stopPropagation(); setSelectedItemId(item.id); onItemClick(item); }} > {item.name} {(item) => { return ( {item.name} ); }} ); }} )}
); } const itemShape = { classNameId: PropTypes.string.isRequired, href: PropTypes.string.isRequired, id: PropTypes.string.isRequired, name: PropTypes.string.isRequired, type: PropTypes.oneOf(Object.keys(ITEM_TYPES_SYMBOL)).isRequired, }; itemShape.children = PropTypes.arrayOf(PropTypes.shape(itemShape)); MoveModal.propTypes = { items: PropTypes.arrayOf(PropTypes.shape(itemShape)), moveParentKBObjectId: PropTypes.string.isRequired, };




© 2015 - 2025 Weber Informatics LLC | Privacy Policy