@fxlt/common-ui 0.0.1 → 0.0.3-rc1

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;
@@ -225,6 +231,7 @@ declare class FxUtils {
225
231
  static convertColorFromVariable(name: string, alpha?: number): string;
226
232
  static getTagClass(key: string, isCriticalExist?: boolean): TagType;
227
233
  static validateEmail(value: string): boolean;
234
+ static isStrongPassword(password: string): boolean;
228
235
  }
229
236
 
230
237
  declare function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader;
@@ -270,6 +277,16 @@ declare class HasPermissionDirective {
270
277
  static ɵdir: i0.ɵɵDirectiveDeclaration<HasPermissionDirective, "[hasPermission]", never, { "hasPermission": { "alias": "hasPermission"; "required": false; }; }, {}, never, never, true, never>;
271
278
  }
272
279
 
280
+ declare class TrimOnBlurDirective {
281
+ private el;
282
+ private ngControl;
283
+ collapseWhitespace: boolean;
284
+ constructor(el: ElementRef<HTMLInputElement>, ngControl: NgControl);
285
+ onBlur(): void;
286
+ static ɵfac: i0.ɵɵFactoryDeclaration<TrimOnBlurDirective, never>;
287
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TrimOnBlurDirective, "[appTrimOnBlur]", never, { "collapseWhitespace": { "alias": "appTrimOnBlurCollapse"; "required": false; }; }, {}, never, never, true, never>;
288
+ }
289
+
273
290
  declare class PermissionGuard implements CanActivate {
274
291
  private permissionService;
275
292
  private router;
@@ -288,7 +305,7 @@ declare class FxStorageService {
288
305
 
289
306
  declare class AuthStateService {
290
307
  private _isLoggedIn$;
291
- readonly isLoggedIn$: rxjs.Observable<boolean>;
308
+ readonly isLoggedIn$: rxjs.Observable<boolean | null>;
292
309
  readonly unauthorized$: Subject<void>;
293
310
  constructor();
294
311
  setLoggedIn(value: boolean): void;
@@ -319,6 +336,20 @@ declare class BreadcrumbService {
319
336
  static ɵprov: i0.ɵɵInjectableDeclaration<BreadcrumbService>;
320
337
  }
321
338
 
339
+ declare class QuillStyleLoaderService {
340
+ private platformId;
341
+ private loaded;
342
+ private loadingPromise;
343
+ constructor(platformId: Object);
344
+ /**
345
+ * Load Quill CSS (only in browser). Returns a promise that resolves when
346
+ * the CSS links have been appended.
347
+ */
348
+ load(): Promise<void>;
349
+ static ɵfac: i0.ɵɵFactoryDeclaration<QuillStyleLoaderService, never>;
350
+ static ɵprov: i0.ɵɵInjectableDeclaration<QuillStyleLoaderService>;
351
+ }
352
+
322
353
  type ErrorMessages = {
323
354
  [key: string]: any;
324
355
  };
@@ -378,7 +409,7 @@ declare class InputComponent extends FxComponent<string> implements AfterViewIni
378
409
  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
410
  }
380
411
 
381
- declare class SelectComponent extends FxComponent<string | string[]> implements AfterViewInit {
412
+ declare class SelectComponent extends FxComponent<string | string[]> implements AfterViewInit, OnInit {
382
413
  private ref;
383
414
  label: string;
384
415
  placeholder: string;
@@ -393,12 +424,27 @@ declare class SelectComponent extends FxComponent<string | string[]> implements
393
424
  };
394
425
  required: boolean;
395
426
  class?: any;
427
+ enableSearch: boolean;
428
+ searchFn?: (query: string) => Promise<{
429
+ label: string;
430
+ value: string;
431
+ }[]>;
432
+ searchTerm: string;
433
+ filteredOptions: {
434
+ label: string;
435
+ value: string;
436
+ }[];
437
+ private search$;
396
438
  constructor(ngControl: NgControl, ref: ChangeDetectorRef);
439
+ ngOnInit(): void;
397
440
  ngAfterViewInit(): void;
441
+ onOpened(open: boolean): void;
442
+ onSearchChange(value: string): void;
443
+ performSearch(term: string): Promise<void>;
398
444
  onSelectionChange(value: any): void;
399
445
  isSelected(value: string): boolean;
400
446
  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>;
447
+ 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
448
  }
403
449
 
404
450
  interface IRadioButton {
@@ -431,7 +477,6 @@ declare class CheckboxComponent extends FxComponent<any> implements AfterViewIni
431
477
  label: string;
432
478
  disabled: boolean;
433
479
  rounded: boolean;
434
- size: 'normal' | 'large';
435
480
  valueChange: EventEmitter<boolean>;
436
481
  constructor(ngControl: NgControl, ref: ChangeDetectorRef);
437
482
  ngAfterViewInit(): void;
@@ -439,7 +484,7 @@ declare class CheckboxComponent extends FxComponent<any> implements AfterViewIni
439
484
  onInputChange(event: Event): void;
440
485
  markTouched(): void;
441
486
  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>;
487
+ 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
488
  }
444
489
 
445
490
  type UploadResult = {
@@ -707,17 +752,43 @@ declare class SwitchComponent extends FxComponent<any> implements AfterViewInit
707
752
  static ɵcmp: i0.ɵɵComponentDeclaration<SwitchComponent, "fx-ui-switch", never, { "disabled": { "alias": "disabled"; "required": false; }; }, { "onSwitch": "onSwitch"; }, never, never, false, never>;
708
753
  }
709
754
 
755
+ declare class RichTextAreaComponent extends FxComponent<any> implements AfterViewInit {
756
+ private cdr;
757
+ private styleLoader;
758
+ private platformId;
759
+ editorContainer: ElementRef<HTMLDivElement>;
760
+ placeholder: string;
761
+ toolbarOptions: any;
762
+ contentChange: EventEmitter<string>;
763
+ private quillInstance;
764
+ constructor(ngControl: NgControl, cdr: ChangeDetectorRef, styleLoader: QuillStyleLoaderService, platformId: Object);
765
+ ngAfterViewInit(): Promise<void>;
766
+ writeValue(value: any): void;
767
+ setDisabledState(isDisabled: boolean): void;
768
+ static ɵfac: i0.ɵɵFactoryDeclaration<RichTextAreaComponent, never>;
769
+ 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>;
770
+ }
771
+
772
+ declare class SkeletonTableLoadingComponent {
773
+ columns: number;
774
+ rows: number;
775
+ static ɵfac: i0.ɵɵFactoryDeclaration<SkeletonTableLoadingComponent, never>;
776
+ 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>;
777
+ }
778
+
710
779
  declare class ConfirmationDialogComponent {
711
780
  private ref;
781
+ bindings: any;
782
+ loading: boolean;
712
783
  title: string;
713
784
  message: string;
714
785
  cancelLabel: string;
715
786
  confirmLabel: string;
716
787
  constructor(ref: MatDialogRef<ConfirmationDialogComponent>, bindings: any);
717
- accept(): void;
788
+ accept(): Promise<void>;
718
789
  cancel(): void;
719
790
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationDialogComponent, never>;
720
- static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmationDialogComponent, "ui-confirmation", never, {}, {}, never, never, false, never>;
791
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmationDialogComponent, "fx-ui-confirmation-dialog", never, {}, {}, never, never, false, never>;
721
792
  }
722
793
 
723
794
  declare const MY_FORMATS: {
@@ -731,9 +802,9 @@ declare const MY_FORMATS: {
731
802
  };
732
803
  declare class UiModule {
733
804
  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]>;
805
+ 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
806
  static ɵinj: i0.ɵɵInjectorDeclaration<UiModule>;
736
807
  }
737
808
 
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 };
809
+ 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
810
  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.3rc1",
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",
@@ -122,7 +122,7 @@
122
122
  box-shadow: 0 2px 4px rgb(var(--shadow-color) / 0.1) !important;
123
123
  }
124
124
 
125
- .mat-mdc-select-arrow-wrapper .mat-mdc-select-arrow {
125
+ .mat-mdc-select-arrow-wrapper .mat-mdc-select-arrow {
126
126
  color: rgb(var(--text-primary)) !important;
127
127
  }
128
128
 
@@ -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
  }
@@ -330,7 +336,7 @@ input[type='password'] {
330
336
  @apply rounded px-semi py-small;
331
337
  }
332
338
  .tag-round {
333
- @apply rounded-2xl
339
+ @apply rounded-2xl;
334
340
  }
335
341
  /* progress bar */
336
342
  .progress-bar-container {
@@ -381,3 +387,12 @@ input[type='password'] {
381
387
  padding-top: 16px !important;
382
388
  padding-bottom: 16px !important;
383
389
  }
390
+ .table-action-col {
391
+ width: 40px;
392
+ }
393
+ .table-status-col {
394
+ width: 200px;
395
+ }
396
+ .dialog-container {
397
+ @apply rounded-lg border border-border-default;
398
+ }
@@ -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>