@gridsuite/commons-ui 0.240.0 → 0.241.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 (105) hide show
  1. package/dist/components/composite/customAGGrid/custom-aggrid-filters/custom-aggrid-comparator-filter.js +2 -2
  2. package/dist/components/composite/customAGGrid/custom-aggrid-filters/custom-aggrid-text-filter.js +4 -4
  3. package/dist/components/composite/customAGGrid/custom-aggrid-filters/custom-filter-icon.js +2 -2
  4. package/dist/components/composite/customAGGrid/custom-aggrid-header.js +26 -13
  5. package/dist/components/composite/customAGGrid/custom-aggrid-menu.js +2 -2
  6. package/dist/components/composite/grid/grid-section.js +1 -1
  7. package/dist/features/index.js +6 -1
  8. package/dist/features/network-modifications/common/measurements/BranchActiveReactivePowerMeasurementsForm.js +3 -2
  9. package/dist/features/parameters/common/hook/use-tabs.d.ts +3 -2
  10. package/dist/features/parameters/common/hook/use-tabs.js +2 -3
  11. package/dist/features/parameters/common/index.d.ts +2 -1
  12. package/dist/features/parameters/common/index.js +6 -1
  13. package/dist/features/parameters/common/parameter-field.js +2 -1
  14. package/dist/features/parameters/common/parameter-layout/index.d.ts +8 -0
  15. package/dist/features/parameters/common/parameter-layout/index.js +7 -0
  16. package/dist/features/parameters/common/parameter-layout/parameter-layout-provider.d.ts +10 -0
  17. package/dist/features/parameters/common/parameter-layout/parameter-layout-provider.js +15 -0
  18. package/dist/features/parameters/common/parameter-layout/parameter-layout.d.ts +23 -0
  19. package/dist/features/parameters/common/parameter-layout/parameter-layout.js +167 -0
  20. package/dist/features/parameters/common/provider-param.d.ts +10 -0
  21. package/dist/features/parameters/common/{ProviderParam.js → provider-param.js} +8 -10
  22. package/dist/features/parameters/common/widget/parameter-float.js +1 -1
  23. package/dist/features/parameters/common/widget/parameter-line-directory-items-input.js +1 -1
  24. package/dist/features/parameters/dynamic-margin-calculation/dynamic-margin-calculation-form.d.ts +4 -5
  25. package/dist/features/parameters/dynamic-margin-calculation/dynamic-margin-calculation-form.js +39 -60
  26. package/dist/features/parameters/dynamic-margin-calculation/dynamic-margin-calculation-inline.js +39 -101
  27. package/dist/features/parameters/dynamic-margin-calculation/use-dynamic-margin-calculation-parameters-form.js +8 -7
  28. package/dist/features/parameters/dynamic-security-analysis/contingency-parameters.js +10 -9
  29. package/dist/features/parameters/dynamic-security-analysis/dynamic-security-analysis-inline.js +38 -71
  30. package/dist/features/parameters/dynamic-security-analysis/dynamic-security-analysis-parameters-form.d.ts +4 -5
  31. package/dist/features/parameters/dynamic-security-analysis/dynamic-security-analysis-parameters-form.js +39 -60
  32. package/dist/features/parameters/dynamic-security-analysis/use-dynamic-security-analysis-parameters-form.js +8 -7
  33. package/dist/features/parameters/dynamic-simulation/dynamic-simulation-inline.js +42 -104
  34. package/dist/features/parameters/dynamic-simulation/dynamic-simulation-parameters-form.d.ts +4 -5
  35. package/dist/features/parameters/dynamic-simulation/dynamic-simulation-parameters-form.js +75 -96
  36. package/dist/features/parameters/dynamic-simulation/mapping/mapping-parameters.js +8 -7
  37. package/dist/features/parameters/dynamic-simulation/use-dynamic-simulation-parameters-form.js +7 -6
  38. package/dist/features/parameters/index.js +6 -1
  39. package/dist/features/parameters/loadflow/load-flow-general-parameters.js +1 -0
  40. package/dist/features/parameters/loadflow/load-flow-parameters-content.js +11 -10
  41. package/dist/features/parameters/loadflow/load-flow-parameters-dialog.js +12 -18
  42. package/dist/features/parameters/loadflow/load-flow-parameters-form.d.ts +1 -6
  43. package/dist/features/parameters/loadflow/load-flow-parameters-form.js +26 -91
  44. package/dist/features/parameters/loadflow/load-flow-parameters-header.js +29 -53
  45. package/dist/features/parameters/loadflow/load-flow-parameters-inline.js +35 -127
  46. package/dist/features/parameters/loadflow/load-flow-parameters-utils.js +11 -10
  47. package/dist/features/parameters/loadflow/use-load-flow-parameters-form.js +10 -9
  48. package/dist/features/parameters/network-visualizations/map-parameters.js +10 -9
  49. package/dist/features/parameters/network-visualizations/network-visualizations-form.d.ts +1 -4
  50. package/dist/features/parameters/network-visualizations/network-visualizations-form.js +19 -45
  51. package/dist/features/parameters/network-visualizations/network-visualizations-parameters-dialog.js +13 -19
  52. package/dist/features/parameters/network-visualizations/network-visualizations-parameters-inline.js +34 -65
  53. package/dist/features/parameters/network-visualizations/single-line-diagram-parameters.js +10 -9
  54. package/dist/features/parameters/parameters-style.d.ts +0 -1
  55. package/dist/features/parameters/parameters-style.js +0 -2
  56. package/dist/features/parameters/pcc-min/pcc-min-parameters-dialog.js +13 -18
  57. package/dist/features/parameters/pcc-min/pcc-min-parameters-form.d.ts +7 -29
  58. package/dist/features/parameters/pcc-min/pcc-min-parameters-form.js +16 -106
  59. package/dist/features/parameters/pcc-min/pcc-min-parameters-inline.js +27 -84
  60. package/dist/features/parameters/security-analysis/columns-definitions.js +11 -10
  61. package/dist/features/parameters/security-analysis/security-analysis-parameters-dialog.js +20 -20
  62. package/dist/features/parameters/security-analysis/security-analysis-parameters-form.d.ts +2 -4
  63. package/dist/features/parameters/security-analysis/security-analysis-parameters-form.js +44 -115
  64. package/dist/features/parameters/security-analysis/security-analysis-parameters-inline.js +40 -108
  65. package/dist/features/parameters/security-analysis/security-analysis-parameters-selector.js +9 -8
  66. package/dist/features/parameters/security-analysis/security-analysis-violations-hiding.js +1 -0
  67. package/dist/features/parameters/security-analysis/use-security-analysis-parameters-form.js +7 -6
  68. package/dist/features/parameters/sensi/columns-definitions.js +9 -8
  69. package/dist/features/parameters/sensi/sensitivity-analysis-parameters-dialog.js +21 -21
  70. package/dist/features/parameters/sensi/sensitivity-analysis-parameters-form.d.ts +3 -5
  71. package/dist/features/parameters/sensi/sensitivity-analysis-parameters-form.js +33 -90
  72. package/dist/features/parameters/sensi/sensitivity-analysis-parameters-inline.js +40 -99
  73. package/dist/features/parameters/sensi/sensitivity-parameters-fields.js +3 -11
  74. package/dist/features/parameters/sensi/sensitivity-parameters-selector.js +8 -7
  75. package/dist/features/parameters/sensi/utils.js +8 -7
  76. package/dist/features/parameters/short-circuit/short-circuit-general-tab-panel.js +2 -1
  77. package/dist/features/parameters/short-circuit/short-circuit-parameters-content.js +8 -7
  78. package/dist/features/parameters/short-circuit/short-circuit-parameters-dialog.js +13 -18
  79. package/dist/features/parameters/short-circuit/short-circuit-parameters-form.d.ts +1 -4
  80. package/dist/features/parameters/short-circuit/short-circuit-parameters-form.js +5 -60
  81. package/dist/features/parameters/short-circuit/short-circuit-parameters-inline.js +33 -101
  82. package/dist/features/parameters/short-circuit/short-circuit-parameters-utils.js +12 -11
  83. package/dist/features/parameters/short-circuit/short-circuit-power-electronics-tab-panel.js +10 -9
  84. package/dist/features/parameters/short-circuit/short-circuit-study-area-tab-panel.js +11 -10
  85. package/dist/features/parameters/short-circuit/use-short-circuit-parameters-form.js +1 -0
  86. package/dist/features/parameters/voltage-init/equipment-selection-parameters.js +1 -0
  87. package/dist/features/parameters/voltage-init/general-parameters.js +9 -8
  88. package/dist/features/parameters/voltage-init/voltage-init-parameters-dialog.js +13 -18
  89. package/dist/features/parameters/voltage-init/voltage-init-parameters-form.d.ts +2 -24
  90. package/dist/features/parameters/voltage-init/voltage-init-parameters-form.js +51 -105
  91. package/dist/features/parameters/voltage-init/voltage-init-parameters-inline.js +34 -90
  92. package/dist/features/process-configs/security-analysis/update-sa-process-config.js +7 -6
  93. package/dist/index.js +6 -1
  94. package/dist/translations/en/commonButtonEn.d.ts +2 -0
  95. package/dist/translations/en/commonButtonEn.js +2 -0
  96. package/dist/translations/en/parameters.d.ts +1 -0
  97. package/dist/translations/en/parameters.js +3 -1
  98. package/dist/translations/fr/commonButtonFr.d.ts +2 -0
  99. package/dist/translations/fr/commonButtonFr.js +2 -0
  100. package/dist/translations/fr/parameters.d.ts +1 -0
  101. package/dist/translations/fr/parameters.js +3 -1
  102. package/dist/utils/types/elementType.d.ts +1 -0
  103. package/dist/utils/types/elementType.js +1 -0
  104. package/package.json +1 -1
  105. package/dist/features/parameters/common/ProviderParam.d.ts +0 -7
