quang 19.0.19-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/README.md +25 -0
- package/auth/README.md +160 -0
- package/auth/auth-providers.d.ts +39 -0
- package/auth/auth.service.d.ts +52 -0
- package/auth/directives/has-at-least-one-role.directive.d.ts +26 -0
- package/auth/directives/has-every-role.directive.d.ts +26 -0
- package/auth/directives/is-authenticated.directive.d.ts +14 -0
- package/auth/directives/is-not-authenticated.directive.d.ts +14 -0
- package/auth/guards/index.d.ts +2 -0
- package/auth/guards/is-allowed.guard.d.ts +2 -0
- package/auth/guards/is-authenticated.guard.d.ts +2 -0
- package/auth/index.d.ts +9 -0
- package/auth/logout-on-error.interceptor.d.ts +9 -0
- package/auth/mobile/index.d.ts +1 -0
- package/auth/mobile/mobile-auth-feature.d.ts +2 -0
- package/auth/token-storage/index.d.ts +3 -0
- package/auth/token-storage/local-storage-feature.d.ts +2 -0
- package/auth/token-storage/memory-storage-feature.d.ts +12 -0
- package/auth/token-storage/session-storage-feature.d.ts +2 -0
- package/components/autocomplete/autocomplete.component.d.ts +43 -0
- package/components/autocomplete/index.d.ts +1 -0
- package/components/checkbox/checkbox.component.d.ts +11 -0
- package/components/checkbox/index.d.ts +1 -0
- package/components/date/date.component.d.ts +85 -0
- package/components/date/global-date.component.scss +1 -0
- package/components/date/index.d.ts +1 -0
- package/components/input/index.d.ts +1 -0
- package/components/input/input.component.d.ts +15 -0
- package/components/paginator/index.d.ts +5 -0
- package/components/paginator/paginator-language.service.d.ts +10 -0
- package/components/paginator/paginator.component.d.ts +30 -0
- package/components/paginator/paginator.module.d.ts +7 -0
- package/components/paginator/paginator.service.d.ts +6 -0
- package/components/paginator/paginatorIntl.d.ts +12 -0
- package/components/select/index.d.ts +1 -0
- package/components/select/select.component.d.ts +29 -0
- package/components/shared/ErrorData.d.ts +4 -0
- package/components/shared/index.d.ts +4 -0
- package/components/shared/makeId.d.ts +1 -0
- package/components/shared/option-list/option-list.component.d.ts +50 -0
- package/components/shared/quang-base-component.directive.d.ts +50 -0
- package/components/table/index.d.ts +1 -0
- package/components/table/table.component.d.ts +66 -0
- package/components/wysiwyg/global-wysiswyg.component.scss +1 -0
- package/components/wysiwyg/index.d.ts +1 -0
- package/components/wysiwyg/wysiwyg.component.d.ts +46 -0
- package/device/index.d.ts +1 -0
- package/device/resize-observable.service.d.ts +11 -0
- package/fesm2022/quang-auth-mobile.mjs +48 -0
- package/fesm2022/quang-auth-mobile.mjs.map +1 -0
- package/fesm2022/quang-auth.mjs +473 -0
- package/fesm2022/quang-auth.mjs.map +1 -0
- package/fesm2022/quang-components-autocomplete.mjs +196 -0
- package/fesm2022/quang-components-autocomplete.mjs.map +1 -0
- package/fesm2022/quang-components-checkbox.mjs +53 -0
- package/fesm2022/quang-components-checkbox.mjs.map +1 -0
- package/fesm2022/quang-components-date.mjs +392 -0
- package/fesm2022/quang-components-date.mjs.map +1 -0
- package/fesm2022/quang-components-input.mjs +54 -0
- package/fesm2022/quang-components-input.mjs.map +1 -0
- package/fesm2022/quang-components-paginator.mjs +157 -0
- package/fesm2022/quang-components-paginator.mjs.map +1 -0
- package/fesm2022/quang-components-select.mjs +123 -0
- package/fesm2022/quang-components-select.mjs.map +1 -0
- package/fesm2022/quang-components-shared.mjs +386 -0
- package/fesm2022/quang-components-shared.mjs.map +1 -0
- package/fesm2022/quang-components-table.mjs +162 -0
- package/fesm2022/quang-components-table.mjs.map +1 -0
- package/fesm2022/quang-components-wysiwyg.mjs +230 -0
- package/fesm2022/quang-components-wysiwyg.mjs.map +1 -0
- package/fesm2022/quang-device.mjs +42 -0
- package/fesm2022/quang-device.mjs.map +1 -0
- package/fesm2022/quang-forms.mjs +188 -0
- package/fesm2022/quang-forms.mjs.map +1 -0
- package/fesm2022/quang-loader.mjs +116 -0
- package/fesm2022/quang-loader.mjs.map +1 -0
- package/fesm2022/quang-overlay-modal.mjs +118 -0
- package/fesm2022/quang-overlay-modal.mjs.map +1 -0
- package/fesm2022/quang-overlay-popover.mjs +70 -0
- package/fesm2022/quang-overlay-popover.mjs.map +1 -0
- package/fesm2022/quang-overlay-shared.mjs +359 -0
- package/fesm2022/quang-overlay-shared.mjs.map +1 -0
- package/fesm2022/quang-overlay-toast.mjs +105 -0
- package/fesm2022/quang-overlay-toast.mjs.map +1 -0
- package/fesm2022/quang-overlay-tooltip.mjs +56 -0
- package/fesm2022/quang-overlay-tooltip.mjs.map +1 -0
- package/fesm2022/quang-shared.mjs +29 -0
- package/fesm2022/quang-shared.mjs.map +1 -0
- package/fesm2022/quang-translation.mjs +119 -0
- package/fesm2022/quang-translation.mjs.map +1 -0
- package/fesm2022/quang.mjs +23 -0
- package/fesm2022/quang.mjs.map +1 -0
- package/forms/README.md +6 -0
- package/forms/form-group-model.d.ts +18 -0
- package/forms/index.d.ts +2 -0
- package/forms/validators.d.ts +43 -0
- package/index.d.ts +30 -0
- package/loader/README.md +14 -0
- package/loader/index.d.ts +4 -0
- package/loader/loader-providers.d.ts +23 -0
- package/loader/loader.component.d.ts +23 -0
- package/loader/loader.interceptor.d.ts +10 -0
- package/loader/loader.service.d.ts +9 -0
- package/overlay/modal/index.d.ts +1 -0
- package/overlay/modal/modal.component.d.ts +29 -0
- package/overlay/popover/index.d.ts +1 -0
- package/overlay/popover/popover.component.d.ts +13 -0
- package/overlay/popover/popover.directive.d.ts +11 -0
- package/overlay/shared/CustomViewportRuler.d.ts +63 -0
- package/overlay/shared/index.d.ts +3 -0
- package/overlay/shared/quang-base-overlay.component.d.ts +9 -0
- package/overlay/shared/quang-base-overlay.directive.d.ts +44 -0
- package/overlay/toast/index.d.ts +2 -0
- package/overlay/toast/toast.component.d.ts +13 -0
- package/overlay/toast/toast.service.d.ts +27 -0
- package/overlay/tooltip/index.d.ts +2 -0
- package/overlay/tooltip/tooltip.component.d.ts +11 -0
- package/overlay/tooltip/tooltip.directive.d.ts +11 -0
- package/package.json +146 -0
- package/shared/index.d.ts +1 -0
- package/shared/intercept-utils.d.ts +13 -0
- package/translation/README.md +21 -0
- package/translation/index.d.ts +4 -0
- package/translation/translation-loader.service.d.ts +10 -0
- package/translation/translation-providers.d.ts +28 -0
- package/translation/translation.service.d.ts +15 -0
- package/translation/translations.tokens.d.ts +5 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class QuangPaginatorComponent implements OnInit {
|
|
4
|
+
componentId: import("@angular/core").InputSignal<string>;
|
|
5
|
+
componentTabIndex: import("@angular/core").InputSignal<number>;
|
|
6
|
+
componentClass: import("@angular/core").InputSignal<string | string[]>;
|
|
7
|
+
page: import("@angular/core").InputSignal<number>;
|
|
8
|
+
pageSize: import("@angular/core").InputSignal<number>;
|
|
9
|
+
sizeList: import("@angular/core").InputSignal<number[]>;
|
|
10
|
+
totalItems: import("@angular/core").InputSignal<number>;
|
|
11
|
+
showTotalElementsCount: import("@angular/core").InputSignal<boolean>;
|
|
12
|
+
totalItemsText: import("@angular/core").InputSignal<string>;
|
|
13
|
+
sizeText: import("@angular/core").InputSignal<string>;
|
|
14
|
+
pageRangeText: import("@angular/core").InputSignal<string>;
|
|
15
|
+
_currentPage: import("@angular/core").WritableSignal<number>;
|
|
16
|
+
page$: import("rxjs").Subscription;
|
|
17
|
+
_pageSize: import("@angular/core").WritableSignal<number>;
|
|
18
|
+
pageSize$: import("rxjs").Subscription;
|
|
19
|
+
_totalPages: import("@angular/core").Signal<number>;
|
|
20
|
+
changePage: import("@angular/core").OutputEmitterRef<number>;
|
|
21
|
+
changeSize: import("@angular/core").OutputEmitterRef<number>;
|
|
22
|
+
ngOnInit(): void;
|
|
23
|
+
onChangeSize(event: any): void;
|
|
24
|
+
goToNextPage(): void;
|
|
25
|
+
goToPreviousPage(): void;
|
|
26
|
+
goToFirstPage(): void;
|
|
27
|
+
goToLastPage(): void;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QuangPaginatorComponent, never>;
|
|
29
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QuangPaginatorComponent, "quang-paginator", never, { "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "componentTabIndex": { "alias": "componentTabIndex"; "required": false; "isSignal": true; }; "componentClass": { "alias": "componentClass"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": true; "isSignal": true; }; "sizeList": { "alias": "sizeList"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": true; "isSignal": true; }; "showTotalElementsCount": { "alias": "showTotalElementsCount"; "required": false; "isSignal": true; }; "totalItemsText": { "alias": "totalItemsText"; "required": false; "isSignal": true; }; "sizeText": { "alias": "sizeText"; "required": false; "isSignal": true; }; "pageRangeText": { "alias": "pageRangeText"; "required": false; "isSignal": true; }; }, { "changePage": "changePage"; "changeSize": "changeSize"; }, never, never, true, never>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "@angular/common";
|
|
3
|
+
export declare class PaginatorModule {
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PaginatorModule, never>;
|
|
5
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<PaginatorModule, never, [typeof i1.CommonModule], never>;
|
|
6
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<PaginatorModule>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class QuangPaginatorService {
|
|
3
|
+
getPage(list: any[], pageNumber: number, pageSize: number): any[];
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QuangPaginatorService, never>;
|
|
5
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<QuangPaginatorService>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ɵɵFactoryDeclaration, ɵɵInjectableDeclaration } from '@angular/core';
|
|
2
|
+
export declare class PaginatorIntl {
|
|
3
|
+
readonly changes: import("@angular/core").WritableSignal<any>;
|
|
4
|
+
itemsPerPageLabel: string;
|
|
5
|
+
nextPageLabel: string;
|
|
6
|
+
previousPageLabel: string;
|
|
7
|
+
firstPageLabel: string;
|
|
8
|
+
lastPageLabel: string;
|
|
9
|
+
static ɵfac: ɵɵFactoryDeclaration<PaginatorIntl, never>;
|
|
10
|
+
static ɵprov: ɵɵInjectableDeclaration<PaginatorIntl>;
|
|
11
|
+
getRangeLabel: ((page: number, pageSize: number, length: number) => string) | undefined;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './select.component';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { AfterViewInit, ElementRef } from '@angular/core';
|
|
2
|
+
import { OptionListParentType, QuangBaseComponent, SelectOption } from 'quang/components/shared';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class QuangSelectComponent extends QuangBaseComponent<string | number | string[] | number[] | null> implements AfterViewInit {
|
|
5
|
+
selectionMode: import("@angular/core").InputSignal<"single" | "multiple">;
|
|
6
|
+
/**
|
|
7
|
+
* Set the max height of the selection list before scrolling.
|
|
8
|
+
* Default: 18rem
|
|
9
|
+
* @default 18rem
|
|
10
|
+
*/
|
|
11
|
+
optionListMaxHeight: import("@angular/core").InputSignal<string>;
|
|
12
|
+
selectOptions: import("@angular/core").InputSignal<SelectOption[]>;
|
|
13
|
+
scrollBehaviorOnOpen: import("@angular/core").InputSignal<ScrollBehavior>;
|
|
14
|
+
selectButton: import("@angular/core").Signal<ElementRef<HTMLButtonElement> | undefined>;
|
|
15
|
+
_showOptions: import("@angular/core").WritableSignal<boolean>;
|
|
16
|
+
_optionHideTimeout: import("@angular/core").WritableSignal<any>;
|
|
17
|
+
_selectedItems: import("@angular/core").Signal<SelectOption[] | null>;
|
|
18
|
+
translateValue: import("@angular/core").InputSignal<boolean>;
|
|
19
|
+
nullOption: import("@angular/core").InputSignal<boolean>;
|
|
20
|
+
readonly ParentType = OptionListParentType.SELECT;
|
|
21
|
+
changeOptionsVisibility(skipTimeout?: boolean): void;
|
|
22
|
+
showOptionVisibility(): void;
|
|
23
|
+
hideOptionVisibility(skipTimeout?: boolean): void;
|
|
24
|
+
onBlurHandler(): void;
|
|
25
|
+
onChangedHandler(value: string | number | string[] | number[] | null): void;
|
|
26
|
+
onMouseLeaveCallback(): void;
|
|
27
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QuangSelectComponent, never>;
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QuangSelectComponent, "quang-select", never, { "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "optionListMaxHeight": { "alias": "optionListMaxHeight"; "required": false; "isSignal": true; }; "selectOptions": { "alias": "selectOptions"; "required": true; "isSignal": true; }; "scrollBehaviorOnOpen": { "alias": "scrollBehaviorOnOpen"; "required": false; "isSignal": true; }; "translateValue": { "alias": "translateValue"; "required": false; "isSignal": true; }; "nullOption": { "alias": "nullOption"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
29
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const makeId: (length: number) => string;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { DestroyRef, ElementRef } from '@angular/core';
|
|
2
|
+
import { Subscription } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export interface SelectOption {
|
|
5
|
+
label: string;
|
|
6
|
+
value: string | number | null;
|
|
7
|
+
}
|
|
8
|
+
export declare enum OptionListParentType {
|
|
9
|
+
SELECT = "select",
|
|
10
|
+
AUTOCOMPLETE = "autocomplete"
|
|
11
|
+
}
|
|
12
|
+
export declare class QuangOptionListComponent {
|
|
13
|
+
logLevel: "normal" | "verbose" | null;
|
|
14
|
+
selectionMode: import("@angular/core").InputSignal<"single" | "multiple">;
|
|
15
|
+
optionListMaxHeight: import("@angular/core").InputSignal<string>;
|
|
16
|
+
selectOptions: import("@angular/core").InputSignal<SelectOption[]>;
|
|
17
|
+
selectButtonRef: import("@angular/core").InputSignal<HTMLButtonElement | HTMLInputElement>;
|
|
18
|
+
_value: import("@angular/core").InputSignal<any>;
|
|
19
|
+
_isDisabled: import("@angular/core").InputSignal<boolean | undefined>;
|
|
20
|
+
componentClass: import("@angular/core").InputSignal<string | string[]>;
|
|
21
|
+
componentLabel: import("@angular/core").InputSignal<string>;
|
|
22
|
+
componentTabIndex: import("@angular/core").InputSignal<number>;
|
|
23
|
+
translateValue: import("@angular/core").InputSignal<boolean>;
|
|
24
|
+
nullOption: import("@angular/core").InputSignal<boolean>;
|
|
25
|
+
elementWidth: import("@angular/core").WritableSignal<string>;
|
|
26
|
+
elementTop: import("@angular/core").WritableSignal<string>;
|
|
27
|
+
elementBottom: import("@angular/core").WritableSignal<string>;
|
|
28
|
+
scrollBehaviorOnOpen: import("@angular/core").InputSignal<ScrollBehavior>;
|
|
29
|
+
changedHandler: import("@angular/core").OutputEmitterRef<any>;
|
|
30
|
+
blurHandler: import("@angular/core").OutputEmitterRef<any>;
|
|
31
|
+
optionListContainer: import("@angular/core").Signal<ElementRef<HTMLDivElement> | undefined>;
|
|
32
|
+
destroyRef: DestroyRef;
|
|
33
|
+
parentType: import("@angular/core").InputSignal<OptionListParentType>;
|
|
34
|
+
parentID: import("@angular/core").InputSignal<string>;
|
|
35
|
+
selectButtonRef$: Subscription;
|
|
36
|
+
selectOptionsList: import("@angular/core").Signal<SelectOption[]>;
|
|
37
|
+
onKeyDown: Subscription | null;
|
|
38
|
+
selectedElementIndex: import("@angular/core").Signal<number>;
|
|
39
|
+
optionList$: import("@angular/core").EffectRef;
|
|
40
|
+
changePosition(): void;
|
|
41
|
+
isScrollable(ele: Element): boolean;
|
|
42
|
+
getScrollParent(node: unknown): Element;
|
|
43
|
+
onSelectItem(item: SelectOption | null): void;
|
|
44
|
+
getSelected(item: SelectOption): boolean;
|
|
45
|
+
onBlurHandler(e: Event): void;
|
|
46
|
+
getOptionListWidth(): void;
|
|
47
|
+
getOptionListTop(): void;
|
|
48
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QuangOptionListComponent, never>;
|
|
49
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QuangOptionListComponent, "quang-option-list", never, { "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "optionListMaxHeight": { "alias": "optionListMaxHeight"; "required": false; "isSignal": true; }; "selectOptions": { "alias": "selectOptions"; "required": false; "isSignal": true; }; "selectButtonRef": { "alias": "selectButtonRef"; "required": true; "isSignal": true; }; "_value": { "alias": "_value"; "required": false; "isSignal": true; }; "_isDisabled": { "alias": "_isDisabled"; "required": false; "isSignal": true; }; "componentClass": { "alias": "componentClass"; "required": false; "isSignal": true; }; "componentLabel": { "alias": "componentLabel"; "required": false; "isSignal": true; }; "componentTabIndex": { "alias": "componentTabIndex"; "required": false; "isSignal": true; }; "translateValue": { "alias": "translateValue"; "required": false; "isSignal": true; }; "nullOption": { "alias": "nullOption"; "required": false; "isSignal": true; }; "scrollBehaviorOnOpen": { "alias": "scrollBehaviorOnOpen"; "required": false; "isSignal": true; }; "parentType": { "alias": "parentType"; "required": true; "isSignal": true; }; "parentID": { "alias": "parentID"; "required": false; "isSignal": true; }; }, { "changedHandler": "changedHandler"; "blurHandler": "blurHandler"; }, never, never, true, never>;
|
|
50
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { AfterViewInit, DestroyRef, Injector } from '@angular/core';
|
|
2
|
+
import { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';
|
|
3
|
+
import { Subscription } from 'rxjs';
|
|
4
|
+
import { ErrorData } from './ErrorData';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare abstract class QuangBaseComponent<T = any> implements ControlValueAccessor, AfterViewInit {
|
|
7
|
+
componentId: import("@angular/core").InputSignal<string>;
|
|
8
|
+
isReadonly: import("@angular/core").InputSignal<boolean>;
|
|
9
|
+
isReadonly$: import("rxjs").Observable<boolean>;
|
|
10
|
+
componentTabIndex: import("@angular/core").InputSignal<number>;
|
|
11
|
+
componentClass: import("@angular/core").InputSignal<string | string[]>;
|
|
12
|
+
componentLabel: import("@angular/core").InputSignal<string>;
|
|
13
|
+
componentPlaceholder: import("@angular/core").InputSignal<string>;
|
|
14
|
+
errorMap: import("@angular/core").InputSignal<ErrorData[]>;
|
|
15
|
+
_errorMessagesByKey: import("@angular/core").Signal<Map<string, string>>;
|
|
16
|
+
successMessage: import("@angular/core").InputSignal<string>;
|
|
17
|
+
helpMessage: import("@angular/core").InputSignal<string>;
|
|
18
|
+
formControl: import("@angular/core").InputSignal<FormControl<any> | undefined>;
|
|
19
|
+
componentBlur: import("@angular/core").OutputEmitterRef<void>;
|
|
20
|
+
_value: import("@angular/core").WritableSignal<T | null>;
|
|
21
|
+
_isRequired: import("@angular/core").WritableSignal<boolean>;
|
|
22
|
+
_isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
23
|
+
_isTouched: import("@angular/core").WritableSignal<boolean>;
|
|
24
|
+
_isValid: import("@angular/core").WritableSignal<boolean>;
|
|
25
|
+
_showSuccess: import("@angular/core").Signal<boolean | "">;
|
|
26
|
+
_showErrors: import("@angular/core").Signal<boolean>;
|
|
27
|
+
_currentErrorMessage: import("@angular/core").WritableSignal<string>;
|
|
28
|
+
_currentErrorMessageExtraData: import("@angular/core").WritableSignal<Record<string, any>>;
|
|
29
|
+
_ngControl: import("@angular/core").WritableSignal<NgControl | null>;
|
|
30
|
+
_injector: import("@angular/core").WritableSignal<Injector>;
|
|
31
|
+
_statusChange$?: Subscription;
|
|
32
|
+
getIsRequiredControl: import("@angular/core").Signal<boolean>;
|
|
33
|
+
onChange?: (value: T) => void;
|
|
34
|
+
onTouched?: () => void;
|
|
35
|
+
destroyRef: DestroyRef;
|
|
36
|
+
constructor();
|
|
37
|
+
registerOnChange(fn: (value: T) => void): void;
|
|
38
|
+
writeValue(val: T): void;
|
|
39
|
+
registerOnTouched(fn: () => void): void;
|
|
40
|
+
onChangedEventHandler($event: Event): void;
|
|
41
|
+
onChangedHandler(value: T): void;
|
|
42
|
+
onBlurHandler(): void;
|
|
43
|
+
setupFormControl(): void;
|
|
44
|
+
onChangeIsReadonly: Subscription;
|
|
45
|
+
setDisabledState(isDisabled: boolean): void;
|
|
46
|
+
checkFormErrors(): void;
|
|
47
|
+
ngAfterViewInit(): void;
|
|
48
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QuangBaseComponent<any>, never>;
|
|
49
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<QuangBaseComponent<any>, never, never, { "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "isReadonly": { "alias": "isReadonly"; "required": false; "isSignal": true; }; "componentTabIndex": { "alias": "componentTabIndex"; "required": false; "isSignal": true; }; "componentClass": { "alias": "componentClass"; "required": false; "isSignal": true; }; "componentLabel": { "alias": "componentLabel"; "required": false; "isSignal": true; }; "componentPlaceholder": { "alias": "componentPlaceholder"; "required": false; "isSignal": true; }; "errorMap": { "alias": "errorMap"; "required": false; "isSignal": true; }; "successMessage": { "alias": "successMessage"; "required": false; "isSignal": true; }; "helpMessage": { "alias": "helpMessage"; "required": false; "isSignal": true; }; "formControl": { "alias": "formControl"; "required": false; "isSignal": true; }; }, { "componentBlur": "componentBlur"; }, never, never, true, never>;
|
|
50
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './table.component';
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { DestroyRef, ElementRef, TemplateRef } from '@angular/core';
|
|
2
|
+
import { ResizeObservableService } from 'quang/device';
|
|
3
|
+
import { Subscription } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export interface TableHeader {
|
|
6
|
+
text?: string;
|
|
7
|
+
sort?: SortCol;
|
|
8
|
+
css?: string[];
|
|
9
|
+
renderer?: TemplateRef<any>;
|
|
10
|
+
payload?: any;
|
|
11
|
+
}
|
|
12
|
+
export interface TableConfiguration<T> {
|
|
13
|
+
headers: TableHeader[];
|
|
14
|
+
rows: TableRow<T>[];
|
|
15
|
+
}
|
|
16
|
+
export interface TableCell {
|
|
17
|
+
renderer?: TemplateRef<any>;
|
|
18
|
+
payload?: any;
|
|
19
|
+
text?: string;
|
|
20
|
+
css?: string[];
|
|
21
|
+
fullWidth?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface TableRow<T> {
|
|
24
|
+
payload?: T;
|
|
25
|
+
rowId?: string | number;
|
|
26
|
+
css?: string[];
|
|
27
|
+
cellData: TableCell[];
|
|
28
|
+
}
|
|
29
|
+
export declare enum SortTable {
|
|
30
|
+
DEFAULT = "DEFAULT",
|
|
31
|
+
ASC = "ASC",
|
|
32
|
+
DESC = "DESC"
|
|
33
|
+
}
|
|
34
|
+
export interface SortCol {
|
|
35
|
+
key: string;
|
|
36
|
+
sort: SortTable;
|
|
37
|
+
}
|
|
38
|
+
export declare class QuangTableComponent<T> {
|
|
39
|
+
clickableRow: import("@angular/core").InputSignal<boolean>;
|
|
40
|
+
selectedRows: import("@angular/core").InputSignal<string[] | number[] | undefined>;
|
|
41
|
+
stickyTable: import("@angular/core").InputSignal<boolean>;
|
|
42
|
+
selectedRow: import("@angular/core").OutputEmitterRef<TableRow<T>>;
|
|
43
|
+
sortChanged: import("@angular/core").OutputEmitterRef<SortCol[]>;
|
|
44
|
+
SortTable: typeof SortTable;
|
|
45
|
+
destroyRef: DestroyRef;
|
|
46
|
+
_resizeObservableService: ResizeObservableService;
|
|
47
|
+
_tableHeader: import("@angular/core").Signal<ElementRef<any> | undefined>;
|
|
48
|
+
_tableHeaderElement: import("@angular/core").Signal<Element | undefined>;
|
|
49
|
+
noResultsText: import("@angular/core").InputSignal<string>;
|
|
50
|
+
_tableHeaderEffect: import("@angular/core").EffectRef;
|
|
51
|
+
_tableHeaderElementEffect: import("@angular/core").EffectRef;
|
|
52
|
+
_fakeTableHeader: import("@angular/core").Signal<ElementRef<any> | undefined>;
|
|
53
|
+
_fakeTableHeaderEffect: import("@angular/core").EffectRef;
|
|
54
|
+
tableConfigurations: import("@angular/core").InputSignal<TableConfiguration<T>>;
|
|
55
|
+
_tableConfigurations: import("@angular/core").WritableSignal<TableConfiguration<T>>;
|
|
56
|
+
tableConfigurations$: Subscription;
|
|
57
|
+
effectTableConfigurations: import("@angular/core").EffectRef;
|
|
58
|
+
hiddenColumnsObservable?: Subscription;
|
|
59
|
+
onClickRow(row: TableRow<T>): void;
|
|
60
|
+
isSelected(rowId: string | number): boolean;
|
|
61
|
+
lastWidth: number;
|
|
62
|
+
fixTableHeaderWidth(): void;
|
|
63
|
+
onSortColumn(sort: SortCol): void;
|
|
64
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QuangTableComponent<any>, never>;
|
|
65
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QuangTableComponent<any>, "quang-table", never, { "clickableRow": { "alias": "clickableRow"; "required": false; "isSignal": true; }; "selectedRows": { "alias": "selectedRows"; "required": false; "isSignal": true; }; "stickyTable": { "alias": "stickyTable"; "required": false; "isSignal": true; }; "noResultsText": { "alias": "noResultsText"; "required": false; "isSignal": true; }; "tableConfigurations": { "alias": "tableConfigurations"; "required": true; "isSignal": true; }; }, { "selectedRow": "selectedRow"; "sortChanged": "sortChanged"; }, never, never, true, never>;
|
|
66
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import 'suneditor/dist/css/suneditor.min.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './wysiwyg.component';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { AfterViewInit, ChangeDetectorRef, ElementRef } from '@angular/core';
|
|
2
|
+
import { AbstractControl, ValidationErrors } from '@angular/forms';
|
|
3
|
+
import SunEditorCore from 'suneditor/src/lib/core';
|
|
4
|
+
import { SunEditorOptions } from 'suneditor/src/options';
|
|
5
|
+
import { QuangBaseComponent } from 'quang/components/shared';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export type QuangWysiwygOptions = SunEditorOptions;
|
|
8
|
+
export declare class QuangWysiwygComponent extends QuangBaseComponent<string> implements AfterViewInit {
|
|
9
|
+
_inputForWysiwyg: import("@angular/core").Signal<ElementRef<any> | undefined>;
|
|
10
|
+
minHeight: import("@angular/core").InputSignal<string | undefined>;
|
|
11
|
+
font: import("@angular/core").InputSignal<boolean>;
|
|
12
|
+
fontSize: import("@angular/core").InputSignal<boolean>;
|
|
13
|
+
formatBlock: import("@angular/core").InputSignal<boolean>;
|
|
14
|
+
paragraphStyle: import("@angular/core").InputSignal<boolean>;
|
|
15
|
+
blockquote: import("@angular/core").InputSignal<boolean>;
|
|
16
|
+
bold: import("@angular/core").InputSignal<boolean>;
|
|
17
|
+
underline: import("@angular/core").InputSignal<boolean>;
|
|
18
|
+
italic: import("@angular/core").InputSignal<boolean>;
|
|
19
|
+
strike: import("@angular/core").InputSignal<boolean>;
|
|
20
|
+
fontColor: import("@angular/core").InputSignal<boolean>;
|
|
21
|
+
highlightColor: import("@angular/core").InputSignal<boolean>;
|
|
22
|
+
textStyle: import("@angular/core").InputSignal<boolean>;
|
|
23
|
+
removeFormat: import("@angular/core").InputSignal<boolean>;
|
|
24
|
+
align: import("@angular/core").InputSignal<boolean>;
|
|
25
|
+
list: import("@angular/core").InputSignal<boolean>;
|
|
26
|
+
table: import("@angular/core").InputSignal<boolean>;
|
|
27
|
+
link: import("@angular/core").InputSignal<boolean>;
|
|
28
|
+
image: import("@angular/core").InputSignal<boolean>;
|
|
29
|
+
fullScreen: import("@angular/core").InputSignal<boolean>;
|
|
30
|
+
showBlocks: import("@angular/core").InputSignal<boolean>;
|
|
31
|
+
onImageUploadError: import("@angular/core").InputSignal<((errorMessage: any, result: any, core: any) => boolean) | undefined>;
|
|
32
|
+
onFileDrop: import("@angular/core").InputSignal<((e: any, cleanData: any, maxCharCount: any, core: any) => boolean) | undefined>;
|
|
33
|
+
wysiwygOptions: import("@angular/core").InputSignal<SunEditorOptions | undefined>;
|
|
34
|
+
_sunEditorWysiwygInstance: import("@angular/core").WritableSignal<SunEditorCore | undefined>;
|
|
35
|
+
_sunEditorWysiwygInstance$: import("rxjs").Observable<SunEditorCore | undefined>;
|
|
36
|
+
changeDetectorRef: import("@angular/core").WritableSignal<ChangeDetectorRef>;
|
|
37
|
+
_generateSunEditorWysiwygEffect: import("@angular/core").EffectRef;
|
|
38
|
+
STRIP_HTML_REGEX: RegExp;
|
|
39
|
+
registerEvents(): void;
|
|
40
|
+
writeValue(val: string): void;
|
|
41
|
+
validate(control: AbstractControl): ValidationErrors | null;
|
|
42
|
+
onChangedHandler(value: string): void;
|
|
43
|
+
getButtonList(): string[];
|
|
44
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QuangWysiwygComponent, never>;
|
|
45
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QuangWysiwygComponent, "quang-wysiwyg", never, { "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "font": { "alias": "font"; "required": false; "isSignal": true; }; "fontSize": { "alias": "fontSize"; "required": false; "isSignal": true; }; "formatBlock": { "alias": "formatBlock"; "required": false; "isSignal": true; }; "paragraphStyle": { "alias": "paragraphStyle"; "required": false; "isSignal": true; }; "blockquote": { "alias": "blockquote"; "required": false; "isSignal": true; }; "bold": { "alias": "bold"; "required": false; "isSignal": true; }; "underline": { "alias": "underline"; "required": false; "isSignal": true; }; "italic": { "alias": "italic"; "required": false; "isSignal": true; }; "strike": { "alias": "strike"; "required": false; "isSignal": true; }; "fontColor": { "alias": "fontColor"; "required": false; "isSignal": true; }; "highlightColor": { "alias": "highlightColor"; "required": false; "isSignal": true; }; "textStyle": { "alias": "textStyle"; "required": false; "isSignal": true; }; "removeFormat": { "alias": "removeFormat"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "list": { "alias": "list"; "required": false; "isSignal": true; }; "table": { "alias": "table"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; "fullScreen": { "alias": "fullScreen"; "required": false; "isSignal": true; }; "showBlocks": { "alias": "showBlocks"; "required": false; "isSignal": true; }; "onImageUploadError": { "alias": "onImageUploadError"; "required": false; "isSignal": true; }; "onFileDrop": { "alias": "onFileDrop"; "required": false; "isSignal": true; }; "wysiwygOptions": { "alias": "wysiwygOptions"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
46
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './resize-observable.service';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ResizeObservableService {
|
|
4
|
+
private resizeObserver;
|
|
5
|
+
private notifiers;
|
|
6
|
+
constructor();
|
|
7
|
+
resizeObservable(elem: Element): Observable<ResizeObserverEntry>;
|
|
8
|
+
widthResizeObservable(elem: Element): Observable<number>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ResizeObservableService, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ResizeObservableService>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { provideAppInitializer, inject, NgZone } from '@angular/core';
|
|
2
|
+
import { App } from '@capacitor/app';
|
|
3
|
+
import { Browser } from '@capacitor/browser';
|
|
4
|
+
import { Capacitor } from '@capacitor/core';
|
|
5
|
+
import { provideOpenURI, QuangAuthService, quangAuthFeature } from 'quang/auth';
|
|
6
|
+
|
|
7
|
+
function withMobileAuth(toolbarColor = '#000000', presentationStyle = 'popover') {
|
|
8
|
+
const providers = [
|
|
9
|
+
provideOpenURI((url) => {
|
|
10
|
+
if (Capacitor.isNativePlatform()) {
|
|
11
|
+
if (Capacitor.getPlatform() === 'ios')
|
|
12
|
+
Browser.addListener('browserFinished', () => {
|
|
13
|
+
window.location.reload();
|
|
14
|
+
});
|
|
15
|
+
Browser.open({ url, presentationStyle, toolbarColor });
|
|
16
|
+
}
|
|
17
|
+
else
|
|
18
|
+
location.href = url;
|
|
19
|
+
}),
|
|
20
|
+
provideAppInitializer(() => {
|
|
21
|
+
if (!Capacitor.isNativePlatform())
|
|
22
|
+
return;
|
|
23
|
+
const ngZone = inject(NgZone);
|
|
24
|
+
const authService = inject(QuangAuthService);
|
|
25
|
+
App.addListener('appUrlOpen', (event) => {
|
|
26
|
+
ngZone.run(() => {
|
|
27
|
+
Browser.removeAllListeners();
|
|
28
|
+
Browser.close();
|
|
29
|
+
const [, queryParams] = event.url.split('?');
|
|
30
|
+
location.href = `/?${queryParams}`;
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
App.addListener('resume', () => {
|
|
34
|
+
ngZone.run(() => {
|
|
35
|
+
authService.init();
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}),
|
|
39
|
+
];
|
|
40
|
+
return quangAuthFeature(0 /* QuangAuthFeatureKind.MobileAuthFeature */, providers);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Generated bundle index. Do not edit.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
export { withMobileAuth };
|
|
48
|
+
//# sourceMappingURL=quang-auth-mobile.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quang-auth-mobile.mjs","sources":["../../../projects/quang/auth/mobile/mobile-auth-feature.ts","../../../projects/quang/auth/mobile/quang-auth-mobile.ts"],"sourcesContent":["import { EnvironmentProviders, NgZone, Provider, inject, provideAppInitializer } from '@angular/core'\n\nimport { App, URLOpenListenerEvent } from '@capacitor/app'\nimport { Browser } from '@capacitor/browser'\nimport { Capacitor } from '@capacitor/core'\n\nimport { QuangAuthFeature, QuangAuthFeatureKind, QuangAuthService, provideOpenURI, quangAuthFeature } from 'quang/auth'\n\nexport function withMobileAuth(\n toolbarColor = '#000000',\n presentationStyle: 'popover' | 'fullscreen' = 'popover'\n): QuangAuthFeature<QuangAuthFeatureKind.MobileAuthFeature> {\n const providers: (Provider | EnvironmentProviders)[] = [\n provideOpenURI((url: string) => {\n if (Capacitor.isNativePlatform()) {\n if (Capacitor.getPlatform() === 'ios')\n Browser.addListener('browserFinished', () => {\n window.location.reload()\n })\n Browser.open({ url, presentationStyle, toolbarColor })\n } else location.href = url\n }),\n provideAppInitializer(() => {\n if (!Capacitor.isNativePlatform()) return\n\n const ngZone: NgZone = inject(NgZone)\n const authService: QuangAuthService = inject(QuangAuthService)\n App.addListener('appUrlOpen', (event: URLOpenListenerEvent) => {\n ngZone.run(() => {\n Browser.removeAllListeners()\n Browser.close()\n const [, queryParams] = event.url.split('?')\n\n location.href = `/?${queryParams}`\n })\n })\n App.addListener('resume', () => {\n ngZone.run(() => {\n authService.init()\n })\n })\n }),\n ]\n return quangAuthFeature(QuangAuthFeatureKind.MobileAuthFeature, providers)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAQM,SAAU,cAAc,CAC5B,YAAY,GAAG,SAAS,EACxB,oBAA8C,SAAS,EAAA;AAEvD,IAAA,MAAM,SAAS,GAAwC;AACrD,QAAA,cAAc,CAAC,CAAC,GAAW,KAAI;AAC7B,YAAA,IAAI,SAAS,CAAC,gBAAgB,EAAE,EAAE;AAChC,gBAAA,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK;AACnC,oBAAA,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAK;AAC1C,wBAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC1B,qBAAC,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;;;AACjD,gBAAA,QAAQ,CAAC,IAAI,GAAG,GAAG;AAC5B,SAAC,CAAC;QACF,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;gBAAE;AAEnC,YAAA,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC;AACrC,YAAA,MAAM,WAAW,GAAqB,MAAM,CAAC,gBAAgB,CAAC;YAC9D,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,KAA2B,KAAI;AAC5D,gBAAA,MAAM,CAAC,GAAG,CAAC,MAAK;oBACd,OAAO,CAAC,kBAAkB,EAAE;oBAC5B,OAAO,CAAC,KAAK,EAAE;AACf,oBAAA,MAAM,GAAG,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAE5C,oBAAA,QAAQ,CAAC,IAAI,GAAG,CAAK,EAAA,EAAA,WAAW,EAAE;AACpC,iBAAC,CAAC;AACJ,aAAC,CAAC;AACF,YAAA,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAK;AAC7B,gBAAA,MAAM,CAAC,GAAG,CAAC,MAAK;oBACd,WAAW,CAAC,IAAI,EAAE;AACpB,iBAAC,CAAC;AACJ,aAAC,CAAC;AACJ,SAAC,CAAC;KACH;AACD,IAAA,OAAO,gBAAgB,CAAA,CAAA,+CAAyC,SAAS,CAAC;AAC5E;;AC5CA;;AAEG;;;;"}
|