@bnsights/bbsf-controls 1.0.67 → 1.0.69

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.
Files changed (33) hide show
  1. package/README.md +13 -0
  2. package/bnsights-bbsf-controls-1.0.69.tgz +0 -0
  3. package/bnsights-bbsf-controls.metadata.json +1 -1
  4. package/bundles/bnsights-bbsf-controls.umd.js +359 -33
  5. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
  6. package/esm2015/lib/Shared/Models/bread-crumb.js +8 -0
  7. package/esm2015/lib/Shared/Models/control-filter-Item.js +6 -0
  8. package/esm2015/lib/Shared/Models/filter-options.js +9 -0
  9. package/esm2015/lib/Shared/Models/page-header-options.js +78 -0
  10. package/esm2015/lib/Shared/components/app-base-component.js +168 -0
  11. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +3 -4
  12. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +2 -2
  13. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +2 -2
  14. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +5 -3
  15. package/esm2015/lib/controls/bbsf-controls.module.js +6 -3
  16. package/esm2015/lib/controls/page-header-component/page-header-component.component.js +32 -0
  17. package/esm2015/public-api.js +7 -1
  18. package/fesm2015/bnsights-bbsf-controls.js +317 -25
  19. package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
  20. package/lib/Shared/Models/bread-crumb.d.ts +6 -0
  21. package/lib/Shared/Models/control-filter-Item.d.ts +6 -0
  22. package/lib/Shared/Models/filter-options.d.ts +7 -0
  23. package/lib/Shared/Models/page-header-options.d.ts +71 -0
  24. package/lib/Shared/components/app-base-component.d.ts +47 -0
  25. package/lib/controls/page-header-component/page-header-component.component.d.ts +17 -0
  26. package/package.json +4 -3
  27. package/public-api.d.ts +6 -0
  28. package/src/lib/assets/Style-rtl.scss +51 -54
  29. package/src/lib/assets/Style.scss +4 -0
  30. package/src/lib/assets/images/Bg-pattern.png +0 -0
  31. package/src/lib/assets/sass/base.scss +5 -1
  32. package/src/lib/assets/sass/datetime-picker.scss +123 -0
  33. package/bnsights-bbsf-controls-1.0.67.tgz +0 -0
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/angular'), require('@fullcalendar/daygrid'), require('@fullcalendar/timegrid'), require('@fullcalendar/list'), require('@fullcalendar/interaction'), require('@angular/core'), require('ng-block-ui'), require('@angular/forms'), require('@angular/http'), require('@angular/router'), require('ngx-toastr'), require('ngx-permissions'), require('@angular/cdk/overlay'), require('@ngrx/store-devtools'), require('@angular/common'), require('ngx-intl-tel-input'), require('@bnsights/bbsf-utilities'), require('ngx-bootstrap/datepicker'), require('rxjs'), require('ng-pick-datetime'), require('ng2-file-upload'), require('class-transformer'), require('ng-multiselect-dropdown'), require('angular2-multiselect-dropdown'), require('ngx-summernote'), require('ngx-mask'), require('@syncfusion/ej2-angular-popups'), require('@ng-bootstrap/ng-bootstrap'), require('ngx-dropzone'), require('angular-cropperjs'), require('ngx-image-cropper'), require('@ngx-translate/core'), require('@angular/common/http'), require('ngx-typeahead'), require('rxjs/operators'), require('ngx-tags-input'), require('@ng-select/ng-select'), require('ngx-infinite-scroll'), require('@agm/core'), require('@angular-material-extensions/google-maps-autocomplete'), require('@fullcalendar/core/locales/en-gb'), require('@fullcalendar/core/locales/ar'), require('ngx-bootstrap/typeahead'), require('@angular/material/slide-toggle'), require('@kolkov/angular-editor'), require('angular-ng-autocomplete'), require('ng-inline-svg'), require('sweetalert2'), require('@sweetalert2/ngx-sweetalert2')) :
3
- typeof define === 'function' && define.amd ? define('@bnsights/bbsf-controls', ['exports', '@fullcalendar/angular', '@fullcalendar/daygrid', '@fullcalendar/timegrid', '@fullcalendar/list', '@fullcalendar/interaction', '@angular/core', 'ng-block-ui', '@angular/forms', '@angular/http', '@angular/router', 'ngx-toastr', 'ngx-permissions', '@angular/cdk/overlay', '@ngrx/store-devtools', '@angular/common', 'ngx-intl-tel-input', '@bnsights/bbsf-utilities', 'ngx-bootstrap/datepicker', 'rxjs', 'ng-pick-datetime', 'ng2-file-upload', 'class-transformer', 'ng-multiselect-dropdown', 'angular2-multiselect-dropdown', 'ngx-summernote', 'ngx-mask', '@syncfusion/ej2-angular-popups', '@ng-bootstrap/ng-bootstrap', 'ngx-dropzone', 'angular-cropperjs', 'ngx-image-cropper', '@ngx-translate/core', '@angular/common/http', 'ngx-typeahead', 'rxjs/operators', 'ngx-tags-input', '@ng-select/ng-select', 'ngx-infinite-scroll', '@agm/core', '@angular-material-extensions/google-maps-autocomplete', '@fullcalendar/core/locales/en-gb', '@fullcalendar/core/locales/ar', 'ngx-bootstrap/typeahead', '@angular/material/slide-toggle', '@kolkov/angular-editor', 'angular-ng-autocomplete', 'ng-inline-svg', 'sweetalert2', '@sweetalert2/ngx-sweetalert2'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.bnsights = global.bnsights || {}, global.bnsights["bbsf-controls"] = {}), global.angular, global.dayGridPlugin, global.timeGridPlugin, global.listPlugin, global.interactionPlugin, global.ng.core, global.ngBlockUi, global.ng.forms, global.ng.http, global.ng.router, global.ngxToastr, global.ngxPermissions, global.ng.cdk.overlay, global.storeDevtools, global.ng.common, global.ngxIntlTelInput, global.bbsfUtilities, global.datepicker, global.rxjs, global.ngPickDatetime, global.ng2FileUpload, global.classTransformer, global.ngMultiselectDropdown, global.angular2MultiselectDropdown, global.ngxSummernote, global.ngxMask, global.ej2AngularPopups, global.ngBootstrap, global.ngxDropzone, global.angularCropperjs, global.ngxImageCropper, global.core$1, global.ng.common.http, global.ngxTypeahead, global.rxjs.operators, global.ngxTagsInput, global.ngSelect, global.ngxInfiniteScroll, global.core, global.googleMapsAutocomplete, global.enGbLocale, global.ArLocale, global.typeahead, global.ng.material.slideToggle, global.angularEditor, global.angularNgAutocomplete, global.ngInlineSvg, global.Swal, global.ngxSweetalert2));
5
- })(this, (function (exports, angular, dayGridPlugin, timeGridPlugin, listPlugin, interactionPlugin, i0, ngBlockUi, forms, http, router, ngxToastr, ngxPermissions, overlay, storeDevtools, common, ngxIntlTelInput, bbsfUtilities, datepicker, rxjs, ngPickDatetime, ng2FileUpload, classTransformer, ngMultiselectDropdown, angular2MultiselectDropdown, ngxSummernote, ngxMask, ej2AngularPopups, ngBootstrap, ngxDropzone, angularCropperjs, ngxImageCropper, core$1, http$1, ngxTypeahead, operators, ngxTagsInput, ngSelect, ngxInfiniteScroll, core, googleMapsAutocomplete, enGbLocale, ArLocale, typeahead, slideToggle, angularEditor, angularNgAutocomplete, ngInlineSvg, Swal, ngxSweetalert2) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/angular'), require('@fullcalendar/daygrid'), require('@fullcalendar/timegrid'), require('@fullcalendar/list'), require('@fullcalendar/interaction'), require('@angular/core'), require('ng-block-ui'), require('@angular/forms'), require('@angular/http'), require('@angular/router'), require('ngx-toastr'), require('ngx-permissions'), require('@angular/cdk/overlay'), require('@ngrx/store-devtools'), require('@angular/common'), require('ngx-intl-tel-input'), require('@bnsights/bbsf-utilities'), require('ngx-bootstrap/datepicker'), require('rxjs'), require('ng-pick-datetime'), require('ng2-file-upload'), require('class-transformer'), require('ng-multiselect-dropdown'), require('angular2-multiselect-dropdown'), require('ngx-summernote'), require('ngx-mask'), require('@syncfusion/ej2-angular-popups'), require('@ng-bootstrap/ng-bootstrap'), require('ngx-dropzone'), require('angular-cropperjs'), require('ngx-image-cropper'), require('@ngx-translate/core'), require('@angular/common/http'), require('ngx-typeahead'), require('rxjs/operators'), require('ngx-tags-input'), require('@ng-select/ng-select'), require('ngx-infinite-scroll'), require('@agm/core'), require('@angular-material-extensions/google-maps-autocomplete'), require('@fullcalendar/core/locales/en-gb'), require('@fullcalendar/core/locales/ar'), require('ngx-bootstrap/typeahead'), require('@angular/material/slide-toggle'), require('@kolkov/angular-editor'), require('angular-ng-autocomplete'), require('ng-inline-svg'), require('sweetalert2'), require('@sweetalert2/ngx-sweetalert2'), require('@angular/platform-browser'), require('file-saver')) :
3
+ typeof define === 'function' && define.amd ? define('@bnsights/bbsf-controls', ['exports', '@fullcalendar/angular', '@fullcalendar/daygrid', '@fullcalendar/timegrid', '@fullcalendar/list', '@fullcalendar/interaction', '@angular/core', 'ng-block-ui', '@angular/forms', '@angular/http', '@angular/router', 'ngx-toastr', 'ngx-permissions', '@angular/cdk/overlay', '@ngrx/store-devtools', '@angular/common', 'ngx-intl-tel-input', '@bnsights/bbsf-utilities', 'ngx-bootstrap/datepicker', 'rxjs', 'ng-pick-datetime', 'ng2-file-upload', 'class-transformer', 'ng-multiselect-dropdown', 'angular2-multiselect-dropdown', 'ngx-summernote', 'ngx-mask', '@syncfusion/ej2-angular-popups', '@ng-bootstrap/ng-bootstrap', 'ngx-dropzone', 'angular-cropperjs', 'ngx-image-cropper', '@ngx-translate/core', '@angular/common/http', 'ngx-typeahead', 'rxjs/operators', 'ngx-tags-input', '@ng-select/ng-select', 'ngx-infinite-scroll', '@agm/core', '@angular-material-extensions/google-maps-autocomplete', '@fullcalendar/core/locales/en-gb', '@fullcalendar/core/locales/ar', 'ngx-bootstrap/typeahead', '@angular/material/slide-toggle', '@kolkov/angular-editor', 'angular-ng-autocomplete', 'ng-inline-svg', 'sweetalert2', '@sweetalert2/ngx-sweetalert2', '@angular/platform-browser', 'file-saver'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.bnsights = global.bnsights || {}, global.bnsights["bbsf-controls"] = {}), global.angular, global.dayGridPlugin, global.timeGridPlugin, global.listPlugin, global.interactionPlugin, global.ng.core, global.ngBlockUi, global.ng.forms, global.ng.http, global.ng.router, global.ngxToastr, global.ngxPermissions, global.ng.cdk.overlay, global.storeDevtools, global.ng.common, global.ngxIntlTelInput, global.bbsfUtilities, global.datepicker, global.rxjs, global.ngPickDatetime, global.ng2FileUpload, global.classTransformer, global.ngMultiselectDropdown, global.angular2MultiselectDropdown, global.ngxSummernote, global.ngxMask, global.ej2AngularPopups, global.ngBootstrap, global.ngxDropzone, global.angularCropperjs, global.ngxImageCropper, global.core$1, global.ng.common.http, global.ngxTypeahead, global.rxjs.operators, global.ngxTagsInput, global.ngSelect, global.ngxInfiniteScroll, global.core, global.googleMapsAutocomplete, global.enGbLocale, global.ArLocale, global.typeahead, global.ng.material.slideToggle, global.angularEditor, global.angularNgAutocomplete, global.ngInlineSvg, global.Swal, global.ngxSweetalert2, global.ng.platformBrowser, global.saveAs));
5
+ })(this, (function (exports, angular, dayGridPlugin, timeGridPlugin, listPlugin, interactionPlugin, i0, ngBlockUi, forms, http, router, ngxToastr, ngxPermissions, overlay, storeDevtools, common, ngxIntlTelInput, bbsfUtilities, datepicker, rxjs, ngPickDatetime, ng2FileUpload, classTransformer, ngMultiselectDropdown, angular2MultiselectDropdown, ngxSummernote, ngxMask, ej2AngularPopups, ngBootstrap, ngxDropzone, angularCropperjs, ngxImageCropper, core$1, http$1, ngxTypeahead, operators, ngxTagsInput, ngSelect, ngxInfiniteScroll, core, googleMapsAutocomplete, enGbLocale, ArLocale, typeahead, slideToggle, angularEditor, angularNgAutocomplete, ngInlineSvg, Swal, ngxSweetalert2, platformBrowser, saveAs) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -32,6 +32,7 @@
32
32
  var enGbLocale__default = /*#__PURE__*/_interopDefaultLegacy(enGbLocale);
33
33
  var ArLocale__default = /*#__PURE__*/_interopDefaultLegacy(ArLocale);
34
34
  var Swal__default = /*#__PURE__*/_interopDefaultLegacy(Swal);
35
+ var saveAs__namespace = /*#__PURE__*/_interopNamespace(saveAs);
35
36
 
36
37
  var ErrorMassageValidation = /** @class */ (function () {
37
38
  // tslint:disable-next-line: deprecation
@@ -903,11 +904,10 @@
903
904
  DateInputComponent.decorators = [
904
905
  { type: i0.Component, args: [{
905
906
  selector: 'BBSF-DateTimePicker',
906
- template: "<div class=\"b-control b-date-picker\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 {{options.LabelExtraClasses}}\" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <input autocomplete=\"off\" (dateTimeChange)=\"onDateSelect($event)\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" [owlDateTime]=\"dt1\" [owlDateTimeTrigger]=\"dt1\"\r\n [class.is-invalid]=\"DatePickerFormControl.invalid && DatePickerFormControl.touched\"\r\n [min]=\"options.StartDate\" [max]=\"options.EndDate\" [hour12Timer]=\"options.Hour12Timer\" [selectMode]=\"getSelectMode(options.SelectMode)\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" #Dateinput>\r\n\r\n <owl-date-time [pickerType]=\"getPickerType(options.PickerType)\"\r\n [startView]=\"getStartView(options.StartView)\" [firstDayOfWeek]=\"options.FirstDayOfWeek\"\r\n [hour12Timer]=\"options.Hour12Timer\" #dt1></owl-date-time>\r\n \r\n <div class=\"input-group-append\">\r\n <span class=\"input-group-text\" [owlDateTimeTrigger]=\"dt1\">\r\n <span class=\"svg-icon\">\r\n <svg id=\"Group_356\" data-name=\"Group 356\" xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 48 48\">\r\n <path id=\"Path_6737\" data-name=\"Path 6737\" d=\"M11.583,1a1,1,0,0,0-2,0V5.7h2Z\" style=\"\"></path>\r\n <path id=\"Path_6738\" data-name=\"Path 6738\" d=\"M38.417,1a1,1,0,0,0-2,0V5.7h2Z\"></path>\r\n <path id=\"Path_6739\" data-name=\"Path 6739\" d=\"M0,43.146C0,45.822,1.826,48,4.07,48H43.928C46.174,48,48,45.822,48,43.146V17.121H0Z\" fill=\"#d5d5d5\"></path>\r\n <path id=\"Path_6740\" data-name=\"Path 6740\" d=\"M43.929,5.7H38.417v5.512a1,1,0,1,1-2,0V5.7H11.583v5.512a1,1,0,1,1-2,0V5.7H4.07C1.826,5.7,0,7.877,0,10.555v4.566H48V10.555C48,7.877,46.174,5.7,43.929,5.7Z\" fill=\"#595959\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n <!--<span class=\"input-group-text\" *ngIf=\"options.EnableCopyToClipboard\"\r\n (click)=\"copyInputMessage(Dateinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>-->\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(DatePickerFormControl.invalid && DatePickerFormControl.touched)\">\r\n {{getErrorValidation(DatePickerFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"control-desc\"*ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n \r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
907
+ template: "\r\n<div class=\"form-group bbsf-control bbsf-datetime-picker\" [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 </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <input autocomplete=\"off\" (dateTimeChange)=\"onDateSelect($event)\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" [owlDateTime]=\"dt1\" [owlDateTimeTrigger]=\"dt1\"\r\n [class.is-invalid]=\"DatePickerFormControl.invalid && DatePickerFormControl.touched\"\r\n [min]=\"options.StartDate\" [max]=\"options.EndDate\" [hour12Timer]=\"options.Hour12Timer\" [selectMode]=\"getSelectMode(options.SelectMode)\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" #Dateinput>\r\n\r\n <owl-date-time [pickerType]=\"getPickerType(options.PickerType)\"\r\n [startView]=\"getStartView(options.StartView)\" [firstDayOfWeek]=\"options.FirstDayOfWeek\"\r\n [hour12Timer]=\"options.Hour12Timer\" #dt1></owl-date-time>\r\n <!--icon-->\r\n <span class=\"copy-clipboard\">\r\n <span class=\"svg-icon\">\r\n <svg id=\"Group_356\" data-name=\"Group 356\" xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 48 48\">\r\n <path id=\"Path_6737\" data-name=\"Path 6737\" d=\"M11.583,1a1,1,0,0,0-2,0V5.7h2Z\" style=\"\"></path>\r\n <path id=\"Path_6738\" data-name=\"Path 6738\" d=\"M38.417,1a1,1,0,0,0-2,0V5.7h2Z\"></path>\r\n <path id=\"Path_6739\" data-name=\"Path 6739\" d=\"M0,43.146C0,45.822,1.826,48,4.07,48H43.928C46.174,48,48,45.822,48,43.146V17.121H0Z\" fill=\"#d5d5d5\"></path>\r\n <path id=\"Path_6740\" data-name=\"Path 6740\" d=\"M43.929,5.7H38.417v5.512a1,1,0,1,1-2,0V5.7H11.583v5.512a1,1,0,1,1-2,0V5.7H4.07C1.826,5.7,0,7.877,0,10.555v4.566H48V10.555C48,7.877,46.174,5.7,43.929,5.7Z\" fill=\"#595959\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\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=\"(DatePickerFormControl.invalid && DatePickerFormControl.touched)\">\r\n {{getErrorValidation(DatePickerFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n",
907
908
  providers: [
908
909
  { provide: ngPickDatetime.OwlDateTimeIntl, useClass: DefaultIntl }
909
- ],
910
- styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
910
+ ]
911
911
  },] }
912
912
  ];
913
913
  DateInputComponent.ctorParameters = function () { return [
@@ -1761,7 +1761,7 @@
1761
1761
  MultiLingualTextBoxComponent.decorators = [
1762
1762
  { type: i0.Component, args: [{
1763
1763
  selector: 'BBSF-MultiLingualTextBox',
1764
- template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"form-group bbsf-control bbsf-multilang-textbox\" [formGroup]=\"MultiLanguagegroup\">\r\n <div class=\"row\">\r\n <!--English textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEnglishTextBox\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"English\"\r\n [hidden]=\"options.IsHideEnglishFields\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"EnglishFormControl.invalid && EnglishFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.English\" [(ngModel)]=\"options.Value.English\"\r\n #userinputEnglish>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishFormControl.invalid && EnglishFormControl.touched)\">\r\n {{getErrorValidation(EnglishFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextBox\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div *ngIf=\"options.Icon!=null\" class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'right-icon':'left-icon'\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"rtl\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicFormControl.invalid && ArabicFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.Arabic\"\r\n (change)=\"trimControlValue('Ar')\" #userinputArabic>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\"(click)=\"copyInputMessage(userinputArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicFormControl.invalid && ArabicFormControl.touched)\">\r\n {{getErrorValidation(ArabicFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n"
1764
+ template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textbox\" [formGroup]=\"MultiLanguagegroup\">\r\n <div class=\"row\">\r\n <!--English textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEnglishTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"ltr\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"English\"\r\n [hidden]=\"options.IsHideEnglishFields\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"EnglishFormControl.invalid && EnglishFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.English\" [(ngModel)]=\"options.Value.English\"\r\n #userinputEnglish>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishFormControl.invalid && EnglishFormControl.touched)\">\r\n {{getErrorValidation(EnglishFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div *ngIf=\"options.Icon!=null\" class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'right-icon':'left-icon'\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"rtl\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicFormControl.invalid && ArabicFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.Arabic\"\r\n (change)=\"trimControlValue('Ar')\" #userinputArabic>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\"(click)=\"copyInputMessage(userinputArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicFormControl.invalid && ArabicFormControl.touched)\">\r\n {{getErrorValidation(ArabicFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n"
1765
1765
  },] }
1766
1766
  ];
1767
1767
  MultiLingualTextBoxComponent.ctorParameters = function () { return [
@@ -2384,7 +2384,7 @@
2384
2384
  MultiLingualTextAreaComponent.decorators = [
2385
2385
  { type: i0.Component, args: [{
2386
2386
  selector: 'BBSF-MultiLingualTextArea',
2387
- template: "<div [formGroup]=\"group\">\r\n <div class=\"form-group bbsf-control bbsf-multilang-textarea\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div class=\"row\">\r\n <!--English textarea-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEngishTextArea\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}} <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInEnglish\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\" [hidden]=\"options.IsHideEnglishFields\"\r\n [class.is-invalid]=\"EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.English\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextArea\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" rows=\"{{options.Rows}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (change)=\"trimControlValue('Ar')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.Arabic\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n"
2387
+ template: "<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textarea\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div class=\"row\">\r\n <!--English textarea-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEngishTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}} <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInEnglish\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control\" dir=\"ltr\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\" [hidden]=\"options.IsHideEnglishFields\"\r\n [class.is-invalid]=\"EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.English\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" rows=\"{{options.Rows}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (change)=\"trimControlValue('Ar')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.Arabic\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n"
2388
2388
  },] }
2389
2389
  ];
2390
2390
  MultiLingualTextAreaComponent.ctorParameters = function () { return [
@@ -6806,8 +6806,10 @@
6806
6806
  Number.LabelDescription = _this.RepeaterField.ControlOptions.LabelDescription ? _this.RepeaterField.ControlOptions.LabelDescription : "";
6807
6807
  Number.Type = exports.InputType.Number;
6808
6808
  var rangeNumber = new RangeNumber();
6809
- rangeNumber.To = _this.RepeaterField.ControlOptions.maxLength;
6810
- rangeNumber.From = _this.RepeaterField.ControlOptions.minLength;
6809
+ if (_this.RepeaterField.ControlOptions.NumberRange) {
6810
+ rangeNumber.To = _this.RepeaterField.ControlOptions.NumberRange.To;
6811
+ rangeNumber.From = _this.RepeaterField.ControlOptions.NumberRange.From;
6812
+ }
6811
6813
  Number.NumberRange = rangeNumber;
6812
6814
  Number.Value = _this.value;
6813
6815
  Number.IsReadonly = _this.RepeaterField.ControlOptions.IsReadonly;
@@ -7927,6 +7929,35 @@
7927
7929
  OnChange: [{ type: i0.Output }]
7928
7930
  };
7929
7931
 
7932
+ var PageHeaderComponentComponent = /** @class */ (function () {
7933
+ function PageHeaderComponentComponent(router, utilityService) {
7934
+ this.router = router;
7935
+ this.utilityService = utilityService;
7936
+ this.DataTypeEnum = exports.DataType;
7937
+ }
7938
+ PageHeaderComponentComponent.prototype.translate = function (key) {
7939
+ return this.utilityService.getResourceValue(key);
7940
+ };
7941
+ PageHeaderComponentComponent.prototype.ngOnInit = function () {
7942
+ this.EN = this.utilityService.isCurrentLanguageEnglish();
7943
+ };
7944
+ return PageHeaderComponentComponent;
7945
+ }());
7946
+ PageHeaderComponentComponent.decorators = [
7947
+ { type: i0.Component, args: [{
7948
+ selector: 'bbsf-page-header-component',
7949
+ 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) : 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():\"\"' class=\"btn btn-light btn-sm subheader-btn export-btn\" *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\" [placement]=\"EN ? 'bottom-right' : 'bottom-left'\" \r\n #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\"\r\n (click)=\"options.Filters.RestFunction(dropdown)\">\r\n {{translate(\"Reset\")}}\r\n </button>\r\n <button class=\"btn btn-brand btn-sm\"\r\n (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\" (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\" (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\" (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-->\r\n"
7950
+ },] }
7951
+ ];
7952
+ PageHeaderComponentComponent.ctorParameters = function () { return [
7953
+ { type: router.Router },
7954
+ { type: bbsfUtilities.UtilityService }
7955
+ ]; };
7956
+ PageHeaderComponentComponent.propDecorators = {
7957
+ group: [{ type: i0.Input }],
7958
+ options: [{ type: i0.Input }]
7959
+ };
7960
+
7930
7961
  var options;
7931
7962
  exports.AppInjector = void 0;
7932
7963
  angular.FullCalendarModule.registerPlugins([
@@ -7979,7 +8010,8 @@
7979
8010
  BBSFDateTimePipe,
7980
8011
  BBSFDatePipe,
7981
8012
  BTagsInputComponent,
7982
- RecaptchaComponent
8013
+ RecaptchaComponent,
8014
+ PageHeaderComponentComponent
7983
8015
  ],
7984
8016
  imports: [
7985
8017
  common.CommonModule,
@@ -8079,7 +8111,8 @@
8079
8111
  RepeaterTableComponent,
8080
8112
  BBSFDateTimePipe,
8081
8113
  BBSFDatePipe,
8082
- RecaptchaComponent
8114
+ RecaptchaComponent,
8115
+ PageHeaderComponentComponent
8083
8116
  ]
8084
8117
  },] }
8085
8118
  ];
@@ -8088,6 +8121,188 @@
8088
8121
  { type: core$1.TranslateService }
8089
8122
  ]; };
8090
8123
 
8124
+ var CustomValidation = /** @class */ (function () {
8125
+ function CustomValidation() {
8126
+ }
8127
+ return CustomValidation;
8128
+ }());
8129
+ var CustomValidator = /** @class */ (function () {
8130
+ function CustomValidator() {
8131
+ }
8132
+ // Number only validation
8133
+ CustomValidator.numeric = function (control) {
8134
+ var val = control.value;
8135
+ if (val === null || val === '')
8136
+ return null;
8137
+ if (!val.toString().match(/^[0-9]+(\.?[0-9]+)?$/))
8138
+ return { 'invalidNumber': true };
8139
+ return null;
8140
+ };
8141
+ return CustomValidator;
8142
+ }());
8143
+
8144
+ var AppBaseComponent = /** @class */ (function () {
8145
+ function AppBaseComponent(injector) {
8146
+ var _this = this;
8147
+ this.pageTitle = "";
8148
+ this.PageCount = 12;
8149
+ this.onSuccessAddHandler = function (success) {
8150
+ _this.utilityService.notifySuccessMessage(_this.l("RecordAdded"), null, null, false);
8151
+ };
8152
+ this.onSuccessEditHandler = function (success) {
8153
+ _this.utilityService.notifySuccessMessage(_this.l("RecordUpdated"), null, null, false);
8154
+ };
8155
+ this.onSuccessDeleteHandler = function (success) {
8156
+ _this.utilityService.notifySuccessMessage(_this.l("RecordDeleted"), null, null, false);
8157
+ };
8158
+ this.utilityService = injector.get(bbsfUtilities.UtilityService);
8159
+ this.controlUtility = injector.get(ControlUtility);
8160
+ this.configurationService = injector.get(bbsfUtilities.ConfigurationService);
8161
+ this.environmentService = injector.get(bbsfUtilities.EnvironmentService);
8162
+ this.modalService = injector.get(ngBootstrap.NgbModal);
8163
+ this.titleService = injector.get(platformBrowser.Title);
8164
+ this.auhService = injector.get(bbsfUtilities.AuthService);
8165
+ this.exportLabel = this.utilityService.getResourceValue("Export");
8166
+ this.filtersLabel = this.utilityService.getResourceValue("Filters");
8167
+ this.addLabel = this.utilityService.getResourceValue("Add");
8168
+ this.userName = this.auhService.name();
8169
+ }
8170
+ AppBaseComponent.prototype.updatePageTitle = function (title) {
8171
+ this.titleService.setTitle(this.calculatePageTitle(title));
8172
+ };
8173
+ AppBaseComponent.prototype.l = function (key) {
8174
+ return this.utilityService.getResourceValue(key);
8175
+ };
8176
+ AppBaseComponent.prototype.getConfigurationValue = function (key) {
8177
+ return this.configurationService.getConfigurationValue(key);
8178
+ };
8179
+ AppBaseComponent.prototype.getLanguageModeValue = function () {
8180
+ return this.configurationService.getConfigurationValue("LanguageMode");
8181
+ };
8182
+ AppBaseComponent.prototype.stopBlockUI = function () {
8183
+ this.utilityService.stopBlockUI();
8184
+ };
8185
+ AppBaseComponent.prototype.startBlockUI = function () {
8186
+ this.utilityService.startBlockUI();
8187
+ };
8188
+ AppBaseComponent.prototype.openModal = function (modal, size) {
8189
+ if (size)
8190
+ this.modalService.open(modal, { size: size, backdrop: 'static' });
8191
+ else
8192
+ this.modalService.open(modal, { backdrop: 'static' });
8193
+ };
8194
+ AppBaseComponent.prototype.download = function (fileDTO, fileName) {
8195
+ /*let blob = new Blob([file]);*/
8196
+ var file = new Blob([fileDTO], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
8197
+ saveAs__namespace(file, fileName);
8198
+ };
8199
+ AppBaseComponent.prototype.base64toBlob = function (base64Data, contentType) {
8200
+ contentType = contentType || '';
8201
+ var sliceSize = 1024;
8202
+ var byteCharacters = atob(base64Data);
8203
+ var bytesLength = byteCharacters.length;
8204
+ var slicesCount = Math.ceil(bytesLength / sliceSize);
8205
+ var byteArrays = new Array(slicesCount);
8206
+ for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
8207
+ var begin = sliceIndex * sliceSize;
8208
+ var end = Math.min(begin + sliceSize, bytesLength);
8209
+ var bytes = new Array(end - begin);
8210
+ for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
8211
+ bytes[i] = byteCharacters[offset].charCodeAt(0);
8212
+ }
8213
+ byteArrays[sliceIndex] = new Uint8Array(bytes);
8214
+ }
8215
+ return new Blob(byteArrays, { type: contentType });
8216
+ };
8217
+ AppBaseComponent.prototype.calculatePageTitle = function (title) {
8218
+ return title ? title.substring(0, 100) + (" | " + this.l("ApplicationName")) : "" + this.l("ApplicationName");
8219
+ };
8220
+ AppBaseComponent.prototype.getPagingFiltersValues = function (form, filters) {
8221
+ var model = new Object();
8222
+ for (var i = 0; i < filters.length; i++) {
8223
+ var filterItem = filters[i];
8224
+ if (form.controls[filterItem.FormControlName].value == undefined)
8225
+ continue;
8226
+ model[filterItem.ActionParameterName] = form.controls[filterItem.FormControlName].value == undefined ? '' : form.controls[filterItem.FormControlName].value;
8227
+ // params = params.append(filterItem.ActionParameterName, form.controls[filterItem.FormControlName].value == undefined ? '' : form.controls[filterItem.FormControlName].value);
8228
+ }
8229
+ return model;
8230
+ };
8231
+ AppBaseComponent.prototype.removeControl = function (controlName, form) {
8232
+ form.removeControl(controlName);
8233
+ };
8234
+ AppBaseComponent.prototype.copyToClipboard = function (val) {
8235
+ var selBox = document.createElement('textarea');
8236
+ selBox.style.position = 'fixed';
8237
+ selBox.style.left = '0';
8238
+ selBox.style.top = '0';
8239
+ selBox.style.opacity = '0';
8240
+ selBox.value = val;
8241
+ document.body.appendChild(selBox);
8242
+ selBox.focus();
8243
+ selBox.select();
8244
+ document.execCommand('copy');
8245
+ document.body.removeChild(selBox);
8246
+ this.utilityService.notifySuccessMessage(this.l("CopiedSuccessfully"));
8247
+ };
8248
+ AppBaseComponent.prototype.addRequiredRule = function (control, controlOptions) {
8249
+ this.controlUtility.addRequiredToControl(control, controlOptions);
8250
+ };
8251
+ AppBaseComponent.prototype.removeRequiredRule = function (control, controlOptions) {
8252
+ this.controlUtility.removeRequiredFromControl(control, controlOptions);
8253
+ };
8254
+ AppBaseComponent.prototype.validateDates = function (form, fromDateControl, toDateControl, validationMessageKey) {
8255
+ var validator = new CustomValidation();
8256
+ validator.functionBody = function (control) {
8257
+ var fromDate = form.controls[fromDateControl].value;
8258
+ var toDate = form.controls[toDateControl].value;
8259
+ if (fromDate && toDate && toDate <= fromDate)
8260
+ return { 'customerError': true };
8261
+ return null;
8262
+ };
8263
+ validator.massage = this.l(validationMessageKey);
8264
+ return validator;
8265
+ };
8266
+ AppBaseComponent.prototype.recalculatePageTitle = function () {
8267
+ this.titleService.setTitle(this.calculatePageTitle(""));
8268
+ };
8269
+ AppBaseComponent.prototype.isEnglish = function () {
8270
+ return this.utilityService.isCurrentLanguageEnglish();
8271
+ };
8272
+ AppBaseComponent.prototype.calculateInitials = function (name) {
8273
+ var _a;
8274
+ var fullName = name === null || name === void 0 ? void 0 : name.split(' ');
8275
+ if (!fullName)
8276
+ return null;
8277
+ var initials = fullName.shift().charAt(0) + ((_a = fullName.pop()) === null || _a === void 0 ? void 0 : _a.charAt(0));
8278
+ return initials.toUpperCase();
8279
+ };
8280
+ AppBaseComponent.prototype.getCurrentUserInitials = function () {
8281
+ return this.calculateInitials(this.auhService.name());
8282
+ };
8283
+ AppBaseComponent.prototype.getCurrentFailOver = function (val) {
8284
+ if (this.isEnglish()) {
8285
+ if (val.English)
8286
+ return val.English;
8287
+ else
8288
+ return val.Arabic;
8289
+ }
8290
+ else {
8291
+ if (val.Arabic)
8292
+ return val.Arabic;
8293
+ else
8294
+ return val.English;
8295
+ }
8296
+ };
8297
+ return AppBaseComponent;
8298
+ }());
8299
+ AppBaseComponent.decorators = [
8300
+ { type: i0.Injectable }
8301
+ ];
8302
+ AppBaseComponent.ctorParameters = function () { return [
8303
+ { type: i0.Injector }
8304
+ ]; };
8305
+
8091
8306
  // This file can be replaced during build by using the `fileReplacements` array.
8092
8307
  // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
8093
8308
  // The list of file replacements can be found in `angular.json`.
@@ -8137,26 +8352,6 @@
8137
8352
  return MultilingualControlOptionsBase;
8138
8353
  }());
