@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/README.md +2 -62
- package/components.css +18 -3
- package/dialogs.css +45 -91
- package/fesm2022/fxlt-common-ui.mjs +378 -94
- package/fesm2022/fxlt-common-ui.mjs.map +1 -1
- package/index.d.ts +105 -34
- package/package.json +4 -2
- package/src/lib/styles/components.css +18 -3
- package/src/lib/styles/dialogs.css +45 -91
- package/src/lib/ui/components/button/button.component.html +1 -1
- package/src/lib/ui/components/checkbox/checkbox.component.html +6 -7
- package/src/lib/ui/components/input/input.component.html +2 -0
- package/src/lib/ui/components/rich-text-area/rich-text-area.component.html +3 -0
- package/src/lib/ui/components/select/select.component.css +22 -0
- package/src/lib/ui/components/select/select.component.html +14 -1
- package/src/lib/ui/components/skeleton-table-loading/skeleton-table-loading.component.html +21 -0
- package/src/lib/ui/components/switch/switch.component.html +1 -1
- package/src/lib/ui/components/toast/toast.component.html +1 -1
- package/src/lib/ui/dialogs/confirmation/confirmation.component.html +4 -4
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,
|
|
3
|
-
import * as
|
|
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
|
|
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
|
|
9
|
-
import {
|
|
10
|
-
import * as
|
|
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
|
|
20
|
-
import * as
|
|
21
|
-
import * as
|
|
22
|
-
import * as
|
|
23
|
-
import * as
|
|
24
|
-
import * as
|
|
25
|
-
import * as
|
|
26
|
-
import * as
|
|
27
|
-
import * as
|
|
28
|
-
import * as
|
|
29
|
-
import * as
|
|
30
|
-
import * as
|
|
31
|
-
import * as
|
|
32
|
-
import * as
|
|
33
|
-
import * as
|
|
34
|
-
import * as
|
|
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; };
|
|
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
|
|
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.
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
45
|
-
|
|
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
|
-
|
|
32
|
+
padding: 0;
|
|
79
33
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
34
|
+
form.wrapped-form {
|
|
35
|
+
display: flex;
|
|
36
|
+
flex-direction: column;
|
|
37
|
+
height: 100%;
|
|
38
|
+
justify-content: space-between;
|
|
39
|
+
}
|
|
86
40
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
48
|
+
h2 {
|
|
49
|
+
font-weight: 500;
|
|
50
|
+
font-size: 18px;
|
|
51
|
+
line-height: 24px;
|
|
99
52
|
}
|
|
53
|
+
}
|
|
100
54
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<label
|
|
2
|
-
class="
|
|
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
|
|
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>
|
|
@@ -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
|
-
|
|
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>
|