@seniorsistemas/angular-components 19.0.5 → 19.0.6
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/accordion/lib/accordion/accordion.component.d.ts +25 -0
- package/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.d.ts +60 -0
- package/alert/lib/alert/alert.component.d.ts +40 -0
- package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +51 -0
- package/badge/lib/badge/badge.component.d.ts +20 -0
- package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +46 -1
- package/breadcrumb/lib/breadcrumb/breadcrumb.component.d.ts +12 -0
- package/button/lib/button/button.component.d.ts +101 -0
- package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +24 -0
- package/card/lib/card/card.component.d.ts +18 -0
- package/chat/lib/chat/chat.component.d.ts +20 -2
- package/chat/lib/chat/components/chat-message/chat-message.component.d.ts +18 -2
- package/checkbox/lib/checkbox/checkbox.component.d.ts +23 -3
- package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +20 -0
- package/chips/lib/chips/chip-item/chip-item.component.d.ts +15 -0
- package/chips/lib/chips/chips/chips.component.d.ts +41 -0
- package/code-editor/lib/code-editor/code-editor.component.d.ts +40 -0
- package/collapse-link/lib/collapse-link/collapse-link.component.d.ts +18 -0
- package/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.d.ts +5 -0
- package/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.d.ts +19 -0
- package/content-generator/lib/content-generator/content-generator.component.d.ts +30 -0
- package/control-errors/lib/control-errors/control-errors.component.d.ts +36 -0
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +36 -0
- package/currency/lib/currency.service.d.ts +15 -2
- package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +31 -0
- package/dialog/lib/src/dialog/dialog.component.d.ts +51 -0
- package/dialog/lib/src/dialog/services/dialog.service.d.ts +2 -2
- package/dialog/lib/src/dialog/services/internal-dialog.service.d.ts +1 -1
- package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +6 -5
- package/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.d.ts +5 -0
- package/dynamic-form/dynamic-form/configurations/structure/fieldset.d.ts +14 -0
- package/dynamic-form/dynamic-form/configurations/structure/row.d.ts +67 -0
- package/dynamic-form/dynamic-form/configurations/structure/section.d.ts +8 -0
- package/dynamic-form/dynamic-form/configurations/structure/structure.d.ts +19 -0
- package/dynamic-form/dynamic-form/dynamic-form.component.d.ts +21 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.d.ts +45 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.d.ts +59 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.d.ts +55 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.d.ts +35 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.d.ts +17 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.d.ts +23 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.d.ts +66 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.d.ts +15 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.d.ts +30 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.d.ts +47 -2
- package/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.d.ts +26 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +18 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/field.d.ts +44 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +112 -4
- package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +42 -3
- package/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.d.ts +48 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.d.ts +62 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.d.ts +34 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.d.ts +63 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.d.ts +47 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.d.ts +23 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.d.ts +37 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.d.ts +65 -2
- package/dynamic-form/public-api.d.ts +1 -0
- package/editable-overlay/lib/editable-overlay/editable-overlay.directive.d.ts +16 -0
- package/empty-state/lib/empty-state/empty-state.component.d.ts +59 -0
- package/esm2022/accordion/lib/accordion/accordion.component.mjs +26 -1
- package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +61 -1
- package/esm2022/alert/lib/alert/alert.component.mjs +41 -1
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +52 -1
- package/esm2022/badge/lib/badge/badge.component.mjs +21 -1
- package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +47 -2
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +13 -1
- package/esm2022/button/lib/button/button.component.mjs +102 -1
- package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +72 -47
- package/esm2022/card/lib/card/card.component.mjs +21 -6
- package/esm2022/chat/lib/chat/chat.component.mjs +23 -5
- package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +20 -4
- package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +24 -4
- package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +22 -2
- package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +17 -2
- package/esm2022/chips/lib/chips/chips/chips.component.mjs +42 -1
- package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +41 -1
- package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +19 -1
- package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +6 -1
- package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +20 -1
- package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +31 -1
- package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +37 -1
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +37 -1
- package/esm2022/currency/lib/currency.service.mjs +21 -8
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +32 -1
- package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +66 -11
- package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +13 -10
- package/esm2022/dialog/lib/src/dialog/services/internal-dialog.service.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/fieldset.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/row.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/section.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/structure.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.component.mjs +22 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +1 -1
- 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/field.mjs +1 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-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/configurations/fields/password-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +6 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +3 -3
- package/esm2022/dynamic-form/public-api.mjs +2 -2
- package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +17 -1
- package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +60 -1
- package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +25 -5
- package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +48 -1
- package/esm2022/gantt/lib/gantt/gantt.component.mjs +32 -1
- package/esm2022/global-search/lib/global-search/global-search.component.mjs +30 -1
- package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +40 -1
- package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +83 -27
- package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +40 -3
- package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +18 -2
- package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +33 -4
- package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +16 -1
- package/esm2022/insights/lib/insights/insights.component.mjs +23 -1
- package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +21 -1
- package/esm2022/kanban/lib/kanban/kanban.component.mjs +34 -16
- package/esm2022/label-value/lib/label-value/label-value.component.mjs +14 -1
- package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +37 -1
- package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +24 -1
- package/esm2022/locale/lib/locale/locale.service.mjs +8 -1
- package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +17 -1
- package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +13 -1
- package/esm2022/mouse-events/lib/mouse-events/double-click.directive.mjs +16 -3
- package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +24 -10
- package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +20 -1
- package/esm2022/number-input/lib/number-input/number-input.directive.mjs +32 -12
- package/esm2022/numeric/lib/numeric.pipe.mjs +16 -1
- package/esm2022/numeric/lib/numeric.service.mjs +21 -1
- package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +9 -6
- package/esm2022/object-card/lib/object-card/object-card.component.mjs +24 -1
- package/esm2022/optional-fields/editor/editor-field.mjs +1 -1
- package/esm2022/paginator/lib/paginator/paginator.component.mjs +20 -1
- package/esm2022/panel/lib/panel/panel.component.mjs +44 -23
- package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +25 -1
- package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +54 -1
- package/esm2022/picklist/lib/picklist/picklist.component.mjs +33 -2
- package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +29 -34
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +86 -2
- package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +53 -3
- package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +28 -1
- package/esm2022/radio-button/lib/radio-button-group/radio-button-group.component.mjs +27 -1
- package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +39 -7
- package/esm2022/select/lib/select/select.component.mjs +35 -1
- package/esm2022/select-button/lib/select-button/select-button.component.mjs +35 -1
- package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +11 -3
- package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +54 -1
- package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +76 -36
- package/esm2022/slider/lib/slider/slider.component.mjs +90 -9
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +25 -4
- package/esm2022/split-button/lib/split-button/split-button.component.mjs +24 -2
- package/esm2022/star-rating/star-rating/star-rating.component.mjs +17 -1
- package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +32 -10
- package/esm2022/stepper/lib/stepper/stepper.component.mjs +20 -1
- package/esm2022/structure/lib/structure/footer.component.mjs +11 -1
- package/esm2022/switch/lib/switch/switch.component.mjs +22 -2
- package/esm2022/table/lib/table/table-column/table-columns.component.mjs +16 -1
- package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +29 -3
- package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +33 -2
- package/esm2022/tabs/lib/tabs/tabs.component.mjs +35 -3
- package/esm2022/template/lib/template/template.directive.mjs +14 -2
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +28 -1
- package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +25 -1
- package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +28 -3
- package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +30 -1
- package/esm2022/tile/lib/tile/tile.component.mjs +26 -1
- package/esm2022/timeline/lib/timeline/timeline.component.mjs +26 -3
- package/esm2022/toast/lib/toast/toast.component.mjs +24 -4
- package/esm2022/token-list/lib/token-list/token-list.component.mjs +22 -1
- package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +66 -1
- package/esm2022/topbar/lib/topbar/topbar.component.mjs +18 -1
- package/esm2022/tree/lib/tree/tree.component.mjs +28 -1
- package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +47 -1
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs +85 -0
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-alert.mjs +40 -0
- package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +51 -0
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-badge.mjs +20 -0
- package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +46 -1
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +12 -0
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs +101 -0
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +71 -46
- package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-card.mjs +19 -4
- package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chat.mjs +39 -5
- package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +21 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +23 -3
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +57 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +40 -0
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +18 -0
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -0
- package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +19 -0
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +30 -0
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +36 -0
- package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +36 -0
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-currency.mjs +19 -6
- package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +31 -0
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs +74 -16
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +29 -4
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +16 -0
- package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +59 -0
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +21 -1
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +47 -0
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs +31 -0
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +29 -0
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +39 -0
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +80 -24
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +38 -1
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +17 -1
- package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +30 -1
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +15 -0
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-insights.mjs +22 -0
- package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +20 -0
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs +28 -10
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-label-value.mjs +13 -0
- package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +59 -0
- package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-locale.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +16 -0
- package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-mask.mjs +12 -0
- package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +35 -8
- package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +19 -0
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-number-input.mjs +31 -11
- package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +8 -5
- package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-numeric.mjs +35 -0
- package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs +23 -0
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-optional-fields-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs +19 -0
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-panel.mjs +39 -18
- package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +77 -0
- package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs +32 -1
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +28 -33
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +85 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +52 -2
- package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +53 -0
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +36 -4
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs +34 -0
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +34 -0
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs +9 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +53 -0
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +71 -31
- package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slider.mjs +89 -8
- package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +24 -3
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs +22 -0
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +16 -0
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +30 -8
- package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs +19 -0
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-structure.mjs +10 -0
- package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-switch.mjs +20 -0
- package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs +28 -2
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs +15 -0
- package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs +65 -2
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-template.mjs +13 -1
- package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +27 -0
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +24 -0
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +26 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +29 -0
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tile.mjs +25 -0
- package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-timeline.mjs +25 -2
- package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-toast.mjs +22 -2
- package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs +21 -0
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +65 -0
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-topbar.mjs +17 -0
- package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tree.mjs +27 -0
- package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +46 -0
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
- package/fieldset/lib/fieldset/fieldset.component.d.ts +23 -3
- package/file-picker/lib/file-picker/file-picker.component.d.ts +47 -0
- package/gantt/lib/gantt/gantt.component.d.ts +31 -0
- package/global-search/lib/global-search/global-search.component.d.ts +29 -0
- package/grid-menu/lib/grid-menu/grid-menu.component.d.ts +39 -0
- package/help-popover/lib/help-popover/help-popover.directive.d.ts +67 -17
- package/image-cropper/lib/image-cropper/image-cropper.component.d.ts +38 -0
- package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +15 -0
- package/info-sign/lib/info-sign/info-sign.directive.d.ts +30 -1
- package/inline-edit/lib/inline-edit/inline-edit.component.d.ts +15 -0
- package/insights/lib/insights/insights.component.d.ts +22 -0
- package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +20 -0
- package/kanban/lib/kanban/kanban.component.d.ts +25 -5
- package/label-value/lib/label-value/label-value.component.d.ts +13 -0
- package/loading-state/lib/loading-state/loading-state.component.d.ts +36 -0
- package/loading-state/lib/loading-state/loading-state.directive.d.ts +23 -0
- package/locale/lib/locale/locale.service.d.ts +7 -0
- package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +16 -0
- package/mask/lib/mask/mask-formatter.pipe.d.ts +12 -0
- package/mouse-events/lib/mouse-events/double-click.directive.d.ts +13 -0
- package/mouse-events/lib/mouse-events/long-press.directive.d.ts +16 -2
- package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +19 -0
- package/number-input/lib/number-input/number-input.directive.d.ts +19 -1
- package/numeric/lib/numeric.pipe.d.ts +15 -0
- package/numeric/lib/numeric.service.d.ts +20 -0
- package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +5 -4
- package/object-card/lib/object-card/object-card.component.d.ts +23 -0
- package/optional-fields/editor/editor-field.d.ts +19 -0
- package/package.json +12 -12
- package/paginator/lib/paginator/paginator.component.d.ts +19 -0
- package/panel/lib/panel/panel.component.d.ts +24 -3
- package/password-strength/lib/password-strength/password-strength.component.d.ts +24 -0
- package/password-strength/lib/password-strength/password-strength.directive.d.ts +53 -0
- package/picklist/lib/picklist/picklist.component.d.ts +29 -0
- package/pin-code-field/lib/pin-code-field/pin-code-field.component.d.ts +28 -33
- package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +85 -1
- package/progressbar/lib/progressbar/progressbar.component.d.ts +50 -0
- package/radio-button/lib/radio-button/radio-button.component.d.ts +27 -0
- package/radio-button/lib/radio-button-group/radio-button-group.component.d.ts +26 -0
- package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +30 -2
- package/select/lib/select/select.component.d.ts +34 -0
- package/select-button/lib/select-button/select-button.component.d.ts +34 -0
- package/shared/lib/shared/border-button/border-button.component.d.ts +10 -2
- package/sidebar/lib/sidebar/sidebar.component.d.ts +53 -0
- package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +53 -2
- package/slider/lib/slider/slider.component.d.ts +72 -0
- package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +18 -0
- package/split-button/lib/split-button/split-button.component.d.ts +22 -0
- package/star-rating/star-rating/star-rating.component.d.ts +16 -0
- package/stats-card/lib/stats-card/stats-card.component.d.ts +28 -0
- package/stepper/lib/stepper/stepper.component.d.ts +19 -0
- package/structure/lib/structure/footer.component.d.ts +10 -0
- package/switch/lib/switch/switch.component.d.ts +20 -0
- package/table/lib/table/table-column/table-columns.component.d.ts +15 -0
- package/table-header/lib/table-header/table-header-checkbox.component.d.ts +18 -0
- package/tabs/lib/tab-item/tab-item.component.d.ts +31 -0
- package/tabs/lib/tabs/tabs.component.d.ts +28 -0
- package/template/lib/template/template.directive.d.ts +12 -0
- package/text-area/lib/text-area/text-area.component.d.ts +27 -0
- package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +24 -0
- package/thumbnails/lib/thumbnails/thumbnails.component.d.ts +27 -2
- package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +29 -0
- package/tile/lib/tile/tile.component.d.ts +25 -0
- package/timeline/lib/timeline/timeline.component.d.ts +24 -0
- package/toast/lib/toast/toast.component.d.ts +22 -2
- package/token-list/lib/token-list/token-list.component.d.ts +21 -0
- package/tooltip/lib/tooltip/tooltip.directive.d.ts +65 -0
- package/topbar/lib/topbar/topbar.component.d.ts +17 -0
- package/tree/lib/tree/tree.component.d.ts +27 -0
- package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +46 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-password-strength.mjs","sources":["../../projects/angular-components/password-strength/src/lib/password-strength/password-strength.component.ts","../../projects/angular-components/password-strength/src/lib/password-strength/password-strength.component.html","../../projects/angular-components/password-strength/src/lib/password-strength/password-strength.directive.ts","../../projects/angular-components/password-strength/src/lib/password-strength/password-strength.module.ts","../../projects/angular-components/password-strength/src/seniorsistemas-angular-components-password-strength.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\n\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { PasswordStrengthPositions } from './types/password-positions';\nimport { PasswordStrengths } from './types/password-strengths';\n\n@Component({\n templateUrl: './password-strength.component.html',\n styleUrls: ['./password-strength.component.scss'],\n})\nexport class PasswordStrengthComponent implements OnInit {\n @Input()\n public weakTitle?: string;\n\n @Input()\n public mediumTitle?: string;\n\n @Input()\n public strongTitle?: string;\n\n @Input({ required: true })\n public description!: string;\n\n public title?: string;\n public position: PasswordStrengthPositions = 'right';\n public left = 0;\n public top = 0;\n public visible = false;\n\n constructor(private readonly translate: TranslateService) {}\n\n public ngOnInit(): void {\n this.title = this.weakTitle;\n }\n\n public setPasswordStrengthPosition() {\n const passwordStrength = document.querySelector('.password-strength');\n\n if (!passwordStrength) {\n return;\n }\n\n switch (this.position) {\n case 'top':\n passwordStrength.classList.add('password-strength--top');\n break;\n case 'right':\n passwordStrength.classList.add('password-strength--right');\n break;\n case 'left':\n passwordStrength.classList.add('password-strength--left');\n break;\n }\n }\n\n public updateIndicators(passwordStrength: PasswordStrengths) {\n const strengthIndicator1 = document.querySelector('#strength-indicator-1');\n const strengthIndicator2 = document.querySelector('#strength-indicator-2');\n const strengthIndicator3 = document.querySelector('#strength-indicator-3');\n\n const onIndicators = [];\n const indicators = [strengthIndicator1, strengthIndicator2, strengthIndicator3];\n\n let strengthClass: string;\n\n switch (passwordStrength) {\n case 'veryWeak':\n this.title = this.weakTitle ?? this.translate.instant('platform.angular_components.weak');\n break;\n case 'weak':\n this.title = this.weakTitle ?? this.translate.instant('platform.angular_components.weak');\n strengthClass = 'strength-indicator--weak';\n onIndicators.push(strengthIndicator1);\n break;\n case 'medium':\n this.title = this.mediumTitle ?? this.translate.instant('platform.angular_components.medium');\n strengthClass = 'strength-indicator--medium';\n onIndicators.push(strengthIndicator1);\n onIndicators.push(strengthIndicator2);\n break;\n case 'strong':\n this.title = this.strongTitle ?? this.translate.instant('platform.angular_components.strong');\n strengthClass = 'strength-indicator--strong';\n onIndicators.push(strengthIndicator1);\n onIndicators.push(strengthIndicator2);\n onIndicators.push(strengthIndicator3);\n break;\n }\n\n indicators.forEach((indicator) => {\n indicator?.classList.remove(\n 'strength-indicator--weak',\n 'strength-indicator--medium',\n 'strength-indicator--strong',\n );\n });\n\n onIndicators.forEach((indicator) => {\n indicator?.classList.add(strengthClass);\n });\n }\n}\n","<div\n class=\"password-strength\"\n [ngStyle]=\"{\n left: left + 'px',\n top: top + 'px',\n }\"\n [ngClass]=\"['password-strength--' + position]\"\n>\n <span class=\"password-strength-title\">{{ title }}</span>\n <div class=\"strength-indicators\">\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-1\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-2\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-3\"\n ></span>\n </div>\n <span class=\"content\">{{ description }}</span>\n</div>\n","import {\n ApplicationRef,\n // NOSONAR - 'ComponentFactoryResolver' is deprecated.\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n HostListener,\n Injector,\n Input,\n OnInit,\n} from '@angular/core';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\n\nimport { PasswordStrengthComponent } from './password-strength.component';\nimport { PasswordStrengthPositions } from './types/password-positions';\nimport { PasswordStrengths } from './types/password-strengths';\n\n@Directive({\n selector: '[sPasswordStrength]',\n})\nexport class PasswordStrengthDirective implements OnInit {\n @Input('sPasswordStrength')\n public enabled = true;\n\n @Input()\n public passwordStrengthValidation?: (content: string) => PasswordStrengths;\n\n @Input()\n public passwordStrengthPosition: PasswordStrengthPositions = 'right';\n\n @Input()\n public passwordStrengthWeakTitle?: string;\n\n @Input()\n public passwordStrengthMediumTitle?: string;\n\n @Input()\n public passwordStrengthStrongTitle?: string;\n\n @Input({ required: true })\n public passwordStrengthDescription!: string;\n\n private componentRef?: null | ComponentRef<PasswordStrengthComponent>;\n\n constructor(\n private readonly elementRef: ElementRef,\n private readonly appRef: ApplicationRef,\n // NOSONAR - 'ComponentFactoryResolver' is deprecated.\n private readonly componentFactoryResolver: ComponentFactoryResolver,\n private readonly injector: Injector,\n ) {}\n\n public ngOnInit() {\n this.validateProperties();\n }\n\n @HostListener('keyup')\n @HostListener('focus')\n public onFocus(): void {\n const content = this.elementRef.nativeElement.value ?? '';\n\n this.createPasswordStrength();\n const component = this.componentRef?.instance;\n if (!component) {\n return;\n }\n if (content) {\n if (this.passwordStrengthValidation) {\n component.updateIndicators(this.passwordStrengthValidation(content));\n }\n } else {\n component.updateIndicators('veryWeak');\n }\n }\n\n @HostListener('blur')\n public onBlur(): void {\n this.destroyPasswordStrength();\n }\n\n private createPasswordStrength() {\n if (this.enabled && isNullOrUndefined(this.componentRef)) {\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(PasswordStrengthComponent);\n this.componentRef = componentFactory.create(this.injector);\n this.appRef.attachView(this.componentRef.hostView);\n const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n this.setPasswordStrengthComponentProperties();\n this.showPasswordStrength();\n }\n }\n\n private showPasswordStrength() {\n if (this.componentRef) {\n this.componentRef.instance.visible = true;\n }\n }\n\n // NOSONAR - Refactor this function to reduce its Cognitive Complexity from 16 to the 15 allowed.\n private setPasswordStrengthComponentProperties() {\n if (isNullOrUndefined(this.componentRef)) {\n return;\n }\n\n this.componentRef.instance.position = this.passwordStrengthPosition;\n this.componentRef.instance.weakTitle = this.passwordStrengthWeakTitle;\n this.componentRef.instance.mediumTitle = this.passwordStrengthMediumTitle;\n this.componentRef.instance.strongTitle = this.passwordStrengthStrongTitle;\n this.componentRef.instance.description = this.passwordStrengthDescription;\n\n const { top, right, bottom, left } = this.elementRef.nativeElement.getBoundingClientRect();\n\n const margin = 20;\n const elementRefHeight = bottom - top;\n const elementRefWidth = right - left;\n const safeSpace = 150;\n\n let positioned = false;\n const invalidOptions: PasswordStrengthPositions[] = [];\n\n while (!positioned) {\n if (invalidOptions.includes('top') && invalidOptions.includes('right') && invalidOptions.includes('left')) {\n this.destroyPasswordStrength();\n throw new Error('No space to show password strength');\n }\n\n switch (this.passwordStrengthPosition) {\n case 'top': {\n const topShift = top;\n const rightShift = document.body.clientWidth - right;\n const leftShift = left;\n\n const MIN_HORIZONTAL_SAFE_SPACE = 50;\n\n if (\n topShift <= elementRefHeight + safeSpace ||\n rightShift < MIN_HORIZONTAL_SAFE_SPACE ||\n leftShift < MIN_HORIZONTAL_SAFE_SPACE\n ) {\n this.passwordStrengthPosition = 'right';\n invalidOptions.push('top');\n break;\n }\n\n this.componentRef.instance.top = Math.round(top - margin);\n this.componentRef.instance.left = Math.round(elementRefWidth / 2 + left);\n positioned = true;\n break;\n }\n case 'right': {\n const rightShift = document.body.clientWidth - right;\n\n if (rightShift <= elementRefWidth + safeSpace) {\n this.passwordStrengthPosition = 'left';\n invalidOptions.push('right');\n break;\n }\n\n this.componentRef.instance.top = Math.round(top + elementRefHeight / 2);\n this.componentRef.instance.left = Math.round(right + margin);\n positioned = true;\n break;\n }\n case 'left': {\n const leftShift = left;\n\n if (leftShift <= elementRefWidth + safeSpace) {\n this.passwordStrengthPosition = 'top';\n invalidOptions.push('left');\n break;\n }\n\n this.componentRef.instance.top = Math.round(top + elementRefHeight / 2);\n this.componentRef.instance.left = Math.round(left - margin);\n positioned = true;\n break;\n }\n default: {\n break;\n }\n }\n\n this.componentRef.instance.position = this.passwordStrengthPosition;\n }\n }\n\n private validateProperties() {\n this.passwordStrengthValidation = this.passwordStrengthValidation || this.defaultValidator;\n }\n\n private destroyPasswordStrength(): void {\n if (this.componentRef) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private defaultValidator(content: string): PasswordStrengths {\n let points = 0;\n const PASSWORD_MIN_LENGTH = 6;\n const WEEK_CRITERIA = 1;\n const MEDIUM_CRITERIA = 4;\n const STRONG_CRITERIA = 5;\n\n const regExpValidations = [\n /(?=.*\\d)/, // number\n /(?=.*[a-z])/, // lowercase\n /(?=.*[A-Z])/, // uppercase\n /(?=.*[!@#$%&*.\\\\=+^~-])/, // special character\n ];\n\n if (content.length >= PASSWORD_MIN_LENGTH) {\n points++;\n }\n\n regExpValidations.forEach((validation) => {\n if (validation.test(content)) {\n points++;\n }\n });\n\n if (points < WEEK_CRITERIA) {\n return 'veryWeak';\n }\n if (points < MEDIUM_CRITERIA) {\n return 'weak';\n }\n if (points < STRONG_CRITERIA) {\n return 'medium';\n }\n return 'strong';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PasswordStrengthDirective } from './password-strength.directive';\nimport { PasswordStrengthComponent } from './password-strength.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [PasswordStrengthComponent, PasswordStrengthDirective],\n exports: [PasswordStrengthDirective],\n})\nexport class PasswordStrengthModule {}\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-password-strength.mjs","sources":["../../projects/angular-components/password-strength/src/lib/password-strength/password-strength.component.ts","../../projects/angular-components/password-strength/src/lib/password-strength/password-strength.component.html","../../projects/angular-components/password-strength/src/lib/password-strength/password-strength.directive.ts","../../projects/angular-components/password-strength/src/lib/password-strength/password-strength.module.ts","../../projects/angular-components/password-strength/src/seniorsistemas-angular-components-password-strength.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\n\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { PasswordStrengthPositions } from './types/password-positions';\nimport { PasswordStrengths } from './types/password-strengths';\n\n/**\n * @description Componente interno que exibe visualmente os indicadores de força de senha.\n * Utilizado em conjunto com a diretiva {@link PasswordStrengthDirective} para fornecer\n * feedback em tempo real enquanto o usuário digita, mostrando três níveis de força\n * (fraca, média e forte) com títulos e indicadores visuais configuráveis.\n *\n * @category Inputs\n */\n@Component({\n templateUrl: './password-strength.component.html',\n styleUrls: ['./password-strength.component.scss'],\n})\nexport class PasswordStrengthComponent implements OnInit {\n /**\n * @description Texto personalizado exibido quando a senha é classificada como fraca.\n * Se não informado, utiliza a tradução padrão do token `platform.angular_components.weak`.\n */\n @Input()\n public weakTitle?: string;\n\n /**\n * @description Texto personalizado exibido quando a senha é classificada como média.\n * Se não informado, utiliza a tradução padrão do token `platform.angular_components.medium`.\n */\n @Input()\n public mediumTitle?: string;\n\n /**\n * @description Texto personalizado exibido quando a senha é classificada como forte.\n * Se não informado, utiliza a tradução padrão do token `platform.angular_components.strong`.\n */\n @Input()\n public strongTitle?: string;\n\n /**\n * @description Descrição complementar exibida abaixo dos indicadores de força,\n * orientando o usuário sobre os requisitos esperados para a senha. Campo obrigatório.\n */\n @Input({ required: true })\n public description!: string;\n\n public title?: string;\n public position: PasswordStrengthPositions = 'right';\n public left = 0;\n public top = 0;\n public visible = false;\n\n constructor(private readonly translate: TranslateService) {}\n\n public ngOnInit(): void {\n this.title = this.weakTitle;\n }\n\n public setPasswordStrengthPosition() {\n const passwordStrength = document.querySelector('.password-strength');\n\n if (!passwordStrength) {\n return;\n }\n\n switch (this.position) {\n case 'top':\n passwordStrength.classList.add('password-strength--top');\n break;\n case 'right':\n passwordStrength.classList.add('password-strength--right');\n break;\n case 'left':\n passwordStrength.classList.add('password-strength--left');\n break;\n }\n }\n\n public updateIndicators(passwordStrength: PasswordStrengths) {\n const strengthIndicator1 = document.querySelector('#strength-indicator-1');\n const strengthIndicator2 = document.querySelector('#strength-indicator-2');\n const strengthIndicator3 = document.querySelector('#strength-indicator-3');\n\n const onIndicators = [];\n const indicators = [strengthIndicator1, strengthIndicator2, strengthIndicator3];\n\n let strengthClass: string;\n\n switch (passwordStrength) {\n case 'veryWeak':\n this.title = this.weakTitle ?? this.translate.instant('platform.angular_components.weak');\n break;\n case 'weak':\n this.title = this.weakTitle ?? this.translate.instant('platform.angular_components.weak');\n strengthClass = 'strength-indicator--weak';\n onIndicators.push(strengthIndicator1);\n break;\n case 'medium':\n this.title = this.mediumTitle ?? this.translate.instant('platform.angular_components.medium');\n strengthClass = 'strength-indicator--medium';\n onIndicators.push(strengthIndicator1);\n onIndicators.push(strengthIndicator2);\n break;\n case 'strong':\n this.title = this.strongTitle ?? this.translate.instant('platform.angular_components.strong');\n strengthClass = 'strength-indicator--strong';\n onIndicators.push(strengthIndicator1);\n onIndicators.push(strengthIndicator2);\n onIndicators.push(strengthIndicator3);\n break;\n }\n\n indicators.forEach((indicator) => {\n indicator?.classList.remove(\n 'strength-indicator--weak',\n 'strength-indicator--medium',\n 'strength-indicator--strong',\n );\n });\n\n onIndicators.forEach((indicator) => {\n indicator?.classList.add(strengthClass);\n });\n }\n}\n\n","<div\n class=\"password-strength\"\n [ngStyle]=\"{\n left: left + 'px',\n top: top + 'px',\n }\"\n [ngClass]=\"['password-strength--' + position]\"\n>\n <span class=\"password-strength-title\">{{ title }}</span>\n <div class=\"strength-indicators\">\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-1\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-2\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-3\"\n ></span>\n </div>\n <span class=\"content\">{{ description }}</span>\n</div>\n","import {\n ApplicationRef,\n // NOSONAR - 'ComponentFactoryResolver' is deprecated.\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n HostListener,\n Injector,\n Input,\n OnInit,\n} from '@angular/core';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\n\nimport { PasswordStrengthComponent } from './password-strength.component';\nimport { PasswordStrengthPositions } from './types/password-positions';\nimport { PasswordStrengths } from './types/password-strengths';\n\n/**\n * @description Diretiva que adiciona o comportamento de verificação de força de senha\n * a um campo de input existente. Ao receber foco ou a cada tecla digitada, exibe o\n * componente {@link PasswordStrengthComponent} posicionado dinamicamente ao redor do campo,\n * fornecendo feedback visual sobre a força da senha informada.\n *\n * @example\n * ```html\n * <input\n * type=\"password\"\n * [sPasswordStrength]=\"true\"\n * passwordStrengthDescription=\"A senha deve conter letras maiúsculas, números e caracteres especiais.\"\n * [passwordStrengthValidation]=\"myValidator\" />\n * ```\n *\n * @category Inputs\n */\n@Directive({\n selector: '[sPasswordStrength]',\n})\nexport class PasswordStrengthDirective implements OnInit {\n /**\n * @description Habilita ou desabilita o comportamento da diretiva.\n * Quando `false`, o indicador de força não será exibido.\n *\n * @default true\n */\n @Input('sPasswordStrength')\n public enabled = true;\n\n /**\n * @description Função customizada de validação da força da senha.\n * Recebe o conteúdo atual do campo e deve retornar um valor do tipo {@link PasswordStrengths}\n * (`'veryWeak'`, `'weak'`, `'medium'` ou `'strong'`).\n * Se não informada, utiliza a validação padrão baseada em critérios de comprimento,\n * letras maiúsculas/minúsculas, números e caracteres especiais.\n */\n @Input()\n public passwordStrengthValidation?: (content: string) => PasswordStrengths;\n\n /**\n * @description Posição preferencial onde o indicador de força será exibido em relação ao campo.\n * Aceita `'right'`, `'left'` ou `'top'`. O componente tenta posicionar automaticamente\n * em outro lado caso não haja espaço suficiente na posição especificada.\n *\n * @default 'right'\n */\n @Input()\n public passwordStrengthPosition: PasswordStrengthPositions = 'right';\n\n /**\n * @description Texto personalizado exibido quando a senha é classificada como fraca.\n * Se não informado, utiliza a tradução padrão.\n */\n @Input()\n public passwordStrengthWeakTitle?: string;\n\n /**\n * @description Texto personalizado exibido quando a senha é classificada como média.\n * Se não informado, utiliza a tradução padrão.\n */\n @Input()\n public passwordStrengthMediumTitle?: string;\n\n /**\n * @description Texto personalizado exibido quando a senha é classificada como forte.\n * Se não informado, utiliza a tradução padrão.\n */\n @Input()\n public passwordStrengthStrongTitle?: string;\n\n /**\n * @description Descrição complementar exibida no indicador de força de senha,\n * orientando o usuário sobre os requisitos da senha. Campo obrigatório.\n */\n @Input({ required: true })\n public passwordStrengthDescription!: string;\n\n private componentRef?: null | ComponentRef<PasswordStrengthComponent>;\n\n constructor(\n private readonly elementRef: ElementRef,\n private readonly appRef: ApplicationRef,\n // NOSONAR - 'ComponentFactoryResolver' is deprecated.\n private readonly componentFactoryResolver: ComponentFactoryResolver,\n private readonly injector: Injector,\n ) {}\n\n public ngOnInit() {\n this.validateProperties();\n }\n\n @HostListener('keyup')\n @HostListener('focus')\n public onFocus(): void {\n const content = this.elementRef.nativeElement.value ?? '';\n\n this.createPasswordStrength();\n const component = this.componentRef?.instance;\n if (!component) {\n return;\n }\n if (content) {\n if (this.passwordStrengthValidation) {\n component.updateIndicators(this.passwordStrengthValidation(content));\n }\n } else {\n component.updateIndicators('veryWeak');\n }\n }\n\n @HostListener('blur')\n public onBlur(): void {\n this.destroyPasswordStrength();\n }\n\n private createPasswordStrength() {\n if (this.enabled && isNullOrUndefined(this.componentRef)) {\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(PasswordStrengthComponent);\n this.componentRef = componentFactory.create(this.injector);\n this.appRef.attachView(this.componentRef.hostView);\n const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n this.setPasswordStrengthComponentProperties();\n this.showPasswordStrength();\n }\n }\n\n private showPasswordStrength() {\n if (this.componentRef) {\n this.componentRef.instance.visible = true;\n }\n }\n\n // NOSONAR - Refactor this function to reduce its Cognitive Complexity from 16 to the 15 allowed.\n private setPasswordStrengthComponentProperties() {\n if (isNullOrUndefined(this.componentRef)) {\n return;\n }\n\n this.componentRef.instance.position = this.passwordStrengthPosition;\n this.componentRef.instance.weakTitle = this.passwordStrengthWeakTitle;\n this.componentRef.instance.mediumTitle = this.passwordStrengthMediumTitle;\n this.componentRef.instance.strongTitle = this.passwordStrengthStrongTitle;\n this.componentRef.instance.description = this.passwordStrengthDescription;\n\n const { top, right, bottom, left } = this.elementRef.nativeElement.getBoundingClientRect();\n\n const margin = 20;\n const elementRefHeight = bottom - top;\n const elementRefWidth = right - left;\n const safeSpace = 150;\n\n let positioned = false;\n const invalidOptions: PasswordStrengthPositions[] = [];\n\n while (!positioned) {\n if (invalidOptions.includes('top') && invalidOptions.includes('right') && invalidOptions.includes('left')) {\n this.destroyPasswordStrength();\n throw new Error('No space to show password strength');\n }\n\n switch (this.passwordStrengthPosition) {\n case 'top': {\n const topShift = top;\n const rightShift = document.body.clientWidth - right;\n const leftShift = left;\n\n const MIN_HORIZONTAL_SAFE_SPACE = 50;\n\n if (\n topShift <= elementRefHeight + safeSpace ||\n rightShift < MIN_HORIZONTAL_SAFE_SPACE ||\n leftShift < MIN_HORIZONTAL_SAFE_SPACE\n ) {\n this.passwordStrengthPosition = 'right';\n invalidOptions.push('top');\n break;\n }\n\n this.componentRef.instance.top = Math.round(top - margin);\n this.componentRef.instance.left = Math.round(elementRefWidth / 2 + left);\n positioned = true;\n break;\n }\n case 'right': {\n const rightShift = document.body.clientWidth - right;\n\n if (rightShift <= elementRefWidth + safeSpace) {\n this.passwordStrengthPosition = 'left';\n invalidOptions.push('right');\n break;\n }\n\n this.componentRef.instance.top = Math.round(top + elementRefHeight / 2);\n this.componentRef.instance.left = Math.round(right + margin);\n positioned = true;\n break;\n }\n case 'left': {\n const leftShift = left;\n\n if (leftShift <= elementRefWidth + safeSpace) {\n this.passwordStrengthPosition = 'top';\n invalidOptions.push('left');\n break;\n }\n\n this.componentRef.instance.top = Math.round(top + elementRefHeight / 2);\n this.componentRef.instance.left = Math.round(left - margin);\n positioned = true;\n break;\n }\n default: {\n break;\n }\n }\n\n this.componentRef.instance.position = this.passwordStrengthPosition;\n }\n }\n\n private validateProperties() {\n this.passwordStrengthValidation = this.passwordStrengthValidation || this.defaultValidator;\n }\n\n private destroyPasswordStrength(): void {\n if (this.componentRef) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private defaultValidator(content: string): PasswordStrengths {\n let points = 0;\n const PASSWORD_MIN_LENGTH = 6;\n const WEEK_CRITERIA = 1;\n const MEDIUM_CRITERIA = 4;\n const STRONG_CRITERIA = 5;\n\n const regExpValidations = [\n /(?=.*\\d)/, // number\n /(?=.*[a-z])/, // lowercase\n /(?=.*[A-Z])/, // uppercase\n /(?=.*[!@#$%&*.\\\\=+^~-])/, // special character\n ];\n\n if (content.length >= PASSWORD_MIN_LENGTH) {\n points++;\n }\n\n regExpValidations.forEach((validation) => {\n if (validation.test(content)) {\n points++;\n }\n });\n\n if (points < WEEK_CRITERIA) {\n return 'veryWeak';\n }\n if (points < MEDIUM_CRITERIA) {\n return 'weak';\n }\n if (points < STRONG_CRITERIA) {\n return 'medium';\n }\n return 'strong';\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PasswordStrengthDirective } from './password-strength.directive';\nimport { PasswordStrengthComponent } from './password-strength.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [PasswordStrengthComponent, PasswordStrengthDirective],\n exports: [PasswordStrengthDirective],\n})\nexport class PasswordStrengthModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -14,21 +14,50 @@ import { TemplateDirective } from '@seniorsistemas/angular-components/template';
|
|
|
14
14
|
import * as i4 from '@seniorsistemas/angular-components/button';
|
|
15
15
|
import { ButtonModule } from '@seniorsistemas/angular-components/button';
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* @description Componente de lista de dupla seleção (picklist) com suporte a
|
|
19
|
+
* arrastar e soltar, filtro, checkboxes e template customizável para cada item.
|
|
20
|
+
* Emite eventos ao mover itens entre as listas.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```html
|
|
24
|
+
* <s-picklist
|
|
25
|
+
* [itensToSelect]="itensDisponiveis"
|
|
26
|
+
* [selectedItens]="itensSelecionados"
|
|
27
|
+
* (selectedItensChange)="onSelecaoMudou($event)" />
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @category Data
|
|
31
|
+
*/
|
|
17
32
|
class PicklistComponent {
|
|
18
33
|
cdr;
|
|
34
|
+
/** @description Lista de itens disponíveis para seleção (coluna esquerda). @default [] */
|
|
19
35
|
itensToSelect = [];
|
|
36
|
+
/** @description Lista de itens já selecionados (coluna direita). @default [] */
|
|
20
37
|
selectedItens = [];
|
|
38
|
+
/** @description Rótulo do título da lista de disponíveis. */
|
|
21
39
|
availableItensLabel;
|
|
40
|
+
/** @description Placeholder da busca na lista de disponíveis. */
|
|
22
41
|
availableItensPlaceholder;
|
|
42
|
+
/** @description Rótulo do botão de adicionar itens selecionados. */
|
|
23
43
|
addSelectedItensLabel;
|
|
44
|
+
/** @description Rótulo do botão de adicionar todos os itens. */
|
|
24
45
|
addAllItensLabel;
|
|
46
|
+
/** @description Rótulo do título da lista de selecionados. */
|
|
25
47
|
selectedItensLabel;
|
|
48
|
+
/** @description Placeholder da busca na lista de selecionados. */
|
|
26
49
|
selectedItensPlaceholder;
|
|
50
|
+
/** @description Rótulo do botão de remover itens selecionados. */
|
|
27
51
|
removeSelectedItemsLabel;
|
|
52
|
+
/** @description Rótulo do botão de remover todos os itens. */
|
|
28
53
|
removeAllItemsLabel;
|
|
54
|
+
/** @description Exibe checkbox nos itens das listas. @default false */
|
|
29
55
|
showCheckbox = false;
|
|
56
|
+
/** @description Propriedade usada para filtrar os itens das listas. @default '' */
|
|
30
57
|
filterBy = '';
|
|
58
|
+
/** @description Emitido quando a lista de selecionados muda. */
|
|
31
59
|
selectedItensChange = new EventEmitter();
|
|
60
|
+
/** @description Emitido quando a lista de disponíveis muda. */
|
|
32
61
|
itensToSelectChange = new EventEmitter();
|
|
33
62
|
availableItensFilter = '';
|
|
34
63
|
selectedItensFilter = '';
|
|
@@ -222,7 +251,9 @@ class PicklistComponent {
|
|
|
222
251
|
this.cdr.detectChanges();
|
|
223
252
|
}
|
|
224
253
|
getAllElementsByListId(listId) {
|
|
225
|
-
return listId === this.selectedItensId
|
|
254
|
+
return listId === this.selectedItensId
|
|
255
|
+
? this.selectedItensFilterUtil.rawSelectedItens
|
|
256
|
+
: this.itensToSelectFilterUtil.rawItensToSelect;
|
|
226
257
|
}
|
|
227
258
|
getOppositiveId(listId) {
|
|
228
259
|
return listId === this.selectedItensId ? this.itensToSelectId : this.selectedItensId;
|
|
@@ -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 } from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { pipe } from 'rxjs';\nimport { PickListItem } from './types';\nimport { randomHash } from '@seniorsistemas/angular-components/utils';\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\n\ninterface InternalPicklistItem<T = any> extends PickListItem<T> {\n invisible?: boolean;\n selected?: boolean;\n}\n\ntype CdkDragEvent = { source: CdkDrag<InternalPicklistItem<any>> };\n\n@Component({\n selector: 's-picklist',\n templateUrl: './picklist.component.html',\n styleUrls: ['./picklist.component.scss'],\n})\nexport class PicklistComponent implements AfterViewInit, OnChanges {\n @Input()\n public itensToSelect: PickListItem<any>[] = [];\n\n @Input()\n public selectedItens: PickListItem<any>[] = [];\n\n @Input()\n public availableItensLabel?: string;\n\n @Input()\n public availableItensPlaceholder?: string;\n\n @Input()\n public addSelectedItensLabel?: string;\n\n @Input()\n public addAllItensLabel?: string;\n\n @Input()\n public selectedItensLabel?: string;\n\n @Input()\n public selectedItensPlaceholder?: string;\n\n @Input()\n public removeSelectedItemsLabel?: string;\n\n @Input()\n public removeAllItemsLabel?: string;\n\n @Input()\n public showCheckbox = false;\n\n @Input()\n public filterBy = '';\n\n @Output()\n public selectedItensChange = new EventEmitter<any[]>();\n\n @Output()\n public itensToSelectChange = new EventEmitter<any[]>();\n\n public availableItensFilter = '';\n\n public selectedItensFilter = '';\n\n public itemToSelectTemplate: TemplateRef<any> | null = null;\n\n public itemSelectedTemplate: TemplateRef<any> | null = null;\n\n public itensToSelectFilterUtil: {\n rawItensToSelect: InternalPicklistItem[];\n filteredItensToSelect: InternalPicklistItem[];\n } = {\n rawItensToSelect: [],\n filteredItensToSelect: [],\n };\n\n selectedItensFilterUtil: {\n rawSelectedItens: InternalPicklistItem[];\n filteredSelectedItens: InternalPicklistItem[];\n } = {\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 _logErrorTemplate = true;\n @ContentChildren(TemplateDirective)\n private templates: QueryList<TemplateDirective> | null = null;\n\n constructor(private cdr: ChangeDetectorRef) { }\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 public ngOnChanges(changes: SimpleChanges): void {\n if (changes['itensToSelect']?.firstChange) {\n this.itensToSelectFilterUtil = {\n rawItensToSelect: this.itensToSelect,\n filteredItensToSelect: this.itensToSelect,\n };\n }\n\n if (changes['selectedItens']?.firstChange) {\n this.selectedItensFilterUtil = {\n filteredSelectedItens: this.selectedItens,\n rawSelectedItens: this.selectedItens,\n };\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 this.cdr.detectChanges();\n }\n\n remove(all = false) {\n const itens = filterEnabled(all ? this.selectedItensFilterUtil.rawSelectedItens : this.selectedItensMap);\n if (!itens.length) {\n return;\n }\n itens.forEach((itemRemove) => {\n this.itensToSelect.push(itemRemove);\n itemRemove.selected = false;\n this.selectedItensMap.delete(itemRemove);\n });\n this.selectedItens = this.selectedItens.filter((x) => !itens.includes(x));\n this.selectedItensFilterUtil.rawSelectedItens = this.selectedItens;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n this.cdr.detectChanges();\n }\n\n add(all = false) {\n const itens = filterEnabled(all ? this.itensToSelectFilterUtil.rawItensToSelect : this.selectedItensMap);\n if (!itens.length) {\n return;\n }\n itens.forEach((itemRemove) => {\n this.selectedItens.push(itemRemove);\n itemRemove.selected = false;\n this.selectedItensMap.delete(itemRemove);\n });\n this.itensToSelect = this.itensToSelect.filter((x) => !itens.includes(x));\n this.itensToSelectFilterUtil.rawItensToSelect = this.itensToSelect;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n this.cdr.detectChanges();\n }\n\n filterItensToSelect() {\n let searchTerm = this.availableItensFilter;\n searchTerm = searchTerm.trim();\n if (searchTerm) {\n this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect.filter((item) =>\n 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() {\n let searchTerm = this.selectedItensFilter;\n searchTerm = searchTerm.trim();\n if (searchTerm) {\n this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens.filter((item) =>\n 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, 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(target: HTMLInputElement) {\n const checked = target.checked;\n this._checkAllSelectedItensChange(checked, this.itensToSelectFilterUtil.filteredItensToSelect, this.itensToSelectId);\n }\n\n checkAllSelectedItensChange(target: HTMLInputElement) {\n const checked = target.checked;\n this._checkAllSelectedItensChange(checked, this.selectedItensFilterUtil.filteredSelectedItens, this.selectedItensId);\n }\n\n get disableSelectedItensCheckbox() {\n return filterEnabled(this.selectedItensFilterUtil.filteredSelectedItens).length === 0;\n }\n\n get disableItensToSelectCheckbox() {\n return filterEnabled(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 canAddItens() {\n return (this.itensToSelect as InternalPicklistItem[]).filter((x) => x?.selected).length > 0;\n }\n\n get canRemoveItens() {\n return (this.selectedItens as InternalPicklistItem[]).filter((x) => x?.selected).length > 0;\n }\n\n private _checkAllSelectedByList(list: InternalPicklistItem[]) {\n const _listItens = filterEnabled(list);\n if (!_listItens.length) {\n return false;\n } else {\n return _listItens.every((x) => x.selected);\n }\n }\n\n private _checkAllSelectedItensChange(checked: boolean, list: InternalPicklistItem[], listId: string) {\n this.unselectedItensByListId(listId === this.selectedItensId ? this.itensToSelectId : this.selectedItensId);\n filterEnabled(list).forEach((item) => {\n item.selected = checked;\n this.selectedItensMap.add(item);\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 ? this.selectedItensFilterUtil.rawSelectedItens : 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 = (list: PickListItem<any>[] | Set<InternalPicklistItem>): InternalPicklistItem[] => {\n const _list = list instanceof Set ? Array.from(list) : list;\n return _list.filter((x) => !x.disabled);\n};\n\nconst mapData = (list: PickListItem<any>[]) => {\n return list.map((x) => x.data);\n};\n\nconst parseValueEmit = pipe(filterEnabled, mapData);\n\nexport const parseItensPickList = <T>(array: T[], disabledFn?: (item: T) => boolean): PickListItem<T>[] => {\n return array.map((x) => {\n return {\n data: x,\n disabled: disabledFn ? disabledFn(x) : false,\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>\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 >\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 *ngTemplateOutlet=\"template; context: { item: item.data, selected: item.selected, disabled: item.disabled }\"></ng-container>\n </div>\n <ng-container *cdkDragPreview>\n <ng-container *ngTemplateOutlet=\"previewRender; context: { itens: selectedItensMap, template: template }\"></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>\n @if (showCheckbox) {\n <input\n class=\"input-checkbox\"\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"changeFn($event.target)\"\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) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\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 && showCheckbox) {\n <div class=\"picklist-filter\">\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\n }\n \"\n ></ng-container>\n @if (filterBy) {\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"availableItensFilter\"\n (ngModelChange)=\"filterItensToSelect()\"\n [placeholder]=\"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 }\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]=\"!canAddItens\"\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) {\n <ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableSelectedItensCheckbox,\n checked: selectedItensAllSelected,\n changeFn: checkAllSelectedItensChange.bind(this),\n }\n \"\n ></ng-container>\n </ng-container>\n }\n <span class=\"picklist-title\">\n {{ selectedItensLabel || 'platform.angular_components.selected-items' | translate }}\n </span>\n </div>\n <div\n class=\"picklist-filter\"\n *ngIf=\"filterBy && showCheckbox\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: { disabled: disableSelectedItensCheckbox, checked: selectedItensAllSelected, changeFn: checkAllSelectedItensChange.bind(this) }\n \"\n ></ng-container>\n @if (filterBy) {\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"selectedItensFilter\"\n (ngModelChange)=\"filterSelectedItens()\"\n [placeholder]=\"selectedItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\"\n />\n }\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n picklistItensRender;\n context: {\n id: selectedItensId,\n itens: selectedItensFilterUtil.filteredSelectedItens,\n template: itemSelectedTemplate,\n listConnectedTo: itensToSelectId,\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]=\"!canRemoveItens\"\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","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { PicklistComponent } from './picklist.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n\n\n@NgModule({\n declarations: [PicklistComponent],\n imports: [\n CommonModule,\n TranslateModule,\n DragDropModule,\n FormsModule,\n ButtonModule,\n ],\n exports: [PicklistComponent]\n})\nexport class PicklistModule { }\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 } from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { pipe } from 'rxjs';\nimport { PickListItem } from './types';\nimport { randomHash } from '@seniorsistemas/angular-components/utils';\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\n\ninterface InternalPicklistItem<T = any> extends PickListItem<T> {\n invisible?: boolean;\n selected?: boolean;\n}\n\ntype CdkDragEvent = { source: CdkDrag<InternalPicklistItem<any>> };\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 selector: 's-picklist',\n templateUrl: './picklist.component.html',\n styleUrls: ['./picklist.component.scss'],\n})\nexport class PicklistComponent implements AfterViewInit, OnChanges {\n /** @description Lista de itens disponíveis para seleção (coluna esquerda). @default [] */\n @Input()\n public itensToSelect: PickListItem<any>[] = [];\n\n /** @description Lista de itens já selecionados (coluna direita). @default [] */\n @Input()\n public selectedItens: PickListItem<any>[] = [];\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 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<any> | null = null;\n\n public itemSelectedTemplate: TemplateRef<any> | null = null;\n\n public itensToSelectFilterUtil: {\n rawItensToSelect: InternalPicklistItem[];\n filteredItensToSelect: InternalPicklistItem[];\n } = {\n rawItensToSelect: [],\n filteredItensToSelect: [],\n };\n\n selectedItensFilterUtil: {\n rawSelectedItens: InternalPicklistItem[];\n filteredSelectedItens: InternalPicklistItem[];\n } = {\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 _logErrorTemplate = true;\n @ContentChildren(TemplateDirective)\n private templates: QueryList<TemplateDirective> | null = null;\n\n constructor(private cdr: ChangeDetectorRef) {}\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 public ngOnChanges(changes: SimpleChanges): void {\n if (changes['itensToSelect']?.firstChange) {\n this.itensToSelectFilterUtil = {\n rawItensToSelect: this.itensToSelect,\n filteredItensToSelect: this.itensToSelect,\n };\n }\n\n if (changes['selectedItens']?.firstChange) {\n this.selectedItensFilterUtil = {\n filteredSelectedItens: this.selectedItens,\n rawSelectedItens: this.selectedItens,\n };\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 this.cdr.detectChanges();\n }\n\n remove(all = false) {\n const itens = filterEnabled(all ? this.selectedItensFilterUtil.rawSelectedItens : this.selectedItensMap);\n if (!itens.length) {\n return;\n }\n itens.forEach((itemRemove) => {\n this.itensToSelect.push(itemRemove);\n itemRemove.selected = false;\n this.selectedItensMap.delete(itemRemove);\n });\n this.selectedItens = this.selectedItens.filter((x) => !itens.includes(x));\n this.selectedItensFilterUtil.rawSelectedItens = this.selectedItens;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n this.cdr.detectChanges();\n }\n\n add(all = false) {\n const itens = filterEnabled(all ? this.itensToSelectFilterUtil.rawItensToSelect : this.selectedItensMap);\n if (!itens.length) {\n return;\n }\n itens.forEach((itemRemove) => {\n this.selectedItens.push(itemRemove);\n itemRemove.selected = false;\n this.selectedItensMap.delete(itemRemove);\n });\n this.itensToSelect = this.itensToSelect.filter((x) => !itens.includes(x));\n this.itensToSelectFilterUtil.rawItensToSelect = this.itensToSelect;\n this.filterSelectedItens();\n this.filterItensToSelect();\n this.emitData();\n this.cdr.detectChanges();\n }\n\n filterItensToSelect() {\n let searchTerm = this.availableItensFilter;\n searchTerm = searchTerm.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() {\n let searchTerm = this.selectedItensFilter;\n searchTerm = searchTerm.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, 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(target: HTMLInputElement) {\n const checked = target.checked;\n this._checkAllSelectedItensChange(\n checked,\n this.itensToSelectFilterUtil.filteredItensToSelect,\n this.itensToSelectId,\n );\n }\n\n checkAllSelectedItensChange(target: HTMLInputElement) {\n const checked = target.checked;\n this._checkAllSelectedItensChange(\n checked,\n this.selectedItensFilterUtil.filteredSelectedItens,\n this.selectedItensId,\n );\n }\n\n get disableSelectedItensCheckbox() {\n return filterEnabled(this.selectedItensFilterUtil.filteredSelectedItens).length === 0;\n }\n\n get disableItensToSelectCheckbox() {\n return filterEnabled(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 canAddItens() {\n return (this.itensToSelect as InternalPicklistItem[]).filter((x) => x?.selected).length > 0;\n }\n\n get canRemoveItens() {\n return (this.selectedItens as InternalPicklistItem[]).filter((x) => x?.selected).length > 0;\n }\n\n private _checkAllSelectedByList(list: InternalPicklistItem[]) {\n const _listItens = filterEnabled(list);\n if (!_listItens.length) {\n return false;\n } else {\n return _listItens.every((x) => x.selected);\n }\n }\n\n private _checkAllSelectedItensChange(checked: boolean, list: InternalPicklistItem[], listId: string) {\n this.unselectedItensByListId(listId === this.selectedItensId ? this.itensToSelectId : this.selectedItensId);\n filterEnabled(list).forEach((item) => {\n item.selected = checked;\n this.selectedItensMap.add(item);\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 = (list: PickListItem<any>[] | Set<InternalPicklistItem>): InternalPicklistItem[] => {\n const _list = list instanceof Set ? Array.from(list) : list;\n return _list.filter((x) => !x.disabled);\n};\n\nconst mapData = (list: PickListItem<any>[]) => {\n return list.map((x) => x.data);\n};\n\nconst parseValueEmit = pipe(filterEnabled, mapData);\n\nexport const parseItensPickList = <T>(array: T[], disabledFn?: (item: T) => boolean): PickListItem<T>[] => {\n return array.map((x) => {\n return {\n data: x,\n disabled: disabledFn ? disabledFn(x) : false,\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>\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 >\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 *ngTemplateOutlet=\"template; context: { item: item.data, selected: item.selected, disabled: item.disabled }\"></ng-container>\n </div>\n <ng-container *cdkDragPreview>\n <ng-container *ngTemplateOutlet=\"previewRender; context: { itens: selectedItensMap, template: template }\"></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>\n @if (showCheckbox) {\n <input\n class=\"input-checkbox\"\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"changeFn($event.target)\"\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) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\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 && showCheckbox) {\n <div class=\"picklist-filter\">\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\n }\n \"\n ></ng-container>\n @if (filterBy) {\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"availableItensFilter\"\n (ngModelChange)=\"filterItensToSelect()\"\n [placeholder]=\"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 }\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]=\"!canAddItens\"\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) {\n <ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableSelectedItensCheckbox,\n checked: selectedItensAllSelected,\n changeFn: checkAllSelectedItensChange.bind(this),\n }\n \"\n ></ng-container>\n </ng-container>\n }\n <span class=\"picklist-title\">\n {{ selectedItensLabel || 'platform.angular_components.selected-items' | translate }}\n </span>\n </div>\n <div\n class=\"picklist-filter\"\n *ngIf=\"filterBy && showCheckbox\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: { disabled: disableSelectedItensCheckbox, checked: selectedItensAllSelected, changeFn: checkAllSelectedItensChange.bind(this) }\n \"\n ></ng-container>\n @if (filterBy) {\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"selectedItensFilter\"\n (ngModelChange)=\"filterSelectedItens()\"\n [placeholder]=\"selectedItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\"\n />\n }\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n picklistItensRender;\n context: {\n id: selectedItensId,\n itens: selectedItensFilterUtil.filteredSelectedItens,\n template: itemSelectedTemplate,\n listConnectedTo: itensToSelectId,\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]=\"!canRemoveItens\"\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","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { PicklistComponent } from './picklist.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n\n\n@NgModule({\n declarations: [PicklistComponent],\n imports: [\n CommonModule,\n TranslateModule,\n DragDropModule,\n FormsModule,\n ButtonModule,\n ],\n exports: [PicklistComponent]\n})\nexport class PicklistModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -7,19 +7,18 @@ import * as i2 from '@ngx-translate/core';
|
|
|
7
7
|
import { TranslateModule } from '@ngx-translate/core';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* @description Componente de entrada de código PIN/OTP com campos individuais para cada dígito.
|
|
11
|
+
* Implementa {@link ControlValueAccessor} para integração nativa com Reactive Forms
|
|
12
|
+
* e Template-driven Forms do Angular.
|
|
11
13
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* -
|
|
17
|
-
* -
|
|
18
|
-
* -
|
|
19
|
-
* -
|
|
20
|
-
* - Error state display via the `invalid` input
|
|
21
|
-
* - Full accessibility support (ARIA labels, semantic roles)
|
|
22
|
-
* - Signal-based state management
|
|
14
|
+
* Funcionalidades:
|
|
15
|
+
* - Campos separados e navegáveis para cada dígito do código
|
|
16
|
+
* - Comprimento configurável via input `length`
|
|
17
|
+
* - Suporte a entrada numérica ou alfanumérica
|
|
18
|
+
* - Navegação por teclado (setas, backspace)
|
|
19
|
+
* - Suporte a colar (paste) com truncamento automático ao tamanho definido
|
|
20
|
+
* - Estado de erro via input `invalid`
|
|
21
|
+
* - Acessibilidade completa com ARIA labels e roles semânticos
|
|
23
22
|
*
|
|
24
23
|
* @example
|
|
25
24
|
* ```html
|
|
@@ -29,46 +28,42 @@ import { TranslateModule } from '@ngx-translate/core';
|
|
|
29
28
|
* [length]="6"
|
|
30
29
|
* [alphanumeric]="false"
|
|
31
30
|
* [invalid]="(form.get('code')?.invalid && form.get('code')?.dirty) || false"
|
|
32
|
-
* helpText="
|
|
31
|
+
* helpText="Digite seu código de 6 dígitos"
|
|
33
32
|
* (codeFilled)="onCodeFilled($event)">
|
|
34
33
|
* </s-pin-code-field>
|
|
35
34
|
* </form>
|
|
36
35
|
* ```
|
|
37
36
|
*
|
|
38
|
-
* @
|
|
39
|
-
* ```typescript
|
|
40
|
-
* form = this.fb.group({
|
|
41
|
-
* code: ['', [Validators.required]],
|
|
42
|
-
* });
|
|
43
|
-
* ```
|
|
37
|
+
* @category Inputs
|
|
44
38
|
*/
|
|
45
39
|
class PinCodeFieldComponent {
|
|
46
40
|
static LAST_INDEX_OFFSET = 1;
|
|
47
41
|
static EMPTY_VALUE = '';
|
|
48
42
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
43
|
+
* @description Número de campos de entrada (comprimento do código PIN).
|
|
44
|
+
* Deve ser ao menos 1.
|
|
51
45
|
*
|
|
52
46
|
* @default 6
|
|
53
47
|
*/
|
|
54
48
|
length = input(6);
|
|
55
49
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
50
|
+
* @description Permite entrada alfanumérica e de caracteres especiais.
|
|
51
|
+
* Quando `false`, aceita apenas dígitos numéricos (0–9).
|
|
58
52
|
*
|
|
59
53
|
* @default false
|
|
60
54
|
*/
|
|
61
55
|
alphanumeric = input(false);
|
|
62
56
|
/**
|
|
63
|
-
*
|
|
57
|
+
* @description Texto de ajuda exibido abaixo dos campos de entrada,
|
|
58
|
+
* fornecendo instruções adicionais ao usuário.
|
|
64
59
|
*
|
|
65
60
|
* @default ''
|
|
66
61
|
*/
|
|
67
62
|
helpText = input('');
|
|
68
63
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
64
|
+
* @description Controla a visualização do estado de erro do componente.
|
|
65
|
+
* Quando `true`, exibe borda vermelha nos campos de entrada.
|
|
66
|
+
* Normalmente vinculado ao estado `invalid && dirty` do `FormControl`.
|
|
72
67
|
*
|
|
73
68
|
* @example
|
|
74
69
|
* ```html
|
|
@@ -78,15 +73,15 @@ class PinCodeFieldComponent {
|
|
|
78
73
|
*/
|
|
79
74
|
invalid = input(false);
|
|
80
75
|
/**
|
|
81
|
-
*
|
|
82
|
-
*
|
|
76
|
+
* @description Controla o estado desabilitado do componente via two-way binding.
|
|
77
|
+
* Quando `true`, todos os campos ficam desabilitados e a interação do usuário é bloqueada.
|
|
83
78
|
*
|
|
84
79
|
* @default false
|
|
85
80
|
*/
|
|
86
81
|
disabled = model(false);
|
|
87
82
|
/**
|
|
88
|
-
*
|
|
89
|
-
*
|
|
83
|
+
* @description Emitido quando todos os campos do código PIN são preenchidos.
|
|
84
|
+
* Emite o código completo como string.
|
|
90
85
|
*
|
|
91
86
|
* @example
|
|
92
87
|
* ```html
|
|
@@ -95,8 +90,8 @@ class PinCodeFieldComponent {
|
|
|
95
90
|
*/
|
|
96
91
|
codeFilled = output();
|
|
97
92
|
/**
|
|
98
|
-
* Signal
|
|
99
|
-
*
|
|
93
|
+
* @description Signal com os valores atuais de cada campo de entrada.
|
|
94
|
+
* O comprimento do array corresponde ao valor do input `length`.
|
|
100
95
|
*/
|
|
101
96
|
inputs = signal([]);
|
|
102
97
|
/**
|