@libs-ui/components-pagination 0.2.260
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 +3 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/libs-ui-components-pagination.mjs +5 -0
- package/esm2022/pagination.component.mjs +142 -0
- package/fesm2022/libs-ui-components-pagination.mjs +149 -0
- package/fesm2022/libs-ui-components-pagination.mjs.map +1 -0
- package/index.d.ts +1 -0
- package/package.json +25 -0
- package/pagination.component.d.ts +33 -0
package/README.md
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './pagination.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1jb21wb25lbnRzLXBhZ2luYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9zcmMvbGlicy11aS1jb21wb25lbnRzLXBhZ2luYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, model, output, signal, untracked } from "@angular/core";
|
|
2
|
+
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
|
|
3
|
+
import { LibsUiComponentsInputsInputComponent } from "@libs-ui/components-inputs-input";
|
|
4
|
+
import { TranslateProviderConfig } from "@libs-ui/services-translate";
|
|
5
|
+
import { TranslateModule } from "@ngx-translate/core";
|
|
6
|
+
import { debounceTime, Subject } from "rxjs";
|
|
7
|
+
import { isNil } from "@libs-ui/utils";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ngx-translate/core";
|
|
10
|
+
export class LibsCoreUIComponentsPaginationComponent {
|
|
11
|
+
isEnterSearch = signal(false);
|
|
12
|
+
listPageDisplay = signal([]);
|
|
13
|
+
inputPageNumber = signal(undefined);
|
|
14
|
+
totalPage = signal(0);
|
|
15
|
+
onChangeValue = new Subject();
|
|
16
|
+
showInputPage = input(false);
|
|
17
|
+
classInclude = input();
|
|
18
|
+
disable = input();
|
|
19
|
+
maxPageShowDisplay = input(5, { transform: (value) => value || 5 });
|
|
20
|
+
totalItems = input.required();
|
|
21
|
+
perPage = input.required();
|
|
22
|
+
currentPage = model.required();
|
|
23
|
+
outPageSelect = output();
|
|
24
|
+
destroyRef = inject(DestroyRef);
|
|
25
|
+
constructor() {
|
|
26
|
+
effect(() => {
|
|
27
|
+
if (!isNil(this.currentPage()) && !isNil(this.totalItems()) && !isNil(this.perPage())) {
|
|
28
|
+
untracked(() => {
|
|
29
|
+
this.renderPagination();
|
|
30
|
+
if (this.totalPage() && this.currentPage() >= this.totalPage()) {
|
|
31
|
+
this.changeInputSearch(this.totalPage());
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
this.onChangeValue.pipe(debounceTime(1500), takeUntilDestroyed(this.destroyRef)).subscribe((value) => {
|
|
37
|
+
if (this.isEnterSearch()) {
|
|
38
|
+
this.isEnterSearch.set(false);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
this.currentPage.set(value);
|
|
42
|
+
this.outPageSelect.emit(this.currentPage());
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
renderPagination() {
|
|
46
|
+
if (this.perPage() > 0 && !isNil(this.totalItems())) {
|
|
47
|
+
this.totalPage.set(Math.ceil(this.totalItems() / this.perPage()));
|
|
48
|
+
}
|
|
49
|
+
this.listPageDisplay.set([]);
|
|
50
|
+
if (this.totalPage() <= this.maxPageShowDisplay()) {
|
|
51
|
+
this.listPageDisplay.set(Array.from({ length: this.totalPage() }, (_, index) => {
|
|
52
|
+
return { key: `${index + 1}`, value: `${index + 1}` };
|
|
53
|
+
}));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (this.currentPage() < 4) {
|
|
57
|
+
this.listPageDisplay.set(Array.from({ length: this.maxPageShowDisplay() }, (_, index) => {
|
|
58
|
+
return { key: `${index + 1}`, value: `${index + 1}` };
|
|
59
|
+
}));
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const divNumber = this.totalPage() - this.currentPage();
|
|
63
|
+
if (divNumber === 0) {
|
|
64
|
+
this.listPageDisplay.update(listPage => {
|
|
65
|
+
listPage.push({ key: `${this.currentPage() - 4}`, value: `${this.currentPage() - 4}` });
|
|
66
|
+
listPage.push({ key: `${this.currentPage() - 3}`, value: `${this.currentPage() - 3}` });
|
|
67
|
+
return [...listPage];
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (divNumber === 1) {
|
|
71
|
+
this.listPageDisplay.update(listPage => {
|
|
72
|
+
listPage.push({ key: `${this.currentPage() - 3}`, value: `${this.currentPage() - 3}` });
|
|
73
|
+
return [...listPage];
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
this.listPageDisplay.update(listPage => {
|
|
77
|
+
listPage.push({ key: `${this.currentPage() - 2}`, value: `${this.currentPage() - 2}` });
|
|
78
|
+
listPage.push({ key: `${this.currentPage() - 1}`, value: `${this.currentPage() - 1}` });
|
|
79
|
+
listPage.push({ key: `${this.currentPage()}`, value: `${this.currentPage()}` });
|
|
80
|
+
return [...listPage];
|
|
81
|
+
});
|
|
82
|
+
const addNumber = this.totalPage() - this.currentPage() > 2 ? 2 : this.totalPage() - this.currentPage();
|
|
83
|
+
for (let i = 1; i <= addNumber; i++) {
|
|
84
|
+
this.listPageDisplay.update(listPage => {
|
|
85
|
+
listPage.push({ key: `${this.currentPage() + i}`, value: `${this.currentPage() + i}` });
|
|
86
|
+
return [...listPage];
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
selectPage(e, item) {
|
|
91
|
+
e.stopPropagation();
|
|
92
|
+
this.currentPage.set(+item.key);
|
|
93
|
+
this.outPageSelect.emit(this.currentPage());
|
|
94
|
+
this.renderPagination();
|
|
95
|
+
}
|
|
96
|
+
nextPage(e) {
|
|
97
|
+
e.stopPropagation();
|
|
98
|
+
if (this.currentPage() < this.totalPage()) {
|
|
99
|
+
this.currentPage.update(currentPage => currentPage + 1);
|
|
100
|
+
this.outPageSelect.emit(this.currentPage());
|
|
101
|
+
this.renderPagination();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
prePage(e) {
|
|
105
|
+
e.stopPropagation();
|
|
106
|
+
if (this.currentPage() > 1) {
|
|
107
|
+
this.currentPage.update(currentPage => currentPage - 1);
|
|
108
|
+
this.outPageSelect.emit(this.currentPage());
|
|
109
|
+
this.renderPagination();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
changePage(value) {
|
|
113
|
+
value = value;
|
|
114
|
+
if (!value) {
|
|
115
|
+
this.inputPageNumber.set(undefined);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
this.inputPageNumber.set(value);
|
|
119
|
+
this.onChangeValue.next(value);
|
|
120
|
+
}
|
|
121
|
+
handlerEnterInput() {
|
|
122
|
+
if (!this.inputPageNumber()) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
this.isEnterSearch.set(true);
|
|
126
|
+
this.changeInputSearch(this.inputPageNumber());
|
|
127
|
+
}
|
|
128
|
+
changeInputSearch(value) {
|
|
129
|
+
if (value >= 1 && value <= this.totalPage() && value !== this.currentPage()) {
|
|
130
|
+
this.currentPage.set(value);
|
|
131
|
+
this.outPageSelect.emit(this.currentPage());
|
|
132
|
+
this.renderPagination();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsCoreUIComponentsPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
136
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsCoreUIComponentsPaginationComponent, isStandalone: true, selector: "libs_ui-components-pagination", inputs: { showInputPage: { classPropertyName: "showInputPage", publicName: "showInputPage", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, maxPageShowDisplay: { classPropertyName: "maxPageShowDisplay", publicName: "maxPageShowDisplay", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: true, transformFunction: null }, perPage: { classPropertyName: "perPage", publicName: "perPage", isSignal: true, isRequired: true, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { currentPage: "currentPageChange", outPageSelect: "outPageSelect" }, providers: [TranslateProviderConfig], ngImport: i0, template: "<div class=\"flex flex-col items-center flex-wrap w-full justify-center {{ classInclude() ?? '' }}\">\n <div class=\"flex shrink-0 h-full items-center\">\n <div class=\"libs-ui-components-pagination-item !pr-[6px] pagination-button\" [class.libs-ui-disable]=\"currentPage() <=1 || totalPage() <=1 || disable()\"\n (click)=\"prePage($event)\">\n <i class=\"libs-ui-icon-chevron-right libs-ui-font-h2r rotate-[180deg] pl-[6px] pr-[14px]\"></i>\n </div>\n @for (item of listPageDisplay(); track item.key;) {\n <div class=\"libs-ui-components-pagination-item libs-ui-font-h3m\" [class.libs-ui-components-pagination-active]=\"item.key === currentPage()+''\"\n [class.libs-ui-disable]=\"disable()\" (click)=\"selectPage($event,item)\">\n {{ item.value }}\n </div>\n }\n @empty {\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px] flex shrink-0\">\n {{ 'i18n_no_data_yet' | translate }}\n </div>\n }\n <div class=\"libs-ui-components-pagination-item !p-[6px] pagination-button\"\n [class.libs-ui-disable]=\"currentPage() >= totalPage() || disable()\"\n (click)=\"nextPage($event)\">\n <i class=\"libs-ui-icon-chevron-right libs-ui-font-h2r pl-[14px] pr-[6p]x\"></i>\n </div>\n </div>\n <div class=\"flex shrink-0 h-full items-center mt-[16px]\">\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px]\">\n {{ 'i18n_value_sum_page' | translate : {value: totalPage()} }}\n </div>\n @if (showInputPage()) {\n <div class=\"h-[16px] w-[1px] bg-[#CDD0D6]\"></div>\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px] flex shrink-0\">\n {{ 'i18n_go_to' | translate }}\n </div>\n <div class=\"w-[60px] mr-[12px] shrink-0\">\n <libs_ui-components-inputs-input [dataType]=\"'int'\" classInclude=\"!rounded-[6px]\"\n [maxValueNumber]=\"totalPage()\" [emitEmptyInDataTypeNumber]=\"true\" [defaultHeight]=\"28\"\n [value]=\"inputPageNumber() || ''\" (outChange)=\"changePage($event)\"\n (outEnterEvent)=\"handlerEnterInput()\" [disable]=\"disable() || totalPage() <= 5\" />\n </div>\n }\n </div>\n</div>\n", styles: [":host{width:100%}.libs-ui-components-pagination-item{color:#1c1f22;display:flex;flex-shrink:0;align-items:center;justify-content:center;padding:4px 12px;cursor:pointer}.libs-ui-components-pagination-item [class^=mo-svg-font]:before{color:#1c1f22;font-size:var(--mo-heading-4-size)!important}.libs-ui-components-pagination-item.page-active{color:var(--libs-ui-color-default)}.libs-ui-components-pagination-item.page-active [class^=mo-svg-font]:before{color:var(--libs-ui-color-default)}.libs-ui-components-pagination-item.page-disable{color:#cdd0d6!important;pointer-events:none}.libs-ui-components-pagination-item.page-disable [class^=mo-svg-font]:before{color:#cdd0d6!important}.pagination-button{color:#6a7383}.pagination-button [class^=mo-svg-font]:before{color:#6a7383}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsInputsInputComponent, selector: "libs_ui-components-inputs-input", inputs: ["tagInput", "dataType", "typeInput", "modeInput", "tabInsertContentTagInput", "textAreaEnterNotNewLine", "emitEmptyInDataTypeNumber", "keepZeroInTypeInt", "autoAddZeroLessThan10InTypeInt", "ignoreBlockInputMaxValue", "maxValueNumber", "minValueNumber", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "classInclude", "maxLength", "readonly", "disable", "noBorder", "backgroundNone", "borderError", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "value", "autoRemoveEmoji", "defaultHeight", "minHeightTextArea", "maxHeightTextArea", "focusTimeOut", "blurTimeOut", "zIndexPopoverContent", "classContainerInput", "showCount", "ignoreStopPropagationEvent", "resize", "templateLeftBottomInput", "templateRightBottomInput", "classContainerBottomInput", "ignoreWidthInput100", "iframeTextareaCustomStyle", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "resetAutoCompletePassword", "acceptOnlyClickIcon", "setIconRightColorSameColorDisableReadOnly", "onlyAcceptNegativeValue", "maxLengthNumberCount", "focusInput"], outputs: ["maxValueNumberChange", "minValueNumberChange", "fixedFloatChange", "acceptNegativeValueChange", "maxLengthChange", "valueChange", "maxLengthNumberCountChange", "outHeightAreaChange", "outChange", "outFocusAndBlurEvent", "outEnterEvent", "outInputEvent", "outIconLeft", "outIconRight", "outFunctionsControl", "outFilesDrop", "outFileDrop", "outChangeValueByButtonUpDown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
137
|
+
}
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsCoreUIComponentsPaginationComponent, decorators: [{
|
|
139
|
+
type: Component,
|
|
140
|
+
args: [{ selector: 'libs_ui-components-pagination', standalone: true, imports: [TranslateModule, LibsUiComponentsInputsInputComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [TranslateProviderConfig], template: "<div class=\"flex flex-col items-center flex-wrap w-full justify-center {{ classInclude() ?? '' }}\">\n <div class=\"flex shrink-0 h-full items-center\">\n <div class=\"libs-ui-components-pagination-item !pr-[6px] pagination-button\" [class.libs-ui-disable]=\"currentPage() <=1 || totalPage() <=1 || disable()\"\n (click)=\"prePage($event)\">\n <i class=\"libs-ui-icon-chevron-right libs-ui-font-h2r rotate-[180deg] pl-[6px] pr-[14px]\"></i>\n </div>\n @for (item of listPageDisplay(); track item.key;) {\n <div class=\"libs-ui-components-pagination-item libs-ui-font-h3m\" [class.libs-ui-components-pagination-active]=\"item.key === currentPage()+''\"\n [class.libs-ui-disable]=\"disable()\" (click)=\"selectPage($event,item)\">\n {{ item.value }}\n </div>\n }\n @empty {\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px] flex shrink-0\">\n {{ 'i18n_no_data_yet' | translate }}\n </div>\n }\n <div class=\"libs-ui-components-pagination-item !p-[6px] pagination-button\"\n [class.libs-ui-disable]=\"currentPage() >= totalPage() || disable()\"\n (click)=\"nextPage($event)\">\n <i class=\"libs-ui-icon-chevron-right libs-ui-font-h2r pl-[14px] pr-[6p]x\"></i>\n </div>\n </div>\n <div class=\"flex shrink-0 h-full items-center mt-[16px]\">\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px]\">\n {{ 'i18n_value_sum_page' | translate : {value: totalPage()} }}\n </div>\n @if (showInputPage()) {\n <div class=\"h-[16px] w-[1px] bg-[#CDD0D6]\"></div>\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px] flex shrink-0\">\n {{ 'i18n_go_to' | translate }}\n </div>\n <div class=\"w-[60px] mr-[12px] shrink-0\">\n <libs_ui-components-inputs-input [dataType]=\"'int'\" classInclude=\"!rounded-[6px]\"\n [maxValueNumber]=\"totalPage()\" [emitEmptyInDataTypeNumber]=\"true\" [defaultHeight]=\"28\"\n [value]=\"inputPageNumber() || ''\" (outChange)=\"changePage($event)\"\n (outEnterEvent)=\"handlerEnterInput()\" [disable]=\"disable() || totalPage() <= 5\" />\n </div>\n }\n </div>\n</div>\n", styles: [":host{width:100%}.libs-ui-components-pagination-item{color:#1c1f22;display:flex;flex-shrink:0;align-items:center;justify-content:center;padding:4px 12px;cursor:pointer}.libs-ui-components-pagination-item [class^=mo-svg-font]:before{color:#1c1f22;font-size:var(--mo-heading-4-size)!important}.libs-ui-components-pagination-item.page-active{color:var(--libs-ui-color-default)}.libs-ui-components-pagination-item.page-active [class^=mo-svg-font]:before{color:var(--libs-ui-color-default)}.libs-ui-components-pagination-item.page-disable{color:#cdd0d6!important;pointer-events:none}.libs-ui-components-pagination-item.page-disable [class^=mo-svg-font]:before{color:#cdd0d6!important}.pagination-button{color:#6a7383}.pagination-button [class^=mo-svg-font]:before{color:#6a7383}\n"] }]
|
|
141
|
+
}], ctorParameters: () => [] });
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9zcmMvcGFnaW5hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9zcmMvcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBWXZDLE1BQU0sT0FBTyx1Q0FBdUM7SUFDMUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixlQUFlLEdBQUcsTUFBTSxDQUF3QyxFQUFFLENBQUMsQ0FBQztJQUNwRSxlQUFlLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUN4RCxTQUFTLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBRTlDLGFBQWEsR0FBRyxLQUFL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QzNELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFhO1FBQ3JDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUM1RSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQzt3R0FsSlUsdUNBQXVDOzRGQUF2Qyx1Q0FBdUMsNm1DQUZ2QyxDQUFDLHVCQUF1QixDQUFDLDBCQ2hCdEMseTFFQXlDQSxnMEJEM0JZLGVBQWUsNEZBQUUsb0NBQW9DOzs0RkFJcEQsdUNBQXVDO2tCQVZuRCxTQUFTOytCQUVFLCtCQUErQixjQUc3QixJQUFJLFdBQ1AsQ0FBQyxlQUFlLEVBQUUsb0NBQW9DLENBQUMsbUJBQy9DLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzSW5wdXRzSW5wdXRDb21wb25lbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1pbnB1dHMtaW5wdXRcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVByb3ZpZGVyQ29uZmlnIH0gZnJvbSBcIkBsaWJzLXVpL3NlcnZpY2VzLXRyYW5zbGF0ZVwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtcGFnaW5hdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBMaWJzVWlDb21wb25lbnRzSW5wdXRzSW5wdXRDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbVHJhbnNsYXRlUHJvdmlkZXJDb25maWddXG59KVxuZXhwb3J0IGNsYXNzIExpYnNDb3JlVUlDb21wb25lbnRzUGFnaW5hdGlvbkNvbXBvbmVudCB7XG4gIHByaXZhdGUgaXNFbnRlclNlYXJjaCA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBsaXN0UGFnZURpc3BsYXkgPSBzaWduYWw8QXJyYXk8eyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9Pj4oW10pO1xuICBwcm90ZWN0ZWQgaW5wdXRQYWdlTnVtYmVyID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHRvdGFsUGFnZSA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQ2hhbmdlVmFsdWUgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgcmVhZG9ubHkgc2hvd0lucHV0UGFnZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgbWF4UGFnZVNob3dEaXNwbGF5ID0gaW5wdXQ8bnVtYmVyLG51bWJlcnx1bmRlZmluZWQgPig1LCB7dHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlIHx8IDV9KTtcbiAgcmVhZG9ubHkgdG90YWxJdGVtcyA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgcGVyUGFnZSA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgY3VycmVudFBhZ2UgPSBtb2RlbC5yZXF1aXJlZDxudW1iZXI+KCk7XG5cbiAgcmVhZG9ubHkgb3V0UGFnZVNlbGVjdCA9IG91dHB1dDxudW1iZXI+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmKCFpc05pbCh0aGlzLmN1cnJlbnRQYWdlKCkpICYmICFpc05pbCh0aGlzLnRvdGFsSXRlbXMoKSkgJiYgIWlzTmlsKHRoaXMucGVyUGFnZSgpKSl7XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJQYWdpbmF0aW9uKCk7XG4gICAgICAgICAgaWYgKHRoaXMudG90YWxQYWdlKCkgJiYgdGhpcy5jdXJyZW50UGFnZSgpID49IHRoaXMudG90YWxQYWdlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlSW5wdXRTZWFyY2godGhpcy50b3RhbFBhZ2UoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uQ2hhbmdlVmFsdWUucGlwZShkZWJvdW5jZVRpbWUoMTUwMCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc0VudGVyU2VhcmNoKCkpIHtcbiAgICAgICAgdGhpcy5pc0VudGVyU2VhcmNoLnNldChmYWxzZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KHZhbHVlKTtcbiAgICAgIHRoaXMub3V0UGFnZVNlbGVjdC5lbWl0KHRoaXMuY3VycmVudFBhZ2UoKSk7XG4gICAgfSk7XG4gIH1cbiBcbiAgcHJpdmF0ZSByZW5kZXJQYWdpbmF0aW9uKCkge1xuICAgIGlmICh0aGlzLnBlclBhZ2UoKSA+IDAgJiYgIWlzTmlsKHRoaXMudG90YWxJdGVtcygpKSkge1xuICAgICAgdGhpcy50b3RhbFBhZ2Uuc2V0KE1hdGguY2VpbCh0aGlzLnRvdGFsSXRlbXMoKSAvIHRoaXMucGVyUGFnZSgpKSk7XG4gICAgfVxuICAgIHRoaXMubGlzdFBhZ2VEaXNwbGF5LnNldChbXSk7XG5cbiAgICBpZiAodGhpcy50b3RhbFBhZ2UoKSA8PSB0aGlzLm1heFBhZ2VTaG93RGlzcGxheSgpKSB7XG4gICAgICB0aGlzLmxpc3RQYWdlRGlzcGxheS5zZXQoQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy50b3RhbFBhZ2UoKSB9LCAoXywgaW5kZXgpID0+IHtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBgJHtpbmRleCArIDF9YCwgdmFsdWU6IGAke2luZGV4ICsgMX1gIH07XG4gICAgICB9KSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSgpIDwgNCkge1xuICAgICAgdGhpcy5saXN0UGFnZURpc3BsYXkuc2V0KEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMubWF4UGFnZVNob3dEaXNwbGF5KCkgfSwgKF8sIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiB7IGtleTogYCR7aW5kZXggKyAxfWAsIHZhbHVlOiBgJHtpbmRleCArIDF9YCB9O1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGl2TnVtYmVyID0gdGhpcy50b3RhbFBhZ2UoKSAtIHRoaXMuY3VycmVudFBhZ2UoKTtcblxuICAgIGlmIChkaXZOdW1iZXIgPT09IDApIHtcbiAgICAgIHRoaXMubGlzdFBhZ2VEaXNwbGF5LnVwZGF0ZShsaXN0UGFnZSA9PiB7XG4gICAgICAgIGxpc3RQYWdlLnB1c2goeyBrZXk6IGAke3RoaXMuY3VycmVudFBhZ2UoKSAtIDR9YCwgdmFsdWU6IGAke3RoaXMuY3VycmVudFBhZ2UoKSAtIDR9YCB9KTtcbiAgICAgICAgbGlzdFBhZ2UucHVzaCh7IGtleTogYCR7dGhpcy5jdXJyZW50UGFnZSgpIC0gM31gLCB2YWx1ZTogYCR7dGhpcy5jdXJyZW50UGFnZSgpIC0gM31gIH0pO1xuXG4gICAgICAgIHJldHVybiBbLi4ubGlzdFBhZ2VdO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGRpdk51bWJlciA9PT0gMSkge1xuICAgICAgdGhpcy5saXN0UGFnZURpc3BsYXkudXBkYXRlKGxpc3RQYWdlID0+IHtcbiAgICAgICAgbGlzdFBhZ2UucHVzaCh7IGtleTogYCR7dGhpcy5jdXJyZW50UGFnZSgpIC0gM31gLCB2YWx1ZTogYCR7dGhpcy5jdXJyZW50UGFnZSgpIC0gM31gIH0pO1xuXG4gICAgICAgIHJldHVybiBbLi4ubGlzdFBhZ2VdO1xuICAgICAgfSk7XG4gICAgfVxuXG5cbiAgICB0aGlzLmxpc3RQYWdlRGlzcGxheS51cGRhdGUobGlzdFBhZ2UgPT4ge1xuICAgICAgbGlzdFBhZ2UucHVzaCh7IGtleTogYCR7dGhpcy5jdXJyZW50UGFnZSgpIC0gMn1gLCB2YWx1ZTogYCR7dGhpcy5jdXJyZW50UGFnZSgpIC0gMn1gIH0pO1xuICAgICAgbGlzdFBhZ2UucHVzaCh7IGtleTogYCR7dGhpcy5jdXJyZW50UGFnZSgpIC0gMX1gLCB2YWx1ZTogYCR7dGhpcy5jdXJyZW50UGFnZSgpIC0gMX1gIH0pO1xuICAgICAgbGlzdFBhZ2UucHVzaCh7IGtleTogYCR7dGhpcy5jdXJyZW50UGFnZSgpfWAsIHZhbHVlOiBgJHt0aGlzLmN1cnJlbnRQYWdlKCl9YCB9KTtcblxuICAgICAgcmV0dXJuIFsuLi5saXN0UGFnZV07XG4gICAgfSk7XG4gICAgY29uc3QgYWRkTnVtYmVyID0gdGhpcy50b3RhbFBhZ2UoKSAtIHRoaXMuY3VycmVudFBhZ2UoKSA+IDIgPyAyIDogdGhpcy50b3RhbFBhZ2UoKSAtIHRoaXMuY3VycmVudFBhZ2UoKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBhZGROdW1iZXI7IGkrKykge1xuICAgICAgdGhpcy5saXN0UGFnZURpc3BsYXkudXBkYXRlKGxpc3RQYWdlID0+IHtcbiAgICAgICAgbGlzdFBhZ2UucHVzaCh7IGtleTogYCR7dGhpcy5jdXJyZW50UGFnZSgpICsgaX1gLCB2YWx1ZTogYCR7dGhpcy5jdXJyZW50UGFnZSgpICsgaX1gIH0pO1xuXG4gICAgICAgIHJldHVybiBbLi4ubGlzdFBhZ2VdO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFBhZ2UoZTogRXZlbnQsIGl0ZW06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5jdXJyZW50UGFnZS5zZXQoK2l0ZW0ua2V5KTtcbiAgICB0aGlzLm91dFBhZ2VTZWxlY3QuZW1pdCh0aGlzLmN1cnJlbnRQYWdlKCkpO1xuICAgIHRoaXMucmVuZGVyUGFnaW5hdGlvbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5leHRQYWdlKGU6IEV2ZW50KSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSgpIDwgdGhpcy50b3RhbFBhZ2UoKSkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS51cGRhdGUoY3VycmVudFBhZ2UgPT4gY3VycmVudFBhZ2UgKyAxKTtcbiAgICAgIHRoaXMub3V0UGFnZVNlbGVjdC5lbWl0KHRoaXMuY3VycmVudFBhZ2UoKSk7XG4gICAgICB0aGlzLnJlbmRlclBhZ2luYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJlUGFnZShlOiBFdmVudCkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UoKSA+IDEpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UudXBkYXRlKGN1cnJlbnRQYWdlID0+IGN1cnJlbnRQYWdlIC0gMSk7XG4gICAgICB0aGlzLm91dFBhZ2VTZWxlY3QuZW1pdCh0aGlzLmN1cnJlbnRQYWdlKCkpO1xuICAgICAgdGhpcy5yZW5kZXJQYWdpbmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNoYW5nZVBhZ2UodmFsdWU6IHN0cmluZyB8IG51bWJlcikge1xuICAgIHZhbHVlID0gdmFsdWUgYXMgbnVtYmVyO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuaW5wdXRQYWdlTnVtYmVyLnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlucHV0UGFnZU51bWJlci5zZXQodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2VWYWx1ZS5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyRW50ZXJJbnB1dCgpIHtcbiAgICBpZiAoIXRoaXMuaW5wdXRQYWdlTnVtYmVyKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc0VudGVyU2VhcmNoLnNldCh0cnVlKTtcbiAgICB0aGlzLmNoYW5nZUlucHV0U2VhcmNoKHRoaXMuaW5wdXRQYWdlTnVtYmVyKCkgYXMgbnVtYmVyKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlSW5wdXRTZWFyY2godmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IHRoaXMudG90YWxQYWdlKCkgJiYgdmFsdWUgIT09IHRoaXMuY3VycmVudFBhZ2UoKSkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS5zZXQodmFsdWUpO1xuICAgICAgdGhpcy5vdXRQYWdlU2VsZWN0LmVtaXQodGhpcy5jdXJyZW50UGFnZSgpKTtcbiAgICAgIHRoaXMucmVuZGVyUGFnaW5hdGlvbigpO1xuICAgIH1cbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBmbGV4LXdyYXAgdy1mdWxsIGp1c3RpZnktY2VudGVyIHt7IGNsYXNzSW5jbHVkZSgpID8/ICcnIH19XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggc2hyaW5rLTAgaC1mdWxsIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS1jb21wb25lbnRzLXBhZ2luYXRpb24taXRlbSAhcHItWzZweF0gcGFnaW5hdGlvbi1idXR0b25cIiBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cImN1cnJlbnRQYWdlKCkgPD0xIHx8IHRvdGFsUGFnZSgpIDw9MSAgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwcmVQYWdlKCRldmVudClcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwibGlicy11aS1pY29uLWNoZXZyb24tcmlnaHQgbGlicy11aS1mb250LWgyciByb3RhdGUtWzE4MGRlZ10gcGwtWzZweF0gcHItWzE0cHhdXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBsaXN0UGFnZURpc3BsYXkoKTsgdHJhY2sgaXRlbS5rZXk7KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS1jb21wb25lbnRzLXBhZ2luYXRpb24taXRlbSBsaWJzLXVpLWZvbnQtaDNtXCIgW2NsYXNzLmxpYnMtdWktY29tcG9uZW50cy1wYWdpbmF0aW9uLWFjdGl2ZV09XCJpdGVtLmtleSA9PT0gY3VycmVudFBhZ2UoKSsnJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJkaXNhYmxlKClcIiAoY2xpY2spPVwic2VsZWN0UGFnZSgkZXZlbnQsaXRlbSlcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnZhbHVlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAZW1wdHkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpYnMtdWktZm9udC1oNW0gdGV4dC1bIzlDQTJBRF0gbXgtWzEycHhdIGZsZXggc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgICB7eyAnaTE4bl9ub19kYXRhX3lldCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLWNvbXBvbmVudHMtcGFnaW5hdGlvbi1pdGVtICFwLVs2cHhdIHBhZ2luYXRpb24tYnV0dG9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiY3VycmVudFBhZ2UoKSA+PSB0b3RhbFBhZ2UoKSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRQYWdlKCRldmVudClcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwibGlicy11aS1pY29uLWNoZXZyb24tcmlnaHQgbGlicy11aS1mb250LWgyciBwbC1bMTRweF0gcHItWzZwXXhcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IHNocmluay0wIGgtZnVsbCBpdGVtcy1jZW50ZXIgbXQtWzE2cHhdXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVtIHRleHQtWyM5Q0EyQURdIG14LVsxMnB4XVwiPlxuICAgICAgICAgICAge3sgJ2kxOG5fdmFsdWVfc3VtX3BhZ2UnIHwgdHJhbnNsYXRlIDoge3ZhbHVlOiB0b3RhbFBhZ2UoKX0gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoc2hvd0lucHV0UGFnZSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1bMTZweF0gdy1bMXB4XSBiZy1bI0NERDBENl1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVtIHRleHQtWyM5Q0EyQURdIG14LVsxMnB4XSBmbGV4IHNocmluay0wXCI+XG4gICAgICAgICAgICAgICAge3sgJ2kxOG5fZ29fdG8nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVs2MHB4XSBtci1bMTJweF0gc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy1pbnB1dCBbZGF0YVR5cGVdPVwiJ2ludCdcIiBjbGFzc0luY2x1ZGU9XCIhcm91bmRlZC1bNnB4XVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhWYWx1ZU51bWJlcl09XCJ0b3RhbFBhZ2UoKVwiIFtlbWl0RW1wdHlJbkRhdGFUeXBlTnVtYmVyXT1cInRydWVcIiBbZGVmYXVsdEhlaWdodF09XCIyOFwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpbnB1dFBhZ2VOdW1iZXIoKSB8fCAnJ1wiIChvdXRDaGFuZ2UpPVwiY2hhbmdlUGFnZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG91dEVudGVyRXZlbnQpPVwiaGFuZGxlckVudGVySW5wdXQoKVwiIFtkaXNhYmxlXT1cImRpc2FibGUoKSB8fCB0b3RhbFBhZ2UoKSA8PSA1XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { signal, input, model, output, inject, DestroyRef, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { LibsUiComponentsInputsInputComponent } from '@libs-ui/components-inputs-input';
|
|
5
|
+
import { TranslateProviderConfig } from '@libs-ui/services-translate';
|
|
6
|
+
import * as i1 from '@ngx-translate/core';
|
|
7
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
8
|
+
import { Subject, debounceTime } from 'rxjs';
|
|
9
|
+
import { isNil } from '@libs-ui/utils';
|
|
10
|
+
|
|
11
|
+
class LibsCoreUIComponentsPaginationComponent {
|
|
12
|
+
isEnterSearch = signal(false);
|
|
13
|
+
listPageDisplay = signal([]);
|
|
14
|
+
inputPageNumber = signal(undefined);
|
|
15
|
+
totalPage = signal(0);
|
|
16
|
+
onChangeValue = new Subject();
|
|
17
|
+
showInputPage = input(false);
|
|
18
|
+
classInclude = input();
|
|
19
|
+
disable = input();
|
|
20
|
+
maxPageShowDisplay = input(5, { transform: (value) => value || 5 });
|
|
21
|
+
totalItems = input.required();
|
|
22
|
+
perPage = input.required();
|
|
23
|
+
currentPage = model.required();
|
|
24
|
+
outPageSelect = output();
|
|
25
|
+
destroyRef = inject(DestroyRef);
|
|
26
|
+
constructor() {
|
|
27
|
+
effect(() => {
|
|
28
|
+
if (!isNil(this.currentPage()) && !isNil(this.totalItems()) && !isNil(this.perPage())) {
|
|
29
|
+
untracked(() => {
|
|
30
|
+
this.renderPagination();
|
|
31
|
+
if (this.totalPage() && this.currentPage() >= this.totalPage()) {
|
|
32
|
+
this.changeInputSearch(this.totalPage());
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
this.onChangeValue.pipe(debounceTime(1500), takeUntilDestroyed(this.destroyRef)).subscribe((value) => {
|
|
38
|
+
if (this.isEnterSearch()) {
|
|
39
|
+
this.isEnterSearch.set(false);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this.currentPage.set(value);
|
|
43
|
+
this.outPageSelect.emit(this.currentPage());
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
renderPagination() {
|
|
47
|
+
if (this.perPage() > 0 && !isNil(this.totalItems())) {
|
|
48
|
+
this.totalPage.set(Math.ceil(this.totalItems() / this.perPage()));
|
|
49
|
+
}
|
|
50
|
+
this.listPageDisplay.set([]);
|
|
51
|
+
if (this.totalPage() <= this.maxPageShowDisplay()) {
|
|
52
|
+
this.listPageDisplay.set(Array.from({ length: this.totalPage() }, (_, index) => {
|
|
53
|
+
return { key: `${index + 1}`, value: `${index + 1}` };
|
|
54
|
+
}));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (this.currentPage() < 4) {
|
|
58
|
+
this.listPageDisplay.set(Array.from({ length: this.maxPageShowDisplay() }, (_, index) => {
|
|
59
|
+
return { key: `${index + 1}`, value: `${index + 1}` };
|
|
60
|
+
}));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const divNumber = this.totalPage() - this.currentPage();
|
|
64
|
+
if (divNumber === 0) {
|
|
65
|
+
this.listPageDisplay.update(listPage => {
|
|
66
|
+
listPage.push({ key: `${this.currentPage() - 4}`, value: `${this.currentPage() - 4}` });
|
|
67
|
+
listPage.push({ key: `${this.currentPage() - 3}`, value: `${this.currentPage() - 3}` });
|
|
68
|
+
return [...listPage];
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (divNumber === 1) {
|
|
72
|
+
this.listPageDisplay.update(listPage => {
|
|
73
|
+
listPage.push({ key: `${this.currentPage() - 3}`, value: `${this.currentPage() - 3}` });
|
|
74
|
+
return [...listPage];
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
this.listPageDisplay.update(listPage => {
|
|
78
|
+
listPage.push({ key: `${this.currentPage() - 2}`, value: `${this.currentPage() - 2}` });
|
|
79
|
+
listPage.push({ key: `${this.currentPage() - 1}`, value: `${this.currentPage() - 1}` });
|
|
80
|
+
listPage.push({ key: `${this.currentPage()}`, value: `${this.currentPage()}` });
|
|
81
|
+
return [...listPage];
|
|
82
|
+
});
|
|
83
|
+
const addNumber = this.totalPage() - this.currentPage() > 2 ? 2 : this.totalPage() - this.currentPage();
|
|
84
|
+
for (let i = 1; i <= addNumber; i++) {
|
|
85
|
+
this.listPageDisplay.update(listPage => {
|
|
86
|
+
listPage.push({ key: `${this.currentPage() + i}`, value: `${this.currentPage() + i}` });
|
|
87
|
+
return [...listPage];
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
selectPage(e, item) {
|
|
92
|
+
e.stopPropagation();
|
|
93
|
+
this.currentPage.set(+item.key);
|
|
94
|
+
this.outPageSelect.emit(this.currentPage());
|
|
95
|
+
this.renderPagination();
|
|
96
|
+
}
|
|
97
|
+
nextPage(e) {
|
|
98
|
+
e.stopPropagation();
|
|
99
|
+
if (this.currentPage() < this.totalPage()) {
|
|
100
|
+
this.currentPage.update(currentPage => currentPage + 1);
|
|
101
|
+
this.outPageSelect.emit(this.currentPage());
|
|
102
|
+
this.renderPagination();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
prePage(e) {
|
|
106
|
+
e.stopPropagation();
|
|
107
|
+
if (this.currentPage() > 1) {
|
|
108
|
+
this.currentPage.update(currentPage => currentPage - 1);
|
|
109
|
+
this.outPageSelect.emit(this.currentPage());
|
|
110
|
+
this.renderPagination();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
changePage(value) {
|
|
114
|
+
value = value;
|
|
115
|
+
if (!value) {
|
|
116
|
+
this.inputPageNumber.set(undefined);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
this.inputPageNumber.set(value);
|
|
120
|
+
this.onChangeValue.next(value);
|
|
121
|
+
}
|
|
122
|
+
handlerEnterInput() {
|
|
123
|
+
if (!this.inputPageNumber()) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
this.isEnterSearch.set(true);
|
|
127
|
+
this.changeInputSearch(this.inputPageNumber());
|
|
128
|
+
}
|
|
129
|
+
changeInputSearch(value) {
|
|
130
|
+
if (value >= 1 && value <= this.totalPage() && value !== this.currentPage()) {
|
|
131
|
+
this.currentPage.set(value);
|
|
132
|
+
this.outPageSelect.emit(this.currentPage());
|
|
133
|
+
this.renderPagination();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsCoreUIComponentsPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
137
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsCoreUIComponentsPaginationComponent, isStandalone: true, selector: "libs_ui-components-pagination", inputs: { showInputPage: { classPropertyName: "showInputPage", publicName: "showInputPage", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, maxPageShowDisplay: { classPropertyName: "maxPageShowDisplay", publicName: "maxPageShowDisplay", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: true, transformFunction: null }, perPage: { classPropertyName: "perPage", publicName: "perPage", isSignal: true, isRequired: true, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { currentPage: "currentPageChange", outPageSelect: "outPageSelect" }, providers: [TranslateProviderConfig], ngImport: i0, template: "<div class=\"flex flex-col items-center flex-wrap w-full justify-center {{ classInclude() ?? '' }}\">\n <div class=\"flex shrink-0 h-full items-center\">\n <div class=\"libs-ui-components-pagination-item !pr-[6px] pagination-button\" [class.libs-ui-disable]=\"currentPage() <=1 || totalPage() <=1 || disable()\"\n (click)=\"prePage($event)\">\n <i class=\"libs-ui-icon-chevron-right libs-ui-font-h2r rotate-[180deg] pl-[6px] pr-[14px]\"></i>\n </div>\n @for (item of listPageDisplay(); track item.key;) {\n <div class=\"libs-ui-components-pagination-item libs-ui-font-h3m\" [class.libs-ui-components-pagination-active]=\"item.key === currentPage()+''\"\n [class.libs-ui-disable]=\"disable()\" (click)=\"selectPage($event,item)\">\n {{ item.value }}\n </div>\n }\n @empty {\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px] flex shrink-0\">\n {{ 'i18n_no_data_yet' | translate }}\n </div>\n }\n <div class=\"libs-ui-components-pagination-item !p-[6px] pagination-button\"\n [class.libs-ui-disable]=\"currentPage() >= totalPage() || disable()\"\n (click)=\"nextPage($event)\">\n <i class=\"libs-ui-icon-chevron-right libs-ui-font-h2r pl-[14px] pr-[6p]x\"></i>\n </div>\n </div>\n <div class=\"flex shrink-0 h-full items-center mt-[16px]\">\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px]\">\n {{ 'i18n_value_sum_page' | translate : {value: totalPage()} }}\n </div>\n @if (showInputPage()) {\n <div class=\"h-[16px] w-[1px] bg-[#CDD0D6]\"></div>\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px] flex shrink-0\">\n {{ 'i18n_go_to' | translate }}\n </div>\n <div class=\"w-[60px] mr-[12px] shrink-0\">\n <libs_ui-components-inputs-input [dataType]=\"'int'\" classInclude=\"!rounded-[6px]\"\n [maxValueNumber]=\"totalPage()\" [emitEmptyInDataTypeNumber]=\"true\" [defaultHeight]=\"28\"\n [value]=\"inputPageNumber() || ''\" (outChange)=\"changePage($event)\"\n (outEnterEvent)=\"handlerEnterInput()\" [disable]=\"disable() || totalPage() <= 5\" />\n </div>\n }\n </div>\n</div>\n", styles: [":host{width:100%}.libs-ui-components-pagination-item{color:#1c1f22;display:flex;flex-shrink:0;align-items:center;justify-content:center;padding:4px 12px;cursor:pointer}.libs-ui-components-pagination-item [class^=mo-svg-font]:before{color:#1c1f22;font-size:var(--mo-heading-4-size)!important}.libs-ui-components-pagination-item.page-active{color:var(--libs-ui-color-default)}.libs-ui-components-pagination-item.page-active [class^=mo-svg-font]:before{color:var(--libs-ui-color-default)}.libs-ui-components-pagination-item.page-disable{color:#cdd0d6!important;pointer-events:none}.libs-ui-components-pagination-item.page-disable [class^=mo-svg-font]:before{color:#cdd0d6!important}.pagination-button{color:#6a7383}.pagination-button [class^=mo-svg-font]:before{color:#6a7383}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsInputsInputComponent, selector: "libs_ui-components-inputs-input", inputs: ["tagInput", "dataType", "typeInput", "modeInput", "tabInsertContentTagInput", "textAreaEnterNotNewLine", "emitEmptyInDataTypeNumber", "keepZeroInTypeInt", "autoAddZeroLessThan10InTypeInt", "ignoreBlockInputMaxValue", "maxValueNumber", "minValueNumber", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "classInclude", "maxLength", "readonly", "disable", "noBorder", "backgroundNone", "borderError", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "value", "autoRemoveEmoji", "defaultHeight", "minHeightTextArea", "maxHeightTextArea", "focusTimeOut", "blurTimeOut", "zIndexPopoverContent", "classContainerInput", "showCount", "ignoreStopPropagationEvent", "resize", "templateLeftBottomInput", "templateRightBottomInput", "classContainerBottomInput", "ignoreWidthInput100", "iframeTextareaCustomStyle", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "resetAutoCompletePassword", "acceptOnlyClickIcon", "setIconRightColorSameColorDisableReadOnly", "onlyAcceptNegativeValue", "maxLengthNumberCount", "focusInput"], outputs: ["maxValueNumberChange", "minValueNumberChange", "fixedFloatChange", "acceptNegativeValueChange", "maxLengthChange", "valueChange", "maxLengthNumberCountChange", "outHeightAreaChange", "outChange", "outFocusAndBlurEvent", "outEnterEvent", "outInputEvent", "outIconLeft", "outIconRight", "outFunctionsControl", "outFilesDrop", "outFileDrop", "outChangeValueByButtonUpDown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
138
|
+
}
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsCoreUIComponentsPaginationComponent, decorators: [{
|
|
140
|
+
type: Component,
|
|
141
|
+
args: [{ selector: 'libs_ui-components-pagination', standalone: true, imports: [TranslateModule, LibsUiComponentsInputsInputComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [TranslateProviderConfig], template: "<div class=\"flex flex-col items-center flex-wrap w-full justify-center {{ classInclude() ?? '' }}\">\n <div class=\"flex shrink-0 h-full items-center\">\n <div class=\"libs-ui-components-pagination-item !pr-[6px] pagination-button\" [class.libs-ui-disable]=\"currentPage() <=1 || totalPage() <=1 || disable()\"\n (click)=\"prePage($event)\">\n <i class=\"libs-ui-icon-chevron-right libs-ui-font-h2r rotate-[180deg] pl-[6px] pr-[14px]\"></i>\n </div>\n @for (item of listPageDisplay(); track item.key;) {\n <div class=\"libs-ui-components-pagination-item libs-ui-font-h3m\" [class.libs-ui-components-pagination-active]=\"item.key === currentPage()+''\"\n [class.libs-ui-disable]=\"disable()\" (click)=\"selectPage($event,item)\">\n {{ item.value }}\n </div>\n }\n @empty {\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px] flex shrink-0\">\n {{ 'i18n_no_data_yet' | translate }}\n </div>\n }\n <div class=\"libs-ui-components-pagination-item !p-[6px] pagination-button\"\n [class.libs-ui-disable]=\"currentPage() >= totalPage() || disable()\"\n (click)=\"nextPage($event)\">\n <i class=\"libs-ui-icon-chevron-right libs-ui-font-h2r pl-[14px] pr-[6p]x\"></i>\n </div>\n </div>\n <div class=\"flex shrink-0 h-full items-center mt-[16px]\">\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px]\">\n {{ 'i18n_value_sum_page' | translate : {value: totalPage()} }}\n </div>\n @if (showInputPage()) {\n <div class=\"h-[16px] w-[1px] bg-[#CDD0D6]\"></div>\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px] flex shrink-0\">\n {{ 'i18n_go_to' | translate }}\n </div>\n <div class=\"w-[60px] mr-[12px] shrink-0\">\n <libs_ui-components-inputs-input [dataType]=\"'int'\" classInclude=\"!rounded-[6px]\"\n [maxValueNumber]=\"totalPage()\" [emitEmptyInDataTypeNumber]=\"true\" [defaultHeight]=\"28\"\n [value]=\"inputPageNumber() || ''\" (outChange)=\"changePage($event)\"\n (outEnterEvent)=\"handlerEnterInput()\" [disable]=\"disable() || totalPage() <= 5\" />\n </div>\n }\n </div>\n</div>\n", styles: [":host{width:100%}.libs-ui-components-pagination-item{color:#1c1f22;display:flex;flex-shrink:0;align-items:center;justify-content:center;padding:4px 12px;cursor:pointer}.libs-ui-components-pagination-item [class^=mo-svg-font]:before{color:#1c1f22;font-size:var(--mo-heading-4-size)!important}.libs-ui-components-pagination-item.page-active{color:var(--libs-ui-color-default)}.libs-ui-components-pagination-item.page-active [class^=mo-svg-font]:before{color:var(--libs-ui-color-default)}.libs-ui-components-pagination-item.page-disable{color:#cdd0d6!important;pointer-events:none}.libs-ui-components-pagination-item.page-disable [class^=mo-svg-font]:before{color:#cdd0d6!important}.pagination-button{color:#6a7383}.pagination-button [class^=mo-svg-font]:before{color:#6a7383}\n"] }]
|
|
142
|
+
}], ctorParameters: () => [] });
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Generated bundle index. Do not edit.
|
|
146
|
+
*/
|
|
147
|
+
|
|
148
|
+
export { LibsCoreUIComponentsPaginationComponent };
|
|
149
|
+
//# sourceMappingURL=libs-ui-components-pagination.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"libs-ui-components-pagination.mjs","sources":["../../../../../libs-ui/components/pagination/src/pagination.component.ts","../../../../../libs-ui/components/pagination/src/pagination.component.html","../../../../../libs-ui/components/pagination/src/libs-ui-components-pagination.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, model, output, signal, untracked } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { LibsUiComponentsInputsInputComponent } from \"@libs-ui/components-inputs-input\";\nimport { TranslateProviderConfig } from \"@libs-ui/services-translate\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { debounceTime, Subject } from \"rxjs\";\nimport { isNil } from \"@libs-ui/utils\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-pagination',\n templateUrl: './pagination.component.html',\n styleUrl: './pagination.component.scss',\n standalone: true,\n imports: [TranslateModule, LibsUiComponentsInputsInputComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TranslateProviderConfig]\n})\nexport class LibsCoreUIComponentsPaginationComponent {\n private isEnterSearch = signal(false);\n protected listPageDisplay = signal<Array<{ key: string; value: string }>>([]);\n protected inputPageNumber = signal<number | undefined>(undefined);\n protected totalPage = signal<number>(0);\n private readonly onChangeValue = new Subject<number>();\n\n readonly showInputPage = input<boolean>(false);\n readonly classInclude = input<string>();\n readonly disable = input<boolean>();\n readonly maxPageShowDisplay = input<number,number|undefined >(5, {transform: (value) => value || 5});\n readonly totalItems = input.required<number>();\n readonly perPage = input.required<number>();\n readonly currentPage = model.required<number>();\n\n readonly outPageSelect = output<number>();\n private readonly destroyRef = inject(DestroyRef);\n constructor() {\n effect(() => {\n if(!isNil(this.currentPage()) && !isNil(this.totalItems()) && !isNil(this.perPage())){\n untracked(() => {\n this.renderPagination();\n if (this.totalPage() && this.currentPage() >= this.totalPage()) {\n this.changeInputSearch(this.totalPage());\n }\n });\n }\n });\n this.onChangeValue.pipe(debounceTime(1500), takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\n if (this.isEnterSearch()) {\n this.isEnterSearch.set(false);\n return;\n }\n this.currentPage.set(value);\n this.outPageSelect.emit(this.currentPage());\n });\n }\n \n private renderPagination() {\n if (this.perPage() > 0 && !isNil(this.totalItems())) {\n this.totalPage.set(Math.ceil(this.totalItems() / this.perPage()));\n }\n this.listPageDisplay.set([]);\n\n if (this.totalPage() <= this.maxPageShowDisplay()) {\n this.listPageDisplay.set(Array.from({ length: this.totalPage() }, (_, index) => {\n return { key: `${index + 1}`, value: `${index + 1}` };\n }));\n\n return;\n }\n\n if (this.currentPage() < 4) {\n this.listPageDisplay.set(Array.from({ length: this.maxPageShowDisplay() }, (_, index) => {\n return { key: `${index + 1}`, value: `${index + 1}` };\n }));\n\n return;\n }\n\n const divNumber = this.totalPage() - this.currentPage();\n\n if (divNumber === 0) {\n this.listPageDisplay.update(listPage => {\n listPage.push({ key: `${this.currentPage() - 4}`, value: `${this.currentPage() - 4}` });\n listPage.push({ key: `${this.currentPage() - 3}`, value: `${this.currentPage() - 3}` });\n\n return [...listPage];\n });\n }\n\n if (divNumber === 1) {\n this.listPageDisplay.update(listPage => {\n listPage.push({ key: `${this.currentPage() - 3}`, value: `${this.currentPage() - 3}` });\n\n return [...listPage];\n });\n }\n\n\n this.listPageDisplay.update(listPage => {\n listPage.push({ key: `${this.currentPage() - 2}`, value: `${this.currentPage() - 2}` });\n listPage.push({ key: `${this.currentPage() - 1}`, value: `${this.currentPage() - 1}` });\n listPage.push({ key: `${this.currentPage()}`, value: `${this.currentPage()}` });\n\n return [...listPage];\n });\n const addNumber = this.totalPage() - this.currentPage() > 2 ? 2 : this.totalPage() - this.currentPage();\n for (let i = 1; i <= addNumber; i++) {\n this.listPageDisplay.update(listPage => {\n listPage.push({ key: `${this.currentPage() + i}`, value: `${this.currentPage() + i}` });\n\n return [...listPage];\n });\n }\n }\n\n protected selectPage(e: Event, item: { key: string; value: string }) {\n e.stopPropagation();\n this.currentPage.set(+item.key);\n this.outPageSelect.emit(this.currentPage());\n this.renderPagination();\n }\n\n protected nextPage(e: Event) {\n e.stopPropagation();\n if (this.currentPage() < this.totalPage()) {\n this.currentPage.update(currentPage => currentPage + 1);\n this.outPageSelect.emit(this.currentPage());\n this.renderPagination();\n }\n }\n\n protected prePage(e: Event) {\n e.stopPropagation();\n if (this.currentPage() > 1) {\n this.currentPage.update(currentPage => currentPage - 1);\n this.outPageSelect.emit(this.currentPage());\n this.renderPagination();\n }\n }\n\n protected changePage(value: string | number) {\n value = value as number;\n if (!value) {\n this.inputPageNumber.set(undefined);\n return;\n }\n this.inputPageNumber.set(value);\n this.onChangeValue.next(value);\n }\n\n protected handlerEnterInput() {\n if (!this.inputPageNumber()) {\n return;\n }\n this.isEnterSearch.set(true);\n this.changeInputSearch(this.inputPageNumber() as number);\n }\n\n private changeInputSearch(value: number) {\n if (value >= 1 && value <= this.totalPage() && value !== this.currentPage()) {\n this.currentPage.set(value);\n this.outPageSelect.emit(this.currentPage());\n this.renderPagination();\n }\n }\n}","<div class=\"flex flex-col items-center flex-wrap w-full justify-center {{ classInclude() ?? '' }}\">\n <div class=\"flex shrink-0 h-full items-center\">\n <div class=\"libs-ui-components-pagination-item !pr-[6px] pagination-button\" [class.libs-ui-disable]=\"currentPage() <=1 || totalPage() <=1 || disable()\"\n (click)=\"prePage($event)\">\n <i class=\"libs-ui-icon-chevron-right libs-ui-font-h2r rotate-[180deg] pl-[6px] pr-[14px]\"></i>\n </div>\n @for (item of listPageDisplay(); track item.key;) {\n <div class=\"libs-ui-components-pagination-item libs-ui-font-h3m\" [class.libs-ui-components-pagination-active]=\"item.key === currentPage()+''\"\n [class.libs-ui-disable]=\"disable()\" (click)=\"selectPage($event,item)\">\n {{ item.value }}\n </div>\n }\n @empty {\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px] flex shrink-0\">\n {{ 'i18n_no_data_yet' | translate }}\n </div>\n }\n <div class=\"libs-ui-components-pagination-item !p-[6px] pagination-button\"\n [class.libs-ui-disable]=\"currentPage() >= totalPage() || disable()\"\n (click)=\"nextPage($event)\">\n <i class=\"libs-ui-icon-chevron-right libs-ui-font-h2r pl-[14px] pr-[6p]x\"></i>\n </div>\n </div>\n <div class=\"flex shrink-0 h-full items-center mt-[16px]\">\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px]\">\n {{ 'i18n_value_sum_page' | translate : {value: totalPage()} }}\n </div>\n @if (showInputPage()) {\n <div class=\"h-[16px] w-[1px] bg-[#CDD0D6]\"></div>\n <div class=\"libs-ui-font-h5m text-[#9CA2AD] mx-[12px] flex shrink-0\">\n {{ 'i18n_go_to' | translate }}\n </div>\n <div class=\"w-[60px] mr-[12px] shrink-0\">\n <libs_ui-components-inputs-input [dataType]=\"'int'\" classInclude=\"!rounded-[6px]\"\n [maxValueNumber]=\"totalPage()\" [emitEmptyInDataTypeNumber]=\"true\" [defaultHeight]=\"28\"\n [value]=\"inputPageNumber() || ''\" (outChange)=\"changePage($event)\"\n (outEnterEvent)=\"handlerEnterInput()\" [disable]=\"disable() || totalPage() <= 5\" />\n </div>\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './pagination.component';
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@libs-ui/components-pagination",
|
|
3
|
+
"version": "0.2.260",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^18.2.0",
|
|
6
|
+
"@angular/core": "^18.2.0"
|
|
7
|
+
},
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"module": "fesm2022/libs-ui-components-pagination.mjs",
|
|
10
|
+
"typings": "index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
"./package.json": {
|
|
13
|
+
"default": "./package.json"
|
|
14
|
+
},
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./index.d.ts",
|
|
17
|
+
"esm2022": "./esm2022/libs-ui-components-pagination.mjs",
|
|
18
|
+
"esm": "./esm2022/libs-ui-components-pagination.mjs",
|
|
19
|
+
"default": "./fesm2022/libs-ui-components-pagination.mjs"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"tslib": "^2.3.0"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class LibsCoreUIComponentsPaginationComponent {
|
|
3
|
+
private isEnterSearch;
|
|
4
|
+
protected listPageDisplay: import("@angular/core").WritableSignal<{
|
|
5
|
+
key: string;
|
|
6
|
+
value: string;
|
|
7
|
+
}[]>;
|
|
8
|
+
protected inputPageNumber: import("@angular/core").WritableSignal<number | undefined>;
|
|
9
|
+
protected totalPage: import("@angular/core").WritableSignal<number>;
|
|
10
|
+
private readonly onChangeValue;
|
|
11
|
+
readonly showInputPage: import("@angular/core").InputSignal<boolean>;
|
|
12
|
+
readonly classInclude: import("@angular/core").InputSignal<string | undefined>;
|
|
13
|
+
readonly disable: import("@angular/core").InputSignal<boolean | undefined>;
|
|
14
|
+
readonly maxPageShowDisplay: import("@angular/core").InputSignalWithTransform<number, number | undefined>;
|
|
15
|
+
readonly totalItems: import("@angular/core").InputSignal<number>;
|
|
16
|
+
readonly perPage: import("@angular/core").InputSignal<number>;
|
|
17
|
+
readonly currentPage: import("@angular/core").ModelSignal<number>;
|
|
18
|
+
readonly outPageSelect: import("@angular/core").OutputEmitterRef<number>;
|
|
19
|
+
private readonly destroyRef;
|
|
20
|
+
constructor();
|
|
21
|
+
private renderPagination;
|
|
22
|
+
protected selectPage(e: Event, item: {
|
|
23
|
+
key: string;
|
|
24
|
+
value: string;
|
|
25
|
+
}): void;
|
|
26
|
+
protected nextPage(e: Event): void;
|
|
27
|
+
protected prePage(e: Event): void;
|
|
28
|
+
protected changePage(value: string | number): void;
|
|
29
|
+
protected handlerEnterInput(): void;
|
|
30
|
+
private changeInputSearch;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LibsCoreUIComponentsPaginationComponent, never>;
|
|
32
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LibsCoreUIComponentsPaginationComponent, "libs_ui-components-pagination", never, { "showInputPage": { "alias": "showInputPage"; "required": false; "isSignal": true; }; "classInclude": { "alias": "classInclude"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "maxPageShowDisplay": { "alias": "maxPageShowDisplay"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": true; "isSignal": true; }; "perPage": { "alias": "perPage"; "required": true; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": true; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "outPageSelect": "outPageSelect"; }, never, never, true, never>;
|
|
33
|
+
}
|