@gridsuite/commons-ui 0.81.0 → 0.83.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 (52) hide show
  1. package/dist/assets/ExpertFilterForm.css +8 -1
  2. package/dist/components/authentication/AuthenticationRouterErrorDisplay.js +1 -0
  3. package/dist/components/authentication/utils/authService.d.ts +6 -1
  4. package/dist/components/authentication/utils/userManagerMock.d.ts +18 -17
  5. package/dist/components/authentication/utils/userManagerMock.js +80 -92
  6. package/dist/components/cardErrorBoundary/CardErrorBoundary.d.ts +6 -9
  7. package/dist/components/cardErrorBoundary/CardErrorBoundary.js +1 -3
  8. package/dist/components/filter/expert/expertFilterConstants.js +2 -2
  9. package/dist/components/flatParameters/FlatParameters.js +13 -14
  10. package/dist/components/inputs/reactHookForm/DirectoryItemsInput.js +1 -1
  11. package/dist/components/inputs/reactHookForm/agGridTable/cellEditors/numericEditor.d.ts +6 -7
  12. package/dist/components/inputs/reactHookForm/agGridTable/cellEditors/numericEditor.js +7 -13
  13. package/dist/components/inputs/reactQueryBuilder/CombinatorSelector.js +4 -2
  14. package/dist/components/inputs/reactQueryBuilder/FieldSelector.js +3 -1
  15. package/dist/components/inputs/reactQueryBuilder/PropertyValueEditor.js +18 -6
  16. package/dist/components/inputs/reactQueryBuilder/TextValueEditor.js +14 -2
  17. package/dist/components/inputs/reactQueryBuilder/ValueSelector.js +3 -1
  18. package/dist/components/topBar/MessageBanner.d.ts +7 -0
  19. package/dist/components/topBar/MessageBanner.js +55 -0
  20. package/dist/components/topBar/TopBar.d.ts +3 -2
  21. package/dist/components/topBar/TopBar.js +325 -312
  22. package/dist/components/topBar/UserSettingsDialog.d.ts +8 -0
  23. package/dist/components/topBar/UserSettingsDialog.js +48 -0
  24. package/dist/hooks/index.d.ts +1 -0
  25. package/dist/hooks/index.js +2 -0
  26. package/dist/hooks/useCustomFilterOptions.d.ts +6 -0
  27. package/dist/hooks/useCustomFilterOptions.js +20 -0
  28. package/dist/hooks/useSelectAppearance.d.ts +29 -0
  29. package/dist/hooks/useSelectAppearance.js +22 -0
  30. package/dist/index.js +4 -1
  31. package/dist/module-localized-countries.d.js +1 -0
  32. package/dist/translations/en/filterEn.d.ts +2 -2
  33. package/dist/translations/en/filterEn.js +5 -5
  34. package/dist/translations/en/filterExpertEn.d.ts +1 -0
  35. package/dist/translations/en/filterExpertEn.js +3 -2
  36. package/dist/translations/en/topBarEn.d.ts +7 -2
  37. package/dist/translations/en/topBarEn.js +8 -3
  38. package/dist/translations/fr/filterExpertFr.d.ts +1 -0
  39. package/dist/translations/fr/filterExpertFr.js +3 -2
  40. package/dist/translations/fr/filterFr.d.ts +2 -2
  41. package/dist/translations/fr/filterFr.js +5 -5
  42. package/dist/translations/fr/topBarFr.d.ts +6 -1
  43. package/dist/translations/fr/topBarFr.js +7 -2
  44. package/dist/utils/index.js +2 -1
  45. package/dist/utils/mapper/getFileIcon.js +0 -1
  46. package/dist/utils/types/elementType.d.ts +0 -1
  47. package/dist/utils/types/elementType.js +0 -1
  48. package/dist/utils/types/equipmentType.d.ts +4 -0
  49. package/dist/utils/types/equipmentType.js +6 -0
  50. package/dist/utils/types/index.js +2 -1
  51. package/dist/utils/types/metadata.d.ts +1 -3
  52. package/package.json +1 -2
@@ -95,6 +95,14 @@
95
95
  display: none;
96
96
  }
97
97
 
98
+ .queryBuilder-branches .rule:hover .rule-remove {
99
+ visibility: visible;
100
+ }
101
+
102
+ .queryBuilder-branches .rule .rule-remove {
103
+ visibility: hidden;
104
+ }
105
+
98
106
  .queryBuilder-branches .ruleGroup .ruleGroup::before,
99
107
  .queryBuilder-branches .ruleGroup .ruleGroup::after {
100
108
  left: calc(calc(-0.5rem - 1px) - 1px);
@@ -110,7 +118,6 @@
110
118
  }
111
119
 
112
120
  /* Justify layout */
113
- .queryBuilder .ruleGroup-remove,
114
121
  .queryBuilder .rule-remove {
115
122
  margin-left: auto;
116
123
  }
@@ -2,6 +2,7 @@ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { Grid } from "@mui/material";
3
3
  import { Logout } from "./Logout.js";
4
4
  import { logout } from "./utils/authService.js";
5
+ import "./utils/userManagerMock.js";
5
6
  import { ErrorInLogoutAlert } from "./alert/ErrorInLogoutAlert.js";
6
7
  import { ErrorInUserValidationAlert } from "./alert/ErrorInUserValidationAlert.js";
7
8
  import { UnauthorizedAccessAlert } from "./alert/UnauthorizedAccessAlert.js";
@@ -1,5 +1,5 @@
1
1
  import { AuthenticationActions } from '../../../redux/actions/authActions';
