@experteam-mx/ngx-input-number 1.6.2 → 1.6.5
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/.browserslistrc +16 -0
- package/karma.conf.js +44 -0
- package/ng-package.json +11 -0
- package/package.json +5 -22
- package/{lib/di.d.ts → src/lib/di.ts} +2 -1
- package/src/lib/ngx-input-number.component.html +14 -0
- package/src/lib/ngx-input-number.component.sass +11 -0
- package/src/lib/ngx-input-number.component.spec.ts +25 -0
- package/src/lib/ngx-input-number.component.ts +160 -0
- package/src/lib/ngx-input-number.module.ts +38 -0
- package/src/lib/ngx-input-number.service.spec.ts +16 -0
- package/src/lib/ngx-input-number.service.ts +59 -0
- package/src/lib/types.ts +14 -0
- package/src/lib/typesProvider.ts +26 -0
- package/{public-api.d.ts → src/public-api.ts} +9 -5
- package/src/test.ts +27 -0
- package/tsconfig.lib.json +27 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +17 -0
- package/esm2020/experteam-mx-ngx-input-number.mjs +0 -5
- package/esm2020/lib/di.mjs +0 -3
- package/esm2020/lib/ngx-input-number.component.mjs +0 -133
- package/esm2020/lib/ngx-input-number.module.mjs +0 -49
- package/esm2020/lib/ngx-input-number.service.mjs +0 -63
- package/esm2020/lib/types.mjs +0 -5
- package/esm2020/lib/typesProvider.mjs +0 -30
- package/esm2020/public-api.mjs +0 -9
- package/experteam-mx-ngx-input-number.d.ts +0 -5
- package/fesm2015/experteam-mx-ngx-input-number.mjs +0 -282
- package/fesm2015/experteam-mx-ngx-input-number.mjs.map +0 -1
- package/fesm2020/experteam-mx-ngx-input-number.mjs +0 -280
- package/fesm2020/experteam-mx-ngx-input-number.mjs.map +0 -1
- package/lib/ngx-input-number.component.d.ts +0 -34
- package/lib/ngx-input-number.module.d.ts +0 -13
- package/lib/ngx-input-number.service.d.ts +0 -18
- package/lib/types.d.ts +0 -12
- package/lib/typesProvider.d.ts +0 -19
package/.browserslistrc
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
|
|
2
|
+
# For additional information regarding the format and rule options, please see:
|
|
3
|
+
# https://github.com/browserslist/browserslist#queries
|
|
4
|
+
|
|
5
|
+
# For the full list of supported browsers by the Angular framework, please see:
|
|
6
|
+
# https://angular.io/guide/browser-support
|
|
7
|
+
|
|
8
|
+
# You can see what browsers were selected by your queries by running:
|
|
9
|
+
# npx browserslist
|
|
10
|
+
|
|
11
|
+
last 1 Chrome version
|
|
12
|
+
last 1 Firefox version
|
|
13
|
+
last 2 Edge major versions
|
|
14
|
+
last 2 Safari major versions
|
|
15
|
+
last 2 iOS major versions
|
|
16
|
+
Firefox ESR
|
package/karma.conf.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Karma configuration file, see link for more information
|
|
2
|
+
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|
3
|
+
|
|
4
|
+
module.exports = function (config) {
|
|
5
|
+
config.set({
|
|
6
|
+
basePath: '',
|
|
7
|
+
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
|
8
|
+
plugins: [
|
|
9
|
+
require('karma-jasmine'),
|
|
10
|
+
require('karma-chrome-launcher'),
|
|
11
|
+
require('karma-jasmine-html-reporter'),
|
|
12
|
+
require('karma-coverage'),
|
|
13
|
+
require('@angular-devkit/build-angular/plugins/karma')
|
|
14
|
+
],
|
|
15
|
+
client: {
|
|
16
|
+
jasmine: {
|
|
17
|
+
// you can add configuration options for Jasmine here
|
|
18
|
+
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
|
19
|
+
// for example, you can disable the random execution with `random: false`
|
|
20
|
+
// or set a specific seed with `seed: 4321`
|
|
21
|
+
},
|
|
22
|
+
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|
23
|
+
},
|
|
24
|
+
jasmineHtmlReporter: {
|
|
25
|
+
suppressAll: true // removes the duplicated traces
|
|
26
|
+
},
|
|
27
|
+
coverageReporter: {
|
|
28
|
+
dir: require('path').join(__dirname, '../../coverage/ngx-input-number'),
|
|
29
|
+
subdir: '.',
|
|
30
|
+
reporters: [
|
|
31
|
+
{ type: 'html' },
|
|
32
|
+
{ type: 'text-summary' }
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
reporters: ['progress', 'kjhtml'],
|
|
36
|
+
port: 9876,
|
|
37
|
+
colors: true,
|
|
38
|
+
logLevel: config.LOG_INFO,
|
|
39
|
+
autoWatch: true,
|
|
40
|
+
browsers: ['Chrome'],
|
|
41
|
+
singleRun: false,
|
|
42
|
+
restartOnFileChange: true
|
|
43
|
+
});
|
|
44
|
+
};
|
package/ng-package.json
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@experteam-mx/ngx-input-number",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"peerDependencies": {},
|
|
6
6
|
"dependencies": {
|
|
@@ -11,24 +11,7 @@
|
|
|
11
11
|
"inputmask": "^5.0.7",
|
|
12
12
|
"tslib": "^2.1.0"
|
|
13
13
|
},
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"fesm2015": "fesm2015/experteam-mx-ngx-input-number.mjs",
|
|
19
|
-
"typings": "experteam-mx-ngx-input-number.d.ts",
|
|
20
|
-
"exports": {
|
|
21
|
-
"./package.json": {
|
|
22
|
-
"default": "./package.json"
|
|
23
|
-
},
|
|
24
|
-
".": {
|
|
25
|
-
"types": "./experteam-mx-ngx-input-number.d.ts",
|
|
26
|
-
"esm2020": "./esm2020/experteam-mx-ngx-input-number.mjs",
|
|
27
|
-
"es2020": "./fesm2020/experteam-mx-ngx-input-number.mjs",
|
|
28
|
-
"es2015": "./fesm2015/experteam-mx-ngx-input-number.mjs",
|
|
29
|
-
"node": "./fesm2015/experteam-mx-ngx-input-number.mjs",
|
|
30
|
-
"default": "./fesm2020/experteam-mx-ngx-input-number.mjs"
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
"sideEffects": false
|
|
34
|
-
}
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"@types/inputmask": "^5.0.1"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<div class="position-relative">
|
|
2
|
+
<input
|
|
3
|
+
*ngIf="!loading"
|
|
4
|
+
#inputElement
|
|
5
|
+
type="text"
|
|
6
|
+
class="form-control {{ addClass }}"
|
|
7
|
+
[class.is-invalid]="control.touched && control.invalid"
|
|
8
|
+
[formControl]="control"
|
|
9
|
+
[tabindex]="tabIndex"
|
|
10
|
+
[(inputMask)]="inputMask"
|
|
11
|
+
[id]="idForLabel"
|
|
12
|
+
>
|
|
13
|
+
<label class="lbl-key-invalid position-absolute top-100 end-0 p-2 d-none" [innerHTML]="lblKeyInvalidRender"></label>
|
|
14
|
+
</div>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
|
|
3
|
+
import { NgxInputNumberComponent } from './ngx-input-number.component';
|
|
4
|
+
|
|
5
|
+
describe('NgxInputNumberComponent', () => {
|
|
6
|
+
let component: NgxInputNumberComponent;
|
|
7
|
+
let fixture: ComponentFixture<NgxInputNumberComponent>;
|
|
8
|
+
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
await TestBed.configureTestingModule({
|
|
11
|
+
declarations: [ NgxInputNumberComponent ]
|
|
12
|
+
})
|
|
13
|
+
.compileComponents();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
fixture = TestBed.createComponent(NgxInputNumberComponent);
|
|
18
|
+
component = fixture.componentInstance;
|
|
19
|
+
fixture.detectChanges();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('should create', () => {
|
|
23
|
+
expect(component).toBeTruthy();
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Component, OnInit, Input, OnChanges, AfterViewInit, AfterContentInit, ElementRef, ViewChild, SimpleChanges, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { FormBuilder, Validators, FormArray, FormGroup, FormControl } from "@angular/forms";
|
|
3
|
+
import { createMask, InputmaskOptions } from '@ngneat/input-mask';
|
|
4
|
+
|
|
5
|
+
import { inputConfigs, typesProvider } from './typesProvider';
|
|
6
|
+
import { NgxInputNumberService } from './ngx-input-number.service';
|
|
7
|
+
|
|
8
|
+
@Component({
|
|
9
|
+
selector: 'app-input-number',
|
|
10
|
+
templateUrl: './ngx-input-number.component.html',
|
|
11
|
+
styleUrls: ['./ngx-input-number.component.sass']
|
|
12
|
+
})
|
|
13
|
+
export class NgxInputNumberComponent implements OnInit, OnChanges {
|
|
14
|
+
|
|
15
|
+
constructor(
|
|
16
|
+
private _ChangeDetectorRef: ChangeDetectorRef,
|
|
17
|
+
private readonly _typesProvider: typesProvider,
|
|
18
|
+
private _NgxInputNumberService: NgxInputNumberService,
|
|
19
|
+
) { }
|
|
20
|
+
|
|
21
|
+
@ViewChild('inputElement') inputElement!: ElementRef;
|
|
22
|
+
|
|
23
|
+
@Input() control!: FormControl
|
|
24
|
+
@Input() negative!: any
|
|
25
|
+
@Input() autofocus: any = false
|
|
26
|
+
@Input() decimals: any
|
|
27
|
+
@Input() max: any
|
|
28
|
+
@Input() idForLabel: any = ""
|
|
29
|
+
@Input() tabIndex: any
|
|
30
|
+
@Input() addClass: any = "form-control-sm"
|
|
31
|
+
@Input() groupSeparator: any
|
|
32
|
+
@Input() radixPoint: any
|
|
33
|
+
@Input() lblKeyInvalid: any
|
|
34
|
+
lblKeyInvalidRender: any
|
|
35
|
+
|
|
36
|
+
inputMask: InputmaskOptions<any> = {}
|
|
37
|
+
|
|
38
|
+
placeholder = "0"
|
|
39
|
+
|
|
40
|
+
loading = false
|
|
41
|
+
|
|
42
|
+
ngAfterViewInit(): void {
|
|
43
|
+
if( this.autofocus ){
|
|
44
|
+
setTimeout(()=>{
|
|
45
|
+
this.inputElement.nativeElement.focus();
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
ngAfterContentInit(): void {
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
render(){
|
|
54
|
+
this._ChangeDetectorRef.detectChanges()
|
|
55
|
+
|
|
56
|
+
this.lblKeyInvalidRender = this._NgxInputNumberService.lblKeyInvalid
|
|
57
|
+
|
|
58
|
+
this.inputMask = createMask({
|
|
59
|
+
allowMinus: this._NgxInputNumberService.negative,
|
|
60
|
+
alias: 'numeric',
|
|
61
|
+
numericInput: false,
|
|
62
|
+
inputType: "number",
|
|
63
|
+
inputmode: "numeric",
|
|
64
|
+
groupSeparator: this._NgxInputNumberService.groupSeparator,
|
|
65
|
+
radixPoint : this._NgxInputNumberService.radixPoint,
|
|
66
|
+
max : this._NgxInputNumberService.max,
|
|
67
|
+
digits: this._NgxInputNumberService.decimals,
|
|
68
|
+
digitsOptional: false,
|
|
69
|
+
placeholder: '0',
|
|
70
|
+
unmaskAsNumber: true,
|
|
71
|
+
autoUnmask: true,
|
|
72
|
+
showMaskOnFocus: false,
|
|
73
|
+
showMaskOnHover: false,
|
|
74
|
+
onBeforePaste: ( pastedValue: any, opts ) =>{
|
|
75
|
+
return pastedValue.replaceAll( opts.groupSeparator!, "" )
|
|
76
|
+
},
|
|
77
|
+
onKeyValidation: ( key, result ) => {
|
|
78
|
+
if( !result ){
|
|
79
|
+
this.inputElement.nativeElement.classList.add("key-invalid")
|
|
80
|
+
setTimeout(
|
|
81
|
+
()=>{
|
|
82
|
+
this.inputElement.nativeElement.classList.remove("key-invalid")
|
|
83
|
+
},
|
|
84
|
+
1000
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
if( this.negative !== undefined ){
|
|
91
|
+
this.inputMask.allowMinus = this.negative
|
|
92
|
+
}
|
|
93
|
+
if( this.max !== undefined ){
|
|
94
|
+
this.inputMask.max = this.max
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if( this.groupSeparator !== undefined ){
|
|
98
|
+
this.inputMask.groupSeparator = this.groupSeparator
|
|
99
|
+
}
|
|
100
|
+
if( this.radixPoint !== undefined ){
|
|
101
|
+
this.inputMask.radixPoint = this.radixPoint
|
|
102
|
+
}
|
|
103
|
+
if( this.lblKeyInvalid !== undefined ){
|
|
104
|
+
this.lblKeyInvalidRender = this.lblKeyInvalid
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if( this.decimals !== undefined ){
|
|
108
|
+
this.inputMask.digits = this.decimals
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
if( this.inputMask.digits! > 0 ){
|
|
114
|
+
this.placeholder = '0' + String(this.inputMask.radixPoint)
|
|
115
|
+
}
|
|
116
|
+
for( let x = 0; x < this.inputMask.digits!; x++ ){
|
|
117
|
+
this.placeholder += "0"
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
this.loading = false
|
|
121
|
+
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
onBlur(value: any){
|
|
125
|
+
// if( value != '' && Number( this.inputMask.digits ) > 0 ){
|
|
126
|
+
// let valueBlurSplit = String(value).split(".")
|
|
127
|
+
// let valueString = ""
|
|
128
|
+
// if( valueBlurSplit.length == 1 ){
|
|
129
|
+
// valueString = valueBlurSplit[0] + "." + String("").padEnd(Number(this.inputMask.digits), "0")
|
|
130
|
+
// }else{
|
|
131
|
+
// valueString = valueBlurSplit[0] + "." + String(valueBlurSplit[1]).padEnd(Number(this.inputMask.digits), "0")
|
|
132
|
+
// }
|
|
133
|
+
// this.control.setValue( parseFloat( valueString ) )
|
|
134
|
+
// }
|
|
135
|
+
this.control.setValue( value )
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
ngOnInit(): void {
|
|
139
|
+
this._NgxInputNumberService.getChangeEvent().subscribe(
|
|
140
|
+
( configs )=>{
|
|
141
|
+
if( configs ){
|
|
142
|
+
this.loading = true
|
|
143
|
+
|
|
144
|
+
setTimeout(() => {
|
|
145
|
+
this.render()
|
|
146
|
+
}, 0);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
ngOnChanges(changes: SimpleChanges): void {
|
|
153
|
+
this.loading = true
|
|
154
|
+
|
|
155
|
+
setTimeout(() => {
|
|
156
|
+
this.render()
|
|
157
|
+
}, 0);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { NgModule, ModuleWithProviders } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
4
|
+
|
|
5
|
+
import { NgxInputNumberComponent } from './ngx-input-number.component';
|
|
6
|
+
import { InputMaskModule } from '@ngneat/input-mask';
|
|
7
|
+
|
|
8
|
+
import { inputConfigsHelp, typesProvider, defaultTypesProvider } from './typesProvider';
|
|
9
|
+
|
|
10
|
+
@NgModule({
|
|
11
|
+
declarations: [
|
|
12
|
+
NgxInputNumberComponent
|
|
13
|
+
],
|
|
14
|
+
imports: [
|
|
15
|
+
CommonModule,
|
|
16
|
+
InputMaskModule.forRoot({ inputSelector: 'input', isAsync: true }),
|
|
17
|
+
FormsModule,
|
|
18
|
+
ReactiveFormsModule,
|
|
19
|
+
],
|
|
20
|
+
exports: [
|
|
21
|
+
NgxInputNumberComponent
|
|
22
|
+
],
|
|
23
|
+
providers:[
|
|
24
|
+
]
|
|
25
|
+
})
|
|
26
|
+
export class NgxInputNumberModule {
|
|
27
|
+
static forRoot(config: inputConfigsHelp = {} ): ModuleWithProviders<NgxInputNumberModule> {
|
|
28
|
+
return {
|
|
29
|
+
ngModule: NgxInputNumberModule,
|
|
30
|
+
providers: [
|
|
31
|
+
config.config || {
|
|
32
|
+
provide: typesProvider,
|
|
33
|
+
useClass: defaultTypesProvider
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TestBed } from '@angular/core/testing';
|
|
2
|
+
|
|
3
|
+
import { NgxInputNumberService } from './ngx-input-number.service';
|
|
4
|
+
|
|
5
|
+
describe('NgxInputNumberService', () => {
|
|
6
|
+
let service: NgxInputNumberService;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
TestBed.configureTestingModule({});
|
|
10
|
+
service = TestBed.inject(NgxInputNumberService);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it('should be created', () => {
|
|
14
|
+
expect(service).toBeTruthy();
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Injectable, Optional, Inject, EventEmitter, Output } from '@angular/core';
|
|
2
|
+
import { INPUT_CONFIG_TOKEN } from './di';
|
|
3
|
+
import { inputConfigs } from './types';
|
|
4
|
+
import { BehaviorSubject, Subject } from "rxjs";
|
|
5
|
+
|
|
6
|
+
@Injectable({
|
|
7
|
+
providedIn: 'root'
|
|
8
|
+
})
|
|
9
|
+
export class NgxInputNumberService {
|
|
10
|
+
|
|
11
|
+
changeEvent = new BehaviorSubject<boolean>(false);
|
|
12
|
+
groupSeparator = ','
|
|
13
|
+
radixPoint = '.'
|
|
14
|
+
lblKeyInvalid = 'Please enter a valid amount'
|
|
15
|
+
negative: any = true
|
|
16
|
+
max: any = undefined
|
|
17
|
+
decimals = 2
|
|
18
|
+
|
|
19
|
+
constructor(
|
|
20
|
+
@Optional() @Inject(INPUT_CONFIG_TOKEN)
|
|
21
|
+
private readonly config: inputConfigs | null,
|
|
22
|
+
) {
|
|
23
|
+
if( config != null ){
|
|
24
|
+
this.groupSeparator = config.groupSeparator!
|
|
25
|
+
this.radixPoint = config.radixPoint!
|
|
26
|
+
this.lblKeyInvalid = config.lblKeyInvalid!
|
|
27
|
+
this.negative = config.negative!
|
|
28
|
+
this.max = config.max!
|
|
29
|
+
this.decimals = config.decimals!
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
onChangeParams( config: inputConfigs ){
|
|
34
|
+
if( config.groupSeparator ){
|
|
35
|
+
this.groupSeparator = config.groupSeparator
|
|
36
|
+
}
|
|
37
|
+
if( config.radixPoint ){
|
|
38
|
+
this.radixPoint = config.radixPoint
|
|
39
|
+
}
|
|
40
|
+
if( config.lblKeyInvalid ){
|
|
41
|
+
this.lblKeyInvalid = config.lblKeyInvalid
|
|
42
|
+
}
|
|
43
|
+
if( config.negative !== undefined ){
|
|
44
|
+
this.negative = config.negative
|
|
45
|
+
}
|
|
46
|
+
if( config.max ){
|
|
47
|
+
this.max = config.max!
|
|
48
|
+
}
|
|
49
|
+
if( config.decimals ){
|
|
50
|
+
this.decimals = config.decimals
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
this.changeEvent.next( true )
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
getChangeEvent(){
|
|
57
|
+
return this.changeEvent
|
|
58
|
+
}
|
|
59
|
+
}
|
package/src/lib/types.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Provider } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
export class inputConfigs {
|
|
4
|
+
groupSeparator?: string;
|
|
5
|
+
radixPoint?: string;
|
|
6
|
+
lblKeyInvalid?: string;
|
|
7
|
+
max?: number;
|
|
8
|
+
decimals?: number;
|
|
9
|
+
negative?: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export class inputConfigsHelp {
|
|
13
|
+
config?: Provider;
|
|
14
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Injectable, Provider } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
export class inputConfigs {
|
|
4
|
+
groupSeparator?: string;
|
|
5
|
+
radixPoint?: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
@Injectable({ providedIn: 'root' })
|
|
9
|
+
export abstract class typesProvider {
|
|
10
|
+
abstract get config(): inputConfigs;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@Injectable({ providedIn: 'root' })
|
|
14
|
+
export class defaultTypesProvider extends typesProvider {
|
|
15
|
+
get config(): inputConfigs {
|
|
16
|
+
// return default config
|
|
17
|
+
return {
|
|
18
|
+
groupSeparator: ",",
|
|
19
|
+
radixPoint: "."
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export class inputConfigsHelp {
|
|
25
|
+
config?: Provider;
|
|
26
|
+
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export * from '
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ngx-input-number
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export * from './lib/typesProvider';
|
|
6
|
+
export * from './lib/ngx-input-number.service';
|
|
7
|
+
export * from './lib/ngx-input-number.component';
|
|
8
|
+
export * from './lib/ngx-input-number.module';
|
|
9
|
+
export * from '@ngneat/input-mask';
|
package/src/test.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
|
2
|
+
|
|
3
|
+
import 'zone.js';
|
|
4
|
+
import 'zone.js/testing';
|
|
5
|
+
import { getTestBed } from '@angular/core/testing';
|
|
6
|
+
import {
|
|
7
|
+
BrowserDynamicTestingModule,
|
|
8
|
+
platformBrowserDynamicTesting
|
|
9
|
+
} from '@angular/platform-browser-dynamic/testing';
|
|
10
|
+
|
|
11
|
+
declare const require: {
|
|
12
|
+
context(path: string, deep?: boolean, filter?: RegExp): {
|
|
13
|
+
<T>(id: string): T;
|
|
14
|
+
keys(): string[];
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// First, initialize the Angular testing environment.
|
|
19
|
+
getTestBed().initTestEnvironment(
|
|
20
|
+
BrowserDynamicTestingModule,
|
|
21
|
+
platformBrowserDynamicTesting(),
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
// Then we find all the tests.
|
|
25
|
+
const context = require.context('./', true, /\.spec\.ts$/);
|
|
26
|
+
// And load the modules.
|
|
27
|
+
context.keys().map(context);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
|
+
{
|
|
3
|
+
"extends": "../../tsconfig.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"outDir": "../../out-tsc/lib",
|
|
6
|
+
"target": "es2015",
|
|
7
|
+
"declaration": true,
|
|
8
|
+
"declarationMap": true,
|
|
9
|
+
"inlineSources": true,
|
|
10
|
+
"types": [],
|
|
11
|
+
"lib": [
|
|
12
|
+
"dom",
|
|
13
|
+
"es2018"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"angularCompilerOptions": {
|
|
17
|
+
"skipTemplateCodegen": true,
|
|
18
|
+
"strictMetadataEmit": true,
|
|
19
|
+
"enableResourceInlining": true,
|
|
20
|
+
"strictTemplates": false,
|
|
21
|
+
"enableIvy": false
|
|
22
|
+
},
|
|
23
|
+
"exclude": [
|
|
24
|
+
"src/test.ts",
|
|
25
|
+
"**/*.spec.ts"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
|
+
{
|
|
3
|
+
"extends": "../../tsconfig.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"outDir": "../../out-tsc/spec",
|
|
6
|
+
"types": [
|
|
7
|
+
"jasmine"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"src/test.ts"
|
|
12
|
+
],
|
|
13
|
+
"include": [
|
|
14
|
+
"**/*.spec.ts",
|
|
15
|
+
"**/*.d.ts"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwZXJ0ZWFtLW14LW5neC1pbnB1dC1udW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaW5wdXQtbnVtYmVyL3NyYy9leHBlcnRlYW0tbXgtbmd4LWlucHV0LW51bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
package/esm2020/lib/di.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const INPUT_CONFIG_TOKEN = new InjectionToken('INPUT_CONFIG');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaW5wdXQtbnVtYmVyL3NyYy9saWIvZGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlucHV0Q29uZmlncyB9IGZyb20gJy4vdHlwZXMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IElOUFVUX0NPTkZJR19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxpbnB1dENvbmZpZ3M+KCdJTlBVVF9DT05GSUcnKTsiXX0=
|