@foxeltech/angular-ui 0.0.6 → 0.0.7

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/index.d.ts CHANGED
@@ -86,6 +86,7 @@ declare class FxToastrService {
86
86
  private appRef;
87
87
  private containerRef?;
88
88
  private idCounter;
89
+ private recentMessages;
89
90
  constructor(appRef: ApplicationRef);
90
91
  private ensureContainerExists;
91
92
  private show;
@@ -387,6 +388,7 @@ declare class AuthStateService {
387
388
 
388
389
  declare class AuthInterceptor implements HttpInterceptor {
389
390
  private authState;
391
+ private handlingUnauthorized;
390
392
  constructor(authState: AuthStateService);
391
393
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
392
394
  static ɵfac: i0.ɵɵFactoryDeclaration<AuthInterceptor, never>;
@@ -562,6 +564,8 @@ declare class SelectComponent extends FxComponent<string | string[]> implements
562
564
  label: string;
563
565
  value: string;
564
566
  }[]>;
567
+ /** Emits the current value when the select panel closes (useful for multiple mode). */
568
+ closed: EventEmitter<string | string[]>;
565
569
  searchTerm: string;
566
570
  filteredOptions: {
567
571
  label: string;
@@ -577,7 +581,7 @@ declare class SelectComponent extends FxComponent<string | string[]> implements
577
581
  onSelectionChange(value: any): void;
578
582
  isSelected(value: string): boolean;
579
583
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, never>;
580
- static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "fx-ui-select", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "options": { "alias": "options"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "required": { "alias": "required"; "required": false; }; "class": { "alias": "class"; "required": false; }; "enableSearch": { "alias": "enableSearch"; "required": false; }; "searchFn": { "alias": "searchFn"; "required": false; }; }, {}, never, never, false, never>;
584
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "fx-ui-select", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "options": { "alias": "options"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "required": { "alias": "required"; "required": false; }; "class": { "alias": "class"; "required": false; }; "enableSearch": { "alias": "enableSearch"; "required": false; }; "searchFn": { "alias": "searchFn"; "required": false; }; }, { "closed": "closed"; }, never, never, false, never>;
581
585
  }
582
586
 
583
587
  interface IRadioButton {
@@ -633,6 +637,10 @@ declare class DndUploadComponent {
633
637
  accept: string;
634
638
  maxSizeMB: number;
635
639
  strictSize: boolean;
640
+ /** Icon name from heroicons (outline). Default: 'arrow-up-tray' */
641
+ icon: string;
642
+ /** CSS color value for accent (border, icon, link). Default uses --gradient-primary-start */
643
+ accentColor: string;
636
644
  fileDrop: EventEmitter<File[]>;
637
645
  fileClick: EventEmitter<void>;
638
646
  uploadComplete: EventEmitter<File[]>;
@@ -642,6 +650,7 @@ declare class DndUploadComponent {
642
650
  }>;
643
651
  isDragOver: boolean;
644
652
  private isOpening;
653
+ get accentStyle(): Record<string, string>;
645
654
  onDragOver(event: DragEvent): void;
646
655
  onDragLeave(event: DragEvent): void;
647
656
  onDrop(event: DragEvent): void;
@@ -651,7 +660,7 @@ declare class DndUploadComponent {
651
660
  private onUpload;
652
661
  private isAccepted;
653
662
  static ɵfac: i0.ɵɵFactoryDeclaration<DndUploadComponent, never>;
654
- static ɵcmp: i0.ɵɵComponentDeclaration<DndUploadComponent, "fx-ui-dnd-upload", never, { "multiple": { "alias": "multiple"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "maxSizeMB": { "alias": "maxSizeMB"; "required": false; }; "strictSize": { "alias": "strictSize"; "required": false; }; }, { "fileDrop": "fileDrop"; "fileClick": "fileClick"; "uploadComplete": "uploadComplete"; "uploadError": "uploadError"; }, never, never, false, never>;
663
+ static ɵcmp: i0.ɵɵComponentDeclaration<DndUploadComponent, "fx-ui-dnd-upload", never, { "multiple": { "alias": "multiple"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "maxSizeMB": { "alias": "maxSizeMB"; "required": false; }; "strictSize": { "alias": "strictSize"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "accentColor": { "alias": "accentColor"; "required": false; }; }, { "fileDrop": "fileDrop"; "fileClick": "fileClick"; "uploadComplete": "uploadComplete"; "uploadError": "uploadError"; }, never, never, false, never>;
655
664
  }
656
665
 
657
666
  declare class ButtonComponent {
@@ -802,8 +811,10 @@ declare class TagComponent {
802
811
  rounded: boolean;
803
812
  icon?: any;
804
813
  solid: boolean;
814
+ click: EventEmitter<void>;
815
+ onClick(): void;
805
816
  static ɵfac: i0.ɵɵFactoryDeclaration<TagComponent, never>;
806
- static ɵcmp: i0.ɵɵComponentDeclaration<TagComponent, "fx-ui-tag", never, { "label": { "alias": "label"; "required": false; }; "type": { "alias": "type"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "solid": { "alias": "solid"; "required": false; }; }, {}, never, never, false, never>;
817
+ static ɵcmp: i0.ɵɵComponentDeclaration<TagComponent, "fx-ui-tag", never, { "label": { "alias": "label"; "required": false; }; "type": { "alias": "type"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "solid": { "alias": "solid"; "required": false; }; }, { "click": "click"; }, never, never, false, never>;
807
818
  }
808
819
 
809
820
  type IChartType = 'bar' | 'pie' | 'line' | 'sunburst' | 'radar' | 'auto';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foxeltech/angular-ui",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "license": "MIT",
5
5
  "main": "bundles/ui.umd.js",
6
6
  "module": "fesm2022/foxeltech-angular-ui.mjs",
@@ -3,7 +3,7 @@
3
3
  --gradient-primary-end: 4 255 135;
4
4
  --bg-primary: 255 255 255;
5
5
  --primary: 236 25 56;
6
- --success: 18 244 146;
6
+ --success: 15 140 96;
7
7
  --warning: 255 199 0;
8
8
  --critical: 254 4 83;
9
9
  --danger: 255 122 0;
@@ -1,5 +1,6 @@
1
1
  <div
2
- class="block w-full"
2
+ class="dnd-wrapper"
3
+ [ngStyle]="accentStyle"
3
4
  (dragover)="onDragOver($event)"
4
5
  (dragleave)="onDragLeave($event)"
5
6
  (drop)="onDrop($event)"
@@ -7,25 +8,33 @@
7
8
  <div
8
9
  role="button"
9
10
  tabindex="0"
10
- class="flex flex-col items-center justify-center gap-1 border-2 border-dashed rounded-md p-4 cursor-pointer select-none outline-none focus:ring-2 focus:ring-gradient-primary-start"
11
- [ngClass]="{
12
- 'border-border-default bg-bg-hover': !isDragOver,
13
- 'border-gradient-primary-start bg-secondary': isDragOver,
14
- }"
11
+ class="dnd-area"
12
+ [class.drag-over]="isDragOver"
15
13
  (click)="onAreaClick(fileInput, $event)"
16
14
  (keydown.enter)="onAreaClick(fileInput, $event)"
17
15
  >
18
- <div class="text-sm text-text-link font-medium">
19
- Click to upload <span class="text-text-secondary opacity-50">or drag and drop</span>
16
+ <fx-ui-hero-icon
17
+ [icon]="icon"
18
+ [size]="40"
19
+ class="flex dnd-icon"
20
+ ></fx-ui-hero-icon>
21
+ <div class="dnd-text">
22
+ <span class="dnd-link">Click to upload</span>
23
+ <span class="dnd-or">or drag and drop</span>
20
24
  </div>
21
- <div class="text-xs text-text-secondary">
22
- Allowed: {{ accept || 'any file type' }} (max {{ maxSizeMB }} MB)
25
+ <div class="dnd-hint">
26
+ @if (accept) {
27
+ Accepted: {{ accept }}
28
+ } @else {
29
+ Any file type
30
+ }
31
+ — Max {{ maxSizeMB }} MB
23
32
  </div>
24
33
 
25
34
  <input
26
35
  #fileInput
27
36
  type="file"
28
- class="hidden"
37
+ class="dnd-input"
29
38
  [attr.multiple]="multiple ? '' : null"
30
39
  [attr.accept]="accept"
31
40
  (change)="onFileSelected($event)"
@@ -1,4 +1,5 @@
1
1
  <div
2
+ (click)="onClick()"
2
3
  [class]="
3
4
  `flex flex-row gap-small ${rounded ? 'tag-round' : 'tag-square'} tag-${type}${solid ? '-solid' : ''}`
4
5
  "
package/theme.css CHANGED
@@ -3,7 +3,7 @@
3
3
  --gradient-primary-end: 4 255 135;
4
4
  --bg-primary: 255 255 255;
5
5
  --primary: 236 25 56;
6
- --success: 18 244 146;
6
+ --success: 15 140 96;
7
7
  --warning: 255 199 0;
8
8
  --critical: 254 4 83;
9
9
  --danger: 255 122 0;