@foxeltech/angular-ui 0.0.12 → 0.0.14

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
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnDestroy, Injector, ApplicationRef, OnInit, AfterViewInit, ChangeDetectorRef, Type, EventEmitter, ModuleWithProviders, TemplateRef, ViewContainerRef, ElementRef, RendererFactory2, AfterContentInit, QueryList, Renderer2, OnChanges, NgZone } from '@angular/core';
2
+ import { OnDestroy, Injector, ApplicationRef, OnInit, AfterViewInit, ChangeDetectorRef, Type, EventEmitter, ModuleWithProviders, TemplateRef, ViewContainerRef, ElementRef, RendererFactory2, OnChanges, SimpleChanges, AfterContentInit, QueryList, Renderer2, NgZone } from '@angular/core';
3
3
  import * as _foxeltech_angular_ui from '@foxeltech/angular-ui';
4
4
  import * as i43 from '@angular/material/paginator';
5
5
  import { MatPaginator } from '@angular/material/paginator';
@@ -544,7 +544,7 @@ declare class InputComponent extends FxComponent<string> implements AfterViewIni
544
544
  static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "fx-ui-input", never, { "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "type": { "alias": "type"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; }; "class": { "alias": "class"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "validateFn": { "alias": "validateFn"; "required": false; }; }, { "blurred": "blurred"; "focused": "focused"; "suffixClick": "suffixClick"; }, never, never, false, never>;
545
545
  }
546
546
 
