@zambon-dev/shared 3.0.0 → 3.0.1
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/CHANGELOG.md +23 -9
- package/README.md +14 -16
- package/fesm2022/zambon-dev-shared.mjs +73 -122
- package/fesm2022/zambon-dev-shared.mjs.map +1 -1
- package/i18n/language-selector/en.json +1 -1
- package/i18n/language-selector/pt.json +1 -1
- package/i18n/login/en.json +1 -1
- package/i18n/login/pt.json +1 -1
- package/i18n/operations-history/en.json +1 -1
- package/i18n/operations-history/pt.json +1 -1
- package/index.d.ts +1 -1
- package/package.json +1 -1
- package/styles/components/button.scss +82 -72
- package/styles/components/card.scss +11 -11
- package/styles/components/dropdown-static.scss +26 -26
- package/styles/components/input-group.scss +33 -31
- package/styles/components/input.scss +70 -67
- package/styles/components/label.scss +2 -2
- package/styles/components/row.scss +45 -45
- package/styles/mixins/background.scss +21 -19
- package/styles/variables.scss +26 -26
package/CHANGELOG.md
CHANGED
|
@@ -23,6 +23,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
23
23
|
|
|
24
24
|
### ⚠ Breaking Changes / Migration
|
|
25
25
|
|
|
26
|
+
## [3.0.1] - 2026-09-21
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- `LoginLayoutComponent`, `HomeComponent`, `BrandComponent` and `EnvironmentBadgeComponent` now
|
|
31
|
+
use `ChangeDetectionStrategy.OnPush`. Behaviour is unchanged; they render from inputs or from
|
|
32
|
+
immutable application config.
|
|
33
|
+
|
|
34
|
+
- **Accessibility.** The operations-history row opens its detail modal from the keyboard as well as
|
|
35
|
+
the mouse.
|
|
36
|
+
|
|
26
37
|
## [3.0.0] - 2026-09-21
|
|
27
38
|
|
|
28
39
|
### Changed
|
|
@@ -46,6 +57,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
46
57
|
|
|
47
58
|
**Requires `@zambon-dev/library` 2.x and `@zambon-dev/framework` 2.x.** Both peer ranges moved to
|
|
48
59
|
`^2.0.0`. See the library changelog for the `FormInputComponent` output renames.
|
|
60
|
+
|
|
49
61
|
## [2.1.1] - 2026-09-15
|
|
50
62
|
|
|
51
63
|
### Fixed
|
|
@@ -61,8 +73,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
61
73
|
is decidable up front, so `ExternalContentComponent` now compares the page’s protocol with the
|
|
62
74
|
destination’s and shows a message naming the real reason. **Open in a new browser tab keeps
|
|
63
75
|
working and is the way out:** a top-level navigation to `http://` is not mixed content. For a
|
|
64
|
-
destination that only speaks `http`, configure the menu item as
|
|
65
|
-
|
|
76
|
+
destination that only speaks `http`, configure the menu item as _external, new tab_ rather than
|
|
77
|
+
_external, embedded_; to embed it, put it behind an `https` reverse proxy.
|
|
66
78
|
|
|
67
79
|
Two new keys, `ExternalContent-Insecure-Title` and `ExternalContent-Insecure-Message`, ship in
|
|
68
80
|
`en` and `pt`. An application that overrides this feature’s translations needs to add them.
|
|
@@ -127,7 +139,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
127
139
|
|
|
128
140
|
The tab URL is `/external-content/<menu id>` and never carries the destination, so no one can
|
|
129
141
|
hand-craft a link that makes your application frame an arbitrary site. Pressing F5 on an embedded
|
|
130
|
-
tab restores both the frame and the tab title from `sessionStorage`. Opening that URL in a
|
|
142
|
+
tab restores both the frame and the tab title from `sessionStorage`. Opening that URL in a _fresh_
|
|
131
143
|
browser tab can only work if your `SidebarService.getMenuFromUrl()` resolves
|
|
132
144
|
`/external-content/<id>`; otherwise the view says the content is unavailable and asks the user to
|
|
133
145
|
reopen it from the menu.
|
|
@@ -186,6 +198,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
186
198
|
detail-views through the real hosts (`DefaultTabViewComponent` /
|
|
187
199
|
`DefaultDetailsTabViewComponent`, `TabViewList` / `FormView`, and the `framework-button-*`
|
|
188
200
|
ribbon buttons). It covers:
|
|
201
|
+
|
|
189
202
|
- a branded top bar (logo, app name, subtitle, environment badge and a working notifications
|
|
190
203
|
bell) and a versioned sidebar footer;
|
|
191
204
|
- a mocked audit/history view, reachable from the detail views' Views button;
|
|
@@ -210,7 +223,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
210
223
|
`IServicesHistoryList` and `IOperationsHistoryList` declared an `ID` property, and
|
|
211
224
|
`IOperationsHistoryList` declared `entityId`. Neither key is ever sent. The audit endpoints
|
|
212
225
|
(`POST /{controller}/{entityID}/Audit` and `.../Audit/{serviceHistoryID}`) serialize under
|
|
213
|
-
ASP.NET Core's default camelCase policy, which lowercases only a
|
|
226
|
+
ASP.NET Core's default camelCase policy, which lowercases only a _leading_ run of capitals — so the
|
|
214
227
|
backend's `ID` goes out as `id` and its `EntityID` goes out as `entityID`. Typing a row against
|
|
215
228
|
`.ID` or `.entityId` therefore compiled fine and read `undefined` at run time. See
|
|
216
229
|
**⚠ Breaking Changes / Migration** below.
|
|
@@ -239,10 +252,10 @@ Two properties on the audit history models were renamed to the keys the backend
|
|
|
239
252
|
models are exported from the package root, so anything typed against the old names will now fail to
|
|
240
253
|
compile. Nothing in `@shared` changes behaviour at run time — the fix is to the declared types.
|
|
241
254
|
|
|
242
|
-
| Model
|
|
243
|
-
|
|
244
|
-
| `IServicesHistoryList`
|
|
245
|
-
| `IOperationsHistoryList` | `ID: number`
|
|
255
|
+
| Model | Before | After |
|
|
256
|
+
| ------------------------ | ------------------- | ------------------- |
|
|
257
|
+
| `IServicesHistoryList` | `ID: number` | `id: number` |
|
|
258
|
+
| `IOperationsHistoryList` | `ID: number` | `id: number` |
|
|
246
259
|
| `IOperationsHistoryList` | `entityId?: number` | `entityID?: number` |
|
|
247
260
|
|
|
248
261
|
To upgrade:
|
|
@@ -344,7 +357,8 @@ URL) in `AppConfig`, and implement a hub that pushes the notification list to cl
|
|
|
344
357
|
available via [GitHub Releases](https://github.com/RicardoZambon/ZLibraries/releases) and the
|
|
345
358
|
`shared-v*` tags.
|
|
346
359
|
|
|
347
|
-
[Unreleased]: https://github.com/RicardoZambon/ZLibraries/compare/shared-v3.0.
|
|
360
|
+
[Unreleased]: https://github.com/RicardoZambon/ZLibraries/compare/shared-v3.0.1...HEAD
|
|
361
|
+
[3.0.1]: https://github.com/RicardoZambon/ZLibraries/releases/tag/shared-v3.0.1
|
|
348
362
|
[3.0.0]: https://github.com/RicardoZambon/ZLibraries/releases/tag/shared-v3.0.0
|
|
349
363
|
[2.1.3]: https://github.com/RicardoZambon/ZLibraries/releases/tag/shared-v2.1.3
|
|
350
364
|
[2.1.2]: https://github.com/RicardoZambon/ZLibraries/releases/tag/shared-v2.1.2
|
package/README.md
CHANGED
|
@@ -17,20 +17,20 @@ npm install @zambon-dev/shared
|
|
|
17
17
|
|
|
18
18
|
All peers must be present in the consuming application:
|
|
19
19
|
|
|
20
|
-
| Package
|
|
21
|
-
|
|
|
22
|
-
| `@angular/common`
|
|
23
|
-
| `@angular/core`
|
|
24
|
-
| `@angular/forms`
|
|
25
|
-
| `@angular/platform-browser`
|
|
26
|
-
| `@angular/router`
|
|
27
|
-
| `@auth0/angular-jwt`
|
|
28
|
-
| `@microsoft/signalr`
|
|
29
|
-
| `@ngx-translate/core`
|
|
30
|
-
| `@zambon-dev/framework`
|
|
31
|
-
| `@zambon-dev/library`
|
|
20
|
+
| Package | Range |
|
|
21
|
+
| --------------------------------- | --------- |
|
|
22
|
+
| `@angular/common` | `^19.1.0` |
|
|
23
|
+
| `@angular/core` | `^19.1.0` |
|
|
24
|
+
| `@angular/forms` | `^19.1.0` |
|
|
25
|
+
| `@angular/platform-browser` | `^19.1.0` |
|
|
26
|
+
| `@angular/router` | `^19.1.0` |
|
|
27
|
+
| `@auth0/angular-jwt` | `^5.2.0` |
|
|
28
|
+
| `@microsoft/signalr` | `^10.0.0` |
|
|
29
|
+
| `@ngx-translate/core` | `^16.0.4` |
|
|
30
|
+
| `@zambon-dev/framework` | `^1.0.0` |
|
|
31
|
+
| `@zambon-dev/library` | `^1.0.0` |
|
|
32
32
|
| `ngx-translate-multi-http-loader` | `^19.0.2` |
|
|
33
|
-
| `rxjs`
|
|
33
|
+
| `rxjs` | `^7.8.0` |
|
|
34
34
|
|
|
35
35
|
## Usage
|
|
36
36
|
|
|
@@ -51,9 +51,7 @@ Route protection uses the exported guard:
|
|
|
51
51
|
```ts
|
|
52
52
|
import { AuthGuard } from '@zambon-dev/shared';
|
|
53
53
|
|
|
54
|
-
export const routes: Routes = [
|
|
55
|
-
{ path: 'orders', component: OrdersComponent, canActivate: [AuthGuard] },
|
|
56
|
-
];
|
|
54
|
+
export const routes: Routes = [{ path: 'orders', component: OrdersComponent, canActivate: [AuthGuard] }];
|
|
57
55
|
```
|
|
58
56
|
|
|
59
57
|
Unauthenticated visitors are redirected to `/login` with a `returnUrl` query parameter.
|