@seniorsistemas/angular-components 17.25.11 → 17.26.0-bugfix-sds-262-3164df87

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 (51) hide show
  1. package/bundles/seniorsistemas-angular-components.umd.js +592 -66
  2. package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
  3. package/bundles/seniorsistemas-angular-components.umd.min.js +2 -2
  4. package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
  5. package/components/dynamic-form/configurations/fields/field.d.ts +1 -1
  6. package/components/dynamic-form/configurations/fields/text-area-field.d.ts +2 -0
  7. package/components/index.d.ts +1 -0
  8. package/components/speech-recognition/speech-recognition/speech-recognition.component.d.ts +50 -0
  9. package/components/speech-recognition/speech-recognition.module.d.ts +2 -0
  10. package/components/speech-recognition/speech-recognition.service.d.ts +18 -0
  11. package/components/speech-recognition/text-to-speech.service.d.ts +22 -0
  12. package/components/text-area/index.d.ts +2 -0
  13. package/components/text-area/text-area/text-area.component.d.ts +24 -0
  14. package/components/text-area/text-area.module.d.ts +2 -0
  15. package/esm2015/components/dynamic-form/components/fields/text-area/text-area-field.component.js +2 -2
  16. package/esm2015/components/dynamic-form/components/lookup/lookup.component.js +3 -3
  17. package/esm2015/components/dynamic-form/configurations/fields/field.js +4 -2
  18. package/esm2015/components/dynamic-form/configurations/fields/text-area-field.js +3 -1
  19. package/esm2015/components/dynamic-form/dynamic-form.module.js +3 -1
  20. package/esm2015/components/index.js +2 -1
  21. package/esm2015/components/speech-recognition/speech-recognition/speech-recognition.component.js +202 -0
  22. package/esm2015/components/speech-recognition/speech-recognition.module.js +19 -0
  23. package/esm2015/components/speech-recognition/speech-recognition.service.js +102 -0
  24. package/esm2015/components/speech-recognition/text-to-speech.service.js +75 -0
  25. package/esm2015/components/text-area/index.js +3 -0
  26. package/esm2015/components/text-area/text-area/text-area.component.js +87 -0
  27. package/esm2015/components/text-area/text-area.module.js +24 -0
  28. package/esm2015/locale/fallback.js +6 -2
  29. package/esm2015/seniorsistemas-angular-components.js +65 -61
  30. package/esm5/components/dynamic-form/components/fields/text-area/text-area-field.component.js +2 -2
  31. package/esm5/components/dynamic-form/components/lookup/lookup.component.js +3 -3
  32. package/esm5/components/dynamic-form/configurations/fields/field.js +9 -3
  33. package/esm5/components/dynamic-form/configurations/fields/text-area-field.js +3 -1
  34. package/esm5/components/dynamic-form/dynamic-form.module.js +3 -1
  35. package/esm5/components/index.js +2 -1
  36. package/esm5/components/speech-recognition/speech-recognition/speech-recognition.component.js +216 -0
  37. package/esm5/components/speech-recognition/speech-recognition.module.js +22 -0
  38. package/esm5/components/speech-recognition/speech-recognition.service.js +104 -0
  39. package/esm5/components/speech-recognition/text-to-speech.service.js +83 -0
  40. package/esm5/components/text-area/index.js +3 -0
  41. package/esm5/components/text-area/text-area/text-area.component.js +94 -0
  42. package/esm5/components/text-area/text-area.module.js +27 -0
  43. package/esm5/locale/fallback.js +6 -2
  44. package/esm5/seniorsistemas-angular-components.js +65 -61
  45. package/fesm2015/seniorsistemas-angular-components.js +486 -7
  46. package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
  47. package/fesm5/seniorsistemas-angular-components.js +528 -8
  48. package/fesm5/seniorsistemas-angular-components.js.map +1 -1
  49. package/package.json +1 -1
  50. package/seniorsistemas-angular-components.d.ts +64 -60
  51. package/seniorsistemas-angular-components.metadata.json +1 -1
@@ -6602,7 +6602,6 @@
6602
6602
 
