@seniorsistemas/angular-components 18.1.0-feature-sds-276-ea560ae6 → 18.1.0-feature-sds-276-ee045828
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +1 -1
- package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +9 -8
- package/custom-fields/lib/custom-fields/custom-fields.service.d.ts +4 -3
- package/custom-fields/lib/custom-fields/models/custom-field-type.d.ts +33 -0
- package/custom-fields/lib/custom-fields/models/index.d.ts +1 -0
- package/custom-fields/public-api.d.ts +2 -1
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/components/field-label/field-label.component.d.ts +3 -3
- package/dynamic-form/dynamic-form/components/grid/row/row.component.d.ts +22 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/components/lookup/lookup.component.d.ts +19 -34
- package/dynamic-form/dynamic-form/components/structure/base-structure-component.d.ts +10 -0
- package/dynamic-form/dynamic-form/components/structure/fieldset/fieldset.component.d.ts +12 -0
- package/dynamic-form/dynamic-form/components/structure/section/section.component.d.ts +14 -0
- package/dynamic-form/dynamic-form/configurations/registry.d.ts +8 -0
- package/dynamic-form/dynamic-form/configurations/structure/fieldset.d.ts +11 -0
- package/dynamic-form/dynamic-form/configurations/structure/row.d.ts +21 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/configurations/structure/section.d.ts +9 -8
- package/dynamic-form/dynamic-form/configurations/structure/structure.d.ts +11 -0
- package/dynamic-form/dynamic-form/dynamic-form.component.d.ts +19 -0
- package/dynamic-form/dynamic-form/dynamic-form.d.ts +39 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/dynamic-form.directive.d.ts +6 -12
- package/dynamic-form/dynamic-form/dynamic-form.module.d.ts +79 -0
- package/dynamic-form/dynamic-form/form-field/configurations/field-size.d.ts +13 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.d.ts +21 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.d.ts +28 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.d.ts +28 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.d.ts +21 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.d.ts +12 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.d.ts +16 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.d.ts +33 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.d.ts +11 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.d.ts +18 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/configurations/fields/country-phone-picker-field.d.ts +6 -7
- package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +15 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/field.d.ts +43 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +56 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/configurations/fields/number-field.d.ts +9 -22
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/configurations/fields/password-field.d.ts +8 -20
- package/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.d.ts +24 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/configurations/fields/radio-button-field.d.ts +7 -9
- package/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.d.ts +33 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.d.ts +24 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.d.ts +16 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.d.ts +18 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-ia-field.d.ts +19 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.d.ts +31 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/autocomplete/autocomplete-field.component.d.ts +9 -6
- package/dynamic-form/dynamic-form/form-field/fields/base-field-component.d.ts +7 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/bignumber/bignumber-field.component.d.ts +8 -8
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/boolean/boolean-radio-field/boolean-field.component.d.ts +4 -4
- package/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.d.ts +10 -0
- package/dynamic-form/dynamic-form/form-field/fields/button-field/button-field.component.d.ts +11 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/calendar/calendar-field.component.d.ts +10 -10
- package/dynamic-form/dynamic-form/form-field/fields/checkbox/checkbox-field.component.d.ts +10 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/chips/chips-field.component.d.ts +5 -5
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/country-phone-picker/country-phone-picker-field.component.d.ts +4 -4
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/currency/currency-field.component.d.ts +10 -6
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/file-upload/file-upload-field.component.d.ts +7 -6
- package/dynamic-form/dynamic-form/form-field/fields/lookup/lookup-field.component.d.ts +18 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/number/number-field.component.d.ts +8 -9
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/password/password-field.component.d.ts +8 -6
- package/dynamic-form/dynamic-form/form-field/fields/profile-picture/profile-picture-field.component.d.ts +10 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/radio-button/radio-button-field.component.d.ts +5 -5
- package/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.d.ts +12 -0
- package/dynamic-form/dynamic-form/form-field/fields/slider/slider-field.component.d.ts +23 -0
- package/dynamic-form/dynamic-form/form-field/fields/star-rating/star-rating-field.component.d.ts +11 -0
- package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/fields/text/text-field.component.d.ts +8 -8
- package/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.d.ts +18 -0
- package/dynamic-form/dynamic-form/form-field/fields/text-area-ia/text-area-ia-field.component.d.ts +15 -0
- package/dynamic-form/dynamic-form/services/form-field-utils.service.d.ts +15 -0
- package/dynamic-form/public-api.d.ts +35 -43
- package/dynamic-form/src/optional-fields/editor/editor-field/editor-field.component.d.ts +10 -0
- package/dynamic-form/src/optional-fields/editor/editor-field.d.ts +15 -0
- package/dynamic-form/src/optional-fields/editor/index.d.ts +5 -0
- package/dynamic-form/src/optional-fields/editor/public-api.d.ts +1 -0
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +8 -6
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +68 -69
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +5 -5
- package/esm2022/custom-fields/lib/custom-fields/models/custom-field-type.mjs +26 -1
- package/esm2022/custom-fields/lib/custom-fields/models/index.mjs +2 -0
- package/esm2022/custom-fields/public-api.mjs +3 -2
- package/esm2022/dynamic-form/dynamic-form/components/field-label/field-label.component.mjs +21 -0
- package/esm2022/dynamic-form/dynamic-form/components/grid/row/row.component.mjs +39 -0
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +661 -0
- package/esm2022/dynamic-form/dynamic-form/components/lookup/types/default-filter.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/components/lookup/types/label-options.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/components/structure/base-structure-component.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/components/structure/fieldset/fieldset.component.mjs +17 -0
- package/esm2022/dynamic-form/dynamic-form/components/structure/section/section.component.mjs +23 -0
- package/esm2022/dynamic-form/dynamic-form/configurations/registry.mjs +12 -0
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/fieldset.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/row.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/section.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/structure.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.component.mjs +37 -0
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.directive.mjs +74 -0
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.mjs +81 -0
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.module.mjs +283 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/addon-config.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/field-size.mjs +19 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +9 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-ia-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +41 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/base-field-component.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +119 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +21 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +17 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/button-field/button-field.component.mjs +28 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +123 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +15 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.mjs +53 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +23 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +99 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/file-upload/file-upload-field.component.mjs +47 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/lookup/lookup-field.component.mjs +40 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +114 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +73 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/profile-picture/profile-picture-field.component.mjs +16 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +49 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.mjs +19 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/slider/slider-field.component.mjs +113 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/star-rating/star-rating-field.component.mjs +21 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +79 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +34 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area-ia/text-area-ia-field.component.mjs +27 -0
- package/esm2022/dynamic-form/dynamic-form/services/form-field-utils.service.mjs +39 -0
- package/esm2022/dynamic-form/public-api.mjs +61 -44
- package/esm2022/dynamic-form/seniorsistemas-angular-components-dynamic-form.mjs +1 -1
- package/esm2022/dynamic-form/src/optional-fields/editor/editor-field/editor-field.component.mjs +18 -0
- package/esm2022/dynamic-form/src/optional-fields/editor/editor-field.mjs +2 -0
- package/esm2022/dynamic-form/src/optional-fields/editor/public-api.mjs +5 -0
- package/esm2022/dynamic-form/src/optional-fields/editor/seniorsistemas-angular-components-dynamic-form-src-optional-fields-editor.mjs +5 -0
- package/esm2022/file-upload/lib/file-upload/file-upload.component.mjs +5 -5
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text-area-ia/inline-edit-text-area-ia.component.mjs +1 -1
- package/esm2022/select/lib/select/select.component.mjs +3 -3
- package/esm2022/table/lib/table/table-column/models/dynamic-editable-grid.interface.mjs +1 -1
- package/esm2022/text-area-ia/lib/text-area-ia/text-area-ia.component.mjs +6 -6
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +7 -5
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +95 -71
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form-src-optional-fields-editor.mjs +25 -0
- package/fesm2022/seniorsistemas-angular-components-dynamic-form-src-optional-fields-editor.mjs.map +1 -0
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +871 -2437
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-upload.mjs +4 -4
- package/fesm2022/seniorsistemas-angular-components-file-upload.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area-ia.mjs +5 -5
- package/fesm2022/seniorsistemas-angular-components-text-area-ia.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
- package/file-upload/lib/file-upload/file-upload.component.d.ts +2 -2
- package/package.json +12 -18
- package/table/lib/table/table-column/models/dynamic-editable-grid.interface.d.ts +2 -2
- package/text-area-ia/lib/text-area-ia/text-area-ia.component.d.ts +2 -1
- package/dynamic-form/lib/dynamic-form/components/grid/row/row.component.d.ts +0 -15
- package/dynamic-form/lib/dynamic-form/components/structure/base-structure-component.d.ts +0 -8
- package/dynamic-form/lib/dynamic-form/components/structure/fieldset/fieldset.component.d.ts +0 -12
- package/dynamic-form/lib/dynamic-form/components/structure/section/section.component.d.ts +0 -14
- package/dynamic-form/lib/dynamic-form/configurations/dynamic-config.d.ts +0 -3
- package/dynamic-form/lib/dynamic-form/configurations/dynamic-type.d.ts +0 -24
- package/dynamic-form/lib/dynamic-form/configurations/grid/grid.d.ts +0 -14
- package/dynamic-form/lib/dynamic-form/configurations/grid/row.d.ts +0 -8
- package/dynamic-form/lib/dynamic-form/configurations/grid-type.d.ts +0 -3
- package/dynamic-form/lib/dynamic-form/configurations/structure/fieldset.d.ts +0 -10
- package/dynamic-form/lib/dynamic-form/configurations/structure/structure.d.ts +0 -14
- package/dynamic-form/lib/dynamic-form/configurations/structure-type.d.ts +0 -4
- package/dynamic-form/lib/dynamic-form/dynamic-form.component.d.ts +0 -19
- package/dynamic-form/lib/dynamic-form/dynamic-form.d.ts +0 -57
- package/dynamic-form/lib/dynamic-form/dynamic-form.module.d.ts +0 -83
- package/dynamic-form/lib/dynamic-form/form-field/configurations/field-size.d.ts +0 -7
- package/dynamic-form/lib/dynamic-form/form-field/configurations/field-type.d.ts +0 -32
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/autocomplete-field.d.ts +0 -30
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/bignumber-field.d.ts +0 -38
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/blob-field.d.ts +0 -43
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/boolean-field.d.ts +0 -29
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/boolean-switch-field.d.ts +0 -11
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/button-field.d.ts +0 -34
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/calendar-field.d.ts +0 -45
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/checkbox-field.d.ts +0 -9
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/chips-field.d.ts +0 -24
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/currency-field.d.ts +0 -9
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/decimal-field.d.ts +0 -14
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/editor-field.d.ts +0 -18
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/field.d.ts +0 -96
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +0 -97
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/profile-picture.d.ts +0 -35
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/select-field.d.ts +0 -41
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/slider-field.d.ts +0 -32
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/star-rating-field.d.ts +0 -17
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-area-field.d.ts +0 -24
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-area-ia-field.d.ts +0 -26
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-field.d.ts +0 -41
- package/dynamic-form/lib/dynamic-form/form-field/fields/base-field-component.d.ts +0 -32
- package/dynamic-form/lib/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.d.ts +0 -10
- package/dynamic-form/lib/dynamic-form/form-field/fields/button-field/button-field.component.d.ts +0 -10
- package/dynamic-form/lib/dynamic-form/form-field/fields/checkbox/checkbox-field.component.d.ts +0 -10
- package/dynamic-form/lib/dynamic-form/form-field/fields/editor/editor-field.component.d.ts +0 -10
- package/dynamic-form/lib/dynamic-form/form-field/fields/lookup/lookup-field.component.d.ts +0 -9
- package/dynamic-form/lib/dynamic-form/form-field/fields/profile-picture/profile-picture-field.component.d.ts +0 -9
- package/dynamic-form/lib/dynamic-form/form-field/fields/select/select-field.component.d.ts +0 -10
- package/dynamic-form/lib/dynamic-form/form-field/fields/slider/slider-field.component.d.ts +0 -25
- package/dynamic-form/lib/dynamic-form/form-field/fields/star-rating/star-rating-field.component.d.ts +0 -10
- package/dynamic-form/lib/dynamic-form/form-field/fields/text-area/text-area-field.component.d.ts +0 -14
- package/dynamic-form/lib/dynamic-form/form-field/fields/text-area-ia/text-area-ia-field.component.d.ts +0 -9
- package/dynamic-form/lib/dynamic-form/form-field/form-field.d.ts +0 -192
- package/dynamic-form/lib/dynamic-form/services/dynamic-form-cache.d.ts +0 -12
- package/esm2022/dynamic-form/lib/dynamic-form/components/field-label/field-label.component.mjs +0 -20
- package/esm2022/dynamic-form/lib/dynamic-form/components/grid/row/row.component.mjs +0 -41
- package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/lookup.component.mjs +0 -642
- package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/types/default-filter.mjs +0 -2
- package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/types/label-options.mjs +0 -2
- package/esm2022/dynamic-form/lib/dynamic-form/components/structure/base-structure-component.mjs +0 -2
- package/esm2022/dynamic-form/lib/dynamic-form/components/structure/fieldset/fieldset.component.mjs +0 -27
- package/esm2022/dynamic-form/lib/dynamic-form/components/structure/section/section.component.mjs +0 -33
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/dynamic-config.mjs +0 -71
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/dynamic-type.mjs +0 -26
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid/grid.mjs +0 -14
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid/row.mjs +0 -10
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid-type.mjs +0 -5
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/fieldset.mjs +0 -10
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/section.mjs +0 -31
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/structure.mjs +0 -9
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure-type.mjs +0 -6
- package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.component.mjs +0 -41
- package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.directive.mjs +0 -107
- package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.mjs +0 -189
- package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.module.mjs +0 -293
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/addon-config.mjs +0 -2
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/field-size.mjs +0 -13
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/field-type.mjs +0 -34
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +0 -24
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +0 -37
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/blob-field.mjs +0 -31
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/boolean-field.mjs +0 -30
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +0 -15
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/button-field.mjs +0 -47
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/calendar-field.mjs +0 -56
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +0 -9
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/chips-field.mjs +0 -25
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +0 -15
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/currency-field.mjs +0 -14
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/decimal-field.mjs +0 -16
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/editor-field.mjs +0 -15
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/field.mjs +0 -64
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/lookup-field.mjs +0 -66
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/number-field.mjs +0 -38
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/password-field.mjs +0 -33
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/profile-picture.mjs +0 -35
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +0 -27
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/select-field.mjs +0 -43
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/slider-field.mjs +0 -30
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +0 -17
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-area-field.mjs +0 -30
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-area-ia-field.mjs +0 -32
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-field.mjs +0 -38
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +0 -37
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/base-field-component.mjs +0 -22
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +0 -124
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +0 -27
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +0 -23
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/button-field/button-field.component.mjs +0 -31
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +0 -118
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +0 -21
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/chips/chips-field.component.mjs +0 -59
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +0 -29
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/currency/currency-field.component.mjs +0 -100
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/editor/editor-field.component.mjs +0 -23
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/file-upload/file-upload-field.component.mjs +0 -56
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/lookup/lookup-field.component.mjs +0 -23
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/number/number-field.component.mjs +0 -121
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/password/password-field.component.mjs +0 -75
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/profile-picture/profile-picture-field.component.mjs +0 -22
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +0 -52
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/select/select-field.component.mjs +0 -24
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/slider/slider-field.component.mjs +0 -103
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/star-rating/star-rating-field.component.mjs +0 -25
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text/text-field.component.mjs +0 -88
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +0 -29
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text-area-ia/text-area-ia-field.component.mjs +0 -22
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/form-field.mjs +0 -243
- package/esm2022/dynamic-form/lib/dynamic-form/services/dynamic-form-cache.mjs +0 -150
- package/esm2022/form-dynamic/components/form-dynamic/form-dynamic.component.mjs +0 -53
- package/esm2022/form-dynamic/core/registry.mjs +0 -10
- package/esm2022/form-dynamic/fields-basic/boolean-field/boolean-field.component.mjs +0 -15
- package/esm2022/form-dynamic/fields-basic/string-field/string-field.component.mjs +0 -15
- package/esm2022/form-dynamic/optional-fields/editor/editor-field/editor-field.component.mjs +0 -30
- package/esm2022/form-dynamic/optional-fields/editor/editor-types.mjs +0 -2
- package/esm2022/form-dynamic/optional-fields/editor/public-api.mjs +0 -6
- package/esm2022/form-dynamic/optional-fields/editor/seniorsistemas-angular-components-form-dynamic-optional-fields-editor.mjs +0 -5
- package/esm2022/form-dynamic/public-api.mjs +0 -10
- package/esm2022/form-dynamic/schemas/field-dynamic.mjs +0 -2
- package/esm2022/form-dynamic/schemas/form-dynamic-schema.mjs +0 -2
- package/esm2022/form-dynamic/seniorsistemas-angular-components-form-dynamic.mjs +0 -5
- package/fesm2022/seniorsistemas-angular-components-form-dynamic-optional-fields-editor.mjs +0 -40
- package/fesm2022/seniorsistemas-angular-components-form-dynamic-optional-fields-editor.mjs.map +0 -1
- package/fesm2022/seniorsistemas-angular-components-form-dynamic.mjs +0 -94
- package/fesm2022/seniorsistemas-angular-components-form-dynamic.mjs.map +0 -1
- package/form-dynamic/components/form-dynamic/form-dynamic.component.d.ts +0 -15
- package/form-dynamic/core/registry.d.ts +0 -7
- package/form-dynamic/fields-basic/boolean-field/boolean-field.component.d.ts +0 -9
- package/form-dynamic/fields-basic/string-field/string-field.component.d.ts +0 -9
- package/form-dynamic/index.d.ts +0 -5
- package/form-dynamic/optional-fields/editor/editor-field/editor-field.component.d.ts +0 -15
- package/form-dynamic/optional-fields/editor/editor-types.d.ts +0 -8
- package/form-dynamic/optional-fields/editor/index.d.ts +0 -5
- package/form-dynamic/optional-fields/editor/public-api.d.ts +0 -8
- package/form-dynamic/public-api.d.ts +0 -4
- package/form-dynamic/schemas/field-dynamic.d.ts +0 -20
- package/form-dynamic/schemas/form-dynamic-schema.d.ts +0 -4
- /package/dynamic-form/{lib/dynamic-form → dynamic-form}/components/lookup/types/default-filter.d.ts +0 -0
- /package/dynamic-form/{lib/dynamic-form → dynamic-form}/components/lookup/types/label-options.d.ts +0 -0
- /package/dynamic-form/{lib/dynamic-form → dynamic-form}/form-field/addon-config.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-select.mjs","sources":["../../projects/angular-components/select/src/lib/select/components/select-option/select-option.component.ts","../../projects/angular-components/select/src/lib/select/components/select-option/select-option.component.html","../../projects/angular-components/select/src/lib/select/select.component.ts","../../projects/angular-components/select/src/lib/select/select.component.html","../../projects/angular-components/select/src/seniorsistemas-angular-components-select.ts"],"sourcesContent":["import { Component, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CheckboxComponent } from '@seniorsistemas/angular-components/checkbox';\n\n@Component({\n selector: 's-select-option',\n templateUrl: './select-option.component.html',\n standalone: true,\n imports: [CommonModule, CheckboxComponent],\n})\nexport class SelectOptionComponent {\n public id = input.required<string>();\n public label = input.required<string>();\n public multiple = input.required<boolean>();\n public checkmark = input.required<boolean>();\n public isGrouper = input.required<boolean>();\n public isFocused = input.required<boolean>();\n\n public isSelected = model.required<boolean>();\n\n public selected = output();\n\n public onClick(): void {\n if (this.isGrouper()) {\n return;\n }\n\n this.selected.emit();\n }\n}\n","<li\n [attr.id]=\"id()\"\n class=\"flex select-none items-center gap-3 px-3 py-2\"\n [class.hover:bg-grayscale-10]=\"!isGrouper()\"\n [class.bg-grayscale-10]=\"!isGrouper() && isFocused()\"\n (click)=\"onClick()\"\n>\n @if (!isGrouper() && checkmark() && !multiple() && isSelected()) {\n <i class=\"far fa-check text-grayscale-60\"></i>\n }\n\n @if (!isGrouper() && multiple()) {\n <s-checkbox [checked]=\"isSelected()\"></s-checkbox>\n }\n <span\n class=\"text-grayscale-90\"\n [class.font-bold]=\"isGrouper()\"\n >\n {{ label() }}\n </span>\n</li>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n OnInit,\n signal,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CheckboxComponent } from '@seniorsistemas/angular-components/checkbox';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { SelectOptionComponent } from './components/select-option/select-option.component';\n\ninterface InternalDropdownOption<T> {\n data: T;\n id: string;\n grouper?: boolean;\n}\n@Component({\n selector: 's-select',\n templateUrl: './select.component.html',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ScrollingModule,\n SelectOptionComponent,\n CheckboxComponent,\n TranslateModule,\n OverlayModule,\n ],\n host: {\n '(window:resize)': 'onWindowResize($event)',\n '[attr.aria-expanded]': 'showOptions()',\n '[attr.aria-haspopup]': '\"listbox\"',\n '[attr.aria-owns]': 'showOptions() ? componentId + \"-listbox\" : null',\n '[attr.aria-activedescendant]': 'focusedIndex() >= 0 ? filteredOptions()[focusedIndex()]?.id : null',\n '[attr.aria-label]': 'placeholder() || \"Select option\"',\n '[attr.aria-disabled]': 'disabled()',\n role: 'combobox',\n },\n styles: [\n `\n :host.ng-dirty.ng-invalid {\n .dropdown-container,\n .select-container {\n border-color: #c13018;\n outline: none;\n }\n }\n `,\n ],\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n})\nexport class SelectComponent<T> implements ControlValueAccessor, OnInit {\n private static nextId = 0;\n\n public placeholder = input('');\n public multiple = input(false);\n public options = input.required<T[]>();\n public optionLabel = input<keyof T>();\n public optionValue = input<keyof T>();\n public showClear = input(false);\n public filter = input(false);\n public checkmark = input(false);\n public filterBy = input<keyof T | (keyof T)[]>();\n public group = input(false);\n public virtualScroll = input(false);\n public virtualScrollItemSize = input(37);\n public emptyMessage = input<string | null>(null);\n\n public disabled = model(false);\n public showOptions = model(false);\n\n public value = signal<InternalDropdownOption<T> | null>(null);\n public values = signal<InternalDropdownOption<T>[]>([]);\n public filterValue = signal('');\n public focusedIndex = signal(-1);\n\n public componentId = `select${SelectComponent.nextId++}`;\n\n /**\n * Computed que indica se todas as opções filtradas estão selecionadas.\n * Retorna `true` se todas as opções disponíveis (excluindo agrupadores) estiverem presentes\n * na lista de valores selecionados, e `false` caso contrário.\n * @returns {boolean} `true` se todas as opções filtradas estão selecionadas, `false` caso contrário.\n */\n public allSelected = computed(() => {\n const options = this.filteredOptions().filter((option) => !option.grouper);\n const selectedIds = this.values().map((option) => option.id);\n\n const ret = options.length > 0 && options.every((option) => selectedIds.includes(option.id));\n return ret;\n });\n\n /**\n * Retorna o item atualmente focado na lista de opções filtradas.\n * @returns O dado do item focado ou `null` caso nenhum item esteja focado.\n */\n public focusedItem = computed(() => this.filteredOptions().at(this.focusedIndex())?.data ?? null);\n\n /**\n * Computa e retorna a lista interna de opções do dropdown.\n * - Se as opções estiverem agrupadas (`group()` retorna verdadeiro),\n * utiliza `_grouperToFlat` para transformar as opções agrupadas em uma lista plana.\n * - Caso contrário, retorna as opções com IDs adicionados.\n * @returns Um array de `InternalDropdownOption<T>` representando as opções disponíveis para o componente select.\n */\n public internalOptions = computed<InternalDropdownOption<T>[]>(() => {\n const opts = this.options();\n const optionsWithId = this._addIdToOptions(opts);\n return this.group() ? this._grouperToFlat(optionsWithId) : optionsWithId;\n });\n\n /**\n * Retorna uma string representando a seleção atual do componente.\n * - Se o modo múltiplo estiver ativado e mais de um item estiver selecionado,\n * retorna uma mensagem traduzida indicando o número total de registros selecionados.\n * - Se apenas um item estiver selecionado, retorna o rótulo desse item.\n * - Se o modo múltiplo não estiver ativado, retorna o rótulo do item selecionado ou uma string vazia caso nenhum item esteja selecionado.\n * @returns {string} Texto representando a seleção atual.\n */\n public print = computed(() => {\n if (this.multiple()) {\n const selected = this.values();\n if (selected.length > 1) {\n return this._translateService.instant(`platform.angular_components.total_records_selected`, {\n count: selected.length,\n });\n } else if (selected.length === 1) {\n return this._getLabelFromOption(selected[0].data);\n }\n } else {\n const selected = this.value();\n return selected ? this._getLabelFromOption(selected.data) : '';\n }\n\n return '';\n });\n\n /**\n * Indica se o seletor está \"limpo\", ou seja, sem nenhum valor selecionado.\n * - No modo múltiplo (`multiple`), retorna `true` se não houver nenhum valor selecionado (`values` está vazio).\n * - No modo simples, retorna `true` se não houver valor selecionado (`value` é falsy).\n * @returns `true` se não houver seleção, `false` caso contrário.\n */\n public isClean = computed(() => {\n return this.multiple() ? !this.values().length : !this.value();\n });\n\n /**\n * Computed que indica se o estado de seleção \"Selecionar Todos\" está indeterminado.\n * Retorna `true` quando nem todos os itens filtrados estão selecionados e nem todos estão desmarcados,\n * ou seja, quando há uma seleção parcial dos itens disponíveis.\n * @returns {boolean} `true` se a seleção for parcial, `false` caso contrário.\n */\n public selectAllIsIndeterminate = computed(() => {\n const selected = this.internalOptions().filter((option) => {\n return this.values().some((o) => o.id === option.id);\n });\n const options = this.filteredOptions().filter((option) => !option.grouper);\n const all = options.length > 0 && options.every((option) => selected.includes(option));\n const none = options.every((option) => !selected.includes(option));\n\n return !all && !none;\n });\n\n /**\n * Retorna uma lista de opções filtradas com base no valor de busca (`filterValue`) e nos critérios definidos.\n * - Se o filtro estiver desabilitado ou o valor de busca estiver vazio, retorna todas as opções.\n * - Caso contrário, filtra as opções utilizando o(s) campo(s) especificado(s) em `filterBy`.\n * - Ignora opções que possuem a propriedade `grouper` definida.\n * @returns As opções filtradas conforme o valor de busca e critérios de filtro.\n */\n public filteredOptions = computed(() => {\n const allOptions = this.internalOptions();\n const search = this.filterValue().toLowerCase().trim();\n\n if (!this.filter() || !search) {\n return allOptions;\n }\n\n const filterBy = this.filterBy();\n return allOptions.filter((option) => {\n if (option.grouper) {\n return false;\n }\n\n let label = '';\n\n const optionLabel = this.optionLabel();\n\n if (!filterBy) {\n label = optionLabel ? String(option.data[optionLabel]) : String(option.data);\n } else if (Array.isArray(filterBy)) {\n label = filterBy.map((by) => String(option.data[by] ?? '')).join(' ');\n } else {\n label = String(option.data[filterBy] ?? '');\n }\n\n return label.toLowerCase().includes(search);\n });\n });\n\n public readonly filterForm = new FormGroup<{ filter: FormControl<string> }>({\n filter: new FormControl<string>('', { nonNullable: true }),\n });\n\n private _containerDiv = viewChild<ElementRef<HTMLDivElement>>('containerDiv');\n private _onChange: (value: any | any[] | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n private readonly _translateService = inject(TranslateService);\n\n constructor() {\n this.filterForm\n .get('filter')!\n .valueChanges.pipe(debounceTime(300), distinctUntilChanged(), takeUntilDestroyed())\n .subscribe((value) => {\n this.filterValue.set(value);\n });\n }\n\n public ngOnInit(): void {\n this._validateInputs();\n }\n\n /**\n * Define o valor selecionado do componente select.\n * @param value O valor a ser definido. Pode ser um objeto do tipo `T`, um array de `T` (quando múltipla seleção está habilitada), ou `null`.\n * @throws Se o modo múltiplo estiver ativado e o valor não for um array, lança um erro.\n * @throws Se o modo múltiplo estiver desativado e o valor for um array, lança um erro.\n * Este método mapeia o(s) valor(es) fornecido(s) para as opções internas do componente,\n * garantindo que apenas opções válidas sejam selecionadas conforme o modo de seleção (único ou múltiplo).\n */\n public writeValue(value: T | T[] | null): void {\n if (value && this.multiple()) {\n if (Array.isArray(value)) {\n const mapped = value\n .map((val) => {\n return this.internalOptions().find((option) => {\n return JSON.stringify(option.data) === JSON.stringify(val);\n });\n })\n .filter((option): option is InternalDropdownOption<T> => !!option);\n\n this.values.set(mapped);\n } else {\n throw new Error('Value must be an array when \"multiple\" is true.');\n }\n } else {\n const optionValue = this.optionValue();\n let mapped: InternalDropdownOption<T> | null = null;\n\n if (Array.isArray(value)) {\n throw new Error('Value must not be an array when \"multiple\" is false.');\n }\n\n if (optionValue && value) {\n mapped =\n this.internalOptions().find((option) => option.data[optionValue] === value[optionValue]) ?? null;\n } else {\n mapped =\n this.internalOptions().find((option) => JSON.stringify(option.data) === JSON.stringify(value)) ??\n null;\n }\n\n this.value.set(mapped ?? null);\n }\n }\n\n /**\n * Registra uma função de callback que será chamada sempre que o valor do componente mudar.\n * @param onChange Função de callback que recebe o novo valor selecionado ou null.\n */\n public registerOnChange(onChange: (value: T | T[] | null) => void): void {\n this._onChange = onChange;\n }\n\n /**\n * Registra uma função de callback que será chamada quando o componente for tocado (perder o foco).\n * @param onTouched Função de callback a ser executada quando o componente for marcado como \"tocado\".\n */\n public registerOnTouched(onTouched: () => void): void {\n this._onTouched = onTouched;\n }\n\n /**\n * Define o estado de desabilitado do componente.\n * @param disabled Indica se o componente deve ser desabilitado (`true`) ou habilitado (`false`).\n */\n public setDisabledState(disabled: boolean): void {\n this.disabled.set(disabled);\n }\n\n /**\n * Alterna a exibição das opções do componente select.\n * Se o componente estiver desabilitado, não realiza nenhuma ação.\n * Caso contrário, inverte o estado de exibição das opções.\n */\n public toggle(): void {\n if (this.disabled()) {\n return;\n }\n\n const shouldOpen = !this.showOptions();\n this.showOptions.set(shouldOpen);\n }\n\n /**\n * Seleciona um item no componente de seleção.\n * @param item O item a ser selecionado ou desmarcado.\n * Se o componente estiver desabilitado, a função retorna imediatamente.\n * No modo múltiplo, adiciona ou remove o item da lista de valores selecionados.\n * No modo simples, define o item como valor selecionado e fecha o dropdown.\n * Sempre notifica as mudanças e marca o componente como tocado.\n */\n public selectItem(item: InternalDropdownOption<T>): void {\n if (this.disabled()) {\n return;\n }\n\n const optionValue = this.optionValue();\n\n if (this.multiple()) {\n const store = [...this.values()];\n const index = store.findIndex((selectedItem) => {\n return selectedItem === item;\n });\n\n if (index !== -1) {\n store.splice(index, 1);\n } else {\n store.push(item);\n }\n\n this.values.set(store);\n const result = optionValue ? store.map((item) => item.data[optionValue]) : store;\n this._onChange(result);\n } else {\n this.value.set(item);\n const result = optionValue ? item.data[optionValue] : item.data;\n this._onChange(result);\n this._closeDropdown();\n }\n\n this._onTouched();\n }\n\n /**\n * Limpa o valor selecionado no componente select.\n * Se o componente estiver desabilitado, não executa nenhuma ação.\n * Para seleção múltipla, remove todos os valores selecionados e notifica a alteração.\n * Para seleção única, define o valor como nulo e notifica a alteração.\n * Fecha o dropdown e marca o componente como \"tocado\".\n * Impede a propagação do evento do mouse.\n * @param event Evento do mouse que acionou a limpeza da seleção.\n */\n public clear(event: MouseEvent): void {\n if (this.disabled()) {\n return;\n }\n\n if (this.multiple()) {\n this.values.set([]);\n this._onChange(this.values());\n } else {\n this.value.set(null);\n this._onChange(this.value());\n }\n\n this._closeDropdown();\n\n this._onTouched();\n event.stopPropagation();\n }\n\n /**\n * Limpa o filtro do formulário, resetando o campo 'filter' do formulário de filtro.\n * Este método redefine o valor do campo 'filter' para seu estado inicial,\n * removendo qualquer texto ou valor previamente inserido pelo usuário.\n */\n public clearFilter(): void {\n this.filterForm.get('filter')?.reset();\n }\n\n /**\n * Manipula o evento de redimensionamento da janela.\n * Fecha o dropdown de opções caso ele esteja visível ao redimensionar a janela.\n * @param _ Evento de redimensionamento da janela (não utilizado).\n */\n public onWindowResize(_: Event): void {\n if (this.showOptions()) {\n this._closeDropdown();\n }\n }\n\n /**\n * Manipula o evento de clique no elemento container da seleção.\n * Este método alterna o estado de exibição do componente select e,\n * em seguida, define o foco no elemento container correspondente.\n */\n public onContainerDivClick(): void {\n this.toggle();\n this._containerDiv()?.nativeElement.focus();\n }\n\n /**\n * Manipula eventos de teclado para navegação e seleção de opções no componente select.\n * - 'ArrowDown': Move o foco para a próxima opção disponível.\n * - 'ArrowUp': Move o foco para a opção anterior.\n * - 'Tab': Seleciona a opção atualmente focada e fecha o dropdown.\n * - 'Enter': Seleciona a opção focada se o dropdown estiver aberto, ou alterna a abertura do dropdown.\n * - 'Escape': Fecha o dropdown.\n * - ' ': (barra de espaço) Seleciona a opção focada se o dropdown estiver aberto, ou alterna a abertura do dropdown.\n * Previne o comportamento padrão do navegador quando necessário para garantir a navegação adequada pelo teclado.\n * @param event O evento de teclado disparado pelo usuário.\n */\n public onKeyDown(event: KeyboardEvent): void {\n const options = this.filteredOptions();\n\n if (!options.length) {\n return;\n }\n\n const _selectOption = () => {\n if (this.focusedIndex() >= 0 && this.focusedIndex() < options.length) {\n event.preventDefault();\n this.selectItem(options[this.focusedIndex()]);\n }\n };\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this._focusNextOption(options);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this._focusPreviousOption(options);\n break;\n case 'Tab':\n _selectOption();\n this._closeDropdown();\n break;\n case 'Enter':\n if (this.showOptions()) {\n _selectOption();\n } else {\n this.toggle();\n }\n break;\n case 'Escape':\n this._closeDropdown();\n break;\n case ' ':\n event.preventDefault();\n if (this.showOptions()) {\n _selectOption();\n } else {\n this.toggle();\n }\n break;\n }\n }\n\n /**\n * Retorna o rótulo (label) associado a uma opção fornecida.\n * @param option - A opção do tipo T para a qual o rótulo deve ser obtido.\n * @returns O rótulo da opção como uma string.\n */\n public getOptionLabel(option: T): string {\n return this._getLabelFromOption(option);\n }\n\n /**\n * Função de trackBy utilizada em diretivas *ngFor para otimizar a renderização de listas.\n * Retorna o identificador único (`id`) de cada item do tipo `InternalDropdownOption<T>`.\n * @param _ - Índice do item na lista (não utilizado).\n * @param item - O item atual da lista do tipo `InternalDropdownOption<T>`.\n * @returns O identificador único do item como uma string.\n */\n public trackById(_: number, item: InternalDropdownOption<T>): string {\n return item.id;\n }\n\n /**\n * Verifica se a opção fornecida está selecionada.\n * @param option - A opção interna do dropdown a ser verificada.\n * @returns `true` se a opção estiver selecionada, caso contrário `false`.\n */\n public isOptionSelected(option: InternalDropdownOption<T>): boolean {\n return (\n this.values().find((o) => {\n return o === option;\n }) !== undefined\n );\n }\n\n /**\n * Alterna a seleção de todos os itens disponíveis.\n * Se o modo múltiplo estiver ativado, seleciona todos os itens filtrados que não são agrupadores\n * caso nem todos estejam selecionados, ou limpa a seleção caso todos já estejam selecionados.\n * Após a alteração, notifica a mudança de valor.\n */\n public toggleSelectAll(): void {\n if (!this.multiple()) {\n return;\n }\n\n const options = this.filteredOptions().filter((option) => !option.grouper);\n\n if (this.allSelected()) {\n this.values.set([]);\n } else {\n this.values.set(options);\n }\n\n this._onChange(this.values());\n }\n\n /**\n * Retorna o rótulo (label) de uma opção fornecida.\n * Este método utiliza a propriedade definida por `optionLabel` para extrair o valor do rótulo da opção.\n * Caso `optionLabel` não esteja definido, retorna a representação em string da própria opção.\n * @private\n * @param option A opção da qual o rótulo será extraído.\n * @returns O rótulo da opção como uma string.\n */\n private _getLabelFromOption(option: T): string {\n const optionLabel = this.optionLabel();\n return optionLabel ? String(option[optionLabel]) : String(option);\n }\n\n /**\n * Valida as entradas do componente de seleção.\n * Este método verifica se as opções fornecidas são válidas. Caso as opções sejam objetos,\n * garante que a propriedade `optionLabel` esteja definida, lançando um erro caso contrário.\n * Se não houver opções, a validação é ignorada.\n * @private\n * @throws {Error} Se as opções forem objetos e `optionLabel` não estiver definido.\n */\n private _validateInputs(): void {\n const options = this.options();\n\n if (!options.length) {\n return;\n }\n\n const hasObjectOptions = options.some((option) => typeof option === 'object' && option !== null);\n\n if (hasObjectOptions) {\n if (!this.optionLabel()) {\n throw new Error('The \"optionLabel\" input is required when options are objects.');\n }\n }\n }\n\n /**\n * Fecha o dropdown de opções do componente select.\n * Este método oculta as opções disponíveis e redefine o índice do item focado para -1,\n * indicando que nenhum item está atualmente focado.\n * @private\n */\n private _closeDropdown(): void {\n this.showOptions.set(false);\n this.focusedIndex.set(-1);\n }\n\n /**\n * Adiciona um identificador único a cada opção fornecida.\n * Para cada item no array de opções, gera um objeto `InternalDropdownOption` contendo o dado original\n * e um campo `id` único baseado no timestamp atual e no índice do item. Caso a opção seja um grupo\n * (detectado pela presença de um array `items`), adiciona também a propriedade `grouper: true`.\n * @private\n * @param options Array de opções do tipo `T` a serem processadas.\n * @returns Um array de objetos `InternalDropdownOption<T>` com identificadores únicos.\n */\n private _addIdToOptions(options: T[]): InternalDropdownOption<T>[] {\n const timestamp = Date.now();\n\n return options.map((option, index) => {\n if (this.group() && Array.isArray((option as any).items)) {\n return {\n data: option,\n id: `id_${timestamp}_${index++}`,\n grouper: true,\n };\n }\n\n return {\n data: option,\n id: `id_${timestamp}_${index++}`,\n };\n });\n }\n\n /**\n * Converte uma lista de opções possivelmente agrupadas em uma lista plana de opções.\n * Para cada opção que possui um agrupador (`grouper`) e um array de itens em `data.items`,\n * adiciona a opção do agrupador e, em seguida, adiciona cada item do grupo como uma nova opção\n * individual, atribuindo um `id` único para cada item do grupo.\n * Caso a opção não seja um agrupador, ela é adicionada diretamente ao resultado.\n * @private\n * @param options Lista de opções internas do dropdown, podendo conter agrupadores.\n * @returns Lista plana de opções, incluindo agrupadores e seus itens expandidos.\n */\n private _grouperToFlat(options: InternalDropdownOption<T>[]): InternalDropdownOption<T>[] {\n const result: InternalDropdownOption<T>[] = [];\n\n options.forEach((option) => {\n if (option.grouper && Array.isArray((option.data as any).items)) {\n result.push(option);\n const groupItems = (option.data as any).items.map((item: T, index: number) => ({\n data: item,\n id: `${option.id}_item_${index}`,\n }));\n result.push(...groupItems);\n } else {\n result.push(option);\n }\n });\n\n return result;\n }\n\n /**\n * Move o foco para a próxima opção disponível na lista, ignorando opções que sejam agrupadores.\n * @private\n * @param options Lista de opções internas do dropdown.\n */\n private _focusNextOption(options: InternalDropdownOption<T>[]) {\n let nextIndex = this.focusedIndex() + 1;\n\n while (nextIndex < options.length && options[nextIndex].grouper) {\n nextIndex++;\n }\n\n if (nextIndex < options.length) {\n this.focusedIndex.set(nextIndex);\n this._scrollToFocusedOption();\n }\n }\n\n /**\n * Move o foco para a opção anterior na lista, ignorando opções do tipo \"grouper\".\n * @private\n * @param options Lista de opções internas do dropdown.\n */\n private _focusPreviousOption(options: InternalDropdownOption<T>[]) {\n let prevIndex = this.focusedIndex() - 1;\n\n while (prevIndex >= 0 && options[prevIndex].grouper) {\n prevIndex--;\n }\n\n if (prevIndex >= 0) {\n this.focusedIndex.set(prevIndex);\n this._scrollToFocusedOption();\n }\n }\n\n /**\n * Rola a lista de opções para garantir que a opção atualmente focada esteja visível.\n * Este método obtém o ID da opção atualmente focada a partir da lista de opções filtradas.\n * Se um ID válido for encontrado, busca o elemento correspondente no DOM e utiliza\n * `scrollIntoView` para rolar até a opção, alinhando-a ao bloco mais próximo.\n * @private\n */\n private _scrollToFocusedOption() {\n const id = this.filteredOptions()[this.focusedIndex()]?.id;\n\n if (!id) {\n return;\n }\n\n const el = document.getElementById(id);\n el?.scrollIntoView({ block: 'nearest' });\n }\n}\n","<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"select-container group flex h-[35px] w-full overflow-hidden rounded-[3px] border outline-1 outline-primary focus:outline\"\n [ngClass]=\"{\n 'pointer-events-none border-grayscale-20 bg-grayscale-5': disabled(),\n 'pointer-events-auto border-grayscale-30 bg-grayscale-0': !disabled(),\n }\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-expanded]=\"showOptions()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-owns]=\"'dropdown-container-' + componentId\"\n [attr.aria-labelledby]=\"componentId + '-label'\"\n role=\"combobox\"\n (click)=\"onContainerDivClick()\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"0\"\n>\n <span\n class=\"flex flex-grow select-none px-3 py-[7px]\"\n [ngClass]=\"{\n 'text-grayscale-90': !disabled() && !isClean(),\n 'text-grayscale-60': !disabled() && isClean(),\n 'text-grayscale-30': disabled(),\n }\"\n >\n {{ print() || placeholder() }}\n </span>\n\n @if (!disabled() && showClear() && !isClean()) {\n <button\n class=\"mx-3\"\n (click)=\"clear($event)\"\n >\n <i class=\"fas fa-times flex items-center\"></i>\n </button>\n }\n\n <div\n class=\"dropdown-container flex items-center border-l px-3 group-hover:bg-grayscale-10 group-focus:border-primary\"\n [ngClass]=\"{ 'border-grayscale-20': disabled(), 'border-grayscale-30': !disabled() }\"\n >\n <i\n class=\"fas\"\n [ngClass]=\"{\n 'text-grayscale-30': disabled(),\n 'text-grayscale-90': !disabled(),\n 'fa-caret-down': !showOptions(),\n 'fa-caret-up': showOptions(),\n }\"\n ></i>\n </div>\n</div>\n\n<ng-template\n #dropdownTemplate\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"showOptions()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n (backdropClick)=\"showOptions.set(false)\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (detach)=\"showOptions.set(false)\"\n>\n <div\n [id]=\"'dropdown-container-' + componentId\"\n class=\"dropdown-body-class z-[1000] rounded-[3px] bg-grayscale-0 py-1 shadow-md\"\n (click)=\"$event.stopPropagation()\"\n [style.width.px]=\"containerDiv.offsetWidth\"\n >\n @if (filter()) {\n <div class=\"flex w-full items-center gap-3 px-3 py-1.5\">\n @if (multiple()) {\n <s-checkbox\n #selectAllCheckbox\n [checked]=\"allSelected()\"\n [indeterminate]=\"selectAllIsIndeterminate()\"\n (checkedChange)=\"toggleSelectAll()\"\n ></s-checkbox>\n }\n\n <div class=\"relative flex h-[35px] grow\">\n <form\n class=\"flex grow\"\n [formGroup]=\"filterForm\"\n >\n <input\n class=\"w-full grow rounded-[3px] border border-grayscale-30 pl-2.5 pr-7 outline-1 outline-primary\"\n type=\"text\"\n formControlName=\"filter\"\n (click)=\"$event.stopPropagation()\"\n />\n </form>\n <i class=\"fas fa-search absolute right-2.5 top-2.5 text-grayscale-90\"></i>\n </div>\n <button (click)=\"clearFilter()\">\n <i class=\"fas fa-times flex items-center\"></i>\n </button>\n </div>\n }\n\n <!-- Virtual scroll -->\n @if (virtualScroll() && filteredOptions().length > 10) {\n <cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize()\"\n class=\"h-52 overflow-auto\"\n >\n <ng-container *cdkVirtualFor=\"let option of filteredOptions(); trackBy: trackById\">\n <s-select-option\n [id]=\"option.id\"\n [label]=\"getOptionLabel(option.data)\"\n [multiple]=\"multiple()\"\n [checkmark]=\"checkmark()\"\n [isSelected]=\"isOptionSelected(option)\"\n (selected)=\"selectItem(option)\"\n [isGrouper]=\"option.grouper\"\n [isFocused]=\"option.data === focusedItem()\"\n ></s-select-option>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n\n <!-- Normal list -->\n @if (!virtualScroll() || filteredOptions().length <= 10) {\n <ul class=\"max-h-52 overflow-auto\">\n @for (option of filteredOptions(); track option.id) {\n <s-select-option\n [id]=\"option.id\"\n [label]=\"getOptionLabel(option.data)\"\n [multiple]=\"multiple()\"\n [checkmark]=\"checkmark()\"\n [isSelected]=\"isOptionSelected(option)\"\n (selected)=\"selectItem(option)\"\n [isGrouper]=\"option.grouper ?? false\"\n [isFocused]=\"option.data === focusedItem()\"\n ></s-select-option>\n }\n </ul>\n }\n\n @if (filteredOptions().length === 0) {\n <span class=\"m-3 text-grayscale-60\">{{\n emptyMessage() ?? 'platform.angular_components.no_records_found' | translate\n }}</span>\n }\n </div>\n</ng-template>\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":"seniorsistemas-angular-components-select.mjs","sources":["../../projects/angular-components/select/src/lib/select/components/select-option/select-option.component.ts","../../projects/angular-components/select/src/lib/select/components/select-option/select-option.component.html","../../projects/angular-components/select/src/lib/select/select.component.ts","../../projects/angular-components/select/src/lib/select/select.component.html","../../projects/angular-components/select/src/seniorsistemas-angular-components-select.ts"],"sourcesContent":["import { Component, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CheckboxComponent } from '@seniorsistemas/angular-components/checkbox';\n\n@Component({\n selector: 's-select-option',\n templateUrl: './select-option.component.html',\n standalone: true,\n imports: [CommonModule, CheckboxComponent],\n})\nexport class SelectOptionComponent {\n public id = input.required<string>();\n public label = input.required<string>();\n public multiple = input.required<boolean>();\n public checkmark = input.required<boolean>();\n public isGrouper = input.required<boolean>();\n public isFocused = input.required<boolean>();\n\n public isSelected = model.required<boolean>();\n\n public selected = output();\n\n public onClick(): void {\n if (this.isGrouper()) {\n return;\n }\n\n this.selected.emit();\n }\n}\n","<li\n [attr.id]=\"id()\"\n class=\"flex select-none items-center gap-3 px-3 py-2\"\n [class.hover:bg-grayscale-10]=\"!isGrouper()\"\n [class.bg-grayscale-10]=\"!isGrouper() && isFocused()\"\n (click)=\"onClick()\"\n>\n @if (!isGrouper() && checkmark() && !multiple() && isSelected()) {\n <i class=\"far fa-check text-grayscale-60\"></i>\n }\n\n @if (!isGrouper() && multiple()) {\n <s-checkbox [checked]=\"isSelected()\"></s-checkbox>\n }\n <span\n class=\"text-grayscale-90\"\n [class.font-bold]=\"isGrouper()\"\n >\n {{ label() }}\n </span>\n</li>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n OnInit,\n signal,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CheckboxComponent } from '@seniorsistemas/angular-components/checkbox';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { SelectOptionComponent } from './components/select-option/select-option.component';\n\ninterface InternalDropdownOption<T> {\n data: T;\n id: string;\n grouper?: boolean;\n}\n@Component({\n selector: 's-select',\n templateUrl: './select.component.html',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ScrollingModule,\n SelectOptionComponent,\n CheckboxComponent,\n TranslateModule,\n OverlayModule,\n ],\n host: {\n '(window:resize)': 'onWindowResize($event)',\n '[attr.aria-expanded]': 'showOptions()',\n '[attr.aria-haspopup]': '\"listbox\"',\n '[attr.aria-owns]': 'showOptions() ? componentId + \"-listbox\" : null',\n '[attr.aria-activedescendant]': 'focusedIndex() >= 0 ? filteredOptions()[focusedIndex()]?.id : null',\n '[attr.aria-label]': 'placeholder() || \"Select option\"',\n '[attr.aria-disabled]': 'disabled()',\n role: 'combobox',\n },\n styles: [\n `\n :host.ng-dirty.ng-invalid {\n .dropdown-container,\n .select-container {\n border-color: #c13018;\n outline: none;\n }\n }\n `,\n ],\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n})\nexport class SelectComponent<T> implements ControlValueAccessor, OnInit {\n private static nextId = 0;\n\n public placeholder = input('');\n public multiple = input(false);\n public options = input.required<T[]>();\n public optionLabel = input<keyof T>();\n public optionValue = input<keyof T>();\n public showClear = input(false);\n public filter = input(false);\n public checkmark = input(false);\n public filterBy = input<keyof T | (keyof T)[]>();\n public group = input(false);\n public virtualScroll = input(false);\n public virtualScrollItemSize = input(37);\n public emptyMessage = input<string | null>(null);\n\n public disabled = model(false);\n public showOptions = model(false);\n\n public value = signal<InternalDropdownOption<T> | null>(null);\n public values = signal<InternalDropdownOption<T>[]>([]);\n public filterValue = signal('');\n public focusedIndex = signal(-1);\n\n public componentId = `select${SelectComponent.nextId++}`;\n\n /**\n * Computed que indica se todas as opções filtradas estão selecionadas.\n * Retorna `true` se todas as opções disponíveis (excluindo agrupadores) estiverem presentes\n * na lista de valores selecionados, e `false` caso contrário.\n * @returns {boolean} `true` se todas as opções filtradas estão selecionadas, `false` caso contrário.\n */\n public allSelected = computed(() => {\n const options = this.filteredOptions().filter((option) => !option.grouper);\n const selectedIds = this.values().map((option) => option.id);\n\n const ret = options.length > 0 && options.every((option) => selectedIds.includes(option.id));\n return ret;\n });\n\n /**\n * Retorna o item atualmente focado na lista de opções filtradas.\n * @returns O dado do item focado ou `null` caso nenhum item esteja focado.\n */\n public focusedItem = computed(() => this.filteredOptions().at(this.focusedIndex())?.data ?? null);\n\n /**\n * Computa e retorna a lista interna de opções do dropdown.\n * - Se as opções estiverem agrupadas (`group()` retorna verdadeiro),\n * utiliza `_grouperToFlat` para transformar as opções agrupadas em uma lista plana.\n * - Caso contrário, retorna as opções com IDs adicionados.\n * @returns Um array de `InternalDropdownOption<T>` representando as opções disponíveis para o componente select.\n */\n public internalOptions = computed<InternalDropdownOption<T>[]>(() => {\n const opts = this.options();\n const optionsWithId = this._addIdToOptions(opts);\n return this.group() ? this._grouperToFlat(optionsWithId) : optionsWithId;\n });\n\n /**\n * Retorna uma string representando a seleção atual do componente.\n * - Se o modo múltiplo estiver ativado e mais de um item estiver selecionado,\n * retorna uma mensagem traduzida indicando o número total de registros selecionados.\n * - Se apenas um item estiver selecionado, retorna o rótulo desse item.\n * - Se o modo múltiplo não estiver ativado, retorna o rótulo do item selecionado ou uma string vazia caso nenhum item esteja selecionado.\n * @returns {string} Texto representando a seleção atual.\n */\n public print = computed(() => {\n if (this.multiple()) {\n const selected = this.values();\n if (selected.length > 1) {\n return this._translateService.instant(`platform.angular_components.total_records_selected`, {\n count: selected.length,\n });\n } else if (selected.length === 1) {\n return this._getLabelFromOption(selected[0].data);\n }\n } else {\n const selected = this.value();\n return selected ? this._getLabelFromOption(selected.data) : '';\n }\n\n return '';\n });\n\n /**\n * Indica se o seletor está \"limpo\", ou seja, sem nenhum valor selecionado.\n * - No modo múltiplo (`multiple`), retorna `true` se não houver nenhum valor selecionado (`values` está vazio).\n * - No modo simples, retorna `true` se não houver valor selecionado (`value` é falsy).\n * @returns `true` se não houver seleção, `false` caso contrário.\n */\n public isClean = computed(() => {\n return this.multiple() ? !this.values().length : !this.value();\n });\n\n /**\n * Computed que indica se o estado de seleção \"Selecionar Todos\" está indeterminado.\n * Retorna `true` quando nem todos os itens filtrados estão selecionados e nem todos estão desmarcados,\n * ou seja, quando há uma seleção parcial dos itens disponíveis.\n * @returns {boolean} `true` se a seleção for parcial, `false` caso contrário.\n */\n public selectAllIsIndeterminate = computed(() => {\n const selected = this.internalOptions().filter((option) => {\n return this.values().some((o) => o.id === option.id);\n });\n const options = this.filteredOptions().filter((option) => !option.grouper);\n const all = options.length > 0 && options.every((option) => selected.includes(option));\n const none = options.every((option) => !selected.includes(option));\n\n return !all && !none;\n });\n\n /**\n * Retorna uma lista de opções filtradas com base no valor de busca (`filterValue`) e nos critérios definidos.\n * - Se o filtro estiver desabilitado ou o valor de busca estiver vazio, retorna todas as opções.\n * - Caso contrário, filtra as opções utilizando o(s) campo(s) especificado(s) em `filterBy`.\n * - Ignora opções que possuem a propriedade `grouper` definida.\n * @returns As opções filtradas conforme o valor de busca e critérios de filtro.\n */\n public filteredOptions = computed(() => {\n const allOptions = this.internalOptions();\n const search = this.filterValue().toLowerCase().trim();\n\n if (!this.filter() || !search) {\n return allOptions;\n }\n\n const filterBy = this.filterBy();\n return allOptions.filter((option) => {\n if (option.grouper) {\n return false;\n }\n\n let label = '';\n\n const optionLabel = this.optionLabel();\n\n if (!filterBy) {\n label = optionLabel ? String(option.data[optionLabel]) : String(option.data);\n } else if (Array.isArray(filterBy)) {\n label = filterBy.map((by) => String(option.data[by] ?? '')).join(' ');\n } else {\n label = String(option.data[filterBy] ?? '');\n }\n\n return label.toLowerCase().includes(search);\n });\n });\n\n public readonly filterForm = new FormGroup<{ filter: FormControl<string> }>({\n filter: new FormControl<string>('', { nonNullable: true }),\n });\n\n private _containerDiv = viewChild<ElementRef<HTMLDivElement>>('containerDiv');\n private _onChange: (value: any | any[] | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n private readonly _translateService = inject(TranslateService);\n\n constructor() {\n this.filterForm\n .get('filter')!\n .valueChanges.pipe(debounceTime(300), distinctUntilChanged(), takeUntilDestroyed())\n .subscribe((value) => {\n this.filterValue.set(value);\n });\n }\n\n public ngOnInit(): void {\n this._validateInputs();\n }\n\n /**\n * Define o valor selecionado do componente select.\n * @param value O valor a ser definido. Pode ser um objeto do tipo `T`, um array de `T` (quando múltipla seleção está habilitada), ou `null`.\n * @throws Se o modo múltiplo estiver ativado e o valor não for um array, lança um erro.\n * @throws Se o modo múltiplo estiver desativado e o valor for um array, lança um erro.\n * Este método mapeia o(s) valor(es) fornecido(s) para as opções internas do componente,\n * garantindo que apenas opções válidas sejam selecionadas conforme o modo de seleção (único ou múltiplo).\n */\n public writeValue(value: T | T[] | null): void {\n if (value && this.multiple()) {\n if (Array.isArray(value)) {\n const mapped = value\n .map((val) => {\n return this.internalOptions().find((option) => {\n return JSON.stringify(option.data) === JSON.stringify(val);\n });\n })\n .filter((option): option is InternalDropdownOption<T> => !!option);\n\n this.values.set(mapped);\n } else {\n throw new Error('Value must be an array when \"multiple\" is true.');\n }\n } else {\n const optionValue = this.optionValue();\n let mapped: InternalDropdownOption<T> | null = null;\n\n if (Array.isArray(value)) {\n throw new Error('Value must not be an array when \"multiple\" is false.');\n }\n\n if (optionValue && value) {\n mapped =\n this.internalOptions().find((option) => option.data[optionValue] === value[optionValue]) ?? null;\n } else {\n mapped =\n this.internalOptions().find((option) => JSON.stringify(option.data) === JSON.stringify(value)) ??\n null;\n }\n\n this.value.set(mapped ?? null);\n }\n }\n\n /**\n * Registra uma função de callback que será chamada sempre que o valor do componente mudar.\n * @param onChange Função de callback que recebe o novo valor selecionado ou null.\n */\n public registerOnChange(onChange: (value: T | T[] | null) => void): void {\n this._onChange = onChange;\n }\n\n /**\n * Registra uma função de callback que será chamada quando o componente for tocado (perder o foco).\n * @param onTouched Função de callback a ser executada quando o componente for marcado como \"tocado\".\n */\n public registerOnTouched(onTouched: () => void): void {\n this._onTouched = onTouched;\n }\n\n /**\n * Define o estado de desabilitado do componente.\n * @param disabled Indica se o componente deve ser desabilitado (`true`) ou habilitado (`false`).\n */\n public setDisabledState(disabled: boolean): void {\n this.disabled.set(disabled);\n }\n\n /**\n * Alterna a exibição das opções do componente select.\n * Se o componente estiver desabilitado, não realiza nenhuma ação.\n * Caso contrário, inverte o estado de exibição das opções.\n */\n public toggle(): void {\n if (this.disabled()) {\n return;\n }\n\n const shouldOpen = !this.showOptions();\n this.showOptions.set(shouldOpen);\n }\n\n /**\n * Seleciona um item no componente de seleção.\n * @param item O item a ser selecionado ou desmarcado.\n * Se o componente estiver desabilitado, a função retorna imediatamente.\n * No modo múltiplo, adiciona ou remove o item da lista de valores selecionados.\n * No modo simples, define o item como valor selecionado e fecha o dropdown.\n * Sempre notifica as mudanças e marca o componente como tocado.\n */\n public selectItem(item: InternalDropdownOption<T>): void {\n if (this.disabled()) {\n return;\n }\n\n const optionValue = this.optionValue();\n\n if (this.multiple()) {\n const store = [...this.values()];\n const index = store.findIndex((selectedItem) => {\n return selectedItem === item;\n });\n\n if (index !== -1) {\n store.splice(index, 1);\n } else {\n store.push(item);\n }\n\n this.values.set(store);\n const result = optionValue ? store.map((item) => item.data[optionValue]) : store;\n this._onChange(result);\n } else {\n this.value.set(item);\n const result = optionValue ? item.data[optionValue] : item.data;\n this._onChange(result);\n this._closeDropdown();\n }\n\n this._onTouched();\n }\n\n /**\n * Limpa o valor selecionado no componente select.\n * Se o componente estiver desabilitado, não executa nenhuma ação.\n * Para seleção múltipla, remove todos os valores selecionados e notifica a alteração.\n * Para seleção única, define o valor como nulo e notifica a alteração.\n * Fecha o dropdown e marca o componente como \"tocado\".\n * Impede a propagação do evento do mouse.\n * @param event Evento do mouse que acionou a limpeza da seleção.\n */\n public clear(event: MouseEvent): void {\n if (this.disabled()) {\n return;\n }\n\n if (this.multiple()) {\n this.values.set([]);\n this._onChange(this.values());\n } else {\n this.value.set(null);\n this._onChange(this.value());\n }\n\n this._closeDropdown();\n\n this._onTouched();\n event.stopPropagation();\n }\n\n /**\n * Limpa o filtro do formulário, resetando o campo 'filter' do formulário de filtro.\n * Este método redefine o valor do campo 'filter' para seu estado inicial,\n * removendo qualquer texto ou valor previamente inserido pelo usuário.\n */\n public clearFilter(): void {\n this.filterForm.get('filter')?.reset();\n }\n\n /**\n * Manipula o evento de redimensionamento da janela.\n * Fecha o dropdown de opções caso ele esteja visível ao redimensionar a janela.\n * @param _ Evento de redimensionamento da janela (não utilizado).\n */\n public onWindowResize(_: Event): void {\n if (this.showOptions()) {\n this._closeDropdown();\n }\n }\n\n /**\n * Manipula o evento de clique no elemento container da seleção.\n * Este método alterna o estado de exibição do componente select e,\n * em seguida, define o foco no elemento container correspondente.\n */\n public onContainerDivClick(): void {\n this.toggle();\n this._containerDiv()?.nativeElement.focus();\n }\n\n /**\n * Manipula eventos de teclado para navegação e seleção de opções no componente select.\n * - 'ArrowDown': Move o foco para a próxima opção disponível.\n * - 'ArrowUp': Move o foco para a opção anterior.\n * - 'Tab': Seleciona a opção atualmente focada e fecha o dropdown.\n * - 'Enter': Seleciona a opção focada se o dropdown estiver aberto, ou alterna a abertura do dropdown.\n * - 'Escape': Fecha o dropdown.\n * - ' ': (barra de espaço) Seleciona a opção focada se o dropdown estiver aberto, ou alterna a abertura do dropdown.\n * Previne o comportamento padrão do navegador quando necessário para garantir a navegação adequada pelo teclado.\n * @param event O evento de teclado disparado pelo usuário.\n */\n public onKeyDown(event: KeyboardEvent): void {\n const options = this.filteredOptions();\n\n if (!options.length) {\n return;\n }\n\n const _selectOption = () => {\n if (this.focusedIndex() >= 0 && this.focusedIndex() < options.length) {\n event.preventDefault();\n this.selectItem(options[this.focusedIndex()]);\n }\n };\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this._focusNextOption(options);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this._focusPreviousOption(options);\n break;\n case 'Tab':\n _selectOption();\n this._closeDropdown();\n break;\n case 'Enter':\n if (this.showOptions()) {\n _selectOption();\n } else {\n this.toggle();\n }\n break;\n case 'Escape':\n this._closeDropdown();\n break;\n case ' ':\n event.preventDefault();\n if (this.showOptions()) {\n _selectOption();\n } else {\n this.toggle();\n }\n break;\n }\n }\n\n /**\n * Retorna o rótulo (label) associado a uma opção fornecida.\n * @param option - A opção do tipo T para a qual o rótulo deve ser obtido.\n * @returns O rótulo da opção como uma string.\n */\n public getOptionLabel(option: T): string {\n return this._getLabelFromOption(option);\n }\n\n /**\n * Função de trackBy utilizada em diretivas *ngFor para otimizar a renderização de listas.\n * Retorna o identificador único (`id`) de cada item do tipo `InternalDropdownOption<T>`.\n * @param _ - Índice do item na lista (não utilizado).\n * @param item - O item atual da lista do tipo `InternalDropdownOption<T>`.\n * @returns O identificador único do item como uma string.\n */\n public trackById(_: number, item: InternalDropdownOption<T>): string {\n return item.id;\n }\n\n /**\n * Verifica se a opção fornecida está selecionada.\n * @param option - A opção interna do dropdown a ser verificada.\n * @returns `true` se a opção estiver selecionada, caso contrário `false`.\n */\n public isOptionSelected(option: InternalDropdownOption<T>): boolean {\n return (\n this.values().find((o) => {\n return o === option;\n }) !== undefined\n );\n }\n\n /**\n * Alterna a seleção de todos os itens disponíveis.\n * Se o modo múltiplo estiver ativado, seleciona todos os itens filtrados que não são agrupadores\n * caso nem todos estejam selecionados, ou limpa a seleção caso todos já estejam selecionados.\n * Após a alteração, notifica a mudança de valor.\n */\n public toggleSelectAll(): void {\n if (!this.multiple()) {\n return;\n }\n\n const options = this.filteredOptions().filter((option) => !option.grouper);\n\n if (this.allSelected()) {\n this.values.set([]);\n } else {\n this.values.set(options);\n }\n\n this._onChange(this.values());\n }\n\n /**\n * Retorna o rótulo (label) de uma opção fornecida.\n * Este método utiliza a propriedade definida por `optionLabel` para extrair o valor do rótulo da opção.\n * Caso `optionLabel` não esteja definido, retorna a representação em string da própria opção.\n * @private\n * @param option A opção da qual o rótulo será extraído.\n * @returns O rótulo da opção como uma string.\n */\n private _getLabelFromOption(option: T): string {\n const optionLabel = this.optionLabel();\n return optionLabel ? String(option[optionLabel]) : String(option);\n }\n\n /**\n * Valida as entradas do componente de seleção.\n * Este método verifica se as opções fornecidas são válidas. Caso as opções sejam objetos,\n * garante que a propriedade `optionLabel` esteja definida, lançando um erro caso contrário.\n * Se não houver opções, a validação é ignorada.\n * @private\n * @throws {Error} Se as opções forem objetos e `optionLabel` não estiver definido.\n */\n private _validateInputs(): void {\n const options = this.options();\n\n if (!options.length) {\n return;\n }\n\n const hasObjectOptions = options.some((option) => typeof option === 'object' && option !== null);\n\n if (hasObjectOptions) {\n if (!this.optionLabel()) {\n throw new Error('The \"optionLabel\" input is required when options are objects.');\n }\n }\n }\n\n /**\n * Fecha o dropdown de opções do componente select.\n * Este método oculta as opções disponíveis e redefine o índice do item focado para -1,\n * indicando que nenhum item está atualmente focado.\n * @private\n */\n private _closeDropdown(): void {\n this.showOptions.set(false);\n this.focusedIndex.set(-1);\n }\n\n /**\n * Adiciona um identificador único a cada opção fornecida.\n * Para cada item no array de opções, gera um objeto `InternalDropdownOption` contendo o dado original\n * e um campo `id` único baseado no timestamp atual e no índice do item. Caso a opção seja um grupo\n * (detectado pela presença de um array `items`), adiciona também a propriedade `grouper: true`.\n * @private\n * @param options Array de opções do tipo `T` a serem processadas.\n * @returns Um array de objetos `InternalDropdownOption<T>` com identificadores únicos.\n */\n private _addIdToOptions(options: T[]): InternalDropdownOption<T>[] {\n const timestamp = Date.now();\n\n return options.map((option, index) => {\n if (this.group() && Array.isArray((option as any).items)) {\n return {\n data: option,\n id: `id_${timestamp}_${index++}`,\n grouper: true,\n };\n }\n\n return {\n data: option,\n id: `id_${timestamp}_${index++}`,\n };\n });\n }\n\n /**\n * Converte uma lista de opções possivelmente agrupadas em uma lista plana de opções.\n * Para cada opção que possui um agrupador (`grouper`) e um array de itens em `data.items`,\n * adiciona a opção do agrupador e, em seguida, adiciona cada item do grupo como uma nova opção\n * individual, atribuindo um `id` único para cada item do grupo.\n * Caso a opção não seja um agrupador, ela é adicionada diretamente ao resultado.\n * @private\n * @param options Lista de opções internas do dropdown, podendo conter agrupadores.\n * @returns Lista plana de opções, incluindo agrupadores e seus itens expandidos.\n */\n private _grouperToFlat(options: InternalDropdownOption<T>[]): InternalDropdownOption<T>[] {\n const result: InternalDropdownOption<T>[] = [];\n\n options.forEach((option) => {\n if (option.grouper && Array.isArray((option.data as any).items)) {\n result.push(option);\n const groupItems = (option.data as any).items.map((item: T, index: number) => ({\n data: item,\n id: `${option.id}_item_${index}`,\n }));\n result.push(...groupItems);\n } else {\n result.push(option);\n }\n });\n\n return result;\n }\n\n /**\n * Move o foco para a próxima opção disponível na lista, ignorando opções que sejam agrupadores.\n * @private\n * @param options Lista de opções internas do dropdown.\n */\n private _focusNextOption(options: InternalDropdownOption<T>[]) {\n let nextIndex = this.focusedIndex() + 1;\n\n while (nextIndex < options.length && options[nextIndex].grouper) {\n nextIndex++;\n }\n\n if (nextIndex < options.length) {\n this.focusedIndex.set(nextIndex);\n this._scrollToFocusedOption();\n }\n }\n\n /**\n * Move o foco para a opção anterior na lista, ignorando opções do tipo \"grouper\".\n * @private\n * @param options Lista de opções internas do dropdown.\n */\n private _focusPreviousOption(options: InternalDropdownOption<T>[]) {\n let prevIndex = this.focusedIndex() - 1;\n\n while (prevIndex >= 0 && options[prevIndex].grouper) {\n prevIndex--;\n }\n\n if (prevIndex >= 0) {\n this.focusedIndex.set(prevIndex);\n this._scrollToFocusedOption();\n }\n }\n\n /**\n * Rola a lista de opções para garantir que a opção atualmente focada esteja visível.\n * Este método obtém o ID da opção atualmente focada a partir da lista de opções filtradas.\n * Se um ID válido for encontrado, busca o elemento correspondente no DOM e utiliza\n * `scrollIntoView` para rolar até a opção, alinhando-a ao bloco mais próximo.\n * @private\n */\n private _scrollToFocusedOption() {\n const id = this.filteredOptions()[this.focusedIndex()]?.id;\n\n if (!id) {\n return;\n }\n\n const el = document.getElementById(id);\n el?.scrollIntoView({ block: 'nearest' });\n }\n}\n","<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"select-container group flex h-[35px] w-full overflow-hidden rounded-[3px] border outline-1 outline-primary focus:outline\"\n [ngClass]=\"{\n 'pointer-events-none border-grayscale-20 bg-grayscale-5': disabled(),\n 'pointer-events-auto border-grayscale-30 bg-grayscale-0': !disabled(),\n }\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-expanded]=\"showOptions()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-owns]=\"'dropdown-container-' + componentId\"\n [attr.aria-labelledby]=\"componentId + '-label'\"\n role=\"combobox\"\n (click)=\"onContainerDivClick()\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"0\"\n>\n <span\n class=\"flex flex-grow select-none px-3 py-[7px]\"\n [ngClass]=\"{\n 'text-grayscale-90': !disabled() && !isClean(),\n 'text-grayscale-60': !disabled() && isClean(),\n 'text-grayscale-30': disabled(),\n }\"\n >\n {{ print() || placeholder() }}\n </span>\n\n @if (!disabled() && showClear() && !isClean()) {\n <button\n class=\"mx-3\"\n (click)=\"clear($event)\"\n >\n <i class=\"fas fa-times flex items-center\"></i>\n </button>\n }\n\n <div\n class=\"dropdown-container flex items-center border-l px-3 group-hover:bg-grayscale-10 group-focus:border-primary\"\n [ngClass]=\"{ 'border-grayscale-20': disabled(), 'border-grayscale-30': !disabled() }\"\n >\n <i\n class=\"fas\"\n [ngClass]=\"{\n 'text-grayscale-30': disabled(),\n 'text-grayscale-90': !disabled(),\n 'fa-caret-down': !showOptions(),\n 'fa-caret-up': showOptions(),\n }\"\n ></i>\n </div>\n</div>\n\n<ng-template\n #dropdownTemplate\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"showOptions()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n (backdropClick)=\"showOptions.set(false)\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (detach)=\"showOptions.set(false)\"\n>\n <div\n [id]=\"'dropdown-container-' + componentId\"\n class=\"dropdown-body-class z-[1000] rounded-[3px] bg-grayscale-0 py-1 shadow-md\"\n (click)=\"$event.stopPropagation()\"\n [style.width.px]=\"containerDiv.offsetWidth\"\n >\n @if (filter()) {\n <div class=\"flex w-full items-center gap-3 px-3 py-1.5\">\n @if (multiple()) {\n <s-checkbox\n #selectAllCheckbox\n [checked]=\"allSelected()\"\n [indeterminate]=\"selectAllIsIndeterminate()\"\n (checkedChange)=\"toggleSelectAll()\"\n ></s-checkbox>\n }\n\n <div class=\"relative flex h-[35px] grow\">\n <form\n class=\"flex grow\"\n [formGroup]=\"filterForm\"\n >\n <input\n class=\"w-full grow rounded-[3px] border border-grayscale-30 pl-2.5 pr-7 outline-1 outline-primary\"\n type=\"text\"\n formControlName=\"filter\"\n (click)=\"$event.stopPropagation()\"\n />\n </form>\n <i class=\"fas fa-search absolute right-2.5 top-2.5 text-grayscale-90\"></i>\n </div>\n <button (click)=\"clearFilter()\">\n <i class=\"fas fa-times flex items-center\"></i>\n </button>\n </div>\n }\n\n <!-- Virtual scroll -->\n @if (virtualScroll() && filteredOptions().length > 10) {\n <cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize()\"\n class=\"h-52 overflow-auto\"\n >\n <ng-container *cdkVirtualFor=\"let option of filteredOptions(); trackBy: trackById\">\n <s-select-option\n [id]=\"option.id\"\n [label]=\"getOptionLabel(option.data)\"\n [multiple]=\"multiple()\"\n [checkmark]=\"checkmark()\"\n [isSelected]=\"isOptionSelected(option)\"\n (selected)=\"selectItem(option)\"\n [isGrouper]=\"option.grouper\"\n [isFocused]=\"option.data === focusedItem()\"\n ></s-select-option>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n\n <!-- Normal list -->\n @if (!virtualScroll() || filteredOptions().length <= 10) {\n <ul class=\"max-h-52 overflow-auto\">\n @for (option of filteredOptions(); track option.id) {\n <s-select-option\n [id]=\"option.id\"\n [label]=\"getOptionLabel(option.data)\"\n [multiple]=\"multiple()\"\n [checkmark]=\"checkmark()\"\n [isSelected]=\"isOptionSelected(option)\"\n (selected)=\"selectItem(option)\"\n [isGrouper]=\"option.grouper ?? false\"\n [isFocused]=\"option.data === focusedItem()\"\n ></s-select-option>\n }\n </ul>\n }\n\n @if (filteredOptions().length === 0) {\n <span class=\"m-3 text-grayscale-60\">{{\n emptyMessage() ?? 'platform.angular_components.no_records_found' | translate\n }}</span>\n }\n </div>\n</ng-template>\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, viewChild, forwardRef, Component, ViewEncapsulation, Input, NgModule } from '@angular/core';
|
|
2
|
+
import { Injectable, viewChild, input, forwardRef, Component, ViewEncapsulation, Input, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2$1 from '@angular/forms';
|
|
4
4
|
import { FormGroup, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
5
|
import { throwError } from 'rxjs';
|
|
@@ -111,7 +111,7 @@ class TextAreaIAComponent {
|
|
|
111
111
|
keepContext = false;
|
|
112
112
|
speechRecognitionPlaceholder = '';
|
|
113
113
|
maxLength = null;
|
|
114
|
-
|
|
114
|
+
textAreaStyle = input({});
|
|
115
115
|
formGroup = new FormGroup({});
|
|
116
116
|
contextForm = new FormGroup({});
|
|
117
117
|
isVisible = false;
|
|
@@ -187,13 +187,13 @@ class TextAreaIAComponent {
|
|
|
187
187
|
});
|
|
188
188
|
}
|
|
189
189
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TextAreaIAComponent, deps: [{ token: IAssistService }, { token: i2$1.FormBuilder }, { token: i3.TranslateService }, { token: i4.SpeechRecognitionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
190
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: TextAreaIAComponent, selector: "s-text-area-ia", inputs: { id: "id", label: "label", placeholder: "placeholder", prompt: "prompt", readonly: "readonly", rows: "rows", cols: "cols", speechRecognition: "speechRecognition", keepContext: "keepContext", speechRecognitionPlaceholder: "speechRecognitionPlaceholder", maxLength: "maxLength" }, providers: [
|
|
190
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: TextAreaIAComponent, selector: "s-text-area-ia", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, prompt: { classPropertyName: "prompt", publicName: "prompt", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: false, isRequired: false, transformFunction: null }, cols: { classPropertyName: "cols", publicName: "cols", isSignal: false, isRequired: false, transformFunction: null }, speechRecognition: { classPropertyName: "speechRecognition", publicName: "speechRecognition", isSignal: false, isRequired: false, transformFunction: null }, keepContext: { classPropertyName: "keepContext", publicName: "keepContext", isSignal: false, isRequired: false, transformFunction: null }, speechRecognitionPlaceholder: { classPropertyName: "speechRecognitionPlaceholder", publicName: "speechRecognitionPlaceholder", isSignal: false, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: false, isRequired: false, transformFunction: null }, textAreaStyle: { classPropertyName: "textAreaStyle", publicName: "textAreaStyle", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
191
191
|
{
|
|
192
192
|
provide: NG_VALUE_ACCESSOR,
|
|
193
193
|
useExisting: forwardRef(() => TextAreaIAComponent),
|
|
194
194
|
multi: true,
|
|
195
195
|
},
|
|
196
|
-
], viewQueries: [{ propertyName: "textArea", first: true, predicate: ["textAreaElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<s-loading-state\n [loading]=\"isLoading\"\n [blockWindow]=\"true\"\n>\n</s-loading-state>\n\n<s-dialog\n [(visible)]=\"isVisible\"\n [escapeOnEsc]=\"false\"\n [destroyClickOutside]=\"false\"\n size=\"lg\"\n (visibleChange)=\"onHideDialog()\"\n>\n <ng-template sTemplate=\"header\">\n <div class=\"dialog-header\">\n <span class=\"iassist-icon\">\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </span>\n IAssist - Content Generator\n </div>\n </ng-template>\n\n <form [formGroup]=\"formGroup\">\n <label for=\"context\">{{ 'platform.angular_components.context' | translate }}</label>\n <s-textarea\n inputId=\"context\"\n formControlName=\"context\"\n [speechRecognition]=\"speechRecognition\"\n [keepContext]=\"keepContext\"\n />\n </form>\n\n <ng-template sTemplate=\"footer\">\n <div class=\"footer-content\">\n <s-button\n id=\"-submit-button\"\n type=\"button\"\n [label]=\"'platform.angular_components.generate_text' | translate\"\n (clicked)=\"submitContext()\"\n sTooltip=\"(ALT + SHIFT + S)\"\n showDelay=\"500\"\n >\n </s-button>\n <s-button\n id=\"-cancel-button\"\n type=\"button\"\n priority=\"link\"\n [label]=\"'platform.angular_components.cancel' | translate\"\n (clicked)=\"hideDialog()\"\n sTooltip=\"(ALT + SHIFT + C)\"\n showDelay=\"500\"\n >\n </s-button>\n </div>\n </ng-template>\n</s-dialog>\n\n<div class=\"textarea-ia\">\n <s-textarea\n #textAreaElement\n [inputId]=\"id\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [rows]=\"rows\"\n [readOnly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [keepContext]=\"keepContext\"\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\n [maxLength]=\"maxLength\"\n [speechRecognition]=\"speechRecognition\"\n >\n </s-textarea>\n <!--TODO: Tooltip em propriedade-->\n <button\n class=\"iassist-button\"\n [class.speech-recognition]=\"speechRecognition && speechRecognitionService.hasSupportSpeechRecognition\"\n (click)=\"showDialog()\"\n sTooltip=\"IAssist - Content Generator\"\n >\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </button>\n</div>\n\n<ng-template #iassistIcon>\n <svg\n style=\"width: 100%; height: 100%\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.81451 18.1054L5.99593 17.6059L7.52166 13.4099L7.60877 13.1726L7.61277 13.1614L7.94285 12.2543L8.01159 12.0648L8.05394 11.949L5.2998 8.52426L5.02726 8.18379C5.00569 8.15821 4.9881 8.13104 4.97292 8.10226C4.90099 7.9632 4.85063 7.81294 4.82186 7.6531C4.73075 7.1344 4.90418 6.60771 5.28382 6.24326C5.29421 6.23447 5.3038 6.22567 5.31419 6.21688L5.47164 6.0914L9.3439 3.00238L9.5469 2.84094L9.57088 2.82096L10.4101 2.15041L11.8007 1.04188C11.2181 0.925188 10.6163 0.863647 10.0001 0.863647C4.95374 0.863647 0.863281 4.9541 0.863281 9.99963C0.863281 13.5346 2.87254 16.5989 5.80971 18.1182\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.099 1.83472L13.9495 2.24632L11.997 7.61074L11.9427 7.7594L11.9003 7.87369L14.7448 11.4103C14.7463 11.4127 14.7479 11.4143 14.7495 11.4167L14.9414 11.654C14.9541 11.67 14.9661 11.6868 14.9765 11.7044C15.0764 11.8698 15.1444 12.0505 15.1779 12.2431C15.273 12.7826 15.0812 13.3284 14.676 13.6897C14.656 13.7129 14.6345 13.7344 14.6105 13.7536L11.8563 15.9507L11.6789 16.0922L11.6022 16.1537L10.7406 16.8402V16.841L10.3937 17.1176L9.85747 17.5452L9.39951 17.9112L8.11035 18.9398C8.72016 19.0677 9.35155 19.1364 9.99973 19.1364C15.0461 19.1364 19.1365 15.046 19.1365 9.99964C19.1365 6.42789 17.0857 3.33727 14.099 1.83472Z\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.7287 12.3222C14.7047 12.1832 14.6551 12.0545 14.5864 11.941L14.3954 11.7036C14.3954 11.7036 14.3946 11.7028 14.3938 11.7028L11.3839 7.96005L10.5031 6.86511L10.4256 6.7676L9.03255 5.03487L8.83674 4.79191C8.79278 4.71678 8.75681 4.63446 8.73204 4.54814C8.72085 4.51058 8.71286 4.47222 8.70566 4.43465C8.68568 4.32196 8.68408 4.21007 8.69847 4.10217L8.62334 4.16291L8.44511 4.30438L5.75731 6.44871L5.60066 6.57339C5.34011 6.82275 5.20584 7.19279 5.27218 7.57482C5.29296 7.68751 5.32892 7.79541 5.37927 7.89292C5.37927 7.89292 5.37927 7.89292 5.38007 7.89371L5.6566 8.23818L8.57139 11.8627L8.63293 11.9394L9.53047 13.0559L9.59041 13.1303L9.98363 13.6186L11.0178 14.9046C11.0186 14.9054 11.0194 14.9069 11.0202 14.9077L11.1361 15.0516V15.0524C11.2184 15.1755 11.2768 15.317 11.3048 15.4728C11.3239 15.5807 11.3263 15.6878 11.3143 15.7925L11.3175 15.7965L11.3943 15.735L11.5717 15.5935L14.3266 13.3964L14.3218 13.3908C14.6335 13.1438 14.8022 12.7394 14.7287 12.3222Z\"\n fill=\"#F3F3F5\"\n />\n <path\n d=\"M10.6822 15.0082C10.6814 15.0074 10.6806 15.0058 10.6806 15.005L10.5672 14.8643L10.3809 14.6325L10.3282 14.567L10.2211 14.4335L9.40028 13.4129L9.32835 13.3242L8.77289 12.6345L8.68098 12.5194L8.44121 12.2205L8.37168 12.4099L8.04159 13.317L8.0376 13.329L7.95128 13.5664L6.42475 17.7623L6.24333 18.2618L5.90605 19.1881L5.73262 19.6645C5.73182 19.6661 5.73102 19.6677 5.73102 19.6685C5.72863 19.6749 5.72703 19.6821 5.72543 19.6885C5.71584 19.7228 5.71424 19.758 5.72063 19.7948C5.74461 19.929 5.87329 20.0193 6.00836 19.9962C6.04112 19.9898 6.07229 19.9778 6.09867 19.9602C6.09867 19.9602 6.09947 19.9602 6.10027 19.9594L6.14103 19.9266L7.39422 18.9268L9.11496 17.5537L9.57292 17.1877L10.1092 16.7601L10.4561 16.4827L10.4537 16.4811C10.7582 16.2382 10.9236 15.8402 10.8509 15.4294C10.8237 15.2735 10.7654 15.1313 10.6822 15.0082Z\"\n fill=\"#0C847B\"\n />\n <path\n d=\"M9.17644 4.56325C9.2124 4.68713 9.26915 4.80062 9.34268 4.90053C9.34348 4.90053 9.34428 4.90213 9.34428 4.90213L9.40342 4.97645C9.40502 4.97805 9.40582 4.97885 9.40662 4.98045L9.56806 5.17946L9.64878 5.28096L9.67915 5.31932L9.8414 5.51993L10.5559 6.40947L10.7054 6.59569L11.2169 7.23188L11.5142 7.60192L11.5693 7.45247L13.5202 2.08964L14.1596 0.332135C14.1596 0.330536 14.1604 0.328139 14.1612 0.32654C14.174 0.288177 14.1772 0.246617 14.17 0.205058C14.1468 0.0699879 14.0182 -0.0195258 13.8823 0.00365186C13.8407 0.0116442 13.8024 0.028428 13.7712 0.0540033L12.578 1.00589L12.498 1.06982L10.6958 2.50844L9.85658 3.17819L9.8326 3.19737L9.6296 3.35961L9.45297 3.50028C9.2116 3.73925 9.08692 4.08931 9.15006 4.44976C9.15726 4.48813 9.16525 4.52649 9.17644 4.56325Z\"\n fill=\"#0C847B\"\n />\n </svg>\n</ng-template>\n", styles: ["s-text-area-ia.ng-invalid.ng-dirty .textarea-ia textarea{border-color:#c13018}.footer-content{display:flex;flex-grow:0}.textarea-ia{display:flex;align-items:flex-end;gap:8px}.iassist-button{display:flex;justify-content:center;align-items:center;border:none;border-radius:50%;box-shadow:none;cursor:pointer;height:32px;width:32px}.dialog-header{display:flex;gap:12px}.dialog-header .iassist-icon{display:block;height:24px;width:24px}s-textarea{width:100%}.speech-recognition{margin-bottom:12.5px}\n"], dependencies: [{ kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "component", type: i6.LoadingStateComponent, selector: "s-loading-state", inputs: ["indicator", "id", "blockWindow", "loading"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.TextAreaComponent, selector: "s-textarea", inputs: ["inputId", "rows", "speechRecognition", "keyFilter", "keepContext", "speechRecognitionPlaceholder", "maxLength", "placeholder", "inputStyle", "readOnly"] }, { kind: "component", type: i9.DialogComponent, selector: "s-dialog", inputs: ["header", "visible", "size", "contentClassName", "escapeOnEsc", "destroyClickOutside"], outputs: ["visibleChange"] }, { kind: "directive", type: i10.TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
196
|
+
], viewQueries: [{ propertyName: "textArea", first: true, predicate: ["textAreaElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<s-loading-state\n [loading]=\"isLoading\"\n [blockWindow]=\"true\"\n>\n</s-loading-state>\n\n<s-dialog\n [(visible)]=\"isVisible\"\n [escapeOnEsc]=\"false\"\n [destroyClickOutside]=\"false\"\n size=\"lg\"\n (visibleChange)=\"onHideDialog()\"\n>\n <ng-template sTemplate=\"header\">\n <div class=\"dialog-header\">\n <span class=\"iassist-icon\">\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </span>\n IAssist - Content Generator\n </div>\n </ng-template>\n\n <form [formGroup]=\"formGroup\">\n <label for=\"context\">{{ 'platform.angular_components.context' | translate }}</label>\n <s-textarea\n inputId=\"context\"\n formControlName=\"context\"\n [speechRecognition]=\"speechRecognition\"\n [keepContext]=\"keepContext\"\n [style]=\"textAreaStyle()\"\n />\n </form>\n\n <ng-template sTemplate=\"footer\">\n <div class=\"footer-content\">\n <s-button\n id=\"-submit-button\"\n type=\"button\"\n [label]=\"'platform.angular_components.generate_text' | translate\"\n (clicked)=\"submitContext()\"\n sTooltip=\"(ALT + SHIFT + S)\"\n showDelay=\"500\"\n >\n </s-button>\n <s-button\n id=\"-cancel-button\"\n type=\"button\"\n priority=\"link\"\n [label]=\"'platform.angular_components.cancel' | translate\"\n (clicked)=\"hideDialog()\"\n sTooltip=\"(ALT + SHIFT + C)\"\n showDelay=\"500\"\n >\n </s-button>\n </div>\n </ng-template>\n</s-dialog>\n\n<div class=\"textarea-ia\">\n <s-textarea\n #textAreaElement\n [inputId]=\"id\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [rows]=\"rows\"\n [readOnly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [keepContext]=\"keepContext\"\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\n [maxLength]=\"maxLength\"\n [speechRecognition]=\"speechRecognition\"\n >\n </s-textarea>\n <!--TODO: Tooltip em propriedade-->\n <button\n class=\"iassist-button\"\n [class.speech-recognition]=\"speechRecognition && speechRecognitionService.hasSupportSpeechRecognition\"\n (click)=\"showDialog()\"\n sTooltip=\"IAssist - Content Generator\"\n >\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </button>\n</div>\n\n<ng-template #iassistIcon>\n <svg\n style=\"width: 100%; height: 100%\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.81451 18.1054L5.99593 17.6059L7.52166 13.4099L7.60877 13.1726L7.61277 13.1614L7.94285 12.2543L8.01159 12.0648L8.05394 11.949L5.2998 8.52426L5.02726 8.18379C5.00569 8.15821 4.9881 8.13104 4.97292 8.10226C4.90099 7.9632 4.85063 7.81294 4.82186 7.6531C4.73075 7.1344 4.90418 6.60771 5.28382 6.24326C5.29421 6.23447 5.3038 6.22567 5.31419 6.21688L5.47164 6.0914L9.3439 3.00238L9.5469 2.84094L9.57088 2.82096L10.4101 2.15041L11.8007 1.04188C11.2181 0.925188 10.6163 0.863647 10.0001 0.863647C4.95374 0.863647 0.863281 4.9541 0.863281 9.99963C0.863281 13.5346 2.87254 16.5989 5.80971 18.1182\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.099 1.83472L13.9495 2.24632L11.997 7.61074L11.9427 7.7594L11.9003 7.87369L14.7448 11.4103C14.7463 11.4127 14.7479 11.4143 14.7495 11.4167L14.9414 11.654C14.9541 11.67 14.9661 11.6868 14.9765 11.7044C15.0764 11.8698 15.1444 12.0505 15.1779 12.2431C15.273 12.7826 15.0812 13.3284 14.676 13.6897C14.656 13.7129 14.6345 13.7344 14.6105 13.7536L11.8563 15.9507L11.6789 16.0922L11.6022 16.1537L10.7406 16.8402V16.841L10.3937 17.1176L9.85747 17.5452L9.39951 17.9112L8.11035 18.9398C8.72016 19.0677 9.35155 19.1364 9.99973 19.1364C15.0461 19.1364 19.1365 15.046 19.1365 9.99964C19.1365 6.42789 17.0857 3.33727 14.099 1.83472Z\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.7287 12.3222C14.7047 12.1832 14.6551 12.0545 14.5864 11.941L14.3954 11.7036C14.3954 11.7036 14.3946 11.7028 14.3938 11.7028L11.3839 7.96005L10.5031 6.86511L10.4256 6.7676L9.03255 5.03487L8.83674 4.79191C8.79278 4.71678 8.75681 4.63446 8.73204 4.54814C8.72085 4.51058 8.71286 4.47222 8.70566 4.43465C8.68568 4.32196 8.68408 4.21007 8.69847 4.10217L8.62334 4.16291L8.44511 4.30438L5.75731 6.44871L5.60066 6.57339C5.34011 6.82275 5.20584 7.19279 5.27218 7.57482C5.29296 7.68751 5.32892 7.79541 5.37927 7.89292C5.37927 7.89292 5.37927 7.89292 5.38007 7.89371L5.6566 8.23818L8.57139 11.8627L8.63293 11.9394L9.53047 13.0559L9.59041 13.1303L9.98363 13.6186L11.0178 14.9046C11.0186 14.9054 11.0194 14.9069 11.0202 14.9077L11.1361 15.0516V15.0524C11.2184 15.1755 11.2768 15.317 11.3048 15.4728C11.3239 15.5807 11.3263 15.6878 11.3143 15.7925L11.3175 15.7965L11.3943 15.735L11.5717 15.5935L14.3266 13.3964L14.3218 13.3908C14.6335 13.1438 14.8022 12.7394 14.7287 12.3222Z\"\n fill=\"#F3F3F5\"\n />\n <path\n d=\"M10.6822 15.0082C10.6814 15.0074 10.6806 15.0058 10.6806 15.005L10.5672 14.8643L10.3809 14.6325L10.3282 14.567L10.2211 14.4335L9.40028 13.4129L9.32835 13.3242L8.77289 12.6345L8.68098 12.5194L8.44121 12.2205L8.37168 12.4099L8.04159 13.317L8.0376 13.329L7.95128 13.5664L6.42475 17.7623L6.24333 18.2618L5.90605 19.1881L5.73262 19.6645C5.73182 19.6661 5.73102 19.6677 5.73102 19.6685C5.72863 19.6749 5.72703 19.6821 5.72543 19.6885C5.71584 19.7228 5.71424 19.758 5.72063 19.7948C5.74461 19.929 5.87329 20.0193 6.00836 19.9962C6.04112 19.9898 6.07229 19.9778 6.09867 19.9602C6.09867 19.9602 6.09947 19.9602 6.10027 19.9594L6.14103 19.9266L7.39422 18.9268L9.11496 17.5537L9.57292 17.1877L10.1092 16.7601L10.4561 16.4827L10.4537 16.4811C10.7582 16.2382 10.9236 15.8402 10.8509 15.4294C10.8237 15.2735 10.7654 15.1313 10.6822 15.0082Z\"\n fill=\"#0C847B\"\n />\n <path\n d=\"M9.17644 4.56325C9.2124 4.68713 9.26915 4.80062 9.34268 4.90053C9.34348 4.90053 9.34428 4.90213 9.34428 4.90213L9.40342 4.97645C9.40502 4.97805 9.40582 4.97885 9.40662 4.98045L9.56806 5.17946L9.64878 5.28096L9.67915 5.31932L9.8414 5.51993L10.5559 6.40947L10.7054 6.59569L11.2169 7.23188L11.5142 7.60192L11.5693 7.45247L13.5202 2.08964L14.1596 0.332135C14.1596 0.330536 14.1604 0.328139 14.1612 0.32654C14.174 0.288177 14.1772 0.246617 14.17 0.205058C14.1468 0.0699879 14.0182 -0.0195258 13.8823 0.00365186C13.8407 0.0116442 13.8024 0.028428 13.7712 0.0540033L12.578 1.00589L12.498 1.06982L10.6958 2.50844L9.85658 3.17819L9.8326 3.19737L9.6296 3.35961L9.45297 3.50028C9.2116 3.73925 9.08692 4.08931 9.15006 4.44976C9.15726 4.48813 9.16525 4.52649 9.17644 4.56325Z\"\n fill=\"#0C847B\"\n />\n </svg>\n</ng-template>\n\n", styles: ["s-text-area-ia.ng-invalid.ng-dirty .textarea-ia textarea{border-color:#c13018}.footer-content{display:flex;flex-grow:0}.textarea-ia{display:flex;align-items:flex-end;gap:8px}.iassist-button{display:flex;justify-content:center;align-items:center;border:none;border-radius:50%;box-shadow:none;cursor:pointer;height:32px;width:32px}.dialog-header{display:flex;gap:12px}.dialog-header .iassist-icon{display:block;height:24px;width:24px}s-textarea{width:100%}.speech-recognition{margin-bottom:12.5px}\n"], dependencies: [{ kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "component", type: i6.LoadingStateComponent, selector: "s-loading-state", inputs: ["indicator", "id", "blockWindow", "loading"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.TextAreaComponent, selector: "s-textarea", inputs: ["inputId", "rows", "speechRecognition", "keyFilter", "keepContext", "speechRecognitionPlaceholder", "maxLength", "placeholder", "inputStyle", "readOnly"] }, { kind: "component", type: i9.DialogComponent, selector: "s-dialog", inputs: ["header", "visible", "size", "contentClassName", "escapeOnEsc", "destroyClickOutside"], outputs: ["visibleChange"] }, { kind: "directive", type: i10.TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
197
197
|
}
|
|
198
198
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TextAreaIAComponent, decorators: [{
|
|
199
199
|
type: Component,
|
|
@@ -203,7 +203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
203
203
|
useExisting: forwardRef(() => TextAreaIAComponent),
|
|
204
204
|
multi: true,
|
|
205
205
|
},
|
|
206
|
-
], encapsulation: ViewEncapsulation.None, template: "<s-loading-state\n [loading]=\"isLoading\"\n [blockWindow]=\"true\"\n>\n</s-loading-state>\n\n<s-dialog\n [(visible)]=\"isVisible\"\n [escapeOnEsc]=\"false\"\n [destroyClickOutside]=\"false\"\n size=\"lg\"\n (visibleChange)=\"onHideDialog()\"\n>\n <ng-template sTemplate=\"header\">\n <div class=\"dialog-header\">\n <span class=\"iassist-icon\">\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </span>\n IAssist - Content Generator\n </div>\n </ng-template>\n\n <form [formGroup]=\"formGroup\">\n <label for=\"context\">{{ 'platform.angular_components.context' | translate }}</label>\n <s-textarea\n inputId=\"context\"\n formControlName=\"context\"\n [speechRecognition]=\"speechRecognition\"\n [keepContext]=\"keepContext\"\n />\n </form>\n\n <ng-template sTemplate=\"footer\">\n <div class=\"footer-content\">\n <s-button\n id=\"-submit-button\"\n type=\"button\"\n [label]=\"'platform.angular_components.generate_text' | translate\"\n (clicked)=\"submitContext()\"\n sTooltip=\"(ALT + SHIFT + S)\"\n showDelay=\"500\"\n >\n </s-button>\n <s-button\n id=\"-cancel-button\"\n type=\"button\"\n priority=\"link\"\n [label]=\"'platform.angular_components.cancel' | translate\"\n (clicked)=\"hideDialog()\"\n sTooltip=\"(ALT + SHIFT + C)\"\n showDelay=\"500\"\n >\n </s-button>\n </div>\n </ng-template>\n</s-dialog>\n\n<div class=\"textarea-ia\">\n <s-textarea\n #textAreaElement\n [inputId]=\"id\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [rows]=\"rows\"\n [readOnly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [keepContext]=\"keepContext\"\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\n [maxLength]=\"maxLength\"\n [speechRecognition]=\"speechRecognition\"\n >\n </s-textarea>\n <!--TODO: Tooltip em propriedade-->\n <button\n class=\"iassist-button\"\n [class.speech-recognition]=\"speechRecognition && speechRecognitionService.hasSupportSpeechRecognition\"\n (click)=\"showDialog()\"\n sTooltip=\"IAssist - Content Generator\"\n >\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </button>\n</div>\n\n<ng-template #iassistIcon>\n <svg\n style=\"width: 100%; height: 100%\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.81451 18.1054L5.99593 17.6059L7.52166 13.4099L7.60877 13.1726L7.61277 13.1614L7.94285 12.2543L8.01159 12.0648L8.05394 11.949L5.2998 8.52426L5.02726 8.18379C5.00569 8.15821 4.9881 8.13104 4.97292 8.10226C4.90099 7.9632 4.85063 7.81294 4.82186 7.6531C4.73075 7.1344 4.90418 6.60771 5.28382 6.24326C5.29421 6.23447 5.3038 6.22567 5.31419 6.21688L5.47164 6.0914L9.3439 3.00238L9.5469 2.84094L9.57088 2.82096L10.4101 2.15041L11.8007 1.04188C11.2181 0.925188 10.6163 0.863647 10.0001 0.863647C4.95374 0.863647 0.863281 4.9541 0.863281 9.99963C0.863281 13.5346 2.87254 16.5989 5.80971 18.1182\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.099 1.83472L13.9495 2.24632L11.997 7.61074L11.9427 7.7594L11.9003 7.87369L14.7448 11.4103C14.7463 11.4127 14.7479 11.4143 14.7495 11.4167L14.9414 11.654C14.9541 11.67 14.9661 11.6868 14.9765 11.7044C15.0764 11.8698 15.1444 12.0505 15.1779 12.2431C15.273 12.7826 15.0812 13.3284 14.676 13.6897C14.656 13.7129 14.6345 13.7344 14.6105 13.7536L11.8563 15.9507L11.6789 16.0922L11.6022 16.1537L10.7406 16.8402V16.841L10.3937 17.1176L9.85747 17.5452L9.39951 17.9112L8.11035 18.9398C8.72016 19.0677 9.35155 19.1364 9.99973 19.1364C15.0461 19.1364 19.1365 15.046 19.1365 9.99964C19.1365 6.42789 17.0857 3.33727 14.099 1.83472Z\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.7287 12.3222C14.7047 12.1832 14.6551 12.0545 14.5864 11.941L14.3954 11.7036C14.3954 11.7036 14.3946 11.7028 14.3938 11.7028L11.3839 7.96005L10.5031 6.86511L10.4256 6.7676L9.03255 5.03487L8.83674 4.79191C8.79278 4.71678 8.75681 4.63446 8.73204 4.54814C8.72085 4.51058 8.71286 4.47222 8.70566 4.43465C8.68568 4.32196 8.68408 4.21007 8.69847 4.10217L8.62334 4.16291L8.44511 4.30438L5.75731 6.44871L5.60066 6.57339C5.34011 6.82275 5.20584 7.19279 5.27218 7.57482C5.29296 7.68751 5.32892 7.79541 5.37927 7.89292C5.37927 7.89292 5.37927 7.89292 5.38007 7.89371L5.6566 8.23818L8.57139 11.8627L8.63293 11.9394L9.53047 13.0559L9.59041 13.1303L9.98363 13.6186L11.0178 14.9046C11.0186 14.9054 11.0194 14.9069 11.0202 14.9077L11.1361 15.0516V15.0524C11.2184 15.1755 11.2768 15.317 11.3048 15.4728C11.3239 15.5807 11.3263 15.6878 11.3143 15.7925L11.3175 15.7965L11.3943 15.735L11.5717 15.5935L14.3266 13.3964L14.3218 13.3908C14.6335 13.1438 14.8022 12.7394 14.7287 12.3222Z\"\n fill=\"#F3F3F5\"\n />\n <path\n d=\"M10.6822 15.0082C10.6814 15.0074 10.6806 15.0058 10.6806 15.005L10.5672 14.8643L10.3809 14.6325L10.3282 14.567L10.2211 14.4335L9.40028 13.4129L9.32835 13.3242L8.77289 12.6345L8.68098 12.5194L8.44121 12.2205L8.37168 12.4099L8.04159 13.317L8.0376 13.329L7.95128 13.5664L6.42475 17.7623L6.24333 18.2618L5.90605 19.1881L5.73262 19.6645C5.73182 19.6661 5.73102 19.6677 5.73102 19.6685C5.72863 19.6749 5.72703 19.6821 5.72543 19.6885C5.71584 19.7228 5.71424 19.758 5.72063 19.7948C5.74461 19.929 5.87329 20.0193 6.00836 19.9962C6.04112 19.9898 6.07229 19.9778 6.09867 19.9602C6.09867 19.9602 6.09947 19.9602 6.10027 19.9594L6.14103 19.9266L7.39422 18.9268L9.11496 17.5537L9.57292 17.1877L10.1092 16.7601L10.4561 16.4827L10.4537 16.4811C10.7582 16.2382 10.9236 15.8402 10.8509 15.4294C10.8237 15.2735 10.7654 15.1313 10.6822 15.0082Z\"\n fill=\"#0C847B\"\n />\n <path\n d=\"M9.17644 4.56325C9.2124 4.68713 9.26915 4.80062 9.34268 4.90053C9.34348 4.90053 9.34428 4.90213 9.34428 4.90213L9.40342 4.97645C9.40502 4.97805 9.40582 4.97885 9.40662 4.98045L9.56806 5.17946L9.64878 5.28096L9.67915 5.31932L9.8414 5.51993L10.5559 6.40947L10.7054 6.59569L11.2169 7.23188L11.5142 7.60192L11.5693 7.45247L13.5202 2.08964L14.1596 0.332135C14.1596 0.330536 14.1604 0.328139 14.1612 0.32654C14.174 0.288177 14.1772 0.246617 14.17 0.205058C14.1468 0.0699879 14.0182 -0.0195258 13.8823 0.00365186C13.8407 0.0116442 13.8024 0.028428 13.7712 0.0540033L12.578 1.00589L12.498 1.06982L10.6958 2.50844L9.85658 3.17819L9.8326 3.19737L9.6296 3.35961L9.45297 3.50028C9.2116 3.73925 9.08692 4.08931 9.15006 4.44976C9.15726 4.48813 9.16525 4.52649 9.17644 4.56325Z\"\n fill=\"#0C847B\"\n />\n </svg>\n</ng-template>\n", styles: ["s-text-area-ia.ng-invalid.ng-dirty .textarea-ia textarea{border-color:#c13018}.footer-content{display:flex;flex-grow:0}.textarea-ia{display:flex;align-items:flex-end;gap:8px}.iassist-button{display:flex;justify-content:center;align-items:center;border:none;border-radius:50%;box-shadow:none;cursor:pointer;height:32px;width:32px}.dialog-header{display:flex;gap:12px}.dialog-header .iassist-icon{display:block;height:24px;width:24px}s-textarea{width:100%}.speech-recognition{margin-bottom:12.5px}\n"] }]
|
|
206
|
+
], encapsulation: ViewEncapsulation.None, template: "<s-loading-state\n [loading]=\"isLoading\"\n [blockWindow]=\"true\"\n>\n</s-loading-state>\n\n<s-dialog\n [(visible)]=\"isVisible\"\n [escapeOnEsc]=\"false\"\n [destroyClickOutside]=\"false\"\n size=\"lg\"\n (visibleChange)=\"onHideDialog()\"\n>\n <ng-template sTemplate=\"header\">\n <div class=\"dialog-header\">\n <span class=\"iassist-icon\">\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </span>\n IAssist - Content Generator\n </div>\n </ng-template>\n\n <form [formGroup]=\"formGroup\">\n <label for=\"context\">{{ 'platform.angular_components.context' | translate }}</label>\n <s-textarea\n inputId=\"context\"\n formControlName=\"context\"\n [speechRecognition]=\"speechRecognition\"\n [keepContext]=\"keepContext\"\n [style]=\"textAreaStyle()\"\n />\n </form>\n\n <ng-template sTemplate=\"footer\">\n <div class=\"footer-content\">\n <s-button\n id=\"-submit-button\"\n type=\"button\"\n [label]=\"'platform.angular_components.generate_text' | translate\"\n (clicked)=\"submitContext()\"\n sTooltip=\"(ALT + SHIFT + S)\"\n showDelay=\"500\"\n >\n </s-button>\n <s-button\n id=\"-cancel-button\"\n type=\"button\"\n priority=\"link\"\n [label]=\"'platform.angular_components.cancel' | translate\"\n (clicked)=\"hideDialog()\"\n sTooltip=\"(ALT + SHIFT + C)\"\n showDelay=\"500\"\n >\n </s-button>\n </div>\n </ng-template>\n</s-dialog>\n\n<div class=\"textarea-ia\">\n <s-textarea\n #textAreaElement\n [inputId]=\"id\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [rows]=\"rows\"\n [readOnly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [keepContext]=\"keepContext\"\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\n [maxLength]=\"maxLength\"\n [speechRecognition]=\"speechRecognition\"\n >\n </s-textarea>\n <!--TODO: Tooltip em propriedade-->\n <button\n class=\"iassist-button\"\n [class.speech-recognition]=\"speechRecognition && speechRecognitionService.hasSupportSpeechRecognition\"\n (click)=\"showDialog()\"\n sTooltip=\"IAssist - Content Generator\"\n >\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </button>\n</div>\n\n<ng-template #iassistIcon>\n <svg\n style=\"width: 100%; height: 100%\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.81451 18.1054L5.99593 17.6059L7.52166 13.4099L7.60877 13.1726L7.61277 13.1614L7.94285 12.2543L8.01159 12.0648L8.05394 11.949L5.2998 8.52426L5.02726 8.18379C5.00569 8.15821 4.9881 8.13104 4.97292 8.10226C4.90099 7.9632 4.85063 7.81294 4.82186 7.6531C4.73075 7.1344 4.90418 6.60771 5.28382 6.24326C5.29421 6.23447 5.3038 6.22567 5.31419 6.21688L5.47164 6.0914L9.3439 3.00238L9.5469 2.84094L9.57088 2.82096L10.4101 2.15041L11.8007 1.04188C11.2181 0.925188 10.6163 0.863647 10.0001 0.863647C4.95374 0.863647 0.863281 4.9541 0.863281 9.99963C0.863281 13.5346 2.87254 16.5989 5.80971 18.1182\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.099 1.83472L13.9495 2.24632L11.997 7.61074L11.9427 7.7594L11.9003 7.87369L14.7448 11.4103C14.7463 11.4127 14.7479 11.4143 14.7495 11.4167L14.9414 11.654C14.9541 11.67 14.9661 11.6868 14.9765 11.7044C15.0764 11.8698 15.1444 12.0505 15.1779 12.2431C15.273 12.7826 15.0812 13.3284 14.676 13.6897C14.656 13.7129 14.6345 13.7344 14.6105 13.7536L11.8563 15.9507L11.6789 16.0922L11.6022 16.1537L10.7406 16.8402V16.841L10.3937 17.1176L9.85747 17.5452L9.39951 17.9112L8.11035 18.9398C8.72016 19.0677 9.35155 19.1364 9.99973 19.1364C15.0461 19.1364 19.1365 15.046 19.1365 9.99964C19.1365 6.42789 17.0857 3.33727 14.099 1.83472Z\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.7287 12.3222C14.7047 12.1832 14.6551 12.0545 14.5864 11.941L14.3954 11.7036C14.3954 11.7036 14.3946 11.7028 14.3938 11.7028L11.3839 7.96005L10.5031 6.86511L10.4256 6.7676L9.03255 5.03487L8.83674 4.79191C8.79278 4.71678 8.75681 4.63446 8.73204 4.54814C8.72085 4.51058 8.71286 4.47222 8.70566 4.43465C8.68568 4.32196 8.68408 4.21007 8.69847 4.10217L8.62334 4.16291L8.44511 4.30438L5.75731 6.44871L5.60066 6.57339C5.34011 6.82275 5.20584 7.19279 5.27218 7.57482C5.29296 7.68751 5.32892 7.79541 5.37927 7.89292C5.37927 7.89292 5.37927 7.89292 5.38007 7.89371L5.6566 8.23818L8.57139 11.8627L8.63293 11.9394L9.53047 13.0559L9.59041 13.1303L9.98363 13.6186L11.0178 14.9046C11.0186 14.9054 11.0194 14.9069 11.0202 14.9077L11.1361 15.0516V15.0524C11.2184 15.1755 11.2768 15.317 11.3048 15.4728C11.3239 15.5807 11.3263 15.6878 11.3143 15.7925L11.3175 15.7965L11.3943 15.735L11.5717 15.5935L14.3266 13.3964L14.3218 13.3908C14.6335 13.1438 14.8022 12.7394 14.7287 12.3222Z\"\n fill=\"#F3F3F5\"\n />\n <path\n d=\"M10.6822 15.0082C10.6814 15.0074 10.6806 15.0058 10.6806 15.005L10.5672 14.8643L10.3809 14.6325L10.3282 14.567L10.2211 14.4335L9.40028 13.4129L9.32835 13.3242L8.77289 12.6345L8.68098 12.5194L8.44121 12.2205L8.37168 12.4099L8.04159 13.317L8.0376 13.329L7.95128 13.5664L6.42475 17.7623L6.24333 18.2618L5.90605 19.1881L5.73262 19.6645C5.73182 19.6661 5.73102 19.6677 5.73102 19.6685C5.72863 19.6749 5.72703 19.6821 5.72543 19.6885C5.71584 19.7228 5.71424 19.758 5.72063 19.7948C5.74461 19.929 5.87329 20.0193 6.00836 19.9962C6.04112 19.9898 6.07229 19.9778 6.09867 19.9602C6.09867 19.9602 6.09947 19.9602 6.10027 19.9594L6.14103 19.9266L7.39422 18.9268L9.11496 17.5537L9.57292 17.1877L10.1092 16.7601L10.4561 16.4827L10.4537 16.4811C10.7582 16.2382 10.9236 15.8402 10.8509 15.4294C10.8237 15.2735 10.7654 15.1313 10.6822 15.0082Z\"\n fill=\"#0C847B\"\n />\n <path\n d=\"M9.17644 4.56325C9.2124 4.68713 9.26915 4.80062 9.34268 4.90053C9.34348 4.90053 9.34428 4.90213 9.34428 4.90213L9.40342 4.97645C9.40502 4.97805 9.40582 4.97885 9.40662 4.98045L9.56806 5.17946L9.64878 5.28096L9.67915 5.31932L9.8414 5.51993L10.5559 6.40947L10.7054 6.59569L11.2169 7.23188L11.5142 7.60192L11.5693 7.45247L13.5202 2.08964L14.1596 0.332135C14.1596 0.330536 14.1604 0.328139 14.1612 0.32654C14.174 0.288177 14.1772 0.246617 14.17 0.205058C14.1468 0.0699879 14.0182 -0.0195258 13.8823 0.00365186C13.8407 0.0116442 13.8024 0.028428 13.7712 0.0540033L12.578 1.00589L12.498 1.06982L10.6958 2.50844L9.85658 3.17819L9.8326 3.19737L9.6296 3.35961L9.45297 3.50028C9.2116 3.73925 9.08692 4.08931 9.15006 4.44976C9.15726 4.48813 9.16525 4.52649 9.17644 4.56325Z\"\n fill=\"#0C847B\"\n />\n </svg>\n</ng-template>\n\n", styles: ["s-text-area-ia.ng-invalid.ng-dirty .textarea-ia textarea{border-color:#c13018}.footer-content{display:flex;flex-grow:0}.textarea-ia{display:flex;align-items:flex-end;gap:8px}.iassist-button{display:flex;justify-content:center;align-items:center;border:none;border-radius:50%;box-shadow:none;cursor:pointer;height:32px;width:32px}.dialog-header{display:flex;gap:12px}.dialog-header .iassist-icon{display:block;height:24px;width:24px}s-textarea{width:100%}.speech-recognition{margin-bottom:12.5px}\n"] }]
|
|
207
207
|
}], ctorParameters: () => [{ type: IAssistService }, { type: i2$1.FormBuilder }, { type: i3.TranslateService }, { type: i4.SpeechRecognitionService }], propDecorators: { id: [{
|
|
208
208
|
type: Input
|
|
209
209
|
}], label: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-text-area-ia.mjs","sources":["../../projects/angular-components/text-area-ia/src/lib/services/IAssist/iassist.service.ts","../../projects/angular-components/text-area-ia/src/lib/text-area-ia/text-area-ia.component.ts","../../projects/angular-components/text-area-ia/src/lib/text-area-ia/text-area-ia.component.html","../../projects/angular-components/text-area-ia/src/lib/text-area-ia/text-area-ia.module.ts","../../projects/angular-components/text-area-ia/src/seniorsistemas-angular-components-text-area-ia.ts"],"sourcesContent":["/* eslint-disable max-len */\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { IAssistInputData } from './models/iassist-input-data';\nimport { IAssistResponse } from './models/iassist-response';\nimport { ToastService } from \"@seniorsistemas/angular-components/toast\";\n\n@Injectable({ providedIn: 'root' })\nexport class IAssistService {\n\tconstructor(\n\t\tprivate readonly http: HttpClient,\n\t\tprivate readonly toastService: ToastService,\n\t) { }\n\n\tpublic askIA(context: string, data: IAssistInputData): Observable<IAssistResponse> {\n\t\tconst prompt: string = data.prompt\n\t\t\t? this._replacePlaceholder(context, data)\n\t\t\t: this._createPrompt(context, data);\n\n\t\treturn this.http\n\t\t\t.post<IAssistResponse>('platform/iassist/api/latest/completions', {\n\t\t\t\tprompt,\n\t\t\t\tprovider: 'OPEN_AI',\n\t\t\t\tparameters: {\n\t\t\t\t\tmodel: 'gpt-3.5-turbo',\n\t\t\t\t\tmax_tokens: 700,\n\t\t\t\t\ttemperature: 1,\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(\n\t\t\t\tcatchError((err: HttpErrorResponse) => {\n\t\t\t\t\tthis.toastService.show({\n\t\t\t\t\t\tseverity: 'error',\n\t\t\t\t\t\ttitle: err.status ? String(err.status) : 'Error',\n\t\t\t\t\t\ttext: (err.error && err.error.message) || err.statusText || err.message || 'Error',\n\t\t\t\t\t});\n\t\t\t\t\treturn throwError(() => new Error(err.message));\n\t\t\t\t}),\n\t\t\t);\n\t}\n\n\tprivate _replacePlaceholder(context: string, data: IAssistInputData): string {\n\t\tconst values = { ...data, context };\n\t\tdelete (values as Partial<IAssistInputData>).prompt;\n\n\t\tlet result = data.prompt;\n\t\tfor (const key in { ...values, context: context }) {\n\t\t\tconst placeholder = new RegExp(`{{\\\\s*${key}\\\\s*}}`, 'g');\n\t\t\tresult = result.replace(placeholder, values[key as keyof typeof values]);\n\t\t}\n\n\t\tconsole.log('prompt', result);\n\t\treturn result;\n\t}\n\n\tprivate _createPrompt(context: string, data: IAssistInputData): string {\n\t\treturn `Crie um texto genérico para preencher o campo de textarea.\n ${data.label ? `O campo tem o label ${data.label}.` : ''}\n ${data.id ? `O campo tem o id ${data.id}.` : ''}\n ${data.placeholder ? `Considere as instruções/sugestões do placeholder: ${data.placeholder}.` : ''}\n Baseie-se no contexto informado pelo usuário: '${context}'.\n O texto deve ser formal e conter informações pertinentes a um campo como este, como se um usuário real tivesse preenchido com as informações necessárias.\n O texto deve ser neutro com relação a generos, raças, religiões, etc.\n O texto deve ser impessoal e não deve conter informações pessoais do usuário.\n Não direcione o texto a ninguém, não use expressões como: caro, atenciosamente. gostaria, agradeço. O texto deve ser genérico.\n\n Exemplos de texto:\n Um campo de descrição de usuário: \"Usuário com 20 anos, estudante de engenharia, gosta de jogar futebol e assistir filmes.\"\n Outro exemplo de descrição de usuário: \"Usuário administrador, com acesso total ao sistema, responsável por gerenciar os usuários e os produtos.\"\n Um campo de descrição de um produto: \"O produto é um celular, com tela de 6 polegadas, 128GB de armazenamento, 4GB de memória RAM, câmera de 12MP e bateria de 4000mAh.\"\n Outro exemplo de descrição de produto: \"O produto é uma geladeira, com capacidade de 500 litros, 2 portas, cor branca, com freezer e gaveta de legumes.\"\n Outro exemplo de descrição de produto: \"O produto é uma camiseta, tamanho M, cor azul, 100% algodão, com estampa de um gato.\"\n\n Em caso de contexto incompleto crie um texto genérico, como se fosse um exemplo de preenchimento do campo.\n O texto é para um campo de textarea, então escreva um texto sucinto.\n Exiba apenas o texto do output`;\n\t}\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, forwardRef, Input, OnInit, viewChild, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { SpeechRecognitionService } from '@seniorsistemas/angular-components/speech-recognition';\nimport { TextAreaComponent } from '@seniorsistemas/angular-components/text-area';\nimport { IAssistService } from '../services/IAssist/iassist.service';\nimport { IAssistResponse } from '../services/IAssist/models/iassist-response';\n\n@Component({\n selector: 's-text-area-ia',\n templateUrl: './text-area-ia.component.html',\n styleUrls: ['./text-area-ia.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaIAComponent),\n multi: true,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TextAreaIAComponent implements OnInit, ControlValueAccessor {\n textArea = viewChild<TextAreaComponent>('textAreaElement');\n private static id = 0;\n @Input()\n public id = `TextAreaIA_${TextAreaIAComponent.id--}`;\n\n @Input()\n public label!: string;\n\n @Input()\n public placeholder: string = '';\n\n @Input()\n public prompt!: string;\n\n @Input()\n public readonly: boolean = false;\n\n @Input()\n public rows: number = 10;\n\n @Input()\n public cols: number = 10;\n\n @Input()\n public speechRecognition = false;\n\n @Input()\n public keepContext = false;\n\n @Input()\n speechRecognitionPlaceholder = '';\n\n @Input()\n maxLength: number | null = null;\n\n // public fields: FormField[] = [];\n public formGroup: FormGroup = new FormGroup({});\n public contextForm: FormGroup = new FormGroup({});\n public isVisible = false;\n public isLoading = false;\n public value = '';\n\n private _onChange?: (value: string) => void;\n private _onTouched?: () => void;\n\n constructor(\n private readonly _iassistService: IAssistService, // TODO: Mover pra uma pasta global\n private readonly _formBuilder: FormBuilder,\n private readonly _translateService: TranslateService,\n public speechRecognitionService: SpeechRecognitionService,\n ) {}\n\n public ngOnInit(): void {\n // this._createDialogFields();\n this._createDialogFormGroup();\n }\n\n public writeValue(value: string): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string) => void): void {\n this._onChange = onChange;\n }\n\n public registerOnTouched(onTouched: () => void): void {\n this._onTouched = onTouched;\n }\n\n public onValueChange(value: string): void {\n this.value = value;\n this._onChange?.(value);\n }\n\n public showDialog(): void {\n this.isVisible = true;\n if (this._onTouched) {\n this._onTouched();\n }\n }\n\n public hideDialog(): void {\n this.isVisible = false;\n }\n\n public onHideDialog(): void {\n if (this.isVisible === false) {\n this.formGroup.get('context')?.setValue('');\n }\n }\n\n public submitContext(): void {\n const context = this.formGroup.get('context');\n if (!context) {\n return;\n }\n this.isLoading = true;\n\n this._iassistService\n .askIA(context.value, {\n id: this.id,\n label: this.label,\n placeholder: this.placeholder,\n prompt: this.prompt,\n })\n .pipe(\n catchError((err: HttpErrorResponse) => {\n this.isLoading = false;\n return throwError(() => new Error(err.message));\n }),\n )\n .subscribe((res: IAssistResponse) => {\n this.value = res.text;\n this._onChange?.(this.value);\n this.isLoading = false;\n });\n\n this.hideDialog();\n }\n\n private _createDialogFormGroup(): void {\n this.formGroup = this._formBuilder.group({\n context: [''],\n });\n }\n}\n","<s-loading-state\n [loading]=\"isLoading\"\n [blockWindow]=\"true\"\n>\n</s-loading-state>\n\n<s-dialog\n [(visible)]=\"isVisible\"\n [escapeOnEsc]=\"false\"\n [destroyClickOutside]=\"false\"\n size=\"lg\"\n (visibleChange)=\"onHideDialog()\"\n>\n <ng-template sTemplate=\"header\">\n <div class=\"dialog-header\">\n <span class=\"iassist-icon\">\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </span>\n IAssist - Content Generator\n </div>\n </ng-template>\n\n <form [formGroup]=\"formGroup\">\n <label for=\"context\">{{ 'platform.angular_components.context' | translate }}</label>\n <s-textarea\n inputId=\"context\"\n formControlName=\"context\"\n [speechRecognition]=\"speechRecognition\"\n [keepContext]=\"keepContext\"\n />\n </form>\n\n <ng-template sTemplate=\"footer\">\n <div class=\"footer-content\">\n <s-button\n id=\"-submit-button\"\n type=\"button\"\n [label]=\"'platform.angular_components.generate_text' | translate\"\n (clicked)=\"submitContext()\"\n sTooltip=\"(ALT + SHIFT + S)\"\n showDelay=\"500\"\n >\n </s-button>\n <s-button\n id=\"-cancel-button\"\n type=\"button\"\n priority=\"link\"\n [label]=\"'platform.angular_components.cancel' | translate\"\n (clicked)=\"hideDialog()\"\n sTooltip=\"(ALT + SHIFT + C)\"\n showDelay=\"500\"\n >\n </s-button>\n </div>\n </ng-template>\n</s-dialog>\n\n<div class=\"textarea-ia\">\n <s-textarea\n #textAreaElement\n [inputId]=\"id\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [rows]=\"rows\"\n [readOnly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [keepContext]=\"keepContext\"\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\n [maxLength]=\"maxLength\"\n [speechRecognition]=\"speechRecognition\"\n >\n </s-textarea>\n <!--TODO: Tooltip em propriedade-->\n <button\n class=\"iassist-button\"\n [class.speech-recognition]=\"speechRecognition && speechRecognitionService.hasSupportSpeechRecognition\"\n (click)=\"showDialog()\"\n sTooltip=\"IAssist - Content Generator\"\n >\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </button>\n</div>\n\n<ng-template #iassistIcon>\n <svg\n style=\"width: 100%; height: 100%\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.81451 18.1054L5.99593 17.6059L7.52166 13.4099L7.60877 13.1726L7.61277 13.1614L7.94285 12.2543L8.01159 12.0648L8.05394 11.949L5.2998 8.52426L5.02726 8.18379C5.00569 8.15821 4.9881 8.13104 4.97292 8.10226C4.90099 7.9632 4.85063 7.81294 4.82186 7.6531C4.73075 7.1344 4.90418 6.60771 5.28382 6.24326C5.29421 6.23447 5.3038 6.22567 5.31419 6.21688L5.47164 6.0914L9.3439 3.00238L9.5469 2.84094L9.57088 2.82096L10.4101 2.15041L11.8007 1.04188C11.2181 0.925188 10.6163 0.863647 10.0001 0.863647C4.95374 0.863647 0.863281 4.9541 0.863281 9.99963C0.863281 13.5346 2.87254 16.5989 5.80971 18.1182\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.099 1.83472L13.9495 2.24632L11.997 7.61074L11.9427 7.7594L11.9003 7.87369L14.7448 11.4103C14.7463 11.4127 14.7479 11.4143 14.7495 11.4167L14.9414 11.654C14.9541 11.67 14.9661 11.6868 14.9765 11.7044C15.0764 11.8698 15.1444 12.0505 15.1779 12.2431C15.273 12.7826 15.0812 13.3284 14.676 13.6897C14.656 13.7129 14.6345 13.7344 14.6105 13.7536L11.8563 15.9507L11.6789 16.0922L11.6022 16.1537L10.7406 16.8402V16.841L10.3937 17.1176L9.85747 17.5452L9.39951 17.9112L8.11035 18.9398C8.72016 19.0677 9.35155 19.1364 9.99973 19.1364C15.0461 19.1364 19.1365 15.046 19.1365 9.99964C19.1365 6.42789 17.0857 3.33727 14.099 1.83472Z\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.7287 12.3222C14.7047 12.1832 14.6551 12.0545 14.5864 11.941L14.3954 11.7036C14.3954 11.7036 14.3946 11.7028 14.3938 11.7028L11.3839 7.96005L10.5031 6.86511L10.4256 6.7676L9.03255 5.03487L8.83674 4.79191C8.79278 4.71678 8.75681 4.63446 8.73204 4.54814C8.72085 4.51058 8.71286 4.47222 8.70566 4.43465C8.68568 4.32196 8.68408 4.21007 8.69847 4.10217L8.62334 4.16291L8.44511 4.30438L5.75731 6.44871L5.60066 6.57339C5.34011 6.82275 5.20584 7.19279 5.27218 7.57482C5.29296 7.68751 5.32892 7.79541 5.37927 7.89292C5.37927 7.89292 5.37927 7.89292 5.38007 7.89371L5.6566 8.23818L8.57139 11.8627L8.63293 11.9394L9.53047 13.0559L9.59041 13.1303L9.98363 13.6186L11.0178 14.9046C11.0186 14.9054 11.0194 14.9069 11.0202 14.9077L11.1361 15.0516V15.0524C11.2184 15.1755 11.2768 15.317 11.3048 15.4728C11.3239 15.5807 11.3263 15.6878 11.3143 15.7925L11.3175 15.7965L11.3943 15.735L11.5717 15.5935L14.3266 13.3964L14.3218 13.3908C14.6335 13.1438 14.8022 12.7394 14.7287 12.3222Z\"\n fill=\"#F3F3F5\"\n />\n <path\n d=\"M10.6822 15.0082C10.6814 15.0074 10.6806 15.0058 10.6806 15.005L10.5672 14.8643L10.3809 14.6325L10.3282 14.567L10.2211 14.4335L9.40028 13.4129L9.32835 13.3242L8.77289 12.6345L8.68098 12.5194L8.44121 12.2205L8.37168 12.4099L8.04159 13.317L8.0376 13.329L7.95128 13.5664L6.42475 17.7623L6.24333 18.2618L5.90605 19.1881L5.73262 19.6645C5.73182 19.6661 5.73102 19.6677 5.73102 19.6685C5.72863 19.6749 5.72703 19.6821 5.72543 19.6885C5.71584 19.7228 5.71424 19.758 5.72063 19.7948C5.74461 19.929 5.87329 20.0193 6.00836 19.9962C6.04112 19.9898 6.07229 19.9778 6.09867 19.9602C6.09867 19.9602 6.09947 19.9602 6.10027 19.9594L6.14103 19.9266L7.39422 18.9268L9.11496 17.5537L9.57292 17.1877L10.1092 16.7601L10.4561 16.4827L10.4537 16.4811C10.7582 16.2382 10.9236 15.8402 10.8509 15.4294C10.8237 15.2735 10.7654 15.1313 10.6822 15.0082Z\"\n fill=\"#0C847B\"\n />\n <path\n d=\"M9.17644 4.56325C9.2124 4.68713 9.26915 4.80062 9.34268 4.90053C9.34348 4.90053 9.34428 4.90213 9.34428 4.90213L9.40342 4.97645C9.40502 4.97805 9.40582 4.97885 9.40662 4.98045L9.56806 5.17946L9.64878 5.28096L9.67915 5.31932L9.8414 5.51993L10.5559 6.40947L10.7054 6.59569L11.2169 7.23188L11.5142 7.60192L11.5693 7.45247L13.5202 2.08964L14.1596 0.332135C14.1596 0.330536 14.1604 0.328139 14.1612 0.32654C14.174 0.288177 14.1772 0.246617 14.17 0.205058C14.1468 0.0699879 14.0182 -0.0195258 13.8823 0.00365186C13.8407 0.0116442 13.8024 0.028428 13.7712 0.0540033L12.578 1.00589L12.498 1.06982L10.6958 2.50844L9.85658 3.17819L9.8326 3.19737L9.6296 3.35961L9.45297 3.50028C9.2116 3.73925 9.08692 4.08931 9.15006 4.44976C9.15726 4.48813 9.16525 4.52649 9.17644 4.56325Z\"\n fill=\"#0C847B\"\n />\n </svg>\n</ng-template>\n","import { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\n\nimport { TranslateModule } from \"@ngx-translate/core\";\n\nimport { TextAreaIAComponent } from \"./text-area-ia.component\";\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport { ButtonModule } from \"@seniorsistemas/angular-components/button\";\nimport { LoadingStateModule } from \"@seniorsistemas/angular-components/loading-state\";\nimport { TextAreaModule } from \"@seniorsistemas/angular-components/text-area\";\nimport { DialogComponent } from \"@seniorsistemas/angular-components/dialog\";\nimport { TemplateModule } from \"@seniorsistemas/angular-components/template\";\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n ButtonModule,\n LoadingStateModule,\n NgTemplateOutlet,\n TextAreaModule,\n DialogComponent,\n TemplateModule\n ],\n declarations: [TextAreaIAComponent],\n exports: [TextAreaIAComponent],\n})\nexport class TextAreaIAModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.IAssistService","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-text-area-ia.mjs","sources":["../../projects/angular-components/text-area-ia/src/lib/services/IAssist/iassist.service.ts","../../projects/angular-components/text-area-ia/src/lib/text-area-ia/text-area-ia.component.ts","../../projects/angular-components/text-area-ia/src/lib/text-area-ia/text-area-ia.component.html","../../projects/angular-components/text-area-ia/src/lib/text-area-ia/text-area-ia.module.ts","../../projects/angular-components/text-area-ia/src/seniorsistemas-angular-components-text-area-ia.ts"],"sourcesContent":["/* eslint-disable max-len */\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { IAssistInputData } from './models/iassist-input-data';\nimport { IAssistResponse } from './models/iassist-response';\nimport { ToastService } from \"@seniorsistemas/angular-components/toast\";\n\n@Injectable({ providedIn: 'root' })\nexport class IAssistService {\n\tconstructor(\n\t\tprivate readonly http: HttpClient,\n\t\tprivate readonly toastService: ToastService,\n\t) { }\n\n\tpublic askIA(context: string, data: IAssistInputData): Observable<IAssistResponse> {\n\t\tconst prompt: string = data.prompt\n\t\t\t? this._replacePlaceholder(context, data)\n\t\t\t: this._createPrompt(context, data);\n\n\t\treturn this.http\n\t\t\t.post<IAssistResponse>('platform/iassist/api/latest/completions', {\n\t\t\t\tprompt,\n\t\t\t\tprovider: 'OPEN_AI',\n\t\t\t\tparameters: {\n\t\t\t\t\tmodel: 'gpt-3.5-turbo',\n\t\t\t\t\tmax_tokens: 700,\n\t\t\t\t\ttemperature: 1,\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(\n\t\t\t\tcatchError((err: HttpErrorResponse) => {\n\t\t\t\t\tthis.toastService.show({\n\t\t\t\t\t\tseverity: 'error',\n\t\t\t\t\t\ttitle: err.status ? String(err.status) : 'Error',\n\t\t\t\t\t\ttext: (err.error && err.error.message) || err.statusText || err.message || 'Error',\n\t\t\t\t\t});\n\t\t\t\t\treturn throwError(() => new Error(err.message));\n\t\t\t\t}),\n\t\t\t);\n\t}\n\n\tprivate _replacePlaceholder(context: string, data: IAssistInputData): string {\n\t\tconst values = { ...data, context };\n\t\tdelete (values as Partial<IAssistInputData>).prompt;\n\n\t\tlet result = data.prompt;\n\t\tfor (const key in { ...values, context: context }) {\n\t\t\tconst placeholder = new RegExp(`{{\\\\s*${key}\\\\s*}}`, 'g');\n\t\t\tresult = result.replace(placeholder, values[key as keyof typeof values]);\n\t\t}\n\n\t\tconsole.log('prompt', result);\n\t\treturn result;\n\t}\n\n\tprivate _createPrompt(context: string, data: IAssistInputData): string {\n\t\treturn `Crie um texto genérico para preencher o campo de textarea.\n ${data.label ? `O campo tem o label ${data.label}.` : ''}\n ${data.id ? `O campo tem o id ${data.id}.` : ''}\n ${data.placeholder ? `Considere as instruções/sugestões do placeholder: ${data.placeholder}.` : ''}\n Baseie-se no contexto informado pelo usuário: '${context}'.\n O texto deve ser formal e conter informações pertinentes a um campo como este, como se um usuário real tivesse preenchido com as informações necessárias.\n O texto deve ser neutro com relação a generos, raças, religiões, etc.\n O texto deve ser impessoal e não deve conter informações pessoais do usuário.\n Não direcione o texto a ninguém, não use expressões como: caro, atenciosamente. gostaria, agradeço. O texto deve ser genérico.\n\n Exemplos de texto:\n Um campo de descrição de usuário: \"Usuário com 20 anos, estudante de engenharia, gosta de jogar futebol e assistir filmes.\"\n Outro exemplo de descrição de usuário: \"Usuário administrador, com acesso total ao sistema, responsável por gerenciar os usuários e os produtos.\"\n Um campo de descrição de um produto: \"O produto é um celular, com tela de 6 polegadas, 128GB de armazenamento, 4GB de memória RAM, câmera de 12MP e bateria de 4000mAh.\"\n Outro exemplo de descrição de produto: \"O produto é uma geladeira, com capacidade de 500 litros, 2 portas, cor branca, com freezer e gaveta de legumes.\"\n Outro exemplo de descrição de produto: \"O produto é uma camiseta, tamanho M, cor azul, 100% algodão, com estampa de um gato.\"\n\n Em caso de contexto incompleto crie um texto genérico, como se fosse um exemplo de preenchimento do campo.\n O texto é para um campo de textarea, então escreva um texto sucinto.\n Exiba apenas o texto do output`;\n\t}\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, forwardRef, input, Input, OnInit, viewChild, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { SpeechRecognitionService } from '@seniorsistemas/angular-components/speech-recognition';\nimport { TextAreaComponent } from '@seniorsistemas/angular-components/text-area';\nimport { IAssistService } from '../services/IAssist/iassist.service';\nimport { IAssistResponse } from '../services/IAssist/models/iassist-response';\n\n@Component({\n selector: 's-text-area-ia',\n templateUrl: './text-area-ia.component.html',\n styleUrls: ['./text-area-ia.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaIAComponent),\n multi: true,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TextAreaIAComponent implements OnInit, ControlValueAccessor {\n textArea = viewChild<TextAreaComponent>('textAreaElement');\n private static id = 0;\n @Input()\n public id = `TextAreaIA_${TextAreaIAComponent.id--}`;\n\n @Input()\n public label!: string;\n\n @Input()\n public placeholder: string = '';\n\n @Input()\n public prompt!: string;\n\n @Input()\n public readonly: boolean = false;\n\n @Input()\n public rows: number = 10;\n\n @Input()\n public cols: number = 10;\n\n @Input()\n public speechRecognition = false;\n\n @Input()\n public keepContext = false;\n\n @Input()\n speechRecognitionPlaceholder = '';\n\n @Input()\n maxLength: number | null = null;\n\n textAreaStyle = input<Partial<CSSStyleDeclaration>>({});\n\n public formGroup: FormGroup = new FormGroup({});\n public contextForm: FormGroup = new FormGroup({});\n public isVisible = false;\n public isLoading = false;\n public value = '';\n\n private _onChange?: (value: string) => void;\n private _onTouched?: () => void;\n\n constructor(\n private readonly _iassistService: IAssistService, // TODO: Mover pra uma pasta global\n private readonly _formBuilder: FormBuilder,\n private readonly _translateService: TranslateService,\n public speechRecognitionService: SpeechRecognitionService,\n ) {}\n\n public ngOnInit(): void {\n // this._createDialogFields();\n this._createDialogFormGroup();\n }\n\n public writeValue(value: string): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string) => void): void {\n this._onChange = onChange;\n }\n\n public registerOnTouched(onTouched: () => void): void {\n this._onTouched = onTouched;\n }\n\n public onValueChange(value: string): void {\n this.value = value;\n this._onChange?.(value);\n }\n\n public showDialog(): void {\n this.isVisible = true;\n if (this._onTouched) {\n this._onTouched();\n }\n }\n\n public hideDialog(): void {\n this.isVisible = false;\n }\n\n public onHideDialog(): void {\n if (this.isVisible === false) {\n this.formGroup.get('context')?.setValue('');\n }\n }\n\n public submitContext(): void {\n const context = this.formGroup.get('context');\n if (!context) {\n return;\n }\n this.isLoading = true;\n\n this._iassistService\n .askIA(context.value, {\n id: this.id,\n label: this.label,\n placeholder: this.placeholder,\n prompt: this.prompt,\n })\n .pipe(\n catchError((err: HttpErrorResponse) => {\n this.isLoading = false;\n return throwError(() => new Error(err.message));\n }),\n )\n .subscribe((res: IAssistResponse) => {\n this.value = res.text;\n this._onChange?.(this.value);\n this.isLoading = false;\n });\n\n this.hideDialog();\n }\n\n private _createDialogFormGroup(): void {\n this.formGroup = this._formBuilder.group({\n context: [''],\n });\n }\n}\n\n","<s-loading-state\n [loading]=\"isLoading\"\n [blockWindow]=\"true\"\n>\n</s-loading-state>\n\n<s-dialog\n [(visible)]=\"isVisible\"\n [escapeOnEsc]=\"false\"\n [destroyClickOutside]=\"false\"\n size=\"lg\"\n (visibleChange)=\"onHideDialog()\"\n>\n <ng-template sTemplate=\"header\">\n <div class=\"dialog-header\">\n <span class=\"iassist-icon\">\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </span>\n IAssist - Content Generator\n </div>\n </ng-template>\n\n <form [formGroup]=\"formGroup\">\n <label for=\"context\">{{ 'platform.angular_components.context' | translate }}</label>\n <s-textarea\n inputId=\"context\"\n formControlName=\"context\"\n [speechRecognition]=\"speechRecognition\"\n [keepContext]=\"keepContext\"\n [style]=\"textAreaStyle()\"\n />\n </form>\n\n <ng-template sTemplate=\"footer\">\n <div class=\"footer-content\">\n <s-button\n id=\"-submit-button\"\n type=\"button\"\n [label]=\"'platform.angular_components.generate_text' | translate\"\n (clicked)=\"submitContext()\"\n sTooltip=\"(ALT + SHIFT + S)\"\n showDelay=\"500\"\n >\n </s-button>\n <s-button\n id=\"-cancel-button\"\n type=\"button\"\n priority=\"link\"\n [label]=\"'platform.angular_components.cancel' | translate\"\n (clicked)=\"hideDialog()\"\n sTooltip=\"(ALT + SHIFT + C)\"\n showDelay=\"500\"\n >\n </s-button>\n </div>\n </ng-template>\n</s-dialog>\n\n<div class=\"textarea-ia\">\n <s-textarea\n #textAreaElement\n [inputId]=\"id\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [rows]=\"rows\"\n [readOnly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [keepContext]=\"keepContext\"\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\n [maxLength]=\"maxLength\"\n [speechRecognition]=\"speechRecognition\"\n >\n </s-textarea>\n <!--TODO: Tooltip em propriedade-->\n <button\n class=\"iassist-button\"\n [class.speech-recognition]=\"speechRecognition && speechRecognitionService.hasSupportSpeechRecognition\"\n (click)=\"showDialog()\"\n sTooltip=\"IAssist - Content Generator\"\n >\n <ng-container [ngTemplateOutlet]=\"iassistIcon\"></ng-container>\n </button>\n</div>\n\n<ng-template #iassistIcon>\n <svg\n style=\"width: 100%; height: 100%\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.81451 18.1054L5.99593 17.6059L7.52166 13.4099L7.60877 13.1726L7.61277 13.1614L7.94285 12.2543L8.01159 12.0648L8.05394 11.949L5.2998 8.52426L5.02726 8.18379C5.00569 8.15821 4.9881 8.13104 4.97292 8.10226C4.90099 7.9632 4.85063 7.81294 4.82186 7.6531C4.73075 7.1344 4.90418 6.60771 5.28382 6.24326C5.29421 6.23447 5.3038 6.22567 5.31419 6.21688L5.47164 6.0914L9.3439 3.00238L9.5469 2.84094L9.57088 2.82096L10.4101 2.15041L11.8007 1.04188C11.2181 0.925188 10.6163 0.863647 10.0001 0.863647C4.95374 0.863647 0.863281 4.9541 0.863281 9.99963C0.863281 13.5346 2.87254 16.5989 5.80971 18.1182\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.099 1.83472L13.9495 2.24632L11.997 7.61074L11.9427 7.7594L11.9003 7.87369L14.7448 11.4103C14.7463 11.4127 14.7479 11.4143 14.7495 11.4167L14.9414 11.654C14.9541 11.67 14.9661 11.6868 14.9765 11.7044C15.0764 11.8698 15.1444 12.0505 15.1779 12.2431C15.273 12.7826 15.0812 13.3284 14.676 13.6897C14.656 13.7129 14.6345 13.7344 14.6105 13.7536L11.8563 15.9507L11.6789 16.0922L11.6022 16.1537L10.7406 16.8402V16.841L10.3937 17.1176L9.85747 17.5452L9.39951 17.9112L8.11035 18.9398C8.72016 19.0677 9.35155 19.1364 9.99973 19.1364C15.0461 19.1364 19.1365 15.046 19.1365 9.99964C19.1365 6.42789 17.0857 3.33727 14.099 1.83472Z\"\n fill=\"#0FA389\"\n />\n <path\n d=\"M14.7287 12.3222C14.7047 12.1832 14.6551 12.0545 14.5864 11.941L14.3954 11.7036C14.3954 11.7036 14.3946 11.7028 14.3938 11.7028L11.3839 7.96005L10.5031 6.86511L10.4256 6.7676L9.03255 5.03487L8.83674 4.79191C8.79278 4.71678 8.75681 4.63446 8.73204 4.54814C8.72085 4.51058 8.71286 4.47222 8.70566 4.43465C8.68568 4.32196 8.68408 4.21007 8.69847 4.10217L8.62334 4.16291L8.44511 4.30438L5.75731 6.44871L5.60066 6.57339C5.34011 6.82275 5.20584 7.19279 5.27218 7.57482C5.29296 7.68751 5.32892 7.79541 5.37927 7.89292C5.37927 7.89292 5.37927 7.89292 5.38007 7.89371L5.6566 8.23818L8.57139 11.8627L8.63293 11.9394L9.53047 13.0559L9.59041 13.1303L9.98363 13.6186L11.0178 14.9046C11.0186 14.9054 11.0194 14.9069 11.0202 14.9077L11.1361 15.0516V15.0524C11.2184 15.1755 11.2768 15.317 11.3048 15.4728C11.3239 15.5807 11.3263 15.6878 11.3143 15.7925L11.3175 15.7965L11.3943 15.735L11.5717 15.5935L14.3266 13.3964L14.3218 13.3908C14.6335 13.1438 14.8022 12.7394 14.7287 12.3222Z\"\n fill=\"#F3F3F5\"\n />\n <path\n d=\"M10.6822 15.0082C10.6814 15.0074 10.6806 15.0058 10.6806 15.005L10.5672 14.8643L10.3809 14.6325L10.3282 14.567L10.2211 14.4335L9.40028 13.4129L9.32835 13.3242L8.77289 12.6345L8.68098 12.5194L8.44121 12.2205L8.37168 12.4099L8.04159 13.317L8.0376 13.329L7.95128 13.5664L6.42475 17.7623L6.24333 18.2618L5.90605 19.1881L5.73262 19.6645C5.73182 19.6661 5.73102 19.6677 5.73102 19.6685C5.72863 19.6749 5.72703 19.6821 5.72543 19.6885C5.71584 19.7228 5.71424 19.758 5.72063 19.7948C5.74461 19.929 5.87329 20.0193 6.00836 19.9962C6.04112 19.9898 6.07229 19.9778 6.09867 19.9602C6.09867 19.9602 6.09947 19.9602 6.10027 19.9594L6.14103 19.9266L7.39422 18.9268L9.11496 17.5537L9.57292 17.1877L10.1092 16.7601L10.4561 16.4827L10.4537 16.4811C10.7582 16.2382 10.9236 15.8402 10.8509 15.4294C10.8237 15.2735 10.7654 15.1313 10.6822 15.0082Z\"\n fill=\"#0C847B\"\n />\n <path\n d=\"M9.17644 4.56325C9.2124 4.68713 9.26915 4.80062 9.34268 4.90053C9.34348 4.90053 9.34428 4.90213 9.34428 4.90213L9.40342 4.97645C9.40502 4.97805 9.40582 4.97885 9.40662 4.98045L9.56806 5.17946L9.64878 5.28096L9.67915 5.31932L9.8414 5.51993L10.5559 6.40947L10.7054 6.59569L11.2169 7.23188L11.5142 7.60192L11.5693 7.45247L13.5202 2.08964L14.1596 0.332135C14.1596 0.330536 14.1604 0.328139 14.1612 0.32654C14.174 0.288177 14.1772 0.246617 14.17 0.205058C14.1468 0.0699879 14.0182 -0.0195258 13.8823 0.00365186C13.8407 0.0116442 13.8024 0.028428 13.7712 0.0540033L12.578 1.00589L12.498 1.06982L10.6958 2.50844L9.85658 3.17819L9.8326 3.19737L9.6296 3.35961L9.45297 3.50028C9.2116 3.73925 9.08692 4.08931 9.15006 4.44976C9.15726 4.48813 9.16525 4.52649 9.17644 4.56325Z\"\n fill=\"#0C847B\"\n />\n </svg>\n</ng-template>\n\n","import { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\n\nimport { TranslateModule } from \"@ngx-translate/core\";\n\nimport { TextAreaIAComponent } from \"./text-area-ia.component\";\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport { ButtonModule } from \"@seniorsistemas/angular-components/button\";\nimport { LoadingStateModule } from \"@seniorsistemas/angular-components/loading-state\";\nimport { TextAreaModule } from \"@seniorsistemas/angular-components/text-area\";\nimport { DialogComponent } from \"@seniorsistemas/angular-components/dialog\";\nimport { TemplateModule } from \"@seniorsistemas/angular-components/template\";\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n ButtonModule,\n LoadingStateModule,\n NgTemplateOutlet,\n TextAreaModule,\n DialogComponent,\n TemplateModule\n ],\n declarations: [TextAreaIAComponent],\n exports: [TextAreaIAComponent],\n})\nexport class TextAreaIAModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.IAssistService","i2"],"mappings":"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"}
|
|
@@ -604,11 +604,11 @@ class TieredMenuComponent {
|
|
|
604
604
|
});
|
|
605
605
|
}
|
|
606
606
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TieredMenuComponent, deps: [{ token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: TieredMenuService }, { token: TieredMenuEventService }], target: i0.ɵɵFactoryTarget.Component });
|
|
607
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TieredMenuComponent, selector: "s-tiered-menu", outputs: { destroyRequest: "destroyRequest" }, host: { listeners: { "window:resize": "onResize()", "document:click": "onDocumentClick($event)", "document:keydown": "onKeydownHandler($event)" } }, ngImport: i0, template: "<div\n class=\"menu\"\n [ngStyle]=\"{\n left: left + 'px',\n top: top + 'px',\n }\"\n>\n <!-- <div *ngFor=\"let item of items\">\n <s-tiered-menu-item\n *ngIf=\"item.visible && !item.divider\"\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [highlight]=\"item.isOpen\"\n triggerEvent=\"hover\"\n [closeOnClick]=\"false\"\n >\n </s-tiered-menu-item>\n <s-tiered-menu-divider *ngIf=\"item.divider\"></s-tiered-menu-divider>\n </div> -->\n @for(item of items; track $index) {\n @if(item.visible && !item.divider) {\n <s-tiered-menu-item\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [highlight]=\"item.isOpen\"\n triggerEvent=\"hover\"\n [closeOnClick]=\"false\"/>\n }\n @if (item.divider) {\n <s-tiered-menu-divider/>\n }\n }\n</div>\n", styles: [".menu{background-color:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 12px #0000001a;display:inline-flex;flex-direction:column;max-height:100vh;min-width:176px;padding:4px 0;overflow-y:auto;position:absolute;z-index:9999}\n"], dependencies: [{ kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TieredMenuItemComponent, selector: "s-tiered-menu-item", inputs: ["item", "focused", "highlight", "triggerEvent", "closeOnClick"] }, { kind: "component", type: TieredMenuDividerComponent, selector: "s-tiered-menu-divider" }] });
|
|
607
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TieredMenuComponent, selector: "s-tiered-menu", outputs: { destroyRequest: "destroyRequest" }, host: { listeners: { "window:resize": "onResize()", "document:click": "onDocumentClick($event)", "document:keydown": "onKeydownHandler($event)" } }, ngImport: i0, template: "<div\n class=\"menu\"\n [ngStyle]=\"{\n left: left + 'px',\n top: top + 'px',\n }\"\n>\n <!-- <div *ngFor=\"let item of items\">\n <s-tiered-menu-item\n *ngIf=\"item.visible && !item.divider\"\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [highlight]=\"item.isOpen\"\n fieldUtils.triggerEvent=\"hover\"\n [closeOnClick]=\"false\"\n >\n </s-tiered-menu-item>\n <s-tiered-menu-divider *ngIf=\"item.divider\"></s-tiered-menu-divider>\n </div> -->\n @for (item of items; track $index) {\n @if (item.visible && !item.divider) {\n <s-tiered-menu-item\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [highlight]=\"item.isOpen\"\n fieldUtils.triggerEvent=\"hover\"\n [closeOnClick]=\"false\"\n />\n }\n @if (item.divider) {\n <s-tiered-menu-divider />\n }\n }\n</div>\n\n", styles: [".menu{background-color:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 12px #0000001a;display:inline-flex;flex-direction:column;max-height:100vh;min-width:176px;padding:4px 0;overflow-y:auto;position:absolute;z-index:9999}\n"], dependencies: [{ kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TieredMenuItemComponent, selector: "s-tiered-menu-item", inputs: ["item", "focused", "highlight", "triggerEvent", "closeOnClick"] }, { kind: "component", type: TieredMenuDividerComponent, selector: "s-tiered-menu-divider" }] });
|
|
608
608
|
}
|
|
609
609
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TieredMenuComponent, decorators: [{
|
|
610
610
|
type: Component,
|
|
611
|
-
args: [{ selector: 's-tiered-menu', template: "<div\n class=\"menu\"\n [ngStyle]=\"{\n left: left + 'px',\n top: top + 'px',\n }\"\n>\n <!-- <div *ngFor=\"let item of items\">\n <s-tiered-menu-item\n *ngIf=\"item.visible && !item.divider\"\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [highlight]=\"item.isOpen\"\n triggerEvent=\"hover\"\n [closeOnClick]=\"false\"\n >\n </s-tiered-menu-item>\n <s-tiered-menu-divider *ngIf=\"item.divider\"></s-tiered-menu-divider>\n </div> -->\n @for(item of items; track $index) {\n @if(item.visible && !item.divider) {\n <s-tiered-menu-item\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [highlight]=\"item.isOpen\"\n triggerEvent=\"hover\"\n [closeOnClick]=\"false\"/>\n }\n @if (item.divider) {\n <s-tiered-menu-divider/>\n }\n }\n</div>\n", styles: [".menu{background-color:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 12px #0000001a;display:inline-flex;flex-direction:column;max-height:100vh;min-width:176px;padding:4px 0;overflow-y:auto;position:absolute;z-index:9999}\n"] }]
|
|
611
|
+
args: [{ selector: 's-tiered-menu', template: "<div\n class=\"menu\"\n [ngStyle]=\"{\n left: left + 'px',\n top: top + 'px',\n }\"\n>\n <!-- <div *ngFor=\"let item of items\">\n <s-tiered-menu-item\n *ngIf=\"item.visible && !item.divider\"\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [highlight]=\"item.isOpen\"\n fieldUtils.triggerEvent=\"hover\"\n [closeOnClick]=\"false\"\n >\n </s-tiered-menu-item>\n <s-tiered-menu-divider *ngIf=\"item.divider\"></s-tiered-menu-divider>\n </div> -->\n @for (item of items; track $index) {\n @if (item.visible && !item.divider) {\n <s-tiered-menu-item\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [highlight]=\"item.isOpen\"\n fieldUtils.triggerEvent=\"hover\"\n [closeOnClick]=\"false\"\n />\n }\n @if (item.divider) {\n <s-tiered-menu-divider />\n }\n }\n</div>\n\n", styles: [".menu{background-color:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 12px #0000001a;display:inline-flex;flex-direction:column;max-height:100vh;min-width:176px;padding:4px 0;overflow-y:auto;position:absolute;z-index:9999}\n"] }]
|
|
612
612
|
}], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: TieredMenuService }, { type: TieredMenuEventService }], propDecorators: { destroyRequest: [{
|
|
613
613
|
type: Output
|
|
614
614
|
}], onResize: [{
|