@annalib/anna-core 4.2.21 → 4.2.23
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/lib/anna-core-shared-lib/services/anna-filter.service.mjs +8 -1
- package/esm2020/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +41 -0
- package/esm2020/lib/anna-core.module.mjs +4 -9
- package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +8 -2
- package/esm2020/public-api.mjs +2 -2
- package/fesm2015/annalib-anna-core.mjs +57 -293
- package/fesm2015/annalib-anna-core.mjs.map +1 -1
- package/fesm2020/annalib-anna-core.mjs +57 -289
- package/fesm2020/annalib-anna-core.mjs.map +1 -1
- package/lib/anna-core-shared-lib/services/anna-number-format.service.d.ts +7 -0
- package/lib/anna-core.module.d.ts +11 -12
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/esm2020/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +0 -282
- package/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.d.ts +0 -34
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class AnnaNumberFormatService {
|
|
3
|
+
static GetRoundedValueWithUnits(inputValue: number, digitsToRoundDecimalPoint?: number): string;
|
|
4
|
+
static GetValueInUnits(inputValue: number): (string | number)[];
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AnnaNumberFormatService, never>;
|
|
6
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AnnaNumberFormatService>;
|
|
7
|
+
}
|
|
@@ -18,19 +18,18 @@ import * as i16 from "./anna-generic-table-lib/directives/anna-virtual-table/ann
|
|
|
18
18
|
import * as i17 from "./anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component";
|
|
19
19
|
import * as i18 from "./anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component";
|
|
20
20
|
import * as i19 from "./anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive";
|
|
21
|
-
import * as i20 from "
|
|
22
|
-
import * as i21 from "@
|
|
23
|
-
import * as i22 from "@
|
|
24
|
-
import * as i23 from "@angular/
|
|
25
|
-
import * as i24 from "@angular/material/
|
|
26
|
-
import * as i25 from "@angular/material/
|
|
27
|
-
import * as i26 from "@angular/
|
|
28
|
-
import * as i27 from "
|
|
29
|
-
import * as i28 from "
|
|
30
|
-
import * as i29 from "
|
|
31
|
-
import * as i30 from "ng-circle-progress";
|
|
21
|
+
import * as i20 from "@angular/common";
|
|
22
|
+
import * as i21 from "@ng-bootstrap/ng-bootstrap";
|
|
23
|
+
import * as i22 from "@angular/forms";
|
|
24
|
+
import * as i23 from "@angular/material/radio";
|
|
25
|
+
import * as i24 from "@angular/material/button-toggle";
|
|
26
|
+
import * as i25 from "@angular/material/table";
|
|
27
|
+
import * as i26 from "@angular-slider/ngx-slider";
|
|
28
|
+
import * as i27 from "ngx-skeleton-loader";
|
|
29
|
+
import * as i28 from "@angular/cdk/scrolling";
|
|
30
|
+
import * as i29 from "ng-circle-progress";
|
|
32
31
|
export declare class AnnaCoreModule {
|
|
33
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<AnnaCoreModule, never>;
|
|
34
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<AnnaCoreModule, [typeof i1.AnnaNoDataComponent, typeof i2.AnnaFilterSearchedTextPipe, typeof i3.AnnaConvertZeroOrNullOrUndefinedPipe, typeof i4.AnnaTypeofDataPipe, typeof i2.AnnaFilterSearchedTextPipe, typeof i5.AnnaReplaceCharPipe, typeof i6.AnnaBuyerApprovalIconTemplateComponent, typeof i7.AnnaLiveIconTemplateComponent, typeof i8.AnnaNotifyIconTemplateComponent, typeof i9.AnnaPayForPerformanceIconTemplateComponent, typeof i10.AnnaRejectedIconTemplateComponent, typeof i11.showEllipsisTextOnHoverDirective, typeof i12.AnnaIconColumnComponent, typeof i13.AnnaWeekCalendarComponent, typeof i14.AnnaCalendarFilterComponent, typeof i15.AnnaSortComponent, typeof i16.AnnaVirtualTableDirective, typeof i17.AnnaNonEditableGenericTableComponent, typeof i18.AnnaTableVirtualScrollViewportComponent, typeof i19.AnnaFixedRowSizeTableVirtualScrollStrategyDirective
|
|
33
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AnnaCoreModule, [typeof i1.AnnaNoDataComponent, typeof i2.AnnaFilterSearchedTextPipe, typeof i3.AnnaConvertZeroOrNullOrUndefinedPipe, typeof i4.AnnaTypeofDataPipe, typeof i2.AnnaFilterSearchedTextPipe, typeof i5.AnnaReplaceCharPipe, typeof i6.AnnaBuyerApprovalIconTemplateComponent, typeof i7.AnnaLiveIconTemplateComponent, typeof i8.AnnaNotifyIconTemplateComponent, typeof i9.AnnaPayForPerformanceIconTemplateComponent, typeof i10.AnnaRejectedIconTemplateComponent, typeof i11.showEllipsisTextOnHoverDirective, typeof i12.AnnaIconColumnComponent, typeof i13.AnnaWeekCalendarComponent, typeof i14.AnnaCalendarFilterComponent, typeof i15.AnnaSortComponent, typeof i16.AnnaVirtualTableDirective, typeof i17.AnnaNonEditableGenericTableComponent, typeof i18.AnnaTableVirtualScrollViewportComponent, typeof i19.AnnaFixedRowSizeTableVirtualScrollStrategyDirective], [typeof i20.CommonModule, typeof i21.NgbModule, typeof i22.FormsModule, typeof i23.MatRadioModule, typeof i24.MatButtonToggleModule, typeof i25.MatTableModule, typeof i26.NgxSliderModule, typeof i27.NgxSkeletonLoaderModule, typeof i28.ScrollingModule, typeof i29.NgCircleProgressModule], [typeof i1.AnnaNoDataComponent, typeof i2.AnnaFilterSearchedTextPipe, typeof i3.AnnaConvertZeroOrNullOrUndefinedPipe, typeof i4.AnnaTypeofDataPipe, typeof i5.AnnaReplaceCharPipe, typeof i2.AnnaFilterSearchedTextPipe, typeof i6.AnnaBuyerApprovalIconTemplateComponent, typeof i7.AnnaLiveIconTemplateComponent, typeof i8.AnnaNotifyIconTemplateComponent, typeof i9.AnnaPayForPerformanceIconTemplateComponent, typeof i10.AnnaRejectedIconTemplateComponent, typeof i11.showEllipsisTextOnHoverDirective, typeof i12.AnnaIconColumnComponent, typeof i13.AnnaWeekCalendarComponent, typeof i14.AnnaCalendarFilterComponent, typeof i15.AnnaSortComponent, typeof i16.AnnaVirtualTableDirective, typeof i17.AnnaNonEditableGenericTableComponent, typeof i18.AnnaTableVirtualScrollViewportComponent, typeof i19.AnnaFixedRowSizeTableVirtualScrollStrategyDirective]>;
|
|
35
34
|
static ɵinj: i0.ɵɵInjectorDeclaration<AnnaCoreModule>;
|
|
36
35
|
}
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export * from "./lib/anna-core-shared-lib/services/anna-global-config.service";
|
|
|
11
11
|
export * from "./lib/anna-core-shared-lib/services/anna-filter.service";
|
|
12
12
|
export * from "./lib/anna-core-shared-lib/services/anna-sort.service";
|
|
13
13
|
export * from "./lib/anna-core-shared-lib/services/anna-generic-table.service";
|
|
14
|
+
export * from "./lib/anna-core-shared-lib/services/anna-number-format.service";
|
|
14
15
|
export * from "./lib/anna-core-shared-lib/models/anna-generic-data-type.model";
|
|
15
16
|
export * from "./lib/anna-core-shared-lib/models/anna-global-dropdown-config.model";
|
|
16
17
|
export * from "./lib/anna-core-shared-lib/models/anna-non-editable-gt-models";
|
|
@@ -22,7 +23,6 @@ export * from "./lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined
|
|
|
22
23
|
export * from "./lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe";
|
|
23
24
|
export * from "./lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe";
|
|
24
25
|
export * from "./lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive";
|
|
25
|
-
export * from './lib/anna-core-shared-lib/directives/digits-only/digits-only.directive';
|
|
26
26
|
export * from "./lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component";
|
|
27
27
|
export * from "./lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component";
|
|
28
28
|
export * from "./lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component";
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
import { Directive, ElementRef, HostListener, Input, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DigitOnlyDirective {
|
|
4
|
-
constructor(el) {
|
|
5
|
-
this.el = el;
|
|
6
|
-
this.hasDecimalPoint = false;
|
|
7
|
-
this.hasNegativeSign = false;
|
|
8
|
-
this.navigationKeys = [
|
|
9
|
-
'Backspace',
|
|
10
|
-
'Delete',
|
|
11
|
-
'Tab',
|
|
12
|
-
'Escape',
|
|
13
|
-
'Enter',
|
|
14
|
-
'Home',
|
|
15
|
-
'End',
|
|
16
|
-
'ArrowLeft',
|
|
17
|
-
'ArrowRight',
|
|
18
|
-
'Clear',
|
|
19
|
-
'Copy',
|
|
20
|
-
'Paste',
|
|
21
|
-
];
|
|
22
|
-
this.decimal = false;
|
|
23
|
-
this.decimalSeparator = '.';
|
|
24
|
-
this.allowNegatives = false;
|
|
25
|
-
this.allowPaste = true;
|
|
26
|
-
this.negativeSign = '-';
|
|
27
|
-
this.min = -Infinity;
|
|
28
|
-
this.max = Infinity;
|
|
29
|
-
this.regex = null;
|
|
30
|
-
this.inputElement = el.nativeElement;
|
|
31
|
-
}
|
|
32
|
-
ngOnChanges(changes) {
|
|
33
|
-
if (changes['pattern']) {
|
|
34
|
-
this.regex = this.pattern ? RegExp(this.pattern) : null;
|
|
35
|
-
}
|
|
36
|
-
if (changes['min']) {
|
|
37
|
-
const maybeMin = Number(this.min);
|
|
38
|
-
this.min = isNaN(maybeMin) ? -Infinity : maybeMin;
|
|
39
|
-
}
|
|
40
|
-
if (changes['max']) {
|
|
41
|
-
const maybeMax = Number(this.max);
|
|
42
|
-
this.max = isNaN(maybeMax) ? Infinity : maybeMax;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
onBeforeInput(e) {
|
|
46
|
-
if (isNaN(Number(e.data))) {
|
|
47
|
-
if (e.data === this.decimalSeparator ||
|
|
48
|
-
(e.data === this.negativeSign && this.allowNegatives)) {
|
|
49
|
-
return; // go on
|
|
50
|
-
}
|
|
51
|
-
e.preventDefault();
|
|
52
|
-
e.stopPropagation();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
onKeyDown(e) {
|
|
56
|
-
console.log("called");
|
|
57
|
-
if (this.navigationKeys.indexOf(e.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.
|
|
58
|
-
((e.key === 'a' || e.code === 'KeyA') && e.ctrlKey === true) || // Allow: Ctrl+A
|
|
59
|
-
((e.key === 'c' || e.code === 'KeyC') && e.ctrlKey === true) || // Allow: Ctrl+C
|
|
60
|
-
((e.key === 'v' || e.code === 'KeyV') && e.ctrlKey === true) || // Allow: Ctrl+V
|
|
61
|
-
((e.key === 'x' || e.code === 'KeyX') && e.ctrlKey === true) || // Allow: Ctrl+X
|
|
62
|
-
((e.key === 'a' || e.code === 'KeyA') && e.metaKey === true) || // Allow: Cmd+A (Mac)
|
|
63
|
-
((e.key === 'c' || e.code === 'KeyC') && e.metaKey === true) || // Allow: Cmd+C (Mac)
|
|
64
|
-
((e.key === 'v' || e.code === 'KeyV') && e.metaKey === true) || // Allow: Cmd+V (Mac)
|
|
65
|
-
((e.key === 'x' || e.code === 'KeyX') && e.metaKey === true) // Allow: Cmd+X (Mac)
|
|
66
|
-
) {
|
|
67
|
-
// let it happen, don't do anything
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
let newValue = '';
|
|
71
|
-
if (this.decimal && e.key === this.decimalSeparator) {
|
|
72
|
-
newValue = this.forecastValue(e.key);
|
|
73
|
-
if (newValue.split(this.decimalSeparator).length > 2) {
|
|
74
|
-
// has two or more decimal points
|
|
75
|
-
e.preventDefault();
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
this.hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;
|
|
80
|
-
return; // Allow: only one decimal point
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (e.key === this.negativeSign && this.allowNegatives) {
|
|
84
|
-
newValue = this.forecastValue(e.key);
|
|
85
|
-
if (newValue.charAt(0) !== this.negativeSign ||
|
|
86
|
-
newValue.split(this.negativeSign).length > 2) {
|
|
87
|
-
e.preventDefault();
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
this.hasNegativeSign = newValue.split(this.negativeSign).length > -1;
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// Ensure that it is a number and stop the keypress
|
|
96
|
-
if (e.key === ' ' || isNaN(Number(e.key))) {
|
|
97
|
-
e.preventDefault();
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
newValue = newValue || this.forecastValue(e.key);
|
|
101
|
-
// check the input pattern RegExp
|
|
102
|
-
if (this.regex) {
|
|
103
|
-
if (!this.regex.test(newValue)) {
|
|
104
|
-
e.preventDefault();
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
const newNumber = Number(newValue);
|
|
109
|
-
if (newNumber > this.max || newNumber < this.min) {
|
|
110
|
-
e.preventDefault();
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
onPaste(event) {
|
|
114
|
-
if (this.allowPaste === true) {
|
|
115
|
-
let pastedInput = '';
|
|
116
|
-
if (window['clipboardData']) {
|
|
117
|
-
// Browser is IE
|
|
118
|
-
pastedInput = window['clipboardData'].getData('text');
|
|
119
|
-
}
|
|
120
|
-
else if (event.clipboardData && event.clipboardData.getData) {
|
|
121
|
-
// Other browsers
|
|
122
|
-
pastedInput = event.clipboardData.getData('text/plain');
|
|
123
|
-
}
|
|
124
|
-
this.pasteData(pastedInput);
|
|
125
|
-
event.preventDefault();
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
// this prevents the paste
|
|
129
|
-
event.preventDefault();
|
|
130
|
-
event.stopPropagation();
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
onDrop(event) {
|
|
134
|
-
const textData = event.dataTransfer?.getData('text') ?? '';
|
|
135
|
-
this.inputElement.focus();
|
|
136
|
-
this.pasteData(textData);
|
|
137
|
-
event.preventDefault();
|
|
138
|
-
}
|
|
139
|
-
pasteData(pastedContent) {
|
|
140
|
-
const sanitizedContent = this.sanitizeInput(pastedContent);
|
|
141
|
-
if (sanitizedContent.includes(this.negativeSign) &&
|
|
142
|
-
this.hasNegativeSign &&
|
|
143
|
-
!this.getSelection().includes(this.negativeSign)) {
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
const pasted = document.execCommand('insertText', false, sanitizedContent);
|
|
147
|
-
if (!pasted) {
|
|
148
|
-
if (this.inputElement.setRangeText) {
|
|
149
|
-
const { selectionStart: start, selectionEnd: end } = this.inputElement;
|
|
150
|
-
this.inputElement.setRangeText(sanitizedContent, start ?? 0, end ?? 0, 'end');
|
|
151
|
-
// Angular's Reactive Form relies on "input" event, but on Firefox, the setRangeText method doesn't trigger it
|
|
152
|
-
// so we have to trigger it ourself.
|
|
153
|
-
if (typeof window['InstallTrigger'] !==
|
|
154
|
-
'undefined') {
|
|
155
|
-
this.inputElement.dispatchEvent(new Event('input', { cancelable: true }));
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
// Browser does not support setRangeText, e.g. IE
|
|
160
|
-
this.insertAtCursor(this.inputElement, sanitizedContent);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
if (this.decimal) {
|
|
164
|
-
this.hasDecimalPoint =
|
|
165
|
-
this.inputElement.value.indexOf(this.decimalSeparator) > -1;
|
|
166
|
-
}
|
|
167
|
-
this.hasNegativeSign =
|
|
168
|
-
this.inputElement.value.indexOf(this.negativeSign) > -1;
|
|
169
|
-
}
|
|
170
|
-
// The following 2 methods were added from the below article for browsers that do not support setRangeText
|
|
171
|
-
// https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position
|
|
172
|
-
insertAtCursor(myField, myValue) {
|
|
173
|
-
const startPos = myField.selectionStart ?? 0;
|
|
174
|
-
const endPos = myField.selectionEnd ?? 0;
|
|
175
|
-
myField.value =
|
|
176
|
-
myField.value.substring(0, startPos) +
|
|
177
|
-
myValue +
|
|
178
|
-
myField.value.substring(endPos, myField.value.length);
|
|
179
|
-
const pos = startPos + myValue.length;
|
|
180
|
-
myField.focus();
|
|
181
|
-
myField.setSelectionRange(pos, pos);
|
|
182
|
-
this.triggerEvent(myField, 'input');
|
|
183
|
-
}
|
|
184
|
-
triggerEvent(el, type) {
|
|
185
|
-
if ('createEvent' in document) {
|
|
186
|
-
// modern browsers, IE9+
|
|
187
|
-
const e = document.createEvent('HTMLEvents');
|
|
188
|
-
e.initEvent(type, false, true);
|
|
189
|
-
el.dispatchEvent(e);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
// end stack overflow code
|
|
193
|
-
sanitizeInput(input) {
|
|
194
|
-
let result = '';
|
|
195
|
-
let regex;
|
|
196
|
-
if (this.decimal && this.isValidDecimal(input)) {
|
|
197
|
-
regex = new RegExp(`${this.getNegativeSignRegExp()}[^0-9${this.decimalSeparator}]`, 'g');
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
regex = new RegExp(`${this.getNegativeSignRegExp()}[^0-9]`, 'g');
|
|
201
|
-
}
|
|
202
|
-
result = input.replace(regex, '');
|
|
203
|
-
const maxLength = this.inputElement.maxLength;
|
|
204
|
-
if (maxLength > 0) {
|
|
205
|
-
// the input element has maxLength limit
|
|
206
|
-
const allowedLength = maxLength -
|
|
207
|
-
this.inputElement.value.length +
|
|
208
|
-
(result.includes(`${this.negativeSign}`) ? 1 : 0);
|
|
209
|
-
result = allowedLength > 0 ? result.substring(0, allowedLength) : '';
|
|
210
|
-
}
|
|
211
|
-
return result;
|
|
212
|
-
}
|
|
213
|
-
getNegativeSignRegExp() {
|
|
214
|
-
return this.allowNegatives &&
|
|
215
|
-
(!this.hasNegativeSign || this.getSelection().includes(this.negativeSign))
|
|
216
|
-
? `(?!^${this.negativeSign})`
|
|
217
|
-
: '';
|
|
218
|
-
}
|
|
219
|
-
isValidDecimal(string) {
|
|
220
|
-
if (!this.hasDecimalPoint) {
|
|
221
|
-
return string.split(this.decimalSeparator).length <= 2;
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
// the input element already has a decimal separator
|
|
225
|
-
const selectedText = this.getSelection();
|
|
226
|
-
if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {
|
|
227
|
-
return string.split(this.decimalSeparator).length <= 2;
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
return string.indexOf(this.decimalSeparator) < 0;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
getSelection() {
|
|
235
|
-
return this.inputElement.value.substring(this.inputElement.selectionStart ?? 0, this.inputElement.selectionEnd ?? 0);
|
|
236
|
-
}
|
|
237
|
-
forecastValue(key) {
|
|
238
|
-
const selectionStart = this.inputElement.selectionStart ?? 0;
|
|
239
|
-
const selectionEnd = this.inputElement.selectionEnd ?? 0;
|
|
240
|
-
const oldValue = this.inputElement.value;
|
|
241
|
-
return (oldValue.substring(0, selectionStart) +
|
|
242
|
-
key +
|
|
243
|
-
oldValue.substring(selectionEnd));
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
DigitOnlyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: DigitOnlyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
247
|
-
DigitOnlyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: DigitOnlyDirective, selector: "[digitOnly]", inputs: { decimal: "decimal", decimalSeparator: "decimalSeparator", allowNegatives: "allowNegatives", allowPaste: "allowPaste", negativeSign: "negativeSign", min: "min", max: "max", pattern: "pattern" }, host: { listeners: { "beforeinput": "onBeforeInput($event)", "keydown": "onKeyDown($event)", "paste": "onPaste($event)", "drop": "onDrop($event)" } }, usesOnChanges: true, ngImport: i0 });
|
|
248
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: DigitOnlyDirective, decorators: [{
|
|
249
|
-
type: Directive,
|
|
250
|
-
args: [{
|
|
251
|
-
selector: '[digitOnly]',
|
|
252
|
-
}]
|
|
253
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { decimal: [{
|
|
254
|
-
type: Input
|
|
255
|
-
}], decimalSeparator: [{
|
|
256
|
-
type: Input
|
|
257
|
-
}], allowNegatives: [{
|
|
258
|
-
type: Input
|
|
259
|
-
}], allowPaste: [{
|
|
260
|
-
type: Input
|
|
261
|
-
}], negativeSign: [{
|
|
262
|
-
type: Input
|
|
263
|
-
}], min: [{
|
|
264
|
-
type: Input
|
|
265
|
-
}], max: [{
|
|
266
|
-
type: Input
|
|
267
|
-
}], pattern: [{
|
|
268
|
-
type: Input
|
|
269
|
-
}], onBeforeInput: [{
|
|
270
|
-
type: HostListener,
|
|
271
|
-
args: ['beforeinput', ['$event']]
|
|
272
|
-
}], onKeyDown: [{
|
|
273
|
-
type: HostListener,
|
|
274
|
-
args: ['keydown', ['$event']]
|
|
275
|
-
}], onPaste: [{
|
|
276
|
-
type: HostListener,
|
|
277
|
-
args: ['paste', ['$event']]
|
|
278
|
-
}], onDrop: [{
|
|
279
|
-
type: HostListener,
|
|
280
|
-
args: ['drop', ['$event']]
|
|
281
|
-
}] } });
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXRzLW9ubHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1jb3JlLXNoYXJlZC1saWIvZGlyZWN0aXZlcy9kaWdpdHMtb25seS9kaWdpdHMtb25seS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQzs7QUFLdkIsTUFBTSxPQUFPLGtCQUFrQjtJQTZCN0IsWUFBbUIsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUE1QnpCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG1CQUFjLEdBQUc7WUFDdkIsV0FBVztZQUNYLFFBQVE7WUFDUixLQUFLO1lBQ0wsUUFBUTtZQUNSLE9BQU87WUFDUCxNQUFNO1lBQ04sS0FBSztZQUNMLFdBQVc7WUFDWCxZQUFZO1lBQ1osT0FBTztZQUNQLE1BQU07WUFDTixPQUFPO1NBQ1IsQ0FBQztRQUVPLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIscUJBQWdCLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsaUJBQVksR0FBRyxHQUFHLENBQUM7UUFDbkIsUUFBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ2hCLFFBQUcsR0FBRyxRQUFRLENBQUM7UUFFaEIsVUFBSyxHQUFrQixJQUFJLENBQUM7UUFJbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDekQ7UUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1NBQ25EO1FBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBR0QsYUFBYSxDQUFDLENBQWE7UUFDekIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLElBQ0UsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCO2dCQUNoQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQ3JEO2dCQUNBLE9BQU8sQ0FBQyxRQUFRO2FBQ2pCO1lBQ0QsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFHRCxTQUFTLENBQUMsQ0FBZ0I7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QixJQUNFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSx5REFBeUQ7WUFDcEcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxnQkFBZ0I7WUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxnQkFBZ0I7WUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxnQkFBZ0I7WUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxnQkFBZ0I7WUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxxQkFBcUI7WUFDckYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxxQkFBcUI7WUFDckYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJ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QUFRLEVBQUUsYUFBYTtpQkFDeEI7aUdBbUJVLE9BQU87c0JBQWYsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBeUJOLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZXZDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBb0VuQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXdCakMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbiAgXHJcbiAgQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tkaWdpdE9ubHldJyxcclxuICB9KVxyXG4gIGV4cG9ydCBjbGFzcyBEaWdpdE9ubHlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gICAgcHJpdmF0ZSBoYXNEZWNpbWFsUG9pbnQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgaGFzTmVnYXRpdmVTaWduID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIG5hdmlnYXRpb25LZXlzID0gW1xyXG4gICAgICAnQmFja3NwYWNlJyxcclxuICAgICAgJ0RlbGV0ZScsXHJcbiAgICAgICdUYWInLFxyXG4gICAgICAnRXNjYXBlJyxcclxuICAgICAgJ0VudGVyJyxcclxuICAgICAgJ0hvbWUnLFxyXG4gICAgICAnRW5kJyxcclxuICAgICAgJ0Fycm93TGVmdCcsXHJcbiAgICAgICdBcnJvd1JpZ2h0JyxcclxuICAgICAgJ0NsZWFyJyxcclxuICAgICAgJ0NvcHknLFxyXG4gICAgICAnUGFzdGUnLFxyXG4gICAgXTtcclxuICBcclxuICAgIEBJbnB1dCgpIGRlY2ltYWwgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGRlY2ltYWxTZXBhcmF0b3IgPSAnLic7XHJcbiAgICBASW5wdXQoKSBhbGxvd05lZ2F0aXZlcyA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgYWxsb3dQYXN0ZSA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBuZWdhdGl2ZVNpZ24gPSAnLSc7XHJcbiAgICBASW5wdXQoKSBtaW4gPSAtSW5maW5pdHk7XHJcbiAgICBASW5wdXQoKSBtYXggPSBJbmZpbml0eTtcclxuICAgIEBJbnB1dCgpIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHA7XHJcbiAgICBwcml2YXRlIHJlZ2V4OiBSZWdFeHAgfCBudWxsID0gbnVsbDtcclxuICAgIGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcclxuICBcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge1xyXG4gICAgICB0aGlzLmlucHV0RWxlbWVudCA9IGVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgIGlmIChjaGFuZ2VzWydwYXR0ZXJuJ10pIHtcclxuICAgICAgICB0aGlzLnJlZ2V4ID0gdGhpcy5wYXR0ZXJuID8gUmVnRXhwKHRoaXMucGF0dGVybikgOiBudWxsO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIGlmIChjaGFuZ2VzWydtaW4nXSkge1xyXG4gICAgICAgIGNvbnN0IG1heWJlTWluID0gTnVtYmVyKHRoaXMubWluKTtcclxuICAgICAgICB0aGlzLm1pbiA9IGlzTmFOKG1heWJlTWluKSA/IC1JbmZpbml0eSA6IG1heWJlTWluO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIGlmIChjaGFuZ2VzWydtYXgnXSkge1xyXG4gICAgICAgIGNvbnN0IG1heWJlTWF4ID0gTnVtYmVyKHRoaXMubWF4KTtcclxuICAgICAgICB0aGlzLm1heCA9IGlzTmFOKG1heWJlTWF4KSA/IEluZmluaXR5IDogbWF5YmVNYXg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICBcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2JlZm9yZWlucHV0JywgWyckZXZlbnQnXSlcclxuICAgIG9uQmVmb3JlSW5wdXQoZTogSW5wdXRFdmVudCk6IGFueSB7XHJcbiAgICAgIGlmIChpc05hTihOdW1iZXIoZS5kYXRhKSkpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBlLmRhdGEgPT09IHRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fFxyXG4gICAgICAgICAgKGUuZGF0YSA9PT0gdGhpcy5uZWdhdGl2ZVNpZ24gJiYgdGhpcy5hbGxvd05lZ2F0aXZlcylcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHJldHVybjsgLy8gZ28gb25cclxuICAgICAgICB9XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICBcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgb25LZXlEb3duKGU6IEtleWJvYXJkRXZlbnQpOiBhbnkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiY2FsbGVkXCIpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uS2V5cy5pbmRleE9mKGUua2V5KSA+IC0xIHx8IC8vIEFsbG93OiBuYXZpZ2F0aW9uIGtleXM6IGJhY2tzcGFjZSwgZGVsZXRlLCBhcnJvd3MgZXRjLlxyXG4gICAgICAgICgoZS5rZXkgPT09ICdhJyB8fCBlLmNvZGUgPT09ICdLZXlBJykgJiYgZS5jdHJsS2V5ID09PSB0cnVlKSB8fCAvLyBBbGxvdzogQ3RybCtBXHJcbiAgICAgICAgKChlLmtleSA9PT0gJ2MnIHx8IGUuY29kZSA9PT0gJ0tleUMnKSAmJiBlLmN0cmxLZXkgPT09IHRydWUpIHx8IC8vIEFsbG93OiBDdHJsK0NcclxuICAgICAgICAoKGUua2V5ID09PSAndicgfHwgZS5jb2RlID09PSAnS2V5VicpICYmIGUuY3RybEtleSA9PT0gdHJ1ZSkgfHwgLy8gQWxsb3c6IEN0cmwrVlxyXG4gICAgICAgICgoZS5rZXkgPT09ICd4JyB8fCBlLmNvZGUgPT09ICdLZXlYJykgJiYgZS5jdHJsS2V5ID09PSB0cnVlKSB8fCAvLyBBbGxvdzogQ3RybCtYXHJcbiAgICAgICAgKChlLmtleSA9PT0gJ2EnIHx8IGUuY29kZSA9PT0gJ0tleUEnKSAmJiBlLm1ldGFLZXkgPT09IHRydWUpIHx8IC8vIEFsbG93OiBDbWQrQSAoTWFjKVxyXG4gICAgICAgICgoZS5rZXkgPT09ICdjJyB8fCBlLmNvZGUgPT09ICdLZXlDJykgJiYgZS5tZXRhS2V5ID09PSB0cnVlKSB8fCAvLyBBbGxvdzogQ21kK0MgKE1hYylcclxuICAgICAgICAoKGUua2V5ID09PSAndicgfHwgZS5jb2RlID09PSAnS2V5VicpICYmIGUubWV0YUtleSA9PT0gdHJ1ZSkgfHwgLy8gQWxsb3c6IENtZCtWIChNYWMpXHJcbiAgICAgICAgKChlLmtleSA9PT0gJ3gnIHx8IGUuY29kZSA9PT0gJ0tleVgnKSAmJiBlLm1ldGFLZXkgPT09IHRydWUpIC8vIEFsbG93OiBDbWQrWCAoTWFjKVxyXG4gICAgICApIHtcclxuICAgICAgICAvLyBsZXQgaXQgaGFwcGVuLCBkb24ndCBkbyBhbnl0aGluZ1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBsZXQgbmV3VmFsdWUgPSAnJztcclxuICBcclxuICAgICAgaWYgKHRoaXMuZGVjaW1hbCAmJiBlLmtleSA9PT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yKSB7XHJcbiAgICAgICAgbmV3VmFsdWUgPSB0aGlzLmZvcmVjYXN0VmFsdWUoZS5rZXkpO1xyXG4gICAgICAgIGlmIChuZXdWYWx1ZS5zcGxpdCh0aGlzLmRlY2ltYWxTZXBhcmF0b3IpLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgIC8vIGhhcyB0d28gb3IgbW9yZSBkZWNpbWFsIHBvaW50c1xyXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmhhc0RlY2ltYWxQb2ludCA9IG5ld1ZhbHVlLmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKSA+IC0xO1xyXG4gICAgICAgICAgcmV0dXJuOyAvLyBBbGxvdzogb25seSBvbmUgZGVjaW1hbCBwb2ludFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBpZiAoZS5rZXkgPT09IHRoaXMubmVnYXRpdmVTaWduICYmIHRoaXMuYWxsb3dOZWdhdGl2ZXMpIHtcclxuICAgICAgICBuZXdWYWx1ZSA9IHRoaXMuZm9yZWNhc3RWYWx1ZShlLmtleSk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgbmV3VmFsdWUuY2hhckF0KDApICE9PSB0aGlzLm5lZ2F0aXZlU2lnbiB8fFxyXG4gICAgICAgICAgbmV3VmFsdWUuc3BsaXQodGhpcy5uZWdhdGl2ZVNpZ24pLmxlbmd0aCA+IDJcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5oYXNOZWdhdGl2ZVNpZ24gPSBuZXdWYWx1ZS5zcGxpdCh0aGlzLm5lZ2F0aXZlU2lnbikubGVuZ3RoID4gLTE7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIC8vIEVuc3VyZSB0aGF0IGl0IGlzIGEgbnVtYmVyIGFuZCBzdG9wIHRoZSBrZXlwcmVzc1xyXG4gICAgICBpZiAoZS5rZXkgPT09ICcgJyB8fCBpc05hTihOdW1iZXIoZS5rZXkpKSkge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgbmV3VmFsdWUgPSBuZXdWYWx1ZSB8fCB0aGlzLmZvcmVjYXN0VmFsdWUoZS5rZXkpO1xyXG4gICAgICAvLyBjaGVjayB0aGUgaW5wdXQgcGF0dGVybiBSZWdFeHBcclxuICAgICAgaWYgKHRoaXMucmVnZXgpIHtcclxuICAgICAgICBpZiAoIXRoaXMucmVnZXgudGVzdChuZXdWYWx1ZSkpIHtcclxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgY29uc3QgbmV3TnVtYmVyID0gTnVtYmVyKG5ld1ZhbHVlKTtcclxuICAgICAgaWYgKG5ld051bWJlciA+IHRoaXMubWF4IHx8IG5ld051bWJlciA8IHRoaXMubWluKSB7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgXHJcbiAgICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pXHJcbiAgICBvblBhc3RlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMuYWxsb3dQYXN0ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBwYXN0ZWRJbnB1dDogc3RyaW5nID0gJyc7XHJcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSlbJ2NsaXBib2FyZERhdGEnXSkge1xyXG4gICAgICAgICAgLy8gQnJvd3NlciBpcyBJRVxyXG4gICAgICAgICAgcGFzdGVkSW5wdXQgPSAod2luZG93IGFzIHsgW2tleTogc3RyaW5nXTogYW55IH0pW1xyXG4gICAgICAgICAgICAnY2xpcGJvYXJkRGF0YSdcclxuICAgICAgICAgIF0uZ2V0RGF0YSgndGV4dCcpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY2xpcGJvYXJkRGF0YSAmJiBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEpIHtcclxuICAgICAgICAgIC8vIE90aGVyIGJyb3dzZXJzXHJcbiAgICAgICAgICBwYXN0ZWRJbnB1dCA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICB0aGlzLnBhc3RlRGF0YShwYXN0ZWRJbnB1dCk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyB0aGlzIHByZXZlbnRzIHRoZSBwYXN0ZVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICBcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gICAgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgICAgY29uc3QgdGV4dERhdGEgPSBldmVudC5kYXRhVHJhbnNmZXI/LmdldERhdGEoJ3RleHQnKSA/PyAnJztcclxuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5wYXN0ZURhdGEodGV4dERhdGEpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgcHJpdmF0ZSBwYXN0ZURhdGEocGFzdGVkQ29udGVudDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgIGNvbnN0IHNhbml0aXplZENvbnRlbnQgPSB0aGlzLnNhbml0aXplSW5wdXQocGFzdGVkQ29udGVudCk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBzYW5pdGl6ZWRDb250ZW50LmluY2x1ZGVzKHRoaXMubmVnYXRpdmVTaWduKSAmJlxyXG4gICAgICAgIHRoaXMuaGFzTmVnYXRpdmVTaWduICYmXHJcbiAgICAgICAgIXRoaXMuZ2V0U2VsZWN0aW9uKCkuaW5jbHVkZXModGhpcy5uZWdhdGl2ZVNpZ24pXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwYXN0ZWQgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0VGV4dCcsIGZhbHNlLCBzYW5pdGl6ZWRDb250ZW50KTtcclxuICAgICAgaWYgKCFwYXN0ZWQpIHtcclxuICAgICAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQuc2V0UmFuZ2VUZXh0KSB7XHJcbiAgICAgICAgICBjb25zdCB7IHNlbGVjdGlvblN0YXJ0OiBzdGFydCwgc2VsZWN0aW9uRW5kOiBlbmQgfSA9IHRoaXMuaW5wdXRFbGVtZW50O1xyXG4gICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuc2V0UmFuZ2VUZXh0KFxyXG4gICAgICAgICAgICBzYW5pdGl6ZWRDb250ZW50LFxyXG4gICAgICAgICAgICBzdGFydCA/PyAwLFxyXG4gICAgICAgICAgICBlbmQgPz8gMCxcclxuICAgICAgICAgICAgJ2VuZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICAvLyBBbmd1bGFyJ3MgUmVhY3RpdmUgRm9ybSByZWxpZXMgb24gXCJpbnB1dFwiIGV2ZW50LCBidXQgb24gRmlyZWZveCwgdGhlIHNldFJhbmdlVGV4dCBtZXRob2QgZG9lc24ndCB0cmlnZ2VyIGl0XHJcbiAgICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIHRyaWdnZXIgaXQgb3Vyc2VsZi5cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdHlwZW9mICh3aW5kb3cgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSlbJ0luc3RhbGxUcmlnZ2VyJ10gIT09XHJcbiAgICAgICAgICAgICd1bmRlZmluZWQnXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChcclxuICAgICAgICAgICAgICBuZXcgRXZlbnQoJ2lucHV0JywgeyBjYW5jZWxhYmxlOiB0cnVlIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIEJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBzZXRSYW5nZVRleHQsIGUuZy4gSUVcclxuICAgICAgICAgIHRoaXMuaW5zZXJ0QXRDdXJzb3IodGhpcy5pbnB1dEVsZW1lbnQsIHNhbml0aXplZENvbnRlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kZWNpbWFsKSB7XHJcbiAgICAgICAgdGhpcy5oYXNEZWNpbWFsUG9pbnQgPVxyXG4gICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUuaW5kZXhPZih0aGlzLmRlY2ltYWxTZXBhcmF0b3IpID4gLTE7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5oYXNOZWdhdGl2ZVNpZ24gPVxyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLmluZGV4T2YodGhpcy5uZWdhdGl2ZVNpZ24pID4gLTE7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvLyBUaGUgZm9sbG93aW5nIDIgbWV0aG9kcyB3ZXJlIGFkZGVkIGZyb20gdGhlIGJlbG93IGFydGljbGUgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgc2V0UmFuZ2VUZXh0XHJcbiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMTA3Njk3NS9ob3ctdG8taW5zZXJ0LXRleHQtaW50by10aGUtdGV4dGFyZWEtYXQtdGhlLWN1cnJlbnQtY3Vyc29yLXBvc2l0aW9uXHJcbiAgICBwcml2YXRlIGluc2VydEF0Q3Vyc29yKG15RmllbGQ6IEhUTUxJbnB1dEVsZW1lbnQsIG15VmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICBjb25zdCBzdGFydFBvcyA9IG15RmllbGQuc2VsZWN0aW9uU3RhcnQgPz8gMDtcclxuICAgICAgY29uc3QgZW5kUG9zID0gbXlGaWVsZC5zZWxlY3Rpb25FbmQgPz8gMDtcclxuICBcclxuICAgICAgbXlGaWVsZC52YWx1ZSA9XHJcbiAgICAgICAgbXlGaWVsZC52YWx1ZS5zdWJzdHJpbmcoMCwgc3RhcnRQb3MpICtcclxuICAgICAgICBteVZhbHVlICtcclxuICAgICAgICBteUZpZWxkLnZhbHVlLnN1YnN0cmluZyhlbmRQb3MsIG15RmllbGQudmFsdWUubGVuZ3RoKTtcclxuICBcclxuICAgICAgY29uc3QgcG9zID0gc3RhcnRQb3MgKyBteVZhbHVlLmxlbmd0aDtcclxuICAgICAgbXlGaWVsZC5mb2N1cygpO1xyXG4gICAgICBteUZpZWxkLnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKTtcclxuICBcclxuICAgICAgdGhpcy50cmlnZ2VyRXZlbnQobXlGaWVsZCwgJ2lucHV0Jyk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBwcml2YXRlIHRyaWdnZXJFdmVudChlbDogSFRNTElucHV0RWxlbWVudCwgdHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgIGlmICgnY3JlYXRlRXZlbnQnIGluIGRvY3VtZW50KSB7XHJcbiAgICAgICAgLy8gbW9kZXJuIGJyb3dzZXJzLCBJRTkrXHJcbiAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XHJcbiAgICAgICAgZS5pbml0RXZlbnQodHlwZSwgZmFsc2UsIHRydWUpO1xyXG4gICAgICAgIGVsLmRpc3BhdGNoRXZlbnQoZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGVuZCBzdGFjayBvdmVyZmxvdyBjb2RlXHJcbiAgXHJcbiAgICBwcml2YXRlIHNhbml0aXplSW5wdXQoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgIGxldCByZXN1bHQgPSAnJztcclxuICAgICAgbGV0IHJlZ2V4O1xyXG4gICAgICBpZiAodGhpcy5kZWNpbWFsICYmIHRoaXMuaXNWYWxpZERlY2ltYWwoaW5wdXQpKSB7XHJcbiAgICAgICAgcmVnZXggPSBuZXcgUmVnRXhwKFxyXG4gICAgICAgICAgYCR7dGhpcy5nZXROZWdhdGl2ZVNpZ25SZWdFeHAoKX1bXjAtOSR7dGhpcy5kZWNpbWFsU2VwYXJhdG9yfV1gLFxyXG4gICAgICAgICAgJ2cnXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZWdleCA9IG5ldyBSZWdFeHAoYCR7dGhpcy5nZXROZWdhdGl2ZVNpZ25SZWdFeHAoKX1bXjAtOV1gLCAnZycpO1xyXG4gICAgICB9XHJcbiAgICAgIHJlc3VsdCA9IGlucHV0LnJlcGxhY2UocmVnZXgsICcnKTtcclxuICBcclxuICAgICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5pbnB1dEVsZW1lbnQubWF4TGVuZ3RoO1xyXG4gICAgICBpZiAobWF4TGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vIHRoZSBpbnB1dCBlbGVtZW50IGhhcyBtYXhMZW5ndGggbGltaXRcclxuICAgICAgICBjb25zdCBhbGxvd2VkTGVuZ3RoID1cclxuICAgICAgICAgIG1heExlbmd0aCAtXHJcbiAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZS5sZW5ndGggK1xyXG4gICAgICAgICAgKHJlc3VsdC5pbmNsdWRlcyhgJHt0aGlzLm5lZ2F0aXZlU2lnbn1gKSA/IDEgOiAwKTtcclxuICAgICAgICByZXN1bHQgPSBhbGxvd2VkTGVuZ3RoID4gMCA/IHJlc3VsdC5zdWJzdHJpbmcoMCwgYWxsb3dlZExlbmd0aCkgOiAnJztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gIFxyXG4gICAgcHJpdmF0ZSBnZXROZWdhdGl2ZVNpZ25SZWdFeHAoKTogc3RyaW5nIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYWxsb3dOZWdhdGl2ZXMgJiZcclxuICAgICAgICAoIXRoaXMuaGFzTmVnYXRpdmVTaWduIHx8IHRoaXMuZ2V0U2VsZWN0aW9uKCkuaW5jbHVkZXModGhpcy5uZWdhdGl2ZVNpZ24pKVxyXG4gICAgICAgID8gYCg/IV4ke3RoaXMubmVnYXRpdmVTaWdufSlgXHJcbiAgICAgICAgOiAnJztcclxuICAgIH1cclxuICBcclxuICAgIHByaXZhdGUgaXNWYWxpZERlY2ltYWwoc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgaWYgKCF0aGlzLmhhc0RlY2ltYWxQb2ludCkge1xyXG4gICAgICAgIHJldHVybiBzdHJpbmcuc3BsaXQodGhpcy5kZWNpbWFsU2VwYXJhdG9yKS5sZW5ndGggPD0gMjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyB0aGUgaW5wdXQgZWxlbWVudCBhbHJlYWR5IGhhcyBhIGRlY2ltYWwgc2VwYXJhdG9yXHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRUZXh0ICYmIHNlbGVjdGVkVGV4dC5pbmRleE9mKHRoaXMuZGVjaW1hbFNlcGFyYXRvcikgPiAtMSkge1xyXG4gICAgICAgICAgcmV0dXJuIHN0cmluZy5zcGxpdCh0aGlzLmRlY2ltYWxTZXBhcmF0b3IpLmxlbmd0aCA8PSAyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gc3RyaW5nLmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKSA8IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgXHJcbiAgICBwcml2YXRlIGdldFNlbGVjdGlvbigpOiBzdHJpbmcge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUuc3Vic3RyaW5nKFxyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID8/IDAsXHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kID8/IDBcclxuICAgICAgKTtcclxuICAgIH1cclxuICBcclxuICAgIHByaXZhdGUgZm9yZWNhc3RWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gdGhpcy5pbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPz8gMDtcclxuICAgICAgY29uc3Qgc2VsZWN0aW9uRW5kID0gdGhpcy5pbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kID8/IDA7XHJcbiAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5pbnB1dEVsZW1lbnQudmFsdWU7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgb2xkVmFsdWUuc3Vic3RyaW5nKDAsIHNlbGVjdGlvblN0YXJ0KSArXHJcbiAgICAgICAga2V5ICtcclxuICAgICAgICBvbGRWYWx1ZS5zdWJzdHJpbmcoc2VsZWN0aW9uRW5kKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH0iXX0=
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { ElementRef, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class DigitOnlyDirective implements OnChanges {
|
|
4
|
-
el: ElementRef;
|
|
5
|
-
private hasDecimalPoint;
|
|
6
|
-
private hasNegativeSign;
|
|
7
|
-
private navigationKeys;
|
|
8
|
-
decimal: boolean;
|
|
9
|
-
decimalSeparator: string;
|
|
10
|
-
allowNegatives: boolean;
|
|
11
|
-
allowPaste: boolean;
|
|
12
|
-
negativeSign: string;
|
|
13
|
-
min: number;
|
|
14
|
-
max: number;
|
|
15
|
-
pattern?: string | RegExp;
|
|
16
|
-
private regex;
|
|
17
|
-
inputElement: HTMLInputElement;
|
|
18
|
-
constructor(el: ElementRef);
|
|
19
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
20
|
-
onBeforeInput(e: InputEvent): any;
|
|
21
|
-
onKeyDown(e: KeyboardEvent): any;
|
|
22
|
-
onPaste(event: any): void;
|
|
23
|
-
onDrop(event: DragEvent): void;
|
|
24
|
-
private pasteData;
|
|
25
|
-
private insertAtCursor;
|
|
26
|
-
private triggerEvent;
|
|
27
|
-
private sanitizeInput;
|
|
28
|
-
private getNegativeSignRegExp;
|
|
29
|
-
private isValidDecimal;
|
|
30
|
-
private getSelection;
|
|
31
|
-
private forecastValue;
|
|
32
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DigitOnlyDirective, never>;
|
|
33
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<DigitOnlyDirective, "[digitOnly]", never, { "decimal": "decimal"; "decimalSeparator": "decimalSeparator"; "allowNegatives": "allowNegatives"; "allowPaste": "allowPaste"; "negativeSign": "negativeSign"; "min": "min"; "max": "max"; "pattern": "pattern"; }, {}, never>;
|
|
34
|
-
}
|