@gridsuite/commons-ui 0.291.0 → 0.293.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/components/ui/reactHookForm/directory-item-input/directory-item-input.js +67 -26
  2. package/dist/features/index.js +32 -11
  3. package/dist/features/parameters/voltage-init/equipment-selection-parameters.js +6 -2
  4. package/dist/features/process-configs/common/FormSection.d.ts +8 -0
  5. package/dist/features/process-configs/common/FormSection.js +11 -0
  6. package/dist/features/process-configs/common/FormSubSection.d.ts +8 -0
  7. package/dist/features/process-configs/common/FormSubSection.js +11 -0
  8. package/dist/features/process-configs/common/GeneralInformationSection.d.ts +8 -0
  9. package/dist/features/process-configs/{shortcircuit/sc-process-config-edition.utils.js → common/GeneralInformationSection.js} +57 -54
  10. package/dist/features/process-configs/{security-analysis/index.d.ts → common/ModificationsSubSection.d.ts} +1 -3
  11. package/dist/features/process-configs/common/ModificationsSubSection.js +14 -0
  12. package/dist/features/process-configs/common/ProvidersParametersSubSection.d.ts +5 -0
  13. package/dist/features/process-configs/{loadflow/lf-process-config-edition.js → common/ProvidersParametersSubSection.js} +35 -26
  14. package/dist/features/process-configs/common/SpecificInformationSection.d.ts +8 -0
  15. package/dist/features/process-configs/common/SpecificInformationSection.js +25 -0
  16. package/dist/features/process-configs/common/index.d.ts +13 -1
  17. package/dist/features/process-configs/common/index.js +26 -2
  18. package/dist/features/process-configs/common/process-config-backend.type.d.ts +15 -0
  19. package/dist/features/process-configs/common/process-config-form.constants.d.ts +7 -0
  20. package/dist/features/process-configs/common/process-config-form.constants.js +39 -0
  21. package/dist/features/process-configs/common/process-config-form.schema.d.ts +29 -0
  22. package/dist/features/process-configs/{loadflow/lf-process-config-edition.utils.js → common/process-config-form.schema.js} +33 -51
  23. package/dist/features/process-configs/common/process-config-form.types.d.ts +45 -0
  24. package/dist/features/process-configs/common/process-config-mapping.d.ts +4 -0
  25. package/dist/features/process-configs/common/process-config-mapping.js +57 -0
  26. package/dist/features/process-configs/common/process-config-modifications-edition.utils.d.ts +0 -3
  27. package/dist/features/process-configs/common/process-config-modifications-edition.utils.js +0 -2
  28. package/dist/features/process-configs/common/process-config-type.definitions.d.ts +56 -0
  29. package/dist/features/process-configs/common/process-config-type.definitions.js +70 -0
  30. package/dist/features/process-configs/form/components/ProcessTypeChangeDialog.d.ts +13 -0
  31. package/dist/features/process-configs/form/components/ProcessTypeChangeDialog.js +27 -0
  32. package/dist/features/process-configs/form/components/ProcessTypeSelect.d.ts +6 -0
  33. package/dist/features/process-configs/form/components/ProcessTypeSelect.js +69 -0
  34. package/dist/features/process-configs/form/hooks/usePrefillSelection.d.ts +19 -0
  35. package/dist/features/process-configs/form/hooks/usePrefillSelection.js +51 -0
  36. package/dist/features/process-configs/form/hooks/useProcessConfigForm.d.ts +19 -0
  37. package/dist/features/process-configs/form/hooks/useProcessConfigForm.js +74 -0
  38. package/dist/features/process-configs/form/hooks/useProcessTypeGuard.d.ts +10 -0
  39. package/dist/features/process-configs/form/hooks/useProcessTypeGuard.js +67 -0
  40. package/dist/features/process-configs/form/process-config-form.d.ts +2 -0
  41. package/dist/features/process-configs/form/process-config-form.js +170 -0
  42. package/dist/features/process-configs/form/utils/form.utils.d.ts +3 -0
  43. package/dist/features/process-configs/form/utils/form.utils.js +36 -0
  44. package/dist/features/process-configs/index.d.ts +3 -5
  45. package/dist/features/process-configs/index.js +33 -12
  46. package/dist/features/process-configs/process-config-edition-dialog.d.ts +2 -0
  47. package/dist/features/process-configs/{process-config.utils.js → process-config-edition-dialog.js} +86 -26
  48. package/dist/index.js +32 -11
  49. package/dist/translations/en/businessErrorsEn.d.ts +1 -0
  50. package/dist/translations/en/businessErrorsEn.js +2 -1
  51. package/dist/translations/en/parameters.d.ts +1 -0
  52. package/dist/translations/en/parameters.js +2 -1
  53. package/dist/translations/en/processConfigEn.d.ts +18 -0
  54. package/dist/translations/en/processConfigEn.js +19 -1
  55. package/dist/translations/fr/businessErrorsFr.d.ts +1 -0
  56. package/dist/translations/fr/businessErrorsFr.js +2 -1
  57. package/dist/translations/fr/parameters.d.ts +1 -0
  58. package/dist/translations/fr/parameters.js +3 -2
  59. package/dist/translations/fr/processConfigFr.d.ts +18 -0
  60. package/dist/translations/fr/processConfigFr.js +19 -1
  61. package/package.json +1 -1
  62. package/dist/features/process-configs/lf-process-config-edition-dialog.d.ts +0 -3
  63. package/dist/features/process-configs/lf-process-config-edition-dialog.js +0 -128
  64. package/dist/features/process-configs/loadflow/index.d.ts +0 -9
  65. package/dist/features/process-configs/loadflow/index.js +0 -9
  66. package/dist/features/process-configs/loadflow/lf-process-config-edition.d.ts +0 -1
  67. package/dist/features/process-configs/loadflow/lf-process-config-edition.utils.d.ts +0 -39
  68. package/dist/features/process-configs/loadflow/lf-process-config.type.d.ts +0 -6
  69. package/dist/features/process-configs/process-config-edition.utils.d.ts +0 -13
  70. package/dist/features/process-configs/process-config.type.d.ts +0 -16
  71. package/dist/features/process-configs/process-config.type.js +0 -1
  72. package/dist/features/process-configs/process-config.utils.d.ts +0 -33
  73. package/dist/features/process-configs/sa-process-config-edition-dialog.d.ts +0 -3
  74. package/dist/features/process-configs/sa-process-config-edition-dialog.js +0 -128
  75. package/dist/features/process-configs/sc-process-config-edition-dialog.d.ts +0 -3
  76. package/dist/features/process-configs/sc-process-config-edition-dialog.js +0 -141
  77. package/dist/features/process-configs/security-analysis/index.js +0 -9
  78. package/dist/features/process-configs/security-analysis/sa-process-config-edition.d.ts +0 -1
  79. package/dist/features/process-configs/security-analysis/sa-process-config-edition.js +0 -100
  80. package/dist/features/process-configs/security-analysis/sa-process-config-edition.utils.d.ts +0 -45
  81. package/dist/features/process-configs/security-analysis/sa-process-config-edition.utils.js +0 -111
  82. package/dist/features/process-configs/security-analysis/sa-process-config.type.d.ts +0 -7
  83. package/dist/features/process-configs/security-analysis/sa-process-config.type.js +0 -1
  84. package/dist/features/process-configs/shortcircuit/index.d.ts +0 -9
  85. package/dist/features/process-configs/shortcircuit/index.js +0 -9
  86. package/dist/features/process-configs/shortcircuit/sc-process-config-edition.d.ts +0 -1
  87. package/dist/features/process-configs/shortcircuit/sc-process-config-edition.js +0 -90
  88. package/dist/features/process-configs/shortcircuit/sc-process-config-edition.utils.d.ts +0 -39
  89. package/dist/features/process-configs/shortcircuit/sc-process-config.type.d.ts +0 -6
  90. package/dist/features/process-configs/shortcircuit/sc-process-config.type.js +0 -1
  91. /package/dist/features/process-configs/{loadflow/lf-process-config.type.js → common/process-config-backend.type.js} +0 -0
  92. /package/dist/features/process-configs/{process-config-edition.utils.js → common/process-config-form.types.js} +0 -0
