@leav/ui 1.6.0-b6d4f1b3 → 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.
Files changed (34) hide show
  1. package/dist/_gqlTypes/index.d.ts +11 -0
  2. package/dist/_gqlTypes/index.js +1 -0
  3. package/dist/_gqlTypes/index.js.map +1 -1
  4. package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js +20 -12
  5. package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js.map +1 -1
  6. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js +1 -1
  7. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js.map +1 -1
  8. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.d.ts +1 -3
  9. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js +6 -2
  10. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js.map +1 -1
  11. package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js +15 -17
  12. package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js.map +1 -1
  13. package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js +0 -6
  14. package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js.map +1 -1
  15. package/dist/components/LibraryItemsList/ViewPanel/View/View.d.ts +1 -3
  16. package/dist/components/LibraryItemsList/ViewPanel/View/View.js +6 -2
  17. package/dist/components/LibraryItemsList/ViewPanel/View/View.js.map +1 -1
  18. package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js +36 -14
  19. package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js.map +1 -1
  20. package/dist/components/RecordEdition/EditRecord/EditRecord.d.ts +1 -0
  21. package/dist/components/RecordEdition/EditRecord/EditRecord.js +3 -3
  22. package/dist/components/RecordEdition/EditRecord/EditRecord.js.map +1 -1
  23. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
  24. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.d.ts +1 -0
  25. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js +2 -2
  26. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js.map +1 -1
  27. package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js +2 -2
  28. package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js.map +1 -1
  29. package/dist/hooks/useIFrameMessenger/schema.d.ts +3 -3
  30. package/dist/hooks/useIFrameMessenger/schema.js +1 -1
  31. package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
  32. package/dist/locales/en/shared.json +3 -3
  33. package/dist/locales/fr/shared.json +3 -3
  34. package/package.json +6 -7
