@zambon-dev/shared 2.1.3 → 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 +35 -9
- package/README.md +18 -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 +3 -3
- 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,24 @@ 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
|
+
|
|
37
|
+
## [3.0.0] - 2026-09-21
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- **Accessibility.** The operations-history row opens its detail modal from the keyboard as well as
|
|
42
|
+
the mouse.
|
|
43
|
+
|
|
26
44
|
## [2.1.3] - 2026-09-21
|
|
27
45
|
|
|
28
46
|
- Maintenance release (no consumer-facing changes were documented).
|
|
@@ -35,6 +53,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
35
53
|
`ExternalContentComponent` and `BypassHtmlSanitizerPipe`, but neither package was declared.
|
|
36
54
|
- Added a README to the published package.
|
|
37
55
|
|
|
56
|
+
### ⚠ Breaking Changes / Migration
|
|
57
|
+
|
|
58
|
+
**Requires `@zambon-dev/library` 2.x and `@zambon-dev/framework` 2.x.** Both peer ranges moved to
|
|
59
|
+
`^2.0.0`. See the library changelog for the `FormInputComponent` output renames.
|
|
60
|
+
|
|
38
61
|
## [2.1.1] - 2026-09-15
|
|
39
62
|
|
|
40
63
|
### Fixed
|
|
@@ -50,8 +73,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
50
73
|
is decidable up front, so `ExternalContentComponent` now compares the page’s protocol with the
|
|
51
74
|
destination’s and shows a message naming the real reason. **Open in a new browser tab keeps
|
|
52
75
|
working and is the way out:** a top-level navigation to `http://` is not mixed content. For a
|
|
53
|
-
destination that only speaks `http`, configure the menu item as
|
|
54
|
-
|
|
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.
|
|
55
78
|
|
|
56
79
|
Two new keys, `ExternalContent-Insecure-Title` and `ExternalContent-Insecure-Message`, ship in
|
|
57
80
|
`en` and `pt`. An application that overrides this feature’s translations needs to add them.
|
|
@@ -116,7 +139,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
116
139
|
|
|
117
140
|
The tab URL is `/external-content/<menu id>` and never carries the destination, so no one can
|
|
118
141
|
hand-craft a link that makes your application frame an arbitrary site. Pressing F5 on an embedded
|
|
119
|
-
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_
|
|
120
143
|
browser tab can only work if your `SidebarService.getMenuFromUrl()` resolves
|
|
121
144
|
`/external-content/<id>`; otherwise the view says the content is unavailable and asks the user to
|
|
122
145
|
reopen it from the menu.
|
|
@@ -175,6 +198,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
175
198
|
detail-views through the real hosts (`DefaultTabViewComponent` /
|
|
176
199
|
`DefaultDetailsTabViewComponent`, `TabViewList` / `FormView`, and the `framework-button-*`
|
|
177
200
|
ribbon buttons). It covers:
|
|
201
|
+
|
|
178
202
|
- a branded top bar (logo, app name, subtitle, environment badge and a working notifications
|
|
179
203
|
bell) and a versioned sidebar footer;
|
|
180
204
|
- a mocked audit/history view, reachable from the detail views' Views button;
|
|
@@ -199,7 +223,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
199
223
|
`IServicesHistoryList` and `IOperationsHistoryList` declared an `ID` property, and
|
|
200
224
|
`IOperationsHistoryList` declared `entityId`. Neither key is ever sent. The audit endpoints
|
|
201
225
|
(`POST /{controller}/{entityID}/Audit` and `.../Audit/{serviceHistoryID}`) serialize under
|
|
202
|
-
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
|
|
203
227
|
backend's `ID` goes out as `id` and its `EntityID` goes out as `entityID`. Typing a row against
|
|
204
228
|
`.ID` or `.entityId` therefore compiled fine and read `undefined` at run time. See
|
|
205
229
|
**⚠ Breaking Changes / Migration** below.
|
|
@@ -228,10 +252,10 @@ Two properties on the audit history models were renamed to the keys the backend
|
|
|
228
252
|
models are exported from the package root, so anything typed against the old names will now fail to
|
|
229
253
|
compile. Nothing in `@shared` changes behaviour at run time — the fix is to the declared types.
|
|
230
254
|
|
|
231
|
-
| Model
|
|
232
|
-
|
|
233
|
-
| `IServicesHistoryList`
|
|
234
|
-
| `IOperationsHistoryList` | `ID: number`
|
|
255
|
+
| Model | Before | After |
|
|
256
|
+
| ------------------------ | ------------------- | ------------------- |
|
|
257
|
+
| `IServicesHistoryList` | `ID: number` | `id: number` |
|
|
258
|
+
| `IOperationsHistoryList` | `ID: number` | `id: number` |
|
|
235
259
|
| `IOperationsHistoryList` | `entityId?: number` | `entityID?: number` |
|
|
236
260
|
|
|
237
261
|
To upgrade:
|
|
@@ -333,7 +357,9 @@ URL) in `AppConfig`, and implement a hub that pushes the notification list to cl
|
|
|
333
357
|
available via [GitHub Releases](https://github.com/RicardoZambon/ZLibraries/releases) and the
|
|
334
358
|
`shared-v*` tags.
|
|
335
359
|
|
|
336
|
-
[Unreleased]: https://github.com/RicardoZambon/ZLibraries/compare/shared-
|
|
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
|
|
362
|
+
[3.0.0]: https://github.com/RicardoZambon/ZLibraries/releases/tag/shared-v3.0.0
|
|
337
363
|
[2.1.3]: https://github.com/RicardoZambon/ZLibraries/releases/tag/shared-v2.1.3
|
|
338
364
|
[2.1.2]: https://github.com/RicardoZambon/ZLibraries/releases/tag/shared-v2.1.2
|
|
339
365
|
[2.1.1]: https://github.com/RicardoZambon/ZLibraries/releases/tag/shared-v2.1.1
|
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.
|
|
@@ -93,6 +91,10 @@ Components, models and pipes are exported from the package root as well.
|
|
|
93
91
|
|
|
94
92
|
## Documentation
|
|
95
93
|
|
|
94
|
+
Browse the published Storybook at [https://ricardozambon.github.io/ZLibraries/shared/](https://ricardozambon.github.io/ZLibraries/shared/).
|
|
95
|
+
|
|
96
|
+
To run it locally:
|
|
97
|
+
|
|
96
98
|
```bash
|
|
97
99
|
npm run storybook:shared
|
|
98
100
|
```
|