@opengeoweb/sigmet-airmet 4.9.1 → 4.10.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
@@ -1758,12 +1758,13 @@ var Levels = function Levels(_ref) {
1758
1758
  setValue = _useFormContext.setValue,
1759
1759
  trigger = _useFormContext.trigger,
1760
1760
  getValues = _useFormContext.getValues,
1761
- reset = _useFormContext.reset,
1762
- clearErrors = _useFormContext.clearErrors;
1761
+ clearErrors = _useFormContext.clearErrors,
1762
+ unregister = _useFormContext.unregister;
1763
1763
 
1764
1764
  var _useDraftFormHelpers = useDraftFormHelpers(),
1765
1765
  isRequired = _useDraftFormHelpers.isRequired;
1766
1766
 
1767
+ var levelInfoMode = watch('levelInfoMode');
1767
1768
  var config = productType === 'sigmet' ? sigmetConfig : airmetConfig;
1768
1769
 
1769
1770
  var _useProductSettings = useProductSettings(config),
@@ -1772,6 +1773,11 @@ var Levels = function Levels(_ref) {
1772
1773
  var selectedFIR = watch('locationIndicatorATSR'); // Get allowed level units based on selected FIR - if no FIR selected, allow all default units
1773
1774
 
1774
1775
  var allowedLevelUnitsForFir = getAllowedUnits(selectedFIR, allowedUnits, 'level_unit', LevelUnits);
1776
+ React__default.useEffect(function () {
1777
+ if (levelInfoMode !== 'BETW') {
1778
+ unregister('lowerLevel');
1779
+ }
1780
+ }, [levelInfoMode, unregister]);
1775
1781
  return /*#__PURE__*/React__default.createElement(ProductFormFieldLayout, {
1776
1782
  title: "Levels",
1777
1783
  sx: styles$2.containerItem
@@ -1789,29 +1795,18 @@ var Levels = function Levels(_ref) {
1789
1795
  isReadOnly: isReadOnly,
1790
1796
  onChange: function onChange() {
1791
1797
  // Reset default value for the level value to '' so when it rerenders it uses this empty default value
1792
- var currentValues = getValues();
1793
- reset(Object.assign(Object.assign({}, currentValues), {
1794
- level: {
1795
- unit: 'FL',
1796
- value: null
1797
- }
1798
- }), {
1799
- keepErrors: true,
1800
- keepDirty: true,
1801
- keepIsSubmitted: false,
1802
- keepTouched: false,
1803
- keepIsValid: false
1804
- }); // Clear out errors for the levels
1798
+ setValue('level.unit', 'FL');
1799
+ setValue('level.value', null); // Clear out errors for the levels
1805
1800
 
1806
1801
  clearErrors(['level', 'lowerLevel']);
1807
1802
  }
1808
1803
  }, /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
1809
1804
  value: "AT",
1810
1805
  label: "At",
1811
- checked: watch('levelInfoMode') === 'AT' || watch('levelInfoMode') === 'TOPS',
1806
+ checked: levelInfoMode === 'AT' || levelInfoMode === 'TOPS',
1812
1807
  "data-testid": "levels-AT",
1813
1808
  disabled: isDisabled
1814
- }), watch('levelInfoMode') === 'AT' || watch('levelInfoMode') === 'TOPS' ? /*#__PURE__*/React__default.createElement(Grid, {
1809
+ }), levelInfoMode === 'AT' || levelInfoMode === 'TOPS' ? /*#__PURE__*/React__default.createElement(Grid, {
1815
1810
  item: true,
1816
1811
  xs: 12,
1817
1812
  container: true,
@@ -1824,7 +1819,7 @@ var Levels = function Levels(_ref) {
1824
1819
  md: 3
1825
1820
  }, /*#__PURE__*/React__default.createElement(FormControlLabel, {
1826
1821
  control: /*#__PURE__*/React__default.createElement(Checkbox, {
1827
- checked: watch('levelInfoMode') === 'TOPS',
1822
+ checked: levelInfoMode === 'TOPS',
1828
1823
  onChange: function onChange() {
1829
1824
  setValue('levelInfoMode', getValues('levelInfoMode') === 'AT' ? 'TOPS' : 'AT', {
1830
1825
  shouldDirty: true
@@ -1898,10 +1893,10 @@ var Levels = function Levels(_ref) {
1898
1893
  }))) : null, /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
1899
1894
  value: "BETW",
1900
1895
  label: "Between",
1901
- checked: watch('levelInfoMode') === 'BETW' || watch('levelInfoMode') === 'BETW_SFC',
1896
+ checked: levelInfoMode === 'BETW' || levelInfoMode === 'BETW_SFC',
1902
1897
  "data-testid": "levels-BETW",
1903
1898
  disabled: isDisabled
1904
- }), watch('levelInfoMode') === 'BETW' || watch('levelInfoMode') === 'BETW_SFC' ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Grid, {
1899
+ }), levelInfoMode === 'BETW' || levelInfoMode === 'BETW_SFC' ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Grid, {
1905
1900
  item: true,
1906
1901
  xs: 12,
1907
1902
  container: true,
@@ -1922,7 +1917,7 @@ var Levels = function Levels(_ref) {
1922
1917
  isRequired: isRequired,
1923
1918
  validateLevelUnitCombinations: function validateLevelUnitCombinations(value) {
1924
1919
  return (// level step depends on the unit
1925
- _validateLevelUnitCombinations(value, watch('levelInfoMode') === 'BETW_SFC' ? 'SFC' : getValues('lowerLevel.unit')) === true
1920
+ _validateLevelUnitCombinations(value, levelInfoMode === 'BETW_SFC' ? 'SFC' : getValues('lowerLevel.unit')) === true
1926
1921
  );
1927
1922
  }
1928
1923
  }
@@ -1989,7 +1984,7 @@ var Levels = function Levels(_ref) {
1989
1984
  md: 3
1990
1985
  }, /*#__PURE__*/React__default.createElement(FormControlLabel, {
1991
1986
  control: /*#__PURE__*/React__default.createElement(Checkbox, {
1992
- checked: watch('levelInfoMode') === 'BETW_SFC',
1987
+ checked: levelInfoMode === 'BETW_SFC',
1993
1988
  onChange: function onChange() {
1994
1989
  getValues('level.unit') && trigger('level.unit');
1995
1990
  setValue('levelInfoMode', getValues('levelInfoMode') === 'BETW' ? 'BETW_SFC' : 'BETW', {
@@ -2002,7 +1997,7 @@ var Levels = function Levels(_ref) {
2002
1997
  }),
2003
1998
  "data-testid": "levels-SFC",
2004
1999
  label: "SFC"
2005
- })), watch('levelInfoMode') !== 'BETW_SFC' && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Grid, {
2000
+ })), levelInfoMode !== 'BETW_SFC' && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Grid, {
2006
2001
  item: true,
2007
2002
  xs: 4,
2008
2003
  md: 3
@@ -2076,9 +2071,9 @@ var Levels = function Levels(_ref) {
2076
2071
  value: "ABV",
2077
2072
  label: "Above",
2078
2073
  disabled: isDisabled,
2079
- checked: watch('levelInfoMode') === 'ABV' || watch('levelInfoMode') === 'TOPS_ABV',
2074
+ checked: levelInfoMode === 'ABV' || levelInfoMode === 'TOPS_ABV',
2080
2075
  "data-testid": "levels-ABV"
2081
- }), watch('levelInfoMode') === 'ABV' || watch('levelInfoMode') === 'TOPS_ABV' ? /*#__PURE__*/React__default.createElement(Grid, {
2076
+ }), levelInfoMode === 'ABV' || levelInfoMode === 'TOPS_ABV' ? /*#__PURE__*/React__default.createElement(Grid, {
2082
2077
  item: true,
2083
2078
  xs: 12,
2084
2079
  container: true,
@@ -2091,7 +2086,7 @@ var Levels = function Levels(_ref) {
2091
2086
  md: 3
2092
2087
  }, /*#__PURE__*/React__default.createElement(FormControlLabel, {
2093
2088
  control: /*#__PURE__*/React__default.createElement(Checkbox, {
2094
- checked: watch('levelInfoMode') === 'TOPS_ABV',
2089
+ checked: levelInfoMode === 'TOPS_ABV',
2095
2090
  onChange: function onChange() {
2096
2091
  setValue('levelInfoMode', getValues('levelInfoMode') === 'ABV' ? 'TOPS_ABV' : 'ABV', {
2097
2092
  shouldDirty: true
@@ -2312,19 +2307,6 @@ var Phenomenon = function Phenomenon(_ref) {
2312
2307
  setValue('movementType', null);
2313
2308
  }
2314
2309
 
2315
- if (!isSigmet) {
2316
- if (getValues('phenomenon') !== 'SFC_VIS') {
2317
- setValue('visibilityValue', null);
2318
- setValue('visibilityCause', null);
2319
- }
2320
-
2321
- if (getValues('phenomenon') !== 'SFC_WIND') {
2322
- setValue('windDirection', null);
2323
- setValue('windUnit', null);
2324
- setValue('windSpeed', null);
2325
- }
2326
- }
2327
-
2328
2310
  _onChange();
2329
2311
 
2330
2312
  return trigger([].concat(_toConsumableArray(getValues('validDateStart') ? ['validDateStart'] : []), _toConsumableArray(getValues('validDateEnd') ? ['validDateEnd'] : [])));
@@ -2496,7 +2478,8 @@ var Progress = function Progress(_ref) {
2496
2478
  watch = _useFormContext.watch,
2497
2479
  getValues = _useFormContext.getValues,
2498
2480
  trigger = _useFormContext.trigger,
2499
- errors = _useFormContext.formState.errors;
2481
+ errors = _useFormContext.formState.errors,
2482
+ unregister = _useFormContext.unregister;
2500
2483
 
2501
2484
  var _useDraftFormHelpers = useDraftFormHelpers(),
2502
2485
  isRequired = _useDraftFormHelpers.isRequired,
@@ -2511,6 +2494,18 @@ var Progress = function Progress(_ref) {
2511
2494
  var selectedFIR = watch('locationIndicatorATSR'); // Get allowed movement units based on selected FIR - if no FIR selected, allow all units
2512
2495
 
2513
2496
  var allowedMovementUnitsForFir = getAllowedUnits(selectedFIR, allowedUnits, 'movement_unit', MovementUnit);
2497
+ React__default.useEffect(function () {
2498
+ if (movementType !== 'MOVEMENT') {
2499
+ unregister('movementDirection');
2500
+ unregister('movementSpeed');
2501
+ unregister('movementUnit');
2502
+ }
2503
+
2504
+ if (movementType !== 'FORECAST_POSITION') {
2505
+ unregister('endGeometry');
2506
+ unregister('endGeometryIntersect');
2507
+ }
2508
+ }, [movementType, unregister]);
2514
2509
  return /*#__PURE__*/React__default.createElement(ProductFormFieldLayout, {
2515
2510
  title: "Progress",
2516
2511
  sx: styles$2.containerItem
@@ -3376,7 +3371,8 @@ var CloudLevels = function CloudLevels(_ref) {
3376
3371
  watch = _useFormContext.watch,
3377
3372
  setValue = _useFormContext.setValue,
3378
3373
  trigger = _useFormContext.trigger,
3379
- getValues = _useFormContext.getValues;
3374
+ getValues = _useFormContext.getValues,
3375
+ unregister = _useFormContext.unregister;
3380
3376
 
3381
3377
  var _useDraftFormHelpers = useDraftFormHelpers(),
3382
3378
  isRequired = _useDraftFormHelpers.isRequired;
@@ -3384,9 +3380,15 @@ var CloudLevels = function CloudLevels(_ref) {
3384
3380
  var _useProductSettings = useProductSettings(airmetConfig),
3385
3381
  allowedUnits = _useProductSettings.allowedUnits;
3386
3382
 
3387
- var selectedFIR = watch('locationIndicatorATSR'); // Get allowed cloud level units based on selected FIR - if no FIR selected, allow all default units
3383
+ var selectedFIR = watch('locationIndicatorATSR');
3384
+ var cloudLevelInfoMode = watch('cloudLevelInfoMode'); // Get allowed cloud level units based on selected FIR - if no FIR selected, allow all default units
3388
3385
 
3389
3386
  var allowedCloudLevelUnitsForFir = getAllowedUnits(selectedFIR, allowedUnits, 'cloud_level_unit', CloudLevelUnits);
3387
+ React__default.useEffect(function () {
3388
+ if (cloudLevelInfoMode === 'BETW_SFC' || cloudLevelInfoMode === 'BETW_SFC_ABV') {
3389
+ unregister('cloudLowerLevel');
3390
+ }
3391
+ }, [cloudLevelInfoMode, unregister]);
3390
3392
  return /*#__PURE__*/React__default.createElement(Grid, {
3391
3393
  item: true,
3392
3394
  container: true,
@@ -3418,12 +3420,12 @@ var CloudLevels = function CloudLevels(_ref) {
3418
3420
  }, /*#__PURE__*/React__default.createElement(Grid, {
3419
3421
  item: true,
3420
3422
  xs: 4
3421
- }, (!isReadOnly || watch('cloudLevelInfoMode') === 'BETW_ABV' || watch('cloudLevelInfoMode') === 'BETW_SFC_ABV') && /*#__PURE__*/React__default.createElement(ReactHookFormFormControl, {
3423
+ }, (!isReadOnly || cloudLevelInfoMode === 'BETW_ABV' || cloudLevelInfoMode === 'BETW_SFC_ABV') && /*#__PURE__*/React__default.createElement(ReactHookFormFormControl, {
3422
3424
  disabled: isDisabled,
3423
3425
  isReadOnly: isReadOnly
3424
3426
  }, /*#__PURE__*/React__default.createElement(FormControlLabel, {
3425
3427
  control: /*#__PURE__*/React__default.createElement(Checkbox, {
3426
- checked: watch('cloudLevelInfoMode') === 'BETW_ABV' || watch('cloudLevelInfoMode') === 'BETW_SFC_ABV',
3428
+ checked: cloudLevelInfoMode === 'BETW_ABV' || cloudLevelInfoMode === 'BETW_SFC_ABV',
3427
3429
  onChange: function onChange() {
3428
3430
  switch (getValues('cloudLevelInfoMode')) {
3429
3431
  case 'BETW':
@@ -3531,12 +3533,12 @@ var CloudLevels = function CloudLevels(_ref) {
3531
3533
  }, /*#__PURE__*/React__default.createElement(Grid, {
3532
3534
  item: true,
3533
3535
  xs: 4
3534
- }, (!isReadOnly || watch('cloudLevelInfoMode') === 'BETW_SFC' || watch('cloudLevelInfoMode') === 'BETW_SFC_ABV') && /*#__PURE__*/React__default.createElement(ReactHookFormFormControl, {
3536
+ }, (!isReadOnly || cloudLevelInfoMode === 'BETW_SFC' || cloudLevelInfoMode === 'BETW_SFC_ABV') && /*#__PURE__*/React__default.createElement(ReactHookFormFormControl, {
3535
3537
  disabled: isDisabled,
3536
3538
  isReadOnly: isReadOnly
3537
3539
  }, /*#__PURE__*/React__default.createElement(FormControlLabel, {
3538
3540
  control: /*#__PURE__*/React__default.createElement(Checkbox, {
3539
- checked: watch('cloudLevelInfoMode') === 'BETW_SFC' || watch('cloudLevelInfoMode') === 'BETW_SFC_ABV',
3541
+ checked: cloudLevelInfoMode === 'BETW_SFC' || cloudLevelInfoMode === 'BETW_SFC_ABV',
3540
3542
  onChange: function onChange() {
3541
3543
  switch (getValues('cloudLevelInfoMode')) {
3542
3544
  case 'BETW':
@@ -3570,7 +3572,7 @@ var CloudLevels = function CloudLevels(_ref) {
3570
3572
  }),
3571
3573
  "data-testid": "cloudLevels-SFC",
3572
3574
  label: "SFC"
3573
- }))), watch('cloudLevelInfoMode') !== 'BETW_SFC' && watch('cloudLevelInfoMode') !== 'BETW_SFC_ABV' && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Grid, {
3575
+ }))), cloudLevelInfoMode !== 'BETW_SFC' && cloudLevelInfoMode !== 'BETW_SFC_ABV' && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Grid, {
3574
3576
  item: true,
3575
3577
  xs: 3
3576
3578
  }, /*#__PURE__*/React__default.createElement(ReactHookFormSelect, {
@@ -4111,6 +4113,23 @@ var ProductFormLayout = function ProductFormLayout(_a) {
4111
4113
  }, children));
4112
4114
  };
4113
4115
 
4116
+ var useConditionalFields$1 = function useConditionalFields() {
4117
+ var _useFormContext = useFormContext(),
4118
+ watch = _useFormContext.watch,
4119
+ unregister = _useFormContext.unregister; // phenomenon: VA_CLD
4120
+
4121
+
4122
+ var hasVolcanicAshes = watch('phenomenon') === 'VA_CLD';
4123
+ React__default.useEffect(function () {
4124
+ if (!hasVolcanicAshes) {
4125
+ unregister(['vaSigmetVolcanoName', 'vaSigmetVolcanoCoordinates.latitude', 'vaSigmetVolcanoCoordinates.longitude']);
4126
+ }
4127
+ }, [hasVolcanicAshes, unregister]);
4128
+ return {
4129
+ hasVolcanicAshes: hasVolcanicAshes
4130
+ };
4131
+ };
4132
+
4114
4133
  var SigmetForm = function SigmetForm(_ref) {
4115
4134
  var mode = _ref.mode,
4116
4135
  _ref$isCancelSigmet = _ref.isCancelSigmet,
@@ -4125,10 +4144,10 @@ var SigmetForm = function SigmetForm(_ref) {
4125
4144
  var _useApiContext = useApiContext(),
4126
4145
  api = _useApiContext.api;
4127
4146
 
4128
- var _useFormContext = useFormContext(),
4129
- watch = _useFormContext.watch,
4130
- setValue = _useFormContext.setValue,
4131
- handleSubmit = _useFormContext.handleSubmit;
4147
+ var _useFormContext2 = useFormContext(),
4148
+ watch = _useFormContext2.watch,
4149
+ setValue = _useFormContext2.setValue,
4150
+ handleSubmit = _useFormContext2.handleSubmit;
4132
4151
 
4133
4152
  var _React$useState = React__default.useState(mode === 'view'),
4134
4153
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -4209,6 +4228,9 @@ var SigmetForm = function SigmetForm(_ref) {
4209
4228
  }
4210
4229
  }, [drawMode.start, drawMode.end, isReadOnly, isDisabled]);
4211
4230
 
4231
+ var _useConditionalFields = useConditionalFields$1(),
4232
+ hasVolcanicAshes = _useConditionalFields.hasVolcanicAshes;
4233
+
4212
4234
  var renderForm = function renderForm() {
4213
4235
  return /*#__PURE__*/React__default.createElement(Grid, {
4214
4236
  container: true,
@@ -4227,7 +4249,7 @@ var SigmetForm = function SigmetForm(_ref) {
4227
4249
  isReadOnly: isReadOnly,
4228
4250
  helperText: helperText,
4229
4251
  onChange: onChangeForm
4230
- }), !isCancelSigmet && watch('phenomenon') === 'VA_CLD' && /*#__PURE__*/React__default.createElement(VolcanicFields, {
4252
+ }), !isCancelSigmet && hasVolcanicAshes && /*#__PURE__*/React__default.createElement(VolcanicFields, {
4231
4253
  isDisabled: isDisabled,
4232
4254
  isReadOnly: isReadOnly,
4233
4255
  helperText: helperText
@@ -4324,6 +4346,48 @@ var SigmetForm = function SigmetForm(_ref) {
4324
4346
  }, renderForm()));
4325
4347
  };
4326
4348
 
4349
+ var useConditionalFields = function useConditionalFields() {
4350
+ var _useFormContext = useFormContext(),
4351
+ watch = _useFormContext.watch,
4352
+ unregister = _useFormContext.unregister; // phenomenon: SFC_VIS
4353
+
4354
+
4355
+ var phenomenon = watch('phenomenon');
4356
+ var hasSurfaceVisiblity = phenomenon === 'SFC_VIS';
4357
+ React__default.useEffect(function () {
4358
+ if (!hasSurfaceVisiblity) {
4359
+ unregister(['visibilityValue', 'visibilityCause']);
4360
+ }
4361
+ }, [hasSurfaceVisiblity, unregister]); // phenomenon: SFC_WIND
4362
+
4363
+ var hasSurfaceWind = watch('phenomenon') === 'SFC_WIND';
4364
+ React__default.useEffect(function () {
4365
+ if (!hasSurfaceWind) {
4366
+ unregister(['windDirection', 'windUnit', 'windSpeed']);
4367
+ }
4368
+ }, [hasSurfaceWind, unregister]); // phenomenon: SFC_WIND, SFC_VIS, BKN_CLD, OVC_CLD
4369
+
4370
+ var hasLevels = phenomenon !== 'SFC_WIND' && phenomenon !== 'SFC_VIS' && phenomenon !== 'BKN_CLD' && phenomenon !== 'OVC_CLD';
4371
+ React__default.useEffect(function () {
4372
+ if (!hasLevels) {
4373
+ unregister(['levelInfoMode', 'level', 'lowerLevel']);
4374
+ }
4375
+ }, [hasLevels, unregister]); // phenomenon: BKN_CLD
4376
+
4377
+ var hasCloudLevels = phenomenon === 'BKN_CLD' || phenomenon === 'OVC_CLD';
4378
+ React__default.useEffect(function () {
4379
+ if (!hasCloudLevels) {
4380
+ unregister(['cloudLevelInfoMode', 'cloudLevel', 'cloudLowerLevel']);
4381
+ }
4382
+ }, [hasCloudLevels, unregister]);
4383
+ return {
4384
+ hasSurfaceVisiblity: hasSurfaceVisiblity,
4385
+ hasSurfaceWind: hasSurfaceWind,
4386
+ hasLevels: hasLevels,
4387
+ hasCloudLevels: hasCloudLevels
4388
+ };
4389
+ };
4390
+
4327
4391
  var AirmetForm = function AirmetForm(_ref) {
4328
4392
  var mode = _ref.mode,
4329
4393
  _ref$isCancelAirmet = _ref.isCancelAirmet,
@@ -4338,12 +4402,10 @@ var AirmetForm = function AirmetForm(_ref) {
4338
4402
  var _useApiContext = useApiContext(),
4339
4403
  api = _useApiContext.api;
4340
4404
 
4341
- var _useFormContext = useFormContext(),
4342
- watch = _useFormContext.watch,
4343
- setValue = _useFormContext.setValue,
4344
- handleSubmit = _useFormContext.handleSubmit;
4345
-
4346
- var phenomenon = watch('phenomenon');
4405
+ var _useFormContext2 = useFormContext(),
4406
+ watch = _useFormContext2.watch,
4407
+ setValue = _useFormContext2.setValue,
4408
+ handleSubmit = _useFormContext2.handleSubmit;
4347
4409
 
4348
4410
  var _React$useState = React__default.useState(mode === 'view'),
4349
4411
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -4402,6 +4464,12 @@ var AirmetForm = function AirmetForm(_ref) {
4402
4464
  }
4403
4465
  }, [drawMode.start, isReadOnly, isDisabled]);
4404
4466
 
4467
+ var _useConditionalFields = useConditionalFields(),
4468
+ hasSurfaceVisiblity = _useConditionalFields.hasSurfaceVisiblity,
4469
+ hasSurfaceWind = _useConditionalFields.hasSurfaceWind,
4470
+ hasLevels = _useConditionalFields.hasLevels,
4471
+ hasCloudLevels = _useConditionalFields.hasCloudLevels;
4472
+
4405
4473
  var renderForm = function renderForm() {
4406
4474
  return /*#__PURE__*/React__default.createElement(Grid, {
4407
4475
  container: true,
@@ -4412,11 +4480,11 @@ var AirmetForm = function AirmetForm(_ref) {
4412
4480
  isDisabled: isDisabled,
4413
4481
  isReadOnly: isReadOnly,
4414
4482
  onChange: onChangeForm
4415
- }), !isCancelAirmet && phenomenon === 'SFC_VIS' && /*#__PURE__*/React__default.createElement(SurfaceVisibility, {
4483
+ }), !isCancelAirmet && hasSurfaceVisiblity && /*#__PURE__*/React__default.createElement(SurfaceVisibility, {
4416
4484
  isReadOnly: isReadOnly,
4417
4485
  isDisabled: isDisabled,
4418
4486
  onChange: onChangeForm
4419
- }), !isCancelAirmet && phenomenon === 'SFC_WIND' && /*#__PURE__*/React__default.createElement(SurfaceWind, {
4487
+ }), !isCancelAirmet && hasSurfaceWind && /*#__PURE__*/React__default.createElement(SurfaceWind, {
4420
4488
  isReadOnly: isReadOnly,
4421
4489
  isDisabled: isDisabled,
4422
4490
  onChange: onChangeForm
@@ -4449,12 +4517,12 @@ var AirmetForm = function AirmetForm(_ref) {
4449
4517
  setDrawModeType: function setDrawModeType(mapDrawMode, StartOrEndDrawing) {
4450
4518
  _setDrawModeType(mapDrawMode, StartOrEndDrawing, updateStartDrawing);
4451
4519
  }
4452
- }), !isCancelAirmet && phenomenon !== 'SFC_WIND' && phenomenon !== 'SFC_VIS' && phenomenon !== 'BKN_CLD' && phenomenon !== 'OVC_CLD' && /*#__PURE__*/React__default.createElement(Levels, {
4520
+ }), !isCancelAirmet && hasLevels && /*#__PURE__*/React__default.createElement(Levels, {
4453
4521
  isDisabled: isDisabled,
4454
4522
  isReadOnly: isReadOnly,
4455
4523
  onChange: onChangeForm,
4456
4524
  productType: "airmet"
4457
- }), !isCancelAirmet && (phenomenon === 'BKN_CLD' || phenomenon === 'OVC_CLD') && /*#__PURE__*/React__default.createElement(CloudLevels, {
4525
+ }), !isCancelAirmet && hasCloudLevels && /*#__PURE__*/React__default.createElement(CloudLevels, {
4458
4526
  isDisabled: isDisabled,
4459
4527
  isReadOnly: isReadOnly,
4460
4528
  onChange: onChangeForm
@@ -5119,8 +5187,9 @@ var ProductFormDialogContent = function ProductFormDialogContent(_ref) {
5119
5187
  };
5120
5188
 
5121
5189
  var onToggleDialog = function onToggleDialog() {
5190
+ var shouldRefreshList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
5122
5191
  setLoader(false);
5123
- toggleDialogStatus();
5192
+ toggleDialogStatus(shouldRefreshList);
5124
5193
  };
5125
5194
 
5126
5195
  var showConfirmDialog = function showConfirmDialog(action) {
@@ -5140,7 +5209,7 @@ var ProductFormDialogContent = function ProductFormDialogContent(_ref) {
5140
5209
  switch (action) {
5141
5210
  case 'CLOSED':
5142
5211
  if (mode === 'view' || !isDirty) {
5143
- onToggleDialog();
5212
+ onToggleDialog(false);
5144
5213
  } else {
5145
5214
  toggleIsDraft(true);
5146
5215
  showConfirmDialog(action).then(function () {
@@ -5150,7 +5219,7 @@ var ProductFormDialogContent = function ProductFormDialogContent(_ref) {
5150
5219
  })["catch"](function (reason) {
5151
5220
  if (reason === 'CANCELLED') {
5152
5221
  // close without save
5153
- onToggleDialog();
5222
+ onToggleDialog(false);
5154
5223
  }
5155
5224
  });
5156
5225
  }
@@ -5172,7 +5241,7 @@ var ProductFormDialogContent = function ProductFormDialogContent(_ref) {
5172
5241
  showConfirmDialog(action).then(function () {
5173
5242
  // If we're discarding a new SIGMET/AIRMET - just close the dialog
5174
5243
  if (mode === 'new') {
5175
- onToggleDialog();
5244
+ onToggleDialog(false);
5176
5245
  } else {
5177
5246
  // If we're discarding an existing SIGMET/AIRMET - make call to BE
5178
5247
  postProduct(product, action);
@@ -5295,7 +5364,7 @@ var ProductFormDialog = function ProductFormDialog(_ref) {
5295
5364
  return /*#__PURE__*/React.createElement(ReactHookFormProvider, {
5296
5365
  options: Object.assign(Object.assign({}, defaultFormOptions), {
5297
5366
  defaultValues: product,
5298
- shouldUnregister: true
5367
+ values: product
5299
5368
  })
5300
5369
  }, /*#__PURE__*/React.createElement(ConfirmationServiceProvider, null, /*#__PURE__*/React.createElement(ProductFormDialogContent, {
5301
5370
  isOpen: isOpen,
@@ -5353,8 +5422,9 @@ var MetInfoWrapper = function MetInfoWrapper(_ref) {
5353
5422
  }, [selectedProduct]);
5354
5423
 
5355
5424
  var toggleDialogOpen = function toggleDialogOpen() {
5425
+ var shouldRefreshList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
5356
5426
  // Refresh list on closing dialog
5357
- if (isFormDialogOpen === true) getNewProductList();
5427
+ if (isFormDialogOpen === true && shouldRefreshList) getNewProductList();
5358
5428
  setIsFormDialogOpen(!isFormDialogOpen);
5359
5429
  };
5360
5430
 
package/index.umd.js CHANGED
@@ -1756,15 +1756,21 @@
1756
1756
  setValue = _c.setValue,
1757
1757
  trigger = _c.trigger,
1758
1758
  getValues = _c.getValues,
1759
- reset = _c.reset,
1760
- clearErrors = _c.clearErrors;
1759
+ clearErrors = _c.clearErrors,
1760
+ unregister = _c.unregister;
1761
1761
 
1762
1762
  var isRequired = shared.useDraftFormHelpers().isRequired;
1763
+ var levelInfoMode = watch('levelInfoMode');
1763
1764
  var config = productType === 'sigmet' ? sigmetConfig : airmetConfig;
1764
1765
  var allowedUnits = useProductSettings(config).allowedUnits;
1765
1766
  var selectedFIR = watch('locationIndicatorATSR'); // Get allowed level units based on selected FIR - if no FIR selected, allow all default units
1766
1767
 
1767
1768
  var allowedLevelUnitsForFir = getAllowedUnits(selectedFIR, allowedUnits, 'level_unit', LevelUnits);
1769
+ React__default["default"].useEffect(function () {
1770
+ if (levelInfoMode !== 'BETW') {
1771
+ unregister('lowerLevel');
1772
+ }
1773
+ }, [levelInfoMode, unregister]);
1768
1774
  return /*#__PURE__*/React__default["default"].createElement(ProductFormFieldLayout, {
1769
1775
  title: "Levels",
1770
1776
  sx: styles$2.containerItem
@@ -1782,29 +1788,18 @@
1782
1788
  isReadOnly: isReadOnly,
1783
1789
  onChange: function onChange() {
1784
1790
  // Reset default value for the level value to '' so when it rerenders it uses this empty default value
1785
- var currentValues = getValues();
1786
- reset(__assign(__assign({}, currentValues), {
1787
- level: {
1788
- unit: 'FL',
1789
- value: null
1790
- }
1791
- }), {
1792
- keepErrors: true,
1793
- keepDirty: true,
1794
- keepIsSubmitted: false,
1795
- keepTouched: false,
1796
- keepIsValid: false
1797
- }); // Clear out errors for the levels
1791
+ setValue('level.unit', 'FL');
1792
+ setValue('level.value', null); // Clear out errors for the levels
1798
1793
 
1799
1794
  clearErrors(['level', 'lowerLevel']);
1800
1795
  }
1801
1796
  }, /*#__PURE__*/React__default["default"].createElement(RadioButtonAndLabel, {
1802
1797
  value: "AT",
1803
1798
  label: "At",
1804
- checked: watch('levelInfoMode') === 'AT' || watch('levelInfoMode') === 'TOPS',
1799
+ checked: levelInfoMode === 'AT' || levelInfoMode === 'TOPS',
1805
1800
  "data-testid": "levels-AT",
1806
1801
  disabled: isDisabled
1807
- }), watch('levelInfoMode') === 'AT' || watch('levelInfoMode') === 'TOPS' ? /*#__PURE__*/React__default["default"].createElement(material.Grid, {
1802
+ }), levelInfoMode === 'AT' || levelInfoMode === 'TOPS' ? /*#__PURE__*/React__default["default"].createElement(material.Grid, {
1808
1803
  item: true,
1809
1804
  xs: 12,
1810
1805
  container: true,
@@ -1817,7 +1812,7 @@
1817
1812
  md: 3
1818
1813
  }, /*#__PURE__*/React__default["default"].createElement(material.FormControlLabel, {
1819
1814
  control: /*#__PURE__*/React__default["default"].createElement(material.Checkbox, {
1820
- checked: watch('levelInfoMode') === 'TOPS',
1815
+ checked: levelInfoMode === 'TOPS',
1821
1816
  onChange: function onChange() {
1822
1817
  setValue('levelInfoMode', getValues('levelInfoMode') === 'AT' ? 'TOPS' : 'AT', {
1823
1818
  shouldDirty: true
@@ -1888,10 +1883,10 @@
1888
1883
  }))) : null, /*#__PURE__*/React__default["default"].createElement(RadioButtonAndLabel, {
1889
1884
  value: "BETW",
1890
1885
  label: "Between",
1891
- checked: watch('levelInfoMode') === 'BETW' || watch('levelInfoMode') === 'BETW_SFC',
1886
+ checked: levelInfoMode === 'BETW' || levelInfoMode === 'BETW_SFC',
1892
1887
  "data-testid": "levels-BETW",
1893
1888
  disabled: isDisabled
1894
- }), watch('levelInfoMode') === 'BETW' || watch('levelInfoMode') === 'BETW_SFC' ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
1889
+ }), levelInfoMode === 'BETW' || levelInfoMode === 'BETW_SFC' ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
1895
1890
  item: true,
1896
1891
  xs: 12,
1897
1892
  container: true,
@@ -1912,7 +1907,7 @@
1912
1907
  isRequired: isRequired,
1913
1908
  validateLevelUnitCombinations: function validateLevelUnitCombinations(value) {
1914
1909
  // level step depends on the unit
1915
- return _validateLevelUnitCombinations(value, watch('levelInfoMode') === 'BETW_SFC' ? 'SFC' : getValues('lowerLevel.unit')) === true;
1910
+ return _validateLevelUnitCombinations(value, levelInfoMode === 'BETW_SFC' ? 'SFC' : getValues('lowerLevel.unit')) === true;
1916
1911
  }
1917
1912
  }
1918
1913
  },
@@ -1975,7 +1970,7 @@
1975
1970
  md: 3
1976
1971
  }, /*#__PURE__*/React__default["default"].createElement(material.FormControlLabel, {
1977
1972
  control: /*#__PURE__*/React__default["default"].createElement(material.Checkbox, {
1978
- checked: watch('levelInfoMode') === 'BETW_SFC',
1973
+ checked: levelInfoMode === 'BETW_SFC',
1979
1974
  onChange: function onChange() {
1980
1975
  getValues('level.unit') && trigger('level.unit');
1981
1976
  setValue('levelInfoMode', getValues('levelInfoMode') === 'BETW' ? 'BETW_SFC' : 'BETW', {
@@ -1988,7 +1983,7 @@
1988
1983
  }),
1989
1984
  "data-testid": "levels-SFC",
1990
1985
  label: "SFC"
1991
- })), watch('levelInfoMode') !== 'BETW_SFC' && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
1986
+ })), levelInfoMode !== 'BETW_SFC' && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
1992
1987
  item: true,
1993
1988
  xs: 4,
1994
1989
  md: 3
@@ -2057,9 +2052,9 @@
2057
2052
  value: "ABV",
2058
2053
  label: "Above",
2059
2054
  disabled: isDisabled,
2060
- checked: watch('levelInfoMode') === 'ABV' || watch('levelInfoMode') === 'TOPS_ABV',
2055
+ checked: levelInfoMode === 'ABV' || levelInfoMode === 'TOPS_ABV',
2061
2056
  "data-testid": "levels-ABV"
2062
- }), watch('levelInfoMode') === 'ABV' || watch('levelInfoMode') === 'TOPS_ABV' ? /*#__PURE__*/React__default["default"].createElement(material.Grid, {
2057
+ }), levelInfoMode === 'ABV' || levelInfoMode === 'TOPS_ABV' ? /*#__PURE__*/React__default["default"].createElement(material.Grid, {
2063
2058
  item: true,
2064
2059
  xs: 12,
2065
2060
  container: true,
@@ -2072,7 +2067,7 @@
2072
2067
  md: 3
2073
2068
  }, /*#__PURE__*/React__default["default"].createElement(material.FormControlLabel, {
2074
2069
  control: /*#__PURE__*/React__default["default"].createElement(material.Checkbox, {
2075
- checked: watch('levelInfoMode') === 'TOPS_ABV',
2070
+ checked: levelInfoMode === 'TOPS_ABV',
2076
2071
  onChange: function onChange() {
2077
2072
  setValue('levelInfoMode', getValues('levelInfoMode') === 'ABV' ? 'TOPS_ABV' : 'ABV', {
2078
2073
  shouldDirty: true
@@ -2285,19 +2280,6 @@
2285
2280
  setValue('movementType', null);
2286
2281
  }
2287
2282
 
2288
- if (!isSigmet) {
2289
- if (getValues('phenomenon') !== 'SFC_VIS') {
2290
- setValue('visibilityValue', null);
2291
- setValue('visibilityCause', null);
2292
- }
2293
-
2294
- if (getValues('phenomenon') !== 'SFC_WIND') {
2295
- setValue('windDirection', null);
2296
- setValue('windUnit', null);
2297
- setValue('windSpeed', null);
2298
- }
2299
- }
2300
-
2301
2283
  _onChange();
2302
2284
 
2303
2285
  return trigger(__spreadArray(__spreadArray([], __read(getValues('validDateStart') ? ['validDateStart'] : [])), __read(getValues('validDateEnd') ? ['validDateEnd'] : [])));
@@ -2467,7 +2449,8 @@
2467
2449
  watch = _e.watch,
2468
2450
  getValues = _e.getValues,
2469
2451
  trigger = _e.trigger,
2470
- errors = _e.formState.errors;
2452
+ errors = _e.formState.errors,
2453
+ unregister = _e.unregister;
2471
2454
 
2472
2455
  var _f = shared.useDraftFormHelpers(),
2473
2456
  isRequired = _f.isRequired,
@@ -2479,6 +2462,18 @@
2479
2462
  var selectedFIR = watch('locationIndicatorATSR'); // Get allowed movement units based on selected FIR - if no FIR selected, allow all units
2480
2463
 
2481
2464
  var allowedMovementUnitsForFir = getAllowedUnits(selectedFIR, allowedUnits, 'movement_unit', MovementUnit);
2465
+ React__default["default"].useEffect(function () {
2466
+ if (movementType !== 'MOVEMENT') {
2467
+ unregister('movementDirection');
2468
+ unregister('movementSpeed');
2469
+ unregister('movementUnit');
2470
+ }
2471
+
2472
+ if (movementType !== 'FORECAST_POSITION') {
2473
+ unregister('endGeometry');
2474
+ unregister('endGeometryIntersect');
2475
+ }
2476
+ }, [movementType, unregister]);
2482
2477
  return /*#__PURE__*/React__default["default"].createElement(ProductFormFieldLayout, {
2483
2478
  title: "Progress",
2484
2479
  sx: styles$2.containerItem
@@ -3304,13 +3299,20 @@
3304
3299
  watch = _c.watch,
3305
3300
  setValue = _c.setValue,
3306
3301
  trigger = _c.trigger,
3307
- getValues = _c.getValues;
3302
+ getValues = _c.getValues,
3303
+ unregister = _c.unregister;
3308
3304
 
3309
3305
  var isRequired = shared.useDraftFormHelpers().isRequired;
3310
3306
  var allowedUnits = useProductSettings(airmetConfig).allowedUnits;
3311
- var selectedFIR = watch('locationIndicatorATSR'); // Get allowed cloud level units based on selected FIR - if no FIR selected, allow all default units
3307
+ var selectedFIR = watch('locationIndicatorATSR');
3308
+ var cloudLevelInfoMode = watch('cloudLevelInfoMode'); // Get allowed cloud level units based on selected FIR - if no FIR selected, allow all default units
3312
3309
 
3313
3310
  var allowedCloudLevelUnitsForFir = getAllowedUnits(selectedFIR, allowedUnits, 'cloud_level_unit', CloudLevelUnits);
3311
+ React__default["default"].useEffect(function () {
3312
+ if (cloudLevelInfoMode === 'BETW_SFC' || cloudLevelInfoMode === 'BETW_SFC_ABV') {
3313
+ unregister('cloudLowerLevel');
3314
+ }
3315
+ }, [cloudLevelInfoMode, unregister]);
3314
3316
  return /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3315
3317
  item: true,
3316
3318
  container: true,
@@ -3342,12 +3344,12 @@
3342
3344
  }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3343
3345
  item: true,
3344
3346
  xs: 4
3345
- }, (!isReadOnly || watch('cloudLevelInfoMode') === 'BETW_ABV' || watch('cloudLevelInfoMode') === 'BETW_SFC_ABV') && /*#__PURE__*/React__default["default"].createElement(formFields.ReactHookFormFormControl, {
3347
+ }, (!isReadOnly || cloudLevelInfoMode === 'BETW_ABV' || cloudLevelInfoMode === 'BETW_SFC_ABV') && /*#__PURE__*/React__default["default"].createElement(formFields.ReactHookFormFormControl, {
3346
3348
  disabled: isDisabled,
3347
3349
  isReadOnly: isReadOnly
3348
3350
  }, /*#__PURE__*/React__default["default"].createElement(material.FormControlLabel, {
3349
3351
  control: /*#__PURE__*/React__default["default"].createElement(material.Checkbox, {
3350
- checked: watch('cloudLevelInfoMode') === 'BETW_ABV' || watch('cloudLevelInfoMode') === 'BETW_SFC_ABV',
3352
+ checked: cloudLevelInfoMode === 'BETW_ABV' || cloudLevelInfoMode === 'BETW_SFC_ABV',
3351
3353
  onChange: function onChange() {
3352
3354
  switch (getValues('cloudLevelInfoMode')) {
3353
3355
  case 'BETW':
@@ -3453,12 +3455,12 @@
3453
3455
  }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3454
3456
  item: true,
3455
3457
  xs: 4
3456
- }, (!isReadOnly || watch('cloudLevelInfoMode') === 'BETW_SFC' || watch('cloudLevelInfoMode') === 'BETW_SFC_ABV') && /*#__PURE__*/React__default["default"].createElement(formFields.ReactHookFormFormControl, {
3458
+ }, (!isReadOnly || cloudLevelInfoMode === 'BETW_SFC' || cloudLevelInfoMode === 'BETW_SFC_ABV') && /*#__PURE__*/React__default["default"].createElement(formFields.ReactHookFormFormControl, {
3457
3459
  disabled: isDisabled,
3458
3460
  isReadOnly: isReadOnly
3459
3461
  }, /*#__PURE__*/React__default["default"].createElement(material.FormControlLabel, {
3460
3462
  control: /*#__PURE__*/React__default["default"].createElement(material.Checkbox, {
3461
- checked: watch('cloudLevelInfoMode') === 'BETW_SFC' || watch('cloudLevelInfoMode') === 'BETW_SFC_ABV',
3463
+ checked: cloudLevelInfoMode === 'BETW_SFC' || cloudLevelInfoMode === 'BETW_SFC_ABV',
3462
3464
  onChange: function onChange() {
3463
3465
  switch (getValues('cloudLevelInfoMode')) {
3464
3466
  case 'BETW':
@@ -3492,7 +3494,7 @@
3492
3494
  }),
3493
3495
  "data-testid": "cloudLevels-SFC",
3494
3496
  label: "SFC"
3495
- }))), watch('cloudLevelInfoMode') !== 'BETW_SFC' && watch('cloudLevelInfoMode') !== 'BETW_SFC_ABV' && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3497
+ }))), cloudLevelInfoMode !== 'BETW_SFC' && cloudLevelInfoMode !== 'BETW_SFC_ABV' && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3496
3498
  item: true,
3497
3499
  xs: 3
3498
3500
  }, /*#__PURE__*/React__default["default"].createElement(formFields.ReactHookFormSelect, {
@@ -4002,6 +4004,23 @@
4002
4004
  }, children));
4003
4005
  };
4004
4006
 
4007
+ var useConditionalFields$1 = function useConditionalFields() {
4008
+ var _a = reactHookForm.useFormContext(),
4009
+ watch = _a.watch,
4010
+ unregister = _a.unregister; // phenomenon: VA_CLD
4011
+
4012
+
4013
+ var hasVolcanicAshes = watch('phenomenon') === 'VA_CLD';
4014
+ React__default["default"].useEffect(function () {
4015
+ if (!hasVolcanicAshes) {
4016
+ unregister(['vaSigmetVolcanoName', 'vaSigmetVolcanoCoordinates.latitude', 'vaSigmetVolcanoCoordinates.longitude']);
4017
+ }
4018
+ }, [hasVolcanicAshes, unregister]);
4019
+ return {
4020
+ hasVolcanicAshes: hasVolcanicAshes
4021
+ };
4022
+ };
4023
+
4005
4024
  var SigmetForm = function SigmetForm(_a) {
4006
4025
  var mode = _a.mode,
4007
4026
  _b = _a.isCancelSigmet,
@@ -4095,6 +4114,7 @@
4095
4114
  setIsDisabled(isInDrawMode);
4096
4115
  }
4097
4116
  }, [drawMode.start, drawMode.end, isReadOnly, isDisabled]);
4117
+ var hasVolcanicAshes = useConditionalFields$1().hasVolcanicAshes;
4098
4118
 
4099
4119
  var renderForm = function renderForm() {
4100
4120
  return /*#__PURE__*/React__default["default"].createElement(material.Grid, {
@@ -4114,7 +4134,7 @@
4114
4134
  isReadOnly: isReadOnly,
4115
4135
  helperText: helperText,
4116
4136
  onChange: onChangeForm
4117
- }), !isCancelSigmet && watch('phenomenon') === 'VA_CLD' && /*#__PURE__*/React__default["default"].createElement(VolcanicFields, {
4137
+ }), !isCancelSigmet && hasVolcanicAshes && /*#__PURE__*/React__default["default"].createElement(VolcanicFields, {
4118
4138
  isDisabled: isDisabled,
4119
4139
  isReadOnly: isReadOnly,
4120
4140
  helperText: helperText
@@ -4211,6 +4231,48 @@
4211
4231
  }, renderForm()));
4212
4232
  };
4213
4233
 
4234
+ var useConditionalFields = function useConditionalFields() {
4235
+ var _a = reactHookForm.useFormContext(),
4236
+ watch = _a.watch,
4237
+ unregister = _a.unregister; // phenomenon: SFC_VIS
4238
+
4239
+
4240
+ var phenomenon = watch('phenomenon');
4241
+ var hasSurfaceVisiblity = phenomenon === 'SFC_VIS';
4242
+ React__default["default"].useEffect(function () {
4243
+ if (!hasSurfaceVisiblity) {
4244
+ unregister(['visibilityValue', 'visibilityCause']);
4245
+ }
4246
+ }, [hasSurfaceVisiblity, unregister]); // phenomenon: SFC_WIND
4247
+
4248
+ var hasSurfaceWind = watch('phenomenon') === 'SFC_WIND';
4249
+ React__default["default"].useEffect(function () {
4250
+ if (!hasSurfaceWind) {
4251
+ unregister(['windDirection', 'windUnit', 'windSpeed']);
4252
+ }
4253
+ }, [hasSurfaceWind, unregister]); // phenomenon: SFC_WIND, SFC_VIS, BKN_CLD, OVC_CLD
4254
+
4255
+ var hasLevels = phenomenon !== 'SFC_WIND' && phenomenon !== 'SFC_VIS' && phenomenon !== 'BKN_CLD' && phenomenon !== 'OVC_CLD';
4256
+ React__default["default"].useEffect(function () {
4257
+ if (!hasLevels) {
4258
+ unregister(['levelInfoMode', 'level', 'lowerLevel']);
4259
+ }
4260
+ }, [hasLevels, unregister]); // phenomenon: BKN_CLD
4261
+
4262
+ var hasCloudLevels = phenomenon === 'BKN_CLD' || phenomenon === 'OVC_CLD';
4263
+ React__default["default"].useEffect(function () {
4264
+ if (!hasCloudLevels) {
4265
+ unregister(['cloudLevelInfoMode', 'cloudLevel', 'cloudLowerLevel']);
4266
+ }
4267
+ }, [hasCloudLevels, unregister]);
4268
+ return {
4269
+ hasSurfaceVisiblity: hasSurfaceVisiblity,
4270
+ hasSurfaceWind: hasSurfaceWind,
4271
+ hasLevels: hasLevels,
4272
+ hasCloudLevels: hasCloudLevels
4273
+ };
4274
+ };
4275
+
4214
4276
  var AirmetForm = function AirmetForm(_a) {
4215
4277
  var mode = _a.mode,
4216
4278
  _b = _a.isCancelAirmet,
@@ -4228,8 +4290,6 @@
4228
4290
  setValue = _f.setValue,
4229
4291
  handleSubmit = _f.handleSubmit;
4230
4292
 
4231
- var phenomenon = watch('phenomenon');
4232
-
4233
4293
  var _g = __read(React__default["default"].useState(mode === 'view'), 2),
4234
4294
  isDisabled = _g[0],
4235
4295
  setIsDisabled = _g[1];
@@ -4285,6 +4345,12 @@
4285
4345
  }
4286
4346
  }, [drawMode.start, isReadOnly, isDisabled]);
4287
4347
 
4348
+ var _k = useConditionalFields(),
4349
+ hasSurfaceVisiblity = _k.hasSurfaceVisiblity,
4350
+ hasSurfaceWind = _k.hasSurfaceWind,
4351
+ hasLevels = _k.hasLevels,
4352
+ hasCloudLevels = _k.hasCloudLevels;
4353
+
4288
4354
  var renderForm = function renderForm() {
4289
4355
  return /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4290
4356
  container: true,
@@ -4295,11 +4361,11 @@
4295
4361
  isDisabled: isDisabled,
4296
4362
  isReadOnly: isReadOnly,
4297
4363
  onChange: onChangeForm
4298
- }), !isCancelAirmet && phenomenon === 'SFC_VIS' && /*#__PURE__*/React__default["default"].createElement(SurfaceVisibility, {
4364
+ }), !isCancelAirmet && hasSurfaceVisiblity && /*#__PURE__*/React__default["default"].createElement(SurfaceVisibility, {
4299
4365
  isReadOnly: isReadOnly,
4300
4366
  isDisabled: isDisabled,
4301
4367
  onChange: onChangeForm
4302
- }), !isCancelAirmet && phenomenon === 'SFC_WIND' && /*#__PURE__*/React__default["default"].createElement(SurfaceWind, {
4368
+ }), !isCancelAirmet && hasSurfaceWind && /*#__PURE__*/React__default["default"].createElement(SurfaceWind, {
4303
4369
  isReadOnly: isReadOnly,
4304
4370
  isDisabled: isDisabled,
4305
4371
  onChange: onChangeForm
@@ -4332,12 +4398,12 @@
4332
4398
  setDrawModeType: function setDrawModeType(mapDrawMode, StartOrEndDrawing) {
4333
4399
  _setDrawModeType(mapDrawMode, StartOrEndDrawing, updateStartDrawing);
4334
4400
  }
4335
- }), !isCancelAirmet && phenomenon !== 'SFC_WIND' && phenomenon !== 'SFC_VIS' && phenomenon !== 'BKN_CLD' && phenomenon !== 'OVC_CLD' && /*#__PURE__*/React__default["default"].createElement(Levels, {
4401
+ }), !isCancelAirmet && hasLevels && /*#__PURE__*/React__default["default"].createElement(Levels, {
4336
4402
  isDisabled: isDisabled,
4337
4403
  isReadOnly: isReadOnly,
4338
4404
  onChange: onChangeForm,
4339
4405
  productType: "airmet"
4340
- }), !isCancelAirmet && (phenomenon === 'BKN_CLD' || phenomenon === 'OVC_CLD') && /*#__PURE__*/React__default["default"].createElement(CloudLevels, {
4406
+ }), !isCancelAirmet && hasCloudLevels && /*#__PURE__*/React__default["default"].createElement(CloudLevels, {
4341
4407
  isDisabled: isDisabled,
4342
4408
  isReadOnly: isReadOnly,
4343
4409
  onChange: onChangeForm
@@ -5007,9 +5073,13 @@
5007
5073
  });
5008
5074
  };
5009
5075
 
5010
- var onToggleDialog = function onToggleDialog() {
5076
+ var onToggleDialog = function onToggleDialog(shouldRefreshList) {
5077
+ if (shouldRefreshList === void 0) {
5078
+ shouldRefreshList = true;
5079
+ }
5080
+
5011
5081
  setLoader(false);
5012
- toggleDialogStatus();
5082
+ toggleDialogStatus(shouldRefreshList);
5013
5083
  };
5014
5084
 
5015
5085
  var showConfirmDialog = function showConfirmDialog(action) {
@@ -5029,7 +5099,7 @@
5029
5099
  switch (action) {
5030
5100
  case 'CLOSED':
5031
5101
  if (mode === 'view' || !isDirty) {
5032
- onToggleDialog();
5102
+ onToggleDialog(false);
5033
5103
  } else {
5034
5104
  toggleIsDraft(true);
5035
5105
  showConfirmDialog(action).then(function () {
@@ -5039,7 +5109,7 @@
5039
5109
  })["catch"](function (reason) {
5040
5110
  if (reason === 'CANCELLED') {
5041
5111
  // close without save
5042
- onToggleDialog();
5112
+ onToggleDialog(false);
5043
5113
  }
5044
5114
  });
5045
5115
  }
@@ -5061,7 +5131,7 @@
5061
5131
  showConfirmDialog(action).then(function () {
5062
5132
  // If we're discarding a new SIGMET/AIRMET - just close the dialog
5063
5133
  if (mode === 'new') {
5064
- onToggleDialog();
5134
+ onToggleDialog(false);
5065
5135
  } else {
5066
5136
  // If we're discarding an existing SIGMET/AIRMET - make call to BE
5067
5137
  postProduct(product, action);
@@ -5168,7 +5238,7 @@
5168
5238
  return /*#__PURE__*/React__namespace.createElement(formFields.ReactHookFormProvider, {
5169
5239
  options: __assign(__assign({}, formFields.defaultFormOptions), {
5170
5240
  defaultValues: product,
5171
- shouldUnregister: true
5241
+ values: product
5172
5242
  })
5173
5243
  }, /*#__PURE__*/React__namespace.createElement(shared.ConfirmationServiceProvider, null, /*#__PURE__*/React__namespace.createElement(ProductFormDialogContent, {
5174
5244
  isOpen: isOpen,
@@ -5221,9 +5291,13 @@
5221
5291
 
5222
5292
  }, [selectedProduct]);
5223
5293
 
5224
- var toggleDialogOpen = function toggleDialogOpen() {
5225
- // Refresh list on closing dialog
5226
- if (isFormDialogOpen === true) getNewProductList();
5294
+ var toggleDialogOpen = function toggleDialogOpen(shouldRefreshList) {
5295
+ if (shouldRefreshList === void 0) {
5296
+ shouldRefreshList = true;
5297
+ } // Refresh list on closing dialog
5298
+
5299
+
5300
+ if (isFormDialogOpen === true && shouldRefreshList) getNewProductList();
5227
5301
  setIsFormDialogOpen(!isFormDialogOpen);
5228
5302
  };
5229
5303
 
@@ -4,7 +4,7 @@ export declare const prepareProductValues: (product: Sigmet | Airmet | CancelSig
4
4
  interface ProductFormDialogProps {
5
5
  isOpen: boolean;
6
6
  productType: ProductType;
7
- toggleDialogStatus: () => void;
7
+ toggleDialogStatus: (shouldRefreshList?: boolean) => void;
8
8
  productListItem?: SigmetFromBackend | AirmetFromBackend;
9
9
  }
10
10
  export declare const ProductFormDialog: React.FC<ProductFormDialogProps>;
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { CancelSigmet, Sigmet, FormMode, CancelAirmet, Airmet, ProductType } from '../../types';
3
3
  interface ProductFormDialogContentProps {
4
4
  isOpen: boolean;
5
- toggleDialogStatus: () => void;
5
+ toggleDialogStatus: (shouldRefreshList?: boolean) => void;
6
6
  mode: FormMode;
7
7
  productType: ProductType;
8
8
  productCanBe: string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/sigmet-airmet",
3
- "version": "4.9.1",
3
+ "version": "4.10.0",
4
4
  "description": "GeoWeb Sigmet/Airmet library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -14,12 +14,12 @@
14
14
  "react": "^17.0.2",
15
15
  "react-redux": "^8.0.4",
16
16
  "@mui/material": "^5.10.8",
17
- "@opengeoweb/shared": "4.9.1",
18
- "@opengeoweb/theme": "4.9.1",
17
+ "@opengeoweb/shared": "4.10.0",
18
+ "@opengeoweb/theme": "4.10.0",
19
19
  "react-draggable": "^4.4.5",
20
20
  "re-resizable": "^6.9.0",
21
21
  "@redux-eggs/core": "^2.2.0",
22
- "@opengeoweb/form-fields": "4.9.1",
22
+ "@opengeoweb/form-fields": "4.10.0",
23
23
  "react-hook-form": "^7.41.5",
24
24
  "moment": "^2.29.0",
25
25
  "moment-timezone": "^0.5.31",
@@ -27,16 +27,16 @@
27
27
  "lodash": "^4.17.20",
28
28
  "axios": "^0.25.0",
29
29
  "date-fns": "^2.29.3",
30
- "@opengeoweb/core": "4.9.1",
31
- "@opengeoweb/webmap": "4.9.1",
30
+ "@opengeoweb/core": "4.10.0",
31
+ "@opengeoweb/webmap": "4.10.0",
32
32
  "throttle-debounce": "^3.0.1",
33
33
  "proj4": "^2.6.2",
34
- "@opengeoweb/api": "4.9.1",
34
+ "@opengeoweb/api": "4.10.0",
35
35
  "react-intl": "^5.17.5",
36
36
  "react-sortablejs": "^6.1.4",
37
37
  "sortablejs": "^1.15.0",
38
- "react-window": "^1.8.7",
39
38
  "immer": "^9.0.15",
39
+ "react-window": "^1.8.7",
40
40
  "@reduxjs/toolkit": "^1.8.3",
41
41
  "lodash.clonedeep": "^4.5.0",
42
42
  "@turf/turf": "^5.1.6",