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.
Files changed (127) hide show
  1. package/README.md +25 -0
  2. package/auth/README.md +160 -0
  3. package/auth/auth-providers.d.ts +39 -0
  4. package/auth/auth.service.d.ts +52 -0
  5. package/auth/directives/has-at-least-one-role.directive.d.ts +26 -0
  6. package/auth/directives/has-every-role.directive.d.ts +26 -0
  7. package/auth/directives/is-authenticated.directive.d.ts +14 -0
  8. package/auth/directives/is-not-authenticated.directive.d.ts +14 -0
  9. package/auth/guards/index.d.ts +2 -0
  10. package/auth/guards/is-allowed.guard.d.ts +2 -0
  11. package/auth/guards/is-authenticated.guard.d.ts +2 -0
  12. package/auth/index.d.ts +9 -0
  13. package/auth/logout-on-error.interceptor.d.ts +9 -0
  14. package/auth/mobile/index.d.ts +1 -0
  15. package/auth/mobile/mobile-auth-feature.d.ts +2 -0
  16. package/auth/token-storage/index.d.ts +3 -0
  17. package/auth/token-storage/local-storage-feature.d.ts +2 -0
  18. package/auth/token-storage/memory-storage-feature.d.ts +12 -0
  19. package/auth/token-storage/session-storage-feature.d.ts +2 -0
  20. package/components/autocomplete/autocomplete.component.d.ts +43 -0
  21. package/components/autocomplete/index.d.ts +1 -0
  22. package/components/checkbox/checkbox.component.d.ts +11 -0
  23. package/components/checkbox/index.d.ts +1 -0
  24. package/components/date/date.component.d.ts +85 -0
  25. package/components/date/global-date.component.scss +1 -0
  26. package/components/date/index.d.ts +1 -0
  27. package/components/input/index.d.ts +1 -0
  28. package/components/input/input.component.d.ts +15 -0
  29. package/components/paginator/index.d.ts +5 -0
  30. package/components/paginator/paginator-language.service.d.ts +10 -0
  31. package/components/paginator/paginator.component.d.ts +30 -0
  32. package/components/paginator/paginator.module.d.ts +7 -0
  33. package/components/paginator/paginator.service.d.ts +6 -0
  34. package/components/paginator/paginatorIntl.d.ts +12 -0
  35. package/components/select/index.d.ts +1 -0
  36. package/components/select/select.component.d.ts +29 -0
  37. package/components/shared/ErrorData.d.ts +4 -0
  38. package/components/shared/index.d.ts +4 -0
  39. package/components/shared/makeId.d.ts +1 -0
  40. package/components/shared/option-list/option-list.component.d.ts +50 -0
  41. package/components/shared/quang-base-component.directive.d.ts +50 -0
  42. package/components/table/index.d.ts +1 -0
  43. package/components/table/table.component.d.ts +66 -0
  44. package/components/wysiwyg/global-wysiswyg.component.scss +1 -0
  45. package/components/wysiwyg/index.d.ts +1 -0
  46. package/components/wysiwyg/wysiwyg.component.d.ts +46 -0
  47. package/device/index.d.ts +1 -0
  48. package/device/resize-observable.service.d.ts +11 -0
  49. package/fesm2022/quang-auth-mobile.mjs +48 -0
  50. package/fesm2022/quang-auth-mobile.mjs.map +1 -0
  51. package/fesm2022/quang-auth.mjs +473 -0
  52. package/fesm2022/quang-auth.mjs.map +1 -0
  53. package/fesm2022/quang-components-autocomplete.mjs +196 -0
  54. package/fesm2022/quang-components-autocomplete.mjs.map +1 -0
  55. package/fesm2022/quang-components-checkbox.mjs +53 -0
  56. package/fesm2022/quang-components-checkbox.mjs.map +1 -0
  57. package/fesm2022/quang-components-date.mjs +392 -0
  58. package/fesm2022/quang-components-date.mjs.map +1 -0
  59. package/fesm2022/quang-components-input.mjs +54 -0
  60. package/fesm2022/quang-components-input.mjs.map +1 -0
  61. package/fesm2022/quang-components-paginator.mjs +157 -0
  62. package/fesm2022/quang-components-paginator.mjs.map +1 -0
  63. package/fesm2022/quang-components-select.mjs +123 -0
  64. package/fesm2022/quang-components-select.mjs.map +1 -0
  65. package/fesm2022/quang-components-shared.mjs +386 -0
  66. package/fesm2022/quang-components-shared.mjs.map +1 -0
  67. package/fesm2022/quang-components-table.mjs +162 -0
  68. package/fesm2022/quang-components-table.mjs.map +1 -0
  69. package/fesm2022/quang-components-wysiwyg.mjs +230 -0
  70. package/fesm2022/quang-components-wysiwyg.mjs.map +1 -0
  71. package/fesm2022/quang-device.mjs +42 -0
  72. package/fesm2022/quang-device.mjs.map +1 -0
  73. package/fesm2022/quang-forms.mjs +188 -0
  74. package/fesm2022/quang-forms.mjs.map +1 -0
  75. package/fesm2022/quang-loader.mjs +116 -0
  76. package/fesm2022/quang-loader.mjs.map +1 -0
  77. package/fesm2022/quang-overlay-modal.mjs +118 -0
  78. package/fesm2022/quang-overlay-modal.mjs.map +1 -0
  79. package/fesm2022/quang-overlay-popover.mjs +70 -0
  80. package/fesm2022/quang-overlay-popover.mjs.map +1 -0
  81. package/fesm2022/quang-overlay-shared.mjs +359 -0
  82. package/fesm2022/quang-overlay-shared.mjs.map +1 -0
  83. package/fesm2022/quang-overlay-toast.mjs +105 -0
  84. package/fesm2022/quang-overlay-toast.mjs.map +1 -0
  85. package/fesm2022/quang-overlay-tooltip.mjs +56 -0
  86. package/fesm2022/quang-overlay-tooltip.mjs.map +1 -0
  87. package/fesm2022/quang-shared.mjs +29 -0
  88. package/fesm2022/quang-shared.mjs.map +1 -0
  89. package/fesm2022/quang-translation.mjs +119 -0
  90. package/fesm2022/quang-translation.mjs.map +1 -0
  91. package/fesm2022/quang.mjs +23 -0
  92. package/fesm2022/quang.mjs.map +1 -0
  93. package/forms/README.md +6 -0
  94. package/forms/form-group-model.d.ts +18 -0
  95. package/forms/index.d.ts +2 -0
  96. package/forms/validators.d.ts +43 -0
  97. package/index.d.ts +30 -0
  98. package/loader/README.md +14 -0
  99. package/loader/index.d.ts +4 -0
  100. package/loader/loader-providers.d.ts +23 -0
  101. package/loader/loader.component.d.ts +23 -0
  102. package/loader/loader.interceptor.d.ts +10 -0
  103. package/loader/loader.service.d.ts +9 -0
  104. package/overlay/modal/index.d.ts +1 -0
  105. package/overlay/modal/modal.component.d.ts +29 -0
  106. package/overlay/popover/index.d.ts +1 -0
  107. package/overlay/popover/popover.component.d.ts +13 -0
  108. package/overlay/popover/popover.directive.d.ts +11 -0
  109. package/overlay/shared/CustomViewportRuler.d.ts +63 -0
  110. package/overlay/shared/index.d.ts +3 -0
  111. package/overlay/shared/quang-base-overlay.component.d.ts +9 -0
  112. package/overlay/shared/quang-base-overlay.directive.d.ts +44 -0
  113. package/overlay/toast/index.d.ts +2 -0
  114. package/overlay/toast/toast.component.d.ts +13 -0
  115. package/overlay/toast/toast.service.d.ts +27 -0
  116. package/overlay/tooltip/index.d.ts +2 -0
  117. package/overlay/tooltip/tooltip.component.d.ts +11 -0
  118. package/overlay/tooltip/tooltip.directive.d.ts +11 -0
  119. package/package.json +146 -0
  120. package/shared/index.d.ts +1 -0
  121. package/shared/intercept-utils.d.ts +13 -0
  122. package/translation/README.md +21 -0
  123. package/translation/index.d.ts +4 -0
  124. package/translation/translation-loader.service.d.ts +10 -0
  125. package/translation/translation-providers.d.ts +28 -0
  126. package/translation/translation.service.d.ts +15 -0
  127. 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,4 @@
1
+ export interface ErrorData {
2
+ error: string;
3
+ message: string;
4
+ }
@@ -0,0 +1,4 @@
1
+ export * from './makeId';
2
+ export * from './quang-base-component.directive';
3
+ export * from './option-list/option-list.component';
4
+ export * from './ErrorData';
@@ -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;;;;"}