2
- import { User, UserManager } from 'oidc-client';
2
+ import { Log, User, UserManager } from 'oidc-client';
3
3
  import { Location, NavigateFunction } from 'react-router-dom';
4
4
  import { Dispatch } from 'react';
5
5
 
@@ -19,6 +19,11 @@ type CustomUserManager = UserManager & {
19
19
  maxExpiresIn?: number;
20
20
  };
21
21
  };
22
+ declare global {
23
+ interface Window {
24
+ OIDCLog?: Log;
25
+ }
26
+ }
22
27
  export declare function login(location: Location, userManagerInstance: UserManager | null): Promise<void> | undefined;
23
28
  export declare function logout(dispatch: Dispatch<AuthenticationActions>, userManagerInstance: UserManager | null): Promise<void> | undefined;
24
29
  export declare function dispatchUser(dispatch: Dispatch<AuthenticationActions>, userManagerInstance: CustomUserManager, validateUser: UserValidationFunc): Promise<void>;
@@ -1,14 +1,18 @@
1
- import { MetadataService, SigninRequest, SigninResponse, SignoutRequest, SignoutResponse, User, UserManager, UserManagerEvents, UserManagerSettings } from 'oidc-client';
1
+ import { MetadataService, OidcClientSettings, SigninRequest, SigninResponse, SignoutRequest, SignoutResponse, User, UserManager, UserManagerEvents, UserManagerSettings } from 'oidc-client';
2
2
 