@@ -0,0 +1,19 @@
1
+ import { UseFormReturn } from 'react-hook-form';
2
+ import { ElementAttributes } from '../../../../utils';
3
+ import { FetchProcessConfigHandler, ProcessConfigFormValues } from '../../common/process-config-form.types';
4
+ type UsePrefillSelectionParams = {
5
+ form: UseFormReturn<ProcessConfigFormValues>;
6
+ onFetchProcessConfig?: FetchProcessConfigHandler;
7
+ selectedProcessType: string;
8
+ };
9
+ export declare function usePrefillSelection({ form, onFetchProcessConfig, selectedProcessType }: UsePrefillSelectionParams): {
10
+ isSelectorOpen: boolean;
11
+ openSelector: () => void;
12
+ itemFilter: (item: ElementAttributes) => boolean;
13
+ handleSelect: (nodes: ReadonlyArray<{
14
+ id: string;
15
+ name?: string;
16
+ description?: string;
17
+ }>) => Promise<void>;
18
+ };
19
+ export {};
@@ -0,0 +1,51 @@
1
+ import { useState, useCallback } from "react";
2
+ import { FieldConstants } from "../../../../utils/constants/fieldConstants.js";
3
+ import "../../../../utils/conversionUtils.js";
4
+ import { ElementType } from "../../../../utils/types/elementType.js";
5
+ import "../../../../utils/types/equipmentType.js";
6
+ import "react/jsx-runtime";
7
+ import "@mui/icons-material";
8
+ import { getProcessConfigFormDefaultValues } from "../../common/process-config-form.constants.js";
9
+ function usePrefillSelection({ form, onFetchProcessConfig, selectedProcessType }) {
10
+ const [isSelectorOpen, setIsSelectorOpen] = useState(false);
11
+ const openSelector = useCallback(() => setIsSelectorOpen(true), []);
12
+ const closeSelector = useCallback(() => setIsSelectorOpen(false), []);
13
+ const itemFilter = useCallback(
14
+ (item) => item?.type === ElementType.PROCESS_CONFIG && item?.specificMetadata?.type === selectedProcessType,
15
+ [selectedProcessType]
16
+ );
17
+ const handleSelect = useCallback(
18
+ async (nodes) => {
19
+ closeSelector();
20
+ const selectedElement = nodes?.[0];
21
+ if (!selectedElement || !onFetchProcessConfig) {
22
+ return;
23
+ }
24
+ const prefillValues = await onFetchProcessConfig(
25
+ selectedElement.id,
26
+ selectedElement.name,
27
+ selectedElement.description
28
+ );
29
+ if (!prefillValues) {
30
+ return;
31
+ }
32
+ const currentDirectory = form.getValues(FieldConstants.DIRECTORY);
33
+ const currentName = form.getValues(FieldConstants.NAME);
34
+ form.reset(
35
+ {
36
+ ...getProcessConfigFormDefaultValues("create"),
37
+ ...prefillValues,
38
+ processType: selectedProcessType,
39
+ [FieldConstants.NAME]: currentName,
40
+ [FieldConstants.DIRECTORY]: currentDirectory
41
+ },
42
+ { keepDefaultValues: true }
43
+ );
44
+ },
45
+ [closeSelector, form, onFetchProcessConfig, selectedProcessType]
46
+ );
47
+ return { isSelectorOpen, openSelector, itemFilter, handleSelect };
48
+ }
49
+ export {
50
+ usePrefillSelection
51
+ };
@@ -0,0 +1,19 @@
1
+ import { UseFormReturn } from 'react-hook-form';
2
+ import { UUID } from 'node:crypto';
3
+ import { FetchPersistedProcessConfigHandler, ProcessConfigFormValues, ProcessConfigMode } from '../../common/process-config-form.types';
4
+ import type * as yup from 'yup';
5
+ type UseProcessConfigFormParams = {
6
+ mode: ProcessConfigMode;
7
+ processConfigUuid?: UUID;
8
+ processConfigName?: string;
9
+ description?: string | null;
10
+ fetchProcessConfig?: FetchPersistedProcessConfigHandler;
11
+ };
12
+ export type UseProcessConfigFormReturn = {
13
+ formMethods: UseFormReturn<ProcessConfigFormValues>;
14
+ formSchema: yup.ObjectSchema<ProcessConfigFormValues>;
15
+ defaultValues: ProcessConfigFormValues;
16
+ isLoading: boolean;
17
+ };
18
+ export declare function useProcessConfigForm({ mode, processConfigUuid, processConfigName, description, fetchProcessConfig, }: UseProcessConfigFormParams): UseProcessConfigFormReturn;
19
+ export {};
@@ -0,0 +1,74 @@
1
+ import { yupResolver } from "@hookform/resolvers/yup";
2
+ import { useMemo, useState, useEffect } from "react";
3
+ import { useForm } from "react-hook-form";
4
+ import "../../../../utils/conversionUtils.js";
5
+ import { snackWithFallback } from "../../../../utils/error.js";
6
+ import "../../../../utils/types/equipmentType.js";
7
+ import "react/jsx-runtime";
8
+ import "@mui/icons-material";
9
+ import "react-intl";
10
+ import "@mui/material";
11
+ import "localized-countries";
12
+ import { useSnackMessage } from "../../../../hooks/useSnackMessage.js";
13
+ import { getProcessConfigFormData } from "../../common/process-config-mapping.js";
14
+ import { getProcessConfigFormDefaultValues } from "../../common/process-config-form.constants.js";
15
+ import { getProcessConfigFormSchema } from "../../common/process-config-form.schema.js";
16
+ function useProcessConfigForm({
17
+ mode,
18
+ processConfigUuid,
19
+ processConfigName,
20
+ description,
21
+ fetchProcessConfig
22
+ }) {
23
+ const defaultValues = useMemo(() => getProcessConfigFormDefaultValues(mode), [mode]);
24
+ const formSchema = useMemo(
25
+ () => getProcessConfigFormSchema(mode),
26
+ [mode]
27
+ );
28
+ const formMethods = useForm({
29
+ defaultValues,
30
+ resolver: yupResolver(formSchema)
31
+ });
32
+ const { reset } = formMethods;
33
+ const [isLoading, setIsLoading] = useState(false);
34
+ const { snackError } = useSnackMessage();
35
+ useEffect(() => {
36
+ if (mode !== "edit" || !processConfigUuid || !fetchProcessConfig) {
37
+ return void 0;
38
+ }
39
+ let cancelled = false;
40
+ setIsLoading(true);
41
+ (async () => {
42
+ try {
43
+ const persistedProcessConfig = await fetchProcessConfig(processConfigUuid);
44
+ if (!cancelled && persistedProcessConfig) {
45
+ const formData = await getProcessConfigFormData(
46
+ persistedProcessConfig,
47
+ processConfigName ?? "",
48
+ description ?? null
49
+ );
50
+ if (!cancelled) {
51
+ reset(formData);
52
+ }
53
+ }
54
+ } catch (error) {
55
+ if (!cancelled) {
56
+ snackWithFallback(snackError, error, {
57
+ headerId: "processConfig/fetchProcessConfigError"
58
+ });
59
+ }
60
+ } finally {
61
+ if (!cancelled) {
62
+ setIsLoading(false);
63
+ }
64
+ }
65
+ })();
66
+ return () => {
67
+ cancelled = true;
68
+ };
69
+ }, [mode, processConfigUuid, processConfigName, description, fetchProcessConfig, reset, snackError]);
70
+ return { formMethods, formSchema, defaultValues, isLoading };
71
+ }
72
+ export {
73
+ useProcessConfigForm
74
+ };
@@ -0,0 +1,10 @@
1
+ import { UseFormReturn } from 'react-hook-form';
2
+ import { Option } from '../../../../utils';
3
+ import { ProcessConfigFormValues } from '../../common/process-config-form.types';
4
+ export declare function useProcessTypeGuard(form: UseFormReturn<ProcessConfigFormValues>): {
5
+ selectedProcessType: "" | import('../..').ProcessType;
6
+ pendingProcessType: string | null;
7
+ checkProcessTypeChange: (nextValue: Option | null) => boolean;
8
+ confirmProcessTypeChange: () => void;
9
+ cancelProcessTypeChange: () => void;
10
+ };
@@ -0,0 +1,67 @@
1
+ import { useState, useEffect, useCallback } from "react";
2
+ import { useWatch } from "react-hook-form";
3
+ import { getProcessConfigFormDefaultValues } from "../../common/process-config-form.constants.js";
4
+ import { deepEqual, withoutProcessType } from "../utils/form.utils.js";
5
+ function useProcessTypeGuard(form) {
6
+ const { control } = form;
7
+ const selectedProcessType = useWatch({ control, name: "processType" });
8
+ const defaultValues = getProcessConfigFormDefaultValues("create");
9
+ const [confirmedProcessType, setConfirmedProcessType] = useState("");
10
+ const [pendingProcessType, setPendingProcessType] = useState(null);
11
+ useEffect(() => {
12
+ if (!selectedProcessType) {
13
+ setConfirmedProcessType("");
14
+ setPendingProcessType(null);
15
+ }
16
+ }, [selectedProcessType]);
17
+ const checkProcessTypeChange = useCallback(
18
+ (nextValue) => {
19
+ const nextProcessType = typeof nextValue === "string" ? nextValue : nextValue?.id ?? "";
20
+ if (!nextProcessType) {
21
+ return true;
22
+ }
23
+ if (!confirmedProcessType) {
24
+ setConfirmedProcessType(nextProcessType);
25
+ return true;
26
+ }
27
+ if (nextProcessType === confirmedProcessType) {
28
+ return true;
29
+ }
30
+ const hasOtherChanges = !deepEqual(
31
+ withoutProcessType(form.getValues()),
32
+ withoutProcessType(defaultValues)
33
+ );
34
+ if (!hasOtherChanges) {
35
+ setConfirmedProcessType(nextProcessType);
36
+ return true;
37
+ }
38
+ setPendingProcessType(nextProcessType);
39
+ return false;
40
+ },
41
+ [form, confirmedProcessType, defaultValues]
42
+ );
43
+ const cancelProcessTypeChange = useCallback(() => {
44
+ setPendingProcessType(null);
45
+ }, []);
46
+ const confirmProcessTypeChange = useCallback(() => {
47
+ if (!pendingProcessType) {
48
+ return;
49
+ }
50
+ form.reset({
51
+ ...defaultValues,
52
+ processType: pendingProcessType
53
+ });
54
+ setConfirmedProcessType(pendingProcessType);
55
+ setPendingProcessType(null);
56
+ }, [form, defaultValues, pendingProcessType]);
57
+ return {
58
+ selectedProcessType,
59
+ pendingProcessType,
60
+ checkProcessTypeChange,
61
+ confirmProcessTypeChange,
62
+ cancelProcessTypeChange
63
+ };
64
+ }
65
+ export {
66
+ useProcessTypeGuard
67
+ };
@@ -0,0 +1,2 @@
1
+ import { ProcessConfigFormProps } from '../common/process-config-form.types';
2
+ export declare function ProcessConfigForm({ form, mode, initialElementName, activeDirectory, onFetchProcessConfig, }: Readonly<ProcessConfigFormProps>): import("react").JSX.Element;
@@ -0,0 +1,170 @@
1
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
+ import { Stack, Divider } from "@mui/material";
3
+ import { useWatch } from "react-hook-form";
4
+ import { useIntl } from "react-intl";
5
+ import { ProcessTypeSelect } from "./components/ProcessTypeSelect.js";
6
+ import { ProcessTypeChangeDialog } from "./components/ProcessTypeChangeDialog.js";
7
+ import { usePrefillSelection } from "./hooks/usePrefillSelection.js";
8
+ import { useProcessTypeGuard } from "./hooks/useProcessTypeGuard.js";
9
+ import { GeneralInformationSection } from "../common/GeneralInformationSection.js";
10
+ import { FieldConstants } from "../../../utils/constants/fieldConstants.js";
11
+ import "../../../utils/conversionUtils.js";
12
+ import { ElementType } from "../../../utils/types/elementType.js";
13
+ import "../../../utils/types/equipmentType.js";
14
+ import "@mui/icons-material";
15
+ import "react";
16
+ import "../../../components/ui/overflowableText/OverflowableText.js";
17
+ import "localized-countries";
18
+ import "notistack";
19
+ import "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
20
+ import "yup";
21
+ import { DirectoryItemSelector } from "../../../components/ui/directoryItemSelector/DirectoryItemSelector.js";
22
+ import "../../../components/ui/reactHookForm/numbers/RangeInput.js";
23
+ import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
24
+ import "../../../components/ui/reactHookForm/expandableInput/ExpandableInput.js";
25
+ import "../../../components/ui/reactHookForm/directory-item-input/directory-item-utils.js";
26
+ import "@hello-pangea/dnd";
27
+ import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
28
+ import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
29
+ import "../../../chunks/module.pXeJjFiM.js";
30
+ import "react-resizable-panels";
31
+ import "react-papaparse";
32
+ import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
33
+ import "react-dom";
34
+ import "../../../chunks/index.BJsVzTMz.js";
35
+ import "clsx";
36
+ import "../../../components/composite/filter/FilterCreationDialog.js";
37
+ import "../../../components/composite/filter/HeaderFilterForm.js";
38
+ import "../../../components/composite/filter/explicitNaming/ExplicitNamingFilterForm.js";
39
+ import "../../../components/composite/filter/expert/ExpertFilterForm.js";
40
+ import "../../../components/composite/filter/expert/ExpertFilterEditionDialog.js";
41
+ import "../../../components/composite/filter/expert/expertFilterConstants.js";
42
+ import "react-querybuilder";
43
+ import "uuid";
44
+ import "../../../components/composite/filter/explicitNaming/ExplicitNamingFilterEditionDialog.js";
45
+ import "../../../components/composite/filter/utils/filterFormUtils.js";
46
+ import "@react-querybuilder/material";
47
+ import "../../../components/composite/reactQueryBuilder/CustomReactQueryBuilder.js";
48
+ import "../../../components/composite/reactQueryBuilder/PropertyValueEditor.js";
49
+ import "../../../components/composite/agGridTable/BottomTableButtons.js";
50
+ import "../../../components/composite/agGridTable/CustomAgGridTable.js";
51
+ import "ag-grid-community";
52
+ import "../../../components/composite/customAGGrid/customAggrid.js";
53
+ import "../../../components/composite/customAGGrid/context/custom-aggrid-context.js";
54
+ import "mathjs";
55
+ import "../../../components/composite/report/report-viewer/log-table/log-table.js";
56
+ import "react-window";
57
+ import "../../../components/composite/report/report-treeview/treeview-item.js";
58
+ import "../../../components/composite/report/report-viewer/context/report-viewer-context.js";
59
+ import "../../parameters/common/parameter-layout/parameter-layout-provider.js";
60
+ import "../../parameters/common/widget/parameter-line-slider.js";
61
+ import "../../parameters/common/contingency-table/contingency-table.js";
62
+ import "../../parameters/common/contingency-table/columns-definitions.js";
63
+ import "@hookform/resolvers/yup";
64
+ import "../../parameters/network-visualizations/constants.js";
65
+ import "../../parameters/loadflow/load-flow-parameters-context.js";
66
+ import "../../parameters/loadflow/load-flow-parameters-utils.js";
67
+ import "../../parameters/loadflow/load-flow-parameters-content.js";
68
+ import "../../parameters/short-circuit/short-circuit-parameters-content.js";
69
+ import "../../parameters/short-circuit/short-circuit-parameters-utils.js";
70
+ import "../../parameters/voltage-init/constants.js";
71
+ import "../../parameters/voltage-init/voltage-init-form-utils.js";
72
+ import "../../parameters/security-analysis/constants.js";
73
+ import "../../parameters/security-analysis/security-analysis-parameters-utils.js";
74
+ import "../../parameters/sensi/utils.js";
75
+ import "../../parameters/sensi/columns-definitions.js";
76
+ import "../../parameters/dynamic-simulation/use-dynamic-simulation-parameters-form.js";
77
+ import "../../parameters/dynamic-simulation/dynamic-simulation.type.js";
78
+ import "../../parameters/dynamic-simulation/time-delay/time-delay-parameters-utils.js";
79
+ import "../../parameters/dynamic-simulation/time-delay/time-delay-parameters.js";
80
+ import "../../parameters/dynamic-simulation/solver/solver-parameters-utils.js";
81
+ import "../../parameters/dynamic-simulation/solver/solver-parameters.js";
82
+ import "../../parameters/dynamic-simulation/mapping/mapping-parameters-utils.js";
83
+ import "../../parameters/dynamic-simulation/network/network-parameters-utils.js";
84
+ import "../../parameters/dynamic-simulation/network/network-parameters.js";
85
+ import "../../parameters/dynamic-simulation/curve/dialog/curve-preview.js";
86
+ import "../../parameters/dynamic-simulation/curve/dialog/curve-selector.js";
87
+ import "../../parameters/dynamic-simulation/curve/common/grid-search.js";
88
+ import "../../parameters/dynamic-security-analysis/use-dynamic-security-analysis-parameters-form.js";
89
+ import "../../parameters/dynamic-security-analysis/scenario-parameters.js";
90
+ import "../../parameters/dynamic-security-analysis/contingency-parameters.js";
91
+ import "../../parameters/dynamic-security-analysis/dynamic-security-analysis.type.js";
92
+ import "../../parameters/dynamic-margin-calculation/time-delay-parameters.js";
93
+ import "../../parameters/dynamic-margin-calculation/loads-variations-parameters.js";
94
+ import "../../parameters/dynamic-margin-calculation/dynamic-margin-calculation.type.js";
95
+ import "../../parameters/dynamic-margin-calculation/use-dynamic-margin-calculation-parameters-form.js";
96
+ import "../common/process-config-type.definitions.js";
97
+ import { SpecificInformationSection } from "../common/SpecificInformationSection.js";
98
+ import "../common/process-config-modifications-edition.utils.js";
99
+ import "../common/process-config-form.constants.js";
100
+ import "../common/process-config-form.schema.js";
101
+ function ProcessConfigForm({
102
+ form,
103
+ mode,
104
+ initialElementName,
105
+ activeDirectory,
106
+ onFetchProcessConfig
107
+ }) {
108
+ const { control } = form;
109
+ const isCreate = mode === "create";
110
+ const intl = useIntl();
111
+ const {
112
+ selectedProcessType,
113
+ pendingProcessType,
114
+ checkProcessTypeChange,
115
+ confirmProcessTypeChange,
116
+ cancelProcessTypeChange
117
+ } = useProcessTypeGuard(form);
118
+ const selectedDirectory = useWatch({ control, name: FieldConstants.DIRECTORY });
119
+ const { isSelectorOpen, openSelector, itemFilter, handleSelect } = usePrefillSelection({
120
+ form,
121
+ onFetchProcessConfig,
122
+ selectedProcessType
123
+ });
124
+ return /* @__PURE__ */ jsxs(Stack, { spacing: 3, sx: { paddingTop: 1 }, children: [
125
+ isCreate && /* @__PURE__ */ jsx(ProcessTypeSelect, { onCheckNewValue: checkProcessTypeChange }),
126
+ selectedProcessType !== "" && /* @__PURE__ */ jsxs(Fragment, { children: [
127
+ /* @__PURE__ */ jsx(Divider, {}),
128
+ /* @__PURE__ */ jsx(
129
+ GeneralInformationSection,
130
+ {
131
+ activeDirectory: isCreate ? selectedDirectory?.directoryItemId ?? "" : activeDirectory,
132
+ initialElementName,
133
+ withFolderField: isCreate
134
+ }
135
+ ),
136
+ /* @__PURE__ */ jsx(
137
+ SpecificInformationSection,
138
+ {
139
+ control,
140
+ onPrefill: isCreate && onFetchProcessConfig ? openSelector : void 0
141
+ }
142
+ )
143
+ ] }),
144
+ isCreate && isSelectorOpen && /* @__PURE__ */ jsx(
145
+ DirectoryItemSelector,
146
+ {
147
+ open: true,
148
+ onClose: handleSelect,
149
+ types: [ElementType.PROCESS_CONFIG],
150
+ equipmentTypes: [selectedProcessType],
151
+ itemFilter,
152
+ title: intl.formatMessage({ id: "selectProcessConfig" }),
153
+ onlyLeaves: true,
154
+ multiSelect: false,
155
+ validationButtonText: intl.formatMessage({ id: "validate" })
156
+ }
157
+ ),
158
+ isCreate && /* @__PURE__ */ jsx(
159
+ ProcessTypeChangeDialog,
160
+ {
161
+ open: pendingProcessType !== null,
162
+ onCancel: cancelProcessTypeChange,
163
+ onConfirm: confirmProcessTypeChange
164
+ }
165
+ )
166
+ ] });
167
+ }
168
+ export {
169
+ ProcessConfigForm
170
+ };
@@ -0,0 +1,3 @@
1
+ import { ProcessConfigFormValues } from '../../common';
2
+ export declare function withoutProcessType(values: ProcessConfigFormValues): Omit<ProcessConfigFormValues, 'processType'>;
3
+ export declare function deepEqual(a: unknown, b: unknown): boolean;
@@ -0,0 +1,36 @@
1
+ function withoutProcessType(values) {
2
+ const { processType, ...rest } = values;
3
+ return rest;
4
+ }
5
+ function deepEqual(a, b) {
6
+ if (Object.is(a, b)) {
7
+ return true;
8
+ }
9
+ if (a === null || b === null) {
10
+ return false;
11
+ }
12
+ if (typeof a !== "object" || typeof b !== "object") {
13
+ return false;
14
+ }
15
+ if (Array.isArray(a) || Array.isArray(b)) {
16
+ if (!Array.isArray(a) || !Array.isArray(b)) {
17
+ return false;
18
+ }
19
+ if (a.length !== b.length) {
20
+ return false;
21
+ }
22
+ return a.every((value, index) => deepEqual(value, b[index]));
23
+ }
24
+ const aRecord = a;
25
+ const bRecord = b;
26
+ const aKeys = Object.keys(aRecord);
27
+ const bKeys = Object.keys(bRecord);
28
+ if (aKeys.length !== bKeys.length) {
29
+ return false;
30
+ }
31
+ return aKeys.every((key) => Object.hasOwn(bRecord, key) && deepEqual(aRecord[key], bRecord[key]));
32
+ }
33
+ export {
34
+ deepEqual,
35
+ withoutProcessType
36
+ };
@@ -5,8 +5,6 @@
5
5
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
6
  */
