@fxlt/common-ui 0.0.1 → 0.0.2

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,37 +1,37 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnDestroy, Injector, ApplicationRef, OnInit, AfterViewInit, ChangeDetectorRef, Type, EventEmitter, ModuleWithProviders, TemplateRef, ViewContainerRef, AfterContentInit, QueryList, ElementRef, Renderer2, OnChanges } from '@angular/core';
3
- import * as i31 from '@angular/material/paginator';
2
+ import { OnDestroy, Injector, ApplicationRef, OnInit, AfterViewInit, ChangeDetectorRef, Type, EventEmitter, ModuleWithProviders, TemplateRef, ViewContainerRef, ElementRef, AfterContentInit, QueryList, Renderer2, OnChanges } from '@angular/core';
3
+ import * as i34 from '@angular/material/paginator';
4
4
  import { MatPaginator } from '@angular/material/paginator';
5
- import * as i32 from '@angular/material/table';
5
+ import * as i35 from '@angular/material/table';
6
6
  import { MatTableDataSource, MatTable } from '@angular/material/table';
7
7
  import { HttpClient, HttpErrorResponse, HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
8
- import * as i22 from '@angular/forms';
9
- import { NgForm, ControlValueAccessor, NgControl, ValidationErrors } from '@angular/forms';
10
- import * as i34 from '@angular/material/dialog';
8
+ import * as rxjs from 'rxjs';
9
+ import { Subject, Observable } from 'rxjs';
10
+ import * as i24 from '@angular/forms';
11
+ import { NgForm, NgControl, ControlValueAccessor, ValidationErrors } from '@angular/forms';
12
+ import * as i37 from '@angular/material/dialog';
11
13
  import { MatDialogRef, MatDialog } from '@angular/material/dialog';
12
14
  import { TranslateHttpLoader } from '@ngx-translate/http-loader';
13
15
  import * as i1 from '@ngx-translate/core';
14
16
  import { TranslateService } from '@ngx-translate/core';
15
- import * as rxjs from 'rxjs';
16
- import { Subject, Observable } from 'rxjs';
17
17
  import { CanActivate, Router } from '@angular/router';
18
18
  import { EChartsOption } from 'echarts';
19
- import * as i21 from '@angular/common';
20
- import * as i23 from '@danielmoncada/angular-datetime-picker';
21
- import * as i25 from '@dimaslz/ng-heroicons';
22
- import * as i26 from 'ngx-echarts';
23
- import * as i27 from '@angular/material/select';
24
- import * as i28 from '@angular/material/radio';
25
- import * as i29 from '@angular/material/button';
26
- import * as i30 from '@angular/material/icon';
27
- import * as i33 from '@angular/material/snack-bar';
28
- import * as i35 from '@angular/material/checkbox';
29
- import * as i36 from '@angular/material/card';
30
- import * as i37 from '@angular/material/datepicker';
31
- import * as i38 from '@angular/material/timepicker';
32
- import * as i39 from '@angular/material/badge';
33
- import * as i40 from '@angular/material/expansion';
34
- import * as i41 from '@angular/material/form-field';
19
+ import * as i23 from '@angular/common';
20
+ import * as i25 from '@danielmoncada/angular-datetime-picker';
21
+ import * as i28 from '@dimaslz/ng-heroicons';
22
+ import * as i29 from 'ngx-echarts';
23
+ import * as i30 from '@angular/material/select';
24
+ import * as i31 from '@angular/material/radio';
25
+ import * as i32 from '@angular/material/button';
26
+ import * as i33 from '@angular/material/icon';
27
+ import * as i36 from '@angular/material/snack-bar';
28
+ import * as i38 from '@angular/material/checkbox';
29
+ import * as i39 from '@angular/material/card';
30
+ import * as i40 from '@angular/material/datepicker';
31
+ import * as i41 from '@angular/material/timepicker';
32
+ import * as i42 from '@angular/material/badge';
33
+ import * as i43 from '@angular/material/expansion';
34
+ import * as i44 from '@angular/material/form-field';
35
35
 
36
36
  declare abstract class BaseComponent implements OnDestroy {
37
37
  protected injector: Injector;
@@ -105,6 +105,7 @@ declare class BaseTableComponent<T = any> extends BaseComponent implements OnIni
105
105
  expandedElement: any | null;
106
106
  toastr: FxToastrService;
107
107
  _lock: boolean;
108
+ keywordChange$: Subject<string>;
108
109
  config: {
109
110
  create?: {
110
111
  dialog?: Type<{}>;
@@ -134,6 +135,9 @@ declare class BaseTableComponent<T = any> extends BaseComponent implements OnIni
134
135
  cancelTitle?: string;
135
136
  confirmTitle?: string;
136
137
  };
138
+ updateStatus?: {
139
+ message?: string;
140
+ };
137
141
  };
138
142
  paginator: MatPaginator;
139
143
  table: MatTable<T>;
@@ -147,6 +151,7 @@ declare class BaseTableComponent<T = any> extends BaseComponent implements OnIni
147
151
  onPageChange(event: any): Promise<void>;
148
152
  resolve(): {};
149
153
  empty(): {};
154
+ onKeywordChange(keyword: string): void;
150
155
  create(): Promise<void>;
151
156
  update(model: any): Promise<void>;
152
157
  view(model: any): Promise<void>;
@@ -154,6 +159,7 @@ declare class BaseTableComponent<T = any> extends BaseComponent implements OnIni
154
159
  remove(model: any): Promise<any>;
155
160
  value(model: any, key: string): any;
156
161
  toggleExpand(element: any): void;
162
+ updateStatus(params: any): Promise<void>;
157
163
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseTableComponent<any>, never>;
158
164
  static ɵdir: i0.ɵɵDirectiveDeclaration<BaseTableComponent<any>, never, never, {}, {}, never, never, true, never>;
159
165
  }
@@ -165,6 +171,7 @@ declare class BaseDialogComponent<T = any> extends BaseComponent implements Afte
165
171
  api: HttpWrapper;
166
172
  dialog: MatDialog;
167
173
  ngForm: NgForm;
174
+ method: string;
168
175
  title: string;
169
176
  model: any;
170
177
  disabled: boolean;
@@ -179,7 +186,6 @@ declare class BaseDialogComponent<T = any> extends BaseComponent implements Afte
179
186
  accept(form: NgForm, params?: null): void;
180
187
  create(params?: any): void;
181
188
  update(params?: any): void;
182
- updateData(params?: any): void;
183
189
  updateInfo(params?: any): void;
184
190
  cancel(): void;
185
191
  validate(): boolean;
@@ -270,6 +276,16 @@ declare class HasPermissionDirective {
270
276
  static ɵdir: i0.ɵɵDirectiveDeclaration<HasPermissionDirective, "[hasPermission]", never, { "hasPermission": { "alias": "hasPermission"; "required": false; }; }, {}, never, never, true, never>;
271
277
  }
272
278
 
279
+ declare class TrimOnBlurDirective {
280
+ private el;
281
+ private ngControl;
282
+ collapseWhitespace: boolean;
283
+ constructor(el: ElementRef<HTMLInputElement>, ngControl: NgControl);
284
+ onBlur(): void;
285
+ static ɵfac: i0.ɵɵFactoryDeclaration<TrimOnBlurDirective, never>;
286
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TrimOnBlurDirective, "[appTrimOnBlur]", never, { "collapseWhitespace": { "alias": "appTrimOnBlurCollapse"; "required": false; }; }, {}, never, never, true, never>;
287
+ }
288
+
273
289
  declare class PermissionGuard implements CanActivate {
274
290
  private permissionService;
275
291
  private router;
@@ -288,7 +304,7 @@ declare class FxStorageService {
288
304
 
289
305
  declare class AuthStateService {
290
306
  private _isLoggedIn$;
291
- readonly isLoggedIn$: rxjs.Observable<boolean>;
307
+ readonly isLoggedIn$: rxjs.Observable<boolean | null>;
292
308
  readonly unauthorized$: Subject<void>;
293
309
  constructor();
294
310
  setLoggedIn(value: boolean): void;
@@ -319,6 +335,20 @@ declare class BreadcrumbService {
319
335
  static ɵprov: i0.ɵɵInjectableDeclaration<BreadcrumbService>;
320
336
  }
321
337
 
338
+ declare class QuillStyleLoaderService {
339
+ private platformId;
340
+ private loaded;
341
+ private loadingPromise;
342
+ constructor(platformId: Object);
343
+ /**
344
+ * Load Quill CSS (only in browser). Returns a promise that resolves when
345
+ * the CSS links have been appended.
346
+ */
347
+ load(): Promise<void>;
348
+ static ɵfac: i0.ɵɵFactoryDeclaration<QuillStyleLoaderService, never>;
349
+ static ɵprov: i0.ɵɵInjectableDeclaration<QuillStyleLoaderService>;
350
+ }
351
+
322
352
  type ErrorMessages = {
323
353
  [key: string]: any;
324
354
  };
@@ -378,7 +408,7 @@ declare class InputComponent extends FxComponent<string> implements AfterViewIni
378
408
  static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "fx-ui-input", never, { "label": { "alias": "label"; "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; }; "iconClass": { "alias": "iconClass"; "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>;
379
409
  }
380
410
 
381
- declare class SelectComponent extends FxComponent<string | string[]> implements AfterViewInit {
411
+ declare class SelectComponent extends FxComponent<string | string[]> implements AfterViewInit, OnInit {
382
412
  private ref;
383
413
  label: string;
384
414
  placeholder: string;
@@ -393,12 +423,27 @@ declare class SelectComponent extends FxComponent<string | string[]> implements
393
423
  };
394
424
  required: boolean;
395
425
  class?: any;
426
+ enableSearch: boolean;
427
+ searchFn?: (query: string) => Promise<{
428
+ label: string;
429
+ value: string;
430
+ }[]>;
431
+ searchTerm: string;
432
+ filteredOptions: {
433
+ label: string;
434
+ value: string;
435
+ }[];
436
+ private search$;
396
437
  constructor(ngControl: NgControl, ref: ChangeDetectorRef);
438
+ ngOnInit(): void;
397
439
  ngAfterViewInit(): void;
440
+ onOpened(open: boolean): void;
441
+ onSearchChange(value: string): void;
442
+ performSearch(term: string): Promise<void>;
398
443
  onSelectionChange(value: any): void;
399
444
  isSelected(value: string): boolean;
400
445
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, never>;
401
- 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; }; }, {}, never, never, false, never>;
446
+ 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>;
402
447
  }
403
448
 
404
449
  interface IRadioButton {
@@ -431,7 +476,6 @@ declare class CheckboxComponent extends FxComponent<any> implements AfterViewIni
431
476
  label: string;
432
477
  disabled: boolean;
433
478
  rounded: boolean;
434
- size: 'normal' | 'large';
435
479
  valueChange: EventEmitter<boolean>;
436
480
  constructor(ngControl: NgControl, ref: ChangeDetectorRef);
437
481
  ngAfterViewInit(): void;
@@ -439,7 +483,7 @@ declare class CheckboxComponent extends FxComponent<any> implements AfterViewIni
439
483
  onInputChange(event: Event): void;
440
484
  markTouched(): void;
441
485
  static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent, never>;
442
- static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "fx-ui-checkbox", never, { "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
486
+ static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "fx-ui-checkbox", never, { "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
443
487
  }
444
488
 
445
489
  type UploadResult = {
@@ -707,17 +751,43 @@ declare class SwitchComponent extends FxComponent<any> implements AfterViewInit
707
751
  static ɵcmp: i0.ɵɵComponentDeclaration<SwitchComponent, "fx-ui-switch", never, { "disabled": { "alias": "disabled"; "required": false; }; }, { "onSwitch": "onSwitch"; }, never, never, false, never>;
708
752
  }
709
753
 
754
+ declare class RichTextAreaComponent extends FxComponent<any> implements AfterViewInit {
755
+ private cdr;
756
+ private styleLoader;
757
+ private platformId;
758
+ editorContainer: ElementRef<HTMLDivElement>;
759
+ placeholder: string;
760
+ toolbarOptions: any;
761
+ contentChange: EventEmitter<string>;
762
+ private quillInstance;
763
+ constructor(ngControl: NgControl, cdr: ChangeDetectorRef, styleLoader: QuillStyleLoaderService, platformId: Object);
764
+ ngAfterViewInit(): Promise<void>;
765
+ writeValue(value: any): void;
766
+ setDisabledState(isDisabled: boolean): void;
767
+ static ɵfac: i0.ɵɵFactoryDeclaration<RichTextAreaComponent, never>;
768
+ static ɵcmp: i0.ɵɵComponentDeclaration<RichTextAreaComponent, "fx-ui-rich-text-area", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "toolbarOptions": { "alias": "toolbarOptions"; "required": false; }; }, { "contentChange": "contentChange"; }, never, never, false, never>;
769
+ }
770
+
771
+ declare class SkeletonTableLoadingComponent {
772
+ columns: number;
773
+ rows: number;
774
+ static ɵfac: i0.ɵɵFactoryDeclaration<SkeletonTableLoadingComponent, never>;
775
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkeletonTableLoadingComponent, "fx-ui-skeleton-table-loading", never, { "columns": { "alias": "columns"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; }, {}, never, never, false, never>;
776
+ }
777
+
710
778
  declare class ConfirmationDialogComponent {
711
779
  private ref;
780
+ bindings: any;
781
+ loading: boolean;
712
782
  title: string;
713
783
  message: string;
714
784
  cancelLabel: string;
715
785
  confirmLabel: string;
716
786
  constructor(ref: MatDialogRef<ConfirmationDialogComponent>, bindings: any);
717
- accept(): void;
787
+ accept(): Promise<void>;
718
788
  cancel(): void;
719
789
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationDialogComponent, never>;
720
- static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmationDialogComponent, "ui-confirmation", never, {}, {}, never, never, false, never>;
790
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmationDialogComponent, "fx-ui-confirmation-dialog", never, {}, {}, never, never, false, never>;
721
791
  }
722
792
 
723
793
  declare const MY_FORMATS: {
@@ -731,9 +801,9 @@ declare const MY_FORMATS: {
731
801
  };
732
802
  declare class UiModule {
733
803
  static ɵfac: i0.ɵɵFactoryDeclaration<UiModule, never>;
734
- static ɵmod: i0.ɵɵNgModuleDeclaration<UiModule, [typeof InputComponent, typeof SelectComponent, typeof RadioButtonComponent, typeof CheckboxComponent, typeof DndUploadComponent, typeof ButtonComponent, typeof RadioButtonToggleComponent, typeof DatetimePicker, typeof LoadingPanel, typeof SearchBarComponent, typeof TabGroupComponent, typeof TabComponent, typeof HeroIconComponent, typeof ToastComponent, typeof ToastContainerComponent, typeof TagComponent, typeof ChartComponent, typeof SliderComponent, typeof SwitchComponent, typeof ConfirmationDialogComponent], [typeof i21.CommonModule, typeof i22.FormsModule, typeof i22.ReactiveFormsModule, typeof i23.OwlDateTimeModule, typeof i23.OwlNativeDateTimeModule, typeof HasPermissionDirective, typeof i25.NgHeroiconsModule, typeof i26.NgxEchartsModule, typeof i27.MatSelectModule, typeof i28.MatRadioModule, typeof i29.MatButtonModule, typeof i30.MatIconModule, typeof i31.MatPaginatorModule, typeof i32.MatTableModule, typeof i33.MatSnackBarModule, typeof i34.MatDialogModule, typeof i35.MatCheckboxModule, typeof i36.MatCardModule, typeof i37.MatDatepickerModule, typeof i38.MatTimepickerModule, typeof i39.MatBadgeModule, typeof i40.MatExpansionModule, typeof i41.MatFormFieldModule], [typeof InputComponent, typeof SelectComponent, typeof RadioButtonComponent, typeof CheckboxComponent, typeof DndUploadComponent, typeof ButtonComponent, typeof RadioButtonToggleComponent, typeof DatetimePicker, typeof LoadingPanel, typeof SearchBarComponent, typeof TabGroupComponent, typeof TabComponent, typeof HeroIconComponent, typeof ToastComponent, typeof ToastContainerComponent, typeof TagComponent, typeof ChartComponent, typeof SliderComponent, typeof SwitchComponent, typeof ConfirmationDialogComponent, typeof i22.FormsModule, typeof i22.ReactiveFormsModule, typeof i23.OwlDateTimeModule, typeof i23.OwlNativeDateTimeModule, typeof HasPermissionDirective, typeof i25.NgHeroiconsModule, typeof i27.MatSelectModule, typeof i28.MatRadioModule, typeof i29.MatButtonModule, typeof i30.MatIconModule, typeof i31.MatPaginatorModule, typeof i32.MatTableModule, typeof i33.MatSnackBarModule, typeof i34.MatDialogModule, typeof i35.MatCheckboxModule, typeof i36.MatCardModule, typeof i37.MatDatepickerModule, typeof i38.MatTimepickerModule, typeof i39.MatBadgeModule, typeof i40.MatExpansionModule, typeof i41.MatFormFieldModule]>;
804
+ static ɵmod: i0.ɵɵNgModuleDeclaration<UiModule, [typeof InputComponent, typeof SelectComponent, typeof RadioButtonComponent, typeof CheckboxComponent, typeof DndUploadComponent, typeof ButtonComponent, typeof RadioButtonToggleComponent, typeof DatetimePicker, typeof LoadingPanel, typeof SearchBarComponent, typeof TabGroupComponent, typeof TabComponent, typeof HeroIconComponent, typeof ToastComponent, typeof ToastContainerComponent, typeof TagComponent, typeof ChartComponent, typeof SliderComponent, typeof SwitchComponent, typeof RichTextAreaComponent, typeof SkeletonTableLoadingComponent, typeof ConfirmationDialogComponent], [typeof i23.CommonModule, typeof i24.FormsModule, typeof i24.ReactiveFormsModule, typeof i25.OwlDateTimeModule, typeof i25.OwlNativeDateTimeModule, typeof HasPermissionDirective, typeof TrimOnBlurDirective, typeof i28.NgHeroiconsModule, typeof i29.NgxEchartsModule, typeof i30.MatSelectModule, typeof i31.MatRadioModule, typeof i32.MatButtonModule, typeof i33.MatIconModule, typeof i34.MatPaginatorModule, typeof i35.MatTableModule, typeof i36.MatSnackBarModule, typeof i37.MatDialogModule, typeof i38.MatCheckboxModule, typeof i39.MatCardModule, typeof i40.MatDatepickerModule, typeof i41.MatTimepickerModule, typeof i42.MatBadgeModule, typeof i43.MatExpansionModule, typeof i44.MatFormFieldModule], [typeof InputComponent, typeof SelectComponent, typeof RadioButtonComponent, typeof CheckboxComponent, typeof DndUploadComponent, typeof ButtonComponent, typeof RadioButtonToggleComponent, typeof DatetimePicker, typeof LoadingPanel, typeof SearchBarComponent, typeof TabGroupComponent, typeof TabComponent, typeof HeroIconComponent, typeof ToastComponent, typeof ToastContainerComponent, typeof TagComponent, typeof ChartComponent, typeof SliderComponent, typeof SwitchComponent, typeof RichTextAreaComponent, typeof SkeletonTableLoadingComponent, typeof ConfirmationDialogComponent, typeof i24.FormsModule, typeof i24.ReactiveFormsModule, typeof i25.OwlDateTimeModule, typeof i25.OwlNativeDateTimeModule, typeof HasPermissionDirective, typeof i28.NgHeroiconsModule, typeof i30.MatSelectModule, typeof i31.MatRadioModule, typeof i32.MatButtonModule, typeof i33.MatIconModule, typeof i34.MatPaginatorModule, typeof i35.MatTableModule, typeof i36.MatSnackBarModule, typeof i37.MatDialogModule, typeof i38.MatCheckboxModule, typeof i39.MatCardModule, typeof i40.MatDatepickerModule, typeof i41.MatTimepickerModule, typeof i42.MatBadgeModule, typeof i43.MatExpansionModule, typeof i44.MatFormFieldModule]>;
735
805
  static ɵinj: i0.ɵɵInjectorDeclaration<UiModule>;
736
806
  }
737
807
 
738
- export { AuthInterceptor, AuthStateService, BaseComponent, BaseDialogComponent, BaseResolver, BaseTableComponent, BreadcrumbService, ButtonComponent, ChartComponent, CheckboxComponent, ConfirmationDialogComponent, DatetimePicker, DndUploadComponent, FxLoadingService, FxStorageService, FxToastrService, FxUtils, HasPermissionDirective, HeroIconComponent, HttpLoaderFactory, HttpWrapper, InputComponent, LoadingPanel, MY_FORMATS, PermissionGuard, PermissionService, RadioButtonComponent, RadioButtonToggleComponent, SearchBarComponent, SelectComponent, SliderComponent, SwitchComponent, TabComponent, TabGroupComponent, TagComponent, ToastComponent, ToastContainerComponent, TranslationModule, TranslationService, UiModule };
808
+ export { AuthInterceptor, AuthStateService, BaseComponent, BaseDialogComponent, BaseResolver, BaseTableComponent, BreadcrumbService, ButtonComponent, ChartComponent, CheckboxComponent, ConfirmationDialogComponent, DatetimePicker, DndUploadComponent, FxLoadingService, FxStorageService, FxToastrService, FxUtils, HasPermissionDirective, HeroIconComponent, HttpLoaderFactory, HttpWrapper, InputComponent, LoadingPanel, MY_FORMATS, PermissionGuard, PermissionService, QuillStyleLoaderService, RadioButtonComponent, RadioButtonToggleComponent, RichTextAreaComponent, SearchBarComponent, SelectComponent, SkeletonTableLoadingComponent, SliderComponent, SwitchComponent, TabComponent, TabGroupComponent, TagComponent, ToastComponent, ToastContainerComponent, TranslationModule, TranslationService, TrimOnBlurDirective, UiModule };
739
809
  export type { Breadcrumb, IChartType, IRadioButton, TableResult, TagType, ToastData, UploadResult };
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@fxlt/common-ui",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
+ "license": "MIT",
4
5
  "main": "bundles/ui.umd.js",
5
6
  "module": "fesm2022/fxlt-common-ui.mjs",
6
7
  "es2020": "fesm2020/ui.mjs",
@@ -29,7 +30,8 @@
29
30
  "echarts": "^6.0.0",
30
31
  "ngx-echarts": "^20.0.2",
31
32
  "d3": "^7.9.0",
32
- "@dimaslz/ng-heroicons": "^1.19.1"
33
+ "@dimaslz/ng-heroicons": "^1.19.1",
34
+ "quill": "^2.0.3"
33
35
  },
34
36
  "exports": {
35
37
  "./SpaceMono-Regular.ttf": "./SpaceMono-Regular.ttf",
@@ -142,7 +142,10 @@
142
142
  background-color: rgb(var(--bg-primary)) !important;
143
143
  border-radius: 8px !important;
144
144
  }
145
-
145
+ .mat-mdc-dialog-container .mat-mdc-dialog-content {
146
+ letter-spacing: 0 !important;
147
+ padding: 10px 20px !important;
148
+ }
146
149
 
147
150
  input[type='number']::-webkit-outer-spin-button,
148
151
  input[type='number']::-webkit-inner-spin-button {
@@ -187,6 +190,9 @@ input[type='password'] {
187
190
  .txt-section-header {
188
191
  @apply mb-1 text-xl text-text-primary font-semibold tracking-normal leading-7;
189
192
  }
193
+ .txt-dialog-header {
194
+ @apply text-xl text-text-primary font-semibold tracking-normal leading-7 px-xl py-semi;
195
+ }
190
196
  .txt-section-subtitle {
191
197
  @apply text-sm text-text-secondary font-normal tracking-normal;
192
198
  }
@@ -381,3 +387,6 @@ input[type='password'] {
381
387
  padding-top: 16px !important;
382
388
  padding-bottom: 16px !important;
383
389
  }
390
+ .dialog-container {
391
+ @apply rounded-lg border border-border-default;
392
+ }
@@ -2,71 +2,25 @@
2
2
  max-width: unset !important;
3
3
  border-radius: 8px !important;
4
4
  .mat-dialog-actions {
5
- border-top: 1px solid rgb(var(--border-default)) !important;
6
- margin-left: -24px;
7
- margin-right: -24px;
8
- padding: 12px 24px 10px 10px;
5
+ border-top: 1px solid rgb(var(--border-default)) !important;
6
+ margin-left: -24px;
7
+ margin-right: -24px;
8
+ padding: 12px 24px 10px 10px;
9
9
  }
10
10
 
11
11
  .mat-dialog-title {
12
- margin-left: -24px;
13
- margin-right: -24px;
14
- padding-right: 24px;
15
- padding-left: 24px;
16
- border-bottom: 1px solid rgb(var(--border-default));
17
- padding-bottom: 20px;
18
- }
19
-
20
- .mat-dialog-content {
21
- min-height: 110px;
22
- letter-spacing: 0 !important;
23
- }
24
- }
25
-
26
- .fx-dialog3 {
27
- .mat-dialog-actions {
28
- border-top: 1px solid rgb(var(--border-default));
29
- margin-left: -24px;
30
- margin-right: -24px;
31
- padding: 12px 24px 10px 10px;
12
+ margin-left: -24px;
13
+ margin-right: -24px;
14
+ padding-right: 24px;
15
+ padding-left: 24px;
16
+ border-bottom: 1px solid rgb(var(--border-default));
17
+ padding-bottom: 20px;
18
+ letter-spacing: 0 !important;
32
19
  }
33
20
 
34
- .mat-dialog-title {
35
- margin-left: -24px;
36
- margin-right: -24px;
37
- padding-right: 24px;
38
- padding-left: 24px;
39
- border-bottom: 1px solid rgb(var(--border-default));
40
- padding-bottom: 20px;
41
- }
42
-
43
21
  .mat-dialog-content {
44
- min-height: 50px;
45
- overflow: visible;
46
- letter-spacing: 0 !important;
47
- }
48
- }
49
-
50
- .fx-dialog4 {
51
- max-width: unset !important;
52
- .mat-dialog-actions {
53
- border-top: 1px solid rgb(var(--border-default));
54
- margin-left: -24px;
55
- margin-right: -24px;
56
- padding: 12px 24px 10px 10px;
57
- }
58
-
59
- .mat-dialog-title {
60
- margin-left: -24px;
61
- margin-right: -24px;
62
- padding-right: 24px;
63
- padding-left: 24px;
64
- border-bottom: 1px solid rgb(var(--border-default));
65
- padding-bottom: 20px;
66
- }
67
-
68
- .mat-dialog-content {
69
- min-height: 50px;
22
+ min-height: 110px;
23
+ letter-spacing: 0 !important;
70
24
  }
71
25
  }
72
26
 
@@ -75,42 +29,42 @@
75
29
  height: 100%;
76
30
 
77
31
  mat-dialog-container {
78
- padding: 0;
32
+ padding: 0;
79
33
 
80
- form.wrapped-form {
81
- display: flex;
82
- flex-direction: column;
83
- height: 100%;
84
- justify-content: space-between;
85
- }
34
+ form.wrapped-form {
35
+ display: flex;
36
+ flex-direction: column;
37
+ height: 100%;
38
+ justify-content: space-between;
39
+ }
86
40
 
87
- .mat-dialog-title {
88
- background-color: rgb(var(--bg-primary));
89
- box-shadow: 0px 4px 8px rgba(26, 28, 38, 0.15);
90
- color: rgb(var(--text-primary));
91
- padding: 12px 20px;
92
- min-height: 24px;
41
+ .mat-dialog-title {
42
+ background-color: rgb(var(--bg-primary));
43
+ box-shadow: 0px 4px 8px rgba(26, 28, 38, 0.15);
44
+ color: rgb(var(--text-primary));
45
+ padding: 12px 20px;
46
+ min-height: 24px;
93
47
 
94
- h2 {
95
- font-weight: 500;
96
- font-size: 18px;
97
- line-height: 24px;
98
- }
48
+ h2 {
49
+ font-weight: 500;
50
+ font-size: 18px;
51
+ line-height: 24px;
99
52
  }
53
+ }
100
54
 
101
- .mat-dialog-content {
102
- background: rgb(var(--bg-primary));
103
- padding: 16px 20px;
104
- margin: unset;
105
- height: 100%;
106
- max-height: unset;
107
- letter-spacing: 0 !important;
108
- }
55
+ .mat-dialog-content {
56
+ background: rgb(var(--bg-primary));
57
+ padding: 16px 20px;
58
+ margin: unset;
59
+ height: 100%;
60
+ max-height: unset;
61
+ letter-spacing: 0 !important;
62
+ }
109
63
 
110
- .mat-dialog-actions {
111
- background-color: rgb(var(--bg-primary));
112
- padding: 12px 20px;
113
- margin-bottom: unset;
114
- }
64
+ .mat-dialog-actions {
65
+ background-color: rgb(var(--bg-primary));
66
+ padding: 12px 20px;
67
+ margin-bottom: unset;
68
+ }
115
69
  }
116
- }
70
+ }
@@ -216,7 +216,7 @@
216
216
  'text-text-inverse': buttonVariant !== 'default',
217
217
  'text-text-primary': buttonVariant === 'alternative'
218
218
  }"></fx-ui-hero-icon>}
219
- <div>{{ label }}</div>
219
+ @if(label){<div>{{ label }}</div>}
220
220
  </div>
221
221
  </ng-container>
222
222
  }
@@ -1,5 +1,5 @@
1
1
  <label
2
- class="inline-flex items-center gap-normal cursor-pointer select-none"
2
+ class="flex items-center gap-normal cursor-pointer select-none"
3
3
  [class.opacity-50]="disabled"
4
4
  [class.cursor-not-allowed]="disabled"
5
5
  >
@@ -12,10 +12,10 @@
12
12
  (blur)="onTouched()"
13
13
  />
14
14
  <span
15
- class="relative flex items-center justify-center border rounded-full transition-colors duration-150 shrink-0"
16
- [class]="rounded ? 'rounded-full' : 'rounded-sm'"
17
- [class]="size === 'large' ? 'w-6 h-6' : 'w-4 h-4'"
15
+ class="relative w-4 h-4 border rounded-full transition-colors duration-150 shrink-0"
18
16
  [ngClass]="{
17
+ 'rounded-full': rounded,
18
+ 'rounded-sm': !rounded,
19
19
  'border-border-strong bg-transparent': !value,
20
20
  'border-border-selected bg-border-selected': value
21
21
  }"
@@ -24,8 +24,7 @@
24
24
  <span class="absolute inset-0 flex items-center justify-center">
25
25
  <svg
26
26
  xmlns="http://www.w3.org/2000/svg"
27
- class="text-bg-primary transition-opacity duration-150"
28
- [class]="size === 'large' ? 'w-4.5 h-4.5' : 'w-3 h-3'"
27
+ class="text-bg-primary w-4 h-4 transition-opacity duration-150"
29
28
  viewBox="0 0 24 24"
30
29
  fill="none"
31
30
  stroke="currentColor"
@@ -39,5 +38,5 @@
39
38
  </span>
40
39
  </span>
41
40
 
42
- <span class="mb-0 txt-field-label">{{ label }}</span>
41
+ @if(label){<span class="mb-0 txt-field-label">{{ label }}</span>}
43
42
  </label>
@@ -7,6 +7,8 @@
7
7
 
8
8
  <div class="relative">
9
9
  <input
10
+ appTrimOnBlur
11
+ [appTrimOnBlurCollapse]="true"
10
12
  [type]="displayType"
11
13
  [placeholder]="placeholder"
12
14
  [disabled]="disabled"
@@ -0,0 +1,3 @@
1
+ <div class="w-full rounded-2xl shadow-sm p-1 bg-bg-primary">
2
+ <div #editorContainer class="min-h-[200px] text-base"></div>
3
+ </div>
@@ -77,4 +77,26 @@
77
77
  color: rgb(var(--text-primary)) !important;
78
78
  font-size: 14px;
79
79
  font-weight: 400;
80
+ }
81
+
82
+ .mat-select-panel .search-option-full-width {
83
+ /* Remove default padding to allow the input to stretch */
84
+ padding-left: 0 !important;
85
+ padding-right: 0 !important;
86
+ /* Ensure it is a block element to take up full width */
87
+ display: block;
88
+ /* Prevent the option from being highlighted on hover/focus */
89
+ pointer-events: none;
90
+ /* Optional: Adjust height if needed */
91
+ line-height: initial;
92
+ height: auto;
93
+ }
94
+
95
+ .mat-select-panel .search-option-full-width .search-bar {
96
+ width: 100%;
97
+ padding: 8px 16px; /* Add visual padding back to the input */
98
+ border: none;
99
+ /* Optional: Add a subtle border to separate it from the options */
100
+ border-bottom: 1px solid #ddd;
101
+ box-sizing: border-box; /* Include padding in the element's total width */
80
102
  }
@@ -11,9 +11,22 @@
11
11
  [multiple]="multiple"
12
12
  [value]="value"
13
13
  (selectionChange)="onSelectionChange($event.value)"
14
+ (openedChange)="onOpened($event)"
14
15
  (blur)="onTouched()"
15
16
  >
16
- <mat-option *ngFor="let option of options" [value]="option.value">
17
+ @if(enableSearch){
18
+ <div class="px-semi w-full">
19
+ <input
20
+ type="text"
21
+ [placeholder]="'Search'"
22
+ [(ngModel)]="searchTerm"
23
+ (ngModelChange)="onSearchChange($event)"
24
+ (click)="$event.stopPropagation()"
25
+ class="text-text-primary placeholder:text-text-placeholder w-full bg-bg-primary border-b px-semi py-normal border-border-default focus:outline-none focus:border-border-interactive text-sm text-text-primary tracking-normal ring-0 transition-colors duration-500 ease-in-out"
26
+ />
27
+ </div>
28
+ }
29
+ <mat-option *ngFor="let option of filteredOptions" [value]="option.value">
17
30
  <span class="txt-default">{{ option.label }}</span>
18
31
  </mat-option>
19
32
  </mat-select>
@@ -0,0 +1,21 @@
1
+ <div class="w-full animate-pulse space-y-normal">
2
+ <div
3
+ class="grid gap-small"
4
+ [ngStyle]="{ 'grid-template-columns': 'repeat(' + columns + ', minmax(0, 1fr))' }"
5
+ >
6
+ @for(col of [].constructor(columns); track col) {
7
+ <div class="h-6 bg-bg-hover rounded"></div>
8
+ }
9
+ </div>
10
+
11
+ @for(row of [].constructor(rows); track row) {
12
+ <div
13
+ class="grid gap-small"
14
+ [ngStyle]="{ 'grid-template-columns': 'repeat(' + columns + ', minmax(0, 1fr))' }"
15
+ >
16
+ @for(col of [].constructor(columns); track col) {
17
+ <div class="h-7 bg-bg-hover rounded"></div>
18
+ }
19
+ </div>
20
+ }
21
+ </div>
@@ -1,5 +1,5 @@
1
1
  <div
2
- class="relative inline-flex items-center w-10 h-5 rounded-full transition-colors duration-300 cursor-pointer"
2
+ class="relative flex items-center w-10 h-5 rounded-full transition-colors duration-300 cursor-pointer"
3
3
  [ngClass]="{
4
4
  'bg-success': value && !disabled,
5
5
  'bg-button-default': !value && !disabled,
@@ -1,7 +1,7 @@
1
1
  <div
2
2
  animate.enter="horizontal-fade-in-animation"
3
3
  animate.leave="horizontal-fade-out-animation"
4
- class="flex border-l-[3px] items-center bg-bg-primary gap-semi min-w-[250px] max-w-[320px] px-large py-semi rounded shadow-lg transition-all duration-300 ease-in-out transform opacity-100 translate-y-0"
4
+ class="flex border-l-[3px] items-center bg-bg-primary gap-semi min-w-[250px] max-w-[400px] px-large py-semi rounded shadow-lg transition-all duration-300 ease-in-out transform opacity-100 translate-y-0"
5
5
  [ngClass]="{
6
6
  'border-success': type === 'success',
7
7
  'border-critical': type === 'error',