@opengeoweb/workspace 4.20.0 → 4.21.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 (49) hide show
  1. package/README.md +4 -4
  2. package/index.d.ts +2 -2
  3. package/index.esm.js +767 -381
  4. package/index.umd.js +766 -376
  5. package/lib/components/DefaultComponentsLookUp/DefaultComponentsLookUp.d.ts +6 -6
  6. package/lib/components/MapPresetsDialog/MapPresetsDialog.d.ts +5 -2
  7. package/lib/components/MapPresetsFormDialog/MapPresetsFormDialog.d.ts +1 -1
  8. package/lib/components/MapPresetsFormDialog/MapPresetsFormDialogConnect.d.ts +3 -0
  9. package/lib/components/MapPresetsMenuItem/MapPresetsMenuItem.d.ts +1 -1
  10. package/lib/components/Providers/Providers.d.ts +4 -4
  11. package/lib/components/Providers/WorkspaceDndProvider.d.ts +2 -2
  12. package/lib/components/WorkspaceFilter/FilterChip.d.ts +3 -2
  13. package/lib/components/WorkspaceFilter/FilterList.d.ts +3 -1
  14. package/lib/components/WorkspaceFilter/SearchField.d.ts +2 -0
  15. package/lib/components/WorkspaceFilter/WorkspaceFilter.d.ts +5 -1
  16. package/lib/components/WorkspaceMenu/WorkspaceMenu.d.ts +1 -1
  17. package/lib/components/WorkspaceMenu/WorkspaceMenu.stories.d.ts +8 -0
  18. package/lib/components/WorkspaceOptions/WorkspaceOptionsConnect.d.ts +3 -0
  19. package/lib/components/WorkspaceSelectList/WorkspaceSelectList.d.ts +2 -0
  20. package/lib/components/WorkspaceSelectList/WorkspaceSelectListRow.d.ts +1 -0
  21. package/lib/components/{ScreenManagerView/ScreenManagerControls.d.ts → WorkspaceView/WorkspaceControls.d.ts} +3 -3
  22. package/lib/components/{ScreenManagerView/ScreenManagerTileConnect.d.ts → WorkspaceView/WorkspaceTileConnect.d.ts} +4 -4
  23. package/lib/components/{ScreenManagerView/ScreenManagerView.d.ts → WorkspaceView/WorkspaceView.d.ts} +4 -4
  24. package/lib/components/WorkspaceView/WorkspaceViewConnect.d.ts +7 -0
  25. package/lib/components/WorkspaceView/index.d.ts +2 -0
  26. package/lib/store/config.d.ts +2 -2
  27. package/lib/store/viewPresets/reducer.d.ts +3 -1
  28. package/lib/store/viewPresets/selectors.d.ts +2 -1
  29. package/lib/store/viewPresets/types.d.ts +16 -1
  30. package/lib/store/workspace/types.d.ts +0 -3
  31. package/lib/store/workspaceList/reducer.d.ts +3 -2
  32. package/lib/store/workspaceList/sagas.d.ts +1 -1
  33. package/lib/store/workspaceList/selectors.d.ts +2 -1
  34. package/lib/store/workspaceList/types.d.ts +9 -3
  35. package/lib/store/workspaceList/utils.d.ts +3 -0
  36. package/lib/utils/api.d.ts +3 -5
  37. package/lib/utils/fakeApi.d.ts +2 -1
  38. package/package.json +13 -13
  39. package/lib/components/Providers/ScreenManagerApiWrapper.d.ts +0 -7
  40. package/lib/components/ScreenManagerView/ScreenManagerViewConnect.d.ts +0 -7
  41. package/lib/components/ScreenManagerView/index.d.ts +0 -2
  42. package/lib/components/WorkspaceFilter/types.d.ts +0 -5
  43. /package/lib/components/{Providers/ScreenManagerApiWrapper.spec.d.ts → MapPresetsFormDialog/MapPresetsFormDialogConnect.spec.d.ts} +0 -0
  44. /package/lib/components/{ScreenManagerView/ScreenManagerControls.spec.d.ts → WorkspaceView/WorkspaceControls.spec.d.ts} +0 -0
  45. /package/lib/components/{ScreenManagerView/ScreenManagerTileConnect.spec.d.ts → WorkspaceView/WorkspaceTileConnect.spec.d.ts} +0 -0
  46. /package/lib/components/{ScreenManagerView/ScreenManagerView.spec.d.ts → WorkspaceView/WorkspaceView.spec.d.ts} +0 -0
  47. /package/lib/components/{ScreenManagerView/ScreenManagerViewConnect.spec.d.ts → WorkspaceView/WorkspaceViewConnect.spec.d.ts} +0 -0
  48. /package/lib/components/{ScreenManagerView → WorkspaceView}/helpers.d.ts +0 -0
  49. /package/lib/components/{ScreenManagerView → WorkspaceView}/helpers.spec.d.ts +0 -0
package/index.umd.js CHANGED
@@ -213,6 +213,7 @@
213
213
  error: undefined,
214
214
  isWorkspaceListDialogOpen: false
215
215
  }, workspaceListAdapter.getInitialState()), {
216
+ searchQuery: '',
216
217
  workspaceListFilters: workspaceListFilterOptions
217
218
  });
218
219
  var slice$3 = toolkit.createSlice({
@@ -252,14 +253,32 @@
252
253
  var _a = action.payload,
253
254
  id = _a.id,
254
255
  isSelected = _a.isSelected;
256
+ var isAllSelected = draft.workspaceListFilters.every(function (filter) {
257
+ return filter.isSelected;
258
+ });
255
259
  var index = draft.workspaceListFilters.findIndex(function (filter) {
256
260
  return filter.id === id;
257
261
  });
258
262
 
259
263
  if (index !== -1) {
260
- draft.workspaceListFilters[index] = __assign(__assign({}, draft.workspaceListFilters[index]), {
261
- isSelected: isSelected
262
- });
264
+ if (isAllSelected) {
265
+ draft.workspaceListFilters.forEach(function (filter, index) {
266
+ draft.workspaceListFilters[index].isSelected = filter.id === id ? isSelected : false;
267
+ });
268
+ } else {
269
+ draft.workspaceListFilters[index] = __assign(__assign({}, draft.workspaceListFilters[index]), {
270
+ isSelected: isSelected
271
+ });
272
+ var isAllUnSelected = draft.workspaceListFilters.every(function (filter) {
273
+ return !filter.isSelected;
274
+ });
275
+
276
+ if (isAllUnSelected) {
277
+ draft.workspaceListFilters.forEach(function (_, index) {
278
+ draft.workspaceListFilters[index].isSelected = true;
279
+ });
280
+ }
281
+ }
263
282
  }
264
283
  },
265
284
  setSelectAllFilterChip: function setSelectAllFilterChip(draft) {
@@ -268,36 +287,41 @@
268
287
  isSelected: true
269
288
  });
270
289
  });
290
+ },
291
+ searchFilter: function searchFilter(draft, action) {
292
+ var searchQuery = action.payload.searchQuery;
293
+ draft.searchQuery = searchQuery;
271
294
  }
272
295
  }
273
296
  });
274
297
  var reducer$3 = slice$3.reducer;
275
298
  var workspaceListActions = slice$3.actions;
276
299
 
300
+ /* *
301
+ * Licensed under the Apache License, Version 2.0 (the "License");
302
+ * you may not use this file except in compliance with the License.
303
+ * You may obtain a copy of the License at
304
+ *
305
+ * http://www.apache.org/licenses/LICENSE-2.0
306
+ *
307
+ * Unless required by applicable law or agreed to in writing, software
308
+ * distributed under the License is distributed on an "AS IS" BASIS,
309
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
310
+ * See the License for the specific language governing permissions and
311
+ * limitations under the License.
312
+ *
313
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
314
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
315
+ * */
277
316
  var API_NAME = 'workspacepresets';
278
317
  var getIdFromUrl = function getIdFromUrl(url) {
279
318
  return url && url.match(/[^/]+$/)[0];
280
319
  };
281
- var constructFilterParams = function constructFilterParams(filters) {
282
- var _a;
283
-
284
- var scopeFilter = ((_a = filters === null || filters === void 0 ? void 0 : filters.scope) === null || _a === void 0 ? void 0 : _a.length) ? {
285
- scope: filters.scope.toString()
286
- } : {};
287
- return __assign({}, scopeFilter);
288
- };
289
320
 
290
321
  var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
