@gridsuite/commons-ui 0.281.0 → 0.282.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 (115) hide show
  1. package/dist/components/composite/customAGGrid/custom-aggrid-filters/hooks/use-custom-aggrid-comparator-filter.js +1 -0
  2. package/dist/components/composite/customAGGrid/hooks/use-custom-aggrid-sort.js +1 -0
  3. package/dist/components/composite/reactQueryBuilder/OperatorSelector.js +1 -0
  4. package/dist/components/composite/report/QuickSearch.js +1 -0
  5. package/dist/components/composite/report/report-viewer/log-table/log-table.js +1 -1
  6. package/dist/components/ui/directoryItemSelector/DirectoryItemSelector.js +1 -0
  7. package/dist/features/index.js +12 -9
  8. package/dist/features/network-modification-table/network-modifications-table.js +1 -0
  9. package/dist/features/network-modification-table/renderers/reference-link-cell.js +1 -1
  10. package/dist/features/network-modification-table/renderers/root-network-chip-cell.js +1 -0
  11. package/dist/features/network-modification-table/renderers/switch-cell.js +1 -0
  12. package/dist/features/network-modification-table/row/drag-row-clone.js +1 -0
  13. package/dist/features/network-modification-table/use-modifications-drag-and-drop.js +1 -0
  14. package/dist/features/network-modifications/battery/modification/BatteryDialogTabs.d.ts +3 -3
  15. package/dist/features/network-modifications/battery/modification/BatteryDialogTabs.js +2 -2
  16. package/dist/features/network-modifications/battery/modification/BatteryModificationForm.d.ts +4 -1
  17. package/dist/features/network-modifications/battery/modification/BatteryModificationForm.js +7 -11
  18. package/dist/features/network-modifications/generator/modification/GeneratorDialogTabs.d.ts +3 -3
  19. package/dist/features/network-modifications/generator/modification/GeneratorDialogTabs.js +2 -2
  20. package/dist/features/network-modifications/generator/modification/GeneratorModificationForm.d.ts +4 -1
  21. package/dist/features/network-modifications/generator/modification/GeneratorModificationForm.js +4 -8
  22. package/dist/features/network-modifications/index.d.ts +0 -1
  23. package/dist/features/network-modifications/index.js +3 -3
  24. package/dist/features/network-modifications/line/common/LineDialogTabs.d.ts +3 -3
  25. package/dist/features/network-modifications/line/common/LineDialogTabs.js +2 -2
  26. package/dist/features/network-modifications/line/common/LineForm.d.ts +4 -1
  27. package/dist/features/network-modifications/line/common/LineForm.js +7 -11
  28. package/dist/features/network-modifications/line/common/line.utils.d.ts +1 -1
  29. package/dist/features/network-modifications/load/common/LoadDialogTabs.d.ts +3 -3
  30. package/dist/features/network-modifications/load/common/LoadDialogTabs.js +2 -2
  31. package/dist/features/network-modifications/load/common/LoadForm.d.ts +4 -1
  32. package/dist/features/network-modifications/load/common/LoadForm.js +7 -11
  33. package/dist/features/network-modifications/static-var-compensator/common/static-var-compensator-dialog-tabs.d.ts +3 -2
  34. package/dist/features/network-modifications/static-var-compensator/common/static-var-compensator-dialog-tabs.js +2 -2
  35. package/dist/features/network-modifications/static-var-compensator/creation/static-var-compensator-creation-form.d.ts +4 -1
  36. package/dist/features/network-modifications/static-var-compensator/creation/static-var-compensator-creation-form.js +8 -11
  37. package/dist/features/network-modifications/twoWindingsTransformer/common/TwoWindingsTransformerDialogTabs.d.ts +3 -3
  38. package/dist/features/network-modifications/twoWindingsTransformer/common/TwoWindingsTransformerDialogTabs.js +2 -2
  39. package/dist/features/network-modifications/twoWindingsTransformer/common/TwoWindingsTransformerForm.d.ts +4 -1
  40. package/dist/features/network-modifications/twoWindingsTransformer/common/TwoWindingsTransformerForm.js +7 -11
  41. package/dist/features/network-modifications/voltageLevel/creation/VoltageLevelCreationForm.d.ts +4 -7
  42. package/dist/features/network-modifications/voltageLevel/creation/VoltageLevelCreationForm.js +16 -19
  43. package/dist/features/network-modifications/voltageLevel/creation/index.d.ts +1 -1
  44. package/dist/features/network-modifications/voltageLevel/creation/index.js +3 -1
  45. package/dist/features/network-modifications/voltageLevel/index.js +3 -1
  46. package/dist/features/parameters/common/hook/index.d.ts +0 -1
  47. package/dist/features/parameters/common/hook/index.js +1 -3
  48. package/dist/features/parameters/common/index.js +1 -3
  49. package/dist/features/parameters/dynamic-margin-calculation/dynamic-margin-calculation-form.d.ts +1 -1
  50. package/dist/features/parameters/dynamic-margin-calculation/dynamic-margin-calculation-inline.js +4 -4
  51. package/dist/features/parameters/dynamic-margin-calculation/dynamic-margin-calculation.type.d.ts +1 -0
  52. package/dist/features/parameters/dynamic-margin-calculation/dynamic-margin-calculation.type.js +2 -0
  53. package/dist/features/parameters/dynamic-security-analysis/dynamic-security-analysis-inline.js +3 -3
  54. package/dist/features/parameters/dynamic-security-analysis/dynamic-security-analysis-parameters-form.d.ts +1 -1
  55. package/dist/features/parameters/dynamic-security-analysis/dynamic-security-analysis.type.d.ts +1 -0
  56. package/dist/features/parameters/dynamic-security-analysis/dynamic-security-analysis.type.js +2 -0
  57. package/dist/features/parameters/dynamic-simulation/curve/dialog/curve-preview.js +1 -0
  58. package/dist/features/parameters/dynamic-simulation/curve/dialog/equipment-filter.js +1 -0
  59. package/dist/features/parameters/dynamic-simulation/dynamic-simulation-inline.js +3 -3
  60. package/dist/features/parameters/dynamic-simulation/dynamic-simulation-parameters-form.d.ts +1 -1
  61. package/dist/features/parameters/dynamic-simulation/dynamic-simulation.type.d.ts +1 -0
  62. package/dist/features/parameters/dynamic-simulation/dynamic-simulation.type.js +2 -0
  63. package/dist/features/parameters/index.js +10 -7
  64. package/dist/features/parameters/loadflow/load-flow-parameters-inline.js +1 -1
  65. package/dist/features/parameters/loadflow/load-flow-parameters-utils.d.ts +1 -0
  66. package/dist/features/parameters/loadflow/load-flow-parameters-utils.js +2 -0
  67. package/dist/features/parameters/loadflow/use-load-flow-parameters-form.js +3 -3
  68. package/dist/features/parameters/network-visualizations/constants.d.ts +1 -0
  69. package/dist/features/parameters/network-visualizations/constants.js +2 -0
  70. package/dist/features/parameters/network-visualizations/index.js +2 -1
  71. package/dist/features/parameters/network-visualizations/network-visualizations-parameters-inline.js +1 -1
  72. package/dist/features/parameters/network-visualizations/use-network-visualizations-parameters-form.js +3 -7
  73. package/dist/features/parameters/pcc-min/pcc-min-parameters-inline.js +1 -1
  74. package/dist/features/parameters/security-analysis/constants.d.ts +1 -0
  75. package/dist/features/parameters/security-analysis/constants.js +2 -0
  76. package/dist/features/parameters/security-analysis/index.js +2 -1
  77. package/dist/features/parameters/security-analysis/security-analysis-parameters-content.js +1 -1
  78. package/dist/features/parameters/security-analysis/security-analysis-parameters-dialog.js +1 -1
  79. package/dist/features/parameters/security-analysis/use-security-analysis-parameters-form.js +3 -3
  80. package/dist/features/parameters/sensi/columns-definitions.d.ts +2 -0
  81. package/dist/features/parameters/sensi/columns-definitions.js +36 -1
  82. package/dist/features/parameters/sensi/index.js +3 -1
  83. package/dist/features/parameters/sensi/sensitivity-analysis-parameters-dialog.js +1 -1
  84. package/dist/features/parameters/sensi/sensitivity-analysis-parameters-form.js +2 -1
  85. package/dist/features/parameters/sensi/sensitivity-analysis-parameters-inline.js +4 -1
  86. package/dist/features/parameters/sensi/sensitivity-parameters-selector.d.ts +3 -1
  87. package/dist/features/parameters/sensi/sensitivity-parameters-selector.js +19 -35
  88. package/dist/features/parameters/sensi/use-sensitivity-analysis-parameters.d.ts +9 -1
  89. package/dist/features/parameters/sensi/use-sensitivity-analysis-parameters.js +29 -1
  90. package/dist/features/parameters/short-circuit/short-circuit-parameters-inline.js +1 -1
  91. package/dist/features/parameters/short-circuit/short-circuit-parameters-utils.d.ts +1 -0
  92. package/dist/features/parameters/short-circuit/short-circuit-parameters-utils.js +2 -0
  93. package/dist/features/parameters/short-circuit/use-short-circuit-parameters-form.js +3 -3
  94. package/dist/features/parameters/voltage-init/constants.d.ts +1 -0
  95. package/dist/features/parameters/voltage-init/constants.js +2 -0
  96. package/dist/features/parameters/voltage-init/index.js +2 -1
  97. package/dist/features/parameters/voltage-init/use-voltage-init-parameters-form.js +4 -8
  98. package/dist/features/parameters/voltage-init/voltage-init-parameters-inline.js +1 -1
  99. package/dist/features/process-configs/loadflow/lf-process-config-edition.js +7 -1
  100. package/dist/features/process-configs/security-analysis/sa-process-config-edition.js +7 -1
  101. package/dist/features/process-configs/shortcircuit/sc-process-config-edition.js +7 -1
  102. package/dist/features/results/loadflow/limit-violation-result.js +1 -1
  103. package/dist/features/results/shortcircuit/shortcircuit-analysis-result.js +1 -1
  104. package/dist/hooks/index.d.ts +1 -0
  105. package/dist/hooks/index.js +3 -1
  106. package/dist/hooks/use-tabs.d.ts +33 -0
  107. package/dist/hooks/use-tabs.js +55 -0
  108. package/dist/index.js +13 -8
  109. package/package.json +1 -1
  110. package/dist/features/network-modifications/hooks/index.d.ts +0 -7
  111. package/dist/features/network-modifications/hooks/index.js +0 -4
  112. package/dist/features/network-modifications/hooks/useTabsWithError.d.ts +0 -15
  113. package/dist/features/network-modifications/hooks/useTabsWithError.js +0 -28
  114. package/dist/features/parameters/common/hook/use-tabs.d.ts +0 -16
  115. package/dist/features/parameters/common/hook/use-tabs.js +0 -65
