@gridsuite/commons-ui 0.157.0 → 0.158.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 (87) hide show
  1. package/dist/components/checkBoxList/CheckBoxListItem.js +1 -1
  2. package/dist/components/checkBoxList/CheckBoxListItemContent.js +1 -1
  3. package/dist/components/checkBoxList/DraggableCheckBoxListItem.js +1 -1
  4. package/dist/components/checkBoxList/DraggableCheckBoxListItemContent.js +1 -1
  5. package/dist/components/csvDownloader/use-csv-export.js +1 -1
  6. package/dist/components/customAGGrid/cell-renderers.js +1 -1
  7. package/dist/components/customAGGrid/separatorCellRenderer.js +1 -1
  8. package/dist/components/dialogs/elementSaveDialog/ElementSaveDialog.js +1 -1
  9. package/dist/components/directoryItemSelector/utils.js +2 -2
  10. package/dist/components/dnd-table/dnd-table-add-rows-dialog.js +1 -1
  11. package/dist/components/filter/FilterForm.js +1 -1
  12. package/dist/components/filter/HeaderFilterForm.js +1 -1
  13. package/dist/components/filter/expert/ExpertFilterForm.js +1 -1
  14. package/dist/components/filter/expert/expertFilterConstants.js +1 -1
  15. package/dist/components/filter/utils/filterFormUtils.js +1 -1
  16. package/dist/components/inputs/reactHookForm/DirectoryItemsInput.js +1 -1
  17. package/dist/components/inputs/reactHookForm/OverflowableChipWithHelperText.js +1 -1
  18. package/dist/components/inputs/reactHookForm/agGridTable/CustomAgGridTable.js +1 -1
  19. package/dist/components/inputs/reactHookForm/agGridTable/csvUploader/CsvUploader.js +1 -1
  20. package/dist/components/inputs/reactHookForm/chip-items-input.js +1 -1
  21. package/dist/components/inputs/reactQueryBuilder/CountryValueEditor.js +1 -1
  22. package/dist/components/inputs/reactQueryBuilder/ElementValueEditor.js +1 -1
  23. package/dist/components/inputs/reactQueryBuilder/OperatorSelector.js +1 -1
  24. package/dist/components/overflowableText/OverflowableText.js +1 -1
  25. package/dist/components/parameters/common/ProviderParam.js +1 -1
  26. package/dist/components/parameters/common/computing-type.d.ts +1 -0
  27. package/dist/components/parameters/common/computing-type.js +3 -0
  28. package/dist/components/parameters/common/limitreductions/limit-reduction-table-cell.js +1 -1
  29. package/dist/components/parameters/common/limitreductions/limit-reductions-table-form.js +1 -1
  30. package/dist/components/parameters/common/name-element-editor/name-element-editor-form.js +1 -1
  31. package/dist/components/parameters/common/name-element-editor/name-element-editor-utils.js +1 -1
  32. package/dist/components/parameters/common/utils.js +2 -2
  33. package/dist/components/parameters/common/voltage-level-table/custom-voltage-level-table-cell.js +1 -1
  34. package/dist/components/parameters/common/widget/parameter-float.js +1 -1
  35. package/dist/components/parameters/common/widget/parameter-line-directory-items-input.js +1 -1
  36. package/dist/components/parameters/common/widget/parameter-line-slider.js +1 -1
  37. package/dist/components/parameters/loadflow/load-flow-general-parameters.js +1 -1
  38. package/dist/components/parameters/loadflow/load-flow-parameter-field.js +1 -1
  39. package/dist/components/parameters/loadflow/load-flow-parameters-content.js +1 -1
  40. package/dist/components/parameters/loadflow/load-flow-parameters-dialog.js +2 -2
  41. package/dist/components/parameters/loadflow/load-flow-parameters-form.js +1 -1
  42. package/dist/components/parameters/loadflow/load-flow-parameters-header.js +1 -1
  43. package/dist/components/parameters/loadflow/load-flow-parameters-utils.js +1 -1
  44. package/dist/components/parameters/network-visualizations/network-area-diagram-parameters.js +1 -1
  45. package/dist/components/parameters/network-visualizations/network-visualizations-form.js +1 -1
  46. package/dist/components/parameters/network-visualizations/network-visualizations-parameters-dialog.js +1 -1
  47. package/dist/components/parameters/network-visualizations/single-line-diagram-parameters.js +1 -1
  48. package/dist/components/parameters/pcc-min/pcc-min-form-utils.js +1 -1
  49. package/dist/components/parameters/pcc-min/pcc-min-parameters-dialog.js +1 -1
  50. package/dist/components/parameters/pcc-min/pcc-min-parameters-form.js +1 -1
  51. package/dist/components/parameters/security-analysis/security-analysis-parameters-dialog.js +1 -1
  52. package/dist/components/parameters/security-analysis/security-analysis-parameters-form.js +2 -2
  53. package/dist/components/parameters/security-analysis/security-analysis-parameters-selector.js +1 -1
  54. package/dist/components/parameters/security-analysis/security-analysis-violations-hiding.js +1 -1
  55. package/dist/components/parameters/sensi/columns-definitions.js +2 -2
  56. package/dist/components/parameters/sensi/sensitivity-Flow-parameters.js +1 -1
  57. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-dialog.js +1 -1
  58. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-form.js +1 -1
  59. package/dist/components/parameters/sensi/sensitivity-parameters-selector.js +1 -1
  60. package/dist/components/parameters/sensi/table-cell.js +1 -1
  61. package/dist/components/parameters/sensi/utils.js +2 -2
  62. package/dist/components/parameters/short-circuit/short-circuit-icc-material-table-cell.js +1 -1
  63. package/dist/components/parameters/short-circuit/short-circuit-parameters-dialog.js +1 -1
  64. package/dist/components/parameters/short-circuit/short-circuit-parameters-form.js +1 -1
  65. package/dist/components/parameters/short-circuit/short-circuit-parameters-inline.js +32 -0
  66. package/dist/components/parameters/short-circuit/short-circuit-parameters-utils.js +1 -1
  67. package/dist/components/parameters/voltage-init/equipment-selection-parameters.js +1 -1
  68. package/dist/components/parameters/voltage-init/general-parameters.js +1 -1
  69. package/dist/components/parameters/voltage-init/voltage-init-form-utils.js +1 -1
  70. package/dist/components/parameters/voltage-init/voltage-init-parameters-dialog.js +1 -1
  71. package/dist/components/parameters/voltage-init/voltage-init-parameters-form.js +1 -1
  72. package/dist/hooks/use-unique-name-validation.js +1 -1
  73. package/dist/hooks/useConfidentialityWarning.js +1 -1
  74. package/dist/hooks/useModificationLabelComputer.js +1 -1
  75. package/dist/index.js +4 -4
  76. package/dist/services/config.js +1 -1
  77. package/dist/services/index.js +2 -2
  78. package/dist/services/utils.d.ts +7 -2
  79. package/dist/services/utils.js +42 -37
  80. package/dist/utils/error.js +2 -5
  81. package/dist/utils/index.js +2 -2
  82. package/dist/utils/types/CustomError.d.ts +2 -5
  83. package/dist/utils/types/CustomError.js +3 -14
  84. package/dist/utils/types/ProblemDetailError.d.ts +5 -2
  85. package/dist/utils/types/ProblemDetailError.js +14 -3
  86. package/dist/utils/types/index.js +2 -2
  87. package/package.json +1 -1
