@bigbinary/neeto-folders-frontend 1.1.0
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/README.md +105 -0
- package/app/javascript/src/translations/en.json +36 -0
- package/app/javascript/src/translations/index.js +3 -0
- package/dist/cjs/components.js +931 -0
- package/dist/cjs/components.js.map +1 -0
- package/dist/cjs/constants.js +10 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/hooks.js +19 -0
- package/dist/cjs/hooks.js.map +1 -0
- package/dist/cjs/utils.js +9 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/components.js +926 -0
- package/dist/components.js.map +1 -0
- package/dist/constants.js +8 -0
- package/dist/constants.js.map +1 -0
- package/dist/hooks.js +11 -0
- package/dist/hooks.js.map +1 -0
- package/dist/pathUtils-B2uokQlx.js +74 -0
- package/dist/pathUtils-B2uokQlx.js.map +1 -0
- package/dist/pathUtils-CHuLm_t6.js +79 -0
- package/dist/pathUtils-CHuLm_t6.js.map +1 -0
- package/dist/useFolderActions-AZ7a_96r.js +210 -0
- package/dist/useFolderActions-AZ7a_96r.js.map +1 -0
- package/dist/useFolderActions-DCs7hXdW.js +223 -0
- package/dist/useFolderActions-DCs7hXdW.js.map +1 -0
- package/dist/utils.js +3 -0
- package/dist/utils.js.map +1 -0
- package/package.json +230 -0
- package/types.d.ts +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.js","sources":["../app/javascript/src/components/internal/Alerts.jsx","../app/javascript/src/components/internal/Pane/AddEdit.jsx","../app/javascript/src/components/internal/Pane/Node.jsx","../app/javascript/src/components/internal/Pane/Move/SelectableNode.jsx","../app/javascript/src/components/internal/Pane/Move/Body.jsx","../app/javascript/src/components/internal/Pane/Move/index.jsx","../app/javascript/src/components/internal/Pane/Reorder/DraggableNode.jsx","../app/javascript/src/components/internal/Pane/Reorder/index.jsx","../app/javascript/src/components/internal/Pane/index.jsx","../app/javascript/src/components/Context.jsx","../app/javascript/src/components/List/Tile.jsx","../app/javascript/src/components/List/index.jsx","../app/javascript/src/components/MoveToFolderPane.jsx","../app/javascript/src/components/Tree/Node.jsx","../app/javascript/src/components/Tree/index.jsx"],"sourcesContent":["import { useQueryParams } from \"neetocommons/react-utils\";\nimport { buildUrl } from \"neetocommons/utils\";\nimport { Alert } from \"neetoui\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { useHistory } from \"react-router-dom\";\n\nimport { useDestroyFolder } from \"hooks/reactQuery/useFoldersApi\";\nimport useFolders from \"hooks/useFolders\";\nimport useFolderStore from \"stores/foldersStore\";\nimport { isActiveFolder } from \"utils/internal\";\nimport { pathToFolder } from \"utils/pathUtils\";\n\nconst FoldersAlerts = ({ config }) => {\n const { setFolderState } = useFolderStore.pick();\n const queryParams = useQueryParams({ toCamelCase: false });\n const history = useHistory();\n const { t } = useTranslation();\n\n const { type, item } = useFolderStore.pick(\"alertState\");\n const { mutateAsync: destroyFolder, isLoading } = useDestroyFolder(config);\n const { folders } = useFolders(config);\n\n const onClose = () => setFolderState({ alertState: null });\n const alertProps = { isOpen: !!type, isSubmitting: isLoading, onClose };\n\n const onConfirmDelete = async () => {\n await destroyFolder(item.id);\n onClose();\n\n if (!isActiveFolder(item.sid) || !folders) return;\n const path = pathToFolder(folders, item.id);\n const parent = path[path.length - 2];\n if (!parent) return;\n history.replace(\n buildUrl(config.folderPath, {\n ...queryParams,\n folderId: parent.sid,\n })\n );\n };\n\n if (type === \"delete\") {\n alertProps.title = t(\"deleteFolder.title\");\n alertProps.message = <Trans i18nKey=\"deleteFolder.info\" values={item} />;\n if (config.customizeAlerts) config.customizeAlerts(type, item, alertProps);\n alertProps.onSubmit = onConfirmDelete;\n }\n\n return <Alert {...alertProps} />;\n};\n\nexport default FoldersAlerts;\n","import { useMemo } from \"react\";\n\nimport { Formik, Form } from \"formik\";\nimport { Pane, Typography } from \"neetoui\";\nimport { Input, Select, ActionBlock } from \"neetoui/formik\";\nimport { pipe, prop, values } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n useFetchFolders,\n useCreateFolder,\n useUpdateFolder,\n} from \"hooks/reactQuery/useFoldersApi\";\nimport useFolderStore from \"stores/foldersStore\";\nimport { treeToMap } from \"utils/treeUtils\";\n\nconst flattenTree = pipe(treeToMap, values);\n\nconst AddEditPane = ({ config, onClose }) => {\n const { type, item } = useFolderStore.pick(\"paneState\");\n const { data: folders } = useFetchFolders(config);\n const { mutate: createFolder } = useCreateFolder(config);\n const { mutateAsync: updateFolder } = useUpdateFolder(config);\n const { t } = useTranslation();\n\n const isEditing = type === \"edit\" && item;\n const initialValues = isEditing ? item : { name: \"\", parentId: null };\n const folderOptions = useMemo(() => flattenTree(folders), [folders]);\n\n const onSubmitForm = async values => {\n const payload = { name: values.name, parent_id: values.parentId };\n isEditing\n ? await updateFolder({ id: item.id, payload })\n : await createFolder(payload);\n onClose();\n };\n\n return (\n <>\n <Pane.Header>\n <Typography style=\"h2\">\n {isEditing ? t(\"folders.edit\") : t(\"folders.add\")}\n </Typography>\n </Pane.Header>\n <Formik {...{ initialValues }} onSubmit={onSubmitForm}>\n {({ setFieldValue }) => (\n <>\n <Pane.Body>\n <Form className=\"w-full space-y-5\">\n <Input label={t(\"folders.name\")} name=\"name\" />\n <div>\n <Select\n isClearable\n filterOption={({ value }) => value !== initialValues.id}\n getOptionLabel={prop(\"name\")}\n getOptionValue={prop(\"id\")}\n label={t(\"createFolder.parentTitle\")}\n name=\"parentId\"\n options={folderOptions}\n onChange={option =>\n setFieldValue(\"parentId\", option ? option.id : null)\n }\n />\n <Typography style=\"nano\">\n {t(\"createFolder.parentInfo\")}\n </Typography>\n </div>\n </Form>\n </Pane.Body>\n <Pane.Footer>\n <ActionBlock cancelButtonProps={{ onClick: onClose }} />\n </Pane.Footer>\n </>\n )}\n </Formik>\n </>\n );\n};\n\nexport default AddEditPane;\n","import { forwardRef } from \"react\";\n\nimport classNames from \"classnames\";\nimport { Typography } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nconst indentSize = 30;\n\nconst Node = (\n { icon = null, itemLabel, folder, depth, className, onClick, ...rest },\n ref\n) => {\n const { t } = useTranslation();\n\n const metaInfo = [];\n const childCount = folder.children?.length ?? 0;\n childCount > 0 &&\n metaInfo.push(t(\"folders.subfolderCount\", { count: childCount }));\n folder.itemCount > 0 && metaInfo.push(`${folder.itemCount} ${itemLabel}`);\n\n return (\n <div className=\"flex\">\n {Array.from({ length: depth }).map((_, index) => (\n <span\n className=\"relative border-l\"\n key={index}\n style={{ width: indentSize, left: Math.round(indentSize / 2) }}\n />\n ))}\n <div\n {...{ ...rest, onClick, ref }}\n className={classNames(\n \"relative my-1 flex cursor-pointer items-center px-2 py-1\",\n className\n )}\n >\n {icon}\n <div className=\"ml-2\">\n <Typography style=\"body3\" weight=\"medium\">\n {folder.name}\n </Typography>\n <Typography\n className=\"relative -top-0.5\"\n style=\"nano\"\n weight=\"normal\"\n >\n {metaInfo.join(\" . \")}\n </Typography>\n </div>\n </div>\n </div>\n );\n};\n\nexport default forwardRef(Node);\n","import classNames from \"classnames\";\nimport { isNotPresent, noop } from \"neetocist\";\nimport { Radio, Tooltip } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Node from \"../Node\";\n\nconst SelectableNode = ({\n folder,\n item,\n depth = 0,\n maxDepth,\n disabled,\n ...rest\n}) => {\n const { selection, onSelect } = rest;\n const { t } = useTranslation();\n\n const isDisabled = disabled || item?.id === folder.id || depth > maxDepth;\n\n const renderChildren = () => {\n if (isNotPresent(folder.children)) return null;\n\n return folder.children.map(child => (\n <SelectableNode\n {...{ ...rest, item, maxDepth }}\n depth={depth + 1}\n disabled={isDisabled}\n folder={child}\n key={child.id}\n />\n ));\n };\n\n return (\n <Tooltip\n content={t(\"moveToFolder.notAllowed\")}\n disabled={!isDisabled}\n position=\"top\"\n >\n <div className={classNames({ \"opacity-40\": isDisabled })}>\n <Node\n {...{ ...rest, depth, folder }}\n icon={\n <Radio.Item\n readOnly\n checked={selection === folder.id}\n name=\"move-folder-option\"\n />\n }\n onClick={isDisabled ? noop : () => onSelect(folder)}\n />\n {renderChildren()}\n </div>\n </Tooltip>\n );\n};\n\nexport default SelectableNode;\n","import { useState } from \"react\";\n\nimport { Button, Pane, Typography } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useFetchFolders } from \"hooks/reactQuery/useFoldersApi\";\nimport useFolderStore from \"stores/foldersStore\";\nimport { treeToMap, measureDepth } from \"utils/treeUtils\";\n\nimport SelectableNode from \"./SelectableNode\";\n\nconst PaneBody = ({\n item,\n config,\n submitButtonProps,\n cancelButtonProps,\n removeButtonProps,\n onSubmit,\n onClose,\n onRemove,\n}) => {\n const [selection, setSelection] = useState(null);\n const { setFolderState } = useFolderStore.pick();\n const { data: folders = [] } = useFetchFolders(config);\n const { t } = useTranslation();\n\n let folderDepth = 0;\n if (item) {\n // If item is a folder, measure the current depth from current folder to longest leaf.\n const foldersMap = treeToMap(folders);\n const folder = foldersMap[item.id];\n if (folder) folderDepth = measureDepth(folder);\n }\n\n const maxDepth = config.maxDepth - folderDepth;\n\n const onAddFolder = () => {\n setFolderState({ paneState: { type: \"add\", item: null } });\n };\n\n return (\n <>\n <Pane.Header className=\"flex items-center justify-between\">\n <Typography style=\"h2\">{t(\"moveToFolder.title\")}</Typography>\n <Button\n className=\"mr-2\"\n label={t(\"folders.add\")}\n style=\"link\"\n onClick={onAddFolder}\n />\n </Pane.Header>\n <Pane.Body>\n {folders.map(folder => (\n <SelectableNode\n {...{ folder, item, maxDepth, selection }}\n disabled={item?.id === folder.id || maxDepth <= 0}\n itemLabel={config.itemLabel}\n key={folder.id}\n onSelect={folder => setSelection(folder.id)}\n />\n ))}\n </Pane.Body>\n <Pane.Footer className=\"space-x-2\">\n <div className=\"flex flex-1 space-x-2\">\n <Button\n disabled={!selection}\n label={t(\"common.save\")}\n style=\"primary\"\n onClick={() => onSubmit(selection)}\n {...submitButtonProps}\n />\n <Button\n label={t(\"common.cancel\")}\n style=\"text\"\n onClick={onClose}\n {...cancelButtonProps}\n />\n </div>\n {onRemove && (\n <Button\n label={t(\"moveToFolder.remove\")}\n style=\"tertiary\"\n onClick={onRemove}\n {...removeButtonProps}\n />\n )}\n </Pane.Footer>\n </>\n );\n};\n\nexport default PaneBody;\n","import { useUpdateFolder } from \"hooks/reactQuery/useFoldersApi\";\nimport useFolderStore from \"stores/foldersStore\";\n\nimport PaneBody from \"./Body\";\n\nconst MoveFolderPane = ({ config, onClose }) => {\n const { item } = useFolderStore.pick(\"paneState\");\n const { mutate: updateFolder } = useUpdateFolder(config);\n\n const onSaveSelection = parentId => {\n const payload = { id: item.id, parentId };\n updateFolder({ id: item.id, payload }, { onSuccess: onClose });\n };\n\n return <PaneBody {...{ config, item, onClose }} onSubmit={onSaveSelection} />;\n};\n\nexport default MoveFolderPane;\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport { isNotPresent } from \"neetocist\";\n\nimport Node from \"../Node\";\n\nconst DraggableNode = ({ folder, depth = 0, ...rest }) => {\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef: setDraggableRef,\n } = useDraggable({\n id: `draggable-item--${folder.id}`,\n data: folder,\n disabled: depth <= 0,\n });\n\n const { isOver, setNodeRef: setDroppableRef } = useDroppable({\n id: `droppable-item--${folder.id}`,\n data: folder,\n disabled: isDragging,\n });\n\n const renderChildren = () => {\n if (isNotPresent(folder.children) || isDragging) return null;\n\n return folder.children.map(child => (\n <DraggableNode\n {...rest}\n depth={depth + 1}\n folder={child}\n key={child.id}\n />\n ));\n };\n\n return (\n <div>\n <Node\n {...rest}\n className={classNames({\n \"neeto-ui-bg-gray-100 opacity-50 \": isDragging,\n \"neeto-ui-border-primary-500 border\": isOver,\n \"border border-transparent\": !isOver,\n })}\n {...{ depth, folder, ...attributes, ...listeners }}\n ref={ref => {\n setDroppableRef(ref);\n setDraggableRef(ref);\n }}\n />\n {renderChildren()}\n </div>\n );\n};\n\nexport default DraggableNode;\n","import { useState } from \"react\";\n\nimport { DndContext, DragOverlay } from \"@dnd-kit/core\";\nimport { useStateWithDependency } from \"neetocommons/react-utils\";\nimport { Folder } from \"neetoicons\";\nimport { Button, Pane, Toastr, Typography } from \"neetoui\";\nimport { assoc, isEmpty } from \"ramda\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n useFetchFolders,\n useReorderFolders,\n} from \"hooks/reactQuery/useFoldersApi\";\nimport { treeToMap, measureDepth, mapToTree } from \"utils/treeUtils\";\n\nimport DraggableNode from \"./DraggableNode\";\n\nimport Node from \"../Node\";\n\nconst ReorderFoldersPane = ({ config, onClose }) => {\n const [dragItem, setDragItem] = useState(null);\n const [changes, setChanges] = useState({});\n\n const { t } = useTranslation();\n const { data: folders } = useFetchFolders(config);\n const { mutate: reorderFolders } = useReorderFolders(config);\n\n const [tree, setTree] = useStateWithDependency(\n () => ({ name: \"/\", id: null, children: folders }),\n [folders]\n );\n\n const onDragEnd = ({ active, over }) => {\n setDragItem(null);\n if (!over) return;\n\n const foldersMap = treeToMap(tree);\n const activeFolder = foldersMap[active.data.current.id];\n const overFolder = foldersMap[over.data.current.id];\n\n // Check moving inside same directory\n if (activeFolder.meta.parent?.id === overFolder.id) return;\n\n // Check moving to a folder with depth greater than the allowed limit.\n // maxDepth + 1 due to extra root node added for the tree\n const activeDepth = measureDepth(activeFolder);\n const overDepth = overFolder.meta.depth;\n if (activeDepth + overDepth >= config.maxDepth + 1) {\n Toastr.error(\n t(\"moveToFolder.depthExceeded\", { maxDepth: config.maxDepth })\n );\n\n return;\n }\n\n activeFolder.meta.parent = overFolder;\n const newTree = mapToTree(foldersMap);\n setTree(newTree);\n setChanges(assoc(activeFolder.id, overFolder.id));\n };\n\n const onSubmit = () => {\n const payload = { changes };\n reorderFolders(payload, { onSuccess: onClose });\n };\n\n const nodeProps = { icon: <Folder />, itemLabel: config.itemLabel };\n\n return (\n <>\n <Pane.Header>\n <Typography style=\"h2\">{t(\"reorderFolder.title\")}</Typography>\n </Pane.Header>\n <DndContext\n {...{ onDragEnd }}\n onDragStart={({ active }) => setDragItem(active.data.current)}\n >\n <Pane.Body>\n <DraggableNode {...nodeProps} folder={tree} key={tree.id} />\n </Pane.Body>\n <Pane.Footer className=\"space-x-2\">\n <Button\n disabled={isEmpty(changes)}\n label={t(\"common.save\")}\n style=\"primary\"\n onClick={onSubmit}\n />\n <Button label={t(\"common.cancel\")} style=\"text\" onClick={onClose} />\n </Pane.Footer>\n {createPortal(\n <DragOverlay zIndex={99999}>\n {dragItem && (\n <Node\n {...nodeProps}\n className=\"neeto-ui-bg-gray-200\"\n depth={0}\n folder={dragItem}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n </DndContext>\n </>\n );\n};\n\nexport default ReorderFoldersPane;\n","/* eslint-disable @bigbinary/neeto/no-conditional-overlays */\n\nimport { Pane } from \"neetoui\";\n\nimport { DEFAULT_CONFIG } from \"constants/config\";\nimport useFolderStore from \"stores/foldersStore\";\n\nimport AddEditPane from \"./AddEdit\";\nimport MoveFolderPane from \"./Move\";\nimport ReorderFoldersPane from \"./Reorder\";\n\nconst FoldersPane = ({ config: configProps }) => {\n const config = { ...DEFAULT_CONFIG, ...configProps };\n const { setFolderState } = useFolderStore.pick();\n const { type } = useFolderStore.pick(\"paneState\");\n\n const onClose = () => setFolderState({ paneState: null });\n const commonProps = { config, onClose };\n\n return (\n <Pane {...{ onClose }} isOpen={!!type}>\n {(type === \"edit\" || type === \"add\") && <AddEditPane {...commonProps} />}\n {type === \"move\" && <MoveFolderPane {...commonProps} />}\n {type === \"reorder\" && <ReorderFoldersPane {...commonProps} />}\n </Pane>\n );\n};\n\nexport default FoldersPane;\n","import FoldersAlerts from \"components/internal/Alerts\";\nimport FoldersPane from \"components/internal/Pane\";\n\nconst FoldersContext = ({ config, children }) => (\n <>\n {children}\n <FoldersPane {...{ config }} />\n <FoldersAlerts {...{ config }} />\n </>\n);\n\nexport default FoldersContext;\n","import MoreDropdown from \"neetomolecules/MoreDropdown\";\nimport { Checkbox, Typography, Tooltip } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\n\nconst FolderTile = ({\n isSelected,\n link,\n itemLabel,\n folder,\n actions,\n onSelect,\n}) => {\n const { t } = useTranslation();\n\n const actionCallback = callback => event => {\n event.preventDefault();\n callback(folder);\n };\n\n const menuItems = [\n {\n key: \"edit\",\n label: t(\"common.edit\"),\n onClick: actionCallback(actions.onEdit),\n },\n {\n key: \"move\",\n label: t(\"common.move\"),\n onClick: actionCallback(actions.onMove),\n },\n {\n key: \"delete\",\n label: t(\"common.delete\"),\n onClick: actionCallback(actions.onDelete),\n },\n ];\n\n const metaInfo = [];\n const childCount = folder.children?.length ?? 0;\n childCount > 0 &&\n metaInfo.push(t(\"folders.subfolderCount\", { count: childCount }));\n metaInfo.push(`${folder.itemCount || 0} ${itemLabel}`);\n\n return (\n <Link\n className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-md m-2 w-64 border p-3\"\n to={link}\n >\n <div className=\"mb-1 flex items-center justify-between\">\n <div className=\"flex items-center\">\n <Checkbox\n checked={isSelected}\n className=\"mr-2\"\n name={folder.id}\n onChange={event => onSelect(folder, event.target.checked)}\n onClick={event => event.stopPropagation()}\n />\n <Tooltip content={folder.name} delay={[300, 0]}>\n <Typography className=\"line-clamp-1\" style=\"body1\" weight=\"medium\">\n {folder.name}\n </Typography>\n </Tooltip>\n </div>\n <MoreDropdown\n {...{ menuItems }}\n dropdownProps={{ onClick: event => event.preventDefault() }}\n />\n </div>\n <Typography className=\"ml-6\" style=\"body3\">\n {metaInfo.join(\" . \")}\n </Typography>\n </Link>\n );\n};\n\nexport default FolderTile;\n","import { isNotPresent } from \"neetocist\";\nimport { useQueryParams } from \"neetocommons/react-utils\";\nimport { buildUrl } from \"neetocommons/utils\";\nimport { Typography } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport FoldersContext from \"components/Context\";\nimport { DEFAULT_CONFIG } from \"constants/config\";\nimport { useFolder, useFolders } from \"hooks\";\nimport useFolderActions from \"hooks/useFolderActions\";\n\nimport FolderTile from \"./Tile\";\n\nconst FoldersList = ({ selection = [], config: configProps, onSelect }) => {\n const config = { ...DEFAULT_CONFIG, ...configProps };\n const params = useQueryParams({ toCamelCase: false });\n const { t } = useTranslation();\n\n const { folders } = useFolders(config);\n const { folderId, folder } = useFolder(config);\n const actions = useFolderActions(config);\n const subFolders = folderId ? folder?.children : folders;\n if (isNotPresent(subFolders)) return null;\n\n return (\n <FoldersContext {...{ config }}>\n <Typography className=\"mb-2 mt-2\" style=\"h4\">\n {t(\"folders.title\")}\n </Typography>\n <div className=\"mb-6 flex flex-wrap justify-items-center\">\n {subFolders.map(folder => (\n <FolderTile\n {...{ actions, folder, onSelect }}\n isSelected={selection.includes(folder.id)}\n itemLabel={config.itemLabel}\n key={folder.id}\n link={buildUrl(config.folderPath, {\n ...params,\n folderId: folder.sid,\n })}\n />\n ))}\n </div>\n </FoldersContext>\n );\n};\n\nexport default FoldersList;\n","import { Pane } from \"neetoui\";\n\nimport PaneBody from \"components/internal/Pane/Move/Body\";\n\nconst MoveToFolderPane = ({ isOpen, onClose, ...rest }) => (\n <Pane {...{ isOpen, onClose }}>\n <PaneBody {...{ ...rest, onClose }} />\n </Pane>\n);\n\nexport default MoveToFolderPane;\n","import { Tooltip, Typography } from \"neetoui\";\nimport { NavLink } from \"react-router-dom\";\n\nconst FolderNode = ({ isActive, folder, link }) => (\n <NavLink\n activeClassName=\"active\"\n className=\"block\"\n isActive={() => isActive}\n to={link}\n >\n <Tooltip content={folder.name} delay={[300, 0]}>\n <Typography className=\"line-clamp-1\" component=\"span\" style=\"body2\">\n {folder.name}\n </Typography>\n </Tooltip>\n </NavLink>\n);\n\nexport default FolderNode;\n","import { startTransition, useEffect, useState } from \"react\";\n\nimport { isNotPresent } from \"neetocist\";\nimport { useQueryParams } from \"neetocommons/react-utils\";\nimport { buildUrl } from \"neetocommons/utils\";\nimport { Tree, Typography } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DEFAULT_CONFIG } from \"constants/config\";\nimport { useFetchFolders } from \"hooks/reactQuery/useFoldersApi\";\nimport { getActiveFolderId } from \"utils/internal\";\nimport { treeToMap } from \"utils/treeUtils\";\n\nimport FolderNode from \"./Node\";\n\nconst FoldersTree = ({ config: configProps }) => {\n const config = { ...DEFAULT_CONFIG, ...configProps };\n const [expandedKeys, setExpandedKeys] = useState([]);\n\n const { t } = useTranslation();\n const params = useQueryParams({ toCamelCase: false });\n const activeFolderSid = getActiveFolderId(config);\n const { data: folders } = useFetchFolders(config);\n\n const updateExpandedKeys = () => {\n if (!folders) return;\n // When active folder changes from external sources, update expanded keys to auto expand tree.\n const expandedKeys = [];\n const map = treeToMap(folders, \"sid\");\n const activeFolder = map[activeFolderSid];\n const parentSid = activeFolder?.meta?.parent?.sid;\n if (parentSid) expandedKeys.push(parentSid);\n setExpandedKeys(expandedKeys);\n };\n\n useEffect(() => {\n // Non urgent update.\n startTransition(updateExpandedKeys);\n }, [activeFolderSid, folders]);\n\n if (isNotPresent(folders)) {\n return (\n <Typography\n className=\"w-full text-center\"\n style=\"body2\"\n weight=\"semibold\"\n >\n {t(\"folders.noFolders\")}\n </Typography>\n );\n }\n\n return (\n <Tree\n {...{ expandedKeys }}\n autoExpandParent\n blockNode\n showLine\n componentToken={{ titleHeight: 25, indentSize: 25 }}\n fieldNames={{ key: \"sid\" }}\n selectedKeys={[activeFolderSid]}\n treeData={folders}\n titleRender={folder => (\n <FolderNode\n {...{ folder }}\n isActive={folder.sid === activeFolderSid}\n link={buildUrl(config.folderPath, {\n ...params,\n folderId: folder.sid,\n })}\n />\n )}\n onExpand={setExpandedKeys}\n />\n );\n};\n\nexport default FoldersTree;\n"],"names":["FoldersAlerts","_ref","config","_useFolderStore","useFolderStore","store","setFolderState","shallow","queryParams","useQueryParams","toCamelCase","history","useHistory","_useTranslation","useTranslation","t","_useFolderStore2","_store$alertState","_store$alertState2","type","item","_useDestroyFolder","useDestroyFolder","destroyFolder","mutateAsync","isLoading","_useFolders","useFolders","folders","onClose","alertState","alertProps","isOpen","isSubmitting","onConfirmDelete","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","path","parent","wrap","_callee$","_context","prev","next","id","isActiveFolder","sid","abrupt","pathToFolder","length","replace","buildUrl","folderPath","_objectSpread","folderId","stop","apply","arguments","title","message","_jsx","Trans","i18nKey","values","customizeAlerts","onSubmit","Alert","flattenTree","pipe","treeToMap","AddEditPane","_store$paneState","_store$paneState2","_useFetchFolders","useFetchFolders","data","_useCreateFolder","useCreateFolder","createFolder","mutate","_useUpdateFolder","useUpdateFolder","updateFolder","isEditing","initialValues","name","parentId","folderOptions","useMemo","onSubmitForm","payload","parent_id","_x","_jsxs","_Fragment","children","Pane","Header","Typography","style","Formik","_ref3","setFieldValue","Body","Form","className","Input","label","Select","isClearable","filterOption","_ref4","value","getOptionLabel","prop","getOptionValue","options","onChange","option","Footer","ActionBlock","cancelButtonProps","onClick","indentSize","Node","ref","_folder$children$leng","_folder$children","_ref$icon","icon","itemLabel","folder","depth","rest","_objectWithoutProperties","_excluded","metaInfo","childCount","push","count","itemCount","concat","Array","from","map","_","index","width","left","Math","round","classNames","weight","join","forwardRef","SelectableNode","_ref$depth","maxDepth","disabled","selection","onSelect","isDisabled","renderChildren","isNotPresent","child","_createElement","_SelectableNode","key","Tooltip","content","position","Radio","Item","readOnly","checked","noop","PaneBody","submitButtonProps","removeButtonProps","onRemove","_useState","useState","_useState2","_slicedToArray","setSelection","_useFetchFolders$data","folderDepth","foldersMap","measureDepth","onAddFolder","paneState","Button","MoveFolderPane","onSaveSelection","onSuccess","DraggableNode","_useDraggable","useDraggable","isDragging","attributes","listeners","setDraggableRef","setNodeRef","_useDroppable","useDroppable","isOver","setDroppableRef","_DraggableNode","ReorderFoldersPane","dragItem","setDragItem","_useState3","_useState4","changes","setChanges","_useReorderFolders","useReorderFolders","reorderFolders","_useStateWithDependen","useStateWithDependency","_useStateWithDependen2","tree","setTree","onDragEnd","_activeFolder$meta$pa","active","over","activeFolder","current","overFolder","meta","activeDepth","overDepth","Toastr","error","newTree","mapToTree","assoc","nodeProps","Folder","DndContext","onDragStart","isEmpty","createPortal","DragOverlay","zIndex","document","body","FoldersPane","configProps","DEFAULT_CONFIG","commonProps","FoldersContext","FolderTile","isSelected","link","actions","actionCallback","callback","event","preventDefault","menuItems","onEdit","onMove","onDelete","Link","to","Checkbox","target","stopPropagation","delay","MoreDropdown","dropdownProps","FoldersList","_ref$selection","params","_useFolder","useFolder","useFolderActions","subFolders","includes","MoveToFolderPane","FolderNode","isActive","NavLink","activeClassName","component","FoldersTree","expandedKeys","setExpandedKeys","activeFolderSid","getActiveFolderId","updateExpandedKeys","_activeFolder$meta","parentSid","useEffect","startTransition","Tree","autoExpandParent","blockNode","showLine","componentToken","titleHeight","fieldNames","selectedKeys","treeData","titleRender","onExpand"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../app/javascript/src/constants/query.js"],"sourcesContent":["export const QUERY_KEYS = Object.freeze({\n FOLDERS: \"NEETO_FOLDERS_ENGINE__FOLDERS\",\n LIST: \"LIST\",\n DETAILS: \"DETAILS\",\n});\n"],"names":["QUERY_KEYS","Object","freeze","FOLDERS","LIST","DETAILS"],"mappings":"IAAaA,UAAU,GAAGC,MAAM,CAACC,MAAM,CAAC;AACtCC,EAAAA,OAAO,EAAE,+BAA+B;AACxCC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,OAAO,EAAE;AACX,CAAC;;;;"}
|
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { u as useFolder, b as useFolderActions, a as useFolders } from './useFolderActions-AZ7a_96r.js';
|
|
2
|
+
import '@babel/runtime/helpers/defineProperty';
|
|
3
|
+
import 'i18next';
|
|
4
|
+
import '@bigbinary/neeto-cist';
|
|
5
|
+
import 'react-router-dom';
|
|
6
|
+
import 'zustand/shallow';
|
|
7
|
+
import '@tanstack/react-query';
|
|
8
|
+
import './constants.js';
|
|
9
|
+
import '@bigbinary/neeto-commons-frontend/react-utils';
|
|
10
|
+
import 'zustand';
|
|
11
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
|
+
|
|
3
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
var _walkTree = function walkTree(tree, fn) {
|
|
6
|
+
var meta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
7
|
+
index: 0,
|
|
8
|
+
depth: 0,
|
|
9
|
+
parent: null
|
|
10
|
+
};
|
|
11
|
+
fn(tree, meta);
|
|
12
|
+
if (tree.children) {
|
|
13
|
+
tree.children.forEach(function (folder, index) {
|
|
14
|
+
return _walkTree(folder, fn, {
|
|
15
|
+
parent: tree,
|
|
16
|
+
index: index,
|
|
17
|
+
depth: meta.depth + 1
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var measureDepth = function measureDepth(tree) {
|
|
23
|
+
var maxDepth = 0;
|
|
24
|
+
_walkTree(tree, function (_, meta) {
|
|
25
|
+
if (meta.depth > maxDepth) maxDepth = meta.depth;
|
|
26
|
+
});
|
|
27
|
+
return maxDepth;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// Convert tree to lookup table
|
|
31
|
+
var treeToMap = function treeToMap(tree) {
|
|
32
|
+
var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "id";
|
|
33
|
+
var roots = Array.isArray(tree) ? tree : [tree];
|
|
34
|
+
var foldersMap = {};
|
|
35
|
+
roots.forEach(function (root) {
|
|
36
|
+
_walkTree(root, function (folder, meta) {
|
|
37
|
+
foldersMap[folder[key]] = _objectSpread(_objectSpread({}, folder), {}, {
|
|
38
|
+
meta: meta
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
return foldersMap;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// Convert result of treeToMap back to tree
|
|
46
|
+
var mapToTree = function mapToTree(foldersMap) {
|
|
47
|
+
var map = {};
|
|
48
|
+
var root;
|
|
49
|
+
Object.values(foldersMap).forEach(function (item) {
|
|
50
|
+
map[item.id] = _objectSpread(_objectSpread({}, item), {}, {
|
|
51
|
+
children: []
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
Object.values(foldersMap).forEach(function (item) {
|
|
55
|
+
if (!item.meta.parent) root = map[item.id];else map[item.meta.parent.id].children.push(map[item.id]);
|
|
56
|
+
});
|
|
57
|
+
return root;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
var pathToFolder = function pathToFolder(folders, folderId) {
|
|
61
|
+
var path = [];
|
|
62
|
+
var folderMap = treeToMap(folders);
|
|
63
|
+
if (!folderMap[folderId]) return path;
|
|
64
|
+
var current = folderMap[folderId];
|
|
65
|
+
while (current) {
|
|
66
|
+
var _current$meta;
|
|
67
|
+
path.unshift(current);
|
|
68
|
+
current = (_current$meta = current.meta) === null || _current$meta === void 0 ? void 0 : _current$meta.parent;
|
|
69
|
+
}
|
|
70
|
+
return path;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export { mapToTree as a, measureDepth as m, pathToFolder as p, treeToMap as t };
|
|
74
|
+
//# sourceMappingURL=pathUtils-B2uokQlx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathUtils-B2uokQlx.js","sources":["../app/javascript/src/utils/treeUtils.js","../app/javascript/src/utils/pathUtils.js"],"sourcesContent":["export const walkTree = (\n tree,\n fn,\n meta = { index: 0, depth: 0, parent: null }\n) => {\n fn(tree, meta);\n if (tree.children) {\n tree.children.forEach((folder, index) =>\n walkTree(folder, fn, { parent: tree, index, depth: meta.depth + 1 })\n );\n }\n};\n\n// Measures the maximum depth to bottom of the tree\nexport const measureDepth = tree => {\n let maxDepth = 0;\n\n walkTree(tree, (_, meta) => {\n if (meta.depth > maxDepth) maxDepth = meta.depth;\n });\n\n return maxDepth;\n};\n\n// Convert tree to lookup table\nexport const treeToMap = (tree, key = \"id\") => {\n const roots = Array.isArray(tree) ? tree : [tree];\n const foldersMap = {};\n\n roots.forEach(root => {\n walkTree(root, (folder, meta) => {\n foldersMap[folder[key]] = { ...folder, meta };\n });\n });\n\n return foldersMap;\n};\n\n// Convert result of treeToMap back to tree\nexport const mapToTree = foldersMap => {\n const map = {};\n let root;\n\n Object.values(foldersMap).forEach(item => {\n map[item.id] = { ...item, children: [] };\n });\n\n Object.values(foldersMap).forEach(item => {\n if (!item.meta.parent) root = map[item.id];\n else map[item.meta.parent.id].children.push(map[item.id]);\n });\n\n return root;\n};\n","import { treeToMap } from \"./treeUtils\";\n\nexport const pathToFolder = (folders, folderId) => {\n const path = [];\n const folderMap = treeToMap(folders);\n if (!folderMap[folderId]) return path;\n\n let current = folderMap[folderId];\n while (current) {\n path.unshift(current);\n current = current.meta?.parent;\n }\n\n return path;\n};\n"],"names":["walkTree","tree","fn","meta","arguments","length","undefined","index","depth","parent","children","forEach","folder","measureDepth","maxDepth","_","treeToMap","key","roots","Array","isArray","foldersMap","root","_objectSpread","mapToTree","map","Object","values","item","id","push","pathToFolder","folders","folderId","path","folderMap","current","_current$meta","unshift"],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
+
|
|
5
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
|
+
var _walkTree = function walkTree(tree, fn) {
|
|
8
|
+
var meta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
9
|
+
index: 0,
|
|
10
|
+
depth: 0,
|
|
11
|
+
parent: null
|
|
12
|
+
};
|
|
13
|
+
fn(tree, meta);
|
|
14
|
+
if (tree.children) {
|
|
15
|
+
tree.children.forEach(function (folder, index) {
|
|
16
|
+
return _walkTree(folder, fn, {
|
|
17
|
+
parent: tree,
|
|
18
|
+
index: index,
|
|
19
|
+
depth: meta.depth + 1
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
var measureDepth = function measureDepth(tree) {
|
|
25
|
+
var maxDepth = 0;
|
|
26
|
+
_walkTree(tree, function (_, meta) {
|
|
27
|
+
if (meta.depth > maxDepth) maxDepth = meta.depth;
|
|
28
|
+
});
|
|
29
|
+
return maxDepth;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// Convert tree to lookup table
|
|
33
|
+
var treeToMap = function treeToMap(tree) {
|
|
34
|
+
var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "id";
|
|
35
|
+
var roots = Array.isArray(tree) ? tree : [tree];
|
|
36
|
+
var foldersMap = {};
|
|
37
|
+
roots.forEach(function (root) {
|
|
38
|
+
_walkTree(root, function (folder, meta) {
|
|
39
|
+
foldersMap[folder[key]] = _objectSpread(_objectSpread({}, folder), {}, {
|
|
40
|
+
meta: meta
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
return foldersMap;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Convert result of treeToMap back to tree
|
|
48
|
+
var mapToTree = function mapToTree(foldersMap) {
|
|
49
|
+
var map = {};
|
|
50
|
+
var root;
|
|
51
|
+
Object.values(foldersMap).forEach(function (item) {
|
|
52
|
+
map[item.id] = _objectSpread(_objectSpread({}, item), {}, {
|
|
53
|
+
children: []
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
Object.values(foldersMap).forEach(function (item) {
|
|
57
|
+
if (!item.meta.parent) root = map[item.id];else map[item.meta.parent.id].children.push(map[item.id]);
|
|
58
|
+
});
|
|
59
|
+
return root;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
var pathToFolder = function pathToFolder(folders, folderId) {
|
|
63
|
+
var path = [];
|
|
64
|
+
var folderMap = treeToMap(folders);
|
|
65
|
+
if (!folderMap[folderId]) return path;
|
|
66
|
+
var current = folderMap[folderId];
|
|
67
|
+
while (current) {
|
|
68
|
+
var _current$meta;
|
|
69
|
+
path.unshift(current);
|
|
70
|
+
current = (_current$meta = current.meta) === null || _current$meta === void 0 ? void 0 : _current$meta.parent;
|
|
71
|
+
}
|
|
72
|
+
return path;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
exports.mapToTree = mapToTree;
|
|
76
|
+
exports.measureDepth = measureDepth;
|
|
77
|
+
exports.pathToFolder = pathToFolder;
|
|
78
|
+
exports.treeToMap = treeToMap;
|
|
79
|
+
//# sourceMappingURL=pathUtils-CHuLm_t6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathUtils-CHuLm_t6.js","sources":["../app/javascript/src/utils/treeUtils.js","../app/javascript/src/utils/pathUtils.js"],"sourcesContent":["export const walkTree = (\n tree,\n fn,\n meta = { index: 0, depth: 0, parent: null }\n) => {\n fn(tree, meta);\n if (tree.children) {\n tree.children.forEach((folder, index) =>\n walkTree(folder, fn, { parent: tree, index, depth: meta.depth + 1 })\n );\n }\n};\n\n// Measures the maximum depth to bottom of the tree\nexport const measureDepth = tree => {\n let maxDepth = 0;\n\n walkTree(tree, (_, meta) => {\n if (meta.depth > maxDepth) maxDepth = meta.depth;\n });\n\n return maxDepth;\n};\n\n// Convert tree to lookup table\nexport const treeToMap = (tree, key = \"id\") => {\n const roots = Array.isArray(tree) ? tree : [tree];\n const foldersMap = {};\n\n roots.forEach(root => {\n walkTree(root, (folder, meta) => {\n foldersMap[folder[key]] = { ...folder, meta };\n });\n });\n\n return foldersMap;\n};\n\n// Convert result of treeToMap back to tree\nexport const mapToTree = foldersMap => {\n const map = {};\n let root;\n\n Object.values(foldersMap).forEach(item => {\n map[item.id] = { ...item, children: [] };\n });\n\n Object.values(foldersMap).forEach(item => {\n if (!item.meta.parent) root = map[item.id];\n else map[item.meta.parent.id].children.push(map[item.id]);\n });\n\n return root;\n};\n","import { treeToMap } from \"./treeUtils\";\n\nexport const pathToFolder = (folders, folderId) => {\n const path = [];\n const folderMap = treeToMap(folders);\n if (!folderMap[folderId]) return path;\n\n let current = folderMap[folderId];\n while (current) {\n path.unshift(current);\n current = current.meta?.parent;\n }\n\n return path;\n};\n"],"names":["walkTree","tree","fn","meta","arguments","length","undefined","index","depth","parent","children","forEach","folder","measureDepth","maxDepth","_","treeToMap","key","roots","Array","isArray","foldersMap","root","_objectSpread","mapToTree","map","Object","values","item","id","push","pathToFolder","folders","folderId","path","folderMap","current","_current$meta","unshift"],"mappings":"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"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
|
+
import { t } from 'i18next';
|
|
3
|
+
import { noop } from '@bigbinary/neeto-cist';
|
|
4
|
+
import { matchPath } from 'react-router-dom';
|
|
5
|
+
import { shallow } from 'zustand/shallow';
|
|
6
|
+
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
7
|
+
import { QUERY_KEYS } from './constants.js';
|
|
8
|
+
import { useMutationWithInvalidation, withImmutableActions } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
9
|
+
import { create } from 'zustand';
|
|
10
|
+
|
|
11
|
+
var useDestroyMutation = function useDestroyMutation(config, api) {
|
|
12
|
+
var queryClient = useQueryClient();
|
|
13
|
+
|
|
14
|
+
// eslint-disable-next-line @bigbinary/neeto/use-use-mutation-with-invalidation-hook
|
|
15
|
+
return useMutationWithInvalidation(api, {
|
|
16
|
+
keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST]].concat(config.itemKeys),
|
|
17
|
+
onSuccess: function onSuccess() {
|
|
18
|
+
queryClient.invalidateQueries({
|
|
19
|
+
queryKey: [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.DETAILS],
|
|
20
|
+
refetchType: "none"
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
var useFetchFolders = function useFetchFolders(config) {
|
|
26
|
+
return useQuery({
|
|
27
|
+
queryKey: [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST],
|
|
28
|
+
queryFn: config.api.fetch
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
var useShowFolder = function useShowFolder(config, folderId) {
|
|
32
|
+
return useQuery({
|
|
33
|
+
queryKey: [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.DETAILS, folderId],
|
|
34
|
+
queryFn: function queryFn() {
|
|
35
|
+
return config.api.get(folderId);
|
|
36
|
+
},
|
|
37
|
+
enabled: !!folderId
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
var useCreateFolder = function useCreateFolder(config) {
|
|
41
|
+
return useMutationWithInvalidation(config.api.create, {
|
|
42
|
+
keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]]
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var useUpdateFolder = function useUpdateFolder(config) {
|
|
46
|
+
return useMutationWithInvalidation(config.api.update, {
|
|
47
|
+
keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]]
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
var useReorderFolders = function useReorderFolders(config) {
|
|
51
|
+
return useMutationWithInvalidation(config.api.reorder, {
|
|
52
|
+
keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]]
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
var useDestroyFolder = function useDestroyFolder(config) {
|
|
56
|
+
return useDestroyMutation(config, config.api.destroy);
|
|
57
|
+
};
|
|
58
|
+
var useBulkUpdateFolders = function useBulkUpdateFolders(config) {
|
|
59
|
+
return useMutationWithInvalidation(config.api.bulkUpdate, {
|
|
60
|
+
keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]]
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
var useBulkDestroyFolders = function useBulkDestroyFolders(config) {
|
|
64
|
+
return useDestroyMutation(config, config.api.bulkDestroy);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
var DEFAULT_CONFIG = {
|
|
68
|
+
type: "FOLDER",
|
|
69
|
+
// For query keys with different associated entities
|
|
70
|
+
maxDepth: 2,
|
|
71
|
+
// Maximum allowed depth for folder tree
|
|
72
|
+
folderPath: "/folders/:folderId",
|
|
73
|
+
// Path for handling URL redirections
|
|
74
|
+
itemLabel: t("common.items"),
|
|
75
|
+
// For displaying the item label in counts
|
|
76
|
+
itemKeys: [],
|
|
77
|
+
// For invalidation purposes
|
|
78
|
+
api: {
|
|
79
|
+
// Folder CRUD
|
|
80
|
+
fetch: noop,
|
|
81
|
+
get: noop,
|
|
82
|
+
create: noop,
|
|
83
|
+
update: noop,
|
|
84
|
+
destroy: noop,
|
|
85
|
+
bulkUpdate: noop,
|
|
86
|
+
bulkDestroy: noop
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
91
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
92
|
+
var useFolders = function useFolders(configArg) {
|
|
93
|
+
var config = _objectSpread$1(_objectSpread$1({}, DEFAULT_CONFIG), configArg);
|
|
94
|
+
var _useFetchFolders = useFetchFolders(config),
|
|
95
|
+
folders = _useFetchFolders.data,
|
|
96
|
+
isLoading = _useFetchFolders.isLoading;
|
|
97
|
+
return {
|
|
98
|
+
isLoading: isLoading,
|
|
99
|
+
folders: folders
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
/** @type {import("neetocommons/react-utils").ZustandStoreHook} */
|
|
104
|
+
var useFolderStore = create(withImmutableActions(function (set) {
|
|
105
|
+
return {
|
|
106
|
+
paneState: null,
|
|
107
|
+
alertState: null,
|
|
108
|
+
selectedItem: null,
|
|
109
|
+
setFolderState: set
|
|
110
|
+
};
|
|
111
|
+
}));
|
|
112
|
+
|
|
113
|
+
var getActiveFolderId = function getActiveFolderId(config) {
|
|
114
|
+
var _matchPath;
|
|
115
|
+
return (_matchPath = matchPath(window.location.pathname, config.folderPath)) === null || _matchPath === void 0 || (_matchPath = _matchPath.params) === null || _matchPath === void 0 ? void 0 : _matchPath.folderId;
|
|
116
|
+
};
|
|
117
|
+
var isActiveFolder = function isActiveFolder(config, folderId) {
|
|
118
|
+
return getActiveFolderId(config) === folderId;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
122
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
123
|
+
var useFolder = function useFolder(configArg) {
|
|
124
|
+
var config = _objectSpread(_objectSpread({}, DEFAULT_CONFIG), configArg);
|
|
125
|
+
var folderId = getActiveFolderId(config);
|
|
126
|
+
var _useShowFolder = useShowFolder(config, folderId),
|
|
127
|
+
folder = _useShowFolder.data,
|
|
128
|
+
isLoading = _useShowFolder.isLoading;
|
|
129
|
+
return {
|
|
130
|
+
isLoading: isLoading,
|
|
131
|
+
folderId: folderId,
|
|
132
|
+
folder: folder
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
var useFolderActions = function useFolderActions(config) {
|
|
137
|
+
var queryClient = useQueryClient();
|
|
138
|
+
var _useFolderStore = useFolderStore(function (store) {
|
|
139
|
+
return {
|
|
140
|
+
setFolderState: store["setFolderState"]
|
|
141
|
+
};
|
|
142
|
+
}, shallow),
|
|
143
|
+
setFolderState = _useFolderStore.setFolderState;
|
|
144
|
+
var _useBulkUpdateFolders = useBulkUpdateFolders(config),
|
|
145
|
+
onBulkUpdate = _useBulkUpdateFolders.mutateAsync,
|
|
146
|
+
isUpdating = _useBulkUpdateFolders.isPending;
|
|
147
|
+
var _useBulkDestroyFolder = useBulkDestroyFolders(config),
|
|
148
|
+
onBulkDelete = _useBulkDestroyFolder.mutateAsync,
|
|
149
|
+
isDeleting = _useBulkDestroyFolder.isPending;
|
|
150
|
+
var onInvalidate = function onInvalidate() {
|
|
151
|
+
queryClient.invalidateQueries({
|
|
152
|
+
queryKey: [QUERY_KEYS.FOLDERS, config.type]
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
var onAdd = function onAdd() {
|
|
156
|
+
return setFolderState({
|
|
157
|
+
paneState: {
|
|
158
|
+
type: "add",
|
|
159
|
+
item: null
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
var onEdit = function onEdit(item) {
|
|
164
|
+
return setFolderState({
|
|
165
|
+
paneState: {
|
|
166
|
+
type: "edit",
|
|
167
|
+
item: item
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
};
|
|
171
|
+
var onMove = function onMove(item) {
|
|
172
|
+
return setFolderState({
|
|
173
|
+
paneState: {
|
|
174
|
+
type: "move",
|
|
175
|
+
item: item
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
var onDelete = function onDelete(item) {
|
|
180
|
+
return setFolderState({
|
|
181
|
+
alertState: {
|
|
182
|
+
type: "delete",
|
|
183
|
+
item: item
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
};
|
|
187
|
+
var onReorder = function onReorder() {
|
|
188
|
+
return setFolderState({
|
|
189
|
+
paneState: {
|
|
190
|
+
type: "reorder",
|
|
191
|
+
item: null
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
};
|
|
195
|
+
var isPending = isUpdating || isDeleting;
|
|
196
|
+
return {
|
|
197
|
+
isPending: isPending,
|
|
198
|
+
onAdd: onAdd,
|
|
199
|
+
onEdit: onEdit,
|
|
200
|
+
onMove: onMove,
|
|
201
|
+
onDelete: onDelete,
|
|
202
|
+
onReorder: onReorder,
|
|
203
|
+
onInvalidate: onInvalidate,
|
|
204
|
+
onBulkUpdate: onBulkUpdate,
|
|
205
|
+
onBulkDelete: onBulkDelete
|
|
206
|
+
};
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
export { DEFAULT_CONFIG as D, useFolders as a, useFolderActions as b, useFolderStore as c, useDestroyFolder as d, useFetchFolders as e, useCreateFolder as f, useUpdateFolder as g, useReorderFolders as h, isActiveFolder as i, getActiveFolderId as j, useFolder as u };
|
|
210
|
+
//# sourceMappingURL=useFolderActions-AZ7a_96r.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFolderActions-AZ7a_96r.js","sources":["../app/javascript/src/hooks/reactQuery/useFoldersApi.js","../app/javascript/src/constants/config.js","../app/javascript/src/hooks/useFolders.js","../app/javascript/src/stores/foldersStore.js","../app/javascript/src/utils/internal.js","../app/javascript/src/hooks/useFolder.js","../app/javascript/src/hooks/useFolderActions.js"],"sourcesContent":["import { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { useMutationWithInvalidation } from \"neetocommons/react-utils\";\n\nimport { QUERY_KEYS } from \"constants/query\";\n\nconst useDestroyMutation = (config, api) => {\n const queryClient = useQueryClient();\n\n // eslint-disable-next-line @bigbinary/neeto/use-use-mutation-with-invalidation-hook\n return useMutationWithInvalidation(api, {\n keysToInvalidate: [\n [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST],\n ].concat(config.itemKeys),\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.DETAILS],\n refetchType: \"none\",\n });\n },\n });\n};\n\nexport const useFetchFolders = config =>\n useQuery({\n queryKey: [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST],\n queryFn: config.api.fetch,\n });\n\nexport const useShowFolder = (config, folderId) =>\n useQuery({\n queryKey: [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.DETAILS, folderId],\n queryFn: () => config.api.get(folderId),\n enabled: !!folderId,\n });\n\nexport const useCreateFolder = config =>\n useMutationWithInvalidation(config.api.create, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useUpdateFolder = config =>\n useMutationWithInvalidation(config.api.update, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useReorderFolders = config =>\n useMutationWithInvalidation(config.api.reorder, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useDestroyFolder = config =>\n useDestroyMutation(config, config.api.destroy);\n\nexport const useBulkUpdateFolders = config =>\n useMutationWithInvalidation(config.api.bulkUpdate, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useBulkDestroyFolders = config =>\n useDestroyMutation(config, config.api.bulkDestroy);\n","import { t } from \"i18next\";\nimport { noop } from \"neetocist\";\n\nexport const DEFAULT_CONFIG = {\n type: \"FOLDER\", // For query keys with different associated entities\n maxDepth: 2, // Maximum allowed depth for folder tree\n folderPath: \"/folders/:folderId\", // Path for handling URL redirections\n itemLabel: t(\"common.items\"), // For displaying the item label in counts\n itemKeys: [], // For invalidation purposes\n api: {\n // Folder CRUD\n fetch: noop,\n get: noop,\n create: noop,\n update: noop,\n destroy: noop,\n bulkUpdate: noop,\n bulkDestroy: noop,\n },\n};\n","import { DEFAULT_CONFIG } from \"constants/config\";\nimport { useFetchFolders } from \"hooks/reactQuery/useFoldersApi\";\n\nconst useFolders = configArg => {\n const config = { ...DEFAULT_CONFIG, ...configArg };\n const { data: folders, isLoading } = useFetchFolders(config);\n\n return { isLoading, folders };\n};\n\nexport default useFolders;\n","import { withImmutableActions } from \"neetocommons/react-utils\";\nimport { create } from \"zustand\";\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useFolderStore = create(\n withImmutableActions(set => ({\n paneState: null,\n alertState: null,\n selectedItem: null,\n setFolderState: set,\n }))\n);\n\nexport default useFolderStore;\n","import { matchPath } from \"react-router-dom\";\n\nexport const getActiveFolderId = config =>\n matchPath(window.location.pathname, config.folderPath)?.params?.folderId;\n\nexport const isActiveFolder = (config, folderId) =>\n getActiveFolderId(config) === folderId;\n","import { DEFAULT_CONFIG } from \"constants/config\";\nimport { useShowFolder } from \"hooks/reactQuery/useFoldersApi\";\nimport { getActiveFolderId } from \"utils/internal\";\n\nconst useFolder = configArg => {\n const config = { ...DEFAULT_CONFIG, ...configArg };\n const folderId = getActiveFolderId(config);\n\n const { data: folder, isLoading } = useShowFolder(config, folderId);\n\n return { isLoading, folderId, folder };\n};\n\nexport default useFolder;\n","import { useQueryClient } from \"@tanstack/react-query\";\n\nimport { QUERY_KEYS } from \"constants/query\";\nimport useFolderStore from \"stores/foldersStore\";\n\nimport {\n useBulkUpdateFolders,\n useBulkDestroyFolders,\n} from \"./reactQuery/useFoldersApi\";\n\nconst useFolderActions = config => {\n const queryClient = useQueryClient();\n const { setFolderState } = useFolderStore.pick();\n\n const { mutateAsync: onBulkUpdate, isPending: isUpdating } =\n useBulkUpdateFolders(config);\n\n const { mutateAsync: onBulkDelete, isPending: isDeleting } =\n useBulkDestroyFolders(config);\n\n const onInvalidate = () => {\n queryClient.invalidateQueries({\n queryKey: [QUERY_KEYS.FOLDERS, config.type],\n });\n };\n\n const onAdd = () =>\n setFolderState({ paneState: { type: \"add\", item: null } });\n\n const onEdit = item => setFolderState({ paneState: { type: \"edit\", item } });\n\n const onMove = item => setFolderState({ paneState: { type: \"move\", item } });\n\n const onDelete = item =>\n setFolderState({ alertState: { type: \"delete\", item } });\n\n const onReorder = () =>\n setFolderState({ paneState: { type: \"reorder\", item: null } });\n\n const isPending = isUpdating || isDeleting;\n\n return {\n isPending,\n onAdd,\n onEdit,\n onMove,\n onDelete,\n onReorder,\n onInvalidate,\n onBulkUpdate,\n onBulkDelete,\n };\n};\n\nexport default useFolderActions;\n"],"names":["useDestroyMutation","config","api","queryClient","useQueryClient","useMutationWithInvalidation","keysToInvalidate","QUERY_KEYS","FOLDERS","type","LIST","concat","itemKeys","onSuccess","invalidateQueries","queryKey","DETAILS","refetchType","useFetchFolders","useQuery","queryFn","fetch","useShowFolder","folderId","get","enabled","useCreateFolder","create","useUpdateFolder","update","useReorderFolders","reorder","useDestroyFolder","destroy","useBulkUpdateFolders","bulkUpdate","useBulkDestroyFolders","bulkDestroy","DEFAULT_CONFIG","maxDepth","folderPath","itemLabel","t","noop","useFolders","configArg","_objectSpread","_useFetchFolders","folders","data","isLoading","useFolderStore","withImmutableActions","set","paneState","alertState","selectedItem","setFolderState","getActiveFolderId","_matchPath","matchPath","window","location","pathname","params","isActiveFolder","useFolder","_useShowFolder","folder","useFolderActions","_useFolderStore","store","shallow","_useBulkUpdateFolders","onBulkUpdate","mutateAsync","isUpdating","isPending","_useBulkDestroyFolder","onBulkDelete","isDeleting","onInvalidate","onAdd","item","onEdit","onMove","onDelete","onReorder"],"mappings":"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"}
|