@leav/ui 1.8.0-c4bc6f9a → 1.9.0-22d8ceed
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_gqlTypes/index.d.ts +75 -65
- package/dist/_gqlTypes/index.js +3 -3
- package/dist/_gqlTypes/index.js.map +1 -1
- package/dist/_queries/records/createRecordMutation.js +2 -2
- package/dist/_queries/records/createRecordMutation.js.map +1 -1
- package/dist/components/LibraryItemsList/hooks/useSearchReducer/_types.d.ts +2 -2
- package/dist/components/LibraryItemsList/hooks/useSearchReducer/_types.js.map +1 -1
- package/dist/components/LibraryItemsList/hooks/useSearchReducer/searchReducer.d.ts +2 -2
- package/dist/components/LibraryItemsList/hooks/useSearchReducer/searchReducer.js.map +1 -1
- package/dist/components/Notifications/hooks/useNotificationSubscription.d.ts +9 -3
- package/dist/components/RecordEdition/EditRecord/EditRecord.js +1 -1
- package/dist/components/RecordEdition/EditRecord/EditRecord.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/_types.d.ts +4 -0
- package/dist/components/RecordEdition/EditRecordContent/_types.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordModal/EditRecordModal.js +27 -16
- package/dist/components/RecordEdition/EditRecordModal/EditRecordModal.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js +28 -16
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordPage/ErrorComponent.d.ts +2 -0
- package/dist/components/RecordEdition/EditRecordPage/ErrorComponent.js +11 -0
- package/dist/components/RecordEdition/EditRecordPage/ErrorComponent.js.map +1 -0
- package/dist/components/RecordEdition/EditRecordPage/getInitialRecordValues.d.ts +2 -0
- package/dist/components/RecordEdition/EditRecordPage/getInitialRecordValues.js +35 -0
- package/dist/components/RecordEdition/EditRecordPage/getInitialRecordValues.js.map +1 -0
- package/dist/hooks/useGetLibraryDetailExtendedQuery/useGetLibraryDetailExtendedQuery.d.ts +1 -1
- package/dist/hooks/useGetRecordUpdatesSubscription/useGetRecordUpdatesSubscription.d.ts +9 -3
- package/dist/hooks/useGetRecordValuesQuery/useGetRecordValuesQuery.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/types.d.ts +5 -0
- package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
- package/package.json +6 -6
|
@@ -5,8 +5,8 @@ import { gql } from '@apollo/client';
|
|
|
5
5
|
import { recordIdentityFragment } from '../../gqlFragments';
|
|
6
6
|
const createRecordMutation = gql `
|
|
7
7
|
${recordIdentityFragment}
|
|
8
|
-
mutation CREATE_RECORD($library: ID!, $data: CreateRecordDataInput) {
|
|
9
|
-
createRecord(library: $library, data: $data) {
|
|
8
|
+
mutation CREATE_RECORD($library: ID!, $skipActivate: Boolean, $data: CreateRecordDataInput) {
|
|
9
|
+
createRecord(library: $library, skipActivate: $skipActivate, data: $data) {
|
|
10
10
|
record {
|
|
11
11
|
...RecordIdentity
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRecordMutation.js","sourceRoot":"","sources":["../../../src/_queries/records/createRecordMutation.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AAEtE,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAC,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAE1D,MAAM,oBAAoB,GAAG,GAAG,CAAA;MAC1B,sBAAsB;;;;;;;;;;;;;;CAc3B,CAAC;AAEF,eAAe,oBAAoB,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\n\nimport {gql} from '@apollo/client';\nimport {recordIdentityFragment} from '../../gqlFragments';\n\nconst createRecordMutation = gql`\n ${recordIdentityFragment}\n mutation CREATE_RECORD($library: ID!, $data: CreateRecordDataInput) {\n createRecord(library: $library, data: $data) {\n record {\n ...RecordIdentity\n }\n valuesErrors {\n type\n attribute\n input\n message\n }\n }\n }\n`;\n\nexport default createRecordMutation;\n"]}
|
|
1
|
+
{"version":3,"file":"createRecordMutation.js","sourceRoot":"","sources":["../../../src/_queries/records/createRecordMutation.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AAEtE,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAC,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAE1D,MAAM,oBAAoB,GAAG,GAAG,CAAA;MAC1B,sBAAsB;;;;;;;;;;;;;;CAc3B,CAAC;AAEF,eAAe,oBAAoB,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\n\nimport {gql} from '@apollo/client';\nimport {recordIdentityFragment} from '../../gqlFragments';\n\nconst createRecordMutation = gql`\n ${recordIdentityFragment}\n mutation CREATE_RECORD($library: ID!, $skipActivate: Boolean, $data: CreateRecordDataInput) {\n createRecord(library: $library, skipActivate: $skipActivate, data: $data) {\n record {\n ...RecordIdentity\n }\n valuesErrors {\n type\n attribute\n input\n message\n }\n }\n }\n`;\n\nexport default createRecordMutation;\n"]}
|
|
@@ -5,7 +5,7 @@ import { type IAttribute, type IField, type IFilter, type ISearchSelection, type
|
|
|
5
5
|
import { type IValueVersion } from '../../../../types/values';
|
|
6
6
|
import { type IView, type IViewDisplay } from '../../../../types/views';
|
|
7
7
|
import { type PermissionsActions, type SortOrder } from '../../../../_gqlTypes';
|
|
8
|
-
import { type
|
|
8
|
+
import { type GraphQLFormattedError, type GraphQLErrorExtensions } from 'graphql';
|
|
9
9
|
import { type ILibraryDetailExtended, type ILibraryDetailExtendedLinkedTree } from '../../../../_queries/libraries/getLibraryDetailExtendQuery';
|
|
10
10
|
export type IRecordPreview = {
|
|
11
11
|
small: string;
|
|
@@ -38,7 +38,7 @@ export interface ISidebarState {
|
|
|
38
38
|
visible: boolean;
|
|
39
39
|
type: SidebarContentType;
|
|
40
40
|
}
|
|
41
|
-
export type SearchStateError = Override<
|
|
41
|
+
export type SearchStateError = Override<GraphQLFormattedError, {
|
|
42
42
|
extensions: GraphQLErrorExtensions & {
|
|
43
43
|
record?: {
|
|
44
44
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_types.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/hooks/useSearchReducer/_types.ts"],"names":[],"mappings":"","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 Override} from '@leav/utils';\nimport {type ILang} from '_ui/types/misc';\nimport {type IRecordIdentityWhoAmI} from '_ui/types/records';\nimport {\n type IAttribute,\n type IField,\n type IFilter,\n type ISearchSelection,\n type SearchMode,\n type SidebarContentType,\n} from '_ui/types/search';\nimport {type IValueVersion} from '_ui/types/values';\nimport {type IView, type IViewDisplay} from '_ui/types/views';\nimport {type PermissionsActions, type SortOrder} from '_ui/_gqlTypes';\nimport {type
|
|
1
|
+
{"version":3,"file":"_types.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/hooks/useSearchReducer/_types.ts"],"names":[],"mappings":"","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 Override} from '@leav/utils';\nimport {type ILang} from '_ui/types/misc';\nimport {type IRecordIdentityWhoAmI} from '_ui/types/records';\nimport {\n type IAttribute,\n type IField,\n type IFilter,\n type ISearchSelection,\n type SearchMode,\n type SidebarContentType,\n} from '_ui/types/search';\nimport {type IValueVersion} from '_ui/types/values';\nimport {type IView, type IViewDisplay} from '_ui/types/views';\nimport {type PermissionsActions, type SortOrder} from '_ui/_gqlTypes';\nimport {type GraphQLFormattedError, type GraphQLErrorExtensions} from 'graphql';\nimport {\n type ILibraryDetailExtended,\n type ILibraryDetailExtendedLinkedTree,\n} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\n\nexport type IRecordPreview = {\n small: string;\n medium: string;\n big: string;\n pages: string;\n} | null;\n\nexport interface IRecordWhoAmI {\n id: string;\n label?: string;\n preview?: IRecordPreview;\n color?: string;\n library?: {\n id: string;\n label: Record<string, string>;\n };\n}\n\nexport interface ISearchRecord {\n whoAmI: IRecordIdentityWhoAmI;\n index: number;\n fields: {[x: string]: any};\n}\n\nexport interface ISearchSort {\n field: string;\n order: SortOrder;\n}\n\nexport interface ISidebarState {\n visible: boolean;\n type: SidebarContentType;\n}\n\nexport type SearchStateError = Override<\n GraphQLFormattedError,\n {\n extensions: GraphQLErrorExtensions & {\n record?: {\n id: string;\n library: string;\n };\n fields?: {\n [key: string]: string;\n };\n action?: PermissionsActions;\n };\n }\n>;\n\nexport interface ISearchState {\n library: ILibraryDetailExtended;\n records: ISearchRecord[];\n totalCount: number;\n errors?: readonly SearchStateError[];\n loading: boolean;\n pagination: number;\n offset: number;\n sort?: ISearchSort[];\n attributes: IAttribute[];\n trees: ILibraryDetailExtendedLinkedTree[];\n fields: IField[];\n fullText: string;\n filters: IFilter[];\n display: IViewDisplay;\n view: IViewState;\n userViewsOrder: string[];\n sharedViewsOrder: string[];\n lang: ILang;\n valuesVersions: IValueVersion;\n sideBar: ISidebarState;\n selection: ISearchSelection;\n showTransparency: boolean;\n mode: SearchMode;\n}\n\nexport interface IViewState {\n current: IView | null;\n reload: boolean;\n sync: boolean;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type GraphQLFormattedError } from 'graphql';
|
|
2
2
|
import { type IAttribute, type IField, type IFilter, type ISelectedRecord, SidebarContentType } from '../../../../types/search';
|
|
3
3
|
import { type IValueVersion } from '../../../../types/values';
|
|
4
4
|
import { type IView, type IViewDisplay } from '../../../../types/views';
|
|
@@ -37,7 +37,7 @@ export declare enum SearchActionTypes {
|
|
|
37
37
|
interface ISearchResult {
|
|
38
38
|
type: SearchActionTypes.UPDATE_RESULT;
|
|
39
39
|
records: ISearchRecord[];
|
|
40
|
-
errors?:
|
|
40
|
+
errors?: readonly GraphQLFormattedError[];
|
|
41
41
|
totalCount: number;
|
|
42
42
|
}
|
|
43
43
|
export type SearchAction = ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchReducer.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/hooks/useSearchReducer/searchReducer.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 {type GraphQLErrors} from '@apollo/client/errors';\nimport getFieldsFromView from '_ui/components/LibraryItemsList/helpers/getFieldsFromView';\nimport {\n type IAttribute,\n type IField,\n type IFilter,\n type ISelectedRecord,\n SearchMode,\n SidebarContentType,\n} from '_ui/types/search';\nimport {type IValueVersion} from '_ui/types/values';\nimport {type IView, type IViewDisplay} from '_ui/types/views';\nimport {ViewSizes, ViewTypes} from '_ui/_gqlTypes';\nimport {defaultView} from '../../constants';\nimport {type ISearchRecord, type ISearchSort, type ISearchState} from './_types';\n\nexport enum SearchActionTypes {\n UPDATE_RESULT = 'UPDATE_RESULT',\n SET_ERROR = 'SET_ERROR',\n SET_PAGINATION = 'SET_PAGINATION',\n SET_OFFSET = 'SET_OFFSET',\n SET_LOADING = 'SET_LOADING',\n SET_SORT = 'SET_SORT',\n CANCEL_SORT = 'CANCEL_SORT',\n SET_ATTRIBUTES = 'SET_ATTRIBUTES',\n SET_FIELDS = 'SET_FIELDS',\n SET_FULLTEXT = 'SET_FULLTEXT',\n SET_FILTERS = 'SET_FILTERS',\n SET_VIEW_RELOAD = 'SET_VIEW_RELOAD',\n SET_VIEW_SYNC = 'SET_VIEW_SYNC',\n CHANGE_VIEW = 'CHANGE_VIEW',\n SET_USER_VIEWS_ORDER = 'SET_USER_VIEWS_ORDER',\n SET_SHARED_VIEWS_ORDER = 'SET_SHARED_VIEWS_ORDER',\n SET_DISPLAY = 'SET_DISPLAY',\n RESET_FILTERS = 'RESET_FILTERS',\n DISABLE_FILTERS = 'DISABLE_FILTERS',\n ENABLE_FILTERS = 'ENABLE_FILTERS',\n APPLY_FILTERS = 'APPLY_FILTERS',\n SET_VALUES_VERSIONS = 'SET_VALUES_VERSIONS',\n TOGGLE_TRANSPARENCY = 'TOGGLE_TRANSPARENCY',\n TOGGLE_SIDEBAR = 'TOGGLE_SIDEBAR',\n SET_SIDEBAR = 'SET_SIDEBAR',\n SET_SELECTION = 'SET_SELECTION',\n TOGGLE_RECORD_SELECTION = 'TOGGLE_RECORD_SELECTION',\n SELECT_ALL = 'SELECT_ALL',\n CLEAR_SELECTION = 'CLEAR_SELECTION',\n}\n\ninterface ISearchResult {\n type: SearchActionTypes.UPDATE_RESULT;\n records: ISearchRecord[];\n errors?: GraphQLErrors;\n totalCount: number;\n}\n\nexport type SearchAction =\n | ({type: SearchActionTypes.UPDATE_RESULT} & ISearchResult)\n | {type: SearchActionTypes.SET_PAGINATION; page: number}\n | {type: SearchActionTypes.SET_OFFSET; offset: number}\n | {type: SearchActionTypes.SET_LOADING; loading: boolean}\n | {type: SearchActionTypes.SET_SORT; sort: ISearchSort[]}\n | {type: SearchActionTypes.CANCEL_SORT}\n | {type: SearchActionTypes.SET_ATTRIBUTES; attributes: IAttribute[]}\n | {type: SearchActionTypes.SET_FIELDS; fields: IField[]}\n | {type: SearchActionTypes.SET_FULLTEXT; fullText: string}\n | {type: SearchActionTypes.SET_FILTERS; filters: IFilter[]}\n | {type: SearchActionTypes.SET_VIEW_RELOAD; reload: boolean}\n | {type: SearchActionTypes.SET_VIEW_SYNC; sync: boolean}\n | {type: SearchActionTypes.CHANGE_VIEW; view: IView}\n | {type: SearchActionTypes.SET_DISPLAY; display: IViewDisplay}\n | {type: SearchActionTypes.SET_USER_VIEWS_ORDER; userViewsOrder: string[]}\n | {type: SearchActionTypes.SET_SHARED_VIEWS_ORDER; sharedViewsOrder: string[]}\n | {type: SearchActionTypes.RESET_FILTERS}\n | {type: SearchActionTypes.DISABLE_FILTERS}\n | {type: SearchActionTypes.ENABLE_FILTERS}\n | {type: SearchActionTypes.APPLY_FILTERS}\n | {type: SearchActionTypes.SET_VALUES_VERSIONS; valuesVersions: IValueVersion}\n | {type: SearchActionTypes.TOGGLE_TRANSPARENCY}\n | {type: SearchActionTypes.TOGGLE_SIDEBAR}\n | {type: SearchActionTypes.SET_SIDEBAR; sidebarType: SidebarContentType; visible: boolean}\n | {type: SearchActionTypes.SET_SELECTION; selected: ISelectedRecord[]}\n | {type: SearchActionTypes.TOGGLE_RECORD_SELECTION; record: ISelectedRecord}\n | {type: SearchActionTypes.SELECT_ALL}\n | {type: SearchActionTypes.CLEAR_SELECTION};\n\nexport const initialSearchState: ISearchState = {\n library: null,\n errors: [],\n records: [],\n totalCount: 0,\n loading: false,\n pagination: 20,\n offset: 0,\n attributes: [],\n trees: [],\n fields: [],\n fullText: '',\n filters: [],\n display: {type: ViewTypes.list, size: ViewSizes.MEDIUM},\n view: {current: defaultView, reload: false, sync: true},\n userViewsOrder: [],\n sharedViewsOrder: [],\n valuesVersions: {},\n lang: null,\n sideBar: {\n visible: false,\n type: SidebarContentType.FILTERS,\n },\n selection: {\n selected: [],\n allSelected: false,\n },\n showTransparency: false,\n mode: SearchMode.SEARCH,\n};\n\nconst checkSync = (\n state: ISearchState,\n toCheck: {sort: boolean; filters: boolean; display: boolean; fields: boolean; valuesVersions: boolean},\n): boolean => {\n let isSync = true;\n\n if (toCheck.sort) {\n isSync = JSON.stringify(state.sort) === JSON.stringify(state.view.current?.sort);\n }\n\n if (toCheck.filters) {\n isSync = isSync && JSON.stringify(state.view.current?.filters) === JSON.stringify(state.filters);\n }\n\n if (toCheck.display) {\n isSync =\n isSync &&\n state.display.type === state.view.current?.display?.type &&\n state.display.size === state.view.current?.display?.size;\n }\n\n if (toCheck.fields) {\n const viewFieldsKeys = state.view.current.attributes ?? [];\n\n isSync = isSync && state.fields.map(f => f.id).join('.') === viewFieldsKeys.join('.');\n }\n\n return isSync;\n};\n\nconst searchReducer = (state: ISearchState, action: SearchAction): ISearchState => {\n let isSync = checkSync(state, {\n sort: action.type !== SearchActionTypes.SET_SORT,\n filters: action.type !== SearchActionTypes.SET_FILTERS,\n display: action.type !== SearchActionTypes.SET_DISPLAY,\n fields: action.type !== SearchActionTypes.SET_FIELDS,\n valuesVersions: action.type !== SearchActionTypes.SET_VALUES_VERSIONS,\n });\n\n switch (action.type) {\n case SearchActionTypes.UPDATE_RESULT: {\n return {\n ...state,\n records: action.records ?? state.records,\n totalCount: action.totalCount ?? state.totalCount,\n errors: action.errors ?? [],\n loading: false,\n };\n }\n case SearchActionTypes.SET_PAGINATION:\n return {...state, pagination: action.page, loading: true};\n case SearchActionTypes.SET_OFFSET:\n return {...state, offset: action.offset, loading: true};\n case SearchActionTypes.SET_LOADING:\n return {...state, loading: action.loading};\n case SearchActionTypes.SET_SORT:\n isSync = isSync && JSON.stringify(state.view.current.sort) === JSON.stringify(action.sort);\n\n return {...state, sort: action.sort, view: {...state.view, sync: isSync}};\n case SearchActionTypes.CANCEL_SORT:\n const {sort, ...newState} = state;\n\n isSync = isSync && typeof state.view.current.sort === 'undefined';\n\n return {...newState, view: {...state.view, sync: isSync}, loading: true};\n case SearchActionTypes.SET_ATTRIBUTES:\n return {...state, attributes: action.attributes};\n case SearchActionTypes.SET_FIELDS:\n const viewFieldsKeys = state.view.current.attributes ?? [];\n\n isSync = isSync && action.fields.map(f => f.id).join('.') === viewFieldsKeys.join('.');\n\n return {...state, fields: action.fields, view: {...state.view, sync: isSync}, loading: true};\n case SearchActionTypes.SET_FULLTEXT:\n return {...state, fullText: action.fullText};\n case SearchActionTypes.SET_FILTERS:\n isSync = isSync && JSON.stringify(state.view.current.filters) === JSON.stringify(action.filters);\n return {...state, filters: action.filters, view: {...state.view, sync: isSync}};\n case SearchActionTypes.CHANGE_VIEW:\n return {\n ...state,\n view: {\n current: action.view,\n reload: true,\n sync: true,\n },\n fields: getFieldsFromView(action.view, state.library, state.lang),\n filters: action.view.filters,\n sort: action.view.sort,\n display: action.view.display,\n valuesVersions: action.view.valuesVersions,\n };\n case SearchActionTypes.SET_VIEW_RELOAD:\n return {...state, view: {...state.view, reload: action.reload}};\n case SearchActionTypes.SET_VIEW_SYNC:\n return {...state, view: {...state.view, sync: action.sync}};\n case SearchActionTypes.SET_DISPLAY:\n isSync =\n isSync &&\n action.display.type === state.view.current.display.type &&\n action.display.size === state.view.current.display.size;\n return {...state, display: action.display, view: {...state.view, sync: isSync}};\n case SearchActionTypes.SET_USER_VIEWS_ORDER:\n return {...state, userViewsOrder: action.userViewsOrder};\n case SearchActionTypes.SET_SHARED_VIEWS_ORDER:\n return {...state, sharedViewsOrder: action.sharedViewsOrder};\n case SearchActionTypes.RESET_FILTERS:\n return {...state, filters: [], loading: true};\n case SearchActionTypes.DISABLE_FILTERS:\n return {\n ...state,\n filters: state.filters.map(f => ({...f, active: false})),\n loading: true,\n };\n case SearchActionTypes.ENABLE_FILTERS:\n return {\n ...state,\n filters: state.filters.map(f => ({...f, active: true})),\n loading: true,\n };\n case SearchActionTypes.APPLY_FILTERS:\n // Reset pagination when applying filters as this may lead to unexpected behavior\n // if new filters return less results\n return {\n ...state,\n offset: 0,\n loading: true,\n };\n case SearchActionTypes.SET_VALUES_VERSIONS: {\n isSync =\n isSync && JSON.stringify(state.view.current.valuesVersions) === JSON.stringify(action.valuesVersions);\n return {\n ...state,\n view: {...state.view, sync: isSync},\n valuesVersions: {...state.valuesVersions, ...action.valuesVersions},\n };\n }\n case SearchActionTypes.TOGGLE_TRANSPARENCY:\n return {...state, showTransparency: !state.showTransparency};\n case SearchActionTypes.TOGGLE_SIDEBAR:\n return {...state, sideBar: {...state.sideBar, visible: !state.sideBar.visible}};\n case SearchActionTypes.SET_SIDEBAR:\n return {...state, sideBar: {...state.sideBar, type: action.sidebarType, visible: action.visible}};\n case SearchActionTypes.SET_SELECTION:\n return {...state, selection: {...state.selection, selected: action.selected, allSelected: false}};\n case SearchActionTypes.TOGGLE_RECORD_SELECTION:\n const currentlySelected = state.selection.selected.findIndex(s => s.id === action.record.id) > -1;\n\n return {\n ...state,\n selection: {\n ...state.selection,\n selected: currentlySelected\n ? state.selection.selected.filter(s => s.id !== action.record.id)\n : [...state.selection.selected, action.record],\n },\n };\n case SearchActionTypes.SELECT_ALL:\n return {\n ...state,\n selection: {\n selected: [],\n allSelected: true,\n },\n };\n case SearchActionTypes.CLEAR_SELECTION:\n return {\n ...state,\n selection: {\n selected: [],\n allSelected: false,\n },\n };\n default:\n return state;\n }\n};\n\nexport default searchReducer;\n"]}
|
|
1
|
+
{"version":3,"file":"searchReducer.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/hooks/useSearchReducer/searchReducer.ts"],"names":[],"mappings":"AAIA,OAAO,iBAAiB,MAAM,2DAA2D,CAAC;AAC1F,OAAO,EAKH,UAAU,EACV,kBAAkB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAG5C,MAAM,CAAN,IAAY,iBA8BX;AA9BD,WAAY,iBAAiB;IACzB,oDAA+B,CAAA;IAC/B,4CAAuB,CAAA;IACvB,sDAAiC,CAAA;IACjC,8CAAyB,CAAA;IACzB,gDAA2B,CAAA;IAC3B,0CAAqB,CAAA;IACrB,gDAA2B,CAAA;IAC3B,sDAAiC,CAAA;IACjC,8CAAyB,CAAA;IACzB,kDAA6B,CAAA;IAC7B,gDAA2B,CAAA;IAC3B,wDAAmC,CAAA;IACnC,oDAA+B,CAAA;IAC/B,gDAA2B,CAAA;IAC3B,kEAA6C,CAAA;IAC7C,sEAAiD,CAAA;IACjD,gDAA2B,CAAA;IAC3B,oDAA+B,CAAA;IAC/B,wDAAmC,CAAA;IACnC,sDAAiC,CAAA;IACjC,oDAA+B,CAAA;IAC/B,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAC3C,sDAAiC,CAAA;IACjC,gDAA2B,CAAA;IAC3B,oDAA+B,CAAA;IAC/B,wEAAmD,CAAA;IACnD,8CAAyB,CAAA;IACzB,wDAAmC,CAAA;AACvC,CAAC,EA9BW,iBAAiB,KAAjB,iBAAiB,QA8B5B;AAuCD,MAAM,CAAC,MAAM,kBAAkB,GAAiB;IAC5C,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,EAAE;IACd,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAC;IACvD,IAAI,EAAE,EAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAC;IACvD,cAAc,EAAE,EAAE;IAClB,gBAAgB,EAAE,EAAE;IACpB,cAAc,EAAE,EAAE;IAClB,IAAI,EAAE,IAAI;IACV,OAAO,EAAE;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,kBAAkB,CAAC,OAAO;KACnC;IACD,SAAS,EAAE;QACP,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,KAAK;KACrB;IACD,gBAAgB,EAAE,KAAK;IACvB,IAAI,EAAE,UAAU,CAAC,MAAM;CAC1B,CAAC;AAEF,MAAM,SAAS,GAAG,CACd,KAAmB,EACnB,OAAsG,EAC/F,EAAE;IACT,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrG,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM;YACF,MAAM;gBACN,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI;gBACxD,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;IACjE,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAE3D,MAAM,GAAG,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,MAAoB,EAAgB,EAAE;IAC9E,IAAI,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,QAAQ;QAChD,OAAO,EAAE,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW;QACtD,OAAO,EAAE,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW;QACtD,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,UAAU;QACpD,cAAc,EAAE,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,mBAAmB;KACxE,CAAC,CAAC;IAEH,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;YACnC,OAAO;gBACH,GAAG,KAAK;gBACR,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;gBACxC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU;gBACjD,MAAM,EAAG,MAAM,CAAC,MAA6B,IAAI,EAAE;gBACnD,OAAO,EAAE,KAAK;aACjB,CAAC;QACN,CAAC;QACD,KAAK,iBAAiB,CAAC,cAAc;YACjC,OAAO,EAAC,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;QAC9D,KAAK,iBAAiB,CAAC,UAAU;YAC7B,OAAO,EAAC,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;QAC5D,KAAK,iBAAiB,CAAC,WAAW;YAC9B,OAAO,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAC,CAAC;QAC/C,KAAK,iBAAiB,CAAC,QAAQ;YAC3B,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAE3F,OAAO,EAAC,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,EAAC,CAAC;QAC9E,KAAK,iBAAiB,CAAC,WAAW;YAC9B,MAAM,EAAC,IAAI,EAAE,GAAG,QAAQ,EAAC,GAAG,KAAK,CAAC;YAElC,MAAM,GAAG,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;YAElE,OAAO,EAAC,GAAG,QAAQ,EAAE,IAAI,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;QAC7E,KAAK,iBAAiB,CAAC,cAAc;YACjC,OAAO,EAAC,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAC,CAAC;QACrD,KAAK,iBAAiB,CAAC,UAAU;YAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;YAE3D,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEvF,OAAO,EAAC,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;QACjG,KAAK,iBAAiB,CAAC,YAAY;YAC/B,OAAO,EAAC,GAAG,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAC,CAAC;QACjD,KAAK,iBAAiB,CAAC,WAAW;YAC9B,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjG,OAAO,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,EAAC,CAAC;QACpF,KAAK,iBAAiB,CAAC,WAAW;YAC9B,OAAO;gBACH,GAAG,KAAK;gBACR,IAAI,EAAE;oBACF,OAAO,EAAE,MAAM,CAAC,IAAI;oBACpB,MAAM,EAAE,IAAI;oBACZ,IAAI,EAAE,IAAI;iBACb;gBACD,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;gBACjE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;gBAC5B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;gBACtB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;gBAC5B,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc;aAC7C,CAAC;QACN,KAAK,iBAAiB,CAAC,eAAe;YAClC,OAAO,EAAC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAC,EAAC,CAAC;QACpE,KAAK,iBAAiB,CAAC,aAAa;YAChC,OAAO,EAAC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAC,EAAC,CAAC;QAChE,KAAK,iBAAiB,CAAC,WAAW;YAC9B,MAAM;gBACF,MAAM;oBACN,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;oBACvD,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5D,OAAO,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,EAAC,CAAC;QACpF,KAAK,iBAAiB,CAAC,oBAAoB;YACvC,OAAO,EAAC,GAAG,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAC,CAAC;QAC7D,KAAK,iBAAiB,CAAC,sBAAsB;YACzC,OAAO,EAAC,GAAG,KAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAC,CAAC;QACjE,KAAK,iBAAiB,CAAC,aAAa;YAChC,OAAO,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;QAClD,KAAK,iBAAiB,CAAC,eAAe;YAClC,OAAO;gBACH,GAAG,KAAK;gBACR,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;gBACxD,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,KAAK,iBAAiB,CAAC,cAAc;YACjC,OAAO;gBACH,GAAG,KAAK;gBACR,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;gBACvD,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,KAAK,iBAAiB,CAAC,aAAa;YAChC,iFAAiF;YACjF,qCAAqC;YACrC,OAAO;gBACH,GAAG,KAAK;gBACR,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,KAAK,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACzC,MAAM;gBACF,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC1G,OAAO;gBACH,GAAG,KAAK;gBACR,IAAI,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC;gBACnC,cAAc,EAAE,EAAC,GAAG,KAAK,CAAC,cAAc,EAAE,GAAG,MAAM,CAAC,cAAc,EAAC;aACtE,CAAC;QACN,CAAC;QACD,KAAK,iBAAiB,CAAC,mBAAmB;YACtC,OAAO,EAAC,GAAG,KAAK,EAAE,gBAAgB,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAC,CAAC;QACjE,KAAK,iBAAiB,CAAC,cAAc;YACjC,OAAO,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,EAAC,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAC,EAAC,CAAC;QACpF,KAAK,iBAAiB,CAAC,WAAW;YAC9B,OAAO,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,EAAC,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAC,EAAC,CAAC;QACtG,KAAK,iBAAiB,CAAC,aAAa;YAChC,OAAO,EAAC,GAAG,KAAK,EAAE,SAAS,EAAE,EAAC,GAAG,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAC,EAAC,CAAC;QACtG,KAAK,iBAAiB,CAAC,uBAAuB;YAC1C,MAAM,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAElG,OAAO;gBACH,GAAG,KAAK;gBACR,SAAS,EAAE;oBACP,GAAG,KAAK,CAAC,SAAS;oBAClB,QAAQ,EAAE,iBAAiB;wBACvB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;wBACjE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;iBACrD;aACJ,CAAC;QACN,KAAK,iBAAiB,CAAC,UAAU;YAC7B,OAAO;gBACH,GAAG,KAAK;gBACR,SAAS,EAAE;oBACP,QAAQ,EAAE,EAAE;oBACZ,WAAW,EAAE,IAAI;iBACpB;aACJ,CAAC;QACN,KAAK,iBAAiB,CAAC,eAAe;YAClC,OAAO;gBACH,GAAG,KAAK;gBACR,SAAS,EAAE;oBACP,QAAQ,EAAE,EAAE;oBACZ,WAAW,EAAE,KAAK;iBACrB;aACJ,CAAC;QACN;YACI,OAAO,KAAK,CAAC;IACrB,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,aAAa,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 {type GraphQLFormattedError} from 'graphql';\nimport getFieldsFromView from '_ui/components/LibraryItemsList/helpers/getFieldsFromView';\nimport {\n type IAttribute,\n type IField,\n type IFilter,\n type ISelectedRecord,\n SearchMode,\n SidebarContentType,\n} from '_ui/types/search';\nimport {type IValueVersion} from '_ui/types/values';\nimport {type IView, type IViewDisplay} from '_ui/types/views';\nimport {ViewSizes, ViewTypes} from '_ui/_gqlTypes';\nimport {defaultView} from '../../constants';\nimport {type SearchStateError, type ISearchRecord, type ISearchSort, type ISearchState} from './_types';\n\nexport enum SearchActionTypes {\n UPDATE_RESULT = 'UPDATE_RESULT',\n SET_ERROR = 'SET_ERROR',\n SET_PAGINATION = 'SET_PAGINATION',\n SET_OFFSET = 'SET_OFFSET',\n SET_LOADING = 'SET_LOADING',\n SET_SORT = 'SET_SORT',\n CANCEL_SORT = 'CANCEL_SORT',\n SET_ATTRIBUTES = 'SET_ATTRIBUTES',\n SET_FIELDS = 'SET_FIELDS',\n SET_FULLTEXT = 'SET_FULLTEXT',\n SET_FILTERS = 'SET_FILTERS',\n SET_VIEW_RELOAD = 'SET_VIEW_RELOAD',\n SET_VIEW_SYNC = 'SET_VIEW_SYNC',\n CHANGE_VIEW = 'CHANGE_VIEW',\n SET_USER_VIEWS_ORDER = 'SET_USER_VIEWS_ORDER',\n SET_SHARED_VIEWS_ORDER = 'SET_SHARED_VIEWS_ORDER',\n SET_DISPLAY = 'SET_DISPLAY',\n RESET_FILTERS = 'RESET_FILTERS',\n DISABLE_FILTERS = 'DISABLE_FILTERS',\n ENABLE_FILTERS = 'ENABLE_FILTERS',\n APPLY_FILTERS = 'APPLY_FILTERS',\n SET_VALUES_VERSIONS = 'SET_VALUES_VERSIONS',\n TOGGLE_TRANSPARENCY = 'TOGGLE_TRANSPARENCY',\n TOGGLE_SIDEBAR = 'TOGGLE_SIDEBAR',\n SET_SIDEBAR = 'SET_SIDEBAR',\n SET_SELECTION = 'SET_SELECTION',\n TOGGLE_RECORD_SELECTION = 'TOGGLE_RECORD_SELECTION',\n SELECT_ALL = 'SELECT_ALL',\n CLEAR_SELECTION = 'CLEAR_SELECTION',\n}\n\ninterface ISearchResult {\n type: SearchActionTypes.UPDATE_RESULT;\n records: ISearchRecord[];\n errors?: readonly GraphQLFormattedError[];\n totalCount: number;\n}\n\nexport type SearchAction =\n | ({type: SearchActionTypes.UPDATE_RESULT} & ISearchResult)\n | {type: SearchActionTypes.SET_PAGINATION; page: number}\n | {type: SearchActionTypes.SET_OFFSET; offset: number}\n | {type: SearchActionTypes.SET_LOADING; loading: boolean}\n | {type: SearchActionTypes.SET_SORT; sort: ISearchSort[]}\n | {type: SearchActionTypes.CANCEL_SORT}\n | {type: SearchActionTypes.SET_ATTRIBUTES; attributes: IAttribute[]}\n | {type: SearchActionTypes.SET_FIELDS; fields: IField[]}\n | {type: SearchActionTypes.SET_FULLTEXT; fullText: string}\n | {type: SearchActionTypes.SET_FILTERS; filters: IFilter[]}\n | {type: SearchActionTypes.SET_VIEW_RELOAD; reload: boolean}\n | {type: SearchActionTypes.SET_VIEW_SYNC; sync: boolean}\n | {type: SearchActionTypes.CHANGE_VIEW; view: IView}\n | {type: SearchActionTypes.SET_DISPLAY; display: IViewDisplay}\n | {type: SearchActionTypes.SET_USER_VIEWS_ORDER; userViewsOrder: string[]}\n | {type: SearchActionTypes.SET_SHARED_VIEWS_ORDER; sharedViewsOrder: string[]}\n | {type: SearchActionTypes.RESET_FILTERS}\n | {type: SearchActionTypes.DISABLE_FILTERS}\n | {type: SearchActionTypes.ENABLE_FILTERS}\n | {type: SearchActionTypes.APPLY_FILTERS}\n | {type: SearchActionTypes.SET_VALUES_VERSIONS; valuesVersions: IValueVersion}\n | {type: SearchActionTypes.TOGGLE_TRANSPARENCY}\n | {type: SearchActionTypes.TOGGLE_SIDEBAR}\n | {type: SearchActionTypes.SET_SIDEBAR; sidebarType: SidebarContentType; visible: boolean}\n | {type: SearchActionTypes.SET_SELECTION; selected: ISelectedRecord[]}\n | {type: SearchActionTypes.TOGGLE_RECORD_SELECTION; record: ISelectedRecord}\n | {type: SearchActionTypes.SELECT_ALL}\n | {type: SearchActionTypes.CLEAR_SELECTION};\n\nexport const initialSearchState: ISearchState = {\n library: null,\n errors: [],\n records: [],\n totalCount: 0,\n loading: false,\n pagination: 20,\n offset: 0,\n attributes: [],\n trees: [],\n fields: [],\n fullText: '',\n filters: [],\n display: {type: ViewTypes.list, size: ViewSizes.MEDIUM},\n view: {current: defaultView, reload: false, sync: true},\n userViewsOrder: [],\n sharedViewsOrder: [],\n valuesVersions: {},\n lang: null,\n sideBar: {\n visible: false,\n type: SidebarContentType.FILTERS,\n },\n selection: {\n selected: [],\n allSelected: false,\n },\n showTransparency: false,\n mode: SearchMode.SEARCH,\n};\n\nconst checkSync = (\n state: ISearchState,\n toCheck: {sort: boolean; filters: boolean; display: boolean; fields: boolean; valuesVersions: boolean},\n): boolean => {\n let isSync = true;\n\n if (toCheck.sort) {\n isSync = JSON.stringify(state.sort) === JSON.stringify(state.view.current?.sort);\n }\n\n if (toCheck.filters) {\n isSync = isSync && JSON.stringify(state.view.current?.filters) === JSON.stringify(state.filters);\n }\n\n if (toCheck.display) {\n isSync =\n isSync &&\n state.display.type === state.view.current?.display?.type &&\n state.display.size === state.view.current?.display?.size;\n }\n\n if (toCheck.fields) {\n const viewFieldsKeys = state.view.current.attributes ?? [];\n\n isSync = isSync && state.fields.map(f => f.id).join('.') === viewFieldsKeys.join('.');\n }\n\n return isSync;\n};\n\nconst searchReducer = (state: ISearchState, action: SearchAction): ISearchState => {\n let isSync = checkSync(state, {\n sort: action.type !== SearchActionTypes.SET_SORT,\n filters: action.type !== SearchActionTypes.SET_FILTERS,\n display: action.type !== SearchActionTypes.SET_DISPLAY,\n fields: action.type !== SearchActionTypes.SET_FIELDS,\n valuesVersions: action.type !== SearchActionTypes.SET_VALUES_VERSIONS,\n });\n\n switch (action.type) {\n case SearchActionTypes.UPDATE_RESULT: {\n return {\n ...state,\n records: action.records ?? state.records,\n totalCount: action.totalCount ?? state.totalCount,\n errors: (action.errors as SearchStateError[]) ?? [],\n loading: false,\n };\n }\n case SearchActionTypes.SET_PAGINATION:\n return {...state, pagination: action.page, loading: true};\n case SearchActionTypes.SET_OFFSET:\n return {...state, offset: action.offset, loading: true};\n case SearchActionTypes.SET_LOADING:\n return {...state, loading: action.loading};\n case SearchActionTypes.SET_SORT:\n isSync = isSync && JSON.stringify(state.view.current.sort) === JSON.stringify(action.sort);\n\n return {...state, sort: action.sort, view: {...state.view, sync: isSync}};\n case SearchActionTypes.CANCEL_SORT:\n const {sort, ...newState} = state;\n\n isSync = isSync && typeof state.view.current.sort === 'undefined';\n\n return {...newState, view: {...state.view, sync: isSync}, loading: true};\n case SearchActionTypes.SET_ATTRIBUTES:\n return {...state, attributes: action.attributes};\n case SearchActionTypes.SET_FIELDS:\n const viewFieldsKeys = state.view.current.attributes ?? [];\n\n isSync = isSync && action.fields.map(f => f.id).join('.') === viewFieldsKeys.join('.');\n\n return {...state, fields: action.fields, view: {...state.view, sync: isSync}, loading: true};\n case SearchActionTypes.SET_FULLTEXT:\n return {...state, fullText: action.fullText};\n case SearchActionTypes.SET_FILTERS:\n isSync = isSync && JSON.stringify(state.view.current.filters) === JSON.stringify(action.filters);\n return {...state, filters: action.filters, view: {...state.view, sync: isSync}};\n case SearchActionTypes.CHANGE_VIEW:\n return {\n ...state,\n view: {\n current: action.view,\n reload: true,\n sync: true,\n },\n fields: getFieldsFromView(action.view, state.library, state.lang),\n filters: action.view.filters,\n sort: action.view.sort,\n display: action.view.display,\n valuesVersions: action.view.valuesVersions,\n };\n case SearchActionTypes.SET_VIEW_RELOAD:\n return {...state, view: {...state.view, reload: action.reload}};\n case SearchActionTypes.SET_VIEW_SYNC:\n return {...state, view: {...state.view, sync: action.sync}};\n case SearchActionTypes.SET_DISPLAY:\n isSync =\n isSync &&\n action.display.type === state.view.current.display.type &&\n action.display.size === state.view.current.display.size;\n return {...state, display: action.display, view: {...state.view, sync: isSync}};\n case SearchActionTypes.SET_USER_VIEWS_ORDER:\n return {...state, userViewsOrder: action.userViewsOrder};\n case SearchActionTypes.SET_SHARED_VIEWS_ORDER:\n return {...state, sharedViewsOrder: action.sharedViewsOrder};\n case SearchActionTypes.RESET_FILTERS:\n return {...state, filters: [], loading: true};\n case SearchActionTypes.DISABLE_FILTERS:\n return {\n ...state,\n filters: state.filters.map(f => ({...f, active: false})),\n loading: true,\n };\n case SearchActionTypes.ENABLE_FILTERS:\n return {\n ...state,\n filters: state.filters.map(f => ({...f, active: true})),\n loading: true,\n };\n case SearchActionTypes.APPLY_FILTERS:\n // Reset pagination when applying filters as this may lead to unexpected behavior\n // if new filters return less results\n return {\n ...state,\n offset: 0,\n loading: true,\n };\n case SearchActionTypes.SET_VALUES_VERSIONS: {\n isSync =\n isSync && JSON.stringify(state.view.current.valuesVersions) === JSON.stringify(action.valuesVersions);\n return {\n ...state,\n view: {...state.view, sync: isSync},\n valuesVersions: {...state.valuesVersions, ...action.valuesVersions},\n };\n }\n case SearchActionTypes.TOGGLE_TRANSPARENCY:\n return {...state, showTransparency: !state.showTransparency};\n case SearchActionTypes.TOGGLE_SIDEBAR:\n return {...state, sideBar: {...state.sideBar, visible: !state.sideBar.visible}};\n case SearchActionTypes.SET_SIDEBAR:\n return {...state, sideBar: {...state.sideBar, type: action.sidebarType, visible: action.visible}};\n case SearchActionTypes.SET_SELECTION:\n return {...state, selection: {...state.selection, selected: action.selected, allSelected: false}};\n case SearchActionTypes.TOGGLE_RECORD_SELECTION:\n const currentlySelected = state.selection.selected.findIndex(s => s.id === action.record.id) > -1;\n\n return {\n ...state,\n selection: {\n ...state.selection,\n selected: currentlySelected\n ? state.selection.selected.filter(s => s.id !== action.record.id)\n : [...state.selection.selected, action.record],\n },\n };\n case SearchActionTypes.SELECT_ALL:\n return {\n ...state,\n selection: {\n selected: [],\n allSelected: true,\n },\n };\n case SearchActionTypes.CLEAR_SELECTION:\n return {\n ...state,\n selection: {\n selected: [],\n allSelected: false,\n },\n };\n default:\n return state;\n }\n};\n\nexport default searchReducer;\n"]}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
export declare const useNotificationsSubscription: () =>
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export declare const useNotificationsSubscription: () => {
|
|
2
|
+
restart: () => void;
|
|
3
|
+
loading: boolean;
|
|
4
|
+
data?: import("../../../_gqlTypes").NotificationSubscription;
|
|
5
|
+
error?: import("@apollo/client").ApolloError;
|
|
6
|
+
variables?: import("../../../_gqlTypes").Exact<{
|
|
7
|
+
[key: string]: never;
|
|
8
|
+
}>;
|
|
9
|
+
};
|
|
4
10
|
export default useNotificationsSubscription;
|
|
@@ -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, "$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 })] }) }) }));
|
|
165
|
+
return (_jsx(ErrorBoundary, { children: _jsx(EditRecordReducerContext.Provider, { value: { state, dispatch }, children: _jsxs(Container, { "$shouldUseLayoutWithSidebar": shouldUseLayoutWithSidebar, style: containerStyle, children: [_jsx(EditRecordButtons, {}), _jsx(Content, { className: "edit-record-content-container", "$shouldUseLayoutWithSidebar": shouldUseLayoutWithSidebar, "$removePadding": removePadding, children: permissionsLoading ? (_jsx(EditRecordSkeleton, { rows: 5 })) : canEdit ? (_jsx(EditRecordContent, { antdForm: antdForm, formId: formId, isFormCreationMode: isFormCreationMode, formElementId: formElementId, record: record, library: libraryId, onRecordSubmit: _handleRecordSubmit, onValueSubmit: _handleValueSubmit, onValueDelete: deleteValue, onDeleteMultipleValues: _handleDeleteAllValues, readonly: isReadOnly })) : (_jsx(ErrorDisplay, { type: ErrorDisplayTypes.PERMISSION_ERROR, showActionButton: false })) }), _jsx(EditRecordSidebar, { onMetadataSubmit: _handleMetadataSubmit, sidebarContainer: sidebarContainer })] }) }) }));
|
|
166
166
|
};
|
|
167
167
|
//# sourceMappingURL=EditRecord.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditRecord.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecord/EditRecord.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAyB,SAAS,EAAE,UAAU,EAAC,MAAM,OAAO,CAAC;AACpE,OAAO,MAAwB,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EACH,aAAa,EAGb,4BAA4B,GAC/B,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,6BAA6B,MAAM,0DAA0D,CAAC;AACrG,OAAO,yBAAyB,MAAM,6DAA6D,CAAC;AAUpG,OAAO,iBAAiB,EAAE,EAAC,6BAA6B,EAAE,YAAY,EAAC,MAAM,wCAAwC,CAAC;AACtH,OAAO,EAAC,wBAAwB,EAAC,MAAM,+CAA+C,CAAC;AAEvF,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,kBAAkB,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAC,mBAAmB,EAAC,MAAM,4CAA4C,CAAC;AAC/E,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAmBrD,MAAM,YAAY,GAAG,OAAO,CAAC;AAE7B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAA0D;;6BAEzD,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;2BAC1F,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC;;CAE1G,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAiE;;eAE5E,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;;;oBAG7C,KAAK,CAAC,EAAE,CACpB,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,MAAM;CAC/F,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAwC,CAAC,EAC5D,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,aAAa,EACb,MAAM,EACN,OAAO,EAAE,SAAS,EAClB,QAAQ,EACR,aAAa,EACb,aAAa,GAAG,KAAK,EACrB,WAAW,GAAG,KAAK,EACnB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,aAAa,GAAG,KAAK,GACxB,EAAE,EAAE;IACD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE;QACpD,GAAG,YAAY;QACf,MAAM;QACN,SAAS;QACT,YAAY,EAAE,IAAI;QAClB,aAAa;QACb,mBAAmB,EAAE,aAAa;QAClC,cAAc;KACjB,CAAC,CAAC;IAEH,MAAM,EACF,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EACP,UAAU,GACb,GAAG,gBAAgB,CAAC,EAAC,GAAG,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtE,MAAM,EAAC,IAAI,EAAE,WAAW,EAAC,GAAG,QAAQ,CAAC,mBAAmB,EAAE;QACtD,SAAS,EAAE,EAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAC;KAC/B,CAAC,CAAC;IAEH,MAAM,EAAC,UAAU,EAAC,GAAG,yBAAyB,EAAE,CAAC;IACjD,MAAM,EAAC,WAAW,EAAC,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,CAAC,yBAAyB,CAAC,GAAG,4BAA4B,EAAE,CAAC;IAEnE,sGAAsG;IACtG,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,WAAW,EAAE,CAAC;YACd,QAAQ,CAAC;gBACL,IAAI,EAAE,6BAA6B,CAAC,iBAAiB;gBACrD,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;aAC7C,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,QAAQ,CAAC;gBACL,IAAI,EAAE,6BAA6B,CAAC,UAAU;gBAC9C,MAAM;aACT,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC;YACL,IAAI,EAAE,6BAA6B,CAAC,kBAAkB;YACtD,OAAO,EAAE,aAAa;SACzB,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC;YACL,IAAI,EAAE,6BAA6B,CAAC,mBAAmB;YACvD,MAAM,EAAE,WAAW;SACtB,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,kBAAkB,GAAoB,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAClE,UAAU,CACN,MAAM,EACN,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACb,MAAM,YAAY,GAAG,EAAC,GAAG,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAC,CAAC;QAEnF,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,QAAQ,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACzB,KAAK,aAAa,CAAC,aAAa,CAAC;gBACjC,KAAK,aAAa,CAAC,WAAW;oBAC1B,YAAY,CAAC,KAAK,GAAI,GAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3D,MAAM;gBACV,KAAK,aAAa,CAAC,IAAI;oBACnB,YAAY,CAAC,KAAK,GAAI,GAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3D,MAAM;gBACV;oBACI,YAAY,CAAC,KAAK,GAAI,GAA+B,CAAC,KAAK,CAAC;oBAC5D,MAAM;YACd,CAAC;QACL,CAAC;QAED,OAAO,YAA8B,CAAC;IAC1C,CAAC,CAAC,EACF,OAAO,EACP,IAAI,CACP,CAAC;IAEN,MAAM,qBAAqB,GAA4B,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;QAClF,IAAI,YAAY,CAAC;QACjB,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,QAAQ;gBACvB,YAAY,GAAI,KAAiC,CAAC,WAAW,CAAC;gBAC9D,MAAM;YACV,KAAK,aAAa,CAAC,aAAa,CAAC;YACjC,KAAK,aAAa,CAAC,WAAW;gBAC1B,YAAY,GAAI,KAA6B,CAAC,SAAS,CAAC;gBACxD,MAAM;YACV,KAAK,aAAa,CAAC,IAAI;gBACnB,YAAY,GAAI,KAA6B,CAAC,SAAS,CAAC;gBACxD,MAAM;QACd,CAAC;QAED,OAAO,kBAAkB,CACrB;YACI;gBACI,OAAO,EAAE,KAAK,CAAC,QAAQ;gBACvB,SAAS;gBACT,KAAK,EAAE,YAAY;gBACnB,QAAQ;aACX;SACJ,EACD,IAAI,CACP,CAAC;IACN,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,mBAAmB,GAAG,KAAK,EAAE,UAA0D,EAAE,EAAE;QAC7F,MAAM,uBAAuB,GAAG,MAAM,yBAAyB,CAAC;YAC5D,WAAW,EAAE,cAAc;YAC3B,SAAS,EAAE;gBACP,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,MAAM;aACT;SACJ,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,uBAAuB,EAAE,IAAI,EAAE,iBAAiB,CAAC,YAAY,CAAC;QAC7E,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,QAAQ,EAAE,CAAC;gBACX,QAAQ,CAAC,uBAAuB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO;QACX,CAAC;QACD,QAAQ,CAAC,SAAS,CACd,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACf,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;YAExF,MAAM,+BAA+B,GACjC,gBAAgB,EAAE,eAAe;gBACjC,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAE9F,OAAO;gBACH,IAAI,EACA,+BAA+B,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB;oBAClE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;oBACtB,CAAC,CAAC,KAAK,CAAC,SAAS;gBACzB,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;aAC1B,CAAC;QACN,CAAC,CAAC,CACL,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAA6B,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QAC1F,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtC,OAAO,EAAE,KAAK,CAAC,QAAQ;YACvB,SAAS;YACT,KAAK,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;QAEJ,OAAO,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,0BAA0B,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,IAAI,gBAAgB,KAAK,SAAS,CAAC;IAEhH,OAAO,CACH,KAAC,aAAa,cACV,KAAC,wBAAwB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAC,YACvD,MAAC,SAAS,mCAA8B,0BAA0B,EAAE,KAAK,EAAE,cAAc,aACrF,KAAC,iBAAiB,KAAG,EACrB,KAAC,OAAO,mCAA8B,0BAA0B,oBAAkB,aAAa,YAC1F,kBAAkB,CAAC,CAAC,CAAC,CAClB,KAAC,kBAAkB,IAAC,IAAI,EAAE,CAAC,GAAI,CAClC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CACV,KAAC,iBAAiB,IACd,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,EAClB,cAAc,EAAE,mBAAmB,EACnC,aAAa,EAAE,kBAAkB,EACjC,aAAa,EAAE,WAAW,EAC1B,sBAAsB,EAAE,sBAAsB,EAC9C,QAAQ,EAAE,UAAU,GACtB,CACL,CAAC,CAAC,CAAC,CACA,KAAC,YAAY,IAAC,IAAI,EAAE,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,GAAI,CACtF,GACK,EACV,KAAC,iBAAiB,IAAC,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,GAAI,IAC1F,GACoB,GACxB,CACnB,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport isEqual from 'lodash/isEqual';\nimport {type FunctionComponent, useEffect, useReducer} from 'react';\nimport styled, {type CSSObject} from 'styled-components';\nimport {ErrorDisplayTypes} from '../../../constants';\nimport {useCanEditRecord} from '../../../hooks/useCanEditRecord';\nimport {type IValueVersion} from '../../../types/values';\nimport {\n AttributeType,\n type RecordFormAttributeStandardAttributeFragment,\n type RecordIdentityFragment,\n useActivateNewRecordMutation,\n} from '../../../_gqlTypes';\nimport {\n type IRecordPropertyLink,\n type IRecordPropertyStandard,\n type IRecordPropertyTree,\n} from '../../../_queries/records/getRecordPropertiesQuery';\nimport {ErrorBoundary} from '../../ErrorBoundary';\nimport {ErrorDisplay} from '../../ErrorDisplay';\nimport EditRecordContent from '../EditRecordContent';\nimport useExecuteDeleteValueMutation from '../EditRecordContent/hooks/useExecuteDeleteValueMutation';\nimport useSaveValueBatchMutation from '../EditRecordContent/hooks/useExecuteSaveValueBatchMutation';\nimport {\n type DeleteMultipleValuesFunc,\n type ISubmittedValueLink,\n type ISubmittedValueStandard,\n type ISubmittedValueTree,\n type IValueToSubmit,\n type MetadataSubmitValueFunc,\n type SubmitValueFunc,\n} from '../EditRecordContent/_types';\nimport editRecordReducer, {EditRecordReducerActionsTypes, initialState} from '../editRecordReducer/editRecordReducer';\nimport {EditRecordReducerContext} from '../editRecordReducer/editRecordReducerContext';\nimport {type FormInstance} from 'antd/lib/form/Form';\nimport EditRecordSidebar from '../EditRecordSidebar';\nimport EditRecordSkeleton from '../EditRecordSkeleton';\nimport {useQuery} from '@apollo/client';\nimport {getLibraryByIdQuery} from '_ui/_queries/libraries/getLibraryByIdQuery';\nimport EditRecordButtons from '../EditRecordButtons';\n\ninterface IEditRecordProps {\n antdForm: FormInstance;\n formId: string;\n isFormCreationMode: boolean;\n formElementId?: string;\n record: RecordIdentityFragment['whoAmI'] | null;\n library: string;\n onCreate?: (newRecord: RecordIdentityFragment['whoAmI']) => void;\n valuesVersion?: IValueVersion;\n showSidebar?: boolean;\n enableSidebar?: boolean;\n sidebarContainer?: HTMLElement;\n containerStyle?: CSSObject;\n withInfoButton: boolean;\n 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
|
+
{"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\n className=\"edit-record-content-container\"\n $shouldUseLayoutWithSidebar={shouldUseLayoutWithSidebar}\n $removePadding={removePadding}\n >\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"]}
|
|
@@ -56,6 +56,10 @@ export type SubmittedValue = ISubmittedValueStandard | ISubmittedValueLink | ISu
|
|
|
56
56
|
export type SubmitValueFunc = (values: SubmittedValue[], version: IValueVersion) => Promise<ISubmitMultipleResult>;
|
|
57
57
|
export type DeleteValueFunc = (value: ValueInput | null, attribute: string) => Promise<IDeleteValueResult>;
|
|
58
58
|
export type CreateEmptyRecordFunc = (library: string) => Promise<ICreateRecordResult>;
|
|
59
|
+
export type CreateRecordFunc = (library: string, skipActivate?: boolean, data?: {
|
|
60
|
+
values: Array<Omit<IValueToSubmit, 'idValue'>>;
|
|
61
|
+
version: IValueVersion;
|
|
62
|
+
}) => Promise<ICreateRecordResult>;
|
|
59
63
|
export type DeleteMultipleValuesFunc = (attribute: string, values: RecordProperty[], version: IValueVersion) => Promise<ISubmitMultipleResult>;
|
|
60
64
|
export type MetadataSubmitValueFunc = (value: RecordProperty, attribute: RecordFormAttributeFragment, metadata: IKeyValue<AnyPrimitive>) => Promise<ISubmitMultipleResult>;
|
|
61
65
|
export interface ISubmittedValueBase {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_types.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordContent/_types.ts"],"names":[],"mappings":"AAoCA,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,oCAAmB,CAAA;IACnB,gCAAe,CAAA;IACf,oCAAmB,CAAA;AACvB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;
|
|
1
|
+
{"version":3,"file":"_types.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordContent/_types.ts"],"names":[],"mappings":"AAoCA,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,oCAAmB,CAAA;IACnB,gCAAe,CAAA;IACf,oCAAmB,CAAA;AACvB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AA4GD,MAAM,CAAN,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IACzB,4CAAuB,CAAA;IACvB,wCAAmB,CAAA;AACvB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B","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} from 'react';\nimport {\n type AnyPrimitive,\n type FormFieldTypes,\n type FormUIElementTypes,\n type IRequiredFieldsSettings,\n type IKeyValue,\n type Override,\n} from '@leav/utils';\nimport {type RecordFormElementsValue} from '_ui/hooks/useGetRecordForm';\nimport {type IRecordIdentity, type IRecordIdentityWhoAmI} from '_ui/types/records';\nimport {type ITreeNodeWithRecord} from '_ui/types/trees';\nimport {type IValueVersion} from '_ui/types/values';\nimport {\n type RecordFormAttributeFragment,\n type SaveValueBatchMutation,\n type CreateRecordMutation,\n type RecordFormElementFragment,\n type RecordIdentityFragment,\n type ValueDetailsFragment,\n type ValueInput,\n} from '_ui/_gqlTypes';\nimport {type RecordProperty} from '_ui/_queries/records/getRecordPropertiesQuery';\nimport {type FormInstance} from 'antd/lib/form/Form';\nimport {type GetRecordColumnsValuesRecord} from '_ui/_queries/records/getRecordColumnsValues';\n\nexport interface IValueToSubmit {\n attribute: string;\n value: AnyPrimitive | null;\n idValue: string | null;\n metadata?: IKeyValue<AnyPrimitive>;\n}\n\nexport enum APICallStatus {\n SUCCESS = 'SUCCESS',\n ERROR = 'ERROR',\n PARTIAL = 'PARTIAL',\n}\n\nexport type FieldSubmitMultipleFunc = (\n record: IRecordIdentityWhoAmI,\n values: IValueToSubmit[],\n version?: IValueVersion,\n deleteEmpty?: boolean,\n) => Promise<ISubmitMultipleResult>;\n\nexport interface ISubmitMultipleResult {\n status: APICallStatus;\n error?: string;\n values?: ValueDetailsFragment[];\n errors?: SaveValueBatchMutation['saveValueBatch']['errors'];\n}\n\nexport interface IDeleteValueResult {\n status: APICallStatus;\n error?: string;\n}\n\nexport interface ICreateRecordResult {\n status: APICallStatus;\n record?: RecordIdentityFragment['whoAmI'];\n errors?: CreateRecordMutation['createRecord']['valuesErrors'];\n}\n\nexport interface IRecordEditionContext {\n elements: IFormElementsByContainer;\n readOnly: boolean;\n record: IRecordIdentityWhoAmI;\n}\n\nexport interface IFormElementsByContainer {\n [containerId: string]: Array<FormElement<unknown>>;\n}\n\nexport interface ISubmittedValueStandard extends ISubmittedValueBase {\n value: AnyPrimitive;\n}\n\nexport interface ISubmittedValueLink extends ISubmittedValueBase {\n value: IRecordIdentity;\n}\n\nexport interface ISubmittedValueTree extends ISubmittedValueBase {\n value: ITreeNodeWithRecord;\n}\n\nexport type SubmittedValue = ISubmittedValueStandard | ISubmittedValueLink | ISubmittedValueTree;\n\nexport type SubmitValueFunc = (values: SubmittedValue[], version: IValueVersion) => Promise<ISubmitMultipleResult>;\nexport type DeleteValueFunc = (value: ValueInput | null, attribute: string) => Promise<IDeleteValueResult>;\nexport type CreateEmptyRecordFunc = (library: string) => Promise<ICreateRecordResult>;\nexport type CreateRecordFunc = (\n library: string,\n skipActivate?: boolean,\n data?: {\n values: Array<Omit<IValueToSubmit, 'idValue'>>;\n version: IValueVersion;\n },\n) => Promise<ICreateRecordResult>;\nexport type DeleteMultipleValuesFunc = (\n attribute: string,\n values: RecordProperty[],\n version: IValueVersion,\n) => Promise<ISubmitMultipleResult>;\n\nexport type MetadataSubmitValueFunc = (\n value: RecordProperty,\n attribute: RecordFormAttributeFragment,\n metadata: IKeyValue<AnyPrimitive>,\n) => Promise<ISubmitMultipleResult>;\n\nexport interface ISubmittedValueBase {\n attribute: RecordFormAttributeFragment;\n idValue: string;\n metadata?: IKeyValue<AnyPrimitive>;\n}\n\nexport interface IFormElementProps<SettingsType, RecordFormElements = RecordFormElementsValue> {\n element: FormElement<SettingsType, RecordFormElements>;\n readonly?: boolean;\n onValueSubmit?: SubmitValueFunc;\n onValueDelete?: DeleteValueFunc;\n onDeleteMultipleValues?: DeleteMultipleValuesFunc;\n metadataEdit?: boolean;\n isFormCreationMode?: boolean;\n}\n\nexport type FormElement<SettingsType, RecordFormElements = RecordFormElementsValue> = Override<\n RecordFormElementFragment,\n {\n settings: SettingsType;\n uiElementType: FormUIElementTypes | FormFieldTypes;\n values: RecordFormElements[];\n }\n> & {\n uiElement: FunctionComponent<\n IFormElementProps<unknown> & {\n antdForm?: FormInstance;\n computedValues?: GetRecordColumnsValuesRecord;\n }\n >;\n};\n\nexport type StandardValueTypes = AnyPrimitive;\n\nexport enum VersionFieldScope {\n INHERITED = 'INHERITED', // inherited values\n CURRENT = 'CURRENT', // values of \"current\" version, eg. the version selected in the form\n}\n\nexport interface ICommonFieldsReducerState<ValuesType, RecordFormAttributeFragmentType = RecordFormAttributeFragment> {\n record: IRecordIdentityWhoAmI;\n formElement: FormElement<IRequiredFieldsSettings>;\n attribute: RecordFormAttributeFragmentType;\n isReadOnly: boolean;\n activeScope: VersionFieldScope;\n values: {\n [scope in VersionFieldScope]: {\n version: IValueVersion;\n values: ValuesType;\n } | null;\n };\n}\n\nexport interface IProvidedByAntFormItem<\n InputFieldProps extends {value?: unknown; onChange?: unknown},\n AntNotifier extends {onChange?: unknown} = InputFieldProps,\n> {\n value?: InputFieldProps['value'];\n onChange?: AntNotifier['onChange'];\n}\n"]}
|
|
@@ -3,10 +3,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
// This file is released under LGPL V3
|
|
4
4
|
// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
|
|
5
5
|
import { useEffect, useRef, useState } from 'react';
|
|
6
|
-
import { KitButton, KitModal, KitSpace, KitTypography } from 'aristid-ds';
|
|
6
|
+
import { KitButton, KitLoader, KitModal, KitSpace, KitTypography } from 'aristid-ds';
|
|
7
7
|
import styled from 'styled-components';
|
|
8
8
|
import { useSharedTranslation } from '../../../hooks/useSharedTranslation';
|
|
9
|
-
import { usePurgeRecordMutation } from '../../../_gqlTypes';
|
|
9
|
+
import { useCreateRecordMutation, usePurgeRecordMutation } from '../../../_gqlTypes';
|
|
10
10
|
import { EditRecord } from '../EditRecord';
|
|
11
11
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
12
12
|
import { faXmark } from '@fortawesome/free-solid-svg-icons';
|
|
@@ -14,8 +14,8 @@ import { useGetSubmitButtons } from '../hooks/useGetSubmitButtons';
|
|
|
14
14
|
import { useForm } from 'antd/lib/form/Form';
|
|
15
15
|
import { useCreateCancelConfirm } from '../hooks/useCreateCancelConfirm';
|
|
16
16
|
import { EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS } from '../constants';
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
17
|
+
import { useGetInitialRecordValues } from '../EditRecordPage/getInitialRecordValues';
|
|
18
|
+
import { ErrorComponent } from '../EditRecordPage/ErrorComponent';
|
|
19
19
|
const MODAL_HEIGHT = '80vh';
|
|
20
20
|
const MODAL_WIDTH = '90vw';
|
|
21
21
|
const MODAL_MAX_WIDTH = '656px';
|
|
@@ -60,29 +60,40 @@ export const EditRecordModal = ({ className, open, record, creationFormId, editi
|
|
|
60
60
|
const { t } = useSharedTranslation();
|
|
61
61
|
const [antdForm] = useForm();
|
|
62
62
|
const [currentRecord, setCurrentRecord] = useState(record);
|
|
63
|
-
const
|
|
64
|
-
const
|
|
63
|
+
const clickedSubmitButton = useRef(null);
|
|
64
|
+
const [createRecord] = useCreateRecordMutation();
|
|
65
65
|
const [purgeRecordMutation] = usePurgeRecordMutation();
|
|
66
66
|
const formElementId = useRef(window.crypto.randomUUID());
|
|
67
67
|
const [isCreation, setIsCreation] = useState(!record);
|
|
68
|
+
const [isReady, setIsReady] = useState(!!record);
|
|
69
|
+
const [isError, setIsError] = useState(false);
|
|
68
70
|
const [formId, setFormId] = useState(isCreation ? (creationFormId ?? 'creation') : (editionFormId ?? 'edition'));
|
|
71
|
+
const values = useGetInitialRecordValues();
|
|
69
72
|
const closeButtonLabel = isCreation ? t('global.cancel') : t('global.close');
|
|
70
73
|
const modalTitle = currentRecord?.label && currentRecord.label.trim() ? currentRecord.label : t('record_edition.new_record');
|
|
71
74
|
useEffect(() => {
|
|
72
75
|
const createEmptyRecordFunction = async () => {
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
const { data } = await createRecord({
|
|
77
|
+
variables: {
|
|
78
|
+
library,
|
|
79
|
+
skipActivate: true,
|
|
80
|
+
data: { values },
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
const recordId = data?.createRecord.record?.id;
|
|
84
|
+
setCurrentRecord(data?.createRecord.record.whoAmI ?? null);
|
|
85
|
+
if (!recordId) {
|
|
86
|
+
setIsError(true);
|
|
87
|
+
return;
|
|
77
88
|
}
|
|
78
|
-
|
|
89
|
+
setIsReady(true);
|
|
79
90
|
};
|
|
80
91
|
if (open && isCreation && !currentRecord) {
|
|
81
92
|
createEmptyRecordFunction();
|
|
82
93
|
}
|
|
83
94
|
}, [open, currentRecord]);
|
|
84
95
|
const _handleClickSubmit = (button) => {
|
|
85
|
-
|
|
96
|
+
clickedSubmitButton.current = button;
|
|
86
97
|
};
|
|
87
98
|
const _purgeRecordOnCreationCancel = () => purgeRecordMutation({
|
|
88
99
|
errorPolicy: 'ignore',
|
|
@@ -101,13 +112,13 @@ export const EditRecordModal = ({ className, open, record, creationFormId, editi
|
|
|
101
112
|
const displayedSubmitButtons = useGetSubmitButtons(submitButtons, formElementId.current, isCreation, _handleClickSubmit);
|
|
102
113
|
const _handleCreate = (newRecord) => {
|
|
103
114
|
setCurrentRecord(newRecord);
|
|
104
|
-
if (onCreateAndEdit && clickedSubmitButton === 'createAndEdit') {
|
|
115
|
+
if (onCreateAndEdit && clickedSubmitButton.current === 'createAndEdit') {
|
|
105
116
|
setFormId(editionFormId ?? 'edition');
|
|
106
117
|
setIsCreation(false);
|
|
107
118
|
onCreateAndEdit(newRecord);
|
|
108
119
|
return;
|
|
109
120
|
}
|
|
110
|
-
if (onCreate && clickedSubmitButton === 'create') {
|
|
121
|
+
if (onCreate && clickedSubmitButton.current === 'create') {
|
|
111
122
|
onCreate(newRecord);
|
|
112
123
|
return;
|
|
113
124
|
}
|
|
@@ -123,9 +134,9 @@ export const EditRecordModal = ({ className, open, record, creationFormId, editi
|
|
|
123
134
|
}
|
|
124
135
|
return onClose();
|
|
125
136
|
};
|
|
126
|
-
return (
|
|
137
|
+
return (_jsxs(KitModalStyled, { appElement: document.getElementById('root'), className: className, height: autoHeight ? 'auto' : MODAL_HEIGHT, maxHeight: autoHeight ? MODAL_HEIGHT : undefined, width: MODAL_WIDTH, isOpen: open, close: _handleClose, title: _jsxs(KitSpace, { children: [_jsx(KitTypography.Title, { level: "h2", style: { margin: 0 }, children: modalTitle }), _jsx("div", { id: EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS })] }), footer: _jsx(KitSpace, { children: [
|
|
127
138
|
_jsx(KitButton, { "aria-label": closeButtonLabel, icon: _jsx(FontAwesomeIcon, { icon: faXmark }), onClick: _handleClose, children: closeButtonLabel }, "close"),
|
|
128
139
|
...displayedSubmitButtons,
|
|
129
|
-
] }), closeIcon: _jsx(FontAwesomeIcon, { icon: faXmark }), showCloseIcon: true, destroyOnClose: true, children: _jsx(EditRecord, { antdForm: antdForm, isFormCreationMode: isCreation, formId: formId, formElementId: formElementId.current, record: currentRecord, library: library, onCreate: _handleCreate, valuesVersion: valuesVersion, showSidebar: showSidebar, enableSidebar: enableSidebar, withInfoButton: withInfoButton }) }));
|
|
140
|
+
] }), closeIcon: _jsx(FontAwesomeIcon, { icon: faXmark }), showCloseIcon: true, destroyOnClose: true, children: [isError && _jsx(ErrorComponent, {}), !isReady && _jsx(KitLoader, {}), isReady && (_jsx(EditRecord, { antdForm: antdForm, isFormCreationMode: isCreation, formId: formId, formElementId: formElementId.current, record: currentRecord, library: library, onCreate: _handleCreate, valuesVersion: valuesVersion, showSidebar: showSidebar, enableSidebar: enableSidebar, withInfoButton: withInfoButton }))] }));
|
|
130
141
|
};
|
|
131
142
|
//# sourceMappingURL=EditRecordModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditRecordModal.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordModal/EditRecordModal.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, useEffect, useRef, useState} from 'react';\nimport {KitButton, KitModal, 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 {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faXmark} from '@fortawesome/free-solid-svg-icons';\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 useExecuteCreateEmptyRecordMutation from '../EditRecordContent/hooks/useCreateEmptyRecordMutation';\nimport {APICallStatus} from '../EditRecordContent/_types';\n\nexport interface IEditRecordModalProps {\n className?: string;\n open: boolean;\n record: RecordIdentityFragment['whoAmI'] | null;\n creationFormId?: string;\n editionFormId?: string;\n library: string;\n onClose: () => void;\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 withInfoButton?: boolean;\n valuesVersion?: IValueVersion;\n showSidebar?: boolean;\n enableSidebar?: boolean;\n autoHeight?: boolean;\n}\n\nconst MODAL_HEIGHT = '80vh';\nconst MODAL_WIDTH = '90vw';\nconst MODAL_MAX_WIDTH = '656px';\nconst MODAL_WITH_SIDEBAR_MAX_WIDTH = '900px';\n\nconst KitModalStyled = styled(KitModal)`\n && {\n & > div {\n max-width: ${MODAL_MAX_WIDTH};\n\n &:has(#edit_record_sidebar) {\n max-width: ${MODAL_WITH_SIDEBAR_MAX_WIDTH};\n }\n\n .kit-modal-header {\n border-bottom: 1px solid var(--general-utilities-border);\n\n .kit-modal-title {\n padding-right: calc(var(--general-spacing-xs) * 1px);\n\n .ant-space {\n width: 100%;\n justify-content: space-between;\n }\n }\n }\n\n .kit-modal-content-wrapper {\n padding: 0;\n\n .kit-modal-content {\n height: 100%;\n\n & > div {\n height: 100%;\n }\n }\n }\n }\n }\n`;\n\nexport const EditRecordModal: FunctionComponent<IEditRecordModalProps> = ({\n className,\n open,\n record,\n creationFormId,\n editionFormId,\n library,\n onClose,\n onCreate,\n onCreateAndEdit,\n valuesVersion,\n showSidebar,\n enableSidebar,\n submitButtons = ['create'],\n withInfoButton = true,\n autoHeight = false,\n}) => {\n const {t} = useSharedTranslation();\n const [antdForm] = useForm();\n const [currentRecord, setCurrentRecord] = useState<RecordIdentityFragment['whoAmI'] | null>(record);\n const [clickedSubmitButton, setClickedSubmitButton] = useState<SubmitButtonsName | null>(null);\n const {createEmptyRecord} = useExecuteCreateEmptyRecordMutation();\n const [purgeRecordMutation] = usePurgeRecordMutation();\n\n const formElementId = useRef(window.crypto.randomUUID());\n const [isCreation, setIsCreation] = useState(!record);\n const [formId, setFormId] = useState<string>(\n isCreation ? (creationFormId ?? 'creation') : (editionFormId ?? 'edition'),\n );\n const closeButtonLabel = isCreation ? t('global.cancel') : t('global.close');\n const modalTitle =\n currentRecord?.label && currentRecord.label.trim() ? currentRecord.label : t('record_edition.new_record');\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 (open && isCreation && !currentRecord) {\n createEmptyRecordFunction();\n }\n }, [open, currentRecord]);\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\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 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 return (\n <KitModalStyled\n appElement={document.getElementById('root')}\n className={className}\n height={autoHeight ? 'auto' : MODAL_HEIGHT}\n maxHeight={autoHeight ? MODAL_HEIGHT : undefined}\n width={MODAL_WIDTH}\n isOpen={open}\n close={_handleClose}\n title={\n <KitSpace>\n <KitTypography.Title level=\"h2\" style={{margin: 0}}>\n {modalTitle}\n </KitTypography.Title>\n <div id={EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS} />\n </KitSpace>\n }\n footer={\n <KitSpace>\n {[\n <KitButton\n aria-label={closeButtonLabel}\n key=\"close\"\n icon={<FontAwesomeIcon icon={faXmark} />}\n onClick={_handleClose}\n >\n {closeButtonLabel}\n </KitButton>,\n ...displayedSubmitButtons,\n ]}\n </KitSpace>\n }\n closeIcon={<FontAwesomeIcon icon={faXmark} />}\n showCloseIcon\n destroyOnClose\n >\n <EditRecord\n antdForm={antdForm}\n isFormCreationMode={isCreation}\n formId={formId}\n formElementId={formElementId.current}\n record={currentRecord}\n library={library}\n onCreate={_handleCreate}\n valuesVersion={valuesVersion}\n showSidebar={showSidebar}\n enableSidebar={enableSidebar}\n withInfoButton={withInfoButton}\n />\n </KitModalStyled>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"EditRecordModal.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordModal/EditRecordModal.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAyB,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AACnF,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAA8B,uBAAuB,EAAE,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAC3G,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,OAAO,EAAC,MAAM,mCAAmC,CAAC;AAE1D,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAC,0CAA0C,EAAC,MAAM,cAAc,CAAC;AACxE,OAAO,EAAC,yBAAyB,EAAC,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAC,cAAc,EAAC,MAAM,kCAAkC,CAAC;AAoBhE,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,MAAM,4BAA4B,GAAG,OAAO,CAAC;AAE7C,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;;;yBAGd,eAAe;;;6BAGX,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BxD,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA6C,CAAC,EACtE,SAAS,EACT,IAAI,EACJ,MAAM,EACN,cAAc,EACd,aAAa,EACb,OAAO,EACP,OAAO,EACP,QAAQ,EACR,eAAe,EACf,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,GAAG,CAAC,QAAQ,CAAC,EAC1B,cAAc,GAAG,IAAI,EACrB,UAAU,GAAG,KAAK,GACrB,EAAE,EAAE;IACD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,EAAE,CAAC;IAC7B,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAA0C,MAAM,CAAC,CAAC;IACpG,MAAM,mBAAmB,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;IACnE,MAAM,CAAC,YAAY,CAAC,GAAG,uBAAuB,EAAE,CAAC;IACjD,MAAM,CAAC,mBAAmB,CAAC,GAAG,sBAAsB,EAAE,CAAC;IAEvD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAChC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,SAAS,CAAC,CAC7E,CAAC;IACF,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;IAC3C,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC7E,MAAM,UAAU,GACZ,aAAa,EAAE,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAE9G,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,yBAAyB,GAAG,KAAK,IAAI,EAAE;YACzC,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,YAAY,CAAC;gBAC9B,SAAS,EAAE;oBACP,OAAO;oBACP,YAAY,EAAE,IAAI;oBAClB,IAAI,EAAE,EAAC,MAAM,EAAC;iBACjB;aACJ,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;YAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjB,OAAO;YACX,CAAC;YAED,UAAU,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,IAAI,IAAI,IAAI,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,yBAAyB,EAAE,CAAC;QAChC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAE1B,MAAM,kBAAkB,GAAG,CAAC,MAAyB,EAAE,EAAE;QACrD,mBAAmB,CAAC,OAAO,GAAG,MAAM,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,4BAA4B,GAAG,GAAG,EAAE,CACtC,mBAAmB,CAAC;QAChB,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE;YACP,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;YACrC,QAAQ,EAAE,aAAa,EAAE,EAAE;SAC9B;KACJ,CAAC,CAAC;IAEP,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;QAClC,IAAI,aAAa,EAAE,EAAE,IAAI,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAClD,4BAA4B,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;IAErE,MAAM,sBAAsB,GAAG,mBAAmB,CAC9C,aAAa,EACb,aAAa,CAAC,OAAO,EACrB,UAAU,EACV,kBAAkB,CACrB,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,SAA2C,EAAE,EAAE;QAClE,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5B,IAAI,eAAe,IAAI,mBAAmB,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;YACrE,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;YACtC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,eAAe,CAAC,SAAS,CAAC,CAAC;YAC3B,OAAO;QACX,CAAC;QAED,IAAI,QAAQ,IAAI,mBAAmB,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvD,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACX,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,IAAI,UAAU,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC7B,OAAO,iBAAiB,EAAE,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,4BAA4B,EAAE,CAAC;YACnC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO,CACH,MAAC,cAAc,IACX,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAC3C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,EAC1C,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAChD,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,YAAY,EACnB,KAAK,EACD,MAAC,QAAQ,eACL,KAAC,aAAa,CAAC,KAAK,IAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAE,EAAC,MAAM,EAAE,CAAC,EAAC,YAC7C,UAAU,GACO,EACtB,cAAK,EAAE,EAAE,0CAA0C,GAAI,IAChD,EAEf,MAAM,EACF,KAAC,QAAQ,cACJ;gBACG,KAAC,SAAS,kBACM,gBAAgB,EAE5B,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,OAAO,GAAI,EACxC,OAAO,EAAE,YAAY,YAEpB,gBAAgB,IAJb,OAAO,CAKH;gBACZ,GAAG,sBAAsB;aAC5B,GACM,EAEf,SAAS,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,OAAO,GAAI,EAC7C,aAAa,QACb,cAAc,mBAEb,OAAO,IAAI,KAAC,cAAc,KAAG,EAC7B,CAAC,OAAO,IAAI,KAAC,SAAS,KAAG,EACzB,OAAO,IAAI,CACR,KAAC,UAAU,IACP,QAAQ,EAAE,QAAQ,EAClB,kBAAkB,EAAE,UAAU,EAC9B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,CAAC,OAAO,EACpC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,GAChC,CACL,IACY,CACpB,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent, useEffect, useRef, useState} from 'react';\nimport {KitButton, KitLoader, KitModal, 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, useCreateRecordMutation, usePurgeRecordMutation} from '_ui/_gqlTypes';\nimport {EditRecord} from '../EditRecord';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faXmark} from '@fortawesome/free-solid-svg-icons';\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 {useGetInitialRecordValues} from '../EditRecordPage/getInitialRecordValues';\nimport {ErrorComponent} from '../EditRecordPage/ErrorComponent';\n\nexport interface IEditRecordModalProps {\n className?: string;\n open: boolean;\n record: RecordIdentityFragment['whoAmI'] | null;\n creationFormId?: string;\n editionFormId?: string;\n library: string;\n onClose: () => void;\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 withInfoButton?: boolean;\n valuesVersion?: IValueVersion;\n showSidebar?: boolean;\n enableSidebar?: boolean;\n autoHeight?: boolean;\n}\n\nconst MODAL_HEIGHT = '80vh';\nconst MODAL_WIDTH = '90vw';\nconst MODAL_MAX_WIDTH = '656px';\nconst MODAL_WITH_SIDEBAR_MAX_WIDTH = '900px';\n\nconst KitModalStyled = styled(KitModal)`\n && {\n & > div {\n max-width: ${MODAL_MAX_WIDTH};\n\n &:has(#edit_record_sidebar) {\n max-width: ${MODAL_WITH_SIDEBAR_MAX_WIDTH};\n }\n\n .kit-modal-header {\n border-bottom: 1px solid var(--general-utilities-border);\n\n .kit-modal-title {\n padding-right: calc(var(--general-spacing-xs) * 1px);\n\n .ant-space {\n width: 100%;\n justify-content: space-between;\n }\n }\n }\n\n .kit-modal-content-wrapper {\n padding: 0;\n\n .kit-modal-content {\n height: 100%;\n\n & > div {\n height: 100%;\n }\n }\n }\n }\n }\n`;\n\nexport const EditRecordModal: FunctionComponent<IEditRecordModalProps> = ({\n className,\n open,\n record,\n creationFormId,\n editionFormId,\n library,\n onClose,\n onCreate,\n onCreateAndEdit,\n valuesVersion,\n showSidebar,\n enableSidebar,\n submitButtons = ['create'],\n withInfoButton = true,\n autoHeight = false,\n}) => {\n const {t} = useSharedTranslation();\n const [antdForm] = useForm();\n const [currentRecord, setCurrentRecord] = useState<RecordIdentityFragment['whoAmI'] | null>(record);\n const clickedSubmitButton = useRef<SubmitButtonsName | null>(null);\n const [createRecord] = useCreateRecordMutation();\n const [purgeRecordMutation] = usePurgeRecordMutation();\n\n const formElementId = useRef(window.crypto.randomUUID());\n const [isCreation, setIsCreation] = useState(!record);\n const [isReady, setIsReady] = useState(!!record);\n const [isError, setIsError] = useState(false);\n const [formId, setFormId] = useState<string>(\n isCreation ? (creationFormId ?? 'creation') : (editionFormId ?? 'edition'),\n );\n const values = useGetInitialRecordValues();\n const closeButtonLabel = isCreation ? t('global.cancel') : t('global.close');\n const modalTitle =\n currentRecord?.label && currentRecord.label.trim() ? currentRecord.label : t('record_edition.new_record');\n\n useEffect(() => {\n const createEmptyRecordFunction = async () => {\n const {data} = await createRecord({\n variables: {\n library,\n skipActivate: true,\n data: {values},\n },\n });\n\n const recordId = data?.createRecord.record?.id;\n setCurrentRecord(data?.createRecord.record.whoAmI ?? null);\n if (!recordId) {\n setIsError(true);\n return;\n }\n\n setIsReady(true);\n };\n\n if (open && isCreation && !currentRecord) {\n createEmptyRecordFunction();\n }\n }, [open, currentRecord]);\n\n const _handleClickSubmit = (button: SubmitButtonsName) => {\n clickedSubmitButton.current = 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\n const _handleCreate = (newRecord: RecordIdentityFragment['whoAmI']) => {\n setCurrentRecord(newRecord);\n\n if (onCreateAndEdit && clickedSubmitButton.current === 'createAndEdit') {\n setFormId(editionFormId ?? 'edition');\n setIsCreation(false);\n onCreateAndEdit(newRecord);\n return;\n }\n\n if (onCreate && clickedSubmitButton.current === 'create') {\n onCreate(newRecord);\n return;\n }\n };\n\n const _handleClose = () => {\n if (isCreation) {\n if (antdForm.isFieldsTouched()) {\n return showCancelConfirm();\n } else {\n _purgeRecordOnCreationCancel();\n }\n }\n return onClose();\n };\n\n return (\n <KitModalStyled\n appElement={document.getElementById('root')}\n className={className}\n height={autoHeight ? 'auto' : MODAL_HEIGHT}\n maxHeight={autoHeight ? MODAL_HEIGHT : undefined}\n width={MODAL_WIDTH}\n isOpen={open}\n close={_handleClose}\n title={\n <KitSpace>\n <KitTypography.Title level=\"h2\" style={{margin: 0}}>\n {modalTitle}\n </KitTypography.Title>\n <div id={EDIT_RECORD_MODAL_HEADER_CONTAINER_BUTTONS} />\n </KitSpace>\n }\n footer={\n <KitSpace>\n {[\n <KitButton\n aria-label={closeButtonLabel}\n key=\"close\"\n icon={<FontAwesomeIcon icon={faXmark} />}\n onClick={_handleClose}\n >\n {closeButtonLabel}\n </KitButton>,\n ...displayedSubmitButtons,\n ]}\n </KitSpace>\n }\n closeIcon={<FontAwesomeIcon icon={faXmark} />}\n showCloseIcon\n destroyOnClose\n >\n {isError && <ErrorComponent />}\n {!isReady && <KitLoader />}\n {isReady && (\n <EditRecord\n antdForm={antdForm}\n isFormCreationMode={isCreation}\n formId={formId}\n formElementId={formElementId.current}\n record={currentRecord}\n library={library}\n onCreate={_handleCreate}\n valuesVersion={valuesVersion}\n showSidebar={showSidebar}\n enableSidebar={enableSidebar}\n withInfoButton={withInfoButton}\n />\n )}\n </KitModalStyled>\n );\n};\n"]}
|