@@ -1,8 +1,10 @@
1
- import { UseFormReturn } from 'react-hook-form';
1
+ import { FieldErrors, UseFormReturn } from 'react-hook-form';
2
2
  import { ObjectSchema } from 'yup';
3
3
  import { UUID } from 'node:crypto';
4
4
  import { ComputingType, FactorsCount, SensitivityAnalysisParametersInfosEnriched, UseParametersBackendReturnProps } from '../../../utils';
5
+ import { UseTabsReturn } from '../../../hooks';
5
6
  import { BuildStatus } from '../../node';
7
+ import { SensiTabValues, SensiBranchesTabValues } from './columns-definitions';
6
8
  export interface UseSensitivityAnalysisParametersReturn {
7
9
  formMethods: UseFormReturn<any>;
8
10
  formSchema: ObjectSchema<any>;
@@ -24,6 +26,12 @@ export interface UseSensitivityAnalysisParametersReturn {
24
26
  emptyFormData: Record<string, unknown>;
25
27
  factorsCount: FactorsCount;
26
28
  resetFactorsCount: () => void;
29
+ onValidationError: (errors: FieldErrors) => void;
30
+ useSensiTabsReturn: UseSensiTabsReturn;
31
+ }
32
+ export interface UseSensiTabsReturn {
33
+ useTabsReturn: UseTabsReturn<SensiTabValues>;
34
+ useSubTabsReturn: UseTabsReturn<SensiBranchesTabValues>;
27
35
  }
28
36
  type UseSensitivityAnalysisParametersFormProps = {
29
37
  name: string;
@@ -20,6 +20,7 @@ import "localized-countries";
20
20
  import "localized-countries/data/fr";
21
21
  import "localized-countries/data/en";
22
22
  import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
23
+ import { useTabs } from "../../../hooks/use-tabs.js";
23
24
  import "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
24
25
  import "yup";
25
26
  import { getNameElementEditorEmptyFormData } from "../../../components/ui/dialogs/name-element-editor/name-element-editor-utils.js";
@@ -44,6 +45,7 @@ import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
44
45
  import "mui-nested-menu";
45
46
  import "react-resizable-panels";
46
47
  import "react-papaparse";
48
+ import { SensiTabValues, SensiBranchesTabValues, SENSI_BRANCHES_TAB_FIELDS, SENSI_TAB_FIELDS } from "./columns-definitions.js";
47
49
  const useSensitivityAnalysisParametersForm = ({
48
50
  studyUuid,
49
51
  currentNodeUuid,
@@ -86,6 +88,30 @@ const useSensitivityAnalysisParametersForm = ({
86
88
  resolver: yupResolver(formSchema)
87
89
  });
88
90
  const { reset, getValues } = formMethods;
91
+ const useTabsReturn = useTabs({
92
+ defaultTab: SensiTabValues.SensitivityBranches,
93
+ errors: formMethods.formState.errors,
94
+ tabFields: SENSI_TAB_FIELDS
95
+ });
96
+ const useSubTabsReturn = useTabs({
97
+ defaultTab: SensiBranchesTabValues.SensiInjectionsSet,
98
+ errors: formMethods.formState.errors,
99
+ tabFields: SENSI_BRANCHES_TAB_FIELDS
100
+ });
101
+ const useSensiTabsReturn = useMemo(
102
+ () => ({
103
+ useTabsReturn,
104
+ useSubTabsReturn
105
+ }),
106
+ [useTabsReturn, useSubTabsReturn]
107
+ );
108
+ const onError = useCallback(
109
+ (errors) => {
110
+ useTabsReturn.onError(errors);
111
+ useSubTabsReturn.onError(errors);
112
+ },
113
+ [useTabsReturn, useSubTabsReturn]
114
+ );
89
115
  const formattedProviders = Object.keys(providers).map((key) => ({
90
116
  id: key,
91
117
  label: providers[key]
@@ -373,7 +399,9 @@ const useSensitivityAnalysisParametersForm = ({
373
399
  onFormChanged,
374
400
  emptyFormData,
375
401
  factorsCount,
376
- resetFactorsCount
402
+ resetFactorsCount,
403
+ onValidationError: onError,
404
+ useSensiTabsReturn
377
405
  };
378
406
  };
379
407
  export {
@@ -12,10 +12,10 @@ import "localized-countries";
12
12
  import "localized-countries/data/fr";
13
13
  import "localized-countries/data/en";
14
14
  import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
15
+ import "react-hook-form";
15
16
  import { ParameterLayout } from "../common/parameter-layout/parameter-layout.js";
16
17
  import "../common/parameter-layout/parameter-layout-provider.js";
17
18
  import "../../../components/ui/overflowableText/OverflowableText.js";
18
- import "react-hook-form";
19
19
  import { CustomFormProvider } from "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
20
20
  import "yup";
21
21
  import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
@@ -13,6 +13,7 @@ export declare enum ShortCircuitParametersTabValues {
13
13
  STUDY_AREA = "StudyArea",
14
14
  POWER_ELECTRONICS = "PowerElectronics"
15
15
  }
16
+ export declare const TAB_VALUES: ShortCircuitParametersTabValues[];
16
17
  export declare const TAB_FIELDS: Record<ShortCircuitParametersTabValues, string[]>;
17
18
  export declare const getCommonShortCircuitParametersFormSchema: () => yup.ObjectSchema<{
18
19
  commonParameters: {
@@ -47,6 +47,7 @@ var ShortCircuitParametersTabValues = /* @__PURE__ */ ((ShortCircuitParametersTa
47
47
  ShortCircuitParametersTabValues2["POWER_ELECTRONICS"] = "PowerElectronics";
48
48
  return ShortCircuitParametersTabValues2;
49
49
  })(ShortCircuitParametersTabValues || {});
50
+ const TAB_VALUES = Object.values(ShortCircuitParametersTabValues);
50
51
  const TAB_FIELDS = {
51
52
  [
52
53
  "General"
@@ -313,6 +314,7 @@ const formatShortCircuitSpecificParameters = (specificParametersDescriptionForPr
313
314
  export {
314
315
  ShortCircuitParametersTabValues,
315
316
  TAB_FIELDS,
317
+ TAB_VALUES,
316
318
  formatShortCircuitSpecificParameters,
317
319
  getCommonShortCircuitParametersFormSchema,
318
320
  getDefaultShortCircuitSpecificParamsValues,
@@ -16,6 +16,7 @@ import "localized-countries";
16
16
  import "localized-countries/data/fr";
17
17
  import "localized-countries/data/en";
18
18
  import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
19
+ import { useTabs } from "../../../hooks/use-tabs.js";
19
20
  import "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
20
21
  import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
21
22
  import { DESCRIPTION, NAME } from "../../../components/ui/reactHookForm/constants.js";
@@ -41,8 +42,7 @@ import { SPECIFIC_PARAMETERS, COMMON_PARAMETERS, VERSION_PARAMETER, PROVIDER } f
41
42
  import "../common/widget/parameter-line-slider.js";
42
43
  import "../common/contingency-table/contingency-table.js";
43
44
  import "../common/contingency-table/columns-definitions.js";
44
- import { useTabs } from "../common/hook/use-tabs.js";
45
- import { getDefaultShortCircuitSpecificParamsValues, getSpecificShortCircuitParametersFormSchema, getCommonShortCircuitParametersFormSchema, getShortCircuitSpecificParametersValues, formatShortCircuitSpecificParameters, ShortCircuitParametersTabValues, TAB_FIELDS } from "./short-circuit-parameters-utils.js";
45
+ import { getDefaultShortCircuitSpecificParamsValues, getSpecificShortCircuitParametersFormSchema, getCommonShortCircuitParametersFormSchema, getShortCircuitSpecificParametersValues, formatShortCircuitSpecificParameters, ShortCircuitParametersTabValues, TAB_VALUES, TAB_FIELDS } from "./short-circuit-parameters-utils.js";
46
46
  const useShortCircuitParametersForm = ({
47
47
  parametersBackend,
48
48
  parametersUuid,
@@ -181,7 +181,7 @@ const useShortCircuitParametersForm = ({
181
181
  onError: onValidationError
182
182
  } = useTabs({
183
183
  defaultTab: ShortCircuitParametersTabValues.GENERAL,
184
- tabEnum: ShortCircuitParametersTabValues,
184
+ tabValues: TAB_VALUES,
185
185
  errors: formMethods.formState.errors,
186
186
  tabFields: TAB_FIELDS
187
187
  });
@@ -9,6 +9,7 @@ export declare enum VoltageInitTabValues {
9
9
  VOLTAGE_LIMITS = "voltageLimits",
10
10
  EQUIPMENTS_SELECTION = "equipmentSelection"
11
11
  }
12
+ export declare const VOLTAGE_INIT_TAB_VALUES: VoltageInitTabValues[];
12
13
  export declare const GENERAL = "GENERAL";
13
14
  export declare const GENERAL_APPLY_MODIFICATIONS = "GENERAL_APPLY_MODIFICATIONS";
14
15
  export declare const DEFAULT_GENERAL_APPLY_MODIFICATIONS = true;
@@ -4,6 +4,7 @@ var VoltageInitTabValues = /* @__PURE__ */ ((VoltageInitTabValues2) => {
4
4
  VoltageInitTabValues2["EQUIPMENTS_SELECTION"] = "equipmentSelection";
5
5
  return VoltageInitTabValues2;
6
6
  })(VoltageInitTabValues || {});
7
+ const VOLTAGE_INIT_TAB_VALUES = Object.values(VoltageInitTabValues);
7
8
  const GENERAL = "GENERAL";
8
9
  const GENERAL_APPLY_MODIFICATIONS = "GENERAL_APPLY_MODIFICATIONS";
9
10
  const DEFAULT_GENERAL_APPLY_MODIFICATIONS = true;
@@ -51,6 +52,7 @@ export {
51
52
  VARIABLE_Q_GENERATORS,
52
53
  VARIABLE_SHUNT_COMPENSATORS,
53
54
  VARIABLE_TRANSFORMERS,
55
+ VOLTAGE_INIT_TAB_VALUES,
54
56
  VOLTAGE_LIMITS_DEFAULT,
55
57
  VOLTAGE_LIMITS_MODIFICATION,
56
58
  VoltageInitTabValues
@@ -1,4 +1,4 @@
1
- import { DEFAULT_GENERAL_APPLY_MODIFICATIONS, DEFAULT_REACTIVE_SLACKS_THRESHOLD, DEFAULT_SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, DEFAULT_UPDATE_BUS_VOLTAGE, GENERAL, GENERAL_APPLY_MODIFICATIONS, GENERATORS_SELECTION_TYPE, HIGH_VOLTAGE_LIMIT, LEG_SIDE, LOW_VOLTAGE_LIMIT, PRIORITY, RATIO_TAP_CHANGER_POSITION, RATIO_TAP_CHANGER_TARGET_V, REACTIVE_SLACKS_THRESHOLD, SELECTION_TYPE, SHUNT_COMPENSATORS_SELECTION_TYPE, SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, TRANSFORMERS_SELECTION_TYPE, UPDATE_BUS_VOLTAGE, VARIABLE_Q_GENERATORS, VARIABLE_SHUNT_COMPENSATORS, VARIABLE_TRANSFORMERS, VOLTAGE_LIMITS_DEFAULT, VOLTAGE_LIMITS_MODIFICATION, VoltageInitTabValues } from "./constants.js";
1
+ import { DEFAULT_GENERAL_APPLY_MODIFICATIONS, DEFAULT_REACTIVE_SLACKS_THRESHOLD, DEFAULT_SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, DEFAULT_UPDATE_BUS_VOLTAGE, GENERAL, GENERAL_APPLY_MODIFICATIONS, GENERATORS_SELECTION_TYPE, HIGH_VOLTAGE_LIMIT, LEG_SIDE, LOW_VOLTAGE_LIMIT, PRIORITY, RATIO_TAP_CHANGER_POSITION, RATIO_TAP_CHANGER_TARGET_V, REACTIVE_SLACKS_THRESHOLD, SELECTION_TYPE, SHUNT_COMPENSATORS_SELECTION_TYPE, SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, TRANSFORMERS_SELECTION_TYPE, UPDATE_BUS_VOLTAGE, VARIABLE_Q_GENERATORS, VARIABLE_SHUNT_COMPENSATORS, VARIABLE_TRANSFORMERS, VOLTAGE_INIT_TAB_VALUES, VOLTAGE_LIMITS_DEFAULT, VOLTAGE_LIMITS_MODIFICATION, VoltageInitTabValues } from "./constants.js";
2
2
  import { EquipmentsSelectionType } from "./voltage-init.type.js";
3
3
  import { VoltageInitParametersEditionDialog } from "./voltage-init-parameters-dialog.js";
4
4
  import { VoltageInitParametersInLine } from "./voltage-init-parameters-inline.js";
@@ -26,6 +26,7 @@ export {
26
26
  VARIABLE_Q_GENERATORS,
27
27
  VARIABLE_SHUNT_COMPENSATORS,
28
28
  VARIABLE_TRANSFORMERS,
29
+ VOLTAGE_INIT_TAB_VALUES,
29
30
  VOLTAGE_LIMITS_DEFAULT,
30
31
  VOLTAGE_LIMITS_MODIFICATION,
31
32
  VoltageInitParametersEditionDialog,
@@ -20,6 +20,7 @@ import "localized-countries";
20
20
  import "localized-countries/data/fr";
21
21
  import "localized-countries/data/en";
22
22
  import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
23
+ import { useTabs } from "../../../hooks/use-tabs.js";
23
24
  import "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
24
25
  import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
25
26
  import { NAME, DESCRIPTION } from "../../../components/ui/reactHookForm/constants.js";
@@ -39,15 +40,10 @@ import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
39
40
  import "mui-nested-menu";
40
41
  import "react-resizable-panels";
41
42
  import "react-papaparse";
42
- import { VARIABLE_SHUNT_COMPENSATORS, SHUNT_COMPENSATORS_SELECTION_TYPE, VARIABLE_TRANSFORMERS, TRANSFORMERS_SELECTION_TYPE, VARIABLE_Q_GENERATORS, GENERATORS_SELECTION_TYPE, VOLTAGE_LIMITS_DEFAULT, HIGH_VOLTAGE_LIMIT, LOW_VOLTAGE_LIMIT, VOLTAGE_LIMITS_MODIFICATION, VoltageInitTabValues, SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, REACTIVE_SLACKS_THRESHOLD, UPDATE_BUS_VOLTAGE, GENERAL_APPLY_MODIFICATIONS, DEFAULT_SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, DEFAULT_REACTIVE_SLACKS_THRESHOLD, DEFAULT_UPDATE_BUS_VOLTAGE, DEFAULT_GENERAL_APPLY_MODIFICATIONS } from "./constants.js";
43
- import { TAB_FIELDS, fromVoltageInitParametersFormToParamValues, fromVoltageInitParamsDataToFormValues, fromStudyVoltageInitParamsDataToFormValues } from "./voltage-init-form-utils.js";
43
+ import { VARIABLE_SHUNT_COMPENSATORS, SHUNT_COMPENSATORS_SELECTION_TYPE, VARIABLE_TRANSFORMERS, TRANSFORMERS_SELECTION_TYPE, VARIABLE_Q_GENERATORS, GENERATORS_SELECTION_TYPE, VOLTAGE_LIMITS_DEFAULT, HIGH_VOLTAGE_LIMIT, LOW_VOLTAGE_LIMIT, VOLTAGE_LIMITS_MODIFICATION, VoltageInitTabValues, SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, REACTIVE_SLACKS_THRESHOLD, UPDATE_BUS_VOLTAGE, GENERAL_APPLY_MODIFICATIONS, DEFAULT_SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, DEFAULT_REACTIVE_SLACKS_THRESHOLD, DEFAULT_UPDATE_BUS_VOLTAGE, DEFAULT_GENERAL_APPLY_MODIFICATIONS, VOLTAGE_INIT_TAB_VALUES } from "./constants.js";
44
+ import { fromVoltageInitParametersFormToParamValues, fromVoltageInitParamsDataToFormValues, fromStudyVoltageInitParamsDataToFormValues, TAB_FIELDS } from "./voltage-init-form-utils.js";
44
45
  import "react-dom";
45
46
  import { SELECTED } from "../../../components/composite/dnd-table/dnd-table.type.js";
46
- import "../common/parameter-layout/parameter-layout-provider.js";
47
- import "../common/widget/parameter-line-slider.js";
48
- import "../common/contingency-table/contingency-table.js";
49
- import "../common/contingency-table/columns-definitions.js";
50
- import { useTabs } from "../common/hook/use-tabs.js";
51
47
  const useVoltageInitParametersForm = ({
52
48
  parametersUuid,
53
49
  name,
@@ -146,7 +142,7 @@ const useVoltageInitParametersForm = ({
146
142
  onError: onValidationError
147
143
  } = useTabs({
148
144
  defaultTab: VoltageInitTabValues.GENERAL,
149
- tabEnum: VoltageInitTabValues,
145
+ tabValues: VOLTAGE_INIT_TAB_VALUES,
150
146
  errors: formMethods.formState.errors,
151
147
  tabFields: TAB_FIELDS
152
148
  });
@@ -13,10 +13,10 @@ import "localized-countries";
13
13
  import "localized-countries/data/fr";
14
14
  import "localized-countries/data/en";
15
15
  import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
16
+ import "react-hook-form";
16
17
  import { ParameterLayout } from "../common/parameter-layout/parameter-layout.js";
17
18
  import "../common/parameter-layout/parameter-layout-provider.js";
18
19
  import "../../../components/ui/overflowableText/OverflowableText.js";
19
- import "react-hook-form";
20
20
  import { CustomFormProvider } from "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
21
21
  import "yup";
22
22
  import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
@@ -41,15 +41,19 @@ import "../../parameters/common/contingency-table/columns-definitions.js";
41
41
  import "@hookform/resolvers/yup";
42
42
  import "../../parameters/network-visualizations/constants.js";
43
43
  import "../../parameters/loadflow/load-flow-parameters-context.js";
44
- import "../../parameters/loadflow/load-flow-advanced-parameters.js";
44
+ import "../../parameters/loadflow/load-flow-parameters-utils.js";
45
45
  import "../../parameters/loadflow/load-flow-parameters-content.js";
46
46
  import "../../parameters/short-circuit/short-circuit-parameters-content.js";
47
+ import "../../parameters/short-circuit/short-circuit-parameters-utils.js";
48
+ import "../../parameters/voltage-init/constants.js";
47
49
  import "../../parameters/voltage-init/voltage-init-form-utils.js";
48
50
  import "react-dom";
51
+ import "../../parameters/security-analysis/constants.js";
49
52
  import "../../parameters/security-analysis/security-analysis-parameters-utils.js";
50
53
  import "../../parameters/sensi/utils.js";
51
54
  import "../../parameters/sensi/columns-definitions.js";
52
55
  import "../../parameters/dynamic-simulation/use-dynamic-simulation-parameters-form.js";
56
+ import "../../parameters/dynamic-simulation/dynamic-simulation.type.js";
53
57
  import "../../parameters/dynamic-simulation/time-delay/time-delay-parameters-utils.js";
54
58
  import "../../parameters/dynamic-simulation/time-delay/time-delay-parameters.js";
55
59
  import "../../parameters/dynamic-simulation/solver/solver-parameters-utils.js";
@@ -66,8 +70,10 @@ import "mathjs";
66
70
  import "../../parameters/dynamic-security-analysis/use-dynamic-security-analysis-parameters-form.js";
67
71
  import "../../parameters/dynamic-security-analysis/scenario-parameters.js";
68
72
  import "../../parameters/dynamic-security-analysis/contingency-parameters.js";
73
+ import "../../parameters/dynamic-security-analysis/dynamic-security-analysis.type.js";
69
74
  import "../../parameters/dynamic-margin-calculation/time-delay-parameters.js";
70
75
  import "../../parameters/dynamic-margin-calculation/loads-variations-parameters.js";
76
+ import "../../parameters/dynamic-margin-calculation/dynamic-margin-calculation.type.js";
71
77
  import "../../parameters/dynamic-margin-calculation/use-dynamic-margin-calculation-parameters-form.js";
72
78
  function LFProcessConfigEdition() {
73
79
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -41,15 +41,19 @@ import "../../parameters/common/contingency-table/columns-definitions.js";
41
41
  import "@hookform/resolvers/yup";
42
42
  import "../../parameters/network-visualizations/constants.js";
43
43
  import "../../parameters/loadflow/load-flow-parameters-context.js";
44
- import "../../parameters/loadflow/load-flow-advanced-parameters.js";
44
+ import "../../parameters/loadflow/load-flow-parameters-utils.js";
45
45
  import "../../parameters/loadflow/load-flow-parameters-content.js";
46
46
  import "../../parameters/short-circuit/short-circuit-parameters-content.js";
47
+ import "../../parameters/short-circuit/short-circuit-parameters-utils.js";
48
+ import "../../parameters/voltage-init/constants.js";
47
49
  import "../../parameters/voltage-init/voltage-init-form-utils.js";
48
50
  import "react-dom";
51
+ import "../../parameters/security-analysis/constants.js";
49
52
  import "../../parameters/security-analysis/security-analysis-parameters-utils.js";
50
53
  import "../../parameters/sensi/utils.js";
51
54
  import "../../parameters/sensi/columns-definitions.js";
52
55
  import "../../parameters/dynamic-simulation/use-dynamic-simulation-parameters-form.js";
56
+ import "../../parameters/dynamic-simulation/dynamic-simulation.type.js";
53
57
  import "../../parameters/dynamic-simulation/time-delay/time-delay-parameters-utils.js";
54
58
  import "../../parameters/dynamic-simulation/time-delay/time-delay-parameters.js";
55
59
  import "../../parameters/dynamic-simulation/solver/solver-parameters-utils.js";
@@ -66,8 +70,10 @@ import "mathjs";
66
70
  import "../../parameters/dynamic-security-analysis/use-dynamic-security-analysis-parameters-form.js";
67
71
  import "../../parameters/dynamic-security-analysis/scenario-parameters.js";
68
72
  import "../../parameters/dynamic-security-analysis/contingency-parameters.js";
73
+ import "../../parameters/dynamic-security-analysis/dynamic-security-analysis.type.js";
69
74
  import "../../parameters/dynamic-margin-calculation/time-delay-parameters.js";
70
75
  import "../../parameters/dynamic-margin-calculation/loads-variations-parameters.js";
76
+ import "../../parameters/dynamic-margin-calculation/dynamic-margin-calculation.type.js";
71
77
  import "../../parameters/dynamic-margin-calculation/use-dynamic-margin-calculation-parameters-form.js";
72
78
  function SAProcessConfigEdition() {
73
79
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -41,15 +41,19 @@ import "../../parameters/common/contingency-table/columns-definitions.js";
41
41
  import "@hookform/resolvers/yup";
42
42
  import "../../parameters/network-visualizations/constants.js";
43
43
  import "../../parameters/loadflow/load-flow-parameters-context.js";
44
- import "../../parameters/loadflow/load-flow-advanced-parameters.js";
44
+ import "../../parameters/loadflow/load-flow-parameters-utils.js";
45
45
  import "../../parameters/loadflow/load-flow-parameters-content.js";
46
46
  import "../../parameters/short-circuit/short-circuit-parameters-content.js";
47
+ import "../../parameters/short-circuit/short-circuit-parameters-utils.js";
48
+ import "../../parameters/voltage-init/constants.js";
47
49
  import "../../parameters/voltage-init/voltage-init-form-utils.js";
48
50
  import "react-dom";
51
+ import "../../parameters/security-analysis/constants.js";
49
52
  import "../../parameters/security-analysis/security-analysis-parameters-utils.js";
50
53
  import "../../parameters/sensi/utils.js";
51
54
  import "../../parameters/sensi/columns-definitions.js";
52
55
  import "../../parameters/dynamic-simulation/use-dynamic-simulation-parameters-form.js";
56
+ import "../../parameters/dynamic-simulation/dynamic-simulation.type.js";
53
57
  import "../../parameters/dynamic-simulation/time-delay/time-delay-parameters-utils.js";
54
58
  import "../../parameters/dynamic-simulation/time-delay/time-delay-parameters.js";
55
59
  import "../../parameters/dynamic-simulation/solver/solver-parameters-utils.js";
@@ -66,8 +70,10 @@ import "mathjs";
66
70
  import "../../parameters/dynamic-security-analysis/use-dynamic-security-analysis-parameters-form.js";
67
71
  import "../../parameters/dynamic-security-analysis/scenario-parameters.js";
68
72
  import "../../parameters/dynamic-security-analysis/contingency-parameters.js";
73
+ import "../../parameters/dynamic-security-analysis/dynamic-security-analysis.type.js";
69
74
  import "../../parameters/dynamic-margin-calculation/time-delay-parameters.js";
70
75
  import "../../parameters/dynamic-margin-calculation/loads-variations-parameters.js";
76
+ import "../../parameters/dynamic-margin-calculation/dynamic-margin-calculation.type.js";
71
77
  import "../../parameters/dynamic-margin-calculation/use-dynamic-margin-calculation-parameters-form.js";
72
78
  function SCProcessConfigEdition() {
73
79
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -12,9 +12,9 @@ import "localized-countries/data/fr";
12
12
  import "localized-countries/data/en";
13
13
  import "notistack";
14
14
  import { useOpenLoaderShortWait } from "../../../hooks/useOpenLoaderShortWait.js";
15
+ import "react-hook-form";
15
16
  import { RESULTS_LOADING_DELAY } from "../constants.js";
16
17
  import "../../../components/ui/overflowableText/OverflowableText.js";
17
- import "react-hook-form";
18
18
  import "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
19
19
  import "yup";
20
20
  import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
@@ -17,8 +17,8 @@ import "localized-countries/data/fr";
17
17
  import "localized-countries/data/en";
18
18
  import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
19
19
  import { useOpenLoaderShortWait } from "../../../hooks/useOpenLoaderShortWait.js";
20
- import "../../../components/ui/overflowableText/OverflowableText.js";
21
20
  import "react-hook-form";
21
+ import "../../../components/ui/overflowableText/OverflowableText.js";
22
22
  import "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
23
23
  import "yup";
24
24
  import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
@@ -18,3 +18,4 @@ export * from './useSelectAppearance';
18
18
  export * from './use-parameters-backend';
19
19
  export * from './useGetLabelEquipmentTypes';
20
20
  export * from './useOpenLoaderShortWait';
21
+ export * from './use-tabs';
@@ -13,6 +13,7 @@ import { useSelectAppearance } from "./useSelectAppearance.js";
13
13
  import { OptionalServicesStatus, useParametersBackend } from "./use-parameters-backend.js";
14
14
  import { useGetLabelEquipmentTypes } from "./useGetLabelEquipmentTypes.js";
15
15
  import { useOpenLoaderShortWait } from "./useOpenLoaderShortWait.js";
16
+ import { useTabs } from "./use-tabs.js";
16
17
  export {
17
18
  OptionalServicesStatus,
18
19
  getComputedLanguage,
@@ -31,5 +32,6 @@ export {
31
32
  useSelectAppearance,
32
33
  useSnackMessage,
33
34
  useStateBoolean,
34
- useStateNumber
35
+ useStateNumber,
36
+ useTabs
35
37
  };
@@ -0,0 +1,33 @@
1
+ import { SyntheticEvent } from 'react';
2
+ import { FieldErrors } from 'react-hook-form';
3
+ export type UseTabsProps<TTabValue extends string | number> = {
4
+ defaultTab: TTabValue;
5
+ /**
6
+ * Live form errors (usually `formState.errors`). Used to refresh the
7
+ * highlight when the user switches tabs. Navigation NEVER reacts to it:
8
+ * the only navigation trigger is `onError`.
9
+ */
10
+ errors?: FieldErrors;
11
+ /** All possible tab values. Required if `tabFields` is omitted. */
12
+ tabValues?: TTabValue[];
13
+ /**
14
+ * Maps each tab value to the react-hook-form field path(s) whose validity
15
+ * decides whether the tab is highlighted. Falls back to `[String(tabValue)]`.
16
+ */
17
+ tabFields?: Partial<Record<TTabValue, string[]>>;
18
+ };
19
+ export type UseTabsReturn<TTabValue extends string | number> = {
20
+ selectedTab: TTabValue;
21
+ setSelectedTab: (tab: TTabValue) => void;
22
+ /** Errored tabs, excluding the currently selected one. */
23
+ tabsWithError: TTabValue[];
24
+ /** Handler for MUI `<Tabs onChange>`. Refreshes the highlight. */
25
+ onTabChange: (event: SyntheticEvent<Element, Event>, newValue: TTabValue) => void;
26
+ /**
27
+ * Invalid-submit handler — pass it as the 2nd argument of
28
+ * `handleSubmit(onSubmit, onError)`. This is the ONLY place navigation happens:
29
+ * stays on the current tab if it has errors, otherwise jumps to the first errored tab.
30
+ */
31
+ onError: (errors: FieldErrors) => void;
32
+ };
33
+ export declare function useTabs<TTabValue extends string | number>({ defaultTab, errors, tabValues, tabFields, }: Readonly<UseTabsProps<TTabValue>>): UseTabsReturn<TTabValue>;
@@ -0,0 +1,55 @@
1
+ import { useState, useMemo, useCallback } from "react";
2
+ import { get } from "react-hook-form";
3
+ import { isObjectEmpty } from "../utils/functions.js";
4
+ function useTabs({
5
+ defaultTab,
6
+ errors,
7
+ tabValues,
8
+ tabFields
9
+ }) {
10
+ const [selectedTab, setSelectedTab] = useState(defaultTab);
11
+ const [tabsWithError, setTabsWithError] = useState([]);
12
+ const resolvedTabValues = useMemo(() => {
13
+ if (tabValues?.length) {
14
+ return tabValues;
15
+ }
16
+ return Object.keys(tabFields ?? {}).map((key) => {
17
+ const asNumber = Number(key);
18
+ return Number.isNaN(asNumber) ? key : asNumber;
19
+ });
20
+ }, [tabValues, tabFields]);
21
+ const getTabsWithError = useCallback(
22
+ (_errors) => resolvedTabValues.filter((tabValue) => {
23
+ const fields = tabFields?.[tabValue] ?? [String(tabValue)];
24
+ return fields.some((field) => get(_errors, field));
25
+ }),
26
+ [resolvedTabValues, tabFields]
27
+ );
28
+ const onTabChange = useCallback(
29
+ (_event, newSelectedTab) => {
30
+ setSelectedTab(newSelectedTab);
31
+ const erroredTabs = errors && !isObjectEmpty(errors) ? getTabsWithError(errors) : [];
32
+ setTabsWithError(erroredTabs.filter((errorTab) => errorTab !== newSelectedTab));
33
+ },
34
+ [errors, getTabsWithError]
35
+ );
36
+ const onError = useCallback(
37
+ (_errors) => {
38
+ if (!_errors || isObjectEmpty(_errors)) {
39
+ return;
40
+ }
41
+ const erroredTabs = getTabsWithError(_errors);
42
+ if (erroredTabs.includes(selectedTab)) {
43
+ setTabsWithError(erroredTabs.filter((errorTab) => errorTab !== selectedTab));
44
+ } else if (erroredTabs.length > 0) {
45
+ setSelectedTab(erroredTabs[0]);
46
+ setTabsWithError(erroredTabs.slice(1));
47
+ }
48
+ },
49
+ [getTabsWithError, selectedTab]
50
+ );
51
+ return { selectedTab, setSelectedTab, tabsWithError, onTabChange, onError };
52
+ }
53
+ export {
54
+ useTabs
55
+ };
package/dist/index.js CHANGED
@@ -205,9 +205,8 @@ import { LimitReductionTableRow } from "./features/parameters/common/limitreduct
205
205
  import { LimitReductionTableCell } from "./features/parameters/common/limitreductions/limit-reduction-table-cell.js";
206
206
  import { ContingencyTable } from "./features/parameters/common/contingency-table/contingency-table.js";
207
207
  import { COLUMNS_DEFINITIONS_CONTINGENCY_LISTS_INFOS, getContingencyListsInfosFormSchema, isValidContingencyRow, toFormValuesContingencyListsInfos } from "./features/parameters/common/contingency-table/columns-definitions.js";
208
- import { useTabs } from "./features/parameters/common/hook/use-tabs.js";
209
208
  import { useParametersForm } from "./features/parameters/common/hook/use-parameters-form.js";
210
- import { CENTER_LABEL, COMPONENT_LIBRARY, CUSTOM_REAL_TIME_STATE_ESTIMATION, DIAGONAL_LABEL, INTL_LINE_FLOW_MODE_OPTIONS, INTL_SUBSTATION_LAYOUT_OPTIONS, LINE_FLOW_MODE, LineFlowMode, MAP_BASE_MAP, MAP_MANUAL_REFRESH, NAD_POSITIONS_GENERATION_MODE, NAD_POSITIONS_GENERATION_MODE_LABEL, NetworkVisualizationTabValues, PARAM_CENTER_LABEL, PARAM_COMPONENT_LIBRARY, PARAM_DIAGONAL_LABEL, PARAM_LINE_FLOW_MODE, PARAM_LINE_FULL_PATH, PARAM_LINE_PARALLEL_PATH, PARAM_MAP_BASEMAP, PARAM_MAP_MANUAL_REFRESH, PARAM_NAD_POSITIONS_GENERATION_MODE, PARAM_STATE_ESTIMATION, PARAM_SUBSTATION_LAYOUT, SUBSTATION_LAYOUT } from "./features/parameters/network-visualizations/constants.js";
209
+ import { CENTER_LABEL, COMPONENT_LIBRARY, CUSTOM_REAL_TIME_STATE_ESTIMATION, DIAGONAL_LABEL, INTL_LINE_FLOW_MODE_OPTIONS, INTL_SUBSTATION_LAYOUT_OPTIONS, LINE_FLOW_MODE, LineFlowMode, MAP_BASE_MAP, MAP_MANUAL_REFRESH, NAD_POSITIONS_GENERATION_MODE, NAD_POSITIONS_GENERATION_MODE_LABEL, NV_TAB_VALUES, NetworkVisualizationTabValues, PARAM_CENTER_LABEL, PARAM_COMPONENT_LIBRARY, PARAM_DIAGONAL_LABEL, PARAM_LINE_FLOW_MODE, PARAM_LINE_FULL_PATH, PARAM_LINE_PARALLEL_PATH, PARAM_MAP_BASEMAP, PARAM_MAP_MANUAL_REFRESH, PARAM_NAD_POSITIONS_GENERATION_MODE, PARAM_STATE_ESTIMATION, PARAM_SUBSTATION_LAYOUT, SUBSTATION_LAYOUT } from "./features/parameters/network-visualizations/constants.js";
211
210
  import { MAP_BASEMAP_CARTO, MAP_BASEMAP_CARTO_NOLABEL, MAP_BASEMAP_ETALAB, MAP_BASEMAP_MAPBOX, NadPositionsGenerationMode, SubstationLayout } from "./features/parameters/network-visualizations/network-visualizations.types.js";
212
211
  import { NetworkVisualizationParametersInline } from "./features/parameters/network-visualizations/network-visualizations-parameters-inline.js";
213
212
  import { NetworkVisualizationsParametersEditionDialog } from "./features/parameters/network-visualizations/network-visualizations-parameters-dialog.js";
@@ -217,7 +216,7 @@ import { LoadFlowParametersEditionDialog } from "./features/parameters/loadflow/
217
216
  import { InitialVoltage, NODE_CLUSTER, NODE_CLUSTER_FILTER_IDS, PredefinedParameters, SHORT_CIRCUIT_INITIAL_VOLTAGE_PROFILE_MODE, SHORT_CIRCUIT_MODEL_POWER_ELECTRONICS, SHORT_CIRCUIT_ONLY_STARTED_GENERATORS_IN_CALCULATION_CLUSTER, SHORT_CIRCUIT_ONLY_STARTED_GENERATORS_OUTSIDE_CALCULATION_CLUSTER, SHORT_CIRCUIT_POWER_ELECTRONICS_CLUSTERS, SHORT_CIRCUIT_POWER_ELECTRONICS_MATERIALS, SHORT_CIRCUIT_PREDEFINED_PARAMS, SHORT_CIRCUIT_VOLTAGE_RANGES, SHORT_CIRCUIT_WITH_FEEDER_RESULT, SHORT_CIRCUIT_WITH_LOADS, SHORT_CIRCUIT_WITH_NEUTRAL_POSITION, SHORT_CIRCUIT_WITH_SHUNT_COMPENSATORS, SHORT_CIRCUIT_WITH_VSC_CONVERTER_STATIONS, STARTED_GENERATORS_IN_CALCULATION_CLUSTER_THRESHOLD, STARTED_GENERATORS_OUTSIDE_CALCULATION_CLUSTER_THRESHOLD, intlInitialVoltageProfileMode, intlPredefinedParametersOptions, onlyStartedGeneratorsOptions } from "./features/parameters/short-circuit/constants.js";
218
217
  import { ShortCircuitParametersInLine } from "./features/parameters/short-circuit/short-circuit-parameters-inline.js";
219
218
  import { ShortCircuitParametersEditionDialog } from "./features/parameters/short-circuit/short-circuit-parameters-dialog.js";
220
- import { DEFAULT_GENERAL_APPLY_MODIFICATIONS, DEFAULT_REACTIVE_SLACKS_THRESHOLD, DEFAULT_SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, DEFAULT_UPDATE_BUS_VOLTAGE, GENERAL, GENERAL_APPLY_MODIFICATIONS, GENERATORS_SELECTION_TYPE, HIGH_VOLTAGE_LIMIT, LEG_SIDE, LOW_VOLTAGE_LIMIT, PRIORITY, RATIO_TAP_CHANGER_POSITION, RATIO_TAP_CHANGER_TARGET_V, REACTIVE_SLACKS_THRESHOLD, SELECTION_TYPE, SHUNT_COMPENSATORS_SELECTION_TYPE, SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, TRANSFORMERS_SELECTION_TYPE, UPDATE_BUS_VOLTAGE, VARIABLE_Q_GENERATORS, VARIABLE_SHUNT_COMPENSATORS, VARIABLE_TRANSFORMERS, VOLTAGE_LIMITS_DEFAULT, VOLTAGE_LIMITS_MODIFICATION, VoltageInitTabValues } from "./features/parameters/voltage-init/constants.js";
219
+ import { DEFAULT_GENERAL_APPLY_MODIFICATIONS, DEFAULT_REACTIVE_SLACKS_THRESHOLD, DEFAULT_SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, DEFAULT_UPDATE_BUS_VOLTAGE, GENERAL, GENERAL_APPLY_MODIFICATIONS, GENERATORS_SELECTION_TYPE, HIGH_VOLTAGE_LIMIT, LEG_SIDE, LOW_VOLTAGE_LIMIT, PRIORITY, RATIO_TAP_CHANGER_POSITION, RATIO_TAP_CHANGER_TARGET_V, REACTIVE_SLACKS_THRESHOLD, SELECTION_TYPE, SHUNT_COMPENSATORS_SELECTION_TYPE, SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, TRANSFORMERS_SELECTION_TYPE, UPDATE_BUS_VOLTAGE, VARIABLE_Q_GENERATORS, VARIABLE_SHUNT_COMPENSATORS, VARIABLE_TRANSFORMERS, VOLTAGE_INIT_TAB_VALUES, VOLTAGE_LIMITS_DEFAULT, VOLTAGE_LIMITS_MODIFICATION, VoltageInitTabValues } from "./features/parameters/voltage-init/constants.js";
221
220
  import { EquipmentsSelectionType } from "./features/parameters/voltage-init/voltage-init.type.js";
222
221
  import { VoltageInitParametersEditionDialog } from "./features/parameters/voltage-init/voltage-init-parameters-dialog.js";
223
222
  import { VoltageInitParametersInLine } from "./features/parameters/voltage-init/voltage-init-parameters-inline.js";
@@ -225,10 +224,10 @@ import { PccMinParametersInLine } from "./features/parameters/pcc-min/pcc-min-pa
225
224
  import { PccMinParametersEditionDialog } from "./features/parameters/pcc-min/pcc-min-parameters-dialog.js";
226
225
  import { SecurityAnalysisParametersInline } from "./features/parameters/security-analysis/security-analysis-parameters-inline.js";
227
226
  import { SecurityAnalysisParametersDialog } from "./features/parameters/security-analysis/security-analysis-parameters-dialog.js";
228
- import { FLOW_PROPORTIONAL_THRESHOLD, HIGH_VOLTAGE_ABSOLUTE_THRESHOLD, HIGH_VOLTAGE_PROPORTIONAL_THRESHOLD, LOW_VOLTAGE_ABSOLUTE_THRESHOLD, LOW_VOLTAGE_PROPORTIONAL_THRESHOLD, TabValues } from "./features/parameters/security-analysis/constants.js";
227
+ import { FLOW_PROPORTIONAL_THRESHOLD, HIGH_VOLTAGE_ABSOLUTE_THRESHOLD, HIGH_VOLTAGE_PROPORTIONAL_THRESHOLD, LOW_VOLTAGE_ABSOLUTE_THRESHOLD, LOW_VOLTAGE_PROPORTIONAL_THRESHOLD, TAB_VALUES, TabValues } from "./features/parameters/security-analysis/constants.js";
229
228
  import { SensitivityAnalysisParametersInline } from "./features/parameters/sensi/sensitivity-analysis-parameters-inline.js";
230
229
  import { SensitivityAnalysisParametersDialog } from "./features/parameters/sensi/sensitivity-analysis-parameters-dialog.js";
231
- import { COLUMNS_DEFINITIONS_HVDCS, COLUMNS_DEFINITIONS_INJECTIONS, COLUMNS_DEFINITIONS_INJECTIONS_SET, COLUMNS_DEFINITIONS_NODES, COLUMNS_DEFINITIONS_PSTS, EQUIPMENTS_IN_VOLTAGE_REGULATION_TYPES, HVDC_EQUIPMENT_TYPES, INJECTIONS_EQUIPMENT_TYPES, INJECTION_DISTRIBUTION_TYPES, MONITORED_BRANCHES_EQUIPMENT_TYPES, MONITORED_VOLTAGE_LEVELS_EQUIPMENT_TYPES, PSTS_EQUIPMENT_TYPES, SENSITIVITY_TYPES, SensiBranchesTabValues, SensiTabValues } from "./features/parameters/sensi/columns-definitions.js";
230
+ import { COLUMNS_DEFINITIONS_HVDCS, COLUMNS_DEFINITIONS_INJECTIONS, COLUMNS_DEFINITIONS_INJECTIONS_SET, COLUMNS_DEFINITIONS_NODES, COLUMNS_DEFINITIONS_PSTS, EQUIPMENTS_IN_VOLTAGE_REGULATION_TYPES, HVDC_EQUIPMENT_TYPES, INJECTIONS_EQUIPMENT_TYPES, INJECTION_DISTRIBUTION_TYPES, MONITORED_BRANCHES_EQUIPMENT_TYPES, MONITORED_VOLTAGE_LEVELS_EQUIPMENT_TYPES, PSTS_EQUIPMENT_TYPES, SENSITIVITY_TYPES, SENSI_BRANCHES_TAB_FIELDS, SENSI_TAB_FIELDS, SensiBranchesTabValues, SensiTabValues } from "./features/parameters/sensi/columns-definitions.js";
232
231
  import { DynamicSimulationInline } from "./features/parameters/dynamic-simulation/dynamic-simulation-inline.js";
233
232
  import { CONTINGENCIES_LIST_INFOS, CONTINGENCIES_START_TIME, SCENARIO_DURATION } from "./features/parameters/dynamic-security-analysis/constants.js";
234
233
  import { DynamicSecurityAnalysisInline } from "./features/parameters/dynamic-security-analysis/dynamic-security-analysis-inline.js";
@@ -284,7 +283,6 @@ import { useHvdcLccDeletion } from "./features/network-modifications/equipmentDe
284
283
  import { HvdcLccDeletionSpecificForm } from "./features/network-modifications/equipmentDeletion/hvdcLccDeletion/HvdcLccDeletionSpecificForm.js";
285
284
  import { equipmentDeletionDtoToForm, equipmentDeletionEmptyFormData, equipmentDeletionFormSchema, equipmentDeletionFormToDto, newEquipmentDeletionDto } from "./features/network-modifications/equipmentDeletion/equipmentDeletion.utils.js";
286
285
  import { EquipmentDeletionForm } from "./features/network-modifications/equipmentDeletion/EquipmentDeletionForm.js";
287
- import { useTabsWithError } from "./features/network-modifications/hooks/useTabsWithError.js";
288
286
  import { SubstationCreationForm } from "./features/network-modifications/substation/creation/SubstationCreationForm.js";
289
287
  import { substationCreationDtoToForm, substationCreationEmptyFormData, substationCreationFormSchema, substationCreationFormToDto } from "./features/network-modifications/substation/creation/substationCreation.utils.js";
290
288
  import { SubstationModificationForm } from "./features/network-modifications/substation/modification/SubstationModificationForm.js";
@@ -358,7 +356,7 @@ import { fetchContingencyAndFiltersLists, fetchDynamicSecurityAnalysisProviders
358
356
  import { fetchDynamicMarginCalculationParameters, fetchDynamicMarginCalculationProviders, updateDynamicMarginCalculationParameters } from "./services/dynamic-margin-calculation.js";
359
357
  import "react-intl";
360
358
  import "@mui/icons-material";
361
- import { MAX_SECTIONS_COUNT } from "./features/network-modifications/voltageLevel/creation/voltageLevel.constants.js";
359
+ import { MAX_SECTIONS_COUNT, VOLTAGE_LEVEL_TAB_FIELDS, VoltageLevelTab } from "./features/network-modifications/voltageLevel/creation/voltageLevel.constants.js";
362
360
  import { VoltageLevelCreationForm } from "./features/network-modifications/voltageLevel/creation/VoltageLevelCreationForm.js";
363
361
  import { SWITCH_TYPE, buildNewBusbarSections, getCreateSwitchesEmptyFormData, getCreateSwitchesValidationSchema, translateSwitchKinds, voltageLevelCreationDtoToForm, voltageLevelCreationEmptyFormData, voltageLevelCreationFormSchema, voltageLevelCreationFormToDto } from "./features/network-modifications/voltageLevel/creation/voltageLevelCreation.utils.js";
364
362
  import { SwitchKind } from "./features/network-modifications/voltageLevel/creation/voltageLevelCreation.types.js";
@@ -538,6 +536,7 @@ import { useSelectAppearance } from "./hooks/useSelectAppearance.js";
538
536
  import { OptionalServicesStatus, useParametersBackend } from "./hooks/use-parameters-backend.js";
539
537
  import { useGetLabelEquipmentTypes } from "./hooks/useGetLabelEquipmentTypes.js";
540
538
  import { useOpenLoaderShortWait } from "./hooks/useOpenLoaderShortWait.js";
539
+ import { useTabs } from "./hooks/use-tabs.js";
541
540
  import { LOGOUT_ERROR, RESET_AUTHENTICATION_ROUTER_ERROR, SHOW_AUTH_INFO_LOGIN, SIGNIN_CALLBACK_ERROR, UNAUTHORIZED_USER_INFO, USER, USER_VALIDATION_ERROR, resetAuthenticationRouterError, setLoggedUser, setLogoutError, setShowAuthenticationRouterLogin, setSignInCallbackError, setUnauthorizedUserInfo, setUserValidationError } from "./redux/actions/authActions.js";
542
541
  import { getUser, getUserToken, setCommonStore, subscribeToUserState } from "./redux/commonStore.js";
543
542
  import { cardErrorBoundaryEn } from "./translations/en/cardErrorBoundaryEn.js";
@@ -1020,6 +1019,7 @@ export {
1020
1019
  NORMALIZED_PERCENTAGE,
1021
1020
  NO_ITEM_SELECTION_FOR_COPY,
1022
1021
  NUMERIC_VALUE_OR_EMPTY_FIELD,
1022
+ NV_TAB_VALUES,
1023
1023
  NadPositionsGenerationMode,
1024
1024
  NameCell,
1025
1025
  NameCellRenderer,
@@ -1172,6 +1172,8 @@ export {
1172
1172
  SELECTED,
1173
1173
  SELECTION_TYPE,
1174
1174
  SENSITIVITY_TYPES,
1175
+ SENSI_BRANCHES_TAB_FIELDS,
1176
+ SENSI_TAB_FIELDS,
1175
1177
  SHORTCIRCUIT_ANALYSIS_RESULT_SORT_STORE,
1176
1178
  SHORT_CIRCUIT_CURRENT_LIMIT_MUST_BE_GREATER_OR_EQUAL_TO_ZERO,
1177
1179
  SHORT_CIRCUIT_INITIAL_VOLTAGE_PROFILE_MODE,
@@ -1269,6 +1271,7 @@ export {
1269
1271
  TABULAR_MODIFICATION_FIELDS,
1270
1272
  TABULAR_MODIFICATION_TYPES,
1271
1273
  TABULAR_NUMBER,
1274
+ TAB_VALUES,
1272
1275
  TARGET_DEADBAND_MUST_BE_GREATER_OR_EQUAL_TO_ZERO,
1273
1276
  TEMPORARY_LIMIT_MODIFICATION_TYPE,
1274
1277
  TOPOLOGY_MODIFICATION_TABLE,
@@ -1327,8 +1330,10 @@ export {
1327
1330
  VERSION_PARAMETER,
1328
1331
  VL_TAG_MAX_SIZE,
1329
1332
  VOLTAGE_INIT_MODE,
1333
+ VOLTAGE_INIT_TAB_VALUES,
1330
1334
  VOLTAGE_LEVEL,
1331
1335
  VOLTAGE_LEVELS_FORM,
1336
+ VOLTAGE_LEVEL_TAB_FIELDS,
1332
1337
  VOLTAGE_LIMITS_DEFAULT,
1333
1338
  VOLTAGE_LIMITS_MODIFICATION,
1334
1339
  VOLTAGE_REGULATION_MODES,
@@ -1344,6 +1349,7 @@ export {
1344
1349
  VoltageLevelCreationForm,
1345
1350
  VoltageLevelModificationForm,
1346
1351
  VoltageLevelSectionCreationForm,
1352
+ VoltageLevelTab,
1347
1353
  VoltageLevelTopologyModificationForm,
1348
1354
  VoltageRegulationForm,
1349
1355
  VoltageUnitIcon,
@@ -2024,7 +2030,6 @@ export {
2024
2030
  useStateBoolean,
2025
2031
  useStateNumber,
2026
2032
  useTabs,
2027
- useTabsWithError,
2028
2033
  useUniqueNameValidationEn,
2029
2034
  useUniqueNameValidationFr,
2030
2035
  useValid,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gridsuite/commons-ui",
3
- "version": "0.281.0",
3
+ "version": "0.282.0",
4
4
  "description": "common react components for gridsuite applications",
5
5
  "author": "gridsuite team",
6
6
  "homepage": "https://github.com/gridsuite",
@@ -1,7 +0,0 @@
1
- /**
2
- * Copyright (c) 2026, RTE (http://www.rte-france.com)
3
- * This Source Code Form is subject to the terms of the Mozilla Public
4
- * License, v. 2.0. If a copy of the MPL was not distributed with this
5
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
- */
7
- export * from './useTabsWithError';
@@ -1,4 +0,0 @@
1
- import { useTabsWithError } from "./useTabsWithError.js";
2
- export {
3
- useTabsWithError
4
- };