@bnsights/bbsf-controls 1.0.113 → 1.0.115
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 +12 -1
- package/bnsights-bbsf-controls-1.0.115.tgz +0 -0
- package/esm2022/lib/Shared/Models/AutocompleteDTO.mjs +1 -1
- package/esm2022/lib/Shared/Models/AutocompleteOptions.mjs +1 -1
- package/esm2022/lib/Shared/Models/FormOptions.mjs +3 -1
- package/esm2022/lib/Shared/Models/TagsInputOptions.mjs +1 -1
- package/esm2022/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +26 -11
- package/esm2022/lib/controls/Form/Form.component.mjs +3 -3
- package/esm2022/lib/controls/TagsInput/TagsInput.component.mjs +27 -15
- package/esm2022/lib/controls/page-header-component/page-header-component.component.mjs +1 -1
- package/fesm2022/bnsights-bbsf-controls.mjs +69 -41
- package/fesm2022/bnsights-bbsf-controls.mjs.map +1 -1
- package/lib/Shared/Models/AutocompleteOptions.d.ts +2 -0
- package/lib/Shared/Models/FormOptions.d.ts +1 -0
- package/lib/Shared/Models/TagsInputOptions.d.ts +1 -1
- package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +5 -1
- package/lib/controls/TagsInput/TagsInput.component.d.ts +3 -1
- package/package.json +1 -1
- package/bnsights-bbsf-controls-1.0.113.tgz +0 -0
|
@@ -843,6 +843,20 @@ class AutocompleteDTO {
|
|
|
843
843
|
}
|
|
844
844
|
}
|
|
845
845
|
|
|
846
|
+
class CustomValidation {
|
|
847
|
+
}
|
|
848
|
+
class CustomValidator {
|
|
849
|
+
// Number only validation
|
|
850
|
+
static numeric(control) {
|
|
851
|
+
let val = control.value;
|
|
852
|
+
if (val === null || val === '')
|
|
853
|
+
return null;
|
|
854
|
+
if (!val.toString().match(/^[0-9]+(\.?[0-9]+)?$/))
|
|
855
|
+
return { 'invalidNumber': true };
|
|
856
|
+
return null;
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
|
|
846
860
|
var ControlLayout;
|
|
847
861
|
(function (ControlLayout) {
|
|
848
862
|
ControlLayout[ControlLayout["Vertical"] = 1] = "Vertical";
|
|
@@ -908,6 +922,7 @@ class AutocompleteTextBoxComponent {
|
|
|
908
922
|
this.newSelectionValidationKey = '';
|
|
909
923
|
this.markAllAsTouched = false;
|
|
910
924
|
this.validationRules = [];
|
|
925
|
+
this.newSelectionValidation = new CustomValidation();
|
|
911
926
|
this.validationRulesasync = [];
|
|
912
927
|
this.dataList = [];
|
|
913
928
|
this.SelectedValue = "";
|
|
@@ -970,6 +985,8 @@ class AutocompleteTextBoxComponent {
|
|
|
970
985
|
AutocompleteTextBoxComponent.controlContainerstatic = this.controlContainer;
|
|
971
986
|
}
|
|
972
987
|
ngOnInit() {
|
|
988
|
+
if (this.options.name)
|
|
989
|
+
this.name = this.options.name;
|
|
973
990
|
if (this.options.isReadonly && !this.options.value)
|
|
974
991
|
this.options.value = this.utilityService.getResourceValue('NA');
|
|
975
992
|
if (this.options.forceDirection)
|
|
@@ -977,8 +994,8 @@ class AutocompleteTextBoxComponent {
|
|
|
977
994
|
else
|
|
978
995
|
this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
|
|
979
996
|
this.controlValidationService.isCreatedBefor = false;
|
|
980
|
-
this.group.addControl(this.
|
|
981
|
-
this.autoCompleteTextBoxControl = this.group.controls[this.
|
|
997
|
+
this.group.addControl(this.name, new FormControl(''));
|
|
998
|
+
this.autoCompleteTextBoxControl = this.group.controls[this.name]; // new FormControl('',validationRules);
|
|
982
999
|
if (!this.options.viewType)
|
|
983
1000
|
this.options.viewType = this.globalSettings.viewType;
|
|
984
1001
|
if (this.options.labelKey != null && this.options.labelKey != "")
|
|
@@ -994,6 +1011,10 @@ class AutocompleteTextBoxComponent {
|
|
|
994
1011
|
if (this.options.isRequired) {
|
|
995
1012
|
this.validationRules.push(Validators.required);
|
|
996
1013
|
}
|
|
1014
|
+
if (!this.options.allowNewSelection) {
|
|
1015
|
+
this.loadValidator();
|
|
1016
|
+
this.validationRules.push(this.newSelectionValidation);
|
|
1017
|
+
}
|
|
997
1018
|
this.autoCompleteTextBoxControl.setValidators(this.validationRules);
|
|
998
1019
|
this.autoCompleteTextBoxControl.setAsyncValidators(this.validationRulesasync);
|
|
999
1020
|
if (this.options.isDisabled) {
|
|
@@ -1003,11 +1024,6 @@ class AutocompleteTextBoxComponent {
|
|
|
1003
1024
|
this.SelectedValue = this.options.selectedValue;
|
|
1004
1025
|
}
|
|
1005
1026
|
this.autoCompleteTextBoxControlHost.ngSubmit.subscribe((value) => {
|
|
1006
|
-
if (this.autoCompleteTextBoxControl.value == this.Search && this.options.allowNewSelection == false) {
|
|
1007
|
-
this.autoCompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.newSelectionValidationKey });
|
|
1008
|
-
this.autoCompleteTextBoxControl.markAsTouched();
|
|
1009
|
-
this.autoCompleteTextBoxControl.invalid;
|
|
1010
|
-
}
|
|
1011
1027
|
this.group.markAllAsTouched();
|
|
1012
1028
|
this.markAllAsTouched = true;
|
|
1013
1029
|
});
|
|
@@ -1023,6 +1039,8 @@ class AutocompleteTextBoxComponent {
|
|
|
1023
1039
|
if (query) {
|
|
1024
1040
|
let params = new HttpParams();
|
|
1025
1041
|
params = params.append(this.options.queryParam, query);
|
|
1042
|
+
if (this.options.extraFilterParamName && this.options.extraFilter)
|
|
1043
|
+
params = params.append(this.options.extraFilterParamName, (typeof this.options.extraFilter === "string") ? this.options.extraFilter : this.options.extraFilter());
|
|
1026
1044
|
let requestOptionsModel = new RequestOptionsModel();
|
|
1027
1045
|
requestOptionsModel.disableBlockUI = true;
|
|
1028
1046
|
requestOptionsModel.disableSuccessNotification = true;
|
|
@@ -1036,6 +1054,14 @@ class AutocompleteTextBoxComponent {
|
|
|
1036
1054
|
return of([]);
|
|
1037
1055
|
}));
|
|
1038
1056
|
}
|
|
1057
|
+
loadValidator() {
|
|
1058
|
+
this.newSelectionValidation.functionBody = (control) => {
|
|
1059
|
+
if ((control.value && typeof control.value === "string" && control.value == this.Search))
|
|
1060
|
+
return { customerError: true };
|
|
1061
|
+
return null;
|
|
1062
|
+
};
|
|
1063
|
+
this.newSelectionValidation.massage = this.utilityService.getResourceValue("NewSelectionValidationKey");
|
|
1064
|
+
}
|
|
1039
1065
|
ngAfterViewInit() {
|
|
1040
1066
|
this.controlUtility.setAttributeForControl(this.options);
|
|
1041
1067
|
}
|
|
@@ -1076,7 +1102,7 @@ class AutocompleteTextBoxComponent {
|
|
|
1076
1102
|
this.autoCompleteTextBoxControl.setValue(item);
|
|
1077
1103
|
this.autoCompleteTextBoxControl.updateValueAndValidity();
|
|
1078
1104
|
let originalValue = this.autoCompleteTextBoxControl.value;
|
|
1079
|
-
if (this.options.patchFunction && this.options.patchPath && this.group.get(this.
|
|
1105
|
+
if (this.options.patchFunction && this.options.patchPath && this.group.get(this.name).valid) {
|
|
1080
1106
|
this.controlUtility.patchControlValue(originalValue, this.options.patchFunction, this.options.patchPath);
|
|
1081
1107
|
}
|
|
1082
1108
|
}
|
|
@@ -1115,15 +1141,17 @@ class AutocompleteTextBoxComponent {
|
|
|
1115
1141
|
this.autoCompleteTextBoxControl.updateValueAndValidity();
|
|
1116
1142
|
}
|
|
1117
1143
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AutocompleteTextBoxComponent, deps: [{ token: i1.HttpClient }, { token: ErrorMassageValidation }, { token: i3.RequestHandlerService }, { token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AutocompleteTextBoxComponent, selector: "BBSF-AutocompleteTextBox", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.isReadonly\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.extraClasses}}\" *ngIf=\"!options.allowNewSelection\"\r\n [data]=\"dataList\" [initialValue]=\"SelectedValue\" [searchKeyword]=\"keyword\" placeholder=\"{{options.placeholder}}\"\r\n (selected)='selectEvent($event)' (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\"\r\n [itemTemplate]=\"options.customTemplate?options.customTemplate:itemTemplate\" [dir]=\"textDir\"\r\n formControlName=\"{{
|
|
1144
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AutocompleteTextBoxComponent, selector: "BBSF-AutocompleteTextBox", inputs: { group: "group", name: "name", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.isReadonly\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.extraClasses}}\" *ngIf=\"!options.allowNewSelection\"\r\n [data]=\"dataList\" [initialValue]=\"SelectedValue\" [searchKeyword]=\"keyword\" placeholder=\"{{options.placeholder}}\"\r\n (selected)='selectEvent($event)' (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\"\r\n [itemTemplate]=\"options.customTemplate?options.customTemplate:itemTemplate\" [dir]=\"textDir\"\r\n formControlName=\"{{name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"autoCompleteTextBoxControl.invalid && autoCompleteTextBoxControl.touched\"\r\n (inputCleared)=\"onInputCleared()\">\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete class=\"form-control {{options.extraClasses}}\" *ngIf=\"options.allowNewSelection\" [data]=\"dataList\"\r\n [initialValue]=\"SelectedValue\" [searchKeyword]=\"keyword\" placeholder=\"{{options.placeholder}}\"\r\n (selected)='selectEvent($event)' (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\"\r\n [itemTemplate]=\"options.customTemplate?options.customTemplate:itemTemplate\" [dir]=\"textDir\"\r\n (inputCleared)=\"onInputCleared()\" formControlName=\"{{name}}\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"autoCompleteTextBoxControl.invalid && autoCompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <img *ngIf=\"options.itemWithImage\" src=\"{{(item.image?item.image:avatarImage)}}\" />\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\"><span class=\"readonly-view\">{{autoCompleteTextBoxControl.value.value}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- labelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(autoCompleteTextBoxControl.invalid && autoCompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(autoCompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">\r\n {{resetError()}} </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i7.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i10.AutocompleteComponent, selector: "ng-autocomplete", inputs: ["data", "searchKeyword", "placeholder", "heading", "initialValue", "historyIdentifier", "historyHeading", "historyListMaxNumber", "notFoundText", "isLoading", "debounceTime", "disabled", "minQueryLength", "focusFirst", "customFilter", "selectedValueRender", "itemTemplate", "notFoundTemplate"], outputs: ["selected", "inputChanged", "inputFocused", "inputCleared", "opened", "closed", "scrolledToEnd"] }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }] }); }
|
|
1119
1145
|
}
|
|
1120
1146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AutocompleteTextBoxComponent, decorators: [{
|
|
1121
1147
|
type: Component,
|
|
1122
|
-
args: [{ selector: 'BBSF-AutocompleteTextBox', template: "<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.isReadonly\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.extraClasses}}\" *ngIf=\"!options.allowNewSelection\"\r\n [data]=\"dataList\" [initialValue]=\"SelectedValue\" [searchKeyword]=\"keyword\" placeholder=\"{{options.placeholder}}\"\r\n (selected)='selectEvent($event)' (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\"\r\n [itemTemplate]=\"options.customTemplate?options.customTemplate:itemTemplate\" [dir]=\"textDir\"\r\n formControlName=\"{{
|
|
1148
|
+
args: [{ selector: 'BBSF-AutocompleteTextBox', template: "<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.isReadonly\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.extraClasses}}\" *ngIf=\"!options.allowNewSelection\"\r\n [data]=\"dataList\" [initialValue]=\"SelectedValue\" [searchKeyword]=\"keyword\" placeholder=\"{{options.placeholder}}\"\r\n (selected)='selectEvent($event)' (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\"\r\n [itemTemplate]=\"options.customTemplate?options.customTemplate:itemTemplate\" [dir]=\"textDir\"\r\n formControlName=\"{{name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"autoCompleteTextBoxControl.invalid && autoCompleteTextBoxControl.touched\"\r\n (inputCleared)=\"onInputCleared()\">\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete class=\"form-control {{options.extraClasses}}\" *ngIf=\"options.allowNewSelection\" [data]=\"dataList\"\r\n [initialValue]=\"SelectedValue\" [searchKeyword]=\"keyword\" placeholder=\"{{options.placeholder}}\"\r\n (selected)='selectEvent($event)' (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\"\r\n [itemTemplate]=\"options.customTemplate?options.customTemplate:itemTemplate\" [dir]=\"textDir\"\r\n (inputCleared)=\"onInputCleared()\" formControlName=\"{{name}}\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"autoCompleteTextBoxControl.invalid && autoCompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <img *ngIf=\"options.itemWithImage\" src=\"{{(item.image?item.image:avatarImage)}}\" />\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\"><span class=\"readonly-view\">{{autoCompleteTextBoxControl.value.value}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- labelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(autoCompleteTextBoxControl.invalid && autoCompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(autoCompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">\r\n {{resetError()}} </div>\r\n</div>\r\n" }]
|
|
1123
1149
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: ErrorMassageValidation }, { type: i3.RequestHandlerService }, { type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
|
|
1124
1150
|
type: Optional
|
|
1125
1151
|
}] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }], propDecorators: { group: [{
|
|
1126
1152
|
type: Input
|
|
1153
|
+
}], name: [{
|
|
1154
|
+
type: Input
|
|
1127
1155
|
}], options: [{
|
|
1128
1156
|
type: Input
|
|
1129
1157
|
}], OnChange: [{
|
|
@@ -2594,11 +2622,11 @@ class FormComponent {
|
|
|
2594
2622
|
return result;
|
|
2595
2623
|
}
|
|
2596
2624
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: FormComponent, deps: [{ token: ControlUtility }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: i3$1.NgbModal }, { token: i3$1.NgbActiveModal }, { token: i3$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2597
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: FormComponent, selector: "BBSF-Form", inputs: { options: "options" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.formGroup\" (ngSubmit)=\"submit()\">\r\n\r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form
|
|
2625
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: FormComponent, selector: "BBSF-Form", inputs: { options: "options" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.formGroup\" (ngSubmit)=\"submit()\" (keydown.enter)=\"options.disableSubmitWithEnterPress?$event.preventDefault():submit()\">\r\n\r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form>\r\n", dependencies: [{ kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
|
|
2598
2626
|
}
|
|
2599
2627
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: FormComponent, decorators: [{
|
|
2600
2628
|
type: Component,
|
|
2601
|
-
args: [{ selector: 'BBSF-Form', template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.formGroup\" (ngSubmit)=\"submit()\">\r\n\r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form
|
|
2629
|
+
args: [{ selector: 'BBSF-Form', template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.formGroup\" (ngSubmit)=\"submit()\" (keydown.enter)=\"options.disableSubmitWithEnterPress?$event.preventDefault():submit()\">\r\n\r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form>\r\n" }]
|
|
2602
2630
|
}], ctorParameters: () => [{ type: ControlUtility }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: i3$1.NgbModal }, { type: i3$1.NgbActiveModal }, { type: i3$2.Router }], propDecorators: { onChange: [{
|
|
2603
2631
|
type: Output
|
|
2604
2632
|
}], options: [{
|
|
@@ -5228,6 +5256,7 @@ class TagsInputComponent {
|
|
|
5228
5256
|
this.controlValidationService = controlValidationService;
|
|
5229
5257
|
this.globalSettings = globalSettings;
|
|
5230
5258
|
this.onChange = new EventEmitter();
|
|
5259
|
+
this.searchKeyValue = "";
|
|
5231
5260
|
// TagInputControl: AbstractControl;
|
|
5232
5261
|
this.selectedId = [];
|
|
5233
5262
|
this.tags = [];
|
|
@@ -5279,6 +5308,8 @@ class TagsInputComponent {
|
|
|
5279
5308
|
this.changeValueSubscription.unsubscribe();
|
|
5280
5309
|
}
|
|
5281
5310
|
ngOnInit() {
|
|
5311
|
+
if (this.options.name)
|
|
5312
|
+
this.name = this.options.name;
|
|
5282
5313
|
if (this.options.isReadonly && !this.options.value)
|
|
5283
5314
|
this.options.value = this.utilityService.getResourceValue('NA');
|
|
5284
5315
|
if (this.options.forceDirection)
|
|
@@ -5291,7 +5322,7 @@ class TagsInputComponent {
|
|
|
5291
5322
|
;
|
|
5292
5323
|
this.tagsFormGroup.addControl("tags", new FormControl(''));
|
|
5293
5324
|
this.tagsFormControl = this.tagsFormGroup.controls["tags"]; // new FormControl('',validationRules);
|
|
5294
|
-
this.group.addControl(this.
|
|
5325
|
+
this.group.addControl(this.name, this.tagsFormControl);
|
|
5295
5326
|
if (!this.options.viewType)
|
|
5296
5327
|
this.options.viewType = this.globalSettings.viewType;
|
|
5297
5328
|
if (this.options.labelKey != null && this.options.labelKey != "")
|
|
@@ -5341,12 +5372,12 @@ class TagsInputComponent {
|
|
|
5341
5372
|
}
|
|
5342
5373
|
ngAfterViewInit() {
|
|
5343
5374
|
if (this.options.attributeList != null) {
|
|
5344
|
-
var element = document.getElementById(this.
|
|
5375
|
+
var element = document.getElementById(this.name);
|
|
5345
5376
|
for (let index = 0; index < this.options.attributeList.length; index++) {
|
|
5346
5377
|
element.setAttribute(this.options.attributeList[index].key, this.options.attributeList[index].value);
|
|
5347
5378
|
}
|
|
5348
5379
|
}
|
|
5349
|
-
let inputElement = document.getElementById(this.
|
|
5380
|
+
let inputElement = document.getElementById(this.name).getElementsByTagName("input")[0];
|
|
5350
5381
|
inputElement.setAttribute("autocomplete", "off");
|
|
5351
5382
|
}
|
|
5352
5383
|
showGlobalError() {
|
|
@@ -5366,9 +5397,16 @@ class TagsInputComponent {
|
|
|
5366
5397
|
//If no text then return empty observable
|
|
5367
5398
|
if (!Text)
|
|
5368
5399
|
return EMPTY;
|
|
5400
|
+
if (this.searchKeyValue == Text)
|
|
5401
|
+
return;
|
|
5402
|
+
this.searchKeyValue = Text;
|
|
5369
5403
|
let Url = `${this.options.actionURL}?${this.options.queryParamName}=${encodeURIComponent(Text)}&${this.options.selectedItemsParamName}=${this.selectedId}`;
|
|
5370
|
-
if (this.options.extraFilters)
|
|
5371
|
-
|
|
5404
|
+
if (this.options.extraFilters) {
|
|
5405
|
+
if (typeof this.options.extraFilters === "string")
|
|
5406
|
+
Url = Url + `&${this.options.extraFilters}`;
|
|
5407
|
+
else
|
|
5408
|
+
Url = Url + `&${this.options.extraFilters()}`;
|
|
5409
|
+
}
|
|
5372
5410
|
let requestOptionsModel = new RequestOptionsModel();
|
|
5373
5411
|
requestOptionsModel.disableBlockUI = true;
|
|
5374
5412
|
requestOptionsModel.disableSuccessNotification = true;
|
|
@@ -5383,10 +5421,10 @@ class TagsInputComponent {
|
|
|
5383
5421
|
if (this.isNoMatch == true && event.key == "Enter" && this.options.allowNewSelection && key.selected) {
|
|
5384
5422
|
if (!(this.tags.length >= this.options.maxNumberTags)) {
|
|
5385
5423
|
this.tags.push({ name: key.selected });
|
|
5386
|
-
this.group.get(this.
|
|
5387
|
-
this.group.get(this.
|
|
5424
|
+
this.group.get(this.name).setValue(this.tags);
|
|
5425
|
+
this.group.get(this.name).markAllAsTouched();
|
|
5388
5426
|
this.group.updateValueAndValidity();
|
|
5389
|
-
if (this.group.get(this.
|
|
5427
|
+
if (this.group.get(this.name).valid) {
|
|
5390
5428
|
key.selected = null;
|
|
5391
5429
|
return;
|
|
5392
5430
|
}
|
|
@@ -5433,7 +5471,7 @@ class TagsInputComponent {
|
|
|
5433
5471
|
this.controlUtility.patchControlValue(originalValue, this.options.patchFunction, this.options.patchPath);
|
|
5434
5472
|
}
|
|
5435
5473
|
this.options.value = this.tags;
|
|
5436
|
-
this.group.get(this.
|
|
5474
|
+
this.group.get(this.name).setValue(this.tags);
|
|
5437
5475
|
this.tagsFormControl.updateValueAndValidity();
|
|
5438
5476
|
this.group.updateValueAndValidity();
|
|
5439
5477
|
this.onChange.emit(originalValue);
|
|
@@ -5444,10 +5482,10 @@ class TagsInputComponent {
|
|
|
5444
5482
|
onTagsInputBlur(SearchKey) {
|
|
5445
5483
|
if (SearchKey.selected && this.options.allowNewSelection && this.isNoMatch && this.tags.length < this.options.maxNumberTags) {
|
|
5446
5484
|
this.tags.push({ name: SearchKey.selected });
|
|
5447
|
-
this.group.get(this.
|
|
5448
|
-
this.group.get(this.
|
|
5485
|
+
this.group.get(this.name).setValue(this.tags);
|
|
5486
|
+
this.group.get(this.name).markAllAsTouched();
|
|
5449
5487
|
this.group.updateValueAndValidity();
|
|
5450
|
-
if (this.group.get(this.
|
|
5488
|
+
if (this.group.get(this.name).valid) {
|
|
5451
5489
|
SearchKey.selected = null;
|
|
5452
5490
|
return;
|
|
5453
5491
|
}
|
|
@@ -5460,15 +5498,17 @@ class TagsInputComponent {
|
|
|
5460
5498
|
return this.tags.map(item => item.name);
|
|
5461
5499
|
}
|
|
5462
5500
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: TagsInputComponent, deps: [{ token: i1.HttpClient }, { token: ControlUtility }, { token: i3.RequestHandlerService }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5463
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: TagsInputComponent, selector: "BBSF-TagsInput", inputs: { group: "group", options: "options" }, outputs: { onChange: "onChange" }, viewQueries: [{ propertyName: "searchKey", first: true, predicate: ["searchKey"], descendants: true }], ngImport: i0, template: "<div [formGroup]=\"group\">\r\n <div class=\"form-group bbsf-control bbsf-tags-input\" [formGroup]=\"tagsFormGroup\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.isReadonly\">\r\n <b-tags-input type=\"text\" class=\"form-control {{options.extraClasses}}\" [dir]=\"textDir\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"tagsFormControl.invalid && tagsFormControl.touched\" placeholder=\"{{options.placeholder}}\"\r\n id=\"{{
|
|
5501
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: TagsInputComponent, selector: "BBSF-TagsInput", inputs: { group: "group", name: "name", options: "options" }, outputs: { onChange: "onChange" }, viewQueries: [{ propertyName: "searchKey", first: true, predicate: ["searchKey"], descendants: true }], ngImport: i0, template: "<div [formGroup]=\"group\">\r\n <div class=\"form-group bbsf-control bbsf-tags-input\" [formGroup]=\"tagsFormGroup\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.isReadonly\">\r\n <b-tags-input type=\"text\" class=\"form-control {{options.extraClasses}}\" [dir]=\"textDir\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"tagsFormControl.invalid && tagsFormControl.touched\" placeholder=\"{{options.placeholder}}\"\r\n id=\"{{name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\"\r\n [removeLastOnBackspace]=\"options.removeLastOnBackspace\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(searchKey.selected)\" #searchKey\r\n [scrollableOptions]=\"options.scrollableOptions\" [scrollableOptionsInView]=\"options.maxSearchResultsCount\"\r\n (keydown)=\"addTag($event,searchKey)\" [ViewMode]=\"options.tagInputMode\" [maxTags]=\"options.maxNumberTags\"\r\n [minLengthBeforeOptions]=\"options.minSearchLength\" [showDescription]=\"options.showDescription\"\r\n [defaultImageURL]=\"options.defaultImgUrl\" name=\"tags\" (onBlurInput)=\"onTagsInputBlur(searchKey)\">\r\n </b-tags-input>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\"><span class=\"readonly-view\">{{getTagsValue()}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(tagsFormControl.invalid && tagsFormControl.touched)\">\r\n {{getErrorValidation(tagsFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">\r\n {{resetError()}}</div>\r\n </div>\r\n\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i7.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: BTagsInputComponent, selector: "b-tags-input", inputs: ["maxTags", "removeLastOnBackspace", "canDeleteTags", "canAddTags", "ViewMode", "placeholder", "showDescription", "options", "defaultImageURL", "minLengthBeforeOptions", "scrollableOptions", "scrollableOptionsInView"], outputs: ["onTagsChanged", "onMaxTagsReached", "onNoOptionsMatch", "onBlurInput"] }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }] }); }
|
|
5464
5502
|
}
|
|
5465
5503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: TagsInputComponent, decorators: [{
|
|
5466
5504
|
type: Component,
|
|
5467
|
-
args: [{ selector: 'BBSF-TagsInput', template: "<div [formGroup]=\"group\">\r\n <div class=\"form-group bbsf-control bbsf-tags-input\" [formGroup]=\"tagsFormGroup\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.isReadonly\">\r\n <b-tags-input type=\"text\" class=\"form-control {{options.extraClasses}}\" [dir]=\"textDir\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"tagsFormControl.invalid && tagsFormControl.touched\" placeholder=\"{{options.placeholder}}\"\r\n id=\"{{
|
|
5505
|
+
args: [{ selector: 'BBSF-TagsInput', template: "<div [formGroup]=\"group\">\r\n <div class=\"form-group bbsf-control bbsf-tags-input\" [formGroup]=\"tagsFormGroup\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.isReadonly\">\r\n <b-tags-input type=\"text\" class=\"form-control {{options.extraClasses}}\" [dir]=\"textDir\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"tagsFormControl.invalid && tagsFormControl.touched\" placeholder=\"{{options.placeholder}}\"\r\n id=\"{{name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\"\r\n [removeLastOnBackspace]=\"options.removeLastOnBackspace\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(searchKey.selected)\" #searchKey\r\n [scrollableOptions]=\"options.scrollableOptions\" [scrollableOptionsInView]=\"options.maxSearchResultsCount\"\r\n (keydown)=\"addTag($event,searchKey)\" [ViewMode]=\"options.tagInputMode\" [maxTags]=\"options.maxNumberTags\"\r\n [minLengthBeforeOptions]=\"options.minSearchLength\" [showDescription]=\"options.showDescription\"\r\n [defaultImageURL]=\"options.defaultImgUrl\" name=\"tags\" (onBlurInput)=\"onTagsInputBlur(searchKey)\">\r\n </b-tags-input>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.isReadonly\"><span class=\"readonly-view\">{{getTagsValue()}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.isReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(tagsFormControl.invalid && tagsFormControl.touched)\">\r\n {{getErrorValidation(tagsFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">\r\n {{resetError()}}</div>\r\n </div>\r\n\r\n</div>\r\n" }]
|
|
5468
5506
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: ControlUtility }, { type: i3.RequestHandlerService }, { type: i2.ControlContainer, decorators: [{
|
|
5469
5507
|
type: Optional
|
|
5470
5508
|
}] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }], propDecorators: { group: [{
|
|
5471
5509
|
type: Input
|
|
5510
|
+
}], name: [{
|
|
5511
|
+
type: Input
|
|
5472
5512
|
}], options: [{
|
|
5473
5513
|
type: Input
|
|
5474
5514
|
}], onChange: [{
|
|
@@ -5491,7 +5531,7 @@ class PageHeaderComponentComponent {
|
|
|
5491
5531
|
this.EN = this.utilityService.isCurrentLanguageEnglish();
|
|
5492
5532
|
}
|
|
5493
5533
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: PageHeaderComponentComponent, deps: [{ token: i3$2.Router }, { token: i3.UtilityService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5494
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: PageHeaderComponentComponent, selector: "bbsf-page-header-component", inputs: { group: "group", options: "options" }, ngImport: i0, template: "<!--toolbar-->\r\n<div class=\"toolbar\" style=\"overflow:hidden;position:relative;\">\r\n <img class=\"pattern\" src=\"./src/assets/images/Bg-pattern.png\" />\r\n <div class=\"container-xxl\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"page-title w-100\" [ngClass]=\"!options.listing? 'mb-0' : ''\">\r\n <h3 *ngIf=\"options.titleKey||options.titleValue\">{{options.titleValue == null ? translate(options.titleKey) :\r\n options.titleValue }}</h3>\r\n <p class=\"sub-title\" *ngIf=\"options.listing\">\r\n {{translate(options.subTitleKey)}}\r\n </p>\r\n <div class=\"d-flex justify-content-between align-items-end\">\r\n <ul class=\"breadcrumb breadcrumb-dot\" *ngIf=\"options.breadCrumb.active\">\r\n <ng-container *ngFor=\"let item of options.breadCrumb.breadCrumbItems\">\r\n <li class=\"breadcrumb-item\" *ngIf=\"!item.active\">\r\n <a *ngIf=\"item.route\" [routerLink]=\"item.route\">{{ item.label }}</a>\r\n <a *ngIf=\"!item.route\" href=\"javascript: void(0);\">{{ item.label }}</a>\r\n </li>\r\n <li class=\"breadcrumb-item active\" *ngIf=\"item.active\">\r\n <span>{{ item.label }}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <div class=\"page-subheader\" *ngIf=\"options.dropDownActions.active\">\r\n <button [routerLink]=\"item.routerLink\" (click)='item.function?item.function():\"\"'\r\n class=\"btn btn-light btn-sm subheader-btn export-btn\"\r\n *ngFor=\"let item of options.dropDownActions.dropdownActionItems\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"item.svg\"></span>\r\n {{item.text}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"page-subheader\">\r\n <BBSF-TextBox *ngIf=\"options.searchTextBox.active\" [options]=\"options.searchTextBox.textSearchBoxOptions\"\r\n [group]=\"group\">\r\n </BBSF-TextBox>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"subheader-btn list-grid\" *ngIf=\"options.gridView.active\">\r\n <div class=\"list-grid-item\" [ngClass]=\"options.gridView.showGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.gridView.toggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Listing.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"list-grid-item\" [ngClass]=\"!options.gridView.showGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.gridView.toggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Grid.svg'\">\r\n </span>\r\n </div>\r\n </div>\r\n <button type=\"button\" *ngIf=\"options.exportButton.active\" (click)=\"options.exportButton.function()\"\r\n class=\"btn btn-light btn-sm subheader-btn export-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/export.svg'\"></span>\r\n {{translate(options.exportButton.buttonTextKey)}}\r\n </button>\r\n\r\n\r\n <div *ngIf=\"options.filtersButton.active\" ngbDropdown container=\"body\"\r\n [placement]=\"EN ? 'bottom-right' : 'bottom-left'\" #dropdown=\"ngbDropdown\" class=\"subheader-btn\">\r\n <button href=\"javascript:;\" (click)=\"options.filtersButton.function()\" ngbDropdownToggle\r\n class=\"btn btn-light btn-sm filters-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/arrowdropdown.svg'\"></span>\r\n {{translate(options.filtersButton.buttonTextKey)}}\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom filters-dropdown\">\r\n\r\n <div [hidden]=\"options.filters.showLoadingInFiltersBox\">\r\n <div class=\"filter-select\">\r\n <span *ngFor=\"let control of options.filters.controlsOptions\">\r\n <span [ngSwitch]=\"control.key\">\r\n <span *ngSwitchCase=\"DataTypeEnum.SingleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.MulipleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Date\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.DateTime\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Time\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Boolean\">\r\n <BBSF-Toggleslide [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-Toggleslide>\r\n </span>\r\n <span *ngSwitchDefault>\r\n <BBSF-TagsInput [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-TagsInput>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"dropdown-menu-buttons\">\r\n <button class=\"btn btn-sm btn-light\" (click)=\"options.filters.restFunction(dropdown)\">\r\n {{translate(\"Reset\")}}\r\n </button>\r\n <button class=\"btn btn-brand btn-sm\" (click)=\"options.filters.applyFunction(dropdown)\">\r\n {{translate(\"Apply\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.addButton.active\"\r\n (click)=\"options.addButton.function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.addButton.buttonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.editButton.active\"\r\n (click)=\"options.editButton.function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.editButton.buttonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.deleteButton.active\"\r\n (click)=\"options.deleteButton.function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.deleteButton.buttonTextKey)}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--End toolbar-->", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3$1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i3$1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i3$1.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i3$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i8$4.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: DateInputComponent, selector: "BBSF-DateTimePicker", inputs: ["group", "options", "DropdownTemplateVariable"], outputs: ["onChange"] }, { kind: "component", type: TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: TagsInputComponent, selector: "BBSF-TagsInput", inputs: ["group", "options"], outputs: ["onChange"] }] }); }
|
|
5534
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: PageHeaderComponentComponent, selector: "bbsf-page-header-component", inputs: { group: "group", options: "options" }, ngImport: i0, template: "<!--toolbar-->\r\n<div class=\"toolbar\" style=\"overflow:hidden;position:relative;\">\r\n <img class=\"pattern\" src=\"./src/assets/images/Bg-pattern.png\" />\r\n <div class=\"container-xxl\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"page-title w-100\" [ngClass]=\"!options.listing? 'mb-0' : ''\">\r\n <h3 *ngIf=\"options.titleKey||options.titleValue\">{{options.titleValue == null ? translate(options.titleKey) :\r\n options.titleValue }}</h3>\r\n <p class=\"sub-title\" *ngIf=\"options.listing\">\r\n {{translate(options.subTitleKey)}}\r\n </p>\r\n <div class=\"d-flex justify-content-between align-items-end\">\r\n <ul class=\"breadcrumb breadcrumb-dot\" *ngIf=\"options.breadCrumb.active\">\r\n <ng-container *ngFor=\"let item of options.breadCrumb.breadCrumbItems\">\r\n <li class=\"breadcrumb-item\" *ngIf=\"!item.active\">\r\n <a *ngIf=\"item.route\" [routerLink]=\"item.route\">{{ item.label }}</a>\r\n <a *ngIf=\"!item.route\" href=\"javascript: void(0);\">{{ item.label }}</a>\r\n </li>\r\n <li class=\"breadcrumb-item active\" *ngIf=\"item.active\">\r\n <span>{{ item.label }}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <div class=\"page-subheader\" *ngIf=\"options.dropDownActions.active\">\r\n <button [routerLink]=\"item.routerLink\" (click)='item.function?item.function():\"\"'\r\n class=\"btn btn-light btn-sm subheader-btn export-btn\"\r\n *ngFor=\"let item of options.dropDownActions.dropdownActionItems\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"item.svg\"></span>\r\n {{item.text}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"page-subheader\">\r\n <BBSF-TextBox *ngIf=\"options.searchTextBox.active\" [options]=\"options.searchTextBox.textSearchBoxOptions\"\r\n [group]=\"group\">\r\n </BBSF-TextBox>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"subheader-btn list-grid\" *ngIf=\"options.gridView.active\">\r\n <div class=\"list-grid-item\" [ngClass]=\"options.gridView.showGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.gridView.toggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Listing.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"list-grid-item\" [ngClass]=\"!options.gridView.showGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.gridView.toggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Grid.svg'\">\r\n </span>\r\n </div>\r\n </div>\r\n <button type=\"button\" *ngIf=\"options.exportButton.active\" (click)=\"options.exportButton.function()\"\r\n class=\"btn btn-light btn-sm subheader-btn export-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/export.svg'\"></span>\r\n {{translate(options.exportButton.buttonTextKey)}}\r\n </button>\r\n\r\n\r\n <div *ngIf=\"options.filtersButton.active\" ngbDropdown container=\"body\"\r\n [placement]=\"EN ? 'bottom-right' : 'bottom-left'\" #dropdown=\"ngbDropdown\" class=\"subheader-btn\">\r\n <button href=\"javascript:;\" (click)=\"options.filtersButton.function()\" ngbDropdownToggle\r\n class=\"btn btn-light btn-sm filters-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/arrowdropdown.svg'\"></span>\r\n {{translate(options.filtersButton.buttonTextKey)}}\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom filters-dropdown\">\r\n\r\n <div [hidden]=\"options.filters.showLoadingInFiltersBox\">\r\n <div class=\"filter-select\">\r\n <span *ngFor=\"let control of options.filters.controlsOptions\">\r\n <span [ngSwitch]=\"control.key\">\r\n <span *ngSwitchCase=\"DataTypeEnum.SingleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.MulipleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Date\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.DateTime\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Time\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Boolean\">\r\n <BBSF-Toggleslide [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-Toggleslide>\r\n </span>\r\n <span *ngSwitchDefault>\r\n <BBSF-TagsInput [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-TagsInput>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"dropdown-menu-buttons\">\r\n <button class=\"btn btn-sm btn-light\" (click)=\"options.filters.restFunction(dropdown)\">\r\n {{translate(\"Reset\")}}\r\n </button>\r\n <button class=\"btn btn-brand btn-sm\" (click)=\"options.filters.applyFunction(dropdown)\">\r\n {{translate(\"Apply\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.addButton.active\"\r\n (click)=\"options.addButton.function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.addButton.buttonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.editButton.active\"\r\n (click)=\"options.editButton.function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.editButton.buttonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.deleteButton.active\"\r\n (click)=\"options.deleteButton.function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.deleteButton.buttonTextKey)}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--End toolbar-->", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3$1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i3$1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i3$1.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i3$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i8$4.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: DateInputComponent, selector: "BBSF-DateTimePicker", inputs: ["group", "options", "DropdownTemplateVariable"], outputs: ["onChange"] }, { kind: "component", type: TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: TagsInputComponent, selector: "BBSF-TagsInput", inputs: ["group", "name", "options"], outputs: ["onChange"] }] }); }
|
|
5495
5535
|
}
|
|
5496
5536
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: PageHeaderComponentComponent, decorators: [{
|
|
5497
5537
|
type: Component,
|
|
@@ -8244,20 +8284,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
8244
8284
|
}]
|
|
8245
8285
|
}] });
|
|
8246
8286
|
|
|
8247
|
-
class CustomValidation {
|
|
8248
|
-
}
|
|
8249
|
-
class CustomValidator {
|
|
8250
|
-
// Number only validation
|
|
8251
|
-
static numeric(control) {
|
|
8252
|
-
let val = control.value;
|
|
8253
|
-
if (val === null || val === '')
|
|
8254
|
-
return null;
|
|
8255
|
-
if (!val.toString().match(/^[0-9]+(\.?[0-9]+)?$/))
|
|
8256
|
-
return { 'invalidNumber': true };
|
|
8257
|
-
return null;
|
|
8258
|
-
}
|
|
8259
|
-
}
|
|
8260
|
-
|
|
8261
8287
|
class AppBaseComponent {
|
|
8262
8288
|
constructor(injector) {
|
|
8263
8289
|
this.pageTitle = '';
|
|
@@ -8790,6 +8816,8 @@ class FormOptions {
|
|
|
8790
8816
|
this.disableBlockUI = false;
|
|
8791
8817
|
//If ="true" disable modal from dismiss automatically
|
|
8792
8818
|
this.disableModalDismiss = false;
|
|
8819
|
+
//If ="true" submit form when user press enter
|
|
8820
|
+
this.disableSubmitWithEnterPress = false;
|
|
8793
8821
|
}
|
|
8794
8822
|
}
|
|
8795
8823
|
|