@@ -1,10 +1,9 @@
1
- import { ReactNode } from 'react';
2
- import { FieldErrors } from 'react-hook-form';
1
+ import { UseTabsReturn } from '../common';
2
+ import { TabValues } from './dynamic-margin-calculation.type';
3
3
  import { UseComputationParametersFormReturn } from '../common/utils';
4
4
  type DynamicMarginCalculationFormProps = {
5
5
  dynamicMarginCalculationMethods: UseComputationParametersFormReturn;
6
- renderTitleFields?: () => ReactNode;
7
- renderActions?: (onSubmitError: (errors: FieldErrors) => void) => ReactNode;
6
+ useTabsReturn: UseTabsReturn<TabValues>;
8
7
  };
9
- export declare function DynamicMarginCalculationForm({ dynamicMarginCalculationMethods, renderTitleFields, renderActions, }: Readonly<DynamicMarginCalculationFormProps>): import("react").JSX.Element;
8
+ export declare function DynamicMarginCalculationForm({ dynamicMarginCalculationMethods, useTabsReturn, }: Readonly<DynamicMarginCalculationFormProps>): import("react").JSX.Element;
10
9
  export {};
@@ -1,43 +1,42 @@
1
- import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
- import { Stack, Grid2, Tabs, Tab, LinearProgress } from "@mui/material";
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Stack, Grid2, Tabs, Tab } from "@mui/material";
3
3
  import { FormattedMessage } from "react-intl";