@@ -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":"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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 {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 { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';
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 onDragEnd = async (result, provided) => {
161
- if (!result.destination) {
161
+ const handleDragEnd = async (event) => {
162
+ const { active, over } = event;
163
+ if (!over || active.id === over.id) {
162
164
  return;
163
165
  }
164
- const isOrderingUserViews = result.source.droppableId === 'user';
165
- const viewsListBefore = isOrderingUserViews ? userViews : sharedViews;
166
- const orderedViews = viewsListBefore.map(v => v.id);
167
- const element = orderedViews[result.source.index];
168
- orderedViews.splice(result.source.index, 1);
169
- orderedViews.splice(result.destination.index, 0, element);
170
- const keyToUpdate = isOrderingUserViews
171
- ? PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id
172
- : PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id;
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: orderedViews,
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 }) }), _jsx(SubHeader, { children: t('view.shared-views') }), _jsx(DragDropContext, { onDragEnd: onDragEnd, children: _jsx(Droppable, { droppableId: "shared", children: providedDroppable => (_jsxs(Views, { ...providedDroppable.droppableProps, ref: providedDroppable.innerRef, children: [sharedViews.map((view, idx) => (_jsx(Draggable, { draggableId: idx.toString(), index: idx, children: provided => (_jsx("div", { ref: provided.innerRef, ...provided.draggableProps, ...provided.dragHandleProps, children: _jsx(View, { view: view, onEdit: () => _showModal(view), handleProps: provided.dragHandleProps }, view.id) })) }, idx))), providedDroppable.placeholder] })) }) }), _jsxs(SubHeader, { children: [t('view.my-views'), _jsx(CustomBadge, { count: userViews.length })] }), _jsx(DragDropContext, { onDragEnd: onDragEnd, children: _jsx(Droppable, { droppableId: "user", children: providedDroppable => (_jsxs(Views, { ...providedDroppable.droppableProps, ref: providedDroppable.innerRef, children: [userViews.map((view, idx) => (_jsx(Draggable, { draggableId: idx.toString(), index: idx, children: provided => (_jsx("div", { ref: provided.innerRef, ...provided.draggableProps, ...provided.dragHandleProps, children: _jsx(View, { view: view, onEdit: () => _showModal(view), handleProps: provided.dragHandleProps }, view.id) })) }, idx))), providedDroppable.placeholder] })) }) })] }));
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":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,WAAW,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AACjD,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAC,eAAe,EAAE,SAAS,EAAE,SAAS,EAA0C,MAAM,qBAAqB,CAAC;AACnH,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AACxC,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACzD,OAAO,gBAAgB,MAAM,wDAAwD,CAAC;AACtF,OAAO,EAAC,iBAAiB,EAAC,MAAM,sEAAsE,CAAC;AACvG,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAC,6BAA6B,EAAE,2BAA2B,EAAC,MAAM,eAAe,CAAC;AACzF,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAElD,OAAO,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AACxE,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AACvC,OAAO,2BAA2B,MAAM,sCAAsC,CAAC;AAC/E,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;oBAIN,SAAS,CAAC,gBAAgB;;CAE7C,CAAC;AAEF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAA;;wBAED,SAAS,CAAC,QAAQ;;;;;;+BAMX,SAAS,CAAC,gBAAgB;;;;;;;;;;;;;;;;;;;CAmBxD,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;kBAEV,SAAS,CAAC,WAAW;qBAClB,SAAS,CAAC,WAAW;;;;;CAKzC,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;CAEvB,CAAC;AAEF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;CAE/B,CAAC;AAEF,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;;;4BAGL,SAAS,CAAC,gBAAgB;iBACrC,SAAS,CAAC,gBAAgB;;CAE1C,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,cAAwB,EAAE,EAAE,CAAC,CAAC,KAAY,EAAE,KAAY,EAAE,EAAE;IACnF,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC;IAEjC,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;QAC3B,OAAO,MAAM,GAAG,MAAM,CAAC;IAC3B,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;SAAM,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC;QACnC,OAAO,CAAC,CAAC;IACb,CAAC;SAAM,CAAC;QACJ,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;AACL,CAAC,CAAC;AAEF,SAAS,SAAS;IACd,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,EAAC,QAAQ,EAAC,GAAG,OAAO,EAAE,CAAC;IAC7B,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,EAAE,CAAC;IACzB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,EAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAC,GAAG,gBAAgB,EAAE,CAAC;IAC1E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,KAAK,CAAC,CAAC;IAE/D,MAAM,EAAC,gBAAgB,EAAC,GAAG,2BAA2B,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAE/E,MAAM,YAAY,GAAG,oBAAoB,CAAC;QACtC,SAAS,EAAE;YACP,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE;SAC5C;KACJ,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;QAC1C,SAAS,EAAE;YACP,IAAI,EAAE;gBACF,2BAA2B,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE;gBACpD,6BAA6B,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE;aACzD;SACJ;QACD,WAAW,EAAE,CAAC,CAAC,EAAE;YACb,cAAc,CAAC;gBACX,IAAI,EAAE,iBAAiB,CAAC,oBAAoB;gBAC5C,cAAc,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,2BAA2B,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;aAC/F,CAAC,CAAC;YACH,cAAc,CAAC;gBACX,IAAI,EAAE,iBAAiB,CAAC,sBAAsB;gBAC9C,gBAAgB,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,6BAA6B,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;aACnG,CAAC,CAAC;QACP,CAAC;KACJ,CAAC,CAAC;IAEH,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,KAAC,OAAO,KAAG,CAAC;IACvB,CAAC;IAED,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE;QAC1C,SAAS,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,EAAC,WAAW,EAAE,SAAS,EAAC,GAA+C,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAC7G,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACV,MAAM,CAAC,GAAU,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAErG,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC9F,OAAO,GAAG,CAAC;QACf,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACX,OAAO,EAAC,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAC,CAAC;QAC1D,CAAC;QAED,OAAO,EAAC,GAAG,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,CAAC;IACtD,CAAC,EACD,EAAC,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,CACnC,IAAI,EAAC,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC;IAEtC,IAAI,YAAY,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAChD,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,OAAO,GAAI,CAAC;IAC9F,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,CAAC,CAAC,sBAAsB,CAAC,GAAI,CAAC;IAChE,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,IAAW,EAAE,EAAE;QAC/B,WAAW,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACrB,WAAW,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EAAE,MAAkB,EAAE,QAA2B,EAAE,EAAE;QACxE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC;QAEjE,MAAM,eAAe,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;QACtE,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClD,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAE1D,MAAM,WAAW,GAAG,mBAAmB;YACnC,CAAC,CAAC,2BAA2B,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE;YACtD,CAAC,CAAC,6BAA6B,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAE7D,MAAM,gBAAgB,CAAC;YACnB,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,KAAK;SAChB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9D,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,cAAc,CAAC,EAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,EAAC,CAAC,CAAC;IAC7D,CAAC,CAAC;IAEF,OAAO,CACH,MAAC,OAAO,eACH,QAAQ,IAAI,CACT,KAAC,QAAQ,IACL,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,CAAC,CAAC,QAAQ,EACnB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,GACnC,CACL,EACD,MAAC,MAAM,eACH,yBAAO,CAAC,CAAC,YAAY,CAAC,GAAQ,EAC9B,KAAC,MAAM,IAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,WAAW,GAAI,GAAW,IAC/E,EACT,KAAC,aAAa,cACV,KAAC,KAAK,CAAC,MAAM,IAAC,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,mBAAmB,GAAI,GAClE,EAEhB,KAAC,SAAS,cAAE,CAAC,CAAC,mBAAmB,CAAC,GAAa,EAE/C,KAAC,eAAe,IAAC,SAAS,EAAE,SAAS,YACjC,KAAC,SAAS,IAAC,WAAW,EAAC,QAAQ,YAC1B,iBAAiB,CAAC,EAAE,CAAC,CAClB,MAAC,KAAK,OAAK,iBAAiB,CAAC,cAAc,EAAE,GAAG,EAAE,iBAAiB,CAAC,QAAQ,aACvE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAC5B,KAAC,SAAS,IAAW,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,YACvD,QAAQ,CAAC,EAAE,CAAC,CACT,cACI,GAAG,EAAE,QAAQ,CAAC,QAAQ,KAClB,QAAQ,CAAC,cAAc,KACvB,QAAQ,CAAC,eAAe,YAE5B,KAAC,IAAI,IAED,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAC9B,WAAW,EAAE,QAAQ,CAAC,eAAe,IAHhC,IAAI,CAAC,EAAE,CAId,GACA,CACT,IAdW,GAAG,CAeP,CACf,CAAC,EACD,iBAAiB,CAAC,WAAW,IAC1B,CACX,GACO,GACE,EAElB,MAAC,SAAS,eACL,CAAC,CAAC,eAAe,CAAC,EACnB,KAAC,WAAW,IAAC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAI,IAChC,EACZ,KAAC,eAAe,IAAC,SAAS,EAAE,SAAS,YACjC,KAAC,SAAS,IAAC,WAAW,EAAC,MAAM,YACxB,iBAAiB,CAAC,EAAE,CAAC,CAClB,MAAC,KAAK,OAAK,iBAAiB,CAAC,cAAc,EAAE,GAAG,EAAE,iBAAiB,CAAC,QAAQ,aACvE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1B,KAAC,SAAS,IAAW,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,YACvD,QAAQ,CAAC,EAAE,CAAC,CACT,cACI,GAAG,EAAE,QAAQ,CAAC,QAAQ,KAClB,QAAQ,CAAC,cAAc,KACvB,QAAQ,CAAC,eAAe,YAE5B,KAAC,IAAI,IAED,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAC9B,WAAW,EAAE,QAAQ,CAAC,eAAe,IAHhC,IAAI,CAAC,EAAE,CAId,GACA,CACT,IAdW,GAAG,CAeP,CACf,CAAC,EACD,iBAAiB,CAAC,WAAW,IAC1B,CACX,GACO,GACE,IACZ,CACb,CAAC;AACN,CAAC;AAED,eAAe,SAAS,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 {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"]}
@@ -17,6 +17,7 @@ interface IEditRecordProps {
17
17
  sidebarContainer?: HTMLElement;
18
18
  containerStyle?: CSSObject;
19
19
  withInfoButton: boolean;
20
+ removePadding?: boolean;
20
21
  }
21
22
  export declare const EditRecord: FunctionComponent<IEditRecordProps>;
22
23
  export {};