3
3
  declare class Events implements UserManagerEvents {
4
- userLoadedCallbacks: ((data: User) => void)[];
5
- addUserLoaded(callback: (data: User) => void): void;
6
- addSilentRenewError(): void;
4
+ userLoadedCallbacks: UserManagerEvents.UserLoadedCallback[];
7
5
  load(): void;
8
6
  unload(): void;
7
+ addAccessTokenExpiring(): void;
8
+ removeAccessTokenExpiring(): void;
9
+ addAccessTokenExpired(): void;
10
+ removeAccessTokenExpired(): void;
11
+ addUserLoaded(callback: UserManagerEvents.UserLoadedCallback): void;
9
12
  removeUserLoaded(): void;
10
13
  addUserUnloaded(): void;
11
14
  removeUserUnloaded(): void;
15
+ addSilentRenewError(): void;
12
16
  removeSilentRenewError(): void;
13
17
  addUserSignedIn(): void;
14
18
  removeUserSignedIn(): void;
@@ -16,32 +20,29 @@ declare class Events implements UserManagerEvents {
16
20
  removeUserSignedOut(): void;
17
21
  addUserSessionChanged(): void;
18
22
  removeUserSessionChanged(): void;
19
- addAccessTokenExpiring(): void;
20
- removeAccessTokenExpiring(): void;
21
- addAccessTokenExpired(): void;
22
- removeAccessTokenExpired(): void;
23
23
  }
24
24
  export declare class UserManagerMock implements UserManager {
25
- settings: UserManagerSettings;
26
25
  events: Events;
27
- user: User;
26
+ readonly settings: OidcClientSettings;
27
+ private static readonly user;
28
28
  readonly metadataService: MetadataService;
29
+ private static readonly STORAGE_KEY;
29
30
  constructor(settings: UserManagerSettings);
30
- getUser(): Promise<any>;
31
+ getUser(): Promise<User | null>;
31
32
  signinSilent(): Promise<User>;
32
33
  signinSilentCallback(): Promise<never>;
33
34
  signinRedirect(): Promise<void>;
34
35
  signoutRedirect(): Promise<void>;
35
- signinRedirectCallback(): Promise<User>;
36
+ signinRedirectCallback(): Promise<Readonly<User>>;
36
37
  clearStaleState(): Promise<void>;
37
38
  storeUser(): Promise<void>;
38
39
  removeUser(): Promise<void>;
39
- signinPopup(): Promise<User>;
40
+ signinPopup(): Promise<Readonly<User>>;
40
41
  signinPopupCallback(): Promise<undefined>;
41
42
  signoutRedirectCallback(): Promise<SignoutResponse>;
42
43
  signoutPopup(): Promise<void>;
43
44
  signoutPopupCallback(): Promise<void>;
44
- signinCallback(): Promise<User>;
45
+ signinCallback(): Promise<Readonly<User>>;
45
46
  signoutCallback(): Promise<undefined>;
46
47
  querySessionStatus(): Promise<{
47
48
  session_state: string;
@@ -49,11 +50,11 @@ export declare class UserManagerMock implements UserManager {
49
50
  sid: undefined;
50
51
  }>;
51
52
  revokeAccessToken(): Promise<void>;
52
- startSilentRenew(): Promise<void>;
53
- stopSilentRenew(): Promise<void>;
53
+ startSilentRenew(): void;
54
+ stopSilentRenew(): void;
54
55
  createSigninRequest(): Promise<SigninRequest>;
55
56
  processSigninResponse(): Promise<SigninResponse>;
56
57
  createSignoutRequest(): Promise<SignoutRequest>;
57
58
  processSignoutResponse(): Promise<SignoutResponse>;
58
59
  }
59
- export default UserManagerMock;
60
+ export {};
@@ -2,21 +2,29 @@ class Events {
2
2
  constructor() {
3
3
  this.userLoadedCallbacks = [];
4
4
  }
5
- addUserLoaded(callback) {
6
- this.userLoadedCallbacks.push(callback);
7
- }
8
- addSilentRenewError() {
9
- }
10
5
  load() {
11
6
  }
12
7
  unload() {
13
8
  }
9
+ addAccessTokenExpiring() {
10
+ }
11
+ removeAccessTokenExpiring() {
12
+ }
13
+ addAccessTokenExpired() {
14
+ }
15
+ removeAccessTokenExpired() {
16
+ }
17
+ addUserLoaded(callback) {
18
+ this.userLoadedCallbacks.push(callback);
19
+ }
14
20
  removeUserLoaded() {
15
21
  }
16
22
  addUserUnloaded() {
17
23
  }
18
24
  removeUserUnloaded() {
19
25
  }
26
+ addSilentRenewError() {
27
+ }
20
28
  removeSilentRenewError() {
21
29
  }
22
30
  addUserSignedIn() {
@@ -31,139 +39,119 @@ class Events {
31
39
  }
32
40
  removeUserSessionChanged() {
33
41
  }
34
- addAccessTokenExpiring() {
35
- }
36
- removeAccessTokenExpiring() {
37
- }
38
- addAccessTokenExpired() {
39
- }
40
- removeAccessTokenExpired() {
41
- }
42
42
  }
43
- class UserManagerMock {
43
+ const _UserManagerMock = class _UserManagerMock {
44
44
  constructor(settings) {
45
- this.user = {
46
- profile: {
47
- name: "John Doe",
48
- email: "Jhon.Doe@rte-france.com",
49
- iss: "",
50
- sub: "",
51
- aud: "",
52
- exp: Number.MAX_SAFE_INTEGER,
53
- iat: 0
54
- },
55
- id_token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IllNRUxIVDBndmIwbXhvU0RvWWZvbWpxZmpZVSJ9.eyJhdWQiOiI5YzQwMjQ2MS1iMmFiLTQ3NjctOWRiMy02Njg1OWJiMGZjZDAiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzUwMmRhZDUtZDY0Yy00NmM3LTlkNDctYjE2ZjU4MGZjZmE5L3YyLjAiLCJpYXQiOjE1ODUzMzEyNDksIm5iZiI6MTU4NTMzMTI0OSwiZXhwIjoyNTg1MzM1MTQ5LCJhaW8iOiJBV1FBbS84UEFBQUF3Q0xyTDRIUEUvTnVjOU9OdHN0SUV4cVpyMUlqa1FGbXJvUW5EUzJBaksyWnpneUhQTldPdkE3bitveHkvRzgxWElsb1A0TitsQjZINFJteElwakhNYVArTjIyTzVnMUFaR04yc1d6VHA5T3JWMDIvOXhndXJBMjZrdUNXbGg2RSIsImF0X2hhc2giOiJJaWRYdGRHdzVkbjlOZDFQblVvbDh3IiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvOTE4ODA0MGQtNmM2Ny00YzViLWIxMTItMzZhMzA0YjY2ZGFkLyIsIm5vbmNlIjoiMjkzZTcxNzhmOWE5NGZlNjg1ZWY3MjdlZTg5MTYxYjEiLCJzdWIiOiJyTnZjWXJMSXJSN25iSDJPQlhoOFkzU05wZEtPc3dfTUNkX3F3NF9vNDRJIiwidGlkIjoiNzUwMmRhZDUtZDY0Yy00NmM3LTlkNDctYjE2ZjU4MGZjZmE5IiwidXRpIjoiUFBYdkw1UWxDMG1oMGp2N3NaNGJBQSIsInZlciI6IjIuMCJ9.dPAh24KTfsqmDaRoBtMLcayAWnDqVtydQ97P1a99dg93JsDu4Jhxju9vlzvjd6Ro5a1RZdrKFKB_pgC2DkQ3wSeYjpdSNyBAlW1_ryq65JkTJVMp33OsM_7SdjaRIiJfPiJ3U9jRBSyj7ofoHCLUjD_Uu-XreKxpMGhFHOQIO72UfXg8TBpsapjkEv9Dyz2UqMa2BQvO5mxKw93LNg5BI6j2a5LhbMEmmRWqfxWGITJ9TWfHjYdFkrXKcmvWZ9D2b4tsw_5NorDxkuzVFhA89M_0ASzOXoj1Yb6LgdkzWXDimssvyyz5Oe4V3gdkAe8Jj7Uwz-9AR-MO2kNkH7ytHA",
56
- session_state: "session state",
57
- access_token: "eyJ0eXAiOiJKV1QiLCJub25jZSI6InhKWHlQeXVrU1paQ3BOeEcxZUQway1lVDF0YzZtQ01ZVkZKcnBDOTJxc28iLCJhbGciOiJSUzI1NiIsIng1dCI6IllNRUxIVDBndmIwbXhvU0RvWWZvbWpxZmpZVSIsImtpZCI6IllNRUxIVDBndmIwbXhvU0RvWWZvbWpxZmpZVSJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83NTAyZGFkNS1kNjRjLTQ2YzctOWQ0Ny1iMTZmNTgwZmNmYTkvIiwiaWF0IjoxNTg1MzMxMjQ5LCJuYmYiOjE1ODUzMzEyNDksImV4cCI6MTU4NTMzNTE0OSwiYWNjdCI6MCwiYWNyIjoiMSIsImFpbyI6IkFVUUF1LzhQQUFBQXdwc3RYMlVkY2VDQWx4dU9tVHpIY0R3RlhTWUtYanIvZUNTSi9PdTRqbTJyUVBCUml0U1dWMThmNldCVEdNdnQ5ZGx0Ry9lTXB1VXZqaTN2NCtzanh3PT0iLCJhbHRzZWNpZCI6IjE6bGl2ZS5jb206MDAwMzQwMDExOUZEOTIxMiIsImFtciI6WyJwd2QiXSwiYXBwX2Rpc3BsYXluYW1lIjoic3BhIiwiYXBwaWQiOiI5YzQwMjQ2MS1iMmFiLTQ3NjctOWRiMy02Njg1OWJiMGZjZDAiLCJhcHBpZGFjciI6IjAiLCJlbWFpbCI6ImNoYW1zZWRkaW5lLmJlbmhhbWVkQGVuc2ktdW1hLnRuIiwiZmFtaWx5X25hbWUiOiJCRU5IQU1FRCIsImdpdmVuX25hbWUiOiJDaGFtc2VkZGluZSIsImlkcCI6ImxpdmUuY29tIiwiaXBhZGRyIjoiNzcuMjA0LjE0Ni4xNTkiLCJuYW1lIjoiQ2hhbXNlZGRpbmUgQkVOSEFNRUQiLCJvaWQiOiIzNTIzYmQ3OC0yZjIxLTQ3ZjYtODhlOC1hYWIzYjZmMjdmNjAiLCJwbGF0ZiI6IjE0IiwicHVpZCI6IjEwMDMyMDAwOURFMDg1NkEiLCJzY3AiOiJVc2VyLlJlYWQgcHJvZmlsZSBvcGVuaWQgZW1haWwiLCJzdWIiOiJjVEd5LVlfV3FLR2x1cmRUVDdSUVlfY3FjSDJoVHpEdllZTmotQ3hONXA4IiwidGlkIjoiNzUwMmRhZDUtZDY0Yy00NmM3LTlkNDctYjE2ZjU4MGZjZmE5IiwidW5pcXVlX25hbWUiOiJsaXZlLmNvbSNjaGFtc2VkZGluZS5iZW5oYW1lZEBlbnNpLXVtYS50biIsInV0aSI6IlBQWHZMNVFsQzBtaDBqdjdzWjRiQUEiLCJ2ZXIiOiIxLjAiLCJ4bXNfc3QiOnsic3ViIjoick52Y1lyTElyUjduYkgyT0JYaDhZM1NOcGRLT3N3X01DZF9xdzRfbzQ0SSJ9LCJ4bXNfdGNkdCI6MTU4MjgyMDM1Mn0.W_ccOGW_AGdg37KSMi7LWHtvm3Mw5p1dHjgDIrUaXduKF2iLS4dCaPw7yeo4VjAcOyV6C0h6ABLDCtkwVt8BSDTIIU7DaT8k2bRbMCCq69BmeiYPsbp-yX6ywGCx5DHsnOLqI2oHbBQktA2Nmv9Va651Pbm3OpSPuGPdVimkFCcnisiGlUOej1ZMNwyVT6386O2pERPtxmFUt_D1dKLxBXxBNxLVUG5BG3bI7wMpBOHEUA5CbaBzYXmGrLMXVVbrj9OsF-WQ6aNoqsm9cicX6pJB60lFz1dxLeSgcFO7Zh2K3PFe4FnXCqAvNPadQMz_kJEO9_phlDV85c2MPqeXbA",
58
- token_type: "Bearer",
59
- scope: "scopes",
60
- scopes: ["scopes"],
61
- expires_at: Number.MAX_SAFE_INTEGER,
62
- expires_in: Number.MAX_SAFE_INTEGER,
63
- expired: false,
64
- state: null,
65
- toStorageString: () => "Mock of UserManager"
66
- };
67
45
  this.metadataService = null;
68
46
  this.settings = settings;
69
47
  this.events = new Events();
70
48
  }
71
- // eslint-disable-next-line class-methods-use-this
72
- getUser() {
73
- return Promise.resolve(JSON.parse(sessionStorage.getItem("powsybl-gridsuite-mock-user") ?? "null"));
49
+ async getUser() {
50
+ return JSON.parse(sessionStorage.getItem(_UserManagerMock.STORAGE_KEY) ?? "null");
74
51
  }
75
52
  async signinSilent() {
76
53
  console.info("signinSilent..............");
77
- const localStorageUser = JSON.parse(localStorage.getItem("powsybl-gridsuite-mock-user") ?? "null");
54
+ const localStorageUser = JSON.parse(localStorage.getItem(_UserManagerMock.STORAGE_KEY) ?? "null");
78
55
  if (localStorageUser === null) {
79
56
  throw new Error("End-User authentication required");
80
57
  }
81
- sessionStorage.setItem("powsybl-gridsuite-mock-user", JSON.stringify(localStorageUser));
58
+ sessionStorage.setItem(_UserManagerMock.STORAGE_KEY, JSON.stringify(localStorageUser));
82
59
  this.events.userLoadedCallbacks.forEach((c) => c(localStorageUser));
83
60
  return localStorageUser;
84
61
  }
85
- // eslint-disable-next-line class-methods-use-this
86
62
  signinSilentCallback() {
87
63
  console.error("Unsupported, iframe signinSilentCallback in UserManagerMock (dev mode)");
88
64
  return Promise.reject();
89
65
  }
90
- signinRedirect() {
91
- localStorage.setItem("powsybl-gridsuite-mock-user", JSON.stringify(this.user));
66
+ async signinRedirect() {
67
+ localStorage.setItem(_UserManagerMock.STORAGE_KEY, JSON.stringify(_UserManagerMock.user));
92
68
  window.location.href = "./sign-in-callback";
93
- return Promise.resolve();
94
69
  }
95
- // eslint-disable-next-line class-methods-use-this
96
- signoutRedirect() {
97
- sessionStorage.removeItem("powsybl-gridsuite-mock-user");
98
- localStorage.removeItem("powsybl-gridsuite-mock-user");
70
+ async signoutRedirect() {
71
+ sessionStorage.removeItem(_UserManagerMock.STORAGE_KEY);
72
+ localStorage.removeItem(_UserManagerMock.STORAGE_KEY);
99
73
  window.location.href = ".";
100
- return Promise.resolve();
101
74
  }
102
- signinRedirectCallback() {
103
- sessionStorage.setItem("powsybl-gridsuite-mock-user", JSON.stringify(this.user));
104
- this.events.userLoadedCallbacks.forEach((c) => c(this.user));
105
- return Promise.resolve(this.user);
75
+ async signinRedirectCallback() {
76
+ sessionStorage.setItem(_UserManagerMock.STORAGE_KEY, JSON.stringify(_UserManagerMock.user));
77
+ this.events.userLoadedCallbacks.forEach((c) => c(_UserManagerMock.user));
78
+ return _UserManagerMock.user;
106
79
  }
107
- clearStaleState() {
108
- return Promise.resolve();
80
+ async clearStaleState() {
109
81
  }
110
- storeUser() {
111
- return Promise.resolve();
82
+ async storeUser() {
112
83
  }
113
- removeUser() {
114
- return Promise.resolve();
84
+ async removeUser() {
115
85
  }
116
- signinPopup() {
117
- return Promise.resolve(this.user);
86
+ async signinPopup() {
87
+ return _UserManagerMock.user;
118
88
  }
119
- signinPopupCallback() {
120
- return Promise.resolve(void 0);
89
+ async signinPopupCallback() {
90
+ return void 0;
121
91
  }
122
- signoutRedirectCallback() {
123
- return Promise.resolve({});
92
+ async signoutRedirectCallback() {
93
+ return {};
124
94
  }
125
- signoutPopup() {
126
- return Promise.resolve();
95
+ async signoutPopup() {
127
96
  }
128
- signoutPopupCallback() {
129
- return Promise.resolve();
97
+ async signoutPopupCallback() {
130
98
  }
131
- signinCallback() {
132
- return Promise.resolve(this.user);
99
+ async signinCallback() {
100
+ return _UserManagerMock.user;
133
101
  }
134
- signoutCallback() {
135
- return Promise.resolve(void 0);
102
+ async signoutCallback() {
103
+ return void 0;
136
104
  }
137
- querySessionStatus() {
138
- return Promise.resolve({
105
+ async querySessionStatus() {
106
+ return {
139
107
  session_state: "",
140
108
  sub: "",
141
109
  sid: void 0
142
- });
110
+ };
143
111
  }
144
- revokeAccessToken() {
145
- return Promise.resolve();
112
+ async revokeAccessToken() {
146
113
  }
147
114
  startSilentRenew() {
148
- return Promise.resolve();
149
115
  }
150
116
  stopSilentRenew() {
151
- return Promise.resolve();
152
117
  }
153
- createSigninRequest() {
154
- return Promise.resolve({});
118
+ async createSigninRequest() {
119
+ return {};
155
120
  }
156
- processSigninResponse() {
157
- return Promise.resolve({});
121
+ async processSigninResponse() {
122
+ return {};
158
123
  }
159
- createSignoutRequest() {
160
- return Promise.resolve({});
124
+ async createSignoutRequest() {
125
+ return {};
161
126
  }
162
- processSignoutResponse() {
163
- return Promise.resolve({});
127
+ async processSignoutResponse() {
128
+ return {};
164
129
  }
165
- }
130
+ };
131
+ _UserManagerMock.user = Object.freeze({
132
+ profile: Object.freeze({
133
+ name: "John Doe",
134
+ email: "Jhon.Doe@rte-france.com",
135
+ iss: "",
136
+ sub: "",
137
+ aud: "",
138
+ exp: Number.MAX_SAFE_INTEGER,
139
+ iat: 0
140
+ }),
141
+ id_token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IllNRUxIVDBndmIwbXhvU0RvWWZvbWpxZmpZVSJ9.eyJhdWQiOiI5YzQwMjQ2MS1iMmFiLTQ3NjctOWRiMy02Njg1OWJiMGZjZDAiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzUwMmRhZDUtZDY0Yy00NmM3LTlkNDctYjE2ZjU4MGZjZmE5L3YyLjAiLCJpYXQiOjE1ODUzMzEyNDksIm5iZiI6MTU4NTMzMTI0OSwiZXhwIjoyNTg1MzM1MTQ5LCJhaW8iOiJBV1FBbS84UEFBQUF3Q0xyTDRIUEUvTnVjOU9OdHN0SUV4cVpyMUlqa1FGbXJvUW5EUzJBaksyWnpneUhQTldPdkE3bitveHkvRzgxWElsb1A0TitsQjZINFJteElwakhNYVArTjIyTzVnMUFaR04yc1d6VHA5T3JWMDIvOXhndXJBMjZrdUNXbGg2RSIsImF0X2hhc2giOiJJaWRYdGRHdzVkbjlOZDFQblVvbDh3IiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvOTE4ODA0MGQtNmM2Ny00YzViLWIxMTItMzZhMzA0YjY2ZGFkLyIsIm5vbmNlIjoiMjkzZTcxNzhmOWE5NGZlNjg1ZWY3MjdlZTg5MTYxYjEiLCJzdWIiOiJyTnZjWXJMSXJSN25iSDJPQlhoOFkzU05wZEtPc3dfTUNkX3F3NF9vNDRJIiwidGlkIjoiNzUwMmRhZDUtZDY0Yy00NmM3LTlkNDctYjE2ZjU4MGZjZmE5IiwidXRpIjoiUFBYdkw1UWxDMG1oMGp2N3NaNGJBQSIsInZlciI6IjIuMCJ9.dPAh24KTfsqmDaRoBtMLcayAWnDqVtydQ97P1a99dg93JsDu4Jhxju9vlzvjd6Ro5a1RZdrKFKB_pgC2DkQ3wSeYjpdSNyBAlW1_ryq65JkTJVMp33OsM_7SdjaRIiJfPiJ3U9jRBSyj7ofoHCLUjD_Uu-XreKxpMGhFHOQIO72UfXg8TBpsapjkEv9Dyz2UqMa2BQvO5mxKw93LNg5BI6j2a5LhbMEmmRWqfxWGITJ9TWfHjYdFkrXKcmvWZ9D2b4tsw_5NorDxkuzVFhA89M_0ASzOXoj1Yb6LgdkzWXDimssvyyz5Oe4V3gdkAe8Jj7Uwz-9AR-MO2kNkH7ytHA",
142
+ session_state: "session state",
143
+ access_token: "eyJ0eXAiOiJKV1QiLCJub25jZSI6InhKWHlQeXVrU1paQ3BOeEcxZUQway1lVDF0YzZtQ01ZVkZKcnBDOTJxc28iLCJhbGciOiJSUzI1NiIsIng1dCI6IllNRUxIVDBndmIwbXhvU0RvWWZvbWpxZmpZVSIsImtpZCI6IllNRUxIVDBndmIwbXhvU0RvWWZvbWpxZmpZVSJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83NTAyZGFkNS1kNjRjLTQ2YzctOWQ0Ny1iMTZmNTgwZmNmYTkvIiwiaWF0IjoxNTg1MzMxMjQ5LCJuYmYiOjE1ODUzMzEyNDksImV4cCI6MTU4NTMzNTE0OSwiYWNjdCI6MCwiYWNyIjoiMSIsImFpbyI6IkFVUUF1LzhQQUFBQXdwc3RYMlVkY2VDQWx4dU9tVHpIY0R3RlhTWUtYanIvZUNTSi9PdTRqbTJyUVBCUml0U1dWMThmNldCVEdNdnQ5ZGx0Ry9lTXB1VXZqaTN2NCtzanh3PT0iLCJhbHRzZWNpZCI6IjE6bGl2ZS5jb206MDAwMzQwMDExOUZEOTIxMiIsImFtciI6WyJwd2QiXSwiYXBwX2Rpc3BsYXluYW1lIjoic3BhIiwiYXBwaWQiOiI5YzQwMjQ2MS1iMmFiLTQ3NjctOWRiMy02Njg1OWJiMGZjZDAiLCJhcHBpZGFjciI6IjAiLCJlbWFpbCI6ImNoYW1zZWRkaW5lLmJlbmhhbWVkQGVuc2ktdW1hLnRuIiwiZmFtaWx5X25hbWUiOiJCRU5IQU1FRCIsImdpdmVuX25hbWUiOiJDaGFtc2VkZGluZSIsImlkcCI6ImxpdmUuY29tIiwiaXBhZGRyIjoiNzcuMjA0LjE0Ni4xNTkiLCJuYW1lIjoiQ2hhbXNlZGRpbmUgQkVOSEFNRUQiLCJvaWQiOiIzNTIzYmQ3OC0yZjIxLTQ3ZjYtODhlOC1hYWIzYjZmMjdmNjAiLCJwbGF0ZiI6IjE0IiwicHVpZCI6IjEwMDMyMDAwOURFMDg1NkEiLCJzY3AiOiJVc2VyLlJlYWQgcHJvZmlsZSBvcGVuaWQgZW1haWwiLCJzdWIiOiJjVEd5LVlfV3FLR2x1cmRUVDdSUVlfY3FjSDJoVHpEdllZTmotQ3hONXA4IiwidGlkIjoiNzUwMmRhZDUtZDY0Yy00NmM3LTlkNDctYjE2ZjU4MGZjZmE5IiwidW5pcXVlX25hbWUiOiJsaXZlLmNvbSNjaGFtc2VkZGluZS5iZW5oYW1lZEBlbnNpLXVtYS50biIsInV0aSI6IlBQWHZMNVFsQzBtaDBqdjdzWjRiQUEiLCJ2ZXIiOiIxLjAiLCJ4bXNfc3QiOnsic3ViIjoick52Y1lyTElyUjduYkgyT0JYaDhZM1NOcGRLT3N3X01DZF9xdzRfbzQ0SSJ9LCJ4bXNfdGNkdCI6MTU4MjgyMDM1Mn0.W_ccOGW_AGdg37KSMi7LWHtvm3Mw5p1dHjgDIrUaXduKF2iLS4dCaPw7yeo4VjAcOyV6C0h6ABLDCtkwVt8BSDTIIU7DaT8k2bRbMCCq69BmeiYPsbp-yX6ywGCx5DHsnOLqI2oHbBQktA2Nmv9Va651Pbm3OpSPuGPdVimkFCcnisiGlUOej1ZMNwyVT6386O2pERPtxmFUt_D1dKLxBXxBNxLVUG5BG3bI7wMpBOHEUA5CbaBzYXmGrLMXVVbrj9OsF-WQ6aNoqsm9cicX6pJB60lFz1dxLeSgcFO7Zh2K3PFe4FnXCqAvNPadQMz_kJEO9_phlDV85c2MPqeXbA",
144
+ token_type: "Bearer",
145
+ scope: "scopes",
146
+ scopes: ["scopes"],
147
+ expires_at: Number.MAX_SAFE_INTEGER,
148
+ expires_in: Number.MAX_SAFE_INTEGER,
149
+ expired: false,
150
+ state: null,
151
+ toStorageString: () => "Mock of UserManager"
152
+ });
153
+ _UserManagerMock.STORAGE_KEY = "powsybl-gridsuite-mock-user";
154
+ let UserManagerMock = _UserManagerMock;
166
155
  export {
167
- UserManagerMock,
168
- UserManagerMock as default
156
+ UserManagerMock
169
157
  };
@@ -1,12 +1,9 @@
1
- import { Component, ErrorInfo, ReactNode } from 'react';
1
+ import { Component, ErrorInfo, PropsWithChildren } from 'react';
2
2
  import { IconButtonProps } from '@mui/material';
3
3
 
4
4
  export interface ExpandMoreProps extends IconButtonProps {
5
5
  expand: boolean;
6
6
  }
7
- interface Props {
8
- children?: ReactNode;
9
- }
10
7
  type CardErrorBoundaryStateError = {
11
8
  hasError: true;
12
9
  error: Error;
@@ -17,15 +14,15 @@ type CardErrorBoundaryStateSuccess = {
17
14
  type CardErrorBoundaryState = (CardErrorBoundaryStateError | CardErrorBoundaryStateSuccess) & {
18
15
  expanded: boolean;
19
16
  };
20
- export declare class CardErrorBoundary extends Component<Props, CardErrorBoundaryState> {
21
- constructor(props: Props);
17
+ export declare class CardErrorBoundary extends Component<PropsWithChildren<{}>, CardErrorBoundaryState> {
18
+ constructor(props: PropsWithChildren<{}>);
22
19
  static getDerivedStateFromError(error: Error): {
23
20
  hasError: boolean;
24
21
  error: Error;
25
22
  };
26
23
  componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
27
- handleExpandClick(): void;
28
- handleReloadClick(): void;
29
- render(): string | number | boolean | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | null | undefined;
24
+ private handleExpandClick;
25
+ private handleReloadClick;
26
+ render(): string | number | boolean | import("react/jsx-runtime").JSX.Element | Iterable<import('react').ReactNode> | null | undefined;
30
27
  }
31
28
  export {};
@@ -30,9 +30,7 @@ class CardErrorBoundary extends Component {
30
30
  console.error("CardErrorBoundary caught: ", error, errorInfo);
31
31
  }
32
32
  handleExpandClick() {
33
- this.setState((state) => ({
34
- expanded: !state.expanded
35
- }));
33
+ this.setState((state) => ({ expanded: !state.expanded }));
36
34
  }
37
35
  handleReloadClick() {
38
36
  this.setState(() => ({
@@ -165,12 +165,12 @@ const OPERATOR_OPTIONS = {
165
165
  IS_PART_OF: {
166
166
  name: OperatorType.IS_PART_OF,
167
167
  customName: OperatorType.IS_PART_OF,
168
- label: "isPartOf"
168
+ label: "inFilter"
169
169
  },
170
170
  IS_NOT_PART_OF: {
171
171
  name: OperatorType.IS_NOT_PART_OF,
172
172
  customName: OperatorType.IS_NOT_PART_OF,
173
- label: "isNotPartOf"
173
+ label: "notInFilter"
174
174
  }
175
175
  };
176
176
  const COMBINATOR_OPTIONS = {
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment as Fragment$1 } from "react/jsx-runtime";
2
2
  import { useState, useCallback, Fragment } from "react";
3
- import { List, ListItem, Tooltip, Typography, Divider, TextField, Select, MenuItem, IconButton, Autocomplete, Chip, Switch } from "@mui/material";
3
+ import { List, ListItem, Tooltip, Typography, Divider, Select, MenuItem, TextField, IconButton, Autocomplete, Chip, Switch } from "@mui/material";
4
4
  import { Tune } from "@mui/icons-material";
5
5
  import { useIntl, FormattedMessage } from "react-intl";
6
6
  import { MultipleSelectionDialog } from "../multipleSelectionDialog/MultipleSelectionDialog.js";
@@ -314,20 +314,19 @@ function FlatParameters({
314
314
  }
315
315
  );
316
316
  }
317
- default:
318
- return /* @__PURE__ */ jsx(
319
- TextField,
320
- {
321
- sx: { width: "50%" },
322
- size: "small",
323
- value: fieldValue || "",
324
- onFocus: () => onUncommitted(param, true),
325
- onBlur: () => onUncommitted(param, false),
326
- onChange: (e) => onFieldChange(e.target.value, param),
327
- variant
328
- }
329
- );
330
317
  }
318
+ return /* @__PURE__ */ jsx(
319
+ TextField,
320
+ {
321
+ sx: { width: "50%" },
322
+ size: "small",
323
+ value: fieldValue || "",
324
+ onFocus: () => onUncommitted(param, true),
325
+ onBlur: () => onUncommitted(param, false),
326
+ onChange: (e) => onFieldChange(e.target.value, param),
327
+ variant
328
+ }
329
+ );
331
330
  };
332
331
  return /* @__PURE__ */ jsx(List, { sx: styles.paramList, children: paramsAsArray.map((param, index) => /* @__PURE__ */ jsxs(Fragment, { children: [
333
332
  /* @__PURE__ */ jsxs(ListItem, { sx: styles.paramListItem, children: [
@@ -140,7 +140,7 @@ function DirectoryItemsInput({
140
140
  {
141
141
  sx: mergeSx(
142
142
  styles.formDirectoryElements1,
143
- // @ts-ignore
143
+ // @ts-expect-error
144
144
  (error == null ? void 0 : error.message) && styles.formDirectoryElementsError
145
145
  ),
146
146
  error: !!(error == null ? void 0 : error.message),
@@ -8,16 +8,15 @@ import { ICellEditorComp, ICellEditorParams } from 'ag-grid-community';
8
8
  * https://www.ag-grid.com/react-data-grid/component-cell-editor/#cell-editor-example
9
9
  */
10
10
  export declare class NumericEditor implements ICellEditorComp {
11
- eInput: HTMLInputElement;
12
- cancelBeforeStart: boolean;
11
+ private eInput;
12
+ private cancelBeforeStart;
13
13
  init(params: ICellEditorParams): void;
14
- static isBackspace(event: KeyboardEvent): boolean;
15
- static isNavigationKey(event: KeyboardEvent): boolean;
14
+ private static isBackspace;
15
+ private static isNavigationKey;
16
16
  getGui(): HTMLInputElement;
17
17
  afterGuiAttached(): void;
18
18
  isCancelBeforeStart(): boolean;
19
19
  getValue(): number | null;
20
- static isCharNumeric(charStr: string | null): boolean | "" | null;
21
- static isNumericKey(event: KeyboardEvent): boolean | "" | null;
22
- static focusOut(): boolean;
20
+ private static isCharNumeric;
21
+ private static isNumericKey;
23
22
  }
@@ -1,10 +1,10 @@
1
- const KEY_BACKSPACE = "Backspace";
1
+ import { KeyCode } from "ag-grid-community";
2
2
  class NumericEditor {
3
3
  // gets called once before the renderer is used
4
4
  init(params) {
5
5
  this.eInput = document.createElement("input");
6
6
  this.eInput.classList.add("numeric-input");
7
- if (params.eventKey === KEY_BACKSPACE) {
7
+ if (params.eventKey === KeyCode.BACKSPACE) {
8
8
  this.eInput.value = "";
9
9
  } else if (NumericEditor.isCharNumeric(params.eventKey)) {
10
10
  this.eInput.value = params.eventKey;
@@ -28,7 +28,7 @@ class NumericEditor {
28
28
  this.cancelBeforeStart = !!isNotANumber;
29
29
  }
30
30
  static isBackspace(event) {
31
- return event.key === KEY_BACKSPACE;
31
+ return event.key === KeyCode.BACKSPACE;
32
32
  }
33
33
  static isNavigationKey(event) {
34
34
  return event.key === "ArrowLeft" || event.key === "ArrowRight";
@@ -47,20 +47,14 @@ class NumericEditor {
47
47
  }
48
48
  // returns the new value after editing
49
49
  getValue() {
50
- const { value } = this.eInput;
51
- const tmp = (value == null ? void 0 : value.replace(",", ".")) || "";
52
- return parseFloat(tmp) || null;
50
+ const result = parseFloat(this.eInput.value.replace(",", "."));
51
+ return Number.isNaN(result) ? null : result;
53
52
  }
54
53
  static isCharNumeric(charStr) {
55
- return charStr && !!/\d|,|\./.test(charStr);
54
+ return charStr && /\d|,|\./.test(charStr);
56
55
  }
57
56
  static isNumericKey(event) {
58
- const charStr = event.key;
59
- return NumericEditor.isCharNumeric(charStr);
60
- }
61
- // force call when focus is leaving the editor
62
- static focusOut() {
63
- return true;
57
+ return NumericEditor.isCharNumeric(event.key);
64
58
  }
65
59
  }
66
60
  export {
@@ -2,8 +2,9 @@ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { useState, useCallback } from "react";
3
3
  import { MaterialValueSelector } from "@react-querybuilder/material";
4
4
  import { PopupConfirmationDialog } from "../../dialogs/popupConfirmationDialog/PopupConfirmationDialog.js";
5
+ import { useSelectAppearance } from "../../../hooks/useSelectAppearance.js";
5
6
  function CombinatorSelector(props) {
6
- const { value, handleOnChange } = props;
7
+ const { options, value, handleOnChange } = props;
7
8
  const [tempCombinator, setTempCombinator] = useState(value);
8
9
  const [openPopup, setOpenPopup] = useState(false);
9
10
  const handlePopupConfirmation = useCallback(() => {
@@ -28,7 +29,8 @@ function CombinatorSelector(props) {
28
29
  handleOnChange: (newCombinator) => {
29
30
  setTempCombinator(newCombinator);
30
31
  setOpenPopup(true);
31
- }
32
+ },
33
+ ...useSelectAppearance(options.length)
32
34
  }
33
35
  )
34
36
  ] });
@@ -1,5 +1,6 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { MaterialValueSelector } from "@react-querybuilder/material";
3
+ import { useSelectAppearance } from "../../../hooks/useSelectAppearance.js";
3
4
  const ITEM_HEIGHT = 32;
4
5
  const ITEM_PADDING = 4;
5
6
  const ITEMS_COUNT = 10;
@@ -11,7 +12,8 @@ const MenuProps = {
11
12
  }
12
13
  };
13
14
  function FieldSelector(props) {
14
- return /* @__PURE__ */ jsx(MaterialValueSelector, { ...props, MenuProps });
15
+ const { options } = props;
16
+ return /* @__PURE__ */ jsx(MaterialValueSelector, { ...props, MenuProps, ...useSelectAppearance(options.length) });
15
17
  }
16
18
  export {
17
19
  FieldSelector