4
- import "../../../utils/conversionUtils.js";
5
- import "../../../utils/types/equipmentType.js";
6
4
  import "@mui/icons-material";
7
- import { mergeSx } from "../../../utils/styles.js";
8
- import { TabPanel } from "../common/parameters.js";
9
5
  import "react";
6
+ import { TabPanel } from "../common/parameters.js";
7
+ import "../../../components/ui/overflowableText/OverflowableText.js";
8
+ import "../../../utils/conversionUtils.js";
9
+ import "../../../utils/types/equipmentType.js";
10
+ import "react-hook-form";
10
11
  import "localized-countries";
11
12
  import "localized-countries/data/fr";
12
13
  import "localized-countries/data/en";
13
14
  import "notistack";
14
- import "react-hook-form";
15
15
  import "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
16
- import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
17
- import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
18
- import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
19
- import "@hello-pangea/dnd";
20
- import "../../../components/ui/overflowableText/OverflowableText.js";
21
- import { ProviderParam } from "../common/ProviderParam.js";
22
16
  import "yup";
17
+ import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
23
18
  import "../../../components/ui/reactHookForm/numbers/RangeInput.js";
24
19
  import "@material-symbols/svg-400/outlined/left_panel_open.svg?react";
25
20
  import "@material-symbols/svg-400/outlined/arrows_output.svg?react";
26
21
  import "@material-symbols/svg-400/outlined/arrows_input.svg?react";
27
22
  import "@material-symbols/svg-400/outlined/left_panel_close.svg?react";
28
23
  import "@material-symbols/svg-400/outlined/add_notes.svg?react";
24
+ import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
29
25
  import "../../../components/ui/reactHookForm/expandableInput/ExpandableInput.js";
30
26
  import "../../../components/ui/reactHookForm/directory-item-input/directory-item-utils.js";
27
+ import "@hello-pangea/dnd";
28
+ import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
31
29
  import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
32
30
  import "mui-nested-menu";
33
31
  import "react-resizable-panels";
34
32
  import "react-papaparse";
35
- import { getTabStyle, parametersStyles } from "../parameters-style.js";
33
+ import "../common/parameter-layout/parameter-layout-provider.js";
34
+ import { ProviderParam } from "../common/provider-param.js";
35
+ import { parametersStyles, getTabStyle } from "../parameters-style.js";
36
36
  import "../common/widget/parameter-line-slider.js";
37
37
  import "../common/limitreductions/columns-definitions.js";
38
38
  import "../common/contingency-table/contingency-table.js";
39
39
  import "../common/contingency-table/columns-definitions.js";
40
- import { useTabs } from "../common/hook/use-tabs.js";
41
40
  import "@hookform/resolvers/yup";
42
41
  import "../../../components/composite/filter/HeaderFilterForm.js";
43
42
  import TimeDelayParameters from "./time-delay-parameters.js";
@@ -45,54 +44,34 @@ import LoadsVariationsParameters from "./loads-variations-parameters.js";
45
44
  import { TabValues } from "./dynamic-margin-calculation.type.js";