6603
6603
  var Field = /** @class */ (function () {
6604
6604
  function Field(config) {
6605
- var _this = this;
6606
6605
  var _a, _b, _c, _d, _e, _f, _g;
6607
6606
  /**
6608
6607
  * In some cases DynamicFormField use a custom field that alredy exists, this happen in CustomFields when convert 'Integer, Double & Money' types to 'Custom' this create two labels. activate this property hide the parent label.
@@ -6628,7 +6627,6 @@
6628
6627
  this.errorMessages = config.errorMessages;
6629
6628
  this.bottomTemplate = config.bottomTemplate;
6630
6629
  this.footer = config.footer;
6631
- this.gridClass = Object.keys(this.size).map(function (key) { return "ui-" + key + "-" + _this.size[key]; });
6632
6630
  this.defaultValue = config.defaultValue;
6633
6631
  this.representedBy = config.representedBy;
6634
6632
  this.CustomFieldClass = config.CustomFieldClass;
@@ -6637,6 +6635,14 @@
6637
6635
  this.useInfoSignFocusedInputRef = (_f = config.useInfoSignFocusedInputRef) !== null && _f !== void 0 ? _f : true;
6638
6636
  this.ignoreLabel = (_g = config.ignoreLabel) !== null && _g !== void 0 ? _g : false;
6639
6637
  }
6638
+ Object.defineProperty(Field.prototype, "gridClass", {
6639
+ get: function () {
6640
+ var _this = this;
6641
+ return Object.keys(this.size).map(function (key) { return "ui-" + key + "-" + _this.size[key]; });
6642
+ },
6643
+ enumerable: true,
6644
+ configurable: true
6645
+ });
6640
6646
  return Field;
6641
6647
  }());
6642
6648
 
@@ -7169,12 +7175,14 @@
7169
7175
  var TextAreaField = /** @class */ (function (_super) {
7170
7176
  __extends(TextAreaField, _super);
7171
7177
  function TextAreaField(config) {
7178
+ var _a;
7172
7179
  var _this = _super.call(this, config) || this;
7173
7180
  _this.cols = config.cols;
7174
7181
  _this.rows = config.rows;
7175
7182
  _this.keyFilter = config.keyFilter;
7176
7183
  _this.style = config.style;
7177
7184
  _this.readonly = config.readonly;
7185
+ _this.speechRecognition = (_a = config.speechRecognition) !== null && _a !== void 0 ? _a : false;
7178
7186
  return _this;
7179
7187
  }
7180
7188
  return TextAreaField;
@@ -7895,7 +7903,7 @@
7895
7903
  core.Injectable(),
7896
7904
  core.Component({
7897
7905
  selector: "s-lookup",
7898
- template: "<div [ngClass]=\"{ inputgroup: showSearch }\">\n <p-autoComplete\n #autocomplete\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [dataKey]=\"dataKey\"\n [multiple]=\"multiple\"\n [inputId]=\"id + '-autocomplete'\"\n [forceSelection]=\"autocompleteForceSelection\"\n [suggestions]=\"getLookupSuggestions()\"\n (completeMethod)=\"lazyLoadLookup($event)\"\n (onSelect)=\"onSelect.next($event)\"\n (onBlur)=\"onBlur.next($event)\"\n (onFocus)=\"onFocus.next($event)\"\n (onUnselect)=\"onUnselect.next($event)\"\n (onClear)=\"onClear.next($event)\"\n (onKeyUp)=\"onKeyUp.next($event)\"\n [field]=\"lookupDisplayField\"\n [emptyMessage]=\"lookupEmptyMessage\"\n [dropdown]=\"!showSearch\"\n [appendTo]=\"lookupAppendTo\"\n [placeholder]=\"placeholder || ' '\"\n [autoHighlight]=\"true\"\n inputStyleClass=\"mousetrap\">\n <ng-template let-item pTemplate=\"selectedItem\">\n <span\n class=\"ui-autocomplete-token-label ng-tns-c65-43 ng-star-inserted\"\n [sTooltip]=\"lookupDisplayFieldTooltip ? item[lookupDisplayField] : null\"\n tooltipPosition=\"top\">\n {{item[lookupDisplayField]}}\n </span>\n </ng-template>\n </p-autoComplete>\n <button\n *ngIf=\"showSearch\"\n pButton\n type=\"button\"\n icon=\"fa fa-search\"\n class=\"button-addon\"\n [disabled]=\"disabled\"\n (click)=\"showDialog()\">\n </button>\n</div>\n<p-dialog\n appendTo=\"body\"\n styleClass=\"s-lookup-modal\"\n [header]=\"searchTitle || 'platform.angular_components.advanced_search' | translate\"\n [(visible)]=\"dialogVisible\"\n [modal]=\"true\"\n (onHide)=\"hideDialog()\"\n [blockScroll]=\"true\"\n [focusOnShow]=\"true\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n #dialog>\n <div\n *ngIf=\"dialogVisible\"\n class=\"s-lookup-modal-container\">\n <div\n *ngIf=\"searchFields && searchFields.length\"\n class=\"filter\"\n [@collapseContent]=\"collapsed\n ? { value: 'hidden', params: { transitionParams: transitionOptions } }\n : { value: 'visible', params: { transitionParams: transitionOptions } }\"\n (@collapseContent.done)=\"onToggleDone()\">\n <form\n [formGroup]=\"formGroupDialog\"\n novalidate\n autocomplete=\"off\">\n <div\n *ngIf=\"!collapsed\"\n class=\"form-content\"\n [@childCollapseContent]=\"collapsed\n ? { value: ':leave', params: { transitionParams: transitionOptions } }\n : { value: ':enter', params: { transitionParams: transitionOptions } }\">\n <div class=\"filter-title sds-section-title\">\n {{ filterTitle || \"platform.angular_components.filters\" | translate }}\n </div>\n <div class=\"form-fields\">\n <s-dynamic-form\n [fields]=\"searchFields\"\n [form]=\"formGroupDialog\">\n </s-dynamic-form>\n </div>\n <div class=\"ui-g\">\n <div class=\"ui-g-12\">\n <s-button\n [id]=\"id + '-filter-button'\"\n type=\"submit\"\n [label]=\"filterLabel || 'platform.angular_components.filter' | translate\"\n (onClick)=\"search()\"\n sTooltip=\"(ALT + SHIFT + F)\"\n tooltipPosition=\"top\"\n showDelay=\"500\">\n </s-button>\n <s-button\n [id]=\"id + '-clear-button'\"\n type=\"button\"\n [label]=\"clearLabel || 'platform.angular_components.clear' | translate\"\n (onClick)=\"clear()\"\n priority=\"link\"\n sTooltip=\"(ALT + SHIFT + L)\"\n tooltipPosition=\"top\"\n showDelay=\"500\">\n </s-button>\n </div>\n </div>\n </div>\n </form>\n </div>\n <div\n *ngIf=\"searchFields && searchFields.length\"\n class=\"filter-toggle\">\n <div class=\"filter-toggle--start-border-mask\"></div>\n <button\n [id]=\"id + '-filter-toggle-button'\"\n type=\"button\"\n (click)=\"filterToggle()\">\n <span\n class=\"fa\"\n [ngClass]=\"{'fa-chevron-left': !collapsed, 'fa-chevron-right': collapsed}\"\n aria-hidden=\"true\">\n </span>\n </button>\n <div class=\"filter-toggle--end-border-mask\"></div>\n </div>\n <div\n class=\"content\"\n [ngClass]=\"{'empty-content': !searchTotalRecords && !loading}\">\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n *ngIf=\"!searchTotalRecords && !loading\"\n [title]=\"searchEmptyTitle || 'platform.angular_components.no_records_found' | translate\"\n [description]=\"searchEmptyDescription\"\n iconClass=\"fa fa-search\">\n </s-empty-state>\n\n <div>\n <s-button\n *ngIf=\"showAddOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.add' | translate\"\n (onClick)=\"onAdd.emit()\">\n </s-button>\n <s-button\n *ngIf=\"showEditOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.edit' | translate\"\n [disabled]=\"selected.length !== 1\"\n (onClick)=\"onEdit.emit(this.selected[0])\">\n </s-button>\n <s-button\n *ngIf=\"showRemoveOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.remove' | translate\"\n [disabled]=\"!selected.length\"\n (onClick)=\"onRemove.emit(this.selected)\">\n </s-button>\n </div>\n\n <p-table\n [dataKey]=\"dataKey\"\n [value]=\"getGridData()\"\n [columns]=\"searchGridFields\"\n [lazy]=\"true\"\n [scrollable]=\"true\"\n [paginator]=\"true\"\n sortMode=\"multiple\"\n [totalRecords]=\"searchTotalRecords\"\n [rows]=\"10\"\n [selection]=\"selected\"\n (onLazyLoad)=\"lazyLoadGrid($event)\"\n *sLoadingState=\"{ loading: loading, indicator: 'logo' }\"\n [multiSortMeta]=\"multiSortMeta\"\n [attr.data-hidden]=\"!searchTotalRecords && !loading\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\"\n (selectionChange)=\"onSelectionChange($event)\">\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col\n *ngIf=\"multiple\"\n style=\"width: 50px\" />\n <col\n *ngFor=\"let col of columns\"\n [style.width]=\"col.width\" />\n </colgroup>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th\n *ngIf=\"multiple\"\n style=\"width: 50px\">\n <s-table-header-checkbox\n [useAllObject]=\"lookupRowProps ? false : true\"\n [rowProps]=\"lookupRowProps\">\n </s-table-header-checkbox>\n </th>\n <th\n [style.width]=\"col.width\"\n *ngFor=\"let col of columns\"\n [pSortableColumn]=\"col.sortableColumnName ? col.sortableColumnName : col.name\"\n [pSortableColumnDisabled]=\"sortableColumnsDisabled?.includes(col.name)\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.label }}</span>\n <p-sortIcon\n [field]=\"col.name\"\n *ngIf=\"!sortableColumnsDisabled?.includes(col.name)\">\n </p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-columns\n let-rowIndex=\"rowIndex\">\n <tr\n sNavigation\n [pSelectableRow]=\"rowData\"\n [pSelectableRowIndex]=\"rowIndex\"\n sDoubleClick (onDoubleClick)=\"onTableRowDoubleClick(rowData)\">\n <td\n *ngIf=\"multiple\"\n style=\"width: 50px\"\n tabindex=\"0\">\n <p-tableCheckbox\n [value]=\"rowData\"\n [pSelectableRow]=\"rowData\">\n </p-tableCheckbox>\n </td>\n <td\n [style.width]=\"col['width']\"\n *ngFor=\"let col of searchGridFields\"\n [ngSwitch]=\"col.type\"\n tabindex=\"0\">\n <ng-container *ngSwitchCase=\"'Boolean'\">\n <ng-container *ngIf=\"isBooleanValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getBooleanLabel(rowData, col.name, col.optionsLabel) }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Date'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedDate: col.calendarLocaleOptions?.dateFormat || \"L\" | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'DateTime'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedDate | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'LocalDateTime'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedDate | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Time'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedTime: col.calendarLocaleOptions?.dateFormat || \"LTS\" | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Integer'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getIntegerMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Double'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getDoubleMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Money'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getMoneyMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Number'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getNumberMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Enum'\">\n <ng-container *ngIf=\"getLabelForValue(getFieldValue(rowData, col.name), col.options); else emptyTemplate\">\n <ng-container *ngIf=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options); then withBadge; else withoutBadge\"></ng-container>\n <ng-template #withBadge>\n <s-badge\n [text]=\"getLabelForValue(getFieldValue(rowData, col.name), col.options)\"\n [color]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).color\"\n [type]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).type\"\n [iconClass]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).iconClass\"\n [iconPosition]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).iconPosition\">\n </s-badge>\n </ng-template>\n <ng-template #withoutBadge>\n <span> {{ getLabelForValue(getFieldValue(rowData, col.name), col.options) }} </span>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"col.mask && col.mask()\">\n <ng-container *ngIf=\"(isNumber(rowData, col.name) || getFieldValue(rowData, col.name))\">\n <span>{{ getFieldValue(rowData, col.name) | sMaskFormatter: col.mask() }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!(col.mask && col.mask())\">\n <ng-container *ngIf=\"(isNumber(rowData, col.name) || getFieldValue(rowData, col.name)); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <span [attr.data-hidden]=\"loading\">\n {{ printRecordTotalizer() }}\n </span>\n </ng-template>\n </p-table>\n </div>\n </div>\n <p-footer>\n <s-button\n [id]=\"id + '-select-button'\"\n type=\"button\"\n [label]=\"selectLabel || 'platform.angular_components.select' | translate\"\n (onClick)=\"select()\"\n sTooltip=\"(ALT + SHIFT + S)\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [disabled]=\"!selected?.length\">\n </s-button>\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel || 'platform.angular_components.cancel' | translate\"\n (onClick)=\"hideDialog()\"\n sTooltip=\"(ALT + SHIFT + C)\"\n tooltipPosition=\"top\"\n showDelay=\"500\">\n </s-button>\n </p-footer>\n</p-dialog>\n<ng-template #emptyTemplate>\n <span [ngClass]=\"'sds-empty-value'\">\n {{ emptyFieldLabel || 'platform.angular_components.not_informed' | translate }}\n </span>\n</ng-template>\n",
7906
+ template: "<div [ngClass]=\"{ inputgroup: showSearch }\">\n <p-autoComplete\n #autocomplete\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [dataKey]=\"dataKey\"\n [multiple]=\"multiple\"\n [inputId]=\"id + '-autocomplete'\"\n [forceSelection]=\"autocompleteForceSelection\"\n [suggestions]=\"getLookupSuggestions()\"\n (completeMethod)=\"lazyLoadLookup($event)\"\n (onSelect)=\"onSelect.next($event)\"\n (onBlur)=\"onBlur.next($event)\"\n (onFocus)=\"onFocus.next($event)\"\n (onUnselect)=\"onUnselect.next($event)\"\n (onClear)=\"onClear.next($event)\"\n (onKeyUp)=\"onKeyUp.next($event)\"\n [field]=\"lookupDisplayField\"\n [emptyMessage]=\"lookupEmptyMessage\"\n [dropdown]=\"!showSearch\"\n [appendTo]=\"lookupAppendTo\"\n [placeholder]=\"placeholder || ' '\"\n [autoHighlight]=\"true\"\n inputStyleClass=\"mousetrap\">\n <ng-template let-item pTemplate=\"selectedItem\">\n <span\n class=\"ui-autocomplete-token-label ng-tns-c65-43 ng-star-inserted\"\n [sTooltip]=\"lookupDisplayFieldTooltip ? item[lookupDisplayField] : null\"\n tooltipPosition=\"top\">\n {{item[lookupDisplayField]}}\n </span>\n </ng-template>\n </p-autoComplete>\n <button\n *ngIf=\"showSearch\"\n pButton\n type=\"button\"\n icon=\"fa fa-search\"\n class=\"button-addon\"\n [disabled]=\"disabled\"\n (click)=\"showDialog()\">\n </button>\n</div>\n<p-dialog\n appendTo=\"body\"\n styleClass=\"s-lookup-modal\"\n [header]=\"searchTitle || 'platform.angular_components.advanced_search' | translate\"\n [(visible)]=\"dialogVisible\"\n [modal]=\"true\"\n (onHide)=\"hideDialog()\"\n [blockScroll]=\"true\"\n [focusOnShow]=\"true\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n #dialog>\n <div\n *ngIf=\"dialogVisible\"\n class=\"s-lookup-modal-container\">\n <div\n *ngIf=\"searchFields && searchFields.length\"\n class=\"filter\"\n [@collapseContent]=\"collapsed\n ? { value: 'hidden', params: { transitionParams: transitionOptions } }\n : { value: 'visible', params: { transitionParams: transitionOptions } }\"\n (@collapseContent.done)=\"onToggleDone()\">\n <form\n [formGroup]=\"formGroupDialog\"\n novalidate\n autocomplete=\"off\">\n <div\n *ngIf=\"!collapsed\"\n class=\"form-content\"\n [@childCollapseContent]=\"collapsed\n ? { value: ':leave', params: { transitionParams: transitionOptions } }\n : { value: ':enter', params: { transitionParams: transitionOptions } }\">\n <div class=\"filter-title sds-section-title\">\n {{ filterTitle || \"platform.angular_components.filters\" | translate }}\n </div>\n <div class=\"form-fields\">\n <s-dynamic-form\n [fields]=\"searchFields\"\n [form]=\"formGroupDialog\">\n </s-dynamic-form>\n </div>\n <div class=\"ui-g\">\n <div class=\"ui-g-12 no-button-margin\">\n <s-button\n [id]=\"id + '-filter-button'\"\n type=\"submit\"\n [label]=\"filterLabel || 'platform.angular_components.filter' | translate\"\n (onClick)=\"search()\"\n sTooltip=\"(ALT + SHIFT + F)\"\n tooltipPosition=\"top\"\n showDelay=\"500\">\n </s-button>\n <s-button\n [id]=\"id + '-clear-button'\"\n type=\"button\"\n [label]=\"clearLabel || 'platform.angular_components.clear' | translate\"\n (onClick)=\"clear()\"\n priority=\"link\"\n sTooltip=\"(ALT + SHIFT + L)\"\n tooltipPosition=\"top\"\n showDelay=\"500\">\n </s-button>\n </div>\n </div>\n </div>\n </form>\n </div>\n <div\n *ngIf=\"searchFields && searchFields.length\"\n class=\"filter-toggle\">\n <button\n [id]=\"id + '-filter-toggle-button'\"\n type=\"button\"\n (click)=\"filterToggle()\">\n <span\n class=\"fa\"\n [ngClass]=\"{'fa-chevron-left': !collapsed, 'fa-chevron-right': collapsed}\"\n aria-hidden=\"true\">\n </span>\n </button>\n </div>\n <div\n class=\"content\"\n [ngClass]=\"{'empty-content': !searchTotalRecords && !loading}\">\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n *ngIf=\"!searchTotalRecords && !loading\"\n [title]=\"searchEmptyTitle || 'platform.angular_components.no_records_found' | translate\"\n [description]=\"searchEmptyDescription\"\n iconClass=\"fa fa-search\">\n </s-empty-state>\n\n <div class=\"content-child\">\n <p-table\n [dataKey]=\"dataKey\"\n [value]=\"getGridData()\"\n [columns]=\"searchGridFields\"\n [lazy]=\"true\"\n [scrollable]=\"true\"\n [paginator]=\"true\"\n sortMode=\"multiple\"\n [totalRecords]=\"searchTotalRecords\"\n [rows]=\"10\"\n [selection]=\"selected\"\n (onLazyLoad)=\"lazyLoadGrid($event)\"\n *sLoadingState=\"{ loading: loading, indicator: 'logo' }\"\n [multiSortMeta]=\"multiSortMeta\"\n [attr.data-hidden]=\"!searchTotalRecords && !loading\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\"\n (selectionChange)=\"onSelectionChange($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"buttons-container no-button-margin\">\n <s-button\n *ngIf=\"showAddOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.add' | translate\"\n (onClick)=\"onAdd.emit()\">\n </s-button>\n <s-button\n *ngIf=\"showEditOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.edit' | translate\"\n [disabled]=\"selected.length !== 1\"\n (onClick)=\"onEdit.emit(this.selected[0])\">\n </s-button>\n <s-button\n *ngIf=\"showRemoveOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.remove' | translate\"\n [disabled]=\"!selected.length\"\n (onClick)=\"onRemove.emit(this.selected)\">\n </s-button>\n </div>\n </ng-template>\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col\n *ngIf=\"multiple\"\n style=\"width: 50px\" />\n <col\n *ngFor=\"let col of columns\"\n [style.width]=\"col.width\" />\n </colgroup>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th\n *ngIf=\"multiple\"\n style=\"width: 50px\">\n <s-table-header-checkbox\n [useAllObject]=\"lookupRowProps ? false : true\"\n [rowProps]=\"lookupRowProps\">\n </s-table-header-checkbox>\n </th>\n <th\n [style.width]=\"col.width\"\n *ngFor=\"let col of columns\"\n [pSortableColumn]=\"col.sortableColumnName ? col.sortableColumnName : col.name\"\n [pSortableColumnDisabled]=\"sortableColumnsDisabled?.includes(col.name)\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.label }}</span>\n <p-sortIcon\n [field]=\"col.name\"\n *ngIf=\"!sortableColumnsDisabled?.includes(col.name)\">\n </p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-columns\n let-rowIndex=\"rowIndex\">\n <tr\n sNavigation\n [pSelectableRow]=\"rowData\"\n [pSelectableRowIndex]=\"rowIndex\"\n sDoubleClick (onDoubleClick)=\"onTableRowDoubleClick(rowData)\">\n <td\n *ngIf=\"multiple\"\n style=\"width: 50px\"\n tabindex=\"0\">\n <p-tableCheckbox\n [value]=\"rowData\"\n [pSelectableRow]=\"rowData\">\n </p-tableCheckbox>\n </td>\n <td\n [style.width]=\"col['width']\"\n *ngFor=\"let col of searchGridFields\"\n [ngSwitch]=\"col.type\"\n tabindex=\"0\">\n <ng-container *ngSwitchCase=\"'Boolean'\">\n <ng-container *ngIf=\"isBooleanValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getBooleanLabel(rowData, col.name, col.optionsLabel) }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Date'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedDate: col.calendarLocaleOptions?.dateFormat || \"L\" | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'DateTime'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedDate | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'LocalDateTime'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedDate | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Time'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedTime: col.calendarLocaleOptions?.dateFormat || \"LTS\" | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Integer'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getIntegerMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Double'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getDoubleMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Money'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getMoneyMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Number'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getNumberMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Enum'\">\n <ng-container *ngIf=\"getLabelForValue(getFieldValue(rowData, col.name), col.options); else emptyTemplate\">\n <ng-container *ngIf=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options); then withBadge; else withoutBadge\"></ng-container>\n <ng-template #withBadge>\n <s-badge\n [text]=\"getLabelForValue(getFieldValue(rowData, col.name), col.options)\"\n [color]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).color\"\n [type]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).type\"\n [iconClass]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).iconClass\"\n [iconPosition]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).iconPosition\">\n </s-badge>\n </ng-template>\n <ng-template #withoutBadge>\n <span> {{ getLabelForValue(getFieldValue(rowData, col.name), col.options) }} </span>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"col.mask && col.mask()\">\n <ng-container *ngIf=\"(isNumber(rowData, col.name) || getFieldValue(rowData, col.name))\">\n <span>{{ getFieldValue(rowData, col.name) | sMaskFormatter: col.mask() }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!(col.mask && col.mask())\">\n <ng-container *ngIf=\"(isNumber(rowData, col.name) || getFieldValue(rowData, col.name)); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <span [attr.data-hidden]=\"loading\">\n {{ printRecordTotalizer() }}\n </span>\n </ng-template>\n </p-table>\n </div>\n\n </div>\n </div>\n <p-footer>\n <s-button\n [id]=\"id + '-select-button'\"\n type=\"button\"\n [label]=\"selectLabel || 'platform.angular_components.select' | translate\"\n (onClick)=\"select()\"\n sTooltip=\"(ALT + SHIFT + S)\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [disabled]=\"!selected?.length\">\n </s-button>\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel || 'platform.angular_components.cancel' | translate\"\n (onClick)=\"hideDialog()\"\n sTooltip=\"(ALT + SHIFT + C)\"\n tooltipPosition=\"top\"\n showDelay=\"500\">\n </s-button>\n </p-footer>\n</p-dialog>\n<ng-template #emptyTemplate>\n <span [ngClass]=\"'sds-empty-value'\">\n {{ emptyFieldLabel || 'platform.angular_components.not_informed' | translate }}\n </span>\n</ng-template>\n",
7899
7907
  providers: [
7900
7908
  {
7901
7909
  provide: forms.NG_VALUE_ACCESSOR,
@@ -7925,7 +7933,7 @@
7925
7933
  animations.transition("* <=> *", animations.animate("{{transitionParams}}")),
7926
7934
  ]),
7927
7935
  ],
7928
- styles: ["s-lookup.ng-dirty.ng-invalid .ui-inputtext{border-color:#c13018}s-lookup .ui-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}s-lookup .inputgroup p-autocomplete+button,s-lookup p-autocomplete .ui-autocomplete-dropdown.ui-button{background-color:#fff;border-color:#ccc;border-width:1px 1px 1px 0;color:#333;min-height:35px;height:auto!important;min-width:auto;width:35px!important;overflow:hidden;border-top-left-radius:0;border-bottom-left-radius:0}s-lookup .inputgroup,s-lookup p-autocomplete span.ui-autocomplete-multiple{display:-ms-flexbox;display:flex}s-lookup .inputgroup p-autocomplete{display:inline-block}s-lookup .inputgroup p-autocomplete .ui-autocomplete-input{width:100%}s-lookup .inputgroup p-autocomplete+button:enabled:hover,s-lookup .inputgroup p-autocomplete+button:focus{background-color:#e6e6e6;border-color:#ccc}s-lookup .inputgroup p-autocomplete .ui-widget .ui-inputtext{border-right-width:1px;border-right-style:solid}s-lookup .ui-autocomplete-input-token,s-lookup .ui-autocomplete-input-token input{width:100%}s-lookup .ui-autocomplete .ui-autocomplete-token{max-width:100%}s-lookup .ui-autocomplete .ui-autocomplete-token-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body .s-lookup-modal.ui-dialog .ui-dialog-content{padding:0;margin-bottom:0;max-height:none}s-lookup .ui-table-scrollable-body{min-width:100%}.s-lookup-modal{height:80%!important;max-width:100%!important;max-height:inherit!important;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-direction:column;flex-direction:column}.s-lookup-modal .ui-dialog-content{height:auto!important;-ms-flex:1;flex:1;overflow:auto}.s-lookup-modal .ui-dialog-footer,.s-lookup-modal .ui-dialog-header{-ms-flex-negative:0;flex-shrink:0;border-radius:0 0 4px 4px}.s-lookup-modal .s-lookup-modal-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;height:100%;width:100%}.s-lookup-modal .s-lookup-modal-container .filter{position:relative;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;width:85%;background-color:rgba(229,234,234,.5);height:100%;padding:.571rem}.s-lookup-modal .s-lookup-modal-container .filter form{width:100%;height:100%}.s-lookup-modal .s-lookup-modal-container .filter form .form-content{height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.s-lookup-modal .s-lookup-modal-container .filter form .form-content .filter-title{padding-left:.5rem}.s-lookup-modal .s-lookup-modal-container .filter form .form-content .form-fields{overflow-y:auto}.s-lookup-modal .s-lookup-modal-container .filter-toggle{-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;width:35px;border-radius:0 4px 4px 0}.s-lookup-modal .s-lookup-modal-container .filter-toggle button{-ms-flex-align:center;align-items:center;position:relative;background-color:rgba(229,234,234,.5);height:35px;width:100%;border:1px solid #e5eaea;outline:0;border-left:none;border-radius:0 4px 4px 0;cursor:pointer;text-decoration:none;text-transform:none;padding:7px;transition:background-color .2s ease-out,color .2s ease-out,border-color .2s ease-out}.s-lookup-modal .s-lookup-modal-container .filter-toggle button:focus,.s-lookup-modal .s-lookup-modal-container .filter-toggle button:hover{background-color:rgba(201,211,211,.5);border-color:#c9d3d3}.s-lookup-modal .s-lookup-modal-container .filter-toggle--start-border-mask{height:15px;border-left:1px solid #e5eaea}.s-lookup-modal .s-lookup-modal-container .filter-toggle--end-border-mask{height:calc(100% - 49px);border-left:1px solid #e5eaea}.s-lookup-modal .s-lookup-modal-container .content{-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow-x:auto;padding:.5rem}.s-lookup-modal .s-lookup-modal-container .content.empty-content{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.s-lookup-modal .s-lookup-modal-container .content .s-loading-state-container,.s-lookup-modal .s-lookup-modal-container .content .s-loading-state-container .contents{height:100%}.s-lookup-modal .s-lookup-modal-container .content p-table{position:relative;height:100%}.s-lookup-modal .s-lookup-modal-container .content p-table .ui-table{height:100%}.s-lookup-modal .s-lookup-modal-container .content p-table .ui-table .ui-table-scrollable-wrapper{height:calc(100% - 60px)}.s-lookup-modal .s-lookup-modal-container .content p-table .ui-table .ui-table-scrollable-wrapper .ui-table-scrollable-view{height:100%}.s-lookup-modal .s-lookup-modal-container .content p-table .ui-table .ui-table-scrollable-wrapper .ui-table-scrollable-view .ui-table-scrollable-body{position:relative;height:calc(100% - 60px)}@media (max-width:767px){.s-lookup-modal{border:none!important;top:0!important;left:0!important;width:100%!important;height:100%!important}}@media (min-width:768px){.s-lookup-modal{width:80%!important}.s-lookup-modal .s-lookup-modal-container .filter{width:40%}}@media (min-width:1200px){.s-lookup-modal{width:60%!important}.s-lookup-modal .s-lookup-modal-container .filter{width:30%}}.inputgroup p-autocomplete{width:calc(100% - 35px)}"]
7936
+ styles: [".no-button-margin s-button{margin-left:0}s-lookup.ng-dirty.ng-invalid .ui-inputtext{border-color:#c13018}s-lookup .ui-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}s-lookup .inputgroup p-autocomplete+button,s-lookup p-autocomplete .ui-autocomplete-dropdown.ui-button{background-color:#fff;border-color:#ccc;border-width:1px 1px 1px 0;color:#333;min-height:35px;height:auto!important;min-width:auto;width:35px!important;overflow:hidden;border-top-left-radius:0;border-bottom-left-radius:0}s-lookup .inputgroup,s-lookup p-autocomplete span.ui-autocomplete-multiple{display:-ms-flexbox;display:flex}s-lookup .inputgroup p-autocomplete{display:inline-block}s-lookup .inputgroup p-autocomplete .ui-autocomplete-input{width:100%}s-lookup .inputgroup p-autocomplete+button:enabled:hover,s-lookup .inputgroup p-autocomplete+button:focus{background-color:#e6e6e6;border-color:#ccc}s-lookup .inputgroup p-autocomplete .ui-widget .ui-inputtext{border-right-width:1px;border-right-style:solid}s-lookup .ui-autocomplete-input-token,s-lookup .ui-autocomplete-input-token input{width:100%}s-lookup .ui-autocomplete .ui-autocomplete-token{max-width:100%}s-lookup .ui-autocomplete .ui-autocomplete-token-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body .s-lookup-modal.ui-dialog .ui-dialog-content{padding:0;margin-bottom:0;max-height:none}s-lookup .ui-table-scrollable-body{min-width:100%}.s-lookup-modal{height:80%!important;max-width:100%!important;max-height:inherit!important;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-direction:column;flex-direction:column}.s-lookup-modal .ui-dialog-content{height:auto!important;-ms-flex:1;flex:1;overflow:auto}.s-lookup-modal .ui-dialog-footer,.s-lookup-modal .ui-dialog-header{-ms-flex-negative:0;flex-shrink:0;border-radius:0 0 4px 4px}.s-lookup-modal .s-lookup-modal-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;height:100%;width:100%}.s-lookup-modal .s-lookup-modal-container .filter{position:relative;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;width:85%;background-color:rgba(229,234,234,.5);height:100%;padding:.571rem}.s-lookup-modal .s-lookup-modal-container .filter form{width:100%;height:100%}.s-lookup-modal .s-lookup-modal-container .filter form .form-content{height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.s-lookup-modal .s-lookup-modal-container .filter form .form-content .filter-title{padding-left:.5rem}.s-lookup-modal .s-lookup-modal-container .filter form .form-content .form-fields{overflow-y:auto}.s-lookup-modal .s-lookup-modal-container .filter-toggle{margin-top:15px;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;width:35px;border-radius:0 4px 4px 0}.s-lookup-modal .s-lookup-modal-container .filter-toggle button{-ms-flex-align:center;align-items:center;position:relative;background-color:rgba(229,234,234,.5);height:35px;width:100%;border:1px solid #e5eaea;outline:0;border-left:none;border-radius:0 4px 4px 0;cursor:pointer;text-decoration:none;text-transform:none;padding:7px;transition:background-color .2s ease-out,color .2s ease-out,border-color .2s ease-out}.s-lookup-modal .s-lookup-modal-container .filter-toggle button:focus,.s-lookup-modal .s-lookup-modal-container .filter-toggle button:hover{background-color:rgba(201,211,211,.5);border-color:#c9d3d3}.s-lookup-modal .s-lookup-modal-container .content{-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow-x:auto;padding:.5rem}.s-lookup-modal .s-lookup-modal-container .content.empty-content{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.s-lookup-modal .s-lookup-modal-container .content.empty-content .content-child{display:none}.s-lookup-modal .s-lookup-modal-container .content .content-child{height:100%;overflow:auto}.s-lookup-modal .s-lookup-modal-container .content .buttons-container{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:10px}.s-lookup-modal .s-lookup-modal-container .content .s-loading-state-container,.s-lookup-modal .s-lookup-modal-container .content .s-loading-state-container .contents{height:100%}.s-lookup-modal .s-lookup-modal-container .content p-table>.ui-table{height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.s-lookup-modal .s-lookup-modal-container .content p-table>.ui-table .ui-table-scrollable-wrapper{overflow:auto}@media (max-width:767px){.s-lookup-modal{border:none!important;top:0!important;left:0!important;width:100%!important;height:100%!important}}@media (min-width:768px){.s-lookup-modal{width:80%!important}.s-lookup-modal .s-lookup-modal-container .filter{width:40%}}@media (min-width:1200px){.s-lookup-modal{width:60%!important}.s-lookup-modal .s-lookup-modal-container .filter{width:30%}}.inputgroup p-autocomplete{width:calc(100% - 35px)}"]
7929
7937
  })
7930
7938
  ], LookupComponent);
7931
7939
  return LookupComponent;
@@ -11519,7 +11527,7 @@
11519
11527
  ], TextAreaFieldComponent.prototype, "inputRef", void 0);
