@seniorsistemas/angular-components 19.9.14-develop-23365630 → 19.9.15-develop-11ab86f5
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/README.md +84 -2
- package/accordion/README.md +5 -4
- package/accordion/lib/accordion/accordion.module.d.ts +7 -0
- package/alert/lib/alert/alert.module.d.ts +7 -0
- package/badge/README.md +5 -4
- package/badge/lib/badge/badge.module.d.ts +10 -0
- package/bignumber-input/README.md +5 -4
- package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +16 -39
- package/bignumber-input/lib/bignumber-input/bignumber-input.module.d.ts +7 -0
- package/breadcrumb/README.md +5 -4
- package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.d.ts +5 -1
- package/button/lib/button/button.module.d.ts +7 -0
- package/calendar-mask/README.md +5 -4
- package/calendar-mask/lib/calendar-mask/calendar-mask.module.d.ts +7 -0
- package/card/README.md +6 -5
- package/card/lib/card/card.module.d.ts +7 -0
- package/chat/README.md +11 -8
- package/chat/lib/chat/chat.module.d.ts +7 -0
- package/checkbox-list/README.md +5 -4
- package/checkbox-list/lib/checkbox-list/checkbox-list.module.d.ts +7 -0
- package/chips/README.md +5 -4
- package/chips/lib/chips/chips.module.d.ts +7 -0
- package/code-editor/README.md +5 -4
- package/code-editor/lib/code-editor/code-editor.module.d.ts +7 -0
- package/collapse-link/README.md +5 -4
- package/collapse-link/lib/collapse-link/collapse-link.module.d.ts +7 -0
- package/common/lib/angular-components.module.d.ts +9 -0
- package/common/lib/provide-angular-components.d.ts +19 -0
- package/common/lib/svg-factory/svg-factory.module.d.ts +7 -0
- package/common/public-api.d.ts +1 -0
- package/content-generator/README.md +2 -2
- package/content-generator/lib/content-generator/content-generator.module.d.ts +7 -0
- package/control-errors/README.md +2 -2
- package/control-errors/lib/control-errors/control-errors.module.d.ts +7 -0
- package/country-phone-picker/README.md +2 -2
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.module.d.ts +7 -0
- package/currency/README.md +1 -1
- package/custom-fields/README.md +14 -3
- package/custom-fields/lib/custom-fields/custom-fields.module.d.ts +7 -0
- package/custom-fields/lib/custom-fields/models/custom-field-value-parser.d.ts +21 -0
- package/custom-fields/lib/custom-fields/models/index.d.ts +1 -0
- package/dialog/README.md +1 -1
- package/drawer/README.md +8 -4
- package/drawer/lib/drawer/drawer.module.d.ts +10 -0
- package/dynamic-form/README.md +18 -2
- package/dynamic-form/dynamic-form/dynamic-form.module.d.ts +7 -0
- package/dynamic-form/dynamic-form/form-field/addon-config.d.ts +10 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +15 -15
- package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +8 -6
- package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts +5 -2
- package/dynamic-form/public-api.d.ts +0 -1
- package/editable-overlay/README.md +2 -2
- package/editable-overlay/lib/editable-overlay/editable-overlay.module.d.ts +7 -0
- package/empty-state/README.md +5 -2
- package/empty-state/lib/empty-state/empty-state.module.d.ts +7 -0
- package/esm2022/accordion/lib/accordion/accordion.module.mjs +8 -1
- package/esm2022/alert/lib/alert/alert.module.mjs +8 -1
- package/esm2022/badge/lib/badge/badge.module.mjs +11 -1
- package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +19 -127
- package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.module.mjs +8 -1
- package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.mjs +6 -2
- package/esm2022/button/lib/button/button.module.mjs +8 -1
- package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.module.mjs +8 -1
- package/esm2022/card/lib/card/card.module.mjs +8 -1
- package/esm2022/chat/lib/chat/chat.module.mjs +8 -1
- package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.module.mjs +8 -1
- package/esm2022/chips/lib/chips/chips.module.mjs +8 -1
- package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +10 -1
- package/esm2022/code-editor/lib/code-editor/code-editor.module.mjs +9 -15
- package/esm2022/collapse-link/lib/collapse-link/collapse-link.module.mjs +8 -1
- package/esm2022/common/lib/angular-components.module.mjs +10 -1
- package/esm2022/common/lib/provide-angular-components.mjs +22 -0
- package/esm2022/common/lib/svg-factory/svg-factory.module.mjs +8 -1
- package/esm2022/common/public-api.mjs +2 -1
- package/esm2022/content-generator/lib/content-generator/content-generator.module.mjs +8 -1
- package/esm2022/control-errors/lib/control-errors/control-errors.module.mjs +8 -1
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.module.mjs +8 -1
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +4 -3
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +17 -13
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.module.mjs +8 -1
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +4 -3
- package/esm2022/custom-fields/lib/custom-fields/models/custom-field-type.mjs +4 -2
- package/esm2022/custom-fields/lib/custom-fields/models/custom-field-value-parser.mjs +46 -0
- package/esm2022/custom-fields/lib/custom-fields/models/index.mjs +2 -1
- package/esm2022/drawer/lib/drawer/drawer.module.mjs +11 -1
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.module.mjs +8 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/addon-config.mjs +6 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +33 -10
- package/esm2022/dynamic-form/public-api.mjs +2 -7
- package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.module.mjs +8 -1
- package/esm2022/empty-state/lib/empty-state/empty-state.module.mjs +8 -1
- package/esm2022/fieldset/lib/fieldset/fieldset.module.mjs +8 -1
- package/esm2022/file-picker/lib/file-picker/file-picker.module.mjs +8 -1
- package/esm2022/file-picker/lib/file-picker/file-picker.service.mjs +4 -3
- package/esm2022/gantt/lib/gantt/gantt.module.mjs +8 -1
- package/esm2022/global-search/lib/global-search/global-search.module.mjs +19 -1
- package/esm2022/grid-menu/lib/grid-menu/grid-menu.module.mjs +8 -1
- package/esm2022/help-popover/lib/help-popover/help-popover.module.mjs +8 -1
- package/esm2022/image-cropper/lib/image-cropper/image-cropper.module.mjs +12 -1
- package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +4 -3
- package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.module.mjs +8 -1
- package/esm2022/info-sign/lib/info-sign/info-sign.module.mjs +8 -1
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +5 -5
- package/esm2022/inline-edit/lib/inline-edit/inline-edit.module.mjs +8 -1
- package/esm2022/input-group/lib/input-group/input-group.module.mjs +8 -1
- package/esm2022/input-mask/lib/input-mask/input-mask.module.mjs +8 -1
- package/esm2022/input-text/lib/input-text/input-text.module.mjs +8 -1
- package/esm2022/insights/lib/insights/insights.module.mjs +11 -1
- package/esm2022/kanban/lib/kanban/kanban-event.service.mjs +4 -3
- package/esm2022/kanban/lib/kanban/kanban.module.mjs +11 -1
- package/esm2022/label-value/lib/label-value/label-value.module.mjs +8 -1
- package/esm2022/loading-state/lib/loading-state/loading-state.module.mjs +8 -1
- package/esm2022/locale/lib/locale/locale.module.mjs +14 -1
- package/esm2022/locale/lib/locale/locale.service.mjs +4 -3
- package/esm2022/locale/lib/locale/options/index.mjs +1 -13
- package/esm2022/locale/lib/locale/pipes/localized-bignumber-impure.pipe.mjs +1 -1
- package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +10 -2
- package/esm2022/locale/lib/locale/provide-locale.mjs +42 -0
- package/esm2022/locale/public-api.mjs +2 -1
- package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +5 -1
- package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.module.mjs +8 -1
- package/esm2022/mask/lib/mask/mask-formatter.module.mjs +8 -1
- package/esm2022/mouse-events/lib/mouse-events/mouse-events.module.mjs +8 -1
- package/esm2022/navigation-button/lib/navigation-button/navigation-button.module.mjs +8 -1
- package/esm2022/number-input/lib/number-input/number-input.directive.mjs +2 -2
- package/esm2022/number-input/lib/number-input/number-input.module.mjs +9 -2
- package/esm2022/numeric/lib/numeric.module.mjs +8 -1
- package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +178 -15
- package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.module.mjs +8 -1
- package/esm2022/object-card/lib/object-card/object-card.module.mjs +12 -1
- package/esm2022/panel/lib/panel/panel.module.mjs +11 -1
- package/esm2022/password-strength/lib/password-strength/password-strength.module.mjs +8 -1
- package/esm2022/picklist/lib/picklist/picklist.module.mjs +8 -1
- package/esm2022/pin-code-field/lib/pin-code-field.module.mjs +8 -1
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +8 -1
- package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +8 -1
- package/esm2022/rating-scale/lib/rating-scale/rating-scale.module.mjs +8 -1
- package/esm2022/select/lib/select/select.component.mjs +16 -3
- package/esm2022/select-button/lib/select-button/select-button.module.mjs +8 -1
- package/esm2022/shared/lib/shared/border-button/border-button.module.mjs +8 -1
- package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.module.mjs +8 -1
- package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.service.mjs +4 -3
- package/esm2022/slider/lib/slider/slider.module.mjs +8 -1
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.module.mjs +8 -1
- package/esm2022/split-button/lib/split-button/split-button.module.mjs +8 -1
- package/esm2022/stats-card/lib/stats-card/stats-card.module.mjs +8 -1
- package/esm2022/stepper/lib/stepper/stepper.module.mjs +8 -1
- package/esm2022/structure/lib/structure/structure.module.mjs +8 -1
- package/esm2022/switch/lib/switch/switch.module.mjs +8 -1
- package/esm2022/table/lib/table/table.module.mjs +9 -1
- package/esm2022/table-header/lib/table-header/table-header-checkox.module.mjs +8 -1
- package/esm2022/template/lib/template/template.module.mjs +8 -1
- package/esm2022/text-area/lib/text-area.module.mjs +8 -1
- package/esm2022/thumbnail/lib/thumbnail/thumbnail.module.mjs +8 -1
- package/esm2022/thumbnails/lib/thumbnails/thumbnails.module.mjs +8 -1
- package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.module.mjs +8 -1
- package/esm2022/tile/lib/tile/tile.module.mjs +11 -1
- package/esm2022/timeline/lib/timeline/timeline.module.mjs +8 -1
- package/esm2022/toast/lib/toast/toast.module.mjs +8 -1
- package/esm2022/token-list/lib/token-list/token-list.module.mjs +8 -1
- package/esm2022/tooltip/lib/tooltip/tooltip.module.mjs +8 -1
- package/esm2022/topbar/lib/topbar/topbar.module.mjs +11 -1
- package/esm2022/tree/lib/tree/tree.module.mjs +8 -1
- package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.module.mjs +8 -1
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-alert.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-badge.mjs +10 -0
- package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +25 -126
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +5 -1
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-card.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chat.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +164 -160
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-common.mjs +38 -2
- package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +10 -2
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +75 -15
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs +10 -0
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +52 -208
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +10 -2
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +18 -0
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +14 -2
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +11 -4
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-input-group.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-input-group.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-input-mask.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-input-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-input-text.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-input-text.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-insights.mjs +10 -0
- package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs +13 -2
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-label-value.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-locale.mjs +58 -5
- package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +11 -0
- package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-mask.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-number-input.mjs +9 -2
- package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +184 -14
- package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-numeric.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs +11 -0
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-panel.mjs +10 -0
- package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +15 -2
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +10 -2
- package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slider.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-structure.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-switch.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs +8 -0
- package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-template.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tile.mjs +10 -0
- package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-timeline.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-toast.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-topbar.mjs +10 -0
- package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tree.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
- package/fieldset/README.md +2 -2
- package/fieldset/lib/fieldset/fieldset.module.d.ts +7 -0
- package/file-picker/README.md +2 -2
- package/file-picker/lib/file-picker/file-picker.module.d.ts +7 -0
- package/file-upload/README.md +1 -1
- package/gantt/README.md +2 -2
- package/gantt/lib/gantt/gantt.module.d.ts +7 -0
- package/global-search/README.md +5 -2
- package/global-search/lib/global-search/global-search.module.d.ts +18 -0
- package/grid-menu/README.md +5 -4
- package/grid-menu/lib/grid-menu/grid-menu.module.d.ts +7 -0
- package/help-popover/README.md +5 -4
- package/help-popover/lib/help-popover/help-popover.module.d.ts +7 -0
- package/ia-insight/README.md +1 -1
- package/image-cropper/README.md +6 -5
- package/image-cropper/lib/image-cropper/image-cropper.module.d.ts +11 -0
- package/infinite-scroll/README.md +5 -4
- package/infinite-scroll/lib/infinite-scroll/infinite-scroll.module.d.ts +7 -0
- package/info-sign/README.md +5 -4
- package/info-sign/lib/info-sign/info-sign.module.d.ts +7 -0
- package/inline-edit/README.md +5 -4
- package/inline-edit/lib/inline-edit/inline-edit.module.d.ts +7 -0
- package/input-group/lib/input-group/input-group.module.d.ts +7 -0
- package/input-mask/lib/input-mask/input-mask.module.d.ts +7 -0
- package/input-text/lib/input-text/input-text.module.d.ts +7 -0
- package/insights/README.md +6 -4
- package/insights/lib/insights/insights.module.d.ts +10 -0
- package/kanban/README.md +6 -4
- package/kanban/lib/kanban/kanban.module.d.ts +10 -0
- package/label-value/README.md +5 -4
- package/label-value/lib/label-value/label-value.module.d.ts +7 -0
- package/loading-state/README.md +9 -5
- package/loading-state/lib/loading-state/loading-state.module.d.ts +7 -0
- package/locale/lib/locale/locale.module.d.ts +13 -0
- package/locale/lib/locale/pipes/localized-bignumber-impure.pipe.d.ts +2 -2
- package/locale/lib/locale/pipes/localized-bignumber.pipe.d.ts +20 -1
- package/locale/lib/locale/provide-locale.d.ts +18 -0
- package/locale/public-api.d.ts +1 -0
- package/localized-number-input/README.md +32 -8
- package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +4 -0
- package/localized-number-input/lib/localized-number-input/localized-number-input.module.d.ts +7 -0
- package/mask/lib/mask/mask-formatter.module.d.ts +7 -0
- package/mouse-events/README.md +5 -4
- package/mouse-events/lib/mouse-events/mouse-events.module.d.ts +7 -0
- package/navigation-button/README.md +5 -4
- package/navigation-button/lib/navigation-button/navigation-button.module.d.ts +7 -0
- package/number-input/lib/number-input/number-input.directive.d.ts +1 -1
- package/number-input/lib/number-input/number-input.module.d.ts +8 -1
- package/numeric/README.md +6 -5
- package/numeric/lib/numeric.module.d.ts +7 -0
- package/numeric-mask/README.md +44 -1
- package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +65 -4
- package/numeric-mask/lib/numeric-mask/numeric-mask.module.d.ts +7 -0
- package/object-card/README.md +11 -4
- package/object-card/lib/object-card/object-card.module.d.ts +11 -0
- package/package.json +1 -1
- package/panel/README.md +8 -4
- package/panel/lib/panel/panel.module.d.ts +10 -0
- package/password-strength/README.md +6 -3
- package/password-strength/lib/password-strength/password-strength.module.d.ts +7 -0
- package/picklist/README.md +8 -5
- package/picklist/lib/picklist/picklist.module.d.ts +7 -0
- package/pin-code-field/lib/pin-code-field.module.d.ts +7 -0
- package/product-header/README.md +2 -2
- package/profile-picture-picker/README.md +6 -3
- package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.d.ts +7 -0
- package/progressbar/README.md +6 -3
- package/progressbar/lib/progressbar/progressbar.module.d.ts +7 -0
- package/rating-scale/README.md +6 -3
- package/rating-scale/lib/rating-scale/rating-scale.module.d.ts +7 -0
- package/schematics/collection.json +40 -0
- package/schematics/migrations/migrate-app-to-standalone/index.d.ts +32 -0
- package/schematics/migrations/migrate-app-to-standalone/index.js +98 -0
- package/schematics/migrations/migrate-app-to-standalone/index.js.map +1 -0
- package/schematics/migrations/migrate-deprecated-apis/index.d.ts +49 -0
- package/schematics/migrations/migrate-deprecated-apis/index.js +660 -0
- package/schematics/migrations/migrate-deprecated-apis/index.js.map +1 -0
- package/schematics/migrations/migrate-deprecated-datepicker/index.d.ts +31 -0
- package/schematics/migrations/migrate-deprecated-datepicker/index.js +115 -0
- package/schematics/migrations/migrate-deprecated-datepicker/index.js.map +1 -0
- package/schematics/migrations/migrate-deprecated-dynamic-form/index.d.ts +52 -0
- package/schematics/migrations/migrate-deprecated-dynamic-form/index.js +661 -0
- package/schematics/migrations/migrate-deprecated-dynamic-form/index.js.map +1 -0
- package/schematics/migrations/migrate-deprecated-imports/index.d.ts +23 -0
- package/schematics/migrations/migrate-deprecated-imports/index.js +335 -0
- package/schematics/migrations/migrate-deprecated-imports/index.js.map +1 -0
- package/schematics/migrations/migrate-deprecated-selectors/index.d.ts +15 -0
- package/schematics/migrations/migrate-deprecated-selectors/index.js +76 -0
- package/schematics/migrations/migrate-deprecated-selectors/index.js.map +1 -0
- package/schematics/migrations/migrate-modules-to-standalone/index.d.ts +51 -0
- package/schematics/migrations/migrate-modules-to-standalone/index.js +632 -0
- package/schematics/migrations/migrate-modules-to-standalone/index.js.map +1 -0
- package/schematics/migrations/migrate-modules-to-standalone/modules-map.json +1656 -0
- package/schematics/migrations/migrate-v20/index.d.ts +9 -0
- package/schematics/migrations/migrate-v20/index.js +90 -0
- package/schematics/migrations/migrate-v20/index.js.map +1 -0
- package/schematics/migrations/migrate-v20/items.d.ts +7 -0
- package/schematics/migrations/migrate-v20/items.js +54 -0
- package/schematics/migrations/migrate-v20/items.js.map +1 -0
- package/schematics/migrations/migrate-v20/plan.d.ts +32 -0
- package/schematics/migrations/migrate-v20/plan.js +29 -0
- package/schematics/migrations/migrate-v20/plan.js.map +1 -0
- package/schematics/migrations.json +5 -1
- package/schematics/schema/app-standalone.schema.json +21 -0
- package/schematics/schema/migrate-v20.schema.json +33 -0
- package/schematics/schema/scope.schema.json +17 -0
- package/schematics/utils/ast-utils.js +16 -0
- package/schematics/utils/ast-utils.js.map +1 -1
- package/schematics/utils/eol.d.ts +5 -0
- package/schematics/utils/eol.js +17 -0
- package/schematics/utils/eol.js.map +1 -0
- package/schematics/utils/prompt-utils.d.ts +62 -0
- package/schematics/utils/prompt-utils.js +166 -0
- package/schematics/utils/prompt-utils.js.map +1 -0
- package/schematics/utils/report.d.ts +27 -0
- package/schematics/utils/report.js +70 -0
- package/schematics/utils/report.js.map +1 -0
- package/schematics/utils/scope.d.ts +17 -0
- package/schematics/utils/scope.js +55 -0
- package/schematics/utils/scope.js.map +1 -0
- package/schematics/utils/selection.d.ts +21 -0
- package/schematics/utils/selection.js +60 -0
- package/schematics/utils/selection.js.map +1 -0
- package/schematics/utils/symbol-utils.d.ts +31 -0
- package/schematics/utils/symbol-utils.js +202 -0
- package/schematics/utils/symbol-utils.js.map +1 -0
- package/schematics/utils/template-utils.d.ts +62 -0
- package/schematics/utils/template-utils.js +165 -0
- package/schematics/utils/template-utils.js.map +1 -0
- package/schematics/utils/tsconfig-paths.d.ts +5 -0
- package/schematics/utils/tsconfig-paths.js +73 -0
- package/schematics/utils/tsconfig-paths.js.map +1 -0
- package/select/lib/select/select.component.d.ts +8 -0
- package/select-button/README.md +6 -3
- package/select-button/lib/select-button/select-button.module.d.ts +7 -0
- package/shared/lib/shared/border-button/border-button.module.d.ts +7 -0
- package/sidebar/README.md +2 -2
- package/slide-in-bar/README.md +5 -5
- package/slide-in-bar/lib/slide-in-bar/slide-in-bar.module.d.ts +7 -0
- package/slider/README.md +6 -3
- package/slider/lib/slider/slider.module.d.ts +7 -0
- package/speech-recognition/README.md +6 -3
- package/speech-recognition/lib/speech-recognition/speech-recognition.module.d.ts +7 -0
- package/split-button/README.md +6 -3
- package/split-button/lib/split-button/split-button.module.d.ts +7 -0
- package/stats-card/README.md +6 -3
- package/stats-card/lib/stats-card/stats-card.module.d.ts +7 -0
- package/stepper/README.md +6 -3
- package/stepper/lib/stepper/stepper.module.d.ts +7 -0
- package/structure/lib/structure/structure.module.d.ts +7 -0
- package/switch/README.md +6 -3
- package/switch/lib/switch/switch.module.d.ts +7 -0
- package/table/README.md +12 -4
- package/table/lib/table/table.module.d.ts +8 -0
- package/table-header/lib/table-header/table-header-checkox.module.d.ts +7 -0
- package/template/README.md +0 -11
- package/template/lib/template/template.module.d.ts +7 -0
- package/text-area/lib/text-area.module.d.ts +7 -0
- package/text-area-ia/README.md +1 -1
- package/thumbnail/lib/thumbnail/thumbnail.module.d.ts +7 -0
- package/thumbnails/lib/thumbnails/thumbnails.module.d.ts +7 -0
- package/tiered-menu/lib/tiered-menu/tiered-menu.module.d.ts +7 -0
- package/tile/lib/tile/tile.module.d.ts +10 -0
- package/timeline/lib/timeline/timeline.module.d.ts +7 -0
- package/toast/lib/toast/toast.module.d.ts +7 -0
- package/token-list/lib/token-list/token-list.module.d.ts +7 -0
- package/tooltip/lib/tooltip/tooltip.module.d.ts +7 -0
- package/topbar/lib/topbar/topbar.module.d.ts +10 -0
- package/tree/lib/tree/tree.module.d.ts +7 -0
- package/workspace-switch/lib/workspace-switch/workspace-switch.module.d.ts +7 -0
- package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +0 -664
- package/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.d.ts +0 -29
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +0 -96
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +0 -124
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-picklist.mjs","sources":["../../projects/angular-components/picklist/src/lib/picklist/picklist.component.ts","../../projects/angular-components/picklist/src/lib/picklist/picklist.component.html","../../projects/angular-components/picklist/src/lib/picklist/picklist.module.ts","../../projects/angular-components/picklist/src/seniorsistemas-angular-components-picklist.ts"],"sourcesContent":["import { CdkDrag, CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n EventEmitter,\n inject,\n input,\n Input,\n OnChanges,\n OnInit,\n output,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\nimport { LoadingStateIndicators, LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\nimport { randomHash } from '@seniorsistemas/angular-components/utils';\nimport { debounceTime, distinctUntilChanged, pipe, Subject, switchMap, tap } from 'rxjs';\nimport { PickListItem, PicklistItemMove, PicklistLazyLoadEvent, PicklistLoader, PicklistTarget } from './types';\n\ninterface InternalPicklistItem<T = any> extends PickListItem<T> {\n invisible?: boolean;\n selected?: boolean;\n}\n\ntype CdkDragEvent<T> = { source: CdkDrag<InternalPicklistItem<T>> };\n\n/**\n * @description Componente de lista de dupla seleção (picklist) com suporte a\n * arrastar e soltar, filtro, checkboxes e template customizável para cada item.\n * Emite eventos ao mover itens entre as listas.\n *\n * @example\n * ```html\n * <s-picklist\n * [itensToSelect]=\"itensDisponiveis\"\n * [selectedItens]=\"itensSelecionados\"\n * (selectedItensChange)=\"onSelecaoMudou($event)\" />\n * ```\n *\n * @category Data\n */\n@Component({\n standalone: true,\n imports: [TranslateModule, DragDropModule, FormsModule, ButtonComponent, NgTemplateOutlet, LoadingStateModule],\n selector: 's-picklist',\n templateUrl: './picklist.component.html',\n styleUrls: ['./picklist.component.scss'],\n})\nexport class PicklistComponent<T> implements AfterViewInit, OnChanges, OnInit {\n private cdr = inject(ChangeDetectorRef);\n /** @description Lista de itens disponíveis para seleção (coluna esquerda). @default [] */\n @Input()\n public itensToSelect: PickListItem<T>[] = [];\n\n /** @description Lista de itens já selecionados (coluna direita). @default [] */\n @Input()\n public selectedItens: PickListItem<T>[] = [];\n\n /** @description Rótulo do título da lista de disponíveis. */\n @Input()\n public availableItensLabel?: string;\n\n /** @description Placeholder da busca na lista de disponíveis. */\n @Input()\n public availableItensPlaceholder?: string;\n\n /** @description Rótulo do botão de adicionar itens selecionados. */\n @Input()\n public addSelectedItensLabel?: string;\n\n /** @description Rótulo do botão de adicionar todos os itens. */\n @Input()\n public addAllItensLabel?: string;\n\n /** @description Rótulo do título da lista de selecionados. */\n @Input()\n public selectedItensLabel?: string;\n\n /** @description Placeholder da busca na lista de selecionados. */\n @Input()\n public selectedItensPlaceholder?: string;\n\n /** @description Rótulo do botão de remover itens selecionados. */\n @Input()\n public removeSelectedItemsLabel?: string;\n\n /** @description Rótulo do botão de remover todos os itens. */\n @Input()\n public removeAllItemsLabel?: string;\n\n /** @description Exibe checkbox nos itens das listas. @default false */\n @Input()\n public showCheckbox = false;\n\n /** @description Propriedade usada para filtrar os itens das listas. @default '' */\n @Input()\n public filterBy = '';\n\n /** @description Habilita o carregamento preguiçoso (lazy load) para as listas. @default false */\n lazyLoad = input<boolean>(false);\n\n /** @description Número de linhas a serem exibidas por página caso o lazyLoad esteja habilitado. @default 10 */\n rows = input<number>(10);\n\n /** @description Função loader para a lista de disponíveis (to-select). Quando fornecida, o componente gerencia internamente paginação, loading e race conditions. */\n sourceLoader = input<PicklistLoader<T>>();\n\n /** @description Função loader para a lista de selecionados (selected). Quando fornecida, o componente gerencia internamente paginação, loading e race conditions. */\n targetLoader = input<PicklistLoader<T>>();\n\n protected readonly _loadingTarget = signal<boolean>(false);\n\n protected readonly _loadingSource = signal<boolean>(false);\n\n /** @description Emitido quando um item é movido entre as listas e o lazy load está habilitado. */\n nodeMoved = output<PicklistItemMove<T>>();\n\n /** @description Emitido quando a lista de selecionados muda. */\n @Output()\n public selectedItensChange = new EventEmitter<any[]>();\n\n /** @description Emitido quando a lista de disponíveis muda. */\n @Output()\n public itensToSelectChange = new EventEmitter<any[]>();\n\n public availableItensFilter = '';\n\n public selectedItensFilter = '';\n\n public itemToSelectTemplate: TemplateRef<T> | null = null;\n\n public itemSelectedTemplate: TemplateRef<T> | null = null;\n\n protected logoIndicator = LoadingStateIndicators.Logo;\n\n protected itensToSelectFilterUtil: {\n allItensSelected: boolean;\n rawItensToSelect: InternalPicklistItem[];\n filteredItensToSelect: InternalPicklistItem[];\n } = {\n allItensSelected: false,\n rawItensToSelect: [],\n filteredItensToSelect: [],\n };\n\n protected selectedItensFilterUtil: {\n allItensSelected: boolean;\n rawSelectedItens: InternalPicklistItem[];\n filteredSelectedItens: InternalPicklistItem[];\n } = {\n allItensSelected: false,\n rawSelectedItens: [],\n filteredSelectedItens: [],\n };\n\n public selectedItensMap: Set<InternalPicklistItem> = new Set();\n public itensToSelectId = randomHash('itensToSelect');\n public selectedItensId = randomHash('selectedItens');\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly sourceFilterSubject = new Subject<string>();\n private readonly targetFilterSubject = new Subject<string>();\n private readonly sourceLoadSubject = new Subject<PicklistLazyLoadEvent>();\n private readonly targetLoadSubject = new Subject<PicklistLazyLoadEvent>();\n private _internalTotalSource = 0;\n private _internalTotalTarget = 0;\n private sourceCurrentPage = 0;\n private targetCurrentPage = 0;\n\n private _logErrorTemplate = true;\n @ContentChildren(TemplateDirective)\n private templates: QueryList<TemplateDirective> | null = null;\n\n ngAfterViewInit(): void {\n this.itemToSelectTemplate = this.templates?.find((x) => x.type === 'item-to-select')?.template ?? null;\n this.itemSelectedTemplate = this.templates?.find((x) => x.type === 'selected-item')?.template ?? null;\n if (this._logErrorTemplate) {\n if (!this.itemToSelectTemplate) {\n console.error(`Missing template for 'item-to-select' add this template using sTemplate directive.`);\n }\n if (!this.itemSelectedTemplate) {\n console.error(`Missing template for 'selected-item' add this template using sTemplate directive.`);\n }\n }\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n this.setupLoaderPipelines();\n this.setupLazyLoadEvents();\n this.setupFilterDebounce();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n const changedItensToSelect = changes['itensToSelect'];\n const changedSelectedItens = changes['selectedItens'];\n if (changedItensToSelect && !this.lazyLoad()) {\n this.itensToSelectFilterUtil = {\n allItensSelected: this.itensToSelectFilterUtil.allItensSelected || false,\n rawItensToSelect: this.itensToSelect,\n filteredItensToSelect: this.itensToSelect,\n };\n } else if (changedItensToSelect && this.lazyLoad()) {\n this.itensToSelectFilterUtil.rawItensToSelect = [\n ...this.itensToSelectFilterUtil.rawItensToSelect,\n ...this.itensToSelect,\n ];\n if (this.itensToSelectFilterUtil.allItensSelected) {\n this._checkAllSelectedItensChange(\n this.itensToSelectFilterUtil.allItensSelected,\n this.itensToSelectFilterUtil.rawItensToSelect,\n this.itensToSelectId,\n );\n }\n this.itensToSelectFilterUtil.filteredItensToSelect = [...this.itensToSelectFilterUtil.rawItensToSelect];\n }\n\n if (changedSelectedItens && !this.lazyLoad()) {\n this.selectedItensFilterUtil = {\n allItensSelected: this.selectedItensFilterUtil.allItensSelected || false,\n filteredSelectedItens: this.selectedItens,\n rawSelectedItens: this.selectedItens,\n };\n } else if (changedSelectedItens && this.lazyLoad()) {\n this.selectedItensFilterUtil.rawSelectedItens = [\n ...this.selectedItensFilterUtil.rawSelectedItens,\n ...this.selectedItens,\n ];\n if (this.selectedItensFilterUtil.allItensSelected) {\n this._checkAllSelectedItensChange(\n this.selectedItensFilterUtil.allItensSelected,\n this.selectedItensFilterUtil.rawSelectedItens,\n this.selectedItensId,\n );\n }\n this.selectedItensFilterUtil.filteredSelectedItens = [...this.selectedItensFilterUtil.rawSelectedItens];\n }\n }\n\n toggleSelected(internalPicklistItem: InternalPicklistItem, containerListId: string) {\n if (internalPicklistItem.disabled) {\n return;\n }\n this.unselectedItensByListId(this.getOppositiveId(containerListId));\n internalPicklistItem.selected = !internalPicklistItem.selected;\n if (internalPicklistItem.selected) {\n this.selectedItensMap.add(internalPicklistItem);\n } else {\n this.selectedItensMap.delete(internalPicklistItem);\n }\n\n const containerFilterUtil =\n containerListId === this.selectedItensId ? this.selectedItensFilterUtil : this.itensToSelectFilterUtil;\n const isAllSelected = this._checkAllSelectedByList(\n containerListId === this.selectedItensId\n ? this.selectedItensFilterUtil.filteredSelectedItens\n : this.itensToSelectFilterUtil.filteredItensToSelect,\n );\n if (this.lazyLoad() && !internalPicklistItem.selected && containerFilterUtil.allItensSelected) {\n containerFilterUtil.allItensSelected = false;\n } else if (this.lazyLoad() && isAllSelected && containerFilterUtil.allItensSelected !== isAllSelected) {\n containerFilterUtil.allItensSelected = isAllSelected;\n }\n this.cdr.detectChanges();\n }\n\n remove(all = false) {\n const itens = filterEnabled<T>(all ? this.selectedItensFilterUtil.rawSelectedItens : this.selectedItensMap);\n if (!itens.length) {\n return;\n }\n const allElements = this.lazyLoad() ? [] : this.selectedItensFilterUtil.rawSelectedItens;\n const revertAction = () => {\n this.selectedItensFilterUtil.rawSelectedItens = [\n ...this.selectedItensFilterUtil.rawSelectedItens,\n ...itens.map((i) => {\n i.selected = false;\n return i;\n }),\n ];\n this.itensToSelectFilterUtil.rawItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect.filter(\n (x) => !itens.includes(x),\n );\n this.selectedItensFilterUtil.allItensSelected = false;\n if (this.lazyLoad()) {\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n } else {\n this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n }\n this.cdr.detectChanges();\n };\n this.nodeMoved.emit({\n direction: 'to-select',\n items: all ? allElements : parseValueEmit(Array.from(this.selectedItensMap)),\n moveAll: all,\n revertAction,\n });\n this.itensToSelectFilterUtil.rawItensToSelect = [\n ...this.itensToSelectFilterUtil.rawItensToSelect,\n ...itens.map((itemRemove) => {\n itemRemove.selected = false;\n this.selectedItensMap.delete(itemRemove);\n return itemRemove;\n }),\n ];\n this.selectedItensFilterUtil.rawSelectedItens = this.selectedItensFilterUtil.rawSelectedItens.filter(\n (x) => !itens.includes(x),\n );\n this.selectedItensFilterUtil.allItensSelected = false;\n if (this.lazyLoad()) {\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n } else {\n this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n }\n this.cdr.detectChanges();\n }\n\n add(all = false) {\n const itens = filterEnabled<T>(all ? this.itensToSelectFilterUtil.rawItensToSelect : this.selectedItensMap);\n if (!itens.length) {\n return;\n }\n\n const allElements = this.lazyLoad() ? [] : this.itensToSelectFilterUtil.rawItensToSelect;\n const revertAction = () => {\n this.itensToSelectFilterUtil.rawItensToSelect = [\n ...this.itensToSelectFilterUtil.rawItensToSelect,\n ...itens.map((i) => {\n i.selected = false;\n this.selectedItensMap.delete(i);\n return i;\n }),\n ];\n this.selectedItensFilterUtil.rawSelectedItens = this.selectedItensFilterUtil.rawSelectedItens.filter(\n (x) => !itens.includes(x),\n );\n this.itensToSelectFilterUtil.allItensSelected = false;\n if (this.lazyLoad()) {\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n } else {\n this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n }\n this.cdr.detectChanges();\n };\n this.nodeMoved.emit({\n direction: 'selected',\n items: all ? allElements : parseValueEmit(Array.from(this.selectedItensMap)),\n moveAll: all,\n revertAction,\n });\n this.selectedItensFilterUtil.rawSelectedItens = [\n ...this.selectedItensFilterUtil.rawSelectedItens,\n ...itens.map((itemRemove) => {\n itemRemove.selected = false;\n this.selectedItensMap.delete(itemRemove);\n return itemRemove;\n }),\n ];\n this.itensToSelectFilterUtil.rawItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect.filter(\n (x) => !itens.includes(x),\n );\n this.itensToSelectFilterUtil.allItensSelected = false;\n if (this.lazyLoad()) {\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n } else {\n this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n }\n this.cdr.detectChanges();\n }\n\n filterItensToSelect(): void {\n if (this.lazyLoad()) {\n this._loadingSource.set(true);\n this.sourceFilterSubject.next(this.availableItensFilter);\n return;\n }\n let searchTerm = this.availableItensFilter.trim();\n if (searchTerm) {\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect.filter(\n (item) => compareStrings(item.data[this.filterBy], searchTerm),\n );\n } else {\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n }\n this.cdr.detectChanges();\n }\n\n filterSelectedItens(): void {\n if (this.lazyLoad()) {\n this._loadingTarget.set(true);\n this.targetFilterSubject.next(this.selectedItensFilter);\n return;\n }\n let searchTerm = this.selectedItensFilter.trim();\n if (searchTerm) {\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens.filter(\n (item) => compareStrings(item.data[this.filterBy], searchTerm),\n );\n } else {\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n }\n }\n\n drop(event: CdkDragDrop<InternalPicklistItem[]>) {\n const isDifferentContainer = event.container !== event.previousContainer;\n if (!isDifferentContainer) {\n return;\n }\n\n const isRemovedItens = event.previousContainer.id === this.selectedItensId;\n if (isRemovedItens) {\n this.remove();\n } else {\n this.add();\n }\n this.cdr.detectChanges();\n }\n\n onDragStart(event: CdkDragEvent<T>, dragListId: string) {\n this.unselectedItensByListId(this.getOppositiveId(dragListId));\n event.source.data.selected = true;\n this.selectedItensMap.add(event.source.data);\n this.selectedItensMap.forEach((x) => (x.invisible = true));\n this.cdr.detectChanges();\n }\n\n onDragRelease() {\n this.selectedItensMap.forEach((item) => (item.invisible = false));\n }\n\n checkAllAvailableItensChange(checked: boolean) {\n this._checkAllSelectedItensChange(\n checked,\n this.itensToSelectFilterUtil.filteredItensToSelect,\n this.itensToSelectId,\n );\n }\n\n checkAllSelectedItensChange(checked: boolean) {\n this._checkAllSelectedItensChange(\n checked,\n this.selectedItensFilterUtil.filteredSelectedItens,\n this.selectedItensId,\n );\n }\n\n onScroll(event: Event, listId: string) {\n if (!this.lazyLoad()) {\n return;\n }\n\n const element = event.target as HTMLElement;\n const reachLimit = element.offsetHeight + element.scrollTop >= element.scrollHeight;\n if (!reachLimit) {\n return;\n }\n const target: PicklistTarget = listId === this.selectedItensId ? 'selected' : 'to-select';\n const targetReachLimit =\n target === 'selected'\n ? this.selectedItensFilterUtil.filteredSelectedItens.length >= this._internalTotalTarget\n : this.itensToSelectFilterUtil.filteredItensToSelect.length >= this._internalTotalSource;\n if (targetReachLimit) {\n return;\n }\n this.loadNextPage(target);\n }\n\n get disableSelectedItensCheckbox() {\n return filterEnabled<T>(this.selectedItensFilterUtil.filteredSelectedItens).length === 0;\n }\n\n get disableItensToSelectCheckbox() {\n return filterEnabled<T>(this.itensToSelectFilterUtil.filteredItensToSelect).length === 0;\n }\n\n get itensToSelectAllSelected() {\n return this._checkAllSelectedByList(this.itensToSelectFilterUtil.filteredItensToSelect);\n }\n\n get selectedItensAllSelected() {\n return this._checkAllSelectedByList(this.selectedItensFilterUtil.filteredSelectedItens);\n }\n\n get hasSelectedItens() {\n return this.selectedItensMap.size > 0;\n }\n\n /**\n * @description Recarrega as listas após a confirmação de uma movimentação pelo backend.\n *\n * **Por que usar?**\n * Ao mover itens, o componente atualiza a UI de forma otimista — os itens são movidos\n * imediatamente antes da confirmação do servidor. Após o backend confirmar a operação,\n * chame `resetList` para limpar e recarregar as listas afetadas do zero, garantindo que\n * o estado da UI reflita os dados reais persistidos.\n *\n * **O que espera?**\n * Recebe o objeto `PicklistItemMove<T>` emitido pelo output `(nodeMoved)`. O componente\n * utiliza `node.direction` para determinar qual lista recarregar (a lista de destino da\n * movimentação) e `node.moveAll` para verificar se a origem também deve ser recarregada\n * (por exemplo, ao mover todos os itens de uma lista para outra, ambas ficam com estado\n * alterado no backend).\n *\n * **O que faz?**\n * - Reseta o contador de página da lista de destino para `0` (primeira página).\n * - Limpa todos os itens carregados na lista de destino.\n * - Dispara imediatamente o carregamento da primeira página via `sourceLoader`/`targetLoader`.\n * - Se `node.moveAll === true`, repete o processo para a lista de origem.\n *\n * **Exemplo de uso:**\n * ```typescript\n * nodeMoved(node: PicklistItemMove<MyItem>): void {\n * this.service.moveItems(node).subscribe({\n * next: () => this.myPicklist().resetList(node),\n * error: () => node.revertAction(),\n * });\n * }\n * ```\n *\n * @param node - O objeto de movimentação emitido pelo output `(nodeMoved)`.\n */\n public resetList(node: PicklistItemMove<T>): void {\n if (!this.lazyLoad()) {\n return;\n }\n\n this._resetListByTarget(node.direction);\n if (node.moveAll) {\n this._resetListByTarget(node.direction === 'selected' ? 'to-select' : 'selected');\n }\n }\n\n private _resetListByTarget(target: PicklistTarget): void {\n if (target === 'selected') {\n this.targetCurrentPage = -1;\n this._internalTotalTarget = 0;\n this.selectedItens = [];\n this.selectedItensFilterUtil.rawSelectedItens = [];\n this.selectedItensFilterUtil.filteredSelectedItens = [];\n } else {\n this.sourceCurrentPage = -1;\n this._internalTotalSource = 0;\n this.itensToSelect = [];\n this.itensToSelectFilterUtil.rawItensToSelect = [];\n this.itensToSelectFilterUtil.filteredItensToSelect = [];\n }\n\n this.cdr.detectChanges();\n Promise.resolve().then(() => this.loadNextPage(target));\n }\n\n private _checkAllSelectedByList(list: InternalPicklistItem[]) {\n const _listItens = filterEnabled<T>(list);\n if (!_listItens.length) {\n return false;\n } else {\n return _listItens.every((x) => x.selected);\n }\n }\n\n private setupLoaderPipelines(): void {\n if (!this.lazyLoad()) {\n return;\n }\n\n if (!this.sourceLoader && !this.targetLoader && this._logErrorTemplate) {\n console.error(\n `Lazy load is enabled but no loader function was provided. Please provide at least one loader function using 'sourceLoader' or 'targetLoader' input.`,\n );\n }\n\n if (this.sourceLoader()) {\n this.sourceLoadSubject\n .pipe(\n switchMap((event) => {\n this._loadingSource.set(true);\n return this.sourceLoader()!(event);\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(({ items, totalRecords }) => {\n this._internalTotalSource = totalRecords;\n this.itensToSelectFilterUtil.rawItensToSelect = [\n ...this.itensToSelectFilterUtil.rawItensToSelect,\n ...items,\n ];\n if (this.itensToSelectFilterUtil.allItensSelected) {\n this._checkAllSelectedItensChange(\n true,\n this.itensToSelectFilterUtil.rawItensToSelect,\n this.itensToSelectId,\n );\n }\n this.itensToSelectFilterUtil.filteredItensToSelect = [\n ...this.itensToSelectFilterUtil.rawItensToSelect,\n ];\n this._loadingSource.set(false);\n this.cdr.detectChanges();\n });\n }\n\n if (this.targetLoader()) {\n this.targetLoadSubject\n .pipe(\n switchMap((event) => {\n this._loadingTarget.set(true);\n return this.targetLoader()!(event);\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(({ items, totalRecords }) => {\n this._internalTotalTarget = totalRecords;\n this.selectedItensFilterUtil.rawSelectedItens = [\n ...this.selectedItensFilterUtil.rawSelectedItens,\n ...items,\n ];\n if (this.selectedItensFilterUtil.allItensSelected) {\n this._checkAllSelectedItensChange(\n true,\n this.selectedItensFilterUtil.rawSelectedItens,\n this.selectedItensId,\n );\n }\n this.selectedItensFilterUtil.filteredSelectedItens = [\n ...this.selectedItensFilterUtil.rawSelectedItens,\n ];\n this._loadingTarget.set(false);\n this.cdr.detectChanges();\n });\n }\n }\n\n private setupFilterDebounce(): void {\n if (!this.lazyLoad()) {\n return;\n }\n\n this.sourceFilterSubject\n .pipe(\n distinctUntilChanged(),\n debounceTime(300),\n tap(() => {\n this.sourceCurrentPage = -1;\n this.itensToSelect = [];\n this.itensToSelectFilterUtil.rawItensToSelect = [];\n this.itensToSelectFilterUtil.filteredItensToSelect = [];\n this.cdr.detectChanges();\n }),\n switchMap(() => {\n this.loadNextPage('to-select');\n return [];\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n\n this.targetFilterSubject\n .pipe(\n distinctUntilChanged(),\n debounceTime(300),\n tap(() => {\n this.targetCurrentPage = -1;\n this.selectedItens = [];\n this.selectedItensFilterUtil.rawSelectedItens = [];\n this.selectedItensFilterUtil.filteredSelectedItens = [];\n this.cdr.detectChanges();\n }),\n switchMap(() => {\n this.loadNextPage('selected');\n return [];\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n private setupLazyLoadEvents() {\n if (!this.lazyLoad()) {\n return;\n }\n\n Promise.resolve().then(() => {\n this.loadNextPage('to-select');\n this.loadNextPage('selected');\n });\n }\n\n private loadNextPage(target: PicklistTarget): void {\n const totalRegisters = target === 'selected' ? this._internalTotalTarget : this._internalTotalSource;\n const lastPage = Math.ceil(totalRegisters / this.rows());\n\n if (target === 'selected' && this.targetCurrentPage < lastPage) {\n this.targetCurrentPage++;\n } else if (target === 'to-select' && this.sourceCurrentPage < lastPage) {\n this.sourceCurrentPage++;\n }\n\n this.emitCurrentPage(target);\n }\n\n private emitCurrentPage(target: PicklistTarget): void {\n const filter = target === 'selected' ? this.selectedItensFilter : this.availableItensFilter;\n const page = target === 'selected' ? this.targetCurrentPage : this.sourceCurrentPage;\n\n const event: PicklistLazyLoadEvent = { target, page, filter, pageSize: this.rows() };\n\n if (target === 'selected') {\n this.targetLoadSubject.next(event);\n } else {\n this.sourceLoadSubject.next(event);\n }\n }\n\n private _checkAllSelectedItensChange(checked: boolean, list: InternalPicklistItem[], listId: string) {\n this.unselectedItensByListId(listId === this.selectedItensId ? this.itensToSelectId : this.selectedItensId);\n filterEnabled<T>(list).forEach((item) => {\n item.selected = checked;\n if (checked) {\n this.selectedItensMap.add(item);\n } else {\n this.selectedItensMap.delete(item);\n }\n });\n if (listId === this.selectedItensId) {\n this.selectedItensFilterUtil.allItensSelected = checked;\n } else {\n this.itensToSelectFilterUtil.allItensSelected = checked;\n }\n this.cdr.detectChanges();\n }\n\n private unselectedItensByListId(listId: string) {\n const clearList = this.getAllElementsByListId(listId);\n clearList.forEach((x) => {\n x.selected = false;\n this.selectedItensMap.delete(x);\n });\n this.cdr.detectChanges();\n }\n\n private getAllElementsByListId(listId: string) {\n return listId === this.selectedItensId\n ? this.selectedItensFilterUtil.rawSelectedItens\n : this.itensToSelectFilterUtil.rawItensToSelect;\n }\n\n private getOppositiveId(listId: string) {\n return listId === this.selectedItensId ? this.itensToSelectId : this.selectedItensId;\n }\n\n private emitData() {\n this.itensToSelectChange.emit(parseValueEmit(this.itensToSelect));\n this.selectedItensChange.emit(parseValueEmit(this.selectedItens));\n }\n}\n\nconst normalizeString = (str: string) => {\n return str\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase();\n};\n\n/**\n * Compares two strings by normalizing them to a case-insensitive and accent-free form,\n * and checks if the main string contains the substring.\n *\n * @param mainString - The string to be searched.\n * @param substring - The string to search for within the main string.\n * @returns A boolean indicating whether the normalized main string contains the normalized substring.\n */\n\nconst compareStrings = (mainString: string, substring: string) => {\n return normalizeString(mainString).includes(normalizeString(substring));\n};\n\nconst filterEnabled = <T>(list: PickListItem<T>[] | Set<InternalPicklistItem>): InternalPicklistItem[] => {\n const _list = list instanceof Set ? Array.from(list) : list;\n return _list.filter((x) => !x.disabled);\n};\n\nconst mapData = <T>(list: PickListItem<T>[]) => {\n return list.map((x) => x.data);\n};\n\nconst parseValueEmit = pipe(filterEnabled, mapData);\n\nexport const parseItensPickList = <T>(\n array: T[],\n disabledFn?: (item: T) => boolean,\n idKey?: keyof T,\n): PickListItem<T>[] => {\n return array.map((x) => {\n return {\n data: x,\n disabled: disabledFn ? disabledFn(x) : false,\n id: idKey ? String(x[idKey]) : crypto.randomUUID(),\n };\n });\n};\n\n","<ng-template\n #previewRender\n let-itens=\"itens\"\n let-template=\"template\"\n>\n <section class=\"picklist-items\">\n @for (item of itens; track $index) {\n <ng-container *ngTemplateOutlet=\"template; context: { item: item.data }\"></ng-container>\n }\n </section>\n</ng-template>\n\n<ng-template\n #picklistItensRender\n let-id=\"id\"\n let-itens=\"itens\"\n let-template=\"template\"\n let-listConnectedTo=\"listConnectedTo\"\n let-isLoading=\"isLoading\"\n>\n <div\n class=\"picklist-items\"\n cdkDropList\n [id]=\"id\"\n [cdkDropListSortingDisabled]=\"true\"\n [cdkDropListData]=\"itens\"\n [cdkDropListConnectedTo]=\"listConnectedTo\"\n (cdkDropListDropped)=\"drop($event)\"\n *sLoadingState=\"{ loading: isLoading, indicator: logoIndicator }\"\n (scroll)=\"onScroll($event, id)\"\n >\n @for (item of itens; track $index) {\n <div\n cdkDrag\n [cdkDragDisabled]=\"item.disabled\"\n [cdkDragData]=\"item\"\n (click)=\"toggleSelected(item, id)\"\n (cdkDragStarted)=\"onDragStart($event, id)\"\n (cdkDragReleased)=\"onDragRelease()\"\n class=\"picklist-item\"\n [class.picklist-disabled]=\"item.disabled\"\n [class.picklist-item-invisible]=\"item.invisible\"\n [class.picklist-item-active]=\"item.selected\"\n >\n @if (showCheckbox) {\n <input\n type=\"checkbox\"\n class=\"input-checkbox\"\n [(ngModel)]=\"item.selected\"\n [disabled]=\"item.disabled\"\n />\n }\n <div class=\"picklist-content\">\n <ng-container\n *ngTemplateOutlet=\"\n template;\n context: { item: item.data, selected: item.selected, disabled: item.disabled }\n \"\n ></ng-container>\n </div>\n <ng-container *cdkDragPreview>\n <ng-container\n *ngTemplateOutlet=\"previewRender; context: { itens: selectedItensMap, template: template }\"\n ></ng-container>\n </ng-container>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template\n #checkboxTitleRender\n let-disabled=\"disabled\"\n let-checked=\"checked\"\n let-changeFn=\"changeFn\"\n let-id=\"id\"\n>\n @if (showCheckbox && !lazyLoad()) {\n <input\n class=\"input-checkbox\"\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"changeFn($any($event.target).checked)\"\n />\n } @else if (showCheckbox && lazyLoad() && id === itensToSelectId) {\n <input\n class=\"input-checkbox\"\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"itensToSelectFilterUtil.allItensSelected\"\n (change)=\"checkAllAvailableItensChange($any($event.target).checked)\"\n />\n } @else if (showCheckbox && lazyLoad() && id === selectedItensId) {\n <input\n class=\"input-checkbox\"\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"selectedItensFilterUtil.allItensSelected\"\n (change)=\"checkAllSelectedItensChange($any($event.target).checked)\"\n />\n }\n</ng-template>\n\n<div class=\"picklist-container\">\n <div class=\"picklist-item-container\">\n <div class=\"picklist-box\">\n <div class=\"picklist-title-container\">\n @if (!filterBy && !lazyLoad()) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\n id: itensToSelectId,\n }\n \"\n ></ng-container>\n }\n <span class=\"picklist-title\">\n {{ availableItensLabel || 'platform.angular_components.available-items' | translate }}\n </span>\n </div>\n @if (filterBy || lazyLoad()) {\n <div class=\"picklist-filter\">\n @if (showCheckbox) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\n id: itensToSelectId,\n }\n \"\n ></ng-container>\n }\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"availableItensFilter\"\n (ngModelChange)=\"filterItensToSelect()\"\n [placeholder]=\"\n availableItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\n \"\n />\n </div>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n picklistItensRender;\n context: {\n id: itensToSelectId,\n itens: itensToSelectFilterUtil.filteredItensToSelect,\n template: itemToSelectTemplate,\n listConnectedTo: selectedItensId,\n isLoading: _loadingSource(),\n }\n \"\n >\n </ng-container>\n </div>\n <div class=\"buttons-container\">\n <s-button\n [label]=\"addSelectedItensLabel || 'platform.angular_components.add' | translate\"\n priority=\"primary\"\n rightIconClass=\"fa fa-fw fa-arrow-right\"\n [disabled]=\"!hasSelectedItens\"\n (clicked)=\"add()\"\n [auxiliary]=\"false\"\n [caret]=\"false\"\n >\n </s-button>\n <s-button\n [label]=\"addAllItensLabel || 'platform.angular_components.add_all' | translate\"\n priority=\"link\"\n (clicked)=\"add(true)\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n </div>\n <div class=\"picklist-item-container\">\n <div class=\"picklist-box\">\n <div class=\"picklist-title-container\">\n @if (!filterBy && !lazyLoad()) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableSelectedItensCheckbox,\n checked: selectedItensAllSelected,\n changeFn: checkAllSelectedItensChange.bind(this),\n id: selectedItensId,\n }\n \"\n ></ng-container>\n }\n <span class=\"picklist-title\">\n {{ selectedItensLabel || 'platform.angular_components.selected-items' | translate }}\n </span>\n </div>\n @if (filterBy || lazyLoad()) {\n <div class=\"picklist-filter\">\n @if (showCheckbox) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableSelectedItensCheckbox,\n checked: selectedItensAllSelected,\n changeFn: checkAllSelectedItensChange.bind(this),\n id: selectedItensId,\n }\n \"\n ></ng-container>\n }\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"selectedItensFilter\"\n (ngModelChange)=\"filterSelectedItens()\"\n [placeholder]=\"\n selectedItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\n \"\n />\n </div>\n }\n <ng-container\n *ngTemplateOutlet=\"\n picklistItensRender;\n context: {\n id: selectedItensId,\n itens: selectedItensFilterUtil.filteredSelectedItens,\n template: itemSelectedTemplate,\n listConnectedTo: itensToSelectId,\n isLoading: _loadingTarget(),\n }\n \"\n >\n </ng-container>\n </div>\n <div class=\"buttons-container\">\n <s-button\n [label]=\"removeSelectedItemsLabel || 'platform.angular_components.remove' | translate\"\n priority=\"primary\"\n iconClass=\"fa fa-fw fa-arrow-left\"\n [disabled]=\"!hasSelectedItens\"\n [auxiliary]=\"false\"\n (clicked)=\"remove()\"\n [caret]=\"false\"\n >\n </s-button>\n <s-button\n [label]=\"removeAllItemsLabel || 'platform.angular_components.remove_all' | translate\"\n priority=\"link\"\n (clicked)=\"remove(true)\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n </div>\n</div>\n\n","import { NgModule } from '@angular/core';\n\nimport { PicklistComponent } from './picklist.component';\n\n@NgModule({\n imports: [PicklistComponent],\n exports: [PicklistComponent],\n})\nexport class PicklistModule {}\n\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-picklist.mjs","sources":["../../projects/angular-components/picklist/src/lib/picklist/picklist.component.ts","../../projects/angular-components/picklist/src/lib/picklist/picklist.component.html","../../projects/angular-components/picklist/src/lib/picklist/picklist.module.ts","../../projects/angular-components/picklist/src/seniorsistemas-angular-components-picklist.ts"],"sourcesContent":["import { CdkDrag, CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n EventEmitter,\n inject,\n input,\n Input,\n OnChanges,\n OnInit,\n output,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\nimport { LoadingStateIndicators, LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\nimport { randomHash } from '@seniorsistemas/angular-components/utils';\nimport { debounceTime, distinctUntilChanged, pipe, Subject, switchMap, tap } from 'rxjs';\nimport { PickListItem, PicklistItemMove, PicklistLazyLoadEvent, PicklistLoader, PicklistTarget } from './types';\n\ninterface InternalPicklistItem<T = any> extends PickListItem<T> {\n invisible?: boolean;\n selected?: boolean;\n}\n\ntype CdkDragEvent<T> = { source: CdkDrag<InternalPicklistItem<T>> };\n\n/**\n * @description Componente de lista de dupla seleção (picklist) com suporte a\n * arrastar e soltar, filtro, checkboxes e template customizável para cada item.\n * Emite eventos ao mover itens entre as listas.\n *\n * @example\n * ```html\n * <s-picklist\n * [itensToSelect]=\"itensDisponiveis\"\n * [selectedItens]=\"itensSelecionados\"\n * (selectedItensChange)=\"onSelecaoMudou($event)\" />\n * ```\n *\n * @category Data\n */\n@Component({\n standalone: true,\n imports: [TranslateModule, DragDropModule, FormsModule, ButtonComponent, NgTemplateOutlet, LoadingStateModule],\n selector: 's-picklist',\n templateUrl: './picklist.component.html',\n styleUrls: ['./picklist.component.scss'],\n})\nexport class PicklistComponent<T> implements AfterViewInit, OnChanges, OnInit {\n private cdr = inject(ChangeDetectorRef);\n /** @description Lista de itens disponíveis para seleção (coluna esquerda). @default [] */\n @Input()\n public itensToSelect: PickListItem<T>[] = [];\n\n /** @description Lista de itens já selecionados (coluna direita). @default [] */\n @Input()\n public selectedItens: PickListItem<T>[] = [];\n\n /** @description Rótulo do título da lista de disponíveis. */\n @Input()\n public availableItensLabel?: string;\n\n /** @description Placeholder da busca na lista de disponíveis. */\n @Input()\n public availableItensPlaceholder?: string;\n\n /** @description Rótulo do botão de adicionar itens selecionados. */\n @Input()\n public addSelectedItensLabel?: string;\n\n /** @description Rótulo do botão de adicionar todos os itens. */\n @Input()\n public addAllItensLabel?: string;\n\n /** @description Rótulo do título da lista de selecionados. */\n @Input()\n public selectedItensLabel?: string;\n\n /** @description Placeholder da busca na lista de selecionados. */\n @Input()\n public selectedItensPlaceholder?: string;\n\n /** @description Rótulo do botão de remover itens selecionados. */\n @Input()\n public removeSelectedItemsLabel?: string;\n\n /** @description Rótulo do botão de remover todos os itens. */\n @Input()\n public removeAllItemsLabel?: string;\n\n /** @description Exibe checkbox nos itens das listas. @default false */\n @Input()\n public showCheckbox = false;\n\n /** @description Propriedade usada para filtrar os itens das listas. @default '' */\n @Input()\n public filterBy = '';\n\n /** @description Habilita o carregamento preguiçoso (lazy load) para as listas. @default false */\n lazyLoad = input<boolean>(false);\n\n /** @description Número de linhas a serem exibidas por página caso o lazyLoad esteja habilitado. @default 10 */\n rows = input<number>(10);\n\n /** @description Função loader para a lista de disponíveis (to-select). Quando fornecida, o componente gerencia internamente paginação, loading e race conditions. */\n sourceLoader = input<PicklistLoader<T>>();\n\n /** @description Função loader para a lista de selecionados (selected). Quando fornecida, o componente gerencia internamente paginação, loading e race conditions. */\n targetLoader = input<PicklistLoader<T>>();\n\n protected readonly _loadingTarget = signal<boolean>(false);\n\n protected readonly _loadingSource = signal<boolean>(false);\n\n /** @description Emitido quando um item é movido entre as listas e o lazy load está habilitado. */\n nodeMoved = output<PicklistItemMove<T>>();\n\n /** @description Emitido quando a lista de selecionados muda. */\n @Output()\n public selectedItensChange = new EventEmitter<any[]>();\n\n /** @description Emitido quando a lista de disponíveis muda. */\n @Output()\n public itensToSelectChange = new EventEmitter<any[]>();\n\n public availableItensFilter = '';\n\n public selectedItensFilter = '';\n\n public itemToSelectTemplate: TemplateRef<T> | null = null;\n\n public itemSelectedTemplate: TemplateRef<T> | null = null;\n\n protected logoIndicator = LoadingStateIndicators.Logo;\n\n protected itensToSelectFilterUtil: {\n allItensSelected: boolean;\n rawItensToSelect: InternalPicklistItem[];\n filteredItensToSelect: InternalPicklistItem[];\n } = {\n allItensSelected: false,\n rawItensToSelect: [],\n filteredItensToSelect: [],\n };\n\n protected selectedItensFilterUtil: {\n allItensSelected: boolean;\n rawSelectedItens: InternalPicklistItem[];\n filteredSelectedItens: InternalPicklistItem[];\n } = {\n allItensSelected: false,\n rawSelectedItens: [],\n filteredSelectedItens: [],\n };\n\n public selectedItensMap: Set<InternalPicklistItem> = new Set();\n public itensToSelectId = randomHash('itensToSelect');\n public selectedItensId = randomHash('selectedItens');\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly sourceFilterSubject = new Subject<string>();\n private readonly targetFilterSubject = new Subject<string>();\n private readonly sourceLoadSubject = new Subject<PicklistLazyLoadEvent>();\n private readonly targetLoadSubject = new Subject<PicklistLazyLoadEvent>();\n private _internalTotalSource = 0;\n private _internalTotalTarget = 0;\n private sourceCurrentPage = 0;\n private targetCurrentPage = 0;\n\n private _logErrorTemplate = true;\n @ContentChildren(TemplateDirective)\n private templates: QueryList<TemplateDirective> | null = null;\n\n ngAfterViewInit(): void {\n this.itemToSelectTemplate = this.templates?.find((x) => x.type === 'item-to-select')?.template ?? null;\n this.itemSelectedTemplate = this.templates?.find((x) => x.type === 'selected-item')?.template ?? null;\n if (this._logErrorTemplate) {\n if (!this.itemToSelectTemplate) {\n console.error(`Missing template for 'item-to-select' add this template using sTemplate directive.`);\n }\n if (!this.itemSelectedTemplate) {\n console.error(`Missing template for 'selected-item' add this template using sTemplate directive.`);\n }\n }\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n this.setupLoaderPipelines();\n this.setupLazyLoadEvents();\n this.setupFilterDebounce();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n const changedItensToSelect = changes['itensToSelect'];\n const changedSelectedItens = changes['selectedItens'];\n if (changedItensToSelect && !this.lazyLoad()) {\n this.itensToSelectFilterUtil = {\n allItensSelected: this.itensToSelectFilterUtil.allItensSelected || false,\n rawItensToSelect: this.itensToSelect,\n filteredItensToSelect: this.itensToSelect,\n };\n } else if (changedItensToSelect && this.lazyLoad()) {\n this.itensToSelectFilterUtil.rawItensToSelect = [\n ...this.itensToSelectFilterUtil.rawItensToSelect,\n ...this.itensToSelect,\n ];\n if (this.itensToSelectFilterUtil.allItensSelected) {\n this._checkAllSelectedItensChange(\n this.itensToSelectFilterUtil.allItensSelected,\n this.itensToSelectFilterUtil.rawItensToSelect,\n this.itensToSelectId,\n );\n }\n this.itensToSelectFilterUtil.filteredItensToSelect = [...this.itensToSelectFilterUtil.rawItensToSelect];\n }\n\n if (changedSelectedItens && !this.lazyLoad()) {\n this.selectedItensFilterUtil = {\n allItensSelected: this.selectedItensFilterUtil.allItensSelected || false,\n filteredSelectedItens: this.selectedItens,\n rawSelectedItens: this.selectedItens,\n };\n } else if (changedSelectedItens && this.lazyLoad()) {\n this.selectedItensFilterUtil.rawSelectedItens = [\n ...this.selectedItensFilterUtil.rawSelectedItens,\n ...this.selectedItens,\n ];\n if (this.selectedItensFilterUtil.allItensSelected) {\n this._checkAllSelectedItensChange(\n this.selectedItensFilterUtil.allItensSelected,\n this.selectedItensFilterUtil.rawSelectedItens,\n this.selectedItensId,\n );\n }\n this.selectedItensFilterUtil.filteredSelectedItens = [...this.selectedItensFilterUtil.rawSelectedItens];\n }\n }\n\n toggleSelected(internalPicklistItem: InternalPicklistItem, containerListId: string) {\n if (internalPicklistItem.disabled) {\n return;\n }\n this.unselectedItensByListId(this.getOppositiveId(containerListId));\n internalPicklistItem.selected = !internalPicklistItem.selected;\n if (internalPicklistItem.selected) {\n this.selectedItensMap.add(internalPicklistItem);\n } else {\n this.selectedItensMap.delete(internalPicklistItem);\n }\n\n const containerFilterUtil =\n containerListId === this.selectedItensId ? this.selectedItensFilterUtil : this.itensToSelectFilterUtil;\n const isAllSelected = this._checkAllSelectedByList(\n containerListId === this.selectedItensId\n ? this.selectedItensFilterUtil.filteredSelectedItens\n : this.itensToSelectFilterUtil.filteredItensToSelect,\n );\n if (this.lazyLoad() && !internalPicklistItem.selected && containerFilterUtil.allItensSelected) {\n containerFilterUtil.allItensSelected = false;\n } else if (this.lazyLoad() && isAllSelected && containerFilterUtil.allItensSelected !== isAllSelected) {\n containerFilterUtil.allItensSelected = isAllSelected;\n }\n this.cdr.detectChanges();\n }\n\n remove(all = false) {\n const itens = filterEnabled<T>(all ? this.selectedItensFilterUtil.rawSelectedItens : this.selectedItensMap);\n if (!itens.length) {\n return;\n }\n const allElements = this.lazyLoad() ? [] : this.selectedItensFilterUtil.rawSelectedItens;\n const revertAction = () => {\n this.selectedItensFilterUtil.rawSelectedItens = [\n ...this.selectedItensFilterUtil.rawSelectedItens,\n ...itens.map((i) => {\n i.selected = false;\n return i;\n }),\n ];\n this.itensToSelectFilterUtil.rawItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect.filter(\n (x) => !itens.includes(x),\n );\n this.selectedItensFilterUtil.allItensSelected = false;\n if (this.lazyLoad()) {\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n } else {\n this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n }\n this.cdr.detectChanges();\n };\n this.nodeMoved.emit({\n direction: 'to-select',\n items: all ? allElements : parseValueEmit(Array.from(this.selectedItensMap)),\n moveAll: all,\n revertAction,\n });\n this.itensToSelectFilterUtil.rawItensToSelect = [\n ...this.itensToSelectFilterUtil.rawItensToSelect,\n ...itens.map((itemRemove) => {\n itemRemove.selected = false;\n this.selectedItensMap.delete(itemRemove);\n return itemRemove;\n }),\n ];\n this.selectedItensFilterUtil.rawSelectedItens = this.selectedItensFilterUtil.rawSelectedItens.filter(\n (x) => !itens.includes(x),\n );\n this.selectedItensFilterUtil.allItensSelected = false;\n if (this.lazyLoad()) {\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n } else {\n this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n }\n this.cdr.detectChanges();\n }\n\n add(all = false) {\n const itens = filterEnabled<T>(all ? this.itensToSelectFilterUtil.rawItensToSelect : this.selectedItensMap);\n if (!itens.length) {\n return;\n }\n\n const allElements = this.lazyLoad() ? [] : this.itensToSelectFilterUtil.rawItensToSelect;\n const revertAction = () => {\n this.itensToSelectFilterUtil.rawItensToSelect = [\n ...this.itensToSelectFilterUtil.rawItensToSelect,\n ...itens.map((i) => {\n i.selected = false;\n this.selectedItensMap.delete(i);\n return i;\n }),\n ];\n this.selectedItensFilterUtil.rawSelectedItens = this.selectedItensFilterUtil.rawSelectedItens.filter(\n (x) => !itens.includes(x),\n );\n this.itensToSelectFilterUtil.allItensSelected = false;\n if (this.lazyLoad()) {\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n } else {\n this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n }\n this.cdr.detectChanges();\n };\n this.nodeMoved.emit({\n direction: 'selected',\n items: all ? allElements : parseValueEmit(Array.from(this.selectedItensMap)),\n moveAll: all,\n revertAction,\n });\n this.selectedItensFilterUtil.rawSelectedItens = [\n ...this.selectedItensFilterUtil.rawSelectedItens,\n ...itens.map((itemRemove) => {\n itemRemove.selected = false;\n this.selectedItensMap.delete(itemRemove);\n return itemRemove;\n }),\n ];\n this.itensToSelectFilterUtil.rawItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect.filter(\n (x) => !itens.includes(x),\n );\n this.itensToSelectFilterUtil.allItensSelected = false;\n if (this.lazyLoad()) {\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n } else {\n this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n }\n this.cdr.detectChanges();\n }\n\n filterItensToSelect(): void {\n if (this.lazyLoad()) {\n this._loadingSource.set(true);\n this.sourceFilterSubject.next(this.availableItensFilter);\n return;\n }\n let searchTerm = this.availableItensFilter.trim();\n if (searchTerm) {\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect.filter(\n (item) => compareStrings(item.data[this.filterBy], searchTerm),\n );\n } else {\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n }\n this.cdr.detectChanges();\n }\n\n filterSelectedItens(): void {\n if (this.lazyLoad()) {\n this._loadingTarget.set(true);\n this.targetFilterSubject.next(this.selectedItensFilter);\n return;\n }\n let searchTerm = this.selectedItensFilter.trim();\n if (searchTerm) {\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens.filter(\n (item) => compareStrings(item.data[this.filterBy], searchTerm),\n );\n } else {\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n }\n }\n\n drop(event: CdkDragDrop<InternalPicklistItem[]>) {\n const isDifferentContainer = event.container !== event.previousContainer;\n if (!isDifferentContainer) {\n return;\n }\n\n const isRemovedItens = event.previousContainer.id === this.selectedItensId;\n if (isRemovedItens) {\n this.remove();\n } else {\n this.add();\n }\n this.cdr.detectChanges();\n }\n\n onDragStart(event: CdkDragEvent<T>, dragListId: string) {\n this.unselectedItensByListId(this.getOppositiveId(dragListId));\n event.source.data.selected = true;\n this.selectedItensMap.add(event.source.data);\n this.selectedItensMap.forEach((x) => (x.invisible = true));\n this.cdr.detectChanges();\n }\n\n onDragRelease() {\n this.selectedItensMap.forEach((item) => (item.invisible = false));\n }\n\n checkAllAvailableItensChange(checked: boolean) {\n this._checkAllSelectedItensChange(\n checked,\n this.itensToSelectFilterUtil.filteredItensToSelect,\n this.itensToSelectId,\n );\n }\n\n checkAllSelectedItensChange(checked: boolean) {\n this._checkAllSelectedItensChange(\n checked,\n this.selectedItensFilterUtil.filteredSelectedItens,\n this.selectedItensId,\n );\n }\n\n onScroll(event: Event, listId: string) {\n if (!this.lazyLoad()) {\n return;\n }\n\n const element = event.target as HTMLElement;\n const reachLimit = element.offsetHeight + element.scrollTop >= element.scrollHeight;\n if (!reachLimit) {\n return;\n }\n const target: PicklistTarget = listId === this.selectedItensId ? 'selected' : 'to-select';\n const targetReachLimit =\n target === 'selected'\n ? this.selectedItensFilterUtil.filteredSelectedItens.length >= this._internalTotalTarget\n : this.itensToSelectFilterUtil.filteredItensToSelect.length >= this._internalTotalSource;\n if (targetReachLimit) {\n return;\n }\n this.loadNextPage(target);\n }\n\n get disableSelectedItensCheckbox() {\n return filterEnabled<T>(this.selectedItensFilterUtil.filteredSelectedItens).length === 0;\n }\n\n get disableItensToSelectCheckbox() {\n return filterEnabled<T>(this.itensToSelectFilterUtil.filteredItensToSelect).length === 0;\n }\n\n get itensToSelectAllSelected() {\n return this._checkAllSelectedByList(this.itensToSelectFilterUtil.filteredItensToSelect);\n }\n\n get selectedItensAllSelected() {\n return this._checkAllSelectedByList(this.selectedItensFilterUtil.filteredSelectedItens);\n }\n\n get hasSelectedItens() {\n return this.selectedItensMap.size > 0;\n }\n\n /**\n * @description Recarrega as listas após a confirmação de uma movimentação pelo backend.\n *\n * **Por que usar?**\n * Ao mover itens, o componente atualiza a UI de forma otimista — os itens são movidos\n * imediatamente antes da confirmação do servidor. Após o backend confirmar a operação,\n * chame `resetList` para limpar e recarregar as listas afetadas do zero, garantindo que\n * o estado da UI reflita os dados reais persistidos.\n *\n * **O que espera?**\n * Recebe o objeto `PicklistItemMove<T>` emitido pelo output `(nodeMoved)`. O componente\n * utiliza `node.direction` para determinar qual lista recarregar (a lista de destino da\n * movimentação) e `node.moveAll` para verificar se a origem também deve ser recarregada\n * (por exemplo, ao mover todos os itens de uma lista para outra, ambas ficam com estado\n * alterado no backend).\n *\n * **O que faz?**\n * - Reseta o contador de página da lista de destino para `0` (primeira página).\n * - Limpa todos os itens carregados na lista de destino.\n * - Dispara imediatamente o carregamento da primeira página via `sourceLoader`/`targetLoader`.\n * - Se `node.moveAll === true`, repete o processo para a lista de origem.\n *\n * **Exemplo de uso:**\n * ```typescript\n * nodeMoved(node: PicklistItemMove<MyItem>): void {\n * this.service.moveItems(node).subscribe({\n * next: () => this.myPicklist().resetList(node),\n * error: () => node.revertAction(),\n * });\n * }\n * ```\n *\n * @param node - O objeto de movimentação emitido pelo output `(nodeMoved)`.\n */\n public resetList(node: PicklistItemMove<T>): void {\n if (!this.lazyLoad()) {\n return;\n }\n\n this._resetListByTarget(node.direction);\n if (node.moveAll) {\n this._resetListByTarget(node.direction === 'selected' ? 'to-select' : 'selected');\n }\n }\n\n private _resetListByTarget(target: PicklistTarget): void {\n if (target === 'selected') {\n this.targetCurrentPage = -1;\n this._internalTotalTarget = 0;\n this.selectedItens = [];\n this.selectedItensFilterUtil.rawSelectedItens = [];\n this.selectedItensFilterUtil.filteredSelectedItens = [];\n } else {\n this.sourceCurrentPage = -1;\n this._internalTotalSource = 0;\n this.itensToSelect = [];\n this.itensToSelectFilterUtil.rawItensToSelect = [];\n this.itensToSelectFilterUtil.filteredItensToSelect = [];\n }\n\n this.cdr.detectChanges();\n Promise.resolve().then(() => this.loadNextPage(target));\n }\n\n private _checkAllSelectedByList(list: InternalPicklistItem[]) {\n const _listItens = filterEnabled<T>(list);\n if (!_listItens.length) {\n return false;\n } else {\n return _listItens.every((x) => x.selected);\n }\n }\n\n private setupLoaderPipelines(): void {\n if (!this.lazyLoad()) {\n return;\n }\n\n if (!this.sourceLoader && !this.targetLoader && this._logErrorTemplate) {\n console.error(\n `Lazy load is enabled but no loader function was provided. Please provide at least one loader function using 'sourceLoader' or 'targetLoader' input.`,\n );\n }\n\n if (this.sourceLoader()) {\n this.sourceLoadSubject\n .pipe(\n switchMap((event) => {\n this._loadingSource.set(true);\n return this.sourceLoader()!(event);\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(({ items, totalRecords }) => {\n this._internalTotalSource = totalRecords;\n this.itensToSelectFilterUtil.rawItensToSelect = [\n ...this.itensToSelectFilterUtil.rawItensToSelect,\n ...items,\n ];\n if (this.itensToSelectFilterUtil.allItensSelected) {\n this._checkAllSelectedItensChange(\n true,\n this.itensToSelectFilterUtil.rawItensToSelect,\n this.itensToSelectId,\n );\n }\n this.itensToSelectFilterUtil.filteredItensToSelect = [\n ...this.itensToSelectFilterUtil.rawItensToSelect,\n ];\n this._loadingSource.set(false);\n this.cdr.detectChanges();\n });\n }\n\n if (this.targetLoader()) {\n this.targetLoadSubject\n .pipe(\n switchMap((event) => {\n this._loadingTarget.set(true);\n return this.targetLoader()!(event);\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(({ items, totalRecords }) => {\n this._internalTotalTarget = totalRecords;\n this.selectedItensFilterUtil.rawSelectedItens = [\n ...this.selectedItensFilterUtil.rawSelectedItens,\n ...items,\n ];\n if (this.selectedItensFilterUtil.allItensSelected) {\n this._checkAllSelectedItensChange(\n true,\n this.selectedItensFilterUtil.rawSelectedItens,\n this.selectedItensId,\n );\n }\n this.selectedItensFilterUtil.filteredSelectedItens = [\n ...this.selectedItensFilterUtil.rawSelectedItens,\n ];\n this._loadingTarget.set(false);\n this.cdr.detectChanges();\n });\n }\n }\n\n private setupFilterDebounce(): void {\n if (!this.lazyLoad()) {\n return;\n }\n\n this.sourceFilterSubject\n .pipe(\n distinctUntilChanged(),\n debounceTime(300),\n tap(() => {\n this.sourceCurrentPage = -1;\n this.itensToSelect = [];\n this.itensToSelectFilterUtil.rawItensToSelect = [];\n this.itensToSelectFilterUtil.filteredItensToSelect = [];\n this.cdr.detectChanges();\n }),\n switchMap(() => {\n this.loadNextPage('to-select');\n return [];\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n\n this.targetFilterSubject\n .pipe(\n distinctUntilChanged(),\n debounceTime(300),\n tap(() => {\n this.targetCurrentPage = -1;\n this.selectedItens = [];\n this.selectedItensFilterUtil.rawSelectedItens = [];\n this.selectedItensFilterUtil.filteredSelectedItens = [];\n this.cdr.detectChanges();\n }),\n switchMap(() => {\n this.loadNextPage('selected');\n return [];\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n private setupLazyLoadEvents() {\n if (!this.lazyLoad()) {\n return;\n }\n\n Promise.resolve().then(() => {\n this.loadNextPage('to-select');\n this.loadNextPage('selected');\n });\n }\n\n private loadNextPage(target: PicklistTarget): void {\n const totalRegisters = target === 'selected' ? this._internalTotalTarget : this._internalTotalSource;\n const lastPage = Math.ceil(totalRegisters / this.rows());\n\n if (target === 'selected' && this.targetCurrentPage < lastPage) {\n this.targetCurrentPage++;\n } else if (target === 'to-select' && this.sourceCurrentPage < lastPage) {\n this.sourceCurrentPage++;\n }\n\n this.emitCurrentPage(target);\n }\n\n private emitCurrentPage(target: PicklistTarget): void {\n const filter = target === 'selected' ? this.selectedItensFilter : this.availableItensFilter;\n const page = target === 'selected' ? this.targetCurrentPage : this.sourceCurrentPage;\n\n const event: PicklistLazyLoadEvent = { target, page, filter, pageSize: this.rows() };\n\n if (target === 'selected') {\n this.targetLoadSubject.next(event);\n } else {\n this.sourceLoadSubject.next(event);\n }\n }\n\n private _checkAllSelectedItensChange(checked: boolean, list: InternalPicklistItem[], listId: string) {\n this.unselectedItensByListId(listId === this.selectedItensId ? this.itensToSelectId : this.selectedItensId);\n filterEnabled<T>(list).forEach((item) => {\n item.selected = checked;\n if (checked) {\n this.selectedItensMap.add(item);\n } else {\n this.selectedItensMap.delete(item);\n }\n });\n if (listId === this.selectedItensId) {\n this.selectedItensFilterUtil.allItensSelected = checked;\n } else {\n this.itensToSelectFilterUtil.allItensSelected = checked;\n }\n this.cdr.detectChanges();\n }\n\n private unselectedItensByListId(listId: string) {\n const clearList = this.getAllElementsByListId(listId);\n clearList.forEach((x) => {\n x.selected = false;\n this.selectedItensMap.delete(x);\n });\n this.cdr.detectChanges();\n }\n\n private getAllElementsByListId(listId: string) {\n return listId === this.selectedItensId\n ? this.selectedItensFilterUtil.rawSelectedItens\n : this.itensToSelectFilterUtil.rawItensToSelect;\n }\n\n private getOppositiveId(listId: string) {\n return listId === this.selectedItensId ? this.itensToSelectId : this.selectedItensId;\n }\n\n private emitData() {\n this.itensToSelectChange.emit(parseValueEmit(this.itensToSelect));\n this.selectedItensChange.emit(parseValueEmit(this.selectedItens));\n }\n}\n\nconst normalizeString = (str: string) => {\n return str\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase();\n};\n\n/**\n * Compares two strings by normalizing them to a case-insensitive and accent-free form,\n * and checks if the main string contains the substring.\n *\n * @param mainString - The string to be searched.\n * @param substring - The string to search for within the main string.\n * @returns A boolean indicating whether the normalized main string contains the normalized substring.\n */\n\nconst compareStrings = (mainString: string, substring: string) => {\n return normalizeString(mainString).includes(normalizeString(substring));\n};\n\nconst filterEnabled = <T>(list: PickListItem<T>[] | Set<InternalPicklistItem>): InternalPicklistItem[] => {\n const _list = list instanceof Set ? Array.from(list) : list;\n return _list.filter((x) => !x.disabled);\n};\n\nconst mapData = <T>(list: PickListItem<T>[]) => {\n return list.map((x) => x.data);\n};\n\nconst parseValueEmit = pipe(filterEnabled, mapData);\n\nexport const parseItensPickList = <T>(\n array: T[],\n disabledFn?: (item: T) => boolean,\n idKey?: keyof T,\n): PickListItem<T>[] => {\n return array.map((x) => {\n return {\n data: x,\n disabled: disabledFn ? disabledFn(x) : false,\n id: idKey ? String(x[idKey]) : crypto.randomUUID(),\n };\n });\n};\n\n","<ng-template\n #previewRender\n let-itens=\"itens\"\n let-template=\"template\"\n>\n <section class=\"picklist-items\">\n @for (item of itens; track $index) {\n <ng-container *ngTemplateOutlet=\"template; context: { item: item.data }\"></ng-container>\n }\n </section>\n</ng-template>\n\n<ng-template\n #picklistItensRender\n let-id=\"id\"\n let-itens=\"itens\"\n let-template=\"template\"\n let-listConnectedTo=\"listConnectedTo\"\n let-isLoading=\"isLoading\"\n>\n <div\n class=\"picklist-items\"\n cdkDropList\n [id]=\"id\"\n [cdkDropListSortingDisabled]=\"true\"\n [cdkDropListData]=\"itens\"\n [cdkDropListConnectedTo]=\"listConnectedTo\"\n (cdkDropListDropped)=\"drop($event)\"\n *sLoadingState=\"{ loading: isLoading, indicator: logoIndicator }\"\n (scroll)=\"onScroll($event, id)\"\n >\n @for (item of itens; track $index) {\n <div\n cdkDrag\n [cdkDragDisabled]=\"item.disabled\"\n [cdkDragData]=\"item\"\n (click)=\"toggleSelected(item, id)\"\n (cdkDragStarted)=\"onDragStart($event, id)\"\n (cdkDragReleased)=\"onDragRelease()\"\n class=\"picklist-item\"\n [class.picklist-disabled]=\"item.disabled\"\n [class.picklist-item-invisible]=\"item.invisible\"\n [class.picklist-item-active]=\"item.selected\"\n >\n @if (showCheckbox) {\n <input\n type=\"checkbox\"\n class=\"input-checkbox\"\n [(ngModel)]=\"item.selected\"\n [disabled]=\"item.disabled\"\n />\n }\n <div class=\"picklist-content\">\n <ng-container\n *ngTemplateOutlet=\"\n template;\n context: { item: item.data, selected: item.selected, disabled: item.disabled }\n \"\n ></ng-container>\n </div>\n <ng-container *cdkDragPreview>\n <ng-container\n *ngTemplateOutlet=\"previewRender; context: { itens: selectedItensMap, template: template }\"\n ></ng-container>\n </ng-container>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template\n #checkboxTitleRender\n let-disabled=\"disabled\"\n let-checked=\"checked\"\n let-changeFn=\"changeFn\"\n let-id=\"id\"\n>\n @if (showCheckbox && !lazyLoad()) {\n <input\n class=\"input-checkbox\"\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"changeFn($any($event.target).checked)\"\n />\n } @else if (showCheckbox && lazyLoad() && id === itensToSelectId) {\n <input\n class=\"input-checkbox\"\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"itensToSelectFilterUtil.allItensSelected\"\n (change)=\"checkAllAvailableItensChange($any($event.target).checked)\"\n />\n } @else if (showCheckbox && lazyLoad() && id === selectedItensId) {\n <input\n class=\"input-checkbox\"\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"selectedItensFilterUtil.allItensSelected\"\n (change)=\"checkAllSelectedItensChange($any($event.target).checked)\"\n />\n }\n</ng-template>\n\n<div class=\"picklist-container\">\n <div class=\"picklist-item-container\">\n <div class=\"picklist-box\">\n <div class=\"picklist-title-container\">\n @if (!filterBy && !lazyLoad()) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\n id: itensToSelectId,\n }\n \"\n ></ng-container>\n }\n <span class=\"picklist-title\">\n {{ availableItensLabel || 'platform.angular_components.available-items' | translate }}\n </span>\n </div>\n @if (filterBy || lazyLoad()) {\n <div class=\"picklist-filter\">\n @if (showCheckbox) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\n id: itensToSelectId,\n }\n \"\n ></ng-container>\n }\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"availableItensFilter\"\n (ngModelChange)=\"filterItensToSelect()\"\n [placeholder]=\"\n availableItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\n \"\n />\n </div>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n picklistItensRender;\n context: {\n id: itensToSelectId,\n itens: itensToSelectFilterUtil.filteredItensToSelect,\n template: itemToSelectTemplate,\n listConnectedTo: selectedItensId,\n isLoading: _loadingSource(),\n }\n \"\n >\n </ng-container>\n </div>\n <div class=\"buttons-container\">\n <s-button\n [label]=\"addSelectedItensLabel || 'platform.angular_components.add' | translate\"\n priority=\"primary\"\n rightIconClass=\"fa fa-fw fa-arrow-right\"\n [disabled]=\"!hasSelectedItens\"\n (clicked)=\"add()\"\n [auxiliary]=\"false\"\n [caret]=\"false\"\n >\n </s-button>\n <s-button\n [label]=\"addAllItensLabel || 'platform.angular_components.add_all' | translate\"\n priority=\"link\"\n (clicked)=\"add(true)\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n </div>\n <div class=\"picklist-item-container\">\n <div class=\"picklist-box\">\n <div class=\"picklist-title-container\">\n @if (!filterBy && !lazyLoad()) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableSelectedItensCheckbox,\n checked: selectedItensAllSelected,\n changeFn: checkAllSelectedItensChange.bind(this),\n id: selectedItensId,\n }\n \"\n ></ng-container>\n }\n <span class=\"picklist-title\">\n {{ selectedItensLabel || 'platform.angular_components.selected-items' | translate }}\n </span>\n </div>\n @if (filterBy || lazyLoad()) {\n <div class=\"picklist-filter\">\n @if (showCheckbox) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableSelectedItensCheckbox,\n checked: selectedItensAllSelected,\n changeFn: checkAllSelectedItensChange.bind(this),\n id: selectedItensId,\n }\n \"\n ></ng-container>\n }\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"selectedItensFilter\"\n (ngModelChange)=\"filterSelectedItens()\"\n [placeholder]=\"\n selectedItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\n \"\n />\n </div>\n }\n <ng-container\n *ngTemplateOutlet=\"\n picklistItensRender;\n context: {\n id: selectedItensId,\n itens: selectedItensFilterUtil.filteredSelectedItens,\n template: itemSelectedTemplate,\n listConnectedTo: itensToSelectId,\n isLoading: _loadingTarget(),\n }\n \"\n >\n </ng-container>\n </div>\n <div class=\"buttons-container\">\n <s-button\n [label]=\"removeSelectedItemsLabel || 'platform.angular_components.remove' | translate\"\n priority=\"primary\"\n iconClass=\"fa fa-fw fa-arrow-left\"\n [disabled]=\"!hasSelectedItens\"\n [auxiliary]=\"false\"\n (clicked)=\"remove()\"\n [caret]=\"false\"\n >\n </s-button>\n <s-button\n [label]=\"removeAllItemsLabel || 'platform.angular_components.remove_all' | translate\"\n priority=\"link\"\n (clicked)=\"remove(true)\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n </div>\n</div>\n\n","import { NgModule } from '@angular/core';\n\nimport { PicklistComponent } from './picklist.component';\n\n/**\n * @deprecated Será removido na v20. Importe diretamente o standalone `PicklistComponent` (de\n * `@seniorsistemas/angular-components/picklist`) no lugar deste módulo.\n *\n * Migração automática (também executada pelo `ng update` na v20):\n * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`\n */\n@NgModule({\n imports: [PicklistComponent],\n exports: [PicklistComponent],\n})\nexport class PicklistModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -452,6 +452,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
452
452
|
], template: "<div class=\"gap-xsmall flex flex-col\">\n <div\n class=\"flex gap-2\"\n role=\"group\"\n aria-label=\"PIN code input\"\n [attr.aria-labelledby]=\"helpText() ? 'pin-help-text' : null\"\n >\n @for (input of inputs(); let i = $index; track i) {\n <input\n #pinInput\n type=\"text\"\n class=\"h-12 w-12 rounded-xbig border text-center text-lg font-medium transition-[background-color,border-color,color] duration-200\"\n [ngClass]=\"{\n 'border-criticality-red focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-criticality-red': hasError(),\n 'border-grayscale-30 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]': !hasError(),\n 'cursor-not-allowed bg-grayscale-10 text-grayscale-60': disabled(),\n 'bg-grayscale-0 text-grayscale-100': !disabled(),\n }\"\n [value]=\"input\"\n [disabled]=\"disabled()\"\n [attr.maxlength]=\"1\"\n [attr.inputmode]=\"alphanumeric() ? 'text' : 'numeric'\"\n [attr.aria-label]=\"\n alphanumeric()\n ? ('platform.angular_components.pin_code_character_index_of_total'\n | translate: { index: i + 1, length: length() })\n : ('platform.angular_components.pin_code_digit_index_of_total'\n | translate: { index: i + 1, length: length() })\n \"\n [attr.aria-describedby]=\"helpText() ? 'pin-help-text' : null\"\n [attr.aria-required]=\"true\"\n autocomplete=\"off\"\n (input)=\"onInput(i, $event)\"\n (keydown)=\"onKeyDown(i, $event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus(i)\"\n (blur)=\"onBlur(i)\"\n />\n }\n </div>\n\n @if (helpText()) {\n <div\n id=\"pin-help-text\"\n class=\"mt-small text-sm text-grayscale-60\"\n >\n {{ helpText() }}\n </div>\n }\n</div>\n\n" }]
|
|
453
453
|
}], ctorParameters: () => [] });
|
|
454
454
|
|
|
455
|
+
/**
|
|
456
|
+
* @deprecated Será removido na v20. Importe diretamente o standalone `PinCodeFieldComponent` (de
|
|
457
|
+
* `@seniorsistemas/angular-components/pin-code-field`) no lugar deste módulo.
|
|
458
|
+
*
|
|
459
|
+
* Migração automática (também executada pelo `ng update` na v20):
|
|
460
|
+
* `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
|
|
461
|
+
*/
|
|
455
462
|
class PinCodeFieldModule {
|
|
456
463
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinCodeFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
457
464
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: PinCodeFieldModule, imports: [PinCodeFieldComponent], exports: [PinCodeFieldComponent] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-pin-code-field.mjs","sources":["../../projects/angular-components/pin-code-field/src/lib/pin-code-field/pin-code-field.component.ts","../../projects/angular-components/pin-code-field/src/lib/pin-code-field/pin-code-field.component.html","../../projects/angular-components/pin-code-field/src/lib/pin-code-field.module.ts","../../projects/angular-components/pin-code-field/src/seniorsistemas-angular-components-pin-code-field.ts"],"sourcesContent":["import {\r\n Component,\r\n forwardRef,\r\n viewChildren,\r\n ElementRef,\r\n signal,\r\n input,\r\n output,\r\n effect,\r\n computed,\r\n model,\r\n inject,\r\n DestroyRef,\r\n} from '@angular/core';\r\n\r\nimport { NgClass } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/**\r\n * @description Componente de entrada de código PIN/OTP com campos individuais para cada dígito.\r\n * Implementa {@link ControlValueAccessor} para integração nativa com Reactive Forms\r\n * e Template-driven Forms do Angular.\r\n *\r\n * Funcionalidades:\r\n * - Campos separados e navegáveis para cada dígito do código\r\n * - Comprimento configurável via input `length`\r\n * - Suporte a entrada numérica ou alfanumérica\r\n * - Navegação por teclado (setas, backspace)\r\n * - Suporte a colar (paste) com truncamento automático ao tamanho definido\r\n * - Estado de erro via input `invalid`\r\n * - Acessibilidade completa com ARIA labels e roles semânticos\r\n *\r\n * @example\r\n * ```html\r\n * <form [formGroup]=\"form\">\r\n * <s-pin-code-field\r\n * formControlName=\"code\"\r\n * [length]=\"6\"\r\n * [alphanumeric]=\"false\"\r\n * [invalid]=\"(form.get('code')?.invalid && form.get('code')?.dirty) || false\"\r\n * helpText=\"Digite seu código de 6 dígitos\"\r\n * (codeFilled)=\"onCodeFilled($event)\">\r\n * </s-pin-code-field>\r\n * </form>\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-pin-code-field',\r\n templateUrl: './pin-code-field.component.html',\r\n standalone: true,\r\n imports: [NgClass, TranslateModule],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => PinCodeFieldComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class PinCodeFieldComponent implements ControlValueAccessor {\r\n private static readonly LAST_INDEX_OFFSET = 1;\r\n private static readonly EMPTY_VALUE = '';\r\n\r\n /**\r\n * @description Número de campos de entrada (comprimento do código PIN).\r\n * Deve ser ao menos 1.\r\n *\r\n * @default 6\r\n */\r\n public length = input(6);\r\n\r\n /**\r\n * @description Permite entrada alfanumérica e de caracteres especiais.\r\n * Quando `false`, aceita apenas dígitos numéricos (0–9).\r\n *\r\n * @default false\r\n */\r\n public alphanumeric = input(false);\r\n\r\n /**\r\n * @description Texto de ajuda exibido abaixo dos campos de entrada,\r\n * fornecendo instruções adicionais ao usuário.\r\n *\r\n * @default ''\r\n */\r\n public helpText = input('');\r\n\r\n /**\r\n * @description Controla a visualização do estado de erro do componente.\r\n * Quando `true`, exibe borda vermelha nos campos de entrada.\r\n * Normalmente vinculado ao estado `invalid && dirty` do `FormControl`.\r\n *\r\n * @example\r\n * ```html\r\n * [invalid]=\"(control?.invalid && control?.dirty) || false\"\r\n * ```\r\n * @default false\r\n */\r\n public invalid = input(false);\r\n\r\n /**\r\n * @description Controla o estado desabilitado do componente via two-way binding.\r\n * Quando `true`, todos os campos ficam desabilitados e a interação do usuário é bloqueada.\r\n *\r\n * @default false\r\n */\r\n public disabled = model(false);\r\n\r\n /**\r\n * @description Emitido quando todos os campos do código PIN são preenchidos.\r\n * Emite o código completo como string.\r\n *\r\n * @example\r\n * ```html\r\n * (codeFilled)=\"onCodeFilled($event)\"\r\n * ```\r\n */\r\n public codeFilled = output<string>();\r\n\r\n /**\r\n * @description Signal com os valores atuais de cada campo de entrada.\r\n * O comprimento do array corresponde ao valor do input `length`.\r\n */\r\n public inputs = signal<string[]>([]);\r\n\r\n /**\r\n * Signal tracking whether the component has been touched by the user.\r\n * Set to true when the last input field loses focus (blur event).\r\n */\r\n public touched = signal<boolean>(false);\r\n\r\n /**\r\n * Computed signal indicating whether all PIN code fields are filled.\r\n * True only when every field contains a non-empty value.\r\n */\r\n public isComplete = computed(() => this.inputs().every((input) => input !== ''));\r\n\r\n /**\r\n * Computed signal containing the complete PIN code as a joined string.\r\n * Returns empty string if no inputs are filled.\r\n */\r\n public currentValue = computed(() => this.inputs().join(''));\r\n\r\n /**\r\n * Signal tracking if the component host has the ng-invalid class from FormControl validators.\r\n * Updated reactively whenever the invalid state changes.\r\n */\r\n private hasNgInvalidClass = signal<boolean>(false);\r\n\r\n /**\r\n * Signal tracking if the FormControl is dirty.\r\n * Updated reactively whenever the dirty state changes.\r\n */\r\n private isControlDirty = signal<boolean>(false);\r\n\r\n /**\r\n * Computed signal indicating if the component should show error state.\r\n * Returns true if:\r\n * - The `invalid` input is true, OR\r\n * - The component has the `ng-invalid` class AND the FormControl is dirty (touched/modified)\r\n * This ensures errors are only shown to the user after they've interacted with the field.\r\n */\r\n public hasError = computed(() => this.invalid() || (this.hasNgInvalidClass() && this.isControlDirty()));\r\n\r\n /**\r\n * ViewChildren reference to all input DOM elements.\r\n * Used for DOM manipulation (focus, selection).\r\n */\r\n public pinInputs = viewChildren<ElementRef>('pinInput');\r\n\r\n private readonly elementRef = inject(ElementRef);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n constructor() {\r\n effect(\r\n () => {\r\n const newLength = this.length();\r\n if (newLength < 1) {\r\n console.warn('PIN code length must be at least 1');\r\n return;\r\n }\r\n if (this.inputs().length !== newLength) {\r\n this.inputs.set(Array.from({ length: newLength }, () => ''));\r\n }\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n\r\n // Monitor ng-invalid and ng-dirty classes on the host element for reactive error state\r\n effect(\r\n () => {\r\n // Access inputs to create dependency on changes\r\n this.inputs();\r\n this.invalid();\r\n\r\n // Use setTimeout to defer the check to next tick to ensure Angular has updated DOM classes\r\n const timeoutId = window.setTimeout(() => {\r\n const hostElement = this.elementRef.nativeElement;\r\n const hasNgInvalid = hostElement.classList.contains('ng-invalid');\r\n const isDirty = hostElement.classList.contains('ng-dirty');\r\n\r\n this.hasNgInvalidClass.set(hasNgInvalid);\r\n this.isControlDirty.set(isDirty);\r\n });\r\n\r\n // Cleanup timeout on component destroy\r\n this.destroyRef.onDestroy(() => {\r\n clearTimeout(timeoutId);\r\n });\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n }\r\n\r\n /**\r\n * Handles input event on PIN code fields.\r\n * Validates character input, prevents multiple characters per field,\r\n * auto-advances to next field when character is entered.\r\n *\r\n * @param index - The input field index (0-based)\r\n * @param event - The input event\r\n */\r\n public onInput(index: number, event: Event): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLInputElement;\r\n const value = target.value;\r\n\r\n if (value.length > 1 || (value && !this.isValidCharacter(value))) {\r\n this.clearInput(target);\r\n return;\r\n }\r\n\r\n this.setInputAtIndex(index, value);\r\n\r\n if (value && index < this.length() - 1) {\r\n this.focusAndSelectInput(index + 1);\r\n }\r\n\r\n if (this.isComplete()) {\r\n this.codeFilled.emit(this.currentValue());\r\n }\r\n }\r\n\r\n /**\r\n * Handles keyboard events on PIN code fields.\r\n * Supports arrow navigation (left/right) and backspace key.\r\n *\r\n * Keyboard behavior:\r\n * - ArrowRight: Move focus to next field\r\n * - ArrowLeft: Move focus to previous field\r\n * - Backspace: Clear current or previous field and adjust focus\r\n *\r\n * @param index - The input field index (0-based)\r\n * @param event - The keyboard event\r\n */\r\n public onKeyDown(index: number, event: KeyboardEvent): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const key = event.key;\r\n\r\n switch (key) {\r\n case 'ArrowRight':\r\n if (index < this.length() - 1) {\r\n event.preventDefault();\r\n this.focusAndSelectInput(index + 1);\r\n }\r\n break;\r\n case 'ArrowLeft':\r\n if (index > 0) {\r\n event.preventDefault();\r\n this.focusAndSelectInput(index - 1);\r\n }\r\n break;\r\n case 'Backspace':\r\n event.preventDefault();\r\n this.handleBackspace(index);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Handles paste (clipboard) events on PIN code fields.\r\n * Extracts valid characters from pasted content, filters by character type,\r\n * and automatically truncates to match field length.\r\n *\r\n * Behavior:\r\n * - Filters characters based on `alphanumeric` setting\r\n * - Truncates to maximum field count\r\n * - Fills available fields with pasted content\r\n * - Emits codeFilled event if all fields are filled\r\n *\r\n * @param event - The clipboard event\r\n */\r\n public onPaste(event: ClipboardEvent): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n const validChars = this.extractValidCharactersFromPaste(event);\r\n\r\n if (validChars.length === 0) {\r\n return;\r\n }\r\n\r\n const filledInputs = [...validChars, ...Array(this.length() - validChars.length).fill('')];\r\n\r\n this.inputs.set(filledInputs);\r\n this.updateValue();\r\n\r\n // Focus on the first empty input or the last filled input if all are filled\r\n const firstEmptyIndex = validChars.length < this.length() ? validChars.length : validChars.length - 1;\r\n this.focusAndSelectInput(firstEmptyIndex);\r\n\r\n if (this.isComplete()) {\r\n this.codeFilled.emit(this.currentValue());\r\n }\r\n }\r\n\r\n /**\r\n * Handles focus event on PIN code fields.\r\n * Selects all text in the input field when focused.\r\n *\r\n * @param index - The input field index (0-based)\r\n */\r\n public onFocus(index: number): void {\r\n const input = this.pinInputs()[index];\r\n if (input) {\r\n input.nativeElement.select();\r\n }\r\n }\r\n\r\n /**\r\n * Handles blur event on PIN code fields.\r\n * Marks the component as touched when the last input field loses focus.\r\n * Also notifies the registered onTouched callback for FormControl integration.\r\n *\r\n * @param index - The input field index (0-based)\r\n */\r\n public onBlur(index: number): void {\r\n // Only mark as touched when the LAST input loses focus\r\n if (index === this.length() - PinCodeFieldComponent.LAST_INDEX_OFFSET) {\r\n this.touched.set(true);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n /**\r\n * Clears the input value at specified index and adjusts focus accordingly.\r\n * If current field is empty, moves to previous field and clears it.\r\n *\r\n * @private\r\n * @param index - The input field index (0-based)\r\n */\r\n private handleBackspace(index: number): void {\r\n const currentInputs = this.inputs();\r\n\r\n // If current input has value, clear it\r\n if (currentInputs[index]) {\r\n this.setInputAtIndex(index, PinCodeFieldComponent.EMPTY_VALUE);\r\n return;\r\n }\r\n\r\n // Otherwise, clear previous input and focus it\r\n if (index > 0) {\r\n this.setInputAtIndex(index - 1, PinCodeFieldComponent.EMPTY_VALUE);\r\n this.focusAndSelectInput(index - 1);\r\n }\r\n }\r\n\r\n /**\r\n * Sets the value at a specific input field index and updates the form value.\r\n * Updates the signal and triggers the change detection via onChange callback.\r\n *\r\n * @private\r\n * @param index - The input field index (0-based)\r\n * @param value - The value to set in the field\r\n */\r\n private setInputAtIndex(index: number, value: string): void {\r\n const currentInputs = this.inputs();\r\n currentInputs[index] = value;\r\n this.inputs.set([...currentInputs]);\r\n this.updateValue();\r\n }\r\n\r\n /**\r\n * Focuses on and selects text in the input field at the specified index.\r\n * Uses queueMicrotask to ensure DOM is updated before focusing.\r\n *\r\n * @private\r\n * @param index - The input field index (0-based)\r\n */\r\n private focusAndSelectInput(index: number): void {\r\n queueMicrotask(() => {\r\n const input = this.pinInputs()[index];\r\n if (input) {\r\n input.nativeElement.focus();\r\n input.nativeElement.select();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clears the value of an input element.\r\n * Used for input validation to reject invalid characters.\r\n *\r\n * @private\r\n * @param target - The HTML input element to clear\r\n */\r\n private clearInput(target: HTMLInputElement): void {\r\n target.value = '';\r\n }\r\n\r\n /**\r\n * Extracts valid characters from pasted content.\r\n * Filters based on alphanumeric setting and limits to component's length.\r\n *\r\n * @private\r\n * @param event - The clipboard event\r\n * @returns Array of valid characters from the pasted content\r\n */\r\n private extractValidCharactersFromPaste(event: ClipboardEvent): string[] {\r\n const pastedText = (event.clipboardData?.getData('text') || '').trim();\r\n return pastedText\r\n .split('')\r\n .filter((char) => this.isValidCharacter(char))\r\n .slice(0, this.length());\r\n }\r\n\r\n /**\r\n * Validates if a character is acceptable based on component configuration.\r\n * For numeric mode, accepts only digits 0-9.\r\n * For alphanumeric mode, accepts any non-whitespace character.\r\n *\r\n * @private\r\n * @param char - The character to validate\r\n * @returns true if character is valid, false otherwise\r\n */\r\n private isValidCharacter(char: string): boolean {\r\n if (this.alphanumeric()) {\r\n return char.trim().length > 0;\r\n }\r\n return /^[0-9]$/.test(char);\r\n }\r\n\r\n /**\r\n * Updates the form value by calling the onChange callback registered by FormControl.\r\n * This ensures the reactive form stays synchronized with component state.\r\n *\r\n * @private\r\n */\r\n private updateValue(): void {\r\n this.onChange(this.currentValue());\r\n }\r\n\r\n /**\r\n * Implements ControlValueAccessor interface.\r\n * Called by the FormControl to write a value to the component.\r\n * Only accepts string values with length matching the component's length setting.\r\n *\r\n * @param value - The value to write (typically from the FormControl)\r\n */\r\n public writeValue(value: any): void {\r\n if (value) {\r\n const stringValue = String(value);\r\n if (stringValue.length === this.length()) {\r\n this.inputs.set(stringValue.split(''));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Implements ControlValueAccessor interface.\r\n * Called by the FormControl when value changes.\r\n * Registers the callback to be called when the component value changes.\r\n *\r\n * @param fn - Callback function to invoke when component value changes\r\n */\r\n public registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Implements ControlValueAccessor interface.\r\n * Called by the FormControl to register the touched callback.\r\n * The callback is invoked when the last input field loses focus.\r\n *\r\n * @param fn - Callback function to invoke when component is touched\r\n */\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Implements ControlValueAccessor interface.\r\n * Called by the FormControl to set the disabled state of the component.\r\n * Updates the disabled model to reflect the form's disabled state.\r\n *\r\n * @param isDisabled - Whether the component should be disabled\r\n */\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n}\r\n","<div class=\"gap-xsmall flex flex-col\">\n <div\n class=\"flex gap-2\"\n role=\"group\"\n aria-label=\"PIN code input\"\n [attr.aria-labelledby]=\"helpText() ? 'pin-help-text' : null\"\n >\n @for (input of inputs(); let i = $index; track i) {\n <input\n #pinInput\n type=\"text\"\n class=\"h-12 w-12 rounded-xbig border text-center text-lg font-medium transition-[background-color,border-color,color] duration-200\"\n [ngClass]=\"{\n 'border-criticality-red focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-criticality-red': hasError(),\n 'border-grayscale-30 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]': !hasError(),\n 'cursor-not-allowed bg-grayscale-10 text-grayscale-60': disabled(),\n 'bg-grayscale-0 text-grayscale-100': !disabled(),\n }\"\n [value]=\"input\"\n [disabled]=\"disabled()\"\n [attr.maxlength]=\"1\"\n [attr.inputmode]=\"alphanumeric() ? 'text' : 'numeric'\"\n [attr.aria-label]=\"\n alphanumeric()\n ? ('platform.angular_components.pin_code_character_index_of_total'\n | translate: { index: i + 1, length: length() })\n : ('platform.angular_components.pin_code_digit_index_of_total'\n | translate: { index: i + 1, length: length() })\n \"\n [attr.aria-describedby]=\"helpText() ? 'pin-help-text' : null\"\n [attr.aria-required]=\"true\"\n autocomplete=\"off\"\n (input)=\"onInput(i, $event)\"\n (keydown)=\"onKeyDown(i, $event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus(i)\"\n (blur)=\"onBlur(i)\"\n />\n }\n </div>\n\n @if (helpText()) {\n <div\n id=\"pin-help-text\"\n class=\"mt-small text-sm text-grayscale-60\"\n >\n {{ helpText() }}\n </div>\n }\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { PinCodeFieldComponent } from './pin-code-field/pin-code-field.component';\n\n@NgModule({\n imports: [PinCodeFieldComponent],\n exports: [PinCodeFieldComponent],\n})\nexport class PinCodeFieldModule {}\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-pin-code-field.mjs","sources":["../../projects/angular-components/pin-code-field/src/lib/pin-code-field/pin-code-field.component.ts","../../projects/angular-components/pin-code-field/src/lib/pin-code-field/pin-code-field.component.html","../../projects/angular-components/pin-code-field/src/lib/pin-code-field.module.ts","../../projects/angular-components/pin-code-field/src/seniorsistemas-angular-components-pin-code-field.ts"],"sourcesContent":["import {\r\n Component,\r\n forwardRef,\r\n viewChildren,\r\n ElementRef,\r\n signal,\r\n input,\r\n output,\r\n effect,\r\n computed,\r\n model,\r\n inject,\r\n DestroyRef,\r\n} from '@angular/core';\r\n\r\nimport { NgClass } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/**\r\n * @description Componente de entrada de código PIN/OTP com campos individuais para cada dígito.\r\n * Implementa {@link ControlValueAccessor} para integração nativa com Reactive Forms\r\n * e Template-driven Forms do Angular.\r\n *\r\n * Funcionalidades:\r\n * - Campos separados e navegáveis para cada dígito do código\r\n * - Comprimento configurável via input `length`\r\n * - Suporte a entrada numérica ou alfanumérica\r\n * - Navegação por teclado (setas, backspace)\r\n * - Suporte a colar (paste) com truncamento automático ao tamanho definido\r\n * - Estado de erro via input `invalid`\r\n * - Acessibilidade completa com ARIA labels e roles semânticos\r\n *\r\n * @example\r\n * ```html\r\n * <form [formGroup]=\"form\">\r\n * <s-pin-code-field\r\n * formControlName=\"code\"\r\n * [length]=\"6\"\r\n * [alphanumeric]=\"false\"\r\n * [invalid]=\"(form.get('code')?.invalid && form.get('code')?.dirty) || false\"\r\n * helpText=\"Digite seu código de 6 dígitos\"\r\n * (codeFilled)=\"onCodeFilled($event)\">\r\n * </s-pin-code-field>\r\n * </form>\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-pin-code-field',\r\n templateUrl: './pin-code-field.component.html',\r\n standalone: true,\r\n imports: [NgClass, TranslateModule],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => PinCodeFieldComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class PinCodeFieldComponent implements ControlValueAccessor {\r\n private static readonly LAST_INDEX_OFFSET = 1;\r\n private static readonly EMPTY_VALUE = '';\r\n\r\n /**\r\n * @description Número de campos de entrada (comprimento do código PIN).\r\n * Deve ser ao menos 1.\r\n *\r\n * @default 6\r\n */\r\n public length = input(6);\r\n\r\n /**\r\n * @description Permite entrada alfanumérica e de caracteres especiais.\r\n * Quando `false`, aceita apenas dígitos numéricos (0–9).\r\n *\r\n * @default false\r\n */\r\n public alphanumeric = input(false);\r\n\r\n /**\r\n * @description Texto de ajuda exibido abaixo dos campos de entrada,\r\n * fornecendo instruções adicionais ao usuário.\r\n *\r\n * @default ''\r\n */\r\n public helpText = input('');\r\n\r\n /**\r\n * @description Controla a visualização do estado de erro do componente.\r\n * Quando `true`, exibe borda vermelha nos campos de entrada.\r\n * Normalmente vinculado ao estado `invalid && dirty` do `FormControl`.\r\n *\r\n * @example\r\n * ```html\r\n * [invalid]=\"(control?.invalid && control?.dirty) || false\"\r\n * ```\r\n * @default false\r\n */\r\n public invalid = input(false);\r\n\r\n /**\r\n * @description Controla o estado desabilitado do componente via two-way binding.\r\n * Quando `true`, todos os campos ficam desabilitados e a interação do usuário é bloqueada.\r\n *\r\n * @default false\r\n */\r\n public disabled = model(false);\r\n\r\n /**\r\n * @description Emitido quando todos os campos do código PIN são preenchidos.\r\n * Emite o código completo como string.\r\n *\r\n * @example\r\n * ```html\r\n * (codeFilled)=\"onCodeFilled($event)\"\r\n * ```\r\n */\r\n public codeFilled = output<string>();\r\n\r\n /**\r\n * @description Signal com os valores atuais de cada campo de entrada.\r\n * O comprimento do array corresponde ao valor do input `length`.\r\n */\r\n public inputs = signal<string[]>([]);\r\n\r\n /**\r\n * Signal tracking whether the component has been touched by the user.\r\n * Set to true when the last input field loses focus (blur event).\r\n */\r\n public touched = signal<boolean>(false);\r\n\r\n /**\r\n * Computed signal indicating whether all PIN code fields are filled.\r\n * True only when every field contains a non-empty value.\r\n */\r\n public isComplete = computed(() => this.inputs().every((input) => input !== ''));\r\n\r\n /**\r\n * Computed signal containing the complete PIN code as a joined string.\r\n * Returns empty string if no inputs are filled.\r\n */\r\n public currentValue = computed(() => this.inputs().join(''));\r\n\r\n /**\r\n * Signal tracking if the component host has the ng-invalid class from FormControl validators.\r\n * Updated reactively whenever the invalid state changes.\r\n */\r\n private hasNgInvalidClass = signal<boolean>(false);\r\n\r\n /**\r\n * Signal tracking if the FormControl is dirty.\r\n * Updated reactively whenever the dirty state changes.\r\n */\r\n private isControlDirty = signal<boolean>(false);\r\n\r\n /**\r\n * Computed signal indicating if the component should show error state.\r\n * Returns true if:\r\n * - The `invalid` input is true, OR\r\n * - The component has the `ng-invalid` class AND the FormControl is dirty (touched/modified)\r\n * This ensures errors are only shown to the user after they've interacted with the field.\r\n */\r\n public hasError = computed(() => this.invalid() || (this.hasNgInvalidClass() && this.isControlDirty()));\r\n\r\n /**\r\n * ViewChildren reference to all input DOM elements.\r\n * Used for DOM manipulation (focus, selection).\r\n */\r\n public pinInputs = viewChildren<ElementRef>('pinInput');\r\n\r\n private readonly elementRef = inject(ElementRef);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n constructor() {\r\n effect(\r\n () => {\r\n const newLength = this.length();\r\n if (newLength < 1) {\r\n console.warn('PIN code length must be at least 1');\r\n return;\r\n }\r\n if (this.inputs().length !== newLength) {\r\n this.inputs.set(Array.from({ length: newLength }, () => ''));\r\n }\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n\r\n // Monitor ng-invalid and ng-dirty classes on the host element for reactive error state\r\n effect(\r\n () => {\r\n // Access inputs to create dependency on changes\r\n this.inputs();\r\n this.invalid();\r\n\r\n // Use setTimeout to defer the check to next tick to ensure Angular has updated DOM classes\r\n const timeoutId = window.setTimeout(() => {\r\n const hostElement = this.elementRef.nativeElement;\r\n const hasNgInvalid = hostElement.classList.contains('ng-invalid');\r\n const isDirty = hostElement.classList.contains('ng-dirty');\r\n\r\n this.hasNgInvalidClass.set(hasNgInvalid);\r\n this.isControlDirty.set(isDirty);\r\n });\r\n\r\n // Cleanup timeout on component destroy\r\n this.destroyRef.onDestroy(() => {\r\n clearTimeout(timeoutId);\r\n });\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n }\r\n\r\n /**\r\n * Handles input event on PIN code fields.\r\n * Validates character input, prevents multiple characters per field,\r\n * auto-advances to next field when character is entered.\r\n *\r\n * @param index - The input field index (0-based)\r\n * @param event - The input event\r\n */\r\n public onInput(index: number, event: Event): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLInputElement;\r\n const value = target.value;\r\n\r\n if (value.length > 1 || (value && !this.isValidCharacter(value))) {\r\n this.clearInput(target);\r\n return;\r\n }\r\n\r\n this.setInputAtIndex(index, value);\r\n\r\n if (value && index < this.length() - 1) {\r\n this.focusAndSelectInput(index + 1);\r\n }\r\n\r\n if (this.isComplete()) {\r\n this.codeFilled.emit(this.currentValue());\r\n }\r\n }\r\n\r\n /**\r\n * Handles keyboard events on PIN code fields.\r\n * Supports arrow navigation (left/right) and backspace key.\r\n *\r\n * Keyboard behavior:\r\n * - ArrowRight: Move focus to next field\r\n * - ArrowLeft: Move focus to previous field\r\n * - Backspace: Clear current or previous field and adjust focus\r\n *\r\n * @param index - The input field index (0-based)\r\n * @param event - The keyboard event\r\n */\r\n public onKeyDown(index: number, event: KeyboardEvent): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const key = event.key;\r\n\r\n switch (key) {\r\n case 'ArrowRight':\r\n if (index < this.length() - 1) {\r\n event.preventDefault();\r\n this.focusAndSelectInput(index + 1);\r\n }\r\n break;\r\n case 'ArrowLeft':\r\n if (index > 0) {\r\n event.preventDefault();\r\n this.focusAndSelectInput(index - 1);\r\n }\r\n break;\r\n case 'Backspace':\r\n event.preventDefault();\r\n this.handleBackspace(index);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Handles paste (clipboard) events on PIN code fields.\r\n * Extracts valid characters from pasted content, filters by character type,\r\n * and automatically truncates to match field length.\r\n *\r\n * Behavior:\r\n * - Filters characters based on `alphanumeric` setting\r\n * - Truncates to maximum field count\r\n * - Fills available fields with pasted content\r\n * - Emits codeFilled event if all fields are filled\r\n *\r\n * @param event - The clipboard event\r\n */\r\n public onPaste(event: ClipboardEvent): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n const validChars = this.extractValidCharactersFromPaste(event);\r\n\r\n if (validChars.length === 0) {\r\n return;\r\n }\r\n\r\n const filledInputs = [...validChars, ...Array(this.length() - validChars.length).fill('')];\r\n\r\n this.inputs.set(filledInputs);\r\n this.updateValue();\r\n\r\n // Focus on the first empty input or the last filled input if all are filled\r\n const firstEmptyIndex = validChars.length < this.length() ? validChars.length : validChars.length - 1;\r\n this.focusAndSelectInput(firstEmptyIndex);\r\n\r\n if (this.isComplete()) {\r\n this.codeFilled.emit(this.currentValue());\r\n }\r\n }\r\n\r\n /**\r\n * Handles focus event on PIN code fields.\r\n * Selects all text in the input field when focused.\r\n *\r\n * @param index - The input field index (0-based)\r\n */\r\n public onFocus(index: number): void {\r\n const input = this.pinInputs()[index];\r\n if (input) {\r\n input.nativeElement.select();\r\n }\r\n }\r\n\r\n /**\r\n * Handles blur event on PIN code fields.\r\n * Marks the component as touched when the last input field loses focus.\r\n * Also notifies the registered onTouched callback for FormControl integration.\r\n *\r\n * @param index - The input field index (0-based)\r\n */\r\n public onBlur(index: number): void {\r\n // Only mark as touched when the LAST input loses focus\r\n if (index === this.length() - PinCodeFieldComponent.LAST_INDEX_OFFSET) {\r\n this.touched.set(true);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n /**\r\n * Clears the input value at specified index and adjusts focus accordingly.\r\n * If current field is empty, moves to previous field and clears it.\r\n *\r\n * @private\r\n * @param index - The input field index (0-based)\r\n */\r\n private handleBackspace(index: number): void {\r\n const currentInputs = this.inputs();\r\n\r\n // If current input has value, clear it\r\n if (currentInputs[index]) {\r\n this.setInputAtIndex(index, PinCodeFieldComponent.EMPTY_VALUE);\r\n return;\r\n }\r\n\r\n // Otherwise, clear previous input and focus it\r\n if (index > 0) {\r\n this.setInputAtIndex(index - 1, PinCodeFieldComponent.EMPTY_VALUE);\r\n this.focusAndSelectInput(index - 1);\r\n }\r\n }\r\n\r\n /**\r\n * Sets the value at a specific input field index and updates the form value.\r\n * Updates the signal and triggers the change detection via onChange callback.\r\n *\r\n * @private\r\n * @param index - The input field index (0-based)\r\n * @param value - The value to set in the field\r\n */\r\n private setInputAtIndex(index: number, value: string): void {\r\n const currentInputs = this.inputs();\r\n currentInputs[index] = value;\r\n this.inputs.set([...currentInputs]);\r\n this.updateValue();\r\n }\r\n\r\n /**\r\n * Focuses on and selects text in the input field at the specified index.\r\n * Uses queueMicrotask to ensure DOM is updated before focusing.\r\n *\r\n * @private\r\n * @param index - The input field index (0-based)\r\n */\r\n private focusAndSelectInput(index: number): void {\r\n queueMicrotask(() => {\r\n const input = this.pinInputs()[index];\r\n if (input) {\r\n input.nativeElement.focus();\r\n input.nativeElement.select();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clears the value of an input element.\r\n * Used for input validation to reject invalid characters.\r\n *\r\n * @private\r\n * @param target - The HTML input element to clear\r\n */\r\n private clearInput(target: HTMLInputElement): void {\r\n target.value = '';\r\n }\r\n\r\n /**\r\n * Extracts valid characters from pasted content.\r\n * Filters based on alphanumeric setting and limits to component's length.\r\n *\r\n * @private\r\n * @param event - The clipboard event\r\n * @returns Array of valid characters from the pasted content\r\n */\r\n private extractValidCharactersFromPaste(event: ClipboardEvent): string[] {\r\n const pastedText = (event.clipboardData?.getData('text') || '').trim();\r\n return pastedText\r\n .split('')\r\n .filter((char) => this.isValidCharacter(char))\r\n .slice(0, this.length());\r\n }\r\n\r\n /**\r\n * Validates if a character is acceptable based on component configuration.\r\n * For numeric mode, accepts only digits 0-9.\r\n * For alphanumeric mode, accepts any non-whitespace character.\r\n *\r\n * @private\r\n * @param char - The character to validate\r\n * @returns true if character is valid, false otherwise\r\n */\r\n private isValidCharacter(char: string): boolean {\r\n if (this.alphanumeric()) {\r\n return char.trim().length > 0;\r\n }\r\n return /^[0-9]$/.test(char);\r\n }\r\n\r\n /**\r\n * Updates the form value by calling the onChange callback registered by FormControl.\r\n * This ensures the reactive form stays synchronized with component state.\r\n *\r\n * @private\r\n */\r\n private updateValue(): void {\r\n this.onChange(this.currentValue());\r\n }\r\n\r\n /**\r\n * Implements ControlValueAccessor interface.\r\n * Called by the FormControl to write a value to the component.\r\n * Only accepts string values with length matching the component's length setting.\r\n *\r\n * @param value - The value to write (typically from the FormControl)\r\n */\r\n public writeValue(value: any): void {\r\n if (value) {\r\n const stringValue = String(value);\r\n if (stringValue.length === this.length()) {\r\n this.inputs.set(stringValue.split(''));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Implements ControlValueAccessor interface.\r\n * Called by the FormControl when value changes.\r\n * Registers the callback to be called when the component value changes.\r\n *\r\n * @param fn - Callback function to invoke when component value changes\r\n */\r\n public registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Implements ControlValueAccessor interface.\r\n * Called by the FormControl to register the touched callback.\r\n * The callback is invoked when the last input field loses focus.\r\n *\r\n * @param fn - Callback function to invoke when component is touched\r\n */\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Implements ControlValueAccessor interface.\r\n * Called by the FormControl to set the disabled state of the component.\r\n * Updates the disabled model to reflect the form's disabled state.\r\n *\r\n * @param isDisabled - Whether the component should be disabled\r\n */\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n}\r\n","<div class=\"gap-xsmall flex flex-col\">\n <div\n class=\"flex gap-2\"\n role=\"group\"\n aria-label=\"PIN code input\"\n [attr.aria-labelledby]=\"helpText() ? 'pin-help-text' : null\"\n >\n @for (input of inputs(); let i = $index; track i) {\n <input\n #pinInput\n type=\"text\"\n class=\"h-12 w-12 rounded-xbig border text-center text-lg font-medium transition-[background-color,border-color,color] duration-200\"\n [ngClass]=\"{\n 'border-criticality-red focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-criticality-red': hasError(),\n 'border-grayscale-30 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]': !hasError(),\n 'cursor-not-allowed bg-grayscale-10 text-grayscale-60': disabled(),\n 'bg-grayscale-0 text-grayscale-100': !disabled(),\n }\"\n [value]=\"input\"\n [disabled]=\"disabled()\"\n [attr.maxlength]=\"1\"\n [attr.inputmode]=\"alphanumeric() ? 'text' : 'numeric'\"\n [attr.aria-label]=\"\n alphanumeric()\n ? ('platform.angular_components.pin_code_character_index_of_total'\n | translate: { index: i + 1, length: length() })\n : ('platform.angular_components.pin_code_digit_index_of_total'\n | translate: { index: i + 1, length: length() })\n \"\n [attr.aria-describedby]=\"helpText() ? 'pin-help-text' : null\"\n [attr.aria-required]=\"true\"\n autocomplete=\"off\"\n (input)=\"onInput(i, $event)\"\n (keydown)=\"onKeyDown(i, $event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus(i)\"\n (blur)=\"onBlur(i)\"\n />\n }\n </div>\n\n @if (helpText()) {\n <div\n id=\"pin-help-text\"\n class=\"mt-small text-sm text-grayscale-60\"\n >\n {{ helpText() }}\n </div>\n }\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { PinCodeFieldComponent } from './pin-code-field/pin-code-field.component';\n\n/**\n * @deprecated Será removido na v20. Importe diretamente o standalone `PinCodeFieldComponent` (de\n * `@seniorsistemas/angular-components/pin-code-field`) no lugar deste módulo.\n *\n * Migração automática (também executada pelo `ng update` na v20):\n * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`\n */\n@NgModule({\n imports: [PinCodeFieldComponent],\n exports: [PinCodeFieldComponent],\n})\nexport class PinCodeFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -366,6 +366,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
366
366
|
args: ['window:resize']
|
|
367
367
|
}] } });
|
|
368
368
|
|
|
369
|
+
/**
|
|
370
|
+
* @deprecated Será removido na v20. Importe diretamente o standalone `ProfilePicturePickerComponent` (de
|
|
371
|
+
* `@seniorsistemas/angular-components/profile-picture-picker`) no lugar deste módulo.
|
|
372
|
+
*
|
|
373
|
+
* Migração automática (também executada pelo `ng update` na v20):
|
|
374
|
+
* `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
|
|
375
|
+
*/
|
|
369
376
|
class ProfilePicturePickerModule {
|
|
370
377
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfilePicturePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
371
378
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ProfilePicturePickerModule, imports: [ProfilePicturePickerComponent], exports: [ProfilePicturePickerComponent] });
|