7
7
  export * from './common';
8
- export * from './process-config.type';
9
- export * from './process-config.utils';
10
- export * from './lf-process-config-edition-dialog';
11
- export * from './sa-process-config-edition-dialog';
12
- export * from './sc-process-config-edition-dialog';
8
+ export * from './form/hooks/useProcessConfigForm';
9
+ export * from './form/process-config-form';
10
+ export * from './process-config-edition-dialog';
@@ -1,20 +1,41 @@
1
+ import { FormSection } from "./common/FormSection.js";
2
+ import { FormSubSection } from "./common/FormSubSection.js";
3
+ import { GeneralInformationSection } from "./common/GeneralInformationSection.js";
4
+ import { ModificationsSubSection } from "./common/ModificationsSubSection.js";
5
+ import { ProvidersParametersSubSection } from "./common/ProvidersParametersSubSection.js";
6
+ import { SpecificInformationSection } from "./common/SpecificInformationSection.js";
1
7
  import { ProcessType } from "./common/process-config.type.js";
2
- import { emptyProcessConfigModificationsFormData, getProcessConfigModificationsBackendFromFormData, getProcessConfigModificationsFormData, processConfigModificationsShape } from "./common/process-config-modifications-edition.utils.js";
8
+ import { PROCESS_CONFIG_PARAMETER_FIELDS, PROCESS_CONFIG_TYPE_DEFINITIONS, getProcessConfigTypeDefinition, getProcessTypesRequiringParameter } from "./common/process-config-type.definitions.js";
3
9
  import { ProcessConfigModificationsEdition } from "./common/process-config-modifications-edition.js";