@@ -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":"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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}\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"antdUtils.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordContent/antdUtils.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 {\n type IRecordForm,\n type RecordFormElementAttribute,\n type RecordFormElementsValue,\n type RecordFormElementsValueLinkValue,\n type RecordFormElementsValueStandardValue,\n} from '_ui/hooks/useGetRecordForm';\nimport {AttributeFormat, AttributeType} from '_ui/_gqlTypes';\nimport {type IDateRangeValue} from '@leav/utils';\nimport {type Store} from 'antd/lib/form/interface';\nimport dayjs from 'dayjs';\n\nconst hasDateRangeValues = (dateRange: unknown): dateRange is IDateRangeValue =>\n (dateRange as IDateRangeValue).from !== undefined && (dateRange as IDateRangeValue).to !== undefined;\n\nconst getCalculatedValue = values => values.find(value => value.isCalculated);\n\nconst getInheritedValue = values => values.find(value => value.isInherited);\n\nconst getUserInputValue = values =>\n values.find(value => !value.isInherited && !value.isCalculated && value.raw_payload !== null);\n\nconst isRecordFormElementsValueLinkValue = (\n value: RecordFormElementsValue,\n attribute: RecordFormElementAttribute,\n): value is RecordFormElementsValueLinkValue =>\n attribute.type === AttributeType.simple_link ||\n (attribute.type === AttributeType.advanced_link && attribute.multiple_values === false);\n\nconst isRecordFormElementsValueLinkValues = (\n values: RecordFormElementsValue[],\n attribute: RecordFormElementAttribute,\n): values is RecordFormElementsValueLinkValue[] =>\n attribute.type === AttributeType.advanced_link && attribute.multiple_values === true;\n\nconst isRecordFormElementsMultipleValues = (attribute: RecordFormElementAttribute) =>\n attribute.type === AttributeType.advanced && attribute.multiple_values === true;\n\nconst formatStandardInitialValue = (\n standardValue: RecordFormElementsValueStandardValue,\n attribute: RecordFormElementAttribute,\n) => {\n if (!standardValue?.raw_payload) {\n return getEmptyInitialValue(attribute);\n }\n\n switch (attribute.format) {\n case AttributeFormat.color:\n case AttributeFormat.text:\n case AttributeFormat.rich_text:\n case AttributeFormat.boolean:\n return standardValue.raw_payload;\n case AttributeFormat.numeric:\n return Number(standardValue.raw_payload);\n case AttributeFormat.date:\n return dayjs.unix(Number(standardValue.raw_payload));\n case AttributeFormat.date_range:\n if (hasDateRangeValues(standardValue.raw_payload)) {\n return [\n dayjs.unix(Number(standardValue.raw_payload.from)),\n dayjs.unix(Number(standardValue.raw_payload.to)),\n ];\n } else if (typeof standardValue.raw_payload === 'string') {\n const convertedFieldValue = JSON.parse(standardValue.raw_payload) as any;\n return [dayjs.unix(Number(convertedFieldValue.from)), dayjs.unix(Number(convertedFieldValue.to))];\n }\n }\n};\n\nexport const EMPTY_INITIAL_VALUE_STRING = '';\nexport const EMPTY_INITIAL_VALUE_UNDEFINED = undefined;\n\nexport const getEmptyInitialValue = (attribute: RecordFormElementAttribute) => {\n if ([AttributeFormat.date_range, AttributeFormat.color].includes(attribute.format)) {\n return EMPTY_INITIAL_VALUE_UNDEFINED;\n }\n return EMPTY_INITIAL_VALUE_STRING;\n};\n\nexport const getAntdDisplayedValue = (\n values: RecordFormElementsValueStandardValue[],\n attribute: RecordFormElementAttribute,\n) =>\n formatStandardInitialValue(\n getUserInputValue(values) ?? getInheritedValue(values) ?? getCalculatedValue(values) ?? null,\n attribute,\n );\n\nexport const getAntdFormInitialValues = (recordForm: IRecordForm) =>\n recordForm.elements.reduce<Store>((acc, {attribute, values}) => {\n if (!attribute) {\n return acc;\n }\n\n const value = getUserInputValue(values) ?? getInheritedValue(values) ?? getCalculatedValue(values) ?? null;\n\n if (isRecordFormElementsValueLinkValue(value, attribute)) {\n acc[attribute.id] = value?.linkValue?.id;\n return acc;\n }\n\n if (isRecordFormElementsValueLinkValues(values, attribute)) {\n acc[attribute.id] = values.map(val => val?.linkValue?.id ?? undefined);\n return acc;\n }\n\n if (isRecordFormElementsMultipleValues(attribute)) {\n const userInputValues = values.filter(val => val.id_value);\n const calculatedValues = values.filter(val => val.isCalculated);\n const inheritedValues = values.filter(val => val.isInherited);\n\n const effectiveValues =\n userInputValues.length > 0\n ? userInputValues\n : calculatedValues.length > 0\n ? calculatedValues\n : inheritedValues.length > 0\n ? inheritedValues\n : [];\n\n acc[attribute.id] =\n effectiveValues.length === 0\n ? [getEmptyInitialValue(attribute)]\n : effectiveValues\n .sort((a, b) => Number(a.id_value) - Number(b.id_value))\n .map(val => formatStandardInitialValue(val, attribute));\n return acc;\n }\n\n const standardValue = value as RecordFormElementsValueStandardValue;\n\n acc[attribute.id] = formatStandardInitialValue(standardValue, attribute);\n\n return acc;\n }, {});\n"]}
1
+ {"version":3,"file":"antdUtils.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordContent/antdUtils.ts"],"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 {\n type IRecordForm,\n type RecordFormElementAttribute,\n type RecordFormElementsValue,\n type RecordFormElementsValueLinkValue,\n type RecordFormElementsValueStandardValue,\n} from '_ui/hooks/useGetRecordForm';\nimport {AttributeFormat, AttributeType} from '_ui/_gqlTypes';\nimport {type IDateRangeValue} from '@leav/utils';\nimport {type Store} from 'antd/lib/form/interface';\nimport dayjs from 'dayjs';\n\nconst hasDateRangeValues = (dateRange: unknown): dateRange is IDateRangeValue =>\n (dateRange as IDateRangeValue).from !== undefined && (dateRange as IDateRangeValue).to !== undefined;\n\nconst getCalculatedValue = values => values.find(value => value.isCalculated);\n\nconst getInheritedValue = values => values.find(value => value.isInherited);\n\nconst getUserInputValue = values =>\n values.find(value => !value.isInherited && !value.isCalculated && value.raw_payload !== null);\n\nconst isRecordFormElementsValueLinkValue = (\n value: RecordFormElementsValue,\n attribute: RecordFormElementAttribute,\n): value is RecordFormElementsValueLinkValue =>\n attribute.type === AttributeType.simple_link ||\n (attribute.type === AttributeType.advanced_link && attribute.multiple_values === false);\n\nconst isRecordFormElementsValueLinkValues = (\n values: RecordFormElementsValue[],\n attribute: RecordFormElementAttribute,\n): values is RecordFormElementsValueLinkValue[] =>\n attribute.type === AttributeType.advanced_link && attribute.multiple_values === true;\n\nconst isRecordFormElementsMultipleValues = (attribute: RecordFormElementAttribute) =>\n attribute.type === AttributeType.advanced && attribute.multiple_values === true;\n\nconst formatStandardInitialValue = (\n standardValue: RecordFormElementsValueStandardValue,\n attribute: RecordFormElementAttribute,\n) => {\n if (!standardValue?.raw_payload) {\n return getEmptyInitialValue(attribute);\n }\n\n switch (attribute.format) {\n case AttributeFormat.color:\n case AttributeFormat.text:\n case AttributeFormat.rich_text:\n case AttributeFormat.boolean:\n return standardValue.raw_payload;\n case AttributeFormat.numeric:\n return Number(standardValue.raw_payload);\n case AttributeFormat.date:\n return dayjs.unix(Number(standardValue.raw_payload));\n case AttributeFormat.date_range:\n if (hasDateRangeValues(standardValue.raw_payload)) {\n return [\n dayjs.unix(Number(standardValue.raw_payload.from)),\n dayjs.unix(Number(standardValue.raw_payload.to)),\n ];\n } else if (typeof standardValue.raw_payload === 'string') {\n const convertedFieldValue = JSON.parse(standardValue.raw_payload) as any;\n return [dayjs.unix(Number(convertedFieldValue.from)), dayjs.unix(Number(convertedFieldValue.to))];\n }\n }\n};\n\nexport const EMPTY_INITIAL_VALUE_STRING = '';\nexport const EMPTY_INITIAL_VALUE_UNDEFINED = undefined;\n\nexport const getEmptyInitialValue = (attribute: RecordFormElementAttribute) => {\n if ([AttributeFormat.date_range, AttributeFormat.color].includes(attribute.format)) {\n return EMPTY_INITIAL_VALUE_UNDEFINED;\n }\n return EMPTY_INITIAL_VALUE_STRING;\n};\n\nexport const getAntdDisplayedValue = (\n values: RecordFormElementsValueStandardValue[],\n attribute: RecordFormElementAttribute,\n) =>\n formatStandardInitialValue(\n getUserInputValue(values) ?? getInheritedValue(values) ?? getCalculatedValue(values) ?? null,\n attribute,\n );\n\nexport const getAntdFormInitialValues = (recordForm: IRecordForm) =>\n recordForm.elements.reduce<Store>((acc, {attribute, values}) => {\n if (!attribute) {\n return acc;\n }\n\n const value = getUserInputValue(values) ?? getInheritedValue(values) ?? getCalculatedValue(values) ?? null;\n\n if (isRecordFormElementsValueLinkValue(value, attribute)) {\n acc[attribute.id] = value?.linkValue?.id;\n return acc;\n }\n\n if (isRecordFormElementsValueLinkValues(values, attribute)) {\n acc[attribute.id] = values.map(val => val?.linkValue?.id ?? undefined);\n return acc;\n }\n\n if (isRecordFormElementsMultipleValues(attribute)) {\n const userInputValues = values.filter(val => val.id_value);\n const calculatedValues = values.filter(val => val.isCalculated);\n const inheritedValues = values.filter(val => val.isInherited);\n\n const effectiveValues =\n userInputValues.length > 0\n ? userInputValues\n : calculatedValues.length > 0\n ? calculatedValues\n : inheritedValues.length > 0\n ? inheritedValues\n : [];\n\n acc[attribute.id] =\n effectiveValues.length === 0\n ? [getEmptyInitialValue(attribute)]\n : effectiveValues\n .sort((a, b) => Number(a.id_value) - Number(b.id_value))\n .map(val => formatStandardInitialValue(val, attribute));\n return acc;\n }\n\n const standardValue = value as RecordFormElementsValueStandardValue;\n\n acc[attribute.id] = formatStandardInitialValue(standardValue, attribute);\n\n return acc;\n }, {});\n"]}
@@ -20,6 +20,7 @@ interface IEditRecordPageProps {
20
20
  enableSidebar?: boolean;
21
21
  sidebarContainer?: HTMLElement;
22
22
  isSubmitButtonsPortal?: boolean;
23
+ removePadding?: boolean;
23
24
  }
