@gridsuite/commons-ui 0.192.0 → 0.193.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 (213) hide show
  1. package/dist/components/filter/constants/FilterConstants.d.ts +6 -2
  2. package/dist/components/filter/constants/FilterConstants.js +1 -10
  3. package/dist/components/filter/expert/ExpertFilterEditionDialog.js +2 -1
  4. package/dist/components/filter/explicitNaming/ExplicitNamingFilterEditionDialog.js +2 -1
  5. package/dist/components/filter/explicitNaming/ExplicitNamingFilterForm.d.ts +1 -1
  6. package/dist/components/filter/filter.type.d.ts +27 -17
  7. package/dist/components/filter/index.js +1 -2
  8. package/dist/components/index.js +9 -4
  9. package/dist/components/inputs/checkbox-autocomplete/checkbox-autocomplete.d.ts +12 -0
  10. package/dist/components/inputs/checkbox-autocomplete/checkbox-autocomplete.js +126 -0
  11. package/dist/components/inputs/checkbox-autocomplete/checkbox-item.d.ts +8 -0
  12. package/dist/components/inputs/checkbox-autocomplete/checkbox-item.js +17 -0
  13. package/dist/components/inputs/checkbox-autocomplete/index.d.ts +7 -0
  14. package/dist/components/inputs/checkbox-autocomplete/index.js +4 -0
  15. package/dist/components/inputs/checkbox-autocomplete/virtualized-list-item.d.ts +15 -0
  16. package/dist/components/inputs/checkbox-autocomplete/virtualized-list-item.js +27 -0
  17. package/dist/components/inputs/checkbox-autocomplete/virtualized-list.d.ts +3 -0
  18. package/dist/components/inputs/checkbox-autocomplete/virtualized-list.js +30 -0
  19. package/dist/components/parameters/common/hook/index.d.ts +8 -0
  20. package/dist/components/parameters/common/hook/index.js +6 -0
  21. package/dist/components/parameters/common/hook/use-parameters-form.d.ts +13 -0
  22. package/dist/components/parameters/common/hook/use-parameters-form.js +60 -0
  23. package/dist/components/parameters/common/hook/use-tabs.d.ts +13 -0
  24. package/dist/components/parameters/common/hook/use-tabs.js +60 -0
  25. package/dist/components/parameters/common/index.d.ts +1 -0
  26. package/dist/components/parameters/common/index.js +5 -1
  27. package/dist/components/parameters/common/parameter-field.js +2 -0
  28. package/dist/components/parameters/common/utils.d.ts +2 -15
  29. package/dist/components/parameters/common/utils.js +1 -40
  30. package/dist/components/parameters/dynamic-margin-calculation/dynamic-margin-calculation-form.d.ts +4 -3
  31. package/dist/components/parameters/dynamic-margin-calculation/dynamic-margin-calculation-form.js +19 -12
  32. package/dist/components/parameters/dynamic-margin-calculation/dynamic-margin-calculation-inline.js +9 -6
  33. package/dist/components/parameters/dynamic-margin-calculation/use-dynamic-margin-calculation-parameters-form.d.ts +1 -3
  34. package/dist/components/parameters/dynamic-margin-calculation/use-dynamic-margin-calculation-parameters-form.js +9 -54
  35. package/dist/components/parameters/dynamic-security-analysis/contingency-parameters.js +14 -7
  36. package/dist/components/parameters/dynamic-security-analysis/dynamic-security-analysis-inline.js +9 -6
  37. package/dist/components/parameters/dynamic-security-analysis/dynamic-security-analysis-parameters-form.d.ts +4 -3
  38. package/dist/components/parameters/dynamic-security-analysis/dynamic-security-analysis-parameters-form.js +41 -40
  39. package/dist/components/parameters/dynamic-security-analysis/dynamic-security-analysis.type.d.ts +10 -0
  40. package/dist/components/parameters/dynamic-security-analysis/dynamic-security-analysis.type.js +8 -0
  41. package/dist/components/parameters/dynamic-security-analysis/scenario-parameters.js +15 -6
  42. package/dist/components/parameters/dynamic-security-analysis/use-dynamic-security-analysis-parameters-form.d.ts +1 -6
  43. package/dist/components/parameters/dynamic-security-analysis/use-dynamic-security-analysis-parameters-form.js +19 -96
  44. package/dist/components/parameters/dynamic-simulation/curve/common/checkbox-select.d.ts +15 -0
  45. package/dist/components/parameters/dynamic-simulation/curve/common/checkbox-select.js +83 -0
  46. package/dist/components/parameters/dynamic-simulation/curve/common/checkbox-treeview.d.ts +22 -0
  47. package/dist/components/parameters/dynamic-simulation/curve/common/checkbox-treeview.js +163 -0
  48. package/dist/components/parameters/dynamic-simulation/curve/common/curve.type.d.ts +14 -0
  49. package/dist/components/parameters/dynamic-simulation/curve/common/curve.type.js +1 -0
  50. package/dist/components/parameters/dynamic-simulation/curve/common/grid-buttons.d.ts +8 -0
  51. package/dist/components/parameters/dynamic-simulation/curve/common/grid-buttons.js +39 -0
  52. package/dist/components/parameters/dynamic-simulation/curve/common/grid-search.d.ts +8 -0
  53. package/dist/components/parameters/dynamic-simulation/curve/common/grid-search.js +60 -0
  54. package/dist/components/parameters/dynamic-simulation/curve/curve-parameters-constants.d.ts +11 -0
  55. package/dist/components/parameters/dynamic-simulation/curve/curve-parameters-constants.js +9 -0
  56. package/dist/components/parameters/dynamic-simulation/curve/curve-parameters-utils.d.ts +12 -0
  57. package/dist/components/parameters/dynamic-simulation/curve/curve-parameters-utils.js +18 -0
  58. package/dist/components/parameters/dynamic-simulation/curve/curve-parameters.d.ts +11 -0
  59. package/dist/components/parameters/dynamic-simulation/curve/curve-parameters.js +177 -0
  60. package/dist/components/parameters/dynamic-simulation/curve/curve-parameters.type.d.ts +6 -0
  61. package/dist/components/parameters/dynamic-simulation/curve/curve-parameters.type.js +1 -0
  62. package/dist/components/parameters/dynamic-simulation/curve/dialog/curve-preview.d.ts +8 -0
  63. package/dist/components/parameters/dynamic-simulation/curve/dialog/curve-preview.js +123 -0
  64. package/dist/components/parameters/dynamic-simulation/curve/dialog/curve-selector-dialog.d.ts +15 -0
  65. package/dist/components/parameters/dynamic-simulation/curve/dialog/curve-selector-dialog.js +126 -0
  66. package/dist/components/parameters/dynamic-simulation/curve/dialog/curve-selector-utils.d.ts +20 -0
  67. package/dist/components/parameters/dynamic-simulation/curve/dialog/curve-selector-utils.js +283 -0
  68. package/dist/components/parameters/dynamic-simulation/curve/dialog/curve-selector.d.ts +16 -0
  69. package/dist/components/parameters/dynamic-simulation/curve/dialog/curve-selector.js +96 -0
  70. package/dist/components/parameters/dynamic-simulation/curve/dialog/equipment-filter.d.ts +14 -0
  71. package/dist/components/parameters/dynamic-simulation/curve/dialog/equipment-filter.js +239 -0
  72. package/dist/components/parameters/dynamic-simulation/curve/dialog/model-filter-utils.d.ts +3 -0
  73. package/dist/components/parameters/dynamic-simulation/curve/dialog/model-filter-utils.js +68 -0
  74. package/dist/components/parameters/dynamic-simulation/curve/dialog/model-filter.d.ts +12 -0
  75. package/dist/components/parameters/dynamic-simulation/curve/dialog/model-filter.js +148 -0
  76. package/dist/components/parameters/dynamic-simulation/dynamic-simulation-inline.d.ts +15 -0
  77. package/dist/components/parameters/dynamic-simulation/dynamic-simulation-inline.js +191 -0
  78. package/dist/components/parameters/dynamic-simulation/dynamic-simulation-parameters-form.d.ts +15 -0
  79. package/dist/components/parameters/dynamic-simulation/dynamic-simulation-parameters-form.js +153 -0
  80. package/dist/components/parameters/dynamic-simulation/dynamic-simulation.type.d.ts +13 -0
  81. package/dist/components/parameters/dynamic-simulation/dynamic-simulation.type.js +11 -0
  82. package/dist/components/parameters/dynamic-simulation/hook/use-default-params.d.ts +4 -0
  83. package/dist/components/parameters/dynamic-simulation/hook/use-default-params.js +22 -0
  84. package/dist/components/parameters/dynamic-simulation/index.d.ts +7 -0
  85. package/dist/components/parameters/dynamic-simulation/index.js +4 -0
  86. package/dist/components/parameters/dynamic-simulation/mapping/index.d.ts +9 -0
  87. package/dist/components/parameters/dynamic-simulation/mapping/index.js +9 -0
  88. package/dist/components/parameters/dynamic-simulation/mapping/mapping-parameters-constants.d.ts +7 -0
  89. package/dist/components/parameters/dynamic-simulation/mapping/mapping-parameters-constants.js +4 -0
  90. package/dist/components/parameters/dynamic-simulation/mapping/mapping-parameters-utils.d.ts +9 -0
  91. package/dist/components/parameters/dynamic-simulation/mapping/mapping-parameters-utils.js +13 -0
  92. package/dist/components/parameters/dynamic-simulation/mapping/mapping-parameters.d.ts +5 -0
  93. package/dist/components/parameters/dynamic-simulation/mapping/mapping-parameters.js +53 -0
  94. package/dist/components/parameters/dynamic-simulation/network/index.d.ts +9 -0
  95. package/dist/components/parameters/dynamic-simulation/network/index.js +10 -0
  96. package/dist/components/parameters/dynamic-simulation/network/network-parameters-constants.d.ts +29 -0
  97. package/dist/components/parameters/dynamic-simulation/network/network-parameters-constants.js +28 -0
  98. package/dist/components/parameters/dynamic-simulation/network/network-parameters-utils.d.ts +66 -0
  99. package/dist/components/parameters/dynamic-simulation/network/network-parameters-utils.js +51 -0
  100. package/dist/components/parameters/dynamic-simulation/network/network-parameters.d.ts +3 -0
  101. package/dist/components/parameters/dynamic-simulation/network/network-parameters.js +120 -0
  102. package/dist/components/parameters/dynamic-simulation/solver/common-solver/common-solver-parameters-constants.d.ts +31 -0
  103. package/dist/components/parameters/dynamic-simulation/solver/common-solver/common-solver-parameters-constants.js +29 -0
  104. package/dist/components/parameters/dynamic-simulation/solver/common-solver/common-solver-parameters-utils.d.ts +26 -0
  105. package/dist/components/parameters/dynamic-simulation/solver/common-solver/common-solver-parameters-utils.js +33 -0
  106. package/dist/components/parameters/dynamic-simulation/solver/common-solver/common-solver-parameters.d.ts +3 -0
  107. package/dist/components/parameters/dynamic-simulation/solver/common-solver/common-solver-parameters.js +134 -0
  108. package/dist/components/parameters/dynamic-simulation/solver/common-solver/index.d.ts +9 -0
  109. package/dist/components/parameters/dynamic-simulation/solver/common-solver/index.js +8 -0
  110. package/dist/components/parameters/dynamic-simulation/solver/ida-solver/ida-solver-parameters-constants.d.ts +14 -0
  111. package/dist/components/parameters/dynamic-simulation/solver/ida-solver/ida-solver-parameters-constants.js +12 -0
  112. package/dist/components/parameters/dynamic-simulation/solver/ida-solver/ida-solver-parameters-utils.d.ts +62 -0
  113. package/dist/components/parameters/dynamic-simulation/solver/ida-solver/ida-solver-parameters-utils.js +17 -0
  114. package/dist/components/parameters/dynamic-simulation/solver/ida-solver/ida-solver-parameters.d.ts +3 -0
  115. package/dist/components/parameters/dynamic-simulation/solver/ida-solver/ida-solver-parameters.js +53 -0
  116. package/dist/components/parameters/dynamic-simulation/solver/ida-solver/index.d.ts +9 -0
  117. package/dist/components/parameters/dynamic-simulation/solver/ida-solver/index.js +8 -0
  118. package/dist/components/parameters/dynamic-simulation/solver/index.d.ts +9 -0
  119. package/dist/components/parameters/dynamic-simulation/solver/index.js +9 -0
  120. package/dist/components/parameters/dynamic-simulation/solver/sim-solver/index.d.ts +9 -0
  121. package/dist/components/parameters/dynamic-simulation/solver/sim-solver/index.js +8 -0
  122. package/dist/components/parameters/dynamic-simulation/solver/sim-solver/simplified-solver-parameters-constant.d.ts +26 -0
  123. package/dist/components/parameters/dynamic-simulation/solver/sim-solver/simplified-solver-parameters-constant.js +24 -0
  124. package/dist/components/parameters/dynamic-simulation/solver/sim-solver/simplified-solver-parameters-utils.d.ts +86 -0
  125. package/dist/components/parameters/dynamic-simulation/solver/sim-solver/simplified-solver-parameters-utils.js +31 -0
  126. package/dist/components/parameters/dynamic-simulation/solver/sim-solver/simplified-solver-parameters.d.ts +3 -0
  127. package/dist/components/parameters/dynamic-simulation/solver/sim-solver/simplified-solver-parameters.js +113 -0
  128. package/dist/components/parameters/dynamic-simulation/solver/solver-parameters-constants.d.ts +10 -0
  129. package/dist/components/parameters/dynamic-simulation/solver/solver-parameters-constants.js +8 -0
  130. package/dist/components/parameters/dynamic-simulation/solver/solver-parameters-utils.d.ts +12 -0
  131. package/dist/components/parameters/dynamic-simulation/solver/solver-parameters-utils.js +38 -0
  132. package/dist/components/parameters/dynamic-simulation/solver/solver-parameters.d.ts +5 -0
  133. package/dist/components/parameters/dynamic-simulation/solver/solver-parameters.js +52 -0
  134. package/dist/components/parameters/dynamic-simulation/time-delay/index.d.ts +9 -0
  135. package/dist/components/parameters/dynamic-simulation/time-delay/index.js +9 -0
  136. package/dist/components/parameters/dynamic-simulation/time-delay/time-delay-parameters-constants.d.ts +10 -0
  137. package/dist/components/parameters/dynamic-simulation/time-delay/time-delay-parameters-constants.js +8 -0
  138. package/dist/components/parameters/dynamic-simulation/time-delay/time-delay-parameters-utils.d.ts +12 -0
  139. package/dist/components/parameters/dynamic-simulation/time-delay/time-delay-parameters-utils.js +21 -0
  140. package/dist/components/parameters/dynamic-simulation/time-delay/time-delay-parameters.d.ts +3 -0
  141. package/dist/components/parameters/dynamic-simulation/time-delay/time-delay-parameters.js +30 -0
  142. package/dist/components/parameters/dynamic-simulation/use-dynamic-simulation-parameters-form.d.ts +13 -0
  143. package/dist/components/parameters/dynamic-simulation/use-dynamic-simulation-parameters-form.js +122 -0
  144. package/dist/components/parameters/index.d.ts +2 -1
  145. package/dist/components/parameters/index.js +9 -3
  146. package/dist/components/parameters/loadflow/load-flow-general-parameters.js +2 -0
  147. package/dist/components/parameters/loadflow/load-flow-parameters-content.js +2 -0
  148. package/dist/components/parameters/loadflow/load-flow-parameters-dialog.js +2 -1
  149. package/dist/components/parameters/loadflow/load-flow-parameters-header.js +2 -0
  150. package/dist/components/parameters/loadflow/load-flow-parameters-inline.js +2 -0
  151. package/dist/components/parameters/loadflow/load-flow-parameters-utils.js +2 -0
  152. package/dist/components/parameters/loadflow/use-load-flow-parameters-form.js +1 -1
  153. package/dist/components/parameters/network-visualizations/map-parameters.js +2 -0
  154. package/dist/components/parameters/network-visualizations/network-visualizations-form.js +2 -0
  155. package/dist/components/parameters/network-visualizations/network-visualizations-parameters-inline.js +2 -0
  156. package/dist/components/parameters/network-visualizations/single-line-diagram-parameters.js +2 -0
  157. package/dist/components/parameters/pcc-min/pcc-min-parameters-form.js +2 -0
  158. package/dist/components/parameters/pcc-min/pcc-min-parameters-inline.js +2 -0
  159. package/dist/components/parameters/security-analysis/columns-definitions.js +1 -0
  160. package/dist/components/parameters/security-analysis/security-analysis-parameters-dialog.js +2 -1
  161. package/dist/components/parameters/security-analysis/security-analysis-parameters-form.js +2 -0
  162. package/dist/components/parameters/security-analysis/security-analysis-parameters-inline.js +2 -0
  163. package/dist/components/parameters/security-analysis/security-analysis-parameters-selector.js +2 -2
  164. package/dist/components/parameters/security-analysis/security-analysis-violations-hiding.js +2 -0
  165. package/dist/components/parameters/sensi/columns-definitions.js +2 -0
  166. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-dialog.js +2 -1
  167. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-form.js +2 -0
  168. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-inline.js +2 -0
  169. package/dist/components/parameters/sensi/sensitivity-parameters-selector.js +2 -0
  170. package/dist/components/parameters/sensi/use-sensitivity-analysis-parameters.js +2 -2
  171. package/dist/components/parameters/sensi/utils.js +1 -0
  172. package/dist/components/parameters/short-circuit/short-circuit-general-tab-panel.js +2 -0
  173. package/dist/components/parameters/short-circuit/short-circuit-parameters-content.js +2 -0
  174. package/dist/components/parameters/short-circuit/short-circuit-parameters-dialog.js +1 -0
  175. package/dist/components/parameters/short-circuit/short-circuit-parameters-inline.js +2 -0
  176. package/dist/components/parameters/short-circuit/short-circuit-parameters-utils.js +2 -0
  177. package/dist/components/parameters/short-circuit/short-circuit-power-electronics-tab-panel.js +2 -0
  178. package/dist/components/parameters/short-circuit/short-circuit-study-area-tab-panel.js +2 -0
  179. package/dist/components/parameters/voltage-init/equipment-selection-parameters.js +2 -0
  180. package/dist/components/parameters/voltage-init/general-parameters.js +2 -0
  181. package/dist/components/parameters/voltage-init/voltage-init-parameters-form.js +2 -0
  182. package/dist/components/parameters/voltage-init/voltage-init-parameters-inline.js +2 -0
  183. package/dist/index.js +24 -5
  184. package/dist/services/dynamic-mapping.d.ts +3 -0
  185. package/dist/services/dynamic-mapping.js +21 -0
  186. package/dist/services/dynamic-margin-calculation.js +1 -1
  187. package/dist/services/dynamic-simulation.d.ts +5 -0
  188. package/dist/services/dynamic-simulation.js +35 -0
  189. package/dist/services/index.d.ts +3 -1
  190. package/dist/services/index.js +8 -1
  191. package/dist/translations/en/parameters.d.ts +101 -2
  192. package/dist/translations/en/parameters.js +115 -2
  193. package/dist/translations/fr/parameters.d.ts +101 -2
  194. package/dist/translations/fr/parameters.js +115 -2
  195. package/dist/translations/not-intl/aggrid-locales.d.ts +8 -0
  196. package/dist/translations/not-intl/aggrid-locales.js +12 -0
  197. package/dist/utils/directory-utils.d.ts +2 -0
  198. package/dist/utils/directory-utils.js +11 -0
  199. package/dist/utils/index.d.ts +1 -0
  200. package/dist/utils/index.js +8 -1
  201. package/dist/utils/types/dynamic-simulation.type.d.ts +14 -24
  202. package/dist/utils/types/elementType.d.ts +2 -1
  203. package/dist/utils/types/elementType.js +2 -1
  204. package/dist/utils/types/equipmentType.d.ts +9 -0
  205. package/dist/utils/types/equipmentType.js +52 -0
  206. package/dist/utils/types/index.js +6 -1
  207. package/dist/utils/types/parameters.type.d.ts +2 -2
  208. package/dist/utils/types/types.d.ts +11 -0
  209. package/package.json +3 -1
  210. package/dist/components/parameters/util/make-component-utils.d.ts +0 -17
  211. package/dist/components/parameters/util/make-component-utils.js +0 -97
  212. package/dist/components/parameters/util/styles.d.ts +0 -38
  213. package/dist/components/parameters/util/styles.js +0 -41