8139
8354
 
8140
- var CustomValidation = /** @class */ (function () {
8141
- function CustomValidation() {
8142
- }
8143
- return CustomValidation;
8144
- }());
8145
- var CustomValidator = /** @class */ (function () {
8146
- function CustomValidator() {
8147
- }
8148
- // Number only validation
8149
- CustomValidator.numeric = function (control) {
8150
- var val = control.value;
8151
- if (val === null || val === '')
8152
- return null;
8153
- if (!val.toString().match(/^[0-9]+(\.?[0-9]+)?$/))
8154
- return { 'invalidNumber': true };
8155
- return null;
8156
- };
8157
- return CustomValidator;
8158
- }());
8159
-
8160
8355
  var MultiLingualTextBoxOptions = /** @class */ (function (_super) {
8161
8356
  __extends(MultiLingualTextBoxOptions, _super);
8162
8357
  function MultiLingualTextBoxOptions() {
@@ -8521,6 +8716,121 @@
8521
8716
  return RepeaterOptions;
8522
8717
  }());
8523
8718
 
8719
+ var FilterOptions = /** @class */ (function () {
8720
+ function FilterOptions() {
8721
+ this.ControlsOptions = [];
8722
+ this.ApplyFunction = null;
8723
+ this.RestFunction = null;
8724
+ this.ShowLoadingInFiltersBox = false;
8725
+ }
8726
+ return FilterOptions;
8727
+ }());
8728
+
8729
+ var PageHeaderOptions = /** @class */ (function () {
8730
+ function PageHeaderOptions() {
8731
+ this.BreadCrumb = new BreadCrumbModel();
8732
+ this.AddButton = new AddButton();
8733
+ this.EditButton = new EditButton();
8734
+ this.DeleteButton = new DeleteButton();
8735
+ this.ExportButton = new ExportButton();
8736
+ this.GridView = new GridViewModel();
8737
+ this.SearchTextBox = new TextBoxModel();
8738
+ this.FiltersButton = new FiltersButton();
8739
+ this.Filters = new FilterOptions();
8740
+ this.DropDownActions = new DropdownActions();
8741
+ }
8742
+ return PageHeaderOptions;
8743
+ }());
8744
+ var BreadCrumbModel = /** @class */ (function () {
8745
+ function BreadCrumbModel() {
8746
+ this.BreadCrumbItems = [];
8747
+ }
8748
+ return BreadCrumbModel;
8749
+ }());
8750
+ var AddButton = /** @class */ (function () {
8751
+ function AddButton() {
8752
+ this.ButtonTextKey = "Add";
8753
+ this.Function = null;
8754
+ }
8755
+ return AddButton;
8756
+ }());
8757
+ var EditButton = /** @class */ (function () {
8758
+ function EditButton() {
8759
+ this.ButtonTextKey = "Edit";
8760
+ this.Function = null;
8761
+ }
8762
+ return EditButton;
8763
+ }());
8764
+ var DeleteButton = /** @class */ (function () {
8765
+ function DeleteButton() {
8766
+ this.ButtonTextKey = "Delete";
8767
+ this.Function = null;
8768
+ }
8769
+ return DeleteButton;
8770
+ }());
8771
+ var FiltersButton = /** @class */ (function () {
8772
+ function FiltersButton() {
8773
+ this.ButtonTextKey = "Filter";
8774
+ this.Function = null;
8775
+ this.ShowLoadingInFiltersBox = true;
8776
+ this.ButtonTextKey = "Filter";
8777
+ }
8778
+ return FiltersButton;
8779
+ }());
8780
+ var ExportButton = /** @class */ (function () {
8781
+ function ExportButton() {
8782
+ this.ButtonTextKey = "Export";
8783
+ this.Function = null;
8784
+ }
8785
+ return ExportButton;
8786
+ }());
8787
+ var GridViewModel = /** @class */ (function () {
8788
+ function GridViewModel() {
8789
+ this.ToggleFunction = null;
8790
+ }
8791
+ return GridViewModel;
8792
+ }());
8793
+ var TextBoxModel = /** @class */ (function () {
8794
+ function TextBoxModel() {
8795
+ this.TextSearchBoxOptions = new TextBoxOptions();
8796
+ }
8797
+ return TextBoxModel;
8798
+ }());
8799
+ var DropdownActions = /** @class */ (function () {
8800
+ function DropdownActions() {
8801
+ this.DropdownActionItems = [];
8802
+ }
8803
+ return DropdownActions;
8804
+ }());
8805
+ var DropdownActionItem = /** @class */ (function () {
8806
+ function DropdownActionItem(text, svg, functionName, routerLink) {
8807
+ if (routerLink === void 0) { routerLink = null; }
8808
+ this.Function = null;
8809
+ this.Text = text;
8810
+ this.SVG = svg;
8811
+ this.Function = functionName;
8812
+ this.RouterLink = routerLink;
8813
+ }
8814
+ return DropdownActionItem;
8815
+ }());
8816
+
8817
+ var ControlFilterItem = /** @class */ (function () {
8818
+ function ControlFilterItem() {
8819
+ this.onChange = null;
8820
+ }
8821
+ return ControlFilterItem;
8822
+ }());
8823
+
8824
+ var BreadCrumb = /** @class */ (function () {
8825
+ function BreadCrumb(label, active, route) {
8826
+ if (route === void 0) { route = null; }
8827
+ this.label = label;
8828
+ this.active = active;
8829
+ this.route = route;
8830
+ }
8831
+ return BreadCrumb;
8832
+ }());
8833
+
8524
8834
  exports.MenuListType = void 0;
8525
8835
  (function (MenuListType) {
8526
8836
  MenuListType[MenuListType["AdminType"] = 1] = "AdminType";
@@ -8844,6 +9154,8 @@
8844
9154
  * Generated bundle index. Do not edit.
8845
9155
  */
8846
9156
 
9157
+ exports.AddButton = AddButton;
9158
+ exports.AppBaseComponent = AppBaseComponent;
8847
9159
  exports.Attribute = Attribute;
8848
9160
  exports.AutocompleteDTO = AutocompleteDTO;
8849
9161
  exports.AutocompleteOptions = AutocompleteOptions;
@@ -8851,6 +9163,8 @@
8851
9163
  exports.BBSFControlsModule = BBSFControlsModule;
8852
9164
  exports.BBSFDatePipe = BBSFDatePipe;
8853
9165
  exports.BBSFDateTimePipe = BBSFDateTimePipe;
9166
+ exports.BreadCrumb = BreadCrumb;
9167
+ exports.BreadCrumbModel = BreadCrumbModel;
8854
9168
  exports.CalendarComponent = CalendarComponent;
8855
9169
  exports.CalendarEventDTO = CalendarEventDTO;
8856
9170
  exports.CalendarOptions = CalendarOptions;
@@ -8859,6 +9173,7 @@
8859
9173
  exports.CheckBoxOptions = CheckBoxOptions;
8860
9174
  exports.ConfirmationModalComponent = ConfirmationModalComponent;
8861
9175
  exports.ConfirmationModalOptions = ConfirmationModalOptions;
9176
+ exports.ControlFilterItem = ControlFilterItem;
8862
9177
  exports.ControlOptionsBase = ControlOptionsBase;
8863
9178
  exports.ControlUtility = ControlUtility;
8864
9179
  exports.CustomValidation = CustomValidation;
@@ -8866,19 +9181,27 @@
8866
9181
  exports.DateInputComponent = DateInputComponent;
8867
9182
  exports.DatePickerOptions = DatePickerOptions;
8868
9183
  exports.DefaultIntl = DefaultIntl;
9184
+ exports.DeleteButton = DeleteButton;
9185
+ exports.DropdownActionItem = DropdownActionItem;
9186
+ exports.DropdownActions = DropdownActions;
8869
9187
  exports.DropdownListComponent = DropdownListComponent;
8870
9188
  exports.DropdownListItem = DropdownListItem;
8871
9189
  exports.DropdownOptions = DropdownOptions;
9190
+ exports.EditButton = EditButton;
8872
9191
  exports.EditPersonalImage = EditPersonalImage;
8873
9192
  exports.EnglishArabicDTO = EnglishArabicDTO;
8874
9193
  exports.ErrorMassageValidation = ErrorMassageValidation;
9194
+ exports.ExportButton = ExportButton;
8875
9195
  exports.FileUploadComponent = FileUploadComponent;
8876
9196
  exports.FileUploadModel = FileUploadModel;
8877
9197
  exports.FileUploadOptions = FileUploadOptions;
8878
9198
  exports.FilterItem = FilterItem;
9199
+ exports.FilterOptions = FilterOptions;
9200
+ exports.FiltersButton = FiltersButton;
8879
9201
  exports.FormComponent = FormComponent;
8880
9202
  exports.FormOptions = FormOptions;
8881
9203
  exports.GlobalSettings = GlobalSettings;
9204
+ exports.GridViewModel = GridViewModel;
8882
9205
  exports.HtmlEditorComponent = HtmlEditorComponent;
8883
9206
  exports.HtmlEditorOptions = HtmlEditorOptions;
8884
9207
  exports.ImageUploadOptions = ImageUploadOptions;
@@ -8897,6 +9220,8 @@
8897
9220
  exports.MultipleFileUploadModel = MultipleFileUploadModel;
8898
9221
  exports.NgTemplateNameDirective = NgTemplateNameDirective;
8899
9222
  exports.OnPagingFiltersChangeService = OnPagingFiltersChangeService;
9223
+ exports.PageHeaderComponentComponent = PageHeaderComponentComponent;
9224
+ exports.PageHeaderOptions = PageHeaderOptions;
8900
9225
  exports.PagingComponent = PagingComponent;
8901
9226
  exports.PagingDTO = PagingDTO;
8902
9227
  exports.PagingOptions = PagingOptions;
@@ -8925,6 +9250,7 @@
8925
9250
  exports.TagsInputOptions = TagsInputOptions;
8926
9251
  exports.TextAreaComponent = TextAreaComponent;
8927
9252
  exports.TextAreaOptions = TextAreaOptions;
9253
+ exports.TextBoxModel = TextBoxModel;
8928
9254
  exports.TextBoxOptions = TextBoxOptions;
8929
9255
  exports.TextboxComponent = TextboxComponent;
8930
9256
  exports.ToggleSlideOptions = ToggleSlideOptions;