@pepperi-addons/ngx-lib 0.2.58-beta.1 → 0.2.59

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 (163) hide show
  1. package/attachment/attachment.component.d.ts +0 -1
  2. package/attachment/pepperi-addons-ngx-lib-attachment.metadata.json +1 -1
  3. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +1 -6
  4. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js.map +1 -1
  5. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +0 -3
  6. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
  7. package/bundles/pepperi-addons-ngx-lib-color.umd.js +1 -6
  8. package/bundles/pepperi-addons-ngx-lib-color.umd.js.map +1 -1
  9. package/bundles/pepperi-addons-ngx-lib-date.umd.js +0 -3
  10. package/bundles/pepperi-addons-ngx-lib-date.umd.js.map +1 -1
  11. package/bundles/pepperi-addons-ngx-lib-form.umd.js +15 -18
  12. package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
  13. package/bundles/pepperi-addons-ngx-lib-image.umd.js +1 -6
  14. package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
  15. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +1 -6
  16. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js.map +1 -1
  17. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +1 -6
  18. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js.map +1 -1
  19. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +1 -6
  20. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js.map +1 -1
  21. package/bundles/pepperi-addons-ngx-lib-select.umd.js +1 -6
  22. package/bundles/pepperi-addons-ngx-lib-select.umd.js.map +1 -1
  23. package/bundles/pepperi-addons-ngx-lib-separator.umd.js +0 -8
  24. package/bundles/pepperi-addons-ngx-lib-separator.umd.js.map +1 -1
  25. package/bundles/pepperi-addons-ngx-lib-signature.umd.js +1 -6
  26. package/bundles/pepperi-addons-ngx-lib-signature.umd.js.map +1 -1
  27. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +173 -1432
  28. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
  29. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +1 -6
  30. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js.map +1 -1
  31. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +2 -4
  32. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
  33. package/bundles/pepperi-addons-ngx-lib.umd.js +101 -85
  34. package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
  35. package/color/color.component.d.ts +0 -1
  36. package/color/pepperi-addons-ngx-lib-color.metadata.json +1 -1
  37. package/core/common/services/color.service.d.ts +3 -3
  38. package/core/customization/customization.service.d.ts +0 -1
  39. package/esm2015/attachment/attachment.component.js +2 -7
  40. package/esm2015/checkbox/checkbox.component.js +1 -4
  41. package/esm2015/color/color.component.js +2 -7
  42. package/esm2015/color/public-api.js +1 -2
  43. package/esm2015/core/common/services/color.service.js +101 -83
  44. package/esm2015/core/customization/customization.service.js +2 -4
  45. package/esm2015/date/date.component.js +1 -4
  46. package/esm2015/form/internal-button.component.js +17 -20
  47. package/esm2015/image/image.component.js +2 -7
  48. package/esm2015/images-filmstrip/images-filmstrip.component.js +2 -7
  49. package/esm2015/quantity-selector/quantity-selector.component.js +2 -7
  50. package/esm2015/rich-html-textarea/rich-html-textarea.component.js +2 -7
  51. package/esm2015/select/select.component.js +2 -7
  52. package/esm2015/separator/separator.component.js +1 -9
  53. package/esm2015/signature/signature.component.js +2 -7
  54. package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +2 -12
  55. package/esm2015/smart-filters/common/model/base-filter-component.js +10 -40
  56. package/esm2015/smart-filters/common/model/creator.js +2 -8
  57. package/esm2015/smart-filters/common/model/field.js +1 -12
  58. package/esm2015/smart-filters/common/model/operator.js +8 -8
  59. package/esm2015/smart-filters/common/model/type.js +1 -1
  60. package/esm2015/smart-filters/date-filter/date-filter.component.js +2 -45
  61. package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +14 -53
  62. package/esm2015/smart-filters/number-filter/number-filter.component.js +2 -25
  63. package/esm2015/smart-filters/pepperi-addons-ngx-lib-smart-filters.js +1 -8
  64. package/esm2015/smart-filters/public-api.js +1 -2
  65. package/esm2015/smart-filters/smart-filters.module.js +2 -14
  66. package/esm2015/textarea/textarea.component.js +2 -7
  67. package/esm2015/textbox/textbox.component.js +3 -5
  68. package/fesm2015/pepperi-addons-ngx-lib-attachment.js +1 -6
  69. package/fesm2015/pepperi-addons-ngx-lib-attachment.js.map +1 -1
  70. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +0 -3
  71. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
  72. package/fesm2015/pepperi-addons-ngx-lib-color.js +1 -6
  73. package/fesm2015/pepperi-addons-ngx-lib-color.js.map +1 -1
  74. package/fesm2015/pepperi-addons-ngx-lib-date.js +0 -3
  75. package/fesm2015/pepperi-addons-ngx-lib-date.js.map +1 -1
  76. package/fesm2015/pepperi-addons-ngx-lib-form.js +15 -18
  77. package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
  78. package/fesm2015/pepperi-addons-ngx-lib-image.js +1 -6
  79. package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
  80. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +1 -6
  81. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js.map +1 -1
  82. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +1 -6
  83. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js.map +1 -1
  84. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +1 -6
  85. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js.map +1 -1
  86. package/fesm2015/pepperi-addons-ngx-lib-select.js +1 -6
  87. package/fesm2015/pepperi-addons-ngx-lib-select.js.map +1 -1
  88. package/fesm2015/pepperi-addons-ngx-lib-separator.js +0 -8
  89. package/fesm2015/pepperi-addons-ngx-lib-separator.js.map +1 -1
  90. package/fesm2015/pepperi-addons-ngx-lib-signature.js +1 -6
  91. package/fesm2015/pepperi-addons-ngx-lib-signature.js.map +1 -1
  92. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +128 -1293
  93. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
  94. package/fesm2015/pepperi-addons-ngx-lib-textarea.js +1 -6
  95. package/fesm2015/pepperi-addons-ngx-lib-textarea.js.map +1 -1
  96. package/fesm2015/pepperi-addons-ngx-lib-textbox.js +2 -4
  97. package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
  98. package/fesm2015/pepperi-addons-ngx-lib.js +101 -85
  99. package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
  100. package/form/internal-button.component.d.ts +1 -0
  101. package/image/image.component.d.ts +0 -1
  102. package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
  103. package/images-filmstrip/images-filmstrip.component.d.ts +0 -1
  104. package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.metadata.json +1 -1
  105. package/package.json +1 -1
  106. package/pepperi-addons-ngx-lib.metadata.json +1 -1
  107. package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.metadata.json +1 -1
  108. package/quantity-selector/quantity-selector.component.d.ts +0 -1
  109. package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.metadata.json +1 -1
  110. package/rich-html-textarea/rich-html-textarea.component.d.ts +0 -1
  111. package/select/pepperi-addons-ngx-lib-select.metadata.json +1 -1
  112. package/select/select.component.d.ts +0 -1
  113. package/separator/pepperi-addons-ngx-lib-separator.metadata.json +1 -1
  114. package/signature/pepperi-addons-ngx-lib-signature.metadata.json +1 -1
  115. package/signature/signature.component.d.ts +0 -1
  116. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +1 -5
  117. package/smart-filters/common/model/base-filter-component.d.ts +1 -10
  118. package/smart-filters/common/model/field.d.ts +0 -4
  119. package/smart-filters/common/model/operator.d.ts +0 -1
  120. package/smart-filters/common/model/type.d.ts +2 -2
  121. package/smart-filters/date-filter/date-filter.component.d.ts +1 -8
  122. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +0 -6
  123. package/smart-filters/number-filter/number-filter.component.d.ts +0 -5
  124. package/smart-filters/pepperi-addons-ngx-lib-smart-filters.d.ts +0 -7
  125. package/smart-filters/pepperi-addons-ngx-lib-smart-filters.metadata.json +1 -1
  126. package/smart-filters/public-api.d.ts +0 -1
  127. package/src/assets/i18n/en.ngx-lib.json +1 -2
  128. package/src/core/style/abstracts/mixins.scss +3 -3
  129. package/src/core/style/components/general.scss +2 -4
  130. package/textarea/pepperi-addons-ngx-lib-textarea.metadata.json +1 -1
  131. package/textarea/textarea.component.d.ts +0 -1
  132. package/theming.scss +0 -4
  133. package/esm2015/smart-filters/filter-builder/common/model/filter.js +0 -2
  134. package/esm2015/smart-filters/filter-builder/common/model/legacy.js +0 -2
  135. package/esm2015/smart-filters/filter-builder/common/model/operator-unit.js +0 -42
  136. package/esm2015/smart-filters/filter-builder/common/model/operator.js +0 -207
  137. package/esm2015/smart-filters/filter-builder/common/model/type-map.js +0 -27
  138. package/esm2015/smart-filters/filter-builder/common/model/type.js +0 -6
  139. package/esm2015/smart-filters/filter-builder/common/pipes/filter-item-counter.pipe.js +0 -18
  140. package/esm2015/smart-filters/filter-builder/common/services/output-filter.service.js +0 -132
  141. package/esm2015/smart-filters/filter-builder/common/services/type-convertor.service.js +0 -44
  142. package/esm2015/smart-filters/filter-builder/filter-builder-item/filter-builder-item.component.js +0 -106
  143. package/esm2015/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.js +0 -50
  144. package/esm2015/smart-filters/filter-builder/filter-builder.component.js +0 -65
  145. package/esm2015/smart-filters/filter-builder/filter-builder.service.js +0 -261
  146. package/esm2015/smart-filters/index.js +0 -5
  147. package/esm2015/smart-filters/text-filter/text-filter.component.js +0 -79
  148. package/smart-filters/filter-builder/common/model/filter.d.ts +0 -6
  149. package/smart-filters/filter-builder/common/model/legacy.d.ts +0 -23
  150. package/smart-filters/filter-builder/common/model/operator-unit.d.ts +0 -13
  151. package/smart-filters/filter-builder/common/model/operator.d.ts +0 -21
  152. package/smart-filters/filter-builder/common/model/type-map.d.ts +0 -12
  153. package/smart-filters/filter-builder/common/model/type.d.ts +0 -4
  154. package/smart-filters/filter-builder/common/pipes/filter-item-counter.pipe.d.ts +0 -5
  155. package/smart-filters/filter-builder/common/services/output-filter.service.d.ts +0 -52
  156. package/smart-filters/filter-builder/common/services/type-convertor.service.d.ts +0 -10
  157. package/smart-filters/filter-builder/filter-builder-item/filter-builder-item.component.d.ts +0 -32
  158. package/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.d.ts +0 -22
  159. package/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.theme.scss +0 -6
  160. package/smart-filters/filter-builder/filter-builder.component.d.ts +0 -22
  161. package/smart-filters/filter-builder/filter-builder.service.d.ts +0 -90
  162. package/smart-filters/index.d.ts +0 -1
  163. package/smart-filters/text-filter/text-filter.component.d.ts +0 -17