11520
11528
  TextAreaFieldComponent = __decorate([
11521
11529
  core.Component({
11522
- template: "<s-field-label *ngIf=\"inputRef\" [field]=\"field\"\n [fieldContainerRef]=\"inputRef?.nativeElement\"></s-field-label>\n\n<textarea #inputRef\n [id]=\"(field.id || field.name)\"\n *ngIf=\"!field.keyFilter\"\n pInputTextarea\n [rows]=\"field.rows\"\n [cols]=\"field.cols\"\n [formControl]=\"formControl\"\n style=\"resize: vertical;\"\n [ngStyle]=\"field.style\"\n [readonly]=\"field.readonly ? field.readonly() : false\"\n></textarea>\n<textarea #inputRef\n [id]=\"(field.id || field.name)\"\n *ngIf=\"field.keyFilter\"\n pInputTextarea\n [rows]=\"field.rows\"\n [cols]=\"field.cols\"\n [formControl]=\"formControl\"\n style=\"resize: vertical;\"\n [pKeyFilter]=\"field.keyFilter\"\n [ngStyle]=\"field.style\"\n [readonly]=\"field.readonly ? field.readonly() : false\"\n></textarea>\n"
11530
+ template: "<s-field-label *ngIf=\"textArea\" [field]=\"field\"\n [fieldContainerRef]=\"textArea.textAreaElement?.nativeElement\"></s-field-label>\n\n<s-textarea\n #textArea\n [inputId]=\"(field.id || field.name)\"\n [rows]=\"field.rows\"\n [formControl]=\"formControl\"\n style=\"resize: vertical;\"\n [inputStyle]=\"field.style\"\n [readOnly]=\"field.readonly ? field.readonly() : false\"\n [keyFilter]=\"field.keyFilter\"\n [speechRecognition]=\"field.speechRecognition\">\n</s-textarea>\n"
11523
11531
  })
11524
11532
  ], TextAreaFieldComponent);
