@leav/ui 1.6.0-b8aae5a2 → 1.6.0-d2d86b41
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/dist/_gqlTypes/index.d.ts +302 -27
- package/dist/_gqlTypes/index.js +173 -0
- package/dist/_gqlTypes/index.js.map +1 -1
- package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js +20 -12
- package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js.map +1 -1
- package/dist/components/Explorer/Explorer.js +2 -2
- package/dist/components/Explorer/Explorer.js.map +1 -1
- package/dist/components/Filters/filter-items/EmptyValueCheckbox.js +4 -4
- package/dist/components/Filters/filter-items/EmptyValueCheckbox.js.map +1 -1
- package/dist/components/Filters/index.d.ts +1 -0
- package/dist/components/Filters/index.js +1 -0
- package/dist/components/Filters/index.js.map +1 -1
- package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.d.ts +1 -3
- package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js +6 -2
- package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js.map +1 -1
- package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js +15 -17
- package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js.map +1 -1
- package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js +0 -6
- package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js.map +1 -1
- package/dist/components/LibraryItemsList/ViewPanel/View/View.d.ts +1 -3
- package/dist/components/LibraryItemsList/ViewPanel/View/View.js +6 -2
- package/dist/components/LibraryItemsList/ViewPanel/View/View.js.map +1 -1
- package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js +36 -14
- package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js.map +1 -1
- package/dist/components/RecordEdition/EditRecord/EditRecord.d.ts +1 -0
- package/dist/components/RecordEdition/EditRecord/EditRecord.js +3 -3
- package/dist/components/RecordEdition/EditRecord/EditRecord.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.d.ts +1 -0
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js +2 -2
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js.map +1 -1
- package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js +2 -2
- package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/schema.d.ts +3 -3
- package/dist/hooks/useIFrameMessenger/schema.js +1 -1
- package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
- package/dist/locales/en/shared.json +3 -3
- package/dist/locales/fr/shared.json +3 -3
- package/package.json +9 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FiltersPanel.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/FiltersPanel/FiltersPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {DownOutlined} from '@ant-design/icons';\nimport {faAngleLeft} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {Button, Dropdown, Space} from 'antd';\nimport {DragDropContext, Draggable, Droppable, type DropResult, type ResponderProvided} from 'react-beautiful-dnd';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport Filter from './Filter/Filter';\n\nconst Wrapper = styled.div`\n width: 100%;\n display: flex;\n flex-flow: column nowrap;\n border-right: ${themeVars.borderLightColor} 1px solid;\n overflow-y: auto;\n width: 1000px;\n`;\n\nconst Header = styled.div`\n width: 100%;\n background-color: ${themeVars.headerBg};\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: space-between;\n padding: 0.3rem 0.3rem 0.3rem 1rem;\n font-weight: 700;\n border-bottom: 1px solid ${themeVars.borderLightColor};\n\n & > * {\n :first-of-type {\n display: grid;\n column-gap: 8px;\n grid-template-columns: repeat(3, auto);\n align-items: center;\n justify-items: center;\n }\n\n :last-of-type {\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 8px;\n grid-template-columns: repeat(2, auto);\n }\n }\n`;\n\nconst FiltersWrapper = styled.div`\n height: calc(100% - 7rem);\n overflow: auto;\n`;\n\nconst ListFilters = styled.div`\n display: grid;\n`;\n\nfunction FiltersPanel(): JSX.Element {\n const {t} = useSharedTranslation();\n\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n\n const _resetFilters = () => {\n searchDispatch({type: SearchActionTypes.RESET_FILTERS});\n };\n\n const _disableFilters = () => {\n searchDispatch({type: SearchActionTypes.DISABLE_FILTERS});\n };\n\n const _enableFilters = () => {\n searchDispatch({type: SearchActionTypes.ENABLE_FILTERS});\n };\n\n const _handleHide = () => {\n searchDispatch({type: SearchActionTypes.SET_SIDEBAR, visible: false, sidebarType: searchState.sideBar.type});\n };\n\n const onDragEnd = (result: DropResult, provided: ResponderProvided) => {\n if (!result.destination) {\n return;\n }\n\n const newFilter = searchState.filters\n .map(filter => ({\n ...filter,\n index:\n result.source.index === filter.index\n ? result.destination.index\n : result.destination.index === filter.index\n ? result.source.index\n : filter.index,\n }))\n .sort((a, b) => a.index - b.index);\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilter,\n });\n };\n\n const filtersSorted = searchState.filters.sort((a, b) => a.index - b.index);\n\n const _handleApplyFilters = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n const allFiltersDisabled = searchState.filters.every(f => f.active === false);\n const allFiltersEnabled = searchState.filters.every(f => f.active === true);\n\n return (\n <Wrapper>\n <Header>\n <Dropdown\n menu={{\n items: [\n {\n key: 'disable',\n disabled: allFiltersDisabled,\n onClick: _disableFilters,\n label: t('filters.disable-filters'),\n },\n {\n key: 'enable',\n disabled: allFiltersEnabled,\n onClick: _enableFilters,\n label: t('filters.enable-filters'),\n },\n {\n key: 'remove',\n disabled: !searchState.filters.length,\n onClick: _resetFilters,\n label: t('filters.remove-filters'),\n },\n ],\n }}\n >\n <Button type=\"text\" style={{display: 'inline-flex'}}>\n {t('filters.filters')}\n <DownOutlined style={{marginTop: '5px', marginLeft: '-3px'}} />\n </Button>\n </Dropdown>\n <Space size=\"small\">\n <Button disabled={!searchState.filters.length} onClick={_handleApplyFilters}>\n {t('filters.apply')}\n </Button>\n <Button onClick={_handleHide} icon={<FontAwesomeIcon icon={faAngleLeft} />} />\n </Space>\n </Header>\n\n <FiltersWrapper>\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId=\"droppable\">\n {providedDroppable => (\n <ListFilters {...providedDroppable.droppableProps} ref={providedDroppable.innerRef}>\n {filtersSorted.map(filter => (\n <Draggable\n key={filter.index}\n draggableId={filter.index.toString()}\n index={filter.index}\n >\n {provided => (\n <div ref={provided.innerRef} {...provided.draggableProps}>\n <Filter\n key={filter.index}\n filter={filter}\n handleProps={provided.dragHandleProps}\n />\n </div>\n )}\n </Draggable>\n ))}\n {providedDroppable.placeholder}\n </ListFilters>\n )}\n </Droppable>\n </DragDropContext>\n </FiltersWrapper>\n </Wrapper>\n );\n}\n\nexport default FiltersPanel;\n"]}
|
|
1
|
+
{"version":3,"file":"FiltersPanel.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/FiltersPanel/FiltersPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {DownOutlined} from '@ant-design/icons';\nimport {faAngleLeft} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {Button, Dropdown, Space} from 'antd';\nimport {DndContext, closestCenter} from '@dnd-kit/core';\nimport {SortableContext, verticalListSortingStrategy, arrayMove} from '@dnd-kit/sortable';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport Filter from './Filter/Filter';\n\nconst Wrapper = styled.div`\n width: 100%;\n display: flex;\n flex-flow: column nowrap;\n border-right: ${themeVars.borderLightColor} 1px solid;\n overflow-y: auto;\n width: 1000px;\n`;\n\nconst Header = styled.div`\n width: 100%;\n background-color: ${themeVars.headerBg};\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: space-between;\n padding: 0.3rem 0.3rem 0.3rem 1rem;\n font-weight: 700;\n border-bottom: 1px solid ${themeVars.borderLightColor};\n\n & > * {\n :first-of-type {\n display: grid;\n column-gap: 8px;\n grid-template-columns: repeat(3, auto);\n align-items: center;\n justify-items: center;\n }\n\n :last-of-type {\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 8px;\n grid-template-columns: repeat(2, auto);\n }\n }\n`;\n\nconst FiltersWrapper = styled.div`\n height: calc(100% - 7rem);\n overflow: auto;\n`;\n\nconst ListFilters = styled.div`\n display: grid;\n`;\n\nfunction FiltersPanel(): JSX.Element {\n const {t} = useSharedTranslation();\n\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n\n const _resetFilters = () => {\n searchDispatch({type: SearchActionTypes.RESET_FILTERS});\n };\n\n const _disableFilters = () => {\n searchDispatch({type: SearchActionTypes.DISABLE_FILTERS});\n };\n\n const _enableFilters = () => {\n searchDispatch({type: SearchActionTypes.ENABLE_FILTERS});\n };\n\n const _handleHide = () => {\n searchDispatch({type: SearchActionTypes.SET_SIDEBAR, visible: false, sidebarType: searchState.sideBar.type});\n };\n\n const handleDragEnd = event => {\n const {active, over} = event;\n if (!over || active.id === over.id) {\n return;\n }\n\n const oldIndex = searchState.filters.findIndex(f => f.key === active.id);\n const newIndex = searchState.filters.findIndex(f => f.key === over.id);\n if (oldIndex === -1 || newIndex === -1) {\n return;\n }\n\n const filters = arrayMove(searchState.filters, oldIndex, newIndex).map((filter, idx) => ({\n ...filter,\n index: idx,\n }));\n\n searchDispatch({type: SearchActionTypes.SET_FILTERS, filters});\n };\n\n const filtersSorted = searchState.filters.sort((a, b) => a.index - b.index);\n\n const _handleApplyFilters = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n const allFiltersDisabled = searchState.filters.every(f => f.active === false);\n const allFiltersEnabled = searchState.filters.every(f => f.active === true);\n\n return (\n <Wrapper>\n <Header>\n <Dropdown\n menu={{\n items: [\n {\n key: 'disable',\n disabled: allFiltersDisabled,\n onClick: _disableFilters,\n label: t('filters.disable-filters'),\n },\n {\n key: 'enable',\n disabled: allFiltersEnabled,\n onClick: _enableFilters,\n label: t('filters.enable-filters'),\n },\n {\n key: 'remove',\n disabled: !searchState.filters.length,\n onClick: _resetFilters,\n label: t('filters.remove-filters'),\n },\n ],\n }}\n >\n <Button type=\"text\" style={{display: 'inline-flex'}}>\n {t('filters.filters')}\n <DownOutlined style={{marginTop: '5px', marginLeft: '-3px'}} />\n </Button>\n </Dropdown>\n <Space size=\"small\">\n <Button disabled={!searchState.filters.length} onClick={_handleApplyFilters}>\n {t('filters.apply')}\n </Button>\n <Button onClick={_handleHide} icon={<FontAwesomeIcon icon={faAngleLeft} />} />\n </Space>\n </Header>\n\n <FiltersWrapper>\n <DndContext collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext items={filtersSorted.map(v => v.key)} strategy={verticalListSortingStrategy}>\n <ListFilters>\n {filtersSorted.map(filter => (\n <Filter key={filter.key} filter={filter} />\n ))}\n </ListFilters>\n </SortableContext>\n </DndContext>\n </FiltersWrapper>\n </Wrapper>\n );\n}\n\nexport default FiltersPanel;\n"]}
|
|
@@ -72,12 +72,6 @@ function ChooseTableColumns({ visible, onClose }) {
|
|
|
72
72
|
const _handleCancel = () => {
|
|
73
73
|
onClose();
|
|
74
74
|
};
|
|
75
|
-
// hack to disable warning "Droppable: unsupported nested scroll container" from react-beautiful-dnd,
|
|
76
|
-
// remove "overflow: auto" on class "ant-modal-wrap"
|
|
77
|
-
const elements = document.getElementsByClassName('ant-modal-wrap');
|
|
78
|
-
if (elements.length) {
|
|
79
|
-
elements[0].style.overflow = 'initial';
|
|
80
|
-
}
|
|
81
75
|
return (_jsx(Modal, { open: visible, onCancel: _handleCancel, title: t('table-columns-selection.header'), width: "70rem", centered: true, footer: [
|
|
82
76
|
_jsx(Button, { onClick: _handleCancel, children: t('table-columns-selection.cancel') }, "Cancel"),
|
|
83
77
|
_jsx(Button, { type: "primary", onClick: handleSubmit, children: t('table-columns-selection.submit') }, "Submit"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChooseTableColumns.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ChooseTableColumns.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {localizedTranslation} from '@leav/utils';\nimport {Button, Modal} from 'antd';\nimport {useState} from 'react';\nimport AttributesSelectionList from '_ui/components/AttributesSelectionList';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport useLang from '_ui/hooks/useLang';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type ISelectedAttribute} from '_ui/types/attributes';\nimport {type IAttribute, type IField} from '_ui/types/search';\nimport {AttributeFormat, AttributeType} from '_ui/_gqlTypes';\nimport {getFieldsKeyFromAttribute} from '../../helpers/getFieldsKeyFromAttribute';\n\ninterface IChooseTableColumnsProps {\n visible: boolean;\n onClose: () => void;\n}\n\nfunction ChooseTableColumns({visible, onClose}: IChooseTableColumnsProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [selectedAttributes, setSelectedAttributes] = useState<ISelectedAttribute[]>(\n (searchState?.fields ?? []).map(col => {\n const currentAttribute = searchState.attributes.find(\n attribute => attribute.id === col.id && attribute.library === col.library,\n );\n\n return {\n ...col,\n path: col.key,\n label: currentAttribute?.label ?? null,\n multiple_values: !!col.multipleValues,\n };\n }),\n );\n\n const handleSubmit = () => {\n const noDuplicateNewAttribute: IAttribute[] = selectedAttributes\n .filter(\n selectedAttribute =>\n !searchState.attributes.some(\n attribute =>\n attribute.id === selectedAttribute.id && attribute.library === selectedAttribute.library,\n ),\n )\n .map(a => ({\n ...a,\n isLink: a.type === AttributeType.tree,\n isMultiple: a.multiple_values,\n format: a.format ?? undefined,\n }));\n\n const allAttributes = [...(searchState?.attributes ?? []), ...noDuplicateNewAttribute];\n\n searchDispatch({type: SearchActionTypes.SET_ATTRIBUTES, attributes: allAttributes});\n\n const newFields: IField[] = selectedAttributes.reduce((acc, selectedAttribute) => {\n const attribute = allAttributes.find(\n currentAttr =>\n currentAttr.id === selectedAttribute.id && currentAttr.library === selectedAttribute.library,\n );\n\n if (!attribute) {\n return acc;\n }\n\n const key = getFieldsKeyFromAttribute(selectedAttribute);\n\n const label =\n typeof attribute.label === 'string' ? attribute.label : localizedTranslation(attribute.label, lang);\n\n const embeddedData = selectedAttribute.embeddedFieldData && {\n format: selectedAttribute.embeddedFieldData?.format ?? AttributeFormat.text,\n path: selectedAttribute.path,\n };\n\n const field: IField = {\n id: selectedAttribute.id,\n library: selectedAttribute.library,\n label,\n key,\n type: selectedAttribute.type,\n format: attribute.format,\n parentAttributeData: selectedAttribute?.parentAttributeData,\n treeData: selectedAttribute.treeData,\n embeddedData,\n recordLibrary:\n selectedAttribute?.parentAttributeData?.type === AttributeType.tree\n ? selectedAttribute.path.split('.')[1]\n : null,\n };\n\n return [...acc, field];\n }, []);\n\n searchDispatch({\n type: SearchActionTypes.SET_FIELDS,\n fields: newFields,\n });\n\n onClose();\n };\n\n const _handleCancel = () => {\n onClose();\n };\n\n return (\n <Modal\n open={visible}\n onCancel={_handleCancel}\n title={t('table-columns-selection.header')}\n width=\"70rem\"\n centered\n footer={[\n <Button key=\"Cancel\" onClick={_handleCancel}>\n {t('table-columns-selection.cancel')}\n </Button>,\n <Button type=\"primary\" key=\"Submit\" onClick={handleSubmit}>\n {t('table-columns-selection.submit')}\n </Button>,\n ]}\n >\n <AttributesSelectionList\n library={searchState.library.id}\n selectedAttributes={selectedAttributes}\n onSelectionChange={setSelectedAttributes}\n />\n </Modal>\n );\n}\n\nexport default ChooseTableColumns;\n"]}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { type DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';
|
|
2
1
|
import { type IView } from '../../../../types/views';
|
|
3
2
|
interface IViewProps {
|
|
4
3
|
view: IView;
|
|
5
4
|
onEdit: (viewId: string) => void;
|
|
6
|
-
handleProps?: DraggableProvidedDragHandleProps;
|
|
7
5
|
}
|
|
8
|
-
declare function View({ view, onEdit
|
|
6
|
+
declare function View({ view, onEdit }: IViewProps): JSX.Element;
|
|
9
7
|
export default View;
|
|
@@ -4,6 +4,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
4
4
|
// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
|
|
5
5
|
import { CopyOutlined, DeleteOutlined, EditOutlined } from '@ant-design/icons';
|
|
6
6
|
import { localizedTranslation, objectToNameValueArray } from '@leav/utils';
|
|
7
|
+
import { useSortable } from '@dnd-kit/sortable';
|
|
8
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
7
9
|
import { Button, Tooltip, Typography } from 'antd';
|
|
8
10
|
import omit from 'lodash/omit';
|
|
9
11
|
import { useState } from 'react';
|
|
@@ -60,7 +62,7 @@ const Description = styled.div `
|
|
|
60
62
|
margin-left: 10px;
|
|
61
63
|
overflow: hidden;
|
|
62
64
|
`;
|
|
63
|
-
function View({ view, onEdit
|
|
65
|
+
function View({ view, onEdit }) {
|
|
64
66
|
const { t } = useSharedTranslation();
|
|
65
67
|
const { lang, defaultLang } = useLang();
|
|
66
68
|
const { state: searchState, dispatch: searchDispatch } = useSearchReducer();
|
|
@@ -68,6 +70,8 @@ function View({ view, onEdit, handleProps }) {
|
|
|
68
70
|
const { saveView } = useExecuteSaveViewMutation();
|
|
69
71
|
const { deleteView } = useExecuteDeleteViewMutation();
|
|
70
72
|
const { updateViewsOrder } = useUpdateViewsOrderMutation(searchState.library.id);
|
|
73
|
+
const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: view.id });
|
|
74
|
+
const style = { transform: CSS.Transform.toString(transform), transition };
|
|
71
75
|
const _changeView = () => {
|
|
72
76
|
searchDispatch({ type: SearchActionTypes.CHANGE_VIEW, view });
|
|
73
77
|
};
|
|
@@ -134,7 +138,7 @@ function View({ view, onEdit, handleProps }) {
|
|
|
134
138
|
const selected = view.id === searchState.view.current?.id;
|
|
135
139
|
const [isActionsShown, setIsActionsShown] = useState(false);
|
|
136
140
|
const viewLabel = localizedTranslation(view.label, lang);
|
|
137
|
-
return (_jsxs(Wrapper, { selected: selected, onClick: _changeView, color: view.color, onMouseEnter: () => setIsActionsShown(true), onMouseLeave: () => setIsActionsShown(false), children: [_jsx(Handle, { className: "view-handle", ...
|
|
141
|
+
return (_jsxs(Wrapper, { ref: setNodeRef, style: style, ...attributes, selected: selected, onClick: _changeView, color: view.color, onMouseEnter: () => setIsActionsShown(true), onMouseLeave: () => setIsActionsShown(false), children: [_jsx(Handle, { className: "view-handle", ...listeners }), _jsxs(Infos, { children: [_jsxs(Title, { "data-testid": "view-title", children: [_jsx(IconViewType, { type: view.display.type }), _jsx(Typography.Text, { ellipsis: { tooltip: true }, style: { padding: '0 .5em', width: 'calc(100% - 1em)' }, children: viewLabel })] }), view.description && (_jsxs(Description, { children: [_jsx(Typography.Paragraph, { ellipsis: {
|
|
138
142
|
rows: ROWS_DESCRIPTION,
|
|
139
143
|
expandable: true,
|
|
140
144
|
onExpand: _onExpand,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/ViewPanel/View/View.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {CopyOutlined, DeleteOutlined, EditOutlined} from '@ant-design/icons';\nimport {localizedTranslation, objectToNameValueArray} from '@leav/utils';\nimport {Button, Tooltip, Typography} from 'antd';\nimport omit from 'lodash/omit';\nimport {useState} from 'react';\nimport {type DraggableProvidedDragHandleProps} from 'react-beautiful-dnd';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport IconViewType from '_ui/components/LibraryItemsList/IconViewType';\nimport {PREFIX_SHARED_VIEWS_ORDER_KEY, PREFIX_USER_VIEWS_ORDER_KEY} from '_ui/constants';\nimport {useLang} from '_ui/hooks';\nimport useExecuteSaveViewMutation from '_ui/hooks/useExecuteSaveViewMutation/useExecuteSaveViewMutation';\nimport useExecuteDeleteViewMutation from '_ui/hooks/useExecuteDeleteViewMutation/useExecuteDeleteViewMutation';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type IView} from '_ui/types/views';\nimport {type ViewInput, ViewSizes, ViewTypes} from '_ui/_gqlTypes';\nimport {getRequestFromFilters} from '_ui/_utils/getRequestFromFilter';\nimport {defaultView} from '../../constants';\nimport useUpdateViewsOrderMutation from '../../hooks/useUpdateViewsOrderMutation';\nimport {faUserTag} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\n\ninterface IWrapperProps {\n selected: boolean;\n}\n\nconst Infos = styled.div`\n width: 100%;\n`;\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${({selected}) => (selected ? `${themeVars.activeColor} ` : 'none')};\n padding: 0.5rem;\n display: flex;\n align-items: center;\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n font-size: 12px;\n font-family: sans-serif;\n letter-spacing: 2px;\n color: ${themeVars.borderLightColor};\n text-shadow: 1px 0 1px black;\n\n &::after {\n content: '.. .. .. ..';\n }\n`;\n\nconst Title = styled.div`\n display: flex;\n align-items: center;\n margin-left: 10px;\n`;\n\nconst Description = styled.div`\n opacity: 0.8;\n margin-left: 10px;\n overflow: hidden;\n`;\n\ninterface IViewProps {\n view: IView;\n onEdit: (viewId: string) => void;\n handleProps?: DraggableProvidedDragHandleProps;\n}\n\nfunction View({view, onEdit, handleProps}: IViewProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang, defaultLang} = useLang();\n\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [description, setDescription] = useState<{expand: boolean; key: number}>({expand: false, key: 0});\n\n const {saveView} = useExecuteSaveViewMutation();\n\n const {deleteView} = useExecuteDeleteViewMutation();\n const {updateViewsOrder} = useUpdateViewsOrderMutation(searchState.library.id);\n\n const _changeView = () => {\n searchDispatch({type: SearchActionTypes.CHANGE_VIEW, view});\n };\n\n const ROWS_DESCRIPTION = 3;\n\n const _handleDelete = async (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n await deleteView(view.id);\n\n const newOrder = (view.shared ? searchState.sharedViewsOrder : searchState.userViewsOrder).filter(\n vId => vId !== view.id,\n );\n\n await updateViewsOrder({\n key: (view.shared ? PREFIX_SHARED_VIEWS_ORDER_KEY : PREFIX_USER_VIEWS_ORDER_KEY) + searchState.library.id,\n value: newOrder,\n global: false,\n });\n\n if (view.id === searchState.view.current.id) {\n searchDispatch({type: SearchActionTypes.CHANGE_VIEW, view: defaultView});\n }\n };\n\n const _handleDuplicate = async (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n try {\n const newView: ViewInput = {\n ...omit(view, ['id', 'owner']),\n library: searchState.library.id,\n label: {\n [defaultLang]: `${localizedTranslation(view.label, lang)} (${t('global.copy')})`,\n },\n filters: getRequestFromFilters(view.filters),\n display: {\n size: ViewSizes.MEDIUM,\n type: ViewTypes.list,\n },\n valuesVersions: objectToNameValueArray(view.valuesVersions).map(version => ({\n treeId: version.name,\n treeNode: version.value.id,\n })),\n shared: false,\n };\n\n const newViewRes = await saveView({\n view: newView,\n });\n\n await updateViewsOrder({\n key: PREFIX_USER_VIEWS_ORDER_KEY + newView.library,\n value: [...searchState.userViewsOrder, newViewRes.data.saveView.id],\n global: false,\n });\n } catch (e) {\n console.error(e);\n }\n };\n\n const _handleEdit = (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n onEdit(view.id);\n };\n\n const _onExpand = () => {\n setDescription({expand: true, key: description.key});\n };\n\n const _onClose = () => {\n setDescription({expand: false, key: description.key + 1});\n };\n\n const selected = view.id === searchState.view.current?.id;\n\n const [isActionsShown, setIsActionsShown] = useState(false);\n\n const viewLabel = localizedTranslation(view.label, lang);\n\n return (\n <Wrapper\n key={view.id}\n selected={selected}\n onClick={_changeView}\n color={view.color}\n onMouseEnter={() => setIsActionsShown(true)}\n onMouseLeave={() => setIsActionsShown(false)}\n >\n <Handle className=\"view-handle\" {...handleProps} />\n <Infos>\n <Title data-testid=\"view-title\">\n <IconViewType type={view.display.type} />\n <Typography.Text ellipsis={{tooltip: true}} style={{padding: '0 .5em', width: 'calc(100% - 1em)'}}>\n {viewLabel}\n </Typography.Text>\n </Title>\n {view.description && (\n <Description>\n <Typography.Paragraph\n key={description.key}\n ellipsis={{\n rows: ROWS_DESCRIPTION,\n expandable: true,\n onExpand: _onExpand,\n symbol: t('view.see-more'),\n }}\n style={{marginBottom: 0}}\n >\n {localizedTranslation(view.description, lang)}\n </Typography.Paragraph>\n {description.expand && (\n <a\n href=\"!#\"\n onClick={ev => {\n ev.preventDefault();\n _onClose();\n }}\n >\n {t('global.close')}\n </a>\n )}\n </Description>\n )}\n </Infos>\n {!view.owner && !isActionsShown && <FontAwesomeIcon icon={faUserTag} />}\n {isActionsShown && (\n <>\n <Tooltip title={t('global.edit')}>\n <Button\n key=\"edit\"\n onClick={_handleEdit}\n disabled={!view.owner}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<EditOutlined />}\n />\n </Tooltip>\n <Tooltip title={t('global.duplicate')}>\n <Button\n key=\"duplicate\"\n onClick={_handleDuplicate}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<CopyOutlined />}\n />\n </Tooltip>\n <Tooltip title={t('global.delete')}>\n <Button\n key=\"delete\"\n onClick={_handleDelete}\n disabled={!view.owner}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<DeleteOutlined />}\n />\n </Tooltip>\n </>\n )}\n </Wrapper>\n );\n}\n\nexport default View;\n"]}
|
|
1
|
+
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/ViewPanel/View/View.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,YAAY,EAAE,cAAc,EAAE,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAC,oBAAoB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AACzE,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAC,GAAG,EAAC,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAC,MAAM,MAAM,CAAC;AACjD,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AACxC,OAAO,gBAAgB,MAAM,wDAAwD,CAAC;AACtF,OAAO,EAAC,iBAAiB,EAAC,MAAM,sEAAsE,CAAC;AACvG,OAAO,YAAY,MAAM,8CAA8C,CAAC;AACxE,OAAO,EAAC,6BAA6B,EAAE,2BAA2B,EAAC,MAAM,eAAe,CAAC;AACzF,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,0BAA0B,MAAM,iEAAiE,CAAC;AACzG,OAAO,4BAA4B,MAAM,qEAAqE,CAAC;AAC/G,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAiB,SAAS,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,EAAC,qBAAqB,EAAC,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,2BAA2B,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAC,SAAS,EAAC,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAM/D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;CAEvB,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAe;kBACvB,CAAC,EAAC,QAAQ,EAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;;;;CAIlF,CAAC;AAEF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;aAWZ,SAAS,CAAC,gBAAgB;;;;;;CAMtC,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAIvB,CAAC;AAEF,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAI7B,CAAC;AAOF,SAAS,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,EAAa;IACpC,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,IAAI,EAAE,WAAW,EAAC,GAAG,OAAO,EAAE,CAAC;IAEtC,MAAM,EAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAC,GAAG,gBAAgB,EAAE,CAAC;IAC1E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAiC,EAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC;IAExG,MAAM,EAAC,QAAQ,EAAC,GAAG,0BAA0B,EAAE,CAAC;IAEhD,MAAM,EAAC,UAAU,EAAC,GAAG,4BAA4B,EAAE,CAAC;IACpD,MAAM,EAAC,gBAAgB,EAAC,GAAG,2BAA2B,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAE/E,MAAM,EAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAC,GAAG,WAAW,CAAC,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,EAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,EAAC,CAAC;IAEzE,MAAM,WAAW,GAAG,GAAG,EAAE;QACrB,cAAc,CAAC,EAAC,IAAI,EAAE,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,CAAC;IAE3B,MAAM,aAAa,GAAG,KAAK,EAAE,KAAU,EAAE,EAAE;QACvC,wCAAwC;QACxC,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE1B,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,MAAM,CAC7F,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CACzB,CAAC;QAEF,MAAM,gBAAgB,CAAC;YACnB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,2BAA2B,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE;YACzG,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAC1C,cAAc,CAAC,EAAC,IAAI,EAAE,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,KAAU,EAAE,EAAE;QAC1C,wCAAwC;QACxC,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,IAAI,CAAC;YACD,MAAM,OAAO,GAAc;gBACvB,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9B,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE;gBAC/B,KAAK,EAAE;oBACH,CAAC,WAAW,CAAC,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,GAAG;iBACnF;gBACD,OAAO,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC5C,OAAO,EAAE;oBACL,IAAI,EAAE,SAAS,CAAC,MAAM;oBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;iBACvB;gBACD,cAAc,EAAE,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACxE,MAAM,EAAE,OAAO,CAAC,IAAI;oBACpB,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;iBAC7B,CAAC,CAAC;gBACH,MAAM,EAAE,KAAK;aAChB,CAAC;YAEF,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC;gBAC9B,IAAI,EAAE,OAAO;aAChB,CAAC,CAAC;YAEH,MAAM,gBAAgB,CAAC;gBACnB,GAAG,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO;gBAClD,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnE,MAAM,EAAE,KAAK;aAChB,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAU,EAAE,EAAE;QAC/B,wCAAwC;QACxC,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACnB,cAAc,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAC,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAG,EAAE;QAClB,cAAc,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,GAAG,CAAC,EAAC,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IAE1D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEzD,OAAO,CACH,MAAC,OAAO,IAEJ,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,KAAK,KACR,UAAU,EACd,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAC3C,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,aAE5C,KAAC,MAAM,IAAC,SAAS,EAAC,aAAa,KAAK,SAAS,GAAI,EACjD,MAAC,KAAK,eACF,MAAC,KAAK,mBAAa,YAAY,aAC3B,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAI,EACzC,KAAC,UAAU,CAAC,IAAI,IAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,KAAK,EAAE,EAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAC,YAC5F,SAAS,GACI,IACd,EACP,IAAI,CAAC,WAAW,IAAI,CACjB,MAAC,WAAW,eACR,KAAC,UAAU,CAAC,SAAS,IAEjB,QAAQ,EAAE;oCACN,IAAI,EAAE,gBAAgB;oCACtB,UAAU,EAAE,IAAI;oCAChB,QAAQ,EAAE,SAAS;oCACnB,MAAM,EAAE,CAAC,CAAC,eAAe,CAAC;iCAC7B,EACD,KAAK,EAAE,EAAC,YAAY,EAAE,CAAC,EAAC,YAEvB,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IATxC,WAAW,CAAC,GAAG,CAUD,EACtB,WAAW,CAAC,MAAM,IAAI,CACnB,YACI,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,EAAE,CAAC,EAAE;oCACV,EAAE,CAAC,cAAc,EAAE,CAAC;oCACpB,QAAQ,EAAE,CAAC;gCACf,CAAC,YAEA,CAAC,CAAC,cAAc,CAAC,GAClB,CACP,IACS,CACjB,IACG,EACP,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,IAAI,KAAC,eAAe,IAAC,IAAI,EAAE,SAAS,GAAI,EACtE,cAAc,IAAI,CACf,8BACI,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC,YAC5B,KAAC,MAAM,IAEH,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,EACrB,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,QAAQ,EACd,IAAI,EAAE,KAAC,YAAY,KAAG,IANlB,MAAM,CAOZ,GACI,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,kBAAkB,CAAC,YACjC,KAAC,MAAM,IAEH,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,QAAQ,EACd,IAAI,EAAE,KAAC,YAAY,KAAG,IALlB,WAAW,CAMjB,GACI,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC,YAC9B,KAAC,MAAM,IAEH,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,EACrB,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,QAAQ,EACd,IAAI,EAAE,KAAC,cAAc,KAAG,IANpB,QAAQ,CAOd,GACI,IACX,CACN,KAlFI,IAAI,CAAC,EAAE,CAmFN,CACb,CAAC;AACN,CAAC;AAED,eAAe,IAAI,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {CopyOutlined, DeleteOutlined, EditOutlined} from '@ant-design/icons';\nimport {localizedTranslation, objectToNameValueArray} from '@leav/utils';\nimport {useSortable} from '@dnd-kit/sortable';\nimport {CSS} from '@dnd-kit/utilities';\nimport {Button, Tooltip, Typography} from 'antd';\nimport omit from 'lodash/omit';\nimport {useState} from 'react';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport IconViewType from '_ui/components/LibraryItemsList/IconViewType';\nimport {PREFIX_SHARED_VIEWS_ORDER_KEY, PREFIX_USER_VIEWS_ORDER_KEY} from '_ui/constants';\nimport {useLang} from '_ui/hooks';\nimport useExecuteSaveViewMutation from '_ui/hooks/useExecuteSaveViewMutation/useExecuteSaveViewMutation';\nimport useExecuteDeleteViewMutation from '_ui/hooks/useExecuteDeleteViewMutation/useExecuteDeleteViewMutation';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type IView} from '_ui/types/views';\nimport {type ViewInput, ViewSizes, ViewTypes} from '_ui/_gqlTypes';\nimport {getRequestFromFilters} from '_ui/_utils/getRequestFromFilter';\nimport {defaultView} from '../../constants';\nimport useUpdateViewsOrderMutation from '../../hooks/useUpdateViewsOrderMutation';\nimport {faUserTag} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\n\ninterface IWrapperProps {\n selected: boolean;\n}\n\nconst Infos = styled.div`\n width: 100%;\n`;\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${({selected}) => (selected ? `${themeVars.activeColor} ` : 'none')};\n padding: 0.5rem;\n display: flex;\n align-items: center;\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n font-size: 12px;\n font-family: sans-serif;\n letter-spacing: 2px;\n color: ${themeVars.borderLightColor};\n text-shadow: 1px 0 1px black;\n\n &::after {\n content: '.. .. .. ..';\n }\n`;\n\nconst Title = styled.div`\n display: flex;\n align-items: center;\n margin-left: 10px;\n`;\n\nconst Description = styled.div`\n opacity: 0.8;\n margin-left: 10px;\n overflow: hidden;\n`;\n\ninterface IViewProps {\n view: IView;\n onEdit: (viewId: string) => void;\n}\n\nfunction View({view, onEdit}: IViewProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang, defaultLang} = useLang();\n\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [description, setDescription] = useState<{expand: boolean; key: number}>({expand: false, key: 0});\n\n const {saveView} = useExecuteSaveViewMutation();\n\n const {deleteView} = useExecuteDeleteViewMutation();\n const {updateViewsOrder} = useUpdateViewsOrderMutation(searchState.library.id);\n\n const {attributes, listeners, setNodeRef, transform, transition} = useSortable({id: view.id});\n const style = {transform: CSS.Transform.toString(transform), transition};\n\n const _changeView = () => {\n searchDispatch({type: SearchActionTypes.CHANGE_VIEW, view});\n };\n\n const ROWS_DESCRIPTION = 3;\n\n const _handleDelete = async (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n await deleteView(view.id);\n\n const newOrder = (view.shared ? searchState.sharedViewsOrder : searchState.userViewsOrder).filter(\n vId => vId !== view.id,\n );\n\n await updateViewsOrder({\n key: (view.shared ? PREFIX_SHARED_VIEWS_ORDER_KEY : PREFIX_USER_VIEWS_ORDER_KEY) + searchState.library.id,\n value: newOrder,\n global: false,\n });\n\n if (view.id === searchState.view.current.id) {\n searchDispatch({type: SearchActionTypes.CHANGE_VIEW, view: defaultView});\n }\n };\n\n const _handleDuplicate = async (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n try {\n const newView: ViewInput = {\n ...omit(view, ['id', 'owner']),\n library: searchState.library.id,\n label: {\n [defaultLang]: `${localizedTranslation(view.label, lang)} (${t('global.copy')})`,\n },\n filters: getRequestFromFilters(view.filters),\n display: {\n size: ViewSizes.MEDIUM,\n type: ViewTypes.list,\n },\n valuesVersions: objectToNameValueArray(view.valuesVersions).map(version => ({\n treeId: version.name,\n treeNode: version.value.id,\n })),\n shared: false,\n };\n\n const newViewRes = await saveView({\n view: newView,\n });\n\n await updateViewsOrder({\n key: PREFIX_USER_VIEWS_ORDER_KEY + newView.library,\n value: [...searchState.userViewsOrder, newViewRes.data.saveView.id],\n global: false,\n });\n } catch (e) {\n console.error(e);\n }\n };\n\n const _handleEdit = (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n onEdit(view.id);\n };\n\n const _onExpand = () => {\n setDescription({expand: true, key: description.key});\n };\n\n const _onClose = () => {\n setDescription({expand: false, key: description.key + 1});\n };\n\n const selected = view.id === searchState.view.current?.id;\n\n const [isActionsShown, setIsActionsShown] = useState(false);\n\n const viewLabel = localizedTranslation(view.label, lang);\n\n return (\n <Wrapper\n key={view.id}\n ref={setNodeRef}\n style={style}\n {...attributes}\n selected={selected}\n onClick={_changeView}\n color={view.color}\n onMouseEnter={() => setIsActionsShown(true)}\n onMouseLeave={() => setIsActionsShown(false)}\n >\n <Handle className=\"view-handle\" {...listeners} />\n <Infos>\n <Title data-testid=\"view-title\">\n <IconViewType type={view.display.type} />\n <Typography.Text ellipsis={{tooltip: true}} style={{padding: '0 .5em', width: 'calc(100% - 1em)'}}>\n {viewLabel}\n </Typography.Text>\n </Title>\n {view.description && (\n <Description>\n <Typography.Paragraph\n key={description.key}\n ellipsis={{\n rows: ROWS_DESCRIPTION,\n expandable: true,\n onExpand: _onExpand,\n symbol: t('view.see-more'),\n }}\n style={{marginBottom: 0}}\n >\n {localizedTranslation(view.description, lang)}\n </Typography.Paragraph>\n {description.expand && (\n <a\n href=\"!#\"\n onClick={ev => {\n ev.preventDefault();\n _onClose();\n }}\n >\n {t('global.close')}\n </a>\n )}\n </Description>\n )}\n </Infos>\n {!view.owner && !isActionsShown && <FontAwesomeIcon icon={faUserTag} />}\n {isActionsShown && (\n <>\n <Tooltip title={t('global.edit')}>\n <Button\n key=\"edit\"\n onClick={_handleEdit}\n disabled={!view.owner}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<EditOutlined />}\n />\n </Tooltip>\n <Tooltip title={t('global.duplicate')}>\n <Button\n key=\"duplicate\"\n onClick={_handleDuplicate}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<CopyOutlined />}\n />\n </Tooltip>\n <Tooltip title={t('global.delete')}>\n <Button\n key=\"delete\"\n onClick={_handleDelete}\n disabled={!view.owner}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<DeleteOutlined />}\n />\n </Tooltip>\n </>\n )}\n </Wrapper>\n );\n}\n\nexport default View;\n"]}
|
|
@@ -7,7 +7,8 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
|
7
7
|
import { localizedTranslation } from '@leav/utils';
|
|
8
8
|
import { Badge, Button, Input } from 'antd';
|
|
9
9
|
import { useState } from 'react';
|
|
10
|
-
import {
|
|
10
|
+
import { DndContext, closestCenter } from '@dnd-kit/core';
|
|
11
|
+
import { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';
|
|
11
12
|
import styled from 'styled-components';
|
|
12
13
|
import { themeVars } from '../../../antdTheme';
|
|
13
14
|
import { ErrorDisplay } from '../../../components/ErrorDisplay';
|
|
@@ -157,22 +158,43 @@ function ViewPanel() {
|
|
|
157
158
|
const _closeModal = () => {
|
|
158
159
|
setEditView(false);
|
|
159
160
|
};
|
|
160
|
-
const
|
|
161
|
-
|
|
161
|
+
const handleDragEnd = async (event) => {
|
|
162
|
+
const { active, over } = event;
|
|
163
|
+
if (!over || active.id === over.id) {
|
|
162
164
|
return;
|
|
163
165
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
166
|
+
let viewsList = userViews;
|
|
167
|
+
let keyToUpdate = PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id;
|
|
168
|
+
let orderType = 'userViewsOrder';
|
|
169
|
+
if (sharedViews.some(v => v.id === active.id)) {
|
|
170
|
+
viewsList = sharedViews;
|
|
171
|
+
keyToUpdate = PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id;
|
|
172
|
+
orderType = 'sharedViewsOrder';
|
|
173
|
+
}
|
|
174
|
+
const ids = viewsList.map(v => v.id);
|
|
175
|
+
const oldIndex = ids.indexOf(active.id);
|
|
176
|
+
const newIndex = ids.indexOf(over.id);
|
|
177
|
+
if (oldIndex === -1 || newIndex === -1) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const newOrder = [...ids];
|
|
181
|
+
newOrder.splice(oldIndex, 1);
|
|
182
|
+
newOrder.splice(newIndex, 0, active.id);
|
|
183
|
+
if (orderType === 'userViewsOrder') {
|
|
184
|
+
searchDispatch({
|
|
185
|
+
type: SearchActionTypes.SET_USER_VIEWS_ORDER,
|
|
186
|
+
userViewsOrder: newOrder,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
searchDispatch({
|
|
191
|
+
type: SearchActionTypes.SET_SHARED_VIEWS_ORDER,
|
|
192
|
+
sharedViewsOrder: newOrder,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
173
195
|
await updateViewsOrder({
|
|
174
196
|
key: keyToUpdate,
|
|
175
|
-
value:
|
|
197
|
+
value: newOrder,
|
|
176
198
|
global: false,
|
|
177
199
|
});
|
|
178
200
|
};
|
|
@@ -181,7 +203,7 @@ function ViewPanel() {
|
|
|
181
203
|
const handleHide = () => {
|
|
182
204
|
searchDispatch({ type: SearchActionTypes.TOGGLE_SIDEBAR });
|
|
183
205
|
};
|
|
184
|
-
return (_jsxs(Wrapper, { children: [editView && (_jsx(EditView, { view: editView, visible: !!editView, onClose: _closeModal, libraryId: searchState.library.id })), _jsxs(Header, { children: [_jsx("span", { children: t('view.views') }), _jsx(Button, { onClick: handleHide, icon: _jsx(FontAwesomeIcon, { icon: faAngleLeft }) })] }), _jsx(SearchWrapper, { children: _jsx(Input.Search, { placeholder: t('view.search'), onSearch: _handleSearchSubmit }) }),
|
|
206
|
+
return (_jsxs(Wrapper, { children: [editView && (_jsx(EditView, { view: editView, visible: !!editView, onClose: _closeModal, libraryId: searchState.library.id })), _jsxs(Header, { children: [_jsx("span", { children: t('view.views') }), _jsx(Button, { onClick: handleHide, icon: _jsx(FontAwesomeIcon, { icon: faAngleLeft }) })] }), _jsx(SearchWrapper, { children: _jsx(Input.Search, { placeholder: t('view.search'), onSearch: _handleSearchSubmit }) }), _jsxs(DndContext, { collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: [_jsx(SubHeader, { children: t('view.shared-views') }), _jsx(SortableContext, { items: sharedViews.map(v => v.id), strategy: verticalListSortingStrategy, children: _jsx(Views, { children: sharedViews.map(view => (_jsx(View, { view: view, onEdit: () => _showModal(view) }, view.id))) }) }), _jsxs(SubHeader, { children: [t('view.my-views'), _jsx(CustomBadge, { count: userViews.length })] }), _jsx(SortableContext, { items: userViews.map(v => v.id), strategy: verticalListSortingStrategy, children: _jsx(Views, { children: userViews.map(view => (_jsx(View, { view: view, onEdit: () => _showModal(view) }, view.id))) }) })] })] }));
|
|
185
207
|
}
|
|
186
208
|
export default ViewPanel;
|
|
187
209
|
//# sourceMappingURL=ViewPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewPanel.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/ViewPanel/ViewPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {faAngleLeft} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {localizedTranslation} from '@leav/utils';\nimport {Badge, Button, Input} from 'antd';\nimport {useState} from 'react';\nimport {DragDropContext, Draggable, Droppable, type DropResult, type ResponderProvided} from 'react-beautiful-dnd';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport {ErrorDisplay} from '_ui/components/ErrorDisplay';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {Loading} from '_ui/components/Loading';\nimport {PREFIX_SHARED_VIEWS_ORDER_KEY, PREFIX_USER_VIEWS_ORDER_KEY} from '_ui/constants';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {useUser} from '_ui/hooks/useUser/useUser';\nimport {type IView} from '_ui/types/views';\nimport {useGetUserDataQuery, useGetViewsListQuery} from '_ui/_gqlTypes';\nimport {prepareView} from '_ui/_utils';\nimport useUpdateViewsOrderMutation from '../hooks/useUpdateViewsOrderMutation';\nimport EditView from './EditView';\nimport View from './View';\n\nconst Wrapper = styled.div`\n width: 100%;\n display: flex;\n flex-flow: column nowrap;\n border-right: ${themeVars.borderLightColor} 1px solid;\n overflow-y: auto;\n`;\n\nconst Header = styled.div`\n width: 100%;\n background-color: ${themeVars.headerBg};\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: space-between;\n padding: 0.3rem 0.3rem 0.3rem 1rem;\n font-weight: 700;\n border-bottom: 1px solid ${themeVars.borderLightColor};\n\n & > * {\n :first-of-type {\n display: grid;\n column-gap: 8px;\n grid-template-columns: repeat(3, auto);\n align-items: center;\n justify-items: center;\n }\n\n :last-of-type {\n display: grid;\n align-items: center;\n justify-content: flex-end;\n column-gap: 8px;\n grid-template-columns: repeat(2, auto);\n }\n }\n`;\n\nconst SubHeader = styled.div`\n width: 100%;\n border-top: ${themeVars.activeColor} 1px solid;\n border-bottom: ${themeVars.activeColor} 1px solid;\n padding: 0.3rem;\n padding-left: 1rem;\n font-weight: 700;\n font-size: 14px;\n`;\n\nconst Views = styled.div`\n width: 100%;\n`;\n\nconst SearchWrapper = styled.div`\n margin: 1rem;\n`;\n\nconst CustomBadge = styled(Badge)`\n margin-left: 8px;\n && > * {\n background-color: ${themeVars.borderLightColor};\n color: ${themeVars.defaultTextColor};\n }\n`;\n\nconst _sortViewFunction = (referenceOrder: string[]) => (viewA: IView, viewB: IView) => {\n const orderA = referenceOrder.indexOf(viewA.id);\n const orderB = referenceOrder.indexOf(viewB.id);\n const isAOrdered = orderA !== -1;\n const isBOrdered = orderB !== -1;\n\n if (isAOrdered && isBOrdered) {\n return orderA - orderB;\n } else if (isAOrdered && !isBOrdered) {\n return -1;\n } else if (!isAOrdered && isBOrdered) {\n return 1;\n } else {\n return Number(viewA.id) - Number(viewB.id);\n }\n};\n\nfunction ViewPanel(): JSX.Element {\n const {t} = useSharedTranslation();\n\n const {userData} = useUser();\n const {lang} = useLang();\n const [search, setSearch] = useState('');\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [editView, setEditView] = useState<IView | false>(false);\n\n const {updateViewsOrder} = useUpdateViewsOrderMutation(searchState.library.id);\n\n const getViewsList = useGetViewsListQuery({\n variables: {\n libraryId: searchState?.library?.id || '',\n },\n });\n\n const getOrderDataQuery = useGetUserDataQuery({\n variables: {\n keys: [\n PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id,\n PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id,\n ],\n },\n onCompleted: d => {\n searchDispatch({\n type: SearchActionTypes.SET_USER_VIEWS_ORDER,\n userViewsOrder: d.userData?.data[PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id] || [],\n });\n searchDispatch({\n type: SearchActionTypes.SET_SHARED_VIEWS_ORDER,\n sharedViewsOrder: d.userData?.data[PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id] || [],\n });\n },\n });\n\n if (getViewsList.loading) {\n return <Loading />;\n }\n\n const _handleSearchSubmit = (value: string) => {\n setSearch(value);\n };\n\n const {sharedViews, userViews}: {sharedViews: IView[]; userViews: IView[]} = getViewsList.data?.views.list.reduce(\n (acc, view) => {\n const v: IView = prepareView(view, searchState.attributes, searchState.library.id, userData?.userId);\n\n if (search && !localizedTranslation(v.label, lang).toUpperCase().includes(search.toUpperCase())) {\n return acc;\n }\n\n if (v.shared) {\n return {...acc, sharedViews: [...acc.sharedViews, v]};\n }\n\n return {...acc, userViews: [...acc.userViews, v]};\n },\n {sharedViews: [], userViews: []},\n ) ?? {sharedViews: [], userViews: []};\n\n if (getViewsList.error || getOrderDataQuery.error) {\n return <ErrorDisplay message={(getViewsList.error || getOrderDataQuery.error).message} />;\n }\n\n if (!sharedViews || !userViews) {\n return <ErrorDisplay message={t('error.error_occurred')} />;\n }\n\n const _showModal = (view: IView) => {\n setEditView(view);\n };\n\n const _closeModal = () => {\n setEditView(false);\n };\n\n const onDragEnd = async (result: DropResult, provided: ResponderProvided) => {\n if (!result.destination) {\n return;\n }\n\n const isOrderingUserViews = result.source.droppableId === 'user';\n\n const viewsListBefore = isOrderingUserViews ? userViews : sharedViews;\n const orderedViews = viewsListBefore.map(v => v.id);\n\n const element = orderedViews[result.source.index];\n orderedViews.splice(result.source.index, 1);\n orderedViews.splice(result.destination.index, 0, element);\n\n const keyToUpdate = isOrderingUserViews\n ? PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id\n : PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id;\n\n await updateViewsOrder({\n key: keyToUpdate,\n value: orderedViews,\n global: false,\n });\n };\n\n userViews.sort(_sortViewFunction(searchState.userViewsOrder));\n sharedViews.sort(_sortViewFunction(searchState.sharedViewsOrder));\n\n const handleHide = () => {\n searchDispatch({type: SearchActionTypes.TOGGLE_SIDEBAR});\n };\n\n return (\n <Wrapper>\n {editView && (\n <EditView\n view={editView}\n visible={!!editView}\n onClose={_closeModal}\n libraryId={searchState.library.id}\n />\n )}\n <Header>\n <span>{t('view.views')}</span>\n <Button onClick={handleHide} icon={<FontAwesomeIcon icon={faAngleLeft} />}></Button>\n </Header>\n <SearchWrapper>\n <Input.Search placeholder={t('view.search')} onSearch={_handleSearchSubmit} />\n </SearchWrapper>\n\n <SubHeader>{t('view.shared-views')}</SubHeader>\n\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId=\"shared\">\n {providedDroppable => (\n <Views {...providedDroppable.droppableProps} ref={providedDroppable.innerRef}>\n {sharedViews.map((view, idx) => (\n <Draggable key={idx} draggableId={idx.toString()} index={idx}>\n {provided => (\n <div\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n >\n <View\n key={view.id}\n view={view}\n onEdit={() => _showModal(view)}\n handleProps={provided.dragHandleProps}\n />\n </div>\n )}\n </Draggable>\n ))}\n {providedDroppable.placeholder}\n </Views>\n )}\n </Droppable>\n </DragDropContext>\n\n <SubHeader>\n {t('view.my-views')}\n <CustomBadge count={userViews.length} />\n </SubHeader>\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId=\"user\">\n {providedDroppable => (\n <Views {...providedDroppable.droppableProps} ref={providedDroppable.innerRef}>\n {userViews.map((view, idx) => (\n <Draggable key={idx} draggableId={idx.toString()} index={idx}>\n {provided => (\n <div\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n >\n <View\n key={view.id}\n view={view}\n onEdit={() => _showModal(view)}\n handleProps={provided.dragHandleProps}\n />\n </div>\n )}\n </Draggable>\n ))}\n {providedDroppable.placeholder}\n </Views>\n )}\n </Droppable>\n </DragDropContext>\n </Wrapper>\n );\n}\n\nexport default ViewPanel;\n"]}
|
|
1
|
+
{"version":3,"file":"ViewPanel.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/ViewPanel/ViewPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {faAngleLeft} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {localizedTranslation} from '@leav/utils';\nimport {Badge, Button, Input} from 'antd';\nimport {useState} from 'react';\nimport {DndContext, closestCenter} from '@dnd-kit/core';\nimport {SortableContext, verticalListSortingStrategy} from '@dnd-kit/sortable';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport {ErrorDisplay} from '_ui/components/ErrorDisplay';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {Loading} from '_ui/components/Loading';\nimport {PREFIX_SHARED_VIEWS_ORDER_KEY, PREFIX_USER_VIEWS_ORDER_KEY} from '_ui/constants';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {useUser} from '_ui/hooks/useUser/useUser';\nimport {type IView} from '_ui/types/views';\nimport {useGetUserDataQuery, useGetViewsListQuery} from '_ui/_gqlTypes';\nimport {prepareView} from '_ui/_utils';\nimport useUpdateViewsOrderMutation from '../hooks/useUpdateViewsOrderMutation';\nimport EditView from './EditView';\nimport View from './View';\n\nconst Wrapper = styled.div`\n width: 100%;\n display: flex;\n flex-flow: column nowrap;\n border-right: ${themeVars.borderLightColor} 1px solid;\n overflow-y: auto;\n`;\n\nconst Header = styled.div`\n width: 100%;\n background-color: ${themeVars.headerBg};\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: space-between;\n padding: 0.3rem 0.3rem 0.3rem 1rem;\n font-weight: 700;\n border-bottom: 1px solid ${themeVars.borderLightColor};\n\n & > * {\n :first-of-type {\n display: grid;\n column-gap: 8px;\n grid-template-columns: repeat(3, auto);\n align-items: center;\n justify-items: center;\n }\n\n :last-of-type {\n display: grid;\n align-items: center;\n justify-content: flex-end;\n column-gap: 8px;\n grid-template-columns: repeat(2, auto);\n }\n }\n`;\n\nconst SubHeader = styled.div`\n width: 100%;\n border-top: ${themeVars.activeColor} 1px solid;\n border-bottom: ${themeVars.activeColor} 1px solid;\n padding: 0.3rem;\n padding-left: 1rem;\n font-weight: 700;\n font-size: 14px;\n`;\n\nconst Views = styled.div`\n width: 100%;\n`;\n\nconst SearchWrapper = styled.div`\n margin: 1rem;\n`;\n\nconst CustomBadge = styled(Badge)`\n margin-left: 8px;\n && > * {\n background-color: ${themeVars.borderLightColor};\n color: ${themeVars.defaultTextColor};\n }\n`;\n\nconst _sortViewFunction = (referenceOrder: string[]) => (viewA: IView, viewB: IView) => {\n const orderA = referenceOrder.indexOf(viewA.id);\n const orderB = referenceOrder.indexOf(viewB.id);\n const isAOrdered = orderA !== -1;\n const isBOrdered = orderB !== -1;\n\n if (isAOrdered && isBOrdered) {\n return orderA - orderB;\n } else if (isAOrdered && !isBOrdered) {\n return -1;\n } else if (!isAOrdered && isBOrdered) {\n return 1;\n } else {\n return Number(viewA.id) - Number(viewB.id);\n }\n};\n\nfunction ViewPanel(): JSX.Element {\n const {t} = useSharedTranslation();\n const {userData} = useUser();\n const {lang} = useLang();\n const [search, setSearch] = useState('');\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [editView, setEditView] = useState<IView | false>(false);\n\n const {updateViewsOrder} = useUpdateViewsOrderMutation(searchState.library.id);\n\n const getViewsList = useGetViewsListQuery({\n variables: {\n libraryId: searchState?.library?.id || '',\n },\n });\n\n const getOrderDataQuery = useGetUserDataQuery({\n variables: {\n keys: [\n PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id,\n PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id,\n ],\n },\n onCompleted: d => {\n searchDispatch({\n type: SearchActionTypes.SET_USER_VIEWS_ORDER,\n userViewsOrder: d.userData?.data[PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id] || [],\n });\n searchDispatch({\n type: SearchActionTypes.SET_SHARED_VIEWS_ORDER,\n sharedViewsOrder: d.userData?.data[PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id] || [],\n });\n },\n });\n\n if (getViewsList.loading) {\n return <Loading />;\n }\n\n const _handleSearchSubmit = (value: string) => {\n setSearch(value);\n };\n\n const {sharedViews, userViews}: {sharedViews: IView[]; userViews: IView[]} = getViewsList.data?.views.list.reduce(\n (acc, view) => {\n const v: IView = prepareView(view, searchState.attributes, searchState.library.id, userData?.userId);\n\n if (search && !localizedTranslation(v.label, lang).toUpperCase().includes(search.toUpperCase())) {\n return acc;\n }\n\n if (v.shared) {\n return {...acc, sharedViews: [...acc.sharedViews, v]};\n }\n\n return {...acc, userViews: [...acc.userViews, v]};\n },\n {sharedViews: [], userViews: []},\n ) ?? {sharedViews: [], userViews: []};\n\n if (getViewsList.error || getOrderDataQuery.error) {\n return <ErrorDisplay message={(getViewsList.error || getOrderDataQuery.error).message} />;\n }\n\n if (!sharedViews || !userViews) {\n return <ErrorDisplay message={t('error.error_occurred')} />;\n }\n\n const _showModal = (view: IView) => {\n setEditView(view);\n };\n\n const _closeModal = () => {\n setEditView(false);\n };\n\n const handleDragEnd = async event => {\n const {active, over} = event;\n if (!over || active.id === over.id) {\n return;\n }\n\n let viewsList = userViews;\n let keyToUpdate = PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id;\n let orderType = 'userViewsOrder';\n if (sharedViews.some(v => v.id === active.id)) {\n viewsList = sharedViews;\n keyToUpdate = PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id;\n orderType = 'sharedViewsOrder';\n }\n\n const ids = viewsList.map(v => v.id);\n const oldIndex = ids.indexOf(active.id);\n const newIndex = ids.indexOf(over.id);\n if (oldIndex === -1 || newIndex === -1) {\n return;\n }\n\n const newOrder = [...ids];\n newOrder.splice(oldIndex, 1);\n newOrder.splice(newIndex, 0, active.id);\n\n if (orderType === 'userViewsOrder') {\n searchDispatch({\n type: SearchActionTypes.SET_USER_VIEWS_ORDER,\n userViewsOrder: newOrder,\n });\n } else {\n searchDispatch({\n type: SearchActionTypes.SET_SHARED_VIEWS_ORDER,\n sharedViewsOrder: newOrder,\n });\n }\n\n await updateViewsOrder({\n key: keyToUpdate,\n value: newOrder,\n global: false,\n });\n };\n\n userViews.sort(_sortViewFunction(searchState.userViewsOrder));\n sharedViews.sort(_sortViewFunction(searchState.sharedViewsOrder));\n\n const handleHide = () => {\n searchDispatch({type: SearchActionTypes.TOGGLE_SIDEBAR});\n };\n\n return (\n <Wrapper>\n {editView && (\n <EditView\n view={editView}\n visible={!!editView}\n onClose={_closeModal}\n libraryId={searchState.library.id}\n />\n )}\n <Header>\n <span>{t('view.views')}</span>\n <Button onClick={handleHide} icon={<FontAwesomeIcon icon={faAngleLeft} />}></Button>\n </Header>\n <SearchWrapper>\n <Input.Search placeholder={t('view.search')} onSearch={_handleSearchSubmit} />\n </SearchWrapper>\n\n <DndContext collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SubHeader>{t('view.shared-views')}</SubHeader>\n <SortableContext items={sharedViews.map(v => v.id)} strategy={verticalListSortingStrategy}>\n <Views>\n {sharedViews.map(view => (\n <View key={view.id} view={view} onEdit={() => _showModal(view)} />\n ))}\n </Views>\n </SortableContext>\n <SubHeader>\n {t('view.my-views')}\n <CustomBadge count={userViews.length} />\n </SubHeader>\n <SortableContext items={userViews.map(v => v.id)} strategy={verticalListSortingStrategy}>\n <Views>\n {userViews.map(view => (\n <View key={view.id} view={view} onEdit={() => _showModal(view)} />\n ))}\n </Views>\n </SortableContext>\n </DndContext>\n </Wrapper>\n );\n}\n\nexport default ViewPanel;\n"]}
|
|
@@ -29,12 +29,12 @@ const Container = styled.div `
|
|
|
29
29
|
`;
|
|
30
30
|
const Content = styled.div `
|
|
31
31
|
grid-area: content;
|
|
32
|
-
padding: 24px;
|
|
32
|
+
padding: ${props => (props.$removePadding ? 'unset' : '24px')};
|
|
33
33
|
overflow-x: hidden;
|
|
34
34
|
overflow-y: scroll;
|
|
35
35
|
border-right: ${props => props.$shouldUseLayoutWithSidebar ? '1px solid var(--general-utilities-border)' : 'none'};
|
|
36
36
|
`;
|
|
37
|
-
export const EditRecord = ({ antdForm, formId, isFormCreationMode, formElementId, record, library: libraryId, onCreate, valuesVersion, enableSidebar = false, showSidebar = false, sidebarContainer, containerStyle, withInfoButton, }) => {
|
|
37
|
+
export const EditRecord = ({ antdForm, formId, isFormCreationMode, formElementId, record, library: libraryId, onCreate, valuesVersion, enableSidebar = false, showSidebar = false, sidebarContainer, containerStyle, withInfoButton, removePadding = false, }) => {
|
|
38
38
|
const [state, dispatch] = useReducer(editRecordReducer, {
|
|
39
39
|
...initialState,
|
|
40
40
|
record,
|
|
@@ -162,6 +162,6 @@ export const EditRecord = ({ antdForm, formId, isFormCreationMode, formElementId
|
|
|
162
162
|
return saveValues(record, valuesToSave, version, true);
|
|
163
163
|
};
|
|
164
164
|
const shouldUseLayoutWithSidebar = state.enableSidebar && state.isOpenSidebar && sidebarContainer === undefined;
|
|
165
|
-
return (_jsx(ErrorBoundary, { children: _jsx(EditRecordReducerContext.Provider, { value: { state, dispatch }, children: _jsxs(Container, { "$shouldUseLayoutWithSidebar": shouldUseLayoutWithSidebar, style: containerStyle, children: [_jsx(EditRecordButtons, {}), _jsx(Content, { "$shouldUseLayoutWithSidebar": shouldUseLayoutWithSidebar, children: permissionsLoading ? (_jsx(EditRecordSkeleton, { rows: 5 })) : canEdit ? (_jsx(EditRecordContent, { antdForm: antdForm, formId: formId, isFormCreationMode: isFormCreationMode, formElementId: formElementId, record: record, library: libraryId, onRecordSubmit: _handleRecordSubmit, onValueSubmit: _handleValueSubmit, onValueDelete: deleteValue, onDeleteMultipleValues: _handleDeleteAllValues, readonly: isReadOnly })) : (_jsx(ErrorDisplay, { type: ErrorDisplayTypes.PERMISSION_ERROR, showActionButton: false })) }), _jsx(EditRecordSidebar, { onMetadataSubmit: _handleMetadataSubmit, sidebarContainer: sidebarContainer })] }) }) }));
|
|
165
|
+
return (_jsx(ErrorBoundary, { children: _jsx(EditRecordReducerContext.Provider, { value: { state, dispatch }, children: _jsxs(Container, { "$shouldUseLayoutWithSidebar": shouldUseLayoutWithSidebar, style: containerStyle, children: [_jsx(EditRecordButtons, {}), _jsx(Content, { "$shouldUseLayoutWithSidebar": shouldUseLayoutWithSidebar, "$removePadding": removePadding, children: permissionsLoading ? (_jsx(EditRecordSkeleton, { rows: 5 })) : canEdit ? (_jsx(EditRecordContent, { antdForm: antdForm, formId: formId, isFormCreationMode: isFormCreationMode, formElementId: formElementId, record: record, library: libraryId, onRecordSubmit: _handleRecordSubmit, onValueSubmit: _handleValueSubmit, onValueDelete: deleteValue, onDeleteMultipleValues: _handleDeleteAllValues, readonly: isReadOnly })) : (_jsx(ErrorDisplay, { type: ErrorDisplayTypes.PERMISSION_ERROR, showActionButton: false })) }), _jsx(EditRecordSidebar, { onMetadataSubmit: _handleMetadataSubmit, sidebarContainer: sidebarContainer })] }) }) }));
|
|
166
166
|
};
|
|
167
167
|
//# sourceMappingURL=EditRecord.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditRecord.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecord/EditRecord.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAyB,SAAS,EAAE,UAAU,EAAC,MAAM,OAAO,CAAC;AACpE,OAAO,MAAwB,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EACH,aAAa,EAGb,4BAA4B,GAC/B,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,6BAA6B,MAAM,0DAA0D,CAAC;AACrG,OAAO,yBAAyB,MAAM,6DAA6D,CAAC;AAUpG,OAAO,iBAAiB,EAAE,EAAC,6BAA6B,EAAE,YAAY,EAAC,MAAM,wCAAwC,CAAC;AACtH,OAAO,EAAC,wBAAwB,EAAC,MAAM,+CAA+C,CAAC;AAEvF,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,kBAAkB,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAC,mBAAmB,EAAC,MAAM,4CAA4C,CAAC;AAC/E,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAkBrD,MAAM,YAAY,GAAG,OAAO,CAAC;AAE7B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAA0D;;6BAEzD,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;2BAC1F,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC;;CAE1G,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAwC;;;;;oBAK9C,KAAK,CAAC,EAAE,CACpB,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,MAAM;CAC/F,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAwC,CAAC,EAC5D,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,aAAa,EACb,MAAM,EACN,OAAO,EAAE,SAAS,EAClB,QAAQ,EACR,aAAa,EACb,aAAa,GAAG,KAAK,EACrB,WAAW,GAAG,KAAK,EACnB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACjB,EAAE,EAAE;IACD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE;QACpD,GAAG,YAAY;QACf,MAAM;QACN,SAAS;QACT,YAAY,EAAE,IAAI;QAClB,aAAa;QACb,mBAAmB,EAAE,aAAa;QAClC,cAAc;KACjB,CAAC,CAAC;IAEH,MAAM,EACF,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EACP,UAAU,GACb,GAAG,gBAAgB,CAAC,EAAC,GAAG,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtE,MAAM,EAAC,IAAI,EAAE,WAAW,EAAC,GAAG,QAAQ,CAAC,mBAAmB,EAAE;QACtD,SAAS,EAAE,EAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAC;KAC/B,CAAC,CAAC;IAEH,MAAM,EAAC,UAAU,EAAC,GAAG,yBAAyB,EAAE,CAAC;IACjD,MAAM,EAAC,WAAW,EAAC,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,CAAC,yBAAyB,CAAC,GAAG,4BAA4B,EAAE,CAAC;IAEnE,sGAAsG;IACtG,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,WAAW,EAAE,CAAC;YACd,QAAQ,CAAC;gBACL,IAAI,EAAE,6BAA6B,CAAC,iBAAiB;gBACrD,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;aAC7C,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,QAAQ,CAAC;gBACL,IAAI,EAAE,6BAA6B,CAAC,UAAU;gBAC9C,MAAM;aACT,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC;YACL,IAAI,EAAE,6BAA6B,CAAC,kBAAkB;YACtD,OAAO,EAAE,aAAa;SACzB,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC;YACL,IAAI,EAAE,6BAA6B,CAAC,mBAAmB;YACvD,MAAM,EAAE,WAAW;SACtB,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,kBAAkB,GAAoB,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAClE,UAAU,CACN,MAAM,EACN,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACb,MAAM,YAAY,GAAG,EAAC,GAAG,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAC,CAAC;QAEnF,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,QAAQ,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACzB,KAAK,aAAa,CAAC,aAAa,CAAC;gBACjC,KAAK,aAAa,CAAC,WAAW;oBAC1B,YAAY,CAAC,KAAK,GAAI,GAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3D,MAAM;gBACV,KAAK,aAAa,CAAC,IAAI;oBACnB,YAAY,CAAC,KAAK,GAAI,GAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3D,MAAM;gBACV;oBACI,YAAY,CAAC,KAAK,GAAI,GAA+B,CAAC,KAAK,CAAC;oBAC5D,MAAM;YACd,CAAC;QACL,CAAC;QAED,OAAO,YAA8B,CAAC;IAC1C,CAAC,CAAC,EACF,OAAO,EACP,IAAI,CACP,CAAC;IAEN,MAAM,qBAAqB,GAA4B,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;QAClF,IAAI,YAAY,CAAC;QACjB,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,QAAQ;gBACvB,YAAY,GAAI,KAAiC,CAAC,WAAW,CAAC;gBAC9D,MAAM;YACV,KAAK,aAAa,CAAC,aAAa,CAAC;YACjC,KAAK,aAAa,CAAC,WAAW;gBAC1B,YAAY,GAAI,KAA6B,CAAC,SAAS,CAAC;gBACxD,MAAM;YACV,KAAK,aAAa,CAAC,IAAI;gBACnB,YAAY,GAAI,KAA6B,CAAC,SAAS,CAAC;gBACxD,MAAM;QACd,CAAC;QAED,OAAO,kBAAkB,CACrB;YACI;gBACI,OAAO,EAAE,KAAK,CAAC,QAAQ;gBACvB,SAAS;gBACT,KAAK,EAAE,YAAY;gBACnB,QAAQ;aACX;SACJ,EACD,IAAI,CACP,CAAC;IACN,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,mBAAmB,GAAG,KAAK,EAAE,UAA0D,EAAE,EAAE;QAC7F,MAAM,uBAAuB,GAAG,MAAM,yBAAyB,CAAC;YAC5D,WAAW,EAAE,cAAc;YAC3B,SAAS,EAAE;gBACP,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,MAAM;aACT;SACJ,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,uBAAuB,EAAE,IAAI,EAAE,iBAAiB,CAAC,YAAY,CAAC;QAC7E,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,QAAQ,EAAE,CAAC;gBACX,QAAQ,CAAC,uBAAuB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO;QACX,CAAC;QACD,QAAQ,CAAC,SAAS,CACd,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACf,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;YAExF,MAAM,+BAA+B,GACjC,gBAAgB,EAAE,eAAe;gBACjC,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAE9F,OAAO;gBACH,IAAI,EACA,+BAA+B,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB;oBAClE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;oBACtB,CAAC,CAAC,KAAK,CAAC,SAAS;gBACzB,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;aAC1B,CAAC;QACN,CAAC,CAAC,CACL,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAA6B,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QAC1F,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtC,OAAO,EAAE,KAAK,CAAC,QAAQ;YACvB,SAAS;YACT,KAAK,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;QAEJ,OAAO,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,0BAA0B,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,IAAI,gBAAgB,KAAK,SAAS,CAAC;IAEhH,OAAO,CACH,KAAC,aAAa,cACV,KAAC,wBAAwB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAC,YACvD,MAAC,SAAS,mCAA8B,0BAA0B,EAAE,KAAK,EAAE,cAAc,aACrF,KAAC,iBAAiB,KAAG,EACrB,KAAC,OAAO,mCAA8B,0BAA0B,YAC3D,kBAAkB,CAAC,CAAC,CAAC,CAClB,KAAC,kBAAkB,IAAC,IAAI,EAAE,CAAC,GAAI,CAClC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CACV,KAAC,iBAAiB,IACd,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,EAClB,cAAc,EAAE,mBAAmB,EACnC,aAAa,EAAE,kBAAkB,EACjC,aAAa,EAAE,WAAW,EAC1B,sBAAsB,EAAE,sBAAsB,EAC9C,QAAQ,EAAE,UAAU,GACtB,CACL,CAAC,CAAC,CAAC,CACA,KAAC,YAAY,IAAC,IAAI,EAAE,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,GAAI,CACtF,GACK,EACV,KAAC,iBAAiB,IAAC,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,GAAI,IAC1F,GACoB,GACxB,CACnB,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport isEqual from 'lodash/isEqual';\nimport {type FunctionComponent, useEffect, useReducer} from 'react';\nimport styled, {type CSSObject} from 'styled-components';\nimport {ErrorDisplayTypes} from '../../../constants';\nimport {useCanEditRecord} from '../../../hooks/useCanEditRecord';\nimport {type IValueVersion} from '../../../types/values';\nimport {\n AttributeType,\n type RecordFormAttributeStandardAttributeFragment,\n type RecordIdentityFragment,\n useActivateNewRecordMutation,\n} from '../../../_gqlTypes';\nimport {\n type IRecordPropertyLink,\n type IRecordPropertyStandard,\n type IRecordPropertyTree,\n} from '../../../_queries/records/getRecordPropertiesQuery';\nimport {ErrorBoundary} from '../../ErrorBoundary';\nimport {ErrorDisplay} from '../../ErrorDisplay';\nimport EditRecordContent from '../EditRecordContent';\nimport useExecuteDeleteValueMutation from '../EditRecordContent/hooks/useExecuteDeleteValueMutation';\nimport useSaveValueBatchMutation from '../EditRecordContent/hooks/useExecuteSaveValueBatchMutation';\nimport {\n type DeleteMultipleValuesFunc,\n type ISubmittedValueLink,\n type ISubmittedValueStandard,\n type ISubmittedValueTree,\n type IValueToSubmit,\n type MetadataSubmitValueFunc,\n type SubmitValueFunc,\n} from '../EditRecordContent/_types';\nimport editRecordReducer, {EditRecordReducerActionsTypes, initialState} from '../editRecordReducer/editRecordReducer';\nimport {EditRecordReducerContext} from '../editRecordReducer/editRecordReducerContext';\nimport {type FormInstance} from 'antd/lib/form/Form';\nimport EditRecordSidebar from '../EditRecordSidebar';\nimport EditRecordSkeleton from '../EditRecordSkeleton';\nimport {useQuery} from '@apollo/client';\nimport {getLibraryByIdQuery} from '_ui/_queries/libraries/getLibraryByIdQuery';\nimport EditRecordButtons from '../EditRecordButtons';\n\ninterface IEditRecordProps {\n antdForm: FormInstance;\n formId: string;\n isFormCreationMode: boolean;\n formElementId?: string;\n record: RecordIdentityFragment['whoAmI'] | null;\n library: string;\n onCreate?: (newRecord: RecordIdentityFragment['whoAmI']) => void;\n valuesVersion?: IValueVersion;\n showSidebar?: boolean;\n enableSidebar?: boolean;\n sidebarContainer?: HTMLElement;\n containerStyle?: CSSObject;\n withInfoButton: boolean;\n}\n\nconst sidebarWidth = '352px';\n\nconst Container = styled.div<{$shouldUseLayoutWithSidebar: boolean; style: CSSObject}>`\n display: grid;\n grid-template-columns: ${props => (props.$shouldUseLayoutWithSidebar ? `minmax(0, auto) ${sidebarWidth}` : '1fr')};\n grid-template-areas: ${props => (props.$shouldUseLayoutWithSidebar ? '\"content sidebar\"' : '\"content\"')};\n overflow: hidden;\n`;\n\nconst Content = styled.div<{$shouldUseLayoutWithSidebar: boolean}>`\n grid-area: content;\n padding: 24px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-right: ${props =>\n props.$shouldUseLayoutWithSidebar ? '1px solid var(--general-utilities-border)' : 'none'};\n`;\n\nexport const EditRecord: FunctionComponent<IEditRecordProps> = ({\n antdForm,\n formId,\n isFormCreationMode,\n formElementId,\n record,\n library: libraryId,\n onCreate,\n valuesVersion,\n enableSidebar = false,\n showSidebar = false,\n sidebarContainer,\n containerStyle,\n withInfoButton,\n}) => {\n const [state, dispatch] = useReducer(editRecordReducer, {\n ...initialState,\n record,\n libraryId,\n libraryLabel: null,\n valuesVersion,\n originValuesVersion: valuesVersion,\n withInfoButton,\n });\n\n const {\n loading: permissionsLoading,\n canEdit,\n isReadOnly,\n } = useCanEditRecord({...record?.library, id: libraryId}, record?.id);\n\n const {data: libraryData} = useQuery(getLibraryByIdQuery, {\n variables: {id: [libraryId]},\n });\n\n const {saveValues} = useSaveValueBatchMutation();\n const {deleteValue} = useExecuteDeleteValueMutation(record);\n const [activateNewRecordMutation] = useActivateNewRecordMutation();\n\n // Update record in reducer when it changes. Might happen on record identity change (after value save)\n useEffect(() => {\n if (libraryData) {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_LIBRARY_LABEL,\n label: libraryData.libraries.list[0].label,\n });\n }\n }, [libraryData]);\n\n useEffect(() => {\n if (record && !isEqual(record, state.record)) {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_RECORD,\n record,\n });\n }\n }, [record]);\n\n useEffect(() => {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_ENABLE_SIDEBAR,\n enabled: enableSidebar,\n });\n }, [enableSidebar]);\n\n useEffect(() => {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_SIDEBAR_IS_OPEN,\n isOpen: showSidebar,\n });\n }, [showSidebar]);\n\n const _handleValueSubmit: SubmitValueFunc = async (values, version) =>\n saveValues(\n record,\n values.map(val => {\n const savableValue = {...val, attribute: val.attribute.id, metadata: val.metadata};\n\n if (val.value) {\n switch (val.attribute.type) {\n case AttributeType.advanced_link:\n case AttributeType.simple_link:\n savableValue.value = (val as ISubmittedValueLink).value.id;\n break;\n case AttributeType.tree:\n savableValue.value = (val as ISubmittedValueTree).value.id;\n break;\n default:\n savableValue.value = (val as ISubmittedValueStandard).value;\n break;\n }\n }\n\n return savableValue as IValueToSubmit;\n }),\n version,\n true, // deleteEmpty\n );\n\n const _handleMetadataSubmit: MetadataSubmitValueFunc = (value, attribute, metadata) => {\n let valueContent;\n switch (attribute.type) {\n case AttributeType.simple:\n case AttributeType.advanced:\n valueContent = (value as IRecordPropertyStandard).raw_payload;\n break;\n case AttributeType.advanced_link:\n case AttributeType.simple_link:\n valueContent = (value as IRecordPropertyLink).linkValue;\n break;\n case AttributeType.tree:\n valueContent = (value as IRecordPropertyTree).treeValue;\n break;\n }\n\n return _handleValueSubmit(\n [\n {\n idValue: value.id_value,\n attribute,\n value: valueContent,\n metadata,\n },\n ],\n null,\n );\n };\n\n /**\n * Submit the whole record: create record and batch save all stored values\n */\n const _handleRecordSubmit = async (attributes: RecordFormAttributeStandardAttributeFragment[]) => {\n const activateNewRecordResult = await activateNewRecordMutation({\n fetchPolicy: 'network-only',\n variables: {\n libraryId,\n recordId: record.id,\n formId,\n },\n });\n const errors = activateNewRecordResult?.data?.activateNewRecord.valuesErrors;\n if (errors == null || errors?.length === 0) {\n if (onCreate) {\n onCreate(activateNewRecordResult?.data?.activateNewRecord?.record?.whoAmI);\n }\n return;\n }\n antdForm.setFields(\n errors.map(error => {\n const attributeInError = attributes.find(attribute => attribute.id === error.attribute);\n\n const doesAttributeHaveMultipleFields =\n attributeInError?.multiple_values &&\n ![AttributeType.simple_link, AttributeType.advanced_link].includes(attributeInError.type);\n\n return {\n name:\n doesAttributeHaveMultipleFields && error.type === 'REQUIRED_ATTRIBUTE'\n ? [error.attribute, 0]\n : error.attribute,\n errors: [error.message],\n };\n }),\n );\n };\n\n const _handleDeleteAllValues: DeleteMultipleValuesFunc = async (attribute, values, version) => {\n const valuesToSave = values.map(value => ({\n idValue: value.id_value,\n attribute,\n value: null,\n }));\n\n return saveValues(record, valuesToSave, version, true);\n };\n\n const shouldUseLayoutWithSidebar = state.enableSidebar && state.isOpenSidebar && sidebarContainer === undefined;\n\n return (\n <ErrorBoundary>\n <EditRecordReducerContext.Provider value={{state, dispatch}}>\n <Container $shouldUseLayoutWithSidebar={shouldUseLayoutWithSidebar} style={containerStyle}>\n <EditRecordButtons />\n <Content $shouldUseLayoutWithSidebar={shouldUseLayoutWithSidebar}>\n {permissionsLoading ? (\n <EditRecordSkeleton rows={5} />\n ) : canEdit ? (\n <EditRecordContent\n antdForm={antdForm}\n formId={formId}\n isFormCreationMode={isFormCreationMode}\n formElementId={formElementId}\n record={record}\n library={libraryId}\n onRecordSubmit={_handleRecordSubmit}\n onValueSubmit={_handleValueSubmit}\n onValueDelete={deleteValue}\n onDeleteMultipleValues={_handleDeleteAllValues}\n readonly={isReadOnly}\n />\n ) : (\n <ErrorDisplay type={ErrorDisplayTypes.PERMISSION_ERROR} showActionButton={false} />\n )}\n </Content>\n <EditRecordSidebar onMetadataSubmit={_handleMetadataSubmit} sidebarContainer={sidebarContainer} />\n </Container>\n </EditRecordReducerContext.Provider>\n </ErrorBoundary>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"EditRecord.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecord/EditRecord.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport isEqual from 'lodash/isEqual';\nimport {type FunctionComponent, useEffect, useReducer} from 'react';\nimport styled, {type CSSObject} from 'styled-components';\nimport {ErrorDisplayTypes} from '../../../constants';\nimport {useCanEditRecord} from '../../../hooks/useCanEditRecord';\nimport {type IValueVersion} from '../../../types/values';\nimport {\n AttributeType,\n type RecordFormAttributeStandardAttributeFragment,\n type RecordIdentityFragment,\n useActivateNewRecordMutation,\n} from '../../../_gqlTypes';\nimport {\n type IRecordPropertyLink,\n type IRecordPropertyStandard,\n type IRecordPropertyTree,\n} from '../../../_queries/records/getRecordPropertiesQuery';\nimport {ErrorBoundary} from '../../ErrorBoundary';\nimport {ErrorDisplay} from '../../ErrorDisplay';\nimport EditRecordContent from '../EditRecordContent';\nimport useExecuteDeleteValueMutation from '../EditRecordContent/hooks/useExecuteDeleteValueMutation';\nimport useSaveValueBatchMutation from '../EditRecordContent/hooks/useExecuteSaveValueBatchMutation';\nimport {\n type DeleteMultipleValuesFunc,\n type ISubmittedValueLink,\n type ISubmittedValueStandard,\n type ISubmittedValueTree,\n type IValueToSubmit,\n type MetadataSubmitValueFunc,\n type SubmitValueFunc,\n} from '../EditRecordContent/_types';\nimport editRecordReducer, {EditRecordReducerActionsTypes, initialState} from '../editRecordReducer/editRecordReducer';\nimport {EditRecordReducerContext} from '../editRecordReducer/editRecordReducerContext';\nimport {type FormInstance} from 'antd/lib/form/Form';\nimport EditRecordSidebar from '../EditRecordSidebar';\nimport EditRecordSkeleton from '../EditRecordSkeleton';\nimport {useQuery} from '@apollo/client';\nimport {getLibraryByIdQuery} from '_ui/_queries/libraries/getLibraryByIdQuery';\nimport EditRecordButtons from '../EditRecordButtons';\n\ninterface IEditRecordProps {\n antdForm: FormInstance;\n formId: string;\n isFormCreationMode: boolean;\n formElementId?: string;\n record: RecordIdentityFragment['whoAmI'] | null;\n library: string;\n onCreate?: (newRecord: RecordIdentityFragment['whoAmI']) => void;\n valuesVersion?: IValueVersion;\n showSidebar?: boolean;\n enableSidebar?: boolean;\n sidebarContainer?: HTMLElement;\n containerStyle?: CSSObject;\n withInfoButton: boolean;\n removePadding?: boolean; // TODO: This prop should be remove when EditRecord will be moved to app-studio or data-studio deleted\n}\n\nconst sidebarWidth = '352px';\n\nconst Container = styled.div<{$shouldUseLayoutWithSidebar: boolean; style: CSSObject}>`\n display: grid;\n grid-template-columns: ${props => (props.$shouldUseLayoutWithSidebar ? `minmax(0, auto) ${sidebarWidth}` : '1fr')};\n grid-template-areas: ${props => (props.$shouldUseLayoutWithSidebar ? '\"content sidebar\"' : '\"content\"')};\n overflow: hidden;\n`;\n\nconst Content = styled.div<{$shouldUseLayoutWithSidebar: boolean; $removePadding: boolean}>`\n grid-area: content;\n padding: ${props => (props.$removePadding ? 'unset' : '24px')};\n overflow-x: hidden;\n overflow-y: scroll;\n border-right: ${props =>\n props.$shouldUseLayoutWithSidebar ? '1px solid var(--general-utilities-border)' : 'none'};\n`;\n\nexport const EditRecord: FunctionComponent<IEditRecordProps> = ({\n antdForm,\n formId,\n isFormCreationMode,\n formElementId,\n record,\n library: libraryId,\n onCreate,\n valuesVersion,\n enableSidebar = false,\n showSidebar = false,\n sidebarContainer,\n containerStyle,\n withInfoButton,\n removePadding = false,\n}) => {\n const [state, dispatch] = useReducer(editRecordReducer, {\n ...initialState,\n record,\n libraryId,\n libraryLabel: null,\n valuesVersion,\n originValuesVersion: valuesVersion,\n withInfoButton,\n });\n\n const {\n loading: permissionsLoading,\n canEdit,\n isReadOnly,\n } = useCanEditRecord({...record?.library, id: libraryId}, record?.id);\n\n const {data: libraryData} = useQuery(getLibraryByIdQuery, {\n variables: {id: [libraryId]},\n });\n\n const {saveValues} = useSaveValueBatchMutation();\n const {deleteValue} = useExecuteDeleteValueMutation(record);\n const [activateNewRecordMutation] = useActivateNewRecordMutation();\n\n // Update record in reducer when it changes. Might happen on record identity change (after value save)\n useEffect(() => {\n if (libraryData) {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_LIBRARY_LABEL,\n label: libraryData.libraries.list[0].label,\n });\n }\n }, [libraryData]);\n\n useEffect(() => {\n if (record && !isEqual(record, state.record)) {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_RECORD,\n record,\n });\n }\n }, [record]);\n\n useEffect(() => {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_ENABLE_SIDEBAR,\n enabled: enableSidebar,\n });\n }, [enableSidebar]);\n\n useEffect(() => {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_SIDEBAR_IS_OPEN,\n isOpen: showSidebar,\n });\n }, [showSidebar]);\n\n const _handleValueSubmit: SubmitValueFunc = async (values, version) =>\n saveValues(\n record,\n values.map(val => {\n const savableValue = {...val, attribute: val.attribute.id, metadata: val.metadata};\n\n if (val.value) {\n switch (val.attribute.type) {\n case AttributeType.advanced_link:\n case AttributeType.simple_link:\n savableValue.value = (val as ISubmittedValueLink).value.id;\n break;\n case AttributeType.tree:\n savableValue.value = (val as ISubmittedValueTree).value.id;\n break;\n default:\n savableValue.value = (val as ISubmittedValueStandard).value;\n break;\n }\n }\n\n return savableValue as IValueToSubmit;\n }),\n version,\n true, // deleteEmpty\n );\n\n const _handleMetadataSubmit: MetadataSubmitValueFunc = (value, attribute, metadata) => {\n let valueContent;\n switch (attribute.type) {\n case AttributeType.simple:\n case AttributeType.advanced:\n valueContent = (value as IRecordPropertyStandard).raw_payload;\n break;\n case AttributeType.advanced_link:\n case AttributeType.simple_link:\n valueContent = (value as IRecordPropertyLink).linkValue;\n break;\n case AttributeType.tree:\n valueContent = (value as IRecordPropertyTree).treeValue;\n break;\n }\n\n return _handleValueSubmit(\n [\n {\n idValue: value.id_value,\n attribute,\n value: valueContent,\n metadata,\n },\n ],\n null,\n );\n };\n\n /**\n * Submit the whole record: create record and batch save all stored values\n */\n const _handleRecordSubmit = async (attributes: RecordFormAttributeStandardAttributeFragment[]) => {\n const activateNewRecordResult = await activateNewRecordMutation({\n fetchPolicy: 'network-only',\n variables: {\n libraryId,\n recordId: record.id,\n formId,\n },\n });\n const errors = activateNewRecordResult?.data?.activateNewRecord.valuesErrors;\n if (errors == null || errors?.length === 0) {\n if (onCreate) {\n onCreate(activateNewRecordResult?.data?.activateNewRecord?.record?.whoAmI);\n }\n return;\n }\n antdForm.setFields(\n errors.map(error => {\n const attributeInError = attributes.find(attribute => attribute.id === error.attribute);\n\n const doesAttributeHaveMultipleFields =\n attributeInError?.multiple_values &&\n ![AttributeType.simple_link, AttributeType.advanced_link].includes(attributeInError.type);\n\n return {\n name:\n doesAttributeHaveMultipleFields && error.type === 'REQUIRED_ATTRIBUTE'\n ? [error.attribute, 0]\n : error.attribute,\n errors: [error.message],\n };\n }),\n );\n };\n\n const _handleDeleteAllValues: DeleteMultipleValuesFunc = async (attribute, values, version) => {\n const valuesToSave = values.map(value => ({\n idValue: value.id_value,\n attribute,\n value: null,\n }));\n\n return saveValues(record, valuesToSave, version, true);\n };\n\n const shouldUseLayoutWithSidebar = state.enableSidebar && state.isOpenSidebar && sidebarContainer === undefined;\n\n return (\n <ErrorBoundary>\n <EditRecordReducerContext.Provider value={{state, dispatch}}>\n <Container $shouldUseLayoutWithSidebar={shouldUseLayoutWithSidebar} style={containerStyle}>\n <EditRecordButtons />\n <Content $shouldUseLayoutWithSidebar={shouldUseLayoutWithSidebar} $removePadding={removePadding}>\n {permissionsLoading ? (\n <EditRecordSkeleton rows={5} />\n ) : canEdit ? (\n <EditRecordContent\n antdForm={antdForm}\n formId={formId}\n isFormCreationMode={isFormCreationMode}\n formElementId={formElementId}\n record={record}\n library={libraryId}\n onRecordSubmit={_handleRecordSubmit}\n onValueSubmit={_handleValueSubmit}\n onValueDelete={deleteValue}\n onDeleteMultipleValues={_handleDeleteAllValues}\n readonly={isReadOnly}\n />\n ) : (\n <ErrorDisplay type={ErrorDisplayTypes.PERMISSION_ERROR} showActionButton={false} />\n )}\n </Content>\n <EditRecordSidebar onMetadataSubmit={_handleMetadataSubmit} sidebarContainer={sidebarContainer} />\n </Container>\n </EditRecordReducerContext.Provider>\n </ErrorBoundary>\n );\n};\n"]}
|