24
25
  export declare const EditRecordPage: FunctionComponent<IEditRecordPageProps>;
25
26
  export {};
@@ -29,7 +29,7 @@ const Header = styled.div `
29
29
  align-items: center;
30
30
  `;
31
31
  const emptyFunction = () => null;
32
- export const EditRecordPage = ({ record, library, creationFormId, editionFormId, onCreate, onCreateAndEdit, valuesVersion, title, showHeader = true, submitButtons = ['create'], withInfoButton, onClose = emptyFunction, enableSidebar, showSidebar, sidebarContainer, isSubmitButtonsPortal = false, }) => {
32
+ export const EditRecordPage = ({ record, library, creationFormId, editionFormId, onCreate, onCreateAndEdit, valuesVersion, title, showHeader = true, submitButtons = ['create'], withInfoButton, onClose = emptyFunction, enableSidebar, showSidebar, sidebarContainer, isSubmitButtonsPortal = false, removePadding = false, }) => {
33
33
  const { t } = useSharedTranslation();
34
34
  const [currentRecord, setCurrentRecord] = useState(record);
35
35
  const [clickedSubmitButton, setClickedSubmitButton] = useState(null);
@@ -106,6 +106,6 @@ export const EditRecordPage = ({ record, library, creationFormId, editionFormId,
106
106
  };
107
107
  return (_jsxs(_Fragment, { children: [showHeader && (_jsxs(_Fragment, { children: [_jsxs(Header, { children: [title !== undefined ? (title) : (_jsx(KitTypography.Title, { level: "h2", style: { margin: 0 }, children: currentRecord?.label ?? t('record_edition.new_record') })), _jsx("div", { id: EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS, "data-testid": EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS }), _jsx(KitButton, { onClick: _handleClose, icon: _jsx(FontAwesomeIcon, { icon: faXmark }), children: closeButtonLabel }), _jsx(KitSpace, { children: displayedSubmitButtons })] }), _jsx(KitDivider, { noMargin: true, color: "lightGrey" })] })), isSubmitButtonsPortal &&
108
108
  formCreateButtonsContainer &&
109
- createPortal(displayedSubmitButtons, formCreateButtonsContainer), _jsx(EditRecord, { antdForm: antdForm, formId: formId, isFormCreationMode: isCreation, formElementId: formElementId.current, record: currentRecord, library: library, valuesVersion: valuesVersion, onCreate: _handleCreate, containerStyle: showHeader ? { height: 'calc(100% - 82px)' } : { height: '100%' }, withInfoButton: withInfoButton, enableSidebar: enableSidebar, showSidebar: showSidebar, sidebarContainer: sidebarContainer })] }));
109
+ createPortal(displayedSubmitButtons, formCreateButtonsContainer), _jsx(EditRecord, { antdForm: antdForm, formId: formId, isFormCreationMode: isCreation, formElementId: formElementId.current, record: currentRecord, library: library, valuesVersion: valuesVersion, onCreate: _handleCreate, containerStyle: showHeader ? { height: 'calc(100% - 82px)' } : { height: '100%' }, withInfoButton: withInfoButton, enableSidebar: enableSidebar, showSidebar: showSidebar, sidebarContainer: sidebarContainer, removePadding: removePadding })] }));
110
110
  };
