@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lukfel/ng-scaffold",
3
- "version": "21.1.43",
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
+ }
@@ -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: 4px;
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
@@ -1,6 +1,7 @@
1
1
  @import './_theme.scss';
2
2
  @import './_classes';
3
3
  @import './_variables';
4
+ @import './_animations';
4
5
  @import './fonts/material-icons.scss';
5
6
  @import './fonts/roboto-font.scss';
6
7
 
@@ -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 FileUploadComponent {
336
- libraryConfig: ScaffoldLibraryConfig | null;
337
- private logger;
365
+ declare class NotificationComponent {
366
+ private breakpointService;
338
367
  readonly color: _angular_core.InputSignal<"primary" | "accent" | "warn">;
339
- readonly label: _angular_core.InputSignal<string | undefined>;
340
- readonly matIcon: _angular_core.InputSignal<string | undefined>;
341
- readonly disabled: _angular_core.InputSignal<boolean>;
342
- readonly accept: _angular_core.InputSignal<string | undefined>;
343
- readonly tooltip: _angular_core.InputSignal<string | undefined>;
344
- readonly fileChangeEvent: _angular_core.OutputEmitterRef<File>;
345
- selectFile(event: Event): void;
346
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadComponent, never>;
347
- 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>;
348
- }
349
-
350
- declare class ColorPickerComponent {
351
- libraryConfig: ScaffoldLibraryConfig | null;
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 };