@gridsuite/commons-ui 0.107.0 → 0.108.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/dialogs/elementSaveDialog/ElementSaveDialog.js +10 -10
  2. package/dist/components/directoryItemSelector/DirectoryItemSelector.js +1 -0
  3. package/dist/components/dnd-table/dnd-table-add-rows-dialog.d.ts +13 -0
  4. package/dist/components/dnd-table/dnd-table-add-rows-dialog.js +69 -0
  5. package/dist/components/dnd-table/dnd-table-bottom-left-buttons.d.ts +17 -0
  6. package/dist/components/dnd-table/dnd-table-bottom-left-buttons.js +48 -0
  7. package/dist/components/dnd-table/dnd-table-bottom-right-buttons.d.ts +17 -0
  8. package/dist/components/dnd-table/dnd-table-bottom-right-buttons.js +104 -0
  9. package/dist/components/dnd-table/dnd-table.d.ts +28 -0
  10. package/dist/components/dnd-table/dnd-table.js +394 -0
  11. package/dist/components/dnd-table/dnd-table.type.d.ts +51 -0
  12. package/dist/components/dnd-table/dnd-table.type.js +16 -0
  13. package/dist/components/dnd-table/index.d.ts +11 -0
  14. package/dist/components/dnd-table/index.js +14 -0
  15. package/dist/components/filter/HeaderFilterForm.js +4 -4
  16. package/dist/components/filter/expert/expertFilterConstants.d.ts +15 -0
  17. package/dist/components/filter/expert/expertFilterConstants.js +28 -0
  18. package/dist/components/filter/expert/expertFilterUtils.js +1 -1
  19. package/dist/components/index.d.ts +1 -0
  20. package/dist/components/index.js +57 -1
  21. package/dist/components/inputs/index.js +6 -0
  22. package/dist/components/inputs/reactHookForm/chip-items-input.d.ts +13 -0
  23. package/dist/components/inputs/reactHookForm/chip-items-input.js +129 -0
  24. package/dist/components/inputs/reactHookForm/index.d.ts +2 -0
  25. package/dist/components/inputs/reactHookForm/index.js +6 -0
  26. package/dist/components/inputs/reactHookForm/tableInputs/index.d.ts +8 -0
  27. package/dist/components/inputs/reactHookForm/tableInputs/index.js +6 -0
  28. package/dist/components/inputs/reactHookForm/tableInputs/table-numerical-input.d.ts +12 -0
  29. package/dist/components/inputs/reactHookForm/tableInputs/table-numerical-input.js +110 -0
  30. package/dist/components/inputs/reactHookForm/tableInputs/table-text-input.d.ts +8 -0
  31. package/dist/components/inputs/reactHookForm/tableInputs/table-text-input.js +43 -0
  32. package/dist/components/inputs/reactQueryBuilder/ValueEditor.js +4 -2
  33. package/dist/components/parameters/common/ProviderParam.js +6 -6
  34. package/dist/components/parameters/common/constant.d.ts +8 -0
  35. package/dist/components/parameters/common/constant.js +12 -1
  36. package/dist/components/parameters/common/index.js +3 -1
  37. package/dist/components/parameters/common/limitreductions/limit-reduction-table-cell.js +7 -7
  38. package/dist/components/parameters/common/limitreductions/limit-reductions-table-form.js +6 -6
  39. package/dist/components/parameters/common/name-element-editor/name-element-editor-form.js +8 -8
  40. package/dist/components/parameters/common/name-element-editor/name-element-editor-utils.js +11 -10
  41. package/dist/components/parameters/common/voltage-level-table/custom-voltage-level-table-cell.js +7 -7
  42. package/dist/components/parameters/common/widget/parameter-float.js +6 -6
  43. package/dist/components/parameters/common/widget/parameter-line-directory-items-input.js +11 -10
  44. package/dist/components/parameters/common/widget/parameter-line-slider.js +6 -6
  45. package/dist/components/parameters/index.d.ts +1 -0
  46. package/dist/components/parameters/index.js +39 -1
  47. package/dist/components/parameters/loadflow/load-flow-general-parameters.js +6 -6
  48. package/dist/components/parameters/loadflow/load-flow-parameter-field.js +6 -6
  49. package/dist/components/parameters/loadflow/load-flow-parameters-form.js +6 -6
  50. package/dist/components/parameters/loadflow/load-flow-parameters-header.js +6 -6
  51. package/dist/components/parameters/loadflow/load-flow-parameters-inline.js +3 -3
  52. package/dist/components/parameters/loadflow/use-load-flow-parameters-form.js +2 -1
  53. package/dist/components/parameters/network-visualizations/network-area-diagram-parameters.js +6 -6
  54. package/dist/components/parameters/network-visualizations/network-visualizations-form.js +7 -7
  55. package/dist/components/parameters/network-visualizations/network-visualizations-parameters-dialog.js +3 -3
  56. package/dist/components/parameters/network-visualizations/network-visualizations-parameters-inline.js +2 -2
  57. package/dist/components/parameters/network-visualizations/use-network-visualizations-parameters-form.js +12 -11
  58. package/dist/components/parameters/short-circuit/short-circuit-fields.js +5 -5
  59. package/dist/components/parameters/short-circuit/short-circuit-parameters-dialog.js +3 -3
  60. package/dist/components/parameters/short-circuit/short-circuit-parameters-form.js +6 -6
  61. package/dist/components/parameters/short-circuit/short-circuit-parameters-inline.js +2 -2
  62. package/dist/components/parameters/short-circuit/use-short-circuit-parameters-form.js +11 -10
  63. package/dist/components/parameters/voltage-init/constants.d.ts +39 -0
  64. package/dist/components/parameters/voltage-init/constants.js +65 -0
  65. package/dist/components/parameters/voltage-init/equipment-selection-parameters.d.ts +7 -0
  66. package/dist/components/parameters/voltage-init/equipment-selection-parameters.js +119 -0
  67. package/dist/components/parameters/voltage-init/general-parameters.d.ts +4 -0
  68. package/dist/components/parameters/voltage-init/general-parameters.js +112 -0
  69. package/dist/components/parameters/voltage-init/index.d.ts +10 -0
  70. package/dist/components/parameters/voltage-init/index.js +38 -0
  71. package/dist/components/parameters/voltage-init/use-voltage-init-parameters-form.d.ts +32 -0
  72. package/dist/components/parameters/voltage-init/use-voltage-init-parameters-form.js +218 -0
  73. package/dist/components/parameters/voltage-init/voltage-init-form-utils.d.ts +4 -0
  74. package/dist/components/parameters/voltage-init/voltage-init-form-utils.js +220 -0
  75. package/dist/components/parameters/voltage-init/voltage-init-parameters-dialog.d.ts +2 -0
  76. package/dist/components/parameters/voltage-init/voltage-init-parameters-dialog.js +97 -0
  77. package/dist/components/parameters/voltage-init/voltage-init-parameters-form.d.ts +30 -0
  78. package/dist/components/parameters/voltage-init/voltage-init-parameters-form.js +150 -0
  79. package/dist/components/parameters/voltage-init/voltage-init-parameters-inline.d.ts +8 -0
  80. package/dist/components/parameters/voltage-init/voltage-init-parameters-inline.js +152 -0
  81. package/dist/components/parameters/voltage-init/voltage-init.type.d.ts +33 -0
  82. package/dist/components/parameters/voltage-init/voltage-init.type.js +8 -0
  83. package/dist/components/parameters/voltage-init/voltage-limits-parameters.d.ts +7 -0
  84. package/dist/components/parameters/voltage-init/voltage-limits-parameters.js +188 -0
  85. package/dist/components/treeViewFinder/TreeViewFinder.d.ts +2 -0
  86. package/dist/index.js +69 -2
  87. package/dist/services/index.d.ts +1 -0
  88. package/dist/services/index.js +6 -2
  89. package/dist/services/study.d.ts +2 -0
  90. package/dist/services/study.js +15 -1
  91. package/dist/services/voltage-init.d.ts +4 -0
  92. package/dist/services/voltage-init.js +14 -0
  93. package/dist/translations/en/dndTableEn.d.ts +16 -0
  94. package/dist/translations/en/dndTableEn.js +13 -0
  95. package/dist/translations/en/filterExpertEn.d.ts +3 -0
  96. package/dist/translations/en/filterExpertEn.js +4 -1
  97. package/dist/translations/en/index.d.ts +1 -0
  98. package/dist/translations/en/index.js +2 -0
  99. package/dist/translations/en/parameters.d.ts +30 -0
  100. package/dist/translations/en/parameters.js +31 -1
  101. package/dist/translations/fr/dndTableFr.d.ts +16 -0
  102. package/dist/translations/fr/dndTableFr.js +13 -0
  103. package/dist/translations/fr/filterExpertFr.d.ts +3 -0
  104. package/dist/translations/fr/filterExpertFr.js +4 -1
  105. package/dist/translations/fr/index.d.ts +1 -0
  106. package/dist/translations/fr/index.js +2 -0
  107. package/dist/translations/fr/parameters.d.ts +31 -0
  108. package/dist/translations/fr/parameters.js +32 -1
  109. package/dist/utils/index.d.ts +1 -0
  110. package/dist/utils/index.js +3 -0
  111. package/dist/utils/types/fieldType.d.ts +3 -0
  112. package/dist/utils/types/fieldType.js +3 -0
  113. package/dist/utils/validation-functions.d.ts +8 -0
  114. package/dist/utils/validation-functions.js +23 -0
  115. package/package.json +1 -1
