@lukfel/ng-scaffold 21.1.43 → 21.1.44
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 +31 -4
- package/fesm2022/lukfel-ng-scaffold.mjs +109 -159
- package/fesm2022/lukfel-ng-scaffold.mjs.map +1 -1
- package/package.json +2 -3
- package/styles/_animations.scss +63 -0
- package/styles/_variables.scss +10 -1
- package/styles/style.scss +1 -0
- package/types/lukfel-ng-scaffold.d.ts +46 -28
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lukfel/ng-scaffold",
|
|
3
|
-
"version": "21.1.
|
|
3
|
+
"version": "21.1.44",
|
|
4
4
|
"description": "This Angular library provides a basic UI scaffold and services for modern web and mobile apps",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -14,8 +14,7 @@
|
|
|
14
14
|
"peerDependencies": {
|
|
15
15
|
"@angular/common": "^21.0.8",
|
|
16
16
|
"@angular/core": "^21.0.8",
|
|
17
|
-
"@angular/material": "^21.0.6"
|
|
18
|
-
"@angular/animations": "^21.0.8"
|
|
17
|
+
"@angular/material": "^21.0.6"
|
|
19
18
|
},
|
|
20
19
|
"exports": {
|
|
21
20
|
"./styles": {
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Slide up — enter from bottom, leave to bottom
|
|
2
|
+
// Used by: bottom-bar, navbar (mobile)
|
|
3
|
+
.lf-anim-slide-up-enter {
|
|
4
|
+
animation: lf-slide-up 200ms linear forwards;
|
|
5
|
+
}
|
|
6
|
+
@keyframes lf-slide-up {
|
|
7
|
+
from { transform: translateY(100%); }
|
|
8
|
+
to { transform: translateY(0); }
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.lf-anim-slide-up-leave {
|
|
12
|
+
animation: lf-slide-up-out 200ms linear forwards;
|
|
13
|
+
}
|
|
14
|
+
@keyframes lf-slide-up-out {
|
|
15
|
+
from { transform: translateY(0); }
|
|
16
|
+
to { transform: translateY(100%); }
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Slide down — enter from top, leave to top
|
|
20
|
+
// Used by: header
|
|
21
|
+
.lf-anim-slide-down-enter {
|
|
22
|
+
animation: lf-slide-down 200ms ease-out forwards;
|
|
23
|
+
}
|
|
24
|
+
@keyframes lf-slide-down {
|
|
25
|
+
from { transform: translateY(-100%); }
|
|
26
|
+
to { transform: translateY(0); }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.lf-anim-slide-down-leave {
|
|
30
|
+
animation: lf-slide-down-out 200ms ease-in forwards;
|
|
31
|
+
}
|
|
32
|
+
@keyframes lf-slide-down-out {
|
|
33
|
+
from { transform: translateY(0); }
|
|
34
|
+
to { transform: translateY(-100%); }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Slide from left — enter from left, leave to left
|
|
38
|
+
// Used by: navbar (desktop)
|
|
39
|
+
.lf-anim-slide-left-enter {
|
|
40
|
+
animation: lf-slide-left 200ms linear forwards;
|
|
41
|
+
}
|
|
42
|
+
@keyframes lf-slide-left {
|
|
43
|
+
from { transform: translateX(-100%); }
|
|
44
|
+
to { transform: translateX(0); }
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.lf-anim-slide-left-leave {
|
|
48
|
+
animation: lf-slide-left-out 200ms linear forwards;
|
|
49
|
+
}
|
|
50
|
+
@keyframes lf-slide-left-out {
|
|
51
|
+
from { transform: translateX(0); }
|
|
52
|
+
to { transform: translateX(-100%); }
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Scale in — enter with scale
|
|
56
|
+
// Used by: notification
|
|
57
|
+
.lf-anim-scale-enter {
|
|
58
|
+
animation: lf-scale-in 200ms cubic-bezier(0.785, 0.135, 0.15, 0.86) forwards;
|
|
59
|
+
}
|
|
60
|
+
@keyframes lf-scale-in {
|
|
61
|
+
from { opacity: 0; transform: scale(0.5); }
|
|
62
|
+
to { opacity: 1; transform: scale(1); }
|
|
63
|
+
}
|
package/styles/_variables.scss
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
:root {
|
|
2
2
|
--transition: 400ms cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
3
|
+
--border-radius: 4px;
|
|
3
4
|
|
|
4
5
|
--loading-overlay-z-index: 1001;
|
|
5
6
|
|
|
@@ -53,12 +54,20 @@
|
|
|
53
54
|
--placeholder-message-font-size: 16px;
|
|
54
55
|
|
|
55
56
|
--list-item-height: 72px;
|
|
56
|
-
--list-item-border-radius:
|
|
57
|
+
--list-item-border-radius: var(--border-radius);
|
|
57
58
|
--list-item-sort-icon-size: 16px;
|
|
58
59
|
--list-item-avatar-size: 48px;
|
|
59
60
|
--list-item-title-width: 200px;
|
|
60
61
|
--list-item-title-wrapper-width: 80px;
|
|
61
62
|
--list-item-checkbox-width: 40px;
|
|
62
63
|
|
|
64
|
+
--notification-max-width: 50vw;
|
|
65
|
+
--notification-min-width: 384px;
|
|
66
|
+
--notification-min-height: 48px;
|
|
67
|
+
--notification-fixed-margin: 24px;
|
|
68
|
+
--notification-static-margin: 0 0 16px 0;
|
|
69
|
+
--notification-padding: 16px 16px;
|
|
70
|
+
--notification-padding-minimal: 8px 16px;
|
|
71
|
+
|
|
63
72
|
--color-gray: rgba(128, 128, 128, 0.8);
|
|
64
73
|
}
|
package/styles/style.scss
CHANGED
|
@@ -258,6 +258,36 @@ declare class ScaffoldComponent implements OnInit, OnDestroy {
|
|
|
258
258
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScaffoldComponent, "lf-scaffold", never, {}, { "headerButtonClickEvent": "headerButtonClickEvent"; "headerInputSubmitEvent": "headerInputSubmitEvent"; "headerInputChangeEvent": "headerInputChangeEvent"; "navbarButtonClickEvent": "navbarButtonClickEvent"; "floatingButtonClickEvent": "floatingButtonClickEvent"; "bottomBarButtonClickEvent": "bottomBarButtonClickEvent"; }, never, ["[drawerContent]", "*"], true, never>;
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
+
declare class ColorPickerComponent {
|
|
262
|
+
libraryConfig: ScaffoldLibraryConfig | null;
|
|
263
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
264
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
265
|
+
readonly matIcon: _angular_core.InputSignal<string | undefined>;
|
|
266
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
267
|
+
readonly tooltip: _angular_core.InputSignal<string | undefined>;
|
|
268
|
+
readonly colorChangeEvent: _angular_core.OutputEmitterRef<string>;
|
|
269
|
+
selectedColor: _angular_core.WritableSignal<string>;
|
|
270
|
+
labelColor: _angular_core.Signal<string>;
|
|
271
|
+
selectColor(event: string): void;
|
|
272
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColorPickerComponent, never>;
|
|
273
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColorPickerComponent, "lf-color-picker", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "matIcon": { "alias": "matIcon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, { "colorChangeEvent": "colorChangeEvent"; }, never, never, true, never>;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
declare class FileUploadComponent {
|
|
277
|
+
libraryConfig: ScaffoldLibraryConfig | null;
|
|
278
|
+
private logger;
|
|
279
|
+
readonly color: _angular_core.InputSignal<"primary" | "accent" | "warn">;
|
|
280
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
281
|
+
readonly matIcon: _angular_core.InputSignal<string | undefined>;
|
|
282
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
283
|
+
readonly accept: _angular_core.InputSignal<string | undefined>;
|
|
284
|
+
readonly tooltip: _angular_core.InputSignal<string | undefined>;
|
|
285
|
+
readonly fileChangeEvent: _angular_core.OutputEmitterRef<File>;
|
|
286
|
+
selectFile(event: Event): void;
|
|
287
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadComponent, never>;
|
|
288
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploadComponent, "lf-file-upload", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "matIcon": { "alias": "matIcon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, { "fileChangeEvent": "fileChangeEvent"; }, never, never, true, never>;
|
|
289
|
+
}
|
|
290
|
+
|
|
261
291
|
declare class ListItemAvatarDirective {
|
|
262
292
|
templateRef: TemplateRef<any>;
|
|
263
293
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListItemAvatarDirective, never>;
|
|
@@ -332,34 +362,22 @@ declare class ListComponent implements OnInit, OnChanges {
|
|
|
332
362
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListComponent, "lf-list", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "groupedItems": { "alias": "groupedItems"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "dropListId": { "alias": "dropListId"; "required": false; "isSignal": true; }; "connectedDropListIds": { "alias": "connectedDropListIds"; "required": false; "isSignal": true; }; "allSelected": { "alias": "allSelected"; "required": false; "isSignal": true; }; }, { "sortChangeEvent": "sortChangeEvent"; "selectionChangeEvent": "selectionChangeEvent"; "itemClickEvent": "itemClickEvent"; "itemDropEvent": "itemDropEvent"; "buttonClickEvent": "buttonClickEvent"; "allSelected": "allSelectedChange"; }, ["avatarTemplate", "titleTemplate", "subtitleTemplate", "buttonsTemplate"], never, true, never>;
|
|
333
363
|
}
|
|
334
364
|
|
|
335
|
-
declare class
|
|
336
|
-
|
|
337
|
-
private logger;
|
|
365
|
+
declare class NotificationComponent {
|
|
366
|
+
private breakpointService;
|
|
338
367
|
readonly color: _angular_core.InputSignal<"primary" | "accent" | "warn">;
|
|
339
|
-
readonly
|
|
340
|
-
readonly
|
|
341
|
-
readonly
|
|
342
|
-
readonly
|
|
343
|
-
readonly
|
|
344
|
-
readonly
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
readonly color: _angular_core.InputSignal<string>;
|
|
353
|
-
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
354
|
-
readonly matIcon: _angular_core.InputSignal<string | undefined>;
|
|
355
|
-
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
356
|
-
readonly tooltip: _angular_core.InputSignal<string | undefined>;
|
|
357
|
-
readonly colorChangeEvent: _angular_core.OutputEmitterRef<string>;
|
|
358
|
-
selectedColor: _angular_core.WritableSignal<string>;
|
|
359
|
-
labelColor: _angular_core.Signal<string>;
|
|
360
|
-
selectColor(event: string): void;
|
|
361
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColorPickerComponent, never>;
|
|
362
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColorPickerComponent, "lf-color-picker", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "matIcon": { "alias": "matIcon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, { "colorChangeEvent": "colorChangeEvent"; }, never, never, true, never>;
|
|
368
|
+
readonly message: _angular_core.InputSignal<string>;
|
|
369
|
+
readonly link: _angular_core.InputSignal<string>;
|
|
370
|
+
readonly linkText: _angular_core.InputSignal<string>;
|
|
371
|
+
readonly action: _angular_core.InputSignal<string>;
|
|
372
|
+
readonly matIcon: _angular_core.InputSignal<string>;
|
|
373
|
+
readonly svgIcon: _angular_core.InputSignal<string>;
|
|
374
|
+
readonly static: _angular_core.InputSignal<boolean>;
|
|
375
|
+
readonly minimal: _angular_core.InputSignal<boolean>;
|
|
376
|
+
readonly cssClass: _angular_core.InputSignal<string>;
|
|
377
|
+
readonly clickEvent: _angular_core.OutputEmitterRef<void>;
|
|
378
|
+
isMobile: _angular_core.Signal<boolean | undefined>;
|
|
379
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationComponent, never>;
|
|
380
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotificationComponent, "lf-notification", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "linkText": { "alias": "linkText"; "required": false; "isSignal": true; }; "action": { "alias": "action"; "required": false; "isSignal": true; }; "matIcon": { "alias": "matIcon"; "required": false; "isSignal": true; }; "svgIcon": { "alias": "svgIcon"; "required": false; "isSignal": true; }; "static": { "alias": "static"; "required": false; "isSignal": true; }; "minimal": { "alias": "minimal"; "required": false; "isSignal": true; }; "cssClass": { "alias": "cssClass"; "required": false; "isSignal": true; }; }, { "clickEvent": "clickEvent"; }, never, never, true, never>;
|
|
363
381
|
}
|
|
364
382
|
|
|
365
383
|
declare class PlaceholderComponent {
|
|
@@ -616,5 +634,5 @@ declare class ScaffoldLoadingInterceptor implements HttpInterceptor {
|
|
|
616
634
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ScaffoldLoadingInterceptor>;
|
|
617
635
|
}
|
|
618
636
|
|
|
619
|
-
export { BreakpointService, CONFIG, ColorPickerComponent, DialogService, FileUploadComponent, ListComponent, ListItemAvatarDirective, ListItemButtonsDirective, ListItemSubtitleDirective, ListItemTitleDirective, LocalStorageService, Logger, OverlayService, PlaceholderComponent, RouterService, ScaffoldComponent, ScaffoldLoadingInterceptor, ScaffoldService, SeoService, SnackbarService, ThemeService, provideScaffold };
|
|
637
|
+
export { BreakpointService, CONFIG, ColorPickerComponent, DialogService, FileUploadComponent, ListComponent, ListItemAvatarDirective, ListItemButtonsDirective, ListItemSubtitleDirective, ListItemTitleDirective, LocalStorageService, Logger, NotificationComponent, OverlayService, PlaceholderComponent, RouterService, ScaffoldComponent, ScaffoldLoadingInterceptor, ScaffoldService, SeoService, SnackbarService, ThemeService, provideScaffold };
|
|
620
638
|
export type { BottomBarConfig, Button, ConfirmDialogConfig, ContentTitleCardConfig, DrawerConfig, FloatingButtonConfig, FooterConfig, HeaderConfig, HeaderInputConfig, HeaderResponsiveConfig, ListConfig, ListHeader, ListItem, LoadingOverlayConfig, MenuButton, NavbarConfig, NavigationLink, PlaceholderConfig, ScaffoldConfig, ScaffoldLibraryConfig, SeoConfig };
|