@opengeoweb/shared 9.21.0 → 9.22.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.
package/index.esm.js CHANGED
@@ -4,7 +4,7 @@ import { Close, Exclamation, Success, Info, ChevronRight, GeoWebLogo, HamburgerM
4
4
  import * as React from 'react';
5
5
  import React__default, { useRef, Component } from 'react';
6
6
  import i18n from 'i18next';
7
- import { initReactI18next, useTranslation } from 'react-i18next';
7
+ import { useTranslation } from 'react-i18next';
8
8
  import { throttle, escapeRegExp, debounce } from 'lodash';
9
9
  import Draggable from 'react-draggable';
10
10
  import { Resizable } from 're-resizable';
@@ -63,7 +63,8 @@ var en = {
63
63
  "shared-sentry-enable-both": "Disable HTML + Canvas recording",
64
64
  "shared-sentry-disable-both": "Enable HTML + Canvas recording",
65
65
  "shared-sentry-cors-wait": "Disabled untill with and without CORS headers fetching mechanism has been implemented",
66
- "shared-sentry-disclaimer": "I understand that while using canvas recording, adding a layer without correct CORS headers will cause error and make the recording to fail. A new recording without the canvas or the layer can be made after reloading the application."
66
+ "shared-sentry-disclaimer": "I understand that while using canvas recording, adding a layer without correct CORS headers will cause error and make the recording to fail. A new recording without the canvas or the layer can be made after reloading the application.",
67
+ "shared-clear": "Clear"
67
68
  };
68
69
  var fi = {
69
70
  "shared-choose-app-mode": "ei käännetty",
@@ -113,7 +114,8 @@ var fi = {
113
114
  "shared-sentry-enable-both": "ei käännetty",
114
115
  "shared-sentry-disable-both": "ei käännetty",
115
116
  "shared-sentry-cors-wait": "ei käännetty",
116
- "shared-sentry-disclaimer": "ei käännetty"
117
+ "shared-sentry-disclaimer": "ei käännetty",
118
+ "shared-clear": "ei käännetty"
117
119
  };
118
120
  var no = {
119
121
  "shared-choose-app-mode": "Velg din standardmodus",
@@ -163,57 +165,59 @@ var no = {
163
165
  "shared-sentry-enable-both": "Skru av HTML + lerret-opptak",
164
166
  "shared-sentry-disable-both": "Skru på HTML + lerret-opptak",
165
167
  "shared-sentry-cors-wait": "Avskrudd inntil CORS-relaterte headere er implementert",
166
- "shared-sentry-disclaimer": "Jeg forstår at ved å bruke lerretopptak vil opptaket feile dersom jeg legger til et lag uten riktig CORS-headere. Ved å laste inn applikasjonen på nytt kan man starte nytt opptak uten lerret eller lag."
168
+ "shared-sentry-disclaimer": "Jeg forstår at ved å bruke lerretopptak vil opptaket feile dersom jeg legger til et lag uten riktig CORS-headere. Ved å laste inn applikasjonen på nytt kan man starte nytt opptak uten lerret eller lag.",
169
+ "shared-clear": "ikke oversatt"
167
170
  };
168
171
  var nl = {
169
- "shared-choose-app-mode": "niet vertaald",
170
- "shared-cheat-sheet": "niet vertaald",
171
- "shared-save": "niet vertaald",
172
- "shared-viewer": "niet vertaald",
173
- "shared-editor": "niet vertaald",
174
- "shared-reload-page": "niet vertaald",
175
- "shared-search-label": "niet vertaald",
176
- "shared-last-updated": "niet vertaald",
177
- "shared-click-to-refresh": "niet vertaald",
178
- "shared-error-occurred": "niet vertaald",
179
- "shared-confirmation-description": "niet vertaald",
180
- "shared-confirmation-cancel": "niet vertaald",
181
- "shared-confirmation-submit": "niet vertaald",
182
- "shared-close-caps": "niet vertaald",
183
- "shared-close": "niet vertaald",
184
- "shared-search": "niet vertaald",
185
- "shared-choose-selected-time": "niet vertaald",
186
- "shared-move-selected-time": "niet vertaald",
187
- "shared-move-one-step": "niet vertaald",
188
- "shared-toggle-timeslider": "niet vertaald",
189
- "shared-timeslider-scale": "niet vertaald",
190
- "shared-expand-timeslider-scale": "niet vertaald",
191
- "shared-mouseover-selected-time": "niet vertaald",
192
- "shared-mouseover-on-off": "niet vertaald",
193
- "shared-change-timestep-or-speed": "niet vertaald",
194
- "shared-return-to-current-time": "niet vertaald",
195
- "shared-change-layer-values-scrolling": "niet vertaald",
196
- "shared-change-layermanager-small": "niet vertaald",
197
- "shared-change-layermanager-medium": "niet vertaald",
198
- "shared-change-layermanager-large": "niet vertaald",
199
- "shared-shortcut-left-click": "niet vertaald",
200
- "shared-shortcut-mouse-scroll-timeslider": "niet vertaald",
201
- "shared-shortcut-hold-click": "niet vertaald",
202
- "shared-shortcut-scroll": "niet vertaald",
203
- "shared-shortcut-hover": "niet vertaald",
204
- "shared-shortcut-when-active": "niet vertaald",
205
- "shared-shortcut-home": "niet vertaald",
206
- "shared-shortcut-mouse-scroll": "niet vertaald",
207
- "shared-shortcut-or": "niet vertaald",
208
- "shared-sentry-recording": "niet vertaald",
209
- "shared-sentry-information": "niet vertaald",
210
- "shared-sentry-enable-message": "niet vertaald",
211
- "shared-sentry-disable": "niet vertaald",
212
- "shared-sentry-enable": "niet vertaald",
213
- "shared-sentry-enable-both": "niet vertaald",
214
- "shared-sentry-disable-both": "niet vertaald",
215
- "shared-sentry-cors-wait": "niet vertaald",
216
- "shared-sentry-disclaimer": "niet vertaald"
172
+ "shared-choose-app-mode": "Kies je standaard app-modus",
173
+ "shared-cheat-sheet": "Cheat sheet",
174
+ "shared-save": "Opslaan",
175
+ "shared-viewer": "Kijker",
176
+ "shared-editor": "Bewerker",
177
+ "shared-reload-page": "Pagina vernieuwen",
178
+ "shared-search-label": "Zoek door services of voer een service-URL in",
179
+ "shared-last-updated": "Laatst bijgewerkt {{time}}",
180
+ "shared-click-to-refresh": "Klik om te vernieuwen",
181
+ "shared-error-occurred": "Oeps, er is een fout opgetreden. Rapporteer de onderstaande fout en herlaad de pagina indien nodig.",
182
+ "shared-confirmation-description": "Weet je het zeker?",
183
+ "shared-confirmation-cancel": "Ga terug",
184
+ "shared-confirmation-submit": "Verzenden",
185
+ "shared-close-caps": "SLUITEN",
186
+ "shared-close": "Sluiten",
187
+ "shared-search": "Zoeken",
188
+ "shared-choose-selected-time": "Kies een geselecteerd tijdstip",
189
+ "shared-move-selected-time": "Ga achteruit/vooruit in geselecteerde tijd",
190
+ "shared-move-one-step": "Ga 1 stap achteruit/vooruit in geselecteerde tijd",
191
+ "shared-toggle-timeslider": "Timeslider verbergen/tonen",
192
+ "shared-timeslider-scale": "Timeslider zichtbare periode wijzigen",
193
+ "shared-expand-timeslider-scale": "Timeslider zichtbare periode vergroten/verkleinen",
194
+ "shared-mouseover-selected-time": "Mouseover om de geselecteerde tijd te wijzigen",
195
+ "shared-mouseover-on-off": "Mouseover aan / uit zetten",
196
+ "shared-change-timestep-or-speed": "Wijzig tijdsinterval of animatiesnelheid",
197
+ "shared-return-to-current-time": "Terug naar huidige tijd",
198
+ "shared-change-layer-values-scrolling": "Wijzig de waarde van een laag in de lagen manager door te scrollen",
199
+ "shared-change-layermanager-small": "Verander de grootte van de lagen manager naar klein",
200
+ "shared-change-layermanager-medium": "Verander de grootte van de lagen manager naar middel",
201
+ "shared-change-layermanager-large": "Verander de grootte van de lagen manager naar groot",
202
+ "shared-shortcut-left-click": "Klik met de linkermuisknop op de timeslider",
203
+ "shared-shortcut-mouse-scroll-timeslider": "Scroll over de timeslider",
204
+ "shared-shortcut-hold-click": "Houd de linkermuisknop ingedrukt op de timeslider + sleep naar links of rechts",
205
+ "shared-shortcut-scroll": "+ Scroll timeslider",
206
+ "shared-shortcut-hover": "Hover over de timeslider of tijd indicator",
207
+ "shared-shortcut-when-active": "wanneer slider actief is",
208
+ "shared-shortcut-home": "Home",
209
+ "shared-shortcut-mouse-scroll": "+ Scroll",
210
+ "shared-shortcut-or": "of",
211
+ "shared-sentry-recording": "Sentry Opname",
212
+ "shared-sentry-information": "Om performance en fouten te monitoren, registreert GeoWeb gebruiksinformatie. Tijdens dit proces verlaat geen enkele gevoelige gebruikersinformatie de browser.",
213
+ "shared-sentry-enable-message": "Door opname te starten, ga ik akkoord dat de opnamegerelateerde gegevens ter verwerking naar de servers van Sentry worden verzonden.",
214
+ "shared-sentry-disable": "HTML opname stoppen",
215
+ "shared-sentry-enable": "HTML opname starten",
216
+ "shared-sentry-enable-both": "HTML + Canvas opname stoppen",
217
+ "shared-sentry-disable-both": "HTML + Canvas opname starten",
218
+ "shared-sentry-cors-wait": "Uitgeschakeld totdat het fetching mechanisme met en zonder CORS-headers is geïmplementeerd",
219
+ "shared-sentry-disclaimer": "Ik begrijp dat bij het gebruik van canvasopnamen het toevoegen van een laag zonder de juiste CORS-headers fouten zal veroorzaken en ervoor zal zorgen dat de opname mislukt. Een nieuwe opname zonder het canvas of de laag kan worden gemaakt na het opnieuw laden van de applicatie.",
220
+ "shared-clear": "Wissen"
217
221
  };
218
222
  var sharedTranslations = {
219
223
  en: en,
@@ -2219,35 +2223,16 @@ const CustomDialog = _a => {
2219
2223
  };
2220
2224
 
2221
2225
  const SHARED_NAMESPACE = 'shared';
2222
- const initSharedI18n = () => {
2223
- i18n.use(initReactI18next).init({
2224
- lng: 'en',
2225
- ns: SHARED_NAMESPACE,
2226
- interpolation: {
2227
- escapeValue: false
2228
- },
2229
- resources: {
2230
- en: {
2231
- shared: sharedTranslations.en
2232
- },
2233
- fi: {
2234
- shared: sharedTranslations.fi
2235
- },
2236
- no: {
2237
- shared: sharedTranslations.no
2238
- },
2239
- nl: {
2240
- shared: sharedTranslations.nl
2241
- }
2242
- }
2243
- });
2244
- };
2245
2226
  const translateKeyOutsideComponents = (key, params = undefined) => i18n.t(key, Object.assign({
2246
2227
  ns: SHARED_NAMESPACE
2247
2228
  }, params));
2248
2229
 
2249
2230
  const confirmStyle = {
2250
2231
  width: {
2232
+ xs: '100%',
2233
+ sm: 'auto'
2234
+ },
2235
+ minWidth: {
2251
2236
  xs: '100%',
2252
2237
  sm: '150px'
2253
2238
  },
@@ -4205,17 +4190,42 @@ $$8({ global: true, forced: parseInt !== $parseInt }, {
4205
4190
  });
4206
4191
 
4207
4192
  const isDraggingClassName = 'is-dragging';
4193
+ const useBoundsProps = nodeRef => {
4194
+ const [boundsProps, setBoundsProps] = React__default.useState({});
4195
+ React__default.useEffect(() => {
4196
+ var _a;
4197
+ if (nodeRef) {
4198
+ setBoundsProps({
4199
+ bounds: (_a = nodeRef === null || nodeRef === void 0 ? void 0 : nodeRef.current) === null || _a === void 0 ? void 0 : _a.parentNode,
4200
+ boundsByDirection: true
4201
+ });
4202
+ }
4203
+ // eslint-disable-next-line react-hooks/exhaustive-deps
4204
+ }, []);
4205
+ return boundsProps;
4206
+ };
4208
4207
  const ResizeComponent = _a => {
4209
4208
  var {
4210
4209
  children,
4211
4210
  onResizeStart = () => {},
4212
4211
  onResizeStop = () => {},
4213
4212
  size,
4214
- setSize,
4213
+ setSize = () => {},
4215
4214
  minHeight = 50,
4216
- minWidth = 50
4215
+ minWidth = 50,
4216
+ enable = {
4217
+ top: false,
4218
+ right: false,
4219
+ bottom: false,
4220
+ left: false,
4221
+ topRight: true,
4222
+ bottomRight: true,
4223
+ bottomLeft: true,
4224
+ topLeft: true
4225
+ },
4226
+ nodeRef
4217
4227
  } = _a,
4218
- props = __rest(_a, ["children", "onResizeStart", "onResizeStop", "size", "setSize", "minHeight", "minWidth"]);
4228
+ props = __rest(_a, ["children", "onResizeStart", "onResizeStop", "size", "setSize", "minHeight", "minWidth", "enable", "nodeRef"]);
4219
4229
  const theme = useTheme();
4220
4230
  const onStartResize = React__default.useCallback((event, _direction, node) => {
4221
4231
  event.stopPropagation();
@@ -4235,6 +4245,9 @@ const ResizeComponent = _a => {
4235
4245
  }, [onResizeStart, setSize]);
4236
4246
  const onStopResize = React__default.useCallback((event, direction, node, delta) => {
4237
4247
  node.classList.remove(isDraggingClassName);
4248
+ if (!size) {
4249
+ return;
4250
+ }
4238
4251
  const width = parseInt(size.width, 10) + delta.width;
4239
4252
  const height = parseInt(size.height, 10) + delta.height;
4240
4253
  setSize({
@@ -4243,14 +4256,13 @@ const ResizeComponent = _a => {
4243
4256
  });
4244
4257
  onResizeStop(event, direction, node, delta);
4245
4258
  }, [setSize, onResizeStop, size]);
4246
- return jsx(Resizable
4247
- // TODO: implement bounds https://gitlab.com/opengeoweb/opengeoweb/-/issues/1035
4248
- , Object.assign({
4249
- // TODO: implement bounds https://gitlab.com/opengeoweb/opengeoweb/-/issues/1035
4259
+ const boundsProps = useBoundsProps(nodeRef);
4260
+ return jsx(Resizable, Object.assign({
4250
4261
  minHeight: minHeight,
4251
4262
  minWidth: minWidth,
4252
4263
  size: size,
4253
- onResizeStop: onStopResize,
4264
+ onResizeStop: onStopResize
4265
+ }, boundsProps, {
4254
4266
  handleComponent: {
4255
4267
  bottomRight: jsx(Resize, {
4256
4268
  style: {
@@ -4272,16 +4284,7 @@ const ResizeComponent = _a => {
4272
4284
  className: "resizableHandle"
4273
4285
  })
4274
4286
  },
4275
- enable: {
4276
- top: false,
4277
- right: false,
4278
- bottom: false,
4279
- left: false,
4280
- topRight: true,
4281
- bottomRight: true,
4282
- bottomLeft: true,
4283
- topLeft: true
4284
- },
4287
+ enable: enable,
4285
4288
  onResizeStart: onStartResize
4286
4289
  }, props, {
4287
4290
  children: children
@@ -4732,8 +4735,18 @@ const UserMenu = ({
4732
4735
  }, {
4733
4736
  children: !_isAdmin ? jsx(Avatar, {
4734
4737
  children: initials
4735
- }) : jsx(Admin, {
4736
- children: initials
4738
+ }) : jsxs(Fragment, {
4739
+ children: [jsx(Admin, {}), initials && jsx("div", Object.assign({
4740
+ style: {
4741
+ position: 'absolute',
4742
+ fontSize: '14px',
4743
+ color: '#FFF',
4744
+ fontFamily: 'Roboto',
4745
+ fontWeight: 500
4746
+ }
4747
+ }, {
4748
+ children: initials
4749
+ }))]
4737
4750
  })
4738
4751
  })), _isOpen && jsx(Paper, Object.assign({
4739
4752
  sx: styles$4.container,
@@ -5383,7 +5396,8 @@ const DraggableComponent = _a => {
5383
5396
  setSize: setSize,
5384
5397
  onResizeStart: onStartResize,
5385
5398
  onResizeStop: onStopResize,
5386
- onResize: onResize
5399
+ onResize: onResize,
5400
+ nodeRef: nodeRef
5387
5401
  }, {
5388
5402
  children: jsx(ToolContainer, Object.assign({
5389
5403
  maxHeight: initialMaxHeight,
@@ -5477,7 +5491,7 @@ const ShortcutList = ({
5477
5491
  }) => {
5478
5492
  const {
5479
5493
  t
5480
- } = useTranslation();
5494
+ } = useTranslation(SHARED_NAMESPACE);
5481
5495
  const shortcuts = [{
5482
5496
  titleKey: 'shared-choose-selected-time',
5483
5497
  description: jsx(ShortCutSegment, {
@@ -6070,7 +6084,7 @@ const UserMenuItemSentryRecording = ({
6070
6084
  },
6071
6085
  minHeight: 300,
6072
6086
  minWidth: 500,
6073
- title: "Sentry Recording",
6087
+ title: t('shared-sentry-recording'),
6074
6088
  isOpen: true,
6075
6089
  onClose: onClose,
6076
6090
  bounds: "parent"
@@ -6153,13 +6167,13 @@ const UserMenuItemSentryRecording = ({
6153
6167
  item: true,
6154
6168
  justifyContent: "center"
6155
6169
  }, {
6156
- children: jsxs(Typography, Object.assign({
6170
+ children: jsx(Typography, Object.assign({
6157
6171
  sx: {
6158
6172
  paddingTop: '20px',
6159
6173
  textAlign: 'center'
6160
6174
  }
6161
6175
  }, {
6162
- children: [' ', t('shared-sentry-disclaimer')]
6176
+ children: t('shared-sentry-disclaimer')
6163
6177
  }))
6164
6178
  }))]
6165
6179
  }))
@@ -7721,7 +7735,7 @@ const isURL = string => /^https?:\/\//.test(string);
7721
7735
  const ClearButton = ({
7722
7736
  onClick
7723
7737
  }) => jsx(CustomIconButton, Object.assign({
7724
- tooltipTitle: "Clear",
7738
+ tooltipTitle: translateKeyOutsideComponents('shared-clear'),
7725
7739
  sx: buttonStyle,
7726
7740
  onClick: onClick
7727
7741
  }, {
@@ -9111,4 +9125,4 @@ class RenderCounter {
9111
9125
  }
9112
9126
  const renderCounter = new RenderCounter();
9113
9127
 
9114
- export { AlertBanner, AlertIcon, AppHeader, AppLayout, Avatar, CanvasComponent, ConfirmationDialog, ConfirmationServiceProvider, CustomAccordion, CustomDialog, CustomIconButton, CustomSlider, CustomToggleButton, CustomTooltip, DEFAULT_ERROR_MESSAGE, DraggableComponent$1 as Draggable, ErrorBoundary, LastUpdateTime, ResizeComponent as Resizable, SHARED_NAMESPACE, SearchField, SearchFieldButton, SearchHighlight, StatusTag, SwitchButton, ToggleMenu, ToolContainer, DraggableComponent as ToolContainerDraggable, ToolFooter, ToolHeader, TooltipSelect, UserMenu, UserMenuItemCheatSheet, UserMenuItemSentryRecording, MenuItemTheme as UserMenuItemTheme, adjustPosition, calculateDialogSizeAndPosition, calculateStartSize, createMockStoreWithEggs, createMockStoreWithEggsAndMiddleware, createToolkitMockStoreWithEggs, index as dateUtils, defaultDelay, getAxiosErrorMessage, getAxiosWarningMessage, getErrorMessage, getInitials, getLastUpdateTitle, getPosition, getWarningMessage, initSharedI18n, isAxiosAuthError, isAxiosError, pollingIntervalTimeout, renderCounter, sharedTranslations, showPrompt, sliderHeaderStyle, tooltipContainerStyles, translateKeyOutsideComponents, useConfirmationDialog, useControlledTooltip, useDebounce, useDialogActions, useIsMounted, useMakeSureContainerStaysInsideWindow, usePoller, usePreventBrowserClose, usePrevious, useUserMenu, withEggs };
9128
+ export { AlertBanner, AlertIcon, AppHeader, AppLayout, Avatar, CanvasComponent, ConfirmationDialog, ConfirmationServiceProvider, CustomAccordion, CustomDialog, CustomIconButton, CustomSlider, CustomToggleButton, CustomTooltip, DEFAULT_ERROR_MESSAGE, DraggableComponent$1 as Draggable, ErrorBoundary, LastUpdateTime, ResizeComponent as Resizable, SHARED_NAMESPACE, SearchField, SearchFieldButton, SearchHighlight, StatusTag, SwitchButton, ToggleMenu, ToolContainer, DraggableComponent as ToolContainerDraggable, ToolFooter, ToolHeader, TooltipSelect, UserMenu, UserMenuItemCheatSheet, UserMenuItemSentryRecording, MenuItemTheme as UserMenuItemTheme, adjustPosition, calculateDialogSizeAndPosition, calculateStartSize, createMockStoreWithEggs, createMockStoreWithEggsAndMiddleware, createToolkitMockStoreWithEggs, index as dateUtils, defaultDelay, getAxiosErrorMessage, getAxiosWarningMessage, getErrorMessage, getInitials, getLastUpdateTitle, getPosition, getWarningMessage, isAxiosAuthError, isAxiosError, pollingIntervalTimeout, renderCounter, sharedTranslations, showPrompt, sliderHeaderStyle, tooltipContainerStyles, useConfirmationDialog, useControlledTooltip, useDebounce, useDialogActions, useIsMounted, useMakeSureContainerStaysInsideWindow, usePoller, usePreventBrowserClose, usePrevious, useUserMenu, withEggs };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/shared",
3
- "version": "9.21.0",
3
+ "version": "9.22.0",
4
4
  "description": "GeoWeb shared library with shared components and utils for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -8,7 +8,7 @@
8
8
  "url": "git@gitlab.com:opengeoweb/opengeoweb.git"
9
9
  },
10
10
  "dependencies": {
11
- "@mui/material": "~5.15.11",
11
+ "@mui/material": "^5.16.0",
12
12
  "@opengeoweb/theme": "*",
13
13
  "react-draggable": "^4.4.6",
14
14
  "re-resizable": "^6.9.11",
package/src/index.d.ts CHANGED
@@ -3,5 +3,5 @@ export * from './lib/components';
3
3
  export * from './lib/hooks';
4
4
  export * from './lib/utils';
5
5
  export * from './lib/types';
6
- export * from './lib/utils/i18n';
6
+ export { SHARED_NAMESPACE } from './lib/utils/i18n';
7
7
  export { sharedTranslations };
@@ -1,5 +1,10 @@
1
1
  import React from 'react';
2
2
  import { ResizableComponentProps } from './types';
3
3
  export declare const isDraggingClassName = "is-dragging";
4
+ export interface BoundsProps {
5
+ bounds: HTMLElement;
6
+ boundsByDirection: boolean;
7
+ }
8
+ export declare const useBoundsProps: (nodeRef?: React.RefObject<HTMLElement>) => BoundsProps | object;
4
9
  declare const ResizeComponent: React.FC<ResizableComponentProps>;
5
10
  export default ResizeComponent;
@@ -1,5 +1,5 @@
1
- /// <reference types="react" />
2
1
  import { ResizableProps } from 're-resizable';
2
+ import React from 'react';
3
3
  export interface DraggablePosition {
4
4
  x: number;
5
5
  y: number;
@@ -23,4 +23,5 @@ export interface ResizableComponentProps extends Omit<ResizableProps, 'size'> {
23
23
  size?: Size;
24
24
  children: React.ReactNode;
25
25
  onResizeStart?: () => void;
26
+ nodeRef?: React.RefObject<HTMLElement>;
26
27
  }