@@ -1,4 +1,9 @@
1
- import { ItemSelectionForCopy } from '../filter.type';
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
  export declare const DISTRIBUTION_KEY = "distributionKey";
3
8
  export declare const FilterType: {
4
9
  EXPERT: {
@@ -10,4 +15,3 @@ export declare const FilterType: {
10
15
  label: string;
11
16
  };
12
17
  };
13
- export declare const NO_ITEM_SELECTION_FOR_COPY: ItemSelectionForCopy;
@@ -3,16 +3,7 @@ const FilterType = {
3
3
  EXPERT: { id: "EXPERT", label: "filter.expert" },
4
4
  EXPLICIT_NAMING: { id: "IDENTIFIER_LIST", label: "filter.explicitNaming" }
5
5
  };
6
- const NO_ITEM_SELECTION_FOR_COPY = {
7
- sourceItemUuid: null,
8
- nameItem: null,
9
- descriptionItem: null,
10
- parentDirectoryUuid: null,
11
- typeItem: null,
12
- specificTypeItem: null
13
- };
14
6
  export {
15
7
  DISTRIBUTION_KEY,
16
- FilterType,
17
- NO_ITEM_SELECTION_FOR_COPY
8
+ FilterType
18
9
  };
@@ -7,7 +7,8 @@ import { FetchStatus } from "../../../utils/constants/fetchStatus.js";
7
7
  import { FieldConstants } from "../../../utils/constants/fieldConstants.js";
8
8
  import "../../../utils/yupConfig.js";
9
9
  import { CustomMuiDialog } from "../../dialogs/customMuiDialog/CustomMuiDialog.js";
10
- import { NO_ITEM_SELECTION_FOR_COPY, FilterType } from "../constants/FilterConstants.js";
10
+ import { FilterType } from "../constants/FilterConstants.js";
11
+ import { NO_ITEM_SELECTION_FOR_COPY } from "../../../utils/directory-utils.js";
11
12
  import { FilterForm } from "../FilterForm.js";
12
13
  import { saveExpertFilter } from "../utils/filterApi.js";
13
14
  import { expertFilterSchema } from "./ExpertFilterForm.js";
@@ -12,7 +12,8 @@ import { saveExplicitNamingFilter } from "../utils/filterApi.js";
12
12
  import { explicitNamingFilterSchema } from "./ExplicitNamingFilterForm.js";
13
13
  import { FetchStatus } from "../../../utils/constants/fetchStatus.js";
14
14
  import { FilterForm } from "../FilterForm.js";
15
- import { NO_ITEM_SELECTION_FOR_COPY, FilterType } from "../constants/FilterConstants.js";
15
+ import { FilterType } from "../constants/FilterConstants.js";
16
+ import { NO_ITEM_SELECTION_FOR_COPY } from "../../../utils/directory-utils.js";
16
17
  import { HeaderFilterSchema } from "../HeaderFilterForm.js";
17
18
  import { FILTER_EQUIPMENTS_ATTRIBUTES } from "./ExplicitNamingFilterConstants.js";
18
19
  import { snackWithFallback } from "../../../utils/error.js";
@@ -4,8 +4,8 @@ import { default as yup } from '../../../utils/yupConfig';
4
4
  import { DISTRIBUTION_KEY } from '../constants/FilterConstants';
5
5
  export declare const explicitNamingFilterSchema: {
6
6
  filterEquipmentsAttributes: yup.ArraySchema<{
7
- equipmentID?: string | null | undefined;
8
7
  distributionKey?: number | null | undefined;
8
+ equipmentID?: string | null | undefined;
9
9
  }[] | undefined, yup.AnyObject, "", "">;
10
10
  };
11
11
  interface FilterTableRow {
@@ -1,23 +1,24 @@
1
1
  import { UUID } from 'node:crypto';
2
- import { FieldConstants, GsLang } from '../../utils';
2
+ import { EquipmentType, FieldConstants, GsLang } from '../../utils';
3
+ import { ItemSelectionForCopy } from '../../utils/types/types';
3
4
  import { RuleGroupTypeExport } from './expert/expertFilter.type';
4
5
  import { EXPERT_FILTER_QUERY } from './expert/expertFilterConstants';
5
6
  import { FILTER_EQUIPMENTS_ATTRIBUTES } from './explicitNaming/ExplicitNamingFilterConstants';
6
- /**
7
- * Represent an item/object in directories.
8
- */
9
- export type ItemSelectionForCopy = {
10
- sourceItemUuid: UUID | null;
11
- typeItem: string | null;
12
- nameItem: string | null;
13
- descriptionItem: string | null;
14
- parentDirectoryUuid: UUID | null;
15
- specificTypeItem: string | null;
16
- };
17
- type EquipmentsFilter = {
7
+ import { FilterType } from './constants/FilterConstants';
8
+ export type EquipmentsFilter = {
18
9
  equipmentID: string;
19
10
  distributionKey?: number;
20
11
  };
12
+ export interface IdentifiableAttributes {
13
+ id: string;
14
+ type: EquipmentType;
15
+ distributionKey: number;
16
+ }
17
+ export interface FilterEquipments {
18
+ filterId: UUID;
19
+ identifiableAttributes: IdentifiableAttributes[];
20
+ notFoundEquipments: string[];
21
+ }
21
22
  export interface FilterEditionProps {
22
23
  id: string;
23
24
  name: string;
@@ -37,11 +38,20 @@ export interface FilterEditionProps {
37
38
  description?: string;
38
39
  isDeveloperMode: boolean;
39
40
  }
40
- export interface NewFilterType {
41
- id: string | null;
41
+ export type NewFilterType = ExpertFilter | ExplicitNamingFilter;
42
+ type BaseFilter = {
43
+ id?: string | null;
44
+ name?: string;
42
45
  type: string;
43
46
  equipmentType: string;
44
- rules?: RuleGroupTypeExport;
47
+ };
48
+ export type ExpertFilter = BaseFilter & {
49
+ type: typeof FilterType.EXPERT.id;
50
+ rules: RuleGroupTypeExport;
51
+ topologyKind?: string;
52
+ };
53
+ export type ExplicitNamingFilter = BaseFilter & {
54
+ type: typeof FilterType.EXPLICIT_NAMING.id;
45
55
  filterEquipmentsAttributes?: EquipmentsFilter[];
46
- }
56
+ };
47
57
  export {};
@@ -1,6 +1,6 @@
1
1
  import { FilterCreationDialog } from "./FilterCreationDialog.js";
2
2
  import { FilterForm } from "./FilterForm.js";
3
- import { DISTRIBUTION_KEY, FilterType, NO_ITEM_SELECTION_FOR_COPY } from "./constants/FilterConstants.js";
3
+ import { DISTRIBUTION_KEY, FilterType } from "./constants/FilterConstants.js";
4
4
  import { ExpertFilterEditionDialog } from "./expert/ExpertFilterEditionDialog.js";
5
5
  import { ExpertFilterForm, expertFilterSchema, getExpertFilterEmptyFormData } from "./expert/ExpertFilterForm.js";
6
6
  import { CombinatorType, DataType, OperatorType } from "./expert/expertFilter.type.js";
@@ -33,7 +33,6 @@ export {
33
33
  FilterForm,
34
34
  FilterType,
35
35
  LOAD_TYPE_OPTIONS,
36
- NO_ITEM_SELECTION_FOR_COPY,
37
36
  OPERATOR_OPTIONS,
38
37
  OperatorType,
39
38
  PHASE_REGULATION_MODE_OPTIONS,
@@ -40,7 +40,7 @@ import { useElementSearch } from "./elementSearch/hooks/useElementSearch.js";
40
40
  import { TagRenderer } from "./elementSearch/tagRenderer/TagRenderer.js";
41
41
  import { FilterCreationDialog } from "./filter/FilterCreationDialog.js";
42
42
  import { FilterForm } from "./filter/FilterForm.js";
43
- import { DISTRIBUTION_KEY, FilterType, NO_ITEM_SELECTION_FOR_COPY } from "./filter/constants/FilterConstants.js";
43
+ import { DISTRIBUTION_KEY, FilterType } from "./filter/constants/FilterConstants.js";
44
44
  import { ExpertFilterEditionDialog } from "./filter/expert/ExpertFilterEditionDialog.js";
45
45
  import { ExpertFilterForm, expertFilterSchema, getExpertFilterEmptyFormData } from "./filter/expert/ExpertFilterForm.js";
46
46
  import { CombinatorType, DataType, OperatorType } from "./filter/expert/expertFilter.type.js";
@@ -160,6 +160,8 @@ import { LimitReductionTableRow } from "./parameters/common/limitreductions/limi
160
160
  import { LimitReductionTableCell } from "./parameters/common/limitreductions/limit-reduction-table-cell.js";
161
161
  import { ContingencyTable } from "./parameters/common/contingency-table/contingency-table.js";
162
162
  import { COLUMNS_DEFINITIONS_CONTINGENCY_LISTS_INFOS, ParamContingencyLists, getContingencyListsInfosFormSchema, toFormValuesContingencyListsInfos } from "./parameters/common/contingency-table/columns-definitions.js";
163
+ import { useTabs } from "./parameters/common/hook/use-tabs.js";
164
+ import { useParametersForm } from "./parameters/common/hook/use-parameters-form.js";
163
165
  import { CENTER_LABEL, COMPONENT_LIBRARY, 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_SUBSTATION_LAYOUT, SUBSTATION_LAYOUT } from "./parameters/network-visualizations/constants.js";
164
166
  import { MAP_BASEMAP_CARTO, MAP_BASEMAP_CARTO_NOLABEL, MAP_BASEMAP_ETALAB, MAP_BASEMAP_MAPBOX, NadPositionsGenerationMode, SubstationLayout } from "./parameters/network-visualizations/network-visualizations.types.js";
165
167
  import { NetworkVisualizationParametersInline } from "./parameters/network-visualizations/network-visualizations-parameters-inline.js";
@@ -181,10 +183,11 @@ import { SecurityAnalysisParametersDialog } from "./parameters/security-analysis
181
183
  import { SensitivityAnalysisParametersInline } from "./parameters/sensi/sensitivity-analysis-parameters-inline.js";
182
184
  import { SensitivityAnalysisParametersDialog } from "./parameters/sensi/sensitivity-analysis-parameters-dialog.js";
183
185
  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, SensiHvdcs, SensiInjection, SensiInjectionsSet, SensiNodes, SensiPsts, SensiTabValues } from "./parameters/sensi/columns-definitions.js";
184
- import { ACCURACY, ACTIVE, CALCULATION_TYPE, LOADS_VARIATIONS, LOAD_FILTERS, LOAD_INCREASE_START_TIME, LOAD_INCREASE_STOP_TIME, LOAD_MODELS_RULE, MARGIN_CALCULATION_START_TIME, START_TIME, STOP_TIME, VARIATION } from "./parameters/dynamic-margin-calculation/constants.js";
185
- import { DynamicMarginCalculationInline } from "./parameters/dynamic-margin-calculation/dynamic-margin-calculation-inline.js";
186
+ import { DynamicSimulationInline } from "./parameters/dynamic-simulation/dynamic-simulation-inline.js";
186
187
  import { CONTINGENCIES_LIST_INFOS, CONTINGENCIES_START_TIME, SCENARIO_DURATION } from "./parameters/dynamic-security-analysis/constants.js";
187
188
  import { DynamicSecurityAnalysisInline } from "./parameters/dynamic-security-analysis/dynamic-security-analysis-inline.js";
189
+ import { ACCURACY, ACTIVE, CALCULATION_TYPE, LOADS_VARIATIONS, LOAD_FILTERS, LOAD_INCREASE_START_TIME, LOAD_INCREASE_STOP_TIME, LOAD_MODELS_RULE, MARGIN_CALCULATION_START_TIME, START_TIME, STOP_TIME, VARIATION } from "./parameters/dynamic-margin-calculation/constants.js";
190
+ import { DynamicMarginCalculationInline } from "./parameters/dynamic-margin-calculation/dynamic-margin-calculation-inline.js";
188
191
  import { CustomMenuItem, CustomNestedMenuItem } from "./menus/custom-nested-menu.js";
189
192
  import { OverflowableTableCell } from "./muiTable/OverflowableTableCell.js";
190
193
  import { OverflowableTableCellWithCheckbox } from "./muiTable/OverflowableTableCellWithCheckbox.js";
@@ -345,6 +348,7 @@ export {
345
348
  DndTableBottomRightButtons,
346
349
  DynamicMarginCalculationInline,
347
350
  DynamicSecurityAnalysisInline,
351
+ DynamicSimulationInline,
348
352
  ENERGY_SOURCE_OPTIONS,
349
353
  EQUIPMENTS_IN_VOLTAGE_REGULATION_TYPES,
350
354
  EQUIPMENT_TYPE_ORDER,
@@ -453,7 +457,6 @@ export {
453
457
  NAME,
454
458
  NODE_CLUSTER,
455
459
  NODE_CLUSTER_FILTER_IDS,
456
- NO_ITEM_SELECTION_FOR_COPY,
457
460
  NadPositionsGenerationMode,
458
461
  NetworkModificationNameCellRenderer,
459
462
  NetworkVisualizationParametersInline,
@@ -765,6 +768,8 @@ export {
765
768
  useHvdcLccDeletion,
766
769
  useListenerManager,
767
770
  useNotificationsListener,
771
+ useParametersForm,
772
+ useTabs,
768
773
  useTabsWithError,
769
774
  useValid,
770
775
  voltageLevelCreationDtoToForm,
@@ -0,0 +1,12 @@
1
+ import { AutocompleteProps } from '@mui/material';
2
+ interface CheckboxAutocompleteProps<Value> extends Omit<AutocompleteProps<Value, true, false, false>, 'limitTags' | 'multiple' | 'ListboxComponent' | 'renderInput' | 'renderOption' | 'inputValue' | 'onChange' | 'onBlur'> {
3
+ id?: string;
4
+ virtualize?: boolean;
5
+ maxSelection?: number;
6
+ options: Value[];
7
+ getOptionLabel: (option: Value) => string;
8
+ value: Value[];
9
+ onChange: (value: Value[]) => void;
10
+ }
11
+ export declare function CheckboxAutocomplete<Value>({ id, virtualize, maxSelection, options, getOptionLabel, onChange, ...otherProps }: Readonly<CheckboxAutocompleteProps<Value>>): import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1,126 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { styled, Popper, autocompleteClasses, Autocomplete, lighten, TextField } from "@mui/material";
4
+ import { useIntl } from "react-intl";
5
+ import VirtualizedList from "./virtualized-list.js";
6
+ import CheckboxItem from "./checkbox-item.js";
7
+ const styles = {
8
+ autocomplete: (theme) => ({
9
+ ".MuiAutocomplete-inputRoot": {
10
+ height: "40px",
11
+ backgroundColor: "unset"
12
+ // prevents the field from changing size when selected with the keyboard
13
+ },
14
+ ".Mui-expanded, .Mui-focused, .Mui-focusVisible": {
15
+ position: "absolute",
16
+ width: "inherit",
17
+ height: "inherit",
18
+ zIndex: 20,
19
+ // jump up to avoid input zone pushed down below component
20
+ backgroundColor: lighten(theme.palette.background.default, 0.16)
21
+ },
22
+ "&.Mui-focused": {
23
+ ".MuiInputLabel-root": {
24
+ zIndex: 21,
25
+ // jump up to show max limit text
26
+ width: "auto"
27
+ }
28
+ },
29
+ "&:not(.Mui-focused) .MuiAutocomplete-tag": {
30
+ maxWidth: "calc(100% - 32px)"
31
+ // reduce 32px to avoid the number of hidden tags, e.g +2, shown in a new line
32
+ }
33
+ })
34
+ };
35
+ const StyledPopper = styled(Popper)({
36
+ [`& .${autocompleteClasses.listbox}`]: {
37
+ boxSizing: "border-box",
38
+ "& ul": {
39
+ padding: 0,
40
+ margin: 0
41
+ }
42
+ }
43
+ });
44
+ function CheckboxAutocomplete({
45
+ id,
46
+ virtualize = false,
47
+ maxSelection = 0,
48
+ options,
49
+ getOptionLabel,
50
+ onChange,
51
+ ...otherProps
52
+ }) {
53
+ const intl = useIntl();
54
+ const [inputValue, setInputValue] = useState("");
55
+ const [isFocusInput, setIsFocusInput] = useState(false);
56
+ const [isMaxLimitReached, setMaxLimitReached] = useState(false);
57
+ const handleChange = (_event, value) => {
58
+ if (!maxSelection || value.length <= maxSelection) {
59
+ setMaxLimitReached(false);
60
+ onChange(value);
61
+ } else {
62
+ setMaxLimitReached(true);
63
+ }
64
+ };
65
+ const getInputLabel = () => {
66
+ if (!isFocusInput) {
67
+ return `${options?.length} ${intl.formatMessage({
68
+ id: "options"
69
+ })}`;
70
+ }
71
+ if (isMaxLimitReached) {
72
+ return `${maxSelection} ${intl.formatMessage({
73
+ id: "maxSelection"
74
+ })}`;
75
+ }
76
+ return void 0;
77
+ };
78
+ const renderInput = (params) => /* @__PURE__ */ jsx(
79
+ TextField,
80
+ {
81
+ ...params,
82
+ label: getInputLabel(),
83
+ onChange: (event) => {
84
+ setInputValue(event.target.value);
85
+ },
86
+ onFocus: () => {
87
+ setIsFocusInput(true);
88
+ },
89
+ onBlur: () => {
90
+ setIsFocusInput(false);
91
+ setMaxLimitReached(false);
92
+ },
93
+ color: isMaxLimitReached ? "warning" : void 0
94
+ }
95
+ );
96
+ const renderOption = (props, option, state) => virtualize ? [option, state.selected, getOptionLabel, props] : /* @__PURE__ */ jsx(CheckboxItem, { option, selected: state.selected, getOptionLabel, ...props });
97
+ const handleBlur = () => {
98
+ setInputValue("");
99
+ };
100
+ return /* @__PURE__ */ jsx(
101
+ Autocomplete,
102
+ {
103
+ id: id ? `checkbox-autocomplete-${id}` : void 0,
104
+ sx: styles.autocomplete,
105
+ disableCloseOnSelect: true,
106
+ size: "small",
107
+ disableListWrap: true,
108
+ PopperComponent: StyledPopper,
109
+ options,
110
+ noOptionsText: intl.formatMessage({ id: "noOption" }),
111
+ getOptionLabel,
112
+ ...otherProps,
113
+ limitTags: 1,
114
+ multiple: true,
115
+ ListboxComponent: virtualize ? VirtualizedList : void 0,
116
+ renderInput,
117
+ renderOption,
118
+ inputValue,
119
+ onChange: handleChange,
120
+ onBlur: handleBlur
121
+ }
122
+ );
123
+ }
124
+ export {
125
+ CheckboxAutocomplete
126
+ };
@@ -0,0 +1,8 @@
1
+ import { HTMLAttributes } from 'react';
2
+ interface CheckboxItemProps<Value> extends HTMLAttributes<HTMLElement> {
3
+ option: Value;
4
+ selected: boolean;
5
+ getOptionLabel: (option: Value) => string;
6
+ }
7
+ declare function CheckboxItem<Value>({ option, selected, getOptionLabel, ...otherProps }: Readonly<CheckboxItemProps<Value>>): import("react/jsx-runtime").JSX.Element;
8
+ export default CheckboxItem;
@@ -0,0 +1,17 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Typography, Checkbox } from "@mui/material";
3
+ import { OverflowableText } from "../../overflowableText/OverflowableText.js";
4
+ const styles = {
5
+ checkbox: {
6
+ marginRight: 8
7
+ }
8
+ };
9
+ function CheckboxItem({ option, selected, getOptionLabel, ...otherProps }) {
10
+ return /* @__PURE__ */ jsxs(Typography, { component: "li", ...otherProps, noWrap: true, children: [
11
+ /* @__PURE__ */ jsx(Checkbox, { style: styles.checkbox, checked: selected }),
12
+ /* @__PURE__ */ jsx(OverflowableText, { text: getOptionLabel(option) })
13
+ ] });
14
+ }
15
+ export {
16
+ CheckboxItem as default
17
+ };
@@ -0,0 +1,7 @@
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
+ */
7
+ export * from './checkbox-autocomplete';
@@ -0,0 +1,4 @@
1
+ import { CheckboxAutocomplete } from "./checkbox-autocomplete.js";
2
+ export {
3
+ CheckboxAutocomplete
4
+ };
@@ -0,0 +1,15 @@
1
+ import { CSSProperties, HTMLAttributes, Key } from 'react';
2
+ import { RowComponentProps } from 'react-window';
3
+ export type VirtualizedItem = [
4
+ option: string,
5
+ selected: boolean,
6
+ getOptionLabel: (option: string) => string,
7
+ itemProps?: HTMLAttributes<HTMLElement> & {
8
+ key: Key;
9
+ style?: CSSProperties;
10
+ }
11
+ ];
12
+ declare function VirtualizedListItem({ index, itemData, style, }: RowComponentProps & {
13
+ itemData: VirtualizedItem[];
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ export default VirtualizedListItem;
@@ -0,0 +1,27 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import CheckboxItem from "./checkbox-item.js";
3
+ function VirtualizedListItem({
4
+ index,
5
+ itemData,
6
+ style
7
+ }) {
8
+ const [option, selected, getOptionLabel, itemProps] = itemData[index];
9
+ const { key, style: itemStyle, ...restItemProps } = itemProps ?? {};
10
+ return /* @__PURE__ */ jsx(
11
+ CheckboxItem,
12
+ {
13
+ option,
14
+ selected,
15
+ getOptionLabel,
16
+ style: {
17
+ ...itemStyle,
18
+ ...style
19
+ },
20
+ ...restItemProps
21
+ },
22
+ key
23
+ );
24
+ }
25
+ export {
26
+ VirtualizedListItem as default
27
+ };
@@ -0,0 +1,3 @@
1
+ import { HTMLAttributes } from 'react';
2
+ declare const VirtualizedList: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & import('react').RefAttributes<HTMLDivElement>>;
3
+ export default VirtualizedList;
@@ -0,0 +1,30 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { List } from "react-window";
4
+ import VirtualizedListItem from "./virtualized-list-item.js";
5
+ const VirtualizedList = forwardRef((props, ref) => {
6
+ const { children, ...otherProps } = props;
7
+ const itemData = [...children];
8
+ const itemCount = itemData.length;
9
+ const itemSize = 48;
10
+ const getHeight = () => {
11
+ if (itemCount > 8) {
12
+ return 7 * itemSize;
13
+ }
14
+ return itemCount * itemSize;
15
+ };
16
+ return /* @__PURE__ */ jsx("div", { ref, ...otherProps, children: /* @__PURE__ */ jsx(
17
+ List,
18
+ {
19
+ rowProps: { itemData },
20
+ rowHeight: itemSize,
21
+ style: { height: getHeight() },
22
+ overscanCount: 5,
23
+ rowCount: itemCount,
24
+ rowComponent: VirtualizedListItem
25
+ }
26
+ ) });
27
+ });
28
+ export {
29
+ VirtualizedList as default
30
+ };
@@ -0,0 +1,8 @@
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 './use-tabs';
8
+ export * from './use-parameters-form';
@@ -0,0 +1,6 @@
1
+ import { useTabs } from "./use-tabs.js";
2
+ import { useParametersForm } from "./use-parameters-form.js";
3
+ export {
4
+ useParametersForm,
5
+ useTabs
6
+ };
@@ -0,0 +1,13 @@
1
+ import { FieldValues } from 'react-hook-form';
2
+ import { ObjectSchema } from 'yup';
3
+ import { UseComputationParametersFormReturn } from '../utils';
4
+ export type UseParametersFormProps<TParams> = {
5
+ providers: Record<string, string>;
6
+ params: TParams | null;
7
+ name: string | null;
8
+ description: string | null;
9
+ formSchema: ObjectSchema<any>;
10
+ emptyFormData: FieldValues;
11
+ toFormValues: (params: TParams) => FieldValues;
12
+ };
13
+ export declare function useParametersForm<TParams>({ providers, params, name: initialName, description: initialDescription, formSchema: baseFormSchema, emptyFormData, toFormValues, }: Readonly<UseParametersFormProps<TParams>>): UseComputationParametersFormReturn;
@@ -0,0 +1,60 @@
1
+ import { useMemo, useEffect } from "react";
2
+ import { useForm } from "react-hook-form";
3
+ import { yupResolver } from "@hookform/resolvers/yup";
4
+ import "react/jsx-runtime";
5
+ import "@mui/material";
6
+ import "react-intl";
7
+ import "@mui/icons-material";
8
+ import "../../../inputs/reactHookForm/provider/CustomFormProvider.js";
9
+ import "yup";
10
+ import "../../../../utils/conversionUtils.js";
11
+ import "../../../../utils/types/equipmentType.js";
12
+ import "../../../../utils/yupConfig.js";
13
+ import "../../../filter/HeaderFilterForm.js";
14
+ import { getNameElementEditorSchema, getNameElementEditorEmptyFormData } from "../name-element-editor/name-element-editor-utils.js";
15
+ function useParametersForm({
16
+ providers,
17
+ params,
18
+ name: initialName,
19
+ description: initialDescription,
20
+ formSchema: baseFormSchema,
21
+ emptyFormData,
22
+ toFormValues
23
+ }) {
24
+ const paramsLoaded = useMemo(() => !!params, [params]);
25
+ const formattedProviders = useMemo(
26
+ () => Object.entries(providers).map(([key, value]) => ({
27
+ id: key,
28
+ label: value
29
+ })),
30
+ [providers]
31
+ );
32
+ const returnFormSchema = useMemo(() => {
33
+ return initialName === null ? baseFormSchema : baseFormSchema.concat(getNameElementEditorSchema(initialName));
34
+ }, [initialName, baseFormSchema]);
35
+ const newEmptyFormData = useMemo(() => {
36
+ return {
37
+ ...initialName === null ? {} : getNameElementEditorEmptyFormData(initialName, initialDescription),
38
+ ...emptyFormData
39
+ };
40
+ }, [initialName, initialDescription, emptyFormData]);
41
+ const returnFormMethods = useForm({
42
+ defaultValues: newEmptyFormData,
43
+ resolver: yupResolver(returnFormSchema)
44
+ });
45
+ const { reset } = returnFormMethods;
46
+ useEffect(() => {
47
+ if (params) {
48
+ reset(toFormValues(params));
49
+ }
50
+ }, [params, paramsLoaded, reset, toFormValues]);
51
+ return {
52
+ formMethods: returnFormMethods,
53
+ formSchema: returnFormSchema,
54
+ paramsLoaded,
55
+ formattedProviders
56
+ };
57
+ }
58
+ export {
59
+ useParametersForm
60
+ };
@@ -0,0 +1,13 @@
1
+ import { SyntheticEvent } from 'react';
2
+ import { FieldErrors } from 'react-hook-form';
3
+ export type UseTabs<TTabValue extends string> = {
4
+ selectedTab: TTabValue;
5
+ tabsWithError: TTabValue[];
6
+ onTabChange: (event: SyntheticEvent, newValue: TTabValue) => void;
7
+ onError: (errors: FieldErrors) => void;
8
+ };
9
+ export type UseTabsProps<TTabValue extends string> = {
10
+ defaultTab: TTabValue;
11
+ tabEnum: Record<string, TTabValue>;
12
+ };
13
+ export declare function useTabs<TTabValue extends string>({ defaultTab, tabEnum, }: Readonly<UseTabsProps<TTabValue>>): UseTabs<TTabValue>;
@@ -0,0 +1,60 @@
1
+ import { useState, useCallback } from "react";
2
+ import { useFormState } from "react-hook-form";
3
+ import { isObjectEmpty } from "../../../../utils/functions.js";
4
+ function useTabs({
5
+ defaultTab,
6
+ tabEnum
7
+ }) {
8
+ const { errors } = useFormState();
9
+ const [selectedTab, setSelectedTab] = useState(defaultTab);
10
+ const [tabsWithError, setTabsWithError] = useState([]);
11
+ const onTabChange = useCallback(
12
+ (event, newSelectedTab) => {
13
+ setSelectedTab(newSelectedTab);
14
+ if (!errors || isObjectEmpty(errors)) {
15
+ return;
16
+ }
17
+ const tabsHasError = [];
18
+ Object.values(tabEnum).forEach((tabValue) => {
19
+ if (errors?.[tabValue]) {
20
+ tabsHasError.push(tabValue);
21
+ }
22
+ });
23
+ if (tabsHasError.includes(newSelectedTab)) {
24
+ setTabsWithError(tabsHasError.filter((errorTab) => errorTab !== newSelectedTab));
25
+ } else {
26
+ setTabsWithError(tabsHasError);
27
+ }
28
+ },
29
+ [errors, tabEnum]
30
+ );
31
+ const onError = useCallback(
32
+ (_errors) => {
33
+ if (!_errors || isObjectEmpty(_errors)) {
34
+ return;
35
+ }
36
+ const tabsHasError = [];
37
+ Object.values(tabEnum).forEach((tabValue) => {
38
+ if (_errors?.[tabValue]) {
39
+ tabsHasError.push(tabValue);
40
+ }
41
+ });
42
+ if (tabsHasError.includes(selectedTab)) {
43
+ setTabsWithError(tabsHasError.filter((errorTab) => errorTab !== selectedTab));
44
+ } else if (tabsHasError.length > 0) {
45
+ setSelectedTab(tabsHasError[0]);
46
+ setTabsWithError(tabsHasError.filter((errorTab, index, arr) => errorTab !== arr[0]));
47
+ }
48
+ },
49
+ [selectedTab, tabEnum]
50
+ );
51
+ return {
52
+ selectedTab,
53
+ tabsWithError,
54
+ onTabChange,
55
+ onError
56
+ };
57
+ }
58
+ export {
59
+ useTabs
60
+ };
@@ -15,3 +15,4 @@ export * from './widget';
15
15
  export * from './voltage-level-table';
16
16
  export * from './limitreductions';
17
17
  export * from './contingency-table';
18
+ export * from './hook';