111
111
  //# sourceMappingURL=EditRecordPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditRecordPage.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordPage/EditRecordPage.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 {type FunctionComponent, type ReactNode, useEffect, useRef, useState} from 'react';\nimport {KitButton, KitDivider, KitSpace, KitTypography} from 'aristid-ds';\nimport styled from 'styled-components';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type IValueVersion} from '_ui/types';\nimport {type RecordIdentityFragment, usePurgeRecordMutation} from '_ui/_gqlTypes';\nimport {EditRecord} from '../EditRecord';\nimport {type PossibleSubmitButtons, type SubmitButtonsName} from '../_types';\nimport {useGetSubmitButtons} from '../hooks/useGetSubmitButtons';\nimport {useForm} from 'antd/lib/form/Form';\nimport {useCreateCancelConfirm} from '../hooks/useCreateCancelConfirm';\nimport {EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS} from '../constants';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faXmark} from '@fortawesome/free-solid-svg-icons';\nimport {APICallStatus} from '../EditRecordContent/_types';\nimport useExecuteCreateEmptyRecordMutation from '../EditRecordContent/hooks/useCreateEmptyRecordMutation';\nimport {createPortal} from 'react-dom';\nimport {SUBMIT_BUTTONS_PORTAL} from '_ui/constants';\n\ninterface IEditRecordPageProps {\n record: RecordIdentityFragment['whoAmI'] | null;\n creationFormId?: string;\n editionFormId?: string;\n library: string;\n title?: ReactNode;\n onCreate?: (newRecord: RecordIdentityFragment['whoAmI']) => void; // Called after submitting via the \"create\" button\n onCreateAndEdit?: (newRecord: RecordIdentityFragment['whoAmI']) => void; // Called after submitting via the \"create and edit\" button\n submitButtons?: PossibleSubmitButtons;\n valuesVersion?: IValueVersion;\n showRefreshButton?: boolean;\n showHeader?: boolean;\n withInfoButton?: boolean;\n onClose?: () => void;\n showSidebar?: boolean;\n enableSidebar?: boolean;\n sidebarContainer?: HTMLElement;\n isSubmitButtonsPortal?: boolean;\n}\n\nconst Header = styled.div`\n grid-area: title;\n align-self: center;\n font-size: 1rem;\n padding: 16px 32px;\n height: 82px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst emptyFunction = () => null;\n\nexport const EditRecordPage: FunctionComponent<IEditRecordPageProps> = ({\n record,\n library,\n creationFormId,\n editionFormId,\n onCreate,\n onCreateAndEdit,\n valuesVersion,\n title,\n showHeader = true,\n submitButtons = ['create'],\n withInfoButton,\n onClose = emptyFunction,\n enableSidebar,\n showSidebar,\n sidebarContainer,\n isSubmitButtonsPortal = false,\n}) => {\n const {t} = useSharedTranslation();\n const [currentRecord, setCurrentRecord] = useState<RecordIdentityFragment['whoAmI'] | null>(record);\n const [clickedSubmitButton, setClickedSubmitButton] = useState<SubmitButtonsName | null>(null);\n const formElementId = useRef(window.crypto.randomUUID());\n const [isCreation, setIsCreation] = useState(!record);\n const {createEmptyRecord} = useExecuteCreateEmptyRecordMutation();\n const [purgeRecordMutation] = usePurgeRecordMutation();\n const [formId, setFormId] = useState<string>(\n isCreation ? (creationFormId ?? 'creation') : (editionFormId ?? 'edition'),\n );\n\n const [formCreateButtonsContainer, setFormCreateButtonsContainer] = useState<HTMLElement>();\n\n useEffect(() => {\n if (isSubmitButtonsPortal) {\n const formCreateButtonsElement = document.getElementById(SUBMIT_BUTTONS_PORTAL);\n if (formCreateButtonsElement) {\n setFormCreateButtonsContainer(formCreateButtonsElement);\n }\n }\n }, []);\n\n useEffect(() => {\n const createEmptyRecordFunction = async () => {\n const res = await createEmptyRecord(library);\n if (res?.status === APICallStatus.ERROR) {\n // TODO : call KitNotification error\n return null;\n }\n setCurrentRecord(res?.record ?? null);\n };\n\n if (isCreation) {\n createEmptyRecordFunction();\n }\n }, []);\n\n const _handleClickSubmit = (button: SubmitButtonsName) => {\n setClickedSubmitButton(button);\n };\n\n const _purgeRecordOnCreationCancel = () =>\n purgeRecordMutation({\n errorPolicy: 'ignore',\n variables: {\n libraryId: currentRecord?.library?.id,\n recordId: currentRecord?.id,\n },\n });\n\n const _closeAfterConfirm = async () => {\n if (currentRecord?.id && currentRecord?.library?.id) {\n _purgeRecordOnCreationCancel();\n }\n return onClose();\n };\n\n const showCancelConfirm = useCreateCancelConfirm(_closeAfterConfirm);\n\n const displayedSubmitButtons = useGetSubmitButtons(\n submitButtons,\n formElementId.current,\n isCreation,\n _handleClickSubmit,\n );\n const [antdForm] = useForm();\n\n const _handleClose = () => {\n if (isCreation) {\n if (antdForm.isFieldsTouched()) {\n return showCancelConfirm();\n } else {\n _purgeRecordOnCreationCancel();\n }\n }\n\n return onClose();\n };\n\n const closeButtonLabel = isCreation ? t('global.cancel') : t('global.close');\n\n const _handleCreate = (newRecord: RecordIdentityFragment['whoAmI']) => {\n setCurrentRecord(newRecord);\n\n if (onCreateAndEdit && clickedSubmitButton === 'createAndEdit') {\n setFormId(editionFormId ?? 'edition');\n setIsCreation(false);\n onCreateAndEdit(newRecord);\n return;\n }\n\n if (onCreate && clickedSubmitButton === 'create') {\n onCreate(newRecord);\n return;\n }\n };\n\n return (\n <>\n {showHeader && (\n <>\n <Header>\n {title !== undefined ? (\n title\n ) : (\n <KitTypography.Title level=\"h2\" style={{margin: 0}}>\n {currentRecord?.label ?? t('record_edition.new_record')}\n </KitTypography.Title>\n )}\n <div\n id={EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS}\n data-testid={EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS}\n />\n <KitButton onClick={_handleClose} icon={<FontAwesomeIcon icon={faXmark} />}>\n {closeButtonLabel}\n </KitButton>\n <KitSpace>{displayedSubmitButtons}</KitSpace>\n </Header>\n <KitDivider noMargin color=\"lightGrey\" />\n </>\n )}\n {isSubmitButtonsPortal &&\n formCreateButtonsContainer &&\n createPortal(displayedSubmitButtons, formCreateButtonsContainer)}\n <EditRecord\n antdForm={antdForm}\n formId={formId}\n isFormCreationMode={isCreation}\n formElementId={formElementId.current}\n record={currentRecord}\n library={library}\n valuesVersion={valuesVersion}\n onCreate={_handleCreate}\n containerStyle={showHeader ? {height: 'calc(100% - 82px)'} : {height: '100%'}}\n withInfoButton={withInfoButton}\n enableSidebar={enableSidebar}\n showSidebar={showSidebar}\n sidebarContainer={sidebarContainer}\n />\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"EditRecordPage.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordPage/EditRecordPage.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 {type FunctionComponent, type ReactNode, useEffect, useRef, useState} from 'react';\nimport {KitButton, KitDivider, KitSpace, KitTypography} from 'aristid-ds';\nimport styled from 'styled-components';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type IValueVersion} from '_ui/types';\nimport {type RecordIdentityFragment, usePurgeRecordMutation} from '_ui/_gqlTypes';\nimport {EditRecord} from '../EditRecord';\nimport {type PossibleSubmitButtons, type SubmitButtonsName} from '../_types';\nimport {useGetSubmitButtons} from '../hooks/useGetSubmitButtons';\nimport {useForm} from 'antd/lib/form/Form';\nimport {useCreateCancelConfirm} from '../hooks/useCreateCancelConfirm';\nimport {EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS} from '../constants';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faXmark} from '@fortawesome/free-solid-svg-icons';\nimport {APICallStatus} from '../EditRecordContent/_types';\nimport useExecuteCreateEmptyRecordMutation from '../EditRecordContent/hooks/useCreateEmptyRecordMutation';\nimport {createPortal} from 'react-dom';\nimport {SUBMIT_BUTTONS_PORTAL} from '_ui/constants';\n\ninterface IEditRecordPageProps {\n record: RecordIdentityFragment['whoAmI'] | null;\n creationFormId?: string;\n editionFormId?: string;\n library: string;\n title?: ReactNode;\n onCreate?: (newRecord: RecordIdentityFragment['whoAmI']) => void; // Called after submitting via the \"create\" button\n onCreateAndEdit?: (newRecord: RecordIdentityFragment['whoAmI']) => void; // Called after submitting via the \"create and edit\" button\n submitButtons?: PossibleSubmitButtons;\n valuesVersion?: IValueVersion;\n showRefreshButton?: boolean;\n showHeader?: boolean;\n withInfoButton?: boolean;\n onClose?: () => void;\n showSidebar?: boolean;\n enableSidebar?: boolean;\n sidebarContainer?: HTMLElement;\n isSubmitButtonsPortal?: boolean;\n removePadding?: boolean;\n}\n\nconst Header = styled.div`\n grid-area: title;\n align-self: center;\n font-size: 1rem;\n padding: 16px 32px;\n height: 82px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst emptyFunction = () => null;\n\nexport const EditRecordPage: FunctionComponent<IEditRecordPageProps> = ({\n record,\n library,\n creationFormId,\n editionFormId,\n onCreate,\n onCreateAndEdit,\n valuesVersion,\n title,\n showHeader = true,\n submitButtons = ['create'],\n withInfoButton,\n onClose = emptyFunction,\n enableSidebar,\n showSidebar,\n sidebarContainer,\n isSubmitButtonsPortal = false,\n removePadding = false,\n}) => {\n const {t} = useSharedTranslation();\n const [currentRecord, setCurrentRecord] = useState<RecordIdentityFragment['whoAmI'] | null>(record);\n const [clickedSubmitButton, setClickedSubmitButton] = useState<SubmitButtonsName | null>(null);\n const formElementId = useRef(window.crypto.randomUUID());\n const [isCreation, setIsCreation] = useState(!record);\n const {createEmptyRecord} = useExecuteCreateEmptyRecordMutation();\n const [purgeRecordMutation] = usePurgeRecordMutation();\n const [formId, setFormId] = useState<string>(\n isCreation ? (creationFormId ?? 'creation') : (editionFormId ?? 'edition'),\n );\n\n const [formCreateButtonsContainer, setFormCreateButtonsContainer] = useState<HTMLElement>();\n\n useEffect(() => {\n if (isSubmitButtonsPortal) {\n const formCreateButtonsElement = document.getElementById(SUBMIT_BUTTONS_PORTAL);\n if (formCreateButtonsElement) {\n setFormCreateButtonsContainer(formCreateButtonsElement);\n }\n }\n }, []);\n\n useEffect(() => {\n const createEmptyRecordFunction = async () => {\n const res = await createEmptyRecord(library);\n if (res?.status === APICallStatus.ERROR) {\n // TODO : call KitNotification error\n return null;\n }\n setCurrentRecord(res?.record ?? null);\n };\n\n if (isCreation) {\n createEmptyRecordFunction();\n }\n }, []);\n\n const _handleClickSubmit = (button: SubmitButtonsName) => {\n setClickedSubmitButton(button);\n };\n\n const _purgeRecordOnCreationCancel = () =>\n purgeRecordMutation({\n errorPolicy: 'ignore',\n variables: {\n libraryId: currentRecord?.library?.id,\n recordId: currentRecord?.id,\n },\n });\n\n const _closeAfterConfirm = async () => {\n if (currentRecord?.id && currentRecord?.library?.id) {\n _purgeRecordOnCreationCancel();\n }\n return onClose();\n };\n\n const showCancelConfirm = useCreateCancelConfirm(_closeAfterConfirm);\n\n const displayedSubmitButtons = useGetSubmitButtons(\n submitButtons,\n formElementId.current,\n isCreation,\n _handleClickSubmit,\n );\n const [antdForm] = useForm();\n\n const _handleClose = () => {\n if (isCreation) {\n if (antdForm.isFieldsTouched()) {\n return showCancelConfirm();\n } else {\n _purgeRecordOnCreationCancel();\n }\n }\n\n return onClose();\n };\n\n const closeButtonLabel = isCreation ? t('global.cancel') : t('global.close');\n\n const _handleCreate = (newRecord: RecordIdentityFragment['whoAmI']) => {\n setCurrentRecord(newRecord);\n\n if (onCreateAndEdit && clickedSubmitButton === 'createAndEdit') {\n setFormId(editionFormId ?? 'edition');\n setIsCreation(false);\n onCreateAndEdit(newRecord);\n return;\n }\n\n if (onCreate && clickedSubmitButton === 'create') {\n onCreate(newRecord);\n return;\n }\n };\n\n return (\n <>\n {showHeader && (\n <>\n <Header>\n {title !== undefined ? (\n title\n ) : (\n <KitTypography.Title level=\"h2\" style={{margin: 0}}>\n {currentRecord?.label ?? t('record_edition.new_record')}\n </KitTypography.Title>\n )}\n <div\n id={EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS}\n data-testid={EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS}\n />\n <KitButton onClick={_handleClose} icon={<FontAwesomeIcon icon={faXmark} />}>\n {closeButtonLabel}\n </KitButton>\n <KitSpace>{displayedSubmitButtons}</KitSpace>\n </Header>\n <KitDivider noMargin color=\"lightGrey\" />\n </>\n )}\n {isSubmitButtonsPortal &&\n formCreateButtonsContainer &&\n createPortal(displayedSubmitButtons, formCreateButtonsContainer)}\n <EditRecord\n antdForm={antdForm}\n formId={formId}\n isFormCreationMode={isCreation}\n formElementId={formElementId.current}\n record={currentRecord}\n library={library}\n valuesVersion={valuesVersion}\n onCreate={_handleCreate}\n containerStyle={showHeader ? {height: 'calc(100% - 82px)'} : {height: '100%'}}\n withInfoButton={withInfoButton}\n enableSidebar={enableSidebar}\n showSidebar={showSidebar}\n sidebarContainer={sidebarContainer}\n removePadding={removePadding}\n />\n </>\n );\n};\n"]}