@@ -3,9 +3,9 @@ import { FormattedMessage } from "react-intl";
3
3
  import { Grid, Box, LinearProgress } from "@mui/material";
4
4
  import "../../overflowableText/OverflowableText.js";
5
5
  import "../../../utils/conversionUtils.js";
6
- import "../../../utils/types/equipmentType.js";
7
6
  import "@mui/icons-material";
8
7
  import { mergeSx } from "../../../utils/styles.js";
8
+ import "../../../utils/types/equipmentType.js";
9
9
  import "../../../utils/yupConfig.js";
10
10
  import "react";
11
11
  import "react-hook-form";
@@ -60,7 +60,7 @@ function SecurityAnalysisParametersForm({
60
60
  {
61
61
  validationSchema: securityAnalysisMethods.formSchema,
62
62
  ...securityAnalysisMethods.formMethods,
63
- children: /* @__PURE__ */ jsx(Grid, { item: true, sx: { height: "100%" }, xl: 9, lg: 11, md: 12, children: /* @__PURE__ */ jsx(
63
+ children: /* @__PURE__ */ jsx(Grid, { item: true, sx: { height: "100%" }, children: /* @__PURE__ */ jsx(
64
64
  Box,
65
65
  {
66
66
  sx: {
@@ -4,8 +4,8 @@ import { FormattedMessage } from "react-intl";
4
4
  import { Grid, Tabs, Tab } from "@mui/material";
5
5
  import { TabPanel } from "../common/parameters.js";
6
6
  import "../../../utils/conversionUtils.js";
7
- import "../../../utils/types/equipmentType.js";
8
7
  import "@mui/icons-material";
8
+ import "../../../utils/types/equipmentType.js";
9
9
  import "../../../utils/yupConfig.js";
10
10
  import "localized-countries";
11
11
  import "localized-countries/data/fr";
@@ -129,7 +129,7 @@ function ViolationsHidingParameters() {
129
129
  )
130
130
  ] }) }),
131
131
  fieldsToShow?.map((item) => {
132
- return /* @__PURE__ */ jsx(Grid, { item: true, xs: 16, xl: 6.25, children: /* @__PURE__ */ jsx(SecurityAnalysisFields, { ...item }) }, item.label);
132
+ return /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(SecurityAnalysisFields, { ...item }) }, item.label);
133
133
  })
134
134
  ] });
135
135
  }
@@ -1,9 +1,9 @@
1
1
  import { MONITORED_BRANCHES, INJECTIONS, DISTRIBUTION_TYPE, CONTINGENCIES, ACTIVATED, SENSITIVITY_TYPE, HVDC_LINES, PSTS, SUPERVISED_VOLTAGE_LEVELS, EQUIPMENTS_IN_VOLTAGE_REGULATION, PARAMETER_SENSI_INJECTIONS_SET, PARAMETER_SENSI_INJECTION, PARAMETER_SENSI_HVDC, PARAMETER_SENSI_PST, PARAMETER_SENSI_NODES } from "./constants.js";
2
2
  import "../../../utils/conversionUtils.js";
3
- import { ElementType } from "../../../utils/types/elementType.js";
4
- import { EquipmentType } from "../../../utils/types/equipmentType.js";
5
3
  import "react/jsx-runtime";
6
4
  import "@mui/icons-material";
