@sebgroup/green-angular 1.0.4 → 1.2.0
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/esm2020/index.mjs +3 -1
- package/esm2020/lib/accordion/accordion-list-item.component.mjs +3 -3
- package/esm2020/lib/accordion/accordion.component.mjs +3 -3
- package/esm2020/lib/accordion/accordion.module.mjs +5 -5
- package/esm2020/lib/badge/badge.component.mjs +12 -12
- package/esm2020/lib/badge/badge.module.mjs +5 -5
- package/esm2020/lib/button/button.component.mjs +3 -3
- package/esm2020/lib/button/button.module.mjs +5 -5
- package/esm2020/lib/datepicker/datepicker.component.mjs +32 -32
- package/esm2020/lib/datepicker/datepicker.module.mjs +5 -5
- package/esm2020/lib/dropdown/dropdown-option.directive.mjs +3 -3
- package/esm2020/lib/dropdown/dropdown.component.mjs +21 -21
- package/esm2020/lib/dropdown/dropdown.module.mjs +5 -5
- package/esm2020/lib/green-angular.module.mjs +12 -8
- package/esm2020/lib/modal/modal.component.mjs +23 -23
- package/esm2020/lib/modal/modal.module.mjs +5 -5
- package/esm2020/lib/pagination/index.mjs +3 -0
- package/esm2020/lib/pagination/pagination.component.mjs +175 -0
- package/esm2020/lib/pagination/pagination.module.mjs +18 -0
- package/esm2020/lib/progress-circle/progress-circle.component.mjs +12 -19
- package/esm2020/lib/progress-circle/progress-circle.module.mjs +5 -5
- package/esm2020/lib/segmented-control/segmented-control.component.mjs +9 -14
- package/esm2020/lib/segmented-control/segmented-control.module.mjs +5 -5
- package/esm2020/lib/slider/index.mjs +3 -0
- package/esm2020/lib/slider/slider.component.mjs +108 -0
- package/esm2020/lib/slider/slider.module.mjs +19 -0
- package/fesm2015/sebgroup-green-angular.mjs +482 -188
- package/fesm2015/sebgroup-green-angular.mjs.map +1 -1
- package/fesm2020/sebgroup-green-angular.mjs +478 -185
- package/fesm2020/sebgroup-green-angular.mjs.map +1 -1
- package/index.d.ts +2 -0
- package/lib/accordion/accordion-list-item.component.d.ts +1 -1
- package/lib/accordion/accordion.component.d.ts +1 -1
- package/lib/badge/badge.component.d.ts +1 -1
- package/lib/button/button.component.d.ts +1 -1
- package/lib/datepicker/datepicker.component.d.ts +1 -1
- package/lib/dropdown/dropdown-option.directive.d.ts +1 -1
- package/lib/dropdown/dropdown.component.d.ts +1 -1
- package/lib/green-angular.module.d.ts +2 -1
- package/lib/modal/modal.component.d.ts +4 -4
- package/lib/pagination/index.d.ts +2 -0
- package/lib/pagination/pagination.component.d.ts +42 -0
- package/lib/pagination/pagination.module.d.ts +8 -0
- package/lib/progress-circle/progress-circle.component.d.ts +2 -3
- package/lib/segmented-control/segmented-control.component.d.ts +1 -1
- package/lib/slider/index.d.ts +2 -0
- package/lib/slider/slider.component.d.ts +36 -0
- package/lib/slider/slider.module.d.ts +9 -0
- package/package.json +5 -5
- package/sebgroup-green-angular.d.ts +0 -5
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, } from '@angular/core';
|
|
2
|
+
import { PaginationI18n, } from '@sebgroup/extract';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class NggPaginationComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
/** Internationalization labels */
|
|
8
|
+
this.i18n = PaginationI18n;
|
|
9
|
+
/** Rendered size */
|
|
10
|
+
this.size = 'small';
|
|
11
|
+
/** Amount of pages to be displayed between the first and last */
|
|
12
|
+
this.displayPages = 5;
|
|
13
|
+
/** Total amount of items to be paginated */
|
|
14
|
+
this.length = 0;
|
|
15
|
+
/** Displayed items per page */
|
|
16
|
+
this.pageSize = 10;
|
|
17
|
+
this._pageIndex = 0;
|
|
18
|
+
this._pageIndicies = [];
|
|
19
|
+
/** Event emitted when a new page index is selected */
|
|
20
|
+
this.page = new EventEmitter();
|
|
21
|
+
}
|
|
22
|
+
/** The zero-based page index of the displayed list of pages. Defaulted to 0. */
|
|
23
|
+
get pageIndex() {
|
|
24
|
+
return this._pageIndex;
|
|
25
|
+
}
|
|
26
|
+
set pageIndex(value) {
|
|
27
|
+
this._pageIndex = Math.max(value, 0);
|
|
28
|
+
}
|
|
29
|
+
/** All centric page indicies to be displayed. */
|
|
30
|
+
get pageIndicies() {
|
|
31
|
+
return this._pageIndicies;
|
|
32
|
+
}
|
|
33
|
+
get totalPages() {
|
|
34
|
+
if (!this.pageSize) {
|
|
35
|
+
return 0;
|
|
36
|
+
}
|
|
37
|
+
return Math.ceil(this.length / this.pageSize);
|
|
38
|
+
}
|
|
39
|
+
ngOnChanges(changes) {
|
|
40
|
+
if (changes.displayPages ||
|
|
41
|
+
changes.pageIndex ||
|
|
42
|
+
changes.pageSize ||
|
|
43
|
+
changes.length) {
|
|
44
|
+
this._pageIndicies = this.getDisplayedPageIndicies();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
hasPrevious() {
|
|
48
|
+
return this.pageIndex >= 1;
|
|
49
|
+
}
|
|
50
|
+
hasNext() {
|
|
51
|
+
return this.pageIndex < this.totalPages - 1;
|
|
52
|
+
}
|
|
53
|
+
gotoFirst() {
|
|
54
|
+
if (!this.hasPrevious()) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const previous = this.pageIndex;
|
|
58
|
+
this.pageIndex = 0;
|
|
59
|
+
this.emit(previous);
|
|
60
|
+
}
|
|
61
|
+
gotoLast() {
|
|
62
|
+
if (!this.hasNext()) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const previous = this.pageIndex;
|
|
66
|
+
this.pageIndex = this.totalPages - 1;
|
|
67
|
+
this.emit(previous);
|
|
68
|
+
}
|
|
69
|
+
gotoPrevious() {
|
|
70
|
+
if (!this.hasPrevious()) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const previous = this.pageIndex;
|
|
74
|
+
this.pageIndex = previous - 1;
|
|
75
|
+
this.emit(previous);
|
|
76
|
+
}
|
|
77
|
+
gotoNext() {
|
|
78
|
+
if (!this.hasNext()) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const previous = this.pageIndex;
|
|
82
|
+
this.pageIndex = previous + 1;
|
|
83
|
+
this.emit(previous);
|
|
84
|
+
}
|
|
85
|
+
goto(index) {
|
|
86
|
+
if (index === this.pageIndex || index < 0 || index >= this.totalPages) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const previous = this.pageIndex;
|
|
90
|
+
this.pageIndex = index;
|
|
91
|
+
this.emit(previous);
|
|
92
|
+
}
|
|
93
|
+
emit(previous) {
|
|
94
|
+
this._pageIndicies = this.getDisplayedPageIndicies();
|
|
95
|
+
this.page.emit({ pageIndex: this.pageIndex, previousPageIndex: previous });
|
|
96
|
+
}
|
|
97
|
+
getDisplayedPageIndicies() {
|
|
98
|
+
// Do not render
|
|
99
|
+
if (this.totalPages <= 1) {
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
// All pages can fit
|
|
103
|
+
if (this.totalPages <= this.displayPages)
|
|
104
|
+
return [...Array(this.totalPages - 2).keys()].map((index) => index + 1);
|
|
105
|
+
// Only first & last
|
|
106
|
+
if (this.totalPages === 2)
|
|
107
|
+
return [];
|
|
108
|
+
return this.getCenteredPageIndicies();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Find X (displayPages) amount of page indicies that are centered from the currently selected page index,
|
|
112
|
+
* but exclude the first and last indicies if they are within the range.
|
|
113
|
+
*/
|
|
114
|
+
getCenteredPageIndicies() {
|
|
115
|
+
const pages = [];
|
|
116
|
+
if (this.pageIndex === 0) {
|
|
117
|
+
pages.push(this.pageIndex + 1);
|
|
118
|
+
}
|
|
119
|
+
else if (this.pageIndex === this.totalPages - 1) {
|
|
120
|
+
pages.push(this.pageIndex - 1);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
pages.push(this.pageIndex);
|
|
124
|
+
}
|
|
125
|
+
const addAfter = () => {
|
|
126
|
+
const next = pages[pages.length - 1] + 1;
|
|
127
|
+
if (next < this.totalPages - 1 && counter > 0) {
|
|
128
|
+
pages.push(next);
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
return false;
|
|
132
|
+
};
|
|
133
|
+
const addBefore = () => {
|
|
134
|
+
const previous = pages[0] - 1;
|
|
135
|
+
if (previous > 0 && counter > 0) {
|
|
136
|
+
pages.unshift(previous);
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
return false;
|
|
140
|
+
};
|
|
141
|
+
let counter = this.displayPages - 1;
|
|
142
|
+
while (counter > 0) {
|
|
143
|
+
const addedAfter = addAfter();
|
|
144
|
+
if (addedAfter)
|
|
145
|
+
counter--;
|
|
146
|
+
const addedBefore = addBefore();
|
|
147
|
+
if (addedBefore)
|
|
148
|
+
counter--;
|
|
149
|
+
if (!addedAfter && !addedBefore)
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
return pages;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
NggPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
156
|
+
NggPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NggPaginationComponent, selector: "ngg-pagination", inputs: { i18n: "i18n", size: "size", displayPages: "displayPages", length: "length", pageSize: "pageSize", pageIndex: "pageIndex" }, outputs: { page: "page" }, usesOnChanges: true, ngImport: i0, template: "<nav\n [class]=\"'pagination ' + size\"\n role=\"navigation\"\n [attr.aria-label]=\"i18n.paginationLabel\"\n *ngIf=\"totalPages > 1\"\n>\n <ul class=\"gds-reset\">\n <li *ngIf=\"hasPrevious()\">\n <a\n class=\"gds-reset\"\n tabindex=\"0\"\n (click)=\"gotoPrevious()\"\n [attr.aria-label]=\"i18n.previousPageLabel\"\n role=\"button\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"\n />\n </svg>\n </a>\n </li>\n\n <li>\n <a\n class=\"gds-reset\"\n tabindex=\"0\"\n (click)=\"gotoFirst()\"\n [attr.aria-current]=\"pageIndex === 0 ? 'page' : null\"\n [attr.aria-label]=\"i18n.firstPageLabel\"\n role=\"button\"\n >\n 1\n </a>\n </li>\n <li *ngIf=\"pageIndicies[0] > 1\" aria-hidden=\"true\">...</li>\n\n <li *ngFor=\"let index of pageIndicies\">\n <a\n class=\"gds-reset\"\n tabindex=\"0\"\n (click)=\"goto(index)\"\n [attr.aria-current]=\"pageIndex === index ? 'page' : null\"\n [attr.aria-label]=\"i18n.getPageLabel(index)\"\n role=\"button\"\n >\n {{ index + 1 }}\n </a>\n </li>\n\n <li\n *ngIf=\"pageIndicies[pageIndicies.length - 1] < totalPages - 2\"\n aria-hidden=\"true\"\n >\n ...\n </li>\n\n <li>\n <a\n class=\"gds-reset\"\n tabindex=\"0\"\n (click)=\"gotoLast()\"\n [attr.aria-current]=\"pageIndex === totalPages - 1 ? 'page' : null\"\n [attr.aria-label]=\"i18n.lastPageLabel\"\n role=\"button\"\n >\n {{ totalPages }}\n </a>\n </li>\n <li *ngIf=\"hasNext()\">\n <a\n class=\"gds-reset\"\n tabindex=\"0\"\n (click)=\"gotoNext()\"\n [attr.aria-label]=\"i18n.nextPageLabel\"\n role=\"button\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\n />\n </svg>\n </a>\n </li>\n </ul>\n</nav>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggPaginationComponent, decorators: [{
|
|
158
|
+
type: Component,
|
|
159
|
+
args: [{ selector: 'ngg-pagination', changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav\n [class]=\"'pagination ' + size\"\n role=\"navigation\"\n [attr.aria-label]=\"i18n.paginationLabel\"\n *ngIf=\"totalPages > 1\"\n>\n <ul class=\"gds-reset\">\n <li *ngIf=\"hasPrevious()\">\n <a\n class=\"gds-reset\"\n tabindex=\"0\"\n (click)=\"gotoPrevious()\"\n [attr.aria-label]=\"i18n.previousPageLabel\"\n role=\"button\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"\n />\n </svg>\n </a>\n </li>\n\n <li>\n <a\n class=\"gds-reset\"\n tabindex=\"0\"\n (click)=\"gotoFirst()\"\n [attr.aria-current]=\"pageIndex === 0 ? 'page' : null\"\n [attr.aria-label]=\"i18n.firstPageLabel\"\n role=\"button\"\n >\n 1\n </a>\n </li>\n <li *ngIf=\"pageIndicies[0] > 1\" aria-hidden=\"true\">...</li>\n\n <li *ngFor=\"let index of pageIndicies\">\n <a\n class=\"gds-reset\"\n tabindex=\"0\"\n (click)=\"goto(index)\"\n [attr.aria-current]=\"pageIndex === index ? 'page' : null\"\n [attr.aria-label]=\"i18n.getPageLabel(index)\"\n role=\"button\"\n >\n {{ index + 1 }}\n </a>\n </li>\n\n <li\n *ngIf=\"pageIndicies[pageIndicies.length - 1] < totalPages - 2\"\n aria-hidden=\"true\"\n >\n ...\n </li>\n\n <li>\n <a\n class=\"gds-reset\"\n tabindex=\"0\"\n (click)=\"gotoLast()\"\n [attr.aria-current]=\"pageIndex === totalPages - 1 ? 'page' : null\"\n [attr.aria-label]=\"i18n.lastPageLabel\"\n role=\"button\"\n >\n {{ totalPages }}\n </a>\n </li>\n <li *ngIf=\"hasNext()\">\n <a\n class=\"gds-reset\"\n tabindex=\"0\"\n (click)=\"gotoNext()\"\n [attr.aria-label]=\"i18n.nextPageLabel\"\n role=\"button\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\n />\n </svg>\n </a>\n </li>\n </ul>\n</nav>\n" }]
|
|
160
|
+
}], propDecorators: { i18n: [{
|
|
161
|
+
type: Input
|
|
162
|
+
}], size: [{
|
|
163
|
+
type: Input
|
|
164
|
+
}], displayPages: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], length: [{
|
|
167
|
+
type: Input
|
|
168
|
+
}], pageSize: [{
|
|
169
|
+
type: Input
|
|
170
|
+
}], pageIndex: [{
|
|
171
|
+
type: Input
|
|
172
|
+
}], page: [{
|
|
173
|
+
type: Output
|
|
174
|
+
}] } });
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEdBR3hCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFHTCxjQUFjLEdBRWYsTUFBTSxtQkFBbUIsQ0FBQTs7O0FBTzFCLE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFNRSxrQ0FBa0M7UUFDekIsU0FBSSxHQUFvQixjQUFjLENBQUE7UUFFL0Msb0JBQW9CO1FBQ1gsU0FBSSxHQUFtQixPQUFPLENBQUE7UUFFdkMsa0VBQWtFO1FBQ3pELGlCQUFZLEdBQUcsQ0FBQyxDQUFBO1FBRXpCLDRDQUE0QztRQUNuQyxXQUFNLEdBQUcsQ0FBQyxDQUFBO1FBRW5CLCtCQUErQjtRQUN0QixhQUFRLEdBQUcsRUFBRSxDQUFBO1FBVWQsZUFBVSxHQUFHLENBQUMsQ0FBQTtRQU1kLGtCQUFhLEdBQWEsRUFBRSxDQUFBO1FBVXBDLHNEQUFzRDtRQUM1QyxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUE7S0FvSXREO0lBN0pDLGdGQUFnRjtJQUNoRixJQUNJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUE7SUFDeEIsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBR0QsaURBQWlE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QUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUYsU0FBUztzQkFEWixLQUFLO2dCQXdCSSxJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIElQYWdpbmF0aW9uRXZlbnQsXG4gIElQYWdpbmF0aW9uSTE4bixcbiAgUGFnaW5hdGlvbkkxOG4sXG4gIFBhZ2luYXRpb25TaXplLFxufSBmcm9tICdAc2ViZ3JvdXAvZXh0cmFjdCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdnLXBhZ2luYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqIEludGVybmF0aW9uYWxpemF0aW9uIGxhYmVscyAqL1xuICBASW5wdXQoKSBpMThuOiBJUGFnaW5hdGlvbkkxOG4gPSBQYWdpbmF0aW9uSTE4blxuXG4gIC8qKiBSZW5kZXJlZCBzaXplICovXG4gIEBJbnB1dCgpIHNpemU6IFBhZ2luYXRpb25TaXplID0gJ3NtYWxsJ1xuXG4gIC8qKiBBbW91bnQgb2YgcGFnZXMgdG8gYmUgZGlzcGxheWVkIGJldHdlZW4gdGhlIGZpcnN0IGFuZCBsYXN0ICAqL1xuICBASW5wdXQoKSBkaXNwbGF5UGFnZXMgPSA1XG5cbiAgLyoqIFRvdGFsIGFtb3VudCBvZiBpdGVtcyB0byBiZSBwYWdpbmF0ZWQgKi9cbiAgQElucHV0KCkgbGVuZ3RoID0gMFxuXG4gIC8qKiBEaXNwbGF5ZWQgaXRlbXMgcGVyIHBhZ2UgKi9cbiAgQElucHV0KCkgcGFnZVNpemUgPSAxMFxuXG4gIC8qKiBUaGUgemVyby1iYXNlZCBwYWdlIGluZGV4IG9mIHRoZSBkaXNwbGF5ZWQgbGlzdCBvZiBwYWdlcy4gRGVmYXVsdGVkIHRvIDAuICovXG4gIEBJbnB1dCgpXG4gIGdldCBwYWdlSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUluZGV4XG4gIH1cbiAgc2V0IHBhZ2VJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGFnZUluZGV4ID0gTWF0aC5tYXgodmFsdWUsIDApXG4gIH1cbiAgcHJpdmF0ZSBfcGFnZUluZGV4ID0gMFxuXG4gIC8qKiBBbGwgY2VudHJpYyBwYWdlIGluZGljaWVzIHRvIGJlIGRpc3BsYXllZC4gKi9cbiAgZ2V0IHBhZ2VJbmRpY2llcygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VJbmRpY2llc1xuICB9XG4gIHByaXZhdGUgX3BhZ2VJbmRpY2llczogbnVtYmVyW10gPSBbXVxuXG4gIGdldCB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnBhZ2VTaXplKSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5sZW5ndGggLyB0aGlzLnBhZ2VTaXplKVxuICB9XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIG5ldyBwYWdlIGluZGV4IGlzIHNlbGVjdGVkICovXG4gIEBPdXRwdXQoKSBwYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUGFnaW5hdGlvbkV2ZW50PigpXG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXMuZGlzcGxheVBhZ2VzIHx8XG4gICAgICBjaGFuZ2VzLnBhZ2VJbmRleCB8fFxuICAgICAgY2hhbmdlcy5wYWdlU2l6ZSB8fFxuICAgICAgY2hhbmdlcy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHRoaXMuX3BhZ2VJbmRpY2llcyA9IHRoaXMuZ2V0RGlzcGxheWVkUGFnZUluZGljaWVzKClcbiAgICB9XG4gIH1cblxuICBoYXNQcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlSW5kZXggPj0gMVxuICB9XG5cbiAgaGFzTmV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlSW5kZXggPCB0aGlzLnRvdGFsUGFnZXMgLSAxXG4gIH1cblxuICBnb3RvRmlyc3QoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmhhc1ByZXZpb3VzKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMucGFnZUluZGV4XG4gICAgdGhpcy5wYWdlSW5kZXggPSAwXG4gICAgdGhpcy5lbWl0KHByZXZpb3VzKVxuICB9XG5cbiAgZ290b0xhc3QoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmhhc05leHQoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5wYWdlSW5kZXhcbiAgICB0aGlzLnBhZ2VJbmRleCA9IHRoaXMudG90YWxQYWdlcyAtIDFcbiAgICB0aGlzLmVtaXQocHJldmlvdXMpXG4gIH1cblxuICBnb3RvUHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmhhc1ByZXZpb3VzKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMucGFnZUluZGV4XG4gICAgdGhpcy5wYWdlSW5kZXggPSBwcmV2aW91cyAtIDFcbiAgICB0aGlzLmVtaXQocHJldmlvdXMpXG4gIH1cblxuICBnb3RvTmV4dCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaGFzTmV4dCgpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLnBhZ2VJbmRleFxuICAgIHRoaXMucGFnZUluZGV4ID0gcHJldmlvdXMgKyAxXG4gICAgdGhpcy5lbWl0KHByZXZpb3VzKVxuICB9XG5cbiAgZ290byhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGluZGV4ID09PSB0aGlzLnBhZ2VJbmRleCB8fCBpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLnBhZ2VJbmRleFxuICAgIHRoaXMucGFnZUluZGV4ID0gaW5kZXhcbiAgICB0aGlzLmVtaXQocHJldmlvdXMpXG4gIH1cblxuICBwcml2YXRlIGVtaXQocHJldmlvdXM6IG51bWJlcikge1xuICAgIHRoaXMuX3BhZ2VJbmRpY2llcyA9IHRoaXMuZ2V0RGlzcGxheWVkUGFnZUluZGljaWVzKClcbiAgICB0aGlzLnBhZ2UuZW1pdCh7IHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXgsIHByZXZpb3VzUGFnZUluZGV4OiBwcmV2aW91cyB9KVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREaXNwbGF5ZWRQYWdlSW5kaWNpZXMoKTogbnVtYmVyW10ge1xuICAgIC8vIERvIG5vdCByZW5kZXJcbiAgICBpZiAodGhpcy50b3RhbFBhZ2VzIDw9IDEpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIC8vIEFsbCBwYWdlcyBjYW4gZml0XG4gICAgaWYgKHRoaXMudG90YWxQYWdlcyA8PSB0aGlzLmRpc3BsYXlQYWdlcylcbiAgICAgIHJldHVybiBbLi4uQXJyYXkodGhpcy50b3RhbFBhZ2VzIC0gMikua2V5cygpXS5tYXAoKGluZGV4KSA9PiBpbmRleCArIDEpXG5cbiAgICAvLyBPbmx5IGZpcnN0ICYgbGFzdFxuICAgIGlmICh0aGlzLnRvdGFsUGFnZXMgPT09IDIpIHJldHVybiBbXVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2VudGVyZWRQYWdlSW5kaWNpZXMoKVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgWCAoZGlzcGxheVBhZ2VzKSBhbW91bnQgb2YgcGFnZSBpbmRpY2llcyB0aGF0IGFyZSBjZW50ZXJlZCBmcm9tIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcGFnZSBpbmRleCxcbiAgICogYnV0IGV4Y2x1ZGUgdGhlIGZpcnN0IGFuZCBsYXN0IGluZGljaWVzIGlmIHRoZXkgYXJlIHdpdGhpbiB0aGUgcmFuZ2UuXG4gICAqL1xuICBwcml2YXRlIGdldENlbnRlcmVkUGFnZUluZGljaWVzKCk6IG51bWJlcltdIHtcbiAgICBjb25zdCBwYWdlczogbnVtYmVyW10gPSBbXVxuXG4gICAgaWYgKHRoaXMucGFnZUluZGV4ID09PSAwKSB7XG4gICAgICBwYWdlcy5wdXNoKHRoaXMucGFnZUluZGV4ICsgMSlcbiAgICB9IGVsc2UgaWYgKHRoaXMucGFnZUluZGV4ID09PSB0aGlzLnRvdGFsUGFnZXMgLSAxKSB7XG4gICAgICBwYWdlcy5wdXNoKHRoaXMucGFnZUluZGV4IC0gMSlcbiAgICB9IGVsc2Uge1xuICAgICAgcGFnZXMucHVzaCh0aGlzLnBhZ2VJbmRleClcbiAgICB9XG5cbiAgICBjb25zdCBhZGRBZnRlciA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG5leHQgPSBwYWdlc1twYWdlcy5sZW5ndGggLSAxXSArIDFcbiAgICAgIGlmIChuZXh0IDwgdGhpcy50b3RhbFBhZ2VzIC0gMSAmJiBjb3VudGVyID4gMCkge1xuICAgICAgICBwYWdlcy5wdXNoKG5leHQpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgY29uc3QgYWRkQmVmb3JlID0gKCkgPT4ge1xuICAgICAgY29uc3QgcHJldmlvdXMgPSBwYWdlc1swXSAtIDFcbiAgICAgIGlmIChwcmV2aW91cyA+IDAgJiYgY291bnRlciA+IDApIHtcbiAgICAgICAgcGFnZXMudW5zaGlmdChwcmV2aW91cylcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGxldCBjb3VudGVyID0gdGhpcy5kaXNwbGF5UGFnZXMgLSAxXG4gICAgd2hpbGUgKGNvdW50ZXIgPiAwKSB7XG4gICAgICBjb25zdCBhZGRlZEFmdGVyID0gYWRkQWZ0ZXIoKVxuICAgICAgaWYgKGFkZGVkQWZ0ZXIpIGNvdW50ZXItLVxuXG4gICAgICBjb25zdCBhZGRlZEJlZm9yZSA9IGFkZEJlZm9yZSgpXG4gICAgICBpZiAoYWRkZWRCZWZvcmUpIGNvdW50ZXItLVxuXG4gICAgICBpZiAoIWFkZGVkQWZ0ZXIgJiYgIWFkZGVkQmVmb3JlKSBicmVha1xuICAgIH1cblxuICAgIHJldHVybiBwYWdlc1xuICB9XG59XG4iLCI8bmF2XG4gIFtjbGFzc109XCIncGFnaW5hdGlvbiAnICsgc2l6ZVwiXG4gIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJpMThuLnBhZ2luYXRpb25MYWJlbFwiXG4gICpuZ0lmPVwidG90YWxQYWdlcyA+IDFcIlxuPlxuICA8dWwgY2xhc3M9XCJnZHMtcmVzZXRcIj5cbiAgICA8bGkgKm5nSWY9XCJoYXNQcmV2aW91cygpXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cImdkcy1yZXNldFwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIChjbGljayk9XCJnb3RvUHJldmlvdXMoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaTE4bi5wcmV2aW91c1BhZ2VMYWJlbFwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgPlxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDMyMCA1MTJcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk05LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE5MiAxOTJjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w3Ny4zIDI1NiAyNDYuNiA4Ni42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0xOTIgMTkyelwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2E+XG4gICAgPC9saT5cblxuICAgIDxsaT5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwiZ2RzLXJlc2V0XCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgKGNsaWNrKT1cImdvdG9GaXJzdCgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cInBhZ2VJbmRleCA9PT0gMCA/ICdwYWdlJyA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImkxOG4uZmlyc3RQYWdlTGFiZWxcIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgMVxuICAgICAgPC9hPlxuICAgIDwvbGk+XG4gICAgPGxpICpuZ0lmPVwicGFnZUluZGljaWVzWzBdID4gMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPi4uLjwvbGk+XG5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGluZGV4IG9mIHBhZ2VJbmRpY2llc1wiPlxuICAgICAgPGFcbiAgICAgICAgY2xhc3M9XCJnZHMtcmVzZXRcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAoY2xpY2spPVwiZ290byhpbmRleClcIlxuICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwicGFnZUluZGV4ID09PSBpbmRleCA/ICdwYWdlJyA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImkxOG4uZ2V0UGFnZUxhYmVsKGluZGV4KVwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgPlxuICAgICAgICB7eyBpbmRleCArIDEgfX1cbiAgICAgIDwvYT5cbiAgICA8L2xpPlxuXG4gICAgPGxpXG4gICAgICAqbmdJZj1cInBhZ2VJbmRpY2llc1twYWdlSW5kaWNpZXMubGVuZ3RoIC0gMV0gPCB0b3RhbFBhZ2VzIC0gMlwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIC4uLlxuICAgIDwvbGk+XG5cbiAgICA8bGk+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cImdkcy1yZXNldFwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIChjbGljayk9XCJnb3RvTGFzdCgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cInBhZ2VJbmRleCA9PT0gdG90YWxQYWdlcyAtIDEgPyAncGFnZScgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpMThuLmxhc3RQYWdlTGFiZWxcIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAge3sgdG90YWxQYWdlcyB9fVxuICAgICAgPC9hPlxuICAgIDwvbGk+XG4gICAgPGxpICpuZ0lmPVwiaGFzTmV4dCgpXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cImdkcy1yZXNldFwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIChjbGljayk9XCJnb3RvTmV4dCgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpMThuLm5leHRQYWdlTGFiZWxcIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAzMjAgNTEyXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMzEwLjYgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE5MiAxOTJjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0Mi43IDI1NiA3My40IDg2LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MnpcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9hPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L25hdj5cbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NggPaginationComponent } from './pagination.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class NggPaginationModule {
|
|
6
|
+
}
|
|
7
|
+
NggPaginationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggPaginationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
NggPaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.3", ngImport: i0, type: NggPaginationModule, declarations: [NggPaginationComponent], imports: [CommonModule], exports: [NggPaginationComponent] });
|
|
9
|
+
NggPaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggPaginationModule, imports: [CommonModule] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggPaginationModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
declarations: [NggPaginationComponent],
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
exports: [NggPaginationComponent],
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9wYWdpbmF0aW9uL3BhZ2luYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBOztBQU8vRCxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsaUJBSmYsc0JBQXNCLGFBQzNCLFlBQVksYUFDWixzQkFBc0I7aUhBRXJCLG1CQUFtQixZQUhwQixZQUFZOzJGQUdYLG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5cbmltcG9ydCB7IE5nZ1BhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuL3BhZ2luYXRpb24uY29tcG9uZW50J1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtOZ2dQYWdpbmF0aW9uQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtOZ2dQYWdpbmF0aW9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmdnUGFnaW5hdGlvbk1vZHVsZSB7fVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
-
import { randomId } from '@sebgroup/extract';
|
|
2
|
+
import { calculateDegrees, randomId, } from '@sebgroup/extract';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
5
5
|
export class NggProgressCircleComponent {
|
|
@@ -7,31 +7,24 @@ export class NggProgressCircleComponent {
|
|
|
7
7
|
this._startValue = '0deg';
|
|
8
8
|
this._endValue = '0deg';
|
|
9
9
|
/** id of the progress circle */
|
|
10
|
-
this.id =
|
|
10
|
+
this.id = `${randomId()}-progress-circle`;
|
|
11
11
|
/** theme of the progress circle */
|
|
12
12
|
this.theme = 'warning';
|
|
13
13
|
}
|
|
14
14
|
/** progress circle value in percentage */
|
|
15
|
-
set value(
|
|
16
|
-
const degrees =
|
|
17
|
-
this._endValue =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (percent > 100) {
|
|
21
|
-
return 180;
|
|
22
|
-
}
|
|
23
|
-
if (percent < 0) {
|
|
24
|
-
return 0;
|
|
15
|
+
set value(val) {
|
|
16
|
+
const degrees = `${calculateDegrees(val)}deg`;
|
|
17
|
+
this._endValue = degrees;
|
|
18
|
+
if (this.theme === 'disabled') {
|
|
19
|
+
this._startValue = degrees;
|
|
25
20
|
}
|
|
26
|
-
/** formula: ((n% * 360deg) / 100% ) / 2 */
|
|
27
|
-
return percent * 1.8;
|
|
28
21
|
}
|
|
29
22
|
}
|
|
30
|
-
NggProgressCircleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
31
|
-
NggProgressCircleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
23
|
+
NggProgressCircleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggProgressCircleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
24
|
+
NggProgressCircleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NggProgressCircleComponent, selector: "ngg-progress-circle", inputs: { id: "id", theme: "theme", value: "value" }, host: { properties: { "style.--start-value": "this._startValue", "style.--end-value": "this._endValue" } }, ngImport: i0, template: "<div\n class=\"gds-progress-circle\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"value\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-label]=\"id\"\n>\n <div class=\"ring full-ring\">\n <div class=\"ring-progress\" [ngClass]=\"theme\"></div>\n </div>\n <div class=\"ring\">\n <div class=\"ring-progress\" [ngClass]=\"theme\"></div>\n </div>\n <div class=\"inner-circle\">\n <ng-content></ng-content>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggProgressCircleComponent, decorators: [{
|
|
33
26
|
type: Component,
|
|
34
|
-
args: [{ selector: 'ngg-progress-circle', template: "<div\n class=\"
|
|
27
|
+
args: [{ selector: 'ngg-progress-circle', template: "<div\n class=\"gds-progress-circle\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"value\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-label]=\"id\"\n>\n <div class=\"ring full-ring\">\n <div class=\"ring-progress\" [ngClass]=\"theme\"></div>\n </div>\n <div class=\"ring\">\n <div class=\"ring-progress\" [ngClass]=\"theme\"></div>\n </div>\n <div class=\"inner-circle\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
|
|
35
28
|
}], propDecorators: { _startValue: [{
|
|
36
29
|
type: HostBinding,
|
|
37
30
|
args: ['style.--start-value']
|
|
@@ -45,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
45
38
|
}], value: [{
|
|
46
39
|
type: Input
|
|
47
40
|
}] } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtY2lyY2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL3Byb2dyZXNzLWNpcmNsZS9wcm9ncmVzcy1jaXJjbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvcHJvZ3Jlc3MtY2lyY2xlL3Byb2dyZXNzLWNpcmNsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0QsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixRQUFRLEdBQ1QsTUFBTSxtQkFBbUIsQ0FBQTs7O0FBTTFCLE1BQU0sT0FBTywwQkFBMEI7SUFKdkM7UUFLOEMsZ0JBQVcsR0FBRyxNQUFNLENBQUE7UUFDdEIsY0FBUyxHQUFHLE1BQU0sQ0FBQTtRQUU1RCxnQ0FBZ0M7UUFDdkIsT0FBRSxHQUFZLEdBQUcsUUFBUSxFQUFFLGtCQUFrQixDQUFBO1FBQ3RELG1DQUFtQztRQUMxQixVQUFLLEdBQXlCLFNBQVMsQ0FBQTtLQVNqRDtJQVJDLDBDQUEwQztJQUMxQyxJQUFhLEtBQUssQ0FBQyxHQUFXO1FBQzVCLE1BQU0sT0FBTyxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQTtRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQTtRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFO1lBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFBO1NBQzNCO0lBQ0gsQ0FBQzs7dUhBZlUsMEJBQTBCOzJHQUExQiwwQkFBMEIsNk5DWHZDLHlkQWtCQTsyRkRQYSwwQkFBMEI7a0JBSnRDLFNBQVM7K0JBQ0UscUJBQXFCOzhCQUlhLFdBQVc7c0JBQXRELFdBQVc7dUJBQUMscUJBQXFCO2dCQUNRLFNBQVM7c0JBQWxELFdBQVc7dUJBQUMsbUJBQW1CO2dCQUd2QixFQUFFO3NCQUFWLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVPLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBjYWxjdWxhdGVEZWdyZWVzLFxuICBQcm9ncmVzc0NpcmNsZVRoZW1lcyxcbiAgcmFuZG9tSWQsXG59IGZyb20gJ0BzZWJncm91cC9leHRyYWN0J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ctcHJvZ3Jlc3MtY2lyY2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2dyZXNzLWNpcmNsZS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE5nZ1Byb2dyZXNzQ2lyY2xlQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLXN0YXJ0LXZhbHVlJykgcHJpdmF0ZSBfc3RhcnRWYWx1ZSA9ICcwZGVnJ1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tZW5kLXZhbHVlJykgcHJpdmF0ZSBfZW5kVmFsdWUgPSAnMGRlZydcblxuICAvKiogaWQgb2YgdGhlIHByb2dyZXNzIGNpcmNsZSAqL1xuICBASW5wdXQoKSBpZD86IHN0cmluZyA9IGAke3JhbmRvbUlkKCl9LXByb2dyZXNzLWNpcmNsZWBcbiAgLyoqIHRoZW1lIG9mIHRoZSBwcm9ncmVzcyBjaXJjbGUgKi9cbiAgQElucHV0KCkgdGhlbWU6IFByb2dyZXNzQ2lyY2xlVGhlbWVzID0gJ3dhcm5pbmcnXG4gIC8qKiBwcm9ncmVzcyBjaXJjbGUgdmFsdWUgaW4gcGVyY2VudGFnZSAqL1xuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsOiBudW1iZXIpIHtcbiAgICBjb25zdCBkZWdyZWVzID0gYCR7Y2FsY3VsYXRlRGVncmVlcyh2YWwpfWRlZ2BcbiAgICB0aGlzLl9lbmRWYWx1ZSA9IGRlZ3JlZXNcbiAgICBpZiAodGhpcy50aGVtZSA9PT0gJ2Rpc2FibGVkJykge1xuICAgICAgdGhpcy5fc3RhcnRWYWx1ZSA9IGRlZ3JlZXNcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJnZHMtcHJvZ3Jlc3MtY2lyY2xlXCJcbiAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZVwiXG4gIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwiMFwiXG4gIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwiMTAwXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJpZFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJyaW5nIGZ1bGwtcmluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJyaW5nLXByb2dyZXNzXCIgW25nQ2xhc3NdPVwidGhlbWVcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cInJpbmctcHJvZ3Jlc3NcIiBbbmdDbGFzc109XCJ0aGVtZVwiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImlubmVyLWNpcmNsZVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -4,10 +4,10 @@ import { NggProgressCircleComponent } from './progress-circle.component';
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class NggProgressCircleModule {
|
|
6
6
|
}
|
|
7
|
-
NggProgressCircleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8
|
-
NggProgressCircleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
|
9
|
-
NggProgressCircleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7
|
+
NggProgressCircleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggProgressCircleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
NggProgressCircleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.3", ngImport: i0, type: NggProgressCircleModule, declarations: [NggProgressCircleComponent], imports: [CommonModule], exports: [NggProgressCircleComponent] });
|
|
9
|
+
NggProgressCircleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggProgressCircleModule, imports: [CommonModule] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggProgressCircleModule, decorators: [{
|
|
11
11
|
type: NgModule,
|
|
12
12
|
args: [{
|
|
13
13
|
declarations: [NggProgressCircleComponent],
|
|
@@ -15,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
15
15
|
exports: [NggProgressCircleComponent],
|
|
16
16
|
}]
|
|
17
17
|
}] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtY2lyY2xlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL3Byb2dyZXNzLWNpcmNsZS9wcm9ncmVzcy1jaXJjbGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFBOztBQU94RSxNQUFNLE9BQU8sdUJBQXVCOztvSEFBdkIsdUJBQXVCO3FIQUF2Qix1QkFBdUIsaUJBSm5CLDBCQUEwQixhQUMvQixZQUFZLGFBQ1osMEJBQTBCO3FIQUV6Qix1QkFBdUIsWUFIeEIsWUFBWTsyRkFHWCx1QkFBdUI7a0JBTG5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuXG5pbXBvcnQgeyBOZ2dQcm9ncmVzc0NpcmNsZUNvbXBvbmVudCB9IGZyb20gJy4vcHJvZ3Jlc3MtY2lyY2xlLmNvbXBvbmVudCdcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTmdnUHJvZ3Jlc3NDaXJjbGVDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW05nZ1Byb2dyZXNzQ2lyY2xlQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmdnUHJvZ3Jlc3NDaXJjbGVNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/
|
|
4
|
-
import * as i2 from "@angular/
|
|
3
|
+
import * as i1 from "@angular/router";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
5
|
export class NggSegmentedControlComponent {
|
|
6
6
|
}
|
|
7
|
-
NggSegmentedControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8
|
-
NggSegmentedControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
7
|
+
NggSegmentedControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggSegmentedControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8
|
+
NggSegmentedControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NggSegmentedControlComponent, selector: "ngg-segmented-control", inputs: { $controls: "$controls" }, ngImport: i0, template: `
|
|
9
9
|
<div class="group">
|
|
10
10
|
<a
|
|
11
11
|
*ngFor="let control of $controls | async"
|
|
@@ -15,12 +15,10 @@ NggSegmentedControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
15
15
|
>{{ control.text }}</a
|
|
16
16
|
>
|
|
17
17
|
</div>
|
|
18
|
-
`, isInline: true,
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
18
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggSegmentedControlComponent, decorators: [{
|
|
20
20
|
type: Component,
|
|
21
|
-
args: [{
|
|
22
|
-
selector: 'ngg-segmented-control',
|
|
23
|
-
template: `
|
|
21
|
+
args: [{ selector: 'ngg-segmented-control', template: `
|
|
24
22
|
<div class="group">
|
|
25
23
|
<a
|
|
26
24
|
*ngFor="let control of $controls | async"
|
|
@@ -30,11 +28,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
30
28
|
>{{ control.text }}</a
|
|
31
29
|
>
|
|
32
30
|
</div>
|
|
33
|
-
`,
|
|
34
|
-
styles: [],
|
|
35
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
36
|
-
}]
|
|
31
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
37
32
|
}], propDecorators: { $controls: [{
|
|
38
33
|
type: Input
|
|
39
34
|
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvc2VnbWVudGVkLWNvbnRyb2wvc2VnbWVudGVkLWNvbnRyb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBOzs7O0FBc0J6RSxNQUFNLE9BQU8sNEJBQTRCOzt5SEFBNUIsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsaUdBZDdCOzs7Ozs7Ozs7O0dBVVQ7MkZBSVUsNEJBQTRCO2tCQWhCeEMsU0FBUzsrQkFDRSx1QkFBdUIsWUFDdkI7Ozs7Ozs7Ozs7R0FVVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuZXhwb3J0IGludGVyZmFjZSBTZWdtZW50ZWRDb250cm9sIHtcbiAgdXJsOiBzdHJpbmdcbiAgdGV4dDogT2JzZXJ2YWJsZTxzdHJpbmc+IHwgc3RyaW5nXG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ctc2VnbWVudGVkLWNvbnRyb2wnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJncm91cFwiPlxuICAgICAgPGFcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRyb2wgb2YgJGNvbnRyb2xzIHwgYXN5bmNcIlxuICAgICAgICBbcm91dGVyTGlua109XCJjb250cm9sLnVybFwiXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxuICAgICAgICBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgID57eyBjb250cm9sLnRleHQgfX08L2FcbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5nZ1NlZ21lbnRlZENvbnRyb2xDb21wb25lbnQge1xuICBASW5wdXQoKSAkY29udHJvbHM6IE9ic2VydmFibGU8QXJyYXk8U2VnbWVudGVkQ29udHJvbD4+IHwgdW5kZWZpbmVkXG59XG4iXX0=
|
|
@@ -5,10 +5,10 @@ import { RouterModule } from '@angular/router';
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class NggSegmentedControlModule {
|
|
7
7
|
}
|
|
8
|
-
NggSegmentedControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9
|
-
NggSegmentedControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
|
10
|
-
NggSegmentedControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
8
|
+
NggSegmentedControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggSegmentedControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
NggSegmentedControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.3", ngImport: i0, type: NggSegmentedControlModule, declarations: [NggSegmentedControlComponent], imports: [RouterModule, CommonModule], exports: [NggSegmentedControlComponent] });
|
|
10
|
+
NggSegmentedControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggSegmentedControlModule, imports: [RouterModule, CommonModule] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggSegmentedControlModule, decorators: [{
|
|
12
12
|
type: NgModule,
|
|
13
13
|
args: [{
|
|
14
14
|
declarations: [NggSegmentedControlComponent],
|
|
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
16
16
|
exports: [NggSegmentedControlComponent],
|
|
17
17
|
}]
|
|
18
18
|
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLWNvbnRyb2wubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvc2VnbWVudGVkLWNvbnRyb2wvc2VnbWVudGVkLWNvbnRyb2wubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7QUFPOUMsTUFBTSxPQUFPLHlCQUF5Qjs7c0hBQXpCLHlCQUF5Qjt1SEFBekIseUJBQXlCLGlCQUpyQiw0QkFBNEIsYUFDakMsWUFBWSxFQUFFLFlBQVksYUFDMUIsNEJBQTRCO3VIQUUzQix5QkFBeUIsWUFIMUIsWUFBWSxFQUFFLFlBQVk7MkZBR3pCLHlCQUF5QjtrQkFMckMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDNUMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsNEJBQTRCLENBQUM7aUJBQ3hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdnU2VnbWVudGVkQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vc2VnbWVudGVkLWNvbnRyb2wuY29tcG9uZW50J1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtOZ2dTZWdtZW50ZWRDb250cm9sQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW05nZ1NlZ21lbnRlZENvbnRyb2xDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dTZWdtZW50ZWRDb250cm9sTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './slider.component';
|
|
2
|
+
export * from './slider.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9zbGlkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLGlCQUFpQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zbGlkZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9zbGlkZXIubW9kdWxlJ1xuIl19
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { getSliderTrackBackground, randomId, sliderColors, } from '@sebgroup/extract';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
export class NggSliderComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.name = `${randomId()}-slider`;
|
|
10
|
+
this.min = 0;
|
|
11
|
+
this.max = 100;
|
|
12
|
+
this.step = 1;
|
|
13
|
+
this.label = '';
|
|
14
|
+
this.instruction = '';
|
|
15
|
+
this.placeholder = '';
|
|
16
|
+
this.errorMessage = '';
|
|
17
|
+
this.hasTextbox = false;
|
|
18
|
+
this.disabled = false;
|
|
19
|
+
this.value = 0;
|
|
20
|
+
this.sliderChange = new EventEmitter();
|
|
21
|
+
this.sliderTouch = new EventEmitter();
|
|
22
|
+
this.style = {};
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
this.setTrackBackground();
|
|
26
|
+
}
|
|
27
|
+
ngOnChanges(changes) {
|
|
28
|
+
if (changes['value']) {
|
|
29
|
+
this.setTrackBackground();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
onBlur() {
|
|
33
|
+
this.sliderTouch.emit(true);
|
|
34
|
+
this.onTouchedFn && this.onTouchedFn();
|
|
35
|
+
}
|
|
36
|
+
handleChange() {
|
|
37
|
+
this.value = this.value ?? 0;
|
|
38
|
+
this.setTrackBackground();
|
|
39
|
+
this.sliderChange.emit(this.value);
|
|
40
|
+
this.onChangeFn && this.onChangeFn(this.value);
|
|
41
|
+
}
|
|
42
|
+
setTrackBackground() {
|
|
43
|
+
if (this.disabled) {
|
|
44
|
+
this.style.background = sliderColors.disabled;
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const percent = ((this.value - this.min) / (this.max - this.min)) * 100;
|
|
48
|
+
this.style.background = getSliderTrackBackground(percent);
|
|
49
|
+
}
|
|
50
|
+
/** control value accessor functions */
|
|
51
|
+
writeValue(val) {
|
|
52
|
+
if (this.value !== val) {
|
|
53
|
+
this.value = val ?? 0;
|
|
54
|
+
this.handleChange();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
registerOnChange(fn) {
|
|
58
|
+
this.onChangeFn = fn;
|
|
59
|
+
}
|
|
60
|
+
registerOnTouched(fn) {
|
|
61
|
+
this.onTouchedFn = fn;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
NggSliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
+
NggSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NggSliderComponent, selector: "ngg-slider", inputs: { name: "name", min: "min", max: "max", step: "step", label: "label", instruction: "instruction", placeholder: "placeholder", errorMessage: "errorMessage", hasTextbox: "hasTextbox", disabled: "disabled", value: "value" }, outputs: { sliderChange: "sliderChange", sliderTouch: "sliderTouch" }, providers: [
|
|
66
|
+
{
|
|
67
|
+
provide: NG_VALUE_ACCESSOR,
|
|
68
|
+
useExisting: NggSliderComponent,
|
|
69
|
+
multi: true,
|
|
70
|
+
},
|
|
71
|
+
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <div *ngIf=\"hasTextbox\" class=\"form-group\">\n <input\n type=\"number\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n <span *ngIf=\"!!errorMessage\" class=\"form-info\"></span>\n </div>\n</div>\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggSliderComponent, decorators: [{
|
|
73
|
+
type: Component,
|
|
74
|
+
args: [{ selector: 'ngg-slider', providers: [
|
|
75
|
+
{
|
|
76
|
+
provide: NG_VALUE_ACCESSOR,
|
|
77
|
+
useExisting: NggSliderComponent,
|
|
78
|
+
multi: true,
|
|
79
|
+
},
|
|
80
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <div *ngIf=\"hasTextbox\" class=\"form-group\">\n <input\n type=\"number\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n <span *ngIf=\"!!errorMessage\" class=\"form-info\"></span>\n </div>\n</div>\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n" }]
|
|
81
|
+
}], propDecorators: { name: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], min: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], max: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], step: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], label: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], instruction: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], placeholder: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], errorMessage: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], hasTextbox: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], disabled: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], value: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], sliderChange: [{
|
|
104
|
+
type: Output
|
|
105
|
+
}], sliderTouch: [{
|
|
106
|
+
type: Output
|
|
107
|
+
}] } });
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEUsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsWUFBWSxHQUNiLE1BQU0sbUJBQW1CLENBQUE7Ozs7QUFrQjFCLE1BQU0sT0FBTyxrQkFBa0I7SUFaL0I7UUFlVyxTQUFJLEdBQUcsR0FBRyxRQUFRLEVBQUUsU0FBUyxDQUFBO1FBQzdCLFFBQUcsR0FBRyxDQUFDLENBQUE7UUFDUCxRQUFHLEdBQUcsR0FBRyxDQUFBO1FBQ1QsU0FBSSxHQUFHLENBQUMsQ0FBQTtRQUNSLFVBQUssR0FBRyxFQUFFLENBQUE7UUFDVixnQkFBVyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixpQkFBWSxHQUFHLEVBQUUsQ0FBQTtRQUNqQixlQUFVLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFDaEIsVUFBSyxHQUFHLENBQUMsQ0FBQTtRQUNSLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQTtRQUN6QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUE7UUFHbkQsVUFBSyxHQUFnQixFQUFFLENBQUE7S0FpRHhCO0lBL0NDLFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtJQUMzQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1NBQzFCO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMzQixJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUE7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQTtZQUM3QyxPQUFNO1NBQ1A7UUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtRQUN2RSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFBO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtTQUNwQjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFBO0lBQ3ZCLENBQUM7OytHQWxFVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixrVkFUbEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLGtCQUFrQjtZQUMvQixLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsK0NDOUJILDArQkFvQ0E7MkZESGEsa0JBQWtCO2tCQVo5QixTQUFTOytCQUNFLFlBQVksYUFFWDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLG9CQUFvQjs0QkFDL0IsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OEJBS3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQge1xuICBnZXRTbGlkZXJUcmFja0JhY2tncm91bmQsXG4gIHJhbmRvbUlkLFxuICBzbGlkZXJDb2xvcnMsXG59IGZyb20gJ0BzZWJncm91cC9leHRyYWN0J1xuXG5pbnRlcmZhY2UgU2xpZGVyU3R5bGUge1xuICBiYWNrZ3JvdW5kPzogc3RyaW5nXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZy1zbGlkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogTmdnU2xpZGVyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5nZ1NsaWRlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSBuYW1lID0gYCR7cmFuZG9tSWQoKX0tc2xpZGVyYFxuICBASW5wdXQoKSBtaW4gPSAwXG4gIEBJbnB1dCgpIG1heCA9IDEwMFxuICBASW5wdXQoKSBzdGVwID0gMVxuICBASW5wdXQoKSBsYWJlbCA9ICcnXG4gIEBJbnB1dCgpIGluc3RydWN0aW9uID0gJydcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJ1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2UgPSAnJ1xuICBASW5wdXQoKSBoYXNUZXh0Ym94ID0gZmFsc2VcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZVxuICBASW5wdXQoKSB2YWx1ZSA9IDBcbiAgQE91dHB1dCgpIHNsaWRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpXG4gIEBPdXRwdXQoKSBzbGlkZXJUb3VjaCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKVxuICBvbkNoYW5nZUZuPzogKHZhbDogbnVtYmVyKSA9PiB2b2lkXG4gIG9uVG91Y2hlZEZuPzogVm9pZEZ1bmN0aW9uXG4gIHN0eWxlOiBTbGlkZXJTdHlsZSA9IHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRUcmFja0JhY2tncm91bmQoKVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddKSB7XG4gICAgICB0aGlzLnNldFRyYWNrQmFja2dyb3VuZCgpXG4gICAgfVxuICB9XG5cbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2xpZGVyVG91Y2guZW1pdCh0cnVlKVxuICAgIHRoaXMub25Ub3VjaGVkRm4gJiYgdGhpcy5vblRvdWNoZWRGbigpXG4gIH1cblxuICBoYW5kbGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgPz8gMFxuICAgIHRoaXMuc2V0VHJhY2tCYWNrZ3JvdW5kKClcbiAgICB0aGlzLnNsaWRlckNoYW5nZS5lbWl0KHRoaXMudmFsdWUpXG4gICAgdGhpcy5vbkNoYW5nZUZuICYmIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbHVlKVxuICB9XG5cbiAgc2V0VHJhY2tCYWNrZ3JvdW5kKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnN0eWxlLmJhY2tncm91bmQgPSBzbGlkZXJDb2xvcnMuZGlzYWJsZWRcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHBlcmNlbnQgPSAoKHRoaXMudmFsdWUgLSB0aGlzLm1pbikgLyAodGhpcy5tYXggLSB0aGlzLm1pbikpICogMTAwXG4gICAgdGhpcy5zdHlsZS5iYWNrZ3JvdW5kID0gZ2V0U2xpZGVyVHJhY2tCYWNrZ3JvdW5kKHBlcmNlbnQpXG4gIH1cblxuICAvKiogY29udHJvbCB2YWx1ZSBhY2Nlc3NvciBmdW5jdGlvbnMgKi9cbiAgd3JpdGVWYWx1ZSh2YWw6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlICE9PSB2YWwpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWwgPz8gMFxuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UoKVxuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuXG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuXG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCIhIWxhYmVsXCIgY2xhc3M9XCJnZHMtc2xpZGVyLWxhYmVsLWNvbnRhaW5lclwiPlxuICA8ZGl2PlxuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwibmFtZVwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICA8cCAqbmdJZj1cIiEhaW5zdHJ1Y3Rpb25cIj57eyBpbnN0cnVjdGlvbiB9fTwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJoYXNUZXh0Ym94XCIgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiISFlcnJvck1lc3NhZ2VcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFthdHRyLmlkXT1cIm5hbWUgKyAnLXRleHRib3gnXCJcbiAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAoaW5wdXQpPVwiaGFuZGxlQ2hhbmdlKClcIlxuICAgIC8+XG4gICAgPHNwYW4gKm5nSWY9XCIhIWVycm9yTWVzc2FnZVwiIGNsYXNzPVwiZm9ybS1pbmZvXCI+PC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGlucHV0XG4gIHR5cGU9XCJyYW5nZVwiXG4gIFthdHRyLmlkXT1cIm5hbWVcIlxuICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICBbYXR0ci5taW5dPVwibWluXCJcbiAgW2F0dHIubWF4XT1cIm1heFwiXG4gIFthdHRyLnN0ZXBdPVwic3RlcFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICBbbmdTdHlsZV09XCJzdHlsZVwiXG4gIChibHVyKT1cIm9uQmx1cigpXCJcbiAgKGlucHV0KT1cImhhbmRsZUNoYW5nZSgpXCJcbi8+XG48cCAqbmdJZj1cIiEhZXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJnZHMtc2xpZGVyLWVycm9yLWluZm9cIj5cbiAge3sgZXJyb3JNZXNzYWdlIH19XG48L3A+XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { NggSliderComponent } from './slider.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class NggSliderModule {
|
|
7
|
+
}
|
|
8
|
+
NggSliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
NggSliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.3", ngImport: i0, type: NggSliderModule, declarations: [NggSliderComponent], imports: [CommonModule, FormsModule], exports: [NggSliderComponent] });
|
|
10
|
+
NggSliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggSliderModule, imports: [CommonModule, FormsModule] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NggSliderModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
imports: [CommonModule, FormsModule],
|
|
15
|
+
exports: [NggSliderComponent],
|
|
16
|
+
declarations: [NggSliderComponent],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL3NsaWRlci9zbGlkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTs7QUFPdkQsTUFBTSxPQUFPLGVBQWU7OzRHQUFmLGVBQWU7NkdBQWYsZUFBZSxpQkFGWCxrQkFBa0IsYUFGdkIsWUFBWSxFQUFFLFdBQVcsYUFDekIsa0JBQWtCOzZHQUdqQixlQUFlLFlBSmhCLFlBQVksRUFBRSxXQUFXOzJGQUl4QixlQUFlO2tCQUwzQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUM3QixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuXG5pbXBvcnQgeyBOZ2dTbGlkZXJDb21wb25lbnQgfSBmcm9tICcuL3NsaWRlci5jb21wb25lbnQnXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgZXhwb3J0czogW05nZ1NsaWRlckNvbXBvbmVudF0sXG4gIGRlY2xhcmF0aW9uczogW05nZ1NsaWRlckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE5nZ1NsaWRlck1vZHVsZSB7fVxuIl19
|