@@ -14,10 +14,10 @@ export const useGetSubmitButtons = (buttons, id, isInCreateMode, onClickSubmit)
14
14
  return [];
15
15
  }
16
16
  if (buttons.includes('create')) {
17
- headerSubmitButtons.push(_jsx(KitButton, { form: id ?? EDIT_OR_CREATE_RECORD_FORM_ID, type: !buttons.includes('createAndEdit') ? 'primary' : 'secondary', htmlType: "submit", icon: _jsx(FontAwesomeIcon, { icon: faCheck }), onClick: () => onClickSubmit('create'), children: t('record_edition.create') }, "create"));
17
+ headerSubmitButtons.push(_jsx(KitButton, { form: id ?? EDIT_OR_CREATE_RECORD_FORM_ID, type: !buttons.includes('createAndEdit') ? 'primary' : 'secondary', htmlType: "submit", icon: _jsx(FontAwesomeIcon, { icon: faCheck }), onClick: () => onClickSubmit('create'), size: "m", children: t('record_edition.create') }, "create"));
18
18
  }
19
19
  if (buttons.includes('createAndEdit')) {
20
- headerSubmitButtons.push(_jsx(KitButton, { form: id ?? EDIT_OR_CREATE_RECORD_FORM_ID, type: "primary", htmlType: "submit", icon: _jsx(FontAwesomeIcon, { icon: faPenToSquare }), onClick: () => onClickSubmit('createAndEdit'), children: t('record_edition.create_and_edit') }, "createAndEdit"));
20
+ headerSubmitButtons.push(_jsx(KitButton, { form: id ?? EDIT_OR_CREATE_RECORD_FORM_ID, type: "primary", htmlType: "submit", icon: _jsx(FontAwesomeIcon, { icon: faPenToSquare }), onClick: () => onClickSubmit('createAndEdit'), size: "m", children: t('record_edition.create_and_edit') }, "createAndEdit"));
21
21
  }