547
- declare class SelectComponent extends FxComponent<string | string[]> implements AfterViewInit, OnInit {
547
+ declare class SelectComponent extends FxComponent<string | string[]> implements AfterViewInit, OnInit, OnChanges {
548
548
  private ref;
549
549
  label: string;
550
550
  tooltip: string;
@@ -575,6 +575,7 @@ declare class SelectComponent extends FxComponent<string | string[]> implements
575
575
  private search$;
576
576
  constructor(ngControl: NgControl, ref: ChangeDetectorRef);
577
577
  ngOnInit(): void;
578
+ ngOnChanges(changes: SimpleChanges): void;
578
579
  ngAfterViewInit(): void;
579
580
  onOpened(open: boolean): void;
580
581
  onSearchChange(value: string): void;
@@ -670,7 +671,7 @@ declare class DndUploadComponent {
670
671
  declare class ButtonComponent {
671
672
  label: string;
672
673
  disabled: boolean;
673
- buttonVariant: 'default' | 'primary' | 'alternative';
674
+ buttonVariant: 'default' | 'primary' | 'success' | 'alternative';
674
675
  icon?: any;
675
676
  class?: any;
676
677
  loading: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foxeltech/angular-ui",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "license": "MIT",
5
5
  "main": "bundles/ui.umd.js",
6
6
  "module": "fesm2022/foxeltech-angular-ui.mjs",
@@ -82,20 +82,24 @@
82
82
  }
83
83
 
84
84
  .mat-mdc-table {
85
- border: 2px solid rgb(var(--border-default)) !important;
86
- border-radius: 4px !important;
85
+ border: 1px solid rgb(var(--border-default)) !important;
86
+ border-radius: 12px !important;
87
+ overflow: hidden !important;
88
+ border-collapse: separate !important;
89
+ border-spacing: 0 !important;
90
+ background-color: rgb(var(--bg-primary)) !important;
87
91
  }
88
92
 
89
93
  .mdc-data-table__header-row {
90
- height: 32px !important;
91
- min-height: 32px !important;
94
+ height: 40px !important;
95
+ min-height: 40px !important;
92
96
  }
93
97
 
94
98
  .mdc-data-table__header-cell {
95
- border-left: 1px solid rgb(var(--border-default)) !important;
96
99
  background-color: rgb(var(--bg-primary-hover)) !important;
97
- padding-top: 4px !important;
98
- padding-bottom: 4px !important;
100
+ border-bottom: 1px solid rgb(var(--border-default)) !important;
101
+ padding-top: 8px !important;
102
+ padding-bottom: 8px !important;
99
103
  line-height: 24px !important;
100
104
  font-family: 'Roboto';
101
105
  }
@@ -103,14 +107,23 @@
103
107
  .mdc-data-table__row {
104
108
  height: 0 !important;
105
109
  min-height: 0 !important;
110
+ transition: background-color 0.2s ease-in-out;
111
+ }
112
+
113
+ .mat-mdc-row:hover .mdc-data-table__cell {
114
+ background-color: rgb(var(--bg-primary-hover)) !important;
106
115
  }
107
116
 
108
117
  .mdc-data-table__cell {
109
- border-left: 1px solid rgb(var(--border-default)) !important;
118
+ border-bottom: 1px solid rgb(var(--border-default)) !important;
110
119
  background-color: rgb(var(--bg-primary)) !important;
111
120
  font-family: 'Roboto';
112
121
  }
113
122
 
123
+ .mat-mdc-row:last-child .mdc-data-table__cell {
124
+ border-bottom: none !important;
125
+ }
126
+
114
127
  .mat-mdc-cell {
115
128
  border-color: rgb(var(--border-default)) !important;
116
129
  }
@@ -279,7 +292,7 @@ input[type='password'] {
279
292
  @apply text-xs font-light text-text-secondary tracking-normal;
280
293
  }
281
294
  .txt-tag-common {
282
- @apply font-medium text-xs;
295
+ @apply font-semibold text-xs;
283
296
  }
284
297
  .txt-tag-default {
285
298
  @apply txt-tag-common text-text-secondary;
@@ -321,6 +334,9 @@ input[type='password'] {
321
334
  .btn-primary {
322
335
  @apply btn-common bg-gradient-primary hover:opacity-75 text-text-focus;
323
336
  }
337
+ .btn-success {
338
+ @apply btn-common bg-gradient-success hover:opacity-75 text-white;
339
+ }
324
340
  .btn-alternative {
325
341
  @apply btn-common hover:bg-bg-hover text-text-primary border border-border-default;
326
342
  }
@@ -364,28 +380,28 @@ input[type='password'] {
364
380
  }
365
381
 
366
382
  .tag-common {
367
- @apply flex min-w-7 px-normal py-small hover:opacity-70 items-center justify-center;
383
+ @apply flex min-w-7 px-[10px] py-[2px] leading-5 hover:opacity-70 items-center justify-center;
368
384
  }
369
385
  .tag-default {
370
386
  @apply tag-common bg-bg-hover;
371
387
  }
372
388
  .tag-success {
373
- @apply tag-common bg-success/10;
389
+ @apply tag-common bg-success/20;
374
390
  }
375
391
  .tag-warning {
376
- @apply tag-common bg-warning/10;
392
+ @apply tag-common bg-warning/20;
377
393
  }
378
394
  .tag-danger {
379
- @apply tag-common bg-danger/10;
395
+ @apply tag-common bg-danger/20;
380
396
  }
381
397
  .tag-critical {
382
- @apply tag-common bg-critical/10;
398
+ @apply tag-common bg-critical/20;
383
399
  }
384
400
  .tag-discovery {
385
- @apply tag-common bg-discovery/10;
401
+ @apply tag-common bg-discovery/20;
386
402
  }
387
403
  .tag-information {
388
- @apply tag-common bg-information/10;
404
+ @apply tag-common bg-information/20;
389
405
  }
390
406
  .tag-default-solid {
391
407
  @apply tag-common bg-bg-hover;
@@ -409,10 +425,10 @@ input[type='password'] {
409
425
  @apply tag-common bg-information;
410
426
  }
411
427
  .tag-square {
412
- @apply rounded px-semi py-small;
428
+ @apply rounded-md px-semi py-small;
413
429
  }
414
430
  .tag-round {
415
- @apply rounded-2xl;
431
+ @apply rounded-full;
416
432
  }
417
433
  /* progress bar */
418
434
  .progress-bar-container {
@@ -1,8 +1,11 @@
1
1
  .light_theme {
2
- --gradient-primary-start: 156 129 255;
3
- --gradient-primary-end: 4 255 135;
2
+ --gradient-primary-start: 124 58 237;
3
+ --gradient-primary-end: 79 142 247;
4
+ --gradient-success-start: 16 185 129;
5
+ --gradient-success-end: 45 212 191;
4
6
  --bg-primary: 255 255 255;
5
- --primary: 236 25 56;
7
+ --bg-canvas: 245 247 250;
8
+ --primary: 124 58 237;
6
9
  --success: 15 140 96;
7
10
  --warning: 255 199 0;
8
11
  --critical: 254 4 83;
@@ -18,14 +21,14 @@
18
21
  --bg-primary-hover: 247 247 247;
19
22
  --text-focus: 255 255 255;
20
23
  --bg-primary-neutral: 12 14 18;
21
- --text-selected-primary: 199 14 41;
24
+ --text-selected-primary: 124 58 237;
22
25
  --button-default: 34 38 47;
23
26
  --text-inverse: 255 255 255;
24
27
  --bg-error-bold: 215 0 68;
25
28
  --text-error: 215 0 68;
26
- --border-interactive: 236 25 56;
27
- --border-selected: 254 53 83;
28
- --button-primary: 236 25 56;
29
+ --border-interactive: 124 58 237;
30
+ --border-selected: 124 58 237;
31
+ --button-primary: 124 58 237;
29
32
  --border-strong: 206 207 210;
30
33
  --border-secondary-hover: 0 199 205;
31
34
  --bg-secondary-hover: 6 59 70;
@@ -33,10 +36,13 @@
33
36
  }
34
37
 
35
38
  :root {
36
- --gradient-primary-start: 156 129 255;
37
- --gradient-primary-end: 4 255 135;
39
+ --gradient-primary-start: 124 58 237;
40
+ --gradient-primary-end: 79 142 247;
41
+ --gradient-success-start: 16 185 129;
42
+ --gradient-success-end: 45 212 191;
38
43
  --bg-primary: 12 14 18;
39
- --primary: 236 25 56;
44
+ --bg-canvas: 8 9 12;
45
+ --primary: 124 58 237;
40
46
  --success: 76 175 80;
41
47
  --warning: 255 188 59;
42
48
  --critical: 236 25 56;
@@ -52,14 +58,14 @@
52
58
  --bg-primary-hover: 34 38 47;
53
59
  --text-focus: 255 255 255;
54
60
  --bg-primary-neutral: 12 14 18;
55
- --text-selected-primary: 254 53 83;
61
+ --text-selected-primary: 124 58 237;
56
62
  --button-default: 236 236 236;
57
63
  --text-inverse: 12 14 18;
58
64
  --bg-error-bold: 215 0 68;
59
65
  --text-error: 255 0 81;
60
- --border-interactive: 236 25 56;
61
- --border-selected: 254 53 83;
62
- --button-primary: 236 25 56;
66
+ --border-interactive: 124 58 237;
67
+ --border-selected: 124 58 237;
68
+ --button-primary: 124 58 237;
63
69
  --border-strong: 97 101 108;
64
70
  --border-secondary-hover: 0 199 205;
65
71
  --bg-secondary-hover: 6 59 70;
@@ -3,6 +3,7 @@
3
3
  [ngClass]="{
4
4
  'btn-default': buttonVariant === 'default',
5
5
  'btn-primary': buttonVariant === 'primary',
6
+ 'btn-success': buttonVariant === 'success',
6
7
  'btn-alternative': buttonVariant === 'alternative',
7
8
  }"
8
9
  [disabled]="disabled || loading"
@@ -220,7 +221,7 @@
220
221
  [ngClass]="{
221
222
  'text-text-inverse': buttonVariant === 'default',
222
223
  'text-text-primary': buttonVariant === 'alternative',
223
- 'text-white': buttonVariant === 'primary',
224
+ 'text-white': buttonVariant === 'primary' || buttonVariant === 'success',
224
225
  }"
225
226
  ></fx-ui-hero-icon>
226
227
  }
@@ -62,8 +62,19 @@
62
62
  margin-right: 0 !important;
63
63
  }
64
64
 
65
- ::ng-deep .fx-select-field .mat-mdc-select-arrow-wrapper {
66
- color: rgb(var(--text-primary));
65
+ /* Unified chevron-down arrow (replaces Material's default triangle) */
66
+ ::ng-deep .fx-select-field .mat-mdc-select-arrow-wrapper .mat-mdc-select-arrow svg {
67
+ display: none !important;
68
+ }
69
+ ::ng-deep .fx-select-field .mat-mdc-select-arrow-wrapper .mat-mdc-select-arrow {
70
+ width: 8px !important;
71
+ height: 8px !important;
72
+ border-style: solid;
73
+ border-color: currentColor;
74
+ border-width: 0 1.5px 1.5px 0;
75
+ transform: rotate(45deg);
76
+ margin-top: -3px;
77
+ color: rgb(var(--text-secondary)) !important;
67
78
  }
68
79
 
69
80
  ::ng-deep .mat-mdc-select-panel {
@@ -102,6 +113,30 @@
102
113
  padding: 8px 16px; /* Add visual padding back to the input */
103
114
  border: none;
104
115
  /* Optional: Add a subtle border to separate it from the options */
105
- border-bottom: 1px solid #ddd;
116
+ border-bottom: 1px solid #ddd;
106
117
  box-sizing: border-box; /* Include padding in the element's total width */
118
+ }
119
+
120
+ /* Disabled state */
121
+ ::ng-deep .fx-select-field.mat-form-field-disabled .mat-mdc-form-field-flex,
122
+ ::ng-deep .fx-select-field:has(.mat-mdc-select-disabled) .mat-mdc-form-field-flex {
123
+ background-color: rgb(var(--bg-primary-hover)) !important;
124
+ border-color: rgb(var(--border-default)) !important;
125
+ cursor: not-allowed !important;
126
+ opacity: 0.6;
127
+ box-shadow: none !important;
128
+ }
129
+
130
+ ::ng-deep .fx-select-field.mat-form-field-disabled .mat-mdc-select-value,
131
+ ::ng-deep .fx-select-field.mat-form-field-disabled .mat-mdc-select-placeholder,
132
+ ::ng-deep .fx-select-field.mat-form-field-disabled .mat-mdc-select-arrow,
133
+ ::ng-deep .fx-select-field:has(.mat-mdc-select-disabled) .mat-mdc-select-value,
134
+ ::ng-deep .fx-select-field:has(.mat-mdc-select-disabled) .mat-mdc-select-placeholder,
135
+ ::ng-deep .fx-select-field:has(.mat-mdc-select-disabled) .mat-mdc-select-arrow {
136
+ color: rgb(var(--text-placeholder)) !important;
137
+ }
138
+
139
+ ::ng-deep .fx-select-field.mat-form-field-disabled .mat-mdc-select,
140
+ ::ng-deep .fx-select-field:has(.mat-mdc-select-disabled) .mat-mdc-select {
141
+ cursor: not-allowed !important;
107
142
  }
@@ -4,6 +4,8 @@ module.exports = {
4
4
  colors: {
5
5
  'gradient-primary-start': 'rgb(var(--gradient-primary-start) / <alpha-value>)',
6
6
  'gradient-primary-end': 'rgb(var(--gradient-primary-end) / <alpha-value>)',
7
+ 'gradient-success-start': 'rgb(var(--gradient-success-start) / <alpha-value>)',
8
+ 'gradient-success-end': 'rgb(var(--gradient-success-end) / <alpha-value>)',
7
9
  primary: 'rgb(var(--primary) / <alpha-value>)',
8
10
  success: 'rgb(var(--success) / <alpha-value>)',
9
11
  danger: 'rgb(var(--danger) / <alpha-value>)',
@@ -13,6 +15,7 @@ module.exports = {
13
15
  information: 'rgb(var(--information) / <alpha-value>)',
14
16
  bg: {
15
17
  primary: 'rgb(var(--bg-primary) / <alpha-value>)',
18
+ canvas: 'rgb(var(--bg-canvas) / <alpha-value>)',
16
19
  hover: 'rgb(var(--bg-primary-hover) / <alpha-value>)',
17
20
  error: 'rgb(var(--bg-error-bold) / <alpha-value>)',
18
21
  hover2: 'rgb(var(--bg-secondary-hover) / <alpha-value>)',
@@ -42,6 +45,8 @@ module.exports = {
42
45
  backgroundImage: {
43
46
  'gradient-primary':
44
47
  'linear-gradient(135deg, rgb(var(--gradient-primary-start)) 0%, rgb(var(--gradient-primary-end)) 100%)',
48
+ 'gradient-success':
49
+ 'linear-gradient(135deg, rgb(var(--gradient-success-start)) 0%, rgb(var(--gradient-success-end)) 100%)',
45
50
  },
46
51
  screens: {
47
52
  sm: '480px',
package/theme.css CHANGED
@@ -1,8 +1,11 @@
1
1
  .light_theme {
2
- --gradient-primary-start: 156 129 255;
3
- --gradient-primary-end: 4 255 135;
2
+ --gradient-primary-start: 124 58 237;
3
+ --gradient-primary-end: 79 142 247;
4
+ --gradient-success-start: 16 185 129;
5
+ --gradient-success-end: 45 212 191;
4
6
  --bg-primary: 255 255 255;
5
- --primary: 236 25 56;
7
+ --bg-canvas: 245 247 250;
8
+ --primary: 124 58 237;
6
9
  --success: 15 140 96;
7
10
  --warning: 255 199 0;
8
11
  --critical: 254 4 83;
@@ -18,14 +21,14 @@
18
21
  --bg-primary-hover: 247 247 247;
19
22
  --text-focus: 255 255 255;
20
23
  --bg-primary-neutral: 12 14 18;
21
- --text-selected-primary: 199 14 41;
24
+ --text-selected-primary: 124 58 237;
22
25
  --button-default: 34 38 47;
23
26
  --text-inverse: 255 255 255;
24
27
  --bg-error-bold: 215 0 68;
25
28
  --text-error: 215 0 68;
26
- --border-interactive: 236 25 56;
27
- --border-selected: 254 53 83;
28
- --button-primary: 236 25 56;
29
+ --border-interactive: 124 58 237;
30
+ --border-selected: 124 58 237;
31
+ --button-primary: 124 58 237;
29
32
  --border-strong: 206 207 210;
30
33
  --border-secondary-hover: 0 199 205;
31
34
  --bg-secondary-hover: 6 59 70;
@@ -33,10 +36,13 @@
33
36
  }
34
37
 
35
38
  :root {
36
- --gradient-primary-start: 156 129 255;
37
- --gradient-primary-end: 4 255 135;
39
+ --gradient-primary-start: 124 58 237;
40
+ --gradient-primary-end: 79 142 247;
41
+ --gradient-success-start: 16 185 129;
42
+ --gradient-success-end: 45 212 191;
38
43
  --bg-primary: 12 14 18;
39
- --primary: 236 25 56;
44
+ --bg-canvas: 8 9 12;
45
+ --primary: 124 58 237;
40
46
  --success: 76 175 80;
41
47
  --warning: 255 188 59;
42
48
  --critical: 236 25 56;
@@ -52,14 +58,14 @@
52
58
  --bg-primary-hover: 34 38 47;
53
59
  --text-focus: 255 255 255;
54
60
  --bg-primary-neutral: 12 14 18;
55
- --text-selected-primary: 254 53 83;
61
+ --text-selected-primary: 124 58 237;
56
62
  --button-default: 236 236 236;
57
63
  --text-inverse: 12 14 18;
58
64
  --bg-error-bold: 215 0 68;
59
65
  --text-error: 255 0 81;
60
- --border-interactive: 236 25 56;
61
- --border-selected: 254 53 83;
62
- --button-primary: 236 25 56;
66
+ --border-interactive: 124 58 237;
67
+ --border-selected: 124 58 237;
68
+ --button-primary: 124 58 237;
63
69
  --border-strong: 97 101 108;
64
70
  --border-secondary-hover: 0 199 205;
65
71
  --bg-secondary-hover: 6 59 70;