291
322
  return {
292
323
  // workspace presets
293
- getWorkspacePresets: function getWorkspacePresets(filters) {
294
- if (filters === void 0) {
295
- filters = {
296
- scope: []
297
- };
298
- }
299
-
300
- var params = constructFilterParams(filters);
324
+ getWorkspacePresets: function getWorkspacePresets(params) {
301
325
  return axiosInstance.get('/workspacepreset', {
302
326
  params: params
303
327
  });
@@ -340,8 +364,9 @@
340
364
  };
341
365
 
342
366
  var createApi$1 = function createApi(props) {
343
- var instance = api.createApiInstance(props);
344
- return getApiRoutes$1(instance);
367
+ var authInstance = api.createApiInstance(props);
368
+ var nonAuthInstance = api.createNonAuthApiInstance(props);
369
+ return getApiRoutes$1(props.auth ? authInstance : nonAuthInstance);
345
370
  };
346
371
 
347
372
  /* *
@@ -651,6 +676,14 @@
651
676
  unregisterViewPreset: function unregisterViewPreset(draft, action) {
652
677
  var panelId = action.payload.panelId;
653
678
  viewPresetsAdapter.removeOne(draft, panelId);
679
+ },
680
+ // dialog actions
681
+ openViewPresetDialog: function openViewPresetDialog(draft, action) {
682
+ var viewPresetDialog = action.payload.viewPresetDialog;
683
+ draft.viewPresetDialog = viewPresetDialog;
684
+ },
685
+ closeViewPresetDialog: function closeViewPresetDialog(draft) {
686
+ delete draft.viewPresetDialog;
654
687
  }
655
688
  },
656
689
  extraReducers: function extraReducers(builder) {
@@ -704,7 +737,7 @@
704
737
  error: undefined,
705
738
  hasChanges: false
706
739
  };
707
- var workspacePresetChangeActions = [viewPresetActions.selectViewPreset, core.syncGroupActions.syncGroupRemoveGroup, core.syncGroupActions.syncGroupAddGroup];
740
+ var workspacePresetChangeActions = [viewPresetActions.selectViewPreset, viewPresetActions.setActiveViewPresetId, core.syncGroupActions.syncGroupRemoveGroup, core.syncGroupActions.syncGroupAddGroup];
708
741
  var slice$1 = toolkit.createSlice({
709
742
  initialState: initialState$3,
710
743
  name: 'workspace',
@@ -933,6 +966,9 @@
933
966
 
934
967
  return (_a = getViewPresetById(store, panelId)) === null || _a === void 0 ? void 0 : _a.activeViewPresetId;
935
968
  };
969
+ var getDialogOptions = function getDialogOptions(store) {
970
+ return getViewPresetsStore(store).viewPresetDialog || undefined;
971
+ };
936
972
 
937
973
  /* *
938
974
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -3075,6 +3111,95 @@
3075
3111
  }
3076
3112
  ];
3077
3113
 
3114
+ /* *
3115
+ * Licensed under the Apache License, Version 2.0 (the "License");
3116
+ * you may not use this file except in compliance with the License.
3117
+ * You may obtain a copy of the License at
3118
+ *
3119
+ * http://www.apache.org/licenses/LICENSE-2.0
3120
+ *
3121
+ * Unless required by applicable law or agreed to in writing, software
3122
+ * distributed under the License is distributed on an "AS IS" BASIS,
3123
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3124
+ * See the License for the specific language governing permissions and
3125
+ * limitations under the License.
3126
+ *
3127
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3128
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
3129
+ * */
3130
+ var getSnackbarMessage$1 = function getSnackbarMessage(action, title) {
3131
+ // Trim and add quotes
3132
+ var trimmedTitle = "\"" + title.trim() + "\"";
3133
+
3134
+ switch (action) {
3135
+ case exports.WorkspacePresetAction.DELETE:
3136
+ return "Workspace " + trimmedTitle + " successfully deleted";
3137
+
3138
+ case exports.WorkspacePresetAction.DUPLICATE:
3139
+ return "Workspace " + trimmedTitle + " successfully saved";
3140
+
3141
+ default:
3142
+ return "Workspace " + trimmedTitle + " successfully saved";
3143
+ }
3144
+ };
3145
+ var emptyMapWorkspace = {
3146
+ title: 'New workspace',
3147
+ id: 'FEnewWorkspace',
3148
+ "abstract": '',
3149
+ views: {
3150
+ allIds: ['emptyMapView'],
3151
+ byId: {
3152
+ emptyMapView: {
3153
+ title: 'Empty Map',
3154
+ componentType: 'Map',
3155
+ initialProps: {
3156
+ mapPreset: {
3157
+ layers: [],
3158
+ proj: {
3159
+ bbox: {
3160
+ left: 58703.6377,
3161
+ bottom: 6408480.4514,
3162
+ right: 3967387.5161,
3163
+ top: 11520588.9031
3164
+ },
3165
+ srs: 'EPSG:3857'
3166
+ },
3167
+ shouldShowLayerManager: true,
3168
+ dockedLayerManagerSize: 'sizeSmall'
3169
+ },
3170
+ syncGroupsIds: []
3171
+ }
3172
+ }
3173
+ }
3174
+ },
3175
+ mosaicNode: 'emptyMapView',
3176
+ viewType: 'singleWindow'
3177
+ };
3178
+ var getCleanSearchQuery = function getCleanSearchQuery(searchQuery) {
3179
+ return searchQuery.trim().split(/\s+/).join();
3180
+ };
3181
+ var constructFilterParams = function constructFilterParams(filters, searchQuery) {
3182
+ // get filters
3183
+ var scope = filters.reduce(function (filterList, filter) {
3184
+ if (filter.isSelected && filter.type === 'scope') {
3185
+ return __assign(__assign({}, filter), {
3186
+ scope: filterList.scope.concat(filter.id)
3187
+ });
3188
+ }
3189
+
3190
+ return filterList;
3191
+ }, {
3192
+ scope: []
3193
+ }).scope; // get search
3194
+
3195
+ var search = getCleanSearchQuery(searchQuery);
3196
+ return __assign(__assign({}, scope.length && {
3197
+ scope: scope.toString()
3198
+ }), search.length && {
3199
+ search: search
3200
+ });
3201
+ };
3202
+
3078
3203
  /* *
3079
3204
  * Licensed under the Apache License, Version 2.0 (the "License");
3080
3205
  * you may not use this file except in compliance with the License.
@@ -3102,30 +3227,37 @@
3102
3227
  return element.id === viewPresetId;
3103
3228
  });
3104
3229
  };
3105
- var filterWorkspacePresetList = function filterWorkspacePresetList(scope) {
3106
- if (scope === void 0) {
3107
- scope = ['system', 'user'];
3230
+ var filterWorkspacePresetList = function filterWorkspacePresetList(params) {
3231
+ if (lodash.isEmpty(params)) {
3232
+ return workspacePresetsList;
3108
3233
  }
3109
3234
 
3110
- return workspacePresetsList.filter(function (item) {
3111
- return scope.includes(item.scope);
3112
- });
3235
+ return workspacePresetsList.reduce(function (list, workspacePreset) {
3236
+ var _a;
3237
+
3238
+ if ((_a = params === null || params === void 0 ? void 0 : params.scope) === null || _a === void 0 ? void 0 : _a.includes(workspacePreset.scope)) {
3239
+ if (params.search) {
3240
+ var searchQuery = getCleanSearchQuery(params.search);
3241
+ var hasResult = searchQuery.split(',').every(function (query) {
3242
+ return workspacePreset.title.toLowerCase().includes(query.toLowerCase()) || workspacePreset["abstract"].toLowerCase().includes(query.toLowerCase());
3243
+ });
3244
+ return hasResult ? list.concat(workspacePreset) : list;
3245
+ }
3246
+
3247
+ return list.concat(workspacePreset);
3248
+ }
3249
+
3250
+ return list;
3251
+ }, []);
3113
3252
  };
3114
3253
 
3115
3254
  var getApiRoutes = function getApiRoutes(axiosInstance) {
3116
3255
  return {
3117
- getWorkspacePresets: function getWorkspacePresets(filters) {
3118
- if (filters === void 0) {
3119
- filters = {
3120
- scope: []
3121
- };
3122
- }
3123
-
3124
- var params = constructFilterParams(filters);
3256
+ getWorkspacePresets: function getWorkspacePresets(params) {
3125
3257
  return axiosInstance.get('/workspacepreset', {
3126
3258
  params: params
3127
3259
  }).then(function () {
3128
- var data = filters.scope.length ? filterWorkspacePresetList(filters.scope) : workspacePresetsList;
3260
+ var data = filterWorkspacePresetList(params);
3129
3261
  return {
3130
3262
  data: data
3131
3263
  };
@@ -3828,53 +3960,50 @@
3828
3960
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3829
3961
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
3830
3962
  * */
3831
- var getSnackbarMessage$1 = function getSnackbarMessage(action, title) {
3832
- // Trim and add quotes
3833
- var trimmedTitle = "\"" + title.trim() + "\"";
3963
+ var getWorkspaceListStore = function getWorkspaceListStore(store) {
3964
+ if (store && store.workspaceList) {
3965
+ return store.workspaceList;
3966
+ }
3834
3967
 
3835
- switch (action) {
3836
- case exports.WorkspacePresetAction.DELETE:
3837
- return "Workspace " + trimmedTitle + " successfully deleted";
3968
+ return null;
3969
+ };
3970
+ var getIsWorkspaceListFetching = function getIsWorkspaceListFetching(store) {
3971
+ var _a;
3838
3972
 
3839
- case exports.WorkspacePresetAction.DUPLICATE:
3840
- return "Workspace " + trimmedTitle + " successfully saved";
3973
+ return ((_a = getWorkspaceListStore(store)) === null || _a === void 0 ? void 0 : _a.isFetching) || false;
3974
+ };
3975
+ var getWorkspaceListError = function getWorkspaceListError(store) {
3976
+ var _a;
3841
3977
 
3842
- default:
3843
- return "Workspace " + trimmedTitle + " successfully saved";
3844
- }
3978
+ return (_a = getWorkspaceListStore(store)) === null || _a === void 0 ? void 0 : _a.error;
3845
3979
  };
3846
- var emptyMapWorkspace = {
3847
- title: 'New workspace',
3848
- id: 'FEnewWorkspace',
3849
- "abstract": '',
3850
- views: {
3851
- allIds: ['emptyMapView'],
3852
- byId: {
3853
- emptyMapView: {
3854
- title: 'Empty Map',
3855
- componentType: 'Map',
3856
- initialProps: {
3857
- mapPreset: {
3858
- layers: [],
3859
- proj: {
3860
- bbox: {
3861
- left: 58703.6377,
3862
- bottom: 6408480.4514,
3863
- right: 3967387.5161,
3864
- top: 11520588.9031
3865
- },
3866
- srs: 'EPSG:3857'
3867
- },
3868
- shouldShowLayerManager: true,
3869
- dockedLayerManagerSize: 'sizeSmall'
3870
- },
3871
- syncGroupsIds: []
3872
- }
3873
- }
3874
- }
3875
- },
3876
- mosaicNode: 'emptyMapView',
3877
- viewType: 'singleWindow'
3980
+ var getWorkspaceList = workspaceListAdapter.getSelectors(function (state) {
3981
+ var _a;
3982
+
3983
+ return (_a = state === null || state === void 0 ? void 0 : state.workspaceList) !== null && _a !== void 0 ? _a : {
3984
+ entities: {},
3985
+ ids: []
3986
+ };
3987
+ }).selectAll;
3988
+ var getWorkspaceActionDialogDetails = function getWorkspaceActionDialogDetails(store) {
3989
+ var _a;
3990
+
3991
+ return ((_a = getWorkspaceListStore(store)) === null || _a === void 0 ? void 0 : _a.workspaceActionDialog) || false;
3992
+ };
3993
+ var getIsWorkspaceListDialogOpen = function getIsWorkspaceListDialogOpen(store) {
3994
+ var _a;
3995
+
3996
+ return ((_a = getWorkspaceListStore(store)) === null || _a === void 0 ? void 0 : _a.isWorkspaceListDialogOpen) || false;
3997
+ };
3998
+ var getWorkspaceListFilters = function getWorkspaceListFilters(store) {
3999
+ var _a;
4000
+
4001
+ return ((_a = getWorkspaceListStore(store)) === null || _a === void 0 ? void 0 : _a.workspaceListFilters) || [];
4002
+ };
4003
+ var getWorkspaceListSearchQuery = function getWorkspaceListSearchQuery(store) {
4004
+ var _a;
4005
+
4006
+ return ((_a = getWorkspaceListStore(store)) === null || _a === void 0 ? void 0 : _a.searchQuery) || '';
3878
4007
  };
3879
4008
 
3880
4009
  /* *
@@ -3893,25 +4022,26 @@
3893
4022
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3894
4023
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
3895
4024
  * */
3896
- function fetchWorkspaceListSaga() {
4025
+ function fetchWorkspaceListSaga(_a) {
3897
4026
  var workspaceApi, data;
3898
- return __generator(this, function (_a) {
3899
- switch (_a.label) {
4027
+ var workspaceFilterParams = _a.payload;
4028
+ return __generator(this, function (_b) {
4029
+ switch (_b.label) {
3900
4030
  case 0:
3901
- _a.trys.push([0, 4,, 6]);
4031
+ _b.trys.push([0, 4,, 6]);
3902
4032
 
3903
4033
  return [4
3904
4034
  /*yield*/
3905
4035
  , effects.call(getWorkspaceApi)];
3906
4036
 
3907
4037
  case 1:
3908
- workspaceApi = _a.sent();
4038
+ workspaceApi = _b.sent();
3909
4039
  return [4
3910
4040
  /*yield*/
3911
- , effects.call(workspaceApi.getWorkspacePresets)];
4041
+ , effects.call(workspaceApi.getWorkspacePresets, workspaceFilterParams)];
3912
4042
 
3913
4043
  case 2:
3914
- data = _a.sent().data;
4044
+ data = _b.sent().data;
3915
4045
  return [4
3916
4046
  /*yield*/
3917
4047
  , effects.put(workspaceListActions.fetchedWorkspaceList({
@@ -3919,14 +4049,14 @@
3919
4049
  }))];
3920
4050
 
3921
4051
  case 3:
3922
- _a.sent();
4052
+ _b.sent();
3923
4053
 
3924
4054
  return [3
3925
4055
  /*break*/
3926
4056
  , 6];
3927
4057
 
3928
4058
  case 4:
3929
- _a.sent();
4059
+ _b.sent();
3930
4060
  return [4
3931
4061
  /*yield*/
3932
4062
  , effects.put(workspaceListActions.errorWorkspaceList({
@@ -3937,7 +4067,7 @@
3937
4067
  }))];
3938
4068
 
3939
4069
  case 5:
3940
- _a.sent();
4070
+ _b.sent();
3941
4071
 
3942
4072
  return [3
3943
4073
  /*break*/
@@ -3951,7 +4081,7 @@
3951
4081
  });
3952
4082
  }
3953
4083
  function onSuccessWorkspacePresetsActionSaga(_a) {
3954
- var action, workspaceId, title, selectedWorkspace;
4084
+ var action, workspaceId, title, selectedWorkspace, workspaceFilters, searchQuery;
3955
4085
  var payload = _a.payload;
3956
4086
  return __generator(this, function (_b) {
3957
4087
  switch (_b.label) {
@@ -4011,13 +4141,23 @@
4011
4141
  _b.label = 7;
4012
4142
 
4013
4143
  case 7:
4014
- // Retrieve new list
4015
4144
  return [4
4016
4145
  /*yield*/
4017
- , effects.call(fetchWorkspaceListSaga)];
4146
+ , effects.select(getWorkspaceListFilters)];
4018
4147
 
4019
4148
  case 8:
4020
- // Retrieve new list
4149
+ workspaceFilters = _b.sent();
4150
+ return [4
4151
+ /*yield*/
4152
+ , effects.select(getWorkspaceListSearchQuery)];
4153
+
4154
+ case 9:
4155
+ searchQuery = _b.sent();
4156
+ return [4
4157
+ /*yield*/
4158
+ , effects.call(fetchWorkspaceListSaga, workspaceListActions.fetchWorkspaceList(constructFilterParams(workspaceFilters, searchQuery)))];
4159
+
4160
+ case 10:
4021
4161
  _b.sent();
4022
4162
 
4023
4163
  return [2
@@ -4795,7 +4935,7 @@
4795
4935
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4796
4936
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
4797
4937
  * */
4798
- var screenManagerModuleModuleConfig = {
4938
+ var workspaceModuleConfig = {
4799
4939
  id: 'workspace-module',
4800
4940
  reducersMap: {
4801
4941
  workspace: reducer$1,
@@ -13947,7 +14087,7 @@
13947
14087
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
13948
14088
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
13949
14089
  * */
13950
- var ScreenManagerThemeProvider = function ScreenManagerThemeProvider(_a) {
14090
+ var WorkspaceThemeProvider = function WorkspaceThemeProvider(_a) {
13951
14091
  var children = _a.children,
13952
14092
  _b = _a.theme,
13953
14093
  theme$1 = _b === void 0 ? theme.lightTheme : _b;
@@ -13955,14 +14095,14 @@
13955
14095
  theme: theme$1
13956
14096
  }, /*#__PURE__*/React__default["default"].createElement(WorkspaceDndProvider, null, children));
13957
14097
  };
13958
- var ScreenManagerWrapperProvider = shared.withEggs(__spreadArray(__spreadArray([], __read(core.coreModuleConfig)), [timeseries.timeSeriesModuleConfig, screenManagerModuleModuleConfig]))(function (_a) {
14098
+ var WorkspaceWrapperProvider = shared.withEggs(__spreadArray(__spreadArray([], __read(core.coreModuleConfig)), [timeseries.timeSeriesModuleConfig, workspaceModuleConfig]))(function (_a) {
13959
14099
  var theme = _a.theme,
13960
14100
  children = _a.children;
13961
- return /*#__PURE__*/React__default["default"].createElement(ScreenManagerThemeProvider, {
14101
+ return /*#__PURE__*/React__default["default"].createElement(WorkspaceThemeProvider, {
13962
14102
  theme: theme
13963
14103
  }, children);
13964
14104
  });
13965
- var ScreenManagerWrapperProviderWithStore = function ScreenManagerWrapperProviderWithStore(_a) {
14105
+ var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithStore(_a) {
13966
14106
  var children = _a.children,
13967
14107
  store = _a.store,
13968
14108
  _b = _a.createApi,
@@ -13973,7 +14113,7 @@
13973
14113
  name: API_NAME
13974
14114
  }, /*#__PURE__*/React__default["default"].createElement(reactRedux.Provider, {
13975
14115
  store: store
13976
- }, /*#__PURE__*/React__default["default"].createElement(ScreenManagerWrapperProvider, {
14116
+ }, /*#__PURE__*/React__default["default"].createElement(WorkspaceWrapperProvider, {
13977
14117
  theme: theme
13978
14118
  }, /*#__PURE__*/React__default["default"].createElement(core.SnackbarWrapperConnect, null, children))));
13979
14119
  };
@@ -14005,7 +14145,7 @@
14005
14145
  createApi: config.baseURL ? createApi$1 : createApiWithoutSave,
14006
14146
  config: config,
14007
14147
  name: API_NAME
14008
- }, /*#__PURE__*/React__namespace.createElement(ScreenManagerWrapperProvider, null, children));
14148
+ }, /*#__PURE__*/React__namespace.createElement(WorkspaceDndProvider, null, children));
14009
14149
  };
14010
14150
 
14011
14151
  var ComponentsLookUpWrapper = function ComponentsLookUpWrapper(_a) {
@@ -14048,7 +14188,7 @@
14048
14188
  marginRight: 0.5
14049
14189
  };
14050
14190
 
14051
- var ScreenManagerControls = function ScreenManagerControls(_a) {
14191
+ var WorkspaceControls = function WorkspaceControls(_a) {
14052
14192
  var createNode = _a.createNode,
14053
14193
  path = _a.path,
14054
14194
  _b = _a.shouldPreventCloseView,
@@ -14298,7 +14438,7 @@
14298
14438
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
14299
14439
  * */
14300
14440
 
14301
- var ScreenManagerTileConnect = function ScreenManagerTileConnect(_a) {
14441
+ var WorkspaceTileConnect = function WorkspaceTileConnect(_a) {
14302
14442
  var _b = _a.mosaicNodeId,
14303
14443
  mosaicNodeId = _b === void 0 ? '' : _b,
14304
14444
  path = _a.path,
@@ -14374,7 +14514,7 @@
14374
14514
  path: path,
14375
14515
  createNode: createNode,
14376
14516
  title: title,
14377
- toolbarControls: /*#__PURE__*/React__namespace.createElement(ScreenManagerControls, {
14517
+ toolbarControls: /*#__PURE__*/React__namespace.createElement(WorkspaceControls, {
14378
14518
  createNode: createNode,
14379
14519
  path: path,
14380
14520
  shouldPreventCloseView: shouldPreventCloseView
@@ -14408,7 +14548,7 @@
14408
14548
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
14409
14549
  * */
14410
14550
 
14411
- var ScreenManagerView = function ScreenManagerView(_a) {
14551
+ var WorkspaceView = function WorkspaceView(_a) {
14412
14552
  var screenConfig = _a.screenConfig,
14413
14553
  componentsLookUp = _a.componentsLookUp,
14414
14554
  updateViews = _a.updateViews,
@@ -14491,7 +14631,7 @@
14491
14631
  width: '100%'
14492
14632
  },
14493
14633
  '.mosaic-window .mosaic-window-toolbar': {
14494
- backgroundColor: windowIsActive ? theme.palette.geowebColors.screenManager.activeWindow : theme.palette.geowebColors.screenManager.inactiveWindow
14634
+ backgroundColor: windowIsActive ? theme.palette.geowebColors.workspace.activeWindow : theme.palette.geowebColors.workspace.inactiveWindow
14495
14635
  },
14496
14636
  '.mosaic-window-toolbar .MuiSvgIcon-root': {
14497
14637
  fill: windowIsActive ? theme.palette.geowebColors.buttons.flat["default"].color : theme.palette.geowebColors.buttons.flat.disabled.color
@@ -14504,7 +14644,7 @@
14504
14644
  }
14505
14645
  };
14506
14646
  }
14507
- }, /*#__PURE__*/React__namespace.createElement(ScreenManagerTileConnect, {
14647
+ }, /*#__PURE__*/React__namespace.createElement(WorkspaceTileConnect, {
14508
14648
  mosaicNodeId: viewId,
14509
14649
  path: path,
14510
14650
  componentsLookUp: componentsLookUp
@@ -14559,7 +14699,7 @@
14559
14699
  * Copyright 2022 - Finnish Meteorological Institute (FMI)
14560
14700
  * */
14561
14701
 
14562
- var ScreenManagerViewConnect = function ScreenManagerViewConnect(_a) {
14702
+ var WorkspaceViewConnect = function WorkspaceViewConnect(_a) {
14563
14703
  var componentsLookUp = _a.componentsLookUp;
14564
14704
  var dispatch = reactRedux.useDispatch();
14565
14705
  var isWorkspaceLoading$1 = reactRedux.useSelector(function (store) {
@@ -14596,7 +14736,7 @@
14596
14736
  return window.removeEventListener('orientationchange', handleOrientationChange);
14597
14737
  };
14598
14738
  }, [handleOrientationChange]);
14599
- return /*#__PURE__*/React__default["default"].createElement(shared.ConfirmationServiceProvider, null, /*#__PURE__*/React__default["default"].createElement(ScreenManagerView, {
14739
+ return /*#__PURE__*/React__default["default"].createElement(shared.ConfirmationServiceProvider, null, /*#__PURE__*/React__default["default"].createElement(WorkspaceView, {
14600
14740
  screenConfig: screenConfig,
14601
14741
  componentsLookUp: componentsLookUp,
14602
14742
  updateViews: updateViews,
@@ -14638,76 +14778,24 @@
14638
14778
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
14639
14779
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
14640
14780
  * */
14641
- var getWorkspaceListStore = function getWorkspaceListStore(store) {
14642
- if (store && store.workspaceList) {
14643
- return store.workspaceList;
14644
- }
14645
-
14646
- return null;
14647
- };
14648
- var getIsWorkspaceListFetching = function getIsWorkspaceListFetching(store) {
14649
- var _a;
14781
+ var getPresetIcon = function getPresetIcon(preset) {
14782
+ switch (preset.viewType) {
14783
+ case 'tiledWindow':
14784
+ return /*#__PURE__*/React__default["default"].createElement(theme.PresetTiles, {
14785
+ "data-testid": "tiledWindowIcon"
14786
+ });
14650
14787
 
14651
- return ((_a = getWorkspaceListStore(store)) === null || _a === void 0 ? void 0 : _a.isFetching) || false;
14652
- };
14653
- var getWorkspaceListError = function getWorkspaceListError(store) {
14654
- var _a;
14788
+ case 'multiWindow':
14789
+ return /*#__PURE__*/React__default["default"].createElement(theme.PresetWorkspace, {
14790
+ "data-testid": "multiWindowIcon"
14791
+ });
14655
14792
 
14656
- return (_a = getWorkspaceListStore(store)) === null || _a === void 0 ? void 0 : _a.error;
14657
- };
14658
- var getWorkspaceList = workspaceListAdapter.getSelectors(function (state) {
14659
- var _a;
14660
-
14661
- return (_a = state === null || state === void 0 ? void 0 : state.workspaceList) !== null && _a !== void 0 ? _a : {
14662
- entities: {},
14663
- ids: []
14664
- };
14665
- }).selectAll;
14666
- var getWorkspaceActionDialogDetails = function getWorkspaceActionDialogDetails(store) {
14667
- var _a;
14668
-
14669
- return ((_a = getWorkspaceListStore(store)) === null || _a === void 0 ? void 0 : _a.workspaceActionDialog) || false;
14670
- };
14671
- var getIsWorkspaceListDialogOpen = function getIsWorkspaceListDialogOpen(store) {
14672
- var _a;
14673
-
14674
- return ((_a = getWorkspaceListStore(store)) === null || _a === void 0 ? void 0 : _a.isWorkspaceListDialogOpen) || false;
14675
- };
14676
-
14677
- /* *
14678
- * Licensed under the Apache License, Version 2.0 (the "License");
14679
- * you may not use this file except in compliance with the License.
14680
- * You may obtain a copy of the License at
14681
- *
14682
- * http://www.apache.org/licenses/LICENSE-2.0
14683
- *
14684
- * Unless required by applicable law or agreed to in writing, software
14685
- * distributed under the License is distributed on an "AS IS" BASIS,
14686
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14687
- * See the License for the specific language governing permissions and
14688
- * limitations under the License.
14689
- *
14690
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
14691
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
14692
- * */
14693
- var getPresetIcon = function getPresetIcon(preset) {
14694
- switch (preset.viewType) {
14695
- case 'tiledWindow':
14696
- return /*#__PURE__*/React__default["default"].createElement(theme.PresetTiles, {
14697
- "data-testid": "tiledWindowIcon"
14698
- });
14699
-
14700
- case 'multiWindow':
14701
- return /*#__PURE__*/React__default["default"].createElement(theme.PresetWorkspace, {
14702
- "data-testid": "multiWindowIcon"
14703
- });
14704
-
14705
- case 'singleWindow':
14706
- default:
14707
- return /*#__PURE__*/React__default["default"].createElement(theme.Preset, {
14708
- "data-testid": "singleWindowIcon"
14709
- });
14710
- }
14793
+ case 'singleWindow':
14794
+ default:
14795
+ return /*#__PURE__*/React__default["default"].createElement(theme.Preset, {
14796
+ "data-testid": "singleWindowIcon"
14797
+ });
14798
+ }
14711
14799
  };
14712
14800
 
14713
14801
  var WorkspaceSelectListRow = function WorkspaceSelectListRow(_a) {
@@ -14716,7 +14804,9 @@
14716
14804
  onClickPreset = _a.onClickPreset,
14717
14805
  onClickWorkspacePresetOption = _a.onClickWorkspacePresetOption,
14718
14806
  _b = _a.isOptionsMenuOpen,
14719
- isOptionsMenuOpen = _b === void 0 ? false : _b;
14807
+ isOptionsMenuOpen = _b === void 0 ? false : _b,
14808
+ _c = _a.searchQuery,
14809
+ searchQuery = _c === void 0 ? '' : _c;
14720
14810
 
14721
14811
  var onDuplicate = function onDuplicate() {
14722
14812
  onClickWorkspacePresetOption(workspacePreset.id, exports.WorkspacePresetAction.DUPLICATE);
@@ -14761,8 +14851,14 @@
14761
14851
  }, /*#__PURE__*/React__default["default"].createElement(material.ListItemIcon, null, getPresetIcon(workspacePreset)), /*#__PURE__*/React__default["default"].createElement(shared.CustomTooltip, {
14762
14852
  title: workspacePreset.title
14763
14853
  }, /*#__PURE__*/React__default["default"].createElement(material.ListItemText, {
14764
- primary: workspacePreset.title,
14765
- secondary: workspacePreset["abstract"],
14854
+ primary: /*#__PURE__*/React__default["default"].createElement(shared.SearchHighlight, {
14855
+ text: workspacePreset === null || workspacePreset === void 0 ? void 0 : workspacePreset.title,
14856
+ search: searchQuery
14857
+ }),
14858
+ secondary: /*#__PURE__*/React__default["default"].createElement(shared.SearchHighlight, {
14859
+ text: workspacePreset === null || workspacePreset === void 0 ? void 0 : workspacePreset["abstract"],
14860
+ search: searchQuery
14861
+ }),
14766
14862
  sx: {
14767
14863
  margin: 0
14768
14864
  }
@@ -14828,7 +14924,9 @@
14828
14924
  var workspacePresets = _a.workspacePresets,
14829
14925
  currentSelectedId = _a.currentSelectedId,
14830
14926
  onClickPreset = _a.onClickPreset,
14831
- onClickWorkspacePresetOption = _a.onClickWorkspacePresetOption;
14927
+ onClickWorkspacePresetOption = _a.onClickWorkspacePresetOption,
14928
+ hideNewWorkspace = _a.hideNewWorkspace,
14929
+ searchQuery = _a.searchQuery;
14832
14930
  return /*#__PURE__*/React__namespace.createElement(material.Box, {
14833
14931
  "data-testid": "workspaceSelectList"
14834
14932
  }, /*#__PURE__*/React__namespace.createElement(material.Box, {
@@ -14836,23 +14934,236 @@
14836
14934
  marginBottom: '4px',
14837
14935
  fontSize: '12px'
14838
14936
  }
14839
- }, workspacePresets.length, " results"), /*#__PURE__*/React__namespace.createElement(material.List, null, /*#__PURE__*/React__namespace.createElement(WorkspaceSelectListRow, {
14937
+ }, workspacePresets.length, " results"), /*#__PURE__*/React__namespace.createElement(material.List, null, !hideNewWorkspace && /*#__PURE__*/React__namespace.createElement(WorkspaceSelectListRow, {
14938
+ key: emptyMapWorkspace.id,
14840
14939
  workspacePreset: emptyWorkspaceListItem,
14841
14940
  currentSelectedId: currentSelectedId,
14842
14941
  onClickPreset: onClickPreset,
14843
- onClickWorkspacePresetOption: onClickWorkspacePresetOption,
14844
- key: emptyMapWorkspace.id
14942
+ onClickWorkspacePresetOption: onClickWorkspacePresetOption
14845
14943
  }), workspacePresets.map(function (preset) {
14846
14944
  return /*#__PURE__*/React__namespace.createElement(WorkspaceSelectListRow, {
14945
+ key: preset.id,
14847
14946
  workspacePreset: preset,
14848
14947
  currentSelectedId: currentSelectedId,
14849
14948
  onClickPreset: onClickPreset,
14850
14949
  onClickWorkspacePresetOption: onClickWorkspacePresetOption,
14851
- key: preset.id
14950
+ searchQuery: searchQuery
14852
14951
  });
14853
14952
  })));
14854
14953
  };
14855
14954
 
14955
+ /* *
14956
+ * Licensed under the Apache License, Version 2.0 (the "License");
14957
+ * you may not use this file except in compliance with the License.
14958
+ * You may obtain a copy of the License at
14959
+ *
14960
+ * http://www.apache.org/licenses/LICENSE-2.0
14961
+ *
14962
+ * Unless required by applicable law or agreed to in writing, software
14963
+ * distributed under the License is distributed on an "AS IS" BASIS,
14964
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14965
+ * See the License for the specific language governing permissions and
14966
+ * limitations under the License.
14967
+ *
14968
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
14969
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
14970
+ * */
14971
+
14972
+ var FilterChip = function FilterChip(_a) {
14973
+ var label = _a.label,
14974
+ id = _a.id,
14975
+ _b = _a.isSelected,
14976
+ isSelected = _b === void 0 ? false : _b,
14977
+ _c = _a.isDisabled,
14978
+ isDisabled = _c === void 0 ? false : _c,
14979
+ _d = _a.handleClick,
14980
+ handleClick = _d === void 0 ? function () {} : _d;
14981
+ var theme = material.useTheme();
14982
+ return /*#__PURE__*/React__namespace.createElement(material.Chip, {
14983
+ size: "small",
14984
+ id: id,
14985
+ label: label,
14986
+ disabled: isDisabled,
14987
+ variant: isSelected ? 'filled' : 'outlined',
14988
+ color: isSelected ? 'secondary' : 'default',
14989
+ sx: {
14990
+ borderColor: "" + theme.palette.geowebColors.buttons.tertiary["default"].borderColor,
14991
+ padding: '0px 4px'
14992
+ },
14993
+ onClick: function onClick() {
14994
+ return handleClick(id);
14995
+ }
14996
+ });
14997
+ };
14998
+
14999
+ /* *
15000
+ * Licensed under the Apache License, Version 2.0 (the "License");
15001
+ * you may not use this file except in compliance with the License.
15002
+ * You may obtain a copy of the License at
15003
+ *
15004
+ * http://www.apache.org/licenses/LICENSE-2.0
15005
+ *
15006
+ * Unless required by applicable law or agreed to in writing, software
15007
+ * distributed under the License is distributed on an "AS IS" BASIS,
15008
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15009
+ * See the License for the specific language governing permissions and
15010
+ * limitations under the License.
15011
+ *
15012
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
15013
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
15014
+ * */
15015
+ var allLabel = 'All';
15016
+
15017
+ var FilterList = function FilterList(_a) {
15018
+ var _b = _a.filters,
15019
+ filters = _b === void 0 ? workspaceListFilterOptions : _b,
15020
+ _c = _a.onChipClick,
15021
+ onChipClick = _c === void 0 ? function () {} : _c,
15022
+ _d = _a.isAllSelected,
15023
+ isAllSelected = _d === void 0 ? false : _d;
15024
+ return /*#__PURE__*/React__namespace.createElement(material.Stack, {
15025
+ direction: "row",
15026
+ spacing: 1,
15027
+ "data-testid": "filterList"
15028
+ }, /*#__PURE__*/React__namespace.createElement(FilterChip, {
15029
+ id: "all",
15030
+ label: allLabel,
15031
+ isSelected: isAllSelected,
15032
+ handleClick: function handleClick(key) {
15033
+ return onChipClick(key, !isAllSelected);
15034
+ }
15035
+ }), filters.map(function (filter) {
15036
+ return /*#__PURE__*/React__namespace.createElement(FilterChip, {
15037
+ key: filter.id,
15038
+ id: filter.id,
15039
+ label: filter.label,
15040
+ isSelected: isAllSelected ? false : filter.isSelected,
15041
+ isDisabled: filter.isDisabled,
15042
+ handleClick: function handleClick(key) {
15043
+ // If they are all isSelected ensure that if one is clicked that one will be the only one set to selected
15044
+ var selected = isAllSelected ? true : !filter.isSelected;
15045
+ onChipClick(key, selected);
15046
+ }
15047
+ });
15048
+ }));
15049
+ };
15050
+
15051
+ /* *
15052
+ * Licensed under the Apache License, Version 2.0 (the "License");
15053
+ * you may not use this file except in compliance with the License.
15054
+ * You may obtain a copy of the License at
15055
+ *
15056
+ * http://www.apache.org/licenses/LICENSE-2.0
15057
+ *
15058
+ * Unless required by applicable law or agreed to in writing, software
15059
+ * distributed under the License is distributed on an "AS IS" BASIS,
15060
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15061
+ * See the License for the specific language governing permissions and
15062
+ * limitations under the License.
15063
+ *
15064
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
15065
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
15066
+ * */
15067
+ var DEBOUNCE_TIMEOUT = 300;
15068
+
15069
+ var SearchField = function SearchField(_a) {
15070
+ var _b = _a.label,
15071
+ label = _b === void 0 ? 'Search' : _b,
15072
+ valueChanged = _a.valueChanged,
15073
+ _c = _a.value,
15074
+ value = _c === void 0 ? '' : _c;
15075
+
15076
+ var _d = __read(React__namespace.useState(value), 2),
15077
+ localValue = _d[0],
15078
+ setLocalValue = _d[1]; // eslint-disable-next-line react-hooks/exhaustive-deps
15079
+
15080
+
15081
+ var handleValueChangeDebounced = React__namespace.useCallback(material.debounce(valueChanged, DEBOUNCE_TIMEOUT), []);
15082
+
15083
+ var ClearButton = function ClearButton() {
15084
+ return /*#__PURE__*/React__namespace.createElement(shared.CustomIconButton, {
15085
+ tooltipTitle: "Clear",
15086
+ edge: "end",
15087
+ onClick: function onClick() {
15088
+ setLocalValue('');
15089
+ valueChanged('');
15090
+ },
15091
+ size: "large"
15092
+ }, /*#__PURE__*/React__namespace.createElement(theme.Clear, null));
15093
+ };
15094
+
15095
+ var SearchButton = function SearchButton() {
15096
+ return /*#__PURE__*/React__namespace.createElement(shared.CustomIconButton, {
15097
+ tooltipTitle: label,
15098
+ edge: "end",
15099
+ size: "large"
15100
+ }, /*#__PURE__*/React__namespace.createElement(theme.Search, null));
15101
+ };
15102
+
15103
+ return /*#__PURE__*/React__namespace.createElement(material.TextField, {
15104
+ variant: "filled",
15105
+ size: "small",
15106
+ sx: {
15107
+ '& input': {
15108
+ paddingTop: '18px'
15109
+ }
15110
+ },
15111
+ label: label,
15112
+ value: localValue,
15113
+ autoFocus: true,
15114
+ fullWidth: true,
15115
+ onChange: function onChange(e) {
15116
+ handleValueChangeDebounced(e.target.value);
15117
+ setLocalValue(e.target.value);
15118
+ },
15119
+ InputProps: {
15120
+ endAdornment: /*#__PURE__*/React__namespace.createElement(material.InputAdornment, {
15121
+ position: "end"
15122
+ }, localValue ? /*#__PURE__*/React__namespace.createElement(ClearButton, null) : /*#__PURE__*/React__namespace.createElement(SearchButton, null))
15123
+ }
15124
+ });
15125
+ };
15126
+
15127
+ /* *
15128
+ * Licensed under the Apache License, Version 2.0 (the "License");
15129
+ * you may not use this file except in compliance with the License.
15130
+ * You may obtain a copy of the License at
15131
+ *
15132
+ * http://www.apache.org/licenses/LICENSE-2.0
15133
+ *
15134
+ * Unless required by applicable law or agreed to in writing, software
15135
+ * distributed under the License is distributed on an "AS IS" BASIS,
15136
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15137
+ * See the License for the specific language governing permissions and
15138
+ * limitations under the License.
15139
+ *
15140
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
15141
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
15142
+ * */
15143
+
15144
+ var WorkspaceFilter = function WorkspaceFilter(_a) {
15145
+ var filters = _a.filters,
15146
+ _b = _a.onClickFilterChip,
15147
+ onClickFilterChip = _b === void 0 ? function () {} : _b,
15148
+ _c = _a.onSearch,
15149
+ onSearch = _c === void 0 ? function () {} : _c,
15150
+ isAllSelected = _a.isAllSelected,
15151
+ searchQuery = _a.searchQuery;
15152
+ return /*#__PURE__*/React__namespace.createElement(material.Stack, {
15153
+ spacing: 1,
15154
+ sx: {
15155
+ marginBottom: '8px'
15156
+ }
15157
+ }, /*#__PURE__*/React__namespace.createElement(SearchField, {
15158
+ value: searchQuery,
15159
+ valueChanged: onSearch
15160
+ }), /*#__PURE__*/React__namespace.createElement(FilterList, {
15161
+ filters: filters,
15162
+ onChipClick: onClickFilterChip,
15163
+ isAllSelected: isAllSelected
15164
+ }));
15165
+ };
15166
+
14856
15167
  /* *
14857
15168
  * Licensed under the Apache License, Version 2.0 (the "License");
14858
15169
  * you may not use this file except in compliance with the License.
@@ -14876,6 +15187,12 @@
14876
15187
  var workspacePresets = reactRedux.useSelector(function (store) {
14877
15188
  return getWorkspaceList(store);
14878
15189
  });
15190
+ var workspaceListFilters = reactRedux.useSelector(function (store) {
15191
+ return getWorkspaceListFilters(store);
15192
+ });
15193
+ var workspaceSearchQuery = reactRedux.useSelector(function (store) {
15194
+ return getWorkspaceListSearchQuery(store);
15195
+ });
14879
15196
  var isFetching = reactRedux.useSelector(function (store) {
14880
15197
  return getIsWorkspaceListFetching(store);
14881
15198
  });
@@ -14884,8 +15201,9 @@
14884
15201
  });
14885
15202
  var dispatch = reactRedux.useDispatch();
14886
15203
  var fetchWorkspaceList = React__namespace.useCallback(function () {
14887
- dispatch(workspaceListActions.fetchWorkspaceList());
14888
- }, [dispatch]);
15204
+ var filterParams = constructFilterParams(workspaceListFilters, workspaceSearchQuery);
15205
+ dispatch(workspaceListActions.fetchWorkspaceList(filterParams));
15206
+ }, [dispatch, workspaceListFilters, workspaceSearchQuery]);
14889
15207
  var fetchWorkspace = React__namespace.useCallback(function (workspaceId) {
14890
15208
  dispatch(workspaceActions.fetchWorkspace({
14891
15209
  workspaceId: workspaceId
@@ -14894,9 +15212,23 @@
14894
15212
  var setWorkspaceActionDialogOptions = React__namespace.useCallback(function (dialogOptions) {
14895
15213
  dispatch(workspaceListActions.openWorkspaceActionDialogOptions(dialogOptions));
14896
15214
  }, [dispatch]);
15215
+ var toggleSelectFilterChip = React__namespace.useCallback(function (id, isSelected) {
15216
+ dispatch(workspaceListActions.toggleSelectFilterChip({
15217
+ id: id,
15218
+ isSelected: isSelected
15219
+ }));
15220
+ }, [dispatch]);
15221
+ var setSelectAllFilterChip = React__namespace.useCallback(function () {
15222
+ dispatch(workspaceListActions.setSelectAllFilterChip());
15223
+ }, [dispatch]);
15224
+ var searchFilter = React__namespace.useCallback(function (searchQuery) {
15225
+ dispatch(workspaceListActions.searchFilter({
15226
+ searchQuery: searchQuery
15227
+ }));
15228
+ }, [dispatch]);
14897
15229
  React__namespace.useEffect(function () {
14898
15230
  fetchWorkspaceList(); // eslint-disable-next-line react-hooks/exhaustive-deps
14899
- }, []); // If we're loading the `New workspace` preset as defined in the FE, use this instead of retrieving from BE
15231
+ }, [workspaceListFilters, workspaceSearchQuery]); // If we're loading the `New workspace` preset as defined in the FE, use this instead of retrieving from BE
14900
15232
 
14901
15233
  var onClickNewPreset = React__namespace.useCallback(function () {
14902
15234
  dispatch(core.routerActions.navigateToUrl({
@@ -14918,6 +15250,16 @@
14918
15250
  }
14919
15251
  };
14920
15252
 
15253
+ var onClickFilterChip = function onClickFilterChip(id, shouldSelect) {
15254
+ if (id === 'all') {
15255
+ if (shouldSelect) {
15256
+ setSelectAllFilterChip();
15257
+ }
15258
+ } else {
15259
+ toggleSelectFilterChip(id, shouldSelect);
15260
+ }
15261
+ };
15262
+
14921
15263
  var onClickWorkspacePresetOption = function onClickWorkspacePresetOption(presetId, workspaceAction) {
14922
15264
  // If affectedPreset is the FE defined `New workspace` - use the definition from FE instead of BE
14923
15265
  var affectedPreset = presetId === emptyMapWorkspace.id ? emptyMapWorkspace : workspacePresets.find(function (preset) {
@@ -14960,6 +15302,10 @@
14960
15302
  }
14961
15303
  };
14962
15304
 
15305
+ var isAllSelected = workspaceListFilters.every(function (filter) {
15306
+ return filter.isSelected;
15307
+ });
15308
+ var shouldHideNewWorkspace = !isAllSelected || workspaceSearchQuery.length > 0;
14963
15309
  return /*#__PURE__*/React__namespace.createElement("div", null, isFetching && /*#__PURE__*/React__namespace.createElement(material.LinearProgress, {
14964
15310
  "data-testid": "loading-bar",
14965
15311
  color: "secondary",
@@ -14984,11 +15330,19 @@
14984
15330
  return fetchWorkspaceList();
14985
15331
  }
14986
15332
  }
14987
- }))), /*#__PURE__*/React__namespace.createElement(WorkspaceSelectList, {
15333
+ }))), !error && /*#__PURE__*/React__namespace.createElement(WorkspaceFilter, {
15334
+ filters: workspaceListFilters,
15335
+ onClickFilterChip: onClickFilterChip,
15336
+ isAllSelected: isAllSelected,
15337
+ searchQuery: workspaceSearchQuery,
15338
+ onSearch: searchFilter
15339
+ }), /*#__PURE__*/React__namespace.createElement(WorkspaceSelectList, {
14988
15340
  workspacePresets: workspacePresets,
14989
15341
  currentSelectedId: currentView.id || '',
14990
15342
  onClickPreset: onClickWorkspace,
14991
- onClickWorkspacePresetOption: onClickWorkspacePresetOption
15343
+ onClickWorkspacePresetOption: onClickWorkspacePresetOption,
15344
+ hideNewWorkspace: shouldHideNewWorkspace,
15345
+ searchQuery: workspaceSearchQuery
14992
15346
  }));
14993
15347
  };
14994
15348
 
@@ -15090,7 +15444,7 @@
15090
15444
  '&&': {
15091
15445
  backgroundColor: !showMenu && 'transparent',
15092
15446
  '&:hover': {
15093
- backgroundColor: 'geowebColors.screenManager.workspace.tabButtonHover'
15447
+ backgroundColor: 'geowebColors.workspace.tabButtonHover'
15094
15448
  }
15095
15449
  }
15096
15450
  }
@@ -15203,7 +15557,7 @@
15203
15557
  backgroundColor: !isOpen && 'transparent',
15204
15558
  '&:hover': {
15205
15559
  color: activeTab ? 'geowebColors.buttons.icon.active.color' : 'inherit',
15206
- backgroundColor: 'geowebColors.screenManager.workspace.tabButtonHover'
15560
+ backgroundColor: 'geowebColors.workspace.tabButtonHover'
15207
15561
  },
15208
15562
  paddingRight: '4px !important',
15209
15563
  display: 'block',
@@ -15293,6 +15647,16 @@
15293
15647
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
15294
15648
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
15295
15649
  * */
15650
+ var TITLE_SUFFIX_NEW_WORKSPACE = 'modified';
15651
+ var TITLE_SUFFIX_EXISTING_WORKSPACE = 'not saved';
15652
+ var getTitle = function getTitle(title, hasChanges, workspaceId) {
15653
+ if (!hasChanges) {
15654
+ return title;
15655
+ }
15656
+
15657
+ var suffix = workspaceId ? TITLE_SUFFIX_NEW_WORKSPACE : TITLE_SUFFIX_EXISTING_WORKSPACE;
15658
+ return title + " (" + suffix + ")";
15659
+ };
15296
15660
  var WorkspaceOptionsConnect = function WorkspaceOptionsConnect(_a) {
15297
15661
  var title = _a.title,
15298
15662
  activeTab = _a.activeTab,
@@ -15339,9 +15703,10 @@
15339
15703
  workspace: workspaceData
15340
15704
  }));
15341
15705
  }, [dispatch, workspaceData]);
15706
+ var fullTitle = getTitle(title, hasChanges, workspaceId);
15342
15707
  return /*#__PURE__*/React__namespace.createElement(WorkspaceOptions, {
15343
15708
  hasChanges: hasChanges,
15344
- title: title,
15709
+ title: fullTitle,
15345
15710
  activeTab: activeTab,
15346
15711
  handleDelete: workspaceScope === 'user' ? onDelete : undefined,
15347
15712
  handleSaveAs: onSaveAs,
@@ -15832,127 +16197,6 @@
15832
16197
  }));
15833
16198
  };
15834
16199
 
15835
- /* *
15836
- * Licensed under the Apache License, Version 2.0 (the "License");
15837
- * you may not use this file except in compliance with the License.
15838
- * You may obtain a copy of the License at
15839
- *
15840
- * http://www.apache.org/licenses/LICENSE-2.0
15841
- *
15842
- * Unless required by applicable law or agreed to in writing, software
15843
- * distributed under the License is distributed on an "AS IS" BASIS,
15844
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15845
- * See the License for the specific language governing permissions and
15846
- * limitations under the License.
15847
- *
15848
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
15849
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
15850
- * */
15851
- var WorkspaceDetail = function WorkspaceDetail(_a) {
15852
- var workspaceId = _a.workspaceId,
15853
- children = _a.children,
15854
- componentsLookUp = _a.componentsLookUp,
15855
- _b = _a.isSnapshot,
15856
- isSnapshot = _b === void 0 ? false : _b;
15857
- var dispatch = reactRedux.useDispatch();
15858
- var error = reactRedux.useSelector(function (store) {
15859
- return getWorkspaceError(store);
15860
- });
15861
- var isLoading = reactRedux.useSelector(function (store) {
15862
- return isWorkspaceLoading(store);
15863
- });
15864
- var workspaceData = reactRedux.useSelector(function (store) {
15865
- return getWorkspaceData(store);
15866
- });
15867
- var fetchWorkspace = React__namespace.useCallback(function (newWorkspaceId) {
15868
- dispatch(workspaceActions.fetchWorkspace({
15869
- workspaceId: newWorkspaceId
15870
- }));
15871
- }, [dispatch]);
15872
- var onSave = React__namespace.useCallback(function () {
15873
- dispatch(workspaceActions.saveWorkspacePreset({
15874
- workspace: workspaceData
15875
- }));
15876
- }, [dispatch, workspaceData]);
15877
- var setScreenPreset = React__namespace.useCallback(function (newScreenPreset) {
15878
- dispatch(workspaceActions.changePreset({
15879
- workspacePreset: newScreenPreset
15880
- }));
15881
- }, [dispatch]);
15882
- var navigateToUrl = React__namespace.useCallback(function (url) {
15883
- dispatch(core.routerActions.navigateToUrl({
15884
- url: url
15885
- }));
15886
- }, [dispatch]);
15887
-
15888
- var setEmptyWorkSpace = function setEmptyWorkSpace() {
15889
- setScreenPreset(emptyMapWorkspace);
15890
- navigateToUrl(routes.root);
15891
- };
15892
-
15893
- React__namespace.useEffect(function () {
15894
- if (!workspaceId) {
15895
- setEmptyWorkSpace();
15896
- } else {
15897
- fetchWorkspace(workspaceId);
15898
- } // eslint-disable-next-line react-hooks/exhaustive-deps
15899
-
15900
- }, []);
15901
- return /*#__PURE__*/React__namespace.createElement(material.Box, {
15902
- "data-testid": "workspace",
15903
- sx: {
15904
- width: '100%',
15905
- height: '100%'
15906
- }
15907
- }, isLoading && /*#__PURE__*/React__namespace.createElement(material.LinearProgress, {
15908
- "data-testid": "loading-bar",
15909
- color: "secondary",
15910
- sx: {
15911
- position: 'absolute',
15912
- width: '100%',
15913
- top: 0,
15914
- zIndex: 100
15915
- }
15916
- }), error && error.type !== exports.WorkspaceErrorType.SAVE && /*#__PURE__*/React__namespace.createElement(shared.AlertBanner, __assign({
15917
- title: "Failed to fetch workspace " + workspaceId,
15918
- info: error.message,
15919
- shouldClose: true
15920
- }, error.type === exports.WorkspaceErrorType.GENERIC && {
15921
- actionButtonProps: {
15922
- title: 'Try again',
15923
- onClick: function onClick() {
15924
- return fetchWorkspace(workspaceId);
15925
- }
15926
- }
15927
- })), children, !isSnapshot && /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, error && error.type === exports.WorkspaceErrorType.SAVE && /*#__PURE__*/React__namespace.createElement(shared.AlertBanner, {
15928
- title: "Failed to save workspace \"" + workspaceData.title + "\"",
15929
- info: error.message,
15930
- shouldClose: true,
15931
- actionButtonProps: {
15932
- title: 'Try again',
15933
- onClick: function onClick() {
15934
- return onSave();
15935
- }
15936
- }
15937
- }), (!error || error.type === exports.WorkspaceErrorType.SAVE) && /*#__PURE__*/React__namespace.createElement(material.Box, {
15938
- component: "div",
15939
- sx: {
15940
- gridArea: 'content',
15941
- position: 'absolute',
15942
- margin: 0,
15943
- padding: 0,
15944
- display: 'block',
15945
- height: '100%',
15946
- width: '100%',
15947
- overflowY: 'auto',
15948
- zIndex: 3
15949
- },
15950
- "data-testid": "ScreenManagerPage"
15951
- }, /*#__PURE__*/React__namespace.createElement(ScreenManagerViewConnect, {
15952
- componentsLookUp: componentsLookUp
15953
- }))));
15954
- };
15955
-
15956
16200
  /* *
15957
16201
  * Licensed under the Apache License, Version 2.0 (the "License");
15958
16202
  * you may not use this file except in compliance with the License.
@@ -16077,7 +16321,7 @@
16077
16321
  var MapPresetsFormDialog = function MapPresetsFormDialog(_a) {
16078
16322
  var isOpen = _a.isOpen,
16079
16323
  action = _a.action,
16080
- presetId = _a.presetId,
16324
+ viewPresetId = _a.viewPresetId,
16081
16325
  formValues = _a.formValues,
16082
16326
  onSuccess = _a.onSuccess,
16083
16327
  onClose = _a.onClose,
@@ -16153,14 +16397,14 @@
16153
16397
  case 3:
16154
16398
  return [4
16155
16399
  /*yield*/
16156
- , api$1.deleteViewPreset(presetId)];
16400
+ , api$1.deleteViewPreset(viewPresetId)];
16157
16401
 
16158
16402
  case 4:
16159
16403
  _b.sent();
16160
16404
 
16161
16405
  setIsLoading(false);
16162
16406
  onClose();
16163
- onSuccess(action, presetId, newFormValues.title);
16407
+ onSuccess(action, viewPresetId, newFormValues.title);
16164
16408
  return [3
16165
16409
  /*break*/
16166
16410
  , 6];
@@ -16237,6 +16481,164 @@
16237
16481
  }, /*#__PURE__*/React__default["default"].createElement(MapPresetsFormDialog, __assign({}, props)));
16238
16482
  };
16239
16483
 
16484
+ var MapPresetsFormDialogConnect = function MapPresetsFormDialogConnect() {
16485
+ var dispatch = reactRedux.useDispatch();
16486
+ var dialogOptions = reactRedux.useSelector(function (store) {
16487
+ return getDialogOptions(store);
16488
+ });
16489
+ var closeDialog = React__default["default"].useCallback(function () {
16490
+ dispatch(viewPresetActions.closeViewPresetDialog());
16491
+ }, [dispatch]);
16492
+
16493
+ var onClose = function onClose() {
16494
+ closeDialog();
16495
+ };
16496
+
16497
+ var onSuccess = function onSuccess(action, newViewPresetId, title) {
16498
+ dispatch(viewPresetActions.onSuccessViewPresetAction({
16499
+ panelId: dialogOptions === null || dialogOptions === void 0 ? void 0 : dialogOptions.panelId,
16500
+ viewPresetId: newViewPresetId,
16501
+ action: action,
16502
+ title: title
16503
+ }));
16504
+ };
16505
+
16506
+ var isOpen = dialogOptions !== undefined;
16507
+
16508
+ if (!isOpen) {
16509
+ return null;
16510
+ }
16511
+
16512
+ return /*#__PURE__*/React__default["default"].createElement(MapPresetsFormDialogWrapper, __assign({
16513
+ isOpen: isOpen,
16514
+ onClose: onClose,
16515
+ onSuccess: onSuccess
16516
+ }, dialogOptions, {
16517
+ formValues: dialogOptions === null || dialogOptions === void 0 ? void 0 : dialogOptions.formValues
16518
+ }));
16519
+ };
16520
+
16521
+ /* *
16522
+ * Licensed under the Apache License, Version 2.0 (the "License");
16523
+ * you may not use this file except in compliance with the License.
16524
+ * You may obtain a copy of the License at
16525
+ *
16526
+ * http://www.apache.org/licenses/LICENSE-2.0
16527
+ *
16528
+ * Unless required by applicable law or agreed to in writing, software
16529
+ * distributed under the License is distributed on an "AS IS" BASIS,
16530
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16531
+ * See the License for the specific language governing permissions and
16532
+ * limitations under the License.
16533
+ *
16534
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
16535
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
16536
+ * */
16537
+ var WorkspaceDetail = function WorkspaceDetail(_a) {
16538
+ var workspaceId = _a.workspaceId,
16539
+ children = _a.children,
16540
+ componentsLookUp = _a.componentsLookUp,
16541
+ _b = _a.isSnapshot,
16542
+ isSnapshot = _b === void 0 ? false : _b;
16543
+ var dispatch = reactRedux.useDispatch();
16544
+ var error = reactRedux.useSelector(function (store) {
16545
+ return getWorkspaceError(store);
16546
+ });
16547
+ var isLoading = reactRedux.useSelector(function (store) {
16548
+ return isWorkspaceLoading(store);
16549
+ });
16550
+ var workspaceData = reactRedux.useSelector(function (store) {
16551
+ return getWorkspaceData(store);
16552
+ });
16553
+ var fetchWorkspace = React__namespace.useCallback(function (newWorkspaceId) {
16554
+ dispatch(workspaceActions.fetchWorkspace({
16555
+ workspaceId: newWorkspaceId
16556
+ }));
16557
+ }, [dispatch]);
16558
+ var onSave = React__namespace.useCallback(function () {
16559
+ dispatch(workspaceActions.saveWorkspacePreset({
16560
+ workspace: workspaceData
16561
+ }));
16562
+ }, [dispatch, workspaceData]);
16563
+ var setScreenPreset = React__namespace.useCallback(function (newScreenPreset) {
16564
+ dispatch(workspaceActions.changePreset({
16565
+ workspacePreset: newScreenPreset
16566
+ }));
16567
+ }, [dispatch]);
16568
+ var navigateToUrl = React__namespace.useCallback(function (url) {
16569
+ dispatch(core.routerActions.navigateToUrl({
16570
+ url: url
16571
+ }));
16572
+ }, [dispatch]);
16573
+
16574
+ var setEmptyWorkSpace = function setEmptyWorkSpace() {
16575
+ setScreenPreset(emptyMapWorkspace);
16576
+ navigateToUrl(routes.root);
16577
+ };
16578
+
16579
+ React__namespace.useEffect(function () {
16580
+ if (!workspaceId) {
16581
+ setEmptyWorkSpace();
16582
+ } else {
16583
+ fetchWorkspace(workspaceId);
16584
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
16585
+
16586
+ }, []);
16587
+ return /*#__PURE__*/React__namespace.createElement(material.Box, {
16588
+ "data-testid": "workspace",
16589
+ sx: {
16590
+ width: '100%',
16591
+ height: '100%'
16592
+ }
16593
+ }, isLoading && /*#__PURE__*/React__namespace.createElement(material.LinearProgress, {
16594
+ "data-testid": "loading-bar",
16595
+ color: "secondary",
16596
+ sx: {
16597
+ position: 'absolute',
16598
+ width: '100%',
16599
+ top: 0,
16600
+ zIndex: 100
16601
+ }
16602
+ }), error && error.type !== exports.WorkspaceErrorType.SAVE && /*#__PURE__*/React__namespace.createElement(shared.AlertBanner, __assign({
16603
+ title: "Failed to fetch workspace " + workspaceId,
16604
+ info: error.message,
16605
+ shouldClose: true
16606
+ }, error.type === exports.WorkspaceErrorType.GENERIC && {
16607
+ actionButtonProps: {
16608
+ title: 'Try again',
16609
+ onClick: function onClick() {
16610
+ return fetchWorkspace(workspaceId);
16611
+ }
16612
+ }
16613
+ })), children, !isSnapshot && /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, error && error.type === exports.WorkspaceErrorType.SAVE && /*#__PURE__*/React__namespace.createElement(shared.AlertBanner, {
16614
+ title: "Failed to save workspace \"" + workspaceData.title + "\"",
16615
+ info: error.message,
16616
+ shouldClose: true,
16617
+ actionButtonProps: {
16618
+ title: 'Try again',
16619
+ onClick: function onClick() {
16620
+ return onSave();
16621
+ }
16622
+ }
16623
+ }), (!error || error.type === exports.WorkspaceErrorType.SAVE) && /*#__PURE__*/React__namespace.createElement(material.Box, {
16624
+ component: "div",
16625
+ sx: {
16626
+ gridArea: 'content',
16627
+ position: 'absolute',
16628
+ margin: 0,
16629
+ padding: 0,
16630
+ display: 'block',
16631
+ height: '100%',
16632
+ width: '100%',
16633
+ overflowY: 'auto',
16634
+ zIndex: 3
16635
+ },
16636
+ "data-testid": "WorkspacePage"
16637
+ }, /*#__PURE__*/React__namespace.createElement(WorkspaceViewConnect, {
16638
+ componentsLookUp: componentsLookUp
16639
+ }))), /*#__PURE__*/React__namespace.createElement(MapPresetsFormDialogConnect, null));
16640
+ };
16641
+
16240
16642
  /* *
16241
16643
  * Licensed under the Apache License, Version 2.0 (the "License");
16242
16644
  * you may not use this file except in compliance with the License.
@@ -16282,7 +16684,7 @@
16282
16684
  var presetTitle = getPresetTitle(title, hasChanges, isActive, isNew);
16283
16685
 
16284
16686
  var onClickMenuItem = function onClickMenuItem(action) {
16285
- onClickPreset(id, action);
16687
+ onClickPreset(id, action, title);
16286
16688
  };
16287
16689
 
16288
16690
  var items = isUserPreset ? [// TODO: enable again (in same order)
@@ -16355,6 +16757,8 @@
16355
16757
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
16356
16758
  * */
16357
16759
  var MAPPRESET_ACTIVE_TITLE = 'New map preset';
16760
+ var MAPPRESET_DIALOG_TITLE_SAVE_AS = 'Save map preset as';
16761
+ var MAPPRESET_DIALOG_TITLE_DELETE = 'Delete map preset';
16358
16762
  var sortMapPresets = function sortMapPresets(mapPresets) {
16359
16763
  var presetOrder = ['system', 'user'];
16360
16764
  return __spreadArray([], __read(mapPresets)).sort(function (left, right) {
@@ -16379,30 +16783,27 @@
16379
16783
  isDefaultOpen = _f === void 0 ? false : _f,
16380
16784
  _g = _a.id,
16381
16785
  id = _g === void 0 ? 'mappresets-menubutton' : _g,
16382
- _h = _a.onSuccess,
16383
- onSuccess = _h === void 0 ? function () {} : _h,
16384
- _j = _a.isLoading,
16385
- isLoading = _j === void 0 ? false : _j,
16386
- _k = _a.hasError,
16387
- hasError = _k === void 0 ? false : _k,
16388
- _l = _a.hasMapPresetChanges,
16389
- hasMapPresetChanges = _l === void 0 ? false : _l,
16390
- _m = _a.currentMapPreset,
16391
- currentMapPreset = _m === void 0 ? null : _m,
16392
- _o = _a.relatedSyncGroupIds,
16393
- relatedSyncGroupIds = _o === void 0 ? [] : _o,
16394
- _p = _a.onSavePreset,
16395
- onSavePreset = _p === void 0 ? function () {} : _p,
16396
- _q = _a.fetchNewPresetList,
16397
- fetchNewPresetList = _q === void 0 ? function () {} : _q;
16786
+ _h = _a.isLoading,
16787
+ isLoading = _h === void 0 ? false : _h,
16788
+ _j = _a.hasError,
16789
+ hasError = _j === void 0 ? false : _j,
16790
+ _k = _a.hasMapPresetChanges,
16791
+ hasMapPresetChanges = _k === void 0 ? false : _k,
16792
+ _l = _a.currentMapPreset,
16793
+ currentMapPreset = _l === void 0 ? null : _l,
16794
+ _m = _a.relatedSyncGroupIds,
16795
+ relatedSyncGroupIds = _m === void 0 ? [] : _m,
16796
+ _o = _a.onSavePreset,
16797
+ onSavePreset = _o === void 0 ? function () {} : _o,
16798
+ _p = _a.fetchNewPresetList,
16799
+ fetchNewPresetList = _p === void 0 ? function () {} : _p,
16800
+ panelId = _a.panelId,
16801
+ _q = _a.openViewPresetsDialog,
16802
+ openViewPresetsDialog = _q === void 0 ? function () {} : _q;
16398
16803
 
16399
16804
  var _r = __read(React__default["default"].useState(null), 2),
16400
- dialogOptions = _r[0],
16401
- setDialogOptions = _r[1];
16402
-
16403
- var _s = __read(React__default["default"].useState(null), 2),
16404
- anchorEl = _s[0],
16405
- setAnchorEl = _s[1];
16805
+ anchorEl = _r[0],
16806
+ setAnchorEl = _r[1];
16406
16807
 
16407
16808
  var isOpen = Boolean(anchorEl);
16408
16809
 
@@ -16419,12 +16820,7 @@
16419
16820
  setAnchorEl(null);
16420
16821
  };
16421
16822
 
16422
- var onClickPresetItem = function onClickPresetItem(presetId, presetAction) {
16423
- var clickedPreset = mapPresets.find(function (preset) {
16424
- return preset.id === presetId;
16425
- });
16426
- var presetTitle = clickedPreset === null || clickedPreset === void 0 ? void 0 : clickedPreset.title;
16427
-
16823
+ var onClickPresetItem = function onClickPresetItem(presetId, presetAction, presetTitle) {
16428
16824
  switch (presetAction) {
16429
16825
  case PresetAction.OPEN:
16430
16826
  {
@@ -16451,10 +16847,11 @@
16451
16847
 
16452
16848
  case PresetAction.SAVE_AS:
16453
16849
  {
16454
- setDialogOptions({
16455
- title: 'Save map preset as',
16850
+ openViewPresetsDialog({
16851
+ title: MAPPRESET_DIALOG_TITLE_SAVE_AS,
16456
16852
  action: presetAction,
16457
- presetId: presetId,
16853
+ viewPresetId: presetId,
16854
+ panelId: panelId,
16458
16855
  formValues: {
16459
16856
  title: presetTitle,
16460
16857
  initialProps: {
@@ -16469,10 +16866,11 @@
16469
16866
 
16470
16867
  case PresetAction.DELETE:
16471
16868
  {
16472
- setDialogOptions({
16473
- title: 'Delete map preset',
16869
+ openViewPresetsDialog({
16870
+ title: MAPPRESET_DIALOG_TITLE_DELETE,
16474
16871
  action: presetAction,
16475
- presetId: presetId,
16872
+ viewPresetId: presetId,
16873
+ panelId: panelId,
16476
16874
  formValues: {
16477
16875
  title: presetTitle
16478
16876
  }
@@ -16482,10 +16880,6 @@
16482
16880
  }
16483
16881
  };
16484
16882
 
16485
- var onClose = function onClose() {
16486
- setDialogOptions(null);
16487
- };
16488
-
16489
16883
  var activePresetTitle = activeMapPresetId ? (_b = mapPresets.find(function (preset) {
16490
16884
  return preset.id === activeMapPresetId;
16491
16885
  })) === null || _b === void 0 ? void 0 : _b.title : MAPPRESET_ACTIVE_TITLE;
@@ -16560,7 +16954,9 @@
16560
16954
  }, "Map presets")), /*#__PURE__*/React__default["default"].createElement(MapPresetsMenuItem, {
16561
16955
  id: "",
16562
16956
  title: MAPPRESET_ACTIVE_TITLE,
16563
- onClickPreset: onClickPresetItem,
16957
+ onClickPreset: function onClickPreset(presetId, action) {
16958
+ onClickPresetItem(presetId, action, '');
16959
+ },
16564
16960
  isActive: isNewActive,
16565
16961
  scope: "user",
16566
16962
  isNew: true,
@@ -16605,11 +17001,7 @@
16605
17001
  severity: "info",
16606
17002
  dataTestId: "info-banner",
16607
17003
  title: "You haven't saved any presets yet"
16608
- }))), /*#__PURE__*/React__default["default"].createElement(MapPresetsFormDialogWrapper, __assign({
16609
- isOpen: Boolean(dialogOptions),
16610
- onClose: onClose,
16611
- onSuccess: onSuccess
16612
- }, dialogOptions)));
17004
+ }))));
16613
17005
  };
16614
17006
 
16615
17007
  /* *
@@ -16702,14 +17094,11 @@
16702
17094
  viewPreset: viewPreset
16703
17095
  }));
16704
17096
  }, [dispatch, mapId]);
16705
- var onSuccesMapPresetAction = React__default["default"].useCallback(function (action, viewPresetId, title) {
16706
- dispatch(viewPresetActions.onSuccessViewPresetAction({
16707
- panelId: mapId,
16708
- viewPresetId: viewPresetId,
16709
- action: action,
16710
- title: title
17097
+ var openViewPresetsDialog = React__default["default"].useCallback(function (viewPresetDialogOptions) {
17098
+ dispatch(viewPresetActions.openViewPresetDialog({
17099
+ viewPresetDialog: viewPresetDialogOptions
16711
17100
  }));
16712
- }, [dispatch, mapId]);
17101
+ }, [dispatch]);
16713
17102
  React__default["default"].useEffect(function () {
16714
17103
  if (!mapPresets.length) {
16715
17104
  fetchInitialPresets();
@@ -16720,7 +17109,6 @@
16720
17109
  activeMapPresetId: activeMapPresetId,
16721
17110
  mapPresets: mapPresets,
16722
17111
  onClickPreset: selectMapPreset,
16723
- onSuccess: onSuccesMapPresetAction,
16724
17112
  isLoading: isMapPresetsListFetching,
16725
17113
  hasError: !!errorMapPresetsList,
16726
17114
  hasMapPresetChanges: hasMapPresetChanges,
@@ -16728,29 +17116,31 @@
16728
17116
  relatedSyncGroupIds: relatedSyncGroupIds,
16729
17117
  onSavePreset: saveMapPreset,
16730
17118
  fetchNewPresetList: fetchMapPresetsList,
16731
- id: id
17119
+ id: id,
17120
+ panelId: mapId,
17121
+ openViewPresetsDialog: openViewPresetsDialog
16732
17122
  });
16733
17123
  };
16734
17124
 
16735
17125
  exports.ComponentsLookUpWrapper = ComponentsLookUpWrapper;
16736
17126
  exports.MapPresetsDialog = MapPresetsDialog;
16737
17127
  exports.MapPresetsDialogConnect = MapPresetsDialogConnect;
16738
- exports.ScreenManagerThemeProvider = ScreenManagerThemeProvider;
16739
- exports.ScreenManagerViewConnect = ScreenManagerViewConnect;
16740
- exports.ScreenManagerWrapperProvider = ScreenManagerWrapperProvider;
16741
- exports.ScreenManagerWrapperProviderWithStore = ScreenManagerWrapperProviderWithStore;
16742
17128
  exports.WorkspaceDetail = WorkspaceDetail;
16743
17129
  exports.WorkspaceDndProvider = WorkspaceDndProvider;
16744
17130
  exports.WorkspaceModuleProvider = WorkspaceModuleProvider;
17131
+ exports.WorkspaceThemeProvider = WorkspaceThemeProvider;
16745
17132
  exports.WorkspaceTopBar = WorkspaceTopBar;
17133
+ exports.WorkspaceViewConnect = WorkspaceViewConnect;
17134
+ exports.WorkspaceWrapperProvider = WorkspaceWrapperProvider;
17135
+ exports.WorkspaceWrapperProviderWithStore = WorkspaceWrapperProviderWithStore;
16746
17136
  exports.actions = workspaceActions;
16747
17137
  exports.createBalancedMosaicNode = createBalancedMosaicNode;
16748
17138
  exports.emptyMapWorkspace = emptyMapWorkspace;
16749
17139
  exports.getWorkspaceRouteUrl = getWorkspaceRouteUrl;
16750
- exports.screenManagerModuleModuleConfig = screenManagerModuleModuleConfig;
16751
17140
  exports.selectors = selectors;
16752
17141
  exports.viewPresetActions = viewPresetActions;
16753
17142
  exports.workspaceListActions = workspaceListActions;
17143
+ exports.workspaceModuleConfig = workspaceModuleConfig;
16754
17144
  exports.workspaceRoutes = routes;
16755
17145
 
16756
17146
  Object.defineProperty(exports, '__esModule', { value: true });