22
22
  return headerSubmitButtons;
23
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useGetSubmitButtons.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/hooks/useGetSubmitButtons.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AACrC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,aAAa,EAAE,OAAO,EAAC,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAC,6BAA6B,EAAC,MAAM,oCAAoC,CAAC;AAEjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAC/B,OAA8B,EAC9B,EAAU,EACV,cAAuB,EACvB,aAAkD,EACpD,EAAE;IACA,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,mBAAmB,GAAG,EAAE,CAAC;IAE/B,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,mBAAmB,CAAC,IAAI,CACpB,KAAC,SAAS,IAEN,IAAI,EAAE,EAAE,IAAI,6BAA6B,EACzC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAClE,QAAQ,EAAC,QAAQ,EACjB,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,OAAO,GAAI,EACxC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,YAErC,CAAC,CAAC,uBAAuB,CAAC,IAPvB,QAAQ,CAQJ,CACf,CAAC;IACN,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,mBAAmB,CAAC,IAAI,CACpB,KAAC,SAAS,IAEN,IAAI,EAAE,EAAE,IAAI,6BAA6B,EACzC,IAAI,EAAC,SAAS,EACd,QAAQ,EAAC,QAAQ,EACjB,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,aAAa,GAAI,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,YAE5C,CAAC,CAAC,gCAAgC,CAAC,IAPhC,eAAe,CAQX,CACf,CAAC;IACN,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC/B,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 {KitButton} from 'aristid-ds';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type PossibleSubmitButtons, type SubmitButtonsName} from '../_types';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faPenToSquare, faCheck} from '@fortawesome/free-solid-svg-icons';\nimport {EDIT_OR_CREATE_RECORD_FORM_ID} from '../EditRecordContent/formConstants';\n\nexport const useGetSubmitButtons = (\n buttons: PossibleSubmitButtons,\n id: string,\n isInCreateMode: boolean,\n onClickSubmit: (button: SubmitButtonsName) => void,\n) => {\n const {t} = useSharedTranslation();\n const headerSubmitButtons = [];\n\n if (!isInCreateMode) {\n return [];\n }\n\n if (buttons.includes('create')) {\n headerSubmitButtons.push(\n <KitButton\n key=\"create\"\n form={id ?? EDIT_OR_CREATE_RECORD_FORM_ID}\n type={!buttons.includes('createAndEdit') ? 'primary' : 'secondary'}\n htmlType=\"submit\"\n icon={<FontAwesomeIcon icon={faCheck} />}\n onClick={() => onClickSubmit('create')}\n >\n {t('record_edition.create')}\n </KitButton>,\n );\n }\n\n if (buttons.includes('createAndEdit')) {\n headerSubmitButtons.push(\n <KitButton\n key=\"createAndEdit\"\n form={id ?? EDIT_OR_CREATE_RECORD_FORM_ID}\n type=\"primary\"\n htmlType=\"submit\"\n icon={<FontAwesomeIcon icon={faPenToSquare} />}\n onClick={() => onClickSubmit('createAndEdit')}\n >\n {t('record_edition.create_and_edit')}\n </KitButton>,\n );\n }\n\n return headerSubmitButtons;\n};\n"]}
1
+ {"version":3,"file":"useGetSubmitButtons.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/hooks/useGetSubmitButtons.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AACrC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,aAAa,EAAE,OAAO,EAAC,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAC,6BAA6B,EAAC,MAAM,oCAAoC,CAAC;AAEjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAC/B,OAA8B,EAC9B,EAAU,EACV,cAAuB,EACvB,aAAkD,EACpD,EAAE;IACA,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,mBAAmB,GAAG,EAAE,CAAC;IAE/B,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,mBAAmB,CAAC,IAAI,CACpB,KAAC,SAAS,IAEN,IAAI,EAAE,EAAE,IAAI,6BAA6B,EACzC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAClE,QAAQ,EAAC,QAAQ,EACjB,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,OAAO,GAAI,EACxC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EACtC,IAAI,EAAC,GAAG,YAEP,CAAC,CAAC,uBAAuB,CAAC,IARvB,QAAQ,CASJ,CACf,CAAC;IACN,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,mBAAmB,CAAC,IAAI,CACpB,KAAC,SAAS,IAEN,IAAI,EAAE,EAAE,IAAI,6BAA6B,EACzC,IAAI,EAAC,SAAS,EACd,QAAQ,EAAC,QAAQ,EACjB,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,aAAa,GAAI,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,EAC7C,IAAI,EAAC,GAAG,YAEP,CAAC,CAAC,gCAAgC,CAAC,IARhC,eAAe,CASX,CACf,CAAC;IACN,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC/B,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 {KitButton} from 'aristid-ds';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type PossibleSubmitButtons, type SubmitButtonsName} from '../_types';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faPenToSquare, faCheck} from '@fortawesome/free-solid-svg-icons';\nimport {EDIT_OR_CREATE_RECORD_FORM_ID} from '../EditRecordContent/formConstants';\n\nexport const useGetSubmitButtons = (\n buttons: PossibleSubmitButtons,\n id: string,\n isInCreateMode: boolean,\n onClickSubmit: (button: SubmitButtonsName) => void,\n) => {\n const {t} = useSharedTranslation();\n const headerSubmitButtons = [];\n\n if (!isInCreateMode) {\n return [];\n }\n\n if (buttons.includes('create')) {\n headerSubmitButtons.push(\n <KitButton\n key=\"create\"\n form={id ?? EDIT_OR_CREATE_RECORD_FORM_ID}\n type={!buttons.includes('createAndEdit') ? 'primary' : 'secondary'}\n htmlType=\"submit\"\n icon={<FontAwesomeIcon icon={faCheck} />}\n onClick={() => onClickSubmit('create')}\n size=\"m\"\n >\n {t('record_edition.create')}\n </KitButton>,\n );\n }\n\n if (buttons.includes('createAndEdit')) {\n headerSubmitButtons.push(\n <KitButton\n key=\"createAndEdit\"\n form={id ?? EDIT_OR_CREATE_RECORD_FORM_ID}\n type=\"primary\"\n htmlType=\"submit\"\n icon={<FontAwesomeIcon icon={faPenToSquare} />}\n onClick={() => onClickSubmit('createAndEdit')}\n size=\"m\"\n >\n {t('record_edition.create_and_edit')}\n </KitButton>,\n );\n }\n\n return headerSubmitButtons;\n};\n"]}