4
- import { getNamedProcessConfigFormData, isProcessType } from "./process-config.utils.js";
5
- import { LFProcessConfigEditionDialog } from "./lf-process-config-edition-dialog.js";
6
- import { SAProcessConfigEditionDialog } from "./sa-process-config-edition-dialog.js";
7
- import { SCProcessConfigEditionDialog } from "./sc-process-config-edition-dialog.js";
10
+ import { getProcessConfigModificationsBackendFromFormData, getProcessConfigModificationsFormData, processConfigModificationsShape } from "./common/process-config-modifications-edition.utils.js";
11
+ import { PROCESS_CONFIG_TYPES, getProcessConfigFormDefaultValues } from "./common/process-config-form.constants.js";
12
+ import { getProcessConfigFormSchema } from "./common/process-config-form.schema.js";
13
+ import { getProcessConfigBackendFromFormData, getProcessConfigFormData } from "./common/process-config-mapping.js";
14
+ import { useProcessConfigForm } from "./form/hooks/useProcessConfigForm.js";
15
+ import { ProcessConfigForm } from "./form/process-config-form.js";
16
+ import { ProcessConfigEditionDialog } from "./process-config-edition-dialog.js";
8
17
  export {
9
- LFProcessConfigEditionDialog,
18
+ FormSection,
19
+ FormSubSection,
20
+ GeneralInformationSection,
21
+ ModificationsSubSection,
22
+ PROCESS_CONFIG_PARAMETER_FIELDS,
23
+ PROCESS_CONFIG_TYPES,
24
+ PROCESS_CONFIG_TYPE_DEFINITIONS,
25
+ ProcessConfigEditionDialog,
26
+ ProcessConfigForm,
10
27
  ProcessConfigModificationsEdition,
11
28
  ProcessType,
12
- SAProcessConfigEditionDialog,
13
- SCProcessConfigEditionDialog,
14
- emptyProcessConfigModificationsFormData,
15
- getNamedProcessConfigFormData,
29
+ ProvidersParametersSubSection,
30
+ SpecificInformationSection,
31
+ getProcessConfigBackendFromFormData,
32
+ getProcessConfigFormData,
33
+ getProcessConfigFormDefaultValues,
34
+ getProcessConfigFormSchema,
16
35
  getProcessConfigModificationsBackendFromFormData,
17
36
  getProcessConfigModificationsFormData,
18
- isProcessType,
19
- processConfigModificationsShape
37
+ getProcessConfigTypeDefinition,
38
+ getProcessTypesRequiringParameter,
39
+ processConfigModificationsShape,
40
+ useProcessConfigForm
20
41
  };
@@ -0,0 +1,2 @@
1
+ import { ProcessConfigEditionDialogProps } from './common';
2
+ export declare function ProcessConfigEditionDialog({ open, onClose, processConfigUuid, processConfigName, description, directory, fetchProcessConfig, updateProcessConfig, }: Readonly<ProcessConfigEditionDialogProps>): import("react").JSX.Element;