@sumaris-net/ngx-components 18.2.31-alpha-3 → 18.2.32
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 +1031 -1028
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +1 -1
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +1 -1
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +3 -3
- package/esm2022/src/app/core/peer/select-peer.module.mjs +1 -1
- package/esm2022/src/app/core/services/config/core.config.mjs +1 -1
- package/esm2022/src/app/core/services/model/node-feature.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/peer.model.mjs +1 -1
- package/esm2022/src/app/core/services/network.service.mjs +1 -1
- package/esm2022/src/app/core/services/network.utils.mjs +1 -1
- package/esm2022/src/app/core/services/storage/entity-store.class.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table.testing.mjs +3 -3
- package/esm2022/src/app/shared/forms.mjs +1 -1
- package/esm2022/src/app/shared/inputs.mjs +1 -1
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +3 -3
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +3 -3
- package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +1 -1
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +5 -3
- package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +1 -1
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +3 -3
- package/esm2022/src/app/shared/material/material.animations.mjs +1 -1
- package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +1 -1
- package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +1 -1
- package/esm2022/src/app/shared/validator/validators.mjs +1 -1
- package/esm2022/src/environments/environment.class.mjs +1 -1
- package/esm2022/src/environments/environment.mjs +1 -1
- package/fesm2022/sumaris-net.ngx-components.mjs +14 -12
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/assets/i18n/en-US.json +735 -735
- package/src/assets/i18n/en.json +734 -734
- package/src/assets/i18n/fr.json +734 -734
- package/src/assets/manifest.json +17 -17
- package/src/theme/_material.scss +213 -213
- package/src/theme/_ngx-components.scss +955 -955
- package/src/theme/_ngx-components.table.scss +597 -597
package/doc/changelog.md
CHANGED
|
@@ -1,1028 +1,1031 @@
|
|
|
1
|
-
# Change log
|
|
2
|
-
|
|
3
|
-
## 0.1.7
|
|
4
|
-
|
|
5
|
-
- enh: Menu: Allow dynamic insertion, using a new config options (see 'CORE_CONFIG_OPTIONS.MENU_ITEMS')
|
|
6
|
-
* Example:
|
|
7
|
-
```js
|
|
8
|
-
const options = [
|
|
9
|
-
// Insert before'MENU.HOME'
|
|
10
|
-
{title: "Item #1", path: "/settings", icon: "people", before: "MENU.HOME"},
|
|
11
|
-
|
|
12
|
-
// Insert after 'MENU.HOME'
|
|
13
|
-
{title: "Item #2", path: "/settings", icon: "people", after: "MENU.HOME"}
|
|
14
|
-
];
|
|
15
|
-
config.properties[CORE_CONFIG_OPTIONS.MENU_ITEMS.key] = JSON.stringify(items);
|
|
16
|
-
```
|
|
17
|
-
Values of 'after' and 'before' will be compared with `title` of existing items.
|
|
18
|
-
|
|
19
|
-
## 0.3.3
|
|
20
|
-
|
|
21
|
-
- enh: CSS `.filter-panel` should be used with `.filter-panel-floating` to enable floating position
|
|
22
|
-
|
|
23
|
-
## 0.3.4
|
|
24
|
-
|
|
25
|
-
- fix: Users table: use floating filter panel
|
|
26
|
-
|
|
27
|
-
## 0.3.5
|
|
28
|
-
|
|
29
|
-
- enh: Add new pipe `arrayFilter` to be able to filter an array, in HTML templates
|
|
30
|
-
|
|
31
|
-
## 0.4.0
|
|
32
|
-
|
|
33
|
-
- enh: CSS: change style of error row (use warning color)
|
|
34
|
-
- enh: CSS: new class '.visible-dirty' (e.g. `<ion-icon name="star" class="visible-dirty"></ion-icon>` in the `actions` column)
|
|
35
|
-
- enh: ValidatorService: add function getI18nErrors(control)
|
|
36
|
-
- enh: AppTable: add outputs 'onDirty', 'onError'
|
|
37
|
-
- enh: AppTable:
|
|
38
|
-
|
|
39
|
-
## 0.4.1
|
|
40
|
-
|
|
41
|
-
- enh: Add new component 'app-actions-columns'
|
|
42
|
-
|
|
43
|
-
## 0.4.2
|
|
44
|
-
|
|
45
|
-
- enh: LoadResult class: Add a `fetchMore()` function
|
|
46
|
-
- enh: Autocomplete field: Add infinite scroll, using `LoadResult.fetchMore()`
|
|
47
|
-
|
|
48
|
-
## 0.4.3
|
|
49
|
-
|
|
50
|
-
- enh: AppTable: add `options` (with property `interactive`) in `deleteRow()` and `deleteRows()`
|
|
51
|
-
Used to avoid user confirmation, when deletion has been confirmed elsewhere
|
|
52
|
-
|
|
53
|
-
## 0.4.4
|
|
54
|
-
|
|
55
|
-
- enh: Rename `<form-buttons-bar>` into `<app-form-buttons-bar>`
|
|
56
|
-
- enh: Export more CSS variables: `--app-paginator-height`, `app-form-buttons-bar-height`
|
|
57
|
-
|
|
58
|
-
## 0.5.0
|
|
59
|
-
|
|
60
|
-
- enh: Table: allow keyboard navigation, using `<app-actions-column>` and function `table.confirmAndBackward()` and `table.confirmAndForward()`
|
|
61
|
-
|
|
62
|
-
## 0.7.10
|
|
63
|
-
|
|
64
|
-
- enh: Table: no more border-left, on dirty rows (because of sticky columns nightmare !)
|
|
65
|
-
|
|
66
|
-
## 0.9.0
|
|
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`
|
|
70
|
-
|
|
71
|
-
## 0.10.0
|
|
72
|
-
|
|
73
|
-
- enh: Add EntityClasses class: use it to get an entity class by name (need to use @EntityClass decorator on the class)
|
|
74
|
-
|
|
75
|
-
## 0.11.4
|
|
76
|
-
|
|
77
|
-
- fix: Autocomplete field: when focus out, move caret to start (fix firefox bug, when `input[type=text]` content is too long)
|
|
78
|
-
|
|
79
|
-
## 0.11.5
|
|
80
|
-
|
|
81
|
-
- enh: Decorator @Entity now generate the static class function `asObject(source: any, opts?: any): any`
|
|
82
|
-
|
|
83
|
-
## 0.15.0
|
|
84
|
-
|
|
85
|
-
- enh: Add IAppForm.loading (optional)
|
|
86
|
-
- enh: Add AppForm.waitIdle()
|
|
87
|
-
- enh: IAppForm, AppForm, AppTabEditor: Add markAsLoading() and markAsLoaded()
|
|
88
|
-
|
|
89
|
-
## 0.18.0
|
|
90
|
-
|
|
91
|
-
- enh: Add AppTable.updateView(): Promise
|
|
92
|
-
- enh: Add AppTableDatasource: rename $busy into loadingSubject
|
|
93
|
-
- fix: Fix InMemoryTable setValue
|
|
94
|
-
- fix: AppTable: after save, refactor code to select previously edited row
|
|
95
|
-
|
|
96
|
-
## 0.19.0
|
|
97
|
-
|
|
98
|
-
- fix: refactor AppFormUtils.copyEntityToForm() for multiple values (split on the character '|' )
|
|
99
|
-
- fix: remove AppFormUtils.copyForm2Entity() - same a form.value
|
|
100
|
-
|
|
101
|
-
## 0.20.0
|
|
102
|
-
|
|
103
|
-
- fix: remove functions `isArray()` (please use `Array.isArray()` instead)
|
|
104
|
-
- enh: Add `AccountService.onChange: Subject` to listen account settings changes
|
|
105
|
-
- fix: Account model: use minify option to serialize as a POD object
|
|
106
|
-
- fix: AccountService: change some internal function's visibility, to protected
|
|
107
|
-
- fix: InMemoryService: fix equals() default implementation (avoid infinite loop)
|
|
108
|
-
- fix: SCSS: Set mat-select-column to width: 50px, to make it compatible with sticky <mat-table>
|
|
109
|
-
- enh: Add ComponentDirtyGuard to public API
|
|
110
|
-
|
|
111
|
-
## 0.20.0
|
|
112
|
-
|
|
113
|
-
- fix: AppEntityEditor: remove confirmation before backClick (use ComponentDirtyGuard instead)
|
|
114
|
-
- fix: AppEntityEditor: cancel() will not ask a confirmation, because called by dirty guard).
|
|
115
|
-
|
|
116
|
-
## 0.23.0
|
|
117
|
-
- fix: MatAutocompleteField: when escape event, close the panel and stop event's propagation
|
|
118
|
-
- fix: AppFormButtonsBar: when escape event, make sure preventDefault!=false before emit a back event
|
|
119
|
-
|
|
120
|
-
## 0.24.0
|
|
121
|
-
|
|
122
|
-
- fix: AppInstallUpgradeCard: use Cordova Downloader plugin, to download APK file correctly
|
|
123
|
-
|
|
124
|
-
## 0.25.0
|
|
125
|
-
|
|
126
|
-
- enh: Add FormErrorAdapter service, configurable using an injection token APP_FORM_ERROR_I18N_KEYS
|
|
127
|
-
- enh: Add pipe 'translateFormError' to translate form error in HTML template
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
## 0.26.0
|
|
131
|
-
|
|
132
|
-
- enh: Rename FormErrorAdapter into FormErrorTranslator
|
|
133
|
-
- enh: Add FormErrorTranslator to AppForm
|
|
134
|
-
- enh: Add directives [matBadgeIcon] and [ionBadgeIcon] to use icon within a matBadge
|
|
135
|
-
|
|
136
|
-
## 0.27.0
|
|
137
|
-
|
|
138
|
-
- enh: Split `AppTabEditor` into `AppEditor` and `AppTabEditor`
|
|
139
|
-
- enh: Add `markAsReady()` to base components (`IAppForm`, `AppForm`, `AppTable`, `AppEditor`)
|
|
140
|
-
- enh: Add `ready() => Promise` to base components (`IAppForm`, `AppForm`, `AppTable`, `AppEditor`)
|
|
141
|
-
- enh: `AppEntityEditor`: wait components is ready, before calling `setValue()`
|
|
142
|
-
- enh: `waitFor()` now return a `Promise<void>` (instead of a `Promise<any>`)
|
|
143
|
-
|
|
144
|
-
## 1.0.0
|
|
145
|
-
|
|
146
|
-
- enh: Store local settings remotely
|
|
147
|
-
- fix: Fix suggestFromArray when items is null
|
|
148
|
-
- fix: Fix parsing error, in GraphQL service (e.g error from Oracle database)
|
|
149
|
-
|
|
150
|
-
## 1.2.5
|
|
151
|
-
|
|
152
|
-
- fix: Install/Upgrade component: can now download file, on Android devices
|
|
153
|
-
|
|
154
|
-
## 1.5.1
|
|
155
|
-
|
|
156
|
-
- enh: MatAutocompleteField: set header position has sticky, in CSS
|
|
157
|
-
- enh: MatAutocompleteField: if mobile, set autocomplete panel's position to 'above' (instead of 'auto') because keyboard should open at the bottom
|
|
158
|
-
- fix: AppForm: add method 'unregisterSubscription()'
|
|
159
|
-
- fix: Account: disable form when offline
|
|
160
|
-
|
|
161
|
-
# 1.5.6
|
|
162
|
-
|
|
163
|
-
- enh: Add observables.waitForTrue() function
|
|
164
|
-
- enh: Editor: apply ready() opts (timeout, dueTime)
|
|
165
|
-
- fix: suggestFromArray: fix sorting
|
|
166
|
-
|
|
167
|
-
# 1.5.8
|
|
168
|
-
|
|
169
|
-
fix: When deleting rows selection, make sure to confirm edited row first
|
|
170
|
-
|
|
171
|
-
# 1.6.4
|
|
172
|
-
|
|
173
|
-
enh: EntitiesTableDateSource: Add 'fetchMore()' function (usable when dataService fill LoadResult.fetchMore)
|
|
174
|
-
fix: Auth modal: show error (e.g. when bad credentials)
|
|
175
|
-
fix: MatChipsField: rename 'compareWith' in 'equals'
|
|
176
|
-
enh: MatChipsField: Allow setup chips color
|
|
177
|
-
fix: MatSwipeField: rename 'compareWith' in 'equals'
|
|
178
|
-
|
|
179
|
-
# 1.6.5
|
|
180
|
-
|
|
181
|
-
fix: MatChipsField: Fix 'focusOut' then 'focusIn' behavior
|
|
182
|
-
fix: MatAutocompleteField: Fix 'focusOut' then 'focusIn' behavior
|
|
183
|
-
|
|
184
|
-
# 1.6.18
|
|
185
|
-
fix: MatDateTimeField: Fix when no Keyboard plugin
|
|
186
|
-
|
|
187
|
-
# 1.7.0
|
|
188
|
-
|
|
189
|
-
enh: Add directive `*ngVar` - see https://stackoverflow.com/questions/38582293/how-to-declare-a-variable-in-a-template-in-angular
|
|
190
|
-
|
|
191
|
-
# 1.8.1
|
|
192
|
-
|
|
193
|
-
enh: IEntityService: add new function `canUserWrite()`
|
|
194
|
-
enh: AppEntityEditor: add a default implementation of `canUserWrite()`
|
|
195
|
-
|
|
196
|
-
# 1.9.5
|
|
197
|
-
|
|
198
|
-
enh: AppTable: Add injector in constructor
|
|
199
|
-
fix: Platform: detect window touchscreen as NOT mobile
|
|
200
|
-
fix: AppEntityEditor: make sure to unsubscribe listen remote changes, when destroy
|
|
201
|
-
fix: Home: fix layout, of card close button, in history items
|
|
202
|
-
fix: Make sure to use LocalSettingsServicesettings.mobile instead of PlatformService.mobile
|
|
203
|
-
enh: Account: auto start listen changes on pod, during the user session
|
|
204
|
-
|
|
205
|
-
# 1.10.1
|
|
206
|
-
|
|
207
|
-
fix: AppTable: Fix table row deletion, when editedRow is invalid and not saved yet - fix issue IMAGINE-669
|
|
208
|
-
|
|
209
|
-
# 1.10.9
|
|
210
|
-
|
|
211
|
-
fix: AppTable: Fix table when calling save with options : `keepEditing=false`
|
|
212
|
-
|
|
213
|
-
# 1.11.0
|
|
214
|
-
|
|
215
|
-
enh: Add component UploadFilePopover
|
|
216
|
-
enh: Add component TextPopover
|
|
217
|
-
enh: Upgrade to @apollo/client 3.5.10
|
|
218
|
-
|
|
219
|
-
# 1.12.1
|
|
220
|
-
|
|
221
|
-
fix: searchTextFilter: escape special characters to avoid RegExp parse exception
|
|
222
|
-
enh: Autocomplete: Move result count in footer
|
|
223
|
-
|
|
224
|
-
# 1.12.4
|
|
225
|
-
|
|
226
|
-
fix: AppTable: Avoid deleting a row twice, when deleting an invalid row BUT not editing
|
|
227
|
-
|
|
228
|
-
# 1.12.13
|
|
229
|
-
enh: Add pipes formGet, formGetControl and formGetArray, to get a form controls
|
|
230
|
-
enh: Add pipe strIncludes
|
|
231
|
-
|
|
232
|
-
# 1.13.0
|
|
233
|
-
enh: Add utility class SharedAsyncValidators
|
|
234
|
-
enh: Add SharedAsyncValidators.registerAsyncValidator() to add long during validation job
|
|
235
|
-
fix: BaseEntityService: listenChanges() now return an empty observable, when not implemented, instead of error
|
|
236
|
-
fix: InstallUpgradeCard: do not show install link, on Windows touch screen
|
|
237
|
-
|
|
238
|
-
# 1.14.0
|
|
239
|
-
enh: Platform: auto reload web browser's page, if a new version is detected at startup
|
|
240
|
-
# 1.14.2
|
|
241
|
-
enh: Add DateUtils.resetTime(date, tz?: string)
|
|
242
|
-
|
|
243
|
-
# 1.15.0
|
|
244
|
-
fix: MateDateField: make sure to display errors
|
|
245
|
-
fix: MateDateField: Allow to show matPrefix (e.g. icon)
|
|
246
|
-
fix: MateDateField: Better management of mat-error
|
|
247
|
-
fix: MateDateTimeField: Add error for dateIsBefore
|
|
248
|
-
enh: SharedValidators: add new validator 'dateIsBefore'
|
|
249
|
-
|
|
250
|
-
# 1.15.1
|
|
251
|
-
fix: MateDateField: Add a timezone to serialize/deserialize date value
|
|
252
|
-
|
|
253
|
-
# 1.15.4
|
|
254
|
-
enh: MateDateField: Add an input 'datePickerFiler' to filter dates in picker
|
|
255
|
-
enh: MateDateTimeField: Add an input 'datePickerFiler' to filter dates in picker
|
|
256
|
-
|
|
257
|
-
# 1.15.9
|
|
258
|
-
fix: Editor listenChanges() should not update the cache, but call reload() when changes detected.
|
|
259
|
-
This will allow fetching partial graph in subscriptions
|
|
260
|
-
enh: Editor: show a toast when remote changes are detected
|
|
261
|
-
fix: Cache: minor fix
|
|
262
|
-
|
|
263
|
-
# 1.15.13
|
|
264
|
-
fix: File upload component: fix file/event management
|
|
265
|
-
enh: Add new pipe 'formGetGroup:<name>'
|
|
266
|
-
|
|
267
|
-
# 1.16.0
|
|
268
|
-
enh: Refactor JobUtils functions: 'progression' is now optional, and hold by options
|
|
269
|
-
|
|
270
|
-
# 1.17.0
|
|
271
|
-
fix: GraphQL: set NetworkStatus.error on error object in order to throw corresponding exception
|
|
272
|
-
|
|
273
|
-
# 1.17.1
|
|
274
|
-
fix: Hotkeys: Prevent global hotkeys when popover component exists
|
|
275
|
-
|
|
276
|
-
# 1.18.0
|
|
277
|
-
enh: Autocomplete field: Add search bar on mobile
|
|
278
|
-
fix: Autocomplete field: Fix style when multiple=true
|
|
279
|
-
fix: Autocomplete field: Fix default displayWith when multiple=true (manage array value)
|
|
280
|
-
fix: Exclude Windows from the platform mobile detection
|
|
281
|
-
|
|
282
|
-
# 1.18.4
|
|
283
|
-
fix: Autocomplete: fix search in mobile searchbar
|
|
284
|
-
enh: Material field components: allow to set 'required' as empty tag, and not only '[required]=true'
|
|
285
|
-
|
|
286
|
-
# 1.18.4
|
|
287
|
-
fix: Autocomplete: fix panel width, on small screens
|
|
288
|
-
|
|
289
|
-
# 1.18.7
|
|
290
|
-
fix: fix DateUtils.min() and DateUtils.max()
|
|
291
|
-
|
|
292
|
-
# 1.19.0
|
|
293
|
-
enh: Add a MessageModal, to compose message to users (internal or email messages)
|
|
294
|
-
fix: MatDateField: if not required, manually set a date will not apply the value to formControl
|
|
295
|
-
|
|
296
|
-
# 1.19.1
|
|
297
|
-
fix: Platform detection failed (infinite loop) on MacBook
|
|
298
|
-
|
|
299
|
-
# 1.19.2
|
|
300
|
-
fix: Platform detection cache
|
|
301
|
-
|
|
302
|
-
# 1.19.3
|
|
303
|
-
enh: AppForm now wait form not pending, before emitting onSubmit event
|
|
304
|
-
|
|
305
|
-
# 1.19.6
|
|
306
|
-
fix: Fix toolbar back button
|
|
307
|
-
fix: Autocomplete: Fix multiple values (displayValue was no shown)
|
|
308
|
-
fix: Autocomplete: avoid to many call to suggest, on mobile
|
|
309
|
-
fix: Autocomplete: use mat-option for searchbar, to have selected option is visible
|
|
310
|
-
fix: Install APK: make sure to have '.apk' at end of filename
|
|
311
|
-
fix: Auth modal: keep modal into loading, when waiting server response
|
|
312
|
-
enh: Create a specific card for offline mode update
|
|
313
|
-
fix: Entity storage: do NOT set skipIfPristine to false, when storage keep non local entities (e.g. OperationVO)
|
|
314
|
-
enh: Entity storage: persist() has a new option skipIfPristine, to be able to force all data to be stored, even if not dirty
|
|
315
|
-
|
|
316
|
-
# 1.19.7
|
|
317
|
-
enh: Add pipe 'formGetValue' that will listen value changes (from a form or a control)
|
|
318
|
-
|
|
319
|
-
# 1.19.16
|
|
320
|
-
fix: Date and Date Short field: optimize <mat-error> with a switch/case
|
|
321
|
-
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
|
|
323
|
-
|
|
324
|
-
# 1.19.18
|
|
325
|
-
fix: Add a workaround to patch <html> class to 'plt-desktop', on Windows touch screen (fix sumaris-app issue #346)
|
|
326
|
-
enh: EntitiesStorage: detect platform pause, to force saving the storage
|
|
327
|
-
|
|
328
|
-
# 1.19.23
|
|
329
|
-
fix: Menu: avoid to many call of onLogin() function (add a distinctUntilChanged() filter)
|
|
330
|
-
fix: MateDateTime: set required validator using template, and no more by overriding formControl.validator (allow to change the required value)
|
|
331
|
-
fix: EntityEditor: wait end of saving, in waitIdle() function
|
|
332
|
-
fix: EntityEditor: add debug log when changing/updating route
|
|
333
|
-
fix: EntityEditor.load(): rename the unused options 'updateTabAndRoute' into 'updateRoute'
|
|
334
|
-
fix: EntityEditor.load(): allow to reset to the first tab (e.g. when load another entity into an existing editor)
|
|
335
|
-
|
|
336
|
-
# 1.19.23
|
|
337
|
-
fix: Editor: allow to skip page history (computePageHistory can return 'undefined')
|
|
338
|
-
|
|
339
|
-
# 1.19.25
|
|
340
|
-
fix: Home: translate 'Loading...' message
|
|
341
|
-
|
|
342
|
-
# 1.19.28
|
|
343
|
-
enh: Add function escapeRegExp() to escape all special regexp characters
|
|
344
|
-
|
|
345
|
-
# 1.19.30
|
|
346
|
-
enh: Add argument to pipe 'formGetValue' to listen status change (e.g. to force update, when emitEvent: false)
|
|
347
|
-
|
|
348
|
-
# 1.20.0
|
|
349
|
-
|
|
350
|
-
enh: Menu: allow to enable/disable menu
|
|
351
|
-
enh: Menu: rename MenuService.menuVisible$ into MenuService.splitPaneWhen
|
|
352
|
-
|
|
353
|
-
# 1.20.2
|
|
354
|
-
|
|
355
|
-
enh: Material fields: add @Input() appearance
|
|
356
|
-
|
|
357
|
-
# 1.20.3
|
|
358
|
-
enh: css-variables-to-root-mobile() will expose variables '--mat-tab-link-height' and '--mat-tab-bar-height'
|
|
359
|
-
|
|
360
|
-
# 1.20.4
|
|
361
|
-
enh: Add helper class CsvUtils
|
|
362
|
-
enh: Add pipe formatProperty
|
|
363
|
-
enh: Add directive [appAutoTitle] for <ion-label> or <mat-label>
|
|
364
|
-
|
|
365
|
-
# 1.20.5
|
|
366
|
-
enh: formatProperty pipe: when type is 'boolean', display a translated Yes/No
|
|
367
|
-
|
|
368
|
-
# 1.20.7
|
|
369
|
-
enh: add function FileUtils.writeTextToFile()
|
|
370
|
-
|
|
371
|
-
# 1.20.11
|
|
372
|
-
enh: add function FileUtils.downloadUri()
|
|
373
|
-
|
|
374
|
-
# 1.20.13
|
|
375
|
-
fix: fix SharedValidators.decimal() when maxDecimals = 3 (cached regexp was wrong)
|
|
376
|
-
|
|
377
|
-
# 1.20.14
|
|
378
|
-
fix: Menu: Force menu update when config changed
|
|
379
|
-
|
|
380
|
-
# 1.20.16
|
|
381
|
-
fix: MatChipsField: fix chip height
|
|
382
|
-
|
|
383
|
-
# 1.20.17
|
|
384
|
-
fix: Add module ResizableModule, for MatTable column resize
|
|
385
|
-
|
|
386
|
-
# 1.20.18
|
|
387
|
-
fix: PlatformService.download() now useFileUtils.download(), that create a temp download (not need browser permission to open popup)
|
|
388
|
-
|
|
389
|
-
# 1.20.19
|
|
390
|
-
enh: Add new abstract class AppEntityEditorModal, that can managed many forms and tables
|
|
391
|
-
|
|
392
|
-
# 1.20.20
|
|
393
|
-
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
|
-
|
|
395
|
-
# 1.20.21
|
|
396
|
-
fix: Fix mat latlong field: was broken since v1.19.13
|
|
397
|
-
|
|
398
|
-
# 1.20.21
|
|
399
|
-
fix: Fix MatDateField mat-error display (was too large)
|
|
400
|
-
|
|
401
|
-
# 1.20.24
|
|
402
|
-
fix: Revert change on LatLongField (SCSS file was removed ??)
|
|
403
|
-
|
|
404
|
-
# 1.20.25
|
|
405
|
-
fix: MatBooleanField: set indeterminate=true, when value is null
|
|
406
|
-
|
|
407
|
-
# 1.20.27
|
|
408
|
-
|
|
409
|
-
fix: Mat***Field: add `@Input() appearance`
|
|
410
|
-
|
|
411
|
-
# 1.20.30
|
|
412
|
-
fix: Add InMemoryDataService.hiddenCount
|
|
413
|
-
|
|
414
|
-
# 1.20.33
|
|
415
|
-
fix: MatAutocompleteField: reload items when cleaning text, and no suggestLengthThreshold
|
|
416
|
-
|
|
417
|
-
# 1.20.34
|
|
418
|
-
fix: AppTable: remove 'opts.skipIfLoading' on delete functions, to use only 'opts.interactive' to force deletion when table is busy.
|
|
419
|
-
|
|
420
|
-
# 1.21.0
|
|
421
|
-
enh: AppForm: use public behavior subjects: readySubject, loadingSubject, errorSubject
|
|
422
|
-
|
|
423
|
-
# 1.22.0
|
|
424
|
-
enh: Add social components: UserEventNotification and JobProgression
|
|
425
|
-
|
|
426
|
-
# 1.22.1
|
|
427
|
-
enh: Menu: add APP_MENU_OPTIONS token, to configure menu (e.g. show notification icon in the left menu header)
|
|
428
|
-
|
|
429
|
-
# 1.22.9
|
|
430
|
-
enh: Remove <app-user-events-table> (move to specific sub projects that use ngx-components)
|
|
431
|
-
|
|
432
|
-
# 1.22.11
|
|
433
|
-
enh: Rename <app-user-event-notification-component> into <app-user-event-notification-icon>
|
|
434
|
-
|
|
435
|
-
# 1.22.12
|
|
436
|
-
enh: Can mark a Moment without time, allowing empty time field in MatDateTime
|
|
437
|
-
|
|
438
|
-
# 1.23.6
|
|
439
|
-
fix: Many fix in table. Upgrade to ngx-material-table 0.12.0
|
|
440
|
-
enh: Table, Form and Editor: Add a destroySubject
|
|
441
|
-
enh: Observables functions first***Promise() : add more options (timeout or stop notifier)
|
|
442
|
-
|
|
443
|
-
# 1.23.10
|
|
444
|
-
enh: Autocomplete: add a 'title' property on each option, on desktop screen
|
|
445
|
-
|
|
446
|
-
# 1.23.11
|
|
447
|
-
fix: Memory Data service: now implement IStartableService
|
|
448
|
-
enh: StartableService: use a stopSubject, to stop waitFor promise
|
|
449
|
-
enh: remove unused class EntitiesService. Use IEntitiesService instead
|
|
450
|
-
|
|
451
|
-
# 1.23.26
|
|
452
|
-
enh: Add new pipe 'arrayJoin'
|
|
453
|
-
enh: 'arrayPluck' pipe: allow to use string[] for path
|
|
454
|
-
enh: getPropertyByPath() function now allow to use string[] as path
|
|
455
|
-
|
|
456
|
-
# 1.23.29
|
|
457
|
-
enh: FormArrayHelper: add setValue() to resize the FormArray, then set value
|
|
458
|
-
|
|
459
|
-
# 1.23.30
|
|
460
|
-
fix: InMemoryDataService: do NOT apply default sortReplacement id -> rankOrder
|
|
461
|
-
|
|
462
|
-
# 1.23.31
|
|
463
|
-
fix: InMemoryDataService: change 'dirtySubject' as public property
|
|
464
|
-
|
|
465
|
-
# 1.23.39
|
|
466
|
-
enh: Add FormArrayHelper.patchValue() : clear array, then push each value
|
|
467
|
-
fix: StartableService: avoid to log error when stopped
|
|
468
|
-
|
|
469
|
-
# 1.23.41
|
|
470
|
-
enh: AppEditor: Add 'loaded' getter
|
|
471
|
-
|
|
472
|
-
# 1.23.44
|
|
473
|
-
enh: Referential model: add a 'icon' property (IconRef)
|
|
474
|
-
|
|
475
|
-
# 1.23.46
|
|
476
|
-
enh: Add `ColorScale.getValueColor(): Color`
|
|
477
|
-
enh: EntityEditorModal: rename input `isNewData` into `isNew`
|
|
478
|
-
|
|
479
|
-
# 1.23.51
|
|
480
|
-
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
|
|
484
|
-
|
|
485
|
-
# 1.23.61
|
|
486
|
-
- fix: Boolean field: fix button layout
|
|
487
|
-
|
|
488
|
-
# 1.23.65
|
|
489
|
-
- enh: Add pipes: isNotNil and isNotNilOrNaN
|
|
490
|
-
|
|
491
|
-
# 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
|
|
494
|
-
|
|
495
|
-
# 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
|
|
502
|
-
|
|
503
|
-
# 2.1.0
|
|
504
|
-
- enh: Add new class AppFormArray with all functions of FormArrayHelper
|
|
505
|
-
|
|
506
|
-
# 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
|
|
510
|
-
|
|
511
|
-
# 2.2.3
|
|
512
|
-
- enh: Test Geolocation.getCurrentPosition() in the lat/long field test page
|
|
513
|
-
|
|
514
|
-
# 2.2.4
|
|
515
|
-
- fix: Fix DateUtils.isSame(), when first argument is nil, but the second not
|
|
516
|
-
- enh: AppTable: allow to call deleteSelection with opts (e.g `{interactive: false}`)
|
|
517
|
-
|
|
518
|
-
# 2.2.6
|
|
519
|
-
- fix: Refresh menu on any account changes (login changes - eg. when account updated)
|
|
520
|
-
|
|
521
|
-
# 2.2.8
|
|
522
|
-
- fix: Table actions column: add CSS variable to set column width, min-width and max-width
|
|
523
|
-
|
|
524
|
-
# 2.3.7
|
|
525
|
-
- fix: Mat form field: use inherit font size (do not force font-size, in the theme)
|
|
526
|
-
- fix: MatDateShort: fix behaviour for Angular 14
|
|
527
|
-
|
|
528
|
-
# 2.4.0
|
|
529
|
-
- Breaking change: ProgressBarService and HTTP_INTERCEPTORS no longer provided in SharedModule (see: AppModule)
|
|
530
|
-
- enh: Make ProgressBarService fully optional (InjectionToken: APP_PROGRESS_BAR_SERVICE)
|
|
531
|
-
- enh: Settings: the settings object is now stored in json format
|
|
532
|
-
|
|
533
|
-
# 2.4.1
|
|
534
|
-
- fix: AppFormArray: do not resize the array when patchValue() receive `undefined` value (e.g. useful when called by parent, recursively, without value)
|
|
535
|
-
- fix: AppAsyncTable: optimize markAsUntouched()
|
|
536
|
-
|
|
537
|
-
# 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)
|
|
539
|
-
|
|
540
|
-
# 2.4.3
|
|
541
|
-
- fix: AppFormArray: do not resize the array when patchValue() receive `null` or `undefined` value (same behavior as official `FormArray.patchValue()`)
|
|
542
|
-
|
|
543
|
-
# 2.4.4
|
|
544
|
-
- fix: Applying environment defaultLocale, when settings data has no locale (merge some code from lpecquot, that was in a branch)
|
|
545
|
-
|
|
546
|
-
# 2.4.9
|
|
547
|
-
- fix: Settings: allow to store settings as string (like < 2.4.0) using an injection token
|
|
548
|
-
|
|
549
|
-
# 2.4.10
|
|
550
|
-
- fix: When detecting a app update, stop the check timer to avoid to many toast to be displayed
|
|
551
|
-
|
|
552
|
-
# 2.4.14
|
|
553
|
-
- enh: add function `setPropertyByPath()`
|
|
554
|
-
- fix: Implement `EntityUtils.getPropertyByPath()` using generic shared function `getPropertyByPath()`
|
|
555
|
-
|
|
556
|
-
# 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
|
|
558
|
-
|
|
559
|
-
# 2.4.16
|
|
560
|
-
- fix: `SharedModule.forRoot()`: make environment optional, to be defined it in the `app.module.ts` (need by Quadrige App)
|
|
561
|
-
|
|
562
|
-
# 2.4.17
|
|
563
|
-
- fix: MatLatLongField: remove strict character regexp, in degrees part, to be able to set only one digit (e.g. `9°`)
|
|
564
|
-
|
|
565
|
-
# 2.4.18
|
|
566
|
-
- fix: MatDateShortField: fix control validation, in desktop mode
|
|
567
|
-
|
|
568
|
-
# 2.4.19
|
|
569
|
-
- fix: MatAutocompleteField: revert the cdk overlay position, when closing the mat-select panel
|
|
570
|
-
|
|
571
|
-
# 2.4.23
|
|
572
|
-
- enh: Add DateUtils.markTime(), to reset the 'no time' marker
|
|
573
|
-
- enh: Add DateUtilsEntityEditor: simplify updateTabAndRoute()
|
|
574
|
-
- enh: Add DateUtilsEntityEditor: updateRoute() now manage queryParams change, before /new to /:id transition
|
|
575
|
-
- enh: Toolbar: goBack() return a boolean
|
|
576
|
-
|
|
577
|
-
# 2.4.25
|
|
578
|
-
- enh: Environment: add a boolean option 'sameUrlPeer', to force network to start on peer at the same URL
|
|
579
|
-
- enh: EntityEditor: allow to listen changes on local entity
|
|
580
|
-
- enh: add functions collectByProperty() to split an array in a map of array
|
|
581
|
-
|
|
582
|
-
# 2.4.26
|
|
583
|
-
- fix: Rename pipe 'isNotOnField' by 'isOnDesk'
|
|
584
|
-
|
|
585
|
-
# 2.4.28
|
|
586
|
-
- enh: TranslateContext: allow to translate many keys (string[])
|
|
587
|
-
- fix: Force ngx-quicklink to 0.3.0
|
|
588
|
-
|
|
589
|
-
# 2.4.31
|
|
590
|
-
- enh: Add JsonUtils.parseFile()
|
|
591
|
-
|
|
592
|
-
# 2.4.33
|
|
593
|
-
- enh: Add AppPropertiesForm.length
|
|
594
|
-
|
|
595
|
-
# 2.4.48
|
|
596
|
-
- fix: Fix highlight pipe (used by autocomplete field)
|
|
597
|
-
|
|
598
|
-
# 2.4.50
|
|
599
|
-
- enh: Add type 'enums' for AppFormField
|
|
600
|
-
|
|
601
|
-
# 2.4.54
|
|
602
|
-
- enh: Use NavController by default, instead of Angular router. This will use the default animation style of the OS
|
|
603
|
-
|
|
604
|
-
# 2.4.55
|
|
605
|
-
- fix: Editor: Disable animation, when reloading same page after saving
|
|
606
|
-
|
|
607
|
-
# 2.4.58
|
|
608
|
-
- enh: Add storage explorer (with log preview)
|
|
609
|
-
- enh: Add debug service (to send debug data to server)
|
|
610
|
-
- enh: Add logging service
|
|
611
|
-
|
|
612
|
-
# 2.4.61
|
|
613
|
-
- enh: Add logger on network service
|
|
614
|
-
|
|
615
|
-
# 2.4.67
|
|
616
|
-
fix: Minor fix (add missing i18n)
|
|
617
|
-
fix: GeolocationUtils: add many useful functions, and detect Capacitor errors (from message)
|
|
618
|
-
fix: Fix some issues in storage explorer
|
|
619
|
-
|
|
620
|
-
# 2.4.74
|
|
621
|
-
enh: LocalSettingsService: save changes in local storage, when calling setProperty()
|
|
622
|
-
|
|
623
|
-
# 2.4.75
|
|
624
|
-
enh: SharedValidator: add a precision validator
|
|
625
|
-
|
|
626
|
-
# 2.4.79
|
|
627
|
-
fix: ImageGallery: fix add button icon (center alignement)
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
# 2.4.81
|
|
631
|
-
fix: AppToolbar: allow to use ion-segment in app-toolbar
|
|
632
|
-
|
|
633
|
-
# 2.4.82
|
|
634
|
-
enh: Migrate to Ionic 7
|
|
635
|
-
fix: Form field: show the clear button, when clearable=true, on types 'integer', 'double', 'string', 'date' and 'date-time'
|
|
636
|
-
|
|
637
|
-
# 2.4.82
|
|
638
|
-
enh: AppEntityEditor: add get/set for autoOpenNextTab
|
|
639
|
-
|
|
640
|
-
# 2.4.87
|
|
641
|
-
fix: AppEntityEditor: When reload the editor, force the fetch policy to 'network-only'
|
|
642
|
-
|
|
643
|
-
# 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)
|
|
645
|
-
|
|
646
|
-
# 2.4.88
|
|
647
|
-
enh: Add protected BaseEntityService.getLoadQueryNames()
|
|
648
|
-
|
|
649
|
-
# 2.4.89
|
|
650
|
-
fix: Fix Autocomplete searchbar value trigger, after ionic 7 update
|
|
651
|
-
|
|
652
|
-
# 2.4.90
|
|
653
|
-
fix: AppEntityEditor: when catch error in save(), set the selectedTabIndex=0 before calling setError()
|
|
654
|
-
This will allow subclasses to override the default selectedTabIndex after an error occur, inside the overridden setError()
|
|
655
|
-
|
|
656
|
-
# 2.4.91
|
|
657
|
-
enh: functions: allow to use sort(array) without the 'attribute' argument (e.g. allow to sort a string[])
|
|
658
|
-
|
|
659
|
-
# 2.4.95
|
|
660
|
-
fix: Platform: avoid error at startup, because of StatusBar in web mode
|
|
661
|
-
enh: MatBooleanField: display value when disabled, instead of 'empty'
|
|
662
|
-
|
|
663
|
-
# 2.4.112
|
|
664
|
-
enh: AppBadge: allow to set a text or number content
|
|
665
|
-
|
|
666
|
-
# 2.4.114
|
|
667
|
-
enh: Menu: allow to add sub menu item
|
|
668
|
-
|
|
669
|
-
# 2.4.158
|
|
670
|
-
enh: Environment: add useHash property to configure Angular router to use hash URL (need by web-ext)
|
|
671
|
-
|
|
672
|
-
# 2.5.0
|
|
673
|
-
- enh: Add token APP_USER_SETTINGS_OPTIONS of type UserSettingsOptions to add user properties table in AccountPage
|
|
674
|
-
- fix: MatBooleanField: in checkbox style, the placeholder can be shown as expected
|
|
675
|
-
|
|
676
|
-
# 2.6.0
|
|
677
|
-
- enh: Account: Add User tokens (table and modal)
|
|
678
|
-
|
|
679
|
-
# 2.6.23
|
|
680
|
-
- fix: Fix Configuration.getPropertyAsNumbers() when no value (avoid to get an array with an unique NaN value)
|
|
681
|
-
|
|
682
|
-
# 2.6.25
|
|
683
|
-
- enh: Upgrade to nodejs 18
|
|
684
|
-
- fix: Menu: hide spacer divider ion-label (hide the skeleton)
|
|
685
|
-
|
|
686
|
-
# 2.6.28
|
|
687
|
-
- fix: ImageGallery: Change image's title background color
|
|
688
|
-
|
|
689
|
-
# 2.6.31
|
|
690
|
-
- fix: ImageGallery: Add output event when after editing title
|
|
691
|
-
|
|
692
|
-
# 2.6.32
|
|
693
|
-
- fix: AppFormArray: Avoid an infinite loop, when calling resize(0) if options.allowEmptyArray=false
|
|
694
|
-
- 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)
|
|
696
|
-
|
|
697
|
-
# 2.6.34
|
|
698
|
-
- enh: functions: add a static function `underscoreToChangeCase()`
|
|
699
|
-
|
|
700
|
-
# 2.6.35
|
|
701
|
-
- fix: Settings: Add type for property `OfflineFeature.filter`, then use it to in `LocalSettingsService.getOfflineFeatures()`
|
|
702
|
-
|
|
703
|
-
# 2.6.38
|
|
704
|
-
- fix: Fix mapGet pipe, when key is zero (0)
|
|
705
|
-
|
|
706
|
-
# 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>`)
|
|
708
|
-
|
|
709
|
-
# 2.8.0
|
|
710
|
-
- enh: `IAppForm<T>` : add a type `<T=any>`
|
|
711
|
-
- enh: `IAppForm` : add optional functions `setValue()`, `patchValue()`, `resetValue()` and `getValue()`
|
|
712
|
-
- fix: `AppForm` and `AppEditor`: Remove unused and deprecated properties `_loading`, `_$ready`, `_$loading`
|
|
713
|
-
- fix: `AppForm` : rename `_enable` as `enabled` to avoid confusion with `enable()`
|
|
714
|
-
- 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 :
|
|
716
|
-
- `isSelected`: e.g. `selection | isSelected: row`,
|
|
717
|
-
- `isEmptySelection`: e.g. `selection | isEmptySelection`
|
|
718
|
-
- `isNotEmptySelection`: e.g. `selection | isNotEmptySelection`
|
|
719
|
-
- `selectionLength`: e.g. `selection | selectionLength`,
|
|
720
|
-
- `isMultipleSelection`: e.g. `selection | isMultipleSelection`,
|
|
721
|
-
- enh: Add new pipes for table :
|
|
722
|
-
- `isAllSelected`: e.g. `table | isAllSelected`,
|
|
723
|
-
- `isNotAllSelected`: e.g. `table | isNotAllSelected`
|
|
724
|
-
|
|
725
|
-
# 2.8.1
|
|
726
|
-
- enh: Add a pipe `badgeNumber` to limit badge content when > `99` (will display `99+`)
|
|
727
|
-
- enh: function setPropertyByPath() now return the input obj
|
|
728
|
-
- fix: Referential: fix `asObject()`
|
|
729
|
-
- enh: Add options:
|
|
730
|
-
- `sumaris.defaultLatLongFormat.enabled` to show/hide default Lat/Lon setting in account page (default is true)
|
|
731
|
-
- `sumaris.auth.api.token.scope.enabled` to show/hide scopes in API token table (default is false)
|
|
732
|
-
- `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
|
-
- enh: Add AppRowField component: wrap an AppFormField into a table column
|
|
734
|
-
- enh: Add pipe `valueFormat` to format a value with a FormFieldDefinition (equivalent to pipe `propertyFormat`)
|
|
735
|
-
- fix: `UploadFileComponent` Refactored
|
|
736
|
-
- enh: Add new config options to override the form field background color (active, focus or disabled)
|
|
737
|
-
- enh: Add new pipe `booleanFormat`
|
|
738
|
-
- enh: Update pipe `propertyFormat` to use complex path (using `getPropertyByPath()`)
|
|
739
|
-
- enh: Add static functions `CsvUtils.getLocalizedEncoding()` and `CsvUtils.getLocalizedSeparator()`
|
|
740
|
-
- enh: Add static function `JsonUtils.getLocalizedEncoding()`
|
|
741
|
-
|
|
742
|
-
# 2.8.2
|
|
743
|
-
- enh: Function `getPropertyByPath` now handles the optional chaining operator `(?.)`
|
|
744
|
-
- enh: Add `AccountService.onWillLogout` emitter
|
|
745
|
-
- fix: Table: Call `emitRefresh()` instead of `onRefresh.emit()` to safely emit to an opened Observable
|
|
746
|
-
|
|
747
|
-
# 2.8.3
|
|
748
|
-
- enh: Add support of `<mat-hint>` in MatDateTime, MatDate, MatDateShort, MatAutocompleteField and MatLatLongField
|
|
749
|
-
- enh: Add `DateUtils.compare` to be able to sort dates (using Array `sort()`)
|
|
750
|
-
- enh: Add function `resizeArray(T[], size): T[]`
|
|
751
|
-
- fix: NamedFilter: Abort import if callback returns null or undefined
|
|
752
|
-
- fix: DataSource: Allow to refresh datasource (using `watchAll()`) when having dirty row
|
|
753
|
-
|
|
754
|
-
# 2.8.4
|
|
755
|
-
- enh: MatBooleanField: add `@Input() clearable` (default to `false`)
|
|
756
|
-
- fix: MatBooleanField: when resetting value, hide radio buttons
|
|
757
|
-
|
|
758
|
-
# 2.8.11
|
|
759
|
-
- fix: MatBooleanField: hide checkbox's placeholder when floatLabel=never
|
|
760
|
-
|
|
761
|
-
# 2.8.12
|
|
762
|
-
- enh: Pipe `referentialToString`: add new option `propertySeparator` to override the default ' - ' separator
|
|
763
|
-
|
|
764
|
-
# 2.8.13
|
|
765
|
-
- enh: AsyncTable: make `setFilter()` async
|
|
766
|
-
|
|
767
|
-
# 2.8.14
|
|
768
|
-
- enh: Upgrade to ngx-material-table 17.2.1 (add options to TableElement `delete()`, `cancelOrDelete()` and `confirmEditCreate()`)
|
|
769
|
-
|
|
770
|
-
# 2.9.0
|
|
771
|
-
- enh: Upgrade to Angular 17.3
|
|
772
|
-
- fix: Replace zone.js `setTimeout()`, by rx-angular zone-less
|
|
773
|
-
- fix: IFormControlPathTranslator : Rename interface IFormControlPathTranslator into IFormPathTranslator, and rename property `controlPathTranslator` into `pathTranslator`
|
|
774
|
-
- fix: Remove deprecated validator `SharedValidators.double` (was renamed into `SharedValidators.decimal`)
|
|
775
|
-
- fix: AppAsyncTable: re add `@Input() get filter`
|
|
776
|
-
- fix: AppTable: clear selection when opening a row (like AppAsyncTable)
|
|
777
|
-
- fix: MatAutocompleteField: Add `@Input() panelClass` (same as `class`)
|
|
778
|
-
- fix: MatAutocompleteField: Allow boolean inputs from string (using `@Input({transform: booleanAttribute})`)
|
|
779
|
-
- fix: MatAutocompleteField: add `panelWidth` and `panelClass` to `MatAutocompleteFieldConfig`
|
|
780
|
-
|
|
781
|
-
# 2.9.1
|
|
782
|
-
- fix: MatAutocompleteField: revert `applyImplicitValue` default value `true`
|
|
783
|
-
- fix: MatChipsField: fix usage of `suggestLengthThreshold`
|
|
784
|
-
- enh: MatChipsField: add `applyImplicitValue` (default: false)
|
|
785
|
-
|
|
786
|
-
# 2.9.2
|
|
787
|
-
- fix: Notification list: add an ion-text-wrap to the notification message
|
|
788
|
-
|
|
789
|
-
# 2.9.3
|
|
790
|
-
- fix: Home: Add a call to `markForCheck()` after removing a page history item
|
|
791
|
-
|
|
792
|
-
# 2.9.4
|
|
793
|
-
- fix: Form: reduce line height of row label (form-container > ion-row > ion-col > ion-label)
|
|
794
|
-
|
|
795
|
-
# 2.9.6
|
|
796
|
-
- fix: MatAutocompleteField: Remove animation in searchbar (bad icon position in iOS)
|
|
797
|
-
|
|
798
|
-
# 2.9.7
|
|
799
|
-
- fix: Form: fix field label position (form-container > ion-row > ion-col > ion-label)
|
|
800
|
-
|
|
801
|
-
# 2.9.8
|
|
802
|
-
- enh: Add AppFormUtils.filterErrorsByPrefix() and AppFormUtils.filterErrors()
|
|
803
|
-
|
|
804
|
-
# 2.9.13
|
|
805
|
-
- fix: Home: when removing a page history, force settings to update
|
|
806
|
-
|
|
807
|
-
# 2.9.17
|
|
808
|
-
- fix: MatSelectPanel: add `--min-width: fit-content` to class `mat-select-panel-fit-content`
|
|
809
|
-
|
|
810
|
-
# 2.9.20
|
|
811
|
-
- enh: NamedFilterSelector: add `filterCleared` event
|
|
812
|
-
|
|
813
|
-
# 2.9.22
|
|
814
|
-
- enh(deps): Minor update to Angular 17.3.12
|
|
815
|
-
- enh(theme): Dark theme: Move dark theme toggle into the settings form
|
|
816
|
-
- enh(theme): Dark theme: Fix toggle field style, in dark theme
|
|
817
|
-
- enh(settings): Add icons on each form fields
|
|
818
|
-
- fix(config): When saving the remote config, do not return to the editor config's inherited properties
|
|
819
|
-
|
|
820
|
-
# 2.9.23
|
|
821
|
-
- fix(boolean-field): fix click on radio button 'no', when field has no value
|
|
822
|
-
|
|
823
|
-
# 2.11.1
|
|
824
|
-
- enh(deps): Upgrade to apollo-angular 7.1.2 and apollo 3.11 (+ fix breaking changes in graphql.service.ts)
|
|
825
|
-
- fix(css): Dark theme: fix checkbox style, and autocomplete panel
|
|
826
|
-
|
|
827
|
-
# 2.11.2
|
|
828
|
-
- enh(app-text-form): Add new inputs `appearance` and `subscriptSizing`
|
|
829
|
-
- fix(css): Dark theme: fix style for outline field
|
|
830
|
-
|
|
831
|
-
# 2.11.3
|
|
832
|
-
- fix(app-text-form): Input `autoHeight` is now deprecated (use `autoSize` instead)
|
|
833
|
-
- enh(app-text-form): Add new inputs `autoSizeMinRows` and `autoSizeMaxRows`
|
|
834
|
-
|
|
835
|
-
# 2.11.7
|
|
836
|
-
- fix(css): Dark theme: fix style
|
|
837
|
-
|
|
838
|
-
# 2.11.8
|
|
839
|
-
- enh(form-error): Add options to `IFormPathTranslator.translateFormPath()`
|
|
840
|
-
|
|
841
|
-
# 2.12.0
|
|
842
|
-
- enh(form-error): Remove deprecated interface `IFormControlPathTranslator`
|
|
843
|
-
|
|
844
|
-
# 2.12.4
|
|
845
|
-
- fix(date): Update formControl (and datePicker) when textControl value changes, and clean text input by regexp
|
|
846
|
-
- fix(date-time): Keep control as invalid is time is empty
|
|
847
|
-
- enh(date-time): Add new `@Input() allowNoTime` to make time optional
|
|
848
|
-
- fix(lat-long): Fix deletion, when press delete key
|
|
849
|
-
|
|
850
|
-
# 2.12.7
|
|
851
|
-
- fix: addShortcut handler use `KeyboardEvent` instead of a simple 'EVent'
|
|
852
|
-
|
|
853
|
-
# 2.12.8
|
|
854
|
-
- enh: function `toNumber()` will now return the default value, when input is `NaN`
|
|
855
|
-
|
|
856
|
-
# 2.12.9
|
|
857
|
-
- fix(paginator): Fix paginator style on mobile screen (align to the left, and hide page size, like before the Angular 17 migration)
|
|
858
|
-
|
|
859
|
-
# 2.12.10
|
|
860
|
-
- fix(autocomplete): Compute the panel width if not set (in mobile) - workaround for an issue in mat-select panel
|
|
861
|
-
|
|
862
|
-
# 2.12.12
|
|
863
|
-
- fix(theme): add all dark colors from material theme
|
|
864
|
-
- fix(autocomplete): in mobile device, add a text-wrap and a max-height in mat-option
|
|
865
|
-
|
|
866
|
-
# 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)
|
|
868
|
-
|
|
869
|
-
# 2.12.16
|
|
870
|
-
- fix(autocomplete): Reload items when `showAllOnFocus = true`
|
|
871
|
-
- fix(autocomplete): Use `??` operator, instead of `toBoolean()`, `toNumber()` etc.
|
|
872
|
-
- enh(autocomplete): Add option `applyImplicitValue` to config
|
|
873
|
-
- enh(pipe): add a `asBoolean` pipe, with an optional predicate function as option (e.g. to test any value)
|
|
874
|
-
- enh(account): Allow to change password, if auth token is `token` (will update the pubkey)
|
|
875
|
-
- fix(lat-long): Refactor component (remove maskito placeholder use)
|
|
876
|
-
- enh(table): Add new component `<nav-actions-column>`
|
|
877
|
-
|
|
878
|
-
# 2.12.19
|
|
879
|
-
- fix(nav-actions-column): Fix when inside a `AppAsyncTable`
|
|
880
|
-
|
|
881
|
-
# 2.12.26
|
|
882
|
-
- enh(app-async-table): declare property `readonly cd: ChangeDetectorRef`
|
|
883
|
-
- enh(app-async-table): implement `markForCheck()` and `detectCHanges()`
|
|
884
|
-
- enh(app-table): declare property `readonly cd: ChangeDetectorRef`
|
|
885
|
-
- fix(app-table): call `detectChanges()` inside `editRow()`, `addRowToTable()` and `toggleSelectRow()` - need by SUMARiS (e.g. samples tables)
|
|
886
|
-
- fix(app-table): `toggleSelectRow()` should not call `event.preventDefault()` otherwise checkbox will not be checked
|
|
887
|
-
|
|
888
|
-
# 2.12.27
|
|
889
|
-
- enh(app-table): implement `markForCheck()` and `detectChanges()`
|
|
890
|
-
|
|
891
|
-
# 2.12.29
|
|
892
|
-
- fix(new-token-modal): Add a full form and fix save issue
|
|
893
|
-
|
|
894
|
-
# 2.12.30
|
|
895
|
-
- enh(platform): Add copy to clipboard return state
|
|
896
|
-
|
|
897
|
-
# 2.12.29
|
|
898
|
-
- fix(new-token-modal): Add a full form and fix save issue
|
|
899
|
-
|
|
900
|
-
# 18.0.0
|
|
901
|
-
- enh(deps) Upgrade to Angular 18.2.8 and Ionic 8.3
|
|
902
|
-
- 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
|
|
904
|
-
- enh(app-properties-form): Add `@Input() showHintKey: boolean` to show option key (has a hint)
|
|
905
|
-
- enh(network-service): Avoid to restart the service if peer has not changed
|
|
906
|
-
- enh(AppFormArray): allow to use AppFormArray on any type (and not only Entity has before)
|
|
907
|
-
- enh(AppFormUtils) add useful static functions to enable/disable control(s)
|
|
908
|
-
- enh(mat-autocomplete-field): add option `selectInputContentOnFocus` to option, to select the input content on focus in
|
|
909
|
-
- enh(app-named-filter-selector): Add `@Input() buttonsPosition: 'matSuffix'|'after'` to let user defined button position (inside the field, or after)
|
|
910
|
-
- 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)
|
|
912
|
-
- fix(nav-actions-column): Use `OnPush` changeDetection
|
|
913
|
-
- fix(app-form-field): Emit `(keyup.enter)` event, when field's type is `double`
|
|
914
|
-
|
|
915
|
-
# 18.0.5
|
|
916
|
-
- enh(mat-autocomplete-field):
|
|
917
|
-
- Change type of `MatAutocompleteFieldConfig.suggestFn` to use SuggestFn<T, F> (allow to pass more options - e.g. used to resolve entity in AppPropertiesUtils)
|
|
918
|
-
- Add `@Input() label`
|
|
919
|
-
- Add `@Input() hideRequiredMarker`
|
|
920
|
-
- enh(app-form-field):
|
|
921
|
-
- Add `@Input() hideRequiredMarker`
|
|
922
|
-
- Fix the style when readonly and type `enum`
|
|
923
|
-
- interface `FormFieldDefinition`: Add property `serializeAttribute?: string` (instead of using autocomplete.filer.joinAttribute)
|
|
924
|
-
- add a static function `FormFieldDefinitionUtils.prepareDefinitions()` to resolve enum values, by `InjectionToken`
|
|
925
|
-
- enh(app-properties-form):
|
|
926
|
-
- Entity/Entities are now resolved from helper class AppPropertiesUtils
|
|
927
|
-
- Allow to change add button title
|
|
928
|
-
- Resolve enum item, when using InjectionToken for values
|
|
929
|
-
- enh(shared) Add decorators `@RxStateRegister()` `@RxStateSelect()` and `@RxStateProperty()` to connect property to a `RxState`
|
|
930
|
-
- 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)
|
|
932
|
-
|
|
933
|
-
# 18.0.6
|
|
934
|
-
- fix(scss): set flex-wrap to nowrap
|
|
935
|
-
- enh(autocomplete-test): add test case with a button
|
|
936
|
-
- fix(logout) Logout should be done AFTER home redirection, because of cache clearing - see issue #5
|
|
937
|
-
|
|
938
|
-
# 18.0.7
|
|
939
|
-
- fix(hotkeys) Fix default platform control key ('meta' on iOS)
|
|
940
|
-
|
|
941
|
-
# 18.0.8
|
|
942
|
-
- fix(hotkeys) Avoid to open many help modal
|
|
943
|
-
- fix(hotkeys) Skip open help modal, if nothing to display
|
|
944
|
-
- fix(form-buttons-bar) Fix shortcuts for iOS
|
|
945
|
-
- fix(modal-toolbar) Fix shortcut for iOS
|
|
946
|
-
|
|
947
|
-
# 18.0.9
|
|
948
|
-
- fix(mat-latlong-field) Mark control as dirty, when text control changed
|
|
949
|
-
- 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`
|
|
951
|
-
|
|
952
|
-
# 18.0.10
|
|
953
|
-
- enh(utils) Add static functions `isFirefox()`, `isSafari()` and `isEdge()` to test user agent
|
|
954
|
-
- enh(utils) Add static functions `EntityUtils.collectIds()` and `EntityUtils.splitById()`
|
|
955
|
-
- fix(utils) Mark function `EntityUtils.collectById()` as deprecated (in flavor of `EntityUtils.splitById()`)
|
|
956
|
-
|
|
957
|
-
# 18.1.0
|
|
958
|
-
- enh(deps) Upgrade to angular 18.2.11 and other deps
|
|
959
|
-
- fix(deps) move maildev library into dev dependencies
|
|
960
|
-
|
|
961
|
-
# 18.1.1
|
|
962
|
-
- enh(deps) Update angular-eslint to 18.4.0
|
|
963
|
-
|
|
964
|
-
# 18.1.2
|
|
965
|
-
- enh(deps) Revert to Ionic 7.8.6
|
|
966
|
-
|
|
967
|
-
# 18.1.3
|
|
968
|
-
- fix(settings) Add static function `isOnFieldMode()`
|
|
969
|
-
- fix(menu) Make unpinned menu works, when reload app (F5) with a pinned menu
|
|
970
|
-
|
|
971
|
-
# 18.1.4
|
|
972
|
-
- fix(tab) Keep default tab label style (e.g. min-width) when stretch tabs is enabled
|
|
973
|
-
- fix(tab) Reduce tab label padding, on small screen
|
|
974
|
-
|
|
975
|
-
# 18.1.7
|
|
976
|
-
- enh(AppFormArray) Add `clone()` function
|
|
977
|
-
|
|
978
|
-
# 18.2.0
|
|
979
|
-
- 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
|
-
- fix(graphql-service) Allow `opts.update` to use new Apollo type `MutationUpdaterFunction` (type `MutationUpdaterFn` is deprecated)
|
|
981
|
-
|
|
982
|
-
# 18.2.6
|
|
983
|
-
- fix(autocomplete-field) Fix arrow drop icon position, when mobile
|
|
984
|
-
- fix(autocomplete-field) Use desktop arrow drop icon, when multiple and desktop
|
|
985
|
-
- fix(BaseEntityService) simplify functions `fromObject()` and `fromObjects()` (move `toEntity` argument into `options`)
|
|
986
|
-
- enh(services) Allow `suggestFromArray()` to search using `?` as wildcard (=match one character) in the search text
|
|
987
|
-
- enh(HighlightPipe) Allow to use the character `?` as wildcard (=match one character) in the search text
|
|
988
|
-
- enh(functions) Allow `suggestFromStringArray()` to search using `?` as wildcard (=match one character) in the search text
|
|
989
|
-
- enh(shared) New helper class `RegExpUtils`
|
|
990
|
-
|
|
991
|
-
# 18.2.7
|
|
992
|
-
- 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
|
-
|
|
994
|
-
# 18.2.9
|
|
995
|
-
- 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
|
-
|
|
997
|
-
# 18.2.11
|
|
998
|
-
- enh(DateUtils): Add `DateUtils.diffAbs()` to compute duration between two dates
|
|
999
|
-
|
|
1000
|
-
# 18.2.19
|
|
1001
|
-
- enh(timepicker) MatDateTime : Migrate timepicker to new library Ngx Mat TimePicker (fix animation, cancel button, Angular 17 compatibility, etc.)
|
|
1002
|
-
|
|
1003
|
-
# 18.2.21
|
|
1004
|
-
- enh(functions) Rename `selectInputContent` into `selectInputContentFromEvent`, and make `selectInputContent` that only use an <input> as argument
|
|
1005
|
-
- enh(autocomplete-field) Add `@Input() clearInvalidValueOnBlur: boolean` to reset the field when typing invalid search text (no match or no many matches)
|
|
1006
|
-
- fix(swipe-field) Fix swiper previous/next arrows
|
|
1007
|
-
|
|
1008
|
-
# 18.2.23
|
|
1009
|
-
- enh(validators) add option skipIfNoTime to dateRange
|
|
1010
|
-
|
|
1011
|
-
# 18.2.24
|
|
1012
|
-
- enh(pipe) add new pipe `isValidDate` with option `requiredTime` (to test date with noTime flag)
|
|
1013
|
-
|
|
1014
|
-
# 18.2.26
|
|
1015
|
-
- enh(select-peer-modal) Allow to search on peers modal
|
|
1016
|
-
- enh(select-peer-modal) Allow to select peer by features (aka programs) - should set `enableSelectPeerByFeature: true` in the environment token (disabled by default)
|
|
1017
|
-
|
|
1018
|
-
# 18.2.28
|
|
1019
|
-
- fix(mat-boolean-field) Small refactoring + simplify blur detection, using standard Angular outputs
|
|
1020
|
-
- enh(mat-latlong-field) Refactor the component, to use separate inputs (instead of using Maskito)
|
|
1021
|
-
- 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
|
-
|
|
1023
|
-
# 18.2.29
|
|
1024
|
-
- enh(validators) add opts to dateMaxDuration to skip date with NoTime
|
|
1025
|
-
- fix(mat-boolean-field) Fix buttons layout (padding) to be same as sumaris QV pmfm buttons
|
|
1026
|
-
|
|
1027
|
-
# 18.2.30
|
|
1028
|
-
- fix(forms) Fix error `TypeError: Cannot read properties of undefined (reading 'setControlEnabled')`
|
|
1
|
+
# Change log
|
|
2
|
+
|
|
3
|
+
## 0.1.7
|
|
4
|
+
|
|
5
|
+
- enh: Menu: Allow dynamic insertion, using a new config options (see 'CORE_CONFIG_OPTIONS.MENU_ITEMS')
|
|
6
|
+
* Example:
|
|
7
|
+
```js
|
|
8
|
+
const options = [
|
|
9
|
+
// Insert before'MENU.HOME'
|
|
10
|
+
{title: "Item #1", path: "/settings", icon: "people", before: "MENU.HOME"},
|
|
11
|
+
|
|
12
|
+
// Insert after 'MENU.HOME'
|
|
13
|
+
{title: "Item #2", path: "/settings", icon: "people", after: "MENU.HOME"}
|
|
14
|
+
];
|
|
15
|
+
config.properties[CORE_CONFIG_OPTIONS.MENU_ITEMS.key] = JSON.stringify(items);
|
|
16
|
+
```
|
|
17
|
+
Values of 'after' and 'before' will be compared with `title` of existing items.
|
|
18
|
+
|
|
19
|
+
## 0.3.3
|
|
20
|
+
|
|
21
|
+
- enh: CSS `.filter-panel` should be used with `.filter-panel-floating` to enable floating position
|
|
22
|
+
|
|
23
|
+
## 0.3.4
|
|
24
|
+
|
|
25
|
+
- fix: Users table: use floating filter panel
|
|
26
|
+
|
|
27
|
+
## 0.3.5
|
|
28
|
+
|
|
29
|
+
- enh: Add new pipe `arrayFilter` to be able to filter an array, in HTML templates
|
|
30
|
+
|
|
31
|
+
## 0.4.0
|
|
32
|
+
|
|
33
|
+
- enh: CSS: change style of error row (use warning color)
|
|
34
|
+
- enh: CSS: new class '.visible-dirty' (e.g. `<ion-icon name="star" class="visible-dirty"></ion-icon>` in the `actions` column)
|
|
35
|
+
- enh: ValidatorService: add function getI18nErrors(control)
|
|
36
|
+
- enh: AppTable: add outputs 'onDirty', 'onError'
|
|
37
|
+
- enh: AppTable:
|
|
38
|
+
|
|
39
|
+
## 0.4.1
|
|
40
|
+
|
|
41
|
+
- enh: Add new component 'app-actions-columns'
|
|
42
|
+
|
|
43
|
+
## 0.4.2
|
|
44
|
+
|
|
45
|
+
- enh: LoadResult class: Add a `fetchMore()` function
|
|
46
|
+
- enh: Autocomplete field: Add infinite scroll, using `LoadResult.fetchMore()`
|
|
47
|
+
|
|
48
|
+
## 0.4.3
|
|
49
|
+
|
|
50
|
+
- enh: AppTable: add `options` (with property `interactive`) in `deleteRow()` and `deleteRows()`
|
|
51
|
+
Used to avoid user confirmation, when deletion has been confirmed elsewhere
|
|
52
|
+
|
|
53
|
+
## 0.4.4
|
|
54
|
+
|
|
55
|
+
- enh: Rename `<form-buttons-bar>` into `<app-form-buttons-bar>`
|
|
56
|
+
- enh: Export more CSS variables: `--app-paginator-height`, `app-form-buttons-bar-height`
|
|
57
|
+
|
|
58
|
+
## 0.5.0
|
|
59
|
+
|
|
60
|
+
- enh: Table: allow keyboard navigation, using `<app-actions-column>` and function `table.confirmAndBackward()` and `table.confirmAndForward()`
|
|
61
|
+
|
|
62
|
+
## 0.7.10
|
|
63
|
+
|
|
64
|
+
- enh: Table: no more border-left, on dirty rows (because of sticky columns nightmare !)
|
|
65
|
+
|
|
66
|
+
## 0.9.0
|
|
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`
|
|
70
|
+
|
|
71
|
+
## 0.10.0
|
|
72
|
+
|
|
73
|
+
- enh: Add EntityClasses class: use it to get an entity class by name (need to use @EntityClass decorator on the class)
|
|
74
|
+
|
|
75
|
+
## 0.11.4
|
|
76
|
+
|
|
77
|
+
- fix: Autocomplete field: when focus out, move caret to start (fix firefox bug, when `input[type=text]` content is too long)
|
|
78
|
+
|
|
79
|
+
## 0.11.5
|
|
80
|
+
|
|
81
|
+
- enh: Decorator @Entity now generate the static class function `asObject(source: any, opts?: any): any`
|
|
82
|
+
|
|
83
|
+
## 0.15.0
|
|
84
|
+
|
|
85
|
+
- enh: Add IAppForm.loading (optional)
|
|
86
|
+
- enh: Add AppForm.waitIdle()
|
|
87
|
+
- enh: IAppForm, AppForm, AppTabEditor: Add markAsLoading() and markAsLoaded()
|
|
88
|
+
|
|
89
|
+
## 0.18.0
|
|
90
|
+
|
|
91
|
+
- enh: Add AppTable.updateView(): Promise
|
|
92
|
+
- enh: Add AppTableDatasource: rename $busy into loadingSubject
|
|
93
|
+
- fix: Fix InMemoryTable setValue
|
|
94
|
+
- fix: AppTable: after save, refactor code to select previously edited row
|
|
95
|
+
|
|
96
|
+
## 0.19.0
|
|
97
|
+
|
|
98
|
+
- fix: refactor AppFormUtils.copyEntityToForm() for multiple values (split on the character '|' )
|
|
99
|
+
- fix: remove AppFormUtils.copyForm2Entity() - same a form.value
|
|
100
|
+
|
|
101
|
+
## 0.20.0
|
|
102
|
+
|
|
103
|
+
- fix: remove functions `isArray()` (please use `Array.isArray()` instead)
|
|
104
|
+
- enh: Add `AccountService.onChange: Subject` to listen account settings changes
|
|
105
|
+
- fix: Account model: use minify option to serialize as a POD object
|
|
106
|
+
- fix: AccountService: change some internal function's visibility, to protected
|
|
107
|
+
- fix: InMemoryService: fix equals() default implementation (avoid infinite loop)
|
|
108
|
+
- fix: SCSS: Set mat-select-column to width: 50px, to make it compatible with sticky <mat-table>
|
|
109
|
+
- enh: Add ComponentDirtyGuard to public API
|
|
110
|
+
|
|
111
|
+
## 0.20.0
|
|
112
|
+
|
|
113
|
+
- fix: AppEntityEditor: remove confirmation before backClick (use ComponentDirtyGuard instead)
|
|
114
|
+
- fix: AppEntityEditor: cancel() will not ask a confirmation, because called by dirty guard).
|
|
115
|
+
|
|
116
|
+
## 0.23.0
|
|
117
|
+
- fix: MatAutocompleteField: when escape event, close the panel and stop event's propagation
|
|
118
|
+
- fix: AppFormButtonsBar: when escape event, make sure preventDefault!=false before emit a back event
|
|
119
|
+
|
|
120
|
+
## 0.24.0
|
|
121
|
+
|
|
122
|
+
- fix: AppInstallUpgradeCard: use Cordova Downloader plugin, to download APK file correctly
|
|
123
|
+
|
|
124
|
+
## 0.25.0
|
|
125
|
+
|
|
126
|
+
- enh: Add FormErrorAdapter service, configurable using an injection token APP_FORM_ERROR_I18N_KEYS
|
|
127
|
+
- enh: Add pipe 'translateFormError' to translate form error in HTML template
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
## 0.26.0
|
|
131
|
+
|
|
132
|
+
- enh: Rename FormErrorAdapter into FormErrorTranslator
|
|
133
|
+
- enh: Add FormErrorTranslator to AppForm
|
|
134
|
+
- enh: Add directives [matBadgeIcon] and [ionBadgeIcon] to use icon within a matBadge
|
|
135
|
+
|
|
136
|
+
## 0.27.0
|
|
137
|
+
|
|
138
|
+
- enh: Split `AppTabEditor` into `AppEditor` and `AppTabEditor`
|
|
139
|
+
- enh: Add `markAsReady()` to base components (`IAppForm`, `AppForm`, `AppTable`, `AppEditor`)
|
|
140
|
+
- enh: Add `ready() => Promise` to base components (`IAppForm`, `AppForm`, `AppTable`, `AppEditor`)
|
|
141
|
+
- enh: `AppEntityEditor`: wait components is ready, before calling `setValue()`
|
|
142
|
+
- enh: `waitFor()` now return a `Promise<void>` (instead of a `Promise<any>`)
|
|
143
|
+
|
|
144
|
+
## 1.0.0
|
|
145
|
+
|
|
146
|
+
- enh: Store local settings remotely
|
|
147
|
+
- fix: Fix suggestFromArray when items is null
|
|
148
|
+
- fix: Fix parsing error, in GraphQL service (e.g error from Oracle database)
|
|
149
|
+
|
|
150
|
+
## 1.2.5
|
|
151
|
+
|
|
152
|
+
- fix: Install/Upgrade component: can now download file, on Android devices
|
|
153
|
+
|
|
154
|
+
## 1.5.1
|
|
155
|
+
|
|
156
|
+
- enh: MatAutocompleteField: set header position has sticky, in CSS
|
|
157
|
+
- enh: MatAutocompleteField: if mobile, set autocomplete panel's position to 'above' (instead of 'auto') because keyboard should open at the bottom
|
|
158
|
+
- fix: AppForm: add method 'unregisterSubscription()'
|
|
159
|
+
- fix: Account: disable form when offline
|
|
160
|
+
|
|
161
|
+
# 1.5.6
|
|
162
|
+
|
|
163
|
+
- enh: Add observables.waitForTrue() function
|
|
164
|
+
- enh: Editor: apply ready() opts (timeout, dueTime)
|
|
165
|
+
- fix: suggestFromArray: fix sorting
|
|
166
|
+
|
|
167
|
+
# 1.5.8
|
|
168
|
+
|
|
169
|
+
fix: When deleting rows selection, make sure to confirm edited row first
|
|
170
|
+
|
|
171
|
+
# 1.6.4
|
|
172
|
+
|
|
173
|
+
enh: EntitiesTableDateSource: Add 'fetchMore()' function (usable when dataService fill LoadResult.fetchMore)
|
|
174
|
+
fix: Auth modal: show error (e.g. when bad credentials)
|
|
175
|
+
fix: MatChipsField: rename 'compareWith' in 'equals'
|
|
176
|
+
enh: MatChipsField: Allow setup chips color
|
|
177
|
+
fix: MatSwipeField: rename 'compareWith' in 'equals'
|
|
178
|
+
|
|
179
|
+
# 1.6.5
|
|
180
|
+
|
|
181
|
+
fix: MatChipsField: Fix 'focusOut' then 'focusIn' behavior
|
|
182
|
+
fix: MatAutocompleteField: Fix 'focusOut' then 'focusIn' behavior
|
|
183
|
+
|
|
184
|
+
# 1.6.18
|
|
185
|
+
fix: MatDateTimeField: Fix when no Keyboard plugin
|
|
186
|
+
|
|
187
|
+
# 1.7.0
|
|
188
|
+
|
|
189
|
+
enh: Add directive `*ngVar` - see https://stackoverflow.com/questions/38582293/how-to-declare-a-variable-in-a-template-in-angular
|
|
190
|
+
|
|
191
|
+
# 1.8.1
|
|
192
|
+
|
|
193
|
+
enh: IEntityService: add new function `canUserWrite()`
|
|
194
|
+
enh: AppEntityEditor: add a default implementation of `canUserWrite()`
|
|
195
|
+
|
|
196
|
+
# 1.9.5
|
|
197
|
+
|
|
198
|
+
enh: AppTable: Add injector in constructor
|
|
199
|
+
fix: Platform: detect window touchscreen as NOT mobile
|
|
200
|
+
fix: AppEntityEditor: make sure to unsubscribe listen remote changes, when destroy
|
|
201
|
+
fix: Home: fix layout, of card close button, in history items
|
|
202
|
+
fix: Make sure to use LocalSettingsServicesettings.mobile instead of PlatformService.mobile
|
|
203
|
+
enh: Account: auto start listen changes on pod, during the user session
|
|
204
|
+
|
|
205
|
+
# 1.10.1
|
|
206
|
+
|
|
207
|
+
fix: AppTable: Fix table row deletion, when editedRow is invalid and not saved yet - fix issue IMAGINE-669
|
|
208
|
+
|
|
209
|
+
# 1.10.9
|
|
210
|
+
|
|
211
|
+
fix: AppTable: Fix table when calling save with options : `keepEditing=false`
|
|
212
|
+
|
|
213
|
+
# 1.11.0
|
|
214
|
+
|
|
215
|
+
enh: Add component UploadFilePopover
|
|
216
|
+
enh: Add component TextPopover
|
|
217
|
+
enh: Upgrade to @apollo/client 3.5.10
|
|
218
|
+
|
|
219
|
+
# 1.12.1
|
|
220
|
+
|
|
221
|
+
fix: searchTextFilter: escape special characters to avoid RegExp parse exception
|
|
222
|
+
enh: Autocomplete: Move result count in footer
|
|
223
|
+
|
|
224
|
+
# 1.12.4
|
|
225
|
+
|
|
226
|
+
fix: AppTable: Avoid deleting a row twice, when deleting an invalid row BUT not editing
|
|
227
|
+
|
|
228
|
+
# 1.12.13
|
|
229
|
+
enh: Add pipes formGet, formGetControl and formGetArray, to get a form controls
|
|
230
|
+
enh: Add pipe strIncludes
|
|
231
|
+
|
|
232
|
+
# 1.13.0
|
|
233
|
+
enh: Add utility class SharedAsyncValidators
|
|
234
|
+
enh: Add SharedAsyncValidators.registerAsyncValidator() to add long during validation job
|
|
235
|
+
fix: BaseEntityService: listenChanges() now return an empty observable, when not implemented, instead of error
|
|
236
|
+
fix: InstallUpgradeCard: do not show install link, on Windows touch screen
|
|
237
|
+
|
|
238
|
+
# 1.14.0
|
|
239
|
+
enh: Platform: auto reload web browser's page, if a new version is detected at startup
|
|
240
|
+
# 1.14.2
|
|
241
|
+
enh: Add DateUtils.resetTime(date, tz?: string)
|
|
242
|
+
|
|
243
|
+
# 1.15.0
|
|
244
|
+
fix: MateDateField: make sure to display errors
|
|
245
|
+
fix: MateDateField: Allow to show matPrefix (e.g. icon)
|
|
246
|
+
fix: MateDateField: Better management of mat-error
|
|
247
|
+
fix: MateDateTimeField: Add error for dateIsBefore
|
|
248
|
+
enh: SharedValidators: add new validator 'dateIsBefore'
|
|
249
|
+
|
|
250
|
+
# 1.15.1
|
|
251
|
+
fix: MateDateField: Add a timezone to serialize/deserialize date value
|
|
252
|
+
|
|
253
|
+
# 1.15.4
|
|
254
|
+
enh: MateDateField: Add an input 'datePickerFiler' to filter dates in picker
|
|
255
|
+
enh: MateDateTimeField: Add an input 'datePickerFiler' to filter dates in picker
|
|
256
|
+
|
|
257
|
+
# 1.15.9
|
|
258
|
+
fix: Editor listenChanges() should not update the cache, but call reload() when changes detected.
|
|
259
|
+
This will allow fetching partial graph in subscriptions
|
|
260
|
+
enh: Editor: show a toast when remote changes are detected
|
|
261
|
+
fix: Cache: minor fix
|
|
262
|
+
|
|
263
|
+
# 1.15.13
|
|
264
|
+
fix: File upload component: fix file/event management
|
|
265
|
+
enh: Add new pipe 'formGetGroup:<name>'
|
|
266
|
+
|
|
267
|
+
# 1.16.0
|
|
268
|
+
enh: Refactor JobUtils functions: 'progression' is now optional, and hold by options
|
|
269
|
+
|
|
270
|
+
# 1.17.0
|
|
271
|
+
fix: GraphQL: set NetworkStatus.error on error object in order to throw corresponding exception
|
|
272
|
+
|
|
273
|
+
# 1.17.1
|
|
274
|
+
fix: Hotkeys: Prevent global hotkeys when popover component exists
|
|
275
|
+
|
|
276
|
+
# 1.18.0
|
|
277
|
+
enh: Autocomplete field: Add search bar on mobile
|
|
278
|
+
fix: Autocomplete field: Fix style when multiple=true
|
|
279
|
+
fix: Autocomplete field: Fix default displayWith when multiple=true (manage array value)
|
|
280
|
+
fix: Exclude Windows from the platform mobile detection
|
|
281
|
+
|
|
282
|
+
# 1.18.4
|
|
283
|
+
fix: Autocomplete: fix search in mobile searchbar
|
|
284
|
+
enh: Material field components: allow to set 'required' as empty tag, and not only '[required]=true'
|
|
285
|
+
|
|
286
|
+
# 1.18.4
|
|
287
|
+
fix: Autocomplete: fix panel width, on small screens
|
|
288
|
+
|
|
289
|
+
# 1.18.7
|
|
290
|
+
fix: fix DateUtils.min() and DateUtils.max()
|
|
291
|
+
|
|
292
|
+
# 1.19.0
|
|
293
|
+
enh: Add a MessageModal, to compose message to users (internal or email messages)
|
|
294
|
+
fix: MatDateField: if not required, manually set a date will not apply the value to formControl
|
|
295
|
+
|
|
296
|
+
# 1.19.1
|
|
297
|
+
fix: Platform detection failed (infinite loop) on MacBook
|
|
298
|
+
|
|
299
|
+
# 1.19.2
|
|
300
|
+
fix: Platform detection cache
|
|
301
|
+
|
|
302
|
+
# 1.19.3
|
|
303
|
+
enh: AppForm now wait form not pending, before emitting onSubmit event
|
|
304
|
+
|
|
305
|
+
# 1.19.6
|
|
306
|
+
fix: Fix toolbar back button
|
|
307
|
+
fix: Autocomplete: Fix multiple values (displayValue was no shown)
|
|
308
|
+
fix: Autocomplete: avoid to many call to suggest, on mobile
|
|
309
|
+
fix: Autocomplete: use mat-option for searchbar, to have selected option is visible
|
|
310
|
+
fix: Install APK: make sure to have '.apk' at end of filename
|
|
311
|
+
fix: Auth modal: keep modal into loading, when waiting server response
|
|
312
|
+
enh: Create a specific card for offline mode update
|
|
313
|
+
fix: Entity storage: do NOT set skipIfPristine to false, when storage keep non local entities (e.g. OperationVO)
|
|
314
|
+
enh: Entity storage: persist() has a new option skipIfPristine, to be able to force all data to be stored, even if not dirty
|
|
315
|
+
|
|
316
|
+
# 1.19.7
|
|
317
|
+
enh: Add pipe 'formGetValue' that will listen value changes (from a form or a control)
|
|
318
|
+
|
|
319
|
+
# 1.19.16
|
|
320
|
+
fix: Date and Date Short field: optimize <mat-error> with a switch/case
|
|
321
|
+
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
|
|
323
|
+
|
|
324
|
+
# 1.19.18
|
|
325
|
+
fix: Add a workaround to patch <html> class to 'plt-desktop', on Windows touch screen (fix sumaris-app issue #346)
|
|
326
|
+
enh: EntitiesStorage: detect platform pause, to force saving the storage
|
|
327
|
+
|
|
328
|
+
# 1.19.23
|
|
329
|
+
fix: Menu: avoid to many call of onLogin() function (add a distinctUntilChanged() filter)
|
|
330
|
+
fix: MateDateTime: set required validator using template, and no more by overriding formControl.validator (allow to change the required value)
|
|
331
|
+
fix: EntityEditor: wait end of saving, in waitIdle() function
|
|
332
|
+
fix: EntityEditor: add debug log when changing/updating route
|
|
333
|
+
fix: EntityEditor.load(): rename the unused options 'updateTabAndRoute' into 'updateRoute'
|
|
334
|
+
fix: EntityEditor.load(): allow to reset to the first tab (e.g. when load another entity into an existing editor)
|
|
335
|
+
|
|
336
|
+
# 1.19.23
|
|
337
|
+
fix: Editor: allow to skip page history (computePageHistory can return 'undefined')
|
|
338
|
+
|
|
339
|
+
# 1.19.25
|
|
340
|
+
fix: Home: translate 'Loading...' message
|
|
341
|
+
|
|
342
|
+
# 1.19.28
|
|
343
|
+
enh: Add function escapeRegExp() to escape all special regexp characters
|
|
344
|
+
|
|
345
|
+
# 1.19.30
|
|
346
|
+
enh: Add argument to pipe 'formGetValue' to listen status change (e.g. to force update, when emitEvent: false)
|
|
347
|
+
|
|
348
|
+
# 1.20.0
|
|
349
|
+
|
|
350
|
+
enh: Menu: allow to enable/disable menu
|
|
351
|
+
enh: Menu: rename MenuService.menuVisible$ into MenuService.splitPaneWhen
|
|
352
|
+
|
|
353
|
+
# 1.20.2
|
|
354
|
+
|
|
355
|
+
enh: Material fields: add @Input() appearance
|
|
356
|
+
|
|
357
|
+
# 1.20.3
|
|
358
|
+
enh: css-variables-to-root-mobile() will expose variables '--mat-tab-link-height' and '--mat-tab-bar-height'
|
|
359
|
+
|
|
360
|
+
# 1.20.4
|
|
361
|
+
enh: Add helper class CsvUtils
|
|
362
|
+
enh: Add pipe formatProperty
|
|
363
|
+
enh: Add directive [appAutoTitle] for <ion-label> or <mat-label>
|
|
364
|
+
|
|
365
|
+
# 1.20.5
|
|
366
|
+
enh: formatProperty pipe: when type is 'boolean', display a translated Yes/No
|
|
367
|
+
|
|
368
|
+
# 1.20.7
|
|
369
|
+
enh: add function FileUtils.writeTextToFile()
|
|
370
|
+
|
|
371
|
+
# 1.20.11
|
|
372
|
+
enh: add function FileUtils.downloadUri()
|
|
373
|
+
|
|
374
|
+
# 1.20.13
|
|
375
|
+
fix: fix SharedValidators.decimal() when maxDecimals = 3 (cached regexp was wrong)
|
|
376
|
+
|
|
377
|
+
# 1.20.14
|
|
378
|
+
fix: Menu: Force menu update when config changed
|
|
379
|
+
|
|
380
|
+
# 1.20.16
|
|
381
|
+
fix: MatChipsField: fix chip height
|
|
382
|
+
|
|
383
|
+
# 1.20.17
|
|
384
|
+
fix: Add module ResizableModule, for MatTable column resize
|
|
385
|
+
|
|
386
|
+
# 1.20.18
|
|
387
|
+
fix: PlatformService.download() now useFileUtils.download(), that create a temp download (not need browser permission to open popup)
|
|
388
|
+
|
|
389
|
+
# 1.20.19
|
|
390
|
+
enh: Add new abstract class AppEntityEditorModal, that can managed many forms and tables
|
|
391
|
+
|
|
392
|
+
# 1.20.20
|
|
393
|
+
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
|
+
|
|
395
|
+
# 1.20.21
|
|
396
|
+
fix: Fix mat latlong field: was broken since v1.19.13
|
|
397
|
+
|
|
398
|
+
# 1.20.21
|
|
399
|
+
fix: Fix MatDateField mat-error display (was too large)
|
|
400
|
+
|
|
401
|
+
# 1.20.24
|
|
402
|
+
fix: Revert change on LatLongField (SCSS file was removed ??)
|
|
403
|
+
|
|
404
|
+
# 1.20.25
|
|
405
|
+
fix: MatBooleanField: set indeterminate=true, when value is null
|
|
406
|
+
|
|
407
|
+
# 1.20.27
|
|
408
|
+
|
|
409
|
+
fix: Mat***Field: add `@Input() appearance`
|
|
410
|
+
|
|
411
|
+
# 1.20.30
|
|
412
|
+
fix: Add InMemoryDataService.hiddenCount
|
|
413
|
+
|
|
414
|
+
# 1.20.33
|
|
415
|
+
fix: MatAutocompleteField: reload items when cleaning text, and no suggestLengthThreshold
|
|
416
|
+
|
|
417
|
+
# 1.20.34
|
|
418
|
+
fix: AppTable: remove 'opts.skipIfLoading' on delete functions, to use only 'opts.interactive' to force deletion when table is busy.
|
|
419
|
+
|
|
420
|
+
# 1.21.0
|
|
421
|
+
enh: AppForm: use public behavior subjects: readySubject, loadingSubject, errorSubject
|
|
422
|
+
|
|
423
|
+
# 1.22.0
|
|
424
|
+
enh: Add social components: UserEventNotification and JobProgression
|
|
425
|
+
|
|
426
|
+
# 1.22.1
|
|
427
|
+
enh: Menu: add APP_MENU_OPTIONS token, to configure menu (e.g. show notification icon in the left menu header)
|
|
428
|
+
|
|
429
|
+
# 1.22.9
|
|
430
|
+
enh: Remove <app-user-events-table> (move to specific sub projects that use ngx-components)
|
|
431
|
+
|
|
432
|
+
# 1.22.11
|
|
433
|
+
enh: Rename <app-user-event-notification-component> into <app-user-event-notification-icon>
|
|
434
|
+
|
|
435
|
+
# 1.22.12
|
|
436
|
+
enh: Can mark a Moment without time, allowing empty time field in MatDateTime
|
|
437
|
+
|
|
438
|
+
# 1.23.6
|
|
439
|
+
fix: Many fix in table. Upgrade to ngx-material-table 0.12.0
|
|
440
|
+
enh: Table, Form and Editor: Add a destroySubject
|
|
441
|
+
enh: Observables functions first***Promise() : add more options (timeout or stop notifier)
|
|
442
|
+
|
|
443
|
+
# 1.23.10
|
|
444
|
+
enh: Autocomplete: add a 'title' property on each option, on desktop screen
|
|
445
|
+
|
|
446
|
+
# 1.23.11
|
|
447
|
+
fix: Memory Data service: now implement IStartableService
|
|
448
|
+
enh: StartableService: use a stopSubject, to stop waitFor promise
|
|
449
|
+
enh: remove unused class EntitiesService. Use IEntitiesService instead
|
|
450
|
+
|
|
451
|
+
# 1.23.26
|
|
452
|
+
enh: Add new pipe 'arrayJoin'
|
|
453
|
+
enh: 'arrayPluck' pipe: allow to use string[] for path
|
|
454
|
+
enh: getPropertyByPath() function now allow to use string[] as path
|
|
455
|
+
|
|
456
|
+
# 1.23.29
|
|
457
|
+
enh: FormArrayHelper: add setValue() to resize the FormArray, then set value
|
|
458
|
+
|
|
459
|
+
# 1.23.30
|
|
460
|
+
fix: InMemoryDataService: do NOT apply default sortReplacement id -> rankOrder
|
|
461
|
+
|
|
462
|
+
# 1.23.31
|
|
463
|
+
fix: InMemoryDataService: change 'dirtySubject' as public property
|
|
464
|
+
|
|
465
|
+
# 1.23.39
|
|
466
|
+
enh: Add FormArrayHelper.patchValue() : clear array, then push each value
|
|
467
|
+
fix: StartableService: avoid to log error when stopped
|
|
468
|
+
|
|
469
|
+
# 1.23.41
|
|
470
|
+
enh: AppEditor: Add 'loaded' getter
|
|
471
|
+
|
|
472
|
+
# 1.23.44
|
|
473
|
+
enh: Referential model: add a 'icon' property (IconRef)
|
|
474
|
+
|
|
475
|
+
# 1.23.46
|
|
476
|
+
enh: Add `ColorScale.getValueColor(): Color`
|
|
477
|
+
enh: EntityEditorModal: rename input `isNewData` into `isNew`
|
|
478
|
+
|
|
479
|
+
# 1.23.51
|
|
480
|
+
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
|
|
484
|
+
|
|
485
|
+
# 1.23.61
|
|
486
|
+
- fix: Boolean field: fix button layout
|
|
487
|
+
|
|
488
|
+
# 1.23.65
|
|
489
|
+
- enh: Add pipes: isNotNil and isNotNilOrNaN
|
|
490
|
+
|
|
491
|
+
# 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
|
|
494
|
+
|
|
495
|
+
# 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
|
|
502
|
+
|
|
503
|
+
# 2.1.0
|
|
504
|
+
- enh: Add new class AppFormArray with all functions of FormArrayHelper
|
|
505
|
+
|
|
506
|
+
# 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
|
|
510
|
+
|
|
511
|
+
# 2.2.3
|
|
512
|
+
- enh: Test Geolocation.getCurrentPosition() in the lat/long field test page
|
|
513
|
+
|
|
514
|
+
# 2.2.4
|
|
515
|
+
- fix: Fix DateUtils.isSame(), when first argument is nil, but the second not
|
|
516
|
+
- enh: AppTable: allow to call deleteSelection with opts (e.g `{interactive: false}`)
|
|
517
|
+
|
|
518
|
+
# 2.2.6
|
|
519
|
+
- fix: Refresh menu on any account changes (login changes - eg. when account updated)
|
|
520
|
+
|
|
521
|
+
# 2.2.8
|
|
522
|
+
- fix: Table actions column: add CSS variable to set column width, min-width and max-width
|
|
523
|
+
|
|
524
|
+
# 2.3.7
|
|
525
|
+
- fix: Mat form field: use inherit font size (do not force font-size, in the theme)
|
|
526
|
+
- fix: MatDateShort: fix behaviour for Angular 14
|
|
527
|
+
|
|
528
|
+
# 2.4.0
|
|
529
|
+
- Breaking change: ProgressBarService and HTTP_INTERCEPTORS no longer provided in SharedModule (see: AppModule)
|
|
530
|
+
- enh: Make ProgressBarService fully optional (InjectionToken: APP_PROGRESS_BAR_SERVICE)
|
|
531
|
+
- enh: Settings: the settings object is now stored in json format
|
|
532
|
+
|
|
533
|
+
# 2.4.1
|
|
534
|
+
- fix: AppFormArray: do not resize the array when patchValue() receive `undefined` value (e.g. useful when called by parent, recursively, without value)
|
|
535
|
+
- fix: AppAsyncTable: optimize markAsUntouched()
|
|
536
|
+
|
|
537
|
+
# 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)
|
|
539
|
+
|
|
540
|
+
# 2.4.3
|
|
541
|
+
- fix: AppFormArray: do not resize the array when patchValue() receive `null` or `undefined` value (same behavior as official `FormArray.patchValue()`)
|
|
542
|
+
|
|
543
|
+
# 2.4.4
|
|
544
|
+
- fix: Applying environment defaultLocale, when settings data has no locale (merge some code from lpecquot, that was in a branch)
|
|
545
|
+
|
|
546
|
+
# 2.4.9
|
|
547
|
+
- fix: Settings: allow to store settings as string (like < 2.4.0) using an injection token
|
|
548
|
+
|
|
549
|
+
# 2.4.10
|
|
550
|
+
- fix: When detecting a app update, stop the check timer to avoid to many toast to be displayed
|
|
551
|
+
|
|
552
|
+
# 2.4.14
|
|
553
|
+
- enh: add function `setPropertyByPath()`
|
|
554
|
+
- fix: Implement `EntityUtils.getPropertyByPath()` using generic shared function `getPropertyByPath()`
|
|
555
|
+
|
|
556
|
+
# 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
|
|
558
|
+
|
|
559
|
+
# 2.4.16
|
|
560
|
+
- fix: `SharedModule.forRoot()`: make environment optional, to be defined it in the `app.module.ts` (need by Quadrige App)
|
|
561
|
+
|
|
562
|
+
# 2.4.17
|
|
563
|
+
- fix: MatLatLongField: remove strict character regexp, in degrees part, to be able to set only one digit (e.g. `9°`)
|
|
564
|
+
|
|
565
|
+
# 2.4.18
|
|
566
|
+
- fix: MatDateShortField: fix control validation, in desktop mode
|
|
567
|
+
|
|
568
|
+
# 2.4.19
|
|
569
|
+
- fix: MatAutocompleteField: revert the cdk overlay position, when closing the mat-select panel
|
|
570
|
+
|
|
571
|
+
# 2.4.23
|
|
572
|
+
- enh: Add DateUtils.markTime(), to reset the 'no time' marker
|
|
573
|
+
- enh: Add DateUtilsEntityEditor: simplify updateTabAndRoute()
|
|
574
|
+
- enh: Add DateUtilsEntityEditor: updateRoute() now manage queryParams change, before /new to /:id transition
|
|
575
|
+
- enh: Toolbar: goBack() return a boolean
|
|
576
|
+
|
|
577
|
+
# 2.4.25
|
|
578
|
+
- enh: Environment: add a boolean option 'sameUrlPeer', to force network to start on peer at the same URL
|
|
579
|
+
- enh: EntityEditor: allow to listen changes on local entity
|
|
580
|
+
- enh: add functions collectByProperty() to split an array in a map of array
|
|
581
|
+
|
|
582
|
+
# 2.4.26
|
|
583
|
+
- fix: Rename pipe 'isNotOnField' by 'isOnDesk'
|
|
584
|
+
|
|
585
|
+
# 2.4.28
|
|
586
|
+
- enh: TranslateContext: allow to translate many keys (string[])
|
|
587
|
+
- fix: Force ngx-quicklink to 0.3.0
|
|
588
|
+
|
|
589
|
+
# 2.4.31
|
|
590
|
+
- enh: Add JsonUtils.parseFile()
|
|
591
|
+
|
|
592
|
+
# 2.4.33
|
|
593
|
+
- enh: Add AppPropertiesForm.length
|
|
594
|
+
|
|
595
|
+
# 2.4.48
|
|
596
|
+
- fix: Fix highlight pipe (used by autocomplete field)
|
|
597
|
+
|
|
598
|
+
# 2.4.50
|
|
599
|
+
- enh: Add type 'enums' for AppFormField
|
|
600
|
+
|
|
601
|
+
# 2.4.54
|
|
602
|
+
- enh: Use NavController by default, instead of Angular router. This will use the default animation style of the OS
|
|
603
|
+
|
|
604
|
+
# 2.4.55
|
|
605
|
+
- fix: Editor: Disable animation, when reloading same page after saving
|
|
606
|
+
|
|
607
|
+
# 2.4.58
|
|
608
|
+
- enh: Add storage explorer (with log preview)
|
|
609
|
+
- enh: Add debug service (to send debug data to server)
|
|
610
|
+
- enh: Add logging service
|
|
611
|
+
|
|
612
|
+
# 2.4.61
|
|
613
|
+
- enh: Add logger on network service
|
|
614
|
+
|
|
615
|
+
# 2.4.67
|
|
616
|
+
fix: Minor fix (add missing i18n)
|
|
617
|
+
fix: GeolocationUtils: add many useful functions, and detect Capacitor errors (from message)
|
|
618
|
+
fix: Fix some issues in storage explorer
|
|
619
|
+
|
|
620
|
+
# 2.4.74
|
|
621
|
+
enh: LocalSettingsService: save changes in local storage, when calling setProperty()
|
|
622
|
+
|
|
623
|
+
# 2.4.75
|
|
624
|
+
enh: SharedValidator: add a precision validator
|
|
625
|
+
|
|
626
|
+
# 2.4.79
|
|
627
|
+
fix: ImageGallery: fix add button icon (center alignement)
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
# 2.4.81
|
|
631
|
+
fix: AppToolbar: allow to use ion-segment in app-toolbar
|
|
632
|
+
|
|
633
|
+
# 2.4.82
|
|
634
|
+
enh: Migrate to Ionic 7
|
|
635
|
+
fix: Form field: show the clear button, when clearable=true, on types 'integer', 'double', 'string', 'date' and 'date-time'
|
|
636
|
+
|
|
637
|
+
# 2.4.82
|
|
638
|
+
enh: AppEntityEditor: add get/set for autoOpenNextTab
|
|
639
|
+
|
|
640
|
+
# 2.4.87
|
|
641
|
+
fix: AppEntityEditor: When reload the editor, force the fetch policy to 'network-only'
|
|
642
|
+
|
|
643
|
+
# 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)
|
|
645
|
+
|
|
646
|
+
# 2.4.88
|
|
647
|
+
enh: Add protected BaseEntityService.getLoadQueryNames()
|
|
648
|
+
|
|
649
|
+
# 2.4.89
|
|
650
|
+
fix: Fix Autocomplete searchbar value trigger, after ionic 7 update
|
|
651
|
+
|
|
652
|
+
# 2.4.90
|
|
653
|
+
fix: AppEntityEditor: when catch error in save(), set the selectedTabIndex=0 before calling setError()
|
|
654
|
+
This will allow subclasses to override the default selectedTabIndex after an error occur, inside the overridden setError()
|
|
655
|
+
|
|
656
|
+
# 2.4.91
|
|
657
|
+
enh: functions: allow to use sort(array) without the 'attribute' argument (e.g. allow to sort a string[])
|
|
658
|
+
|
|
659
|
+
# 2.4.95
|
|
660
|
+
fix: Platform: avoid error at startup, because of StatusBar in web mode
|
|
661
|
+
enh: MatBooleanField: display value when disabled, instead of 'empty'
|
|
662
|
+
|
|
663
|
+
# 2.4.112
|
|
664
|
+
enh: AppBadge: allow to set a text or number content
|
|
665
|
+
|
|
666
|
+
# 2.4.114
|
|
667
|
+
enh: Menu: allow to add sub menu item
|
|
668
|
+
|
|
669
|
+
# 2.4.158
|
|
670
|
+
enh: Environment: add useHash property to configure Angular router to use hash URL (need by web-ext)
|
|
671
|
+
|
|
672
|
+
# 2.5.0
|
|
673
|
+
- enh: Add token APP_USER_SETTINGS_OPTIONS of type UserSettingsOptions to add user properties table in AccountPage
|
|
674
|
+
- fix: MatBooleanField: in checkbox style, the placeholder can be shown as expected
|
|
675
|
+
|
|
676
|
+
# 2.6.0
|
|
677
|
+
- enh: Account: Add User tokens (table and modal)
|
|
678
|
+
|
|
679
|
+
# 2.6.23
|
|
680
|
+
- fix: Fix Configuration.getPropertyAsNumbers() when no value (avoid to get an array with an unique NaN value)
|
|
681
|
+
|
|
682
|
+
# 2.6.25
|
|
683
|
+
- enh: Upgrade to nodejs 18
|
|
684
|
+
- fix: Menu: hide spacer divider ion-label (hide the skeleton)
|
|
685
|
+
|
|
686
|
+
# 2.6.28
|
|
687
|
+
- fix: ImageGallery: Change image's title background color
|
|
688
|
+
|
|
689
|
+
# 2.6.31
|
|
690
|
+
- fix: ImageGallery: Add output event when after editing title
|
|
691
|
+
|
|
692
|
+
# 2.6.32
|
|
693
|
+
- fix: AppFormArray: Avoid an infinite loop, when calling resize(0) if options.allowEmptyArray=false
|
|
694
|
+
- 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)
|
|
696
|
+
|
|
697
|
+
# 2.6.34
|
|
698
|
+
- enh: functions: add a static function `underscoreToChangeCase()`
|
|
699
|
+
|
|
700
|
+
# 2.6.35
|
|
701
|
+
- fix: Settings: Add type for property `OfflineFeature.filter`, then use it to in `LocalSettingsService.getOfflineFeatures()`
|
|
702
|
+
|
|
703
|
+
# 2.6.38
|
|
704
|
+
- fix: Fix mapGet pipe, when key is zero (0)
|
|
705
|
+
|
|
706
|
+
# 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>`)
|
|
708
|
+
|
|
709
|
+
# 2.8.0
|
|
710
|
+
- enh: `IAppForm<T>` : add a type `<T=any>`
|
|
711
|
+
- enh: `IAppForm` : add optional functions `setValue()`, `patchValue()`, `resetValue()` and `getValue()`
|
|
712
|
+
- fix: `AppForm` and `AppEditor`: Remove unused and deprecated properties `_loading`, `_$ready`, `_$loading`
|
|
713
|
+
- fix: `AppForm` : rename `_enable` as `enabled` to avoid confusion with `enable()`
|
|
714
|
+
- 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 :
|
|
716
|
+
- `isSelected`: e.g. `selection | isSelected: row`,
|
|
717
|
+
- `isEmptySelection`: e.g. `selection | isEmptySelection`
|
|
718
|
+
- `isNotEmptySelection`: e.g. `selection | isNotEmptySelection`
|
|
719
|
+
- `selectionLength`: e.g. `selection | selectionLength`,
|
|
720
|
+
- `isMultipleSelection`: e.g. `selection | isMultipleSelection`,
|
|
721
|
+
- enh: Add new pipes for table :
|
|
722
|
+
- `isAllSelected`: e.g. `table | isAllSelected`,
|
|
723
|
+
- `isNotAllSelected`: e.g. `table | isNotAllSelected`
|
|
724
|
+
|
|
725
|
+
# 2.8.1
|
|
726
|
+
- enh: Add a pipe `badgeNumber` to limit badge content when > `99` (will display `99+`)
|
|
727
|
+
- enh: function setPropertyByPath() now return the input obj
|
|
728
|
+
- fix: Referential: fix `asObject()`
|
|
729
|
+
- enh: Add options:
|
|
730
|
+
- `sumaris.defaultLatLongFormat.enabled` to show/hide default Lat/Lon setting in account page (default is true)
|
|
731
|
+
- `sumaris.auth.api.token.scope.enabled` to show/hide scopes in API token table (default is false)
|
|
732
|
+
- `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
|
+
- enh: Add AppRowField component: wrap an AppFormField into a table column
|
|
734
|
+
- enh: Add pipe `valueFormat` to format a value with a FormFieldDefinition (equivalent to pipe `propertyFormat`)
|
|
735
|
+
- fix: `UploadFileComponent` Refactored
|
|
736
|
+
- enh: Add new config options to override the form field background color (active, focus or disabled)
|
|
737
|
+
- enh: Add new pipe `booleanFormat`
|
|
738
|
+
- enh: Update pipe `propertyFormat` to use complex path (using `getPropertyByPath()`)
|
|
739
|
+
- enh: Add static functions `CsvUtils.getLocalizedEncoding()` and `CsvUtils.getLocalizedSeparator()`
|
|
740
|
+
- enh: Add static function `JsonUtils.getLocalizedEncoding()`
|
|
741
|
+
|
|
742
|
+
# 2.8.2
|
|
743
|
+
- enh: Function `getPropertyByPath` now handles the optional chaining operator `(?.)`
|
|
744
|
+
- enh: Add `AccountService.onWillLogout` emitter
|
|
745
|
+
- fix: Table: Call `emitRefresh()` instead of `onRefresh.emit()` to safely emit to an opened Observable
|
|
746
|
+
|
|
747
|
+
# 2.8.3
|
|
748
|
+
- enh: Add support of `<mat-hint>` in MatDateTime, MatDate, MatDateShort, MatAutocompleteField and MatLatLongField
|
|
749
|
+
- enh: Add `DateUtils.compare` to be able to sort dates (using Array `sort()`)
|
|
750
|
+
- enh: Add function `resizeArray(T[], size): T[]`
|
|
751
|
+
- fix: NamedFilter: Abort import if callback returns null or undefined
|
|
752
|
+
- fix: DataSource: Allow to refresh datasource (using `watchAll()`) when having dirty row
|
|
753
|
+
|
|
754
|
+
# 2.8.4
|
|
755
|
+
- enh: MatBooleanField: add `@Input() clearable` (default to `false`)
|
|
756
|
+
- fix: MatBooleanField: when resetting value, hide radio buttons
|
|
757
|
+
|
|
758
|
+
# 2.8.11
|
|
759
|
+
- fix: MatBooleanField: hide checkbox's placeholder when floatLabel=never
|
|
760
|
+
|
|
761
|
+
# 2.8.12
|
|
762
|
+
- enh: Pipe `referentialToString`: add new option `propertySeparator` to override the default ' - ' separator
|
|
763
|
+
|
|
764
|
+
# 2.8.13
|
|
765
|
+
- enh: AsyncTable: make `setFilter()` async
|
|
766
|
+
|
|
767
|
+
# 2.8.14
|
|
768
|
+
- enh: Upgrade to ngx-material-table 17.2.1 (add options to TableElement `delete()`, `cancelOrDelete()` and `confirmEditCreate()`)
|
|
769
|
+
|
|
770
|
+
# 2.9.0
|
|
771
|
+
- enh: Upgrade to Angular 17.3
|
|
772
|
+
- fix: Replace zone.js `setTimeout()`, by rx-angular zone-less
|
|
773
|
+
- fix: IFormControlPathTranslator : Rename interface IFormControlPathTranslator into IFormPathTranslator, and rename property `controlPathTranslator` into `pathTranslator`
|
|
774
|
+
- fix: Remove deprecated validator `SharedValidators.double` (was renamed into `SharedValidators.decimal`)
|
|
775
|
+
- fix: AppAsyncTable: re add `@Input() get filter`
|
|
776
|
+
- fix: AppTable: clear selection when opening a row (like AppAsyncTable)
|
|
777
|
+
- fix: MatAutocompleteField: Add `@Input() panelClass` (same as `class`)
|
|
778
|
+
- fix: MatAutocompleteField: Allow boolean inputs from string (using `@Input({transform: booleanAttribute})`)
|
|
779
|
+
- fix: MatAutocompleteField: add `panelWidth` and `panelClass` to `MatAutocompleteFieldConfig`
|
|
780
|
+
|
|
781
|
+
# 2.9.1
|
|
782
|
+
- fix: MatAutocompleteField: revert `applyImplicitValue` default value `true`
|
|
783
|
+
- fix: MatChipsField: fix usage of `suggestLengthThreshold`
|
|
784
|
+
- enh: MatChipsField: add `applyImplicitValue` (default: false)
|
|
785
|
+
|
|
786
|
+
# 2.9.2
|
|
787
|
+
- fix: Notification list: add an ion-text-wrap to the notification message
|
|
788
|
+
|
|
789
|
+
# 2.9.3
|
|
790
|
+
- fix: Home: Add a call to `markForCheck()` after removing a page history item
|
|
791
|
+
|
|
792
|
+
# 2.9.4
|
|
793
|
+
- fix: Form: reduce line height of row label (form-container > ion-row > ion-col > ion-label)
|
|
794
|
+
|
|
795
|
+
# 2.9.6
|
|
796
|
+
- fix: MatAutocompleteField: Remove animation in searchbar (bad icon position in iOS)
|
|
797
|
+
|
|
798
|
+
# 2.9.7
|
|
799
|
+
- fix: Form: fix field label position (form-container > ion-row > ion-col > ion-label)
|
|
800
|
+
|
|
801
|
+
# 2.9.8
|
|
802
|
+
- enh: Add AppFormUtils.filterErrorsByPrefix() and AppFormUtils.filterErrors()
|
|
803
|
+
|
|
804
|
+
# 2.9.13
|
|
805
|
+
- fix: Home: when removing a page history, force settings to update
|
|
806
|
+
|
|
807
|
+
# 2.9.17
|
|
808
|
+
- fix: MatSelectPanel: add `--min-width: fit-content` to class `mat-select-panel-fit-content`
|
|
809
|
+
|
|
810
|
+
# 2.9.20
|
|
811
|
+
- enh: NamedFilterSelector: add `filterCleared` event
|
|
812
|
+
|
|
813
|
+
# 2.9.22
|
|
814
|
+
- enh(deps): Minor update to Angular 17.3.12
|
|
815
|
+
- enh(theme): Dark theme: Move dark theme toggle into the settings form
|
|
816
|
+
- enh(theme): Dark theme: Fix toggle field style, in dark theme
|
|
817
|
+
- enh(settings): Add icons on each form fields
|
|
818
|
+
- fix(config): When saving the remote config, do not return to the editor config's inherited properties
|
|
819
|
+
|
|
820
|
+
# 2.9.23
|
|
821
|
+
- fix(boolean-field): fix click on radio button 'no', when field has no value
|
|
822
|
+
|
|
823
|
+
# 2.11.1
|
|
824
|
+
- enh(deps): Upgrade to apollo-angular 7.1.2 and apollo 3.11 (+ fix breaking changes in graphql.service.ts)
|
|
825
|
+
- fix(css): Dark theme: fix checkbox style, and autocomplete panel
|
|
826
|
+
|
|
827
|
+
# 2.11.2
|
|
828
|
+
- enh(app-text-form): Add new inputs `appearance` and `subscriptSizing`
|
|
829
|
+
- fix(css): Dark theme: fix style for outline field
|
|
830
|
+
|
|
831
|
+
# 2.11.3
|
|
832
|
+
- fix(app-text-form): Input `autoHeight` is now deprecated (use `autoSize` instead)
|
|
833
|
+
- enh(app-text-form): Add new inputs `autoSizeMinRows` and `autoSizeMaxRows`
|
|
834
|
+
|
|
835
|
+
# 2.11.7
|
|
836
|
+
- fix(css): Dark theme: fix style
|
|
837
|
+
|
|
838
|
+
# 2.11.8
|
|
839
|
+
- enh(form-error): Add options to `IFormPathTranslator.translateFormPath()`
|
|
840
|
+
|
|
841
|
+
# 2.12.0
|
|
842
|
+
- enh(form-error): Remove deprecated interface `IFormControlPathTranslator`
|
|
843
|
+
|
|
844
|
+
# 2.12.4
|
|
845
|
+
- fix(date): Update formControl (and datePicker) when textControl value changes, and clean text input by regexp
|
|
846
|
+
- fix(date-time): Keep control as invalid is time is empty
|
|
847
|
+
- enh(date-time): Add new `@Input() allowNoTime` to make time optional
|
|
848
|
+
- fix(lat-long): Fix deletion, when press delete key
|
|
849
|
+
|
|
850
|
+
# 2.12.7
|
|
851
|
+
- fix: addShortcut handler use `KeyboardEvent` instead of a simple 'EVent'
|
|
852
|
+
|
|
853
|
+
# 2.12.8
|
|
854
|
+
- enh: function `toNumber()` will now return the default value, when input is `NaN`
|
|
855
|
+
|
|
856
|
+
# 2.12.9
|
|
857
|
+
- fix(paginator): Fix paginator style on mobile screen (align to the left, and hide page size, like before the Angular 17 migration)
|
|
858
|
+
|
|
859
|
+
# 2.12.10
|
|
860
|
+
- fix(autocomplete): Compute the panel width if not set (in mobile) - workaround for an issue in mat-select panel
|
|
861
|
+
|
|
862
|
+
# 2.12.12
|
|
863
|
+
- fix(theme): add all dark colors from material theme
|
|
864
|
+
- fix(autocomplete): in mobile device, add a text-wrap and a max-height in mat-option
|
|
865
|
+
|
|
866
|
+
# 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)
|
|
868
|
+
|
|
869
|
+
# 2.12.16
|
|
870
|
+
- fix(autocomplete): Reload items when `showAllOnFocus = true`
|
|
871
|
+
- fix(autocomplete): Use `??` operator, instead of `toBoolean()`, `toNumber()` etc.
|
|
872
|
+
- enh(autocomplete): Add option `applyImplicitValue` to config
|
|
873
|
+
- enh(pipe): add a `asBoolean` pipe, with an optional predicate function as option (e.g. to test any value)
|
|
874
|
+
- enh(account): Allow to change password, if auth token is `token` (will update the pubkey)
|
|
875
|
+
- fix(lat-long): Refactor component (remove maskito placeholder use)
|
|
876
|
+
- enh(table): Add new component `<nav-actions-column>`
|
|
877
|
+
|
|
878
|
+
# 2.12.19
|
|
879
|
+
- fix(nav-actions-column): Fix when inside a `AppAsyncTable`
|
|
880
|
+
|
|
881
|
+
# 2.12.26
|
|
882
|
+
- enh(app-async-table): declare property `readonly cd: ChangeDetectorRef`
|
|
883
|
+
- enh(app-async-table): implement `markForCheck()` and `detectCHanges()`
|
|
884
|
+
- enh(app-table): declare property `readonly cd: ChangeDetectorRef`
|
|
885
|
+
- fix(app-table): call `detectChanges()` inside `editRow()`, `addRowToTable()` and `toggleSelectRow()` - need by SUMARiS (e.g. samples tables)
|
|
886
|
+
- fix(app-table): `toggleSelectRow()` should not call `event.preventDefault()` otherwise checkbox will not be checked
|
|
887
|
+
|
|
888
|
+
# 2.12.27
|
|
889
|
+
- enh(app-table): implement `markForCheck()` and `detectChanges()`
|
|
890
|
+
|
|
891
|
+
# 2.12.29
|
|
892
|
+
- fix(new-token-modal): Add a full form and fix save issue
|
|
893
|
+
|
|
894
|
+
# 2.12.30
|
|
895
|
+
- enh(platform): Add copy to clipboard return state
|
|
896
|
+
|
|
897
|
+
# 2.12.29
|
|
898
|
+
- fix(new-token-modal): Add a full form and fix save issue
|
|
899
|
+
|
|
900
|
+
# 18.0.0
|
|
901
|
+
- enh(deps) Upgrade to Angular 18.2.8 and Ionic 8.3
|
|
902
|
+
- 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
|
|
904
|
+
- enh(app-properties-form): Add `@Input() showHintKey: boolean` to show option key (has a hint)
|
|
905
|
+
- enh(network-service): Avoid to restart the service if peer has not changed
|
|
906
|
+
- enh(AppFormArray): allow to use AppFormArray on any type (and not only Entity has before)
|
|
907
|
+
- enh(AppFormUtils) add useful static functions to enable/disable control(s)
|
|
908
|
+
- enh(mat-autocomplete-field): add option `selectInputContentOnFocus` to option, to select the input content on focus in
|
|
909
|
+
- enh(app-named-filter-selector): Add `@Input() buttonsPosition: 'matSuffix'|'after'` to let user defined button position (inside the field, or after)
|
|
910
|
+
- 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)
|
|
912
|
+
- fix(nav-actions-column): Use `OnPush` changeDetection
|
|
913
|
+
- fix(app-form-field): Emit `(keyup.enter)` event, when field's type is `double`
|
|
914
|
+
|
|
915
|
+
# 18.0.5
|
|
916
|
+
- enh(mat-autocomplete-field):
|
|
917
|
+
- Change type of `MatAutocompleteFieldConfig.suggestFn` to use SuggestFn<T, F> (allow to pass more options - e.g. used to resolve entity in AppPropertiesUtils)
|
|
918
|
+
- Add `@Input() label`
|
|
919
|
+
- Add `@Input() hideRequiredMarker`
|
|
920
|
+
- enh(app-form-field):
|
|
921
|
+
- Add `@Input() hideRequiredMarker`
|
|
922
|
+
- Fix the style when readonly and type `enum`
|
|
923
|
+
- interface `FormFieldDefinition`: Add property `serializeAttribute?: string` (instead of using autocomplete.filer.joinAttribute)
|
|
924
|
+
- add a static function `FormFieldDefinitionUtils.prepareDefinitions()` to resolve enum values, by `InjectionToken`
|
|
925
|
+
- enh(app-properties-form):
|
|
926
|
+
- Entity/Entities are now resolved from helper class AppPropertiesUtils
|
|
927
|
+
- Allow to change add button title
|
|
928
|
+
- Resolve enum item, when using InjectionToken for values
|
|
929
|
+
- enh(shared) Add decorators `@RxStateRegister()` `@RxStateSelect()` and `@RxStateProperty()` to connect property to a `RxState`
|
|
930
|
+
- 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)
|
|
932
|
+
|
|
933
|
+
# 18.0.6
|
|
934
|
+
- fix(scss): set flex-wrap to nowrap
|
|
935
|
+
- enh(autocomplete-test): add test case with a button
|
|
936
|
+
- fix(logout) Logout should be done AFTER home redirection, because of cache clearing - see issue #5
|
|
937
|
+
|
|
938
|
+
# 18.0.7
|
|
939
|
+
- fix(hotkeys) Fix default platform control key ('meta' on iOS)
|
|
940
|
+
|
|
941
|
+
# 18.0.8
|
|
942
|
+
- fix(hotkeys) Avoid to open many help modal
|
|
943
|
+
- fix(hotkeys) Skip open help modal, if nothing to display
|
|
944
|
+
- fix(form-buttons-bar) Fix shortcuts for iOS
|
|
945
|
+
- fix(modal-toolbar) Fix shortcut for iOS
|
|
946
|
+
|
|
947
|
+
# 18.0.9
|
|
948
|
+
- fix(mat-latlong-field) Mark control as dirty, when text control changed
|
|
949
|
+
- 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`
|
|
951
|
+
|
|
952
|
+
# 18.0.10
|
|
953
|
+
- enh(utils) Add static functions `isFirefox()`, `isSafari()` and `isEdge()` to test user agent
|
|
954
|
+
- enh(utils) Add static functions `EntityUtils.collectIds()` and `EntityUtils.splitById()`
|
|
955
|
+
- fix(utils) Mark function `EntityUtils.collectById()` as deprecated (in flavor of `EntityUtils.splitById()`)
|
|
956
|
+
|
|
957
|
+
# 18.1.0
|
|
958
|
+
- enh(deps) Upgrade to angular 18.2.11 and other deps
|
|
959
|
+
- fix(deps) move maildev library into dev dependencies
|
|
960
|
+
|
|
961
|
+
# 18.1.1
|
|
962
|
+
- enh(deps) Update angular-eslint to 18.4.0
|
|
963
|
+
|
|
964
|
+
# 18.1.2
|
|
965
|
+
- enh(deps) Revert to Ionic 7.8.6
|
|
966
|
+
|
|
967
|
+
# 18.1.3
|
|
968
|
+
- fix(settings) Add static function `isOnFieldMode()`
|
|
969
|
+
- fix(menu) Make unpinned menu works, when reload app (F5) with a pinned menu
|
|
970
|
+
|
|
971
|
+
# 18.1.4
|
|
972
|
+
- fix(tab) Keep default tab label style (e.g. min-width) when stretch tabs is enabled
|
|
973
|
+
- fix(tab) Reduce tab label padding, on small screen
|
|
974
|
+
|
|
975
|
+
# 18.1.7
|
|
976
|
+
- enh(AppFormArray) Add `clone()` function
|
|
977
|
+
|
|
978
|
+
# 18.2.0
|
|
979
|
+
- 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
|
+
- fix(graphql-service) Allow `opts.update` to use new Apollo type `MutationUpdaterFunction` (type `MutationUpdaterFn` is deprecated)
|
|
981
|
+
|
|
982
|
+
# 18.2.6
|
|
983
|
+
- fix(autocomplete-field) Fix arrow drop icon position, when mobile
|
|
984
|
+
- fix(autocomplete-field) Use desktop arrow drop icon, when multiple and desktop
|
|
985
|
+
- fix(BaseEntityService) simplify functions `fromObject()` and `fromObjects()` (move `toEntity` argument into `options`)
|
|
986
|
+
- enh(services) Allow `suggestFromArray()` to search using `?` as wildcard (=match one character) in the search text
|
|
987
|
+
- enh(HighlightPipe) Allow to use the character `?` as wildcard (=match one character) in the search text
|
|
988
|
+
- enh(functions) Allow `suggestFromStringArray()` to search using `?` as wildcard (=match one character) in the search text
|
|
989
|
+
- enh(shared) New helper class `RegExpUtils`
|
|
990
|
+
|
|
991
|
+
# 18.2.7
|
|
992
|
+
- 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
|
+
|
|
994
|
+
# 18.2.9
|
|
995
|
+
- 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
|
+
|
|
997
|
+
# 18.2.11
|
|
998
|
+
- enh(DateUtils): Add `DateUtils.diffAbs()` to compute duration between two dates
|
|
999
|
+
|
|
1000
|
+
# 18.2.19
|
|
1001
|
+
- enh(timepicker) MatDateTime : Migrate timepicker to new library Ngx Mat TimePicker (fix animation, cancel button, Angular 17 compatibility, etc.)
|
|
1002
|
+
|
|
1003
|
+
# 18.2.21
|
|
1004
|
+
- enh(functions) Rename `selectInputContent` into `selectInputContentFromEvent`, and make `selectInputContent` that only use an <input> as argument
|
|
1005
|
+
- enh(autocomplete-field) Add `@Input() clearInvalidValueOnBlur: boolean` to reset the field when typing invalid search text (no match or no many matches)
|
|
1006
|
+
- fix(swipe-field) Fix swiper previous/next arrows
|
|
1007
|
+
|
|
1008
|
+
# 18.2.23
|
|
1009
|
+
- enh(validators) add option skipIfNoTime to dateRange
|
|
1010
|
+
|
|
1011
|
+
# 18.2.24
|
|
1012
|
+
- enh(pipe) add new pipe `isValidDate` with option `requiredTime` (to test date with noTime flag)
|
|
1013
|
+
|
|
1014
|
+
# 18.2.26
|
|
1015
|
+
- enh(select-peer-modal) Allow to search on peers modal
|
|
1016
|
+
- enh(select-peer-modal) Allow to select peer by features (aka programs) - should set `enableSelectPeerByFeature: true` in the environment token (disabled by default)
|
|
1017
|
+
|
|
1018
|
+
# 18.2.28
|
|
1019
|
+
- fix(mat-boolean-field) Small refactoring + simplify blur detection, using standard Angular outputs
|
|
1020
|
+
- enh(mat-latlong-field) Refactor the component, to use separate inputs (instead of using Maskito)
|
|
1021
|
+
- 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
|
+
|
|
1023
|
+
# 18.2.29
|
|
1024
|
+
- enh(validators) add opts to dateMaxDuration to skip date with NoTime
|
|
1025
|
+
- fix(mat-boolean-field) Fix buttons layout (padding) to be same as sumaris QV pmfm buttons
|
|
1026
|
+
|
|
1027
|
+
# 18.2.30
|
|
1028
|
+
- fix(forms) Fix error `TypeError: Cannot read properties of undefined (reading 'setControlEnabled')`
|
|
1029
|
+
|
|
1030
|
+
# 18.2.31
|
|
1031
|
+
- fix(mat-latlong-field) Prevent NaN on component initialization
|