@@ -34,7 +34,6 @@ class PepTextareaComponent {
34
34
  this.form = null;
35
35
  this.isActive = false;
36
36
  this.showTitle = true;
37
- this.renderTitle = true;
38
37
  this._layoutType = 'form';
39
38
  this.valueChange = new EventEmitter();
40
39
  this.fieldHeight = '';
@@ -87,9 +86,6 @@ class PepTextareaComponent {
87
86
  this.setFieldHeight();
88
87
  this.setDefaultForm();
89
88
  this.renderer.addClass(this.element.nativeElement, PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME);
90
- if (!this.renderTitle) {
91
- this.renderer.addClass(this.element.nativeElement, PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME);
92
- }
93
89
  }
94
90
  }
95
91
  ngOnChanges(changes) {
@@ -139,7 +135,7 @@ class PepTextareaComponent {
139
135
  PepTextareaComponent.decorators = [
140
136
  { type: Component, args: [{
141
137
  selector: 'pep-textarea',
142
- template: "<ng-container [formGroup]=\"form\">\n <ng-template #pepTemplate let-isFormView=\"isFormView\">\n <div class=\"pep-textarea-container\" [ngClass]=\"{ 'stand-alone': standAlone,\n 'right-alignment': xAlignment == 'right', 'one-row': rowSpan === 1,\n 'pep-textarea-card-container': layoutType === 'card'}\">\n <pep-field-title *ngIf=\"renderTitle && isFormView\" [label]=\"label\" [mandatory]=\"mandatory\"\n [disabled]=\"disabled\" [maxFieldCharacters]=\"disabled || readonly ? 0 : maxFieldCharacters\"\n [xAlignment]=\"xAlignment\" [showTitle]=\"showTitle\" [inputLength]=\"input.value?.length\">\n </pep-field-title>\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\"\n [ngClass]=\"{ 'pep-table-textarea': layoutType === 'table' }\">\n <textarea #input [hidden]=\"readonly\" [id]=\"key\" class=\"body-sm\" matInput (blur)=\"onBlur($event)\"\n title=\"{{ value }}\" [value]=\"value\"\n maxlength=\"{{ maxFieldCharacters > 0 ? maxFieldCharacters : 99999 }}\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'right' ? 'right' : 'left' }\"\n [formControlName]=\"key\" [style.height]=\"fieldHeight\">\n </textarea>\n <div *ngIf=\"readonly\" class=\"body-sm disable-text-div\" title=\"{{ value }}\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'right' ? 'right' : 'left' }\"\n [innerHtml]=\"value | pepSafeHtml\" [style.height]=\"fieldHeight\">\n </div>\n <!-- <pep-textbox-icon *ngIf=\"xAlignment == 'right'\" matPrefix [value]=\"value\" [label]=\"label\" [type]=\"controlType\" [disabled]=\"disabled\"\n [ngClass]=\"{ 'card-one-row-icon': layoutType === 'card' && rowSpan === 1 }\" (iconClick)=\"openDialog()\">\n </pep-textbox-icon> -->\n <pep-textbox-icon matSuffix [value]=\"value\" [label]=\"label\" [type]=\"controlType\"\n [disabled]=\"disabled || readonly\"\n [ngClass]=\"{ 'card-one-row-icon': layoutType === 'card' && rowSpan === 1 }\"\n (iconClick)=\"openDialog()\">\n </pep-textbox-icon>\n <mat-error>\n <span class=\"body-xs\"\n [title]=\"mandatory && value.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"\n [innerText]=\"mandatory && value.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"></span>\n </mat-error>\n </mat-form-field>\n </div>\n </ng-template>\n\n <ng-container *ngIf=\"layoutType === 'form'\">\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true }\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'card'\">\n <ng-container *ngIf=\"isInEditMode; then editBlock; else readOnlyBlock\"></ng-container>\n <ng-template #editBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false }\"></ng-container>\n </ng-template>\n <ng-template #readOnlyBlock>\n <div class=\"pep-textarea-card-container card-flex-container\"\n [ngClass]=\"{'one-row': rowSpan === 1, 'pep-button weak': isActive && !disabled}\"\n [ngStyle]=\"{ color: textColor, '-webkit-line-clamp': rowSpan }\" [class]=\"'text-align-' + xAlignment\"\n (click)=\"!disabled ? cardTemplateClicked($event) : ''\" [style.height]=\"fieldHeight\">\n <span *ngIf=\" showTitle && label !=''\" class=\" body-xs title no-shrink\" title=\"{{ label }}\">{{ label\n }}&nbsp;</span>\n <span [id]=\"key\" title=\"{{ value }}\" class=\"body-sm value wrap\">{{ value }}</span>\n <button *ngIf=\"isActive && !disabled\" class=\"pep-button weak card-edit-button self-start\"\n [ngClass]=\"{'self-end' : value && value !== ''}\" mat-button>\n <mat-icon>\n <pep-icon name=\"system_edit\">\n </pep-icon>\n </mat-icon>\n </button>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'table'\">\n <ng-container *ngIf=\"isActive && !disabled; then selectedBlock; else notSelectedBlock\"></ng-container>\n <ng-template #selectedBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false }\"></ng-container>\n </ng-template>\n <ng-template #notSelectedBlock>\n <ng-container *ngIf=\"value?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\n <ng-template #notEmptyBlock>\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\"\n class=\"pep-report-textarea\" [ngClass]=\"{ readonly: disabled }\">\n <input matInput [id]=\"key\" class=\"body-sm pep-report-input\" [ngClass]=\"{ readonly: disabled}\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'center' ? 'center' : xAlignment == 'right' ? 'right' : 'left' }\"\n title=\"{{ value }}\" [formControlName]=\"key\" type=\"text\" [value]=\"value\" [disabled]=\"true\" />\n <pep-textbox-icon *ngIf=\"disabled && xAlignment == 'right'\" matPrefix [value]=\"value\"\n [label]=\"label\" [type]=\"controlType\" [disabled]=\"disabled\" (iconClick)=\"openDialog()\">\n </pep-textbox-icon>\n <pep-textbox-icon *ngIf=\"disabled && (xAlignment == 'left')\" matSuffix [value]=\"value\"\n [label]=\"label\" [type]=\"controlType\" [disabled]=\"disabled\" (iconClick)=\"openDialog()\">\n </pep-textbox-icon>\n </mat-form-field>\n </ng-template>\n <ng-template #emptyBlock>\n <span>&nbsp;</span>\n </ng-template>\n </ng-template>\n </ng-container>\n</ng-container>\n\n<ng-template #textAreaDialogTemplate>\n <pep-dialog class=\"dialog-textarea-container\" [title]=\"label\">\n <ng-container pep-dialog-content>\n <textarea #dialogTextarea [readonly]=\"disabled || readonly\">{{ value }}</textarea>\n </ng-container>\n <div pep-dialog-actions class=\"pep-spacing-element-negative\">\n <ng-container *ngIf=\"disabled || readonly; then notEditableBlock; else editableBlock\">\n </ng-container>\n <ng-template #editableBlock>\n <button mat-button (click)=\"closeDialog()\" class=\"pep-spacing-element pep-button md weak\">\n {{ 'ACTIONS.CANCEL' | translate }}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\"\n (click)=\"closeDialog(dialogTextarea.value)\">\n {{ 'ACTIONS.SAVE' | translate }}\n </button>\n </ng-template>\n <ng-template #notEditableBlock>\n <button mat-button (click)=\"closeDialog()\" class=\"pep-spacing-element pep-button md weak\">\n {{ 'ACTIONS.CLOSE' | translate }}\n </button>\n </ng-template>\n </div>\n </pep-dialog>\n</ng-template>",
138
+ template: "<ng-container [formGroup]=\"form\">\n <ng-template #pepTemplate let-isFormView=\"isFormView\">\n <div class=\"pep-textarea-container\" [ngClass]=\"{ 'stand-alone': standAlone,\n 'right-alignment': xAlignment == 'right', 'one-row': rowSpan === 1,\n 'pep-textarea-card-container': layoutType === 'card'}\">\n <pep-field-title *ngIf=\"isFormView\" [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\"\n [maxFieldCharacters]=\"disabled || readonly ? 0 : maxFieldCharacters\" [xAlignment]=\"xAlignment\"\n [showTitle]=\"showTitle\" [inputLength]=\"input.value?.length\">\n </pep-field-title>\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\"\n [ngClass]=\"{ 'pep-table-textarea': layoutType === 'table' }\">\n <textarea #input [hidden]=\"readonly\" [id]=\"key\" class=\"body-sm\" matInput (blur)=\"onBlur($event)\"\n title=\"{{ value }}\" [value]=\"value\"\n maxlength=\"{{ maxFieldCharacters > 0 ? maxFieldCharacters : 99999 }}\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'right' ? 'right' : 'left' }\"\n [formControlName]=\"key\" [style.height]=\"fieldHeight\">\n </textarea>\n <div *ngIf=\"readonly\" class=\"body-sm disable-text-div\" title=\"{{ value }}\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'right' ? 'right' : 'left' }\"\n [innerHtml]=\"value | pepSafeHtml\" [style.height]=\"fieldHeight\">\n </div>\n <!-- <pep-textbox-icon *ngIf=\"xAlignment == 'right'\" matPrefix [value]=\"value\" [label]=\"label\" [type]=\"controlType\" [disabled]=\"disabled\"\n [ngClass]=\"{ 'card-one-row-icon': layoutType === 'card' && rowSpan === 1 }\" (iconClick)=\"openDialog()\">\n </pep-textbox-icon> -->\n <pep-textbox-icon matSuffix [value]=\"value\" [label]=\"label\" [type]=\"controlType\"\n [disabled]=\"disabled || readonly\"\n [ngClass]=\"{ 'card-one-row-icon': layoutType === 'card' && rowSpan === 1 }\"\n (iconClick)=\"openDialog()\">\n </pep-textbox-icon>\n <mat-error>\n <span class=\"body-xs\"\n [title]=\"mandatory && value.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"\n [innerText]=\"mandatory && value.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"></span>\n </mat-error>\n </mat-form-field>\n </div>\n </ng-template>\n\n <ng-container *ngIf=\"layoutType === 'form'\">\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true }\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'card'\">\n <ng-container *ngIf=\"isInEditMode; then editBlock; else readOnlyBlock\"></ng-container>\n <ng-template #editBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false }\"></ng-container>\n </ng-template>\n <ng-template #readOnlyBlock>\n <div class=\"pep-textarea-card-container card-flex-container\"\n [ngClass]=\"{'one-row': rowSpan === 1, 'pep-button weak': isActive && !disabled}\"\n [ngStyle]=\"{ color: textColor, '-webkit-line-clamp': rowSpan }\" [class]=\"'text-align-' + xAlignment\"\n (click)=\"!disabled ? cardTemplateClicked($event) : ''\" [style.height]=\"fieldHeight\">\n <span *ngIf=\" showTitle && label !=''\" class=\" body-xs title no-shrink\" title=\"{{ label }}\">{{ label\n }}&nbsp;</span>\n <span [id]=\"key\" title=\"{{ value }}\" class=\"body-sm value wrap\">{{ value }}</span>\n <button *ngIf=\"isActive && !disabled\" class=\"pep-button weak card-edit-button self-start\"\n [ngClass]=\"{'self-end' : value && value !== ''}\" mat-button>\n <mat-icon>\n <pep-icon name=\"system_edit\">\n </pep-icon>\n </mat-icon>\n </button>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'table'\">\n <ng-container *ngIf=\"isActive && !disabled; then selectedBlock; else notSelectedBlock\"></ng-container>\n <ng-template #selectedBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false }\"></ng-container>\n </ng-template>\n <ng-template #notSelectedBlock>\n <ng-container *ngIf=\"value?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\n <ng-template #notEmptyBlock>\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\"\n class=\"pep-report-textarea\" [ngClass]=\"{ readonly: disabled }\">\n <input matInput [id]=\"key\" class=\"body-sm pep-report-input\" [ngClass]=\"{ readonly: disabled}\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'center' ? 'center' : xAlignment == 'right' ? 'right' : 'left' }\"\n title=\"{{ value }}\" [formControlName]=\"key\" type=\"text\" [value]=\"value\" [disabled]=\"true\" />\n <pep-textbox-icon *ngIf=\"disabled && xAlignment == 'right'\" matPrefix [value]=\"value\"\n [label]=\"label\" [type]=\"controlType\" [disabled]=\"disabled\" (iconClick)=\"openDialog()\">\n </pep-textbox-icon>\n <pep-textbox-icon *ngIf=\"disabled && (xAlignment == 'left')\" matSuffix [value]=\"value\"\n [label]=\"label\" [type]=\"controlType\" [disabled]=\"disabled\" (iconClick)=\"openDialog()\">\n </pep-textbox-icon>\n </mat-form-field>\n </ng-template>\n <ng-template #emptyBlock>\n <span>&nbsp;</span>\n </ng-template>\n </ng-template>\n </ng-container>\n</ng-container>\n\n<ng-template #textAreaDialogTemplate>\n <pep-dialog class=\"dialog-textarea-container\" [title]=\"label\">\n <ng-container pep-dialog-content>\n <textarea #dialogTextarea [readonly]=\"disabled || readonly\">{{ value }}</textarea>\n </ng-container>\n <div pep-dialog-actions class=\"pep-spacing-element-negative\">\n <ng-container *ngIf=\"disabled || readonly; then notEditableBlock; else editableBlock\">\n </ng-container>\n <ng-template #editableBlock>\n <button mat-button (click)=\"closeDialog()\" class=\"pep-spacing-element pep-button md weak\">\n {{ 'ACTIONS.CANCEL' | translate }}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\"\n (click)=\"closeDialog(dialogTextarea.value)\">\n {{ 'ACTIONS.SAVE' | translate }}\n </button>\n </ng-template>\n <ng-template #notEditableBlock>\n <button mat-button (click)=\"closeDialog()\" class=\"pep-spacing-element pep-button md weak\">\n {{ 'ACTIONS.CLOSE' | translate }}\n </button>\n </ng-template>\n </div>\n </pep-dialog>\n</ng-template>",
143
139
  changeDetection: ChangeDetectionStrategy.OnPush,
144
140
  styles: [":host{height:inherit;display:grid}:host>*{align-self:center}.disable-text-div{display:inline-block;vertical-align:middle;margin:0;padding:.5rem 1.5rem .5rem 0;overflow-y:hidden}.right-alignment .disable-text-div{padding:.5rem 0 .5rem 1.5rem}.dialog-textarea-container textarea{border:none;resize:none;width:25rem;height:13rem}.dialog-textarea-container textarea:focus{outline:none}"]
145
141
  },] }
@@ -165,7 +161,6 @@ PepTextareaComponent.propDecorators = {
165
161
  form: [{ type: Input }],
166
162
  isActive: [{ type: Input }],
167
163
  showTitle: [{ type: Input }],
168
- renderTitle: [{ type: Input }],
169
164
  layoutType: [{ type: Input }],
170
165
  valueChange: [{ type: Output }],
171
166
  textAreaDialogTemplate: [{ type: ViewChild, args: ['textAreaDialogTemplate', { read: TemplateRef },] }]
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-lib-textarea.js","sources":["../../../projects/ngx-lib/textarea/textarea.component.ts","../../../projects/ngx-lib/textarea/textarea.module.ts","../../../projects/ngx-lib/textarea/public-api.ts","../../../projects/ngx-lib/textarea/pepperi-addons-ngx-lib-textarea.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n OnChanges,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ElementRef,\n ViewChild,\n OnDestroy,\n Renderer2,\n TemplateRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport {\n PepLayoutType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n PepTextareaField,\n} from '@pepperi-addons/ngx-lib';\nimport { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\n\n@Component({\n selector: 'pep-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepTextareaComponent implements OnChanges, OnInit, OnDestroy {\n @Input() key = '';\n @Input() value = '';\n @Input() label = '';\n @Input() mandatory = false;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() maxFieldCharacters: number;\n @Input() textColor = '';\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n private _rowSpan = 1;\n @Input()\n set rowSpan(value) {\n this._rowSpan = value;\n this.setFieldHeight();\n }\n get rowSpan(): number {\n return this._rowSpan;\n }\n\n private _visible = true;\n @Input()\n set visible(visible: boolean) {\n this._visible = visible;\n if (visible) {\n this.renderer.removeClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n } else {\n this.renderer.addClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n }\n }\n get visible(): boolean {\n return this._visible;\n }\n\n // @Input() lastFocusField: any;\n\n controlType = 'textarea';\n\n @Input() form: FormGroup = null;\n @Input() isActive = false;\n @Input() showTitle = true;\n @Input() renderTitle = true;\n\n private _layoutType: PepLayoutType = 'form';\n @Input()\n set layoutType(value: PepLayoutType) {\n this._layoutType = value;\n this.setFieldHeight();\n }\n get layoutType(): PepLayoutType {\n return this._layoutType;\n }\n\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n // @ViewChild('input') input: ElementRef;\n @ViewChild('textAreaDialogTemplate', { read: TemplateRef })\n textAreaDialogTemplate: TemplateRef<any>;\n\n fieldHeight = '';\n standAlone = false;\n isInEditMode = false;\n\n dialogRef: MatDialogRef<any>;\n\n constructor(\n private dialogService: PepDialogService,\n private customizationService: PepCustomizationService,\n private renderer: Renderer2,\n private element: ElementRef\n ) { }\n\n private setFieldHeight(): void {\n this.fieldHeight = this.customizationService.calculateFieldHeight(\n this.layoutType,\n this.rowSpan,\n this.standAlone\n );\n }\n\n private setDefaultForm(): void {\n const pepField = new PepTextareaField({\n key: this.key,\n value: this.value,\n mandatory: this.mandatory,\n readonly: this.readonly,\n disabled: this.disabled,\n maxFieldCharacters: this.maxFieldCharacters,\n });\n this.form = this.customizationService.getDefaultFromGroup(pepField);\n }\n\n ngOnInit(): void {\n if (this.form === null) {\n this.standAlone = true;\n this.setFieldHeight();\n this.setDefaultForm();\n\n this.renderer.addClass(\n this.element.nativeElement,\n PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n );\n\n if (!this.renderTitle) {\n this.renderer.addClass(\n this.element.nativeElement,\n PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME\n );\n }\n }\n }\n\n ngOnChanges(changes: any): void {\n if (this.standAlone) {\n this.setDefaultForm();\n }\n }\n\n ngOnDestroy(): void {\n //\n }\n\n onBlur(event: any): void {\n const value = event.target ? event.target.value : event;\n this.changeValue(value);\n\n setTimeout(() => {\n if (this.isInEditMode) {\n this.isInEditMode = false;\n }\n }, 0);\n }\n\n changeValue(value: any): void {\n if (value !== this.value) {\n this.value = value;\n this.customizationService.updateFormFieldValue(\n this.form,\n this.key,\n value\n );\n this.valueChange.emit(value);\n }\n }\n\n cardTemplateClicked(event: any): void {\n this.openDialog();\n }\n\n openDialog(): void {\n const config = this.dialogService.getDialogConfig(\n {\n // maxWidth: '90vw',\n // maxHeight: '90vh'\n },\n 'regular'\n );\n\n this.dialogRef = this.dialogService.openDialog(\n this.textAreaDialogTemplate,\n {},\n config\n );\n\n this.dialogRef.afterClosed().subscribe((value) => {\n if (value !== undefined && value !== null) {\n this.changeValue(value);\n }\n });\n }\n\n closeDialog(data: any = null): void {\n this.dialogRef?.close(data);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemEdit,\n pepIconSystemClose,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepTextboxIconModule } from '@pepperi-addons/ngx-lib/textbox-icon';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepTextareaComponent } from './textarea.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatDialogModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n PepFieldTitleModule,\n PepTextboxIconModule,\n PepDialogModule,\n ],\n exports: [PepTextareaComponent],\n declarations: [PepTextareaComponent],\n})\nexport class PepTextareaModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemEdit,\n pepIconSystemClose,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/textarea\n */\nexport * from './textarea.module';\nexport * from './textarea.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-lib-textarea.js","sources":["../../../projects/ngx-lib/textarea/textarea.component.ts","../../../projects/ngx-lib/textarea/textarea.module.ts","../../../projects/ngx-lib/textarea/public-api.ts","../../../projects/ngx-lib/textarea/pepperi-addons-ngx-lib-textarea.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n OnChanges,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ElementRef,\n ViewChild,\n OnDestroy,\n Renderer2,\n TemplateRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport {\n PepLayoutType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n PepTextareaField,\n} from '@pepperi-addons/ngx-lib';\nimport { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\n\n@Component({\n selector: 'pep-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepTextareaComponent implements OnChanges, OnInit, OnDestroy {\n @Input() key = '';\n @Input() value = '';\n @Input() label = '';\n @Input() mandatory = false;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() maxFieldCharacters: number;\n @Input() textColor = '';\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n private _rowSpan = 1;\n @Input()\n set rowSpan(value) {\n this._rowSpan = value;\n this.setFieldHeight();\n }\n get rowSpan(): number {\n return this._rowSpan;\n }\n\n private _visible = true;\n @Input()\n set visible(visible: boolean) {\n this._visible = visible;\n if (visible) {\n this.renderer.removeClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n } else {\n this.renderer.addClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n }\n }\n get visible(): boolean {\n return this._visible;\n }\n\n // @Input() lastFocusField: any;\n\n controlType = 'textarea';\n\n @Input() form: FormGroup = null;\n @Input() isActive = false;\n @Input() showTitle = true;\n\n private _layoutType: PepLayoutType = 'form';\n @Input()\n set layoutType(value: PepLayoutType) {\n this._layoutType = value;\n this.setFieldHeight();\n }\n get layoutType(): PepLayoutType {\n return this._layoutType;\n }\n\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n // @ViewChild('input') input: ElementRef;\n @ViewChild('textAreaDialogTemplate', { read: TemplateRef })\n textAreaDialogTemplate: TemplateRef<any>;\n\n fieldHeight = '';\n standAlone = false;\n isInEditMode = false;\n\n dialogRef: MatDialogRef<any>;\n\n constructor(\n private dialogService: PepDialogService,\n private customizationService: PepCustomizationService,\n private renderer: Renderer2,\n private element: ElementRef\n ) {}\n\n private setFieldHeight(): void {\n this.fieldHeight = this.customizationService.calculateFieldHeight(\n this.layoutType,\n this.rowSpan,\n this.standAlone\n );\n }\n\n private setDefaultForm(): void {\n const pepField = new PepTextareaField({\n key: this.key,\n value: this.value,\n mandatory: this.mandatory,\n readonly: this.readonly,\n disabled: this.disabled,\n maxFieldCharacters: this.maxFieldCharacters,\n });\n this.form = this.customizationService.getDefaultFromGroup(pepField);\n }\n\n ngOnInit(): void {\n if (this.form === null) {\n this.standAlone = true;\n this.setFieldHeight();\n this.setDefaultForm();\n\n this.renderer.addClass(\n this.element.nativeElement,\n PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n );\n }\n }\n\n ngOnChanges(changes: any): void {\n if (this.standAlone) {\n this.setDefaultForm();\n }\n }\n\n ngOnDestroy(): void {\n //\n }\n\n onBlur(event: any): void {\n const value = event.target ? event.target.value : event;\n this.changeValue(value);\n\n setTimeout(() => {\n if (this.isInEditMode) {\n this.isInEditMode = false;\n }\n }, 0);\n }\n\n changeValue(value: any): void {\n if (value !== this.value) {\n this.value = value;\n this.customizationService.updateFormFieldValue(\n this.form,\n this.key,\n value\n );\n this.valueChange.emit(value);\n }\n }\n\n cardTemplateClicked(event: any): void {\n this.openDialog();\n }\n\n openDialog(): void {\n const config = this.dialogService.getDialogConfig(\n {\n // maxWidth: '90vw',\n // maxHeight: '90vh'\n },\n 'regular'\n );\n\n this.dialogRef = this.dialogService.openDialog(\n this.textAreaDialogTemplate,\n {},\n config\n );\n\n this.dialogRef.afterClosed().subscribe((value) => {\n if (value !== undefined && value !== null) {\n this.changeValue(value);\n }\n });\n }\n\n closeDialog(data: any = null): void {\n this.dialogRef?.close(data);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemEdit,\n pepIconSystemClose,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepTextboxIconModule } from '@pepperi-addons/ngx-lib/textbox-icon';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepTextareaComponent } from './textarea.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatDialogModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n PepFieldTitleModule,\n PepTextboxIconModule,\n PepDialogModule,\n ],\n exports: [PepTextareaComponent],\n declarations: [PepTextareaComponent],\n})\nexport class PepTextareaModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemEdit,\n pepIconSystemClose,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/textarea\n */\nexport * from './textarea.module';\nexport * from './textarea.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -212,9 +212,6 @@ class PepTextboxComponent {
212
212
  : this.maxValue;
213
213
  this.setDefaultForm();
214
214
  this.renderer.addClass(this.element.nativeElement, PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME);
215
- if (!this.renderTitle) {
216
- this.renderer.addClass(this.element.nativeElement, PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME);
217
- }
218
215
  }
219
216
  this.readonly = this.type === 'duration' ? true : this.readonly; // Hack until we develop Timer UI for editing Duration field
220
217
  this.updateFormFieldValue();
@@ -282,7 +279,8 @@ class PepTextboxComponent {
282
279
  }
283
280
  onChange(e) {
284
281
  const value = e.target ? e.target.value : e;
285
- this.valueChange.emit(value);
282
+ // TODO: uncomment
283
+ // this.valueChange.emit(value);
286
284
  }
287
285
  onBlur(e) {
288
286
  this.isInFocus = false;
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-lib-textbox.js","sources":["../../../projects/ngx-lib/textbox/textbox.component.ts","../../../projects/ngx-lib/textbox/textbox-validation.directive.ts","../../../projects/ngx-lib/textbox/textbox.module.ts","../../../projects/ngx-lib/textbox/public-api.ts","../../../projects/ngx-lib/textbox/pepperi-addons-ngx-lib-textbox.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n OnChanges,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ElementRef,\n ViewChild,\n Renderer2,\n OnDestroy,\n ChangeDetectorRef,\n HostBinding,\n} from '@angular/core';\nimport { FormGroup, FormBuilder } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PepLayoutType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n PepTextboxFieldType,\n PepTextboxField,\n PepFieldBase,\n PepUtilitiesService,\n} from '@pepperi-addons/ngx-lib';\n\n/**\n * This is a text box input component that can be use to\n *\n * @export\n * @class PepTextboxComponent\n * @implements {OnChanges}\n * @implements {OnInit}\n * @implements {OnDestroy}\n */\n@Component({\n selector: 'pep-textbox',\n templateUrl: './textbox.component.html',\n styleUrls: ['./textbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepTextboxComponent implements OnChanges, OnInit, OnDestroy {\n\n @HostBinding('attr.data-qa') dataQa = '';\n\n private _key = '';\n /**\n * The text box key\n *\n * @memberof PepTextboxComponent\n */\n @Input()\n set key(value) {\n this._key = value;\n this.dataQa = value;\n }\n get key(): string {\n return this._key;\n }\n\n private _value = '';\n /**\n * The value of the text box.\n *\n * @memberof PepTextboxComponent\n */\n @Input()\n set value(value: string) {\n if (!value) {\n value = '';\n }\n\n this._value = value;\n\n if (this._calculateFormattedValue) {\n this.setFormattedValue(value);\n }\n }\n get value(): string {\n return this._value;\n }\n\n private _formattedValue = null;\n /**\n * The formatted value.\n *\n * @memberof PepTextboxComponent\n */\n @Input()\n set formattedValue(value: string) {\n if (!value) {\n value = '';\n }\n\n if (this._calculateFormattedValue) {\n this._calculateFormattedValue = false;\n }\n\n this.setFormattedValue(value);\n }\n get formattedValue(): string {\n return this._formattedValue;\n }\n\n /**\n * The title of the textbox.\n *\n * @memberof PepTextboxComponent\n */\n @Input() label = '';\n\n /**\n * The placeholder (relevant only for children - if parent isn't null).\n *\n * @memberof PepTextboxComponent\n */\n @Input() placeholder = '';\n\n /**\n * The type of the textbox.\n *\n * @type {PepTextboxFieldType}\n * @memberof PepTextboxComponent\n */\n @Input() type: PepTextboxFieldType = 'text';\n\n /**\n * If the textbox is mandatory\n *\n * @memberof PepTextboxComponent\n */\n @Input() mandatory = false;\n\n // TODO: Check if should remove disabled and keep only readonly.\n /**\n * If the textbox is disabled.\n *\n * @memberof PepTextboxComponent\n */\n @Input() disabled = false;\n\n /**\n * If the textbox is readonly\n *\n * @memberof PepTextboxComponent\n */\n @Input() readonly = false;\n @Input() maxFieldCharacters: number;\n @Input() textColor = '';\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n @Input() rowSpan = 1;\n // @Input() lastFocusField: any;\n @Input() minValue = NaN;\n @Input() maxValue = NaN;\n\n private _visible = true;\n @Input()\n set visible(visible: boolean) {\n this._visible = visible;\n if (visible) {\n this.renderer.removeClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n } else {\n this.renderer.addClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n }\n }\n get visible(): boolean {\n return this._visible;\n }\n\n @Input() form: FormGroup = null;\n @Input() isActive = false;\n @Input() showTitle = true;\n @Input() renderTitle = true;\n @Input() renderError = true;\n @Input() renderSymbol = true;\n @Input() layoutType: PepLayoutType = 'form';\n @Input() parentFieldKey: string = null;\n\n /**\n * The value change event.\n *\n * @type {EventEmitter<string>}\n * @memberof PepTextboxComponent\n */\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n @Output()\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @ViewChild('input') input: ElementRef;\n\n private _calculateFormattedValue = true;\n get calculateFormattedValue(): boolean {\n return this._calculateFormattedValue;\n }\n\n controlType = 'textbox';\n\n standAlone = false;\n isInEditMode = false;\n isInFocus: boolean;\n\n constructor(\n public fb: FormBuilder,\n private customizationService: PepCustomizationService,\n private renderer: Renderer2,\n private element: ElementRef,\n private translate: TranslateService,\n private utilitiesService: PepUtilitiesService\n ) {\n this.isInFocus = false;\n }\n\n private setFormattedValue(value: string) {\n if (this._calculateFormattedValue) {\n this._formattedValue = this.isNumberType()\n ? this.utilitiesService.formatNumber(value)\n : value;\n } else {\n this._formattedValue = value;\n }\n\n this.updateFormFieldValue();\n }\n\n private updateFormFieldValue() {\n this.customizationService.updateFormFieldValue(\n this.form,\n this.key,\n this.formattedValue,\n this.parentFieldKey\n );\n }\n\n get displayValue(): string {\n let res = '';\n\n if (this.type == 'link') {\n res = this.formattedValue;\n } else {\n res = this.isInFocus ? this.value : this.formattedValue;\n }\n\n return res;\n }\n\n private setDefaultForm(): void {\n const pepField = new PepTextboxField({\n key: this.key,\n value: this.value,\n mandatory: this.mandatory,\n readonly: this.readonly,\n disabled: this.disabled,\n maxFieldCharacters: this.maxFieldCharacters,\n type: this.type,\n minValue: this.minValue,\n maxValue: this.maxValue,\n });\n this.form = this.customizationService.getDefaultFromGroup(\n pepField,\n this.renderError\n );\n }\n\n ngOnInit(): void {\n if (this.form === null) {\n this.standAlone = true;\n\n this.minValue =\n isNaN(this.minValue) && !isNaN(this.maxValue)\n ? 0\n : this.minValue;\n this.maxValue =\n isNaN(this.maxValue) && !isNaN(this.minValue)\n ? 99999\n : this.maxValue;\n\n this.setDefaultForm();\n\n this.renderer.addClass(\n this.element.nativeElement,\n PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n );\n\n if (!this.renderTitle) {\n this.renderer.addClass(\n this.element.nativeElement,\n PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME\n );\n }\n }\n\n this.readonly = this.type === 'duration' ? true : this.readonly; // Hack until we develop Timer UI for editing Duration field\n\n this.updateFormFieldValue();\n }\n\n ngOnChanges(changes: any): void {\n if (this.standAlone) {\n this.setDefaultForm();\n }\n\n this.readonly = this.type === 'duration' ? true : this.readonly; // Hack until we develop Timer UI for editing Duration field\n }\n\n ngOnDestroy(): void {\n //\n }\n\n onFocus(event: any): void {\n this.isInFocus = true;\n\n // select the value in focus (DI-18246 improvement)\n setTimeout(() => {\n const eventTarget = event.target || event.srcElement;\n if (eventTarget) {\n eventTarget.select();\n }\n }, 0);\n }\n\n isNumberType(): boolean {\n return (\n this.type === 'percentage' ||\n this.type === 'currency' ||\n this.type === 'int' ||\n this.type === 'real'\n );\n }\n\n isValueValid(value: string): boolean {\n let res = false;\n\n if (this.isNumberType()) {\n if (value === '') {\n res = this.mandatory ? false : true;\n } else {\n const numberValue = this.utilitiesService.coerceNumberProperty(\n value\n );\n res =\n numberValue >= this.minValue &&\n numberValue <= this.maxValue;\n }\n } else {\n // TODO: Maybe need to check other types.\n res = true;\n }\n\n return res;\n }\n\n isDifferentValue(value: string): boolean {\n let res = false;\n\n if (this.isNumberType()) {\n if (this.value === '' || value === '') {\n res = true;\n } else {\n const currentValue = this.utilitiesService.coerceNumberProperty(\n this.value\n );\n const newValue = this.utilitiesService.coerceNumberProperty(\n value\n );\n\n res = currentValue !== newValue;\n }\n } else {\n res = true;\n }\n\n return res;\n }\n\n onChange(e: any): void {\n const value = e.target ? e.target.value : e;\n\n this.valueChange.emit(value);\n }\n\n onBlur(e: any): void {\n this.isInFocus = false;\n const value = e.target ? e.target.value : e;\n if (value !== this.value && this.isDifferentValue(value)) {\n // If renderError is false and the new value is not valid.\n if (!this.renderError && !this.isValueValid(value)) {\n this.renderer.setProperty(\n this.input.nativeElement,\n 'value',\n this.value\n );\n } else {\n this.value = value;\n\n // If the user is setting the formatted value then set the value till the user format it and return it back.\n if (!this._calculateFormattedValue) {\n this._formattedValue = value;\n }\n\n this.valueChange.emit(value);\n }\n }\n\n if (this.isInEditMode) {\n this.isInEditMode = false;\n }\n }\n\n anchorClicked(): void {\n const currentValue = this.value;\n if (currentValue.trim().length > 0) {\n switch (this.type) {\n case 'email':\n window.open('mailto:' + currentValue, 'email');\n break;\n case 'phone':\n window.open('tel:' + currentValue, 'tel');\n break;\n case 'link':\n window.open(currentValue);\n break;\n default:\n break;\n }\n }\n }\n\n cardTemplateClicked(event: any): void {\n this.isInEditMode = true;\n\n setTimeout(() => {\n this.input.nativeElement.focus();\n }, 0);\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport {\n PepTextboxFieldType,\n PepValidatorService,\n} from '@pepperi-addons/ngx-lib';\n\n@Directive({\n selector: '[pepTextboxValidation]',\n})\nexport class PepTextboxValidationDirective implements OnInit {\n @Input() type: PepTextboxFieldType = 'text';\n\n previousValue = '';\n\n constructor(\n private hostElement: ElementRef,\n private validatorService: PepValidatorService\n ) {}\n\n ngOnInit() {\n //\n }\n\n private isNumber(): boolean {\n return this.isInteger() || this.isDecimal();\n }\n\n private isInteger(): boolean {\n return this.type === 'int';\n }\n\n private isDecimal(): boolean {\n return (\n this.type === 'currency' ||\n this.type === 'percentage' ||\n this.type === 'real'\n );\n }\n\n private isPhone(): boolean {\n return this.type === 'phone';\n }\n\n private isText(): boolean {\n return (\n this.type === 'email' ||\n this.type === 'link' ||\n this.type === 'text'\n );\n }\n\n @HostListener('change', ['$event'])\n onChange(e) {\n this.validateValue(this.hostElement.nativeElement.value);\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(e: KeyboardEvent) {\n const originalValue: string = e.target['value'];\n\n if (this.isNumber()) {\n // save value before keydown event\n this.previousValue = originalValue;\n const isNumber = this.validatorService.isNumber(\n e,\n this.isDecimal()\n );\n\n if (isNumber) return;\n else e.preventDefault();\n } else if (this.isPhone()) {\n const isPhone = this.validatorService.isPhone(e);\n if (isPhone) return;\n else e.preventDefault();\n }\n }\n\n validateValue(value: string): void {\n if (this.isNumber()) {\n const newValue = this.validatorService.validateNumber(\n value,\n this.isDecimal()\n );\n this.hostElement.nativeElement['value'] = newValue ? newValue : 0;\n } else if (this.isPhone()) {\n // test phone with regular expression, when\n // phone is invalid, replace it with the previousValue\n const valid = this.validatorService.validatePhone(value);\n this.hostElement.nativeElement['value'] = valid\n ? value\n : this.previousValue;\n } else if (this.isText()) {\n this.hostElement.nativeElement['value'] = value;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemEdit,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepTextboxIconModule } from '@pepperi-addons/ngx-lib/textbox-icon';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\n\nimport { PepTextboxComponent } from './textbox.component';\nimport { PepTextboxValidationDirective } from './textbox-validation.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n PepFieldTitleModule,\n PepTextboxIconModule,\n ],\n exports: [PepTextboxComponent],\n declarations: [PepTextboxComponent, PepTextboxValidationDirective],\n})\nexport class PepTextboxModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([pepIconSystemEdit]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/textbox\n */\nexport * from './textbox.module';\nexport * from './textbox.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {PepTextboxValidationDirective as ɵa} from './textbox-validation.directive';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-lib-textbox.js","sources":["../../../projects/ngx-lib/textbox/textbox.component.ts","../../../projects/ngx-lib/textbox/textbox-validation.directive.ts","../../../projects/ngx-lib/textbox/textbox.module.ts","../../../projects/ngx-lib/textbox/public-api.ts","../../../projects/ngx-lib/textbox/pepperi-addons-ngx-lib-textbox.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n OnChanges,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ElementRef,\n ViewChild,\n Renderer2,\n OnDestroy,\n ChangeDetectorRef,\n HostBinding,\n} from '@angular/core';\nimport { FormGroup, FormBuilder } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PepLayoutType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n PepTextboxFieldType,\n PepTextboxField,\n PepFieldBase,\n PepUtilitiesService,\n} from '@pepperi-addons/ngx-lib';\n\n/**\n * This is a text box input component that can be use to\n *\n * @export\n * @class PepTextboxComponent\n * @implements {OnChanges}\n * @implements {OnInit}\n * @implements {OnDestroy}\n */\n@Component({\n selector: 'pep-textbox',\n templateUrl: './textbox.component.html',\n styleUrls: ['./textbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepTextboxComponent implements OnChanges, OnInit, OnDestroy {\n\n @HostBinding('attr.data-qa') dataQa = '';\n\n private _key = '';\n /**\n * The text box key\n *\n * @memberof PepTextboxComponent\n */\n @Input()\n set key(value) {\n this._key = value;\n this.dataQa = value;\n }\n get key(): string {\n return this._key;\n }\n\n private _value = '';\n /**\n * The value of the text box.\n *\n * @memberof PepTextboxComponent\n */\n @Input()\n set value(value: string) {\n if (!value) {\n value = '';\n }\n\n this._value = value;\n\n if (this._calculateFormattedValue) {\n this.setFormattedValue(value);\n }\n }\n get value(): string {\n return this._value;\n }\n\n private _formattedValue = null;\n /**\n * The formatted value.\n *\n * @memberof PepTextboxComponent\n */\n @Input()\n set formattedValue(value: string) {\n if (!value) {\n value = '';\n }\n\n if (this._calculateFormattedValue) {\n this._calculateFormattedValue = false;\n }\n\n this.setFormattedValue(value);\n }\n get formattedValue(): string {\n return this._formattedValue;\n }\n\n /**\n * The title of the textbox.\n *\n * @memberof PepTextboxComponent\n */\n @Input() label = '';\n\n /**\n * The placeholder (relevant only for children - if parent isn't null).\n *\n * @memberof PepTextboxComponent\n */\n @Input() placeholder = '';\n\n /**\n * The type of the textbox.\n *\n * @type {PepTextboxFieldType}\n * @memberof PepTextboxComponent\n */\n @Input() type: PepTextboxFieldType = 'text';\n\n /**\n * If the textbox is mandatory\n *\n * @memberof PepTextboxComponent\n */\n @Input() mandatory = false;\n\n // TODO: Check if should remove disabled and keep only readonly.\n /**\n * If the textbox is disabled.\n *\n * @memberof PepTextboxComponent\n */\n @Input() disabled = false;\n\n /**\n * If the textbox is readonly\n *\n * @memberof PepTextboxComponent\n */\n @Input() readonly = false;\n @Input() maxFieldCharacters: number;\n @Input() textColor = '';\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n @Input() rowSpan = 1;\n // @Input() lastFocusField: any;\n @Input() minValue = NaN;\n @Input() maxValue = NaN;\n\n private _visible = true;\n @Input()\n set visible(visible: boolean) {\n this._visible = visible;\n if (visible) {\n this.renderer.removeClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n } else {\n this.renderer.addClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n }\n }\n get visible(): boolean {\n return this._visible;\n }\n\n @Input() form: FormGroup = null;\n @Input() isActive = false;\n @Input() showTitle = true;\n @Input() renderTitle = true;\n @Input() renderError = true;\n @Input() renderSymbol = true;\n @Input() layoutType: PepLayoutType = 'form';\n @Input() parentFieldKey: string = null;\n\n /**\n * The value change event.\n *\n * @type {EventEmitter<string>}\n * @memberof PepTextboxComponent\n */\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n @Output()\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @ViewChild('input') input: ElementRef;\n\n private _calculateFormattedValue = true;\n get calculateFormattedValue(): boolean {\n return this._calculateFormattedValue;\n }\n\n controlType = 'textbox';\n\n standAlone = false;\n isInEditMode = false;\n isInFocus: boolean;\n\n constructor(\n public fb: FormBuilder,\n private customizationService: PepCustomizationService,\n private renderer: Renderer2,\n private element: ElementRef,\n private translate: TranslateService,\n private utilitiesService: PepUtilitiesService\n ) {\n this.isInFocus = false;\n }\n\n private setFormattedValue(value: string) {\n if (this._calculateFormattedValue) {\n this._formattedValue = this.isNumberType()\n ? this.utilitiesService.formatNumber(value)\n : value;\n } else {\n this._formattedValue = value;\n }\n\n this.updateFormFieldValue();\n }\n\n private updateFormFieldValue() {\n this.customizationService.updateFormFieldValue(\n this.form,\n this.key,\n this.formattedValue,\n this.parentFieldKey\n );\n }\n\n get displayValue(): string {\n let res = '';\n\n if (this.type == 'link') {\n res = this.formattedValue;\n } else {\n res = this.isInFocus ? this.value : this.formattedValue;\n }\n\n return res;\n }\n\n private setDefaultForm(): void {\n const pepField = new PepTextboxField({\n key: this.key,\n value: this.value,\n mandatory: this.mandatory,\n readonly: this.readonly,\n disabled: this.disabled,\n maxFieldCharacters: this.maxFieldCharacters,\n type: this.type,\n minValue: this.minValue,\n maxValue: this.maxValue,\n });\n this.form = this.customizationService.getDefaultFromGroup(\n pepField,\n this.renderError\n );\n }\n\n ngOnInit(): void {\n if (this.form === null) {\n this.standAlone = true;\n\n this.minValue =\n isNaN(this.minValue) && !isNaN(this.maxValue)\n ? 0\n : this.minValue;\n this.maxValue =\n isNaN(this.maxValue) && !isNaN(this.minValue)\n ? 99999\n : this.maxValue;\n\n this.setDefaultForm();\n\n this.renderer.addClass(\n this.element.nativeElement,\n PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n );\n }\n\n this.readonly = this.type === 'duration' ? true : this.readonly; // Hack until we develop Timer UI for editing Duration field\n\n this.updateFormFieldValue();\n }\n\n ngOnChanges(changes: any): void {\n if (this.standAlone) {\n this.setDefaultForm();\n }\n\n this.readonly = this.type === 'duration' ? true : this.readonly; // Hack until we develop Timer UI for editing Duration field\n }\n\n ngOnDestroy(): void {\n //\n }\n\n onFocus(event: any): void {\n this.isInFocus = true;\n\n // select the value in focus (DI-18246 improvement)\n setTimeout(() => {\n const eventTarget = event.target || event.srcElement;\n if (eventTarget) {\n eventTarget.select();\n }\n }, 0);\n }\n\n isNumberType(): boolean {\n return (\n this.type === 'percentage' ||\n this.type === 'currency' ||\n this.type === 'int' ||\n this.type === 'real'\n );\n }\n\n isValueValid(value: string): boolean {\n let res = false;\n\n if (this.isNumberType()) {\n if (value === '') {\n res = this.mandatory ? false : true;\n } else {\n const numberValue = this.utilitiesService.coerceNumberProperty(\n value\n );\n res =\n numberValue >= this.minValue &&\n numberValue <= this.maxValue;\n }\n } else {\n // TODO: Maybe need to check other types.\n res = true;\n }\n\n return res;\n }\n\n isDifferentValue(value: string): boolean {\n let res = false;\n\n if (this.isNumberType()) {\n if (this.value === '' || value === '') {\n res = true;\n } else {\n const currentValue = this.utilitiesService.coerceNumberProperty(\n this.value\n );\n const newValue = this.utilitiesService.coerceNumberProperty(\n value\n );\n\n res = currentValue !== newValue;\n }\n } else {\n res = true;\n }\n\n return res;\n }\n\n onChange(e: any): void {\n const value = e.target ? e.target.value : e;\n\n // TODO: uncomment\n // this.valueChange.emit(value);\n }\n\n onBlur(e: any): void {\n this.isInFocus = false;\n const value = e.target ? e.target.value : e;\n if (value !== this.value && this.isDifferentValue(value)) {\n // If renderError is false and the new value is not valid.\n if (!this.renderError && !this.isValueValid(value)) {\n this.renderer.setProperty(\n this.input.nativeElement,\n 'value',\n this.value\n );\n } else {\n this.value = value;\n\n // If the user is setting the formatted value then set the value till the user format it and return it back.\n if (!this._calculateFormattedValue) {\n this._formattedValue = value;\n }\n\n this.valueChange.emit(value);\n }\n }\n\n if (this.isInEditMode) {\n this.isInEditMode = false;\n }\n }\n\n anchorClicked(): void {\n const currentValue = this.value;\n if (currentValue.trim().length > 0) {\n switch (this.type) {\n case 'email':\n window.open('mailto:' + currentValue, 'email');\n break;\n case 'phone':\n window.open('tel:' + currentValue, 'tel');\n break;\n case 'link':\n window.open(currentValue);\n break;\n default:\n break;\n }\n }\n }\n\n cardTemplateClicked(event: any): void {\n this.isInEditMode = true;\n\n setTimeout(() => {\n this.input.nativeElement.focus();\n }, 0);\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport {\n PepTextboxFieldType,\n PepValidatorService,\n} from '@pepperi-addons/ngx-lib';\n\n@Directive({\n selector: '[pepTextboxValidation]',\n})\nexport class PepTextboxValidationDirective implements OnInit {\n @Input() type: PepTextboxFieldType = 'text';\n\n previousValue = '';\n\n constructor(\n private hostElement: ElementRef,\n private validatorService: PepValidatorService\n ) {}\n\n ngOnInit() {\n //\n }\n\n private isNumber(): boolean {\n return this.isInteger() || this.isDecimal();\n }\n\n private isInteger(): boolean {\n return this.type === 'int';\n }\n\n private isDecimal(): boolean {\n return (\n this.type === 'currency' ||\n this.type === 'percentage' ||\n this.type === 'real'\n );\n }\n\n private isPhone(): boolean {\n return this.type === 'phone';\n }\n\n private isText(): boolean {\n return (\n this.type === 'email' ||\n this.type === 'link' ||\n this.type === 'text'\n );\n }\n\n @HostListener('change', ['$event'])\n onChange(e) {\n this.validateValue(this.hostElement.nativeElement.value);\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(e: KeyboardEvent) {\n const originalValue: string = e.target['value'];\n\n if (this.isNumber()) {\n // save value before keydown event\n this.previousValue = originalValue;\n const isNumber = this.validatorService.isNumber(\n e,\n this.isDecimal()\n );\n\n if (isNumber) return;\n else e.preventDefault();\n } else if (this.isPhone()) {\n const isPhone = this.validatorService.isPhone(e);\n if (isPhone) return;\n else e.preventDefault();\n }\n }\n\n validateValue(value: string): void {\n if (this.isNumber()) {\n const newValue = this.validatorService.validateNumber(\n value,\n this.isDecimal()\n );\n this.hostElement.nativeElement['value'] = newValue ? newValue : 0;\n } else if (this.isPhone()) {\n // test phone with regular expression, when\n // phone is invalid, replace it with the previousValue\n const valid = this.validatorService.validatePhone(value);\n this.hostElement.nativeElement['value'] = valid\n ? value\n : this.previousValue;\n } else if (this.isText()) {\n this.hostElement.nativeElement['value'] = value;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemEdit,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepTextboxIconModule } from '@pepperi-addons/ngx-lib/textbox-icon';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\n\nimport { PepTextboxComponent } from './textbox.component';\nimport { PepTextboxValidationDirective } from './textbox-validation.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n PepFieldTitleModule,\n PepTextboxIconModule,\n ],\n exports: [PepTextboxComponent],\n declarations: [PepTextboxComponent, PepTextboxValidationDirective],\n})\nexport class PepTextboxModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([pepIconSystemEdit]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/textbox\n */\nexport * from './textbox.module';\nexport * from './textbox.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {PepTextboxValidationDirective as ɵa} from './textbox-validation.directive';"],"names":[],"mappings":"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"}
@@ -2246,6 +2246,88 @@ class PepColorService {
2246
2246
  this.SIX_DIGIT_HEX_COLOR_REGEX = /^[0-9a-fA-F]{6}$/;
2247
2247
  this.SIX_DIGIT_HEX_COLOR_WITH_HASH_REGEX = /^#[0-9a-fA-F]{6}$/;
2248
2248
  }
2249
+ contrast(str1, str2) {
2250
+ const L1 = this.relativeLuminance(this.hex2rgb(str1));
2251
+ const L2 = this.relativeLuminance(this.hex2rgb(str2));
2252
+ if (L1 < L2) {
2253
+ return (L2 + 0.05) / (L1 + 0.05);
2254
+ }
2255
+ return (L1 + 0.05) / (L2 + 0.05);
2256
+ }
2257
+ findClosestAccessibleDarkerColor(adjustableColor, otherColor, contrastRatio) {
2258
+ const { h, s, l } = this.hex2hsl(adjustableColor);
2259
+ if (this.contrast(adjustableColor, otherColor) >= contrastRatio) {
2260
+ return {
2261
+ color: adjustableColor,
2262
+ lightness: l,
2263
+ };
2264
+ }
2265
+ let minColor = this.hsl2hex({ h, s, l: 0 });
2266
+ if (this.contrast(minColor, otherColor) < contrastRatio) {
2267
+ return null;
2268
+ }
2269
+ let min = 0;
2270
+ let max = l;
2271
+ let maxColor = this.hsl2hex({ h, s, l });
2272
+ let lastMinColor;
2273
+ let lastMaxColor;
2274
+ let lTemp;
2275
+ while (minColor !== lastMinColor || maxColor !== lastMaxColor) {
2276
+ lastMinColor = minColor;
2277
+ lastMaxColor = maxColor;
2278
+ lTemp = (min + max) / 2;
2279
+ adjustableColor = this.hsl2hex({ h, s, l: lTemp });
2280
+ if (this.contrast(adjustableColor, otherColor) < contrastRatio) {
2281
+ max = lTemp;
2282
+ maxColor = this.hsl2hex({ h, s, l: lTemp });
2283
+ }
2284
+ else {
2285
+ min = lTemp;
2286
+ minColor = this.hsl2hex({ h, s, l: lTemp });
2287
+ }
2288
+ }
2289
+ return {
2290
+ color: minColor,
2291
+ lightness: min,
2292
+ };
2293
+ }
2294
+ findClosestAccessibleLighterColor(adjustableColor, otherColor, contrastRatio) {
2295
+ const { h, s, l } = this.hex2hsl(adjustableColor);
2296
+ if (this.contrast(adjustableColor, otherColor) >= contrastRatio) {
2297
+ return {
2298
+ color: adjustableColor,
2299
+ lightness: l,
2300
+ };
2301
+ }
2302
+ let maxColor = this.hsl2hex({ h, s, l: 100 });
2303
+ if (this.contrast(maxColor, otherColor) < contrastRatio) {
2304
+ return null;
2305
+ }
2306
+ let min = l;
2307
+ let max = 100;
2308
+ let minColor = this.hsl2hex({ h, s, l });
2309
+ let lastMinColor;
2310
+ let lastMaxColor;
2311
+ let lTemp;
2312
+ while (minColor !== lastMinColor || maxColor !== lastMaxColor) {
2313
+ lastMinColor = minColor;
2314
+ lastMaxColor = maxColor;
2315
+ lTemp = (min + max) / 2;
2316
+ adjustableColor = this.hsl2hex({ h, s, l: lTemp });
2317
+ if (this.contrast(adjustableColor, otherColor) < contrastRatio) {
2318
+ min = lTemp;
2319
+ minColor = this.hsl2hex({ h, s, l: lTemp });
2320
+ }
2321
+ else {
2322
+ max = lTemp;
2323
+ maxColor = this.hsl2hex({ h, s, l: lTemp });
2324
+ }
2325
+ }
2326
+ return {
2327
+ color: maxColor,
2328
+ lightness: max,
2329
+ };
2330
+ }
2249
2331
  /**
2250
2332
  * Convert hex string to 6 digits hex string.
2251
2333
  * @param str The string to convert.
@@ -2274,6 +2356,9 @@ class PepColorService {
2274
2356
  * @param color The rgb color to convert.
2275
2357
  */
2276
2358
  rgb2sixDigitHex(color) {
2359
+ if (!color) {
2360
+ return null;
2361
+ }
2277
2362
  color.r = color.r.toString(16);
2278
2363
  color.g = color.g.toString(16);
2279
2364
  color.b = color.b.toString(16);
@@ -2293,6 +2378,9 @@ class PepColorService {
2293
2378
  * @param str The hex string to convert.
2294
2379
  */
2295
2380
  hex2rgb(str) {
2381
+ if (!str) {
2382
+ return null;
2383
+ }
2296
2384
  const sixDigitHex = this.hex2sixDigitHex(str);
2297
2385
  if (sixDigitHex === null) {
2298
2386
  return null;
@@ -2304,6 +2392,9 @@ class PepColorService {
2304
2392
  };
2305
2393
  }
2306
2394
  rgbString2hsl(str) {
2395
+ if (!str) {
2396
+ return null;
2397
+ }
2307
2398
  const sep = str.indexOf(',') > -1 ? ',' : ' ';
2308
2399
  const rgbArr = str.substr(4).split(')')[0].split(sep);
2309
2400
  const r = rgbArr[0];
@@ -2345,6 +2436,9 @@ class PepColorService {
2345
2436
  return { h, s, l };
2346
2437
  }
2347
2438
  hslString2hsl(str) {
2439
+ if (!str) {
2440
+ return null;
2441
+ }
2348
2442
  const sep = str.indexOf(',') > -1 ? ',' : ' ';
2349
2443
  const hslArr = str.substr(4).split(')')[0].split(sep);
2350
2444
  let h = hslArr[0];
@@ -2433,6 +2527,9 @@ class PepColorService {
2433
2527
  return { r, g, b };
2434
2528
  }
2435
2529
  hex2hsl(str) {
2530
+ if (!str) {
2531
+ return null;
2532
+ }
2436
2533
  const sixDigitHex = this.hex2sixDigitHex(str);
2437
2534
  if (sixDigitHex === null) {
2438
2535
  return null;
@@ -2444,6 +2541,9 @@ class PepColorService {
2444
2541
  return this.rgb2hsl(rgb);
2445
2542
  }
2446
2543
  hsl2hex(hsl) {
2544
+ if (!hsl) {
2545
+ return null;
2546
+ }
2447
2547
  const rgb = this.hsl2rgb(hsl);
2448
2548
  return this.rgb2sixDigitHex(rgb);
2449
2549
  }
@@ -2457,88 +2557,6 @@ class PepColorService {
2457
2557
  });
2458
2558
  return 0.2126 * r + 0.7152 * g + 0.0722 * b;
2459
2559
  }
2460
- contrast(str1, str2) {
2461
- const L1 = this.relativeLuminance(this.hex2rgb(str1));
2462
- const L2 = this.relativeLuminance(this.hex2rgb(str2));
2463
- if (L1 < L2) {
2464
- return (L2 + 0.05) / (L1 + 0.05);
2465
- }
2466
- return (L1 + 0.05) / (L2 + 0.05);
2467
- }
2468
- findClosestAccessibleDarkerColor(adjustableColor, otherColor, contrastRatio) {
2469
- const { h, s, l } = this.hex2hsl(adjustableColor);
2470
- if (this.contrast(adjustableColor, otherColor) >= contrastRatio) {
2471
- return {
2472
- color: adjustableColor,
2473
- lightness: l,
2474
- };
2475
- }
2476
- let minColor = this.hsl2hex({ h, s, l: 0 });
2477
- if (this.contrast(minColor, otherColor) < contrastRatio) {
2478
- return null;
2479
- }
2480
- let min = 0;
2481
- let max = l;
2482
- let maxColor = this.hsl2hex({ h, s, l });
2483
- let lastMinColor;
2484
- let lastMaxColor;
2485
- let lTemp;
2486
- while (minColor !== lastMinColor || maxColor !== lastMaxColor) {
2487
- lastMinColor = minColor;
2488
- lastMaxColor = maxColor;
2489
- lTemp = (min + max) / 2;
2490
- adjustableColor = this.hsl2hex({ h, s, l: lTemp });
2491
- if (this.contrast(adjustableColor, otherColor) < contrastRatio) {
2492
- max = lTemp;
2493
- maxColor = this.hsl2hex({ h, s, l: lTemp });
2494
- }
2495
- else {
2496
- min = lTemp;
2497
- minColor = this.hsl2hex({ h, s, l: lTemp });
2498
- }
2499
- }
2500
- return {
2501
- color: minColor,
2502
- lightness: min,
2503
- };
2504
- }
2505
- findClosestAccessibleLighterColor(adjustableColor, otherColor, contrastRatio) {
2506
- const { h, s, l } = this.hex2hsl(adjustableColor);
2507
- if (this.contrast(adjustableColor, otherColor) >= contrastRatio) {
2508
- return {
2509
- color: adjustableColor,
2510
- lightness: l,
2511
- };
2512
- }
2513
- let maxColor = this.hsl2hex({ h, s, l: 100 });
2514
- if (this.contrast(maxColor, otherColor) < contrastRatio) {
2515
- return null;
2516
- }
2517
- let min = l;
2518
- let max = 100;
2519
- let minColor = this.hsl2hex({ h, s, l });
2520
- let lastMinColor;
2521
- let lastMaxColor;
2522
- let lTemp;
2523
- while (minColor !== lastMinColor || maxColor !== lastMaxColor) {
2524
- lastMinColor = minColor;
2525
- lastMaxColor = maxColor;
2526
- lTemp = (min + max) / 2;
2527
- adjustableColor = this.hsl2hex({ h, s, l: lTemp });
2528
- if (this.contrast(adjustableColor, otherColor) < contrastRatio) {
2529
- min = lTemp;
2530
- minColor = this.hsl2hex({ h, s, l: lTemp });
2531
- }
2532
- else {
2533
- max = lTemp;
2534
- maxColor = this.hsl2hex({ h, s, l: lTemp });
2535
- }
2536
- }
2537
- return {
2538
- color: maxColor,
2539
- lightness: max,
2540
- };
2541
- }
2542
2560
  findClosestAccessibleColor(adjustableColor, otherColor, contrastRatio) {
2543
2561
  const closestDarkerColor = this.findClosestAccessibleDarkerColor(adjustableColor, otherColor, contrastRatio);
2544
2562
  const closestLighterColor = this.findClosestAccessibleLighterColor(adjustableColor, otherColor, contrastRatio);
@@ -3296,14 +3314,13 @@ class PepCustomizationService {
3296
3314
  return this.fb.group(group);
3297
3315
  }
3298
3316
  getFormControl(form, fieldKey, parentFieldKey = null) {
3299
- var _a;
3300
3317
  let formControl = null;
3301
3318
  if (form && form.controls) {
3302
3319
  if (parentFieldKey === null) {
3303
3320
  formControl = form.controls[fieldKey];
3304
3321
  }
3305
3322
  else {
3306
- formControl = (_a = form.controls[parentFieldKey]) === null || _a === void 0 ? void 0 : _a.get(fieldKey);
3323
+ formControl = form.controls[parentFieldKey].get(fieldKey);
3307
3324
  }
3308
3325
  }
3309
3326
  return formControl;
@@ -3920,7 +3937,6 @@ class PepCustomizationService {
3920
3937
  }
3921
3938
  }
3922
3939
  PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME = 'pep-field';
3923
- PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME = 'pep-field-no-spacing';
3924
3940
  PepCustomizationService.REM_STRING = 'rem';
3925
3941
  PepCustomizationService.PX_STRING = 'px';
3926
3942
  PepCustomizationService.USER_THEME = 'user_theme';