@@ -0,0 +1,394 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useMemo } from "react";
3
+ import { useFormContext, useWatch } from "react-hook-form";
4
+ import { Grid, TableContainer, Table, TableHead, TableRow, TableCell, Box, TableBody, Tooltip, Checkbox } from "@mui/material";
5
+ import { DragIndicator } from "@mui/icons-material";
6
+ import { DragDropContext, Droppable, Draggable } from "@hello-pangea/dnd";
7
+ import { useIntl } from "react-intl";
8
+ import { SELECTED, MAX_ROWS_NUMBER, DndColumnType } from "./dnd-table.type.js";
9
+ import { DndTableBottomLeftButtons } from "./dnd-table-bottom-left-buttons.js";
10
+ import { DndTableBottomRightButtons } from "./dnd-table-bottom-right-buttons.js";
11
+ import { DndTableAddRowsDialog } from "./dnd-table-add-rows-dialog.js";
12
+ import { ChipItemsInput } from "../inputs/reactHookForm/chip-items-input.js";
13
+ import { DirectoryItemsInput } from "../inputs/reactHookForm/DirectoryItemsInput.js";
14
+ import { RawReadOnlyInput } from "../inputs/reactHookForm/RawReadOnlyInput.js";
15
+ import "../inputs/reactHookForm/agGridTable/BottomRightButtons.js";
16
+ import "../customAGGrid/customAggrid.js";
17
+ import "ag-grid-community";
18
+ import "react-papaparse";
19
+ import "react-csv-downloader";
20
+ import { AutocompleteInput } from "../inputs/reactHookForm/autocompleteInputs/AutocompleteInput.js";
21
+ import { CheckboxInput } from "../inputs/reactHookForm/booleans/CheckboxInput.js";
22
+ import { ErrorInput } from "../inputs/reactHookForm/errorManagement/ErrorInput.js";
23
+ import { FieldErrorAlert } from "../inputs/reactHookForm/errorManagement/FieldErrorAlert.js";
24
+ import "yup";
25
+ import "../inputs/reactHookForm/provider/CustomFormProvider.js";
26
+ import "../inputs/reactHookForm/numbers/RangeInput.js";
27
+ import "localized-countries";
28
+ import "localized-countries/data/fr";
29
+ import "localized-countries/data/en";
30
+ import { TableNumericalInput } from "../inputs/reactHookForm/tableInputs/table-numerical-input.js";
31
+ import { TableTextInput } from "../inputs/reactHookForm/tableInputs/table-text-input.js";
32
+ import "../../utils/conversionUtils.js";
33
+ import "../../utils/types/equipmentType.js";
34
+ import "../../utils/yupConfig.js";
35
+ import "notistack";
36
+ import "@react-querybuilder/material";
37
+ import "../filter/expert/expertFilterConstants.js";
38
+ import "../inputs/reactQueryBuilder/CustomReactQueryBuilder.js";
39
+ import "uuid";
40
+ import "../inputs/reactQueryBuilder/PropertyValueEditor.js";
41
+ import "react-querybuilder";
42
+ const styles = {
43
+ columnsStyle: {
44
+ display: "inline-flex",
45
+ justifyContent: "space-between",
46
+ alignItems: "center",
47
+ margin: 1,
48
+ textTransform: "none"
49
+ }
50
+ };
51
+ function MultiCheckbox({
52
+ arrayFormName,
53
+ handleClickCheck,
54
+ handleClickUncheck,
55
+ ...props
56
+ }) {
57
+ const arrayToWatch = useWatch({
58
+ name: arrayFormName
59
+ });
60
+ const allRowSelected = useMemo(
61
+ () => arrayToWatch ? arrayToWatch == null ? void 0 : arrayToWatch.every((row) => row[SELECTED]) : false,
62
+ [arrayToWatch]
63
+ );
64
+ const someRowSelected = useMemo(
65
+ () => arrayToWatch ? arrayToWatch == null ? void 0 : arrayToWatch.some((row) => row[SELECTED]) : false,
66
+ [arrayToWatch]
67
+ );
68
+ return /* @__PURE__ */ jsx(
69
+ Checkbox,
70
+ {
71
+ checked: (arrayToWatch == null ? void 0 : arrayToWatch.length) > 0 && allRowSelected,
72
+ indeterminate: someRowSelected && !allRowSelected,
73
+ onChange: (event) => {
74
+ if (event.target.checked) {
75
+ handleClickCheck();
76
+ } else {
77
+ handleClickUncheck();
78
+ }
79
+ },
80
+ ...props
81
+ }
82
+ );
83
+ }
84
+ function DefaultTableCell({ arrayFormName, rowIndex, column, ...props }) {
85
+ return /* @__PURE__ */ jsx(TableCell, { sx: { padding: 1 }, children: /* @__PURE__ */ jsx(RawReadOnlyInput, { name: `${arrayFormName}[${rowIndex}].${column.dataKey}`, ...props }) }, column.dataKey);
86
+ }
87
+ function EditableTableCell({
88
+ arrayFormName,
89
+ rowIndex,
90
+ column,
91
+ previousValue,
92
+ valueModified,
93
+ ...props
94
+ }) {
95
+ return /* @__PURE__ */ jsxs(TableCell, { sx: { padding: 0.5, maxWidth: column.maxWidth }, children: [
96
+ column.type === DndColumnType.NUMERIC && /* @__PURE__ */ jsx(
97
+ TableNumericalInput,
98
+ {
99
+ ...props,
100
+ name: `${arrayFormName}[${rowIndex}].${column.dataKey}`,
101
+ previousValue,
102
+ valueModified,
103
+ adornment: column == null ? void 0 : column.adornment,
104
+ isClearable: column == null ? void 0 : column.clearable,
105
+ style: {
106
+ textAlign: column == null ? void 0 : column.textAlign
107
+ }
108
+ }
109
+ ),
110
+ column.type === DndColumnType.TEXT && /* @__PURE__ */ jsx(
111
+ TableTextInput,
112
+ {
113
+ ...props,
114
+ name: `${arrayFormName}[${rowIndex}].${column.dataKey}`,
115
+ showErrorMsg: column.showErrorMsg
116
+ }
117
+ ),
118
+ column.type === DndColumnType.AUTOCOMPLETE && /* @__PURE__ */ jsx(
119
+ AutocompleteInput,
120
+ {
121
+ forcePopupIcon: true,
122
+ freeSolo: true,
123
+ name: `${arrayFormName}[${rowIndex}].${column.dataKey}`,
124
+ options: column.options,
125
+ inputTransform: (value) => value ?? "",
126
+ outputTransform: (value) => value,
127
+ size: "small"
128
+ }
129
+ ),
130
+ column.type === DndColumnType.DIRECTORY_ITEMS && /* @__PURE__ */ jsx(
131
+ DirectoryItemsInput,
132
+ {
133
+ name: `${arrayFormName}[${rowIndex}].${column.dataKey}`,
134
+ equipmentTypes: column.equipmentTypes,
135
+ elementType: column.elementType,
136
+ titleId: column.titleId,
137
+ hideErrorMessage: true,
138
+ label: void 0
139
+ }
140
+ ),
141
+ column.type === DndColumnType.CHIP_ITEMS && /* @__PURE__ */ jsx(ChipItemsInput, { name: `${arrayFormName}[${rowIndex}].${column.dataKey}`, hideErrorMessage: true }),
142
+ column.type === DndColumnType.CUSTOM && column.component(rowIndex)
143
+ ] }, column.dataKey);
144
+ }
145
+ function DndTable(props) {
146
+ const {
147
+ arrayFormName,
148
+ useFieldArrayOutput,
149
+ columnsDefinition,
150
+ tableHeight,
151
+ allowedToAddRows = () => Promise.resolve(true),
152
+ createRows,
153
+ disabled = false,
154
+ withResetButton = false,
155
+ withAddRowsDialog = true,
156
+ previousValues,
157
+ disableTableCell,
158
+ getPreviousValue,
159
+ isValueModified,
160
+ disableAddingRows = false,
161
+ showMoveArrow = true,
162
+ disableDragAndDrop = false,
163
+ handleUploadButton = void 0,
164
+ uploadButtonMessageId = void 0,
165
+ handleResetButton = void 0,
166
+ resetButtonMessageId = void 0
167
+ } = props;
168
+ const intl = useIntl();
169
+ const { getValues, setValue, setError, clearErrors } = useFormContext();
170
+ const {
171
+ fields: currentRows,
172
+ // don't use it to access form data ! check doc
173
+ move,
174
+ swap,
175
+ append,
176
+ remove
177
+ } = useFieldArrayOutput;
178
+ const [openAddRowsDialog, setOpenAddRowsDialog] = useState(false);
179
+ function renderTableCell(rowId, rowIndex, column) {
180
+ const CustomTableCell = column.editable ? EditableTableCell : DefaultTableCell;
181
+ return /* @__PURE__ */ jsx(
182
+ CustomTableCell,
183
+ {
184
+ arrayFormName,
185
+ rowIndex,
186
+ column,
187
+ disabled: disableTableCell ? disableTableCell(rowIndex, column, arrayFormName, previousValues) : disabled,
188
+ previousValue: getPreviousValue ? getPreviousValue(rowIndex, column, arrayFormName, previousValues) : void 0,
189
+ valueModified: isValueModified ? isValueModified(rowIndex, arrayFormName) : false
190
+ },
191
+ rowId + column.dataKey
192
+ );
193
+ }
194
+ const addNewRows = (numberOfRows) => {
195
+ if (currentRows.length + numberOfRows > MAX_ROWS_NUMBER) {
196
+ setError(arrayFormName, {
197
+ type: "custom",
198
+ message: intl.formatMessage(
199
+ {
200
+ id: "MaximumRowNumberError"
201
+ },
202
+ {
203
+ value: MAX_ROWS_NUMBER
204
+ }
205
+ )
206
+ });
207
+ return;
208
+ }
209
+ clearErrors(arrayFormName);
210
+ const rowsToAdd = createRows == null ? void 0 : createRows(numberOfRows).map((row) => {
211
+ return { ...row, [SELECTED]: false };
212
+ });
213
+ append(rowsToAdd);
214
+ };
215
+ const handleAddRowsButton = () => {
216
+ allowedToAddRows().then((isAllowed) => {
217
+ if (isAllowed) {
218
+ if (withAddRowsDialog) {
219
+ setOpenAddRowsDialog(true);
220
+ } else {
221
+ addNewRows(1);
222
+ }
223
+ }
224
+ });
225
+ };
226
+ const handleCloseAddRowsDialog = () => {
227
+ setOpenAddRowsDialog(false);
228
+ };
229
+ const deleteSelectedRows = () => {
230
+ const currentRowsValues = getValues(arrayFormName);
231
+ const rowsToDelete = [];
232
+ for (let i = 0; i < currentRowsValues.length; i++) {
233
+ if (currentRowsValues[i][SELECTED]) {
234
+ rowsToDelete.push(i);
235
+ }
236
+ }
237
+ remove(rowsToDelete);
238
+ };
239
+ const selectAllRows = () => {
240
+ for (let i = 0; i < currentRows.length; i++) {
241
+ setValue(`${arrayFormName}[${i}].${SELECTED}`, true);
242
+ }
243
+ };
244
+ const unselectAllRows = () => {
245
+ for (let i = 0; i < currentRows.length; i++) {
246
+ setValue(`${arrayFormName}[${i}].${SELECTED}`, false);
247
+ }
248
+ };
249
+ const moveUpSelectedRows = () => {
250
+ const currentRowsValues = getValues(arrayFormName);
251
+ if (currentRowsValues[0][SELECTED]) {
252
+ return;
253
+ }
254
+ for (let i = 1; i < currentRowsValues.length; i++) {
255
+ if (currentRowsValues[i][SELECTED]) {
256
+ swap(i - 1, i);
257
+ }
258
+ }
259
+ };
260
+ const moveDownSelectedRows = () => {
261
+ const currentRowsValues = getValues(arrayFormName);
262
+ if (currentRowsValues[currentRowsValues.length - 1][SELECTED]) {
263
+ return;
264
+ }
265
+ for (let i = currentRowsValues.length - 2; i >= 0; i--) {
266
+ if (currentRowsValues[i][SELECTED]) {
267
+ swap(i, i + 1);
268
+ }
269
+ }
270
+ };
271
+ const onDragEnd = (result) => {
272
+ if (!result.destination) {
273
+ return;
274
+ }
275
+ move(result.source.index, result.destination.index);
276
+ };
277
+ function renderTableHead() {
278
+ return /* @__PURE__ */ jsx(TableHead, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
279
+ !disableDragAndDrop && /* @__PURE__ */ jsx(TableCell, { sx: { width: "3%" } }),
280
+ /* @__PURE__ */ jsx(TableCell, { sx: { width: "5%", textAlign: "center" }, children: /* @__PURE__ */ jsx(
281
+ MultiCheckbox,
282
+ {
283
+ arrayFormName,
284
+ handleClickCheck: selectAllRows,
285
+ handleClickUncheck: unselectAllRows,
286
+ disabled: disabled || currentRows.length === 0
287
+ }
288
+ ) }),
289
+ columnsDefinition.map((column) => /* @__PURE__ */ jsx(TableCell, { sx: { width: column.width, maxWidth: column.maxWidth }, children: /* @__PURE__ */ jsxs(Box, { sx: styles.columnsStyle, children: [
290
+ column.label,
291
+ column.extra
292
+ ] }) }, column.dataKey))
293
+ ] }) });
294
+ }
295
+ function renderTableBody(providedDroppable) {
296
+ return /* @__PURE__ */ jsxs(TableBody, { children: [
297
+ currentRows.map((row, index) => /* @__PURE__ */ jsx(
298
+ Draggable,
299
+ {
300
+ draggableId: row.id.toString(),
301
+ index,
302
+ isDragDisabled: disableDragAndDrop,
303
+ children: (provided) => /* @__PURE__ */ jsxs(TableRow, { ref: provided.innerRef, ...provided.draggableProps, children: [
304
+ !disableDragAndDrop && /* @__PURE__ */ jsx(
305
+ Tooltip,
306
+ {
307
+ title: intl.formatMessage({
308
+ id: "DragAndDrop"
309
+ }),
310
+ placement: "right",
311
+ children: /* @__PURE__ */ jsx(
312
+ TableCell,
313
+ {
314
+ sx: { textAlign: "center" },
315
+ ...disabled ? {} : { ...provided.dragHandleProps },
316
+ children: /* @__PURE__ */ jsx(DragIndicator, {})
317
+ }
318
+ )
319
+ }
320
+ ),
321
+ /* @__PURE__ */ jsx(TableCell, { sx: { textAlign: "center" }, children: /* @__PURE__ */ jsx(
322
+ CheckboxInput,
323
+ {
324
+ name: `${arrayFormName}[${index}].${SELECTED}`,
325
+ formProps: { disabled }
326
+ }
327
+ ) }),
328
+ columnsDefinition.map((column) => renderTableCell(row.id, index, column))
329
+ ] })
330
+ },
331
+ row.id
332
+ )),
333
+ providedDroppable.placeholder
334
+ ] });
335
+ }
336
+ return /* @__PURE__ */ jsxs(Grid, { item: true, container: true, spacing: 1, children: [
337
+ /* @__PURE__ */ jsxs(Grid, { item: true, container: true, children: [
338
+ /* @__PURE__ */ jsx(DragDropContext, { onDragEnd, children: /* @__PURE__ */ jsx(Droppable, { droppableId: "tapTable", isDropDisabled: disabled, children: (provided) => /* @__PURE__ */ jsx(
339
+ TableContainer,
340
+ {
341
+ ref: provided.innerRef,
342
+ ...provided.droppableProps,
343
+ sx: {
344
+ height: tableHeight,
345
+ border: "solid 1px rgba(0,0,0,0.1)"
346
+ },
347
+ children: /* @__PURE__ */ jsxs(Table, { stickyHeader: true, size: "small", padding: "none", children: [
348
+ renderTableHead(),
349
+ renderTableBody(provided)
350
+ ] })
351
+ }
352
+ ) }) }),
353
+ /* @__PURE__ */ jsx(ErrorInput, { name: arrayFormName, InputField: FieldErrorAlert })
354
+ ] }),
355
+ /* @__PURE__ */ jsxs(Grid, { container: true, item: true, children: [
356
+ handleResetButton && handleUploadButton && resetButtonMessageId && uploadButtonMessageId ? /* @__PURE__ */ jsx(
357
+ DndTableBottomLeftButtons,
358
+ {
359
+ withResetButton,
360
+ disableUploadButton: disableAddingRows,
361
+ disabled,
362
+ handleUploadButton,
363
+ uploadButtonMessageId,
364
+ handleResetButton,
365
+ resetButtonMessageId
366
+ }
367
+ ) : null,
368
+ /* @__PURE__ */ jsx(
369
+ DndTableBottomRightButtons,
370
+ {
371
+ arrayFormName,
372
+ handleAddButton: handleAddRowsButton,
373
+ handleDeleteButton: deleteSelectedRows,
374
+ handleMoveUpButton: moveUpSelectedRows,
375
+ handleMoveDownButton: moveDownSelectedRows,
376
+ disableAddingRows,
377
+ showMoveArrow,
378
+ disabled
379
+ }
380
+ )
381
+ ] }),
382
+ /* @__PURE__ */ jsx(
383
+ DndTableAddRowsDialog,
384
+ {
385
+ open: openAddRowsDialog,
386
+ handleAddButton: addNewRows,
387
+ onClose: handleCloseAddRowsDialog
388
+ }
389
+ )
390
+ ] });
391
+ }
392
+ export {
393
+ DndTable
394
+ };
@@ -0,0 +1,51 @@
1
+ import { ReactNode } from 'react';
2
+ import { ElementType, EquipmentType } from '../../utils';
3
+ export declare const SELECTED = "selected";
4
+ export declare const MAX_ROWS_NUMBER = 100;
5
+ export declare enum DndColumnType {
6
+ TEXT = "TEXT",
7
+ NUMERIC = "NUMERIC",
8
+ AUTOCOMPLETE = "AUTOCOMPLETE",
9
+ CHIP_ITEMS = "CHIP_ITEMS",
10
+ DIRECTORY_ITEMS = "DIRECTORY_ITEMS",
11
+ CUSTOM = "CUSTOM"
12
+ }
13
+ export interface ColumnBase {
14
+ dataKey: string;
15
+ maxWidth?: number | string;
16
+ width?: number | string;
17
+ label?: string;
18
+ extra?: JSX.Element;
19
+ editable?: boolean;
20
+ type: DndColumnType;
21
+ }
22
+ export interface ColumnText extends ColumnBase {
23
+ type: DndColumnType.TEXT;
24
+ showErrorMsg?: boolean;
25
+ }
26
+ export interface ColumnNumeric extends ColumnBase {
27
+ type: DndColumnType.NUMERIC;
28
+ adornment?: {
29
+ text: string;
30
+ };
31
+ clearable?: boolean;
32
+ textAlign?: 'right' | 'left';
33
+ }
34
+ export interface ColumnAutocomplete extends ColumnBase {
35
+ type: DndColumnType.AUTOCOMPLETE;
36
+ options: string[];
37
+ }
38
+ export interface ColumnDirectoryItem extends ColumnBase {
39
+ type: DndColumnType.DIRECTORY_ITEMS;
40
+ equipmentTypes: EquipmentType[];
41
+ elementType: ElementType;
42
+ titleId: string;
43
+ }
44
+ export interface ColumnChipsItem extends ColumnBase {
45
+ type: DndColumnType.CHIP_ITEMS;
46
+ }
47
+ export interface ColumnCustom extends ColumnBase {
48
+ type: DndColumnType.CUSTOM;
49
+ component: (rowIndex: number) => ReactNode;
50
+ }
51
+ export type DndColumn = ColumnNumeric | ColumnAutocomplete | ColumnText | ColumnDirectoryItem | ColumnChipsItem | ColumnCustom;
@@ -0,0 +1,16 @@
1
+ const SELECTED = "selected";
2
+ const MAX_ROWS_NUMBER = 100;
3
+ var DndColumnType = /* @__PURE__ */ ((DndColumnType2) => {
4
+ DndColumnType2["TEXT"] = "TEXT";
5
+ DndColumnType2["NUMERIC"] = "NUMERIC";
6
+ DndColumnType2["AUTOCOMPLETE"] = "AUTOCOMPLETE";
7
+ DndColumnType2["CHIP_ITEMS"] = "CHIP_ITEMS";
8
+ DndColumnType2["DIRECTORY_ITEMS"] = "DIRECTORY_ITEMS";
9
+ DndColumnType2["CUSTOM"] = "CUSTOM";
10
+ return DndColumnType2;
11
+ })(DndColumnType || {});
12
+ export {
13
+ DndColumnType,
14
+ MAX_ROWS_NUMBER,
15
+ SELECTED
16
+ };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2025, 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 './dnd-table';
8
+ export * from './dnd-table.type';
9
+ export * from './dnd-table-add-rows-dialog';
10
+ export * from './dnd-table-bottom-left-buttons';
11
+ export * from './dnd-table-bottom-right-buttons';
@@ -0,0 +1,14 @@
1
+ import { DndTable } from "./dnd-table.js";
2
+ import { DndColumnType, MAX_ROWS_NUMBER, SELECTED } from "./dnd-table.type.js";
3
+ import { DndTableAddRowsDialog } from "./dnd-table-add-rows-dialog.js";
4
+ import { DndTableBottomLeftButtons } from "./dnd-table-bottom-left-buttons.js";
5
+ import { DndTableBottomRightButtons } from "./dnd-table-bottom-right-buttons.js";
6
+ export {
7
+ DndColumnType,
8
+ DndTable,
9
+ DndTableAddRowsDialog,
10
+ DndTableBottomLeftButtons,
11
+ DndTableBottomRightButtons,
12
+ MAX_ROWS_NUMBER,
13
+ SELECTED
14
+ };
@@ -10,9 +10,12 @@ import "../../utils/yupConfig.js";
10
10
  import "react-intl";
11
11
  import "react";
12
12
  import "react-hook-form";
13
+ import "localized-countries";
14
+ import "localized-countries/data/fr";
15
+ import "localized-countries/data/en";
16
+ import "notistack";
13
17
  import "../inputs/reactHookForm/provider/CustomFormProvider.js";
14
18
  import * as yup from "yup";
15
- import "notistack";
16
19
  import "../overflowableText/OverflowableText.js";
17
20
  import "../treeViewFinder/TreeViewFinder.js";
18
21
  import "../inputs/reactHookForm/agGridTable/BottomRightButtons.js";
@@ -21,9 +24,6 @@ import "ag-grid-community";
21
24
  import "react-papaparse";
22
25
  import "react-csv-downloader";
23
26
  import "../inputs/reactHookForm/numbers/RangeInput.js";
24
- import "localized-countries";
25
- import "localized-countries/data/fr";
26
- import "localized-countries/data/en";
27
27
  import { DescriptionField } from "../inputs/reactHookForm/text/DescriptionField.js";
28
28
  import { UniqueNameInput } from "../inputs/reactHookForm/text/UniqueNameInput.js";
29
29
  import "@react-querybuilder/material";
@@ -1155,5 +1155,20 @@ export declare const FIELDS_OPTIONS: {
1155
1155
  dataType: DataType;
1156
1156
  inputType: string;
1157
1157
  };
1158
+ SUBSTATION_ID: {
1159
+ name: FieldType;
1160
+ label: string;
1161
+ dataType: DataType;
1162
+ };
1163
+ SUBSTATION_ID_1: {
1164
+ name: FieldType;
1165
+ label: string;
1166
+ dataType: DataType;
1167
+ };
1168
+ SUBSTATION_ID_2: {
1169
+ name: FieldType;
1170
+ label: string;
1171
+ dataType: DataType;
1172
+ };
1158
1173
  };
1159
1174
  export declare const EXPERT_FILTER_FIELDS: Record<string, Field[]>;
@@ -1096,6 +1096,21 @@ const FIELDS_OPTIONS = {
1096
1096
  unit: KILO_AMPERE,
1097
1097
  dataType: DataType.NUMBER,
1098
1098
  inputType: "number"
1099
+ },
1100
+ SUBSTATION_ID: {
1101
+ name: FieldType.SUBSTATION_ID,
1102
+ label: "substationId",
1103
+ dataType: DataType.STRING
1104
+ },
1105
+ SUBSTATION_ID_1: {
1106
+ name: FieldType.SUBSTATION_ID_1,
1107
+ label: "substationId1",
1108
+ dataType: DataType.STRING
1109
+ },
1110
+ SUBSTATION_ID_2: {
1111
+ name: FieldType.SUBSTATION_ID_2,
1112
+ label: "substationId2",
1113
+ dataType: DataType.STRING
1099
1114
  }
1100
1115
  };
1101
1116
  const EXPERT_FILTER_FIELDS = {
@@ -1108,6 +1123,7 @@ const EXPERT_FILTER_FIELDS = {
1108
1123
  FIELDS_OPTIONS.LOW_VOLTAGE_LIMIT,
1109
1124
  FIELDS_OPTIONS.HIGH_VOLTAGE_LIMIT,
1110
1125
  FIELDS_OPTIONS.PROPERTY,
1126
+ FIELDS_OPTIONS.SUBSTATION_ID,
1111
1127
  FIELDS_OPTIONS.SUBSTATION_PROPERTY,
1112
1128
  FIELDS_OPTIONS.LOW_SHORT_CIRCUIT_CURRENT_LIMIT,
1113
1129
  FIELDS_OPTIONS.HIGH_SHORT_CIRCUIT_CURRENT_LIMIT
@@ -1130,6 +1146,8 @@ const EXPERT_FILTER_FIELDS = {
1130
1146
  FIELDS_OPTIONS.SHUNT_SUSCEPTANCE_1,
1131
1147
  FIELDS_OPTIONS.SHUNT_SUSCEPTANCE_2,
1132
1148
  FIELDS_OPTIONS.PROPERTY,
1149
+ FIELDS_OPTIONS.SUBSTATION_ID_1,
1150
+ FIELDS_OPTIONS.SUBSTATION_ID_2,
1133
1151
  FIELDS_OPTIONS.SUBSTATION_PROPERTY_1,
1134
1152
  FIELDS_OPTIONS.SUBSTATION_PROPERTY_2,
1135
1153
  FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY_1,
@@ -1160,6 +1178,7 @@ const EXPERT_FILTER_FIELDS = {
1160
1178
  FIELDS_OPTIONS.PHASE_REGULATION_MODE,
1161
1179
  FIELDS_OPTIONS.PHASE_REGULATION_VALUE,
1162
1180
  FIELDS_OPTIONS.PROPERTY,
1181
+ FIELDS_OPTIONS.SUBSTATION_ID,
1163
1182
  FIELDS_OPTIONS.SUBSTATION_PROPERTY,
1164
1183
  FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY_1,
1165
1184
  FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY_2
@@ -1242,6 +1261,7 @@ const EXPERT_FILTER_FIELDS = {
1242
1261
  FIELDS_OPTIONS.PHASE_REGULATION_MODE_2,
1243
1262
  FIELDS_OPTIONS.PHASE_REGULATION_MODE_3,
1244
1263
  FIELDS_OPTIONS.PROPERTY,
1264
+ FIELDS_OPTIONS.SUBSTATION_ID,
1245
1265
  FIELDS_OPTIONS.SUBSTATION_PROPERTY,
1246
1266
  {
1247
1267
  ...FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY_1,
@@ -1273,6 +1293,7 @@ const EXPERT_FILTER_FIELDS = {
1273
1293
  FIELDS_OPTIONS.PLANNED_OUTAGE_RATE,
1274
1294
  FIELDS_OPTIONS.FORCED_OUTAGE_RATE,
1275
1295
  FIELDS_OPTIONS.PROPERTY,
1296
+ FIELDS_OPTIONS.SUBSTATION_ID,
1276
1297
  FIELDS_OPTIONS.SUBSTATION_PROPERTY,
1277
1298
  FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY
1278
1299
  ],
@@ -1288,6 +1309,7 @@ const EXPERT_FILTER_FIELDS = {
1288
1309
  FIELDS_OPTIONS.TARGET_P,
1289
1310
  FIELDS_OPTIONS.TARGET_Q,
1290
1311
  FIELDS_OPTIONS.PROPERTY,
1312
+ FIELDS_OPTIONS.SUBSTATION_ID,
1291
1313
  FIELDS_OPTIONS.SUBSTATION_PROPERTY,
1292
1314
  FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY
1293
1315
  ],
@@ -1302,6 +1324,7 @@ const EXPERT_FILTER_FIELDS = {
1302
1324
  FIELDS_OPTIONS.P0,
1303
1325
  FIELDS_OPTIONS.Q0,
1304
1326
  FIELDS_OPTIONS.PROPERTY,
1327
+ FIELDS_OPTIONS.SUBSTATION_ID,
1305
1328
  FIELDS_OPTIONS.SUBSTATION_PROPERTY,
1306
1329
  FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY
1307
1330
  ],
@@ -1320,6 +1343,7 @@ const EXPERT_FILTER_FIELDS = {
1320
1343
  FIELDS_OPTIONS.MAX_SUSCEPTANCE,
1321
1344
  FIELDS_OPTIONS.SWITCHED_ON_SUSCEPTANCE,
1322
1345
  FIELDS_OPTIONS.PROPERTY,
1346
+ FIELDS_OPTIONS.SUBSTATION_ID,
1323
1347
  FIELDS_OPTIONS.SUBSTATION_PROPERTY,
1324
1348
  FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY
1325
1349
  ],
@@ -1364,6 +1388,7 @@ const EXPERT_FILTER_FIELDS = {
1364
1388
  },
1365
1389
  FIELDS_OPTIONS.SUSCEPTANCE_FIX,
1366
1390
  FIELDS_OPTIONS.PROPERTY,
1391
+ FIELDS_OPTIONS.SUBSTATION_ID,
1367
1392
  FIELDS_OPTIONS.SUBSTATION_PROPERTY,
1368
1393
  FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY
1369
1394
  ],
@@ -1386,6 +1411,8 @@ const EXPERT_FILTER_FIELDS = {
1386
1411
  FIELDS_OPTIONS.ACTIVE_POWER_SET_POINT,
1387
1412
  FIELDS_OPTIONS.CONVERTERS_MODE,
1388
1413
  FIELDS_OPTIONS.PROPERTY,
1414
+ FIELDS_OPTIONS.SUBSTATION_ID_1,
1415
+ FIELDS_OPTIONS.SUBSTATION_ID_2,
1389
1416
  FIELDS_OPTIONS.SUBSTATION_PROPERTY_1,
1390
1417
  FIELDS_OPTIONS.SUBSTATION_PROPERTY_2,
1391
1418
  FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY_1,
@@ -1408,6 +1435,7 @@ const EXPERT_FILTER_FIELDS = {
1408
1435
  FIELDS_OPTIONS.PAIRED,
1409
1436
  FIELDS_OPTIONS.PAIRING_KEY,
1410
1437
  FIELDS_OPTIONS.PROPERTY,
1438
+ FIELDS_OPTIONS.SUBSTATION_ID,
1411
1439
  FIELDS_OPTIONS.SUBSTATION_PROPERTY,
1412
1440
  FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY
1413
1441
  ]
@@ -43,7 +43,7 @@ const getOperators = (fieldName, intl) => {
43
43
  OPERATOR_OPTIONS.EXISTS,
44
44
  OPERATOR_OPTIONS.NOT_EXISTS
45
45
  ];
46
- if (field.name === FieldType.ID || field.name === FieldType.VOLTAGE_LEVEL_ID || field.name === FieldType.VOLTAGE_LEVEL_ID_1 || field.name === FieldType.VOLTAGE_LEVEL_ID_2 || field.name === FieldType.VOLTAGE_LEVEL_ID_3) {
46
+ if (field.name === FieldType.ID || field.name === FieldType.VOLTAGE_LEVEL_ID || field.name === FieldType.VOLTAGE_LEVEL_ID_1 || field.name === FieldType.VOLTAGE_LEVEL_ID_2 || field.name === FieldType.VOLTAGE_LEVEL_ID_3 || field.name === FieldType.SUBSTATION_ID || field.name === FieldType.SUBSTATION_ID_1 || field.name === FieldType.SUBSTATION_ID_2) {
47
47
  stringOperators.push(OPERATOR_OPTIONS.IS_PART_OF);
48
48
  stringOperators.push(OPERATOR_OPTIONS.IS_NOT_PART_OF);
49
49
  }
@@ -11,6 +11,7 @@ export * from './checkBoxList';
11
11
  export * from './customAGGrid';
12
12
  export * from './dialogs';
13
13
  export * from './directoryItemSelector/DirectoryItemSelector';
14
+ export * from './dnd-table';
14
15
  export * from './elementSearch';
15
16
  export * from './filter';
16
17
  export * from './flatParameters';