@bootkit/ng0 0.0.0-alpha.12 → 0.0.0-alpha.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/components/backdrop/index.d.ts +4 -0
- package/components/modal/index.d.ts +21 -3
- package/components/sidenav/index.d.ts +17 -4
- package/components/table/index.d.ts +1 -1
- package/fesm2022/bootkit-ng0-common.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-accordion.mjs +14 -14
- package/fesm2022/bootkit-ng0-components-accordion.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-backdrop.mjs +10 -5
- package/fesm2022/bootkit-ng0-components-backdrop.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-button.mjs +11 -11
- package/fesm2022/bootkit-ng0-components-button.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-card.mjs +12 -12
- package/fesm2022/bootkit-ng0-components-card.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-code.mjs +9 -9
- package/fesm2022/bootkit-ng0-components-code.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-collapse.mjs +14 -14
- package/fesm2022/bootkit-ng0-components-collapse.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-confirmation.mjs +14 -14
- package/fesm2022/bootkit-ng0-components-confirmation.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-form-field.mjs +14 -14
- package/fesm2022/bootkit-ng0-components-form-field.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-modal.mjs +40 -23
- package/fesm2022/bootkit-ng0-components-modal.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-nav.mjs +27 -27
- package/fesm2022/bootkit-ng0-components-nav.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-offcanvas.mjs +9 -9
- package/fesm2022/bootkit-ng0-components-offcanvas.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-overlay.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-pagination.mjs +15 -15
- package/fesm2022/bootkit-ng0-components-pagination.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-popover.mjs +11 -11
- package/fesm2022/bootkit-ng0-components-popover.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-sidenav.mjs +66 -45
- package/fesm2022/bootkit-ng0-components-sidenav.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-stepper.mjs +13 -13
- package/fesm2022/bootkit-ng0-components-stepper.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-table.mjs +55 -77
- package/fesm2022/bootkit-ng0-components-table.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-toast.mjs +7 -7
- package/fesm2022/bootkit-ng0-components-toast.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-tooltip.mjs +9 -9
- package/fesm2022/bootkit-ng0-components-tooltip.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-vertical-menu.mjs +26 -26
- package/fesm2022/bootkit-ng0-components-vertical-menu.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-data.mjs +1 -1
- package/fesm2022/bootkit-ng0-data.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-date.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-file.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-form.mjs +24 -24
- package/fesm2022/bootkit-ng0-form.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-http.mjs +3 -3
- package/fesm2022/bootkit-ng0-http.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-localization-locales.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-localization.mjs +39 -42
- package/fesm2022/bootkit-ng0-localization.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-platform-browser.mjs +7 -7
- package/fesm2022/bootkit-ng0-platform-browser.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-script.mjs +3 -3
- package/fesm2022/bootkit-ng0-script.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-security.mjs +15 -15
- package/fesm2022/bootkit-ng0-security.mjs.map +1 -1
- package/fesm2022/bootkit-ng0.mjs.map +1 -1
- package/localization/index.d.ts +3 -3
- package/package.json +13 -13
|
@@ -24,12 +24,12 @@ class EqualWithValidatorDirective {
|
|
|
24
24
|
validate(control) {
|
|
25
25
|
return equalWithValidator(this.targetValue, this.inequalityMessage)(control);
|
|
26
26
|
}
|
|
27
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
28
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.
|
|
27
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: EqualWithValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
28
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: EqualWithValidatorDirective, isStandalone: true, selector: "[ng0EqualWith]", inputs: { targetValue: ["ng0EqualWith", "targetValue"], inequalityMessage: "inequalityMessage" }, providers: [
|
|
29
29
|
{ provide: NG_VALIDATORS, useExisting: EqualWithValidatorDirective, multi: true }
|
|
30
30
|
], exportAs: ["ng0EqualWith"], ngImport: i0 });
|
|
31
31
|
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: EqualWithValidatorDirective, decorators: [{
|
|
33
33
|
type: Directive,
|
|
34
34
|
args: [{
|
|
35
35
|
selector: '[ng0EqualWith]',
|
|
@@ -69,10 +69,10 @@ class UrlValidatorDirective {
|
|
|
69
69
|
validate(control) {
|
|
70
70
|
return urlValidator()(control);
|
|
71
71
|
}
|
|
72
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
73
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.
|
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: UrlValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
73
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: UrlValidatorDirective, isStandalone: true, selector: "input[ng0Url]", inputs: { iscUrl: "iscUrl" }, providers: [{ provide: NG_VALIDATORS, useExisting: UrlValidatorDirective, multi: true }], exportAs: ["ng0Url"], ngImport: i0 });
|
|
74
74
|
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: UrlValidatorDirective, decorators: [{
|
|
76
76
|
type: Directive,
|
|
77
77
|
args: [{
|
|
78
78
|
selector: 'input[ng0Url]',
|
|
@@ -85,17 +85,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
85
85
|
}] } });
|
|
86
86
|
|
|
87
87
|
class CustomValidatorDirective {
|
|
88
|
-
validator = input.required(
|
|
88
|
+
validator = input.required({ alias: 'ng0CustomValidator' });
|
|
89
89
|
constructor() { }
|
|
90
90
|
validate(control) {
|
|
91
91
|
return this.validator()(control);
|
|
92
92
|
}
|
|
93
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
94
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.
|
|
93
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CustomValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
94
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: CustomValidatorDirective, isStandalone: true, selector: "[ng0CustomValidator]", inputs: { validator: { classPropertyName: "validator", publicName: "ng0CustomValidator", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
|
|
95
95
|
{ provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true }
|
|
96
96
|
], exportAs: ["ng0CustomValidator"], ngImport: i0 });
|
|
97
97
|
}
|
|
98
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CustomValidatorDirective, decorators: [{
|
|
99
99
|
type: Directive,
|
|
100
100
|
args: [{
|
|
101
101
|
selector: '[ng0CustomValidator]',
|
|
@@ -116,8 +116,8 @@ const items = [
|
|
|
116
116
|
CustomValidatorDirective,
|
|
117
117
|
];
|
|
118
118
|
class ValidationModule {
|
|
119
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
120
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.
|
|
119
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ValidationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
120
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: ValidationModule, imports: [
|
|
121
121
|
// ErrorDirective,
|
|
122
122
|
// FirstErrorDirective,
|
|
123
123
|
// Validators
|
|
@@ -130,9 +130,9 @@ class ValidationModule {
|
|
|
130
130
|
EqualWithValidatorDirective,
|
|
131
131
|
UrlValidatorDirective,
|
|
132
132
|
CustomValidatorDirective] });
|
|
133
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.
|
|
133
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ValidationModule });
|
|
134
134
|
}
|
|
135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ValidationModule, decorators: [{
|
|
136
136
|
type: NgModule,
|
|
137
137
|
args: [{
|
|
138
138
|
imports: items,
|
|
@@ -167,10 +167,10 @@ class FocusDirective {
|
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
171
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.
|
|
170
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
171
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: FocusDirective, isStandalone: true, selector: "[ng0Focus]", inputs: { focusOnLoad: "focusOnLoad", focusWhen: "focusWhen" }, exportAs: ["ng0Focus"], usesOnChanges: true, ngImport: i0 });
|
|
172
172
|
}
|
|
173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FocusDirective, decorators: [{
|
|
174
174
|
type: Directive,
|
|
175
175
|
args: [{
|
|
176
176
|
selector: '[ng0Focus]',
|
|
@@ -199,10 +199,10 @@ class NumberDirective {
|
|
|
199
199
|
el;
|
|
200
200
|
renderer;
|
|
201
201
|
/** */
|
|
202
|
-
minFractionDigits = input(3
|
|
203
|
-
maxFractionDigits = input(10
|
|
204
|
-
useGrouping = input(false
|
|
205
|
-
numberType = input('integer'
|
|
202
|
+
minFractionDigits = input(3);
|
|
203
|
+
maxFractionDigits = input(10);
|
|
204
|
+
useGrouping = input(false);
|
|
205
|
+
numberType = input('integer');
|
|
206
206
|
onChange = (_) => { };
|
|
207
207
|
onTouched = () => { };
|
|
208
208
|
decimalSeparator;
|
|
@@ -377,8 +377,8 @@ class NumberDirective {
|
|
|
377
377
|
}
|
|
378
378
|
return false;
|
|
379
379
|
}
|
|
380
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
381
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.
|
|
380
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: NumberDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
381
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: NumberDirective, isStandalone: true, selector: "[ng0Number]", inputs: { minFractionDigits: { classPropertyName: "minFractionDigits", publicName: "minFractionDigits", isSignal: true, isRequired: false, transformFunction: null }, maxFractionDigits: { classPropertyName: "maxFractionDigits", publicName: "maxFractionDigits", isSignal: true, isRequired: false, transformFunction: null }, useGrouping: { classPropertyName: "useGrouping", publicName: "useGrouping", isSignal: true, isRequired: false, transformFunction: null }, numberType: { classPropertyName: "numberType", publicName: "numberType", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeyDown($event)", "input": "onInput($event.target.value)", "blur": "onBlur()", "paste": "onPaste($event)" } }, providers: [
|
|
382
382
|
{
|
|
383
383
|
provide: NG_VALUE_ACCESSOR,
|
|
384
384
|
useExisting: forwardRef(() => NumberDirective),
|
|
@@ -386,7 +386,7 @@ class NumberDirective {
|
|
|
386
386
|
}
|
|
387
387
|
], ngImport: i0 });
|
|
388
388
|
}
|
|
389
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
389
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: NumberDirective, decorators: [{
|
|
390
390
|
type: Directive,
|
|
391
391
|
args: [{
|
|
392
392
|
selector: '[ng0Number]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-form.mjs","sources":["../../../projects/ng0/form/validation/validators/equal-with/equal-with-validator.ts","../../../projects/ng0/form/validation/validators/equal-with/equal-with.directive.ts","../../../projects/ng0/form/validation/validators/url/url-validator.ts","../../../projects/ng0/form/validation/validators/url/url-validator.directive.ts","../../../projects/ng0/form/validation/validators/custom/custom-validator.directive.ts","../../../projects/ng0/form/validation/validation.module.ts","../../../projects/ng0/form/focus.directive.ts","../../../projects/ng0/form/number.directive.ts","../../../projects/ng0/form/bootkit-ng0-form.ts"],"sourcesContent":["import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function equalWithValidator(targetValue?: string, inequalityMessage?: string): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const isValid = control.value === targetValue;\r\n\r\n return isValid ? null :\r\n {\r\n equalWith: {\r\n value: control.value,\r\n message: inequalityMessage\r\n }\r\n };\r\n };\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\nimport { equalWithValidator } from './equal-with-validator';\r\n\r\n@Directive({\r\n selector: '[ng0EqualWith]',\r\n exportAs: 'ng0EqualWith',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: EqualWithValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class EqualWithValidatorDirective implements Validator {\r\n @Input('ng0EqualWith') targetValue?: string;\r\n @Input() inequalityMessage?: string;\r\n\r\n constructor() {\r\n }\r\n\r\n validate(control: AbstractControl): { [key: string]: any } | null {\r\n return equalWithValidator(this.targetValue, this.inequalityMessage)(control);\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nconst urlRegEx = new RegExp('(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?');\r\n\r\nexport function urlValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const value = (control.value as string);\r\n if (!value || urlRegEx.test(value)) {\r\n return null;\r\n } else {\r\n return {\r\n 'url': {\r\n value\r\n }\r\n };\r\n }\r\n };\r\n}","import { Directive, Input } from '@angular/core';\r\nimport { FormControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\nimport { urlValidator } from './url-validator';\r\n\r\n@Directive({\r\n selector: 'input[ng0Url]',\r\n exportAs: 'ng0Url',\r\n standalone: true,\r\n providers: [{ provide: NG_VALIDATORS, useExisting: UrlValidatorDirective, multi: true }]\r\n})\r\nexport class UrlValidatorDirective implements Validator {\r\n /** Directive is enabled or disabled */\r\n @Input() iscUrl?: boolean | string = true;\r\n\r\n validate(control: FormControl): ValidationErrors | null {\r\n return urlValidator()(control);\r\n }\r\n}\r\n","import { Directive, input, Input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[ng0CustomValidator]',\r\n exportAs: 'ng0CustomValidator',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class CustomValidatorDirective implements Validator {\r\n validator = input.required<(value: any) => ValidationErrors | null>({alias: 'ng0CustomValidator'});\r\n\r\n constructor() { }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.validator()(control);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { EqualWithValidatorDirective } from './validators/equal-with/equal-with.directive';\r\nimport { UrlValidatorDirective } from './validators/url/url-validator.directive';\r\nimport { CustomValidatorDirective } from './validators/custom/custom-validator.directive';\r\n\r\nconst items = [\r\n // ErrorDirective,\r\n // FirstErrorDirective,\r\n\r\n // Validators\r\n EqualWithValidatorDirective,\r\n UrlValidatorDirective,\r\n CustomValidatorDirective,\r\n];\r\n\r\n@NgModule({\r\n imports: items,\r\n exports: items,\r\n})\r\nexport class ValidationModule { }\r\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ng0Focus]',\r\n exportAs: 'ng0Focus',\r\n standalone: true\r\n})\r\nexport class FocusDirective implements OnInit, OnChanges {\r\n /** \r\n * \r\n */\r\n @Input() focusOnLoad = true;\r\n @Input() focusWhen?: boolean;\r\n private focused = false;\r\n\r\n constructor(private elementRef: ElementRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.focusOnLoad) {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['focusWhen']) {\r\n if (this.focusWhen) {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, forwardRef, ElementRef, Renderer2, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { formatNumber } from '@angular/common';\r\n\r\nconst addThousandsSeparator = (str: string) => str.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\nconst isValidNumber = (str: string) => str.trim() !== '' && !isNaN(Number(str));\r\nconst removeChar = (str: string, charToRemove: string) => str.split(charToRemove).join('');\r\n\r\nconst Keys = {\r\n backspace: 'Backspace',\r\n tab: 'Tab',\r\n arrowLeft: 'ArrowLeft',\r\n arrowRight: 'ArrowRight',\r\n delete: 'Delete',\r\n home: 'Home',\r\n end: 'End'\r\n}\r\n\r\n@Directive({\r\n selector: '[ng0Number]',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NumberDirective),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class NumberDirective implements ControlValueAccessor {\r\n /** */\r\n minFractionDigits = input<number | undefined>(3);\r\n maxFractionDigits = input<number| undefined>(10);\r\n useGrouping = input<boolean>(false);\r\n numberType = input<'decimal' | 'integer'>('integer');\r\n private onChange = (_: any) => { };\r\n private onTouched = () => { };\r\n private decimalSeparator!: string;\r\n private thousandsSeparator: string = ',';\r\n private selectionStart: number = 0;\r\n private selectionEnd: number = 0;\r\n private isCursorInsideIntegerPart: boolean = false;\r\n private decimalSeparatorPosition = -1;\r\n private value?: number;\r\n private setProperty = (prop: string, value: any) => this.renderer.setProperty(this.el.nativeElement, prop, value);\r\n\r\n constructor(\r\n private el: ElementRef<HTMLInputElement>,\r\n private renderer: Renderer2,\r\n // private locale: Locale,\r\n ) { }\r\n\r\n ngOnInit() {\r\n // Use Intl.NumberFormat to find decimal separator for locale\r\n const formatted = formatNumber(1.1, 'en', '1.1-1');\r\n this.decimalSeparator = formatted.replace(/\\d/g, '') || '.';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.setProperty('disabled', isDisabled);\r\n }\r\n\r\n writeValue(value: any): void {\r\n var inputValue: string;\r\n\r\n if (value === undefined || value === null) {\r\n inputValue = '';\r\n this.value = undefined;\r\n } else if (typeof value === 'number') {\r\n inputValue = this.formatNumber(value);\r\n this.value = value;\r\n }\r\n else if (typeof value === 'string') {\r\n const parsedValue = this.value = Number.parseFloat(value);\r\n inputValue = this.formatNumber(parsedValue);\r\n } else {\r\n console.error('NumberDirective: Unsupported value type', value);\r\n inputValue = 'Invalid';\r\n }\r\n\r\n this.setProperty('value', inputValue);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n private onKeyDown(event: KeyboardEvent) {\r\n this.updateCursorInfo();\r\n\r\n if (!this.isKeyAllowed(event.key)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const key = event.key;\r\n\r\n if (key == Keys.backspace) {\r\n if (this.selectionStart > 1 && (this.selectionStart === this.selectionEnd)) {\r\n let value = this.el.nativeElement.value;\r\n let beforeSelection = value.charAt(this.selectionStart - 1);\r\n if (beforeSelection === ',') {\r\n // If the character before the cursor is a comma, we need to skip it\r\n this.setProperty('selectionStart', this.selectionStart - 2);\r\n }\r\n }\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event.target.value'])\r\n private onInput(s: string) {\r\n if (s === '') {\r\n this.value = undefined;\r\n this.onChange(undefined);\r\n return;\r\n }\r\n\r\n this.updateCursorInfo();\r\n\r\n if (this.isCursorInsideIntegerPart) {\r\n this.formatIntegerPart(s);\r\n }\r\n\r\n var number = Number(removeChar(this.el.nativeElement.value, this.thousandsSeparator));\r\n this.value = isNaN(number) ? undefined : number;\r\n this.onChange(this.value);\r\n }\r\n\r\n private formatIntegerPart(value: string) {\r\n // Format the input value\r\n const integerPart = value.split(this.decimalSeparator)[0];\r\n const decimalPart = value.split(this.decimalSeparator)[1];\r\n\r\n if (integerPart.length <= 3) {\r\n return;\r\n }\r\n\r\n let normalizedIntegerPart = removeChar(integerPart, this.thousandsSeparator); // Remove commas\r\n\r\n let formattedValue = addThousandsSeparator(normalizedIntegerPart);\r\n if (decimalPart !== undefined) {\r\n formattedValue += this.decimalSeparator + decimalPart;\r\n }\r\n\r\n this.setProperty('value', formattedValue);\r\n let newSelectionStart: number;\r\n\r\n // fix the cursor position after formatting\r\n if (value.length == 1) {\r\n newSelectionStart = 1;\r\n } else {\r\n const newValueLength = formattedValue.length;\r\n const cursorJump = newValueLength - value.length;\r\n newSelectionStart = Math.max(0, this.selectionStart + cursorJump);\r\n }\r\n\r\n this.setProperty('selectionStart', newSelectionStart);\r\n this.setProperty('selectionEnd', newSelectionStart);\r\n\r\n // return formattedValue;\r\n }\r\n\r\n @HostListener('blur')\r\n private onBlur() {\r\n if (this.value !== undefined) {\r\n let formattedValue = this.formatNumber(this.value);\r\n this.setProperty('value', formattedValue);\r\n }\r\n\r\n this.onTouched();\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n private onPaste(event: ClipboardEvent) {\r\n // event.\r\n // value = value.trim();\r\n }\r\n\r\n private updateCursorInfo() {\r\n let value = this.el.nativeElement.value;\r\n this.selectionStart = this.el.nativeElement.selectionStart || 0;\r\n this.selectionEnd = this.el.nativeElement.selectionEnd || 0;\r\n\r\n this.decimalSeparatorPosition = value.indexOf(this.decimalSeparator);\r\n if (this.decimalSeparatorPosition > -1) {\r\n this.isCursorInsideIntegerPart = (this.selectionStart <= this.decimalSeparatorPosition);\r\n } else {\r\n this.isCursorInsideIntegerPart = true;\r\n }\r\n }\r\n\r\n private formatNumber(n: number): string {\r\n var isInteger = this.numberType() == 'integer';\r\n return new Intl.NumberFormat('en-US', {\r\n useGrouping: this.useGrouping(),\r\n minimumFractionDigits: isInteger ? 0 : this.minFractionDigits(),\r\n maximumFractionDigits: isInteger ? 0 : this.maxFractionDigits(),\r\n style: 'decimal',\r\n }).format(n);\r\n }\r\n\r\n private isKeyAllowed(key: string) {\r\n const allowedKeys = [Keys.backspace, Keys.tab, Keys.arrowLeft, Keys.arrowRight, Keys.delete, Keys.home, Keys.end];\r\n const input = this.el.nativeElement;\r\n const value = input.value;\r\n\r\n if (allowedKeys.includes(key)) {\r\n return true; // allow control/navigation keys\r\n }\r\n\r\n // Allow one leading minus\r\n if (key === '-') {\r\n return (input.selectionStart === 0 || input.selectionEnd === 0) && value.charAt(0) !== '-';\r\n }\r\n\r\n // Allow one dot for decimal\r\n if (key === this.decimalSeparator) {\r\n return (this.numberType() == 'decimal') &&\r\n (!value.includes(this.decimalSeparator)) &&\r\n (this.selectionStart == input.value.length);\r\n }\r\n\r\n // Allow numbers only\r\n if (/^\\d$/.test(key)) {\r\n if (this.isCursorInsideIntegerPart) {\r\n return true;\r\n } else {\r\n var decimalPart = value.split(this.decimalSeparator)[1];\r\n var maxFractionDigits = this.maxFractionDigits();\r\n if (maxFractionDigits != undefined && decimalPart.length < maxFractionDigits) {\r\n return true;\r\n } else {\r\n return this.selectionStart !== this.selectionEnd; // allow a new digit if a substring is selected\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-form.mjs","sources":["../../../projects/ng0/form/validation/validators/equal-with/equal-with-validator.ts","../../../projects/ng0/form/validation/validators/equal-with/equal-with.directive.ts","../../../projects/ng0/form/validation/validators/url/url-validator.ts","../../../projects/ng0/form/validation/validators/url/url-validator.directive.ts","../../../projects/ng0/form/validation/validators/custom/custom-validator.directive.ts","../../../projects/ng0/form/validation/validation.module.ts","../../../projects/ng0/form/focus.directive.ts","../../../projects/ng0/form/number.directive.ts","../../../projects/ng0/form/bootkit-ng0-form.ts"],"sourcesContent":["import { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport function equalWithValidator(targetValue?: string, inequalityMessage?: string): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n const isValid = control.value === targetValue;\n\n return isValid ? null :\n {\n equalWith: {\n value: control.value,\n message: inequalityMessage\n }\n };\n };\n}\n","import { Directive, Input } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\nimport { equalWithValidator } from './equal-with-validator';\n\n@Directive({\n selector: '[ng0EqualWith]',\n exportAs: 'ng0EqualWith',\n standalone: true,\n providers: [\n { provide: NG_VALIDATORS, useExisting: EqualWithValidatorDirective, multi: true }\n ]\n})\nexport class EqualWithValidatorDirective implements Validator {\n @Input('ng0EqualWith') targetValue?: string;\n @Input() inequalityMessage?: string;\n\n constructor() {\n }\n\n validate(control: AbstractControl): { [key: string]: any } | null {\n return equalWithValidator(this.targetValue, this.inequalityMessage)(control);\n }\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nconst urlRegEx = new RegExp('(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?');\n\nexport function urlValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n const value = (control.value as string);\n if (!value || urlRegEx.test(value)) {\n return null;\n } else {\n return {\n 'url': {\n value\n }\n };\n }\n };\n}","import { Directive, Input } from '@angular/core';\nimport { FormControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\nimport { urlValidator } from './url-validator';\n\n@Directive({\n selector: 'input[ng0Url]',\n exportAs: 'ng0Url',\n standalone: true,\n providers: [{ provide: NG_VALIDATORS, useExisting: UrlValidatorDirective, multi: true }]\n})\nexport class UrlValidatorDirective implements Validator {\n /** Directive is enabled or disabled */\n @Input() iscUrl?: boolean | string = true;\n\n validate(control: FormControl): ValidationErrors | null {\n return urlValidator()(control);\n }\n}\n","import { Directive, input, Input } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\n@Directive({\n selector: '[ng0CustomValidator]',\n exportAs: 'ng0CustomValidator',\n standalone: true,\n providers: [\n { provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true }\n ]\n})\nexport class CustomValidatorDirective implements Validator {\n validator = input.required<(value: any) => ValidationErrors | null>({alias: 'ng0CustomValidator'});\n\n constructor() { }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this.validator()(control);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { EqualWithValidatorDirective } from './validators/equal-with/equal-with.directive';\nimport { UrlValidatorDirective } from './validators/url/url-validator.directive';\nimport { CustomValidatorDirective } from './validators/custom/custom-validator.directive';\n\nconst items = [\n // ErrorDirective,\n // FirstErrorDirective,\n\n // Validators\n EqualWithValidatorDirective,\n UrlValidatorDirective,\n CustomValidatorDirective,\n];\n\n@NgModule({\n imports: items,\n exports: items,\n})\nexport class ValidationModule { }\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges, OnInit } from '@angular/core';\n\n@Directive({\n selector: '[ng0Focus]',\n exportAs: 'ng0Focus',\n standalone: true\n})\nexport class FocusDirective implements OnInit, OnChanges {\n /** \n * \n */\n @Input() focusOnLoad = true;\n @Input() focusWhen?: boolean;\n private focused = false;\n\n constructor(private elementRef: ElementRef) {\n }\n\n ngOnInit(): void {\n if (this.focusOnLoad) {\n setTimeout(() => {\n this.elementRef.nativeElement.focus();\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['focusWhen']) {\n if (this.focusWhen) {\n setTimeout(() => {\n this.elementRef.nativeElement.focus();\n });\n }\n }\n }\n}\n","import { Directive, HostListener, forwardRef, ElementRef, Renderer2, input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { formatNumber } from '@angular/common';\n\nconst addThousandsSeparator = (str: string) => str.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\nconst isValidNumber = (str: string) => str.trim() !== '' && !isNaN(Number(str));\nconst removeChar = (str: string, charToRemove: string) => str.split(charToRemove).join('');\n\nconst Keys = {\n backspace: 'Backspace',\n tab: 'Tab',\n arrowLeft: 'ArrowLeft',\n arrowRight: 'ArrowRight',\n delete: 'Delete',\n home: 'Home',\n end: 'End'\n}\n\n@Directive({\n selector: '[ng0Number]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberDirective),\n multi: true\n }\n ]\n})\nexport class NumberDirective implements ControlValueAccessor {\n /** */\n minFractionDigits = input<number | undefined>(3);\n maxFractionDigits = input<number| undefined>(10);\n useGrouping = input<boolean>(false);\n numberType = input<'decimal' | 'integer'>('integer');\n private onChange = (_: any) => { };\n private onTouched = () => { };\n private decimalSeparator!: string;\n private thousandsSeparator: string = ',';\n private selectionStart: number = 0;\n private selectionEnd: number = 0;\n private isCursorInsideIntegerPart: boolean = false;\n private decimalSeparatorPosition = -1;\n private value?: number;\n private setProperty = (prop: string, value: any) => this.renderer.setProperty(this.el.nativeElement, prop, value);\n\n constructor(\n private el: ElementRef<HTMLInputElement>,\n private renderer: Renderer2,\n // private locale: Locale,\n ) { }\n\n ngOnInit() {\n // Use Intl.NumberFormat to find decimal separator for locale\n const formatted = formatNumber(1.1, 'en', '1.1-1');\n this.decimalSeparator = formatted.replace(/\\d/g, '') || '.';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.setProperty('disabled', isDisabled);\n }\n\n writeValue(value: any): void {\n var inputValue: string;\n\n if (value === undefined || value === null) {\n inputValue = '';\n this.value = undefined;\n } else if (typeof value === 'number') {\n inputValue = this.formatNumber(value);\n this.value = value;\n }\n else if (typeof value === 'string') {\n const parsedValue = this.value = Number.parseFloat(value);\n inputValue = this.formatNumber(parsedValue);\n } else {\n console.error('NumberDirective: Unsupported value type', value);\n inputValue = 'Invalid';\n }\n\n this.setProperty('value', inputValue);\n }\n\n @HostListener('keydown', ['$event'])\n private onKeyDown(event: KeyboardEvent) {\n this.updateCursorInfo();\n\n if (!this.isKeyAllowed(event.key)) {\n event.preventDefault();\n return;\n }\n\n const key = event.key;\n\n if (key == Keys.backspace) {\n if (this.selectionStart > 1 && (this.selectionStart === this.selectionEnd)) {\n let value = this.el.nativeElement.value;\n let beforeSelection = value.charAt(this.selectionStart - 1);\n if (beforeSelection === ',') {\n // If the character before the cursor is a comma, we need to skip it\n this.setProperty('selectionStart', this.selectionStart - 2);\n }\n }\n }\n }\n\n @HostListener('input', ['$event.target.value'])\n private onInput(s: string) {\n if (s === '') {\n this.value = undefined;\n this.onChange(undefined);\n return;\n }\n\n this.updateCursorInfo();\n\n if (this.isCursorInsideIntegerPart) {\n this.formatIntegerPart(s);\n }\n\n var number = Number(removeChar(this.el.nativeElement.value, this.thousandsSeparator));\n this.value = isNaN(number) ? undefined : number;\n this.onChange(this.value);\n }\n\n private formatIntegerPart(value: string) {\n // Format the input value\n const integerPart = value.split(this.decimalSeparator)[0];\n const decimalPart = value.split(this.decimalSeparator)[1];\n\n if (integerPart.length <= 3) {\n return;\n }\n\n let normalizedIntegerPart = removeChar(integerPart, this.thousandsSeparator); // Remove commas\n\n let formattedValue = addThousandsSeparator(normalizedIntegerPart);\n if (decimalPart !== undefined) {\n formattedValue += this.decimalSeparator + decimalPart;\n }\n\n this.setProperty('value', formattedValue);\n let newSelectionStart: number;\n\n // fix the cursor position after formatting\n if (value.length == 1) {\n newSelectionStart = 1;\n } else {\n const newValueLength = formattedValue.length;\n const cursorJump = newValueLength - value.length;\n newSelectionStart = Math.max(0, this.selectionStart + cursorJump);\n }\n\n this.setProperty('selectionStart', newSelectionStart);\n this.setProperty('selectionEnd', newSelectionStart);\n\n // return formattedValue;\n }\n\n @HostListener('blur')\n private onBlur() {\n if (this.value !== undefined) {\n let formattedValue = this.formatNumber(this.value);\n this.setProperty('value', formattedValue);\n }\n\n this.onTouched();\n }\n\n @HostListener('paste', ['$event'])\n private onPaste(event: ClipboardEvent) {\n // event.\n // value = value.trim();\n }\n\n private updateCursorInfo() {\n let value = this.el.nativeElement.value;\n this.selectionStart = this.el.nativeElement.selectionStart || 0;\n this.selectionEnd = this.el.nativeElement.selectionEnd || 0;\n\n this.decimalSeparatorPosition = value.indexOf(this.decimalSeparator);\n if (this.decimalSeparatorPosition > -1) {\n this.isCursorInsideIntegerPart = (this.selectionStart <= this.decimalSeparatorPosition);\n } else {\n this.isCursorInsideIntegerPart = true;\n }\n }\n\n private formatNumber(n: number): string {\n var isInteger = this.numberType() == 'integer';\n return new Intl.NumberFormat('en-US', {\n useGrouping: this.useGrouping(),\n minimumFractionDigits: isInteger ? 0 : this.minFractionDigits(),\n maximumFractionDigits: isInteger ? 0 : this.maxFractionDigits(),\n style: 'decimal',\n }).format(n);\n }\n\n private isKeyAllowed(key: string) {\n const allowedKeys = [Keys.backspace, Keys.tab, Keys.arrowLeft, Keys.arrowRight, Keys.delete, Keys.home, Keys.end];\n const input = this.el.nativeElement;\n const value = input.value;\n\n if (allowedKeys.includes(key)) {\n return true; // allow control/navigation keys\n }\n\n // Allow one leading minus\n if (key === '-') {\n return (input.selectionStart === 0 || input.selectionEnd === 0) && value.charAt(0) !== '-';\n }\n\n // Allow one dot for decimal\n if (key === this.decimalSeparator) {\n return (this.numberType() == 'decimal') &&\n (!value.includes(this.decimalSeparator)) &&\n (this.selectionStart == input.value.length);\n }\n\n // Allow numbers only\n if (/^\\d$/.test(key)) {\n if (this.isCursorInsideIntegerPart) {\n return true;\n } else {\n var decimalPart = value.split(this.decimalSeparator)[1];\n var maxFractionDigits = this.maxFractionDigits();\n if (maxFractionDigits != undefined && decimalPart.length < maxFractionDigits) {\n return true;\n } else {\n return this.selectionStart !== this.selectionEnd; // allow a new digit if a substring is selected\n }\n }\n }\n\n return false;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -196,10 +196,10 @@ class HttpService {
|
|
|
196
196
|
}
|
|
197
197
|
return { found: false, data: undefined };
|
|
198
198
|
}
|
|
199
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
200
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
199
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: i0.TransferState }, { token: i0.Injector }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
200
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: HttpService });
|
|
201
201
|
}
|
|
202
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: HttpService, decorators: [{
|
|
203
203
|
type: Injectable
|
|
204
204
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i0.TransferState }, { type: i0.Injector }, { type: undefined, decorators: [{
|
|
205
205
|
type: Inject,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-http.mjs","sources":["../../../projects/ng0/http/provide.ts","../../../projects/ng0/http/http.service.ts","../../../projects/ng0/http/types.ts","../../../projects/ng0/http/data-request-resolvers/http-data-request-resolver-1.ts","../../../projects/ng0/http/bootkit-ng0-http.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from \"@angular/core\";\r\nimport { HttpDataRequestResolver } from \"./types\";\r\nimport { HttpService } from \"./http.service\";\r\n\r\nexport const HTTP_SERVICE_CONFIG = new InjectionToken<HttpServiceConfig>('HttpServiceConfig');\r\n\r\n/**\r\n * Configuration for the HttpService.\r\n */\r\nexport interface HttpServiceConfig {\r\n /**\r\n * Base URL for the HTTP requests.\r\n * This is prepended to all request URLs.\r\n */\r\n baseUrl?: string;\r\n\r\n /**\r\n * A Resolver function to convert DataRequest to DataResult.\r\n */\r\n dataRequestResolver?: HttpDataRequestResolver;\r\n}\r\n\r\nexport interface HttpServiceFeature { \r\n ɵproviders: Array<Provider | EnvironmentProviders>;\r\n}\r\n\r\n/**\r\n * Provides the configuration for the HttpService.\r\n * @param config \r\n * @returns \r\n */\r\nexport function provideHttpService(config?: HttpServiceConfig, ...features: Partial<HttpServiceFeature>[]) {\r\n // const mergedfeatures = Object.assign({}, ...features);\r\n return makeEnvironmentProviders([\r\n HttpService,\r\n { provide: HTTP_SERVICE_CONFIG, useValue: config || {} },\r\n features.map((feature) => feature.ɵproviders),\r\n ]);\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, of, Subject, tap } from 'rxjs';\r\nimport { HttpRequestOptions, HttpRequestEvent } from './types';\r\nimport { inject, Inject, Injectable, Injector, makeStateKey, PLATFORM_ID, runInInjectionContext, TransferState } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\r\nimport { HTTP_SERVICE_CONFIG } from './provide';\r\n\r\n/**\r\n * HttpService provides a simple HTTP client for making requests.\r\n * It supports GET, POST, PUT, DELETE methods and can handle DataRequest objects.\r\n * It also supports transfer state for server-side rendering.\r\n * It emits events for request lifecycle: Send, Progress, Complete and Error.\r\n * It can be configured with a base URL and a default DataRequest resolver.\r\n * It can also handle multipart/form-data requests.\r\n */\r\n@Injectable()\r\nexport class HttpService {\r\n private _eventsSubject = new Subject<HttpRequestEvent>();\r\n private _baseUrl?: string;\r\n\r\n public events = this._eventsSubject.asObservable();\r\n public defaultHeaders?: HttpHeaders;\r\n\r\n private readonly _config = inject(HTTP_SERVICE_CONFIG);\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private transferState: TransferState,\r\n private injector: Injector,\r\n @Inject(PLATFORM_ID) private platformId: object,\r\n ) {\r\n this._baseUrl = this._config.baseUrl ?? '';\r\n }\r\n\r\n /**\r\n * Sends a GET request to the specified URL.\r\n * @param url The URL to send the request to.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public get<T>(url: string, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n const transferStateData = this._findInTransferState<T>(options);\r\n if (transferStateData.found) {\r\n return of(transferStateData.data!);\r\n }\r\n\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let obs = this.http.get<T>(this._makeUrl(url, options), options as any).pipe(\r\n tap(result => {\r\n if (isPlatformServer(this.platformId) && options?.transferState) {\r\n const key = makeStateKey<T>(options.id);\r\n this.transferState.set(key, result as T);\r\n }\r\n })\r\n );\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n\r\n /**\r\n * Sends a DataRequest to the specified URL and returns a DataResult.\r\n * This method is used for paginated or filtered data requests.\r\n * It uses the configured DataRequestResolver to handle the request. \r\n * @param url The URL to send the request to.\r\n * @param request The DataRequest object containing the request parameters.\r\n * @param options The options for the request.\r\n * @returns An observable of DataResult<T>.\r\n */\r\n public getDataResult<T>(url: string, request: DataRequest, options?: HttpRequestOptions): Observable<DataResult<T>> {\r\n this._verifyOptions(options);\r\n const transferStateData = this._findInTransferState<DataResult<T>>(options);\r\n if (transferStateData.found) {\r\n return of(transferStateData.data!);\r\n }\r\n\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let resolver = this._config.dataRequestResolver;\r\n if (!resolver) {\r\n throw new Error('No HttpDataRequestResolver provided.');\r\n }\r\n\r\n const URL = this._makeUrl(url, options);\r\n let obs = runInInjectionContext<Observable<DataResult<T>>>(this.injector, resolver.bind(null, URL, request, options));\r\n if (!(obs instanceof Observable)) {\r\n throw Error('HttpDataRequestResolver should return an observable.');\r\n }\r\n\r\n return this._handleEvents(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a POST request to the specified URL with the given body.\r\n * @param url The URL to send the request to.\r\n * @param body The body of the request.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public post<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n const BODY = this._makeBody(body, options);\r\n let obs = this.http.post(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a PUT request to the specified URL with the given body.\r\n * @param url The URL to send the request to.\r\n * @param body The body of the request.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public put<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n const BODY = this._makeBody(body, options);\r\n let obs = this.http.put(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a DELETE request to the specified URL.\r\n * @param url The URL to send the request to.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public delete<T>(url: string, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let obs = this.http.delete(this._makeUrl(url, options), options as any)\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n private _makeUrl(url: string, options?: HttpRequestOptions) {\r\n return (options?.pathType === 'absolute') ? url : (this._baseUrl + url);\r\n }\r\n\r\n private _makeBody(body: any, options?: HttpRequestOptions) {\r\n if (options?.contentType === 'multipart/form-data') {\r\n const formData = new FormData();\r\n for (const key in body) {\r\n if (body.hasOwnProperty(key)) {\r\n const field = body[key];\r\n let value;\r\n\r\n if (typeof field === 'string' || field instanceof File) {\r\n value = field;\r\n } else if (typeof field === 'number') {\r\n value = field.toString();\r\n } else if (typeof field === 'object') {\r\n value = JSON.stringify(field);\r\n }\r\n\r\n if (value) {\r\n formData.append(key, value);\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n }\r\n\r\n return body;\r\n }\r\n\r\n private _handleEvents<T>(o: Observable<any>, url: string, options?: HttpRequestOptions): Observable<T> {\r\n return o.pipe(\r\n tap({\r\n next: r => {\r\n this._eventsSubject.next({ type: 'Complete', url, options, response: r });\r\n },\r\n error: e => {\r\n this._eventsSubject.next({ type: 'Error', url, options, error: e });\r\n }\r\n })\r\n )\r\n }\r\n\r\n private _verifyOptions(options?: HttpRequestOptions) {\r\n if (options) {\r\n if (options.transferState && !options.id) {\r\n throw Error('To use transferState, set request id')\r\n }\r\n\r\n if (this.transferState && (options.observe == 'events' || options.observe == 'response')) {\r\n throw Error('TransferState is only supported with observe == body.');\r\n }\r\n }\r\n }\r\n\r\n private _findInTransferState<T>(options?: HttpRequestOptions): { found: boolean, data: T | undefined } {\r\n if (!options?.transferState || isPlatformServer(this.platformId)) {\r\n return { found: false, data: undefined };\r\n }\r\n\r\n const key = makeStateKey<T>(options.id);\r\n if (this.transferState.hasKey(key)) {\r\n const data = this.transferState.get<T>(key, null!);\r\n if ((options.transferState as any)?.['clearAfterUse']) {\r\n this.transferState.remove(key); // Free memory\r\n }\r\n\r\n return { found: true, data: data };\r\n }\r\n\r\n return { found: false, data: undefined };\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface HttpRequestOptions {\r\n /** Http request ID */\r\n id?: any;\r\n params?: HttpParams | Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\r\n headers?: HttpHeaders | Record<string, string | string[]>;\r\n pathType?: 'relative' | 'absolute';\r\n responseType?: 'json' | 'blob' | 'text';\r\n contentType?: 'json' | 'multipart/form-data';\r\n reportProgress?: boolean;\r\n observe?: 'response' | 'body' | 'events';\r\n\r\n /**\r\n * Additional data to associate with this object.\r\n */\r\n tag?: Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\r\n\r\n /** \r\n * Save response in transfer state \r\n * \r\n */\r\n transferState?: boolean | {\r\n /**\r\n * Clear transfer state after first read.\r\n */\r\n clearAfterUse?: boolean;\r\n };\r\n}\r\n\r\n/**\r\n * HttpDataRequestResolver is a function that takes a URL, a DataRequest, and options,\r\n * and returns an Observable that emits a DataResult.\r\n * This is used to convert a DataRequest into query parameters or request body for an HTTP request.\r\n * @param url The URL to send the request to.\r\n * @param dataRequest The DataRequest to convert.\r\n * @param options Additional options for the request, such as headers.\r\n */\r\nexport type HttpDataRequestResolver<T = any> = (url: string, dataRequest: DataRequest, options?: HttpRequestOptions) => Observable<DataResult<T>>;\r\n\r\nexport interface HttpRequestEventBase {\r\n type: 'Send' | 'Complete' | 'Progress' | 'Error';\r\n url: string;\r\n options?: HttpRequestOptions\r\n}\r\n\r\nexport interface HttpRequestSendEvent extends HttpRequestEventBase {\r\n type: 'Send';\r\n}\r\n\r\nexport interface HttpRequestCompleteEvent extends HttpRequestEventBase {\r\n type: 'Complete';\r\n response?: any;\r\n}\r\n\r\nexport interface HttpRequestProgressEvent extends HttpRequestEventBase {\r\n type: 'Progress';\r\n}\r\n\r\nexport interface HttpRequestErrorEvent extends HttpRequestEventBase {\r\n type: 'Error';\r\n error: any;\r\n}\r\n\r\nexport type HttpRequestEvent = HttpRequestSendEvent | HttpRequestCompleteEvent | HttpRequestProgressEvent | HttpRequestErrorEvent;\r\n\r\n/**\r\n * HttpDataRequestWriter is a function that takes an HTTP request and a DataRequest\r\n * and writes the DataRequest parameters to the HTTP request.\r\n * This is used to convert a DataRequest into query parameters or request body.\r\n * @param url The URL to send the request to.\r\n * @param dataRequest The DataRequest to convert.\r\n * @param httpClient The HttpClient to use for the request.\r\n * @param options Additional options for the request, such as headers.\r\n * @template T data item type\r\n * @returns An Observable that emits the DataResult.\r\n */\r\n","import { DataRequest, DataResult } from \"@bootkit/ng0/data\";\r\nimport { HttpRequestOptions } from \"../types\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { inject } from \"@angular/core\";\r\n\r\n/**\r\n * Default implementation of httpDataRequestResolver1.\r\n * It adds DataRequest parameters as query string to the HTTP request.\r\n * @param url \r\n * @param dataRequest \r\n * @param options\r\n * @template T data item type\r\n * @returns \r\n */\r\nexport function httpDataRequestResolver1<T = any>(\r\n url: string,\r\n dataRequest: DataRequest,\r\n options?: HttpRequestOptions): Observable<DataResult<T>> {\r\n var query: Record<string, any> = {};\r\n\r\n const httpClient = inject(HttpClient);\r\n\r\n if (dataRequest.page) {\r\n query['page[size]'] = dataRequest.page.size;\r\n query['page[index]'] = dataRequest.page.index;\r\n }\r\n\r\n if (dataRequest.sort) {\r\n query['sort[field]'] = dataRequest.sort.field;\r\n query['sort[asc]'] = dataRequest.sort.asc;\r\n }\r\n\r\n if (Array.isArray(dataRequest.filters)) {\r\n for (let i = 0; i < dataRequest.filters.length; i++) {\r\n const filter = dataRequest.filters[i];\r\n query[`filters[${i}].field`] = filter.field;\r\n query[`filters[${i}].operator`] = filter.operator;\r\n query[`filters[${i}].value`] = filter.value;\r\n }\r\n }\r\n\r\n if (typeof dataRequest.computeTotal == 'boolean') {\r\n query['computeTotal'] = dataRequest.computeTotal;\r\n }\r\n\r\n return httpClient.get<{ data: T[], total?: number }>(url, {\r\n params: query,\r\n headers: options?.headers,\r\n }).pipe(\r\n map(result => {\r\n return new DataResult<T>(result.data, result.total)\r\n })\r\n );\r\n}\r\n\r\n// /**\r\n// * Provides httpDataRequestResolver1.\r\n// * This is used to convert a DataRequest into query parameters for the HTTP (GET) request.\r\n// * @returns \r\n// */\r\n// export function withHttpDataRequestResolver1(): HttpServiceFeature {\r\n// return {\r\n// ɵproviders: [\r\n// { provide: DEFAULT_DATA_REQUEST_RESOLVER, useValue: HttpDataRequestResolver1 }\r\n// ]\r\n// };\r\n// }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-http.mjs","sources":["../../../projects/ng0/http/provide.ts","../../../projects/ng0/http/http.service.ts","../../../projects/ng0/http/types.ts","../../../projects/ng0/http/data-request-resolvers/http-data-request-resolver-1.ts","../../../projects/ng0/http/bootkit-ng0-http.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from \"@angular/core\";\nimport { HttpDataRequestResolver } from \"./types\";\nimport { HttpService } from \"./http.service\";\n\nexport const HTTP_SERVICE_CONFIG = new InjectionToken<HttpServiceConfig>('HttpServiceConfig');\n\n/**\n * Configuration for the HttpService.\n */\nexport interface HttpServiceConfig {\n /**\n * Base URL for the HTTP requests.\n * This is prepended to all request URLs.\n */\n baseUrl?: string;\n\n /**\n * A Resolver function to convert DataRequest to DataResult.\n */\n dataRequestResolver?: HttpDataRequestResolver;\n}\n\nexport interface HttpServiceFeature { \n ɵproviders: Array<Provider | EnvironmentProviders>;\n}\n\n/**\n * Provides the configuration for the HttpService.\n * @param config \n * @returns \n */\nexport function provideHttpService(config?: HttpServiceConfig, ...features: Partial<HttpServiceFeature>[]) {\n // const mergedfeatures = Object.assign({}, ...features);\n return makeEnvironmentProviders([\n HttpService,\n { provide: HTTP_SERVICE_CONFIG, useValue: config || {} },\n features.map((feature) => feature.ɵproviders),\n ]);\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, of, Subject, tap } from 'rxjs';\nimport { HttpRequestOptions, HttpRequestEvent } from './types';\nimport { inject, Inject, Injectable, Injector, makeStateKey, PLATFORM_ID, runInInjectionContext, TransferState } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\nimport { HTTP_SERVICE_CONFIG } from './provide';\n\n/**\n * HttpService provides a simple HTTP client for making requests.\n * It supports GET, POST, PUT, DELETE methods and can handle DataRequest objects.\n * It also supports transfer state for server-side rendering.\n * It emits events for request lifecycle: Send, Progress, Complete and Error.\n * It can be configured with a base URL and a default DataRequest resolver.\n * It can also handle multipart/form-data requests.\n */\n@Injectable()\nexport class HttpService {\n private _eventsSubject = new Subject<HttpRequestEvent>();\n private _baseUrl?: string;\n\n public events = this._eventsSubject.asObservable();\n public defaultHeaders?: HttpHeaders;\n\n private readonly _config = inject(HTTP_SERVICE_CONFIG);\n\n constructor(\n private http: HttpClient,\n private transferState: TransferState,\n private injector: Injector,\n @Inject(PLATFORM_ID) private platformId: object,\n ) {\n this._baseUrl = this._config.baseUrl ?? '';\n }\n\n /**\n * Sends a GET request to the specified URL.\n * @param url The URL to send the request to.\n * @param options The options for the request.\n * @returns An observable of the response.\n */\n public get<T>(url: string, options?: HttpRequestOptions): Observable<T> {\n this._verifyOptions(options);\n const transferStateData = this._findInTransferState<T>(options);\n if (transferStateData.found) {\n return of(transferStateData.data!);\n }\n\n this._eventsSubject.next({ type: 'Send', url, options });\n let obs = this.http.get<T>(this._makeUrl(url, options), options as any).pipe(\n tap(result => {\n if (isPlatformServer(this.platformId) && options?.transferState) {\n const key = makeStateKey<T>(options.id);\n this.transferState.set(key, result as T);\n }\n })\n );\n return this._handleEvents<T>(obs, url, options);\n }\n\n\n /**\n * Sends a DataRequest to the specified URL and returns a DataResult.\n * This method is used for paginated or filtered data requests.\n * It uses the configured DataRequestResolver to handle the request. \n * @param url The URL to send the request to.\n * @param request The DataRequest object containing the request parameters.\n * @param options The options for the request.\n * @returns An observable of DataResult<T>.\n */\n public getDataResult<T>(url: string, request: DataRequest, options?: HttpRequestOptions): Observable<DataResult<T>> {\n this._verifyOptions(options);\n const transferStateData = this._findInTransferState<DataResult<T>>(options);\n if (transferStateData.found) {\n return of(transferStateData.data!);\n }\n\n this._eventsSubject.next({ type: 'Send', url, options });\n let resolver = this._config.dataRequestResolver;\n if (!resolver) {\n throw new Error('No HttpDataRequestResolver provided.');\n }\n\n const URL = this._makeUrl(url, options);\n let obs = runInInjectionContext<Observable<DataResult<T>>>(this.injector, resolver.bind(null, URL, request, options));\n if (!(obs instanceof Observable)) {\n throw Error('HttpDataRequestResolver should return an observable.');\n }\n\n return this._handleEvents(obs, url, options);\n }\n\n /**\n * Sends a POST request to the specified URL with the given body.\n * @param url The URL to send the request to.\n * @param body The body of the request.\n * @param options The options for the request.\n * @returns An observable of the response.\n */\n public post<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\n this._verifyOptions(options);\n this._eventsSubject.next({ type: 'Send', url, options });\n const BODY = this._makeBody(body, options);\n let obs = this.http.post(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\n return this._handleEvents<T>(obs, url, options);\n }\n\n /**\n * Sends a PUT request to the specified URL with the given body.\n * @param url The URL to send the request to.\n * @param body The body of the request.\n * @param options The options for the request.\n * @returns An observable of the response.\n */\n public put<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\n this._verifyOptions(options);\n this._eventsSubject.next({ type: 'Send', url, options });\n const BODY = this._makeBody(body, options);\n let obs = this.http.put(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\n return this._handleEvents<T>(obs, url, options);\n }\n\n /**\n * Sends a DELETE request to the specified URL.\n * @param url The URL to send the request to.\n * @param options The options for the request.\n * @returns An observable of the response.\n */\n public delete<T>(url: string, options?: HttpRequestOptions): Observable<T> {\n this._verifyOptions(options);\n this._eventsSubject.next({ type: 'Send', url, options });\n let obs = this.http.delete(this._makeUrl(url, options), options as any)\n return this._handleEvents<T>(obs, url, options);\n }\n\n private _makeUrl(url: string, options?: HttpRequestOptions) {\n return (options?.pathType === 'absolute') ? url : (this._baseUrl + url);\n }\n\n private _makeBody(body: any, options?: HttpRequestOptions) {\n if (options?.contentType === 'multipart/form-data') {\n const formData = new FormData();\n for (const key in body) {\n if (body.hasOwnProperty(key)) {\n const field = body[key];\n let value;\n\n if (typeof field === 'string' || field instanceof File) {\n value = field;\n } else if (typeof field === 'number') {\n value = field.toString();\n } else if (typeof field === 'object') {\n value = JSON.stringify(field);\n }\n\n if (value) {\n formData.append(key, value);\n }\n }\n }\n\n return formData;\n }\n\n return body;\n }\n\n private _handleEvents<T>(o: Observable<any>, url: string, options?: HttpRequestOptions): Observable<T> {\n return o.pipe(\n tap({\n next: r => {\n this._eventsSubject.next({ type: 'Complete', url, options, response: r });\n },\n error: e => {\n this._eventsSubject.next({ type: 'Error', url, options, error: e });\n }\n })\n )\n }\n\n private _verifyOptions(options?: HttpRequestOptions) {\n if (options) {\n if (options.transferState && !options.id) {\n throw Error('To use transferState, set request id')\n }\n\n if (this.transferState && (options.observe == 'events' || options.observe == 'response')) {\n throw Error('TransferState is only supported with observe == body.');\n }\n }\n }\n\n private _findInTransferState<T>(options?: HttpRequestOptions): { found: boolean, data: T | undefined } {\n if (!options?.transferState || isPlatformServer(this.platformId)) {\n return { found: false, data: undefined };\n }\n\n const key = makeStateKey<T>(options.id);\n if (this.transferState.hasKey(key)) {\n const data = this.transferState.get<T>(key, null!);\n if ((options.transferState as any)?.['clearAfterUse']) {\n this.transferState.remove(key); // Free memory\n }\n\n return { found: true, data: data };\n }\n\n return { found: false, data: undefined };\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\nimport { Observable } from 'rxjs';\n\nexport interface HttpRequestOptions {\n /** Http request ID */\n id?: any;\n params?: HttpParams | Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\n headers?: HttpHeaders | Record<string, string | string[]>;\n pathType?: 'relative' | 'absolute';\n responseType?: 'json' | 'blob' | 'text';\n contentType?: 'json' | 'multipart/form-data';\n reportProgress?: boolean;\n observe?: 'response' | 'body' | 'events';\n\n /**\n * Additional data to associate with this object.\n */\n tag?: Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\n\n /** \n * Save response in transfer state \n * \n */\n transferState?: boolean | {\n /**\n * Clear transfer state after first read.\n */\n clearAfterUse?: boolean;\n };\n}\n\n/**\n * HttpDataRequestResolver is a function that takes a URL, a DataRequest, and options,\n * and returns an Observable that emits a DataResult.\n * This is used to convert a DataRequest into query parameters or request body for an HTTP request.\n * @param url The URL to send the request to.\n * @param dataRequest The DataRequest to convert.\n * @param options Additional options for the request, such as headers.\n */\nexport type HttpDataRequestResolver<T = any> = (url: string, dataRequest: DataRequest, options?: HttpRequestOptions) => Observable<DataResult<T>>;\n\nexport interface HttpRequestEventBase {\n type: 'Send' | 'Complete' | 'Progress' | 'Error';\n url: string;\n options?: HttpRequestOptions\n}\n\nexport interface HttpRequestSendEvent extends HttpRequestEventBase {\n type: 'Send';\n}\n\nexport interface HttpRequestCompleteEvent extends HttpRequestEventBase {\n type: 'Complete';\n response?: any;\n}\n\nexport interface HttpRequestProgressEvent extends HttpRequestEventBase {\n type: 'Progress';\n}\n\nexport interface HttpRequestErrorEvent extends HttpRequestEventBase {\n type: 'Error';\n error: any;\n}\n\nexport type HttpRequestEvent = HttpRequestSendEvent | HttpRequestCompleteEvent | HttpRequestProgressEvent | HttpRequestErrorEvent;\n\n/**\n * HttpDataRequestWriter is a function that takes an HTTP request and a DataRequest\n * and writes the DataRequest parameters to the HTTP request.\n * This is used to convert a DataRequest into query parameters or request body.\n * @param url The URL to send the request to.\n * @param dataRequest The DataRequest to convert.\n * @param httpClient The HttpClient to use for the request.\n * @param options Additional options for the request, such as headers.\n * @template T data item type\n * @returns An Observable that emits the DataResult.\n */\n","import { DataRequest, DataResult } from \"@bootkit/ng0/data\";\nimport { HttpRequestOptions } from \"../types\";\nimport { map, Observable } from \"rxjs\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { inject } from \"@angular/core\";\n\n/**\n * Default implementation of httpDataRequestResolver1.\n * It adds DataRequest parameters as query string to the HTTP request.\n * @param url \n * @param dataRequest \n * @param options\n * @template T data item type\n * @returns \n */\nexport function httpDataRequestResolver1<T = any>(\n url: string,\n dataRequest: DataRequest,\n options?: HttpRequestOptions): Observable<DataResult<T>> {\n var query: Record<string, any> = {};\n\n const httpClient = inject(HttpClient);\n\n if (dataRequest.page) {\n query['page[size]'] = dataRequest.page.size;\n query['page[index]'] = dataRequest.page.index;\n }\n\n if (dataRequest.sort) {\n query['sort[field]'] = dataRequest.sort.field;\n query['sort[asc]'] = dataRequest.sort.asc;\n }\n\n if (Array.isArray(dataRequest.filters)) {\n for (let i = 0; i < dataRequest.filters.length; i++) {\n const filter = dataRequest.filters[i];\n query[`filters[${i}].field`] = filter.field;\n query[`filters[${i}].operator`] = filter.operator;\n query[`filters[${i}].value`] = filter.value;\n }\n }\n\n if (typeof dataRequest.computeTotal == 'boolean') {\n query['computeTotal'] = dataRequest.computeTotal;\n }\n\n return httpClient.get<{ data: T[], total?: number }>(url, {\n params: query,\n headers: options?.headers,\n }).pipe(\n map(result => {\n return new DataResult<T>(result.data, result.total)\n })\n );\n}\n\n// /**\n// * Provides httpDataRequestResolver1.\n// * This is used to convert a DataRequest into query parameters for the HTTP (GET) request.\n// * @returns \n// */\n// export function withHttpDataRequestResolver1(): HttpServiceFeature {\n// return {\n// ɵproviders: [\n// { provide: DEFAULT_DATA_REQUEST_RESOLVER, useValue: HttpDataRequestResolver1 }\n// ]\n// };\n// }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-localization-locales.mjs","sources":["../../../projects/ng0/localization/locales/en-us.ts","../../../projects/ng0/localization/locales/fa-ir.ts","../../../projects/ng0/localization/locales/bootkit-ng0-localization-locales.ts"],"sourcesContent":["import { Locale } from '@bootkit/ng0/localization';\
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-localization-locales.mjs","sources":["../../../projects/ng0/localization/locales/en-us.ts","../../../projects/ng0/localization/locales/fa-ir.ts","../../../projects/ng0/localization/locales/bootkit-ng0-localization-locales.ts"],"sourcesContent":["import { Locale } from '@bootkit/ng0/localization';\n\nconst formatNumber = (n: number) => n.toLocaleString();\n\nexport const EN_US_LOCALE = new Locale({\n name: 'en-US',\n rtl: false,\n dictionary: {\n ok: 'Ok',\n cancel: 'Cancel',\n warning: 'Warning',\n areYouSure: 'Are you sure?',\n noRecords: 'No records.',\n first: 'First',\n last: 'Last',\n next: 'Next',\n previous: 'Previous',\n pageXofY: 'Page {0} of {1}',\n },\n form: {\n validation: {\n errors: {\n '*': (e) => 'Invalid',\n required: (e) => `Required`,\n min: (e) => `Minimum: ${formatNumber(e.min)}`,\n max: (e) => `Maximum: ${formatNumber(e.max)}`,\n minlength: (e) => `Minimum length: ${e.requiredLength}`,\n maxlength: (e) => `Maximum length: ${e.requiredLength}`,\n email: (e) => `Invalid email`,\n }\n }\n },\n components: {\n table: {\n noRecords: 'No records found.',\n pagingInfo: (info) => `Showingsdsd ${formatNumber(info.firstRecord)}-${formatNumber(info.lastRecord)} of ${formatNumber(info.totalRecords!)} records`\n }\n }\n});\n","import { Locale } from '@bootkit/ng0/localization';\n\nconst formatNumber = (n: number) => n.toLocaleString();\n\nexport const FA_IR_LOCALE = new Locale({\n name: 'fa-IR',\n rtl: true,\n dictionary: {\n ok: 'تایید',\n cancel: 'لغو',\n warning: 'هشدار',\n areYouSure: 'آیا مطمئن هستید?',\n noRecords: 'بدون رکورد',\n first: 'اولین',\n last: 'آخرین',\n next: 'بعدی',\n previous: 'قبلی',\n pageXofY: 'صفحه {0} از {1}',\n },\n form: {\n validation: {\n errors: {\n '*': (e) => 'نامعتبر',\n required: (e) => `الزامی`,\n min: (e) => `حداقل: ${formatNumber(e.min)}`,\n max: (e) => `حداکثر: ${formatNumber(e.max)}`,\n minlength: (e) => `حداقل ${e.requiredLength} کاراکتر`,\n maxlength: (e) => `حداکثر ${e.requiredLength} کاراکتر`,\n email: (e) => `ایمیل نامعتبر است`,\n }\n }\n },\n components: {\n table: {\n noRecords: 'رکوردی وجود ندارد',\n pagingInfo: (info) => `نمایش ${formatNumber(info.firstRecord)}-${formatNumber(info.lastRecord)} از ${formatNumber(info.totalRecords!)} رکورد`\n }\n }\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["formatNumber"],"mappings":"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"}
|