11525
11533
  return TextAreaFieldComponent;
@@ -13383,6 +13391,513 @@
13383
13391
  return TextFieldModule;
13384
13392
  }());
13385
13393
 
13394
+ var TextAreaComponent = /** @class */ (function () {
13395
+ function TextAreaComponent() {
13396
+ this.onChange = function () { };
13397
+ this.onTouched = function () { };
13398
+ this.disabled = false;
13399
+ this.value = '';
13400
+ this.inputId = "textarea-" + Math.random();
13401
+ this.rows = 5;
13402
+ this.speechRecognition = false;
13403
+ this.readOnly = false;
13404
+ this.renderTextArea = false;
13405
+ }
13406
+ TextAreaComponent_1 = TextAreaComponent;
13407
+ Object.defineProperty(TextAreaComponent.prototype, "textAreaElement", {
13408
+ get: function () {
13409
+ return this._textAreaElement;
13410
+ },
13411
+ set: function (value) {
13412
+ var _this = this;
13413
+ this._textAreaElement = value;
13414
+ setTimeout(function () {
13415
+ _this.renderTextArea = true;
13416
+ });
13417
+ },
13418
+ enumerable: true,
13419
+ configurable: true
13420
+ });
13421
+ TextAreaComponent.prototype.writeValue = function (obj) {
13422
+ this.value = obj;
13423
+ };
13424
+ TextAreaComponent.prototype.registerOnChange = function (fn) {
13425
+ this.onChange = fn;
13426
+ };
13427
+ TextAreaComponent.prototype.registerOnTouched = function (fn) {
13428
+ this.onTouched = fn;
13429
+ };
13430
+ TextAreaComponent.prototype.setDisabledState = function (isDisabled) {
13431
+ this.disabled = isDisabled;
13432
+ };
13433
+ TextAreaComponent.prototype.setValue = function (value) {
13434
+ if (this.disabled) {
13435
+ return;
13436
+ }
13437
+ this.value = value;
13438
+ this.writeValue(this.value);
13439
+ this.onChange(this.value);
13440
+ this.onTouched(this.value);
13441
+ };
13442
+ TextAreaComponent.prototype.handleRecognizedText = function (recognizedText) {
13443
+ this.setValue(recognizedText);
13444
+ };
13445
+ var TextAreaComponent_1;
13446
+ __decorate([
13447
+ core.ViewChild('textArea', { read: core.ElementRef })
13448
+ ], TextAreaComponent.prototype, "textAreaElement", null);
13449
+ __decorate([
13450
+ core.Input()
13451
+ ], TextAreaComponent.prototype, "inputId", void 0);
13452
+ __decorate([
13453
+ core.Input()
13454
+ ], TextAreaComponent.prototype, "rows", void 0);
13455
+ __decorate([
13456
+ core.Input()
13457
+ ], TextAreaComponent.prototype, "speechRecognition", void 0);
13458
+ __decorate([
13459
+ core.Input()
13460
+ ], TextAreaComponent.prototype, "keyFilter", void 0);
13461
+ __decorate([
13462
+ core.Input()
13463
+ ], TextAreaComponent.prototype, "inputStyle", void 0);
13464
+ __decorate([
13465
+ core.Input()
13466
+ ], TextAreaComponent.prototype, "readOnly", void 0);
13467
+ TextAreaComponent = TextAreaComponent_1 = __decorate([
13468
+ core.Component({
13469
+ selector: 's-textarea',
13470
+ template: "<textarea\n *ngIf=\"keyFilter\"\n #textArea\n class=\"textarea\"\n [pKeyFilter]=\"keyFilter\"\n [id]=\"inputId\"\n [rows]=\"rows\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [ngStyle]=\"inputStyle\"\n [readOnly]=\"readOnly\"\n (ngModelChange)=\"setValue($event)\">\n</textarea>\n\n<textarea\n *ngIf=\"!keyFilter\"\n #textArea\n class=\"textarea\"\n [id]=\"inputId\"\n [rows]=\"rows\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [ngStyle]=\"inputStyle\"\n [readOnly]=\"readOnly\"\n (ngModelChange)=\"setValue($event)\">\n</textarea>\n\n<s-speech-recognition\n *ngIf=\"speechRecognition && renderTextArea\"\n [textAreaElement]=\"textAreaElement.nativeElement\"\n (recognizedText)=\"handleRecognizedText($event)\">\n</s-speech-recognition>\n",
13471
+ providers: [
13472
+ {
13473
+ provide: forms.NG_VALUE_ACCESSOR,
13474
+ useExisting: core.forwardRef(function () { return TextAreaComponent_1; }),
13475
+ multi: true,
13476
+ },
13477
+ ],
13478
+ styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:0;padding:8px;display:block}.textarea:disabled{opacity:.5}"]
13479
+ })
13480
+ ], TextAreaComponent);
13481
+ return TextAreaComponent;
13482
+ }());
13483
+
13484
+ var SpeechRecognitionService = /** @class */ (function () {
13485
+ function SpeechRecognitionService(localeService, ngZone) {
13486
+ this.localeService = localeService;
13487
+ this.ngZone = ngZone;
13488
+ this.isListening = false;
13489
+ this.TIMEOUT_NO_MESSAGE = 3000;
13490
+ this.setRecognition();
13491
+ }
13492
+ SpeechRecognitionService.prototype.listen = function () {
13493
+ var _this = this;
13494
+ if (this.isListening) {
13495
+ return;
13496
+ }
13497
+ var speechSubject = new rxjs.Subject();
13498
+ this.isListening = true;
13499
+ this.recognition.continuous = true;
13500
+ this.recognition.interimResults = true;
13501
+ this.recognition.maxAlternatives = 1;
13502
+ var silenceTimer;
13503
+ var restartSilenceTimer = function () {
13504
+ if (silenceTimer !== undefined) {
13505
+ clearTimeout(silenceTimer);
13506
+ }
13507
+ silenceTimer = setTimeout(function () {
13508
+ _this.recognition.stop();
13509
+ }, _this.TIMEOUT_NO_MESSAGE);
13510
+ };
13511
+ var fullTranscript = '';
13512
+ var interimTranscript = '';
13513
+ this.recognition.onresult = function (event) {
13514
+ _this.ngZone.run(function () {
13515
+ restartSilenceTimer();
13516
+ var interimTranscript = '';
13517
+ for (var i = event.resultIndex; i < event.results.length; ++i) {
13518
+ var transcript = event.results[i][0].transcript;
13519
+ if (event.results[i].isFinal) {
13520
+ fullTranscript += transcript + '\n';
13521
+ }
13522
+ else {
13523
+ interimTranscript += transcript;
13524
+ }
13525
+ }
13526
+ interimTranscript = interimTranscript;
13527
+ speechSubject.next({ text: fullTranscript + interimTranscript, isFinal: false });
13528
+ });
13529
+ };
13530
+ this.recognition.onerror = function () {
13531
+ _this.ngZone.run(function () {
13532
+ if (silenceTimer !== undefined) {
13533
+ clearTimeout(silenceTimer);
13534
+ }
13535
+ _this.isListening = false;
13536
+ speechSubject.next({
13537
+ isFinal: true,
13538
+ text: ''
13539
+ });
13540
+ });
13541
+ };
13542
+ this.recognition.onend = function () {
13543
+ _this.ngZone.run(function () {
13544
+ if (silenceTimer !== undefined) {
13545
+ clearTimeout(silenceTimer);
13546
+ }
13547
+ speechSubject.next({ text: fullTranscript + interimTranscript, isFinal: true });
13548
+ _this.isListening = false;
13549
+ speechSubject.complete();
13550
+ });
13551
+ };
13552
+ this.recognition.start();
13553
+ return speechSubject;
13554
+ };
13555
+ SpeechRecognitionService.prototype.stop = function () {
13556
+ this.recognition.stop();
13557
+ };
13558
+ SpeechRecognitionService.prototype.setRecognition = function () {
13559
+ var SpeechRecognitionConstructor = window.SpeechRecognition || window.webkitSpeechRecognition;
13560
+ if (!SpeechRecognitionConstructor) {
13561
+ throw new Error('Speech recognition is not supported in this browser.');
13562
+ }
13563
+ this.recognition = new SpeechRecognitionConstructor();
13564
+ this.recognition.lang = this.localeService.getLocaleOptions().locale || 'pt-BR';
13565
+ this.recognition.interimResults = false;
13566
+ this.recognition.maxAlternatives = 1;
13567
+ };
13568
+ SpeechRecognitionService.ctorParameters = function () { return [
13569
+ { type: LocaleService },
13570
+ { type: core.NgZone }
13571
+ ]; };
13572
+ SpeechRecognitionService.ɵprov = core["ɵɵdefineInjectable"]({ factory: function SpeechRecognitionService_Factory() { return new SpeechRecognitionService(core["ɵɵinject"](LocaleService), core["ɵɵinject"](core.NgZone)); }, token: SpeechRecognitionService, providedIn: "root" });
13573
+ SpeechRecognitionService = __decorate([
13574
+ core.Injectable({
13575
+ providedIn: 'root'
13576
+ })
13577
+ ], SpeechRecognitionService);
13578
+ return SpeechRecognitionService;
13579
+ }());
13580
+
13581
+ var TextToSpeechService = /** @class */ (function () {
13582
+ function TextToSpeechService(locale, ngZone) {
13583
+ this.locale = locale;
13584
+ this.ngZone = ngZone;
13585
+ this.utterance = new SpeechSynthesisUtterance();
13586
+ this.voices = [];
13587
+ this.setVoices();
13588
+ }
13589
+ TextToSpeechService.prototype.setVoices = function () {
13590
+ var _this = this;
13591
+ var _voices = speechSynthesis.getVoices();
13592
+ if (!_voices.length) {
13593
+ speechSynthesis.onvoiceschanged = function () {
13594
+ _this.ngZone.run(function () {
13595
+ _voices = speechSynthesis.getVoices();
13596
+ var currentLang = _this.locale.getLocaleOptions().locale || 'pt-BR';
13597
+ _this.voices = _voices.filter(function (voice) { return voice.lang === currentLang; });
13598
+ _this.activeVoice = _this.voices[0];
13599
+ });
13600
+ };
13601
+ }
13602
+ };
13603
+ /**
13604
+ * Updates the active voice
13605
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/voiceURI)
13606
+ * @param voiceUri
13607
+ */
13608
+ TextToSpeechService.prototype.updateVoice = function (voiceUri) {
13609
+ this.activeVoice = this.voices.find(function (voice) { return voice.voiceURI === voiceUri; });
13610
+ };
13611
+ TextToSpeechService.prototype.speak = function (text, speed) {
13612
+ var _this = this;
13613
+ if (speed === void 0) { speed = 1; }
13614
+ if (!this.activeVoice) {
13615
+ return;
13616
+ }
13617
+ return new Promise(function (resolve) {
13618
+ _this.utterance.text = text;
13619
+ _this.utterance.voice = _this.activeVoice;
13620
+ _this.utterance.rate = speed;
13621
+ speechSynthesis.speak(_this.utterance);
13622
+ _this.utterance.onend = function () {
13623
+ _this.ngZone.run(function () {
13624
+ resolve(true);
13625
+ });
13626
+ };
13627
+ });
13628
+ };
13629
+ TextToSpeechService.prototype.pause = function () {
13630
+ speechSynthesis.pause();
13631
+ };
13632
+ TextToSpeechService.prototype.resume = function () {
13633
+ speechSynthesis.resume();
13634
+ };
13635
+ TextToSpeechService.prototype.cancel = function () {
13636
+ speechSynthesis.cancel();
13637
+ };
13638
+ Object.defineProperty(TextToSpeechService.prototype, "hasVoice", {
13639
+ get: function () {
13640
+ return !!this.activeVoice;
13641
+ },
13642
+ enumerable: true,
13643
+ configurable: true
13644
+ });
13645
+ TextToSpeechService.ctorParameters = function () { return [
13646
+ { type: LocaleService },
13647
+ { type: core.NgZone }
13648
+ ]; };
13649
+ TextToSpeechService.ɵprov = core["ɵɵdefineInjectable"]({ factory: function TextToSpeechService_Factory() { return new TextToSpeechService(core["ɵɵinject"](LocaleService), core["ɵɵinject"](core.NgZone)); }, token: TextToSpeechService, providedIn: "root" });
13650
+ TextToSpeechService = __decorate([
13651
+ core.Injectable({
13652
+ providedIn: 'root'
13653
+ })
13654
+ ], TextToSpeechService);
13655
+ return TextToSpeechService;
13656
+ }());
13657
+
13658
+ var SpeechRecognitionComponent = /** @class */ (function () {
13659
+ function SpeechRecognitionComponent(speechRecognitionService, textToSpeechService, translateService) {
13660
+ var _this = this;
13661
+ this.speechRecognitionService = speechRecognitionService;
13662
+ this.textToSpeechService = textToSpeechService;
13663
+ this.translateService = translateService;
13664
+ this._recognizedText = '';
13665
+ this.originalTextAreaElementText = '';
13666
+ this.isDoneSpeaking = false;
13667
+ this.onDestroy$ = new rxjs.Subject();
13668
+ this.VOICE_SPEEDS = [0.5, 1, 1.5, 2];
13669
+ this.SPEECH_RECOGNITION_MARGIN_OFFSET = 13;
13670
+ this.keydownEventListener = function (event) {
13671
+ if (_this.disabled) {
13672
+ event.preventDefault();
13673
+ }
13674
+ };
13675
+ this.TEXT_AREA_ELEMENT_MUTATION_OBSERVER = new MutationObserver(function () {
13676
+ _this.SPEECH_CONTAINER_WIDTH_CALLBACK();
13677
+ });
13678
+ this.SPEECH_CONTAINER_WIDTH_CALLBACK = function () {
13679
+ _this.setSpeechContainerWidth();
13680
+ };
13681
+ this.speechRecognitionContainerWidth = 0;
13682
+ this.disabled = false;
13683
+ this.isSpeaking = false;
13684
+ this.voiceSpeed = 1;
13685
+ this.isDisabledMicrophone = false;
13686
+ this.canRenderMicrophone = true;
13687
+ this.canRenderTextToSpeech = true;
13688
+ this.canRenderListeningText = false;
13689
+ this.canRenderDiscard = false;
13690
+ this.canRenderAprove = false;
13691
+ this.canRenderTextToSpeechToolbar = false;
13692
+ this.isPlayingTextToSpeech = false;
13693
+ this.recognizedText = new core.EventEmitter();
13694
+ }
13695
+ SpeechRecognitionComponent.prototype.ngOnInit = function () {
13696
+ if (!this.textAreaElement) {
13697
+ throw new Error('textAreaElement is required');
13698
+ }
13699
+ this.textAreaElement.placeholder = this.translateService.instant("platform.angular_components.text_area_speech_recognition_placeholder");
13700
+ this.textAreaElement.addEventListener('keydown', this.keydownEventListener);
13701
+ var config = { attributes: true, childList: true, subtree: true };
13702
+ this.TEXT_AREA_ELEMENT_MUTATION_OBSERVER.observe(this.textAreaElement, config);
13703
+ window.addEventListener('resize', this.SPEECH_CONTAINER_WIDTH_CALLBACK);
13704
+ };
13705
+ SpeechRecognitionComponent.prototype.ngAfterViewInit = function () {
13706
+ var _this = this;
13707
+ setTimeout(function () {
13708
+ _this.setSpeechContainerWidth();
13709
+ });
13710
+ };
13711
+ SpeechRecognitionComponent.prototype.onListen = function () {
13712
+ var _this = this;
13713
+ if (this.isDisabledMicrophone || this.isListening) {
13714
+ return;
13715
+ }
13716
+ this.disabled = true;
13717
+ this.canRenderMicrophone = false;
13718
+ this.canRenderListeningText = true;
13719
+ if (this.textAreaElement.value && !this.originalTextAreaElementText) {
13720
+ this.originalTextAreaElementText = this.textAreaElement.value;
13721
+ }
13722
+ this.textAreaElement.value = '';
13723
+ this.isSpeaking = true;
13724
+ this.speechRecognitionService.listen()
13725
+ .pipe(operators.takeUntil(this.onDestroy$))
13726
+ .subscribe(function (_a) {
13727
+ var text = _a.text, isFinal = _a.isFinal;
13728
+ _this._recognizedText = text;
13729
+ _this.setTextAreaValue(text);
13730
+ setTimeout(function () {
13731
+ _this.textAreaElement.scrollTop = _this.textAreaElement.scrollHeight;
13732
+ }, 120);
13733
+ if (isFinal) {
13734
+ _this.canRenderAprove = true;
13735
+ _this.canRenderDiscard = true;
13736
+ _this.canRenderListeningText = false;
13737
+ _this.isSpeaking = false;
13738
+ }
13739
+ });
13740
+ };
13741
+ SpeechRecognitionComponent.prototype.onOpenToolbar = function () {
13742
+ if (this.isDisabledTextToSpeech) {
13743
+ return;
13744
+ }
13745
+ this.canRenderTextToSpeechToolbar = true;
13746
+ this.canRenderTextToSpeech = false;
13747
+ this.isPlayingTextToSpeech = true;
13748
+ this.speak();
13749
+ };
13750
+ SpeechRecognitionComponent.prototype.onCloseToolbar = function () {
13751
+ this.canRenderTextToSpeechToolbar = false;
13752
+ this.canRenderTextToSpeech = true;
13753
+ this.isPlayingTextToSpeech = false;
13754
+ this.textToSpeechService.cancel();
13755
+ this.voiceSpeed = 1;
13756
+ };
13757
+ SpeechRecognitionComponent.prototype.onDiscard = function () {
13758
+ this.canRenderAprove = false;
13759
+ this.canRenderDiscard = false;
13760
+ this.canRenderMicrophone = true;
13761
+ this.canRenderTextToSpeechToolbar = false;
13762
+ this.canRenderTextToSpeech = true;
13763
+ this._recognizedText = '';
13764
+ this.setTextAreaValue(this.originalTextAreaElementText);
13765
+ this.disabled = false;
13766
+ this.textToSpeechService.cancel();
13767
+ };
13768
+ SpeechRecognitionComponent.prototype.onAprove = function () {
13769
+ this.canRenderAprove = false;
13770
+ this.canRenderDiscard = false;
13771
+ this.canRenderMicrophone = true;
13772
+ this.canRenderTextToSpeechToolbar = false;
13773
+ this.canRenderTextToSpeech = true;
13774
+ this.originalTextAreaElementText = this._recognizedText;
13775
+ this.recognizedText.emit(this._recognizedText);
13776
+ this._recognizedText = '';
13777
+ this.disabled = false;
13778
+ this.textToSpeechService.cancel();
13779
+ };
13780
+ SpeechRecognitionComponent.prototype.ngOnDestroy = function () {
13781
+ this.onDestroy$.next();
13782
+ this.onDestroy$.complete();
13783
+ this.textAreaElement.removeEventListener('keydown', this.keydownEventListener);
13784
+ window.removeEventListener('resize', this.SPEECH_CONTAINER_WIDTH_CALLBACK);
13785
+ this.TEXT_AREA_ELEMENT_MUTATION_OBSERVER.disconnect();
13786
+ };
13787
+ SpeechRecognitionComponent.prototype.toggleTextToSpeech = function () {
13788
+ if (this.isPlayingTextToSpeech) {
13789
+ this.textToSpeechService.pause();
13790
+ }
13791
+ else {
13792
+ if (this.isDoneSpeaking) {
13793
+ this.speak();
13794
+ }
13795
+ else {
13796
+ this.textToSpeechService.resume();
13797
+ }
13798
+ }
13799
+ this.isPlayingTextToSpeech = !this.isPlayingTextToSpeech;
13800
+ };
13801
+ SpeechRecognitionComponent.prototype.restartTextToSpeech = function () {
13802
+ this.isPlayingTextToSpeech = true;
13803
+ this.textToSpeechService.cancel();
13804
+ this.speak();
13805
+ };
13806
+ SpeechRecognitionComponent.prototype.updateVoiceSpeed = function () {
13807
+ var voiceSpeedIndex = this.VOICE_SPEEDS.indexOf(this.voiceSpeed);
13808
+ var nextVoiceSpeedIndex = this.VOICE_SPEEDS[voiceSpeedIndex + 1] ? voiceSpeedIndex + 1 : 0;
13809
+ this.voiceSpeed = this.VOICE_SPEEDS[nextVoiceSpeedIndex];
13810
+ this.textToSpeechService.cancel();
13811
+ this.speak();
13812
+ };
13813
+ SpeechRecognitionComponent.prototype.stopListening = function () {
13814
+ this.speechRecognitionService.stop();
13815
+ };
13816
+ Object.defineProperty(SpeechRecognitionComponent.prototype, "isListening", {
13817
+ get: function () {
13818
+ return this.speechRecognitionService.isListening;
13819
+ },
13820
+ enumerable: true,
13821
+ configurable: true
13822
+ });
13823
+ Object.defineProperty(SpeechRecognitionComponent.prototype, "isDisabledTextToSpeech", {
13824
+ get: function () {
13825
+ var hasTextToSpeechVoice = this.textToSpeechService.hasVoice;
13826
+ return !this._recognizedText || !hasTextToSpeechVoice || this.isListening;
13827
+ },
13828
+ enumerable: true,
13829
+ configurable: true
13830
+ });
13831
+ SpeechRecognitionComponent.prototype.setTextAreaValue = function (value) {
13832
+ this.textAreaElement.value = value;
13833
+ };
13834
+ SpeechRecognitionComponent.prototype.speak = function () {
13835
+ var _this = this;
13836
+ this.isDoneSpeaking = false;
13837
+ this.textToSpeechService.speak(this._recognizedText, this.voiceSpeed).then(function () {
13838
+ _this.isPlayingTextToSpeech = false;
13839
+ _this.isDoneSpeaking = true;
13840
+ });
13841
+ };
13842
+ SpeechRecognitionComponent.prototype.setSpeechContainerWidth = function () {
13843
+ this.speechRecognitionContainerWidth = this.textAreaElement.getBoundingClientRect().width - this.SPEECH_RECOGNITION_MARGIN_OFFSET;
13844
+ };
13845
+ SpeechRecognitionComponent.ctorParameters = function () { return [
13846
+ { type: SpeechRecognitionService },
13847
+ { type: TextToSpeechService },
13848
+ { type: core$1.TranslateService }
13849
+ ]; };
13850
+ __decorate([
13851
+ core.Input()
13852
+ ], SpeechRecognitionComponent.prototype, "textAreaElement", void 0);
13853
+ __decorate([
13854
+ core.Output()
13855
+ ], SpeechRecognitionComponent.prototype, "recognizedText", void 0);
13856
+ SpeechRecognitionComponent = __decorate([
13857
+ core.Component({
13858
+ selector: 's-speech-recognition',
13859
+ template: "<section class=\"speech-recognition\" [style.width.px]=\"speechRecognitionContainerWidth\" *ngIf=\"speechRecognitionContainerWidth\">\n <div class=\"speech-recognition-text\">\n <ng-container *ngIf=\"canRenderMicrophone\">\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"isSpeaking\">\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"canRenderAprove && canRenderDiscard\">\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n </ng-container>\n </div>\n <div class=\"speech-recognition-buttons\">\n <span\n *ngIf=\"canRenderListeningText\"\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\">\n <i class=\"far fa-ellipsis-h\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderMicrophone\"\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderAprove\"\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n\n <span *ngIf=\"canRenderDiscard\"\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderTextToSpeech\"\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderTextToSpeechToolbar\"\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n </div>\n</section>\n",
13860
+ styles: [".speech-recognition{display:-ms-flexbox;display:flex;gap:10px;-ms-flex-pack:justify;justify-content:space-between}.speech-recognition-buttons{display:-ms-flexbox;display:flex;gap:10px;position:relative;bottom:15px}.speech-recognition-item{display:-ms-inline-flexbox;display:inline-flex;height:25px;padding:4px 12px;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:-ms-flexbox;display:flex;border-radius:15px;-ms-flex-align:center;align-items:center;color:#fff}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-item-toolbar span{height:25px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}"]
13861
+ })
13862
+ ], SpeechRecognitionComponent);
13863
+ return SpeechRecognitionComponent;
13864
+ }());
13865
+
13866
+ var SpeechRecognitionModule = /** @class */ (function () {
13867
+ function SpeechRecognitionModule() {
13868
+ }
13869
+ SpeechRecognitionModule = __decorate([
13870
+ core.NgModule({
13871
+ declarations: [SpeechRecognitionComponent],
13872
+ imports: [
13873
+ common.CommonModule,
13874
+ core$1.TranslateModule
13875
+ ],
13876
+ exports: [SpeechRecognitionComponent]
13877
+ })
13878
+ ], SpeechRecognitionModule);
13879
+ return SpeechRecognitionModule;
13880
+ }());
13881
+
13882
+ var TextAreaModule = /** @class */ (function () {
13883
+ function TextAreaModule() {
13884
+ }
13885
+ TextAreaModule = __decorate([
13886
+ core.NgModule({
13887
+ declarations: [TextAreaComponent],
13888
+ imports: [
13889
+ common.CommonModule,
13890
+ forms.FormsModule,
13891
+ forms.ReactiveFormsModule,
13892
+ SpeechRecognitionModule,
13893
+ keyfilter.KeyFilterModule
13894
+ ],
13895
+ exports: [TextAreaComponent]
13896
+ })
13897
+ ], TextAreaModule);
13898
+ return TextAreaModule;
13899
+ }());
13900
+
13386
13901
  var DynamicFormModule = /** @class */ (function () {
13387
13902
  function DynamicFormModule() {
13388
13903
  }
@@ -13441,6 +13956,7 @@
13441
13956
  ProfilePictureModule,
13442
13957
  EditorFieldModule,
13443
13958
  FieldLabelModule,
13959
+ TextAreaModule
13444
13960
  ],
13445
13961
  declarations: [
13446
13962
  AutocompleteFieldComponent,
@@ -22636,7 +23152,11 @@
22636
23152
  "platform.angular_components.add_all": "Adicionar todos",
22637
23153
  "platform.angular_components.remove_all": "Remover todos",
22638
23154
  "platform.angular_components.country_name_gb": "Reino Unido",
22639
- "platform.angular_components.insight_footer": "Conteúdo gerado por inteligência artificial. Sujeito a imprecisões."
23155
+ "platform.angular_components.insight_footer": "Conteúdo gerado por inteligência artificial. Sujeito a imprecisões.",
23156
+ "platform.angular_components.text_area_speech_recognition_placeholder": "Preencha o campo, com pelo menos, uma frase",
23157
+ "platform.angular_components.text_area_before_speech": "Grave ou ouça o texto clicando nos Ícones",
23158
+ "platform.angular_components.text_area_while_speech": "Clique novamente no Ícone para finalizar",
23159
+ "platform.angular_components.text_area_end_speech": "Gravação finalizada"
22640
23160
  };
22641
23161
 
22642
23162
  exports.AccordionComponent = AccordionComponent;
@@ -22819,9 +23339,11 @@
22819
23339
  exports.TaxCalculationLanguageConfigs = TaxCalculationLanguageConfigs;
22820
23340
  exports.TemplateDirective = TemplateDirective;
22821
23341
  exports.TemplateModule = TemplateModule;
23342
+ exports.TextAreaComponent = TextAreaComponent;
22822
23343
  exports.TextAreaField = TextAreaField;
22823
23344
  exports.TextAreaIAComponent = TextAreaIAComponent;
22824
23345
  exports.TextAreaIAModule = TextAreaIAModule;
23346
+ exports.TextAreaModule = TextAreaModule;
22825
23347
  exports.TextField = TextField;
22826
23348
  exports.ThumbnailComponent = ThumbnailComponent;
22827
23349
  exports.ThumbnailModule = ThumbnailModule;
@@ -22881,69 +23403,73 @@
22881
23403
  exports.ɵbv = ProfilePictureFieldComponent;
22882
23404
  exports.ɵbw = EditorFieldModule;
22883
23405
  exports.ɵbx = EditorFieldComponent;
22884
- exports.ɵby = AutocompleteFieldComponent;
22885
- exports.ɵbz = BooleanFieldComponent;
23406
+ exports.ɵby = SpeechRecognitionModule;
23407
+ exports.ɵbz = SpeechRecognitionComponent;
22886
23408
  exports.ɵc = InfoSignComponent;
22887
- exports.ɵca = BooleanSwitchFieldComponent;
22888
- exports.ɵcb = CalendarFieldComponent;
22889
- exports.ɵcc = ChipsFieldComponent;
22890
- exports.ɵcd = CountryPhonePickerFieldComponent;
22891
- exports.ɵce = DynamicFieldComponent;
22892
- exports.ɵcf = DynamicFormDirective;
22893
- exports.ɵcg = FieldsetComponent;
22894
- exports.ɵch = FileUploadComponent$1;
22895
- exports.ɵci = LookupFieldComponent;
22896
- exports.ɵcj = RadioButtonComponent;
22897
- exports.ɵck = RowComponent;
22898
- exports.ɵcl = SectionComponent;
22899
- exports.ɵcm = SelectFieldComponent;
22900
- exports.ɵcn = SliderFieldComponent;
22901
- exports.ɵco = TextAreaFieldComponent;
22902
- exports.ɵcp = TextAreaIAFieldComponent;
22903
- exports.ɵcq = IAssistService;
22904
- exports.ɵcr = ButtonFieldComponent;
22905
- exports.ɵct = DecimalField;
22906
- exports.ɵcu = SideTableComponent;
22907
- exports.ɵcv = InfiniteScrollModule;
22908
- exports.ɵcw = InfiniteScrollDirective;
22909
- exports.ɵcx = IAInsightSidebarComponent;
22910
- exports.ɵcy = IAInsightCardComponent;
22911
- exports.ɵcz = IAInsightCardLoaderComponent;
23409
+ exports.ɵca = SpeechRecognitionService;
23410
+ exports.ɵcb = TextToSpeechService;
23411
+ exports.ɵcc = AutocompleteFieldComponent;
23412
+ exports.ɵcd = BooleanFieldComponent;
23413
+ exports.ɵce = BooleanSwitchFieldComponent;
23414
+ exports.ɵcf = CalendarFieldComponent;
23415
+ exports.ɵcg = ChipsFieldComponent;
23416
+ exports.ɵch = CountryPhonePickerFieldComponent;
23417
+ exports.ɵci = DynamicFieldComponent;
23418
+ exports.ɵcj = DynamicFormDirective;
23419
+ exports.ɵck = FieldsetComponent;
23420
+ exports.ɵcl = FileUploadComponent$1;
23421
+ exports.ɵcm = LookupFieldComponent;
23422
+ exports.ɵcn = RadioButtonComponent;
23423
+ exports.ɵco = RowComponent;
23424
+ exports.ɵcp = SectionComponent;
23425
+ exports.ɵcq = SelectFieldComponent;
23426
+ exports.ɵcr = SliderFieldComponent;
23427
+ exports.ɵcs = TextAreaFieldComponent;
23428
+ exports.ɵct = TextAreaIAFieldComponent;
23429
+ exports.ɵcu = IAssistService;
23430
+ exports.ɵcv = ButtonFieldComponent;
23431
+ exports.ɵcx = DecimalField;
23432
+ exports.ɵcy = SideTableComponent;
23433
+ exports.ɵcz = InfiniteScrollModule;
22912
23434
  exports.ɵd = TieredMenuEventService;
22913
- exports.ɵda = GridMenuItemComponent;
22914
- exports.ɵdb = InlineEditItemComponent;
22915
- exports.ɵdc = InlineEditCalendarComponent;
22916
- exports.ɵdd = InlineEditLookupComponent;
22917
- exports.ɵde = InlineEditNumberComponent;
22918
- exports.ɵdf = InlineEditTextComponent;
22919
- exports.ɵdg = InlineEditTextAreaComponent;
22920
- exports.ɵdh = InlineEditTextAreaIAComponent;
22921
- exports.ɵdi = KanbanEventService;
22922
- exports.ɵdj = KanbanItemComponent;
22923
- exports.ɵdk = KanbanColumnComponent;
22924
- exports.ɵdl = KanbanItemDraggingComponent;
22925
- exports.ɵdm = NumberLocaleOptions;
22926
- exports.ɵdn = BorderButtonModule;
22927
- exports.ɵdo = BorderButtonComponent;
22928
- exports.ɵdp = ProgressBarDeterminateComponent;
22929
- exports.ɵdq = ProgressBarIndeterminateComponent;
22930
- exports.ɵdr = SelectButtonItemComponent;
22931
- exports.ɵds = SlidePanelService;
22932
- exports.ɵdt = ThumbnailItemComponent;
22933
- exports.ɵdu = ThumbnailItemVideoComponent;
22934
- exports.ɵdv = ThumbnailItemImageComponent;
22935
- exports.ɵdw = TimelineItemModule;
22936
- exports.ɵdx = TimelineIconItemComponent;
22937
- exports.ɵdy = HorizontalTimelineModule;
22938
- exports.ɵdz = HorizontalTimelineComponent;
23435
+ exports.ɵda = InfiniteScrollDirective;
23436
+ exports.ɵdb = IAInsightSidebarComponent;
23437
+ exports.ɵdc = IAInsightCardComponent;
23438
+ exports.ɵdd = IAInsightCardLoaderComponent;
23439
+ exports.ɵde = GridMenuItemComponent;
23440
+ exports.ɵdf = InlineEditItemComponent;
23441
+ exports.ɵdg = InlineEditCalendarComponent;
23442
+ exports.ɵdh = InlineEditLookupComponent;
23443
+ exports.ɵdi = InlineEditNumberComponent;
23444
+ exports.ɵdj = InlineEditTextComponent;
23445
+ exports.ɵdk = InlineEditTextAreaComponent;
23446
+ exports.ɵdl = InlineEditTextAreaIAComponent;
23447
+ exports.ɵdm = KanbanEventService;
23448
+ exports.ɵdn = KanbanItemComponent;
23449
+ exports.ɵdo = KanbanColumnComponent;
23450
+ exports.ɵdp = KanbanItemDraggingComponent;
23451
+ exports.ɵdq = NumberLocaleOptions;
23452
+ exports.ɵdr = BorderButtonModule;
23453
+ exports.ɵds = BorderButtonComponent;
23454
+ exports.ɵdt = ProgressBarDeterminateComponent;
23455
+ exports.ɵdu = ProgressBarIndeterminateComponent;
23456
+ exports.ɵdv = SelectButtonItemComponent;
23457
+ exports.ɵdw = SlidePanelService;
23458
+ exports.ɵdx = ThumbnailItemComponent;
23459
+ exports.ɵdy = ThumbnailItemVideoComponent;
23460
+ exports.ɵdz = ThumbnailItemImageComponent;
22939
23461
  exports.ɵe = TieredMenuService;
22940
- exports.ɵea = VerticalTimelineModule;
22941
- exports.ɵeb = VerticalTimelineComponent;
22942
- exports.ɵec = RangeLineComponent;
22943
- exports.ɵed = CollapseOptionComponent;
22944
- exports.ɵee = CollapsedItemsComponent;
22945
- exports.ɵef = VerticalItemsComponent;
22946
- exports.ɵeg = ChipItemComponent;
23462
+ exports.ɵea = TimelineItemModule;
23463
+ exports.ɵeb = TimelineIconItemComponent;
23464
+ exports.ɵec = HorizontalTimelineModule;
23465
+ exports.ɵed = HorizontalTimelineComponent;
23466
+ exports.ɵee = VerticalTimelineModule;
23467
+ exports.ɵef = VerticalTimelineComponent;
23468
+ exports.ɵeg = RangeLineComponent;
23469
+ exports.ɵeh = CollapseOptionComponent;
23470
+ exports.ɵei = CollapsedItemsComponent;
23471
+ exports.ɵej = VerticalItemsComponent;
23472
+ exports.ɵek = ChipItemComponent;
22947
23473
  exports.ɵf = TieredMenuGlobalService;
22948
23474
  exports.ɵg = TieredMenuComponent;
22949
23475
  exports.ɵh = TieredMenuNestedComponent;