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

META-INF.resources.js.SelectFolder.js Maven / Gradle / Ivy

There is a newer version: 5.0.177
Show newest version
/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library 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.
 */

import {TreeView as ClayTreeView} from '@clayui/core';
import ClayEmptyState from '@clayui/empty-state';
import ClayForm, {ClayInput} from '@clayui/form';
import ClayIcon from '@clayui/icon';
import ClayLayout from '@clayui/layout';
import {getOpener} from 'frontend-js-web';
import React, {useMemo, useState} from 'react';

const SelectFolder = ({itemSelectorSaveEvent, nodes}) => {
	const [filterQuery, setFilterQuery] = useState('');

	const handleSelectionChange = (item) => {
		getOpener().Liferay.fire(itemSelectorSaveEvent, {
			data: {
				folderId: item.id,
				folderName: item.name,
			},
		});
	};

	return (
		
			
				
					
						
								setFilterQuery(event.target.value)
							}
							placeholder={`${Liferay.Language.get('search')}`}
							type="text"
						/>

						
							
); }; function FolderTree({filterQuery, handleSelectionChange, items: initialItems}) { const [items, setItems] = useState(initialItems); const nodeByName = (items, name) => { return items.reduce(function reducer(acc, item) { if (item.name?.toLowerCase().includes(name.toLowerCase())) { acc.push(item); } else if (item.children) { acc.concat(item.children.reduce(reducer, acc)); } return acc; }, []); }; const filteredItems = useMemo(() => { if (!filterQuery) { return items; } return nodeByName(items, filterQuery); }, [items, filterQuery]); const onClick = (event, item) => { event.preventDefault(); handleSelectionChange(item); }; const onKeyUp = (event, item) => { if (event.key === ' ' || event.key === 'Enter') { event.preventDefault(); handleSelectionChange(item); } }; return filteredItems.length ? ( {(item) => ( onClick(event, item)} onKeyUp={(event) => onKeyUp(event, item)} > {item.name} {(item) => ( onClick(event, item)} onKeyUp={(event) => onKeyUp(event, item)} > {item.name} )} )} ) : ( ); } export default SelectFolder;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy