@gridsuite/commons-ui 0.124.0 → 0.126.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 (34) hide show
  1. package/dist/components/checkBoxList/checkBoxList.type.d.ts +10 -10
  2. package/dist/components/customAGGrid/customAggrid.style.d.ts +1 -2
  3. package/dist/components/dialogs/customMuiDialog/CustomMuiDialog.d.ts +16 -16
  4. package/dist/components/elementSearch/elementItem/EquipmentItem.d.ts +6 -6
  5. package/dist/components/elementSearch/tagRenderer/TagRenderer.d.ts +3 -3
  6. package/dist/components/expandableGroup/ExpandableGroup.js +4 -4
  7. package/dist/components/filter/HeaderFilterForm.d.ts +6 -6
  8. package/dist/components/filter/expert/ExpertFilterForm.js +1 -1
  9. package/dist/components/grid/grid-section.d.ts +2 -2
  10. package/dist/components/inputs/reactHookForm/chip-items-input.js +27 -23
  11. package/dist/components/inputs/reactHookForm/text/DescriptionField.d.ts +2 -2
  12. package/dist/components/inputs/reactHookForm/text/ExpandingTextField.js +1 -4
  13. package/dist/components/inputs/reactHookForm/text/UniqueNameInput.d.ts +3 -2
  14. package/dist/components/inputs/reactQueryBuilder/CustomReactQueryBuilder.js +2 -1
  15. package/dist/components/menus/custom-nested-menu.d.ts +3 -2
  16. package/dist/components/menus/custom-nested-menu.js +0 -4
  17. package/dist/components/overflowableText/OverflowableText.d.ts +4 -3
  18. package/dist/components/parameters/common/computing-type.js +2 -0
  19. package/dist/components/parameters/common/limitreductions/limit-reduction-table-cell.js +2 -2
  20. package/dist/components/parameters/common/voltage-level-table/custom-voltage-level-table.d.ts +1 -1
  21. package/dist/components/parameters/common/voltage-level-table/custom-voltage-level-table.js +19 -15
  22. package/dist/components/parameters/common/widget/parameter-line-slider.d.ts +1 -1
  23. package/dist/components/parameters/loadflow/load-flow-parameters-form.d.ts +1 -1
  24. package/dist/components/parameters/parameters-style.d.ts +64 -59
  25. package/dist/components/parameters/short-circuit/short-circuit-fields.js +6 -16
  26. package/dist/components/parameters/voltage-init/voltage-init-parameters-form.d.ts +6 -7
  27. package/dist/components/topBar/AboutDialog.js +3 -7
  28. package/dist/components/topBar/GridLogo.d.ts +2 -2
  29. package/dist/hooks/use-unique-name-validation.js +7 -5
  30. package/dist/utils/mapper/getFileIcon.d.ts +2 -2
  31. package/dist/utils/styles.d.ts +2 -0
  32. package/dist/utils/types/equipmentType.d.ts +24 -25
  33. package/dist/utils/types/equipmentType.js +1 -5
  34. package/package.json +40 -41
@@ -1,18 +1,18 @@
1
1
  import { ReactElement, ReactNode } from 'react';
2
2
  import { DraggableProvided, DragStart, DropResult } from '@hello-pangea/dnd';
3
- import { SxProps, Theme } from '@mui/material';
3
+ import { SxStyle } from '../../utils/styles';
4
4
  export type CheckBoxListItemSx = {
5
- checkBoxIcon?: SxProps<Theme>;
6
- listItemText?: SxProps<Theme>;
7
- label?: SxProps<Theme>;
8
- checkboxListItem?: SxProps<Theme>;
9
- checkboxButton?: SxProps<Theme>;
10
- checkbox?: SxProps<Theme>;
11
- dragButton?: SxProps<Theme>;
5
+ checkBoxIcon?: SxStyle;
6
+ listItemText?: SxStyle;
7
+ label?: SxStyle;
8
+ checkboxListItem?: SxStyle;
9
+ checkboxButton?: SxStyle;
10
+ checkbox?: SxStyle;
11
+ dragButton?: SxStyle;
12
12
  };
13
13
  export type CheckBoxListSx = {
14
- dragAndDropContainer?: SxProps<Theme>;
15
- checkboxList?: SxProps<Theme>;
14
+ dragAndDropContainer?: SxStyle;
15
+ checkboxList?: SxStyle;
16
16
  };
17
17
  export type CheckBoxListItemSxMethod<T> = (item: T) => CheckBoxListItemSx;
18
18
  type CheckBoxListItemSxProps<T> = CheckBoxListSx & {
@@ -1,7 +1,6 @@
1
- import { Theme } from '@mui/material';
2
1
  export declare const CUSTOM_AGGRID_THEME = "custom-aggrid-theme";
3
2
  export declare const styles: {
4
- readonly grid: (theme: Theme) => {
3
+ readonly grid: (theme: import('@mui/material').Theme) => {
5
4
  width: string;
6
5
  height: string;
7
6
  position: "relative";
@@ -30,26 +30,26 @@ export type CustomMuiDialogProps<T extends FieldValues = FieldValues> = DialogPr
30
30
  * </fullHeightDialog>
31
31
  */
32
32
  export declare const unscrollableDialogStyles: {
33
- fullHeightDialog: {
34
- '.MuiDialog-paper': {
35
- minWidth: string;
36
- margin: string;
37
- height: string;
33
+ readonly fullHeightDialog: {
34
+ readonly '.MuiDialog-paper': {
35
+ readonly minWidth: "90vw";
36
+ readonly margin: "auto";
37
+ readonly height: "95vh";
38
38
  };
39
39
  };
40
- unscrollableContainer: {
41
- display: string;
42
- flexDirection: string;
43
- overflowY: string;
40
+ readonly unscrollableContainer: {
41
+ readonly display: "flex";
42
+ readonly flexDirection: "column";
43
+ readonly overflowY: "hidden";
44
44
  };
45
- unscrollableHeader: {
46
- flex: string;
47
- padding: number;
45
+ readonly unscrollableHeader: {
46
+ readonly flex: "none";
47
+ readonly padding: 1;
48
48
  };
49
- scrollableContent: {
50
- flex: string;
51
- overflowY: string;
52
- padding: number;
49
+ readonly scrollableContent: {
50
+ readonly flex: "auto";
51
+ readonly overflowY: "auto";
52
+ readonly padding: 1;
53
53
  };
54
54
  };
55
55
  export declare function CustomMuiDialog<T extends FieldValues = FieldValues>({ open, formSchema, formMethods, onClose, onSave, isDataFetching, onValidationError, titleId, disabledSave, removeOptional, onCancel, children, language, confirmationMessageKey, unscrollableFullHeight, ...dialogProps }: Readonly<CustomMuiDialogProps<T>>): import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,6 @@
1
- import { SxProps, Theme } from '@mui/material';
2
1
  import { EquipmentInfos } from '../../../utils/types/equipmentType';
3
2
  import { TagRenderer } from '../tagRenderer/TagRenderer';
3
+ import { SxStyle } from '../../../utils/styles';
4
4
  export interface EquipmentItemProps {
5
5
  inputValue: string;
6
6
  suffixRenderer?: typeof TagRenderer;
@@ -14,11 +14,11 @@ export interface EquipmentItemProps {
14
14
  equipmentVlTag?: string;
15
15
  };
16
16
  styles?: {
17
- result?: SxProps<Theme>;
18
- equipmentOption?: SxProps<Theme>;
19
- equipmentTag?: SxProps<Theme>;
20
- equipmentTypeTag?: SxProps<Theme>;
21
- equipmentVlTag?: SxProps<Theme>;
17
+ result?: SxStyle;
18
+ equipmentOption?: SxStyle;
19
+ equipmentTag?: SxStyle;
20
+ equipmentTypeTag?: SxStyle;
21
+ equipmentVlTag?: SxStyle;
22
22
  };
23
23
  }
24
24
  export declare function EquipmentItem({ inputValue, suffixRenderer, element, showsJustText, ...props }: EquipmentItemProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
- import { SxProps, Theme } from '@mui/material';
2
1
  import { EquipmentInfos } from '../../../utils/types/equipmentType';
2
+ import { SxStyle } from '../../../utils/styles';
3
3
  export interface TagRendererProps {
4
4
  element: EquipmentInfos;
5
5
  classes?: {
@@ -7,8 +7,8 @@ export interface TagRendererProps {
7
7
  equipmentVlTag?: string;
8
8
  };
9
9
  styles?: {
10
- equipmentTag?: SxProps<Theme>;
11
- equipmentVlTag?: SxProps<Theme>;
10
+ equipmentTag?: SxStyle;
11
+ equipmentVlTag?: SxStyle;
12
12
  };
13
13
  }
14
14
  export declare function TagRenderer({ element, ...props }: TagRendererProps): import("react/jsx-runtime").JSX.Element | undefined;
@@ -4,12 +4,12 @@ import { useState } from "react";
4
4
  import { ExpandCircleDown, ExpandMore } from "@mui/icons-material";
5
5
  import { FormattedMessage } from "react-intl";
6
6
  const styles = {
7
- accordion: () => ({
7
+ accordion: {
8
8
  "&:before": {
9
9
  display: "none"
10
10
  },
11
11
  background: "none"
12
- }),
12
+ },
13
13
  accordionSummary: (theme) => ({
14
14
  flexDirection: "row-reverse",
15
15
  // place icon at the left
@@ -31,10 +31,10 @@ const styles = {
31
31
  transform: "rotate(0deg)"
32
32
  }
33
33
  }),
34
- accordionDetails: () => ({
34
+ accordionDetails: {
35
35
  padding: 0
36
36
  // reset default left right space in details
37
- })
37
+ }
38
38
  };
39
39
  function ExpandableGroup({ renderHeader, children }) {
40
40
  const [mouseHover, setMouseHover] = useState(false);
@@ -1,13 +1,13 @@
1
1
  import { UUID } from 'crypto';
2
2
  import { default as yup } from '../../utils/yupConfig';
3
3
  export declare const filterStyles: {
4
- textField: {
5
- minWidth: string;
6
- width: string;
4
+ readonly textField: {
5
+ readonly minWidth: "250px";
6
+ readonly width: "33%";
7
7
  };
8
- description: {
9
- minWidth: string;
10
- width: string;
8
+ readonly description: {
9
+ readonly minWidth: "250px";
10
+ readonly width: "50%";
11
11
  };
12
12
  };
13
13
  export interface FilterFormProps {
@@ -1,6 +1,6 @@
1
1
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { useCallback, useMemo } from "react";
3
- import { formatQuery } from "react-querybuilder";
3
+ import { formatQuery } from "react-querybuilder/formatQuery";
4
4
  import { useFormContext, useWatch } from "react-hook-form";
5
5
  import * as yup from "yup";
6
6
  import { v4 } from "uuid";
@@ -1,8 +1,8 @@
1
- import { SxProps, Theme } from '@mui/material';
1
+ import { SxStyle } from '../../utils/styles';
2
2
  export interface GridSectionProps {
3
3
  title: string;
4
4
  heading?: 1 | 2 | 3 | 4 | 5 | 6;
5
5
  size?: number;
6
- customStyle?: SxProps<Theme>;
6
+ customStyle?: SxStyle;
7
7
  }
8
8
  export default function GridSection({ title, heading, size, customStyle }: Readonly<GridSectionProps>): import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { FormControl, Chip, TextField } from "@mui/material";
3
- import { useState, useCallback } from "react";
3
+ import { useState, useCallback, useMemo } from "react";
4
4
  import { useFieldArray, useController } from "react-hook-form";
5
5
  import "react-intl";
6
6
  import "../../../utils/types/equipmentType.js";
@@ -19,6 +19,26 @@ import { OverflowableText } from "../../overflowableText/OverflowableText.js";
19
19
  import { RawReadOnlyInput } from "./RawReadOnlyInput.js";
20
20
  import { ErrorInput } from "./errorManagement/ErrorInput.js";
21
21
  import { MidFormError } from "./errorManagement/MidFormError.js";
22
+ const styles = {
23
+ chipContainer: {
24
+ display: "flex",
25
+ gap: "8px",
26
+ flexWrap: "wrap",
27
+ flexDirection: "row",
28
+ border: "2px solid lightgray",
29
+ borderRadius: "4px",
30
+ overflow: "hidden"
31
+ },
32
+ chipItem: {
33
+ display: "flex",
34
+ gap: "8px",
35
+ flexWrap: "wrap",
36
+ flexDirection: "row",
37
+ marginTop: 0,
38
+ padding: 1,
39
+ overflow: "hidden"
40
+ }
41
+ };
22
42
  function ChipItemsInput({ label, name, hideErrorMessage }) {
23
43
  const [textEntered, setTextEntered] = useState("");
24
44
  const { snackError } = useSnackMessage();
@@ -63,29 +83,13 @@ function ChipItemsInput({ label, name, hideErrorMessage }) {
63
83
  const handleChange = (e) => {
64
84
  setTextEntered(e.target.value);
65
85
  };
66
- const styles = {
67
- chipContainer: {
68
- display: "flex",
69
- gap: "8px",
70
- flexWrap: "wrap",
71
- flexDirection: "row",
72
- border: "2px solid lightgray",
73
- borderRadius: "4px",
74
- overflow: "hidden",
75
- borderColor: (error == null ? void 0 : error.message) ? "error.main" : null
76
- },
77
- chipItem: {
78
- display: "flex",
79
- gap: "8px",
80
- flexWrap: "wrap",
81
- flexDirection: "row",
82
- marginTop: 0,
83
- padding: 1,
84
- overflow: "hidden"
85
- }
86
- };
86
+ const hasError = !!(error == null ? void 0 : error.message);
87
+ const containerStyle = useMemo(
88
+ () => ({ ...styles.chipContainer, borderColor: hasError ? "error.main" : null }),
89
+ [hasError]
90
+ );
87
91
  return /* @__PURE__ */ jsxs(Fragment, { children: [
88
- /* @__PURE__ */ jsxs(FormControl, { sx: styles.chipContainer, error: !!(error == null ? void 0 : error.message), children: [
92
+ /* @__PURE__ */ jsxs(FormControl, { sx: containerStyle, error: hasError, children: [
89
93
  (elements == null ? void 0 : elements.length) === 0 && label && /* @__PURE__ */ jsx(FieldLabel, { label, optional: !isFieldRequired(name, validationSchema, getValues()) }),
90
94
  (elements == null ? void 0 : elements.length) > 0 && /* @__PURE__ */ jsx(FormControl, { sx: styles.chipItem, children: elements.map((item, index) => /* @__PURE__ */ jsx(
91
95
  Chip,
@@ -1,5 +1,5 @@
1
- import { SxProps, Theme } from '@mui/material';
1
+ import { SxStyle } from '../../../../utils/styles';
2
2
  export interface DescriptionFieldProps {
3
- expandingTextSx?: SxProps<Theme>;
3
+ expandingTextSx?: SxStyle;
4
4
  }
5
5
  export declare function DescriptionField({ expandingTextSx }: Readonly<DescriptionFieldProps>): import("react/jsx-runtime").JSX.Element;
@@ -16,10 +16,7 @@ function ExpandingTextField({
16
16
  }) {
17
17
  const [isFocused, setIsFocused] = useState(false);
18
18
  const { control } = useCustomFormContext();
19
- const descriptionWatch = useWatch({
20
- name,
21
- control
22
- });
19
+ const descriptionWatch = useWatch({ name, control });
23
20
  const handleFocus = () => {
24
21
  setIsFocused(true);
25
22
  };
@@ -1,6 +1,7 @@
1
- import { SxProps, TextFieldProps, Theme } from '@mui/material';
1
+ import { TextFieldProps } from '@mui/material';
2
2
  import { UUID } from 'crypto';
3
3
  import { ElementType } from '../../../../utils';
4
+ import { SxStyle } from '../../../../utils/styles';
4
5
  export interface UniqueNameInputProps {
5
6
  name: string;
6
7
  label?: string;
@@ -10,7 +11,7 @@ export interface UniqueNameInputProps {
10
11
  formProps?: Omit<TextFieldProps, 'value' | 'onChange' | 'name' | 'label' | 'inputRef' | 'inputProps' | 'InputProps'>;
11
12
  activeDirectory?: UUID;
12
13
  currentName?: string;
13
- sx?: SxProps<Theme>;
14
+ sx?: SxStyle;
14
15
  fullWidth?: boolean;
15
16
  }
16
17
  /**
@@ -4,7 +4,8 @@ import { QueryBuilderDnD } from "@react-querybuilder/dnd";
4
4
  import * as ReactDnD from "react-dnd";
5
5
  import * as ReactDndHtml5Backend from "react-dnd-html5-backend";
6
6
  import { QueryBuilderMaterial } from "@react-querybuilder/material";
7
- import { defaultTranslations, formatQuery, QueryBuilder } from "react-querybuilder";
7
+ import { defaultTranslations, QueryBuilder } from "react-querybuilder";
8
+ import { formatQuery } from "react-querybuilder/formatQuery";
8
9
  import { useIntl } from "react-intl";
9
10
  import { useFormContext } from "react-hook-form";
10
11
  import { useCallback, useMemo } from "react";
@@ -1,8 +1,9 @@
1
1
  import { PropsWithChildren } from 'react';
2
2
  import { NestedMenuItemProps } from 'mui-nested-menu';
3
- import { MenuItemProps, SxProps, Theme } from '@mui/material';
3
+ import { MenuItemProps } from '@mui/material';
4
+ import { SxStyle } from '../../utils/styles';
4
5
  interface CustomNestedMenuItemProps extends PropsWithChildren, Omit<NestedMenuItemProps, 'parentMenuOpen'> {
5
- sx?: SxProps<Theme>;
6
+ sx?: SxStyle;
6
7
  }
7
8
  export declare function CustomNestedMenuItem({ sx, children, ...other }: Readonly<CustomNestedMenuItemProps>): import("react/jsx-runtime").JSX.Element;
8
9
  export declare function CustomMenuItem({ sx, ...other }: Readonly<MenuItemProps>): import("react/jsx-runtime").JSX.Element;
@@ -2,11 +2,7 @@ import { jsx } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
3
  import { NestedMenuItem } from "mui-nested-menu";
4
4
  import { Box, MenuItem } from "@mui/material";
5
- import "../../utils/conversionUtils.js";
6
- import "@mui/icons-material";
7
5
  import { mergeSx } from "../../utils/styles.js";
8
- import "../../utils/types/equipmentType.js";
9
- import "../../utils/yupConfig.js";
10
6
  const styles = {
11
7
  highlightedParentLine: {
12
8
  backgroundColor: "action.hover",
@@ -1,10 +1,11 @@
1
1
  import { ReactNode } from 'react';
2
- import { BoxProps, SxProps, Theme } from '@mui/material';
2
+ import { BoxProps } from '@mui/material';
3
3
  import { Style } from 'node:util';
4
+ import { SxStyle } from '../../utils/styles';
4
5
  export interface OverflowableTextProps extends BoxProps {
5
6
  text?: ReactNode;
6
7
  maxLineCount?: number;
7
8
  tooltipStyle?: Style;
8
- tooltipSx?: SxProps<Theme>;
9
+ tooltipSx?: SxStyle;
9
10
  }
10
- export declare const OverflowableText: import('@emotion/styled').StyledComponent<OverflowableTextProps & import('@mui/system').MUIStyledCommonProps<Theme>, {}, {}>;
11
+ export declare const OverflowableText: import('@emotion/styled').StyledComponent<OverflowableTextProps & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
@@ -26,6 +26,8 @@ const formatComputingTypeLabel = (type) => {
26
26
  return "NonEvacuatedEnergy";
27
27
  case "SHORT_CIRCUIT":
28
28
  return "ShortCircuit";
29
+ case "SHORT_CIRCUIT_ONE_BUS":
30
+ return "OneBusShortCircuitAnalysis";
29
31
  case "VOLTAGE_INITIALIZATION":
30
32
  return "VoltageInit";
31
33
  case "DYNAMIC_SIMULATION":
@@ -35,7 +35,7 @@ function LimitReductionTableCell({
35
35
  column,
36
36
  limits
37
37
  }) {
38
- return column.dataKey === VOLTAGE_LEVELS_FORM ? /* @__PURE__ */ jsx(
38
+ return column.dataKey === VOLTAGE_LEVELS_FORM && limits[rowIndex] ? /* @__PURE__ */ jsx(
39
39
  Tooltip,
40
40
  {
41
41
  title: /* @__PURE__ */ jsx(
@@ -50,7 +50,7 @@ function LimitReductionTableCell({
50
50
  ),
51
51
  children: /* @__PURE__ */ jsx(TableCell, { sx: { fontWeight: "bold" }, children: /* @__PURE__ */ jsx(RawReadOnlyInput, { name: `${LIMIT_REDUCTIONS_FORM}[${rowIndex}].${column.dataKey}` }) })
52
52
  }
53
- ) : /* @__PURE__ */ jsx(TableCell, { sx: { fontWeight: "bold" }, children: /* @__PURE__ */ jsx(FloatInput, { name: `${LIMIT_REDUCTIONS_FORM}[${rowIndex}].${column.dataKey}` }) });
53
+ ) : /* @__PURE__ */ jsx(TableCell, { sx: { fontWeight: "bold" }, children: column.dataKey === VOLTAGE_LEVELS_FORM ? /* @__PURE__ */ jsx(RawReadOnlyInput, { name: `${LIMIT_REDUCTIONS_FORM}[${rowIndex}].${column.dataKey}` }) : /* @__PURE__ */ jsx(FloatInput, { name: `${LIMIT_REDUCTIONS_FORM}[${rowIndex}].${column.dataKey}` }) });
54
54
  }
55
55
  export {
56
56
  LimitReductionTableCell
@@ -3,7 +3,7 @@ interface LimitReductionsTableProps {
3
3
  columnsDefinition: LimitReductionIColumnsDef[];
4
4
  tableHeight: number;
5
5
  formName: string;
6
- limits: ILimitReductionsByVoltageLevel[];
6
+ limits?: ILimitReductionsByVoltageLevel[];
7
7
  }
8
8
  export declare function CustomVoltageLevelTable({ formName, columnsDefinition, tableHeight, limits, }: Readonly<LimitReductionsTableProps>): import("react/jsx-runtime").JSX.Element;
9
9
  export {};
@@ -1,6 +1,5 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { TableContainer, Table, TableHead, TableRow, Tooltip, TableCell, TableBody } from "@mui/material";
3
- import { useMemo } from "react";
4
3
  import { useFieldArray } from "react-hook-form";
5
4
  import { LIMIT_REDUCTIONS_FORM } from "../limitreductions/columns-definitions.js";
6
5
  import { LimitReductionTableRow } from "../limitreductions/limit-reduction-table-row.js";
@@ -14,10 +13,6 @@ function CustomVoltageLevelTable({
14
13
  const { fields: rows } = useFieldArray({
15
14
  name: formName
16
15
  });
17
- const TableRowComponent = useMemo(
18
- () => formName === LIMIT_REDUCTIONS_FORM ? LimitReductionTableRow : CustomVoltageLevelTableRow,
19
- [formName]
20
- );
21
16
  return /* @__PURE__ */ jsx(
22
17
  TableContainer,
23
18
  {
@@ -37,16 +32,25 @@ function CustomVoltageLevelTable({
37
32
  },
38
33
  column.dataKey
39
34
  ) })) }) }),
40
- /* @__PURE__ */ jsx(TableBody, { children: rows.map((row, index) => /* @__PURE__ */ jsx(
41
- TableRowComponent,
42
- {
43
- columnsDefinition,
44
- index,
45
- formName,
46
- limits
47
- },
48
- `${row.id}`
49
- )) })
35
+ /* @__PURE__ */ jsx(TableBody, { children: rows.map(
36
+ (row, index) => formName === LIMIT_REDUCTIONS_FORM && limits ? /* @__PURE__ */ jsx(
37
+ LimitReductionTableRow,
38
+ {
39
+ columnsDefinition,
40
+ index,
41
+ limits
42
+ },
43
+ `${row.id}`
44
+ ) : /* @__PURE__ */ jsx(
45
+ CustomVoltageLevelTableRow,
46
+ {
47
+ columnsDefinition,
48
+ index,
49
+ formName
50
+ },
51
+ `${row.id}`
52
+ )
53
+ ) })
50
54
  ] })
51
55
  }
52
56
  );
@@ -1,4 +1,4 @@
1
- import { Mark } from '@mui/base';
1
+ import { Mark } from '@mui/material/Slider/useSlider.types';
2
2
  export declare function sanitizePercentageValue(value: number): number;
3
3
  type SliderParameterLineProps = {
4
4
  name: string;
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { UseLoadFlowParametersFormReturn } from './use-load-flow-parameters-form';
3
- import { GsLang } from '../../../utils';
3
+ import { GsLang } from '../../../utils/langs';
4
4
  interface LoadFlowParametersFormProps {
5
5
  loadflowMethods: UseLoadFlowParametersFormReturn;
6
6
  language: GsLang;
@@ -1,147 +1,152 @@
1
- import { Theme } from '@mui/material';
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
+ */
2
7
  /**
3
8
  * Styles use in parameter forms
4
9
  */
5
10
  export declare const parametersStyles: {
6
- title: (theme: Theme) => {
11
+ readonly title: (theme: import('@mui/material').Theme) => {
7
12
  padding: string;
8
13
  };
9
- minWidthMedium: (theme: Theme) => {
14
+ readonly minWidthMedium: (theme: import('@mui/material').Theme) => {
10
15
  minWidth: string;
11
16
  };
12
- parameterName: (theme: Theme) => {
17
+ readonly parameterName: (theme: import('@mui/material').Theme) => {
13
18
  fontWeight: string;
14
19
  marginTop: string;
15
20
  };
16
- controlItem: {
17
- justifyContent: string;
18
- flexGrow: number;
21
+ readonly controlItem: {
22
+ readonly justifyContent: "flex-end";
23
+ readonly flexGrow: 1;
19
24
  };
20
- controlParametersItem: {
21
- justifyContent: string;
22
- flexGrow: number;
23
- height: string;
24
- paddingBottom: number;
25
+ readonly controlParametersItem: {
26
+ readonly justifyContent: "flex-start";
27
+ readonly flexGrow: 1;
28
+ readonly height: "fit-content";
29
+ readonly paddingBottom: 4;
25
30
  };
26
- button: (theme: Theme) => {
31
+ readonly button: (theme: import('@mui/material').Theme) => {
27
32
  marginBottom: string;
28
33
  marginLeft: string;
29
34
  };
30
- subgroupParameters: (theme: Theme) => {
35
+ readonly subgroupParameters: (theme: import('@mui/material').Theme) => {
31
36
  marginTop: string;
32
37
  marginBottom: string;
33
38
  };
34
- subgroupParametersAccordion: {
35
- '&:before': {
36
- display: string;
39
+ readonly subgroupParametersAccordion: {
40
+ readonly '&:before': {
41
+ readonly display: "none";
37
42
  };
38
- background: string;
43
+ readonly background: "none";
39
44
  };
40
- subgroupParametersAccordionSummary: (theme: Theme) => {
41
- flexDirection: string;
45
+ readonly subgroupParametersAccordionSummary: (theme: import('@mui/material').Theme) => {
46
+ flexDirection: "row-reverse";
42
47
  '& .MuiAccordionSummary-expandIconWrapper': {
43
- transform: string;
48
+ transform: "rotate(-90deg)";
44
49
  };
45
50
  '& .MuiAccordionSummary-expandIconWrapper.Mui-expanded': {
46
- transform: string;
51
+ transform: "rotate(0deg)";
47
52
  };
48
53
  '& .MuiAccordionSummary-content': {
49
54
  marginLeft: string;
50
55
  };
51
56
  };
52
- subgroupParametersAccordionDetails: (theme: Theme) => {
57
+ readonly subgroupParametersAccordionDetails: (theme: import('@mui/material').Theme) => {
53
58
  padding: string;
54
59
  };
55
- marginTopButton: {
56
- marginTop: string;
57
- position: string;
58
- bottom: number;
60
+ readonly marginTopButton: {
61
+ readonly marginTop: "10px";
62
+ readonly position: "sticky";
63
+ readonly bottom: 0;
59
64
  };
60
- scrollableGrid: (theme: Theme) => {
61
- overflowY: string;
62
- overflowX: string;
65
+ readonly scrollableGrid: (theme: import('@mui/material').Theme) => {
66
+ overflowY: "auto";
67
+ overflowX: "hidden";
63
68
  maxHeight: string;
64
69
  paddingRight: string;
65
70
  paddingTop: string;
66
71
  paddingBottom: string;
67
72
  flexGrow: number;
68
73
  };
69
- singleItem: (theme: Theme) => {
70
- display: string;
74
+ readonly singleItem: (theme: import('@mui/material').Theme) => {
75
+ display: "flex";
71
76
  flex: string;
72
- alignItems: string;
73
- justifyContent: string;
77
+ alignItems: "flex-start";
78
+ justifyContent: "space-between";
74
79
  marginTop: string;
75
80
  marginBottom: string;
76
81
  };
77
- firstTextField: (theme: Theme) => {
82
+ readonly firstTextField: (theme: import('@mui/material').Theme) => {
78
83
  marginLeft: string;
79
84
  };
80
- secondTextField: (theme: Theme) => {
85
+ readonly secondTextField: (theme: import('@mui/material').Theme) => {
81
86
  marginLeft: string;
82
87
  marginRight: string;
83
88
  };
84
- singleTextField: (theme: Theme) => {
85
- display: string;
89
+ readonly singleTextField: (theme: import('@mui/material').Theme) => {
90
+ display: "flex";
86
91
  marginRight: string;
87
92
  marginLeft: string;
88
93
  };
89
- tooltip: (theme: Theme) => {
94
+ readonly tooltip: (theme: import('@mui/material').Theme) => {
90
95
  marginLeft: string;
91
96
  };
92
- text: (theme: Theme) => {
93
- display: string;
97
+ readonly text: (theme: import('@mui/material').Theme) => {
98
+ display: "flex";
94
99
  marginBottom: string;
95
100
  marginTop: string;
96
101
  };
97
- multipleItems: (theme: Theme) => {
98
- display: string;
102
+ readonly multipleItems: (theme: import('@mui/material').Theme) => {
103
+ display: "flex";
99
104
  flex: string;
100
- alignItems: string;
101
- justifyContent: string;
105
+ alignItems: "flex-start";
106
+ justifyContent: "space-between";
102
107
  marginTop: string;
103
108
  marginBottom: string;
104
109
  };
105
- tabWithError: (theme: Theme) => {
110
+ readonly tabWithError: (theme: import('@mui/material').Theme) => {
106
111
  '&.Mui-selected': {
107
112
  color: string;
108
113
  };
109
114
  color: string;
110
115
  };
111
- tabWithErrorIndicator: (theme: Theme) => {
116
+ readonly tabWithErrorIndicator: (theme: import('@mui/material').Theme) => {
112
117
  backgroundColor: string;
113
118
  };
114
- panel: (theme: Theme) => {
119
+ readonly panel: (theme: import('@mui/material').Theme) => {
115
120
  marginTop: string;
116
121
  marginBottom: string;
117
122
  };
118
- adjustExistingLimitsInfo: (theme: Theme) => {
119
- display: string;
120
- alignItems: string;
123
+ readonly adjustExistingLimitsInfo: (theme: import('@mui/material').Theme) => {
124
+ display: "flex";
125
+ alignItems: "center";
121
126
  marginTop: string;
122
127
  marginBottom: string;
123
128
  };
124
- circularProgress: (theme: Theme) => {
129
+ readonly circularProgress: (theme: import('@mui/material').Theme) => {
125
130
  marginRight: string;
126
131
  color: string;
127
132
  };
128
- icon: (theme: Theme) => {
133
+ readonly icon: (theme: import('@mui/material').Theme) => {
129
134
  width: string;
130
135
  };
131
- modificationsTitle: (theme: Theme) => {
132
- display: string;
133
- alignItems: string;
136
+ readonly modificationsTitle: (theme: import('@mui/material').Theme) => {
137
+ display: "flex";
138
+ alignItems: "center";
134
139
  margin: string;
135
140
  padding: string;
136
141
  backgroundColor: string;
137
142
  color: string;
138
- overflow: string;
143
+ overflow: "hidden";
139
144
  };
140
145
  };
141
- export declare function getTabIndicatorStyle<T extends number | string>(tabIndexesWithError: T[], index: T): ((theme: Theme) => {
146
+ export declare function getTabIndicatorStyle<T extends number | string>(tabIndexesWithError: T[], index: T): ((theme: import('@mui/material').Theme) => {
142
147
  backgroundColor: string;
143
148
  }) | undefined;
144
- export declare function getTabStyle<T extends number | string>(tabIndexesWithError: T[], index: T): ((theme: Theme) => {
149
+ export declare function getTabStyle<T extends number | string>(tabIndexesWithError: T[], index: T): ((theme: import('@mui/material').Theme) => {
145
150
  '&.Mui-selected': {
146
151
  color: string;
147
152
  };
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { useState, useMemo, useEffect } from "react";
3
3
  import { Grid } from "@mui/material";
4
- import { red, green } from "@mui/material/colors";
4
+ import { green, red } from "@mui/material/colors";
5
5
  import { Lens } from "@mui/icons-material";
6
6
  import { useWatch } from "react-hook-form";
7
7
  import { SHORT_CIRCUIT_INITIAL_VOLTAGE_PROFILE_MODE, SHORT_CIRCUIT_PREDEFINED_PARAMS, SHORT_CIRCUIT_WITH_LOADS, SHORT_CIRCUIT_WITH_SHUNT_COMPENSATORS, SHORT_CIRCUIT_WITH_VSC_CONVERTER_STATIONS, SHORT_CIRCUIT_WITH_NEUTRAL_POSITION, intlPredefinedParametersOptions, intlInitialVoltageProfileMode, PredefinedParameters, InitialVoltage, SHORT_CIRCUIT_WITH_FEEDER_RESULT } from "./constants.js";
@@ -77,21 +77,11 @@ function ShortCircuitFields({ resetAll }) {
77
77
  const initialVoltageProfileMode = useMemo(() => {
78
78
  return intlInitialVoltageProfileMode();
79
79
  }, []);
80
- const getStatus = (state, styles) => {
81
- const color = state === "SUCCESS" ? styles.succeed : styles.fail;
82
- return /* @__PURE__ */ jsx(Lens, { fontSize: "medium", sx: color });
83
- };
84
- const statusToShow = useMemo(() => {
85
- const styles = {
86
- succeed: {
87
- color: green[500]
88
- },
89
- fail: {
90
- color: red[500]
91
- }
92
- };
93
- return getStatus(status, styles);
94
- }, [status]);
80
+ const statusColor = useMemo(
81
+ () => ({ color: status === "SUCCESS" ? green[500] : red[500] }),
82
+ [status]
83
+ );
84
+ const statusToShow = /* @__PURE__ */ jsx(Lens, { fontSize: "medium", sx: statusColor });
95
85
  const onPredefinedParametersManualChange = (event) => {
96
86
  const newPredefinedParameters = event.target.value;
97
87
  console.debug("onPredefinedParametersManualChange new:", newPredefinedParameters);
@@ -1,19 +1,18 @@
1
- import { Theme } from '@mui/material';
2
1
  import { ReactNode } from 'react';
3
2
  import { UseVoltageInitParametersFormReturn } from './use-voltage-init-parameters-form';
4
3
  export declare const styles: {
5
- gridWithActions: (theme: Theme) => {
6
- overflowY: string;
7
- overflowX: string;
4
+ readonly gridWithActions: (theme: import('@mui/material').Theme) => {
5
+ overflowY: "auto";
6
+ overflowX: "hidden";
8
7
  paddingRight: string;
9
8
  paddingTop: string;
10
9
  paddingBottom: string;
11
10
  flexGrow: number;
12
11
  maxHeight: string;
13
12
  };
14
- gridWithoutActions: (theme: Theme) => {
15
- overflowY: string;
16
- overflowX: string;
13
+ readonly gridWithoutActions: (theme: import('@mui/material').Theme) => {
14
+ overflowY: "auto";
15
+ overflowX: "hidden";
17
16
  paddingRight: string;
18
17
  paddingTop: string;
19
18
  paddingBottom: string;
@@ -22,12 +22,8 @@ const styles = {
22
22
  textAlign: "center",
23
23
  marginTop: 0
24
24
  },
25
- versionField: (isUnknown) => isUnknown ? {
26
- fontSize: "1.5em",
27
- fontWeight: "bold"
28
- } : {
29
- fontStyle: "italic"
30
- },
25
+ versionField: { fontStyle: "italic" },
26
+ versionFieldUnknown: { fontSize: "1.5em", fontWeight: "bold" },
31
27
  detailsSection: {
32
28
  ".MuiAccordionSummary-content > .MuiSvgIcon-root": {
33
29
  marginRight: "0.5rem"
@@ -301,7 +297,7 @@ function AboutDialog({
301
297
  Typography,
302
298
  {
303
299
  component: "span",
304
- sx: styles.versionField(!loadingGlobalVersion && !!actualGlobalVersion),
300
+ sx: !loadingGlobalVersion && !!actualGlobalVersion ? styles.versionFieldUnknown : styles.versionField,
305
301
  children: actualGlobalVersion || "unknown"
306
302
  }
307
303
  )
@@ -1,5 +1,5 @@
1
- import { SxProps } from '@mui/material';
2
1
  import { ReactNode } from 'react';
2
+ import { SxStyle } from '../../utils/styles';
3
3
  export interface GridLogoProps extends Omit<LogoTextProps, 'style'> {
4
4
  appLogo: ReactNode;
5
5
  }
@@ -8,6 +8,6 @@ export declare function GridLogo({ appLogo, appName, appColor, onClick }: Partia
8
8
  export interface LogoTextProps {
9
9
  appName: string;
10
10
  appColor: string;
11
- style: SxProps;
11
+ style: SxStyle;
12
12
  onClick: () => void;
13
13
  }
@@ -20,11 +20,10 @@ function useUniqueNameValidation({
20
20
  setError,
21
21
  clearErrors,
22
22
  trigger,
23
- formState: { errors, defaultValues }
23
+ formState: { errors, defaultValues, isDirty: formIsDirty }
24
24
  } = useFormContext();
25
25
  const {
26
- field: { value },
27
- fieldState: { isDirty }
26
+ field: { value }
28
27
  } = useController({ name });
29
28
  const {
30
29
  field: { value: selectedDirectory }
@@ -65,10 +64,13 @@ function useUniqueNameValidation({
65
64
  if (selectedDirectory) {
66
65
  debouncedHandleCheckName(trimmedValue);
67
66
  }
68
- if (!isDirty) {
67
+ if (!formIsDirty) {
69
68
  clearErrors(name);
70
69
  return;
71
70
  }
71
+ if (trimmedValue === defaultFieldValue && trimmedValue.length > 0) {
72
+ return;
73
+ }
72
74
  if (trimmedValue) {
73
75
  clearErrors(name);
74
76
  setError("root.isValidating", {
@@ -89,7 +91,7 @@ function useUniqueNameValidation({
89
91
  setError,
90
92
  clearErrors,
91
93
  name,
92
- isDirty,
94
+ formIsDirty,
93
95
  defaultFieldValue,
94
96
  directory,
95
97
  selectedDirectory
@@ -1,3 +1,3 @@
1
- import { SxProps, Theme } from '@mui/material';
2
1
  import { ElementType } from '../types/elementType';
3
- export declare function getFileIcon(type: ElementType, style: SxProps<Theme>): import("react/jsx-runtime").JSX.Element | undefined;
2
+ import { SxStyle } from '../styles';
3
+ export declare function getFileIcon(type: ElementType, style: SxStyle): import("react/jsx-runtime").JSX.Element | undefined;
@@ -7,3 +7,5 @@ export declare const toNestedGlobalSelectors: (styles: object, generateGlobalCla
7
7
  [k: string]: any;
8
8
  };
9
9
  export declare const mergeSx: (...allSx: (SxProps<Theme> | undefined)[]) => (boolean | import('@mui/system').SystemStyleObject<{}> | ((theme: {}) => import('@mui/system').SystemStyleObject<{}>) | ((theme: {}) => import('@mui/system').SystemStyleObject<{}>))[];
10
+ export type SxStyle = SxProps<Theme>;
11
+ export type MuiStyles = Record<string, SxStyle>;
@@ -1,38 +1,37 @@
1
- import { Theme } from '@mui/material';
2
1
  export declare const TYPE_TAG_MAX_SIZE = "90px";
3
2
  export declare const VL_TAG_MAX_SIZE = "100px";
4
3
  export declare const equipmentStyles: {
5
- equipmentOption: {
6
- display: string;
7
- gap: string;
8
- width: string;
9
- margin: string;
10
- padding: string;
11
- alignItems: string;
12
- justifyContent: string;
4
+ readonly equipmentOption: {
5
+ readonly display: "flex";
6
+ readonly gap: "20px";
7
+ readonly width: "100%";
8
+ readonly margin: "0px";
9
+ readonly padding: "0px";
10
+ readonly alignItems: "center";
11
+ readonly justifyContent: "space-between";
13
12
  };
14
- equipmentTag: (theme: string | Theme) => {
13
+ readonly equipmentTag: (theme: import('@mui/material').Theme) => {
15
14
  borderRadius: string;
16
15
  padding: string;
17
16
  fontSize: string;
18
- textAlign: string;
19
- color: string;
17
+ textAlign: "center";
18
+ color: "inherit" | "black";
20
19
  };
21
- equipmentTypeTag: {
22
- minWidth: string;
23
- maxWidth: string;
24
- background: string;
20
+ readonly equipmentTypeTag: {
21
+ readonly minWidth: "90px";
22
+ readonly maxWidth: "90px";
23
+ readonly background: "lightblue";
25
24
  };
26
- equipmentVlTag: {
27
- width: string;
28
- minWidth: string;
29
- maxWidth: string;
30
- background: string;
31
- fontStyle: string;
25
+ readonly equipmentVlTag: {
26
+ readonly width: "100px";
27
+ readonly minWidth: "100px";
28
+ readonly maxWidth: "100px";
29
+ readonly background: "lightgray";
30
+ readonly fontStyle: "italic";
32
31
  };
33
- result: {
34
- width: string;
35
- padding: string;
32
+ readonly result: {
33
+ readonly width: "100%";
34
+ readonly padding: "2px";
36
35
  };
37
36
  };
38
37
  /**
@@ -1,4 +1,3 @@
1
- import { LIGHT_THEME } from "../styles.js";
2
1
  const TYPE_TAG_MAX_SIZE = "90px";
3
2
  const VL_TAG_MAX_SIZE = "100px";
4
3
  const equipmentStyles = {
@@ -18,10 +17,7 @@ const equipmentStyles = {
18
17
  padding: "4px",
19
18
  fontSize: "x-small",
20
19
  textAlign: "center",
21
- color: (
22
- // TODO remove first condition when gridstudy is updated
23
- theme === LIGHT_THEME || typeof theme !== "string" && ((_a = theme == null ? void 0 : theme.palette) == null ? void 0 : _a.mode) === "light" ? "inherit" : "black"
24
- )
20
+ color: ((_a = theme == null ? void 0 : theme.palette) == null ? void 0 : _a.mode) === "light" ? "inherit" : "black"
25
21
  };
26
22
  },
27
23
  equipmentTypeTag: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gridsuite/commons-ui",
3
- "version": "0.124.0",
3
+ "version": "0.126.0",
4
4
  "description": "common react components for gridsuite applications",
5
5
  "author": "gridsuite team",
6
6
  "homepage": "https://github.com/gridsuite",
@@ -34,17 +34,16 @@
34
34
  "licenses-check": "license-checker --summary --excludePrivatePackages --production --onlyAllow \"$( jq -r .onlyAllow[] license-checker-config.json | tr '\n' ';')\" --excludePackages \"$( jq -r .excludePackages[] license-checker-config.json | tr '\n' ';')\""
35
35
  },
36
36
  "dependencies": {
37
- "@ag-grid-community/locale": "^33.1.0",
37
+ "@ag-grid-community/locale": "^33.3.2",
38
38
  "@hello-pangea/dnd": "^18.0.1",
39
- "@material-symbols/svg-400": "^0.31.2",
40
- "@mui/base": "^5.0.0-beta.40-0",
41
- "@react-querybuilder/dnd": "^8.2.0",
42
- "@react-querybuilder/material": "^8.2.0",
39
+ "@material-symbols/svg-400": "^0.31.9",
40
+ "@react-querybuilder/dnd": "^8.8.4",
41
+ "@react-querybuilder/material": "^8.8.4",
43
42
  "autosuggest-highlight": "^3.3.4",
44
43
  "clsx": "^2.1.1",
45
- "mui-nested-menu": "^4.0.0",
46
44
  "jwt-decode": "^4.0.0",
47
45
  "localized-countries": "^2.0.0",
46
+ "mui-nested-menu": "^4.0.1",
48
47
  "oidc-client": "^1.11.5",
49
48
  "prop-types": "^15.8.1",
50
49
  "react-csv-downloader": "^3.3.0",
@@ -52,8 +51,8 @@
52
51
  "react-dnd-html5-backend": "^16.0.1",
53
52
  "react-querybuilder": "^8.2.0",
54
53
  "reconnecting-websocket": "^4.4.0",
55
- "type-fest": "^4.34.1",
56
- "uuid": "^11.0.5"
54
+ "type-fest": "^4.41.0",
55
+ "uuid": "^11.1.0"
57
56
  },
58
57
  "peerDependencies": {
59
58
  "@emotion/react": "^11.14.0",
@@ -62,7 +61,7 @@
62
61
  "@mui/icons-material": "^5.16.14",
63
62
  "@mui/lab": "5.0.0-alpha.175",
64
63
  "@mui/material": "^5.16.14",
65
- "@mui/x-tree-view": "^7.28.1",
64
+ "@mui/x-tree-view": "^7.29.1",
66
65
  "ag-grid-community": "^33.0.3",
67
66
  "ag-grid-react": "^33.0.4",
68
67
  "notistack": "^3.0.2",
@@ -75,20 +74,20 @@
75
74
  "yup": "^1.6.1"
76
75
  },
77
76
  "devDependencies": {
78
- "@babel/helper-builder-react-jsx": "^7.25.9",
79
- "@babel/preset-env": "^7.26.8",
80
- "@babel/preset-react": "^7.26.3",
81
- "@babel/preset-typescript": "^7.26.0",
77
+ "@babel/helper-builder-react-jsx": "^7.27.1",
78
+ "@babel/preset-env": "^7.28.3",
79
+ "@babel/preset-react": "^7.27.1",
80
+ "@babel/preset-typescript": "^7.27.1",
82
81
  "@emotion/react": "^11.14.0",
83
- "@emotion/styled": "^11.14.0",
84
- "@hookform/resolvers": "^4.0.0",
82
+ "@emotion/styled": "^11.14.1",
83
+ "@hookform/resolvers": "^4.1.3",
85
84
  "@jest/globals": "^29.7.0",
86
- "@mui/icons-material": "^5.16.14",
85
+ "@mui/icons-material": "^5.18.0",
87
86
  "@mui/lab": "5.0.0-alpha.175",
88
- "@mui/material": "^5.16.14",
87
+ "@mui/material": "^5.18.0",
89
88
  "@react-hook/window-size": "^3.1.1",
90
- "@testing-library/jest-dom": "^6.6.3",
91
- "@testing-library/react": "^16.2.0",
89
+ "@testing-library/jest-dom": "^6.8.0",
90
+ "@testing-library/react": "^16.3.0",
92
91
  "@testing-library/user-event": "^14.6.1",
93
92
  "@types/autosuggest-highlight": "^3.2.3",
94
93
  "@types/eslint": "^8.56.12",
@@ -97,53 +96,53 @@
97
96
  "@types/json-logic-js": "^2.0.8",
98
97
  "@types/license-checker": "^25.0.6",
99
98
  "@types/localized-countries": "^2.0.3",
100
- "@types/node": "^22.13.4",
101
- "@types/prop-types": "^15.7.14",
102
- "@types/react": "^18.3.18",
103
- "@types/react-dom": "^18.3.5",
99
+ "@types/node": "^22.18.1",
100
+ "@types/prop-types": "^15.7.15",
101
+ "@types/react": "^18.3.24",
102
+ "@types/react-dom": "^18.3.7",
104
103
  "@types/react-resizable": "^3.0.8",
105
104
  "@typescript-eslint/eslint-plugin": "^7.18.0",
106
105
  "@typescript-eslint/parser": "^7.18.0",
107
- "@vitejs/plugin-react": "^4.3.4",
106
+ "@vitejs/plugin-react": "^4.7.0",
108
107
  "ag-grid-community": "^33.1.0",
109
- "ag-grid-react": "^33.1.0",
108
+ "ag-grid-react": "^33.3.2",
110
109
  "babel-eslint": "^10.1.0",
111
110
  "babel-preset-airbnb": "^5.0.0",
112
111
  "babel-preset-vite": "^1.1.3",
113
112
  "eslint": "^8.57.1",
114
113
  "eslint-config-airbnb": "^19.0.4",
115
114
  "eslint-config-airbnb-typescript": "^18.0.0",
116
- "eslint-config-prettier": "^10.1.1",
115
+ "eslint-config-prettier": "^10.1.8",
117
116
  "eslint-config-react-app": "^7.0.1",
118
117
  "eslint-plugin-flowtype": "^8.0.3",
119
- "eslint-plugin-import": "^2.31.0",
118
+ "eslint-plugin-import": "^2.32.0",
120
119
  "eslint-plugin-jsx-a11y": "^6.10.2",
121
- "eslint-plugin-prettier": "^5.2.5",
122
- "eslint-plugin-react": "^7.37.4",
120
+ "eslint-plugin-prettier": "^5.5.4",
121
+ "eslint-plugin-react": "^7.37.5",
123
122
  "eslint-plugin-react-hooks": "^4.6.2",
124
- "glob": "^11.0.1",
123
+ "glob": "^11.0.3",
125
124
  "identity-obj-proxy": "^3.0.0",
126
125
  "jest": "^29.7.0",
127
126
  "jest-environment-jsdom": "^29.7.0",
128
127
  "license-checker": "^25.0.1",
129
128
  "notistack": "^3.0.2",
130
- "prettier": "^3.5.3",
129
+ "prettier": "^3.6.2",
131
130
  "prettier-plugin-properties": "^0.3.0",
132
131
  "react": "^18.3.1",
133
132
  "react-dom": "^18.3.1",
134
- "react-hook-form": "^7.54.2",
135
- "react-intl": "^7.1.6",
133
+ "react-hook-form": "^7.62.0",
134
+ "react-intl": "^7.1.11",
136
135
  "react-papaparse": "^4.4.0",
137
136
  "react-resizable": "^3.0.5",
138
- "react-router": "^7.4.1",
137
+ "react-router": "^7.8.2",
139
138
  "svgo": "^3.3.2",
140
139
  "ts-node": "^10.9.2",
141
- "typescript": "~5.5.4",
142
- "vite": "^6.2.1",
143
- "vite-plugin-dts": "^4.5.3",
140
+ "typescript": "~5.6.3",
141
+ "vite": "^6.3.6",
142
+ "vite-plugin-dts": "^4.5.4",
144
143
  "vite-plugin-eslint": "^1.8.1",
145
- "vite-plugin-lib-inject-css": "^2.2.1",
146
- "vite-plugin-svgr": "^4.3.0",
147
- "yup": "^1.6.1"
144
+ "vite-plugin-lib-inject-css": "^2.2.2",
145
+ "vite-plugin-svgr": "^4.5.0",
146
+ "yup": "^1.7.0"
148
147
  }
149
148
  }