@bravobit/bb-foundation 0.45.4 → 0.50.0
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/auth/lib/auth.config.d.ts +0 -2
- package/auth/lib/auth.service.d.ts +1 -1
- package/auth/lib/directives/authenticated.directive.d.ts +1 -1
- package/collections/lib/directives/collections-data-row.directive.d.ts +1 -1
- package/collections/lib/directives/collections-data.directive.d.ts +1 -1
- package/collections/lib/directives/collections-empty.directive.d.ts +1 -1
- package/collections/lib/directives/collections-error.directive.d.ts +1 -1
- package/collections/lib/directives/collections-initial.directive.d.ts +1 -1
- package/collections/lib/directives/collections-item.directive.d.ts +1 -1
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +1 -0
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +1 -0
- package/fesm2022/bravobit-bb-foundation-auth.mjs +44 -50
- package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-collections.mjs +69 -75
- package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-combobox.mjs +21 -24
- package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs +35 -35
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dialog.mjs +63 -47
- package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-elements.mjs +119 -131
- package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-localize.mjs +25 -32
- package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-masking.mjs +19 -22
- package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-notifications.mjs +15 -17
- package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-permissions.mjs +11 -12
- package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +11 -11
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-rxjs.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-select.mjs +26 -30
- package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-storage.mjs +16 -8
- package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-table.mjs +29 -31
- package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs +12 -13
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-utils.mjs +20 -24
- package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation.mjs +21 -21
- package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
- package/localize/lib/localize.config.d.ts +0 -1
- package/localize/lib/localize.service.d.ts +1 -1
- package/localize/lib/views/localize-template.directive.d.ts +1 -1
- package/masking/lib/masking.service.d.ts +2 -2
- package/notifications/lib/notifications-list/notifications-list.component.d.ts +1 -2
- package/package.json +25 -63
- package/permissions/lib/directives/permission.directive.d.ts +1 -1
- package/storage/lib/interfaces/strategy.interface.d.ts +1 -1
- package/table/lib/components/table/table.component.d.ts +2 -2
- package/esm2022/auth/bravobit-bb-foundation-auth.mjs +0 -5
- package/esm2022/auth/lib/auth.config.mjs +0 -16
- package/esm2022/auth/lib/auth.interceptor.mjs +0 -87
- package/esm2022/auth/lib/auth.module.mjs +0 -25
- package/esm2022/auth/lib/auth.service.mjs +0 -261
- package/esm2022/auth/lib/auth.session.mjs +0 -142
- package/esm2022/auth/lib/directives/authenticated.directive.mjs +0 -78
- package/esm2022/auth/lib/guards/anonymous.guard.mjs +0 -29
- package/esm2022/auth/lib/guards/authenticated.guard.mjs +0 -32
- package/esm2022/auth/lib/helpers/jwt.helper.mjs +0 -67
- package/esm2022/auth/lib/interfaces/config.interface.mjs +0 -4
- package/esm2022/auth/lib/interfaces/provider.interface.mjs +0 -2
- package/esm2022/auth/lib/interfaces/token.interface.mjs +0 -2
- package/esm2022/auth/lib/providers/email.provider.mjs +0 -27
- package/esm2022/auth/lib/providers/verify.provider.mjs +0 -25
- package/esm2022/auth/lib/tokens/use-authorization.token.mjs +0 -3
- package/esm2022/auth/public_api.mjs +0 -15
- package/esm2022/bravobit-bb-foundation.mjs +0 -5
- package/esm2022/collections/bravobit-bb-foundation-collections.mjs +0 -5
- package/esm2022/collections/lib/classes/array.collection.mjs +0 -85
- package/esm2022/collections/lib/collection.mjs +0 -98
- package/esm2022/collections/lib/collections.module.mjs +0 -84
- package/esm2022/collections/lib/components/collections-actions/collections-actions.component.mjs +0 -37
- package/esm2022/collections/lib/components/collections-grid/collections-grid.component.mjs +0 -52
- package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +0 -114
- package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +0 -86
- package/esm2022/collections/lib/components/collections-table-label/collections-table-label.component.mjs +0 -30
- package/esm2022/collections/lib/components/collections-table-sorting/collections-table-sorting.component.mjs +0 -65
- package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +0 -37
- package/esm2022/collections/lib/directives/collections-data-row.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-data.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-empty.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-error.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-initial.directive.mjs +0 -23
- package/esm2022/collections/lib/directives/collections-item.directive.mjs +0 -29
- package/esm2022/collections/lib/interfaces/array-collection.interface.mjs +0 -2
- package/esm2022/collections/lib/interfaces/collection.interface.mjs +0 -2
- package/esm2022/collections/lib/providers/api-collection.provider.mjs +0 -103
- package/esm2022/collections/lib/providers/collection.provider.mjs +0 -39
- package/esm2022/collections/lib/providers/local-collection.provider.mjs +0 -25
- package/esm2022/collections/public_api.mjs +0 -22
- package/esm2022/combobox/bravobit-bb-foundation-combobox.mjs +0 -5
- package/esm2022/combobox/combobox/combobox-container.directive.mjs +0 -137
- package/esm2022/combobox/combobox/combobox.component.mjs +0 -118
- package/esm2022/combobox/combobox-label.directive.mjs +0 -14
- package/esm2022/combobox/combobox-option.directive.mjs +0 -17
- package/esm2022/combobox/combobox-panel/combobox-panel.animation.mjs +0 -11
- package/esm2022/combobox/combobox-panel/combobox-panel.component.mjs +0 -42
- package/esm2022/combobox/combobox.interface.mjs +0 -2
- package/esm2022/combobox/public_api.mjs +0 -4
- package/esm2022/dashboard/bravobit-bb-foundation-dashboard.mjs +0 -5
- package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +0 -50
- package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +0 -25
- package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +0 -28
- package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +0 -32
- package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +0 -75
- package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +0 -93
- package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +0 -60
- package/esm2022/dashboard/lib/dashboard.module.mjs +0 -50
- package/esm2022/dashboard/public_api.mjs +0 -9
- package/esm2022/dialog/bravobit-bb-foundation-dialog.mjs +0 -5
- package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +0 -12
- package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +0 -44
- package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +0 -58
- package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +0 -15
- package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +0 -11
- package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +0 -57
- package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +0 -53
- package/esm2022/dialog/lib/dialog.config.mjs +0 -8
- package/esm2022/dialog/lib/dialog.insertion.mjs +0 -18
- package/esm2022/dialog/lib/dialog.interfaces.mjs +0 -9
- package/esm2022/dialog/lib/dialog.module.mjs +0 -64
- package/esm2022/dialog/lib/dialog.ref.mjs +0 -16
- package/esm2022/dialog/lib/dialog.service.mjs +0 -75
- package/esm2022/dialog/lib/directives/confirm.directive.mjs +0 -48
- package/esm2022/dialog/public_api.mjs +0 -12
- package/esm2022/elements/bravobit-bb-foundation-elements.mjs +0 -5
- package/esm2022/elements/lib/avatar/avatar.component.mjs +0 -175
- package/esm2022/elements/lib/button/button.component.mjs +0 -68
- package/esm2022/elements/lib/checkbox/checkbox.component.mjs +0 -116
- package/esm2022/elements/lib/checkbox-group/checkbox-group.component.mjs +0 -34
- package/esm2022/elements/lib/date-picker/date-picker.component.mjs +0 -323
- package/esm2022/elements/lib/directives/addon.directive.mjs +0 -27
- package/esm2022/elements/lib/directives/extra-error-controls.directive.mjs +0 -41
- package/esm2022/elements/lib/directives/file-drop.directive.mjs +0 -62
- package/esm2022/elements/lib/directives/form-submit.directive.mjs +0 -54
- package/esm2022/elements/lib/directives/form-submitter.directive.mjs +0 -24
- package/esm2022/elements/lib/directives/image-upload.directive.mjs +0 -143
- package/esm2022/elements/lib/directives/input.directive.mjs +0 -49
- package/esm2022/elements/lib/elements.config.mjs +0 -54
- package/esm2022/elements/lib/elements.interfaces.mjs +0 -5
- package/esm2022/elements/lib/elements.module.mjs +0 -146
- package/esm2022/elements/lib/file-picker/file-picker.component.mjs +0 -196
- package/esm2022/elements/lib/form-control/form-control.component.mjs +0 -46
- package/esm2022/elements/lib/form-error/form-error.component.mjs +0 -106
- package/esm2022/elements/lib/form-group/form-group.component.mjs +0 -19
- package/esm2022/elements/lib/icon/icon.component.mjs +0 -122
- package/esm2022/elements/lib/image-picker/image-picker.component.mjs +0 -126
- package/esm2022/elements/lib/multi-file-control/multi-file-control.component.mjs +0 -149
- package/esm2022/elements/lib/pipes/date.pipe.mjs +0 -28
- package/esm2022/elements/lib/pipes/file-image.pipe.mjs +0 -48
- package/esm2022/elements/lib/pipes/file-size.pipe.mjs +0 -27
- package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +0 -99
- package/esm2022/elements/lib/radio-button/radio-button.component.mjs +0 -60
- package/esm2022/elements/lib/radio-group/radio-group.component.mjs +0 -103
- package/esm2022/elements/lib/spinner/spinner.component.mjs +0 -22
- package/esm2022/elements/public_api.mjs +0 -30
- package/esm2022/http/bravobit-bb-foundation-http.mjs +0 -5
- package/esm2022/http/lib/classes/http.config.mjs +0 -32
- package/esm2022/http/lib/classes/http.error.mjs +0 -20
- package/esm2022/http/lib/http.config.mjs +0 -18
- package/esm2022/http/lib/http.interfaces.mjs +0 -4
- package/esm2022/http/lib/http.module.mjs +0 -31
- package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +0 -60
- package/esm2022/http/lib/interceptors/error.interceptor.mjs +0 -31
- package/esm2022/http/public_api.mjs +0 -8
- package/esm2022/lib/core/functions/array.utils.mjs +0 -7
- package/esm2022/lib/core/functions/date.utils.mjs +0 -31
- package/esm2022/lib/core/functions/password.utils.mjs +0 -17
- package/esm2022/lib/core/functions/route-cache.utils.mjs +0 -23
- package/esm2022/lib/core/miscellaneous/coercion.mjs +0 -5
- package/esm2022/lib/core/miscellaneous/regex.mjs +0 -44
- package/esm2022/lib/core/miscellaneous/validator.mjs +0 -85
- package/esm2022/lib/core/services/exif.service.mjs +0 -165
- package/esm2022/lib/core/services/file-loader.service.mjs +0 -85
- package/esm2022/lib/core/services/files.service.mjs +0 -78
- package/esm2022/lib/core/services/image-converter.service.mjs +0 -126
- package/esm2022/lib/core/services/languages.service.mjs +0 -75
- package/esm2022/lib/core/services/network.service.mjs +0 -58
- package/esm2022/lib/core/services/patch.service.mjs +0 -66
- package/esm2022/lib/core/tokens/accept-language.token.mjs +0 -3
- package/esm2022/lib/core/tokens/base-url.token.mjs +0 -3
- package/esm2022/lib/core/tokens/cookie.token.mjs +0 -3
- package/esm2022/lib/core/tokens/global-focus-mode.token.mjs +0 -10
- package/esm2022/lib/core/tokens/location.token.mjs +0 -6
- package/esm2022/lib/core/tokens/navigator.token.mjs +0 -6
- package/esm2022/lib/core/tokens/window.token.mjs +0 -12
- package/esm2022/localize/bravobit-bb-foundation-localize.mjs +0 -5
- package/esm2022/localize/lib/dictionary/dictionary.class.mjs +0 -96
- package/esm2022/localize/lib/dictionary/dictionary.context.mjs +0 -24
- package/esm2022/localize/lib/dictionary/dictionary.data.mjs +0 -7
- package/esm2022/localize/lib/functions/date.function.mjs +0 -18
- package/esm2022/localize/lib/functions/lowercase.function.mjs +0 -13
- package/esm2022/localize/lib/functions/uppercase.function.mjs +0 -13
- package/esm2022/localize/lib/handlers/missing.handler.mjs +0 -13
- package/esm2022/localize/lib/interfaces/config.interfaces.mjs +0 -2
- package/esm2022/localize/lib/interfaces/functions.interfaces.mjs +0 -8
- package/esm2022/localize/lib/interfaces/handlers.interfaces.mjs +0 -2
- package/esm2022/localize/lib/interfaces/options.interfaces.mjs +0 -6
- package/esm2022/localize/lib/localizations/dutch.localization.mjs +0 -64
- package/esm2022/localize/lib/localizations/english.localization.mjs +0 -64
- package/esm2022/localize/lib/localizations/papiamento.localization.mjs +0 -64
- package/esm2022/localize/lib/localizations/spanish.localization.mjs +0 -64
- package/esm2022/localize/lib/localize.config.mjs +0 -43
- package/esm2022/localize/lib/localize.module.mjs +0 -39
- package/esm2022/localize/lib/localize.pipe.mjs +0 -48
- package/esm2022/localize/lib/localize.service.mjs +0 -172
- package/esm2022/localize/lib/localize.tokens.mjs +0 -18
- package/esm2022/localize/lib/transforms/abstract.transform.mjs +0 -30
- package/esm2022/localize/lib/transforms/interpolate.transform.mjs +0 -45
- package/esm2022/localize/lib/transforms/plural.transform.mjs +0 -49
- package/esm2022/localize/lib/transforms/reference.transform.mjs +0 -19
- package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +0 -89
- package/esm2022/localize/lib/views/localize-template.directive.mjs +0 -23
- package/esm2022/localize/public_api.mjs +0 -27
- package/esm2022/masking/bravobit-bb-foundation-masking.mjs +0 -5
- package/esm2022/masking/lib/directives/currency-mask.directive.mjs +0 -41
- package/esm2022/masking/lib/directives/date-mask.directive.mjs +0 -41
- package/esm2022/masking/lib/directives/input-mask.directive.mjs +0 -126
- package/esm2022/masking/lib/input-mask.interface.mjs +0 -2
- package/esm2022/masking/lib/masking.module.mjs +0 -30
- package/esm2022/masking/lib/masking.service.mjs +0 -104
- package/esm2022/masking/public_api.mjs +0 -7
- package/esm2022/notifications/bravobit-bb-foundation-notifications.mjs +0 -5
- package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +0 -112
- package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +0 -48
- package/esm2022/notifications/lib/notifications.animations.mjs +0 -28
- package/esm2022/notifications/lib/notifications.config.mjs +0 -8
- package/esm2022/notifications/lib/notifications.interfaces.mjs +0 -31
- package/esm2022/notifications/lib/notifications.module.mjs +0 -20
- package/esm2022/notifications/lib/notifications.service.mjs +0 -161
- package/esm2022/notifications/public_api.mjs +0 -5
- package/esm2022/permissions/bravobit-bb-foundation-permissions.mjs +0 -5
- package/esm2022/permissions/lib/directives/permission.directive.mjs +0 -95
- package/esm2022/permissions/lib/guards/permission.guard.mjs +0 -25
- package/esm2022/permissions/lib/handlers/abstract.handler.mjs +0 -3
- package/esm2022/permissions/lib/handlers/local.handler.mjs +0 -29
- package/esm2022/permissions/lib/permissions.config.mjs +0 -20
- package/esm2022/permissions/lib/permissions.interface.mjs +0 -8
- package/esm2022/permissions/lib/permissions.module.mjs +0 -25
- package/esm2022/permissions/lib/permissions.service.mjs +0 -100
- package/esm2022/permissions/public_api.mjs +0 -9
- package/esm2022/public_api.mjs +0 -25
- package/esm2022/recaptcha/bravobit-bb-foundation-recaptcha.mjs +0 -5
- package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +0 -225
- package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +0 -80
- package/esm2022/recaptcha/lib/recaptcha.config.mjs +0 -8
- package/esm2022/recaptcha/lib/recaptcha.interface.mjs +0 -3
- package/esm2022/recaptcha/lib/recaptcha.module.mjs +0 -27
- package/esm2022/recaptcha/public_api.mjs +0 -6
- package/esm2022/rxjs/bravobit-bb-foundation-rxjs.mjs +0 -5
- package/esm2022/rxjs/lib/observables/get-control-value.observable.mjs +0 -6
- package/esm2022/rxjs/lib/observables/get-route-param.observable.mjs +0 -5
- package/esm2022/rxjs/lib/operators/combine-latest-map.operator.mjs +0 -10
- package/esm2022/rxjs/lib/operators/filter-nil.operator.mjs +0 -5
- package/esm2022/rxjs/public_api.mjs +0 -5
- package/esm2022/select/bravobit-bb-foundation-select.mjs +0 -5
- package/esm2022/select/lib/select/select.component.mjs +0 -289
- package/esm2022/select/lib/select-label.directive.mjs +0 -18
- package/esm2022/select/lib/select-multi-label.directive.mjs +0 -18
- package/esm2022/select/lib/select-option-group.directive.mjs +0 -18
- package/esm2022/select/lib/select-option.directive.mjs +0 -18
- package/esm2022/select/lib/select.config.mjs +0 -8
- package/esm2022/select/lib/select.module.mjs +0 -46
- package/esm2022/select/public_api.mjs +0 -8
- package/esm2022/storage/bravobit-bb-foundation-storage.mjs +0 -5
- package/esm2022/storage/lib/interfaces/attributes.interface.mjs +0 -2
- package/esm2022/storage/lib/interfaces/memory.interface.mjs +0 -2
- package/esm2022/storage/lib/interfaces/strategy.interface.mjs +0 -2
- package/esm2022/storage/lib/storage.service.mjs +0 -113
- package/esm2022/storage/lib/strategies/cookie-storage.strategy.mjs +0 -144
- package/esm2022/storage/lib/strategies/memory-storage.strategy.mjs +0 -54
- package/esm2022/storage/lib/strategies/polyfill-storage.strategy.mjs +0 -100
- package/esm2022/storage/public_api.mjs +0 -8
- package/esm2022/table/bravobit-bb-foundation-table.mjs +0 -5
- package/esm2022/table/lib/components/table/table.component.mjs +0 -200
- package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +0 -11
- package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +0 -135
- package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +0 -136
- package/esm2022/table/lib/data/datasource.data.mjs +0 -30
- package/esm2022/table/lib/data/generic.data.mjs +0 -84
- package/esm2022/table/lib/interfaces/datasource.interface.mjs +0 -2
- package/esm2022/table/lib/interfaces/table.interfaces.mjs +0 -2
- package/esm2022/table/lib/table.module.mjs +0 -44
- package/esm2022/table/public_api.mjs +0 -10
- package/esm2022/tooltip/bravobit-bb-foundation-tooltip.mjs +0 -5
- package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +0 -23
- package/esm2022/tooltip/lib/tooltip.directive.mjs +0 -130
- package/esm2022/tooltip/lib/tooltip.interfaces.mjs +0 -4
- package/esm2022/tooltip/lib/tooltip.module.mjs +0 -16
- package/esm2022/tooltip/public_api.mjs +0 -5
- package/esm2022/utils/bravobit-bb-foundation-utils.mjs +0 -5
- package/esm2022/utils/lib/directives/autosize.directive.mjs +0 -76
- package/esm2022/utils/lib/directives/focus-trap.directive.mjs +0 -80
- package/esm2022/utils/lib/directives/focus.directive.mjs +0 -57
- package/esm2022/utils/lib/directives/template.directive.mjs +0 -33
- package/esm2022/utils/lib/utils.module.mjs +0 -35
- package/esm2022/utils/public_api.mjs +0 -6
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Inject, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { FormControl, FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
3
|
-
import { BehaviorSubject, combineLatest, Subscription } from 'rxjs';
|
|
4
|
-
import { distinctUntilChanged, map, startWith, tap } from 'rxjs/operators';
|
|
5
|
-
import { BbFormControl } from '../form-control/form-control.component';
|
|
6
|
-
import { BbFormError } from '../form-error/form-error.component';
|
|
7
|
-
import { LOCALIZE_ID } from '@bravobit/bb-foundation/localize';
|
|
8
|
-
import { BbTemplate } from '@bravobit/bb-foundation/utils';
|
|
9
|
-
import { AsyncPipe, formatDate } from '@angular/common';
|
|
10
|
-
import { BbInput } from '../directives/input.directive';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@angular/forms";
|
|
13
|
-
import * as i2 from "rxjs";
|
|
14
|
-
export class BbDatePicker {
|
|
15
|
-
_changeDetectorRef;
|
|
16
|
-
_localizeId;
|
|
17
|
-
// Readonly data.
|
|
18
|
-
_yearRegex = /^(10|[1-9][0-9])\d{2}$/; // Note: 1000 - 9999
|
|
19
|
-
// Inputs.
|
|
20
|
-
label = null;
|
|
21
|
-
hint = null;
|
|
22
|
-
dayPlaceholder = 'dd';
|
|
23
|
-
monthPlaceholder = 'mm';
|
|
24
|
-
yearPlaceholder = 'yyyy';
|
|
25
|
-
required = false;
|
|
26
|
-
grouped = false;
|
|
27
|
-
readonly = false;
|
|
28
|
-
hideErrors = false;
|
|
29
|
-
set disabled(value) {
|
|
30
|
-
this._disabled = value;
|
|
31
|
-
this._disabled ? this.form?.disable() : this.form?.enable();
|
|
32
|
-
this._changeDetectorRef.markForCheck();
|
|
33
|
-
}
|
|
34
|
-
get disabled() {
|
|
35
|
-
return this._disabled;
|
|
36
|
-
}
|
|
37
|
-
set years(value) {
|
|
38
|
-
this.parseYears(value);
|
|
39
|
-
}
|
|
40
|
-
// Forms.
|
|
41
|
-
form;
|
|
42
|
-
// Data.
|
|
43
|
-
data$;
|
|
44
|
-
years$ = new BehaviorSubject(null);
|
|
45
|
-
get value() {
|
|
46
|
-
return this.formToDateString(this.form?.value);
|
|
47
|
-
}
|
|
48
|
-
set value(value) {
|
|
49
|
-
this.parseDateStringInForm(value);
|
|
50
|
-
this.valueChange.emit(this.value);
|
|
51
|
-
}
|
|
52
|
-
valueChange = new EventEmitter();
|
|
53
|
-
// State.
|
|
54
|
-
error = false;
|
|
55
|
-
_disabled = false;
|
|
56
|
-
// Callbacks.
|
|
57
|
-
onTouchedCallback = () => ({});
|
|
58
|
-
onChangeCallback = () => ({});
|
|
59
|
-
// Subscriptions.
|
|
60
|
-
_subscription = new Subscription();
|
|
61
|
-
constructor(_changeDetectorRef, _localizeId) {
|
|
62
|
-
this._changeDetectorRef = _changeDetectorRef;
|
|
63
|
-
this._localizeId = _localizeId;
|
|
64
|
-
}
|
|
65
|
-
ngOnInit() {
|
|
66
|
-
this.composeForm();
|
|
67
|
-
this.getData();
|
|
68
|
-
this.handleChanges();
|
|
69
|
-
}
|
|
70
|
-
ngOnDestroy() {
|
|
71
|
-
this._subscription?.unsubscribe();
|
|
72
|
-
}
|
|
73
|
-
writeValue(value) {
|
|
74
|
-
this.parseDateStringInForm(value);
|
|
75
|
-
}
|
|
76
|
-
registerOnChange(method) {
|
|
77
|
-
this.onChangeCallback = method;
|
|
78
|
-
}
|
|
79
|
-
registerOnTouched(method) {
|
|
80
|
-
this.onTouchedCallback = method;
|
|
81
|
-
}
|
|
82
|
-
setDisabledState(isDisabled) {
|
|
83
|
-
this.disabled = isDisabled;
|
|
84
|
-
}
|
|
85
|
-
onErrorChange(error) {
|
|
86
|
-
this.error = !!error;
|
|
87
|
-
}
|
|
88
|
-
validate({ value }) {
|
|
89
|
-
if (value === null || value === undefined) {
|
|
90
|
-
return null;
|
|
91
|
-
}
|
|
92
|
-
const data = this.parseDateString(value);
|
|
93
|
-
const date = new Date(data?.year, data?.month - 1, data?.day);
|
|
94
|
-
const maxDays = this.getDaysInMonth(data?.month, `${data?.year}`);
|
|
95
|
-
const isInvalidDate = date.toString() === 'Invalid Date';
|
|
96
|
-
const exceededMaxDays = data?.day > maxDays;
|
|
97
|
-
return (isInvalidDate || exceededMaxDays) && {
|
|
98
|
-
invalidDate: true
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
handleChanges() {
|
|
102
|
-
const dateOrNull$ = this.form.valueChanges.pipe(map(value => this.formToDateString(value)), distinctUntilChanged());
|
|
103
|
-
const subscription = dateOrNull$.subscribe(() => {
|
|
104
|
-
this.valueChange.emit(this.value);
|
|
105
|
-
this.onChangeCallback(this.value);
|
|
106
|
-
});
|
|
107
|
-
this._subscription.add(subscription);
|
|
108
|
-
}
|
|
109
|
-
getData() {
|
|
110
|
-
const years$ = this.years$.asObservable();
|
|
111
|
-
const months$ = this.getMonthData();
|
|
112
|
-
const days$ = this.getDayData();
|
|
113
|
-
this.data$ = combineLatest([years$, months$, days$]).pipe(map(([years, months, days]) => ({ years, months, days })), tap(data => this.verifyListData(data?.days?.length, data?.years)));
|
|
114
|
-
}
|
|
115
|
-
verifyListData(maxDays, years) {
|
|
116
|
-
const dayControl = this.form.get('day');
|
|
117
|
-
if (dayControl?.value !== null && dayControl?.value > maxDays) {
|
|
118
|
-
dayControl.patchValue(maxDays);
|
|
119
|
-
}
|
|
120
|
-
const yearControl = this.form.get('year');
|
|
121
|
-
if (years !== null && yearControl?.value !== null && this._yearRegex.test(yearControl?.value)) {
|
|
122
|
-
const selectedYear = Number(yearControl?.value);
|
|
123
|
-
const firstYear = Math.min(...years);
|
|
124
|
-
const lastYear = Math.max(...years);
|
|
125
|
-
if (selectedYear < firstYear || selectedYear > lastYear) {
|
|
126
|
-
Promise.resolve().then(() => yearControl.patchValue(null));
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
getDayData() {
|
|
131
|
-
const count$ = this.form.valueChanges.pipe(startWith(this.form?.value), map(({ month, year }) => this.getDaysInMonth(month, year)), distinctUntilChanged());
|
|
132
|
-
return count$.pipe(map(count => Array(count).fill(0).map((_, index) => ({
|
|
133
|
-
label: `${index + 1}`,
|
|
134
|
-
value: index + 1
|
|
135
|
-
}))));
|
|
136
|
-
}
|
|
137
|
-
getMonthData() {
|
|
138
|
-
return this._localizeId.pipe(map(locale => {
|
|
139
|
-
return Array(12).fill(0).map((_, month) => {
|
|
140
|
-
const date = new Date(2000, month, 1);
|
|
141
|
-
const label = formatDate(date, 'LLLL', locale);
|
|
142
|
-
return { label, value: month + 1 };
|
|
143
|
-
});
|
|
144
|
-
}));
|
|
145
|
-
}
|
|
146
|
-
composeForm() {
|
|
147
|
-
const { required, pattern, minLength, maxLength } = Validators;
|
|
148
|
-
const yearPattern = pattern(this._yearRegex);
|
|
149
|
-
const yearValidators = [required, yearPattern, minLength(4), maxLength(4)];
|
|
150
|
-
this.form = new FormGroup({
|
|
151
|
-
day: new FormControl(null, required),
|
|
152
|
-
month: new FormControl(null, required),
|
|
153
|
-
year: new FormControl(null, yearValidators)
|
|
154
|
-
});
|
|
155
|
-
if (this.disabled) {
|
|
156
|
-
this.form?.disable();
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
parseDateStringInForm(value) {
|
|
160
|
-
// If the date string was not a valid format, reset the form.
|
|
161
|
-
if (!this.isValidDateString(value)) {
|
|
162
|
-
if (value !== null) {
|
|
163
|
-
this.form?.reset({ year: null, month: null, day: null }, { emitEvent: false });
|
|
164
|
-
}
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
// Parse the date string and save in the form.
|
|
168
|
-
const data = this.parseDateString(value);
|
|
169
|
-
const year = data?.year !== null && data?.year !== undefined
|
|
170
|
-
? this.padString(`${data?.year}`, 4, '0')
|
|
171
|
-
: null;
|
|
172
|
-
const formData = { ...(data ?? {}), year };
|
|
173
|
-
this.form?.patchValue(formData, { emitEvent: false });
|
|
174
|
-
}
|
|
175
|
-
parseDateString(value) {
|
|
176
|
-
if (!this.isValidDateString(value)) {
|
|
177
|
-
return null;
|
|
178
|
-
}
|
|
179
|
-
// Parse the date string.
|
|
180
|
-
const [year, month, day] = value?.split('-');
|
|
181
|
-
return {
|
|
182
|
-
day: day ? parseInt(day, 10) : null,
|
|
183
|
-
month: month ? parseInt(month, 10) : null,
|
|
184
|
-
year: year ? parseInt(year, 10) : null
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
parseYears(values) {
|
|
188
|
-
if (!values) {
|
|
189
|
-
return this.years$.next(null);
|
|
190
|
-
}
|
|
191
|
-
// Parse the values to years (in numbers).
|
|
192
|
-
const [first, last] = values;
|
|
193
|
-
const firstYear = this.parseYearFormat(first);
|
|
194
|
-
const lastYear = this.parseYearFormat(last);
|
|
195
|
-
// Check cases in where we cannot parse.
|
|
196
|
-
if (firstYear === null || lastYear === null) {
|
|
197
|
-
return this.years$.next(null);
|
|
198
|
-
}
|
|
199
|
-
const difference = firstYear - lastYear;
|
|
200
|
-
const absoluteDifference = Math.abs(difference) + 1;
|
|
201
|
-
// Create an array with years.
|
|
202
|
-
const years = Array(absoluteDifference)
|
|
203
|
-
.fill(0)
|
|
204
|
-
.map((_, index) => difference < 0 ? (firstYear + index) : (firstYear - index));
|
|
205
|
-
// Validate we have one or more years.
|
|
206
|
-
if (years?.length <= 0) {
|
|
207
|
-
return this.years$.next(null);
|
|
208
|
-
}
|
|
209
|
-
// Push the years.
|
|
210
|
-
return this.years$.next(years);
|
|
211
|
-
}
|
|
212
|
-
formToDateString = ({ year, month, day }) => {
|
|
213
|
-
if (this.form?.invalid) {
|
|
214
|
-
return null;
|
|
215
|
-
}
|
|
216
|
-
const prefixedMonth = this.padString(`${month}`, 2, '0');
|
|
217
|
-
const prefixedDay = this.padString(`${day}`, 2, '0');
|
|
218
|
-
return [year, prefixedMonth, prefixedDay].join('-');
|
|
219
|
-
};
|
|
220
|
-
parseYearFormat = (value) => {
|
|
221
|
-
// Transform the value to a definitive string.
|
|
222
|
-
const yearString = `${value}`;
|
|
223
|
-
const currentFullYear = new Date().getFullYear();
|
|
224
|
-
// Handle default "current" syntax.
|
|
225
|
-
if (yearString === 'current') {
|
|
226
|
-
return currentFullYear;
|
|
227
|
-
}
|
|
228
|
-
// Handle "current + {amount}" syntax.
|
|
229
|
-
if (/^current\s?\+\s?\d+$/.test(yearString)) {
|
|
230
|
-
const amount = Number(yearString?.split('+')?.[1]?.trim()) ?? 0;
|
|
231
|
-
return currentFullYear + amount;
|
|
232
|
-
}
|
|
233
|
-
// Handle "current - {amount}" syntax.
|
|
234
|
-
if (/^current\s?-\s?\d+$/.test(yearString)) {
|
|
235
|
-
const amount = Number(yearString?.split('-')?.[1]?.trim()) ?? 0;
|
|
236
|
-
return currentFullYear - amount;
|
|
237
|
-
}
|
|
238
|
-
// Handling the default number case.
|
|
239
|
-
if (/^[0-9]{4}$/.test(yearString)) {
|
|
240
|
-
return Number(yearString);
|
|
241
|
-
}
|
|
242
|
-
// We could not parse it.
|
|
243
|
-
return null;
|
|
244
|
-
};
|
|
245
|
-
getDaysInMonth = (month = null, year = null) => {
|
|
246
|
-
if (this.form?.invalid || month === null || year === null) {
|
|
247
|
-
return 31;
|
|
248
|
-
}
|
|
249
|
-
const parsedYear = parseInt(year, 10);
|
|
250
|
-
return new Date(parsedYear, month, 0).getDate();
|
|
251
|
-
};
|
|
252
|
-
isValidDateString = (value) => {
|
|
253
|
-
return typeof value === 'string' && /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(value);
|
|
254
|
-
};
|
|
255
|
-
padString = (value, maxLength, fillString = '0') => {
|
|
256
|
-
const count = maxLength - value.length;
|
|
257
|
-
for (let index = 0; index < count; index++) {
|
|
258
|
-
value = `${fillString}${value}`;
|
|
259
|
-
}
|
|
260
|
-
return value;
|
|
261
|
-
};
|
|
262
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbDatePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: LOCALIZE_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
263
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BbDatePicker, isStandalone: true, selector: "bb-date-picker", inputs: { label: "label", hint: "hint", dayPlaceholder: "dayPlaceholder", monthPlaceholder: "monthPlaceholder", yearPlaceholder: "yearPlaceholder", required: ["required", "required", booleanAttribute], grouped: ["grouped", "grouped", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], hideErrors: ["hideErrors", "hideErrors", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], years: "years", value: "value" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.required": "required", "class.readonly": "readonly", "class.disabled": "disabled", "class.grouped": "grouped", "class.error": "error" }, classAttribute: "bb-date-picker" }, providers: [
|
|
264
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbDatePicker), multi: true },
|
|
265
|
-
{ provide: NG_VALIDATORS, useExisting: BbDatePicker, multi: true }
|
|
266
|
-
], ngImport: i0, template: "<!-- Label of the date picker. -->\n@if (label; as labelContent) {\n <label class=\"bb-date-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n@if (data$ | async; as data) {\n <!-- The form containing the year/month/day fields. -->\n <div [formGroup]=\"form\"\n class=\"bb-date-picker-container\">\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('day')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"day\">\n <option [ngValue]=\"null\">{{ dayPlaceholder }}</option>\n @for (day of data?.days; track day?.value) {\n <option [value]=\"day?.value\">{{ day?.label }}</option>\n }\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('month')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"month\">\n <option [ngValue]=\"null\">{{ monthPlaceholder }}</option>\n @for (month of data?.months; track month?.value) {\n <option [value]=\"month?.value\">{{ month?.label }}</option>\n }\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n @if (data?.years?.length > 0) {\n <select [class.has-value]=\"!!form?.get('year')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"year\">\n <option [ngValue]=\"null\">{{ yearPlaceholder }}</option>\n @for (year of data?.years; track year) {\n <option [value]=\"year\">{{ year }}</option>\n }\n </select>\n } @else {\n <input [placeholder]=\"yearPlaceholder\"\n bbInput\n type=\"text\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n pattern=\"^[0-9]{4}$\"\n formControlName=\"year\"\n autocomplete=\"off\">\n }\n </bb-form-control>\n </div>\n </div>\n}\n\n<!-- The date picker error. -->\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n<!-- The date picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-date-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-date-picker{display:block}.bb-date-picker.required>.bb-date-picker-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-date-picker.readonly{pointer-events:none}.bb-date-picker.readonly>.bb-date-picker-container>.bb-date-picker-item>.bb-form-control>.bb-form-control-container{cursor:default;border-style:dotted;border-color:#bdc4c9}.bb-date-picker.readonly>.bb-date-picker-container>.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select:disabled{opacity:1}.bb-date-picker.grouped{margin-bottom:1.5rem}.bb-date-picker.error>.bb-date-picker-label{color:#c23934}.bb-date-picker.error>.bb-date-picker-container>.bb-date-picker-item>.bb-form-control>.bb-form-control-container{border-color:#841515;background-color:#f8d3d3}.bb-date-picker.error>.bb-date-picker-container>.bb-date-picker-item>.bb-form-control>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-date-picker-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color, #525252);font-weight:var(--bb-form-label-font-weight, 400);font-size:var(--bb-form-label-font-size, .875rem)}.bb-date-picker-container{display:flex}.bb-date-picker-item{flex:1}.bb-date-picker-item>.bb-form-control>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){z-index:1;position:relative}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select>option:first-child{color:#d2d2d2}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select:not(.has-value){color:#d2d2d2}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select:not(.has-value)>option:not(:first-child){color:#111}.bb-date-picker-item:not(:first-child):not(:last-child){margin:0 -1px}.bb-date-picker-item:not(:first-child):not(:last-child)>.bb-form-control>.bb-form-control-container{border-radius:0}.bb-date-picker-item:first-child>.bb-form-control>.bb-form-control-container{border-top-right-radius:0;border-bottom-right-radius:0}.bb-date-picker-item:last-child>.bb-form-control>.bb-form-control-container{border-top-left-radius:0;border-bottom-left-radius:0}.bb-date-picker-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: BbFormControl, selector: "bb-form-control", inputs: ["label", "hint", "grouped", "hideErrors"] }, { kind: "directive", type: BbInput, selector: "input[bbInput],textarea[bbInput],select[bbInput]", inputs: ["required"] }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
267
|
-
}
|
|
268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbDatePicker, decorators: [{
|
|
269
|
-
type: Component,
|
|
270
|
-
args: [{ selector: 'bb-date-picker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
|
|
271
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbDatePicker), multi: true },
|
|
272
|
-
{ provide: NG_VALIDATORS, useExisting: BbDatePicker, multi: true }
|
|
273
|
-
], host: {
|
|
274
|
-
'class': 'bb-date-picker',
|
|
275
|
-
'[class.required]': 'required',
|
|
276
|
-
'[class.readonly]': 'readonly',
|
|
277
|
-
'[class.disabled]': 'disabled',
|
|
278
|
-
'[class.grouped]': 'grouped',
|
|
279
|
-
'[class.error]': 'error'
|
|
280
|
-
}, preserveWhitespaces: false, imports: [
|
|
281
|
-
BbTemplate,
|
|
282
|
-
AsyncPipe,
|
|
283
|
-
ReactiveFormsModule,
|
|
284
|
-
BbFormControl,
|
|
285
|
-
BbInput,
|
|
286
|
-
BbFormError
|
|
287
|
-
], standalone: true, template: "<!-- Label of the date picker. -->\n@if (label; as labelContent) {\n <label class=\"bb-date-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n@if (data$ | async; as data) {\n <!-- The form containing the year/month/day fields. -->\n <div [formGroup]=\"form\"\n class=\"bb-date-picker-container\">\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('day')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"day\">\n <option [ngValue]=\"null\">{{ dayPlaceholder }}</option>\n @for (day of data?.days; track day?.value) {\n <option [value]=\"day?.value\">{{ day?.label }}</option>\n }\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('month')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"month\">\n <option [ngValue]=\"null\">{{ monthPlaceholder }}</option>\n @for (month of data?.months; track month?.value) {\n <option [value]=\"month?.value\">{{ month?.label }}</option>\n }\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n @if (data?.years?.length > 0) {\n <select [class.has-value]=\"!!form?.get('year')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"year\">\n <option [ngValue]=\"null\">{{ yearPlaceholder }}</option>\n @for (year of data?.years; track year) {\n <option [value]=\"year\">{{ year }}</option>\n }\n </select>\n } @else {\n <input [placeholder]=\"yearPlaceholder\"\n bbInput\n type=\"text\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n pattern=\"^[0-9]{4}$\"\n formControlName=\"year\"\n autocomplete=\"off\">\n }\n </bb-form-control>\n </div>\n </div>\n}\n\n<!-- The date picker error. -->\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n<!-- The date picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-date-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-date-picker{display:block}.bb-date-picker.required>.bb-date-picker-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-date-picker.readonly{pointer-events:none}.bb-date-picker.readonly>.bb-date-picker-container>.bb-date-picker-item>.bb-form-control>.bb-form-control-container{cursor:default;border-style:dotted;border-color:#bdc4c9}.bb-date-picker.readonly>.bb-date-picker-container>.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select:disabled{opacity:1}.bb-date-picker.grouped{margin-bottom:1.5rem}.bb-date-picker.error>.bb-date-picker-label{color:#c23934}.bb-date-picker.error>.bb-date-picker-container>.bb-date-picker-item>.bb-form-control>.bb-form-control-container{border-color:#841515;background-color:#f8d3d3}.bb-date-picker.error>.bb-date-picker-container>.bb-date-picker-item>.bb-form-control>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-date-picker-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color, #525252);font-weight:var(--bb-form-label-font-weight, 400);font-size:var(--bb-form-label-font-size, .875rem)}.bb-date-picker-container{display:flex}.bb-date-picker-item{flex:1}.bb-date-picker-item>.bb-form-control>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){z-index:1;position:relative}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select>option:first-child{color:#d2d2d2}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select:not(.has-value){color:#d2d2d2}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select:not(.has-value)>option:not(:first-child){color:#111}.bb-date-picker-item:not(:first-child):not(:last-child){margin:0 -1px}.bb-date-picker-item:not(:first-child):not(:last-child)>.bb-form-control>.bb-form-control-container{border-radius:0}.bb-date-picker-item:first-child>.bb-form-control>.bb-form-control-container{border-top-right-radius:0;border-bottom-right-radius:0}.bb-date-picker-item:last-child>.bb-form-control>.bb-form-control-container{border-top-left-radius:0;border-bottom-left-radius:0}.bb-date-picker-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"] }]
|
|
288
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2.Observable, decorators: [{
|
|
289
|
-
type: Inject,
|
|
290
|
-
args: [LOCALIZE_ID]
|
|
291
|
-
}] }], propDecorators: { label: [{
|
|
292
|
-
type: Input
|
|
293
|
-
}], hint: [{
|
|
294
|
-
type: Input
|
|
295
|
-
}], dayPlaceholder: [{
|
|
296
|
-
type: Input
|
|
297
|
-
}], monthPlaceholder: [{
|
|
298
|
-
type: Input
|
|
299
|
-
}], yearPlaceholder: [{
|
|
300
|
-
type: Input
|
|
301
|
-
}], required: [{
|
|
302
|
-
type: Input,
|
|
303
|
-
args: [{ transform: booleanAttribute }]
|
|
304
|
-
}], grouped: [{
|
|
305
|
-
type: Input,
|
|
306
|
-
args: [{ transform: booleanAttribute }]
|
|
307
|
-
}], readonly: [{
|
|
308
|
-
type: Input,
|
|
309
|
-
args: [{ transform: booleanAttribute }]
|
|
310
|
-
}], hideErrors: [{
|
|
311
|
-
type: Input,
|
|
312
|
-
args: [{ transform: booleanAttribute }]
|
|
313
|
-
}], disabled: [{
|
|
314
|
-
type: Input,
|
|
315
|
-
args: [{ transform: booleanAttribute }]
|
|
316
|
-
}], years: [{
|
|
317
|
-
type: Input
|
|
318
|
-
}], value: [{
|
|
319
|
-
type: Input
|
|
320
|
-
}], valueChange: [{
|
|
321
|
-
type: Output
|
|
322
|
-
}] } });
|
|
323
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFFTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1QixXQUFXLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvSSxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDN0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLE9B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OzJCQUFDLFdBQVc7eUNBN0R0QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ2dDLFFBQVE7c0JBQTdDLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBQ0UsT0FBTztzQkFBNUMsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQztnQkFDRSxRQUFRO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDO2dCQUNFLFVBQVU7c0JBQS9DLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBR2hDLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQztnQkFZaEMsS0FBSztzQkFEUixLQUFLO2dCQXFCRixLQUFLO3NCQURSLEtBQUs7Z0JBTUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGgsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtCYkZvcm1Db250cm9sfSBmcm9tICcuLi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudCc7XG5pbXBvcnQge0JiRm9ybUVycm9yfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50JztcbmltcG9ydCB7TE9DQUxJWkVfSUR9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL2xvY2FsaXplJztcbmltcG9ydCB7QmJUZW1wbGF0ZX0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vdXRpbHMnO1xuaW1wb3J0IHtBc3luY1BpcGUsIGZvcm1hdERhdGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0JiSW5wdXR9IGZyb20gJy4uL2RpcmVjdGl2ZXMvaW5wdXQuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYi1kYXRlLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQmJEYXRlUGlja2VyKSwgbXVsdGk6IHRydWV9LFxuICAgICAgICB7cHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IEJiRGF0ZVBpY2tlciwgbXVsdGk6IHRydWV9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYi1kYXRlLXBpY2tlcicsXG4gICAgICAgICdbY2xhc3MucmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAgICAgJ1tjbGFzcy5yZWFkb25seV0nOiAncmVhZG9ubHknLFxuICAgICAgICAnW2NsYXNzLmRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgICAgICdbY2xhc3MuZ3JvdXBlZF0nOiAnZ3JvdXBlZCcsXG4gICAgICAgICdbY2xhc3MuZXJyb3JdJzogJ2Vycm9yJ1xuICAgIH0sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBCYlRlbXBsYXRlLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEJiRm9ybUNvbnRyb2wsXG4gICAgICAgIEJiSW5wdXQsXG4gICAgICAgIEJiRm9ybUVycm9yXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEJiRGF0ZVBpY2tlciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvLyBSZWFkb25seSBkYXRhLlxuICAgIHJlYWRvbmx5IF95ZWFyUmVnZXggPSAvXigxMHxbMS05XVswLTldKVxcZHsyfSQvOyAvLyBOb3RlOiAxMDAwIC0gOTk5OVxuXG4gICAgLy8gSW5wdXRzLlxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgaGludDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGRheVBsYWNlaG9sZGVyOiBzdHJpbmcgfCBudWxsID0gJ2RkJztcbiAgICBASW5wdXQoKSBtb250aFBsYWNlaG9sZGVyOiBzdHJpbmcgfCBudWxsID0gJ21tJztcbiAgICBASW5wdXQoKSB5ZWFyUGxhY2Vob2xkZXI6IHN0cmluZyB8IG51bGwgPSAneXl5eSc7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSkgZ3JvdXBlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pIGhpZGVFcnJvcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSlcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLmZvcm0/LmRpc2FibGUoKSA6IHRoaXMuZm9ybT8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHllYXJzKHZhbHVlOiBbc3RyaW5nIHwgbnVtYmVyLCBzdHJpbmcgfCBudW1iZXJdIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnBhcnNlWWVhcnModmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEZvcm1zLlxuICAgIGZvcm06IEZvcm1Hcm91cDtcblxuICAgIC8vIERhdGEuXG4gICAgZGF0YSQ6IE9ic2VydmFibGU8e1xuICAgICAgICBkYXlzPzogeyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIH1bXSxcbiAgICAgICAgbW9udGhzPzogeyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIH1bXSxcbiAgICAgICAgeWVhcnM/OiBudW1iZXJbXSB8IG51bGxcbiAgICB9PjtcbiAgICB5ZWFycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcltdIHwgbnVsbD4obnVsbCk7XG5cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1Ub0RhdGVTdHJpbmcodGhpcy5mb3JtPy52YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5wYXJzZURhdGVTdHJpbmdJbkZvcm0odmFsdWUpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gICAgLy8gU3RhdGUuXG4gICAgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gQ2FsbGJhY2tzLlxuICAgIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gKCkgPT4gKHt9KTtcbiAgICBvbkNoYW5nZUNhbGxiYWNrOiAoXzogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG5cbiAgICAvLyBTdWJzY3JpcHRpb25zLlxuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgICBASW5qZWN0KExPQ0FMSVpFX0lEKSBwcml2YXRlIF9sb2NhbGl6ZUlkOiBPYnNlcnZhYmxlPHN0cmluZz4pIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb21wb3NlRm9ybSgpO1xuICAgICAgICB0aGlzLmdldERhdGEoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHRoaXMucGFyc2VEYXRlU3RyaW5nSW5Gb3JtKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKG1ldGhvZDogKF86IHN0cmluZyB8IG51bGwpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gbWV0aG9kO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKG1ldGhvZDogKCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gbWV0aG9kO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBvbkVycm9yQ2hhbmdlKGVycm9yOiB7IHRva2VuOiBzdHJpbmcsIGRhdGE/OiBhbnkgfSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5lcnJvciA9ICEhZXJyb3I7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoe3ZhbHVlfTogRm9ybUNvbnRyb2w8c3RyaW5nPikge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5wYXJzZURhdGVTdHJpbmcodmFsdWUpO1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0YT8ueWVhciwgZGF0YT8ubW9udGggLSAxLCBkYXRhPy5kYXkpO1xuXG4gICAgICAgIGNvbnN0IG1heERheXMgPSB0aGlzLmdldERheXNJbk1vbnRoKGRhdGE/Lm1vbnRoLCBgJHtkYXRhPy55ZWFyfWApO1xuXG4gICAgICAgIGNvbnN0IGlzSW52YWxpZERhdGUgPSBkYXRlLnRvU3RyaW5nKCkgPT09ICdJbnZhbGlkIERhdGUnO1xuICAgICAgICBjb25zdCBleGNlZWRlZE1heERheXMgPSBkYXRhPy5kYXkgPiBtYXhEYXlzO1xuXG4gICAgICAgIHJldHVybiAoaXNJbnZhbGlkRGF0ZSB8fCBleGNlZWRlZE1heERheXMpICYmIHtcbiAgICAgICAgICAgIGludmFsaWREYXRlOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VzKCkge1xuICAgICAgICBjb25zdCBkYXRlT3JOdWxsJCA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLmZvcm1Ub0RhdGVTdHJpbmcodmFsdWUpKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBkYXRlT3JOdWxsJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMudmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChzdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0YSgpIHtcbiAgICAgICAgY29uc3QgeWVhcnMkID0gdGhpcy55ZWFycyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIGNvbnN0IG1vbnRocyQgPSB0aGlzLmdldE1vbnRoRGF0YSgpO1xuICAgICAgICBjb25zdCBkYXlzJCA9IHRoaXMuZ2V0RGF5RGF0YSgpO1xuXG4gICAgICAgIHRoaXMuZGF0YSQgPSBjb21iaW5lTGF0ZXN0KFt5ZWFycyQsIG1vbnRocyQsIGRheXMkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3llYXJzLCBtb250aHMsIGRheXNdKSA9PiAoe3llYXJzLCBtb250aHMsIGRheXN9KSksXG4gICAgICAgICAgICB0YXAoZGF0YSA9PiB0aGlzLnZlcmlmeUxpc3REYXRhKGRhdGE/LmRheXM/Lmxlbmd0aCwgZGF0YT8ueWVhcnMpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmVyaWZ5TGlzdERhdGEobWF4RGF5czogbnVtYmVyLCB5ZWFyczogbnVtYmVyW10gfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IGRheUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdkYXknKTtcbiAgICAgICAgaWYgKGRheUNvbnRyb2w/LnZhbHVlICE9PSBudWxsICYmIGRheUNvbnRyb2w/LnZhbHVlID4gbWF4RGF5cykge1xuICAgICAgICAgICAgZGF5Q29udHJvbC5wYXRjaFZhbHVlKG1heERheXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeWVhckNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCd5ZWFyJyk7XG4gICAgICAgIGlmICh5ZWFycyAhPT0gbnVsbCAmJiB5ZWFyQ29udHJvbD8udmFsdWUgIT09IG51bGwgJiYgdGhpcy5feWVhclJlZ2V4LnRlc3QoeWVhckNvbnRyb2w/LnZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRZZWFyID0gTnVtYmVyKHllYXJDb250cm9sPy52YWx1ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0WWVhciA9IE1hdGgubWluKC4uLnllYXJzKTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RZZWFyID0gTWF0aC5tYXgoLi4ueWVhcnMpO1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRZZWFyIDwgZmlyc3RZZWFyIHx8IHNlbGVjdGVkWWVhciA+IGxhc3RZZWFyKSB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB5ZWFyQ29udHJvbC5wYXRjaFZhbHVlKG51bGwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF5RGF0YSgpIHtcbiAgICAgICAgY29uc3QgY291bnQkID0gdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuZm9ybT8udmFsdWUgYXMgb2JqZWN0KSxcbiAgICAgICAgICAgIG1hcCgoe21vbnRoLCB5ZWFyfSkgPT4gdGhpcy5nZXREYXlzSW5Nb250aChtb250aCwgeWVhcikpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBjb3VudCQucGlwZShcbiAgICAgICAgICAgIG1hcChjb3VudCA9PiBBcnJheShjb3VudCkuZmlsbCgwKS5tYXAoKF8sIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBgJHtpbmRleCArIDF9YCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogaW5kZXggKyAxXG4gICAgICAgICAgICB9KSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNb250aERhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGl6ZUlkLnBpcGUoXG4gICAgICAgICAgICBtYXAobG9jYWxlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkoMTIpLmZpbGwoMCkubWFwKChfLCBtb250aCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAwMCwgbW9udGgsIDEpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGZvcm1hdERhdGUoZGF0ZSwgJ0xMTEwnLCBsb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge2xhYmVsLCB2YWx1ZTogbW9udGggKyAxfTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wb3NlRm9ybSgpIHtcbiAgICAgICAgY29uc3Qge3JlcXVpcmVkLCBwYXR0ZXJuLCBtaW5MZW5ndGgsIG1heExlbmd0aH0gPSBWYWxpZGF0b3JzO1xuICAgICAgICBjb25zdCB5ZWFyUGF0dGVybiA9IHBhdHRlcm4odGhpcy5feWVhclJlZ2V4KTtcbiAgICAgICAgY29uc3QgeWVhclZhbGlkYXRvcnMgPSBbcmVxdWlyZWQsIHllYXJQYXR0ZXJuLCBtaW5MZW5ndGgoNCksIG1heExlbmd0aCg0KV07XG5cbiAgICAgICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICBkYXk6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KG51bGwsIHJlcXVpcmVkKSxcbiAgICAgICAgICAgIG1vbnRoOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihudWxsLCByZXF1aXJlZCksXG4gICAgICAgICAgICB5ZWFyOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihudWxsLCB5ZWFyVmFsaWRhdG9ycylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybT8uZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZURhdGVTdHJpbmdJbkZvcm0odmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgLy8gSWYgdGhlIGRhdGUgc3RyaW5nIHdhcyBub3QgYSB2YWxpZCBmb3JtYXQsIHJlc2V0IHRoZSBmb3JtLlxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZERhdGVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0/LnJlc2V0KHt5ZWFyOiBudWxsLCBtb250aDogbnVsbCwgZGF5OiBudWxsfSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBhcnNlIHRoZSBkYXRlIHN0cmluZyBhbmQgc2F2ZSBpbiB0aGUgZm9ybS5cbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMucGFyc2VEYXRlU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgY29uc3QgeWVhciA9IGRhdGE/LnllYXIgIT09IG51bGwgJiYgZGF0YT8ueWVhciAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHRoaXMucGFkU3RyaW5nKGAke2RhdGE/LnllYXJ9YCwgNCwgJzAnKVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHsuLi4oZGF0YSA/PyB7fSksIHllYXJ9O1xuXG4gICAgICAgIHRoaXMuZm9ybT8ucGF0Y2hWYWx1ZShmb3JtRGF0YSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRGF0ZVN0cmluZyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkRGF0ZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGFyc2UgdGhlIGRhdGUgc3RyaW5nLlxuICAgICAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSB2YWx1ZT8uc3BsaXQoJy0nKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF5OiBkYXkgPyBwYXJzZUludChkYXksIDEwKSA6IG51bGwsXG4gICAgICAgICAgICBtb250aDogbW9udGggPyBwYXJzZUludChtb250aCwgMTApIDogbnVsbCxcbiAgICAgICAgICAgIHllYXI6IHllYXIgPyBwYXJzZUludCh5ZWFyLCAxMCkgOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVllYXJzKHZhbHVlczogW3N0cmluZyB8IG51bWJlciwgc3RyaW5nIHwgbnVtYmVyXSB8IG51bGwpIHtcbiAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnllYXJzJC5uZXh0KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGFyc2UgdGhlIHZhbHVlcyB0byB5ZWFycyAoaW4gbnVtYmVycykuXG4gICAgICAgIGNvbnN0IFtmaXJzdCwgbGFzdF0gPSB2YWx1ZXM7XG4gICAgICAgIGNvbnN0IGZpcnN0WWVhciA9IHRoaXMucGFyc2VZZWFyRm9ybWF0KGZpcnN0KTtcbiAgICAgICAgY29uc3QgbGFzdFllYXIgPSB0aGlzLnBhcnNlWWVhckZvcm1hdChsYXN0KTtcblxuICAgICAgICAvLyBDaGVjayBjYXNlcyBpbiB3aGVyZSB3ZSBjYW5ub3QgcGFyc2UuXG4gICAgICAgIGlmIChmaXJzdFllYXIgPT09IG51bGwgfHwgbGFzdFllYXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnllYXJzJC5uZXh0KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IGZpcnN0WWVhciAtIGxhc3RZZWFyO1xuICAgICAgICBjb25zdCBhYnNvbHV0ZURpZmZlcmVuY2UgPSBNYXRoLmFicyhkaWZmZXJlbmNlKSArIDE7XG5cbiAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IHdpdGggeWVhcnMuXG4gICAgICAgIGNvbnN0IHllYXJzID0gQXJyYXkoYWJzb2x1dGVEaWZmZXJlbmNlKVxuICAgICAgICAgICAgLmZpbGwoMClcbiAgICAgICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiBkaWZmZXJlbmNlIDwgMCA/IChmaXJzdFllYXIgKyBpbmRleCkgOiAoZmlyc3RZZWFyIC0gaW5kZXgpKTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSB3ZSBoYXZlIG9uZSBvciBtb3JlIHllYXJzLlxuICAgICAgICBpZiAoeWVhcnM/Lmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55ZWFycyQubmV4dChudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFB1c2ggdGhlIHllYXJzLlxuICAgICAgICByZXR1cm4gdGhpcy55ZWFycyQubmV4dCh5ZWFycyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtVG9EYXRlU3RyaW5nID0gKHt5ZWFyLCBtb250aCwgZGF5fSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5mb3JtPy5pbnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZWZpeGVkTW9udGggPSB0aGlzLnBhZFN0cmluZyhgJHttb250aH1gLCAyLCAnMCcpO1xuICAgICAgICBjb25zdCBwcmVmaXhlZERheSA9IHRoaXMucGFkU3RyaW5nKGAke2RheX1gLCAyLCAnMCcpO1xuXG4gICAgICAgIHJldHVybiBbeWVhciwgcHJlZml4ZWRNb250aCwgcHJlZml4ZWREYXldLmpvaW4oJy0nKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwYXJzZVllYXJGb3JtYXQgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIHZhbHVlIHRvIGEgZGVmaW5pdGl2ZSBzdHJpbmcuXG4gICAgICAgIGNvbnN0IHllYXJTdHJpbmcgPSBgJHt2YWx1ZX1gO1xuICAgICAgICBjb25zdCBjdXJyZW50RnVsbFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG5cbiAgICAgICAgLy8gSGFuZGxlIGRlZmF1bHQgXCJjdXJyZW50XCIgc3ludGF4LlxuICAgICAgICBpZiAoeWVhclN0cmluZyA9PT0gJ2N1cnJlbnQnKSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEZ1bGxZZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZGxlIFwiY3VycmVudCArIHthbW91bnR9XCIgc3ludGF4LlxuICAgICAgICBpZiAoL15jdXJyZW50XFxzP1xcK1xccz9cXGQrJC8udGVzdCh5ZWFyU3RyaW5nKSkge1xuICAgICAgICAgICAgY29uc3QgYW1vdW50ID0gTnVtYmVyKHllYXJTdHJpbmc/LnNwbGl0KCcrJyk/LlsxXT8udHJpbSgpKSA/PyAwO1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRGdWxsWWVhciArIGFtb3VudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSBcImN1cnJlbnQgLSB7YW1vdW50fVwiIHN5bnRheC5cbiAgICAgICAgaWYgKC9eY3VycmVudFxccz8tXFxzP1xcZCskLy50ZXN0KHllYXJTdHJpbmcpKSB7XG4gICAgICAgICAgICBjb25zdCBhbW91bnQgPSBOdW1iZXIoeWVhclN0cmluZz8uc3BsaXQoJy0nKT8uWzFdPy50cmltKCkpID8/IDA7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEZ1bGxZZWFyIC0gYW1vdW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZGxpbmcgdGhlIGRlZmF1bHQgbnVtYmVyIGNhc2UuXG4gICAgICAgIGlmICgvXlswLTldezR9JC8udGVzdCh5ZWFyU3RyaW5nKSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcih5ZWFyU3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIGNvdWxkIG5vdCBwYXJzZSBpdC5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0RGF5c0luTW9udGggPSAobW9udGg6IG51bWJlciB8IG51bGwgPSBudWxsLCB5ZWFyOiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5mb3JtPy5pbnZhbGlkIHx8IG1vbnRoID09PSBudWxsIHx8IHllYXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAzMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnNlZFllYXIgPSBwYXJzZUludCh5ZWFyLCAxMCk7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShwYXJzZWRZZWFyLCBtb250aCwgMCkuZ2V0RGF0ZSgpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGlzVmFsaWREYXRlU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIC9eWzAtOV17NH0tWzAtOV17Mn0tWzAtOV17Mn0kLy50ZXN0KHZhbHVlKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwYWRTdHJpbmcgPSAodmFsdWU6IHN0cmluZywgbWF4TGVuZ3RoOiBudW1iZXIsIGZpbGxTdHJpbmc6IHN0cmluZyA9ICcwJykgPT4ge1xuICAgICAgICBjb25zdCBjb3VudCA9IG1heExlbmd0aCAtIHZhbHVlLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsrKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGAke2ZpbGxTdHJpbmd9JHt2YWx1ZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG5cbn1cbiIsIjwhLS0gTGFiZWwgb2YgdGhlIGRhdGUgcGlja2VyLiAtLT5cbkBpZiAobGFiZWw7IGFzIGxhYmVsQ29udGVudCkge1xuICAgIDxsYWJlbCBjbGFzcz1cImJiLWRhdGUtcGlja2VyLWxhYmVsXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJsYWJlbENvbnRlbnRcIj57eyBsYWJlbENvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuICAgIDwvbGFiZWw+XG59XG5cbkBpZiAoZGF0YSQgfCBhc3luYzsgYXMgZGF0YSkge1xuICAgIDwhLS0gVGhlIGZvcm0gY29udGFpbmluZyB0aGUgeWVhci9tb250aC9kYXkgZmllbGRzLiAtLT5cbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgICAgICBjbGFzcz1cImJiLWRhdGUtcGlja2VyLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmItZGF0ZS1waWNrZXItaXRlbVwiPlxuICAgICAgICAgICAgPGJiLWZvcm0tY29udHJvbCBoaWRlRXJyb3JzPlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgW2NsYXNzLmhhcy12YWx1ZV09XCIhIWZvcm0/LmdldCgnZGF5Jyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJiSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCI+e3sgZGF5UGxhY2Vob2xkZXIgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZGF5IG9mIGRhdGE/LmRheXM7IHRyYWNrIGRheT8udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cImRheT8udmFsdWVcIj57eyBkYXk/LmxhYmVsIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDwvYmItZm9ybS1jb250cm9sPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJiLWRhdGUtcGlja2VyLWl0ZW1cIj5cbiAgICAgICAgICAgIDxiYi1mb3JtLWNvbnRyb2wgaGlkZUVycm9ycz5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IFtjbGFzcy5oYXMtdmFsdWVdPVwiISFmb3JtPy5nZXQoJ21vbnRoJyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJiSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtb250aFwiPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIj57eyBtb250aFBsYWNlaG9sZGVyIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKG1vbnRoIG9mIGRhdGE/Lm1vbnRoczsgdHJhY2sgbW9udGg/LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJtb250aD8udmFsdWVcIj57eyBtb250aD8ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9iYi1mb3JtLWNvbnRyb2w+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmItZGF0ZS1waWNrZXItaXRlbVwiPlxuICAgICAgICAgICAgPGJiLWZvcm0tY29udHJvbCBoaWRlRXJyb3JzPlxuICAgICAgICAgICAgICAgIEBpZiAoZGF0YT8ueWVhcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBbY2xhc3MuaGFzLXZhbHVlXT1cIiEhZm9ybT8uZ2V0KCd5ZWFyJyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYklucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ5ZWFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIj57eyB5ZWFyUGxhY2Vob2xkZXIgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHllYXIgb2YgZGF0YT8ueWVhcnM7IHRyYWNrIHllYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ5ZWFyXCI+e3sgeWVhciB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ5ZWFyUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg9XCI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybj1cIl5bMC05XXs0fSRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwieWVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2JiLWZvcm0tY29udHJvbD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG59XG5cbjwhLS0gVGhlIGRhdGUgcGlja2VyIGVycm9yLiAtLT5cbkBpZiAoIWhpZGVFcnJvcnMpIHtcbiAgICA8YmItZm9ybS1lcnJvciAoZXJyb3JDaGFuZ2UpPVwib25FcnJvckNoYW5nZSgkZXZlbnQpXCI+PC9iYi1mb3JtLWVycm9yPlxufVxuPCEtLSBUaGUgZGF0ZSBwaWNrZXIgaGludC4gLS0+XG5AaWYgKGhpbnQ7IGFzIGhpbnRDb250ZW50KSB7XG4gICAgPHAgY2xhc3M9XCJiYi1kYXRlLXBpY2tlci1oaW50XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJoaW50Q29udGVudFwiPnt7IGhpbnRDb250ZW50IH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8L3A+XG59XG4iXX0=
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class BbSuffix {
|
|
4
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: BbSuffix, isStandalone: true, selector: "[bbSuffix]", host: { classAttribute: "bb-suffix" }, ngImport: i0 });
|
|
6
|
-
}
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbSuffix, decorators: [{
|
|
8
|
-
type: Directive,
|
|
9
|
-
args: [{
|
|
10
|
-
selector: '[bbSuffix]',
|
|
11
|
-
host: { 'class': 'bb-suffix' },
|
|
12
|
-
standalone: true
|
|
13
|
-
}]
|
|
14
|
-
}] });
|
|
15
|
-
export class BbPrefix {
|
|
16
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
17
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: BbPrefix, isStandalone: true, selector: "[bbPrefix]", host: { classAttribute: "bb-prefix" }, ngImport: i0 });
|
|
18
|
-
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbPrefix, decorators: [{
|
|
20
|
-
type: Directive,
|
|
21
|
-
args: [{
|
|
22
|
-
selector: '[bbPrefix]',
|
|
23
|
-
host: { 'class': 'bb-prefix' },
|
|
24
|
-
standalone: true
|
|
25
|
-
}]
|
|
26
|
-
}] });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvYWRkb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBT3hDLE1BQU0sT0FBTyxRQUFRO3dHQUFSLFFBQVE7NEZBQVIsUUFBUTs7NEZBQVIsUUFBUTtrQkFMcEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsSUFBSSxFQUFFLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBQztvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ25COztBQVNELE1BQU0sT0FBTyxRQUFRO3dHQUFSLFFBQVE7NEZBQVIsUUFBUTs7NEZBQVIsUUFBUTtrQkFMcEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsSUFBSSxFQUFFLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBQztvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tiYlN1ZmZpeF0nLFxuICAgIGhvc3Q6IHsnY2xhc3MnOiAnYmItc3VmZml4J30sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBCYlN1ZmZpeCB7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2JiUHJlZml4XScsXG4gICAgaG9zdDogeydjbGFzcyc6ICdiYi1wcmVmaXgnfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEJiUHJlZml4IHtcbn1cbiJdfQ==
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
2
|
-
import { Directive, Input } from '@angular/core';
|
|
3
|
-
import { distinctUntilChanged, map } from 'rxjs/operators';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class BbExtraErrorControls {
|
|
6
|
-
// State.
|
|
7
|
-
changes = new BehaviorSubject(null);
|
|
8
|
-
// Subscriptions.
|
|
9
|
-
_subscription = null;
|
|
10
|
-
set extraControls(controls) {
|
|
11
|
-
this.handle(controls);
|
|
12
|
-
}
|
|
13
|
-
ngOnDestroy() {
|
|
14
|
-
this._subscription?.unsubscribe();
|
|
15
|
-
}
|
|
16
|
-
handle(controls) {
|
|
17
|
-
this._subscription?.unsubscribe();
|
|
18
|
-
if (controls.length <= 0) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
const validationErrors$ = controls.map(control => {
|
|
22
|
-
return control.valueChanges.pipe(map(_ => control?.errors));
|
|
23
|
-
});
|
|
24
|
-
const errors$ = combineLatest(validationErrors$).pipe(map(validationErrors => validationErrors.find(error => !!error)), distinctUntilChanged());
|
|
25
|
-
this._subscription = errors$
|
|
26
|
-
.subscribe(errors => this.changes.next(errors ?? null));
|
|
27
|
-
}
|
|
28
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbExtraErrorControls, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
29
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: BbExtraErrorControls, isStandalone: true, selector: "[bbExtraErrorControls]", inputs: { extraControls: ["bbExtraErrorControls", "extraControls"] }, ngImport: i0 });
|
|
30
|
-
}
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbExtraErrorControls, decorators: [{
|
|
32
|
-
type: Directive,
|
|
33
|
-
args: [{
|
|
34
|
-
selector: '[bbExtraErrorControls]',
|
|
35
|
-
standalone: true
|
|
36
|
-
}]
|
|
37
|
-
}], propDecorators: { extraControls: [{
|
|
38
|
-
type: Input,
|
|
39
|
-
args: [{ alias: 'bbExtraErrorControls' }]
|
|
40
|
-
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmEtZXJyb3ItY29udHJvbHMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvZXh0cmEtZXJyb3ItY29udHJvbHMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBRWxFLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFNekQsTUFBTSxPQUFPLG9CQUFvQjtJQUU3QixTQUFTO0lBQ0EsT0FBTyxHQUFHLElBQUksZUFBZSxDQUEwQixJQUFJLENBQUMsQ0FBQztJQUV0RSxpQkFBaUI7SUFDVCxhQUFhLEdBQXdCLElBQUksQ0FBQztJQUVsRCxJQUNJLGFBQWEsQ0FBQyxRQUEyQjtRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sTUFBTSxDQUFDLFFBQTJCO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFbEMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzdDLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FDNUIsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUNqRCxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNoRSxvQkFBb0IsRUFBRSxDQUN6QixDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPO2FBQ3ZCLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7d0dBckNRLG9CQUFvQjs0RkFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFVTyxhQUFhO3NCQURoQixLQUFLO3VCQUFDLEVBQUMsS0FBSyxFQUFFLHNCQUFzQixFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtEaXJlY3RpdmUsIElucHV0LCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2JiRXh0cmFFcnJvckNvbnRyb2xzXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBCYkV4dHJhRXJyb3JDb250cm9scyBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICByZWFkb25seSBjaGFuZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvLyBTdWJzY3JpcHRpb25zLlxuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoe2FsaWFzOiAnYmJFeHRyYUVycm9yQ29udHJvbHMnfSlcbiAgICBzZXQgZXh0cmFDb250cm9scyhjb250cm9sczogQWJzdHJhY3RDb250cm9sW10pIHtcbiAgICAgICAgdGhpcy5oYW5kbGUoY29udHJvbHMpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGUoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdKSB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICBpZiAoY29udHJvbHMubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvcnMkID0gY29udHJvbHMubWFwKGNvbnRyb2wgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKF8gPT4gY29udHJvbD8uZXJyb3JzKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZXJyb3JzJCA9IGNvbWJpbmVMYXRlc3QodmFsaWRhdGlvbkVycm9ycyQpLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsaWRhdGlvbkVycm9ycyA9PiB2YWxpZGF0aW9uRXJyb3JzLmZpbmQoZXJyb3IgPT4gISFlcnJvcikpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IGVycm9ycyRcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXJyb3JzID0+IHRoaXMuY2hhbmdlcy5uZXh0KGVycm9ycyA/PyBudWxsKSk7XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { booleanAttribute, Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class BbFileDrop {
|
|
4
|
-
// Inputs.
|
|
5
|
-
disabled = false;
|
|
6
|
-
// Outputs.
|
|
7
|
-
onFileDropped = new EventEmitter();
|
|
8
|
-
// State.
|
|
9
|
-
hovered = false;
|
|
10
|
-
onDrag(event, isHovered) {
|
|
11
|
-
if (this.disabled) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
event.preventDefault();
|
|
15
|
-
event.stopPropagation();
|
|
16
|
-
this.setHovered(isHovered);
|
|
17
|
-
}
|
|
18
|
-
onDrop(event) {
|
|
19
|
-
if (this.disabled) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
event.preventDefault();
|
|
23
|
-
event.stopPropagation();
|
|
24
|
-
this.setHovered(false);
|
|
25
|
-
const files = Array.from(event['dataTransfer'].files);
|
|
26
|
-
if (files?.length <= 0) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
this.onFileDropped.emit(files);
|
|
30
|
-
}
|
|
31
|
-
setHovered(value) {
|
|
32
|
-
this.hovered = value;
|
|
33
|
-
}
|
|
34
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbFileDrop, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
35
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.12", type: BbFileDrop, isStandalone: true, selector: "[bbFileDrop]", inputs: { disabled: ["bbFileDropDisabled", "disabled", booleanAttribute] }, outputs: { onFileDropped: "bbFileDrop" }, host: { listeners: { "dragover": "onDrag($event,true)", "dragleave": "onDrag($event,false)", "drop": "onDrop($event)" }, properties: { "class.is-hovered": "this.hovered" } }, ngImport: i0 });
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbFileDrop, decorators: [{
|
|
38
|
-
type: Directive,
|
|
39
|
-
args: [{
|
|
40
|
-
selector: '[bbFileDrop]',
|
|
41
|
-
standalone: true
|
|
42
|
-
}]
|
|
43
|
-
}], propDecorators: { disabled: [{
|
|
44
|
-
type: Input,
|
|
45
|
-
args: [{ alias: 'bbFileDropDisabled', transform: booleanAttribute }]
|
|
46
|
-
}], onFileDropped: [{
|
|
47
|
-
type: Output,
|
|
48
|
-
args: ['bbFileDrop']
|
|
49
|
-
}], hovered: [{
|
|
50
|
-
type: HostBinding,
|
|
51
|
-
args: ['class.is-hovered']
|
|
52
|
-
}], onDrag: [{
|
|
53
|
-
type: HostListener,
|
|
54
|
-
args: ['dragover', ['$event', 'true']]
|
|
55
|
-
}, {
|
|
56
|
-
type: HostListener,
|
|
57
|
-
args: ['dragleave', ['$event', 'false']]
|
|
58
|
-
}], onDrop: [{
|
|
59
|
-
type: HostListener,
|
|
60
|
-
args: ['drop', ['$event']]
|
|
61
|
-
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9kaXJlY3RpdmVzL2ZpbGUtZHJvcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQU1sSCxNQUFNLE9BQU8sVUFBVTtJQUVuQixVQUFVO0lBQ3lELFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFN0YsV0FBVztJQUNXLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBRWpFLFNBQVM7SUFDd0IsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUkxRCxNQUFNLENBQUMsS0FBWSxFQUFFLFNBQWtCO1FBQ25DLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDWCxDQUFDO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFHRCxNQUFNLENBQUMsS0FBWTtRQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDWCxDQUFDO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZCLE1BQU0sS0FBSyxHQUFXLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO3dHQTNDUSxVQUFVOzRGQUFWLFVBQVUsdUdBRzZCLGdCQUFnQjs7NEZBSHZELFVBQVU7a0JBSnRCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFJc0UsUUFBUTtzQkFBMUUsS0FBSzt1QkFBQyxFQUFDLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBRzNDLGFBQWE7c0JBQWxDLE1BQU07dUJBQUMsWUFBWTtnQkFHYSxPQUFPO3NCQUF2QyxXQUFXO3VCQUFDLGtCQUFrQjtnQkFJL0IsTUFBTTtzQkFGTCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7O3NCQUMzQyxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7Z0JBWTlDLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Jvb2xlYW5BdHRyaWJ1dGUsIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbYmJGaWxlRHJvcF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQmJGaWxlRHJvcCB7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KHthbGlhczogJ2JiRmlsZURyb3BEaXNhYmxlZCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBPdXRwdXRzLlxuICAgIEBPdXRwdXQoJ2JiRmlsZURyb3AnKSBvbkZpbGVEcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlW10+KCk7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWhvdmVyZWQnKSBob3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50JywgJ3RydWUnXSlcbiAgICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCcsICdmYWxzZSddKVxuICAgIG9uRHJhZyhldmVudDogRXZlbnQsIGlzSG92ZXJlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2V0SG92ZXJlZChpc0hvdmVyZWQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICAgIG9uRHJvcChldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNldEhvdmVyZWQoZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IGZpbGVzOiBGaWxlW10gPSBBcnJheS5mcm9tKGV2ZW50WydkYXRhVHJhbnNmZXInXS5maWxlcyk7XG4gICAgICAgIGlmIChmaWxlcz8ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25GaWxlRHJvcHBlZC5lbWl0KGZpbGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEhvdmVyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5ob3ZlcmVkID0gdmFsdWU7XG4gICAgfVxuXG59XG4iXX0=
|