@3ddv/software-division-components 2.0.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,171 +0,0 @@
|
|
|
1
|
-
import { buttonVariants } from '@3ddv/software-division-components/generic/button';
|
|
2
|
-
import { HlmIcon } from '@3ddv/software-division-components/generic/icon';
|
|
3
|
-
import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
|
|
4
|
-
import {
|
|
5
|
-
ChangeDetectionStrategy,
|
|
6
|
-
Component,
|
|
7
|
-
booleanAttribute,
|
|
8
|
-
computed,
|
|
9
|
-
input,
|
|
10
|
-
model,
|
|
11
|
-
numberAttribute,
|
|
12
|
-
viewChild,
|
|
13
|
-
} from '@angular/core';
|
|
14
|
-
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
15
|
-
import { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';
|
|
16
|
-
import {
|
|
17
|
-
BrnCalendar,
|
|
18
|
-
BrnCalendarCell,
|
|
19
|
-
BrnCalendarCellButton,
|
|
20
|
-
BrnCalendarGrid,
|
|
21
|
-
BrnCalendarHeader,
|
|
22
|
-
BrnCalendarNextButton,
|
|
23
|
-
BrnCalendarPreviousButton,
|
|
24
|
-
BrnCalendarWeek,
|
|
25
|
-
BrnCalendarWeekday,
|
|
26
|
-
Weekday,
|
|
27
|
-
injectBrnCalendarI18n,
|
|
28
|
-
} from '@spartan-ng/brain/calendar';
|
|
29
|
-
import { hlm } from '@spartan-ng/brain/core';
|
|
30
|
-
import { injectDateAdapter } from '@spartan-ng/brain/date-time';
|
|
31
|
-
import type { ClassValue } from 'clsx';
|
|
32
|
-
|
|
33
|
-
@Component({
|
|
34
|
-
selector: 'hlm-calendar',
|
|
35
|
-
imports: [
|
|
36
|
-
BrnCalendar,
|
|
37
|
-
BrnCalendarHeader,
|
|
38
|
-
BrnCalendarNextButton,
|
|
39
|
-
BrnCalendarPreviousButton,
|
|
40
|
-
BrnCalendarWeekday,
|
|
41
|
-
BrnCalendarWeek,
|
|
42
|
-
BrnCalendarCellButton,
|
|
43
|
-
BrnCalendarCell,
|
|
44
|
-
BrnCalendarGrid,
|
|
45
|
-
NgIcon,
|
|
46
|
-
HlmIcon,
|
|
47
|
-
],
|
|
48
|
-
viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],
|
|
49
|
-
template: `
|
|
50
|
-
<div
|
|
51
|
-
brnCalendar
|
|
52
|
-
[min]="min()"
|
|
53
|
-
[max]="max()"
|
|
54
|
-
[disabled]="disabled()"
|
|
55
|
-
[(date)]="date"
|
|
56
|
-
[dateDisabled]="dateDisabled()"
|
|
57
|
-
[weekStartsOn]="weekStartsOn()"
|
|
58
|
-
[defaultFocusedDate]="defaultFocusedDate()"
|
|
59
|
-
[class]="_computedCalenderClass()">
|
|
60
|
-
<div class="inline-flex flex-col space-y-4">
|
|
61
|
-
<!-- Header -->
|
|
62
|
-
<div class="space-y-4">
|
|
63
|
-
<div class="relative flex items-center justify-center pt-1">
|
|
64
|
-
<div brnCalendarHeader class="text-sm font-medium">
|
|
65
|
-
{{ _heading() }}
|
|
66
|
-
</div>
|
|
67
|
-
|
|
68
|
-
<div class="flex items-center space-x-1">
|
|
69
|
-
<button
|
|
70
|
-
brnCalendarPreviousButton
|
|
71
|
-
class="focus-visible:ring-ring hover:bg-accent hover:text-accent-foreground text-popover-foreground absolute left-1 inline-flex size-8 items-center justify-center whitespace-nowrap rounded-md bg-transparent p-0 text-sm font-medium transition-colors hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50">
|
|
72
|
-
<ng-icon hlm name="lucideChevronLeft" size="sm" />
|
|
73
|
-
</button>
|
|
74
|
-
|
|
75
|
-
<button
|
|
76
|
-
brnCalendarNextButton
|
|
77
|
-
class="focus-visible:ring-ring hover:bg-accent hover:text-accent-foreground text-popover-foreground absolute right-1 inline-flex size-8 items-center justify-center whitespace-nowrap rounded-md bg-transparent p-0 text-sm font-medium transition-colors hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50">
|
|
78
|
-
<ng-icon hlm name="lucideChevronRight" size="sm" />
|
|
79
|
-
</button>
|
|
80
|
-
</div>
|
|
81
|
-
</div>
|
|
82
|
-
</div>
|
|
83
|
-
|
|
84
|
-
<table class="w-full border-collapse space-y-1" brnCalendarGrid>
|
|
85
|
-
<thead>
|
|
86
|
-
<tr class="flex">
|
|
87
|
-
<th
|
|
88
|
-
*brnCalendarWeekday="let weekday"
|
|
89
|
-
scope="col"
|
|
90
|
-
class="text-muted-foreground w-8 rounded-md text-[0.8rem] font-normal"
|
|
91
|
-
[attr.aria-label]="_i18n.labelWeekday(weekday)">
|
|
92
|
-
{{ _i18n.formatWeekdayName(weekday) }}
|
|
93
|
-
</th>
|
|
94
|
-
</tr>
|
|
95
|
-
</thead>
|
|
96
|
-
|
|
97
|
-
<tbody role="rowgroup">
|
|
98
|
-
<tr *brnCalendarWeek="let week" class="mt-2 flex w-full">
|
|
99
|
-
@for (date of week; track _dateAdapter.getTime(date)) {
|
|
100
|
-
<td
|
|
101
|
-
brnCalendarCell
|
|
102
|
-
class="data-[selected]:data-[outside]:bg-accent/50 data-[selected]:bg-accent relative size-8 p-0 text-center text-sm focus-within:relative focus-within:z-20 first:data-[selected]:rounded-l-md last:data-[selected]:rounded-r-md [&:has([aria-selected].day-range-end)]:rounded-r-md">
|
|
103
|
-
<button brnCalendarCellButton [date]="date" [class]="_btnClass">
|
|
104
|
-
{{ _dateAdapter.getDate(date) }}
|
|
105
|
-
</button>
|
|
106
|
-
</td>
|
|
107
|
-
}
|
|
108
|
-
</tr>
|
|
109
|
-
</tbody>
|
|
110
|
-
</table>
|
|
111
|
-
</div>
|
|
112
|
-
</div>
|
|
113
|
-
`,
|
|
114
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
115
|
-
})
|
|
116
|
-
export class HlmCalendar<T> {
|
|
117
|
-
public readonly calendarClass = input<ClassValue>('');
|
|
118
|
-
|
|
119
|
-
protected readonly _computedCalenderClass = computed(() => hlm('rounded-md border p-3', this.calendarClass()));
|
|
120
|
-
|
|
121
|
-
/** Access the calendar i18n */
|
|
122
|
-
protected readonly _i18n = injectBrnCalendarI18n();
|
|
123
|
-
|
|
124
|
-
/** Access the date time adapter */
|
|
125
|
-
protected readonly _dateAdapter = injectDateAdapter<T>();
|
|
126
|
-
|
|
127
|
-
/** The minimum date that can be selected.*/
|
|
128
|
-
public readonly min = input<T>();
|
|
129
|
-
|
|
130
|
-
/** The maximum date that can be selected. */
|
|
131
|
-
public readonly max = input<T>();
|
|
132
|
-
|
|
133
|
-
/** Determine if the date picker is disabled. */
|
|
134
|
-
public readonly disabled = input<boolean, BooleanInput>(false, {
|
|
135
|
-
transform: booleanAttribute,
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
/** The selected value. */
|
|
139
|
-
public readonly date = model<T>();
|
|
140
|
-
|
|
141
|
-
/** Whether a specific date is disabled. */
|
|
142
|
-
public readonly dateDisabled = input<(date: T) => boolean>(() => false);
|
|
143
|
-
|
|
144
|
-
/** The day the week starts on */
|
|
145
|
-
public readonly weekStartsOn = input<Weekday, NumberInput>(0, {
|
|
146
|
-
transform: (v: unknown) => numberAttribute(v) as Weekday,
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
/** The default focused date. */
|
|
150
|
-
public readonly defaultFocusedDate = input<T>();
|
|
151
|
-
|
|
152
|
-
/** Access the calendar directive */
|
|
153
|
-
private readonly _calendar = viewChild.required(BrnCalendar);
|
|
154
|
-
|
|
155
|
-
/** Get the heading for the current month and year */
|
|
156
|
-
protected readonly _heading = computed(() =>
|
|
157
|
-
this._i18n.formatHeader(
|
|
158
|
-
this._dateAdapter.getMonth(this._calendar().focusedDate()),
|
|
159
|
-
this._dateAdapter.getYear(this._calendar().focusedDate())
|
|
160
|
-
)
|
|
161
|
-
);
|
|
162
|
-
|
|
163
|
-
protected readonly _btnClass = hlm(
|
|
164
|
-
buttonVariants({ variant: 'ghost' }),
|
|
165
|
-
'size-8 p-0 font-normal aria-selected:opacity-100',
|
|
166
|
-
'data-[outside]:text-muted-foreground data-[outside]:opacity-50 data-[outside]:aria-selected:bg-accent/50 data-[outside]:aria-selected:text-muted-foreground data-[outside]:aria-selected:opacity-30',
|
|
167
|
-
'data-[today]:bg-accent data-[today]:text-accent-foreground',
|
|
168
|
-
'data-[selected]:bg-primary data-[selected]:text-primary-foreground data-[selected]:hover:bg-primary dark:hover:text-accent-foreground data-[selected]:focus:bg-primary data-[selected]:focus:text-primary-foreground',
|
|
169
|
-
'data-[disabled]:text-muted-foreground data-[disabled]:opacity-50'
|
|
170
|
-
);
|
|
171
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { HlmDatePicker } from './lib/hlm-date-picker';
|
|
3
|
-
import { HlmDatePickerMulti } from './lib/hlm-date-picker-multi';
|
|
4
|
-
|
|
5
|
-
export * from './lib/hlm-date-picker.token';
|
|
6
|
-
|
|
7
|
-
export * from './lib/hlm-date-picker';
|
|
8
|
-
export * from './lib/hlm-date-picker-multi';
|
|
9
|
-
|
|
10
|
-
export const HlmDatePickerImports = [HlmDatePicker, HlmDatePickerMulti] as const;
|
|
11
|
-
|
|
12
|
-
@NgModule({
|
|
13
|
-
imports: [...HlmDatePickerImports],
|
|
14
|
-
exports: [...HlmDatePickerImports],
|
|
15
|
-
})
|
|
16
|
-
export class HlmDatePickerModule {}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { inject, InjectionToken, ValueProvider } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
export interface HlmDatePickerMultiConfig<T> {
|
|
4
|
-
/**
|
|
5
|
-
* If true, the date picker will close when the max selection of dates is reached.
|
|
6
|
-
*/
|
|
7
|
-
autoCloseOnMaxSelection: boolean;
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Defines how the date should be displayed in the UI.
|
|
11
|
-
*
|
|
12
|
-
* @param dates
|
|
13
|
-
* @returns formatted date
|
|
14
|
-
*/
|
|
15
|
-
formatDates: (dates: T[]) => string;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Defines how the date should be transformed before saving to model/form.
|
|
19
|
-
*
|
|
20
|
-
* @param dates
|
|
21
|
-
* @returns transformed date
|
|
22
|
-
*/
|
|
23
|
-
transformDates: (dates: T[]) => T[];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function getDefaultConfig<T>(): HlmDatePickerMultiConfig<T> {
|
|
27
|
-
return {
|
|
28
|
-
formatDates: (dates) => dates.map((date) => (date instanceof Date ? date.toDateString() : `${date}`)).join(', '),
|
|
29
|
-
transformDates: (dates) => dates,
|
|
30
|
-
autoCloseOnMaxSelection: false,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const HlmDatePickerMultiConfigToken = new InjectionToken<HlmDatePickerMultiConfig<unknown>>('HlmDatePickerMultiConfig');
|
|
35
|
-
|
|
36
|
-
export function provideHlmDatePickerConfig<T>(config: Partial<HlmDatePickerMultiConfig<T>>): ValueProvider {
|
|
37
|
-
return { provide: HlmDatePickerMultiConfigToken, useValue: { ...getDefaultConfig(), ...config } };
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function injectHlmDatePickerMultiConfig<T>(): HlmDatePickerMultiConfig<T> {
|
|
41
|
-
const injectedConfig = inject(HlmDatePickerMultiConfigToken, { optional: true });
|
|
42
|
-
return injectedConfig ? (injectedConfig as HlmDatePickerMultiConfig<T>) : getDefaultConfig();
|
|
43
|
-
}
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import { HlmIcon } from '@3ddv/software-division-components/generic/icon';
|
|
2
|
-
import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
|
|
3
|
-
import {
|
|
4
|
-
ChangeDetectionStrategy,
|
|
5
|
-
Component,
|
|
6
|
-
booleanAttribute,
|
|
7
|
-
computed,
|
|
8
|
-
forwardRef,
|
|
9
|
-
input,
|
|
10
|
-
model,
|
|
11
|
-
numberAttribute,
|
|
12
|
-
output,
|
|
13
|
-
signal,
|
|
14
|
-
} from '@angular/core';
|
|
15
|
-
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
16
|
-
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
17
|
-
import { lucideCalendar } from '@ng-icons/lucide';
|
|
18
|
-
import { hlm } from '@spartan-ng/brain/core';
|
|
19
|
-
import { BrnDialogState } from '@spartan-ng/brain/dialog';
|
|
20
|
-
import { type ChangeFn, type TouchFn } from '@spartan-ng/brain/forms';
|
|
21
|
-
import { BrnPopover, BrnPopoverContent, BrnPopoverTrigger } from '@spartan-ng/brain/popover';
|
|
22
|
-
import type { ClassValue } from 'clsx';
|
|
23
|
-
import { HlmCalendarMulti } from '../../../ui-calendar-helm/src';
|
|
24
|
-
import { HlmPopoverContent } from '../../../ui-popover-helm/src';
|
|
25
|
-
import { injectHlmDatePickerMultiConfig } from './hlm-date-picker-multi.token';
|
|
26
|
-
|
|
27
|
-
export const HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR = {
|
|
28
|
-
provide: NG_VALUE_ACCESSOR,
|
|
29
|
-
useExisting: forwardRef(() => HlmDatePickerMulti),
|
|
30
|
-
multi: true,
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
@Component({
|
|
34
|
-
selector: 'hlm-date-picker-multi',
|
|
35
|
-
imports: [NgIcon, HlmIcon, BrnPopover, BrnPopoverTrigger, BrnPopoverContent, HlmPopoverContent, HlmCalendarMulti],
|
|
36
|
-
providers: [HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR, provideIcons({ lucideCalendar })],
|
|
37
|
-
template: `
|
|
38
|
-
<brn-popover sideOffset="5" [state]="_popoverState()" (stateChanged)="_popoverState.set($event)">
|
|
39
|
-
<button type="button" [class]="_computedClass()" [disabled]="_state().disabled()" brnPopoverTrigger>
|
|
40
|
-
<ng-icon hlm size="sm" name="lucideCalendar" />
|
|
41
|
-
|
|
42
|
-
<span class="truncate">
|
|
43
|
-
@if (_formattedDate(); as formattedDate) {
|
|
44
|
-
{{ formattedDate }}
|
|
45
|
-
} @else {
|
|
46
|
-
<ng-content />
|
|
47
|
-
}
|
|
48
|
-
</span>
|
|
49
|
-
</button>
|
|
50
|
-
|
|
51
|
-
<div hlmPopoverContent class="w-auto p-0" *brnPopoverContent="let ctx">
|
|
52
|
-
<hlm-calendar-multi
|
|
53
|
-
calendarClass="border-0 rounded-none"
|
|
54
|
-
[date]="date()"
|
|
55
|
-
[min]="min()"
|
|
56
|
-
[max]="max()"
|
|
57
|
-
[minSelection]="minSelection()"
|
|
58
|
-
[maxSelection]="maxSelection()"
|
|
59
|
-
[disabled]="_state().disabled()"
|
|
60
|
-
(dateChange)="_handleChange($event)" />
|
|
61
|
-
</div>
|
|
62
|
-
</brn-popover>
|
|
63
|
-
`,
|
|
64
|
-
host: {
|
|
65
|
-
class: 'block',
|
|
66
|
-
},
|
|
67
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
68
|
-
})
|
|
69
|
-
export class HlmDatePickerMulti<T> implements ControlValueAccessor {
|
|
70
|
-
private readonly _config = injectHlmDatePickerMultiConfig<T>();
|
|
71
|
-
|
|
72
|
-
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
73
|
-
protected readonly _computedClass = computed(() =>
|
|
74
|
-
hlm(
|
|
75
|
-
'inline-flex items-center gap-2 whitespace-nowrap rounded-md text-sm ring-offset-background transition-colors border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2 w-[280px] justify-start text-left font-normal',
|
|
76
|
-
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
|
|
77
|
-
'disabled:pointer-events-none disabled:opacity-50',
|
|
78
|
-
'[&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0',
|
|
79
|
-
!this.date() ? 'text-muted-foreground' : '',
|
|
80
|
-
this.userClass()
|
|
81
|
-
)
|
|
82
|
-
);
|
|
83
|
-
|
|
84
|
-
/** The minimum date that can be selected.*/
|
|
85
|
-
public readonly min = input<T>();
|
|
86
|
-
|
|
87
|
-
/** The maximum date that can be selected. */
|
|
88
|
-
public readonly max = input<T>();
|
|
89
|
-
|
|
90
|
-
/** The minimum selectable dates. */
|
|
91
|
-
public readonly minSelection = input<number, NumberInput>(undefined, {
|
|
92
|
-
transform: numberAttribute,
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
/** The maximum selectable dates. */
|
|
96
|
-
public readonly maxSelection = input<number, NumberInput>(undefined, {
|
|
97
|
-
transform: numberAttribute,
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
/** Determine if the date picker is disabled. */
|
|
101
|
-
public readonly disabled = input<boolean, BooleanInput>(false, {
|
|
102
|
-
transform: booleanAttribute,
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
/** The selected value. */
|
|
106
|
-
public readonly date = model<T[]>();
|
|
107
|
-
|
|
108
|
-
/** If true, the date picker will close when the max selection of dates is reached.. */
|
|
109
|
-
public readonly autoCloseOnMaxSelection = input<boolean, BooleanInput>(this._config.autoCloseOnMaxSelection, {
|
|
110
|
-
transform: booleanAttribute,
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
/** Defines how the date should be displayed in the UI. */
|
|
114
|
-
public readonly formatDates = input<(date: T[]) => string>(this._config.formatDates);
|
|
115
|
-
|
|
116
|
-
/** Defines how the date should be transformed before saving to model/form. */
|
|
117
|
-
public readonly transformDates = input<(date: T[]) => T[]>(this._config.transformDates);
|
|
118
|
-
|
|
119
|
-
protected readonly _popoverState = signal<BrnDialogState | null>(null);
|
|
120
|
-
|
|
121
|
-
protected readonly _state = computed(() => ({
|
|
122
|
-
disabled: signal(this.disabled()),
|
|
123
|
-
}));
|
|
124
|
-
|
|
125
|
-
protected readonly _formattedDate = computed(() => {
|
|
126
|
-
const dates = this.date();
|
|
127
|
-
return dates ? this.formatDates()(dates) : undefined;
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
public readonly changed = output<T[]>();
|
|
131
|
-
|
|
132
|
-
protected _onChange?: ChangeFn<T[]>;
|
|
133
|
-
protected _onTouched?: TouchFn;
|
|
134
|
-
|
|
135
|
-
protected _handleChange(value: T[] | undefined) {
|
|
136
|
-
if (value === undefined) return;
|
|
137
|
-
|
|
138
|
-
if (this._state().disabled()) return;
|
|
139
|
-
const transformedDate = this.transformDates()(value);
|
|
140
|
-
|
|
141
|
-
this.date.set(transformedDate);
|
|
142
|
-
this._onChange?.(transformedDate);
|
|
143
|
-
this.changed.emit(transformedDate);
|
|
144
|
-
|
|
145
|
-
if (this.autoCloseOnMaxSelection() && this.date()?.length === this.maxSelection()) {
|
|
146
|
-
this._popoverState.set('closed');
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/** CONROL VALUE ACCESSOR */
|
|
151
|
-
writeValue(value: T[] | null): void {
|
|
152
|
-
// optional FormControl is initialized with null value
|
|
153
|
-
if (value === null) return;
|
|
154
|
-
|
|
155
|
-
this.date.set(this.transformDates()(value));
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
registerOnChange(fn: ChangeFn<T[]>): void {
|
|
159
|
-
this._onChange = fn;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
registerOnTouched(fn: TouchFn): void {
|
|
163
|
-
this._onTouched = fn;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
setDisabledState(isDisabled: boolean): void {
|
|
167
|
-
this._state().disabled.set(isDisabled);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
open() {
|
|
171
|
-
this._popoverState.set('open');
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
close() {
|
|
175
|
-
this._popoverState.set('closed');
|
|
176
|
-
}
|
|
177
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { inject, InjectionToken, ValueProvider } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
export interface HlmDatePickerConfig<T> {
|
|
4
|
-
/**
|
|
5
|
-
* If true, the date picker will close when a date is selected.
|
|
6
|
-
*/
|
|
7
|
-
autoCloseOnSelect: boolean;
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Defines how the date should be displayed in the UI.
|
|
11
|
-
*
|
|
12
|
-
* @param date
|
|
13
|
-
* @returns formatted date
|
|
14
|
-
*/
|
|
15
|
-
formatDate: (date: T) => string;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Defines how the date should be transformed before saving to model/form.
|
|
19
|
-
*
|
|
20
|
-
* @param date
|
|
21
|
-
* @returns transformed date
|
|
22
|
-
*/
|
|
23
|
-
transformDate: (date: T) => T;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function getDefaultConfig<T>(): HlmDatePickerConfig<T> {
|
|
27
|
-
return {
|
|
28
|
-
formatDate: (date) => (date instanceof Date ? date.toDateString() : `${date}`),
|
|
29
|
-
transformDate: (date) => date,
|
|
30
|
-
autoCloseOnSelect: false,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const HlmDatePickerConfigToken = new InjectionToken<HlmDatePickerConfig<unknown>>('HlmDatePickerConfig');
|
|
35
|
-
|
|
36
|
-
export function provideHlmDatePickerConfig<T>(config: Partial<HlmDatePickerConfig<T>>): ValueProvider {
|
|
37
|
-
return { provide: HlmDatePickerConfigToken, useValue: { ...getDefaultConfig(), ...config } };
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function injectHlmDatePickerConfig<T>(): HlmDatePickerConfig<T> {
|
|
41
|
-
const injectedConfig = inject(HlmDatePickerConfigToken, { optional: true });
|
|
42
|
-
return injectedConfig ? (injectedConfig as HlmDatePickerConfig<T>) : getDefaultConfig();
|
|
43
|
-
}
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { HlmIcon } from '@3ddv/software-division-components/generic/icon';
|
|
2
|
-
import { BooleanInput } from '@angular/cdk/coercion';
|
|
3
|
-
import {
|
|
4
|
-
booleanAttribute,
|
|
5
|
-
ChangeDetectionStrategy,
|
|
6
|
-
Component,
|
|
7
|
-
computed,
|
|
8
|
-
forwardRef,
|
|
9
|
-
input,
|
|
10
|
-
model,
|
|
11
|
-
output,
|
|
12
|
-
signal,
|
|
13
|
-
} from '@angular/core';
|
|
14
|
-
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
15
|
-
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
16
|
-
import { lucideCalendar } from '@ng-icons/lucide';
|
|
17
|
-
import { hlm } from '@spartan-ng/brain/core';
|
|
18
|
-
import { BrnDialogState } from '@spartan-ng/brain/dialog';
|
|
19
|
-
import { type ChangeFn, type TouchFn } from '@spartan-ng/brain/forms';
|
|
20
|
-
import { BrnPopover, BrnPopoverContent, BrnPopoverTrigger } from '@spartan-ng/brain/popover';
|
|
21
|
-
import type { ClassValue } from 'clsx';
|
|
22
|
-
import { HlmCalendar } from '../../../ui-calendar-helm/src';
|
|
23
|
-
import { HlmPopoverContent } from '../../../ui-popover-helm/src';
|
|
24
|
-
import { injectHlmDatePickerConfig } from './hlm-date-picker.token';
|
|
25
|
-
|
|
26
|
-
export const HLM_DATE_PICKER_VALUE_ACCESSOR = {
|
|
27
|
-
provide: NG_VALUE_ACCESSOR,
|
|
28
|
-
useExisting: forwardRef(() => HlmDatePicker),
|
|
29
|
-
multi: true,
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
@Component({
|
|
33
|
-
selector: 'hlm-date-picker',
|
|
34
|
-
imports: [NgIcon, HlmIcon, BrnPopover, BrnPopoverTrigger, BrnPopoverContent, HlmPopoverContent, HlmCalendar],
|
|
35
|
-
providers: [HLM_DATE_PICKER_VALUE_ACCESSOR, provideIcons({ lucideCalendar })],
|
|
36
|
-
template: `
|
|
37
|
-
<brn-popover sideOffset="5" [state]="_popoverState()" (stateChanged)="_popoverState.set($event)">
|
|
38
|
-
<button type="button" [class]="_computedClass()" [disabled]="_state().disabled()" brnPopoverTrigger>
|
|
39
|
-
<span class="truncate">
|
|
40
|
-
@if (_formattedDate(); as formattedDate) {
|
|
41
|
-
{{ formattedDate }}
|
|
42
|
-
} @else {
|
|
43
|
-
<ng-content />
|
|
44
|
-
}
|
|
45
|
-
</span>
|
|
46
|
-
|
|
47
|
-
<ng-icon hlm size="sm" name="lucideCalendar" />
|
|
48
|
-
</button>
|
|
49
|
-
|
|
50
|
-
<div hlmPopoverContent [class]="styleClass()" class="w-auto p-0" *brnPopoverContent="let ctx">
|
|
51
|
-
<hlm-calendar
|
|
52
|
-
calendarClass="border-0 rounded-none"
|
|
53
|
-
[date]="date()"
|
|
54
|
-
[min]="min()"
|
|
55
|
-
[max]="max()"
|
|
56
|
-
[disabled]="_state().disabled()"
|
|
57
|
-
(dateChange)="_handleChange($event)" />
|
|
58
|
-
</div>
|
|
59
|
-
</brn-popover>
|
|
60
|
-
`,
|
|
61
|
-
host: {
|
|
62
|
-
class: 'block',
|
|
63
|
-
},
|
|
64
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
65
|
-
})
|
|
66
|
-
export class HlmDatePicker<T> implements ControlValueAccessor {
|
|
67
|
-
private readonly _config = injectHlmDatePickerConfig<T>();
|
|
68
|
-
|
|
69
|
-
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
70
|
-
protected readonly _computedClass = computed(() =>
|
|
71
|
-
hlm(
|
|
72
|
-
'inline-flex items-center gap-2 whitespace-nowrap rounded-md text-sm transition-all disabled:pointer-events-none disabled:opacity-50 ring-offset-background transition-colors border border-input bg-background hover:bg-accent dark:bg-input/30 dark:hover:bg-input/50 hover:text-accent-foreground w-[280px] justify-start text-left font-normal cursor-default justify-between',
|
|
73
|
-
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
|
|
74
|
-
'disabled:pointer-events-none disabled:opacity-50',
|
|
75
|
-
'[&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0',
|
|
76
|
-
!this.date() ? 'text-muted-foreground' : '',
|
|
77
|
-
this.userClass()
|
|
78
|
-
)
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* This is used to apply the theme-sdc class to the datepicker's dialog.
|
|
83
|
-
*/
|
|
84
|
-
public readonly styleClass = input<string>('');
|
|
85
|
-
|
|
86
|
-
/** The minimum date that can be selected.*/
|
|
87
|
-
public readonly min = input<T>();
|
|
88
|
-
|
|
89
|
-
/** The maximum date that can be selected. */
|
|
90
|
-
public readonly max = input<T>();
|
|
91
|
-
|
|
92
|
-
/** Determine if the date picker is disabled. */
|
|
93
|
-
public readonly disabled = input<boolean, BooleanInput>(false, {
|
|
94
|
-
transform: booleanAttribute,
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
/** The selected value. */
|
|
98
|
-
public readonly date = model<T>();
|
|
99
|
-
|
|
100
|
-
/** If true, the date picker will close when a date is selected. */
|
|
101
|
-
public readonly autoCloseOnSelect = input<boolean, BooleanInput>(this._config.autoCloseOnSelect, {
|
|
102
|
-
transform: booleanAttribute,
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
/** Defines how the date should be displayed in the UI. */
|
|
106
|
-
public readonly formatDate = input<(date: T) => string>(this._config.formatDate);
|
|
107
|
-
|
|
108
|
-
/** Defines how the date should be transformed before saving to model/form. */
|
|
109
|
-
public readonly transformDate = input<(date: T) => T>(this._config.transformDate);
|
|
110
|
-
|
|
111
|
-
protected readonly _popoverState = signal<BrnDialogState | null>(null);
|
|
112
|
-
|
|
113
|
-
protected readonly _state = computed(() => ({
|
|
114
|
-
disabled: signal(this.disabled()),
|
|
115
|
-
}));
|
|
116
|
-
|
|
117
|
-
protected readonly _formattedDate = computed(() => {
|
|
118
|
-
const date = this.date();
|
|
119
|
-
return date ? this.formatDate()(date) : undefined;
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
public readonly changed = output<T>();
|
|
123
|
-
|
|
124
|
-
protected _onChange?: ChangeFn<T>;
|
|
125
|
-
protected _onTouched?: TouchFn;
|
|
126
|
-
|
|
127
|
-
protected _handleChange(value: T) {
|
|
128
|
-
if (this._state().disabled()) return;
|
|
129
|
-
const transformedDate = this.transformDate()(value);
|
|
130
|
-
|
|
131
|
-
this.date.set(transformedDate);
|
|
132
|
-
this._onChange?.(transformedDate);
|
|
133
|
-
this.changed.emit(transformedDate);
|
|
134
|
-
|
|
135
|
-
if (this.autoCloseOnSelect()) {
|
|
136
|
-
this._popoverState.set('closed');
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/** CONROL VALUE ACCESSOR */
|
|
141
|
-
writeValue(value: T | null): void {
|
|
142
|
-
// optional FormControl is initialized with null value
|
|
143
|
-
if (value === null) return;
|
|
144
|
-
|
|
145
|
-
this.date.set(this.transformDate()(value));
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
registerOnChange(fn: ChangeFn<T>): void {
|
|
149
|
-
this._onChange = fn;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
registerOnTouched(fn: TouchFn): void {
|
|
153
|
-
this._onTouched = fn;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
setDisabledState(isDisabled: boolean): void {
|
|
157
|
-
this._state().disabled.set(isDisabled);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
open() {
|
|
161
|
-
this._popoverState.set('open');
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
close() {
|
|
165
|
-
this._popoverState.set('closed');
|
|
166
|
-
}
|
|
167
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { HlmIcon } from './lib/hlm-icon';
|
|
3
|
-
|
|
4
|
-
export * from './lib/hlm-icon';
|
|
5
|
-
export * from './lib/hlm-icon.token';
|
|
6
|
-
|
|
7
|
-
@NgModule({
|
|
8
|
-
imports: [HlmIcon],
|
|
9
|
-
exports: [HlmIcon],
|
|
10
|
-
})
|
|
11
|
-
export class HlmIconModule {}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { InjectionToken, ValueProvider, inject } from '@angular/core';
|
|
2
|
-
import type { IconSize } from './hlm-icon';
|
|
3
|
-
|
|
4
|
-
export interface HlmIconConfig {
|
|
5
|
-
size: IconSize;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
const defaultConfig: HlmIconConfig = {
|
|
9
|
-
size: 'base',
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
const HlmIconConfigToken = new InjectionToken<HlmIconConfig>('HlmIconConfig');
|
|
13
|
-
|
|
14
|
-
export function provideHlmIconConfig(config: Partial<HlmIconConfig>): ValueProvider {
|
|
15
|
-
return { provide: HlmIconConfigToken, useValue: { ...defaultConfig, ...config } };
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function injectHlmIconConfig(): HlmIconConfig {
|
|
19
|
-
return inject(HlmIconConfigToken, { optional: true }) ?? defaultConfig;
|
|
20
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Directive, computed, input } from '@angular/core';
|
|
2
|
-
import { injectHlmIconConfig } from './hlm-icon.token';
|
|
3
|
-
|
|
4
|
-
export type IconSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | 'none' | (Record<never, never> & string);
|
|
5
|
-
|
|
6
|
-
@Directive({
|
|
7
|
-
selector: 'ng-icon[hlm]',
|
|
8
|
-
host: {
|
|
9
|
-
'[style.--ng-icon__size]': '_computedSize()',
|
|
10
|
-
},
|
|
11
|
-
})
|
|
12
|
-
export class HlmIcon {
|
|
13
|
-
private readonly _config = injectHlmIconConfig();
|
|
14
|
-
public readonly size = input<IconSize>(this._config.size);
|
|
15
|
-
|
|
16
|
-
protected readonly _computedSize = computed(() => {
|
|
17
|
-
const size = this.size();
|
|
18
|
-
|
|
19
|
-
switch (size) {
|
|
20
|
-
case 'xs':
|
|
21
|
-
return '12px';
|
|
22
|
-
case 'sm':
|
|
23
|
-
return '16px';
|
|
24
|
-
case 'base':
|
|
25
|
-
return '24px';
|
|
26
|
-
case 'lg':
|
|
27
|
-
return '32px';
|
|
28
|
-
case 'xl':
|
|
29
|
-
return '48px';
|
|
30
|
-
default: {
|
|
31
|
-
return size;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
}
|