5
+ import { ElementType } from "../../../utils/types/elementType.js";
6
+ import { EquipmentType } from "../../../utils/types/equipmentType.js";
7
7
  import "../../../utils/yupConfig.js";
8
8
  const MONITORED_BRANCHES_EQUIPMENT_TYPES = [EquipmentType.LINE, EquipmentType.TWO_WINDINGS_TRANSFORMER];
9
9
  const INJECTION_DISTRIBUTION_TYPES = [
@@ -4,8 +4,8 @@ import { FormattedMessage } from "react-intl";
4
4
  import { FLOW_FLOW_SENSITIVITY_VALUE_THRESHOLD, ANGLE_FLOW_SENSITIVITY_VALUE_THRESHOLD, FLOW_VOLTAGE_SENSITIVITY_VALUE_THRESHOLD } from "./constants.js";
5
5
  import "../../overflowableText/OverflowableText.js";
6
6
  import "../../../utils/conversionUtils.js";
7
- import "../../../utils/types/equipmentType.js";
8
7
  import "@mui/icons-material";
8
+ import "../../../utils/types/equipmentType.js";
9
9
  import "../../../utils/yupConfig.js";
10
10
  import "react";
11
11
  import "react-hook-form";
@@ -4,9 +4,9 @@ import "@mui/material";
4
4
  import "react-intl";
5
5
  import "react";
6
6
  import "../../../utils/conversionUtils.js";
7
+ import "@mui/icons-material";
7
8
  import { ElementType } from "../../../utils/types/elementType.js";
8
9
  import "../../../utils/types/equipmentType.js";
9
- import "@mui/icons-material";
10
10
  import "../../../utils/yupConfig.js";
11
11
  import "localized-countries";
12
12
  import "localized-countries/data/fr";
@@ -4,9 +4,9 @@ import { FormattedMessage } from "react-intl";
4
4
  import { parametersStyles } from "../parameters-style.js";
5
5
  import "../../overflowableText/OverflowableText.js";
6
6
  import "../../../utils/conversionUtils.js";
7
- import "../../../utils/types/equipmentType.js";
8
7
  import "@mui/icons-material";
9
8
  import { mergeSx } from "../../../utils/styles.js";
9
+ import "../../../utils/types/equipmentType.js";
10
10
  import "../../../utils/yupConfig.js";
11
11
  import "react";
12
12
  import "react-hook-form";
@@ -6,8 +6,8 @@ import { SensiTabValues, SensiBranchesTabValues, SensiInjectionsSet, SensiInject
6
6
  import { SensitivityTable } from "./sensitivity-table.js";
7
7
  import { TabPanel } from "../common/parameters.js";
8
8
  import "../../../utils/conversionUtils.js";
9
- import "../../../utils/types/equipmentType.js";
10
9
  import "@mui/icons-material";
10
+ import "../../../utils/types/equipmentType.js";
11
11
  import "../../../utils/yupConfig.js";
12
12
  import "localized-countries";
13
13
  import "localized-countries/data/fr";
@@ -3,8 +3,8 @@ import { TableCell } from "@mui/material";
3
3
  import "react-intl";
4
4
  import "../../overflowableText/OverflowableText.js";
5
5
  import "../../../utils/conversionUtils.js";
6
- import "../../../utils/types/equipmentType.js";
7
6
  import "@mui/icons-material";
7
+ import "../../../utils/types/equipmentType.js";
8
8
  import "../../../utils/yupConfig.js";
9
9
  import "react";
10
10
  import "react-hook-form";
@@ -2,10 +2,10 @@ import "../../../utils/yupConfig.js";
2
2
  import { FLOW_VOLTAGE_SENSITIVITY_VALUE_THRESHOLD, ANGLE_FLOW_SENSITIVITY_VALUE_THRESHOLD, FLOW_FLOW_SENSITIVITY_VALUE_THRESHOLD, PARAMETER_SENSI_NODES, EQUIPMENTS_IN_VOLTAGE_REGULATION, SUPERVISED_VOLTAGE_LEVELS, PARAMETER_SENSI_PST, PSTS, ACTIVATED, PARAMETER_SENSI_HVDC, HVDC_LINES, PARAMETER_SENSI_INJECTION, INJECTIONS, PARAMETER_SENSI_INJECTIONS_SET, DISTRIBUTION_TYPE, CONTINGENCIES, SENSITIVITY_TYPE, MONITORED_BRANCHES, CONTAINER_NAME, CONTAINER_ID } from "./constants.js";
3
3
  import { ID } from "../../../utils/constants/filterConstant.js";
4
4
  import "../../../utils/conversionUtils.js";
5
- import "../../../utils/types/equipmentType.js";
6
- import { DistributionType, SensitivityType } from "../../../utils/types/sensitivity-analysis.type.js";
7
5
  import "react/jsx-runtime";
8
6
  import "@mui/icons-material";
7
+ import "../../../utils/types/equipmentType.js";
8
+ import { DistributionType, SensitivityType } from "../../../utils/types/sensitivity-analysis.type.js";
9
9
  import { PROVIDER } from "../common/constant.js";
10
10
  import "@mui/material";
11
11
  import "react-intl";
@@ -3,8 +3,8 @@ import { TableCell } from "@mui/material";
3
3
  import "react-intl";
4
4
  import "../../overflowableText/OverflowableText.js";
5
5
  import "../../../utils/conversionUtils.js";
6
- import "../../../utils/types/equipmentType.js";
7
6
  import "@mui/icons-material";
7
+ import "../../../utils/types/equipmentType.js";
8
8
  import "../../../utils/yupConfig.js";
9
9
  import "react";
10
10
  import "react-hook-form";
@@ -3,9 +3,9 @@ import { CustomMuiDialog } from "../../dialogs/customMuiDialog/CustomMuiDialog.j
3
3
  import "../../dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
4
4
  import "../../dialogs/elementSaveDialog/ElementSaveDialog.js";
5
5
  import "../../../utils/conversionUtils.js";
6
+ import "@mui/icons-material";
6
7
  import { ElementType } from "../../../utils/types/elementType.js";
7
8
  import "../../../utils/types/equipmentType.js";
8
- import "@mui/icons-material";
9
9
  import "../../../utils/yupConfig.js";
10
10
  import { getShortCircuitSpecificParametersDescription, updateShortCircuitParameters, fetchShortCircuitParameters } from "../../../services/short-circuit-analysis.js";
11
11
  import "react";
@@ -3,8 +3,8 @@ import { Box, Grid, LinearProgress } from "@mui/material";
3
3
  import "react-intl";
4
4
  import "../../overflowableText/OverflowableText.js";
5
5
  import "../../../utils/conversionUtils.js";
6
- import "../../../utils/types/equipmentType.js";
7
6
  import "@mui/icons-material";
7
+ import "../../../utils/types/equipmentType.js";
8
8
  import "../../../utils/yupConfig.js";
9
9
  import "react";
10
10
  import "react-hook-form";
@@ -25,6 +25,7 @@ import "ag-grid-community";
25
25
  import "react-papaparse";
26
26
  import "react-csv-downloader";
27
27
  import "../../inputs/reactHookForm/numbers/RangeInput.js";
28
+ import { PopupConfirmationDialog } from "../../dialogs/popupConfirmationDialog/PopupConfirmationDialog.js";
28
29
  import "@react-querybuilder/material";
29
30
  import "../../filter/expert/expertFilterConstants.js";
30
31
  import "../../inputs/reactQueryBuilder/CustomReactQueryBuilder.js";
@@ -37,6 +38,8 @@ import "../common/widget/parameter-line-slider.js";
37
38
  import "../common/limitreductions/columns-definitions.js";
38
39
  import { ShortCircuitParametersForm } from "./short-circuit-parameters-form.js";
39
40
  import { useShortCircuitParametersForm } from "./use-short-circuit-parameters-form.js";
41
+ import "../../dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
42
+ import "../../dialogs/elementSaveDialog/ElementSaveDialog.js";
40
43
  function ShortCircuitParametersInLine({
41
44
  studyUuid,
42
45
  setHaveDirtyFields,
@@ -52,6 +55,9 @@ function ShortCircuitParametersInLine({
52
55
  const intl = useIntl();
53
56
  const [openCreateParameterDialog, setOpenCreateParameterDialog] = useState(false);
54
57
  const [openSelectParameterDialog, setOpenSelectParameterDialog] = useState(false);
58
+ const [, , , , , , , , resetParameters, ,] = parametersBackend;
59
+ const [openResetConfirmation, setOpenResetConfirmation] = useState(false);
60
+ const [pendingResetAction, setPendingResetAction] = useState(null);
55
61
  const { snackError } = useSnackMessage();
56
62
  const { formMethods } = shortCircuitMethods;
57
63
  const { getValues, formState, handleSubmit, reset } = formMethods;
@@ -72,6 +78,21 @@ function ShortCircuitParametersInLine({
72
78
  },
73
79
  [snackError, shortCircuitMethods, reset]
74
80
  );
81
+ const executeResetAction = useCallback(() => {
82
+ if (pendingResetAction === "all" || pendingResetAction === "parameters") {
83
+ resetParameters();
84
+ }
85
+ setOpenResetConfirmation(false);
86
+ setPendingResetAction(null);
87
+ }, [pendingResetAction, resetParameters]);
88
+ const handleResetAllClick = useCallback(() => {
89
+ setPendingResetAction("all");
90
+ setOpenResetConfirmation(true);
91
+ }, []);
92
+ const handleCancelReset = useCallback(() => {
93
+ setOpenResetConfirmation(false);
94
+ setPendingResetAction(null);
95
+ }, []);
75
96
  useEffect(() => {
76
97
  setHaveDirtyFields(!!Object.keys(formState.dirtyFields).length);
77
98
  }, [formState, setHaveDirtyFields]);
@@ -91,6 +112,7 @@ function ShortCircuitParametersInLine({
91
112
  }
92
113
  ),
93
114
  /* @__PURE__ */ jsx(LabelledButton, { callback: () => setOpenCreateParameterDialog(true), label: "save" }),
115
+ /* @__PURE__ */ jsx(LabelledButton, { callback: handleResetAllClick, label: "resetToDefault" }),
94
116
  /* @__PURE__ */ jsx(
95
117
  SubmitButton,
96
118
  {
@@ -128,6 +150,16 @@ function ShortCircuitParametersInLine({
128
150
  id: "validate"
129
151
  })
130
152
  }
153
+ ),
154
+ openResetConfirmation && /* @__PURE__ */ jsx(
155
+ PopupConfirmationDialog,
156
+ {
157
+ message: "resetParamsConfirmation",
158
+ validateButtonLabel: "validate",
159
+ openConfirmationPopup: openResetConfirmation,
160
+ setOpenConfirmationPopup: handleCancelReset,
161
+ handlePopupConfirmation: executeResetAction
162
+ }
131
163
  )
132
164
  ] });
133
165
  }
@@ -6,8 +6,8 @@ import "@mui/material";
6
6
  import "react-intl";
7
7
  import "react";
8
8
  import "../../../utils/conversionUtils.js";
9
- import "../../../utils/types/equipmentType.js";
10
9
  import "@mui/icons-material";
10
+ import "../../../utils/types/equipmentType.js";
11
11
  import "localized-countries";
12
12
  import "localized-countries/data/fr";
13
13
  import "localized-countries/data/en";
@@ -3,9 +3,9 @@ import { Grid, Alert } from "@mui/material";
3
3
  import { FormattedMessage } from "react-intl";
4
4
  import "../../overflowableText/OverflowableText.js";
5
5
  import "../../../utils/conversionUtils.js";
6
+ import "@mui/icons-material";
6
7
  import { ElementType } from "../../../utils/types/elementType.js";
7
8
  import { EquipmentType } from "../../../utils/types/equipmentType.js";
8
- import "@mui/icons-material";
9
9
  import "../../../utils/yupConfig.js";
10
10
  import "react";
11
11
  import "react-hook-form";
@@ -8,8 +8,8 @@ import { ReactivePowerAdornment } from "../common/constant.js";
8
8
  import { LineSeparator } from "../common/line-separator.js";
9
9
  import { parametersStyles } from "../parameters-style.js";
10
10
  import "../../../utils/conversionUtils.js";
11
- import "../../../utils/types/equipmentType.js";
12
11
  import "@mui/icons-material";
12
+ import "../../../utils/types/equipmentType.js";
13
13
  import "../../../utils/yupConfig.js";
14
14
  import "localized-countries";
15
15
  import "localized-countries/data/fr";
@@ -6,8 +6,8 @@ import "@mui/material";
6
6
  import "../../overflowableText/OverflowableText.js";
7
7
  import { FILTER_NAME, FILTER_ID, ID, FILTERS } from "../../../utils/constants/filterConstant.js";
8
8
  import "../../../utils/conversionUtils.js";
9
- import "../../../utils/types/equipmentType.js";
10
9
  import "@mui/icons-material";
10
+ import "../../../utils/types/equipmentType.js";
11
11
  import "../../../utils/yupConfig.js";
12
12
  import "react";
13
13
  import "react-hook-form";
@@ -3,9 +3,9 @@ import { CustomMuiDialog } from "../../dialogs/customMuiDialog/CustomMuiDialog.j
3
3
  import "../../dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
4
4
  import "../../dialogs/elementSaveDialog/ElementSaveDialog.js";
5
5
  import "../../../utils/conversionUtils.js";
6
+ import "@mui/icons-material";
6
7
  import { ElementType } from "../../../utils/types/elementType.js";
7
8
  import "../../../utils/types/equipmentType.js";
8
- import "@mui/icons-material";
9
9
  import "../../../utils/yupConfig.js";
10
10
  import "react";
11
11
  import "@mui/material";
@@ -4,8 +4,8 @@ import { FormattedMessage } from "react-intl";
4
4
  import { getTabIndicatorStyle, getTabStyle } from "../parameters-style.js";
5
5
  import "../../overflowableText/OverflowableText.js";
6
6
  import "../../../utils/conversionUtils.js";
7
- import "../../../utils/types/equipmentType.js";
8
7
  import "@mui/icons-material";
8
+ import "../../../utils/types/equipmentType.js";
9
9
  import "../../../utils/yupConfig.js";
10
10
  import "react";
11
11
  import "react-hook-form";
@@ -2,9 +2,9 @@ import { useCallback, useEffect } from "react";
2
2
  import { useFormContext, useController } from "react-hook-form";
3
3
  import { FieldConstants } from "../utils/constants/fieldConstants.js";
4
4
  import "../utils/conversionUtils.js";
5
- import "../utils/types/equipmentType.js";
6
5
  import "react/jsx-runtime";
7
6
  import "@mui/icons-material";
7
+ import "../utils/types/equipmentType.js";
8
8
  import "../utils/yupConfig.js";
9
9
  import { useDebounce } from "./useDebounce.js";
10
10
  import { elementAlreadyExists } from "../services/directory.js";
@@ -1,9 +1,9 @@
1
1
  import { useState, useEffect } from "react";
2
2
  import { fetchEnv } from "../services/appsMetadata.js";
3
3
  import "../utils/conversionUtils.js";
4
- import "../utils/types/equipmentType.js";
5
4
  import "react/jsx-runtime";
6
5
  import "@mui/icons-material";
6
+ import "../utils/types/equipmentType.js";
7
7
  import "../utils/yupConfig.js";
8
8
  const useConfidentialityWarning = () => {
9
9
  const [confidentialityWarningKey, setConfidentialityWarningKey] = useState();
@@ -2,9 +2,9 @@ import { jsx } from "react/jsx-runtime";
2
2
  import { useIntl } from "react-intl";
3
3
  import { useCallback } from "react";
4
4
  import "../utils/conversionUtils.js";
5
+ import "@mui/icons-material";
5
6
  import { EquipmentType } from "../utils/types/equipmentType.js";
6
7
  import { MODIFICATION_TYPES } from "../utils/types/modificationType.js";
7
- import "@mui/icons-material";
8
8
  import "../utils/yupConfig.js";
9
9
  const getOperatingStatusModificationValues = (modification, formatBold) => {
10
10
  return {
package/dist/index.js CHANGED
@@ -204,7 +204,7 @@ import { fetchDefaultSecurityAnalysisProvider, fetchSecurityAnalysisParameters,
204
204
  import { exportFilter, getAvailableComponentLibraries, getStudyNetworkVisualizationsParameters, getStudyShortCircuitParameters, setStudyNetworkVisualizationParameters, updateVoltageInitParameters } from "./services/study.js";
205
205
  import { getNetworkVisualizationsParameters } from "./services/study-config.js";
206
206
  import { fetchCurrentAnnouncement, fetchUserDetails } from "./services/userAdmin.js";
207
- import { backendFetch, backendFetchFile, backendFetchJson, backendFetchText, convertToCustomError, getRequestParamFromList } from "./services/utils.js";
207
+ import { backendFetch, backendFetchFile, backendFetchJson, backendFetchText, getRequestParamFromList, handleNotOkResponse } from "./services/utils.js";
208
208
  import { getVoltageInitParameters, getVoltageInitUrl } from "./services/voltage-init.js";
209
209
  import { fetchShortCircuitParameters, getShortCircuitSpecificParametersDescription, updateShortCircuitParameters } from "./services/short-circuit-analysis.js";
210
210
  import { equalsArray } from "./utils/algos.js";
@@ -223,8 +223,8 @@ import { equipmentTypesForPredefinedPropertiesMapper } from "./utils/mapper/equi
223
223
  import { copyToClipboard } from "./utils/navigator-clipboard.js";
224
224
  import { NotificationsUrlKeys, PREFIX_CONFIG_NOTIFICATION_WS, PREFIX_DIRECTORY_NOTIFICATION_WS, PREFIX_STUDY_NOTIFICATION_WS } from "./utils/constants/notificationsProvider.js";
225
225
  import { DARK_THEME, LIGHT_THEME, makeComposeClasses, mergeSx, toNestedGlobalSelectors } from "./utils/styles.js";
226
- import { CustomError, formatMessageValues } from "./utils/types/CustomError.js";
227
- import { ProblemDetailError } from "./utils/types/ProblemDetailError.js";
226
+ import { CustomError } from "./utils/types/CustomError.js";
227
+ import { ProblemDetailError, formatMessageValues } from "./utils/types/ProblemDetailError.js";
228
228
  import { NetworkTimeoutError } from "./utils/types/NetworkTimeoutError.js";
229
229
  import { ElementType } from "./utils/types/elementType.js";
230
230
  import { ALL_EQUIPMENTS, BASE_EQUIPMENTS, EquipmentType, ExtendedEquipmentType, HvdcType, OperatingStatus, SEARCH_EQUIPMENTS, TYPE_TAG_MAX_SIZE, VL_TAG_MAX_SIZE, equipmentStyles, getEquipmentsInfosForSearchBar } from "./utils/types/equipmentType.js";
@@ -713,7 +713,6 @@ export {
713
713
  componentsFr,
714
714
  convertInputValue,
715
715
  convertOutputValue,
716
- convertToCustomError,
717
716
  copyToClipboard,
718
717
  countRules,
719
718
  createFilter,
@@ -815,6 +814,7 @@ export {
815
814
  getVoltageInitParameters,
816
815
  getVoltageInitUrl,
817
816
  gridItem,
817
+ handleNotOkResponse,
818
818
  handleSigninCallback,
819
819
  handleSilentRenewCallback,
820
820
  hasElementPermission,
@@ -1,9 +1,9 @@
1
1
  import { backendFetch, backendFetchJson } from "./utils.js";
2
2
  import { COMMON_APP_NAME, COMMON_CONFIG_PARAMS_NAMES } from "../utils/constants/configConstants.js";
3
3
  import "../utils/conversionUtils.js";
4
- import "../utils/types/equipmentType.js";
5
4
  import "react/jsx-runtime";
6
5
  import "@mui/icons-material";
6
+ import "../utils/types/equipmentType.js";
7
7
  import "../utils/yupConfig.js";
8
8
  const PREFIX_CONFIG_QUERIES = `${"api/gateway"}/config`;
9
9
  function getAppName(appName, name) {
@@ -8,7 +8,7 @@ import { fetchDefaultSecurityAnalysisProvider, fetchSecurityAnalysisParameters,
8
8
  import { exportFilter, getAvailableComponentLibraries, getStudyNetworkVisualizationsParameters, getStudyShortCircuitParameters, setStudyNetworkVisualizationParameters, updateVoltageInitParameters } from "./study.js";
9
9
  import { getNetworkVisualizationsParameters } from "./study-config.js";
10
10
  import { fetchCurrentAnnouncement, fetchUserDetails } from "./userAdmin.js";
11
- import { backendFetch, backendFetchFile, backendFetchJson, backendFetchText, convertToCustomError, getRequestParamFromList } from "./utils.js";
11
+ import { backendFetch, backendFetchFile, backendFetchJson, backendFetchText, getRequestParamFromList, handleNotOkResponse } from "./utils.js";
12
12
  import { getVoltageInitParameters, getVoltageInitUrl } from "./voltage-init.js";
13
13
  import { fetchShortCircuitParameters, getShortCircuitSpecificParametersDescription, updateShortCircuitParameters } from "./short-circuit-analysis.js";
14
14
  export {
@@ -18,7 +18,6 @@ export {
18
18
  backendFetchFile,
19
19
  backendFetchJson,
20
20
  backendFetchText,
21
- convertToCustomError,
22
21
  createFilter,
23
22
  createParameter,
24
23
  elementAlreadyExists,
@@ -61,6 +60,7 @@ export {
61
60
  getStudyUrl,
62
61
  getVoltageInitParameters,
63
62
  getVoltageInitUrl,
63
+ handleNotOkResponse,
64
64
  hasElementPermission,
65
65
  isStudyMetadata,
66
66
  safeEncodeURIComponent,
@@ -1,10 +1,15 @@
1
- import { CustomError } from '../utils/types/CustomError';
1
+ /**
2
+ * Copyright (c) 2024, 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
+ */
2
7
  /** Optional convenience: allow per-call timeout override without crafting a signal manually. */
3
8
  type FetchInitWithTimeout = RequestInit & {
4
9
  /** If provided and no signal is set, use this as the timeout override (ms). */
5
10
  timeoutMs?: number;
6
11
  };
7
- export declare const convertToCustomError: (textError: string) => CustomError;
12
+ export declare const handleNotOkResponse: (response: Response) => Promise<never>;
8
13
  export declare const backendFetch: (url: string, init?: FetchInitWithTimeout, token?: string) => Promise<Response>;
9
14
  export declare const backendFetchJson: (url: string, init?: FetchInitWithTimeout, token?: string) => Promise<any>;
10
15
  export declare function backendFetchText(url: string, init?: FetchInitWithTimeout, token?: string): Promise<string>;
@@ -3,13 +3,6 @@ import { ProblemDetailError } from "../utils/types/ProblemDetailError.js";
3
3
  import { NetworkTimeoutError } from "../utils/types/NetworkTimeoutError.js";
4
4
  import { CustomError } from "../utils/types/CustomError.js";
5
5
  const DEFAULT_TIMEOUT_MS = 5e4;
6
- const parseError = (text) => {
7
- try {
8
- return JSON.parse(text);
9
- } catch {
10
- return null;
11
- }
12
- };
13
6
  const ensureSignal = (init) => {
14
7
  if (init?.signal) return init;
15
8
  const timeoutMs = typeof init?.timeoutMs === "number" ? init.timeoutMs : DEFAULT_TIMEOUT_MS;
@@ -28,35 +21,47 @@ const prepareRequest = (init, token) => {
28
21
  initWithSignal.headers.append("Authorization", `Bearer ${tokenCopy}`);
29
22
  return initWithSignal;
30
23
  };
31
- const convertToCustomError = (textError) => {
32
- const errorJson = parseError(textError);
33
- if (errorJson?.server && errorJson?.timestamp && errorJson?.traceId && errorJson?.detail) {
34
- let date = /* @__PURE__ */ new Date();
35
- try {
36
- date = new Date(errorJson.timestamp);
37
- } catch {
38
- }
39
- return new ProblemDetailError(
40
- errorJson.detail,
41
- errorJson.server,
42
- date,
43
- errorJson.traceId,
44
- errorJson.status,
45
- errorJson.businessErrorCode,
46
- errorJson.businessErrorValues
47
- );
24
+ const isProblemDetail = (error) => {
25
+ if (typeof error !== "object" || error === null) {
26
+ return false;
48
27
  }
49
- return new CustomError(
50
- errorJson.detail,
51
- errorJson.status,
52
- errorJson.businessErrorCode,
53
- errorJson.businessErrorValues
54
- );
28
+ const e = error;
29
+ return typeof e.status === "number" && typeof e.server === "string" && typeof e.timestamp === "string" && typeof e.traceId === "string" && typeof e.detail === "string";
55
30
  };
56
- const handleError = (response) => {
57
- return response.text().then((text) => {
58
- throw convertToCustomError(text);
59
- });
31
+ const handleNotOkResponse = async (response) => {
32
+ let bodyText;
33
+ try {
34
+ bodyText = await response.text();
35
+ } catch (error) {
36
+ throw new CustomError(response.status, "Error in error: unable to read response body", {
37
+ cause: error
38
+ });
39
+ }
40
+ const contentType = response.headers.get("content-type") ?? "";
41
+ if (!contentType.includes("application/json")) {
42
+ throw new CustomError(response.status, bodyText);
43
+ }
44
+ let body;
45
+ try {
46
+ body = JSON.parse(bodyText);
47
+ } catch (error) {
48
+ throw new CustomError(response.status, `Error in error: unable to parse json response from text
49
+ ${bodyText}`, {
50
+ cause: error
51
+ });
52
+ }
53
+ if (isProblemDetail(body)) {
54
+ throw new ProblemDetailError(
55
+ body.status,
56
+ body.detail,
57
+ body.server,
58
+ body.timestamp,
59
+ body.traceId,
60
+ body.businessErrorCode,
61
+ body.businessErrorValues
62
+ );
63
+ }
64
+ throw new CustomError(response.status, bodyText);
60
65
  };
61
66
  const handleTimeoutError = (error) => {
62
67
  if (error instanceof Error && (error.name === "AbortError" || error.name === "TimeoutError")) {
@@ -65,7 +70,7 @@ const handleTimeoutError = (error) => {
65
70
  throw error;
66
71
  };
67
72
  const safeFetch = (url, initCopy) => {
68
- return fetch(url, initCopy).then((response) => response.ok ? response : handleError(response)).catch(handleTimeoutError);
73
+ return fetch(url, initCopy).then((response) => response.ok ? response : handleNotOkResponse(response)).catch(handleTimeoutError);
69
74
  };
70
75
  const backendFetch = (url, init, token) => {
71
76
  const initCopy = prepareRequest(init, token);
@@ -91,6 +96,6 @@ export {
91
96
  backendFetchFile,
92
97
  backendFetchJson,
93
98
  backendFetchText,
94
- convertToCustomError,
95
- getRequestParamFromList
99
+ getRequestParamFromList,
100
+ handleNotOkResponse
96
101
  };
@@ -1,7 +1,5 @@
1
- import { ProblemDetailError } from "./types/ProblemDetailError.js";
1
+ import { ProblemDetailError, formatMessageValues } from "./types/ProblemDetailError.js";
2
2
  import { NetworkTimeoutError } from "./types/NetworkTimeoutError.js";
3
- import { formatMessageValues } from "./types/CustomError.js";
4
- import "./types/equipmentType.js";
5
3
  function catchErrorHandler(error, callback) {
6
4
  if (error instanceof Object && "message" in error && typeof error.message === "string") {
7
5
  callback(error.message);
@@ -30,8 +28,7 @@ function snackWithFallback(snackError, error, headerInputs) {
30
28
  messageValues: {
31
29
  message: error.message,
32
30
  serverName: error.serverName,
33
- timestamp: error.timestamp.toLocaleString(),
34
- // It would require refactoring to adapt with GS language so we keep it like that for now
31
+ timestamp: error.timestamp,
35
32
  traceId: error.traceId
36
33
  },
37
34
  ...headerInputs
@@ -14,8 +14,8 @@ import { equipmentTypesForPredefinedPropertiesMapper } from "./mapper/equipmentT
14
14
  import { copyToClipboard } from "./navigator-clipboard.js";
15
15
  import { NotificationsUrlKeys, PREFIX_CONFIG_NOTIFICATION_WS, PREFIX_DIRECTORY_NOTIFICATION_WS, PREFIX_STUDY_NOTIFICATION_WS } from "./constants/notificationsProvider.js";
16
16
  import { DARK_THEME, LIGHT_THEME, makeComposeClasses, mergeSx, toNestedGlobalSelectors } from "./styles.js";
17
- import { CustomError, formatMessageValues } from "./types/CustomError.js";
18
- import { ProblemDetailError } from "./types/ProblemDetailError.js";
17
+ import { CustomError } from "./types/CustomError.js";
18
+ import { ProblemDetailError, formatMessageValues } from "./types/ProblemDetailError.js";
19
19
  import { NetworkTimeoutError } from "./types/NetworkTimeoutError.js";
20
20
  import { ElementType } from "./types/elementType.js";
21
21
  import { ALL_EQUIPMENTS, BASE_EQUIPMENTS, EquipmentType, ExtendedEquipmentType, HvdcType, OperatingStatus, SEARCH_EQUIPMENTS, TYPE_TAG_MAX_SIZE, VL_TAG_MAX_SIZE, equipmentStyles, getEquipmentsInfosForSearchBar } from "./types/equipmentType.js";
@@ -1,13 +1,10 @@
1
1
  /**
2
- * Copyright (c) 2025, RTE (http://www.rte-france.com)
2
+ * Copyright (c) 2026, RTE (http://www.rte-france.com)
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public
4
4
  * License, v. 2.0. If a copy of the MPL was not distributed with this
5
5
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
6
  */
7
7
  export declare class CustomError extends Error {
8
8
  status: number;
9
- businessErrorCode?: string;
10
- businessErrorValues?: Record<string, unknown>;
11
- constructor(message: string, status: number, businessErrorCode?: string, businessErrorValues?: Record<string, unknown>);
9
+ constructor(status: number, message: string, options?: ErrorOptions);
12
10
  }
13
- export declare function formatMessageValues(properties: Record<string, unknown>): Record<string, string>;
@@ -1,20 +1,9 @@
1
1
  class CustomError extends Error {
2
- constructor(message, status, businessErrorCode, businessErrorValues) {
3
- super(message);
2
+ constructor(status, message, options) {
3
+ super(message, options);
4
4
  this.status = status;
5
- this.businessErrorCode = businessErrorCode;
6
- this.businessErrorValues = businessErrorValues;
7
5
  }
8
6
  }
9
- function formatMessageValues(properties) {
10
- return Object.fromEntries(
11
- Object.entries(properties).map(([key, value]) => [
12
- key,
13
- typeof value === "object" && value !== null ? JSON.stringify(value) : String(value)
14
- ])
15
- );
16
- }
17
7
  export {
18
- CustomError,
19
- formatMessageValues
8
+ CustomError
20
9
  };
@@ -1,7 +1,10 @@
1
1
  import { CustomError } from './CustomError';
2
2
  export declare class ProblemDetailError extends CustomError {
3
3
  serverName: string;
4
- timestamp: Date;
4
+ timestamp: string;
5
5
  traceId: string;
6
- constructor(message: string, serverName: string, timestamp: Date, traceId: string, status: number, businessErrorCode?: string, businessErrorValues?: Record<string, unknown>);
6
+ businessErrorCode?: string;
7
+ businessErrorValues?: Record<string, unknown>;
8
+ constructor(status: number, message: string, serverName: string, timestamp: string, traceId: string, businessErrorCode?: string, businessErrorValues?: Record<string, unknown>);
7
9
  }
10
+ export declare function formatMessageValues(properties: Record<string, unknown>): Record<string, string>;