@sumaris-net/ngx-components 18.14.16 → 18.14.18

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/doc/changelog.md CHANGED
@@ -3,7 +3,7 @@
3
3
  ## 0.1.7
4
4
 
5
5
  - enh: Menu: Allow dynamic insertion, using a new config options (see 'CORE_CONFIG_OPTIONS.MENU_ITEMS')
6
- * Example:
6
+ * Example:
7
7
  ```js
8
8
  const options = [
9
9
  // Insert before'MENU.HOME'
@@ -34,7 +34,7 @@
34
34
  - enh: CSS: new class '.visible-dirty' (e.g. `<ion-icon name="star" class="visible-dirty"></ion-icon>` in the `actions` column)
35
35
  - enh: ValidatorService: add function getI18nErrors(control)
36
36
  - enh: AppTable: add outputs 'onDirty', 'onError'
37
- - enh: AppTable:
37
+ - enh: AppTable:
38
38
 
39
39
  ## 0.4.1
40
40
 
@@ -65,12 +65,12 @@
65
65
 
66
66
  ## 0.9.0
67
67
 
68
- - enh: Autocomplete field: add config option `suggestLengthThreshold` to suggest after typing more than x characters
69
- - enh: Autocomplete field: add config option `debounceTime`
68
+ - enh: Autocomplete field: add config option `suggestLengthThreshold` to suggest after typing more than x characters
69
+ - enh: Autocomplete field: add config option `debounceTime`
70
70
 
71
71
  ## 0.10.0
72
72
 
73
- - enh: Add EntityClasses class: use it to get an entity class by name (need to use @EntityClass decorator on the class)
73
+ - enh: Add EntityClasses class: use it to get an entity class by name (need to use @EntityClass decorator on the class)
74
74
 
75
75
  ## 0.11.4
76
76
 
@@ -103,7 +103,7 @@
103
103
  - fix: remove functions `isArray()` (please use `Array.isArray()` instead)
104
104
  - enh: Add `AccountService.onChange: Subject` to listen account settings changes
105
105
  - fix: Account model: use minify option to serialize as a POD object
106
- - fix: AccountService: change some internal function's visibility, to protected
106
+ - fix: AccountService: change some internal function's visibility, to protected
107
107
  - fix: InMemoryService: fix equals() default implementation (avoid infinite loop)
108
108
  - fix: SCSS: Set mat-select-column to width: 50px, to make it compatible with sticky <mat-table>
109
109
  - enh: Add ComponentDirtyGuard to public API
@@ -111,22 +111,22 @@
111
111
  ## 0.20.0
112
112
 
113
113
  - fix: AppEntityEditor: remove confirmation before backClick (use ComponentDirtyGuard instead)
114
- - fix: AppEntityEditor: cancel() will not ask a confirmation, because called by dirty guard).
114
+ - fix: AppEntityEditor: cancel() will not ask a confirmation, because called by dirty guard).
115
115
 
116
116
  ## 0.23.0
117
+
117
118
  - fix: MatAutocompleteField: when escape event, close the panel and stop event's propagation
118
119
  - fix: AppFormButtonsBar: when escape event, make sure preventDefault!=false before emit a back event
119
120
 
120
121
  ## 0.24.0
121
122
 
122
- - fix: AppInstallUpgradeCard: use Cordova Downloader plugin, to download APK file correctly
123
+ - fix: AppInstallUpgradeCard: use Cordova Downloader plugin, to download APK file correctly
123
124
 
124
125
  ## 0.25.0
125
126
 
126
127
  - enh: Add FormErrorAdapter service, configurable using an injection token APP_FORM_ERROR_I18N_KEYS
127
128
  - enh: Add pipe 'translateFormError' to translate form error in HTML template
128
129
 
129
-
130
130
  ## 0.26.0
131
131
 
132
132
  - enh: Rename FormErrorAdapter into FormErrorTranslator
@@ -143,7 +143,7 @@
143
143
 
144
144
  ## 1.0.0
145
145
 
146
- - enh: Store local settings remotely
146
+ - enh: Store local settings remotely
147
147
  - fix: Fix suggestFromArray when items is null
148
148
  - fix: Fix parsing error, in GraphQL service (e.g error from Oracle database)
149
149
 
@@ -182,6 +182,7 @@ fix: MatChipsField: Fix 'focusOut' then 'focusIn' behavior
182
182
  fix: MatAutocompleteField: Fix 'focusOut' then 'focusIn' behavior
183
183
 
184
184
  # 1.6.18
185
+
185
186
  fix: MatDateTimeField: Fix when no Keyboard plugin
186
187
 
187
188
  # 1.7.0
@@ -223,24 +224,30 @@ enh: Autocomplete: Move result count in footer
223
224
 
224
225
  # 1.12.4
225
226
 
226
- fix: AppTable: Avoid deleting a row twice, when deleting an invalid row BUT not editing
227
+ fix: AppTable: Avoid deleting a row twice, when deleting an invalid row BUT not editing
227
228
 
228
229
  # 1.12.13
230
+
229
231
  enh: Add pipes formGet, formGetControl and formGetArray, to get a form controls
230
232
  enh: Add pipe strIncludes
231
233
 
232
234
  # 1.13.0
235
+
233
236
  enh: Add utility class SharedAsyncValidators
234
237
  enh: Add SharedAsyncValidators.registerAsyncValidator() to add long during validation job
235
238
  fix: BaseEntityService: listenChanges() now return an empty observable, when not implemented, instead of error
236
239
  fix: InstallUpgradeCard: do not show install link, on Windows touch screen
237
240
 
238
241
  # 1.14.0
242
+
239
243
  enh: Platform: auto reload web browser's page, if a new version is detected at startup
244
+
240
245
  # 1.14.2
241
- enh: Add DateUtils.resetTime(date, tz?: string)
246
+
247
+ enh: Add DateUtils.resetTime(date, tz?: string)
242
248
 
243
249
  # 1.15.0
250
+
244
251
  fix: MateDateField: make sure to display errors
245
252
  fix: MateDateField: Allow to show matPrefix (e.g. icon)
246
253
  fix: MateDateField: Better management of mat-error
@@ -248,84 +255,104 @@ fix: MateDateTimeField: Add error for dateIsBefore
248
255
  enh: SharedValidators: add new validator 'dateIsBefore'
249
256
 
250
257
  # 1.15.1
258
+
251
259
  fix: MateDateField: Add a timezone to serialize/deserialize date value
252
260
 
253
261
  # 1.15.4
262
+
254
263
  enh: MateDateField: Add an input 'datePickerFiler' to filter dates in picker
255
264
  enh: MateDateTimeField: Add an input 'datePickerFiler' to filter dates in picker
256
265
 
257
266
  # 1.15.9
267
+
258
268
  fix: Editor listenChanges() should not update the cache, but call reload() when changes detected.
259
- This will allow fetching partial graph in subscriptions
269
+ This will allow fetching partial graph in subscriptions
260
270
  enh: Editor: show a toast when remote changes are detected
261
271
  fix: Cache: minor fix
262
272
 
263
273
  # 1.15.13
274
+
264
275
  fix: File upload component: fix file/event management
265
276
  enh: Add new pipe 'formGetGroup:<name>'
266
277
 
267
278
  # 1.16.0
279
+
268
280
  enh: Refactor JobUtils functions: 'progression' is now optional, and hold by options
269
281
 
270
282
  # 1.17.0
283
+
271
284
  fix: GraphQL: set NetworkStatus.error on error object in order to throw corresponding exception
272
285
 
273
286
  # 1.17.1
287
+
274
288
  fix: Hotkeys: Prevent global hotkeys when popover component exists
275
289
 
276
290
  # 1.18.0
291
+
277
292
  enh: Autocomplete field: Add search bar on mobile
278
293
  fix: Autocomplete field: Fix style when multiple=true
279
294
  fix: Autocomplete field: Fix default displayWith when multiple=true (manage array value)
280
- fix: Exclude Windows from the platform mobile detection
295
+ fix: Exclude Windows from the platform mobile detection
281
296
 
282
297
  # 1.18.4
298
+
283
299
  fix: Autocomplete: fix search in mobile searchbar
284
300
  enh: Material field components: allow to set 'required' as empty tag, and not only '[required]=true'
285
301
 
286
302
  # 1.18.4
303
+
287
304
  fix: Autocomplete: fix panel width, on small screens
288
305
 
289
306
  # 1.18.7
290
- fix: fix DateUtils.min() and DateUtils.max()
307
+
308
+ fix: fix DateUtils.min() and DateUtils.max()
291
309
 
292
310
  # 1.19.0
311
+
293
312
  enh: Add a MessageModal, to compose message to users (internal or email messages)
294
313
  fix: MatDateField: if not required, manually set a date will not apply the value to formControl
295
314
 
296
315
  # 1.19.1
316
+
297
317
  fix: Platform detection failed (infinite loop) on MacBook
298
318
 
299
319
  # 1.19.2
320
+
300
321
  fix: Platform detection cache
301
322
 
302
323
  # 1.19.3
324
+
303
325
  enh: AppForm now wait form not pending, before emitting onSubmit event
304
326
 
305
327
  # 1.19.6
328
+
306
329
  fix: Fix toolbar back button
307
330
  fix: Autocomplete: Fix multiple values (displayValue was no shown)
308
331
  fix: Autocomplete: avoid to many call to suggest, on mobile
309
332
  fix: Autocomplete: use mat-option for searchbar, to have selected option is visible
310
333
  fix: Install APK: make sure to have '.apk' at end of filename
311
334
  fix: Auth modal: keep modal into loading, when waiting server response
312
- enh: Create a specific card for offline mode update
335
+ enh: Create a specific card for offline mode update
313
336
  fix: Entity storage: do NOT set skipIfPristine to false, when storage keep non local entities (e.g. OperationVO)
314
337
  enh: Entity storage: persist() has a new option skipIfPristine, to be able to force all data to be stored, even if not dirty
315
338
 
316
339
  # 1.19.7
340
+
317
341
  enh: Add pipe 'formGetValue' that will listen value changes (from a form or a control)
318
342
 
319
343
  # 1.19.16
344
+
320
345
  fix: Date and Date Short field: optimize <mat-error> with a switch/case
321
346
  fix: Lat/Long pipes: remove provider in root (not need on a pipe)
322
- fix: SharedValidators: rename 'double' validator into 'decimal'. Now return an error 'decimal' when opts.maxDecimals is nil
347
+ fix: SharedValidators: rename 'double' validator into 'decimal'. Now return an error 'decimal' when opts.maxDecimals is nil
323
348
 
324
349
  # 1.19.18
350
+
325
351
  fix: Add a workaround to patch <html> class to 'plt-desktop', on Windows touch screen (fix sumaris-app issue #346)
326
352
  enh: EntitiesStorage: detect platform pause, to force saving the storage
327
353
 
328
354
  # 1.19.23
355
+
329
356
  fix: Menu: avoid to many call of onLogin() function (add a distinctUntilChanged() filter)
330
357
  fix: MateDateTime: set required validator using template, and no more by overriding formControl.validator (allow to change the required value)
331
358
  fix: EntityEditor: wait end of saving, in waitIdle() function
@@ -334,16 +361,20 @@ fix: EntityEditor.load(): rename the unused options 'updateTabAndRoute' into 'up
334
361
  fix: EntityEditor.load(): allow to reset to the first tab (e.g. when load another entity into an existing editor)
335
362
 
336
363
  # 1.19.23
364
+
337
365
  fix: Editor: allow to skip page history (computePageHistory can return 'undefined')
338
366
 
339
367
  # 1.19.25
368
+
340
369
  fix: Home: translate 'Loading...' message
341
370
 
342
371
  # 1.19.28
372
+
343
373
  enh: Add function escapeRegExp() to escape all special regexp characters
344
374
 
345
375
  # 1.19.30
346
- enh: Add argument to pipe 'formGetValue' to listen status change (e.g. to force update, when emitEvent: false)
376
+
377
+ enh: Add argument to pipe 'formGetValue' to listen status change (e.g. to force update, when emitEvent: false)
347
378
 
348
379
  # 1.20.0
349
380
 
@@ -352,367 +383,470 @@ enh: Menu: rename MenuService.menuVisible$ into MenuService.splitPaneWhen
352
383
 
353
384
  # 1.20.2
354
385
 
355
- enh: Material fields: add @Input() appearance
386
+ enh: Material fields: add @Input() appearance
356
387
 
357
388
  # 1.20.3
358
- enh: css-variables-to-root-mobile() will expose variables '--mat-tab-link-height' and '--mat-tab-bar-height'
389
+
390
+ enh: css-variables-to-root-mobile() will expose variables '--mat-tab-link-height' and '--mat-tab-bar-height'
359
391
 
360
392
  # 1.20.4
393
+
361
394
  enh: Add helper class CsvUtils
362
395
  enh: Add pipe formatProperty
363
396
  enh: Add directive [appAutoTitle] for <ion-label> or <mat-label>
364
397
 
365
398
  # 1.20.5
366
- enh: formatProperty pipe: when type is 'boolean', display a translated Yes/No
399
+
400
+ enh: formatProperty pipe: when type is 'boolean', display a translated Yes/No
367
401
 
368
402
  # 1.20.7
403
+
369
404
  enh: add function FileUtils.writeTextToFile()
370
405
 
371
406
  # 1.20.11
407
+
372
408
  enh: add function FileUtils.downloadUri()
373
409
 
374
410
  # 1.20.13
411
+
375
412
  fix: fix SharedValidators.decimal() when maxDecimals = 3 (cached regexp was wrong)
376
413
 
377
414
  # 1.20.14
415
+
378
416
  fix: Menu: Force menu update when config changed
379
417
 
380
418
  # 1.20.16
419
+
381
420
  fix: MatChipsField: fix chip height
382
421
 
383
422
  # 1.20.17
423
+
384
424
  fix: Add module ResizableModule, for MatTable column resize
385
425
 
386
426
  # 1.20.18
387
- fix: PlatformService.download() now useFileUtils.download(), that create a temp download (not need browser permission to open popup)
427
+
428
+ fix: PlatformService.download() now useFileUtils.download(), that create a temp download (not need browser permission to open popup)
388
429
 
389
430
  # 1.20.19
431
+
390
432
  enh: Add new abstract class AppEntityEditorModal, that can managed many forms and tables
391
433
 
392
434
  # 1.20.20
435
+
393
436
  fix: SCSS: remove `user-select: text !important` applied on body, because of modals ViewEncapsulation.None (e.g. physical gear modal) where Tab label were becomes focusable
394
437
 
395
438
  # 1.20.21
439
+
396
440
  fix: Fix mat latlong field: was broken since v1.19.13
397
441
 
398
442
  # 1.20.21
443
+
399
444
  fix: Fix MatDateField mat-error display (was too large)
400
445
 
401
446
  # 1.20.24
447
+
402
448
  fix: Revert change on LatLongField (SCSS file was removed ??)
403
449
 
404
450
  # 1.20.25
451
+
405
452
  fix: MatBooleanField: set indeterminate=true, when value is null
406
453
 
407
454
  # 1.20.27
408
455
 
409
- fix: Mat***Field: add `@Input() appearance`
456
+ fix: Mat***Field: add `@Input() appearance`
410
457
 
411
458
  # 1.20.30
412
- fix: Add InMemoryDataService.hiddenCount
459
+
460
+ fix: Add InMemoryDataService.hiddenCount
413
461
 
414
462
  # 1.20.33
463
+
415
464
  fix: MatAutocompleteField: reload items when cleaning text, and no suggestLengthThreshold
416
465
 
417
466
  # 1.20.34
418
- fix: AppTable: remove 'opts.skipIfLoading' on delete functions, to use only 'opts.interactive' to force deletion when table is busy.
467
+
468
+ fix: AppTable: remove 'opts.skipIfLoading' on delete functions, to use only 'opts.interactive' to force deletion when table is busy.
419
469
 
420
470
  # 1.21.0
471
+
421
472
  enh: AppForm: use public behavior subjects: readySubject, loadingSubject, errorSubject
422
473
 
423
474
  # 1.22.0
475
+
424
476
  enh: Add social components: UserEventNotification and JobProgression
425
477
 
426
478
  # 1.22.1
479
+
427
480
  enh: Menu: add APP_MENU_OPTIONS token, to configure menu (e.g. show notification icon in the left menu header)
428
481
 
429
482
  # 1.22.9
483
+
430
484
  enh: Remove <app-user-events-table> (move to specific sub projects that use ngx-components)
431
485
 
432
486
  # 1.22.11
487
+
433
488
  enh: Rename <app-user-event-notification-component> into <app-user-event-notification-icon>
434
489
 
435
490
  # 1.22.12
491
+
436
492
  enh: Can mark a Moment without time, allowing empty time field in MatDateTime
437
493
 
438
494
  # 1.23.6
495
+
439
496
  fix: Many fix in table. Upgrade to ngx-material-table 0.12.0
440
497
  enh: Table, Form and Editor: Add a destroySubject
441
498
  enh: Observables functions first***Promise() : add more options (timeout or stop notifier)
442
499
 
443
500
  # 1.23.10
444
- enh: Autocomplete: add a 'title' property on each option, on desktop screen
501
+
502
+ enh: Autocomplete: add a 'title' property on each option, on desktop screen
445
503
 
446
504
  # 1.23.11
505
+
447
506
  fix: Memory Data service: now implement IStartableService
448
507
  enh: StartableService: use a stopSubject, to stop waitFor promise
449
- enh: remove unused class EntitiesService. Use IEntitiesService instead
508
+ enh: remove unused class EntitiesService. Use IEntitiesService instead
450
509
 
451
510
  # 1.23.26
511
+
452
512
  enh: Add new pipe 'arrayJoin'
453
513
  enh: 'arrayPluck' pipe: allow to use string[] for path
454
514
  enh: getPropertyByPath() function now allow to use string[] as path
455
515
 
456
516
  # 1.23.29
457
- enh: FormArrayHelper: add setValue() to resize the FormArray, then set value
517
+
518
+ enh: FormArrayHelper: add setValue() to resize the FormArray, then set value
458
519
 
459
520
  # 1.23.30
460
- fix: InMemoryDataService: do NOT apply default sortReplacement id -> rankOrder
521
+
522
+ fix: InMemoryDataService: do NOT apply default sortReplacement id -> rankOrder
461
523
 
462
524
  # 1.23.31
463
- fix: InMemoryDataService: change 'dirtySubject' as public property
525
+
526
+ fix: InMemoryDataService: change 'dirtySubject' as public property
464
527
 
465
528
  # 1.23.39
529
+
466
530
  enh: Add FormArrayHelper.patchValue() : clear array, then push each value
467
- fix: StartableService: avoid to log error when stopped
531
+ fix: StartableService: avoid to log error when stopped
468
532
 
469
533
  # 1.23.41
470
- enh: AppEditor: Add 'loaded' getter
534
+
535
+ enh: AppEditor: Add 'loaded' getter
471
536
 
472
537
  # 1.23.44
473
- enh: Referential model: add a 'icon' property (IconRef)
538
+
539
+ enh: Referential model: add a 'icon' property (IconRef)
474
540
 
475
541
  # 1.23.46
542
+
476
543
  enh: Add `ColorScale.getValueColor(): Color`
477
- enh: EntityEditorModal: rename input `isNewData` into `isNew`
544
+ enh: EntityEditorModal: rename input `isNewData` into `isNew`
478
545
 
479
546
  # 1.23.51
547
+
480
548
  Observables: function `waitFor()`, `waitForTrue()`, `watForFalse()`, `firstNotNilPromise()`
481
- - fix: Make sure `takeUntil` is always the last operator (avoid memory leak)
482
- - enh: Observables: Allow set option.stopError with custom error message
483
- - enh: Observables: Create the Error outside the observable, to keep the original stack trace readable
549
+
550
+ - fix: Make sure `takeUntil` is always the last operator (avoid memory leak)
551
+ - enh: Observables: Allow set option.stopError with custom error message
552
+ - enh: Observables: Create the Error outside the observable, to keep the original stack trace readable
484
553
 
485
554
  # 1.23.61
555
+
486
556
  - fix: Boolean field: fix button layout
487
557
 
488
558
  # 1.23.65
559
+
489
560
  - enh: Add pipes: isNotNil and isNotNilOrNaN
490
561
 
491
562
  # 1.23.67
492
- - fix: Rename DateFormatPipe into DateFormatService (DateFormatPipe is no more a provider)
493
- - fix: Fix patterns in DateFormatPipe/Service : add a fallback when translate service is not started - fix issue sar-app #28
563
+
564
+ - fix: Rename DateFormatPipe into DateFormatService (DateFormatPipe is no more a provider)
565
+ - fix: Fix patterns in DateFormatPipe/Service : add a fallback when translate service is not started - fix issue sar-app #28
494
566
 
495
567
  # 2.0.0
496
- - enh: Migration to
497
- - Angular 14.2
498
- - Ionic 6.2
499
- - Angular Material Table 0.14.4 (allow to use async validator for rows)
500
- - Apollo 3, graph-ws 5
501
- - enh: Add <app-debug> component
568
+
569
+ - enh: Migration to
570
+ - Angular 14.2
571
+ - Ionic 6.2
572
+ - Angular Material Table 0.14.4 (allow to use async validator for rows)
573
+ - Apollo 3, graph-ws 5
574
+ - enh: Add <app-debug> component
502
575
 
503
576
  # 2.1.0
504
- - enh: Add new class AppFormArray with all functions of FormArrayHelper
505
-
577
+
578
+ - enh: Add new class AppFormArray with all functions of FormArrayHelper
579
+
506
580
  # 2.2.1
507
- - fix: FormArrayHelper and AppFormArray: Apply the parent disabled state, in added controls, when calling resize() or patchValue()
508
- - fix: FormArrayHelper.getOrCreateArray(): Apply the parent form disabled state, in added FormArray
509
- - fix: MatChipsField: fix loading spinner freeze
581
+
582
+ - fix: FormArrayHelper and AppFormArray: Apply the parent disabled state, in added controls, when calling resize() or patchValue()
583
+ - fix: FormArrayHelper.getOrCreateArray(): Apply the parent form disabled state, in added FormArray
584
+ - fix: MatChipsField: fix loading spinner freeze
510
585
 
511
586
  # 2.2.3
587
+
512
588
  - enh: Test Geolocation.getCurrentPosition() in the lat/long field test page
513
589
 
514
590
  # 2.2.4
591
+
515
592
  - fix: Fix DateUtils.isSame(), when first argument is nil, but the second not
516
593
  - enh: AppTable: allow to call deleteSelection with opts (e.g `{interactive: false}`)
517
594
 
518
595
  # 2.2.6
519
- - fix: Refresh menu on any account changes (login changes - eg. when account updated)
596
+
597
+ - fix: Refresh menu on any account changes (login changes - eg. when account updated)
520
598
 
521
599
  # 2.2.8
600
+
522
601
  - fix: Table actions column: add CSS variable to set column width, min-width and max-width
523
602
 
524
603
  # 2.3.7
525
- - fix: Mat form field: use inherit font size (do not force font-size, in the theme)
604
+
605
+ - fix: Mat form field: use inherit font size (do not force font-size, in the theme)
526
606
  - fix: MatDateShort: fix behaviour for Angular 14
527
607
 
528
608
  # 2.4.0
609
+
529
610
  - Breaking change: ProgressBarService and HTTP_INTERCEPTORS no longer provided in SharedModule (see: AppModule)
530
611
  - enh: Make ProgressBarService fully optional (InjectionToken: APP_PROGRESS_BAR_SERVICE)
531
612
  - enh: Settings: the settings object is now stored in json format
532
613
 
533
614
  # 2.4.1
615
+
534
616
  - fix: AppFormArray: do not resize the array when patchValue() receive `undefined` value (e.g. useful when called by parent, recursively, without value)
535
617
  - fix: AppAsyncTable: optimize markAsUntouched()
536
618
 
537
619
  # 2.4.2
538
- - enh: Graphql service: add new token `APP_GRAPHQL_FRAGMENTS` to register fragments, and avoid redeclaration in queries (see https://github.com/apollographql/apollo-client/pull/9764#issuecomment-1329857853)
620
+
621
+ - enh: Graphql service: add new token `APP_GRAPHQL_FRAGMENTS` to register fragments, and avoid redeclaration in queries (
622
+ see https://github.com/apollographql/apollo-client/pull/9764#issuecomment-1329857853)
539
623
 
540
624
  # 2.4.3
625
+
541
626
  - fix: AppFormArray: do not resize the array when patchValue() receive `null` or `undefined` value (same behavior as official `FormArray.patchValue()`)
542
627
 
543
628
  # 2.4.4
629
+
544
630
  - fix: Applying environment defaultLocale, when settings data has no locale (merge some code from lpecquot, that was in a branch)
545
631
 
546
632
  # 2.4.9
633
+
547
634
  - fix: Settings: allow to store settings as string (like < 2.4.0) using an injection token
548
635
 
549
636
  # 2.4.10
637
+
550
638
  - fix: When detecting a app update, stop the check timer to avoid to many toast to be displayed
551
639
 
552
640
  # 2.4.14
641
+
553
642
  - enh: add function `setPropertyByPath()`
554
- - fix: Implement `EntityUtils.getPropertyByPath()` using generic shared function `getPropertyByPath()`
643
+ - fix: Implement `EntityUtils.getPropertyByPath()` using generic shared function `getPropertyByPath()`
555
644
 
556
645
  # 2.4.15
557
- - fix: Fix pipes formGetControl, formGetValue, formGetGroup : when using a path, return nil if control not found, and NOT the form itself
646
+
647
+ - fix: Fix pipes formGetControl, formGetValue, formGetGroup : when using a path, return nil if control not found, and NOT the form itself
558
648
 
559
649
  # 2.4.16
650
+
560
651
  - fix: `SharedModule.forRoot()`: make environment optional, to be defined it in the `app.module.ts` (need by Quadrige App)
561
652
 
562
653
  # 2.4.17
654
+
563
655
  - fix: MatLatLongField: remove strict character regexp, in degrees part, to be able to set only one digit (e.g. `9°`)
564
656
 
565
657
  # 2.4.18
658
+
566
659
  - fix: MatDateShortField: fix control validation, in desktop mode
567
660
 
568
661
  # 2.4.19
662
+
569
663
  - fix: MatAutocompleteField: revert the cdk overlay position, when closing the mat-select panel
570
664
 
571
665
  # 2.4.23
666
+
572
667
  - enh: Add DateUtils.markTime(), to reset the 'no time' marker
573
668
  - enh: Add DateUtilsEntityEditor: simplify updateTabAndRoute()
574
- - enh: Add DateUtilsEntityEditor: updateRoute() now manage queryParams change, before /new to /:id transition
669
+ - enh: Add DateUtilsEntityEditor: updateRoute() now manage queryParams change, before /new to /:id transition
575
670
  - enh: Toolbar: goBack() return a boolean
576
671
 
577
672
  # 2.4.25
673
+
578
674
  - enh: Environment: add a boolean option 'sameUrlPeer', to force network to start on peer at the same URL
579
675
  - enh: EntityEditor: allow to listen changes on local entity
580
676
  - enh: add functions collectByProperty() to split an array in a map of array
581
677
 
582
678
  # 2.4.26
679
+
583
680
  - fix: Rename pipe 'isNotOnField' by 'isOnDesk'
584
681
 
585
682
  # 2.4.28
683
+
586
684
  - enh: TranslateContext: allow to translate many keys (string[])
587
685
  - fix: Force ngx-quicklink to 0.3.0
588
686
 
589
687
  # 2.4.31
688
+
590
689
  - enh: Add JsonUtils.parseFile()
591
690
 
592
691
  # 2.4.33
692
+
593
693
  - enh: Add AppPropertiesForm.length
594
694
 
595
695
  # 2.4.48
696
+
596
697
  - fix: Fix highlight pipe (used by autocomplete field)
597
698
 
598
699
  # 2.4.50
700
+
599
701
  - enh: Add type 'enums' for AppFormField
600
702
 
601
703
  # 2.4.54
704
+
602
705
  - enh: Use NavController by default, instead of Angular router. This will use the default animation style of the OS
603
706
 
604
707
  # 2.4.55
708
+
605
709
  - fix: Editor: Disable animation, when reloading same page after saving
606
710
 
607
711
  # 2.4.58
712
+
608
713
  - enh: Add storage explorer (with log preview)
609
714
  - enh: Add debug service (to send debug data to server)
610
715
  - enh: Add logging service
611
716
 
612
717
  # 2.4.61
718
+
613
719
  - enh: Add logger on network service
614
720
 
615
721
  # 2.4.67
722
+
616
723
  fix: Minor fix (add missing i18n)
617
724
  fix: GeolocationUtils: add many useful functions, and detect Capacitor errors (from message)
618
725
  fix: Fix some issues in storage explorer
619
726
 
620
727
  # 2.4.74
728
+
621
729
  enh: LocalSettingsService: save changes in local storage, when calling setProperty()
622
730
 
623
731
  # 2.4.75
732
+
624
733
  enh: SharedValidator: add a precision validator
625
734
 
626
735
  # 2.4.79
627
- fix: ImageGallery: fix add button icon (center alignement)
628
736
 
737
+ fix: ImageGallery: fix add button icon (center alignement)
629
738
 
630
739
  # 2.4.81
740
+
631
741
  fix: AppToolbar: allow to use ion-segment in app-toolbar
632
742
 
633
743
  # 2.4.82
744
+
634
745
  enh: Migrate to Ionic 7
635
746
  fix: Form field: show the clear button, when clearable=true, on types 'integer', 'double', 'string', 'date' and 'date-time'
636
747
 
637
748
  # 2.4.82
749
+
638
750
  enh: AppEntityEditor: add get/set for autoOpenNextTab
639
751
 
640
752
  # 2.4.87
641
- fix: AppEntityEditor: When reload the editor, force the fetch policy to 'network-only'
753
+
754
+ fix: AppEntityEditor: When reload the editor, force the fetch policy to 'network-only'
642
755
 
643
756
  # 2.4.88
644
- fix: AppInstallUpgradeCard: Installation APK link are not visible - fix issue [sumaris-app#445](https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-app/-/issues/445)
757
+
758
+ fix: AppInstallUpgradeCard: Installation APK link are not visible - fix issue [sumaris-app#445](https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-app/-/issues/445)
645
759
 
646
760
  # 2.4.88
761
+
647
762
  enh: Add protected BaseEntityService.getLoadQueryNames()
648
763
 
649
764
  # 2.4.89
765
+
650
766
  fix: Fix Autocomplete searchbar value trigger, after ionic 7 update
651
767
 
652
768
  # 2.4.90
769
+
653
770
  fix: AppEntityEditor: when catch error in save(), set the selectedTabIndex=0 before calling setError()
654
771
  This will allow subclasses to override the default selectedTabIndex after an error occur, inside the overridden setError()
655
772
 
656
773
  # 2.4.91
657
- enh: functions: allow to use sort(array) without the 'attribute' argument (e.g. allow to sort a string[])
774
+
775
+ enh: functions: allow to use sort(array) without the 'attribute' argument (e.g. allow to sort a string[])
658
776
 
659
777
  # 2.4.95
778
+
660
779
  fix: Platform: avoid error at startup, because of StatusBar in web mode
661
- enh: MatBooleanField: display value when disabled, instead of 'empty'
780
+ enh: MatBooleanField: display value when disabled, instead of 'empty'
662
781
 
663
782
  # 2.4.112
783
+
664
784
  enh: AppBadge: allow to set a text or number content
665
785
 
666
786
  # 2.4.114
787
+
667
788
  enh: Menu: allow to add sub menu item
668
789
 
669
790
  # 2.4.158
791
+
670
792
  enh: Environment: add useHash property to configure Angular router to use hash URL (need by web-ext)
671
793
 
672
794
  # 2.5.0
795
+
673
796
  - enh: Add token APP_USER_SETTINGS_OPTIONS of type UserSettingsOptions to add user properties table in AccountPage
674
797
  - fix: MatBooleanField: in checkbox style, the placeholder can be shown as expected
675
798
 
676
799
  # 2.6.0
800
+
677
801
  - enh: Account: Add User tokens (table and modal)
678
802
 
679
803
  # 2.6.23
804
+
680
805
  - fix: Fix Configuration.getPropertyAsNumbers() when no value (avoid to get an array with an unique NaN value)
681
806
 
682
807
  # 2.6.25
808
+
683
809
  - enh: Upgrade to nodejs 18
684
810
  - fix: Menu: hide spacer divider ion-label (hide the skeleton)
685
811
 
686
812
  # 2.6.28
813
+
687
814
  - fix: ImageGallery: Change image's title background color
688
815
 
689
816
  # 2.6.31
817
+
690
818
  - fix: ImageGallery: Add output event when after editing title
691
819
 
692
820
  # 2.6.32
821
+
693
822
  - fix: AppFormArray: Avoid an infinite loop, when calling resize(0) if options.allowEmptyArray=false
694
823
  - fix: Table, Form, Editor: fix error when markAsLoaded() on closed BehaviorSubject
695
- - fix: Table, Form, Editor: Make sure waitIdle() will stop, when component is destroyed (force default opts)
824
+ - fix: Table, Form, Editor: Make sure waitIdle() will stop, when component is destroyed (force default opts)
696
825
 
697
826
  # 2.6.34
698
- - enh: functions: add a static function `underscoreToChangeCase()`
827
+
828
+ - enh: functions: add a static function `underscoreToChangeCase()`
699
829
 
700
830
  # 2.6.35
831
+
701
832
  - fix: Settings: Add type for property `OfflineFeature.filter`, then use it to in `LocalSettingsService.getOfflineFeatures()`
702
833
 
703
834
  # 2.6.38
835
+
704
836
  - fix: Fix mapGet pipe, when key is zero (0)
705
837
 
706
838
  # 2.6.39
707
- - enh: table: Add an input `style: 'table'|mat-table` into `<app-actions-column>`, to be usable inside a `<table mat-table>` (using `<td>`) or `<mat-table>` (using `<mat-cell>`)
839
+
840
+ - enh: table: Add an input `style: 'table'|mat-table` into `<app-actions-column>`, to be usable inside a `<table mat-table>` (using `<td>`) or `<mat-table>` (using `<mat-cell>`)
708
841
 
709
842
  # 2.8.0
843
+
710
844
  - enh: `IAppForm<T>` : add a type `<T=any>`
711
845
  - enh: `IAppForm` : add optional functions `setValue()`, `patchValue()`, `resetValue()` and `getValue()`
712
846
  - fix: `AppForm` and `AppEditor`: Remove unused and deprecated properties `_loading`, `_$ready`, `_$loading`
713
847
  - fix: `AppForm` : rename `_enable` as `enabled` to avoid confusion with `enable()`
714
848
  - enh: Add abstract class `AppFormContainer` to manage many `IAppForm` - and use it as a super class of `AppEditor`
715
- - enh: Add new pipes for SelectionModel :
849
+ - enh: Add new pipes for SelectionModel :
716
850
  - `isSelected`: e.g. `selection | isSelected: row`,
717
851
  - `isEmptySelection`: e.g. `selection | isEmptySelection`
718
852
  - `isNotEmptySelection`: e.g. `selection | isNotEmptySelection`
@@ -720,19 +854,20 @@ enh: Environment: add useHash property to configure Angular router to use hash U
720
854
  - `isMultipleSelection`: e.g. `selection | isMultipleSelection`,
721
855
  - enh: Add new pipes for table :
722
856
  - `isAllSelected`: e.g. `table | isAllSelected`,
723
- - `isNotAllSelected`: e.g. `table | isNotAllSelected`
857
+ - `isNotAllSelected`: e.g. `table | isNotAllSelected`
724
858
 
725
859
  # 2.8.1
726
- - enh: Add a pipe `badgeNumber` to limit badge content when > `99` (will display `99+`)
860
+
861
+ - enh: Add a pipe `badgeNumber` to limit badge content when > `99` (will display `99+`)
727
862
  - enh: function setPropertyByPath() now return the input obj
728
863
  - fix: Referential: fix `asObject()`
729
- - enh: Add options:
864
+ - enh: Add options:
730
865
  - `sumaris.defaultLatLongFormat.enabled` to show/hide default Lat/Lon setting in account page (default is true)
731
866
  - `sumaris.auth.api.token.scope.enabled` to show/hide scopes in API token table (default is false)
732
867
  - `sumaris.auth.api.token.scope.default` set the default scope for new API token, mandatory if `sumaris.auth.api.token.scope.enabled` if false (default is 'read_api')
733
868
  - enh: Add AppRowField component: wrap an AppFormField into a table column
734
869
  - enh: Add pipe `valueFormat` to format a value with a FormFieldDefinition (equivalent to pipe `propertyFormat`)
735
- - fix: `UploadFileComponent` Refactored
870
+ - fix: `UploadFileComponent` Refactored
736
871
  - enh: Add new config options to override the form field background color (active, focus or disabled)
737
872
  - enh: Add new pipe `booleanFormat`
738
873
  - enh: Update pipe `propertyFormat` to use complex path (using `getPropertyByPath()`)
@@ -740,34 +875,42 @@ enh: Environment: add useHash property to configure Angular router to use hash U
740
875
  - enh: Add static function `JsonUtils.getLocalizedEncoding()`
741
876
 
742
877
  # 2.8.2
878
+
743
879
  - enh: Function `getPropertyByPath` now handles the optional chaining operator `(?.)`
744
880
  - enh: Add `AccountService.onWillLogout` emitter
745
- - fix: Table: Call `emitRefresh()` instead of `onRefresh.emit()` to safely emit to an opened Observable
881
+ - fix: Table: Call `emitRefresh()` instead of `onRefresh.emit()` to safely emit to an opened Observable
746
882
 
747
883
  # 2.8.3
884
+
748
885
  - enh: Add support of `<mat-hint>` in MatDateTime, MatDate, MatDateShort, MatAutocompleteField and MatLatLongField
749
886
  - enh: Add `DateUtils.compare` to be able to sort dates (using Array `sort()`)
750
887
  - enh: Add function `resizeArray(T[], size): T[]`
751
888
  - fix: NamedFilter: Abort import if callback returns null or undefined
752
- - fix: DataSource: Allow to refresh datasource (using `watchAll()`) when having dirty row
889
+ - fix: DataSource: Allow to refresh datasource (using `watchAll()`) when having dirty row
753
890
 
754
891
  # 2.8.4
892
+
755
893
  - enh: MatBooleanField: add `@Input() clearable` (default to `false`)
756
894
  - fix: MatBooleanField: when resetting value, hide radio buttons
757
895
 
758
896
  # 2.8.11
759
- - fix: MatBooleanField: hide checkbox's placeholder when floatLabel=never
897
+
898
+ - fix: MatBooleanField: hide checkbox's placeholder when floatLabel=never
760
899
 
761
900
  # 2.8.12
762
- - enh: Pipe `referentialToString`: add new option `propertySeparator` to override the default ' - ' separator
901
+
902
+ - enh: Pipe `referentialToString`: add new option `propertySeparator` to override the default ' - ' separator
763
903
 
764
904
  # 2.8.13
905
+
765
906
  - enh: AsyncTable: make `setFilter()` async
766
907
 
767
908
  # 2.8.14
909
+
768
910
  - enh: Upgrade to ngx-material-table 17.2.1 (add options to TableElement `delete()`, `cancelOrDelete()` and `confirmEditCreate()`)
769
911
 
770
912
  # 2.9.0
913
+
771
914
  - enh: Upgrade to Angular 17.3
772
915
  - fix: Replace zone.js `setTimeout()`, by rx-angular zone-less
773
916
  - fix: IFormControlPathTranslator : Rename interface IFormControlPathTranslator into IFormPathTranslator, and rename property `controlPathTranslator` into `pathTranslator`
@@ -775,42 +918,53 @@ enh: Environment: add useHash property to configure Angular router to use hash U
775
918
  - fix: AppAsyncTable: re add `@Input() get filter`
776
919
  - fix: AppTable: clear selection when opening a row (like AppAsyncTable)
777
920
  - fix: MatAutocompleteField: Add `@Input() panelClass` (same as `class`)
778
- - fix: MatAutocompleteField: Allow boolean inputs from string (using `@Input({transform: booleanAttribute})`)
921
+ - fix: MatAutocompleteField: Allow boolean inputs from string (using `@Input({transform: booleanAttribute})`)
779
922
  - fix: MatAutocompleteField: add `panelWidth` and `panelClass` to `MatAutocompleteFieldConfig`
780
923
 
781
924
  # 2.9.1
925
+
782
926
  - fix: MatAutocompleteField: revert `applyImplicitValue` default value `true`
783
- - fix: MatChipsField: fix usage of `suggestLengthThreshold`
927
+ - fix: MatChipsField: fix usage of `suggestLengthThreshold`
784
928
  - enh: MatChipsField: add `applyImplicitValue` (default: false)
785
929
 
786
930
  # 2.9.2
931
+
787
932
  - fix: Notification list: add an ion-text-wrap to the notification message
788
933
 
789
934
  # 2.9.3
935
+
790
936
  - fix: Home: Add a call to `markForCheck()` after removing a page history item
791
937
 
792
938
  # 2.9.4
793
- - fix: Form: reduce line height of row label (form-container > ion-row > ion-col > ion-label)
939
+
940
+ - fix: Form: reduce line height of row label (form-container > ion-row > ion-col > ion-label)
794
941
 
795
942
  # 2.9.6
796
- - fix: MatAutocompleteField: Remove animation in searchbar (bad icon position in iOS)
943
+
944
+ - fix: MatAutocompleteField: Remove animation in searchbar (bad icon position in iOS)
797
945
 
798
946
  # 2.9.7
799
- - fix: Form: fix field label position (form-container > ion-row > ion-col > ion-label)
947
+
948
+ - fix: Form: fix field label position (form-container > ion-row > ion-col > ion-label)
800
949
 
801
950
  # 2.9.8
951
+
802
952
  - enh: Add AppFormUtils.filterErrorsByPrefix() and AppFormUtils.filterErrors()
803
953
 
804
954
  # 2.9.13
955
+
805
956
  - fix: Home: when removing a page history, force settings to update
806
957
 
807
958
  # 2.9.17
959
+
808
960
  - fix: MatSelectPanel: add `--min-width: fit-content` to class `mat-select-panel-fit-content`
809
961
 
810
962
  # 2.9.20
963
+
811
964
  - enh: NamedFilterSelector: add `filterCleared` event
812
965
 
813
966
  # 2.9.22
967
+
814
968
  - enh(deps): Minor update to Angular 17.3.12
815
969
  - enh(theme): Dark theme: Move dark theme toggle into the settings form
816
970
  - enh(theme): Dark theme: Fix toggle field style, in dark theme
@@ -818,55 +972,70 @@ enh: Environment: add useHash property to configure Angular router to use hash U
818
972
  - fix(config): When saving the remote config, do not return to the editor config's inherited properties
819
973
 
820
974
  # 2.9.23
975
+
821
976
  - fix(boolean-field): fix click on radio button 'no', when field has no value
822
977
 
823
978
  # 2.11.1
979
+
824
980
  - enh(deps): Upgrade to apollo-angular 7.1.2 and apollo 3.11 (+ fix breaking changes in graphql.service.ts)
825
981
  - fix(css): Dark theme: fix checkbox style, and autocomplete panel
826
982
 
827
983
  # 2.11.2
828
- - enh(app-text-form): Add new inputs `appearance` and `subscriptSizing`
984
+
985
+ - enh(app-text-form): Add new inputs `appearance` and `subscriptSizing`
829
986
  - fix(css): Dark theme: fix style for outline field
830
987
 
831
988
  # 2.11.3
989
+
832
990
  - fix(app-text-form): Input `autoHeight` is now deprecated (use `autoSize` instead)
833
991
  - enh(app-text-form): Add new inputs `autoSizeMinRows` and `autoSizeMaxRows`
834
992
 
835
993
  # 2.11.7
994
+
836
995
  - fix(css): Dark theme: fix style
837
996
 
838
997
  # 2.11.8
839
- - enh(form-error): Add options to `IFormPathTranslator.translateFormPath()`
998
+
999
+ - enh(form-error): Add options to `IFormPathTranslator.translateFormPath()`
840
1000
 
841
1001
  # 2.12.0
842
- - enh(form-error): Remove deprecated interface `IFormControlPathTranslator`
1002
+
1003
+ - enh(form-error): Remove deprecated interface `IFormControlPathTranslator`
843
1004
 
844
1005
  # 2.12.4
845
- - fix(date): Update formControl (and datePicker) when textControl value changes, and clean text input by regexp
1006
+
1007
+ - fix(date): Update formControl (and datePicker) when textControl value changes, and clean text input by regexp
846
1008
  - fix(date-time): Keep control as invalid is time is empty
847
1009
  - enh(date-time): Add new `@Input() allowNoTime` to make time optional
848
1010
  - fix(lat-long): Fix deletion, when press delete key
849
1011
 
850
1012
  # 2.12.7
1013
+
851
1014
  - fix: addShortcut handler use `KeyboardEvent` instead of a simple 'EVent'
852
1015
 
853
1016
  # 2.12.8
1017
+
854
1018
  - enh: function `toNumber()` will now return the default value, when input is `NaN`
855
1019
 
856
1020
  # 2.12.9
1021
+
857
1022
  - fix(paginator): Fix paginator style on mobile screen (align to the left, and hide page size, like before the Angular 17 migration)
858
1023
 
859
1024
  # 2.12.10
1025
+
860
1026
  - fix(autocomplete): Compute the panel width if not set (in mobile) - workaround for an issue in mat-select panel
861
1027
 
862
1028
  # 2.12.12
1029
+
863
1030
  - fix(theme): add all dark colors from material theme
864
1031
  - fix(autocomplete): in mobile device, add a text-wrap and a max-height in mat-option
865
1032
 
866
1033
  # 2.12.13
867
- - fix(config): New option `sumaris.account.latLongFormat.enable` to replace the deprecated option `sumaris.defaultLatLongFormat.enabled` (key was not well named)
1034
+
1035
+ - fix(config): New option `sumaris.account.latLongFormat.enable` to replace the deprecated option `sumaris.defaultLatLongFormat.enabled` (key was not well named)
868
1036
 
869
1037
  # 2.12.16
1038
+
870
1039
  - fix(autocomplete): Reload items when `showAllOnFocus = true`
871
1040
  - fix(autocomplete): Use `??` operator, instead of `toBoolean()`, `toNumber()` etc.
872
1041
  - enh(autocomplete): Add option `applyImplicitValue` to config
@@ -876,9 +1045,11 @@ enh: Environment: add useHash property to configure Angular router to use hash U
876
1045
  - enh(table): Add new component `<nav-actions-column>`
877
1046
 
878
1047
  # 2.12.19
1048
+
879
1049
  - fix(nav-actions-column): Fix when inside a `AppAsyncTable`
880
1050
 
881
1051
  # 2.12.26
1052
+
882
1053
  - enh(app-async-table): declare property `readonly cd: ChangeDetectorRef`
883
1054
  - enh(app-async-table): implement `markForCheck()` and `detectCHanges()`
884
1055
  - enh(app-table): declare property `readonly cd: ChangeDetectorRef`
@@ -886,21 +1057,26 @@ enh: Environment: add useHash property to configure Angular router to use hash U
886
1057
  - fix(app-table): `toggleSelectRow()` should not call `event.preventDefault()` otherwise checkbox will not be checked
887
1058
 
888
1059
  # 2.12.27
1060
+
889
1061
  - enh(app-table): implement `markForCheck()` and `detectChanges()`
890
1062
 
891
1063
  # 2.12.29
1064
+
892
1065
  - fix(new-token-modal): Add a full form and fix save issue
893
1066
 
894
1067
  # 2.12.30
1068
+
895
1069
  - enh(platform): Add copy to clipboard return state
896
1070
 
897
1071
  # 2.12.29
1072
+
898
1073
  - fix(new-token-modal): Add a full form and fix save issue
899
1074
 
900
1075
  # 18.0.0
1076
+
901
1077
  - enh(deps) Upgrade to Angular 18.2.8 and Ionic 8.3
902
1078
  - enh(deps) Remove zone.js (enable experimental zone-less config)
903
- - enh(app-properties-form): Use an autocomplete field to select an option, instead of a simple mat-select
1079
+ - enh(app-properties-form): Use an autocomplete field to select an option, instead of a simple mat-select
904
1080
  - enh(app-properties-form): Add `@Input() showHintKey: boolean` to show option key (has a hint)
905
1081
  - enh(network-service): Avoid to restart the service if peer has not changed
906
1082
  - enh(AppFormArray): allow to use AppFormArray on any type (and not only Entity has before)
@@ -908,12 +1084,13 @@ enh: Environment: add useHash property to configure Angular router to use hash U
908
1084
  - enh(mat-autocomplete-field): add option `selectInputContentOnFocus` to option, to select the input content on focus in
909
1085
  - enh(app-named-filter-selector): Add `@Input() buttonsPosition: 'matSuffix'|'after'` to let user defined button position (inside the field, or after)
910
1086
  - fix(AppForm and AppFormContainer) log error using the child path (if defined using `addForm()`)
911
- - fix(graphql) Fix pod error in JSON format, before parsing it (e.g. Oracle can return error on multiple lines)
1087
+ - fix(graphql) Fix pod error in JSON format, before parsing it (e.g. Oracle can return error on multiple lines)
912
1088
  - fix(nav-actions-column): Use `OnPush` changeDetection
913
1089
  - fix(app-form-field): Emit `(keyup.enter)` event, when field's type is `double`
914
1090
 
915
1091
  # 18.0.5
916
- - enh(mat-autocomplete-field):
1092
+
1093
+ - enh(mat-autocomplete-field):
917
1094
  - Change type of `MatAutocompleteFieldConfig.suggestFn` to use SuggestFn<T, F> (allow to pass more options - e.g. used to resolve entity in AppPropertiesUtils)
918
1095
  - Add `@Input() label`
919
1096
  - Add `@Input() hideRequiredMarker`
@@ -922,64 +1099,77 @@ enh: Environment: add useHash property to configure Angular router to use hash U
922
1099
  - Fix the style when readonly and type `enum`
923
1100
  - interface `FormFieldDefinition`: Add property `serializeAttribute?: string` (instead of using autocomplete.filer.joinAttribute)
924
1101
  - add a static function `FormFieldDefinitionUtils.prepareDefinitions()` to resolve enum values, by `InjectionToken`
925
- - enh(app-properties-form):
1102
+ - enh(app-properties-form):
926
1103
  - Entity/Entities are now resolved from helper class AppPropertiesUtils
927
1104
  - Allow to change add button title
928
1105
  - Resolve enum item, when using InjectionToken for values
929
1106
  - enh(shared) Add decorators `@RxStateRegister()` `@RxStateSelect()` and `@RxStateProperty()` to connect property to a `RxState`
930
1107
  - fix(properties-utils): Add `opts?: {keepOrphan?: boolean}` to `AppPropertiesUtils.arrayFromObject` to be able to remove property without definition (`keepOrphan` is `true` by default)
931
- - fix(token-table): Fix error when no scopes defined (InjectToken `APP_USER_TOKEN_SCOPES` should be optional)
1108
+ - fix(token-table): Fix error when no scopes defined (InjectToken `APP_USER_TOKEN_SCOPES` should be optional)
932
1109
 
933
1110
  # 18.0.6
1111
+
934
1112
  - fix(scss): set flex-wrap to nowrap
935
1113
  - enh(autocomplete-test): add test case with a button
936
1114
  - fix(logout) Logout should be done AFTER home redirection, because of cache clearing - see issue #5
937
1115
 
938
1116
  # 18.0.7
1117
+
939
1118
  - fix(hotkeys) Fix default platform control key ('meta' on iOS)
940
1119
 
941
1120
  # 18.0.8
1121
+
942
1122
  - fix(hotkeys) Avoid to open many help modal
943
1123
  - fix(hotkeys) Skip open help modal, if nothing to display
944
1124
  - fix(form-buttons-bar) Fix shortcuts for iOS
945
1125
  - fix(modal-toolbar) Fix shortcut for iOS
946
1126
 
947
1127
  # 18.0.9
1128
+
948
1129
  - fix(mat-latlong-field) Mark control as dirty, when text control changed
949
1130
  - fix(about) Fix missing markdown module, to display config description
950
- - enh(about) Allow to override the "report an issue" link, using a config option `sumaris.reportIssue.url`
1131
+ - enh(about) Allow to override the "report an issue" link, using a config option `sumaris.reportIssue.url`
951
1132
 
952
1133
  # 18.0.10
1134
+
953
1135
  - enh(utils) Add static functions `isFirefox()`, `isSafari()` and `isEdge()` to test user agent
954
1136
  - enh(utils) Add static functions `EntityUtils.collectIds()` and `EntityUtils.splitById()`
955
1137
  - fix(utils) Mark function `EntityUtils.collectById()` as deprecated (in flavor of `EntityUtils.splitById()`)
956
1138
 
957
1139
  # 18.1.0
1140
+
958
1141
  - enh(deps) Upgrade to angular 18.2.11 and other deps
959
1142
  - fix(deps) move maildev library into dev dependencies
960
1143
 
961
1144
  # 18.1.1
1145
+
962
1146
  - enh(deps) Update angular-eslint to 18.4.0
963
1147
 
964
1148
  # 18.1.2
1149
+
965
1150
  - enh(deps) Revert to Ionic 7.8.6
966
1151
 
967
1152
  # 18.1.3
1153
+
968
1154
  - fix(settings) Add static function `isOnFieldMode()`
969
- - fix(menu) Make unpinned menu works, when reload app (F5) with a pinned menu
1155
+ - fix(menu) Make unpinned menu works, when reload app (F5) with a pinned menu
970
1156
 
971
1157
  # 18.1.4
1158
+
972
1159
  - fix(tab) Keep default tab label style (e.g. min-width) when stretch tabs is enabled
973
1160
  - fix(tab) Reduce tab label padding, on small screen
974
1161
 
975
1162
  # 18.1.7
1163
+
976
1164
  - enh(AppFormArray) Add `clone()` function
977
1165
 
978
1166
  # 18.2.0
1167
+
979
1168
  - enh(base-entity-service) Allow opts.toEntity to be a function (e.g. to be able to transform each element, also when fetching more items)
980
1169
  - fix(graphql-service) Allow `opts.update` to use new Apollo type `MutationUpdaterFunction` (type `MutationUpdaterFn` is deprecated)
981
1170
 
982
1171
  # 18.2.6
1172
+
983
1173
  - fix(autocomplete-field) Fix arrow drop icon position, when mobile
984
1174
  - fix(autocomplete-field) Use desktop arrow drop icon, when multiple and desktop
985
1175
  - fix(BaseEntityService) simplify functions `fromObject()` and `fromObjects()` (move `toEntity` argument into `options`)
@@ -989,105 +1179,135 @@ enh: Environment: add useHash property to configure Angular router to use hash U
989
1179
  - enh(shared) New helper class `RegExpUtils`
990
1180
 
991
1181
  # 18.2.7
1182
+
992
1183
  - enh(autocomplete-field) Add `@Input() selectInputContentOnFocusDelay` - workaround when input text selection is overridden by another event (e.g. see in SUMARiS, in the calendar component)
993
1184
 
994
1185
  # 18.2.9
1186
+
995
1187
  - enh(autocomplete-field): Add `@Input() reloadItemsOnFocus` : Reload items when focused, necessary if filtered items depends on an external source (e.g. see in SUMARiS, in the calendar component)
996
1188
 
997
1189
  # 18.2.11
1190
+
998
1191
  - enh(DateUtils): Add `DateUtils.diffAbs()` to compute duration between two dates
999
1192
 
1000
1193
  # 18.2.19
1194
+
1001
1195
  - enh(timepicker) MatDateTime : Migrate timepicker to new library Ngx Mat TimePicker (fix animation, cancel button, Angular 17 compatibility, etc.)
1002
1196
 
1003
1197
  # 18.2.21
1198
+
1004
1199
  - enh(functions) Rename `selectInputContent` into `selectInputContentFromEvent`, and make `selectInputContent` that only use an <input> as argument
1005
1200
  - enh(autocomplete-field) Add `@Input() clearInvalidValueOnBlur: boolean` to reset the field when typing invalid search text (no match or no many matches)
1006
1201
  - fix(swipe-field) Fix swiper previous/next arrows
1007
1202
 
1008
1203
  # 18.2.23
1204
+
1009
1205
  - enh(validators) add option skipIfNoTime to dateRange
1010
1206
 
1011
1207
  # 18.2.24
1208
+
1012
1209
  - enh(pipe) add new pipe `isValidDate` with option `requiredTime` (to test date with noTime flag)
1013
1210
 
1014
1211
  # 18.2.26
1212
+
1015
1213
  - enh(select-peer-modal) Allow to search on peers modal
1016
1214
  - enh(select-peer-modal) Allow to select peer by features (aka programs) - should set `enableSelectPeerByFeature: true` in the environment token (disabled by default)
1017
1215
 
1018
1216
  # 18.2.28
1217
+
1019
1218
  - fix(mat-boolean-field) Small refactoring + simplify blur detection, using standard Angular outputs
1020
1219
  - enh(mat-latlong-field) Refactor the component, to use separate inputs (instead of using Maskito)
1021
1220
  - fix(entity-store) setEntities() should mark all entities as dirty, when id mode is enabled (because an optimization in `persist()` that skip pristine entities)
1022
1221
 
1023
1222
  # 18.2.29
1223
+
1024
1224
  - enh(validators) add opts to dateMaxDuration to skip date with NoTime
1025
1225
  - fix(mat-boolean-field) Fix buttons layout (padding) to be same as sumaris QV pmfm buttons
1026
1226
 
1027
1227
  # 18.2.30
1228
+
1028
1229
  - fix(forms) Fix error `TypeError: Cannot read properties of undefined (reading 'setControlEnabled')`
1029
1230
 
1030
1231
  # 18.2.31
1232
+
1031
1233
  - fix(mat-latlong-field) Prevent NaN on component initialization
1032
1234
 
1033
1235
  # 18.2.32
1236
+
1034
1237
  - fix(mat-latlong-field) Fix unit symbol font color
1035
1238
 
1036
1239
  # 18.2.33
1240
+
1037
1241
  - enh(ReferentialUtils) add static function `ReferentialUtils.isNotDisabled()`
1038
1242
 
1039
1243
  # 18.3.0
1244
+
1040
1245
  - fix(entity-editor) Fix page reload, when changing tab after the first save
1041
1246
 
1042
1247
  # 18.3.9
1248
+
1043
1249
  - fix(image-gallery) add a padding at bottom, for ios
1044
1250
  - enh(android) Upgrade compileSdkVersion to API 34 (required by the Google Play Store)
1045
1251
  - enh(theme) Add css class 'visible-xxs'
1046
- - enh(dateDiffDuration) Add an option `opts.unit` to convert into a particular unit. If not defined, result will be like `x days HH:MM`
1252
+ - enh(dateDiffDuration) Add an option `opts.unit` to convert into a particular unit. If not defined, result will be like `x days HH:MM`
1047
1253
 
1048
1254
  # 18.3.16
1255
+
1049
1256
  - fix(AppFormUtils) `disableControl()` now disable without reset value
1050
1257
  - enh(AppFormUtils) Add `disableAndClearControl()` that can disable then clear the control
1051
1258
 
1052
1259
  # 18.3.17
1260
+
1053
1261
  - fix(mat-chip-field) fix issue sumaris-app#844
1054
1262
 
1055
1263
  # 18.3.18
1264
+
1056
1265
  - fix(mat-*-field) Avoid to display 'false' as input placeholder, when floatLabel="never"
1057
1266
 
1058
1267
  # 18.3.19
1268
+
1059
1269
  - fix(mat-latlong-field) Fix height in theme.scss (Need to remove one extra pixel, because of the sign that use a mat-select)
1060
1270
 
1061
1271
  # 18.3.20
1062
- - enh(directive) Add new directive to avoid prevent double click: Simply replace `(click)=...` by `(throttledClick)=...`
1272
+
1273
+ - enh(directive) Add new directive to avoid prevent double click: Simply replace `(click)=...` by `(throttledClick)=...`
1063
1274
 
1064
1275
  # 18.3.21
1276
+
1065
1277
  - fix(table) Add a `@Input() openRowThrottleTime = 800` to prevent double click to open a row (see issue sumaris-app#864)
1066
1278
 
1067
1279
  # 18.3.22
1280
+
1068
1281
  - fix(async-table) Add a `@Input() openRowThrottleTime = 800` to prevent double click to open a row
1069
1282
 
1070
1283
  # 18.3.24
1284
+
1071
1285
  - fix(geolocation) Do not use Capacitor plugin, when using without capacitor
1072
1286
 
1073
1287
  # 18.3.25
1074
- - fix(platform) Fix infinite loop on auto reload, when new version detected at startup (allow version using 'alpha', 'beta' or 'rc')
1288
+
1289
+ - fix(platform) Fix infinite loop on auto reload, when new version detected at startup (allow version using 'alpha', 'beta' or 'rc')
1075
1290
 
1076
1291
  # 18.3.26
1292
+
1077
1293
  - fix(timepicker) Increase max-width for small screens
1078
1294
 
1079
1295
  # 18.3.27
1296
+
1080
1297
  - fix(table) Use SortDirection type, for getter sortDirection
1081
1298
  - fix(async-table) Use SortDirection type, for getter sortDirection
1082
1299
 
1083
1300
  # 18.4.0
1301
+
1084
1302
  - enh(mat-latlong-field) Refactoring component, to use distinct `<input>`
1085
1303
 
1086
1304
  # 18.4.4
1305
+
1087
1306
  - enh(settings) Add a button to access to the user account
1088
1307
  - enh(menu) Change my account button color, when account page is open (add a 'selected' class, like for a selected menu item)
1089
1308
 
1090
1309
  # 18.5.0
1310
+
1091
1311
  - enh(capacitor) Migrate to capacitor 6
1092
1312
  - enh(deps) Migrate to Network plugin
1093
1313
  - fix(properties-form) Selected option not visible, on mobile device - fix #16
@@ -1098,150 +1318,194 @@ enh: Environment: add useHash property to configure Angular router to use hash U
1098
1318
  - enh(account) Display the offline card, when network is offline and the page disabled
1099
1319
 
1100
1320
  # 18.5.1
1321
+
1101
1322
  - enh(account, settings) Avoid to quit or refresh the page, without saving (web browser)
1102
1323
 
1103
1324
  # 18.5.4
1325
+
1104
1326
  - fix(entity-editor) Fix update route with tab params (URL was not updated sometimes)
1105
1327
 
1106
1328
  # 18.5.5
1329
+
1107
1330
  - fix(audio) Avoid trying to use audio management, in iOS
1108
1331
  - enh(install-upgrade-card) Add a debug Input, to debug install link url
1109
1332
 
1110
1333
  # 18.5.6
1334
+
1111
1335
  - fix(platform) Avoid error on status bar, in iOS
1112
1336
 
1113
1337
  # 18.5.7
1338
+
1114
1339
  - fix(platform) Hide splash screen on macOS
1115
1340
  - enh(home) Add legal information by configuration
1116
1341
  - enh(help-modal) Add error management from markdown
1117
1342
 
1118
1343
  # 18.5.8
1344
+
1119
1345
  - enh(home) Add privacy policy links (using environment property or config option)
1120
1346
 
1121
1347
  # 18.5.10
1122
- - fix(theme) Auto enable dark mode (if allow) until the user change it in the settings page
1348
+
1349
+ - fix(theme) Auto enable dark mode (if allow) until the user change it in the settings page
1123
1350
 
1124
1351
  # 18.5.11
1352
+
1125
1353
  - fix(settings) Merge properties from account into properties from local storage - see sumaris-app#897
1126
1354
 
1127
1355
  # 18.6.0
1356
+
1128
1357
  - enh(pipes) Add `replace` pipe
1129
1358
  - enh(markdown) Rename `HelpModal` into `AppMarkdownModal`
1130
1359
  - enh(markdown) Add new markdown components, that allow navigation with markdown relative links
1131
1360
 
1132
1361
  # 18.6.9
1362
+
1133
1363
  - enh(public_api) Expert `NetworkUtils` and `VersionUtils`
1134
1364
 
1135
1365
  # 18.6.12
1366
+
1136
1367
  - fix(markdown) Fix link click
1137
1368
  - fix(theme) Set mat-expansion panel colors, to use ionic color
1138
1369
 
1139
1370
  # 18.6.13
1371
+
1140
1372
  - enh(gallery): Allow to use textual button, instead of card button
1141
1373
  - fix(gallery): Keep the given input mode (auto set only if empty)
1142
1374
 
1143
1375
  # 18.6.14
1376
+
1144
1377
  - fix(markdown) Fix link click (avoid router resolution if target is a markdown file)
1145
1378
 
1146
1379
  # 18.6.15
1380
+
1147
1381
  - fix(table) Avoid subscript part of a field, to be clicked, in table (event when row is disabled)
1148
1382
 
1149
1383
  # 18.6.16
1384
+
1150
1385
  - enh(properties-form) Add `keyPanelClass` and `valuePanelClass`
1151
1386
 
1152
1387
  # 18.6.19
1388
+
1153
1389
  - fix(autocomplete-field) Avoid too many blur events - see issue sumaris-app#837
1154
1390
 
1155
1391
  # 18.6.22
1392
+
1156
1393
  - enh(styles) Avoid use selection of tab labels
1157
1394
 
1158
1395
  # 18.6.23
1396
+
1159
1397
  - enh(PlatformService) Add `markAsBusy()` and `markAsNotBusy()` to display a backdrop (e.g. from the app.component.ts)
1160
1398
 
1161
1399
  # 18.6.25
1400
+
1162
1401
  - enh(PlatformService) Make `showToast()` public (instead of protected)
1163
1402
 
1164
1403
  # 18.6.26
1404
+
1165
1405
  - enh(PlatformService) Add `closeToast(id: number)`
1166
1406
 
1167
1407
  # 18.6.27
1408
+
1168
1409
  - enh(pipes) Add pipe `arrayDistinct`
1169
1410
 
1170
1411
  # 18.6.28
1412
+
1171
1413
  - enh(PrintService) Add `?print-id=` into created iframe URL
1172
1414
  - enh(PrintService) Add function `getJobId(url?: string)` to retrieve the Job ID of the given URL
1173
1415
 
1174
1416
  # 18.6.33
1417
+
1175
1418
  - enh(PrintService) Add function `isPrintingUrl(url?: string, queryParam: string = 'print-id')` to known if a URL is for printing
1176
1419
 
1177
1420
  # 18.6.36
1421
+
1178
1422
  - enh(pipes) Add pipes `truncText` and `truncHtml`
1179
1423
 
1180
1424
  # 18.6.37
1425
+
1181
1426
  - enh(SharedValidators) Add new validators `SharedValidators.validDateAllowNoTime` and `SharedValidators.validDateTime(requiredTime = true)`
1182
1427
  - fix(SharedValidators) Make sure `SharedValidators.validDate` failed when no time set
1183
1428
  - fix(mat-date-time) MatDateTime should have an error, when no time
1184
1429
 
1185
1430
  # 18.6.39
1431
+
1186
1432
  - enh(pipes) Add some pipes for observables : `firstTrue`, `firstFalse`, `first`
1187
1433
 
1188
1434
  # 18.6.42
1435
+
1189
1436
  - fix(theme) Redirect CSS variables `--mat-sidenav-*` to theme variables `--ion-*` (need for dark theme)
1190
1437
 
1191
1438
  # 18.6.45
1439
+
1192
1440
  - enh(directive): Add a workaround for directive `cdkTextareaAutosize` to fix scroll behavior (see issue sumaris-app#950)
1193
1441
 
1194
1442
  # 18.6.46
1195
- - fix(home) Hide the print icon when mobile, in the markdown modal (e.g. legacy info)
1443
+
1444
+ - fix(home) Hide the print icon when mobile, in the markdown modal (e.g. legacy info)
1196
1445
 
1197
1446
  # 18.6.50
1198
- - fix(autocomplete-field) Avoid to display a suggest result, when a newer call is running
1447
+
1448
+ - fix(autocomplete-field) Avoid to display a suggest result, when a newer call is running
1199
1449
 
1200
1450
  # 18.6.51
1451
+
1201
1452
  - fix(toast) Fix info/warning color, for dark theme
1202
1453
  - fix(toast) Use text color for button color (can be override in app's custom theme)
1203
1454
 
1204
1455
  # 18.6.56
1456
+
1205
1457
  - fix(menu) Refresh menu, when logout after a pod changed
1206
1458
 
1207
1459
  # 18.6.57
1460
+
1208
1461
  - fix(rx-state) Merge annotations from sumaris-app shared annotation
1209
1462
 
1210
1463
  # 18.6.58
1211
- - enh(EntityUtils) In functions `EntityUtils.isEmpty()` and `EntityUtils.isNotEmpty()`: the second argument `checkAttribute` is now 'id' by default
1464
+
1465
+ - enh(EntityUtils) In functions `EntityUtils.isEmpty()` and `EntityUtils.isNotEmpty()`: the second argument `checkAttribute` is now 'id' by default
1212
1466
  - enh(EntityUtils) Add `EntityUtils.hasNilId()`
1213
1467
 
1214
1468
  # 18.6.59
1469
+
1215
1470
  - enh(EntityUtils) Add `EntityUtils.findById(items: E[], id: ID)`
1216
1471
 
1217
1472
  # 18.6.60
1473
+
1218
1474
  - fix(toast) Add a default anchor to app-toolbar
1219
1475
 
1220
1476
  # 18.6.61
1477
+
1221
1478
  - enh(DateUtils) add `durationToString()` and change duration pipe
1222
1479
 
1223
1480
  # 18.6.62
1224
- - fix(toast) Add default icon when `options.type` is `warning` and `error`
1481
+
1482
+ - fix(toast) Add default icon when `options.type` is `warning` and `error`
1225
1483
 
1226
1484
  # 18.6.63
1485
+
1227
1486
  - fix(autocomplete) Fix `class="min-width-medium"` option alignment - fix issue sumaris-app#943
1228
1487
 
1229
1488
  # 18.6.65
1489
+
1230
1490
  - fix(theme) Fix timepicker modal color, for dark mode
1231
1491
 
1232
1492
  # 18.6.66
1493
+
1233
1494
  - enh(home) Add a dark theme toggle button (is dark mode enable)
1234
1495
 
1235
1496
  # 18.6.69
1497
+
1236
1498
  - enh(users) Add compact rows mode
1237
1499
  - enh(users) Add columns updateDate and creationDate
1238
1500
  - enh(users) Add a download to CSV button
1239
- - fix(deps) Replace deprecated @ionic-native by @awesome-cordova-plugins
1501
+ - fix(deps) Replace deprecated @ionic-native by @awesome-cordova-plugins
1240
1502
 
1241
1503
  # 18.6.71
1504
+
1242
1505
  - fix(latlong) Remove required validator on sub controls, required is false
1243
1506
 
1244
1507
  # 18.7.0
1508
+
1245
1509
  - enh(account) Save account settings with only configured keys
1246
1510
  - fix(mat-duration) Change the DEFAULT_MAX_DECIMALS to 7 and use DateUtils.durationToString() to get value
1247
1511
 
@@ -1251,228 +1515,300 @@ enh: Environment: add useHash property to configure Angular router to use hash U
1251
1515
 
1252
1516
  # 18.7.4
1253
1517
 
1254
- - enh(pipes) Add `RoundPipe`, Add parameter on `round` function
1518
+ - enh(pipes) Add `RoundPipe`, Add parameter on `round` function
1255
1519
  - fix(mat-duration) component emit valid and dirty
1256
1520
  - enh(users) display label for organization in displayed columns
1257
1521
  - enh(actions-column) Add input `cellTemplateStart`
1258
1522
  - fix(mat-chips-field) Show the required marker, when required=true
1259
1523
 
1260
1524
  # 18.7.5
1525
+
1261
1526
  - fix(AppFormContainer, AppEditor) Add `enabledSubject` observable
1262
1527
 
1263
1528
  # 18.7.7
1264
- - enh(type) Add a new type `Observed<T>` to publish all properties
1529
+
1530
+ - enh(type) Add a new type `Observed<T>` to publish all properties
1265
1531
 
1266
1532
  # 18.7.8
1533
+
1267
1534
  - enh(ComponentDirtyGuard, CanLeave) Add function `deactivate()`
1268
1535
 
1269
1536
  # 18.7.9
1537
+
1270
1538
  - enh(ImageGallery) Add `@Input() cardTemplate` to override the default card template
1271
1539
 
1272
1540
  # 18.7.10
1541
+
1273
1542
  - enh(table, async-table) Do not clear selection inside `clickRow()`, but only in `openRow()` before navigating to detail
1274
1543
 
1275
1544
  # 18.7.11
1545
+
1276
1546
  - enh(table, async-table) Add `@Output() onClickRow`
1277
1547
 
1278
1548
  # 18.7.12
1549
+
1279
1550
  - enh(animation) Add `expansionAnimation`
1280
1551
 
1281
1552
  # 18.7.13
1553
+
1282
1554
  - fix(table, async-table) Don't threat undefined value emitted by `loadingSubject`
1283
1555
 
1284
1556
  # 18.7.14
1285
- - enh(image-gallery) Open image URL using q query params (e.g. `?size=<large|medium|small>` - params name and values can be configured by inputs)
1557
+
1558
+ - enh(image-gallery) Open image URL using q query params (e.g. `?size=<large|medium|small>` - params name and values can be configured by inputs)
1286
1559
 
1287
1560
  # 18.7.17
1561
+
1288
1562
  - fix(home) Inverse dark theme icon
1289
- - fix(pipes) Allow selection pipes for `AppTable` and `AppAsyncTable`
1563
+ - fix(pipes) Allow selection pipes for `AppTable` and `AppAsyncTable`
1290
1564
 
1291
1565
  # 18.7.19
1566
+
1292
1567
  - enh(functions) Add function `interpolateString` to bind a message using given parameters
1293
1568
 
1294
1569
  # 18.7.20
1570
+
1295
1571
  - enh(autocomplete-field) Allow to display favorites items in the dropdown panel, by using `@Input() favoriteItems: any[]`
1296
1572
  - fix(functions) Fix runtime error in function `interpolateString`
1297
1573
 
1298
1574
  # 18.7.20
1299
- - enh(autocomplete-field) Allow to toggle favorite
1575
+
1576
+ - enh(autocomplete-field) Allow to toggle favorite
1300
1577
 
1301
1578
  # 18.7.24
1302
- - fix(autocomplete-field) Avoid to display 'null' as field title (on mouse over)
1579
+
1580
+ - fix(autocomplete-field) Avoid to display 'null' as field title (on mouse over)
1303
1581
  - fix(autocomplete-field) Keep the favorite column visible, when favoriteItems is empty but `toggleFavorite` output is observed
1304
1582
 
1305
1583
  # 18.7.25
1306
- - enh(autocomplete-field) Add `@Output() openedChange: EventEmitter<boolean>` to listen panel open/close state
1584
+
1585
+ - enh(autocomplete-field) Add `@Output() openedChange: EventEmitter<boolean>` to listen panel open/close state
1307
1586
 
1308
1587
  # 18.7.27
1588
+
1309
1589
  - enh(mat-boolean-field) Add `@Input() autofocus`
1310
1590
 
1311
1591
  # 18.7.29
1592
+
1312
1593
  - enh(pipes) Change pipe `asBoolean: <mapperFn>` to allow `mapperFn` to have more arguments (e.g. `| asBoolean: mapperFn: 'arg2'`)
1313
1594
 
1314
1595
  # 18.8.0
1596
+
1315
1597
  - enh(auth-guard,home) Allow to define a custom `defaultRoute` in `Environment`
1316
1598
 
1317
1599
  # 18.8.3
1600
+
1318
1601
  - enh(image-service) Add more options to the `add()` function (e.g. `source: 'PROMPT'|'CAMERA'|'GALLERY'`)
1319
1602
 
1320
1603
  # 18.8.8
1604
+
1321
1605
  - fix(form) `AppForm.getFormError()` now uses the provided form or this.form
1322
- - fix(table.pipes) Fix error when table's datasource subscription, when table not found (e.g. on pipe `isAllSelected`)
1606
+ - fix(table.pipes) Fix error when table's datasource subscription, when table not found (e.g. on pipe `isAllSelected`)
1323
1607
 
1324
1608
  # 18.8.10
1325
- - fix(autocomplete-field) Fix error in `reloadItems()` when mobile but matSelect is not used
1609
+
1610
+ - fix(autocomplete-field) Fix error in `reloadItems()` when mobile but matSelect is not used
1326
1611
 
1327
1612
  # 18.8.11
1613
+
1328
1614
  - enh(types) Add type `OmitFunctions` to get only properties of a class, without functions (e.g. from an Entity class)
1329
1615
 
1330
1616
  # 18.8.15
1331
- - enh(EntityUtils) Use more précise parametrized types in function `EntityUtils.cleanIdAndUpdateDate`
1617
+
1618
+ - enh(EntityUtils) Use more précise parametrized types in function `EntityUtils.cleanIdAndUpdateDate`
1332
1619
 
1333
1620
  # 18.8.16
1621
+
1334
1622
  - enh(EntityUtils) Add function `EntityUtils.fromObject(source, dataType)`
1335
1623
 
1336
1624
  # 18.8.17
1625
+
1337
1626
  - enh(file.utils) In function `FileUtils.writeTextToFile` set attributes `lastModifiedDate` and `filename` in the generated Blob object
1338
1627
 
1339
1628
  # 18.8.20
1629
+
1340
1630
  - fix(pipes) Fix `mapGet` pipe to return `undefined` (or `defaultValue`) instead of `null`, when no input value, or no key.
1341
1631
  This is important, to have same behavior as `propertyGet` pipey
1342
- - enh(functions) Add `numberOrNilAttribute` that allow `undefined|null` input (without convert into `NaN`)
1632
+ - enh(functions) Add `numberOrNilAttribute` that allow `undefined|null` input (without convert into `NaN`)
1343
1633
 
1344
1634
  # 18.8.21
1345
- - fix(functions) Fix `underscoreToChangeCase()`
1635
+
1636
+ - fix(functions) Fix `underscoreToChangeCase()`
1346
1637
  - e.g. `underscoreToChangeCase('my_property')` => `myProperty` instead of `my,Property`
1347
- - Add unit test, to have same behavior as the Java implementation (SUMARiS Pod)
1638
+ - Add unit test, to have same behavior as the Java implementation (SUMARiS Pod)
1348
1639
 
1349
1640
  # 18.8.23
1350
- - fix(table, async-table) Fix duplicateRows() to allow `skipProperties` on complex paths
1351
- - fix(table, async-table) Fix duplicateRows() to use deep clone (using `row.cloneData()` instead of `{...row.currentData}`)
1641
+
1642
+ - fix(table, async-table) Fix duplicateRows() to allow `skipProperties` on complex paths
1643
+ - fix(table, async-table) Fix duplicateRows() to use deep clone (using `row.cloneData()` instead of `{...row.currentData}`)
1352
1644
 
1353
1645
  # 18.8.24
1646
+
1354
1647
  - fix(table, async-table) duplicateRows() - rename `options.skipProperties` into `options.excludedProperties`
1355
- - enh(table, async-table) duplicateRows() - add `options.includedProperties`
1648
+ - enh(table, async-table) duplicateRows() - add `options.includedProperties`
1356
1649
  - enh(csv-utils) Add more options to CsvUtils.exportToCsv() (e.g. `options.includedProperties`, `options.excludedProperties`)
1357
1650
 
1358
1651
  # 18.8.26
1652
+
1359
1653
  - enh(image-gallery) Add `@Input() showAddToolbarButton: boolean`
1360
1654
 
1361
1655
  # 18.9.0
1656
+
1362
1657
  - enh(deps) Upgrade to `ngx-material-table@18.0.0` (build for Angular 18)
1363
1658
  - enh(functions) Add `Beans.clone()` for deep cloning a JS object
1364
1659
 
1365
1660
  # 18.9.1
1661
+
1366
1662
  - enh(EntitiesTableDataSource) Add more options in function `waitIdle(opts: number | ({ debounceTimeMs?: number } & FirstOptions))`
1367
1663
  - enh(IEntitiesService) Add readonly property `defaultFetchPolicy: WatchQueryFetchPolicy` (need by `EntitiesTableDataSource.waitIdle()`)
1368
1664
 
1369
1665
  # 18.9.2
1666
+
1370
1667
  - fix(EntitiesTableDataSource) Fix function `waitIdle()`
1371
- - fix(EntitiesTableDataSource) Remove some deprecated feature: `close()` and `serviceOptions`
1668
+ - fix(EntitiesTableDataSource) Remove some deprecated feature: `close()` and `serviceOptions`
1372
1669
 
1373
1670
  # 18.9.3
1374
- - fix(AppTable, AppAsyncTable) Make sure to call table.markAsDirty() when the editing row is dirty
1671
+
1672
+ - fix(AppTable, AppAsyncTable) Make sure to call table.markAsDirty() when the editing row is dirty
1375
1673
 
1376
1674
  # 18.9.4
1675
+
1377
1676
  - fix(MatBooleanField) Fix alignment when floatLabel="never", on styles 'checkbox' and 'button'
1378
1677
  - fix(MatBooleanField) Exclude more blur internal events (e.g. when the hidden input is the target)
1379
1678
  - fix(AppFormField) Make sure to pass readonly input to all internal input/field (was ignored in style 'enums' and 'color')
1380
1679
 
1381
1680
  # 18.9.5
1681
+
1382
1682
  - fix(functions) Fix `round()` when passing a string value, instead of a number (avoid to return `NaN`)
1383
1683
 
1384
1684
  # 18.9.6
1685
+
1385
1686
  - enh(pipes) Add `MapPipe` to convert an object into another (e.g. `object | map: converToSomething` or `object$ | map: converToSomething | async`)
1386
1687
 
1387
1688
  # 18.9.7
1388
- - fix(platform-service) Avoid toggling dark mode, when window's media match 'print'
1689
+
1690
+ - fix(platform-service) Avoid toggling dark mode, when window's media match 'print'
1389
1691
 
1390
1692
  # 18.10.0
1693
+
1391
1694
  - enh(deps) Upgrade to ngx-material-table@18.0.1 (allow to create new row with insertAt=0)
1392
1695
 
1393
1696
  # 18.10.1
1697
+
1394
1698
  - fix(theme) Avoid a add the dark CSS class, when on screen media
1395
1699
 
1396
1700
  # 18.10.2
1397
- - fix(PersonUtils) `PersonUtils.personToString()` should always display lastname then firstName (even when `opts.withDepartment=true`)
1701
+
1702
+ - fix(PersonUtils) `PersonUtils.personToString()` should always display lastname then firstName (even when `opts.withDepartment=true`)
1398
1703
 
1399
1704
  # 18.10.3
1400
- - fix(GraphqlService) Make sure cache data is an array, before trying to update it (to avoid console error when cache data has been corrupted)
1705
+
1706
+ - fix(GraphqlService) Make sure cache data is an array, before trying to update it (to avoid console error when cache data has been corrupted)
1401
1707
 
1402
1708
  # 18.10.4
1403
- - fix(GraphqlService) Fix addManyToQueryCache() when cacheable query result size exceed (cached data were corrupted when trying to update the cached total)
1709
+
1710
+ - fix(GraphqlService) Fix addManyToQueryCache() when cacheable query result size exceed (cached data were corrupted when trying to update the cached total)
1404
1711
 
1405
1712
  # 18.10.7
1713
+
1406
1714
  - fix(autocomplete-field) Add `@Input() colSizes = [undefined, 'auto']` to fix layout when using `matAfter`
1407
1715
 
1408
1716
  # 18.10.8
1717
+
1409
1718
  - fix(chips-field) Add `@Input() colSizes = [undefined, 'auto']` to fix layout when using `matAfter`
1410
1719
 
1411
1720
  # 18.10.11
1721
+
1412
1722
  - enh(array.pipe) Add `arrayFindByProperty` pipe
1413
1723
 
1414
1724
  # 18.10.12
1415
- - enh(table) Add a setter for `sortActive` property
1725
+
1726
+ - enh(table) Add a setter for `sortActive` property
1416
1727
 
1417
1728
  # 18.10.13
1418
- - enh(array.pipe) Add arraySort pipe
1729
+
1730
+ - enh(array.pipe) Add arraySort pipe
1419
1731
 
1420
1732
  # 18.10.14
1733
+
1421
1734
  - enh(functions) Add function `formatNumber(value: number: opts): string`
1422
1735
 
1423
1736
  # 18.10.22
1737
+
1424
1738
  - enh(SharedFormGroupValidators) Add more options to `requiredIf` (allow to set the `isEmpty` function)
1425
1739
 
1426
1740
  # 18.10.23
1741
+
1427
1742
  - fix(mat-chips-field) Fix error color
1428
1743
 
1429
1744
  # 18.10.25
1745
+
1430
1746
  - enh(arrays.pipe.ts) move SplitArrayInChunksPipe from sumaris to sumaris-ngx-component
1431
1747
  - enh(function.ts) add utils function to split array in chunks
1432
1748
 
1433
1749
  # 18.10.28
1750
+
1434
1751
  - enh(gallery) Allow to pass options to `gallery.add()` (e.g. `{multiple: true; autoHideDropArea: true}`)
1435
1752
 
1436
1753
  # 18.11.0
1437
- - fix(inputs) `canHaveFocus()`: rename option `excludeEmptyInput` into `isEmpty` (confusing naming)
1438
- - enh(inputs) `canHaveFocus()`: add `isNotEmpty` option
1754
+
1755
+ - fix(inputs) `canHaveFocus()`: rename option `excludeEmptyInput` into `isEmpty` (confusing naming)
1756
+ - enh(inputs) `canHaveFocus()`: add `isNotEmpty` option
1439
1757
 
1440
1758
  # 18.12.2
1441
- - enh(MapPipe) Allow to pass arguments to the `map` pipe (e.g. `value | map: converToSomething: 'arg2'` will call `converToSomething(value, 'arg2'`)
1759
+
1760
+ - enh(MapPipe) Allow to pass arguments to the `map` pipe (e.g. `value | map: converToSomething: 'arg2'` will call `converToSomething(value, 'arg2'`)
1442
1761
 
1443
1762
  # 18.12.3
1763
+
1444
1764
  - enh(AppTable, AppAsyncTable) FUnction `trackFn()` can now return `any` (instead of `number`) - like the official Angular `TrackByFunction`
1445
1765
 
1446
1766
  # 18.12.4
1767
+
1447
1768
  - enh(deps) Fix version of webpack
1448
1769
  - enh(deps) Upgrade ngx-material-table into 18.0.4
1449
1770
 
1450
1771
  # 18.12.5
1772
+
1451
1773
  - enh(functions) Add function `UrlUtils.appendQueryParams()` to append q queryParams (as a map) to an url
1452
1774
 
1453
1775
  # 18.12.6
1454
- - enh(functions) Allow `UrlUtils.appendQueryParams()` to get url as `string | any[]`
1776
+
1777
+ - enh(functions) Allow `UrlUtils.appendQueryParams()` to get url as `string | any[]`
1455
1778
 
1456
1779
  # 18.12.7
1780
+
1457
1781
  - enh(forms) Add `AppFormUtils.setFormErrors()` to apply errors into a form group and it children (inverse function as `getFormErrors()`))
1458
1782
  - enh(forms) Allow `AppFormUtils.getControlFromPath()` to works with any control (FormGroup, FormArray or simple control)
1459
1783
 
1460
1784
  # 18.12.8
1785
+
1461
1786
  - enh(tree-item-entity) Add `TreeItemEntityUtils.fromObjectArrayAsTrees()` to convert array of objects, into trees (return root items)
1462
1787
 
1463
1788
  # 18.12.11
1789
+
1464
1790
  - enh(entities-table-datasource) When saving, do not call `markAsLoading()`
1465
1791
 
1466
1792
  # 18.12.12
1793
+
1467
1794
  - fix(form-container) Avoid to add a child form twice (add a test before adding a child form)
1468
1795
 
1469
1796
  # 18.12.13
1797
+
1470
1798
  - fix(AppTable, AppAsyncTable) When press 'escape' on an edited row will cancel row, if the row is still pristine, instead of trying to confirm the row (see `escapeEditingRow()`)
1471
1799
 
1472
1800
  # 18.13.0
1801
+
1473
1802
  - enh(home) Allow to show notification icons, in the home page, using a new APP_HOME_CONFIG token
1474
1803
  - enh(user-event) Add a modal to show notifications (e.g. for mobile)
1475
1804
 
1476
1805
  # 18.14.0
1806
+
1477
1807
  - enh(network) Add fetch function to load JSON file
1478
- - enh(social) Add a feed component, to display news from a service (e.g. Json Feed or Discourse)
1808
+ - enh(social) Add a feed component, to display news from a service (e.g. Json Feed or Discourse)
1809
+
1810
+ # 18.14.18
1811
+
1812
+ - enh(pipes) Add pipe `arrayMap` to transform each map's items with a function
1813
+ - enh(pipes) Add pipe `mapTo` to transform any object with a function
1814
+ - fix(pipes) Deprecate pipe `map` when input is NOT an observable (should use `mapTo` instead)