46
45
  function DynamicMarginCalculationForm({
47
46
  dynamicMarginCalculationMethods,
48
- renderTitleFields,
49
- renderActions
47
+ useTabsReturn
50
48
  }) {
51
- const { paramsLoaded, formattedProviders } = dynamicMarginCalculationMethods;
52
- const { selectedTab, tabsWithError, onTabChange, onError } = useTabs({
53
- defaultTab: Object.values(TabValues)[0],
54
- tabEnum: TabValues
55
- });
56
- return /* @__PURE__ */ jsxs(Fragment, { children: [
57
- renderTitleFields?.(),
58
- paramsLoaded ? /* @__PURE__ */ jsxs(Stack, { sx: { height: "100%" }, children: [
59
- /* @__PURE__ */ jsx(Grid2, { container: true, children: /* @__PURE__ */ jsx(ProviderParam, { options: formattedProviders }) }),
60
- /* @__PURE__ */ jsx(Grid2, { children: /* @__PURE__ */ jsxs(Tabs, { value: selectedTab, variant: "scrollable", onChange: onTabChange, "aria-label": "parameters", children: [
61
- /* @__PURE__ */ jsx(
62
- Tab,
63
- {
64
- label: /* @__PURE__ */ jsx(FormattedMessage, { id: "DynamicMarginCalculationTimeDelayTab" }),
65
- value: TabValues.TAB_TIME_DELAY,
66
- sx: getTabStyle(tabsWithError, TabValues.TAB_TIME_DELAY)
67
- }
68
- ),
69
- /* @__PURE__ */ jsx(
70
- Tab,
71
- {
72
- label: /* @__PURE__ */ jsx(FormattedMessage, { id: "DynamicMarginCalculationLoadsVariationsTab" }),
73
- value: TabValues.TAB_LOADS_VARIATIONS,
74
- sx: getTabStyle(tabsWithError, TabValues.TAB_LOADS_VARIATIONS)
75
- }
76
- )
77
- ] }) }),
78
- /* @__PURE__ */ jsxs(
79
- Grid2,
49
+ const { formattedProviders } = dynamicMarginCalculationMethods;
50
+ const { selectedTab, tabsWithError, onTabChange } = useTabsReturn;
51
+ return /* @__PURE__ */ jsxs(Stack, { sx: parametersStyles.scrollableGrid, children: [
52
+ /* @__PURE__ */ jsx(Grid2, { size: 12, children: /* @__PURE__ */ jsx(ProviderParam, { options: formattedProviders, id: "Dmc" }) }),
53
+ /* @__PURE__ */ jsx(Grid2, { size: 12, children: /* @__PURE__ */ jsxs(Tabs, { value: selectedTab, variant: "scrollable", onChange: onTabChange, "aria-label": "parameters", children: [
54
+ /* @__PURE__ */ jsx(
55
+ Tab,
80
56
  {
81
- container: true,
82
- size: "grow",
83
- sx: mergeSx(parametersStyles.scrollableGrid, {
84
- paddingTop: 0,
85
- width: "100%"
86
- }),
87
- children: [
88
- /* @__PURE__ */ jsx(TabPanel, { value: selectedTab, index: TabValues.TAB_TIME_DELAY, children: /* @__PURE__ */ jsx(TimeDelayParameters, { path: TabValues.TAB_TIME_DELAY }) }),
89
- /* @__PURE__ */ jsx(TabPanel, { value: selectedTab, index: TabValues.TAB_LOADS_VARIATIONS, children: /* @__PURE__ */ jsx(LoadsVariationsParameters, { path: TabValues.TAB_LOADS_VARIATIONS }) })
90
- ]
91
- },
92
- "dmcParameters"
57
+ label: /* @__PURE__ */ jsx(FormattedMessage, { id: "DynamicMarginCalculationTimeDelayTab" }),
58
+ value: TabValues.TAB_TIME_DELAY,
59
+ sx: getTabStyle(tabsWithError, TabValues.TAB_TIME_DELAY)
60
+ }
93
61
  ),
94
- renderActions?.(onError)
95
- ] }) : /* @__PURE__ */ jsx(LinearProgress, {})
62
+ /* @__PURE__ */ jsx(
63
+ Tab,
64
+ {
65
+ label: /* @__PURE__ */ jsx(FormattedMessage, { id: "DynamicMarginCalculationLoadsVariationsTab" }),
66
+ value: TabValues.TAB_LOADS_VARIATIONS,
67
+ sx: getTabStyle(tabsWithError, TabValues.TAB_LOADS_VARIATIONS)
68
+ }
69
+ )
70
+ ] }) }),
71
+ /* @__PURE__ */ jsxs(Grid2, { container: true, size: 12, sx: { paddingTop: 0, width: "100%", maxHeight: "100%" }, children: [
72
+ /* @__PURE__ */ jsx(TabPanel, { value: selectedTab, index: TabValues.TAB_TIME_DELAY, children: /* @__PURE__ */ jsx(TimeDelayParameters, { path: TabValues.TAB_TIME_DELAY }) }),
73
+ /* @__PURE__ */ jsx(TabPanel, { value: selectedTab, index: TabValues.TAB_LOADS_VARIATIONS, children: /* @__PURE__ */ jsx(LoadsVariationsParameters, { path: TabValues.TAB_LOADS_VARIATIONS }) })
74
+ ] }, "dmcParameters")
96
75
  ] });
97
76
  }
98
77
  export {
@@ -1,52 +1,49 @@
1
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import { Grid2 } from "@mui/material";
3
- import { useIntl, FormattedMessage } from "react-intl";
4
- import { useState, useCallback, useEffect } from "react";
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useCallback, useEffect } from "react";
5
3
  import "../../../utils/conversionUtils.js";
6
4
  import { snackWithFallback } from "../../../utils/error.js";
7
5
  import { ElementType } from "../../../utils/types/elementType.js";
8
6
  import "../../../utils/types/equipmentType.js";
9
7
  import "@mui/icons-material";
10
- import { mergeSx } from "../../../utils/styles.js";
11
8
  import { DynamicMarginCalculationForm } from "./dynamic-margin-calculation-form.js";
12
9
  import { useDynamicMarginCalculationParametersForm, toParamsInfos, toFormValues } from "./use-dynamic-margin-calculation-parameters-form.js";
13
- import { LabelledButton } from "../common/parameters.js";
14
- import { SubmitButton } from "../../../components/ui/reactHookForm/utils/SubmitButton.js";
15
- import { PopupConfirmationDialog } from "../../../components/ui/dialogs/popupConfirmationDialog/PopupConfirmationDialog.js";
16
- import { parametersStyles } from "../parameters-style.js";
17
- import { CreateParameterDialog } from "../common/parameters-creation-dialog.js";
18
- import "../../../components/ui/overflowableText/OverflowableText.js";
19
- import "react-hook-form";
10
+ import { ParameterLayout } from "../common/parameter-layout/parameter-layout.js";
11
+ import "../common/parameter-layout/parameter-layout-provider.js";
12
+ import "@mui/material";
13
+ import "react-intl";
20
14
  import { fetchDynamicMarginCalculationParameters } from "../../../services/dynamic-margin-calculation.js";
21
15
  import "localized-countries";
22
16
  import "localized-countries/data/fr";
23
17
  import "localized-countries/data/en";
24
18
  import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
19
+ import "react-hook-form";
25
20
  import { CustomFormProvider } from "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
21
+ import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
22
+ import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
23
+ import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
24
+ import "@hello-pangea/dnd";
25
+ import "../../../components/ui/overflowableText/OverflowableText.js";
26
26
  import "yup";
27
- import { DirectoryItemSelector } from "../../../components/ui/directoryItemSelector/DirectoryItemSelector.js";
28
27
  import "../../../components/ui/reactHookForm/numbers/RangeInput.js";
29
28
  import "@material-symbols/svg-400/outlined/left_panel_open.svg?react";
30
29
  import "@material-symbols/svg-400/outlined/arrows_output.svg?react";
31
30
  import "@material-symbols/svg-400/outlined/arrows_input.svg?react";
32
31
  import "@material-symbols/svg-400/outlined/left_panel_close.svg?react";
33
32
  import "@material-symbols/svg-400/outlined/add_notes.svg?react";
34
- import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
35
33
  import "../../../components/ui/reactHookForm/expandableInput/ExpandableInput.js";
36
34
  import "../../../components/ui/reactHookForm/directory-item-input/directory-item-utils.js";
37
- import "@hello-pangea/dnd";
38
- import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
39
35
  import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
40
36
  import "mui-nested-menu";
41
37
  import "react-resizable-panels";
42
38
  import "react-papaparse";
43
- import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
44
39
  import "../common/widget/parameter-line-slider.js";
45
40
  import "../common/limitreductions/columns-definitions.js";
46
41
  import "../common/contingency-table/contingency-table.js";
47
42
  import "../common/contingency-table/columns-definitions.js";
43
+ import { useTabs } from "../common/hook/use-tabs.js";
48
44
  import "@hookform/resolvers/yup";
49
45
  import "../../../components/composite/filter/HeaderFilterForm.js";
46
+ import { TabValues } from "./dynamic-margin-calculation.type.js";
50
47
  function DynamicMarginCalculationInline({
51
48
  studyUuid,
52
49
  parametersBackend,
@@ -59,23 +56,14 @@ function DynamicMarginCalculationInline({
59
56
  name: null,
60
57
  description: null
61
58
  });
62
- const intl = useIntl();
63
59
  const { snackError } = useSnackMessage();
64
- const [openCreateParameterDialog, setOpenCreateParameterDialog] = useState(false);
65
- const [openSelectParameterDialog, setOpenSelectParameterDialog] = useState(false);
66
- const [openResetConfirmation, setOpenResetConfirmation] = useState(false);
67
- const { formSchema, formMethods } = dynamicMarginCalculationMethods;
68
- const { reset, handleSubmit, getValues, formState } = formMethods;
69
- const handleResetClick = useCallback(() => {
70
- setOpenResetConfirmation(true);
71
- }, []);
72
- const handleCancelReset = useCallback(() => {
73
- setOpenResetConfirmation(false);
74
- }, []);
75
- const handleReset = useCallback(() => {
76
- resetParameters();
77
- setOpenResetConfirmation(false);
78
- }, [resetParameters]);
60
+ const { formMethods } = dynamicMarginCalculationMethods;
61
+ const { reset, getValues, formState, handleSubmit } = formMethods;
62
+ const useTabsReturn = useTabs({
63
+ defaultTab: Object.values(TabValues)[0],
64
+ tabEnum: TabValues,
65
+ errors: formState.errors
66
+ });
79
67
  const onSubmit = useCallback(
80
68
  (formData) => {
81
69
  updateParameters(toParamsInfos(formData));
@@ -85,7 +73,6 @@ function DynamicMarginCalculationInline({
85
73
  const handleLoadParameter = useCallback(
86
74
  (newParams) => {
87
75
  if (newParams?.length) {
88
- setOpenSelectParameterDialog(false);
89
76
  const parametersUuid = newParams[0].id;
90
77
  fetchDynamicMarginCalculationParameters(parametersUuid).then((_params) => {
91
78
  reset(toFormValues(_params), {
@@ -95,82 +82,33 @@ function DynamicMarginCalculationInline({
95
82
  snackWithFallback(snackError, error, { headerId: "paramsRetrievingError" });
96
83
  });
97
84
  }
98
- setOpenSelectParameterDialog(false);
99
85
  },
100
86
  [reset, snackError]
101
87
  );
102
88
  useEffect(() => {
103
89
  setHaveDirtyFields(formState.isDirty);
104
90
  }, [formState, setHaveDirtyFields]);
105
- const renderActions = (onSubmitError) => {
106
- return /* @__PURE__ */ jsxs(Fragment, { children: [
107
- /* @__PURE__ */ jsx(Grid2, { container: true, children: /* @__PURE__ */ jsxs(
108
- Grid2,
109
- {
110
- sx: mergeSx(parametersStyles.controlParametersItem, {
111
- paddingTop: 1,
112
- paddingBottom: 2,
113
- paddingLeft: 0
114
- }),
115
- children: [
116
- /* @__PURE__ */ jsx(
117
- LabelledButton,
118
- {
119
- disabled: true,
120
- callback: () => setOpenSelectParameterDialog(true),
121
- label: "settings.button.chooseSettings"
122
- }
123
- ),
124
- /* @__PURE__ */ jsx(LabelledButton, { disabled: true, callback: () => setOpenCreateParameterDialog(true), label: "save" }),
125
- /* @__PURE__ */ jsx(LabelledButton, { callback: handleResetClick, label: "resetToDefault" }),
126
- /* @__PURE__ */ jsx(SubmitButton, { variant: "outlined", onClick: handleSubmit(onSubmit, onSubmitError), children: /* @__PURE__ */ jsx(FormattedMessage, { id: "validate" }) })
127
- ]
128
- }
129
- ) }),
130
- openCreateParameterDialog && /* @__PURE__ */ jsx(
131
- CreateParameterDialog,
132
- {
133
- studyUuid,
134
- open: openCreateParameterDialog,
135
- onClose: () => setOpenCreateParameterDialog(false),
136
- parameterValues: getValues,
137
- parameterFormatter: toParamsInfos,
138
- parameterType: ElementType.DYNAMIC_MARGIN_CALCULATION_PARAMETERS
139
- }
140
- ),
141
- openSelectParameterDialog && /* @__PURE__ */ jsx(
142
- DirectoryItemSelector,
143
- {
144
- open: openSelectParameterDialog,
145
- onClose: handleLoadParameter,
146
- types: [ElementType.DYNAMIC_MARGIN_CALCULATION_PARAMETERS],
147
- title: intl.formatMessage({
148
- id: "showSelectParameterDialog"
149
- }),
150
- onlyLeaves: true,
151
- multiSelect: false,
152
- validationButtonText: intl.formatMessage({
153
- id: "validate"
154
- })
155
- }
156
- ),
157
- openResetConfirmation && /* @__PURE__ */ jsx(
158
- PopupConfirmationDialog,
91
+ return /* @__PURE__ */ jsx(CustomFormProvider, { validationSchema: dynamicMarginCalculationMethods.formSchema, ...formMethods, children: /* @__PURE__ */ jsx(
92
+ ParameterLayout,
93
+ {
94
+ title: "DynamicMarginCalculation",
95
+ isLoading: !dynamicMarginCalculationMethods.paramsLoaded,
96
+ parameterType: ElementType.DYNAMIC_MARGIN_CALCULATION_PARAMETERS,
97
+ createParameter: {
98
+ studyUuid,
99
+ parameterFormatter: toParamsInfos,
100
+ getParameterValues: getValues
101
+ },
102
+ selectParameterHandler: handleLoadParameter,
103
+ resetHandler: resetParameters,
104
+ validateHandler: handleSubmit(onSubmit, useTabsReturn.onError),
105
+ children: /* @__PURE__ */ jsx(
106
+ DynamicMarginCalculationForm,
159
107
  {
160
- message: "resetParamsConfirmation",
161
- validateButtonLabel: "validate",
162
- openConfirmationPopup: openResetConfirmation,
163
- setOpenConfirmationPopup: handleCancelReset,
164
- handlePopupConfirmation: handleReset
108
+ dynamicMarginCalculationMethods,
109
+ useTabsReturn
165
110
  }
166
111
  )
167
- ] });
168
- };
169
- return /* @__PURE__ */ jsx(CustomFormProvider, { validationSchema: formSchema, ...formMethods, children: /* @__PURE__ */ jsx(
170
- DynamicMarginCalculationForm,
171
- {
172
- dynamicMarginCalculationMethods,
173
- renderActions
174
112
  }
175
113
  ) });
176
114
  }
@@ -6,33 +6,34 @@ import "../../../utils/conversionUtils.js";
6
6
  import "../../../utils/types/equipmentType.js";
7
7
  import "react/jsx-runtime";
8
8
  import "@mui/icons-material";
9
- import { PROVIDER } from "../common/constants.js";
10
9
  import "@mui/material";
11
- import "react-intl";
12
10
  import "react";
11
+ import "react-intl";
12
+ import "../../../components/ui/overflowableText/OverflowableText.js";
13
+ import "react-hook-form";
13
14
  import "localized-countries";
14
15
  import "localized-countries/data/fr";
15
16
  import "localized-countries/data/en";
16
17
  import "notistack";
17
- import "react-hook-form";
18
18
  import "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
19
- import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
20
- import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
21
19
  import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
22
- import "@hello-pangea/dnd";
23
- import "../../../components/ui/overflowableText/OverflowableText.js";
24
20
  import "../../../components/ui/reactHookForm/numbers/RangeInput.js";
25
21
  import "@material-symbols/svg-400/outlined/left_panel_open.svg?react";
26
22
  import "@material-symbols/svg-400/outlined/arrows_output.svg?react";
27
23
  import "@material-symbols/svg-400/outlined/arrows_input.svg?react";
28
24
  import "@material-symbols/svg-400/outlined/left_panel_close.svg?react";
29
25
  import "@material-symbols/svg-400/outlined/add_notes.svg?react";
26
+ import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
30
27
  import "../../../components/ui/reactHookForm/expandableInput/ExpandableInput.js";
31
28
  import "../../../components/ui/reactHookForm/directory-item-input/directory-item-utils.js";
29
+ import "@hello-pangea/dnd";
30
+ import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
32
31
  import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
33
32
  import "mui-nested-menu";
34
33
  import "react-resizable-panels";
35
34
  import "react-papaparse";
35
+ import "../common/parameter-layout/parameter-layout-provider.js";
36
+ import { PROVIDER } from "../common/constants.js";
36
37
  import "../common/widget/parameter-line-slider.js";
37
38
  import "../common/limitreductions/columns-definitions.js";
38
39
  import "../common/contingency-table/contingency-table.js";
@@ -1,36 +1,37 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { Grid2 } from "@mui/material";
3
+ import "@mui/icons-material";
4
+ import "react";
5
+ import "react-intl";
6
+ import "../../../components/ui/overflowableText/OverflowableText.js";
3
7
  import "../../../utils/conversionUtils.js";
4
8
  import { ElementType } from "../../../utils/types/elementType.js";
5
9
  import "../../../utils/types/equipmentType.js";
6
10
  import { ParameterType } from "../../../utils/types/parameters.type.js";
7
- import "@mui/icons-material";
8
- import "react-intl";
9
- import "react";
11
+ import "react-hook-form";
10
12
  import "localized-countries";
11
13
  import "localized-countries/data/fr";
12
14
  import "localized-countries/data/en";
13
15
  import "notistack";
14
- import "react-hook-form";
15
16
  import "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
16
- import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
17
- import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
18
- import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
19
- import "@hello-pangea/dnd";
20
- import "../../../components/ui/overflowableText/OverflowableText.js";
21
17
  import "yup";
18
+ import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
22
19
  import "../../../components/ui/reactHookForm/numbers/RangeInput.js";
23
20
  import "@material-symbols/svg-400/outlined/left_panel_open.svg?react";
24
21
  import "@material-symbols/svg-400/outlined/arrows_output.svg?react";
25
22
  import "@material-symbols/svg-400/outlined/arrows_input.svg?react";
26
23
  import "@material-symbols/svg-400/outlined/left_panel_close.svg?react";
27
24
  import "@material-symbols/svg-400/outlined/add_notes.svg?react";
25
+ import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
28
26
  import "../../../components/ui/reactHookForm/expandableInput/ExpandableInput.js";
29
27
  import "../../../components/ui/reactHookForm/directory-item-input/directory-item-utils.js";
28
+ import "@hello-pangea/dnd";
29
+ import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
30
30
  import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
31
31
  import "mui-nested-menu";
32
32
  import "react-resizable-panels";
33
33
  import "react-papaparse";
34
+ import "../common/parameter-layout/parameter-layout-provider.js";
34
35
  import { ParameterLineDirectoryItemsInput } from "../common/widget/parameter-line-directory-items-input.js";
35
36
  import "../common/widget/parameter-line-slider.js";
36
37
  import "../common/limitreductions/columns-definitions.js";
@@ -1,38 +1,34 @@
1
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import { Grid2 } from "@mui/material";
3
- import { FormattedMessage } from "react-intl";
4
- import { useState, useCallback, useEffect } from "react";
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useCallback, useEffect } from "react";
5
3
  import "../../../utils/conversionUtils.js";
6
4
  import { ElementType } from "../../../utils/types/elementType.js";
7
5
  import "../../../utils/types/equipmentType.js";
8
6
  import "@mui/icons-material";
9
- import { mergeSx } from "../../../utils/styles.js";
10
7
  import { useDynamicSecurityAnalysisParametersForm, toParamsInfos } from "./use-dynamic-security-analysis-parameters-form.js";
11
- import { LabelledButton } from "../common/parameters.js";
12
- import { SubmitButton } from "../../../components/ui/reactHookForm/utils/SubmitButton.js";
13
- import { PopupConfirmationDialog } from "../../../components/ui/dialogs/popupConfirmationDialog/PopupConfirmationDialog.js";
14
- import { parametersStyles } from "../parameters-style.js";
15
- import { CreateParameterDialog } from "../common/parameters-creation-dialog.js";
16
- import "../../../components/ui/overflowableText/OverflowableText.js";
17
- import "react-hook-form";
8
+ import { ParameterLayout } from "../common/parameter-layout/parameter-layout.js";
9
+ import "../common/parameter-layout/parameter-layout-provider.js";
10
+ import "@mui/material";
11
+ import "react-intl";
18
12
  import "localized-countries";
19
13
  import "localized-countries/data/fr";
20
14
  import "localized-countries/data/en";
21
15
  import "notistack";
16
+ import "react-hook-form";
22
17
  import { CustomFormProvider } from "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
23
- import "yup";
18
+ import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
19
+ import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
24
20
  import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
21
+ import "@hello-pangea/dnd";
22
+ import "../../../components/ui/overflowableText/OverflowableText.js";
23
+ import "yup";
25
24
  import "../../../components/ui/reactHookForm/numbers/RangeInput.js";
26
25
  import "@material-symbols/svg-400/outlined/left_panel_open.svg?react";
27
26
  import "@material-symbols/svg-400/outlined/arrows_output.svg?react";
28
27
  import "@material-symbols/svg-400/outlined/arrows_input.svg?react";
29
28
  import "@material-symbols/svg-400/outlined/left_panel_close.svg?react";
30
29
  import "@material-symbols/svg-400/outlined/add_notes.svg?react";
31
- import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
32
30
  import "../../../components/ui/reactHookForm/expandableInput/ExpandableInput.js";
33
31
  import "../../../components/ui/reactHookForm/directory-item-input/directory-item-utils.js";
34
- import "@hello-pangea/dnd";
35
- import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
36
32
  import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
37
33
  import "mui-nested-menu";
38
34
  import "react-resizable-panels";
@@ -41,9 +37,11 @@ import "../common/widget/parameter-line-slider.js";
41
37
  import "../common/limitreductions/columns-definitions.js";
42
38
  import "../common/contingency-table/contingency-table.js";
43
39
  import "../common/contingency-table/columns-definitions.js";
40
+ import { useTabs } from "../common/hook/use-tabs.js";
44
41
  import "@hookform/resolvers/yup";
45
42
  import "../../../components/composite/filter/HeaderFilterForm.js";
46
43
  import { DynamicSecurityAnalysisParametersForm } from "./dynamic-security-analysis-parameters-form.js";
44
+ import { TabValues } from "./dynamic-security-analysis.type.js";
47
45
  function DynamicSecurityAnalysisInline({
48
46
  studyUuid,
49
47
  parametersBackend,
@@ -56,20 +54,13 @@ function DynamicSecurityAnalysisInline({
56
54
  name: null,
57
55
  description: null
58
56
  });
59
- const [openCreateParameterDialog, setOpenCreateParameterDialog] = useState(false);
60
- const [openResetConfirmation, setOpenResetConfirmation] = useState(false);
61
- const { formSchema, formMethods } = dynamicSecurityAnalysisMethods;
62
- const { handleSubmit, getValues, formState } = formMethods;
63
- const handleResetClick = useCallback(() => {
64
- setOpenResetConfirmation(true);
65
- }, []);
66
- const handleCancelReset = useCallback(() => {
67
- setOpenResetConfirmation(false);
68
- }, []);
69
- const handleReset = useCallback(() => {
70
- resetParameters();
71
- setOpenResetConfirmation(false);
72
- }, [resetParameters]);
57
+ const { formMethods } = dynamicSecurityAnalysisMethods;
58
+ const { getValues, formState, handleSubmit } = formMethods;
59
+ const useTabsReturn = useTabs({
60
+ defaultTab: TabValues.SCENARIO,
61
+ tabEnum: TabValues,
62
+ errors: formState.errors
63
+ });
73
64
  const onSubmit = useCallback(
74
65
  (formData) => {
75
66
  updateParameters(toParamsInfos(formData));
@@ -79,50 +70,26 @@ function DynamicSecurityAnalysisInline({
79
70
  useEffect(() => {
80
71
  setHaveDirtyFields(formState.isDirty);
81
72
  }, [formState, setHaveDirtyFields]);
82
- const renderActions = (onSubmitError) => {
83
- return /* @__PURE__ */ jsxs(Fragment, { children: [
84
- /* @__PURE__ */ jsx(Grid2, { container: true, children: /* @__PURE__ */ jsxs(
85
- Grid2,
86
- {
87
- sx: mergeSx(parametersStyles.controlParametersItem, {
88
- paddingTop: 1,
89
- paddingBottom: 2,
90
- paddingLeft: 0
91
- }),
92
- children: [
93
- /* @__PURE__ */ jsx(LabelledButton, { callback: handleResetClick, label: "resetToDefault" }),
94
- /* @__PURE__ */ jsx(SubmitButton, { variant: "outlined", onClick: handleSubmit(onSubmit, onSubmitError), children: /* @__PURE__ */ jsx(FormattedMessage, { id: "validate" }) })
95
- ]
96
- }
97
- ) }),
98
- openCreateParameterDialog && /* @__PURE__ */ jsx(
99
- CreateParameterDialog,
100
- {
101
- studyUuid,
102
- open: openCreateParameterDialog,
103
- onClose: () => setOpenCreateParameterDialog(false),
104
- parameterValues: getValues,
105
- parameterFormatter: toParamsInfos,
106
- parameterType: ElementType.DYNAMIC_SECURITY_ANALYSIS_PARAMETERS
107
- }
108
- ),
109
- openResetConfirmation && /* @__PURE__ */ jsx(
110
- PopupConfirmationDialog,
73
+ return /* @__PURE__ */ jsx(CustomFormProvider, { validationSchema: dynamicSecurityAnalysisMethods.formSchema, ...formMethods, children: /* @__PURE__ */ jsx(
74
+ ParameterLayout,
75
+ {
76
+ title: "DynamicSecurityAnalysis",
77
+ isLoading: !dynamicSecurityAnalysisMethods.paramsLoaded,
78
+ parameterType: ElementType.DYNAMIC_SECURITY_ANALYSIS_PARAMETERS,
79
+ createParameter: {
80
+ studyUuid,
81
+ getParameterValues: getValues,
82
+ parameterFormatter: toParamsInfos
83
+ },
84
+ resetHandler: resetParameters,
85
+ validateHandler: handleSubmit(onSubmit, useTabsReturn.onError),
86
+ children: /* @__PURE__ */ jsx(
87
+ DynamicSecurityAnalysisParametersForm,
111
88
  {
112
- message: "resetParamsConfirmation",
113
- validateButtonLabel: "validate",
114
- openConfirmationPopup: openResetConfirmation,
115
- setOpenConfirmationPopup: handleCancelReset,
116
- handlePopupConfirmation: handleReset
89
+ dynamicSecurityAnalysisMethods,
90
+ useTabsReturn
117
91
  }
118
92
  )
119
- ] });
120
- };
121
- return /* @__PURE__ */ jsx(CustomFormProvider, { validationSchema: formSchema, ...formMethods, children: /* @__PURE__ */ jsx(
122
- DynamicSecurityAnalysisParametersForm,
123
- {
124
- dynamicSecurityAnalysisMethods,
125
- renderActions
126
93
  }
127
94
  ) });
128
95
  }
@@ -1,10 +1,9 @@
1
- import { ReactNode } from 'react';
2
- import { FieldErrors } from 'react-hook-form';
1
+ import { UseTabsReturn } from '../common';
2
+ import { TabValues } from './dynamic-security-analysis.type';
3
3
  import { UseComputationParametersFormReturn } from '../common/utils';
4
4
  type DynamicSecurityAnalysisParametersFormProps = {
5
5
  dynamicSecurityAnalysisMethods: UseComputationParametersFormReturn;
6
- renderTitleFields?: () => ReactNode;
7
- renderActions?: (onSubmitError: (errors: FieldErrors) => void) => ReactNode;
6
+ useTabsReturn: UseTabsReturn<TabValues>;
8
7
  };
9
- export declare function DynamicSecurityAnalysisParametersForm({ dynamicSecurityAnalysisMethods, renderTitleFields, renderActions, }: Readonly<DynamicSecurityAnalysisParametersFormProps>): import("react").JSX.Element;
8
+ export declare function DynamicSecurityAnalysisParametersForm({ dynamicSecurityAnalysisMethods, useTabsReturn, }: Readonly<DynamicSecurityAnalysisParametersFormProps>): import("react").JSX.Element;
10
9
  export {};