@lukfel/ng-scaffold 20.0.55 → 20.0.56
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/README.md +80 -76
- package/package.json +1 -1
- package/schematics/ng-add/add-config.d.ts +3 -0
- package/schematics/ng-add/add-config.js +4 -1
- package/schematics/ng-add/add-config.js.map +1 -1
- package/schematics/ng-add/add-module.d.ts +3 -0
- package/schematics/ng-add/add-module.js +7 -1
- package/schematics/ng-add/add-module.js.map +1 -1
- package/schematics/ng-add/add-styles.d.ts +3 -0
- package/schematics/ng-add/add-styles.js +23 -22
- package/schematics/ng-add/add-styles.js.map +1 -1
- package/schematics/ng-add/add-template.d.ts +3 -0
- package/schematics/ng-add/add-template.js +3 -0
- package/schematics/ng-add/add-template.js.map +1 -1
package/README.md
CHANGED
|
@@ -11,19 +11,27 @@ This Angular library provides a foundational scaffold for modern web and mobile
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
## Installation
|
|
14
|
-
Install the package using npm:
|
|
14
|
+
Install the package using `npm install` or `ng add` (with experimental Angular schematics):
|
|
15
15
|
|
|
16
16
|
```sh
|
|
17
17
|
npm install @lukfel/ng-scaffold
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
+
```sh
|
|
21
|
+
ng add @lukfel/ng-scaffold
|
|
22
|
+
```
|
|
20
23
|
|
|
24
|
+
The ng add command will additionally try to perform the following actions:
|
|
25
|
+
* Import `ScaffoldModule`
|
|
26
|
+
* Inject `ScaffoldService` and initialize `ScaffoldConfig`
|
|
27
|
+
* Wrap template with `<lf-scaffold>`
|
|
28
|
+
* Include styles
|
|
21
29
|
|
|
22
30
|
|
|
23
31
|
## Module
|
|
24
32
|
Import the `ScaffoldModule` into your `app.module.ts` file.
|
|
25
33
|
|
|
26
|
-
* **Note:** (Optional) The library includes a built-in logging service called `Logger`, which logs library
|
|
34
|
+
* **Note:** (Optional) The library includes a built-in logging service called `Logger`, which logs library debugging events when a `ScaffoldLibraryConfig` is provided and `debugging` is set to `true`. Logging is automatically disabled in production mode when `production` is set to `true`.
|
|
27
35
|
|
|
28
36
|
```ts
|
|
29
37
|
import { ScaffoldModule } from '@lukfel/ng-scaffold';
|
|
@@ -41,6 +49,75 @@ export class AppModule { }
|
|
|
41
49
|
|
|
42
50
|
|
|
43
51
|
|
|
52
|
+
## Configuration
|
|
53
|
+
Import the `ScaffoldService` in `app.component.ts` to manage the `ScaffoldConfig`.
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
import { ScaffoldService } from '@lukfel/ng-scaffold';
|
|
57
|
+
|
|
58
|
+
export class AppComponent {
|
|
59
|
+
|
|
60
|
+
public scaffoldConfig: ScaffoldConfig = {
|
|
61
|
+
// Create your own config or generate it at https://lukfel.github.io/ng-scaffold
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
constructor(private scaffoldService: ScaffoldService) {
|
|
65
|
+
this.scaffoldService.scaffoldConfig = this.scaffoldConfig;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Update Configuration (immutable, partial)
|
|
71
|
+
The `ScaffoldService` provides `updateScaffoldProperty()` to partially update the `ScaffoldConfig` in a type-safe way. It performs an immutable update, creating a new configuration object with the updated property and emits the new state.
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
import { ScaffoldService, DrawerConfig, HeaderConfig, MenuButton } from '@lukfel/ng-scaffold';
|
|
75
|
+
|
|
76
|
+
export class AppComponent {
|
|
77
|
+
|
|
78
|
+
constructor(private scaffoldService: ScaffoldService) {
|
|
79
|
+
this.scaffoldService.scaffoldConfig = this.scaffoldConfig;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Example #1: Toggle the drawer open state
|
|
83
|
+
public toggleDrawer(): void {
|
|
84
|
+
const currentDrawerConfig: DrawerConfig = this.scaffoldService.scaffoldConfig.drawerConfig!;
|
|
85
|
+
const updatedDrawerConfig: DrawerConfig = { ...currentDrawerConfig, open: !currentDrawerConfig.open };
|
|
86
|
+
this.scaffoldService.updateScaffoldProperty('drawerConfig', updatedDrawerConfig);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Example #2: Enable the header input field
|
|
90
|
+
public enableHeaderInput(): void {
|
|
91
|
+
const currentHeaderConfig: HeaderConfig = this.scaffoldService.scaffoldConfig.headerConfig!;
|
|
92
|
+
const updatedHeaderConfig: HeaderConfig = { ...currentHeaderConfig, inputConfig: { enable: true } };
|
|
93
|
+
this.scaffoldService.updateScaffoldProperty('headerConfig', updatedHeaderConfig);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Example #2: Add new button to navbar
|
|
97
|
+
public addNavbarButton(button: MenuButton): void {
|
|
98
|
+
const currentNavbarConfig: NavbarConfig = this.scaffoldService.scaffoldConfig.navbarConfig!;
|
|
99
|
+
const updatedNavbarConfig: NavbarConfig = { ...currentNavbarConfig, menuButtons: [...currentNavbarConfig.menuButtons!, button] };
|
|
100
|
+
this.scaffoldService.updateScaffoldProperty('navbarConfig', updatedNavbarConfig);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
## Template
|
|
109
|
+
Wrap your application’s content inside the `lf-scaffold` component in `app.component.html`.
|
|
110
|
+
|
|
111
|
+
```html
|
|
112
|
+
<lf-scaffold>
|
|
113
|
+
<ng-container drawerContent></ng-container> <!-- (Optional) content projection for drawer -->
|
|
114
|
+
<router-outlet></router-outlet>
|
|
115
|
+
</lf-scaffold>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
44
121
|
## Styling
|
|
45
122
|
Import the styles in your `styles.scss` and apply a default theme.
|
|
46
123
|
|
|
@@ -121,83 +198,10 @@ body {
|
|
|
121
198
|
|
|
122
199
|
|
|
123
200
|
|
|
124
|
-
## Template
|
|
125
|
-
Wrap your application’s content inside the `lf-scaffold` component in `app.component.html`.
|
|
126
|
-
|
|
127
|
-
```html
|
|
128
|
-
<lf-scaffold>
|
|
129
|
-
<!-- (Optional) drawer content shows inside the left drawer if enabled -->
|
|
130
|
-
<ng-container drawerContent></ng-container>
|
|
131
|
-
<router-outlet></router-outlet>
|
|
132
|
-
</lf-scaffold>
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
## Configuration
|
|
139
|
-
Import the `ScaffoldService` in `app.component.ts` to manage the `ScaffoldConfig` settings.
|
|
140
|
-
|
|
141
|
-
```ts
|
|
142
|
-
import { ScaffoldService } from '@lukfel/ng-scaffold';
|
|
143
|
-
|
|
144
|
-
export class AppComponent {
|
|
145
|
-
constructor(private scaffoldService: ScaffoldService) {}
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### Initialize Configuration
|
|
150
|
-
Define the `ScaffoldConfig` in your `app.component.ts` and initialize the `scaffoldConfig` property in `ScaffoldService`.
|
|
151
|
-
|
|
152
|
-
* **Notes:**
|
|
153
|
-
* If a sub-configuration (e.g. `headerConfig`) is missing or does not have `enable: true`, the corresponding UI element will not be displayed.
|
|
154
|
-
|
|
155
|
-
```ts
|
|
156
|
-
import { ScaffoldService, ScaffoldConfig } from '@lukfel/ng-scaffold';
|
|
157
|
-
|
|
158
|
-
export class AppComponent {
|
|
159
|
-
|
|
160
|
-
public scaffoldConfig: ScaffoldConfig = {
|
|
161
|
-
scrollPositionRestoration: true,
|
|
162
|
-
headerConfig: { enable: true, title: 'Scaffold', subtitle: 'by Lukas Felbinger' },
|
|
163
|
-
navbarConfig: { enable: true },
|
|
164
|
-
footerConfig: { enable: true, copyright: '© Lukas Felbinger 2025' },
|
|
165
|
-
floatingButtonConfig: { enable: true }
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
constructor(private scaffoldService: ScaffoldService) {
|
|
169
|
-
this.scaffoldService.scaffoldConfig = this.scaffoldConfig;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### Update Configuration (immutable, partial)
|
|
175
|
-
The `ScaffoldService` provides a method `updateScaffoldProperty()` to partially update the `ScaffoldConfig` in a type-safe way. It performs an immutable update, creating a new configuration object with the updated property and emits the new state.
|
|
176
|
-
|
|
177
|
-
```ts
|
|
178
|
-
import { ScaffoldService, DrawerConfig } from '@lukfel/ng-scaffold';
|
|
179
|
-
|
|
180
|
-
export class AppComponent {
|
|
181
|
-
|
|
182
|
-
constructor(private scaffoldService: ScaffoldService) {
|
|
183
|
-
this.scaffoldService.scaffoldConfig = this.scaffoldConfig;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
public toggleDrawer(): void {
|
|
187
|
-
const currentDrawerConfig: DrawerConfig = this.scaffoldService.scaffoldConfig.drawerConfig;
|
|
188
|
-
const updatedDrawerConfig: DrawerConfig = { ...currentDrawerConfig, open: !currentDrawerConfig.open };
|
|
189
|
-
this.scaffoldService.updateScaffoldProperty('drawerConfig', updatedDrawerConfig);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
201
|
## Events
|
|
198
202
|
There are two ways to listen to scaffold user events (button clicks, input changes, ...):
|
|
199
203
|
|
|
200
|
-
### Option 1 (Recommended) – Subscribe to Observables
|
|
204
|
+
### Option 1 (Recommended) – Subscribe to Event Observables
|
|
201
205
|
Subscribe to the event Observables and listen to changes
|
|
202
206
|
```ts
|
|
203
207
|
constructor(private scaffoldService: ScaffoldService, private router: Router) {
|
package/package.json
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Check for root component and set the initial library config
|
|
4
|
+
*/
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.addConfig = addConfig;
|
|
4
7
|
const ts = require("typescript");
|
|
@@ -57,7 +60,7 @@ function addConfig() {
|
|
|
57
60
|
const snippet = `
|
|
58
61
|
private scaffoldService = inject(ScaffoldService);
|
|
59
62
|
private scaffoldConfig: ScaffoldConfig = {
|
|
60
|
-
// Create your own config or generate it at https://lukfel.github.io/ng-scaffold
|
|
63
|
+
// Create your own config or generate it at https://lukfel.github.io/ng-scaffold
|
|
61
64
|
};
|
|
62
65
|
|
|
63
66
|
constructor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-config.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/add-config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"add-config.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/add-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Check for root module or main.ts if standalone and import the library module
|
|
4
|
+
*/
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.addModule = addModule;
|
|
4
7
|
const ts = require("typescript");
|
|
5
8
|
function addModule() {
|
|
6
9
|
return (tree, context) => {
|
|
7
10
|
context.logger.info('[Module] Searching for root module ...');
|
|
8
|
-
const possiblePaths = [
|
|
11
|
+
const possiblePaths = [
|
|
12
|
+
'src/app/app.module.ts',
|
|
13
|
+
'src/app/app-module.ts'
|
|
14
|
+
];
|
|
9
15
|
const path = possiblePaths.find(p => tree.exists(p));
|
|
10
16
|
if (path) {
|
|
11
17
|
return addToNgModule(tree, context, path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-module.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/add-module.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"add-module.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/add-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Check for root style file and add the necessary styles on top
|
|
4
|
+
*/
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.addStyles = addStyles;
|
|
4
|
-
|
|
7
|
+
function addStyles() {
|
|
8
|
+
return (tree, context) => {
|
|
9
|
+
context.logger.info('[Styles] Searching for root styles ...');
|
|
10
|
+
const possiblePaths = [
|
|
11
|
+
'src/styles.scss',
|
|
12
|
+
'src/styles.sass',
|
|
13
|
+
'src/styles.css'
|
|
14
|
+
];
|
|
15
|
+
const path = possiblePaths.find(p => tree.exists(p));
|
|
16
|
+
if (!path) {
|
|
17
|
+
context.logger.warn('[Styles] No global styles file found. Skip.');
|
|
18
|
+
return tree;
|
|
19
|
+
}
|
|
20
|
+
;
|
|
21
|
+
const content = tree.read(path).toString('utf-8');
|
|
22
|
+
if (content.includes('@lukfel/ng-scaffold/styles') || content.includes('lf.scaffold-theme')) {
|
|
23
|
+
context.logger.info('[Styles] Styles already added. Skip.');
|
|
24
|
+
return tree;
|
|
25
|
+
}
|
|
26
|
+
const SNIPPET = `
|
|
5
27
|
@use "@lukfel/ng-scaffold/styles" as lf;
|
|
6
28
|
@use '@angular/material' as mat;
|
|
7
29
|
|
|
@@ -25,27 +47,6 @@ $theme2: (
|
|
|
25
47
|
@include lf.scaffold-colors($theme2, 'theme2');
|
|
26
48
|
|
|
27
49
|
`;
|
|
28
|
-
function addStyles() {
|
|
29
|
-
return (tree, context) => {
|
|
30
|
-
context.logger.info('[Styles] Searching for root styles ...');
|
|
31
|
-
const possiblePaths = [
|
|
32
|
-
'src/styles.scss',
|
|
33
|
-
'src/styles.sass',
|
|
34
|
-
'src/styles.css',
|
|
35
|
-
'src/styles.css.scss',
|
|
36
|
-
'styles.scss'
|
|
37
|
-
];
|
|
38
|
-
const path = possiblePaths.find(p => tree.exists(p));
|
|
39
|
-
if (!path) {
|
|
40
|
-
context.logger.warn('[Styles] No global styles file found. Skip.');
|
|
41
|
-
return tree;
|
|
42
|
-
}
|
|
43
|
-
;
|
|
44
|
-
const content = tree.read(path).toString('utf-8');
|
|
45
|
-
if (content.includes('@lukfel/ng-scaffold/styles') || content.includes('lf.scaffold-theme')) {
|
|
46
|
-
context.logger.info('[Styles] Styles already added. Skip.');
|
|
47
|
-
return tree;
|
|
48
|
-
}
|
|
49
50
|
const recorder = tree.beginUpdate(path);
|
|
50
51
|
recorder.insertLeft(0, SNIPPET);
|
|
51
52
|
tree.commitUpdate(recorder);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-styles.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/add-styles.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"add-styles.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/add-styles.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAIH,8BAqDC;AArDD,SAAgB,SAAS;IACrB,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAE9D,MAAM,aAAa,GAAG;YAClB,iBAAiB;YACjB,iBAAiB;YACjB,gBAAgB;SACnB,CAAC;QAEF,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACnE,OAAO,IAAI,CAAA;QACf,CAAC;QAAA,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1F,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBvB,CAAC;QAEM,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-template.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/add-template.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"add-template.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/add-template.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAIH,kCA0BC;AA1BD,SAAgB,WAAW;IACvB,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAElE,MAAM,aAAa,GAAG;YAClB,4BAA4B;YAC5B,kBAAkB;SACrB,CAAC;QAEF,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,UAAU,GAAG,kBAAkB,OAAO,kBAAkB,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,IAAI,GAAG,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC"}
|