@seniorsistemas/angular-components 19.0.4 → 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-models.d.ts +11 -0
- package/breadcrumb/lib/breadcrumb/breadcrumb.component.d.ts +19 -23
- package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.d.ts +25 -0
- package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.d.ts +10 -0
- package/breadcrumb/public-api.d.ts +4 -2
- package/button/lib/button/button.component.d.ts +103 -1
- 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-models.mjs +2 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +39 -98
- package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +120 -0
- package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.mjs +19 -0
- package/esm2022/breadcrumb/public-api.mjs +4 -3
- package/esm2022/button/lib/button/button.component.mjs +107 -3
- 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 +21 -2
- package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +32 -2
- 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/grid/row/row.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +2 -2
- 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/bignumber/bignumber-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/button-field/button-field.component.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +2 -2
- 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 +61 -2
- package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +25 -5
- package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +49 -2
- package/esm2022/gantt/lib/gantt/gantt.component.mjs +32 -1
- package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +1 -1
- package/esm2022/global-search/lib/global-search/global-search.component.mjs +31 -2
- package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +40 -1
- package/esm2022/help-popover/lib/help-popover/help-popover/help-popover.component.mjs +1 -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 +41 -4
- 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/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
- package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +1 -1
- 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/components/kanban-column/kanban-column.component.mjs +1 -1
- package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +1 -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/lib/locale/fallback.mjs +4 -2
- 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 +21 -2
- 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/elements/field/object-card-field.component.mjs +1 -1
- package/esm2022/object-card/lib/object-card/elements/main/object-card-main.component.mjs +1 -1
- 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 +34 -3
- 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 +87 -3
- 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/lib/table/table-paging/table-paging.component.mjs +1 -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/components/tiered-menu/tiered-menu.component.mjs +65 -46
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +3 -3
- package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +35 -2
- 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 +93 -37
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs +106 -2
- 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 +20 -1
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +31 -1
- 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 +38 -13
- 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 +60 -1
- 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 +48 -1
- 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 +31 -2
- 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 +81 -25
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +39 -2
- 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 +17 -2
- 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 +30 -12
- 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 +20 -1
- 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 +25 -2
- 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 +33 -2
- 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 +86 -2
- 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 +16 -1
- 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 +99 -47
- 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/fesm2022/seniorsistemas-angular-components.mjs +3 -1
- package/fesm2022/seniorsistemas-angular-components.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 +7 -7
- 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/components/tiered-menu/tiered-menu.component.d.ts +3 -1
- package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +31 -1
- 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
- package/breadcrumb/lib/breadcrumb/breadcrumb.module.d.ts +0 -10
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.module.mjs +0 -20
|
@@ -14,15 +14,23 @@ var EnumSeverity;
|
|
|
14
14
|
EnumSeverity["Success"] = "success";
|
|
15
15
|
})(EnumSeverity || (EnumSeverity = {}));
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* @description Botão com borda que varia de estilo de acordo com a severidade informada.
|
|
19
|
+
* Utilizado internamente por outros componentes da biblioteca.
|
|
20
|
+
*
|
|
21
|
+
* @category Shared
|
|
22
|
+
*/
|
|
17
23
|
class BorderButtonComponent {
|
|
24
|
+
/** @description Nível de severidade que define a cor e estilo do botão. @default 'default' */
|
|
18
25
|
severity = 'default';
|
|
26
|
+
/** @description Opções de configuração do botão (rótulo, ação, etc.). */
|
|
19
27
|
options;
|
|
20
28
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BorderButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21
29
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BorderButtonComponent, selector: "s-border-button", inputs: { severity: "severity", options: "options" }, ngImport: i0, template: "<button\n class=\"border-button\"\n [ngClass]=\"{\n 'border-button--severity-default': severity === 'default',\n 'border-button--severity-info': severity === 'info',\n 'border-button--severity-warn': severity === 'warn',\n 'border-button--severity-error': severity === 'error',\n 'border-button--severity-success': severity === 'success',\n 'border-button--disabled': options?.disabled ? options?.disabled(severity) : false,\n }\"\n (click)=\"options?.onClick ? options?.onClick(severity) : null\"\n [sTooltip]=\"options?.tooltip?.(severity)\"\n tooltipPosition=\"left\"\n [disabled]=\"options?.disabled ? options?.disabled(severity) : false\"\n>\n <span class=\"border-button__label\">\n {{ options?.label ? options?.label(severity) : null }}\n </span>\n @if (options?.icon ? options?.icon(severity) : false) {\n <span class=\"border-button__icon {{ options?.icon(severity) }}\"></span>\n }\n</button>\n", styles: [".border-button{padding:0 8px;border:1px solid;border-radius:12px;height:23px;max-width:320px;display:flex;justify-content:center;align-items:center;cursor:pointer}.border-button__label{font-family:Open Sans,sans-serif;font-size:12px;line-height:150%;width:100%;display:block;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.border-button__icon{font-size:12px;color:#333;margin-left:8px}.border-button--severity-default{border-color:#ccc;background-color:#fff}.border-button--severity-info{border-color:#428bca;background-color:#d5e8ec;transition:background-color .5s ease,border-color .5s ease}.border-button--severity-info:enabled:hover{background-color:#9ecad4;cursor:pointer}.border-button--severity-info:enabled:active{transition:none;background-color:#67acbc;border-color:#67acbc}.border-button--severity-warn{border-color:#f8931f;background-color:#fce3ba;transition:background-color .5s ease,border-color .5s ease}.border-button--severity-warn:enabled:hover{background-color:#f8bf5e;cursor:pointer}.border-button--severity-warn:enabled:active{transition:none;background-color:#f5a319;border-color:#f5a319}.border-button--severity-error{border-color:#c13018;background-color:#fcd2d2;transition:background-color .5s ease,border-color .5s ease}.border-button--severity-error:enabled:hover{background-color:#f89696;cursor:pointer}.border-button--severity-error:enabled:active{transition:none;background-color:#f45b5b;border-color:#f45b5b}.border-button--severity-success{border-color:#0c9348;background-color:#e6ffb3;transition:background-color .5s ease,border-color .5s ease}.border-button--severity-success:enabled:hover{background-color:#c8ff5c;cursor:pointer}.border-button--severity-success:enabled:active{transition:none;background-color:#ade500;border-color:#ade500}.border-button--disabled:disabled:hover{cursor:default}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
|
|
22
30
|
}
|
|
23
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BorderButtonComponent, decorators: [{
|
|
24
32
|
type: Component,
|
|
25
|
-
args: [{ selector:
|
|
33
|
+
args: [{ selector: 's-border-button', template: "<button\n class=\"border-button\"\n [ngClass]=\"{\n 'border-button--severity-default': severity === 'default',\n 'border-button--severity-info': severity === 'info',\n 'border-button--severity-warn': severity === 'warn',\n 'border-button--severity-error': severity === 'error',\n 'border-button--severity-success': severity === 'success',\n 'border-button--disabled': options?.disabled ? options?.disabled(severity) : false,\n }\"\n (click)=\"options?.onClick ? options?.onClick(severity) : null\"\n [sTooltip]=\"options?.tooltip?.(severity)\"\n tooltipPosition=\"left\"\n [disabled]=\"options?.disabled ? options?.disabled(severity) : false\"\n>\n <span class=\"border-button__label\">\n {{ options?.label ? options?.label(severity) : null }}\n </span>\n @if (options?.icon ? options?.icon(severity) : false) {\n <span class=\"border-button__icon {{ options?.icon(severity) }}\"></span>\n }\n</button>\n", styles: [".border-button{padding:0 8px;border:1px solid;border-radius:12px;height:23px;max-width:320px;display:flex;justify-content:center;align-items:center;cursor:pointer}.border-button__label{font-family:Open Sans,sans-serif;font-size:12px;line-height:150%;width:100%;display:block;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.border-button__icon{font-size:12px;color:#333;margin-left:8px}.border-button--severity-default{border-color:#ccc;background-color:#fff}.border-button--severity-info{border-color:#428bca;background-color:#d5e8ec;transition:background-color .5s ease,border-color .5s ease}.border-button--severity-info:enabled:hover{background-color:#9ecad4;cursor:pointer}.border-button--severity-info:enabled:active{transition:none;background-color:#67acbc;border-color:#67acbc}.border-button--severity-warn{border-color:#f8931f;background-color:#fce3ba;transition:background-color .5s ease,border-color .5s ease}.border-button--severity-warn:enabled:hover{background-color:#f8bf5e;cursor:pointer}.border-button--severity-warn:enabled:active{transition:none;background-color:#f5a319;border-color:#f5a319}.border-button--severity-error{border-color:#c13018;background-color:#fcd2d2;transition:background-color .5s ease,border-color .5s ease}.border-button--severity-error:enabled:hover{background-color:#f89696;cursor:pointer}.border-button--severity-error:enabled:active{transition:none;background-color:#f45b5b;border-color:#f45b5b}.border-button--severity-success{border-color:#0c9348;background-color:#e6ffb3;transition:background-color .5s ease,border-color .5s ease}.border-button--severity-success:enabled:hover{background-color:#c8ff5c;cursor:pointer}.border-button--severity-success:enabled:active{transition:none;background-color:#ade500;border-color:#ade500}.border-button--disabled:disabled:hover{cursor:default}\n"] }]
|
|
26
34
|
}], propDecorators: { severity: [{
|
|
27
35
|
type: Input
|
|
28
36
|
}], options: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-shared.mjs","sources":["../../projects/angular-components/shared/src/lib/shared/models/severities.ts","../../projects/angular-components/shared/src/lib/shared/border-button/border-button.component.ts","../../projects/angular-components/shared/src/lib/shared/border-button/border-button.component.html","../../projects/angular-components/shared/src/lib/shared/border-button/border-button.module.ts","../../projects/angular-components/shared/src/lib/shared/helpers.ts","../../projects/angular-components/shared/src/seniorsistemas-angular-components-shared.ts"],"sourcesContent":["export type Severities = 'default' | 'info' | 'warn' | 'error' | 'success';\n\nexport enum EnumSeverity {\n Default = 'default',\n Info = 'info',\n Warn = 'warn',\n Error = 'error',\n Success = 'success',\n}\n","import { Component, Input } from
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-shared.mjs","sources":["../../projects/angular-components/shared/src/lib/shared/models/severities.ts","../../projects/angular-components/shared/src/lib/shared/border-button/border-button.component.ts","../../projects/angular-components/shared/src/lib/shared/border-button/border-button.component.html","../../projects/angular-components/shared/src/lib/shared/border-button/border-button.module.ts","../../projects/angular-components/shared/src/lib/shared/helpers.ts","../../projects/angular-components/shared/src/seniorsistemas-angular-components-shared.ts"],"sourcesContent":["export type Severities = 'default' | 'info' | 'warn' | 'error' | 'success';\n\nexport enum EnumSeverity {\n Default = 'default',\n Info = 'info',\n Warn = 'warn',\n Error = 'error',\n Success = 'success',\n}\n","import { Component, Input } from '@angular/core';\n\nimport { BorderButtonOptions } from '../models/border-button-options';\nimport { Severities } from '../models/severities';\n\n/**\n * @description Botão com borda que varia de estilo de acordo com a severidade informada.\n * Utilizado internamente por outros componentes da biblioteca.\n *\n * @category Shared\n */\n@Component({\n selector: 's-border-button',\n templateUrl: './border-button.component.html',\n styleUrls: ['./border-button.component.scss'],\n})\nexport class BorderButtonComponent {\n /** @description Nível de severidade que define a cor e estilo do botão. @default 'default' */\n @Input()\n public severity: Severities = 'default';\n\n /** @description Opções de configuração do botão (rótulo, ação, etc.). */\n @Input()\n public options?: BorderButtonOptions;\n}\n\n","<button\n class=\"border-button\"\n [ngClass]=\"{\n 'border-button--severity-default': severity === 'default',\n 'border-button--severity-info': severity === 'info',\n 'border-button--severity-warn': severity === 'warn',\n 'border-button--severity-error': severity === 'error',\n 'border-button--severity-success': severity === 'success',\n 'border-button--disabled': options?.disabled ? options?.disabled(severity) : false,\n }\"\n (click)=\"options?.onClick ? options?.onClick(severity) : null\"\n [sTooltip]=\"options?.tooltip?.(severity)\"\n tooltipPosition=\"left\"\n [disabled]=\"options?.disabled ? options?.disabled(severity) : false\"\n>\n <span class=\"border-button__label\">\n {{ options?.label ? options?.label(severity) : null }}\n </span>\n @if (options?.icon ? options?.icon(severity) : false) {\n <span class=\"border-button__icon {{ options?.icon(severity) }}\"></span>\n }\n</button>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { BorderButtonComponent } from \"./border-button.component\";\nimport { TooltipModule } from \"@seniorsistemas/angular-components/tooltip\";\n\n@NgModule({\n imports: [CommonModule, TooltipModule],\n declarations: [BorderButtonComponent],\n exports: [BorderButtonComponent]\n})\nexport class BorderButtonModule { }\n","/**\n * A decorator that can be used to disable functions based on a boolean property on the component.\n *\n * @param disabledField The name of the boolean property that will be used to determine if the decorated\n * function should be disabled. Defaults to 'disabled'.\n * @returns A decorator function that can be used to decorate a function.\n *\n * @example\n * class MyComponent {\n * disabled = true;\n *\n * @CheckDisabled()\n * onClick() {\n * console.log('Button was clicked');\n * }\n * }\n */\nexport function CheckDisabled(disabledField = 'disabled') {\n return function (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]) {\n const self = this as Record<string, any>;\n if (self[disabledField]) {\n return;\n }\n return originalMethod.apply(this, args);\n };\n\n return descriptor;\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -8,15 +8,68 @@ import { CommonModule } from '@angular/common';
|
|
|
8
8
|
import * as i2 from '@angular/cdk/a11y';
|
|
9
9
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* @description Componente de painel lateral deslizante (sidebar) que aparece sobre o conteúdo
|
|
13
|
+
* vindo do lado direito da tela. Suporta templates customizados para cabeçalho, corpo e rodapé
|
|
14
|
+
* via `sTemplate`, bloqueio de scroll automático e confirmação de fechamento.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```html
|
|
18
|
+
* <s-sidebar [(visible)]="sidebarOpen" header="Filtros" [closable]="true">
|
|
19
|
+
* <ng-template sTemplate="body">Conteúdo</ng-template>
|
|
20
|
+
* </s-sidebar>
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @category Overlay
|
|
24
|
+
*/
|
|
11
25
|
class SidebarComponent {
|
|
12
26
|
templates = null;
|
|
27
|
+
/**
|
|
28
|
+
* @description Controla a visibilidade da sidebar. Suporta two-way binding via `[(visible)]`.
|
|
29
|
+
*
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
13
32
|
visible = model(false);
|
|
33
|
+
/**
|
|
34
|
+
* @description Quando `true`, exibe o botão de fechar (X) no cabeçalho da sidebar.
|
|
35
|
+
*
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
14
38
|
closable = true;
|
|
39
|
+
/**
|
|
40
|
+
* @description Quando `true`, clicar no backdrop (área escurecida fora da sidebar) fecha o painel.
|
|
41
|
+
*
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
15
44
|
dismissible = true;
|
|
45
|
+
/**
|
|
46
|
+
* @description Quando `true`, pressionar a tecla Escape fecha a sidebar.
|
|
47
|
+
*
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
16
50
|
closeOnEscape = true;
|
|
51
|
+
/**
|
|
52
|
+
* @description Texto exibido no cabeçalho padrão da sidebar.
|
|
53
|
+
* Pode ser substituído por um template customizado via `sTemplate="header"`.
|
|
54
|
+
*/
|
|
17
55
|
header;
|
|
56
|
+
/**
|
|
57
|
+
* @description Quando `true`, aumenta a largura da sidebar para acomodar mais conteúdo.
|
|
58
|
+
*
|
|
59
|
+
* @default false
|
|
60
|
+
*/
|
|
18
61
|
largeSized = false;
|
|
62
|
+
/**
|
|
63
|
+
* @description Quando `true`, mantém o conteúdo da sidebar no DOM mesmo quando oculta,
|
|
64
|
+
* preservando o estado interno dos componentes filhos.
|
|
65
|
+
*
|
|
66
|
+
* @default false
|
|
67
|
+
*/
|
|
19
68
|
cache = false;
|
|
69
|
+
/**
|
|
70
|
+
* @description Função de confirmação chamada antes de fechar a sidebar.
|
|
71
|
+
* Quando retornar `false`, o fechamento é bloqueado. Útil para validar formulários não salvos.
|
|
72
|
+
*/
|
|
20
73
|
set registerConfirmClose(fn) {
|
|
21
74
|
this._confirmClose = fn;
|
|
22
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-sidebar.mjs","sources":["../../projects/angular-components/sidebar/src/lib/sidebar/sidebar.component.ts","../../projects/angular-components/sidebar/src/lib/sidebar/sidebar.component.html","../../projects/angular-components/sidebar/src/lib/sidebar/sidebar.module.ts","../../projects/angular-components/sidebar/src/seniorsistemas-angular-components-sidebar.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n effect,\n Input,\n model,\n OnDestroy,\n QueryList,\n TemplateRef,\n} from '@angular/core';\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\nimport { disableScroll, enableScroll } from '@seniorsistemas/angular-components/utils';\n\n@Component({\n selector: 's-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n host: {\n '(document:keydown.escape)': 'handleEscape()',\n },\n animations: [\n trigger('visibilityChanged', [\n transition(':enter', [\n style({ transform: 'translateX(100%)' }),\n animate('300ms', style({ transform: 'translateX(0)' })),\n ]),\n transition(':leave', [\n style({ transform: 'translateX(0)' }),\n animate('300ms', style({ transform: 'translateX(100%)' })),\n ]),\n ]),\n ],\n})\nexport class SidebarComponent implements AfterContentInit, OnDestroy {\n @ContentChildren(TemplateDirective)\n public templates: QueryList<TemplateDirective> | null = null;\n\n public visible = model<boolean>(false);\n\n @Input()\n public closable = true;\n\n @Input()\n public dismissible = true;\n\n @Input()\n public closeOnEscape = true;\n\n @Input()\n public header?: string;\n\n @Input()\n public largeSized = false;\n\n @Input()\n public cache = false;\n\n @Input()\n public set registerConfirmClose(fn: () => boolean) {\n this._confirmClose = fn;\n }\n\n public headerTemplate: TemplateRef<unknown> | null = null;\n public bodyTemplate: TemplateRef<unknown> | null = null;\n public footerTemplate: TemplateRef<unknown> | null = null;\n\n private _confirmClose = () => true;\n\n private readonly visibleEffect = effect(() => {\n const visible = this.visible();\n if (visible) {\n disableScroll();\n } else {\n enableScroll();\n }\n });\n\n public ngAfterContentInit(): void {\n this._getTemplates();\n }\n\n public ngOnDestroy(): void {\n this.visibleEffect.destroy();\n }\n\n public closeSidebar(): void {\n if (this._confirmClose()) {\n this.visible.set(false);\n }\n }\n\n public handleEscape(): void {\n if (this.closeOnEscape) {\n this.closeSidebar();\n }\n }\n\n private _getCustomTemplate(type: string): TemplateRef<any> | null {\n return this.templates?.find((template: TemplateDirective) => template.type === type)?.template ?? null;\n }\n\n private getHeaderTemplate(): TemplateRef<unknown> | null {\n return this._getCustomTemplate('header') ?? null;\n }\n\n private getBodyTemplate(): TemplateRef<unknown> | null {\n return this._getCustomTemplate('body') ?? null;\n }\n\n private getFooterTemplate(): TemplateRef<unknown> | null {\n return this._getCustomTemplate('footer') ?? null;\n }\n\n private _getTemplates(): void {\n this.headerTemplate = this.getHeaderTemplate();\n this.bodyTemplate = this.getBodyTemplate();\n this.footerTemplate = this.getFooterTemplate();\n }\n}\n","@if (visible()) {\n <div\n class=\"backdrop\"\n (click)=\"dismissible && closeSidebar()\"\n ></div>\n}\n\n@if (cache || visible()) {\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"visible()\"\n [@visibilityChanged]\n class=\"sidebar\"\n [class.sidebar--open]=\"visible()\"\n [class.sidebar--large-size]=\"largeSized\"\n >\n <div class=\"sidebar__header\">\n @if (headerTemplate) {\n <ng-template *ngTemplateOutlet=\"headerTemplate\"></ng-template>\n } @else {\n <span class=\"sidebar__header__title\">{{ header }}</span>\n }\n @if (closable) {\n <button\n class=\"sidebar__header__close fa-solid fa-xmark\"\n (click)=\"closeSidebar()\"\n ></button>\n }\n </div>\n <div class=\"sidebar__body\">\n @if (bodyTemplate) {\n <ng-template [ngTemplateOutlet]=\"bodyTemplate\"></ng-template>\n } @else {\n <ng-content></ng-content>\n }\n </div>\n @if (footerTemplate) {\n <div class=\"sidebar__footer\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </div>\n }\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\n\nimport { SidebarComponent } from './sidebar.component';\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\n\n@NgModule({\n imports: [CommonModule, A11yModule],\n declarations: [SidebarComponent],\n exports: [SidebarComponent, TemplateModule],\n})\nexport class SidebarModule {}\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-sidebar.mjs","sources":["../../projects/angular-components/sidebar/src/lib/sidebar/sidebar.component.ts","../../projects/angular-components/sidebar/src/lib/sidebar/sidebar.component.html","../../projects/angular-components/sidebar/src/lib/sidebar/sidebar.module.ts","../../projects/angular-components/sidebar/src/seniorsistemas-angular-components-sidebar.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n effect,\n Input,\n model,\n OnDestroy,\n QueryList,\n TemplateRef,\n} from '@angular/core';\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\nimport { disableScroll, enableScroll } from '@seniorsistemas/angular-components/utils';\n\n/**\n * @description Componente de painel lateral deslizante (sidebar) que aparece sobre o conteúdo\n * vindo do lado direito da tela. Suporta templates customizados para cabeçalho, corpo e rodapé\n * via `sTemplate`, bloqueio de scroll automático e confirmação de fechamento.\n *\n * @example\n * ```html\n * <s-sidebar [(visible)]=\"sidebarOpen\" header=\"Filtros\" [closable]=\"true\">\n * <ng-template sTemplate=\"body\">Conteúdo</ng-template>\n * </s-sidebar>\n * ```\n *\n * @category Overlay\n */\n@Component({\n selector: 's-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n host: {\n '(document:keydown.escape)': 'handleEscape()',\n },\n animations: [\n trigger('visibilityChanged', [\n transition(':enter', [\n style({ transform: 'translateX(100%)' }),\n animate('300ms', style({ transform: 'translateX(0)' })),\n ]),\n transition(':leave', [\n style({ transform: 'translateX(0)' }),\n animate('300ms', style({ transform: 'translateX(100%)' })),\n ]),\n ]),\n ],\n})\nexport class SidebarComponent implements AfterContentInit, OnDestroy {\n @ContentChildren(TemplateDirective)\n public templates: QueryList<TemplateDirective> | null = null;\n\n /**\n * @description Controla a visibilidade da sidebar. Suporta two-way binding via `[(visible)]`.\n *\n * @default false\n */\n public visible = model<boolean>(false);\n\n /**\n * @description Quando `true`, exibe o botão de fechar (X) no cabeçalho da sidebar.\n *\n * @default true\n */\n @Input()\n public closable = true;\n\n /**\n * @description Quando `true`, clicar no backdrop (área escurecida fora da sidebar) fecha o painel.\n *\n * @default true\n */\n @Input()\n public dismissible = true;\n\n /**\n * @description Quando `true`, pressionar a tecla Escape fecha a sidebar.\n *\n * @default true\n */\n @Input()\n public closeOnEscape = true;\n\n /**\n * @description Texto exibido no cabeçalho padrão da sidebar.\n * Pode ser substituído por um template customizado via `sTemplate=\"header\"`.\n */\n @Input()\n public header?: string;\n\n /**\n * @description Quando `true`, aumenta a largura da sidebar para acomodar mais conteúdo.\n *\n * @default false\n */\n @Input()\n public largeSized = false;\n\n /**\n * @description Quando `true`, mantém o conteúdo da sidebar no DOM mesmo quando oculta,\n * preservando o estado interno dos componentes filhos.\n *\n * @default false\n */\n @Input()\n public cache = false;\n\n /**\n * @description Função de confirmação chamada antes de fechar a sidebar.\n * Quando retornar `false`, o fechamento é bloqueado. Útil para validar formulários não salvos.\n */\n @Input()\n public set registerConfirmClose(fn: () => boolean) {\n this._confirmClose = fn;\n }\n\n public headerTemplate: TemplateRef<unknown> | null = null;\n public bodyTemplate: TemplateRef<unknown> | null = null;\n public footerTemplate: TemplateRef<unknown> | null = null;\n\n private _confirmClose = () => true;\n\n private readonly visibleEffect = effect(() => {\n const visible = this.visible();\n if (visible) {\n disableScroll();\n } else {\n enableScroll();\n }\n });\n\n public ngAfterContentInit(): void {\n this._getTemplates();\n }\n\n public ngOnDestroy(): void {\n this.visibleEffect.destroy();\n }\n\n public closeSidebar(): void {\n if (this._confirmClose()) {\n this.visible.set(false);\n }\n }\n\n public handleEscape(): void {\n if (this.closeOnEscape) {\n this.closeSidebar();\n }\n }\n\n private _getCustomTemplate(type: string): TemplateRef<any> | null {\n return this.templates?.find((template: TemplateDirective) => template.type === type)?.template ?? null;\n }\n\n private getHeaderTemplate(): TemplateRef<unknown> | null {\n return this._getCustomTemplate('header') ?? null;\n }\n\n private getBodyTemplate(): TemplateRef<unknown> | null {\n return this._getCustomTemplate('body') ?? null;\n }\n\n private getFooterTemplate(): TemplateRef<unknown> | null {\n return this._getCustomTemplate('footer') ?? null;\n }\n\n private _getTemplates(): void {\n this.headerTemplate = this.getHeaderTemplate();\n this.bodyTemplate = this.getBodyTemplate();\n this.footerTemplate = this.getFooterTemplate();\n }\n}\n\n","@if (visible()) {\n <div\n class=\"backdrop\"\n (click)=\"dismissible && closeSidebar()\"\n ></div>\n}\n\n@if (cache || visible()) {\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"visible()\"\n [@visibilityChanged]\n class=\"sidebar\"\n [class.sidebar--open]=\"visible()\"\n [class.sidebar--large-size]=\"largeSized\"\n >\n <div class=\"sidebar__header\">\n @if (headerTemplate) {\n <ng-template *ngTemplateOutlet=\"headerTemplate\"></ng-template>\n } @else {\n <span class=\"sidebar__header__title\">{{ header }}</span>\n }\n @if (closable) {\n <button\n class=\"sidebar__header__close fa-solid fa-xmark\"\n (click)=\"closeSidebar()\"\n ></button>\n }\n </div>\n <div class=\"sidebar__body\">\n @if (bodyTemplate) {\n <ng-template [ngTemplateOutlet]=\"bodyTemplate\"></ng-template>\n } @else {\n <ng-content></ng-content>\n }\n </div>\n @if (footerTemplate) {\n <div class=\"sidebar__footer\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </div>\n }\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\n\nimport { SidebarComponent } from './sidebar.component';\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\n\n@NgModule({\n imports: [CommonModule, A11yModule],\n declarations: [SidebarComponent],\n exports: [SidebarComponent, TemplateModule],\n})\nexport class SidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;AAeA;;;;;;;;;;;;;AAaG;MAqBU,gBAAgB,CAAA;IAElB,SAAS,GAAwC,IAAI,CAAC;AAE7D;;;;AAIG;AACI,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AAEvC;;;;AAIG;IAEI,QAAQ,GAAG,IAAI,CAAC;AAEvB;;;;AAIG;IAEI,WAAW,GAAG,IAAI,CAAC;AAE1B;;;;AAIG;IAEI,aAAa,GAAG,IAAI,CAAC;AAE5B;;;AAGG;AAEI,IAAA,MAAM,CAAU;AAEvB;;;;AAIG;IAEI,UAAU,GAAG,KAAK,CAAC;AAE1B;;;;;AAKG;IAEI,KAAK,GAAG,KAAK,CAAC;AAErB;;;AAGG;IACH,IACW,oBAAoB,CAAC,EAAiB,EAAA;AAC7C,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;IAEM,cAAc,GAAgC,IAAI,CAAC;IACnD,YAAY,GAAgC,IAAI,CAAC;IACjD,cAAc,GAAgC,IAAI,CAAC;AAElD,IAAA,aAAa,GAAG,MAAM,IAAI,CAAC;AAElB,IAAA,aAAa,GAAG,MAAM,CAAC,MAAK;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,OAAO,EAAE;AACT,YAAA,aAAa,EAAE,CAAC;SACnB;aAAM;AACH,YAAA,YAAY,EAAE,CAAC;SAClB;AACL,KAAC,CAAC,CAAC;IAEI,kBAAkB,GAAA;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;KAChC;IAEM,YAAY,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC3B;KACJ;IAEM,YAAY,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;KACJ;AAEO,IAAA,kBAAkB,CAAC,IAAY,EAAA;QACnC,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,QAA2B,KAAK,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC;KAC1G;IAEO,iBAAiB,GAAA;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;KACpD;IAEO,eAAe,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;KAClD;IAEO,iBAAiB,GAAA;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;KACpD;IAEO,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAClD;wGA3HQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EACR,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAiB,EClDtC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,k1CA2CA,EDPgB,MAAA,EAAA,CAAA,w7BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,mBAAmB,EAAE;gBACzB,UAAU,CAAC,QAAQ,EAAE;AACjB,oBAAA,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;oBACxC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;iBAC1D,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;AACjB,oBAAA,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;oBACrC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;iBAC7D,CAAC;aACL,CAAC;AACL,SAAA,EAAA,CAAA,CAAA;;4FAEQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBApB5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAGf,IAAA,EAAA;AACF,wBAAA,2BAA2B,EAAE,gBAAgB;qBAChD,EACW,UAAA,EAAA;wBACR,OAAO,CAAC,mBAAmB,EAAE;4BACzB,UAAU,CAAC,QAAQ,EAAE;AACjB,gCAAA,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;gCACxC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;6BAC1D,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;AACjB,gCAAA,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;gCACrC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;6BAC7D,CAAC;yBACL,CAAC;AACL,qBAAA,EAAA,QAAA,EAAA,k1CAAA,EAAA,MAAA,EAAA,CAAA,w7BAAA,CAAA,EAAA,CAAA;8BAIM,SAAS,EAAA,CAAA;sBADf,eAAe;uBAAC,iBAAiB,CAAA;gBAgB3B,QAAQ,EAAA,CAAA;sBADd,KAAK;gBASC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBASC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAQC,MAAM,EAAA,CAAA;sBADZ,KAAK;gBASC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAUC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAQK,oBAAoB,EAAA,CAAA;sBAD9B,KAAK;;;MEpGG,aAAa,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAb,aAAa,EAAA,YAAA,EAAA,CAHP,gBAAgB,CADrB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,UAAU,CAAA,EAAA,OAAA,EAAA,CAExB,gBAAgB,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;AAEjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EAJZ,OAAA,EAAA,CAAA,YAAY,EAAE,UAAU,EAEN,cAAc,CAAA,EAAA,CAAA,CAAA;;4FAEjC,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC;oBACnC,YAAY,EAAE,CAAC,gBAAgB,CAAC;AAChC,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,cAAc,CAAC;AAC9C,iBAAA,CAAA;;;ACXD;;AAEG;;;;"}
|
|
@@ -32,16 +32,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
32
32
|
}] });
|
|
33
33
|
|
|
34
34
|
const SMALL_DEVICE_BREAKPOINT = 420;
|
|
35
|
+
/**
|
|
36
|
+
* @description Componente de painel deslizante lateral que expande/colapsa ao clicar em um botão de toggle.
|
|
37
|
+
* Em telas pequenas (≤ 420px), o painel entra em modo overlay, sobrepondo o conteúdo.
|
|
38
|
+
* Substitui o seletor `s-slide-panel` (deprecado desde v20.0.0).
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```html
|
|
42
|
+
* <s-slide-in-bar [cache]="true" (panelOpened)="onOpen()">
|
|
43
|
+
* <p>Conteúdo lateral</p>
|
|
44
|
+
* </s-slide-in-bar>
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @category Overlay
|
|
48
|
+
*/
|
|
35
49
|
class SlideInBarComponent {
|
|
36
50
|
slidePanelService;
|
|
37
51
|
static nextId = 0;
|
|
52
|
+
/**
|
|
53
|
+
* @description Identificador único do painel. Gerado automaticamente se não informado.
|
|
54
|
+
* Usado internamente pelo `SlideInBarService` para comunicação entre painéis.
|
|
55
|
+
*/
|
|
38
56
|
id = `slide-panel-${++SlideInBarComponent.nextId}`;
|
|
39
|
-
|
|
40
|
-
|
|
57
|
+
/**
|
|
58
|
+
* @description Classe de ícone exibida no botão de abertura do painel.
|
|
59
|
+
*
|
|
60
|
+
* @default 'fas fa-chevron-right'
|
|
61
|
+
*/
|
|
62
|
+
openIcon = 'fas fa-chevron-right';
|
|
63
|
+
/**
|
|
64
|
+
* @description Classe de ícone exibida no botão de fechamento do painel.
|
|
65
|
+
*
|
|
66
|
+
* @default 'fas fa-chevron-left'
|
|
67
|
+
*/
|
|
68
|
+
closeIcon = 'fas fa-chevron-left';
|
|
69
|
+
/**
|
|
70
|
+
* @description Quando `true`, mantém o conteúdo do painel no DOM mesmo quando fechado,
|
|
71
|
+
* preservando o estado interno dos componentes filhos.
|
|
72
|
+
*
|
|
73
|
+
* @default false
|
|
74
|
+
*/
|
|
41
75
|
cache = false;
|
|
76
|
+
/**
|
|
77
|
+
* @description Quando `true`, o painel é iniciado já aberto.
|
|
78
|
+
*
|
|
79
|
+
* @default false
|
|
80
|
+
*/
|
|
42
81
|
createOpen = false;
|
|
82
|
+
/**
|
|
83
|
+
* @description Quando `true`, o painel não sobrepõe o conteúdo ao expandir,
|
|
84
|
+
* empurrando o layout adjacente.
|
|
85
|
+
*
|
|
86
|
+
* @default false
|
|
87
|
+
*/
|
|
43
88
|
noOverlap = false;
|
|
89
|
+
/**
|
|
90
|
+
* @description Emitido quando o painel é aberto pelo usuário.
|
|
91
|
+
*/
|
|
44
92
|
panelOpened = new EventEmitter();
|
|
93
|
+
/**
|
|
94
|
+
* @description Emitido quando o painel é fechado pelo usuário.
|
|
95
|
+
*/
|
|
45
96
|
panelClosed = new EventEmitter();
|
|
46
97
|
isOpen = false;
|
|
47
98
|
isSlideOver = false;
|
|
@@ -56,7 +107,8 @@ class SlideInBarComponent {
|
|
|
56
107
|
}
|
|
57
108
|
ngOnInit() {
|
|
58
109
|
this._checkOverBehavior();
|
|
59
|
-
this.slidePanelService
|
|
110
|
+
this.slidePanelService
|
|
111
|
+
.createSlidePanel(this.id)
|
|
60
112
|
.pipe(takeUntil(this._unsubscribe$))
|
|
61
113
|
.subscribe(() => {
|
|
62
114
|
this.isOpen = false;
|
|
@@ -113,26 +165,20 @@ class SlideInBarComponent {
|
|
|
113
165
|
},
|
|
114
166
|
},
|
|
115
167
|
], hostDirectives: [{ directive: i2.DeprecatedSelectorDirective }], ngImport: i0, template: "<div class=\"slide-in-bar\">\n <div\n class=\"slide-content\"\n [ngClass]=\"{\n 'slide-content--closed': !isOpen,\n 'slide-content--over': isSlideOver,\n 'slide-content--no-overlap': noOverlap,\n }\"\n >\n <div\n #mainContainer\n class=\"main-container\"\n >\n @if (cache) {\n <div\n class=\"content-container\"\n [@cacheAnimation]=\"isOpen\"\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cacheAnimation.start)=\"onContentAnimationStart()\"\n (@cacheAnimation.done)=\"onContentAnimationDone()\"\n >\n <ng-container [ngTemplateOutlet]=\"slideContentTemplate\"></ng-container>\n </div>\n } @else {\n @if (isOpen) {\n <div\n class=\"content-container\"\n @cachelessAnimation\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cachelessAnimation.start)=\"onContentAnimationStart()\"\n (@cachelessAnimation.done)=\"onContentAnimationDone()\"\n >\n <ng-container [ngTemplateOutlet]=\"slideContentTemplate\"></ng-container>\n </div>\n }\n }\n </div>\n <button\n class=\"button\"\n [ngClass]=\"isOpen ? closeIcon : openIcon\"\n (click)=\"onClickButton()\"\n ></button>\n </div>\n <div\n class=\"side-content\"\n >\n <ng-content select=\"[side-content]\"></ng-content>\n </div>\n</div>\n\n<ng-template #slideContentTemplate>\n <ng-content select=\"[slide-content]\"></ng-content>\n</ng-template>\n", styles: [".slide-in-bar{display:flex;width:100%}.slide-in-bar .slide-content{display:flex;position:relative}.slide-in-bar .slide-content .main-container{background-color:#eeebf2;display:flex;border:1px solid #ccc;overflow:hidden;position:relative}.slide-in-bar .slide-content .main-container .content-container{overflow-y:auto;overflow-x:hidden;padding:16px}.slide-in-bar .slide-content .button{align-items:center;background-color:#eeebf2;border:1px solid #ccc;border-left:none;border-radius:0 4px 4px 0;cursor:pointer;display:flex;font-family:\"Font Awesome 5 Pro\";font-size:16px;height:32px;justify-content:center;position:absolute;right:-32px;top:16px;width:32px;z-index:99}.slide-in-bar .slide-content--closed .main-container{border:none}.slide-in-bar .slide-content--over{position:absolute}.slide-in-bar .slide-content--no-overlap{margin-right:32px}.slide-in-bar .side-content{display:flex;height:max-content;overflow:auto;transition:width .1s linear}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
|
|
116
|
-
trigger(
|
|
117
|
-
transition(
|
|
118
|
-
|
|
119
|
-
animate("200ms linear", style({ width: "*" })),
|
|
120
|
-
]),
|
|
121
|
-
transition(":leave", [
|
|
122
|
-
style({ width: "*" }),
|
|
123
|
-
animate("200ms linear", style({ width: "0" })),
|
|
124
|
-
]),
|
|
168
|
+
trigger('cachelessAnimation', [
|
|
169
|
+
transition(':enter', [style({ width: '0' }), animate('200ms linear', style({ width: '*' }))]),
|
|
170
|
+
transition(':leave', [style({ width: '*' }), animate('200ms linear', style({ width: '0' }))]),
|
|
125
171
|
]),
|
|
126
|
-
trigger(
|
|
127
|
-
state(
|
|
128
|
-
state(
|
|
129
|
-
transition(
|
|
172
|
+
trigger('cacheAnimation', [
|
|
173
|
+
state('true', style({ width: '*', padding: '0 16px' })),
|
|
174
|
+
state('false', style({ width: '0px', padding: '0' })),
|
|
175
|
+
transition('* => *', animate('200ms')),
|
|
130
176
|
]),
|
|
131
177
|
] });
|
|
132
178
|
}
|
|
133
179
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SlideInBarComponent, decorators: [{
|
|
134
180
|
type: Component,
|
|
135
|
-
args: [{ selector:
|
|
181
|
+
args: [{ selector: 's-slide-in-bar, s-slide-panel', hostDirectives: [DeprecatedSelectorDirective], providers: [
|
|
136
182
|
{
|
|
137
183
|
provide: DEPRECATED_CONFIG,
|
|
138
184
|
useValue: {
|
|
@@ -142,20 +188,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
142
188
|
},
|
|
143
189
|
},
|
|
144
190
|
], animations: [
|
|
145
|
-
trigger(
|
|
146
|
-
transition(
|
|
147
|
-
|
|
148
|
-
animate("200ms linear", style({ width: "*" })),
|
|
149
|
-
]),
|
|
150
|
-
transition(":leave", [
|
|
151
|
-
style({ width: "*" }),
|
|
152
|
-
animate("200ms linear", style({ width: "0" })),
|
|
153
|
-
]),
|
|
191
|
+
trigger('cachelessAnimation', [
|
|
192
|
+
transition(':enter', [style({ width: '0' }), animate('200ms linear', style({ width: '*' }))]),
|
|
193
|
+
transition(':leave', [style({ width: '*' }), animate('200ms linear', style({ width: '0' }))]),
|
|
154
194
|
]),
|
|
155
|
-
trigger(
|
|
156
|
-
state(
|
|
157
|
-
state(
|
|
158
|
-
transition(
|
|
195
|
+
trigger('cacheAnimation', [
|
|
196
|
+
state('true', style({ width: '*', padding: '0 16px' })),
|
|
197
|
+
state('false', style({ width: '0px', padding: '0' })),
|
|
198
|
+
transition('* => *', animate('200ms')),
|
|
159
199
|
]),
|
|
160
200
|
], template: "<div class=\"slide-in-bar\">\n <div\n class=\"slide-content\"\n [ngClass]=\"{\n 'slide-content--closed': !isOpen,\n 'slide-content--over': isSlideOver,\n 'slide-content--no-overlap': noOverlap,\n }\"\n >\n <div\n #mainContainer\n class=\"main-container\"\n >\n @if (cache) {\n <div\n class=\"content-container\"\n [@cacheAnimation]=\"isOpen\"\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cacheAnimation.start)=\"onContentAnimationStart()\"\n (@cacheAnimation.done)=\"onContentAnimationDone()\"\n >\n <ng-container [ngTemplateOutlet]=\"slideContentTemplate\"></ng-container>\n </div>\n } @else {\n @if (isOpen) {\n <div\n class=\"content-container\"\n @cachelessAnimation\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cachelessAnimation.start)=\"onContentAnimationStart()\"\n (@cachelessAnimation.done)=\"onContentAnimationDone()\"\n >\n <ng-container [ngTemplateOutlet]=\"slideContentTemplate\"></ng-container>\n </div>\n }\n }\n </div>\n <button\n class=\"button\"\n [ngClass]=\"isOpen ? closeIcon : openIcon\"\n (click)=\"onClickButton()\"\n ></button>\n </div>\n <div\n class=\"side-content\"\n >\n <ng-content select=\"[side-content]\"></ng-content>\n </div>\n</div>\n\n<ng-template #slideContentTemplate>\n <ng-content select=\"[slide-content]\"></ng-content>\n</ng-template>\n", styles: [".slide-in-bar{display:flex;width:100%}.slide-in-bar .slide-content{display:flex;position:relative}.slide-in-bar .slide-content .main-container{background-color:#eeebf2;display:flex;border:1px solid #ccc;overflow:hidden;position:relative}.slide-in-bar .slide-content .main-container .content-container{overflow-y:auto;overflow-x:hidden;padding:16px}.slide-in-bar .slide-content .button{align-items:center;background-color:#eeebf2;border:1px solid #ccc;border-left:none;border-radius:0 4px 4px 0;cursor:pointer;display:flex;font-family:\"Font Awesome 5 Pro\";font-size:16px;height:32px;justify-content:center;position:absolute;right:-32px;top:16px;width:32px;z-index:99}.slide-in-bar .slide-content--closed .main-container{border:none}.slide-in-bar .slide-content--over{position:absolute}.slide-in-bar .slide-content--no-overlap{margin-right:32px}.slide-in-bar .side-content{display:flex;height:max-content;overflow:auto;transition:width .1s linear}\n"] }]
|
|
161
201
|
}], ctorParameters: () => [{ type: SlideInBarService }], propDecorators: { id: [{
|
|
@@ -176,7 +216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
176
216
|
type: Output
|
|
177
217
|
}], onResize: [{
|
|
178
218
|
type: HostListener,
|
|
179
|
-
args: [
|
|
219
|
+
args: ['window:resize']
|
|
180
220
|
}] } });
|
|
181
221
|
|
|
182
222
|
class SlideInBarModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-slide-in-bar.mjs","sources":["../../projects/angular-components/slide-in-bar/src/lib/slide-in-bar/slide-in-bar.service.ts","../../projects/angular-components/slide-in-bar/src/lib/slide-in-bar/slide-in-bar.component.ts","../../projects/angular-components/slide-in-bar/src/lib/slide-in-bar/slide-in-bar.component.html","../../projects/angular-components/slide-in-bar/src/lib/slide-in-bar/slide-in-bar.module.ts","../../projects/angular-components/slide-in-bar/src/seniorsistemas-angular-components-slide-in-bar.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\n\nimport { Observable, Subject } from \"rxjs\";\n\n@Injectable()\nexport class SlideInBarService {\n private modalCloseMap = new Map<string, Subject<void>>();\n\n public createSlidePanel(id: string): Observable<void> {\n const panelSubject = new Subject<void>();\n\n this.modalCloseMap.set(id, panelSubject);\n return panelSubject.asObservable();\n }\n\n public getModalCloseObservable(id: string): Observable<void> | null {\n return this.modalCloseMap.get(id)?.asObservable() ?? null;\n }\n\n public closeModal(id: string): void {\n const subject = this.modalCloseMap.get(id);\n if (subject) {\n subject.next();\n }\n }\n}","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport {\n AfterViewChecked,\n AfterViewInit,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output\n} from \"@angular/core\";\n\nimport { DEPRECATED_CONFIG } from '@seniorsistemas/angular-components/common/deprecated-selector';\nimport { DeprecatedSelectorDirective } from '@seniorsistemas/angular-components/common/deprecated-selector';\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { SlideInBarService } from \"./slide-in-bar.service\";\n\nconst SMALL_DEVICE_BREAKPOINT = 420;\n\n@Component({\n selector: \"s-slide-in-bar, s-slide-panel\",\n templateUrl: \"./slide-in-bar.component.html\",\n styleUrls: [\"./slide-in-bar.component.scss\"],\n hostDirectives: [DeprecatedSelectorDirective],\n providers: [\n {\n provide: DEPRECATED_CONFIG,\n useValue: {\n oldSelector: 's-slide-panel',\n newSelector: 's-slide-in-bar',\n removalVersion: '20.0.0',\n },\n },\n ],\n animations: [\n trigger(\"cachelessAnimation\", [\n transition(\":enter\", [\n style({ width: \"0\" }),\n animate(\"200ms linear\", style({ width: \"*\" })),\n ]),\n transition(\":leave\", [\n style({ width: \"*\" }),\n animate(\"200ms linear\", style({ width: \"0\" })),\n ]),\n ]),\n trigger(\"cacheAnimation\", [\n state(\"true\", style({ width: \"*\", padding: '0 16px' })),\n state(\"false\", style({ width: '0px', padding: '0' })),\n transition(\"* => *\", animate(\"200ms\")),\n ]),\n ],\n})\nexport class SlideInBarComponent implements OnInit, AfterViewChecked, AfterViewInit, OnDestroy {\n public static nextId = 0;\n\n @Input()\n public id = `slide-panel-${++SlideInBarComponent.nextId}`;\n\n @Input()\n public openIcon = \"fas fa-chevron-right\";\n\n @Input()\n public closeIcon = \"fas fa-chevron-left\";\n\n @Input()\n public cache = false;\n\n @Input()\n public createOpen = false;\n\n @Input()\n public noOverlap = false;\n\n @Output()\n public panelOpened = new EventEmitter<void>();\n\n @Output()\n public panelClosed = new EventEmitter<void>();\n\n public isOpen = false;\n public isSlideOver = false;\n public isAnimating = false;\n public isContentAnimationDisabled = true;\n\n private _unsubscribe$ = new Subject<void>();\n\n @HostListener(\"window:resize\")\n public onResize(): void {\n this._checkOverBehavior();\n }\n\n constructor(\n private readonly slidePanelService: SlideInBarService\n ) { }\n\n public ngOnInit(): void {\n this._checkOverBehavior();\n this.slidePanelService.createSlidePanel(this.id)\n .pipe(takeUntil(this._unsubscribe$))\n .subscribe(() => {\n this.isOpen = false;\n });\n }\n\n public ngAfterViewInit(): void {\n queueMicrotask(() => {\n if (this.createOpen) {\n this.isOpen = true;\n }\n });\n }\n\n public ngAfterViewChecked() {\n return;\n // to executed at a safe time prior to control returning to the browser's event loop\n // queueMicrotask(() => {\n // this._calculateSlideHeight();\n // this.isContentAnimationDisabled = false;\n // });\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n\n public onClickButton() {\n if (this.isAnimating) {\n return;\n }\n\n this.isOpen = !this.isOpen;\n\n if (this.isOpen) {\n this.panelOpened.emit();\n } else {\n this.panelClosed.emit();\n }\n }\n\n public onContentAnimationStart() {\n this.isAnimating = true;\n }\n\n public onContentAnimationDone() {\n this.isAnimating = false;\n }\n\n private _checkOverBehavior() {\n this.isSlideOver = window.innerWidth <= SMALL_DEVICE_BREAKPOINT;\n }\n}\n","<div class=\"slide-in-bar\">\n <div\n class=\"slide-content\"\n [ngClass]=\"{\n 'slide-content--closed': !isOpen,\n 'slide-content--over': isSlideOver,\n 'slide-content--no-overlap': noOverlap,\n }\"\n >\n <div\n #mainContainer\n class=\"main-container\"\n >\n @if (cache) {\n <div\n class=\"content-container\"\n [@cacheAnimation]=\"isOpen\"\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cacheAnimation.start)=\"onContentAnimationStart()\"\n (@cacheAnimation.done)=\"onContentAnimationDone()\"\n >\n <ng-container [ngTemplateOutlet]=\"slideContentTemplate\"></ng-container>\n </div>\n } @else {\n @if (isOpen) {\n <div\n class=\"content-container\"\n @cachelessAnimation\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cachelessAnimation.start)=\"onContentAnimationStart()\"\n (@cachelessAnimation.done)=\"onContentAnimationDone()\"\n >\n <ng-container [ngTemplateOutlet]=\"slideContentTemplate\"></ng-container>\n </div>\n }\n }\n </div>\n <button\n class=\"button\"\n [ngClass]=\"isOpen ? closeIcon : openIcon\"\n (click)=\"onClickButton()\"\n ></button>\n </div>\n <div\n class=\"side-content\"\n >\n <ng-content select=\"[side-content]\"></ng-content>\n </div>\n</div>\n\n<ng-template #slideContentTemplate>\n <ng-content select=\"[slide-content]\"></ng-content>\n</ng-template>\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { SlideInBarComponent } from \"./slide-in-bar.component\";\nimport { SlideInBarService } from \"./slide-in-bar.service\";\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SlideInBarComponent],\n exports: [SlideInBarComponent],\n providers: [SlideInBarService],\n})\nexport class SlideInBarModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SlideInBarService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-slide-in-bar.mjs","sources":["../../projects/angular-components/slide-in-bar/src/lib/slide-in-bar/slide-in-bar.service.ts","../../projects/angular-components/slide-in-bar/src/lib/slide-in-bar/slide-in-bar.component.ts","../../projects/angular-components/slide-in-bar/src/lib/slide-in-bar/slide-in-bar.component.html","../../projects/angular-components/slide-in-bar/src/lib/slide-in-bar/slide-in-bar.module.ts","../../projects/angular-components/slide-in-bar/src/seniorsistemas-angular-components-slide-in-bar.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\n\nimport { Observable, Subject } from \"rxjs\";\n\n@Injectable()\nexport class SlideInBarService {\n private modalCloseMap = new Map<string, Subject<void>>();\n\n public createSlidePanel(id: string): Observable<void> {\n const panelSubject = new Subject<void>();\n\n this.modalCloseMap.set(id, panelSubject);\n return panelSubject.asObservable();\n }\n\n public getModalCloseObservable(id: string): Observable<void> | null {\n return this.modalCloseMap.get(id)?.asObservable() ?? null;\n }\n\n public closeModal(id: string): void {\n const subject = this.modalCloseMap.get(id);\n if (subject) {\n subject.next();\n }\n }\n}","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n AfterViewChecked,\n AfterViewInit,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { DEPRECATED_CONFIG } from '@seniorsistemas/angular-components/common/deprecated-selector';\nimport { DeprecatedSelectorDirective } from '@seniorsistemas/angular-components/common/deprecated-selector';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SlideInBarService } from './slide-in-bar.service';\n\nconst SMALL_DEVICE_BREAKPOINT = 420;\n\n/**\n * @description Componente de painel deslizante lateral que expande/colapsa ao clicar em um botão de toggle.\n * Em telas pequenas (≤ 420px), o painel entra em modo overlay, sobrepondo o conteúdo.\n * Substitui o seletor `s-slide-panel` (deprecado desde v20.0.0).\n *\n * @example\n * ```html\n * <s-slide-in-bar [cache]=\"true\" (panelOpened)=\"onOpen()\">\n * <p>Conteúdo lateral</p>\n * </s-slide-in-bar>\n * ```\n *\n * @category Overlay\n */\n@Component({\n selector: 's-slide-in-bar, s-slide-panel',\n templateUrl: './slide-in-bar.component.html',\n styleUrls: ['./slide-in-bar.component.scss'],\n hostDirectives: [DeprecatedSelectorDirective],\n providers: [\n {\n provide: DEPRECATED_CONFIG,\n useValue: {\n oldSelector: 's-slide-panel',\n newSelector: 's-slide-in-bar',\n removalVersion: '20.0.0',\n },\n },\n ],\n animations: [\n trigger('cachelessAnimation', [\n transition(':enter', [style({ width: '0' }), animate('200ms linear', style({ width: '*' }))]),\n transition(':leave', [style({ width: '*' }), animate('200ms linear', style({ width: '0' }))]),\n ]),\n trigger('cacheAnimation', [\n state('true', style({ width: '*', padding: '0 16px' })),\n state('false', style({ width: '0px', padding: '0' })),\n transition('* => *', animate('200ms')),\n ]),\n ],\n})\nexport class SlideInBarComponent implements OnInit, AfterViewChecked, AfterViewInit, OnDestroy {\n public static nextId = 0;\n\n /**\n * @description Identificador único do painel. Gerado automaticamente se não informado.\n * Usado internamente pelo `SlideInBarService` para comunicação entre painéis.\n */\n @Input()\n public id = `slide-panel-${++SlideInBarComponent.nextId}`;\n\n /**\n * @description Classe de ícone exibida no botão de abertura do painel.\n *\n * @default 'fas fa-chevron-right'\n */\n @Input()\n public openIcon = 'fas fa-chevron-right';\n\n /**\n * @description Classe de ícone exibida no botão de fechamento do painel.\n *\n * @default 'fas fa-chevron-left'\n */\n @Input()\n public closeIcon = 'fas fa-chevron-left';\n\n /**\n * @description Quando `true`, mantém o conteúdo do painel no DOM mesmo quando fechado,\n * preservando o estado interno dos componentes filhos.\n *\n * @default false\n */\n @Input()\n public cache = false;\n\n /**\n * @description Quando `true`, o painel é iniciado já aberto.\n *\n * @default false\n */\n @Input()\n public createOpen = false;\n\n /**\n * @description Quando `true`, o painel não sobrepõe o conteúdo ao expandir,\n * empurrando o layout adjacente.\n *\n * @default false\n */\n @Input()\n public noOverlap = false;\n\n /**\n * @description Emitido quando o painel é aberto pelo usuário.\n */\n @Output()\n public panelOpened = new EventEmitter<void>();\n\n /**\n * @description Emitido quando o painel é fechado pelo usuário.\n */\n @Output()\n public panelClosed = new EventEmitter<void>();\n\n public isOpen = false;\n public isSlideOver = false;\n public isAnimating = false;\n public isContentAnimationDisabled = true;\n\n private _unsubscribe$ = new Subject<void>();\n\n @HostListener('window:resize')\n public onResize(): void {\n this._checkOverBehavior();\n }\n\n constructor(private readonly slidePanelService: SlideInBarService) {}\n\n public ngOnInit(): void {\n this._checkOverBehavior();\n this.slidePanelService\n .createSlidePanel(this.id)\n .pipe(takeUntil(this._unsubscribe$))\n .subscribe(() => {\n this.isOpen = false;\n });\n }\n\n public ngAfterViewInit(): void {\n queueMicrotask(() => {\n if (this.createOpen) {\n this.isOpen = true;\n }\n });\n }\n\n public ngAfterViewChecked() {\n return;\n // to executed at a safe time prior to control returning to the browser's event loop\n // queueMicrotask(() => {\n // this._calculateSlideHeight();\n // this.isContentAnimationDisabled = false;\n // });\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n\n public onClickButton() {\n if (this.isAnimating) {\n return;\n }\n\n this.isOpen = !this.isOpen;\n\n if (this.isOpen) {\n this.panelOpened.emit();\n } else {\n this.panelClosed.emit();\n }\n }\n\n public onContentAnimationStart() {\n this.isAnimating = true;\n }\n\n public onContentAnimationDone() {\n this.isAnimating = false;\n }\n\n private _checkOverBehavior() {\n this.isSlideOver = window.innerWidth <= SMALL_DEVICE_BREAKPOINT;\n }\n}\n\n","<div class=\"slide-in-bar\">\n <div\n class=\"slide-content\"\n [ngClass]=\"{\n 'slide-content--closed': !isOpen,\n 'slide-content--over': isSlideOver,\n 'slide-content--no-overlap': noOverlap,\n }\"\n >\n <div\n #mainContainer\n class=\"main-container\"\n >\n @if (cache) {\n <div\n class=\"content-container\"\n [@cacheAnimation]=\"isOpen\"\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cacheAnimation.start)=\"onContentAnimationStart()\"\n (@cacheAnimation.done)=\"onContentAnimationDone()\"\n >\n <ng-container [ngTemplateOutlet]=\"slideContentTemplate\"></ng-container>\n </div>\n } @else {\n @if (isOpen) {\n <div\n class=\"content-container\"\n @cachelessAnimation\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cachelessAnimation.start)=\"onContentAnimationStart()\"\n (@cachelessAnimation.done)=\"onContentAnimationDone()\"\n >\n <ng-container [ngTemplateOutlet]=\"slideContentTemplate\"></ng-container>\n </div>\n }\n }\n </div>\n <button\n class=\"button\"\n [ngClass]=\"isOpen ? closeIcon : openIcon\"\n (click)=\"onClickButton()\"\n ></button>\n </div>\n <div\n class=\"side-content\"\n >\n <ng-content select=\"[side-content]\"></ng-content>\n </div>\n</div>\n\n<ng-template #slideContentTemplate>\n <ng-content select=\"[slide-content]\"></ng-content>\n</ng-template>\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { SlideInBarComponent } from \"./slide-in-bar.component\";\nimport { SlideInBarService } from \"./slide-in-bar.service\";\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SlideInBarComponent],\n exports: [SlideInBarComponent],\n providers: [SlideInBarService],\n})\nexport class SlideInBarModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SlideInBarService"],"mappings":"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"}
|
|
@@ -6,20 +6,92 @@ import { CommonModule } from '@angular/common';
|
|
|
6
6
|
import * as i2 from '@seniorsistemas/angular-components/tooltip';
|
|
7
7
|
import { TooltipModule } from '@seniorsistemas/angular-components/tooltip';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* @description Componente de controle deslizante (slider) para seleção de valores numéricos
|
|
11
|
+
* dentro de um intervalo definido. Suporta modo simples (um valor) e modo de intervalo
|
|
12
|
+
* (dois valores: início e fim). Implementa {@link ControlValueAccessor} para integração
|
|
13
|
+
* com Reactive Forms e Template-driven Forms do Angular.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```html
|
|
17
|
+
* <!-- Slider simples -->
|
|
18
|
+
* <s-slider formControlName="volume" [min]="0" [max]="100" [step]="5" />
|
|
19
|
+
*
|
|
20
|
+
* <!-- Slider de intervalo -->
|
|
21
|
+
* <s-slider formControlName="faixa" [multiple]="true" [min]="0" [max]="1000" />
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @category Inputs
|
|
25
|
+
*/
|
|
9
26
|
class SliderComponent {
|
|
10
27
|
MAX_RANGE_VALUE = 100;
|
|
11
28
|
MIN_RANGE_VALUE = 0;
|
|
12
29
|
track;
|
|
30
|
+
/**
|
|
31
|
+
* @description Habilita o modo de intervalo, permitindo selecionar um valor mínimo e máximo.
|
|
32
|
+
* Quando `true`, o valor do componente é um array `[inicio, fim]`.
|
|
33
|
+
*
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
13
36
|
multiple = false;
|
|
37
|
+
/**
|
|
38
|
+
* @description Valor atual do slider. No modo simples é um número; no modo de
|
|
39
|
+
* intervalo (`multiple: true`) é um array `[inicio, fim]`.
|
|
40
|
+
*
|
|
41
|
+
* @default 0
|
|
42
|
+
*/
|
|
14
43
|
value = 0;
|
|
44
|
+
/**
|
|
45
|
+
* @description Emitido sempre que o valor do slider é alterado pelo usuário.
|
|
46
|
+
* Emite o novo valor (número ou array de dois números no modo de intervalo).
|
|
47
|
+
*/
|
|
15
48
|
valueChange = new EventEmitter();
|
|
49
|
+
/**
|
|
50
|
+
* @description Incremento aplicado a cada movimento do thumb do slider.
|
|
51
|
+
*
|
|
52
|
+
* @default 1
|
|
53
|
+
*/
|
|
16
54
|
step = 1;
|
|
55
|
+
/**
|
|
56
|
+
* @description Oculta visualmente o thumb (botão arrastável) do slider.
|
|
57
|
+
* Útil para visualizações onde apenas a faixa de progresso deve ser exibida.
|
|
58
|
+
*
|
|
59
|
+
* @default false
|
|
60
|
+
*/
|
|
17
61
|
hiddenThumb = false;
|
|
62
|
+
/**
|
|
63
|
+
* @description Desabilita a interação do usuário com o slider.
|
|
64
|
+
*
|
|
65
|
+
* @default false
|
|
66
|
+
*/
|
|
18
67
|
disabled = false;
|
|
68
|
+
/**
|
|
69
|
+
* @description Valor mínimo permitido no slider.
|
|
70
|
+
*
|
|
71
|
+
* @default 0
|
|
72
|
+
*/
|
|
19
73
|
min = this.MIN_RANGE_VALUE;
|
|
74
|
+
/**
|
|
75
|
+
* @description Valor máximo permitido no slider.
|
|
76
|
+
*
|
|
77
|
+
* @default 100
|
|
78
|
+
*/
|
|
20
79
|
max = this.MAX_RANGE_VALUE;
|
|
80
|
+
/**
|
|
81
|
+
* @description Label exibido abaixo ou ao lado do valor mínimo do slider.
|
|
82
|
+
* Útil para indicar semanticamente os extremos do intervalo.
|
|
83
|
+
*/
|
|
21
84
|
minValueLabel;
|
|
85
|
+
/**
|
|
86
|
+
* @description Label exibido abaixo ou ao lado do valor máximo do slider.
|
|
87
|
+
* Útil para indicar semanticamente os extremos do intervalo.
|
|
88
|
+
*/
|
|
22
89
|
maxValueLabel;
|
|
90
|
+
/**
|
|
91
|
+
* @description Índice de tabulação do elemento, controlando a ordem de foco via teclado.
|
|
92
|
+
*
|
|
93
|
+
* @default 0
|
|
94
|
+
*/
|
|
23
95
|
tabindex = 0;
|
|
24
96
|
startValue = 0;
|
|
25
97
|
endValue = 0;
|
|
@@ -112,7 +184,9 @@ class SliderComponent {
|
|
|
112
184
|
const _trackClickValid = this.needParseValues ? trackClickToUserRange : trackClickPercentage;
|
|
113
185
|
const _setEndValue = () => {
|
|
114
186
|
const _endValueUserValue = this.getValueFromMapByValue(this.endValue);
|
|
115
|
-
const _endValue = (this.needParseValues
|
|
187
|
+
const _endValue = (this.needParseValues
|
|
188
|
+
? this.mapRangeValuesForSlider.get(trackClickToUserRange)
|
|
189
|
+
: trackClickPercentage) ?? 0;
|
|
116
190
|
if (this.needParseValues && _endValueUserValue !== trackClickToUserRange) {
|
|
117
191
|
this.endValue = _endValue;
|
|
118
192
|
}
|
|
@@ -123,7 +197,9 @@ class SliderComponent {
|
|
|
123
197
|
const _setStartValue = () => {
|
|
124
198
|
const _startValueUserValue = this.getValueFromMapByValue(this.startValue);
|
|
125
199
|
if (this.needParseValues && _startValueUserValue !== trackClickToUserRange) {
|
|
126
|
-
const _startValue = (this.needParseValues
|
|
200
|
+
const _startValue = (this.needParseValues
|
|
201
|
+
? this.mapRangeValuesForSlider.get(trackClickToUserRange)
|
|
202
|
+
: trackClickPercentage) ?? 0;
|
|
127
203
|
this.startValue = _startValue;
|
|
128
204
|
}
|
|
129
205
|
else if (!this.needParseValues) {
|
|
@@ -262,10 +338,12 @@ class SliderComponent {
|
|
|
262
338
|
const positionInUserRange = this.getValueFromMapByValue(newPosition);
|
|
263
339
|
if (this.multiple) {
|
|
264
340
|
if (this.draggingThumb === 'start') {
|
|
265
|
-
this.startValue =
|
|
341
|
+
this.startValue =
|
|
342
|
+
(this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;
|
|
266
343
|
}
|
|
267
344
|
else if (this.draggingThumb === 'end') {
|
|
268
|
-
this.endValue =
|
|
345
|
+
this.endValue =
|
|
346
|
+
(this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;
|
|
269
347
|
}
|
|
270
348
|
this.setValue([this.startValue, this.endValue]);
|
|
271
349
|
const [start, end] = this.value;
|
|
@@ -281,11 +359,14 @@ class SliderComponent {
|
|
|
281
359
|
const _value = this.needParseValues ? positionInUserRange : newPosition;
|
|
282
360
|
const isAtSameValue = this.needParseValues ? positionInUserRange === this.value : false;
|
|
283
361
|
const hasStep = this.step !== 0;
|
|
284
|
-
const newValueIsValidByStep = hasStep
|
|
362
|
+
const newValueIsValidByStep = hasStep
|
|
363
|
+
? currentValue + this.step === _value || currentValue - this.step === _value
|
|
364
|
+
: false;
|
|
285
365
|
if (isAtSameValue && !newValueIsValidByStep) {
|
|
286
366
|
return;
|
|
287
367
|
}
|
|
288
|
-
this.endValue =
|
|
368
|
+
this.endValue =
|
|
369
|
+
(this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;
|
|
289
370
|
this.startValue = this.endValue;
|
|
290
371
|
this.setValue(this.endValue);
|
|
291
372
|
}
|
|
@@ -423,7 +504,7 @@ class SliderComponent {
|
|
|
423
504
|
getValueFromMapByValue(sliderValue) {
|
|
424
505
|
const mapToArray = Array.from(this.mapRangeValuesForSlider).map(([value, mapped]) => ({ value, mapped }));
|
|
425
506
|
const exactValue = mapToArray.find((x) => x.mapped == sliderValue);
|
|
426
|
-
const closest = mapToArray.reduce((prev, curr) =>
|
|
507
|
+
const closest = mapToArray.reduce((prev, curr) => Math.abs(curr.mapped - sliderValue) < Math.abs(prev.mapped - sliderValue) ? curr : prev);
|
|
427
508
|
return exactValue ? exactValue.value : closest.value;
|
|
428
509
|
}
|
|
429
510
|
/**
|
|
@@ -440,7 +521,7 @@ class SliderComponent {
|
|
|
440
521
|
return mapToArray[0].mapped;
|
|
441
522
|
}
|
|
442
523
|
const exactValue = mapToArray.find((x) => x.value == userValue);
|
|
443
|
-
const closestValue = mapToArray.reduce((prev, curr) =>
|
|
524
|
+
const closestValue = mapToArray.reduce((prev, curr) => Math.abs(curr.value - userValue) < Math.abs(prev.value - userValue) ? curr : prev);
|
|
444
525
|
const item = exactValue || closestValue;
|
|
445
526
|
const isFirstItem = mapToArray[0] === item;
|
|
446
527
|
const isLastItem = mapToArray[mapToArray.length - 1] === item;
|