@3ddv/software-division-components 2.0.0-beta.0 → 2.0.1
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/package.json +43 -67
- package/styles.css +2 -46
- package/.postcssrc.json +0 -5
- package/.storybook/main.ts +0 -78
- package/.storybook/manager-head.html +0 -1
- package/.storybook/preview.ts +0 -30
- package/.storybook/tsconfig.json +0 -25
- package/.storybook/typings.d.ts +0 -4
- package/CHANGELOG.md +0 -8
- package/LICENSE.md +0 -21
- package/backoffice/checkbox/checkbox.component.css +0 -193
- package/backoffice/checkbox/checkbox.component.html +0 -23
- package/backoffice/checkbox/checkbox.component.ts +0 -252
- package/backoffice/checkbox/index.ts +0 -1
- package/backoffice/checkbox/ng-package.json +0 -1
- package/backoffice/checkbox/public-api.ts +0 -1
- package/backoffice/checkbox/story/checkbox.stories.ts +0 -304
- package/backoffice/datepicker/datepicker.component.css +0 -262
- package/backoffice/datepicker/datepicker.component.html +0 -40
- package/backoffice/datepicker/datepicker.component.ts +0 -366
- package/backoffice/datepicker/index.ts +0 -1
- package/backoffice/datepicker/ng-package.json +0 -1
- package/backoffice/datepicker/public-api.ts +0 -2
- package/backoffice/datepicker/story/datepicker.stories.ts +0 -32
- package/backoffice/datepicker/ui/ui-calendar-helm/src/index.ts +0 -14
- package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar-multi.ts +0 -183
- package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar.ts +0 -171
- package/backoffice/datepicker/ui/ui-date-picker-helm/src/index.ts +0 -16
- package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.token.ts +0 -43
- package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.ts +0 -177
- package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.token.ts +0 -43
- package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.ts +0 -167
- package/backoffice/datepicker/ui/ui-icon-helm/src/index.ts +0 -11
- package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.token.ts +0 -20
- package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.ts +0 -35
- package/backoffice/datepicker/ui/ui-popover-helm/src/index.ts +0 -15
- package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-close.ts +0 -19
- package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-content.ts +0 -30
- package/backoffice/index.ts +0 -1
- package/backoffice/input/index.ts +0 -1
- package/backoffice/input/input.component.css +0 -319
- package/backoffice/input/input.component.html +0 -51
- package/backoffice/input/input.component.ts +0 -497
- package/backoffice/input/ng-package.json +0 -1
- package/backoffice/input/public-api.ts +0 -2
- package/backoffice/input/story/input.stories.ts +0 -243
- package/backoffice/radio/index.ts +0 -1
- package/backoffice/radio/ng-package.json +0 -1
- package/backoffice/radio/public-api.ts +0 -1
- package/backoffice/radio/radio.component.css +0 -143
- package/backoffice/radio/radio.component.html +0 -15
- package/backoffice/radio/radio.component.ts +0 -154
- package/backoffice/radio/story/radio.stories.ts +0 -287
- package/backoffice/table/_components/pagination/pagination.component.css +0 -117
- package/backoffice/table/_components/pagination/pagination.component.html +0 -55
- package/backoffice/table/_components/pagination/pagination.component.ts +0 -79
- package/backoffice/table/_components/selection-table-head/selection-table-head.component.css +0 -0
- package/backoffice/table/_components/selection-table-head/selection-table-head.component.html +0 -6
- package/backoffice/table/_components/selection-table-head/selection-table-head.component.ts +0 -36
- package/backoffice/table/_components/selection-table-row/selection-table-row.component.css +0 -0
- package/backoffice/table/_components/selection-table-row/selection-table-row.component.html +0 -5
- package/backoffice/table/_components/selection-table-row/selection-table-row.component.ts +0 -12
- package/backoffice/table/_components/sort-header-button/sort-header-button.component.css +0 -14
- package/backoffice/table/_components/sort-header-button/sort-header-button.component.html +0 -11
- package/backoffice/table/_components/sort-header-button/sort-header-button.component.ts +0 -55
- package/backoffice/table/index.ts +0 -1
- package/backoffice/table/ng-package.json +0 -1
- package/backoffice/table/public-api.ts +0 -6
- package/backoffice/table/story/table.stories.ts +0 -364
- package/backoffice/table/table.component.css +0 -172
- package/backoffice/table/table.component.html +0 -53
- package/backoffice/table/table.component.ts +0 -347
- package/backoffice/table/ui/ui-icon-helm/src/index.ts +0 -11
- package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.token.ts +0 -20
- package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.ts +0 -35
- package/backoffice/table/ui/ui-table-helm/src/index.ts +0 -13
- package/backoffice/table/ui/ui-table-helm/src/lib/hlm-table.ts +0 -220
- package/components.json +0 -3
- package/dist/styles.css +0 -2
- package/documentation.json +0 -30473
- package/dvm/cart/cart.component.css +0 -103
- package/dvm/cart/cart.component.html +0 -31
- package/dvm/cart/cart.component.ts +0 -49
- package/dvm/cart/cart.stories.ts +0 -370
- package/dvm/cart/cart.types.ts +0 -8
- package/dvm/cart/index.ts +0 -2
- package/dvm/cart/ng-package.json +0 -1
- package/dvm/cart/public-api.ts +0 -8
- package/dvm/cart/seat-list.component.css +0 -281
- package/dvm/cart/seat-list.component.html +0 -85
- package/dvm/cart/seat-list.component.ts +0 -76
- package/dvm/cart/seat-list.stories.ts +0 -337
- package/dvm/cart-item/cart-item.component.html +0 -1
- package/dvm/cart-item/cart-item.component.ts +0 -8
- package/dvm/cart-item/cart-item.service.ts +0 -8
- package/dvm/cart-item/cart.stories.ts +0 -31
- package/dvm/cart-item/index.ts +0 -1
- package/dvm/cart-item/ng-package.json +0 -1
- package/dvm/cart-item/public-api.ts +0 -6
- package/dvm/index.ts +0 -1
- package/dvm/legend/index.ts +0 -1
- package/dvm/legend/legend.component.css +0 -49
- package/dvm/legend/legend.component.html +0 -8
- package/dvm/legend/legend.component.ts +0 -41
- package/dvm/legend/legend.stories.ts +0 -16
- package/dvm/legend/ng-package.json +0 -1
- package/dvm/legend/public-api.ts +0 -7
- package/dvm/legend/types.ts +0 -6
- package/dvm/legend/ui/legend-elements/index.ts +0 -1
- package/dvm/legend/ui/legend-elements/legend-elements.component.css +0 -49
- package/dvm/legend/ui/legend-elements/legend-elements.component.html +0 -8
- package/dvm/legend/ui/legend-elements/legend-elements.component.ts +0 -41
- package/dvm/loader/index.ts +0 -1
- package/dvm/loader/loader.component.html +0 -1
- package/dvm/loader/loader.component.ts +0 -8
- package/dvm/loader/loader.service.ts +0 -8
- package/dvm/loader/loader.stories.ts +0 -31
- package/dvm/loader/ng-package.json +0 -1
- package/dvm/loader/public-api.ts +0 -6
- package/dvm/map-loader/index.ts +0 -1
- package/dvm/map-loader/map-loader.component.css +0 -91
- package/dvm/map-loader/map-loader.component.html +0 -23
- package/dvm/map-loader/map-loader.component.ts +0 -187
- package/dvm/map-loader/map-loader.stories.ts +0 -16
- package/dvm/map-loader/ng-package.json +0 -1
- package/dvm/map-loader/public-api.ts +0 -5
- package/dvm/neighbors/index.ts +0 -1
- package/dvm/neighbors/neighbors.component.css +0 -158
- package/dvm/neighbors/neighbors.component.html +0 -45
- package/dvm/neighbors/neighbors.component.ts +0 -218
- package/dvm/neighbors/ng-package.json +0 -1
- package/dvm/neighbors/public-api.ts +0 -2
- package/dvm/neighbors/story/arrow-left-black-icon.svg +0 -3
- package/dvm/neighbors/story/mock-data.ts +0 -15
- package/dvm/neighbors/story/neighbours.stories.css +0 -12
- package/dvm/neighbors/story/neighbours.stories.ts +0 -117
- package/dvm/neighbors/types.ts +0 -14
- package/dvm/popover/base-popover.component.ts +0 -70
- package/dvm/popover/index.ts +0 -1
- package/dvm/popover/ng-package.json +0 -1
- package/dvm/popover/popover.component.css +0 -227
- package/dvm/popover/popover.component.html +0 -27
- package/dvm/popover/popover.component.ts +0 -236
- package/dvm/popover/popover.config.ts +0 -30
- package/dvm/popover/popover.service.ts +0 -627
- package/dvm/popover/popover.stories.ts +0 -873
- package/dvm/popover/public-api.ts +0 -14
- package/dvm/popover/seat-popover/seat-popover.component.css +0 -89
- package/dvm/popover/seat-popover/seat-popover.component.html +0 -40
- package/dvm/popover/seat-popover/seat-popover.component.ts +0 -74
- package/dvm/popover/section-popover/section-popover.component.css +0 -157
- package/dvm/popover/section-popover/section-popover.component.html +0 -58
- package/dvm/popover/section-popover/section-popover.component.ts +0 -106
- package/dvm/popover/services/dvm-popover-positioner.service.ts +0 -73
- package/dvm/popover/services/popover-manager.service.ts +0 -88
- package/dvm/popover/transformers/base-popover-data-transformer.ts +0 -36
- package/dvm/popover/types.ts +0 -104
- package/dvm/stepper/index.ts +0 -1
- package/dvm/stepper/ng-package.json +0 -1
- package/dvm/stepper/public-api.ts +0 -5
- package/dvm/stepper/stepper.component.css +0 -142
- package/dvm/stepper/stepper.component.html +0 -9
- package/dvm/stepper/stepper.component.ts +0 -101
- package/dvm/stepper/types.ts +0 -6
- package/dvm/ticket-info-item/index.ts +0 -1
- package/dvm/ticket-info-item/ng-package.json +0 -1
- package/dvm/ticket-info-item/public-api.ts +0 -6
- package/dvm/ticket-info-item/ticket-info-item.component.html +0 -1
- package/dvm/ticket-info-item/ticket-info-item.component.ts +0 -8
- package/dvm/ticket-info-item/ticket-info-item.service.ts +0 -8
- package/dvm/ticket-info-item/ticket-info-item.stories.ts +0 -31
- package/generic/add-digital-wallet/add-digital-wallet.component.css +0 -76
- package/generic/add-digital-wallet/add-digital-wallet.component.html +0 -46
- package/generic/add-digital-wallet/add-digital-wallet.component.ts +0 -44
- package/generic/add-digital-wallet/index.ts +0 -1
- package/generic/add-digital-wallet/ng-package.json +0 -1
- package/generic/add-digital-wallet/public-api.ts +0 -1
- package/generic/braintree/braintree.component.css +0 -7
- package/generic/braintree/braintree.component.ts +0 -134
- package/generic/braintree/index.ts +0 -1
- package/generic/braintree/ng-package.json +0 -1
- package/generic/braintree/public-api.ts +0 -6
- package/generic/braintree/story/braintree.stories.css +0 -3
- package/generic/braintree/story/braintree.stories.ts +0 -27
- package/generic/braintree/types.ts +0 -28
- package/generic/button/button.component.css +0 -305
- package/generic/button/button.component.html +0 -10
- package/generic/button/button.component.ts +0 -353
- package/generic/button/index.ts +0 -1
- package/generic/button/ng-package.json +0 -1
- package/generic/button/public-api.ts +0 -6
- package/generic/button/story/button.stories.ts +0 -384
- package/generic/button/ui/ui-button-helm/src/index.ts +0 -10
- package/generic/button/ui/ui-button-helm/src/lib/hlm-button.token.ts +0 -22
- package/generic/button/ui/ui-button-helm/src/lib/hlm-button.ts +0 -62
- package/generic/carousel/carousel-item.component.ts +0 -15
- package/generic/carousel/carousel-item.directive.ts +0 -14
- package/generic/carousel/carousel.component.css +0 -90
- package/generic/carousel/carousel.component.html +0 -13
- package/generic/carousel/carousel.component.ts +0 -44
- package/generic/carousel/index.ts +0 -1
- package/generic/carousel/public-api.ts +0 -2
- package/generic/carousel/ui/ui-carousel-helm/src/index.ts +0 -29
- package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-content.ts +0 -23
- package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-item.ts +0 -25
- package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-next.ts +0 -58
- package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.ts +0 -61
- package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-slide-display.ts +0 -36
- package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel.ts +0 -105
- package/generic/dialog/dialog.component.css +0 -5
- package/generic/dialog/dialog.component.html +0 -3
- package/generic/dialog/dialog.component.ts +0 -20
- package/generic/dialog/dialog.stories.ts +0 -14
- package/generic/dialog/index.ts +0 -1
- package/generic/dialog/libs/ui-dialog-helm/src/index.ts +0 -37
- package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-close.ts +0 -20
- package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-content.ts +0 -56
- package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-description.ts +0 -17
- package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-footer.ts +0 -19
- package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-header.ts +0 -19
- package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-overlay.ts +0 -23
- package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-title.ts +0 -19
- package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.service.ts +0 -59
- package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.ts +0 -31
- package/generic/dialog/ng-package.json +0 -1
- package/generic/dialog/public-api.ts +0 -7
- package/generic/dialog/tsconfig.json +0 -7
- package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.css +0 -0
- package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.html +0 -1
- package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.ts +0 -17
- package/generic/dialog/ui/dialog-footer/dialog-footer.component.css +0 -0
- package/generic/dialog/ui/dialog-footer/dialog-footer.component.html +0 -3
- package/generic/dialog/ui/dialog-footer/dialog-footer.component.ts +0 -11
- package/generic/dialog/ui/dialog-header/dialog-header.component.css +0 -0
- package/generic/dialog/ui/dialog-header/dialog-header.component.html +0 -8
- package/generic/dialog/ui/dialog-header/dialog-header.component.ts +0 -18
- package/generic/drawer/drawer.component.html +0 -1
- package/generic/drawer/drawer.component.ts +0 -8
- package/generic/drawer/drawer.service.ts +0 -8
- package/generic/drawer/drawer.stories.ts +0 -31
- package/generic/drawer/index.ts +0 -1
- package/generic/drawer/ng-package.json +0 -1
- package/generic/drawer/public-api.ts +0 -6
- package/generic/icon/icon.component.css +0 -7
- package/generic/icon/icon.component.html +0 -3
- package/generic/icon/icon.component.ts +0 -86
- package/generic/icon/icon.stories.ts +0 -16
- package/generic/icon/index.ts +0 -1
- package/generic/icon/lib/ui-icon-helm/src/index.ts +0 -11
- package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.ts +0 -20
- package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.ts +0 -36
- package/generic/icon/ng-package.json +0 -1
- package/generic/icon/public-api.ts +0 -6
- package/generic/icon/tsconfig.json +0 -7
- package/generic/index.ts +0 -1
- package/generic/select/index.ts +0 -1
- package/generic/select/lib/hlm-select-content.ts +0 -29
- package/generic/select/lib/hlm-select-group.ts +0 -17
- package/generic/select/lib/hlm-select-label.ts +0 -26
- package/generic/select/lib/hlm-select-option.ts +0 -37
- package/generic/select/lib/hlm-select-scroll-down.ts +0 -24
- package/generic/select/lib/hlm-select-scroll-up.ts +0 -23
- package/generic/select/lib/hlm-select-trigger.ts +0 -53
- package/generic/select/lib/hlm-select-value.ts +0 -17
- package/generic/select/lib/hlm-select.ts +0 -15
- package/generic/select/lib/index.ts +0 -38
- package/generic/select/ng-package.json +0 -1
- package/generic/select/public-api.ts +0 -3
- package/generic/select/select.component.css +0 -65
- package/generic/select/select.component.html +0 -19
- package/generic/select/select.component.ts +0 -25
- package/generic/select/types.ts +0 -4
- package/ng-package.json +0 -10
- package/public/3ddv-logo.jpg +0 -0
- package/public/neighbours-after.png +0 -0
- package/public/neighbours-before.png +0 -0
- package/shared/apply-theme-variables/apply-theme-variables.ts +0 -35
- package/shared/apply-theme-variables/index.ts +0 -1
- package/shared/format-value.pipe.ts +0 -23
- package/shared/index.ts +0 -1
- package/shared/lib-provider/config-token.ts +0 -4
- package/shared/lib-provider/index.ts +0 -1
- package/shared/lib-provider/provide-sdc.ts +0 -24
- package/shared/lib-provider/public-api.ts +0 -1
- package/shared/ng-package.json +0 -1
- package/shared/public-api.ts +0 -6
- package/shared/screen-observer/index.ts +0 -2
- package/shared/screen-observer/provide-screen-observer.ts +0 -17
- package/shared/screen-observer/screen-observer.ts +0 -56
- package/shared/screen-observer/sizable-base.ts +0 -70
- package/shared/theme-provider/generic-theme.ts +0 -1
- package/shared/theme-provider/index.ts +0 -1
- package/shared/theme-provider/public-api.ts +0 -1
- package/shared/theme-provider/theme-provider.directive.ts +0 -17
- package/shared/themes/sdc.css +0 -153
- package/shared/types.ts +0 -18
- package/src/private-exports.ts +0 -1
- package/src/public-api.ts +0 -20
- package/tsconfig.json +0 -50
- package/tsconfig.lib.prod.json +0 -6
- package/tsconfig.spec.json +0 -15
- package/tsconfig.temp.json +0 -1
- package/utils/index.ts +0 -1
- package/utils/ng-package.json +0 -1
- package/utils/public-api.ts +0 -1
- package/utils/validate-styles-for-component.ts +0 -39
- /package/{dist/README.md → README.md} +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-checkbox.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-checkbox.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-datepicker.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-datepicker.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-input.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-input.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-radio.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-radio.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-table.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-table.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart-item.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart-item.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-legend.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-legend.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-loader.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-loader.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-map-loader.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-map-loader.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-neighbors.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-neighbors.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-popover.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-popover.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-stepper.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-stepper.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-ticket-info-item.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-ticket-info-item.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-add-digital-wallet.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-add-digital-wallet.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-braintree.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-braintree.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-button.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-button.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-dialog.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-dialog.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-drawer.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-drawer.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-icon.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-icon.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-select.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-select.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-shared.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-shared.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-utils.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-utils.mjs.map +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components.mjs.map +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-backoffice-checkbox.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-backoffice-datepicker.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-backoffice-input.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-backoffice-radio.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-backoffice-table.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-dvm-cart-item.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-dvm-cart.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-dvm-legend.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-dvm-loader.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-dvm-map-loader.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-dvm-neighbors.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-dvm-popover.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-dvm-stepper.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-dvm-ticket-info-item.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-generic-add-digital-wallet.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-generic-braintree.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-generic-button.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-generic-dialog.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-generic-drawer.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-generic-icon.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-generic-select.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-shared.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components-utils.d.ts +0 -0
- /package/{dist/types → types}/3ddv-software-division-components.d.ts +0 -0
|
@@ -1,497 +0,0 @@
|
|
|
1
|
-
import { ThemeClass } from '@3ddv/software-division-components/shared';
|
|
2
|
-
import { Component, computed, effect, EffectRef, input, OnDestroy, OnInit, output, signal } from '@angular/core';
|
|
3
|
-
import {
|
|
4
|
-
AbstractControl,
|
|
5
|
-
FormControl,
|
|
6
|
-
FormSubmittedEvent,
|
|
7
|
-
ReactiveFormsModule,
|
|
8
|
-
ValidationErrors,
|
|
9
|
-
} from '@angular/forms';
|
|
10
|
-
import { Subject, Subscription } from 'rxjs';
|
|
11
|
-
import { takeUntil } from 'rxjs/operators';
|
|
12
|
-
|
|
13
|
-
export type InputStyleClasses = ReturnType<(typeof InputComponent.prototype)['styleClass']>;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* A customizable input component built on the native input element.
|
|
17
|
-
*
|
|
18
|
-
* This component supports various configurations and exposes all native input functionality.
|
|
19
|
-
* All HTML input attributes and events are automatically forwarded to the inner input element.
|
|
20
|
-
*
|
|
21
|
-
* @since 1.0.0-alpha.1
|
|
22
|
-
*/
|
|
23
|
-
@Component({
|
|
24
|
-
standalone: true,
|
|
25
|
-
selector: 'sdc-input',
|
|
26
|
-
styleUrls: ['./input.component.css'],
|
|
27
|
-
templateUrl: './input.component.html',
|
|
28
|
-
imports: [ReactiveFormsModule],
|
|
29
|
-
})
|
|
30
|
-
export class InputComponent implements OnInit, OnDestroy {
|
|
31
|
-
private readonly allowedVariants = [
|
|
32
|
-
'variant-primary',
|
|
33
|
-
'variant-secondary',
|
|
34
|
-
'variant-alternative',
|
|
35
|
-
'variant-success',
|
|
36
|
-
'variant-warning',
|
|
37
|
-
'variant-danger',
|
|
38
|
-
] as const;
|
|
39
|
-
private readonly allowedSizes = ['size-sm', 'size-md', 'size-lg', 'size-xl'] as const;
|
|
40
|
-
private readonly allowedRadius = [
|
|
41
|
-
'radius-default',
|
|
42
|
-
'radius-sm',
|
|
43
|
-
'radius-md',
|
|
44
|
-
'radius-lg',
|
|
45
|
-
'radius-xl',
|
|
46
|
-
'radius-2xl',
|
|
47
|
-
'radius-full',
|
|
48
|
-
] as const;
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* The current theme applied to the component.
|
|
52
|
-
*/
|
|
53
|
-
public readonly theme = input<ThemeClass>('theme-sdc');
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Predefined styles to apply to the component.
|
|
57
|
-
* Can be a single class or multiple classes from different categories.
|
|
58
|
-
*/
|
|
59
|
-
public readonly styleClass = input<
|
|
60
|
-
((typeof this.allowedVariants)[number] | (typeof this.allowedSizes)[number] | (typeof this.allowedRadius)[number])[]
|
|
61
|
-
>([]);
|
|
62
|
-
|
|
63
|
-
// Computed signal that validates and filters the styleClass input
|
|
64
|
-
private readonly _validatedStyleClass = computed(() => {
|
|
65
|
-
const value = this.styleClass();
|
|
66
|
-
|
|
67
|
-
if (!Array.isArray(value)) {
|
|
68
|
-
return [];
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const validValues = value.filter(style => {
|
|
72
|
-
return (
|
|
73
|
-
(this.allowedVariants as readonly string[]).includes(style) ||
|
|
74
|
-
(this.allowedSizes as readonly string[]).includes(style) ||
|
|
75
|
-
(this.allowedRadius as readonly string[]).includes(style)
|
|
76
|
-
);
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
const invalidValues = value.filter(style => {
|
|
80
|
-
return (
|
|
81
|
-
!(this.allowedVariants as readonly string[]).includes(style) &&
|
|
82
|
-
!(this.allowedSizes as readonly string[]).includes(style) &&
|
|
83
|
-
!(this.allowedRadius as readonly string[]).includes(style)
|
|
84
|
-
);
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
if (invalidValues.length > 0) {
|
|
88
|
-
throw new Error(
|
|
89
|
-
`InputComponent: Invalid styleClass values ignored: ${invalidValues.join(', ')}. Allowed values: ${[
|
|
90
|
-
...this.allowedVariants,
|
|
91
|
-
...this.allowedSizes,
|
|
92
|
-
...this.allowedRadius,
|
|
93
|
-
].join(', ')}`
|
|
94
|
-
);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return validValues;
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Additional CSS classes to apply to the component.
|
|
102
|
-
*/
|
|
103
|
-
public readonly className = input<string>('');
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* The label text to display above or to the left of the input.
|
|
107
|
-
* Only visible when a value is provided.
|
|
108
|
-
*/
|
|
109
|
-
public readonly label = input<string>('');
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* The position of the label relative to the input.
|
|
113
|
-
* 'top' places the label above the input, 'left' places it to the left.
|
|
114
|
-
*/
|
|
115
|
-
public readonly labelPosition = input<'top' | 'left'>('top');
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Whether the component is disabled.
|
|
119
|
-
*/
|
|
120
|
-
public readonly disabled = input<boolean>(false);
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* The type of the input element.
|
|
124
|
-
*/
|
|
125
|
-
public readonly type = input<string>('text');
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* The placeholder text for the input.
|
|
129
|
-
*/
|
|
130
|
-
public readonly placeholder = input<string>('');
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* The hint text for the input.
|
|
134
|
-
*/
|
|
135
|
-
public readonly hint = input<string>('');
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* The name of the form control.
|
|
139
|
-
*/
|
|
140
|
-
public readonly name = input<string>('');
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Whether the input is a textarea.
|
|
144
|
-
*/
|
|
145
|
-
public readonly isTextarea = input<boolean>(false);
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* The number of rows for the textarea.
|
|
149
|
-
*/
|
|
150
|
-
public readonly textareaRows = input<number>(1);
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* The number of columns for the textarea.
|
|
154
|
-
*/
|
|
155
|
-
public readonly textareaCols = input<number>(1);
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Whether the textarea is resizable.
|
|
159
|
-
*/
|
|
160
|
-
public readonly textareaResize = input<'none' | 'both' | 'horizontal' | 'vertical'>('vertical');
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Custom error message to override the validator's error message.
|
|
164
|
-
*/
|
|
165
|
-
public readonly errorMessage = input<string>('');
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Controls when errors are displayed.
|
|
169
|
-
* - 'after-submit': Show errors only after form submission (default)
|
|
170
|
-
* - 'always': Show errors immediately when validation fails
|
|
171
|
-
*/
|
|
172
|
-
public readonly errorDisplayMode = input<'always' | 'after-submit'>('after-submit');
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* The FormControl instance to bind to this input.
|
|
176
|
-
* This allows the component to access form state without circular dependencies.
|
|
177
|
-
*/
|
|
178
|
-
public readonly control = input<AbstractControl<string | null> | FormControl | null>(null);
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* The state of the form control.
|
|
182
|
-
*/
|
|
183
|
-
public readonly controlState = signal<{
|
|
184
|
-
invalid: boolean;
|
|
185
|
-
touched: boolean;
|
|
186
|
-
dirty: boolean;
|
|
187
|
-
errors: ValidationErrors | null;
|
|
188
|
-
value: string;
|
|
189
|
-
isFormSubmitted: boolean;
|
|
190
|
-
}>({ invalid: false, touched: false, dirty: false, errors: null, value: '', isFormSubmitted: false });
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Event emitted when the component receives focus.
|
|
194
|
-
*/
|
|
195
|
-
public readonly onFocus = output<FocusEvent>();
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Event emitted when the component loses focus.
|
|
199
|
-
*/
|
|
200
|
-
public readonly onBlur = output<FocusEvent>();
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Event emitted when the input value changes.
|
|
204
|
-
*/
|
|
205
|
-
public readonly onInput = output<InputEvent>();
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Computed class string that combines theme and user classes.
|
|
209
|
-
*/
|
|
210
|
-
protected readonly computedClass = computed(() => {
|
|
211
|
-
const themeClass = this.theme();
|
|
212
|
-
const styleClass = this._validatedStyleClass();
|
|
213
|
-
const className = this.className();
|
|
214
|
-
const errorClass = this.showError() ? 'has-error' : '';
|
|
215
|
-
const textareaResizeClass = this.isTextarea() ? `resize-${this.textareaResize()}` : '';
|
|
216
|
-
return ['sdc-input', themeClass, ...styleClass, className, errorClass, textareaResizeClass]
|
|
217
|
-
.filter(Boolean)
|
|
218
|
-
.join(' ');
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Computed class string for the label positioning.
|
|
223
|
-
*/
|
|
224
|
-
protected readonly labelClass = computed(() => {
|
|
225
|
-
const position = this.labelPosition();
|
|
226
|
-
return position === 'left' ? 'sdc-input-label left' : 'sdc-input-label top';
|
|
227
|
-
});
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* Debounce time in milliseconds. When 0, no debounce is applied.
|
|
231
|
-
* Default value is 0 (no debounce).
|
|
232
|
-
*/
|
|
233
|
-
public readonly debounce = input<number>(0);
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* Event emitted to notify the debounce state.
|
|
237
|
-
* Returns true while the component is debounced, false when not.
|
|
238
|
-
*/
|
|
239
|
-
public readonly isDebounced = output<boolean>();
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* Signal to track the current debounce state of the component.
|
|
243
|
-
*/
|
|
244
|
-
protected readonly debounceState = signal<boolean>(false);
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* Subject for handling input events with debounce.
|
|
248
|
-
*/
|
|
249
|
-
private readonly inputSubject = new Subject<Event>();
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Subject for cleanup.
|
|
253
|
-
*/
|
|
254
|
-
private readonly destroy$ = new Subject<void>();
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* Current subscription for debounce.
|
|
258
|
-
*/
|
|
259
|
-
private debounceSubscription: Subscription | null = null;
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* Current debounce timeout.
|
|
263
|
-
*/
|
|
264
|
-
private debounceTimeout: ReturnType<typeof setTimeout> | null = null;
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* Component subscriptions.
|
|
268
|
-
*/
|
|
269
|
-
private subscriptions: (Subscription | undefined)[] = [];
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* Computed signal to determine if the label should be visible.
|
|
273
|
-
*/
|
|
274
|
-
protected readonly showLabel = computed(() => {
|
|
275
|
-
return this.label() && this.label().trim().length > 0;
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
/**
|
|
279
|
-
* Computed signal to get the current error message.
|
|
280
|
-
*/
|
|
281
|
-
protected readonly currentErrorMessage = computed(() => {
|
|
282
|
-
const customMessage = this.errorMessage();
|
|
283
|
-
const hasErrors = Object.keys(this.controlState()?.errors ?? {}).length > 0;
|
|
284
|
-
|
|
285
|
-
if (hasErrors && customMessage && customMessage.trim().length > 0) {
|
|
286
|
-
return customMessage;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
// If no custom message, try to get validation error from the form control state
|
|
290
|
-
if (hasErrors) {
|
|
291
|
-
const firstErrorKey = Object.keys(this.controlState()?.errors ?? {})[0];
|
|
292
|
-
const firstErrorValue = this.controlState()?.errors?.[firstErrorKey];
|
|
293
|
-
return this.getValidatorErrorMessage(firstErrorKey, firstErrorValue);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
return '';
|
|
297
|
-
});
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* Computed signal to determine if there's an error to display.
|
|
301
|
-
*/
|
|
302
|
-
protected readonly showError = computed(() => {
|
|
303
|
-
const errorMode = this.errorDisplayMode();
|
|
304
|
-
|
|
305
|
-
// For validation errors, respect the error display mode
|
|
306
|
-
if (this.controlState()?.invalid) {
|
|
307
|
-
if (errorMode === 'always') {
|
|
308
|
-
// Show errors when component is touched and invalid
|
|
309
|
-
return this.controlState()?.touched || this.controlState()?.dirty || this.controlState()?.isFormSubmitted;
|
|
310
|
-
} else if (errorMode === 'after-submit') {
|
|
311
|
-
// Show errors when form is submitted, regardless of touch/focus state
|
|
312
|
-
return this.controlState()?.isFormSubmitted;
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
return false;
|
|
317
|
-
});
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* References to effects for proper cleanup
|
|
321
|
-
*/
|
|
322
|
-
private readonly effects: EffectRef[] = [];
|
|
323
|
-
|
|
324
|
-
constructor() {
|
|
325
|
-
// Set up reactive debounce handling within injection context
|
|
326
|
-
const debounceEffect = effect(() => {
|
|
327
|
-
const debounceTime = this.debounce();
|
|
328
|
-
this.setupDebounce(debounceTime);
|
|
329
|
-
});
|
|
330
|
-
this.effects.push(debounceEffect);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
ngOnInit(): void {
|
|
334
|
-
// Validate the name input
|
|
335
|
-
if ((this.control() || this.showLabel()) && !this.name()) {
|
|
336
|
-
throw new Error('InputComponent: name is required when control or label inputs are present');
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
const formEventsSubscription = this.control()?.parent?.events.subscribe(event => {
|
|
340
|
-
// We do not reset this signal because it is used to show the errors
|
|
341
|
-
// When a form is submitted at least once, we want to show the errors
|
|
342
|
-
if (event instanceof FormSubmittedEvent) {
|
|
343
|
-
this.controlState.set({ ...this.controlState(), isFormSubmitted: true });
|
|
344
|
-
|
|
345
|
-
// We add this because the statusChanges event is not triggered when the form is submitted
|
|
346
|
-
if (event.source.status === 'INVALID') {
|
|
347
|
-
this.controlState.set({ ...this.controlState(), invalid: true });
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
this.updateErrors();
|
|
352
|
-
});
|
|
353
|
-
|
|
354
|
-
const statusChangesSubscription = this.control()?.statusChanges.subscribe(status => {
|
|
355
|
-
if (status === 'INVALID') {
|
|
356
|
-
this.controlState.set({ ...this.controlState(), invalid: true });
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
this.updateErrors();
|
|
360
|
-
});
|
|
361
|
-
|
|
362
|
-
this.subscriptions.push(formEventsSubscription, statusChangesSubscription);
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
ngOnDestroy(): void {
|
|
366
|
-
this.destroy$.next();
|
|
367
|
-
this.destroy$.complete();
|
|
368
|
-
this.inputSubject.complete();
|
|
369
|
-
if (this.debounceSubscription) {
|
|
370
|
-
this.debounceSubscription.unsubscribe();
|
|
371
|
-
}
|
|
372
|
-
if (this.debounceTimeout) {
|
|
373
|
-
clearTimeout(this.debounceTimeout);
|
|
374
|
-
}
|
|
375
|
-
this.effects.forEach(effect => effect.destroy());
|
|
376
|
-
this.subscriptions.forEach(subscription => subscription?.unsubscribe());
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
private updateErrors() {
|
|
380
|
-
// We override the errors except the internal_* errors
|
|
381
|
-
const currentInternalErrors = Object.entries(this.controlState()?.errors || {})?.filter(([key]) =>
|
|
382
|
-
key.startsWith('internal_')
|
|
383
|
-
);
|
|
384
|
-
const controlStateHasInternalErrors = currentInternalErrors.length > 0;
|
|
385
|
-
|
|
386
|
-
const newErrors =
|
|
387
|
-
this.control()?.errors || controlStateHasInternalErrors
|
|
388
|
-
? Object.assign(Object.fromEntries(currentInternalErrors), this.control()?.errors ?? {})
|
|
389
|
-
: null;
|
|
390
|
-
|
|
391
|
-
this.controlState.set({ ...this.controlState(), errors: newErrors });
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
/**
|
|
395
|
-
* Sets up the debounce functionality for input events.
|
|
396
|
-
*/
|
|
397
|
-
private setupDebounce(debounceTime: number): void {
|
|
398
|
-
// Clear existing subscription
|
|
399
|
-
if (this.debounceSubscription) {
|
|
400
|
-
this.debounceSubscription.unsubscribe();
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
// Clear existing timeout
|
|
404
|
-
if (this.debounceTimeout) {
|
|
405
|
-
clearTimeout(this.debounceTimeout);
|
|
406
|
-
this.debounceTimeout = null;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
// Set up new subscription
|
|
410
|
-
this.debounceSubscription = this.inputSubject.pipe(takeUntil(this.destroy$)).subscribe((event: Event) => {
|
|
411
|
-
// Clear existing timeout
|
|
412
|
-
if (this.debounceTimeout) {
|
|
413
|
-
clearTimeout(this.debounceTimeout);
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
// Set new timeout
|
|
417
|
-
this.debounceTimeout = setTimeout(() => {
|
|
418
|
-
this.debounceState.set(false);
|
|
419
|
-
this.isDebounced.emit(false);
|
|
420
|
-
this.onInput.emit(event as InputEvent);
|
|
421
|
-
this.debounceTimeout = null;
|
|
422
|
-
}, debounceTime);
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* Handles input events with debounce functionality.
|
|
428
|
-
*/
|
|
429
|
-
protected handleInput(event: Event): void {
|
|
430
|
-
const target = event.target as HTMLInputElement;
|
|
431
|
-
const newValue = target.value;
|
|
432
|
-
|
|
433
|
-
// Only allow numbers for input with type number
|
|
434
|
-
if (this.type() === 'number') {
|
|
435
|
-
const isValidNumber = /^[0-9]+$/.test(newValue);
|
|
436
|
-
this.controlState.set({ ...this.controlState(), errors: isValidNumber ? null : { internal_number: true } });
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
// Update the form control value
|
|
440
|
-
this.controlState.set({ ...this.controlState(), value: newValue, dirty: true });
|
|
441
|
-
this.control()?.setValue(newValue);
|
|
442
|
-
|
|
443
|
-
const debounceTime = this.debounce();
|
|
444
|
-
|
|
445
|
-
if (debounceTime > 0) {
|
|
446
|
-
// Apply debounce
|
|
447
|
-
this.debounceState.set(true);
|
|
448
|
-
this.isDebounced.emit(true);
|
|
449
|
-
this.inputSubject.next({ ...event, target: { ...event.target, value: newValue } } as unknown as InputEvent);
|
|
450
|
-
} else {
|
|
451
|
-
// No debounce, emit immediately
|
|
452
|
-
this.onInput.emit({ ...event, target: { ...event.target, value: newValue } } as unknown as InputEvent);
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
/**
|
|
457
|
-
* Handles focus events and emits the onFocus output.
|
|
458
|
-
*/
|
|
459
|
-
protected handleFocus(event: FocusEvent): void {
|
|
460
|
-
this.controlState.set({ ...this.controlState(), touched: true });
|
|
461
|
-
this.onFocus.emit(event);
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
/**
|
|
465
|
-
* Handles blur events and emits the onBlur output.
|
|
466
|
-
*/
|
|
467
|
-
protected handleBlur(event: FocusEvent): void {
|
|
468
|
-
this.controlState.set({ ...this.controlState(), touched: true });
|
|
469
|
-
this.onBlur.emit(event);
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
/**
|
|
473
|
-
* Gets the error message for a specific validator error.
|
|
474
|
-
*/
|
|
475
|
-
private getValidatorErrorMessage(errorKey: string, errorValue: any): string {
|
|
476
|
-
switch (errorKey) {
|
|
477
|
-
case 'required':
|
|
478
|
-
return 'This field is required.';
|
|
479
|
-
case 'internal_number':
|
|
480
|
-
return 'Please enter a valid number.';
|
|
481
|
-
case 'email':
|
|
482
|
-
return 'Please enter a valid email address.';
|
|
483
|
-
case 'minlength':
|
|
484
|
-
return `Minimum length is ${errorValue.requiredLength} characters.`;
|
|
485
|
-
case 'maxlength':
|
|
486
|
-
return `Maximum length is ${errorValue.requiredLength} characters.`;
|
|
487
|
-
case 'min':
|
|
488
|
-
return `Minimum value is ${errorValue.min}.`;
|
|
489
|
-
case 'max':
|
|
490
|
-
return `Maximum value is ${errorValue.max}.`;
|
|
491
|
-
case 'pattern':
|
|
492
|
-
return 'Please enter a valid value.';
|
|
493
|
-
default:
|
|
494
|
-
return 'Please enter a valid value.';
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{ "lib": { "entryFile": "public-api.ts" } }
|