@seniorsistemas/angular-components 19.3.1 → 19.3.2
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/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.d.ts +1 -2
- package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +0 -1
- package/chips/lib/chips/chips/chips.component.d.ts +1 -2
- package/code-editor/lib/code-editor/code-editor.component.d.ts +0 -2
- package/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.d.ts +1 -3
- package/common/lib/svg-factory/svg-factory.directive.d.ts +1 -2
- package/content-generator/lib/content-generator/content-generator.component.d.ts +1 -6
- package/content-generator/lib/services/IAssist/iassist.service.d.ts +0 -3
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +0 -3
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.d.ts +0 -2
- package/currency/lib/currency.service.d.ts +0 -2
- package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +3 -7
- package/custom-fields/lib/custom-fields/custom-fields.service.d.ts +0 -2
- package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +0 -2
- package/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.d.ts +1 -2
- package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts +1 -3
- package/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.d.ts +1 -2
- package/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.d.ts +1 -3
- package/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.d.ts +1 -2
- package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +1 -3
- package/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.d.ts +1 -2
- package/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.d.ts +1 -3
- package/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.d.ts +1 -2
- package/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.d.ts +1 -2
- package/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.d.ts +1 -2
- package/empty-state/lib/empty-state/go-back/go-back.component.d.ts +0 -2
- package/esm2022/badge/lib/badge/badge.component.mjs +3 -3
- package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +10 -13
- package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +7 -11
- package/esm2022/chips/lib/chips/chips/chips.component.mjs +5 -8
- package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +6 -9
- package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.mjs +8 -13
- package/esm2022/common/lib/svg-factory/svg-factory.directive.mjs +6 -10
- package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +24 -30
- package/esm2022/content-generator/lib/services/IAssist/iassist.service.mjs +9 -12
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +15 -23
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +6 -9
- package/esm2022/currency/lib/currency.service.mjs +6 -9
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +17 -25
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +6 -9
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +22 -28
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +6 -10
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +12 -17
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +5 -8
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.mjs +12 -17
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +5 -8
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +13 -19
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.mjs +6 -10
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +14 -19
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +5 -8
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +5 -8
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +5 -8
- package/esm2022/empty-state/lib/empty-state/go-back/go-back.component.mjs +8 -11
- package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +17 -21
- package/esm2022/gantt/lib/gantt/components/gantt/gantt.mjs +6 -2
- package/esm2022/gantt/lib/gantt/gantt.component.mjs +8 -4
- package/esm2022/global-search/lib/global-search/global-search.component.mjs +5 -8
- package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +7 -12
- package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +5 -8
- package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +6 -10
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.mjs +9 -12
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +14 -17
- package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +12 -15
- package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +15 -19
- package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +5 -8
- package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +10 -13
- package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +10 -13
- package/esm2022/kanban/lib/kanban/kanban.component.mjs +23 -17
- package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +10 -16
- package/esm2022/locale/lib/locale/locale.service.mjs +8 -12
- package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +6 -9
- package/esm2022/locale/lib/locale/pipes/localized-currency.pipe.mjs +6 -9
- package/esm2022/locale/lib/locale/pipes/localized-date.pipe.mjs +6 -9
- package/esm2022/locale/lib/locale/pipes/localized-number.pipe.mjs +6 -9
- package/esm2022/locale/lib/locale/pipes/localized-time.pipe.mjs +6 -9
- package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +6 -9
- package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +5 -8
- package/esm2022/numeric/lib/numeric.pipe.mjs +8 -12
- package/esm2022/numeric/lib/numeric.service.mjs +6 -9
- package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +8 -11
- package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +10 -16
- package/esm2022/picklist/lib/picklist/picklist.component.mjs +5 -8
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +15 -19
- package/esm2022/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.mjs +8 -11
- package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +5 -4
- package/esm2022/select-button/lib/select-button/select-button.component.mjs +3 -3
- package/esm2022/shared/lib/accessibility/paginator-accessibility.directive.mjs +8 -13
- package/esm2022/shared/lib/accessibility/table-checkbox-accessibility.directive.mjs +5 -8
- package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +9 -12
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +12 -16
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.service.mjs +12 -16
- package/esm2022/speech-recognition/lib/speech-recognition/text-to-speech.service.mjs +8 -10
- package/esm2022/split-button/lib/split-button/split-button.component.mjs +5 -8
- package/esm2022/table/lib/table/row-toggler/row-toggler.directive.mjs +7 -7
- package/esm2022/table/lib/table/table-column/table-columns.component.mjs +19 -28
- package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +9 -16
- package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +11 -13
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +5 -8
- package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +8 -11
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +16 -24
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +8 -11
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +12 -16
- package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +13 -25
- package/esm2022/toast/lib/toast/toast.service.mjs +7 -12
- package/esm2022/tree/lib/tree/components/tree-node-item/tree-node-item.component.mjs +10 -14
- package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +6 -10
- package/fesm2022/seniorsistemas-angular-components-badge.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +10 -12
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +6 -10
- package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +4 -7
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +10 -18
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -9
- package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +29 -40
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +16 -28
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-currency.mjs +5 -8
- package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +45 -59
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +108 -157
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +4 -8
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +17 -22
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs +12 -4
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +4 -7
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +6 -11
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +4 -7
- package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +5 -9
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +29 -38
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-insights.mjs +17 -22
- package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +4 -7
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs +30 -30
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +7 -15
- package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-locale.mjs +22 -41
- package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +5 -8
- package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +4 -7
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-numeric.mjs +9 -16
- package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +13 -24
- package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs +4 -7
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +14 -21
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +11 -14
- package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs +10 -18
- package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +7 -10
- package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +23 -34
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs +4 -7
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs +10 -12
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs +29 -46
- package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +4 -7
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +6 -9
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +30 -55
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-toast.mjs +6 -11
- package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tree.mjs +9 -14
- package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +5 -9
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
- package/file-picker/lib/file-picker/file-picker.component.d.ts +0 -4
- package/file-upload/README.md +9 -37
- package/gantt/lib/gantt/gantt.component.d.ts +1 -0
- package/global-search/lib/global-search/global-search.component.d.ts +1 -2
- package/ia-insight/README.md +17 -0
- package/image-cropper/lib/image-cropper/image-cropper.service.d.ts +1 -2
- package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +1 -2
- package/info-sign/lib/info-sign/info-sign.directive.d.ts +1 -2
- package/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.d.ts +1 -2
- package/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +0 -2
- package/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +0 -2
- package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +0 -4
- package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +1 -2
- package/kanban/lib/kanban/components/kanban-column/kanban-column.component.d.ts +0 -2
- package/kanban/lib/kanban/components/kanban-item/kanban-item.component.d.ts +0 -2
- package/kanban/lib/kanban/kanban.component.d.ts +2 -2
- package/loading-state/lib/loading-state/loading-state.directive.d.ts +1 -2
- package/locale/lib/locale/locale.service.d.ts +0 -3
- package/locale/lib/locale/pipes/localized-bignumber.pipe.d.ts +0 -2
- package/locale/lib/locale/pipes/localized-currency.pipe.d.ts +0 -2
- package/locale/lib/locale/pipes/localized-date.pipe.d.ts +0 -2
- package/locale/lib/locale/pipes/localized-number.pipe.d.ts +0 -2
- package/locale/lib/locale/pipes/localized-time.pipe.d.ts +0 -2
- package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +0 -2
- package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +1 -2
- package/numeric/lib/numeric.pipe.d.ts +0 -3
- package/numeric/lib/numeric.service.d.ts +0 -2
- package/package.json +13 -13
- package/password-strength/lib/password-strength/password-strength.component.d.ts +0 -2
- package/password-strength/lib/password-strength/password-strength.directive.d.ts +1 -2
- package/picklist/lib/picklist/picklist.component.d.ts +1 -2
- package/product-header/README.md +17 -0
- package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +0 -4
- package/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.d.ts +0 -2
- package/progressbar/lib/progressbar/progressbar.module.d.ts +2 -1
- package/shared/lib/accessibility/paginator-accessibility.directive.d.ts +1 -3
- package/shared/lib/accessibility/table-checkbox-accessibility.directive.d.ts +1 -2
- package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +0 -2
- package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +0 -4
- package/speech-recognition/lib/speech-recognition/speech-recognition.service.d.ts +1 -5
- package/speech-recognition/lib/speech-recognition/text-to-speech.service.d.ts +1 -3
- package/split-button/lib/split-button/split-button.component.d.ts +1 -2
- package/table/lib/table/row-toggler/row-toggler.directive.d.ts +1 -1
- package/table/lib/table/table-column/table-columns.component.d.ts +2 -6
- package/table/lib/table/table-paging/table-paging.component.d.ts +0 -3
- package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -1
- package/text-area/lib/text-area/text-area.component.d.ts +1 -2
- package/text-area-ia/README.md +17 -0
- package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +0 -2
- package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +1 -3
- package/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +0 -2
- package/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +0 -2
- package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +1 -5
- package/toast/lib/toast/toast.service.d.ts +0 -2
- package/tree/lib/tree/components/tree-node-item/tree-node-item.component.d.ts +1 -3
- package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +1 -2
- package/confirm-dialog/README.md +0 -226
- package/numeric-mask/README.md +0 -395
- package/pin-code-field/README.md +0 -366
- package/spotlight/README.md +0 -311
|
@@ -1,22 +1,47 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { HttpEventType, HttpClientModule } from '@angular/common/http';
|
|
1
|
+
import { HttpClient, HttpEventType, HttpClientModule } from '@angular/common/http';
|
|
3
2
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Injectable, Component,
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
3
|
+
import { inject, Injectable, Component, Input, NgModule } from '@angular/core';
|
|
4
|
+
import { ControlContainer, FormGroup, Validators, FormControl, FormArray, NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
6
|
+
import { TranslateService, TranslateModule } from '@ngx-translate/core';
|
|
7
7
|
import BigNumber from 'bignumber.js';
|
|
8
8
|
import { Subject, of, forkJoin, throwError } from 'rxjs';
|
|
9
9
|
import { takeUntil, finalize, catchError } from 'rxjs/operators';
|
|
10
|
-
import * as
|
|
10
|
+
import * as i1 from '@seniorsistemas/angular-components/dynamic-form';
|
|
11
11
|
import { dynamicTypeToDynamicStructure, DynamicFormModule } from '@seniorsistemas/angular-components/dynamic-form';
|
|
12
|
+
import { LocaleService, LocaleModule } from '@seniorsistemas/angular-components/locale';
|
|
12
13
|
import moment from 'moment';
|
|
13
|
-
import * as i2 from '@seniorsistemas/angular-components/locale';
|
|
14
|
-
import { LocaleModule } from '@seniorsistemas/angular-components/locale';
|
|
15
|
-
import * as i3 from '@angular/platform-browser';
|
|
16
|
-
import * as i4 from '@ngx-translate/core';
|
|
17
|
-
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
18
14
|
import { CommonModule } from '@angular/common';
|
|
19
15
|
|
|
16
|
+
class CustomFieldsService {
|
|
17
|
+
http = inject(HttpClient);
|
|
18
|
+
getCustomFields(domain, service, entity, endpoint) {
|
|
19
|
+
const entityDto = { entityId: { domain_: domain, service_: service, id: entity } };
|
|
20
|
+
return this.http.post(endpoint, entityDto);
|
|
21
|
+
}
|
|
22
|
+
getFileLocationUrl(dto, endpoint) {
|
|
23
|
+
return this.http.post(endpoint, dto);
|
|
24
|
+
}
|
|
25
|
+
uploadTempFile(location, file) {
|
|
26
|
+
return this.http.put(location, file, {
|
|
27
|
+
reportProgress: true,
|
|
28
|
+
observe: 'events',
|
|
29
|
+
headers: { 'Content-Type': file.type },
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
requestAccess(objectId, endpoint) {
|
|
33
|
+
return this.http.post(endpoint, { objectId });
|
|
34
|
+
}
|
|
35
|
+
getFile(permanentUrl) {
|
|
36
|
+
return this.http.get(permanentUrl, { responseType: 'blob' });
|
|
37
|
+
}
|
|
38
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFieldsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
39
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFieldsService });
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFieldsService, decorators: [{
|
|
42
|
+
type: Injectable
|
|
43
|
+
}] });
|
|
44
|
+
|
|
20
45
|
var CustomFieldType;
|
|
21
46
|
(function (CustomFieldType) {
|
|
22
47
|
CustomFieldType["String"] = "String";
|
|
@@ -59,38 +84,6 @@ const apiTypesToDynamicFormType = (type) => {
|
|
|
59
84
|
}
|
|
60
85
|
};
|
|
61
86
|
|
|
62
|
-
class CustomFieldsService {
|
|
63
|
-
http;
|
|
64
|
-
constructor(http) {
|
|
65
|
-
this.http = http;
|
|
66
|
-
}
|
|
67
|
-
getCustomFields(domain, service, entity, endpoint) {
|
|
68
|
-
const entityDto = { entityId: { domain_: domain, service_: service, id: entity } };
|
|
69
|
-
return this.http.post(endpoint, entityDto);
|
|
70
|
-
}
|
|
71
|
-
getFileLocationUrl(dto, endpoint) {
|
|
72
|
-
return this.http.post(endpoint, dto);
|
|
73
|
-
}
|
|
74
|
-
uploadTempFile(location, file) {
|
|
75
|
-
return this.http.put(location, file, {
|
|
76
|
-
reportProgress: true,
|
|
77
|
-
observe: 'events',
|
|
78
|
-
headers: { 'Content-Type': file.type },
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
requestAccess(objectId, endpoint) {
|
|
82
|
-
return this.http.post(endpoint, { objectId });
|
|
83
|
-
}
|
|
84
|
-
getFile(permanentUrl) {
|
|
85
|
-
return this.http.get(permanentUrl, { responseType: 'blob' });
|
|
86
|
-
}
|
|
87
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFieldsService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
88
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFieldsService });
|
|
89
|
-
}
|
|
90
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFieldsService, decorators: [{
|
|
91
|
-
type: Injectable
|
|
92
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
93
|
-
|
|
94
87
|
/**
|
|
95
88
|
* @description Componente que carrega e renderiza campos customizados dinamicamente
|
|
96
89
|
* a partir da API de customização de campos do Senior. Realiza chamadas HTTP para
|
|
@@ -110,11 +103,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
110
103
|
* @category Inputs
|
|
111
104
|
*/
|
|
112
105
|
class CustomFieldsComponent {
|
|
113
|
-
customFieldsService;
|
|
114
|
-
localeService;
|
|
115
|
-
sanitizer;
|
|
116
|
-
translateService;
|
|
117
|
-
controlContainer;
|
|
106
|
+
customFieldsService = inject(CustomFieldsService);
|
|
107
|
+
localeService = inject(LocaleService);
|
|
108
|
+
sanitizer = inject(DomSanitizer);
|
|
109
|
+
translateService = inject(TranslateService);
|
|
110
|
+
controlContainer = inject(ControlContainer, { optional: true });
|
|
118
111
|
/** @description Domínio utilizado para buscar os campos customizados na API. Campo obrigatório. */
|
|
119
112
|
domain;
|
|
120
113
|
/** @description Nome do serviço utilizado para identificar os campos customizados. Campo obrigatório. */
|
|
@@ -153,12 +146,7 @@ class CustomFieldsComponent {
|
|
|
153
146
|
uploadCanceled;
|
|
154
147
|
hasBlob;
|
|
155
148
|
hasUploaded;
|
|
156
|
-
constructor(
|
|
157
|
-
this.customFieldsService = customFieldsService;
|
|
158
|
-
this.localeService = localeService;
|
|
159
|
-
this.sanitizer = sanitizer;
|
|
160
|
-
this.translateService = translateService;
|
|
161
|
-
this.controlContainer = controlContainer;
|
|
149
|
+
constructor() {
|
|
162
150
|
this.invalidErrorLabel = this.translateService.instant('platform.angular_components.invalid_value');
|
|
163
151
|
}
|
|
164
152
|
get hasCustomFields() {
|
|
@@ -723,7 +711,7 @@ class CustomFieldsComponent {
|
|
|
723
711
|
field.displayTimeInfoSign = this.displayTimeInfoSign;
|
|
724
712
|
});
|
|
725
713
|
}
|
|
726
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFieldsComponent, deps: [
|
|
714
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFieldsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
727
715
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CustomFieldsComponent, selector: "s-custom-fields", inputs: { domain: "domain", service: "service", entity: "entity", invalidErrorLabel: "invalidErrorLabel", entityObject: "entityObject", customFieldsEndpoint: "customFieldsEndpoint", fileLocationEndpoint: "fileLocationEndpoint", requestAccessEndpoint: "requestAccessEndpoint", requiredErrorMessage: "requiredErrorMessage", displayTimeInfoSign: "displayTimeInfoSign", showFileUploadDate: "showFileUploadDate", ready$: "ready$", disableFields: "disableFields" }, providers: [
|
|
728
716
|
{
|
|
729
717
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -735,7 +723,7 @@ class CustomFieldsComponent {
|
|
|
735
723
|
useExisting: CustomFieldsComponent,
|
|
736
724
|
multi: true,
|
|
737
725
|
},
|
|
738
|
-
], usesOnChanges: true, ngImport: i0, template: "@let errorMessages =\n {\n pattern: invalidErrorLabel,\n required: requiredErrorMessage,\n };\n\n<s-dynamic-form\n [configs]=\"dynamicStructure\"\n [form]=\"formGroup\"\n [errorMessages]=\"errorMessages\"\n>\n</s-dynamic-form>\n\n", dependencies: [{ kind: "component", type:
|
|
726
|
+
], usesOnChanges: true, ngImport: i0, template: "@let errorMessages =\n {\n pattern: invalidErrorLabel,\n required: requiredErrorMessage,\n };\n\n<s-dynamic-form\n [configs]=\"dynamicStructure\"\n [form]=\"formGroup\"\n [errorMessages]=\"errorMessages\"\n>\n</s-dynamic-form>\n\n", dependencies: [{ kind: "component", type: i1.DynamicFormComponent, selector: "s-dynamic-form", inputs: ["id", "configs", "fields", "form", "errorMessages"] }] });
|
|
739
727
|
}
|
|
740
728
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFieldsComponent, decorators: [{
|
|
741
729
|
type: Component,
|
|
@@ -751,9 +739,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
751
739
|
multi: true,
|
|
752
740
|
},
|
|
753
741
|
], template: "@let errorMessages =\n {\n pattern: invalidErrorLabel,\n required: requiredErrorMessage,\n };\n\n<s-dynamic-form\n [configs]=\"dynamicStructure\"\n [form]=\"formGroup\"\n [errorMessages]=\"errorMessages\"\n>\n</s-dynamic-form>\n\n" }]
|
|
754
|
-
}], ctorParameters: () => [
|
|
755
|
-
type: Optional
|
|
756
|
-
}] }], propDecorators: { domain: [{
|
|
742
|
+
}], ctorParameters: () => [], propDecorators: { domain: [{
|
|
757
743
|
type: Input,
|
|
758
744
|
args: [{ required: true }]
|
|
759
745
|
}], service: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-custom-fields.mjs","sources":["../../projects/angular-components/custom-fields/src/lib/custom-fields/models/custom-field-type.ts","../../projects/angular-components/custom-fields/src/lib/custom-fields/custom-fields.service.ts","../../projects/angular-components/custom-fields/src/lib/custom-fields/custom-fields.component.ts","../../projects/angular-components/custom-fields/src/lib/custom-fields/custom-fields.component.html","../../projects/angular-components/custom-fields/src/lib/custom-fields/custom-fields.module.ts","../../projects/angular-components/custom-fields/src/seniorsistemas-angular-components-custom-fields.ts"],"sourcesContent":["import { FieldType } from '@seniorsistemas/angular-components/dynamic-form';\n\nexport enum CustomFieldType {\n String = 'String',\n Boolean = 'Boolean',\n Integer = 'Integer',\n Double = 'Double',\n Date = 'Date',\n DateTime = 'DateTime',\n LocalDateTime = 'LocalDateTime',\n Time = 'Time',\n Money = 'Money',\n Blob = 'Blob',\n Binary = 'Binary',\n Any = 'Any',\n Enum = 'Enum',\n}\n\nexport type CustomFieldsTypeAPI = 'Enumeration' | keyof typeof CustomFieldType;\n\nexport const apiTypesToDynamicFormType = (type: CustomFieldsTypeAPI): FieldType => {\n switch (type) {\n case 'String':\n case 'Any':\n return 'string';\n case 'Binary':\n return 'binary';\n case 'Blob':\n return 'blob';\n case 'DateTime':\n case 'Time':\n case 'Date':\n case 'LocalDateTime':\n return 'date';\n case 'Enumeration':\n case 'Enum':\n return 'enum';\n case 'Boolean':\n return 'boolean';\n case 'Money':\n case 'Double':\n case 'Integer':\n return 'legacyNumber';\n }\n};\n\nexport interface FieldFromAPI {\n id: string;\n type: CustomFieldsTypeAPI;\n customizable: boolean;\n customization: FieldCustomization;\n}\n\nexport interface FieldCustomization {\n active: boolean;\n label: string;\n tooltip: string;\n mask?: string;\n validationRegex?: string;\n customEnumeration?: CustomEnumeration;\n infoSign?: string;\n mandatory?: boolean;\n}\n\nexport interface CustomEnumeration {\n multiple?: boolean;\n values: EnumValue[];\n}\n\nexport interface EnumValue {\n key: string;\n value: string;\n}\n\nexport interface CustomFieldsResponse {\n entity_: {\n active: boolean;\n fields: FieldFromAPI[];\n };\n}\n\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { CustomFieldsResponse } from './models';\n\n@Injectable()\nexport class CustomFieldsService {\n constructor(private http: HttpClient) {}\n\n public getCustomFields(\n domain: string,\n service: string,\n entity: string,\n endpoint: string,\n ): Observable<CustomFieldsResponse> {\n const entityDto = { entityId: { domain_: domain, service_: service, id: entity } };\n return this.http.post<CustomFieldsResponse>(endpoint, entityDto);\n }\n\n public getFileLocationUrl(\n dto: {\n domain: string;\n service: string;\n entityName: string;\n field: string;\n fileName: string;\n },\n endpoint: string,\n ): Observable<any> {\n return this.http.post(endpoint, dto);\n }\n\n public uploadTempFile(location: string, file: File) {\n return this.http.put(location, file, {\n reportProgress: true,\n observe: 'events',\n headers: { 'Content-Type': file.type },\n });\n }\n\n public requestAccess(objectId: string, endpoint: string) {\n return this.http.post(endpoint, { objectId });\n }\n\n public getFile(permanentUrl: string) {\n return this.http.get(permanentUrl, { responseType: 'blob' });\n }\n}\n\n","import { HttpErrorResponse, HttpEventType } from '@angular/common/http';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n SimpleChanges,\n} from '@angular/core';\nimport {\n ControlContainer,\n ControlValueAccessor,\n FormArray,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n Validator,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport BigNumber from 'bignumber.js';\nimport { BehaviorSubject, forkJoin, Observable, of, Subject, throwError } from 'rxjs';\nimport { catchError, finalize, takeUntil } from 'rxjs/operators';\n\nimport {\n BlobFieldConfig,\n BooleanFieldConfig,\n DynamicStructure,\n DynamicType,\n dynamicTypeToDynamicStructure,\n ExpandedDynamicType,\n NumberFieldConfig,\n SelectFieldConfig,\n StructureType,\n} from '@seniorsistemas/angular-components/dynamic-form';\nimport { FileDto } from '@seniorsistemas/angular-components/file-upload';\nimport {\n CalendarLocaleOptions,\n LocaleOptions,\n LocaleService,\n NumberLocaleOptions,\n} from '@seniorsistemas/angular-components/locale';\nimport moment from 'moment';\nimport { CustomFieldsService } from './custom-fields.service';\nimport {\n apiTypesToDynamicFormType,\n CustomFieldsResponse,\n CustomFieldsTypeAPI,\n CustomFieldType,\n FieldFromAPI,\n} from './models';\n\n/**\n * @description Componente que carrega e renderiza campos customizados dinamicamente\n * a partir da API de customização de campos do Senior. Realiza chamadas HTTP para\n * obter a configuração dos campos, gera o formulário reativamente via {@link DynamicFormComponent}\n * e implementa {@link ControlValueAccessor} e {@link Validator} para integração completa\n * com formulários Angular.\n *\n * @example\n * ```html\n * <s-custom-fields\n * formControlName=\"camposCustomizados\"\n * domain=\"plataforma\"\n * service=\"servico\"\n * entity=\"entidade\" />\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-custom-fields',\n templateUrl: './custom-fields.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: CustomFieldsComponent,\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: CustomFieldsComponent,\n multi: true,\n },\n ],\n})\nexport class CustomFieldsComponent\n implements OnInit, OnDestroy, ControlValueAccessor, Validator, OnChanges, AfterViewInit\n{\n /** @description Domínio utilizado para buscar os campos customizados na API. Campo obrigatório. */\n @Input({ required: true })\n public domain!: string;\n\n /** @description Nome do serviço utilizado para identificar os campos customizados. Campo obrigatório. */\n @Input({ required: true })\n public service!: string;\n\n /** @description Nome da entidade para a qual os campos customizados são carregados. Campo obrigatório. */\n @Input({ required: true })\n public entity!: string;\n\n /** @description Mensagem de erro exibida quando algum campo customizado está inválido. @default '' */\n @Input()\n public invalidErrorLabel = '';\n\n /** @description Objeto com dados pré-carregados da entidade, evitando chamadas extras à API. */\n @Input()\n public entityObject?: CustomFieldsResponse;\n\n /** @description Endpoint para buscar a configuração dos campos customizados. */\n @Input()\n public customFieldsEndpoint = 'platform/field_customization/queries/getEntity';\n\n /** @description Endpoint para solicitar o upload de arquivos em campos do tipo blob. */\n @Input()\n public fileLocationEndpoint = 'platform/field_customization/actions/requestUpload';\n\n /** @description Endpoint para solicitar acesso a arquivos já enviados. */\n @Input()\n public requestAccessEndpoint = 'platform/field_customization/actions/requestAccess';\n\n /** @description Mensagem de erro exibida quando um campo obrigatório não está preenchido. @default '' */\n @Input()\n public requiredErrorMessage = '';\n\n /** @description Tempo em ms após o qual o info-sign de campos do tipo data é exibido. @default 0 */\n @Input()\n public displayTimeInfoSign = 0;\n\n /** @description Exibe a data de upload nos campos do tipo arquivo. @default false */\n @Input()\n public showFileUploadDate = false;\n\n /** @description Observable que sinaliza quando o componente deve iniciar o carregamento dos campos. @default null */\n @Input()\n public ready$: BehaviorSubject<boolean> | null = null;\n\n /** @description Quando `true`, todos os campos customizados são desabilitados. */\n @Input()\n public disableFields: boolean | undefined;\n\n protected rowType: StructureType = 'row';\n\n public fields: DynamicType[] = [];\n public formGroup: FormGroup = new FormGroup({});\n\n protected dynamicStructure: DynamicStructure[] = [];\n\n private ready = false;\n private onChange: any;\n private onTouched: any;\n private value: any;\n private readonly ngUsubscribe: Subject<void> = new Subject();\n private uploadCanceled: boolean | undefined;\n private hasBlob: boolean | undefined;\n private hasUploaded: boolean | undefined;\n\n constructor(\n private readonly customFieldsService: CustomFieldsService,\n private readonly localeService: LocaleService,\n private readonly sanitizer: DomSanitizer,\n private readonly translateService: TranslateService,\n @Optional() private readonly controlContainer: ControlContainer,\n ) {\n this.invalidErrorLabel = this.translateService.instant('platform.angular_components.invalid_value');\n }\n\n public get hasCustomFields(): boolean {\n return !!this.fields?.length;\n }\n\n public get parentForm(): FormGroup {\n return this.controlContainer.control as FormGroup;\n }\n\n public get parentControl(): FormControl {\n return this.parentForm.get('custom') as FormControl;\n }\n\n public ngOnInit(): void {\n this._validateInputs();\n this._createForm();\n this.addDisplayTimeInfoSignToFields();\n }\n\n public ngAfterViewInit(): void {\n this.enableOrDisableFields(!!this.disableFields);\n\n this.formGroup.valueChanges.subscribe(() => this.onChange?.(this.parseFieldsValues()));\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n const _disableFields = changes['disableFields'];\n if (_disableFields) {\n this.enableOrDisableFields(_disableFields.currentValue);\n }\n }\n\n public ngOnDestroy() {\n this.ngUsubscribe.next();\n this.ngUsubscribe.complete();\n }\n\n public registerOnChange(fn: Function) {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: Function) {\n this.onTouched = fn;\n }\n\n public writeValue(value: any) {\n if (this.ready) {\n const newValue = this.parseValuesForFields(value);\n this.formGroup.patchValue(newValue);\n this.value = newValue;\n this.createFilesIfSetFormValuesAfterInit();\n } else {\n this.formGroup.patchValue(value || {});\n this.value = value;\n }\n }\n\n public setDisabledState(isDisabled: boolean) {\n if (isDisabled) {\n this.formGroup.disable({ emitEvent: false });\n } else {\n this.formGroup.enable({ emitEvent: false });\n }\n }\n\n public getCustomFields(): Observable<CustomFieldsResponse> {\n if (this.entityObject?.entity_) {\n return of(this.entityObject);\n }\n return this.customFieldsService.getCustomFields(\n this.domain,\n this.service,\n this.entity,\n this.customFieldsEndpoint,\n );\n }\n\n public validate() {\n const errors: any = {};\n Object.keys(this.formGroup.controls).forEach((field) => {\n const { errors: controlErrors } = this.formGroup.get(field) as FormGroup;\n if (controlErrors) {\n errors[field] = controlErrors;\n }\n });\n return errors;\n }\n\n public cleanFields() {\n this.formGroup.reset();\n }\n\n private enableOrDisableFields(disabled: boolean): void {\n if (!this.formGroup) {\n return;\n }\n\n for (const controlName of Object.keys(this.formGroup.value)) {\n disabled ? this.formGroup.get(controlName)?.disable() : this.formGroup.get(controlName)?.enable();\n }\n }\n\n private _validateInputs(): void {\n if (!this.domain) {\n throw new Error('You need to specify the custom-fields domain!');\n }\n if (!this.service) {\n throw new Error('You need to specify the custom-fields service!');\n }\n if (!this.entity) {\n throw new Error('You need to specify the custom-fields entity!');\n }\n }\n\n private _createForm(): void {\n this.formGroup = new FormGroup({});\n const observables = [this.getCustomFields(), this.localeService.get()];\n forkJoin(observables)\n .pipe(\n takeUntil(this.ngUsubscribe),\n finalize(() => {\n this.formGroup.markAsPristine();\n this.parentControl?.markAsPristine();\n\n if (this.ready$) {\n this.ready$.next(true);\n }\n }),\n )\n .subscribe((response) => {\n const [customFieldsResponse, localeOptions] = response as [CustomFieldsResponse, LocaleOptions];\n const defaults: { [key in string]: { defaultValue?: boolean; defaultMask?: string } } = {};\n defaults[CustomFieldType.String] = {};\n defaults[CustomFieldType.Boolean] = { defaultValue: false };\n defaults[CustomFieldType.Integer] = {};\n defaults[CustomFieldType.Double] = { defaultMask: '' };\n defaults[CustomFieldType.Money] = {};\n defaults[CustomFieldType.Date] = {};\n defaults[CustomFieldType.DateTime] = {};\n defaults[CustomFieldType.LocalDateTime] = {};\n defaults[CustomFieldType.Time] = {};\n defaults[CustomFieldType.Blob] = {};\n defaults[CustomFieldType.Enum] = {};\n defaults[CustomFieldType.Binary] = {};\n defaults[CustomFieldType.Any] = {};\n\n if (!customFieldsResponse || !customFieldsResponse.entity_) {\n return;\n }\n const { active, fields } = customFieldsResponse.entity_;\n if (!active) {\n return;\n }\n\n fields\n .filter((field) => field.customizable && field.customization?.active)\n .forEach((field) => {\n const dynamicType = this.getDynamicType(field, localeOptions);\n\n const fieldType = field.type;\n\n if (field.type === CustomFieldType.Blob && this.value && this.value[dynamicType.name]) {\n this.createBlobToFileUpload(dynamicType as BlobFieldConfig);\n }\n\n const { validationRegex } = field.customization;\n\n const asIsTypes: CustomFieldsTypeAPI[] = [\n CustomFieldType.Boolean,\n CustomFieldType.Money,\n CustomFieldType.Date,\n CustomFieldType.DateTime,\n CustomFieldType.LocalDateTime,\n CustomFieldType.Time,\n ];\n\n const validators = [];\n if (validationRegex && !asIsTypes.includes(fieldType)) {\n validators.push(Validators.pattern(validationRegex));\n }\n if (fieldType === CustomFieldType.Integer && !(dynamicType as NumberFieldConfig).mask) {\n validators.push(Validators.pattern(/^\\-?\\d*$/));\n }\n\n if (dynamicType.required?.()) {\n validators.push(Validators.required);\n }\n\n const control = new FormControl(\n { value: defaults[fieldType].defaultValue, disabled: this.formGroup.disabled },\n validators,\n );\n\n this.formGroup.addControl(dynamicType.name, control);\n\n this.fields.push(dynamicType);\n });\n this.dynamicStructure = dynamicTypeToDynamicStructure(this.fields);\n\n this.createFieldCustomization(fields);\n this.formGroup.patchValue(this.parseValuesForFields(this.value));\n this.ready = true;\n });\n }\n\n private parseValuesForFields(values: any) {\n const parsedValues = { ...values };\n\n this.fields.forEach((field) => {\n const type = field.type;\n const name = field.name;\n const value = values?.[name];\n\n /**\n * Tratamento exclusivo para campos boolean que tem o status Empty\n * Essa condicional necessita estar antes do if (!value) return;\n * Pois ela tem um status que usa null no valor do campo radio boolean\n */\n if (type === 'boolean') {\n const isString = typeof value === 'string';\n const notValid = !isString && typeof value !== 'boolean';\n if (notValid) {\n parsedValues[name] = null;\n } else {\n // Condicional para campos que retornam string de boolen do backand\n if (isString) {\n parsedValues[name] = value === 'true' ? true : false;\n } else {\n parsedValues[name] = value;\n }\n }\n }\n\n if (!value) {\n return;\n }\n\n switch (type) {\n case 'date':\n parsedValues[name] = moment(value).toDate();\n break;\n case 'dateTime':\n parsedValues[name] = moment(value).toDate();\n break;\n case 'localDateTime':\n parsedValues[name] = moment(value, 'YYYY-MM-DD[T]HH:mm:ss.SSS').toDate();\n break;\n case 'time':\n parsedValues[name] = moment(value, 'HH:mm:ss').toDate();\n break;\n default:\n break;\n }\n });\n\n return parsedValues;\n }\n\n /**\n * Algumas equipes só setam valor no formulário, após o carregamento da tela\n * Como é bem padrão isso, foi necessário criar esse método para gerar o file\n * após setar o valor no formulário\n */\n private createFilesIfSetFormValuesAfterInit() {\n if (!this.hasUploaded) {\n this.fields\n .filter((field) => field.type === 'blob')\n .forEach((field) => {\n if (this.formGroup.get(field.name)?.value) {\n this.createBlobToFileUpload(field);\n }\n });\n }\n }\n\n private parseFieldsValues() {\n const parsedValues: any = {};\n\n this.fields.forEach((field) => {\n const { type } = field;\n const name = field.name;\n let value = this.formGroup.get(name)?.value;\n\n if (value) {\n switch (type) {\n case 'number':\n const { mask, scale } = field;\n if (mask) value = new BigNumber(value).toFixed(scale as number).toString();\n break;\n case 'date':\n value = moment(value).format('YYYY-MM-DD');\n break;\n case 'dateTime':\n value = moment(value).format();\n break;\n case 'localDateTime':\n value = moment(value).format('YYYY-MM-DD[T]HH:mm:ss.SSS');\n break;\n case 'time':\n value = moment(value).format('HH:mm:ss');\n break;\n default:\n break;\n }\n }\n if ((value === null || value === undefined) && (type === 'number' || type === 'enum')) {\n const isMultiple = (field as SelectFieldConfig).multiple;\n parsedValues[name] = isMultiple ? [] : null;\n } else {\n parsedValues[name] = value;\n }\n });\n\n if (this.hasBlob) {\n parsedValues['fieldCustomization'] = this.formGroup.get('fieldCustomization')?.value;\n }\n return parsedValues;\n }\n\n private getDynamicType(field: FieldFromAPI, localeOptions: LocaleOptions): DynamicType {\n let parameters: Partial<DynamicType> = {};\n\n switch (field.type) {\n case CustomFieldType.Blob:\n parameters = this.getBlobParameters();\n break;\n case CustomFieldType.Boolean:\n parameters = this.getBooleanParameters();\n break;\n case 'Enumeration':\n case CustomFieldType.Enum:\n field.type = 'Enum';\n parameters = this.getSelectParameters(field);\n break;\n case CustomFieldType.Money:\n parameters = {\n type: 'legacyNumber',\n precision: 15,\n scale: 2,\n leftAddon: {\n label: localeOptions?.number?.currencySymbol ?? 'R$',\n },\n };\n break;\n case CustomFieldType.Double:\n parameters = {\n type: 'legacyNumber',\n precision: 15,\n scale: 2,\n localizedNumber: true,\n };\n break;\n case CustomFieldType.Integer:\n parameters = {\n type: 'legacyNumber',\n precision: 15,\n scale: 0,\n };\n break;\n case CustomFieldType.Any:\n field.type = 'String';\n parameters = {\n type: 'string',\n };\n break;\n }\n\n const dynamicType: DynamicType & {\n calendarOptions: CalendarLocaleOptions;\n currencyOptions: NumberLocaleOptions;\n } = {\n ...parameters,\n name: field.id,\n label: field.customization.label,\n tooltip: field.customization.tooltip,\n infoSign: field.customization.infoSign,\n type: apiTypesToDynamicFormType(field.type),\n mask: field.customization.mask,\n required: () => field.customization.mandatory ?? false,\n calendarOptions: localeOptions.calendar,\n currencyOptions: localeOptions.number,\n } as DynamicType & { calendarOptions: CalendarLocaleOptions; currencyOptions: NumberLocaleOptions };\n return dynamicType;\n }\n\n private getSelectParameters(field: any): Partial<SelectFieldConfig> {\n return {\n type: 'enum',\n showClear: true,\n multiple: field.customization.customEnumeration.multiple,\n options: field.customization.customEnumeration.values.map((e: any) => ({ label: e.value, value: e.key })),\n };\n }\n\n private getBooleanParameters(): Partial<BooleanFieldConfig> {\n return {\n type: 'boolean',\n optionsLabel: {\n true: this.getTranslateLabel(`true_label`),\n false: this.getTranslateLabel(`false_label`),\n empty: this.getTranslateLabel(`empty_label`),\n },\n };\n }\n\n private getBlobParameters(): Partial<ExpandedDynamicType> {\n return {\n type: 'blob',\n size: {\n sm: 12,\n md: 12,\n lg: 12,\n xl: 12,\n }, // Como vai ser filho de Row, faz sentido habilitar o tipo expandido.\n accept: 'image/*, application/*, text/*',\n chooseLabel: this.getTranslateLabel(`choose_label`),\n removeLabel: this.getTranslateLabel(`remove_label`),\n cancelLabel: this.getTranslateLabel(`cancel_label`),\n successTooltip: this.getTranslateLabel(`success_tooltip`),\n multiple: false,\n onUploadFile: (event: { files: FileDto[] }, blobField: BlobFieldConfig) => {\n this.hasUploaded = true;\n this.uploadFile(event, blobField);\n },\n onRemoveFile: (event: FileDto, blobField: BlobFieldConfig) => {\n this.removeFile({ file: event }, blobField);\n },\n onCancelUpload: (event: number, blobField: BlobFieldConfig) => {\n this.cancelUpload(event, blobField);\n },\n onDownloadFile: (event: { index: number; anchor: ElementRef }, blobField: BlobFieldConfig) => {\n this.downloadFile(event, blobField);\n },\n showFileUploadDate: this.showFileUploadDate,\n };\n }\n\n /**\n * É necessário criar o fieldCustomization quando há um Blob na entidade para gerar o\n * com os fields inseridos e deletados.\n */\n private createFieldCustomization(fields: FieldFromAPI[]): void {\n this.hasBlob = !!fields.filter((field) => field.type === CustomFieldType.Blob).length;\n if (this.hasBlob) {\n this.formGroup.addControl(\n 'fieldCustomization',\n new FormArray([\n new FormGroup({\n domain: new FormControl(this.domain),\n service: new FormControl(this.service),\n entity: new FormControl(this.entity),\n toDelete: new FormControl({ value: {}, disabled: false }),\n toInsert: new FormControl({ value: {}, disabled: false }),\n }),\n ]),\n );\n }\n }\n\n private createBlobToFileUpload(field: BlobFieldConfig) {\n const _name = field.name;\n const objectId = this.value[_name] ? this.value[_name] : this.formGroup.get(_name)?.value;\n const fileName = objectId.substring(objectId.lastIndexOf('/') + 1);\n const file: Partial<FileDto> = { objectId, name: fileName, savedFile: true };\n field.files = [file as FileDto];\n }\n\n private downloadFile(event: { index: number; anchor: ElementRef }, field: BlobFieldConfig) {\n const { index, anchor } = event;\n const _files = field.files || [];\n if (!_files.length) {\n return;\n }\n const currentFile = _files[index];\n if (currentFile.objectURL) {\n anchor.nativeElement.click();\n } else {\n const _objectId = currentFile.objectId as string;\n this.customFieldsService\n .requestAccess(_objectId, this.requestAccessEndpoint)\n .pipe(takeUntil(this.ngUsubscribe))\n .subscribe((data: any) => {\n const { fileName, uri } = data;\n this.customFieldsService\n .getFile(uri)\n .pipe(takeUntil(this.ngUsubscribe))\n .subscribe((blob: any) => {\n const newFile = new File([blob], fileName) as FileDto;\n newFile.objectURL = this.sanitizer.bypassSecurityTrustUrl(uri);\n anchor.nativeElement.setAttribute('href', uri);\n newFile.objectId = currentFile.objectId;\n newFile.savedFile = true;\n _files[index] = newFile;\n field.files = [..._files];\n anchor.nativeElement.click();\n });\n });\n }\n }\n\n private uploadFile(event: { files: FileDto[] }, formField: BlobFieldConfig): void {\n const { files } = event;\n const field = this.fields.find((record) => record.name === formField.name) as BlobFieldConfig;\n if (!field) {\n return;\n }\n\n // Se ocorrer um upload, já existindo um arquivo com upload feito. É necessário excluir o mesmo.\n if (field?.files?.length) {\n this.removeFile({ file: field.files[0] }, field);\n }\n field.files = files;\n const _name = field.name;\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n if (!file.savedFile && !file.progress) {\n file.isUploading = true;\n this.formGroup.get(_name)?.setValidators(isUploading(file));\n this.formGroup.get(_name)?.updateValueAndValidity();\n this.customFieldsService\n .getFileLocationUrl(\n {\n domain: this.domain,\n service: this.service,\n entityName: this.entity,\n field: _name,\n fileName: file.name,\n },\n this.fileLocationEndpoint,\n )\n .pipe(\n takeUntil(this.ngUsubscribe),\n catchError((err: HttpErrorResponse) => of(this.defaltCatchError(field, err, i))),\n )\n .subscribe((data: any) => {\n const { location, version, objectId } = data;\n file.version = version;\n file.objectId = objectId;\n file.uploadSubscribe = this.customFieldsService\n .uploadTempFile(location, file)\n .pipe(\n takeUntil(this.ngUsubscribe),\n catchError((err: HttpErrorResponse) => of(this.defaltCatchError(field, err, i))),\n finalize(() => {\n file.isUploading = false;\n }),\n )\n .subscribe((response: any) => {\n const { type } = response;\n if (!this.uploadCanceled) {\n if (type === HttpEventType.UploadProgress) {\n file.progress = Math.round(response.loaded / response.total) * 100;\n } else if (type === HttpEventType.Response) {\n file.objectURL = this.sanitizer.bypassSecurityTrustUrl(\n URL.createObjectURL(file),\n );\n\n const value = { objectId, name: file.name, version: file.version };\n const toInsert = this.formGroup.get('fieldCustomization')?.value[0].toInsert;\n const fieldCustomization = this.formGroup.get('fieldCustomization')?.value;\n if (fieldCustomization?.value?.[0]) {\n fieldCustomization.value[0].toInsert = {\n ...toInsert,\n [_name]: value,\n };\n }\n this.formGroup.get(_name)?.setValue(`${file.objectId}/${file.name}`);\n this.formGroup.get(_name)?.clearValidators();\n this.formGroup.get(_name)?.updateValueAndValidity();\n field.files = [file];\n }\n } else if (this.uploadCanceled && type === HttpEventType.Response) {\n this.uploadCanceled = false;\n }\n });\n field.files = [file];\n });\n }\n }\n }\n\n private removeFile(event: { file: FileDto }, blobField: BlobFieldConfig): void {\n const { file } = event;\n\n const field = this.fields.find((record) => record.name === blobField.name) as BlobFieldConfig;\n\n field!.files = [];\n\n if (file.objectId) {\n // Quando é um arquivo já salvo o objectId já é no formato \"objectId/name\"\n const value = file.savedFile ? `${file.objectId}` : `${file.objectId}/${file.name}`;\n const toDelete = this.formGroup.get('fieldCustomization')!.value[0].toDelete;\n delete this.formGroup.get('fieldCustomization')!.value[0].toInsert[field!.name];\n this.formGroup.get('fieldCustomization')!.value[0].toDelete = {\n ...toDelete,\n [field!.name]: [...(toDelete[field!.name] || []), value],\n };\n }\n\n this.formGroup.get(field!.name)!.clearValidators();\n this.formGroup.get(field!.name)!.setValue('');\n this.formGroup.get(field!.name)!.updateValueAndValidity();\n }\n\n private cancelUpload(index: number, formField: BlobFieldConfig): void {\n this.uploadCanceled = true;\n const field = this.fields.find((record) => record.name === formField.name) as BlobFieldConfig;\n if (!field) {\n return;\n }\n const _name = field.name;\n const _files = field.files || [];\n _files[index]?.uploadSubscribe?.unsubscribe();\n field.files = [];\n const fieldCustomization = this.formGroup.get('fieldCustomization')?.value[0];\n delete fieldCustomization.toInsert[_name];\n this.formGroup.get(_name)?.clearValidators();\n this.formGroup.get(_name)?.setValue('');\n this.formGroup.get(_name)?.updateValueAndValidity();\n }\n\n private defaltCatchError(field: BlobFieldConfig, err: HttpErrorResponse, index: number): Observable<never> {\n const { files } = field;\n if (files) {\n files[index].error = err;\n files[index].isUploading = false;\n field.files = [...files];\n const _name = field.name;\n this.formGroup.get(_name)?.setValidators([errorOnUpload(files[index])]);\n this.formGroup.get(_name)?.updateValueAndValidity();\n return throwError(() => new Error('error in upload file. Details: ' + err.message));\n } else {\n return throwError(() => new Error('error in upload file. Details: ' + err.message));\n }\n }\n\n private getTranslateLabel(label: string): string {\n return this.translateService.instant(`${this.domain}.${this.service}.${label}`);\n }\n\n private addDisplayTimeInfoSignToFields(): void {\n this.fields.forEach((field) => {\n field.displayTimeInfoSign = this.displayTimeInfoSign;\n });\n }\n}\n\nfunction isUploading(file: FileDto): ValidatorFn {\n return () => (file.isUploading ? { isUploading: true } : null);\n}\n\nfunction errorOnUpload(file: FileDto): ValidatorFn {\n return () => (file.error ? { uploadError: true } : null);\n}\n\n","@let errorMessages =\n {\n pattern: invalidErrorLabel,\n required: requiredErrorMessage,\n };\n\n<s-dynamic-form\n [configs]=\"dynamicStructure\"\n [form]=\"formGroup\"\n [errorMessages]=\"errorMessages\"\n>\n</s-dynamic-form>\n\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { CustomFieldsComponent } from \"./custom-fields.component\";\nimport { CustomFieldsService } from \"./custom-fields.service\";\nimport { TranslateModule, TranslateService } from \"@ngx-translate/core\";\nimport { LocaleModule } from \"@seniorsistemas/angular-components/locale\";\nimport { DynamicFormModule } from \"@seniorsistemas/angular-components/dynamic-form\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n LocaleModule,\n DynamicFormModule,\n TranslateModule\n ],\n declarations: [CustomFieldsComponent],\n exports: [CustomFieldsComponent],\n providers: [CustomFieldsService, TranslateService]\n})\nexport class CustomFieldsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CustomFieldsService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-custom-fields.mjs","sources":["../../projects/angular-components/custom-fields/src/lib/custom-fields/custom-fields.service.ts","../../projects/angular-components/custom-fields/src/lib/custom-fields/models/custom-field-type.ts","../../projects/angular-components/custom-fields/src/lib/custom-fields/custom-fields.component.ts","../../projects/angular-components/custom-fields/src/lib/custom-fields/custom-fields.component.html","../../projects/angular-components/custom-fields/src/lib/custom-fields/custom-fields.module.ts","../../projects/angular-components/custom-fields/src/seniorsistemas-angular-components-custom-fields.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { CustomFieldsResponse } from './models';\n\n@Injectable()\nexport class CustomFieldsService {\n private http = inject(HttpClient);\n\n\n public getCustomFields(\n domain: string,\n service: string,\n entity: string,\n endpoint: string,\n ): Observable<CustomFieldsResponse> {\n const entityDto = { entityId: { domain_: domain, service_: service, id: entity } };\n return this.http.post<CustomFieldsResponse>(endpoint, entityDto);\n }\n\n public getFileLocationUrl(\n dto: {\n domain: string;\n service: string;\n entityName: string;\n field: string;\n fileName: string;\n },\n endpoint: string,\n ): Observable<any> {\n return this.http.post(endpoint, dto);\n }\n\n public uploadTempFile(location: string, file: File) {\n return this.http.put(location, file, {\n reportProgress: true,\n observe: 'events',\n headers: { 'Content-Type': file.type },\n });\n }\n\n public requestAccess(objectId: string, endpoint: string) {\n return this.http.post(endpoint, { objectId });\n }\n\n public getFile(permanentUrl: string) {\n return this.http.get(permanentUrl, { responseType: 'blob' });\n }\n}\n\n","import { FieldType } from '@seniorsistemas/angular-components/dynamic-form';\n\nexport enum CustomFieldType {\n String = 'String',\n Boolean = 'Boolean',\n Integer = 'Integer',\n Double = 'Double',\n Date = 'Date',\n DateTime = 'DateTime',\n LocalDateTime = 'LocalDateTime',\n Time = 'Time',\n Money = 'Money',\n Blob = 'Blob',\n Binary = 'Binary',\n Any = 'Any',\n Enum = 'Enum',\n}\n\nexport type CustomFieldsTypeAPI = 'Enumeration' | keyof typeof CustomFieldType;\n\nexport const apiTypesToDynamicFormType = (type: CustomFieldsTypeAPI): FieldType => {\n switch (type) {\n case 'String':\n case 'Any':\n return 'string';\n case 'Binary':\n return 'binary';\n case 'Blob':\n return 'blob';\n case 'DateTime':\n case 'Time':\n case 'Date':\n case 'LocalDateTime':\n return 'date';\n case 'Enumeration':\n case 'Enum':\n return 'enum';\n case 'Boolean':\n return 'boolean';\n case 'Money':\n case 'Double':\n case 'Integer':\n return 'legacyNumber';\n }\n};\n\nexport interface FieldFromAPI {\n id: string;\n type: CustomFieldsTypeAPI;\n customizable: boolean;\n customization: FieldCustomization;\n}\n\nexport interface FieldCustomization {\n active: boolean;\n label: string;\n tooltip: string;\n mask?: string;\n validationRegex?: string;\n customEnumeration?: CustomEnumeration;\n infoSign?: string;\n mandatory?: boolean;\n}\n\nexport interface CustomEnumeration {\n multiple?: boolean;\n values: EnumValue[];\n}\n\nexport interface EnumValue {\n key: string;\n value: string;\n}\n\nexport interface CustomFieldsResponse {\n entity_: {\n active: boolean;\n fields: FieldFromAPI[];\n };\n}\n\n","import { HttpErrorResponse, HttpEventType } from '@angular/common/http';\nimport { AfterViewInit, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, inject } from '@angular/core';\nimport {\n ControlContainer,\n ControlValueAccessor,\n FormArray,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n Validator,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport BigNumber from 'bignumber.js';\nimport { BehaviorSubject, forkJoin, Observable, of, Subject, throwError } from 'rxjs';\nimport { catchError, finalize, takeUntil } from 'rxjs/operators';\n\nimport {\n BlobFieldConfig,\n BooleanFieldConfig,\n DynamicStructure,\n DynamicType,\n dynamicTypeToDynamicStructure,\n ExpandedDynamicType,\n NumberFieldConfig,\n SelectFieldConfig,\n StructureType,\n} from '@seniorsistemas/angular-components/dynamic-form';\nimport { FileDto } from '@seniorsistemas/angular-components/file-upload';\nimport {\n CalendarLocaleOptions,\n LocaleOptions,\n LocaleService,\n NumberLocaleOptions,\n} from '@seniorsistemas/angular-components/locale';\nimport moment from 'moment';\nimport { CustomFieldsService } from './custom-fields.service';\nimport {\n apiTypesToDynamicFormType,\n CustomFieldsResponse,\n CustomFieldsTypeAPI,\n CustomFieldType,\n FieldFromAPI,\n} from './models';\n\n/**\n * @description Componente que carrega e renderiza campos customizados dinamicamente\n * a partir da API de customização de campos do Senior. Realiza chamadas HTTP para\n * obter a configuração dos campos, gera o formulário reativamente via {@link DynamicFormComponent}\n * e implementa {@link ControlValueAccessor} e {@link Validator} para integração completa\n * com formulários Angular.\n *\n * @example\n * ```html\n * <s-custom-fields\n * formControlName=\"camposCustomizados\"\n * domain=\"plataforma\"\n * service=\"servico\"\n * entity=\"entidade\" />\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-custom-fields',\n templateUrl: './custom-fields.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: CustomFieldsComponent,\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: CustomFieldsComponent,\n multi: true,\n },\n ],\n})\nexport class CustomFieldsComponent\n implements OnInit, OnDestroy, ControlValueAccessor, Validator, OnChanges, AfterViewInit\n{\n private readonly customFieldsService = inject(CustomFieldsService);\n private readonly localeService = inject(LocaleService);\n private readonly sanitizer = inject(DomSanitizer);\n private readonly translateService = inject(TranslateService);\n private readonly controlContainer = inject(ControlContainer, { optional: true });\n\n /** @description Domínio utilizado para buscar os campos customizados na API. Campo obrigatório. */\n @Input({ required: true })\n public domain!: string;\n\n /** @description Nome do serviço utilizado para identificar os campos customizados. Campo obrigatório. */\n @Input({ required: true })\n public service!: string;\n\n /** @description Nome da entidade para a qual os campos customizados são carregados. Campo obrigatório. */\n @Input({ required: true })\n public entity!: string;\n\n /** @description Mensagem de erro exibida quando algum campo customizado está inválido. @default '' */\n @Input()\n public invalidErrorLabel = '';\n\n /** @description Objeto com dados pré-carregados da entidade, evitando chamadas extras à API. */\n @Input()\n public entityObject?: CustomFieldsResponse;\n\n /** @description Endpoint para buscar a configuração dos campos customizados. */\n @Input()\n public customFieldsEndpoint = 'platform/field_customization/queries/getEntity';\n\n /** @description Endpoint para solicitar o upload de arquivos em campos do tipo blob. */\n @Input()\n public fileLocationEndpoint = 'platform/field_customization/actions/requestUpload';\n\n /** @description Endpoint para solicitar acesso a arquivos já enviados. */\n @Input()\n public requestAccessEndpoint = 'platform/field_customization/actions/requestAccess';\n\n /** @description Mensagem de erro exibida quando um campo obrigatório não está preenchido. @default '' */\n @Input()\n public requiredErrorMessage = '';\n\n /** @description Tempo em ms após o qual o info-sign de campos do tipo data é exibido. @default 0 */\n @Input()\n public displayTimeInfoSign = 0;\n\n /** @description Exibe a data de upload nos campos do tipo arquivo. @default false */\n @Input()\n public showFileUploadDate = false;\n\n /** @description Observable que sinaliza quando o componente deve iniciar o carregamento dos campos. @default null */\n @Input()\n public ready$: BehaviorSubject<boolean> | null = null;\n\n /** @description Quando `true`, todos os campos customizados são desabilitados. */\n @Input()\n public disableFields: boolean | undefined;\n\n protected rowType: StructureType = 'row';\n\n public fields: DynamicType[] = [];\n public formGroup: FormGroup = new FormGroup({});\n\n protected dynamicStructure: DynamicStructure[] = [];\n\n private ready = false;\n private onChange: any;\n private onTouched: any;\n private value: any;\n private readonly ngUsubscribe: Subject<void> = new Subject();\n private uploadCanceled: boolean | undefined;\n private hasBlob: boolean | undefined;\n private hasUploaded: boolean | undefined;\n\n constructor() {\n this.invalidErrorLabel = this.translateService.instant('platform.angular_components.invalid_value');\n }\n\n public get hasCustomFields(): boolean {\n return !!this.fields?.length;\n }\n\n public get parentForm(): FormGroup {\n return this.controlContainer!.control as FormGroup;\n }\n\n public get parentControl(): FormControl {\n return this.parentForm.get('custom') as FormControl;\n }\n\n public ngOnInit(): void {\n this._validateInputs();\n this._createForm();\n this.addDisplayTimeInfoSignToFields();\n }\n\n public ngAfterViewInit(): void {\n this.enableOrDisableFields(!!this.disableFields);\n\n this.formGroup.valueChanges.subscribe(() => this.onChange?.(this.parseFieldsValues()));\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n const _disableFields = changes['disableFields'];\n if (_disableFields) {\n this.enableOrDisableFields(_disableFields.currentValue);\n }\n }\n\n public ngOnDestroy() {\n this.ngUsubscribe.next();\n this.ngUsubscribe.complete();\n }\n\n public registerOnChange(fn: Function) {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: Function) {\n this.onTouched = fn;\n }\n\n public writeValue(value: any) {\n if (this.ready) {\n const newValue = this.parseValuesForFields(value);\n this.formGroup.patchValue(newValue);\n this.value = newValue;\n this.createFilesIfSetFormValuesAfterInit();\n } else {\n this.formGroup.patchValue(value || {});\n this.value = value;\n }\n }\n\n public setDisabledState(isDisabled: boolean) {\n if (isDisabled) {\n this.formGroup.disable({ emitEvent: false });\n } else {\n this.formGroup.enable({ emitEvent: false });\n }\n }\n\n public getCustomFields(): Observable<CustomFieldsResponse> {\n if (this.entityObject?.entity_) {\n return of(this.entityObject);\n }\n return this.customFieldsService.getCustomFields(\n this.domain,\n this.service,\n this.entity,\n this.customFieldsEndpoint,\n );\n }\n\n public validate() {\n const errors: any = {};\n Object.keys(this.formGroup.controls).forEach((field) => {\n const { errors: controlErrors } = this.formGroup.get(field) as FormGroup;\n if (controlErrors) {\n errors[field] = controlErrors;\n }\n });\n return errors;\n }\n\n public cleanFields() {\n this.formGroup.reset();\n }\n\n private enableOrDisableFields(disabled: boolean): void {\n if (!this.formGroup) {\n return;\n }\n\n for (const controlName of Object.keys(this.formGroup.value)) {\n disabled ? this.formGroup.get(controlName)?.disable() : this.formGroup.get(controlName)?.enable();\n }\n }\n\n private _validateInputs(): void {\n if (!this.domain) {\n throw new Error('You need to specify the custom-fields domain!');\n }\n if (!this.service) {\n throw new Error('You need to specify the custom-fields service!');\n }\n if (!this.entity) {\n throw new Error('You need to specify the custom-fields entity!');\n }\n }\n\n private _createForm(): void {\n this.formGroup = new FormGroup({});\n const observables = [this.getCustomFields(), this.localeService.get()];\n forkJoin(observables)\n .pipe(\n takeUntil(this.ngUsubscribe),\n finalize(() => {\n this.formGroup.markAsPristine();\n this.parentControl?.markAsPristine();\n\n if (this.ready$) {\n this.ready$.next(true);\n }\n }),\n )\n .subscribe((response) => {\n const [customFieldsResponse, localeOptions] = response as [CustomFieldsResponse, LocaleOptions];\n const defaults: { [key in string]: { defaultValue?: boolean; defaultMask?: string } } = {};\n defaults[CustomFieldType.String] = {};\n defaults[CustomFieldType.Boolean] = { defaultValue: false };\n defaults[CustomFieldType.Integer] = {};\n defaults[CustomFieldType.Double] = { defaultMask: '' };\n defaults[CustomFieldType.Money] = {};\n defaults[CustomFieldType.Date] = {};\n defaults[CustomFieldType.DateTime] = {};\n defaults[CustomFieldType.LocalDateTime] = {};\n defaults[CustomFieldType.Time] = {};\n defaults[CustomFieldType.Blob] = {};\n defaults[CustomFieldType.Enum] = {};\n defaults[CustomFieldType.Binary] = {};\n defaults[CustomFieldType.Any] = {};\n\n if (!customFieldsResponse || !customFieldsResponse.entity_) {\n return;\n }\n const { active, fields } = customFieldsResponse.entity_;\n if (!active) {\n return;\n }\n\n fields\n .filter((field) => field.customizable && field.customization?.active)\n .forEach((field) => {\n const dynamicType = this.getDynamicType(field, localeOptions);\n\n const fieldType = field.type;\n\n if (field.type === CustomFieldType.Blob && this.value && this.value[dynamicType.name]) {\n this.createBlobToFileUpload(dynamicType as BlobFieldConfig);\n }\n\n const { validationRegex } = field.customization;\n\n const asIsTypes: CustomFieldsTypeAPI[] = [\n CustomFieldType.Boolean,\n CustomFieldType.Money,\n CustomFieldType.Date,\n CustomFieldType.DateTime,\n CustomFieldType.LocalDateTime,\n CustomFieldType.Time,\n ];\n\n const validators = [];\n if (validationRegex && !asIsTypes.includes(fieldType)) {\n validators.push(Validators.pattern(validationRegex));\n }\n if (fieldType === CustomFieldType.Integer && !(dynamicType as NumberFieldConfig).mask) {\n validators.push(Validators.pattern(/^\\-?\\d*$/));\n }\n\n if (dynamicType.required?.()) {\n validators.push(Validators.required);\n }\n\n const control = new FormControl(\n { value: defaults[fieldType].defaultValue, disabled: this.formGroup.disabled },\n validators,\n );\n\n this.formGroup.addControl(dynamicType.name, control);\n\n this.fields.push(dynamicType);\n });\n this.dynamicStructure = dynamicTypeToDynamicStructure(this.fields);\n\n this.createFieldCustomization(fields);\n this.formGroup.patchValue(this.parseValuesForFields(this.value));\n this.ready = true;\n });\n }\n\n private parseValuesForFields(values: any) {\n const parsedValues = { ...values };\n\n this.fields.forEach((field) => {\n const type = field.type;\n const name = field.name;\n const value = values?.[name];\n\n /**\n * Tratamento exclusivo para campos boolean que tem o status Empty\n * Essa condicional necessita estar antes do if (!value) return;\n * Pois ela tem um status que usa null no valor do campo radio boolean\n */\n if (type === 'boolean') {\n const isString = typeof value === 'string';\n const notValid = !isString && typeof value !== 'boolean';\n if (notValid) {\n parsedValues[name] = null;\n } else {\n // Condicional para campos que retornam string de boolen do backand\n if (isString) {\n parsedValues[name] = value === 'true' ? true : false;\n } else {\n parsedValues[name] = value;\n }\n }\n }\n\n if (!value) {\n return;\n }\n\n switch (type) {\n case 'date':\n parsedValues[name] = moment(value).toDate();\n break;\n case 'dateTime':\n parsedValues[name] = moment(value).toDate();\n break;\n case 'localDateTime':\n parsedValues[name] = moment(value, 'YYYY-MM-DD[T]HH:mm:ss.SSS').toDate();\n break;\n case 'time':\n parsedValues[name] = moment(value, 'HH:mm:ss').toDate();\n break;\n default:\n break;\n }\n });\n\n return parsedValues;\n }\n\n /**\n * Algumas equipes só setam valor no formulário, após o carregamento da tela\n * Como é bem padrão isso, foi necessário criar esse método para gerar o file\n * após setar o valor no formulário\n */\n private createFilesIfSetFormValuesAfterInit() {\n if (!this.hasUploaded) {\n this.fields\n .filter((field) => field.type === 'blob')\n .forEach((field) => {\n if (this.formGroup.get(field.name)?.value) {\n this.createBlobToFileUpload(field);\n }\n });\n }\n }\n\n private parseFieldsValues() {\n const parsedValues: any = {};\n\n this.fields.forEach((field) => {\n const { type } = field;\n const name = field.name;\n let value = this.formGroup.get(name)?.value;\n\n if (value) {\n switch (type) {\n case 'number':\n const { mask, scale } = field;\n if (mask) value = new BigNumber(value).toFixed(scale as number).toString();\n break;\n case 'date':\n value = moment(value).format('YYYY-MM-DD');\n break;\n case 'dateTime':\n value = moment(value).format();\n break;\n case 'localDateTime':\n value = moment(value).format('YYYY-MM-DD[T]HH:mm:ss.SSS');\n break;\n case 'time':\n value = moment(value).format('HH:mm:ss');\n break;\n default:\n break;\n }\n }\n if ((value === null || value === undefined) && (type === 'number' || type === 'enum')) {\n const isMultiple = (field as SelectFieldConfig).multiple;\n parsedValues[name] = isMultiple ? [] : null;\n } else {\n parsedValues[name] = value;\n }\n });\n\n if (this.hasBlob) {\n parsedValues['fieldCustomization'] = this.formGroup.get('fieldCustomization')?.value;\n }\n return parsedValues;\n }\n\n private getDynamicType(field: FieldFromAPI, localeOptions: LocaleOptions): DynamicType {\n let parameters: Partial<DynamicType> = {};\n\n switch (field.type) {\n case CustomFieldType.Blob:\n parameters = this.getBlobParameters();\n break;\n case CustomFieldType.Boolean:\n parameters = this.getBooleanParameters();\n break;\n case 'Enumeration':\n case CustomFieldType.Enum:\n field.type = 'Enum';\n parameters = this.getSelectParameters(field);\n break;\n case CustomFieldType.Money:\n parameters = {\n type: 'legacyNumber',\n precision: 15,\n scale: 2,\n leftAddon: {\n label: localeOptions?.number?.currencySymbol ?? 'R$',\n },\n };\n break;\n case CustomFieldType.Double:\n parameters = {\n type: 'legacyNumber',\n precision: 15,\n scale: 2,\n localizedNumber: true,\n };\n break;\n case CustomFieldType.Integer:\n parameters = {\n type: 'legacyNumber',\n precision: 15,\n scale: 0,\n };\n break;\n case CustomFieldType.Any:\n field.type = 'String';\n parameters = {\n type: 'string',\n };\n break;\n }\n\n const dynamicType: DynamicType & {\n calendarOptions: CalendarLocaleOptions;\n currencyOptions: NumberLocaleOptions;\n } = {\n ...parameters,\n name: field.id,\n label: field.customization.label,\n tooltip: field.customization.tooltip,\n infoSign: field.customization.infoSign,\n type: apiTypesToDynamicFormType(field.type),\n mask: field.customization.mask,\n required: () => field.customization.mandatory ?? false,\n calendarOptions: localeOptions.calendar,\n currencyOptions: localeOptions.number,\n } as DynamicType & { calendarOptions: CalendarLocaleOptions; currencyOptions: NumberLocaleOptions };\n return dynamicType;\n }\n\n private getSelectParameters(field: any): Partial<SelectFieldConfig> {\n return {\n type: 'enum',\n showClear: true,\n multiple: field.customization.customEnumeration.multiple,\n options: field.customization.customEnumeration.values.map((e: any) => ({ label: e.value, value: e.key })),\n };\n }\n\n private getBooleanParameters(): Partial<BooleanFieldConfig> {\n return {\n type: 'boolean',\n optionsLabel: {\n true: this.getTranslateLabel(`true_label`),\n false: this.getTranslateLabel(`false_label`),\n empty: this.getTranslateLabel(`empty_label`),\n },\n };\n }\n\n private getBlobParameters(): Partial<ExpandedDynamicType> {\n return {\n type: 'blob',\n size: {\n sm: 12,\n md: 12,\n lg: 12,\n xl: 12,\n }, // Como vai ser filho de Row, faz sentido habilitar o tipo expandido.\n accept: 'image/*, application/*, text/*',\n chooseLabel: this.getTranslateLabel(`choose_label`),\n removeLabel: this.getTranslateLabel(`remove_label`),\n cancelLabel: this.getTranslateLabel(`cancel_label`),\n successTooltip: this.getTranslateLabel(`success_tooltip`),\n multiple: false,\n onUploadFile: (event: { files: FileDto[] }, blobField: BlobFieldConfig) => {\n this.hasUploaded = true;\n this.uploadFile(event, blobField);\n },\n onRemoveFile: (event: FileDto, blobField: BlobFieldConfig) => {\n this.removeFile({ file: event }, blobField);\n },\n onCancelUpload: (event: number, blobField: BlobFieldConfig) => {\n this.cancelUpload(event, blobField);\n },\n onDownloadFile: (event: { index: number; anchor: ElementRef }, blobField: BlobFieldConfig) => {\n this.downloadFile(event, blobField);\n },\n showFileUploadDate: this.showFileUploadDate,\n };\n }\n\n /**\n * É necessário criar o fieldCustomization quando há um Blob na entidade para gerar o\n * com os fields inseridos e deletados.\n */\n private createFieldCustomization(fields: FieldFromAPI[]): void {\n this.hasBlob = !!fields.filter((field) => field.type === CustomFieldType.Blob).length;\n if (this.hasBlob) {\n this.formGroup.addControl(\n 'fieldCustomization',\n new FormArray([\n new FormGroup({\n domain: new FormControl(this.domain),\n service: new FormControl(this.service),\n entity: new FormControl(this.entity),\n toDelete: new FormControl({ value: {}, disabled: false }),\n toInsert: new FormControl({ value: {}, disabled: false }),\n }),\n ]),\n );\n }\n }\n\n private createBlobToFileUpload(field: BlobFieldConfig) {\n const _name = field.name;\n const objectId = this.value[_name] ? this.value[_name] : this.formGroup.get(_name)?.value;\n const fileName = objectId.substring(objectId.lastIndexOf('/') + 1);\n const file: Partial<FileDto> = { objectId, name: fileName, savedFile: true };\n field.files = [file as FileDto];\n }\n\n private downloadFile(event: { index: number; anchor: ElementRef }, field: BlobFieldConfig) {\n const { index, anchor } = event;\n const _files = field.files || [];\n if (!_files.length) {\n return;\n }\n const currentFile = _files[index];\n if (currentFile.objectURL) {\n anchor.nativeElement.click();\n } else {\n const _objectId = currentFile.objectId as string;\n this.customFieldsService\n .requestAccess(_objectId, this.requestAccessEndpoint)\n .pipe(takeUntil(this.ngUsubscribe))\n .subscribe((data: any) => {\n const { fileName, uri } = data;\n this.customFieldsService\n .getFile(uri)\n .pipe(takeUntil(this.ngUsubscribe))\n .subscribe((blob: any) => {\n const newFile = new File([blob], fileName) as FileDto;\n newFile.objectURL = this.sanitizer.bypassSecurityTrustUrl(uri);\n anchor.nativeElement.setAttribute('href', uri);\n newFile.objectId = currentFile.objectId;\n newFile.savedFile = true;\n _files[index] = newFile;\n field.files = [..._files];\n anchor.nativeElement.click();\n });\n });\n }\n }\n\n private uploadFile(event: { files: FileDto[] }, formField: BlobFieldConfig): void {\n const { files } = event;\n const field = this.fields.find((record) => record.name === formField.name) as BlobFieldConfig;\n if (!field) {\n return;\n }\n\n // Se ocorrer um upload, já existindo um arquivo com upload feito. É necessário excluir o mesmo.\n if (field?.files?.length) {\n this.removeFile({ file: field.files[0] }, field);\n }\n field.files = files;\n const _name = field.name;\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n if (!file.savedFile && !file.progress) {\n file.isUploading = true;\n this.formGroup.get(_name)?.setValidators(isUploading(file));\n this.formGroup.get(_name)?.updateValueAndValidity();\n this.customFieldsService\n .getFileLocationUrl(\n {\n domain: this.domain,\n service: this.service,\n entityName: this.entity,\n field: _name,\n fileName: file.name,\n },\n this.fileLocationEndpoint,\n )\n .pipe(\n takeUntil(this.ngUsubscribe),\n catchError((err: HttpErrorResponse) => of(this.defaltCatchError(field, err, i))),\n )\n .subscribe((data: any) => {\n const { location, version, objectId } = data;\n file.version = version;\n file.objectId = objectId;\n file.uploadSubscribe = this.customFieldsService\n .uploadTempFile(location, file)\n .pipe(\n takeUntil(this.ngUsubscribe),\n catchError((err: HttpErrorResponse) => of(this.defaltCatchError(field, err, i))),\n finalize(() => {\n file.isUploading = false;\n }),\n )\n .subscribe((response: any) => {\n const { type } = response;\n if (!this.uploadCanceled) {\n if (type === HttpEventType.UploadProgress) {\n file.progress = Math.round(response.loaded / response.total) * 100;\n } else if (type === HttpEventType.Response) {\n file.objectURL = this.sanitizer.bypassSecurityTrustUrl(\n URL.createObjectURL(file),\n );\n\n const value = { objectId, name: file.name, version: file.version };\n const toInsert = this.formGroup.get('fieldCustomization')?.value[0].toInsert;\n const fieldCustomization = this.formGroup.get('fieldCustomization')?.value;\n if (fieldCustomization?.value?.[0]) {\n fieldCustomization.value[0].toInsert = {\n ...toInsert,\n [_name]: value,\n };\n }\n this.formGroup.get(_name)?.setValue(`${file.objectId}/${file.name}`);\n this.formGroup.get(_name)?.clearValidators();\n this.formGroup.get(_name)?.updateValueAndValidity();\n field.files = [file];\n }\n } else if (this.uploadCanceled && type === HttpEventType.Response) {\n this.uploadCanceled = false;\n }\n });\n field.files = [file];\n });\n }\n }\n }\n\n private removeFile(event: { file: FileDto }, blobField: BlobFieldConfig): void {\n const { file } = event;\n\n const field = this.fields.find((record) => record.name === blobField.name) as BlobFieldConfig;\n\n field!.files = [];\n\n if (file.objectId) {\n // Quando é um arquivo já salvo o objectId já é no formato \"objectId/name\"\n const value = file.savedFile ? `${file.objectId}` : `${file.objectId}/${file.name}`;\n const toDelete = this.formGroup.get('fieldCustomization')!.value[0].toDelete;\n delete this.formGroup.get('fieldCustomization')!.value[0].toInsert[field!.name];\n this.formGroup.get('fieldCustomization')!.value[0].toDelete = {\n ...toDelete,\n [field!.name]: [...(toDelete[field!.name] || []), value],\n };\n }\n\n this.formGroup.get(field!.name)!.clearValidators();\n this.formGroup.get(field!.name)!.setValue('');\n this.formGroup.get(field!.name)!.updateValueAndValidity();\n }\n\n private cancelUpload(index: number, formField: BlobFieldConfig): void {\n this.uploadCanceled = true;\n const field = this.fields.find((record) => record.name === formField.name) as BlobFieldConfig;\n if (!field) {\n return;\n }\n const _name = field.name;\n const _files = field.files || [];\n _files[index]?.uploadSubscribe?.unsubscribe();\n field.files = [];\n const fieldCustomization = this.formGroup.get('fieldCustomization')?.value[0];\n delete fieldCustomization.toInsert[_name];\n this.formGroup.get(_name)?.clearValidators();\n this.formGroup.get(_name)?.setValue('');\n this.formGroup.get(_name)?.updateValueAndValidity();\n }\n\n private defaltCatchError(field: BlobFieldConfig, err: HttpErrorResponse, index: number): Observable<never> {\n const { files } = field;\n if (files) {\n files[index].error = err;\n files[index].isUploading = false;\n field.files = [...files];\n const _name = field.name;\n this.formGroup.get(_name)?.setValidators([errorOnUpload(files[index])]);\n this.formGroup.get(_name)?.updateValueAndValidity();\n return throwError(() => new Error('error in upload file. Details: ' + err.message));\n } else {\n return throwError(() => new Error('error in upload file. Details: ' + err.message));\n }\n }\n\n private getTranslateLabel(label: string): string {\n return this.translateService.instant(`${this.domain}.${this.service}.${label}`);\n }\n\n private addDisplayTimeInfoSignToFields(): void {\n this.fields.forEach((field) => {\n field.displayTimeInfoSign = this.displayTimeInfoSign;\n });\n }\n}\n\nfunction isUploading(file: FileDto): ValidatorFn {\n return () => (file.isUploading ? { isUploading: true } : null);\n}\n\nfunction errorOnUpload(file: FileDto): ValidatorFn {\n return () => (file.error ? { uploadError: true } : null);\n}\n\n","@let errorMessages =\n {\n pattern: invalidErrorLabel,\n required: requiredErrorMessage,\n };\n\n<s-dynamic-form\n [configs]=\"dynamicStructure\"\n [form]=\"formGroup\"\n [errorMessages]=\"errorMessages\"\n>\n</s-dynamic-form>\n\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { CustomFieldsComponent } from \"./custom-fields.component\";\nimport { CustomFieldsService } from \"./custom-fields.service\";\nimport { TranslateModule, TranslateService } from \"@ngx-translate/core\";\nimport { LocaleModule } from \"@seniorsistemas/angular-components/locale\";\nimport { DynamicFormModule } from \"@seniorsistemas/angular-components/dynamic-form\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n LocaleModule,\n DynamicFormModule,\n TranslateModule\n ],\n declarations: [CustomFieldsComponent],\n exports: [CustomFieldsComponent],\n providers: [CustomFieldsService, TranslateService]\n})\nexport class CustomFieldsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|