@bravobit/bb-foundation 0.26.2 → 0.27.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/directives/authenticated.directive.d.ts +1 -1
- package/collections/lib/components/collections-pager/collections-pager.component.d.ts +1 -1
- package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +1 -1
- package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +1 -1
- package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +1 -1
- package/controls/lib/control-error/control-error/control-error.component.d.ts +1 -1
- package/controls/lib/form-control/form-control/form-control.component.d.ts +1 -1
- package/controls/lib/form-control/form-control-addon/form-control-addon.component.d.ts +1 -1
- package/controls/lib/form-control/form-control-input.directive.d.ts +1 -1
- package/controls/lib/radio/radio-button/radio-button.component.d.ts +1 -1
- package/controls/lib/radio/radio-group/radio-group.component.d.ts +1 -1
- package/controls/lib/toggle/toggle/toggle.component.d.ts +1 -1
- package/controls/lib/toggle/toggle-group/toggle-group.component.d.ts +1 -1
- package/dashboard/lib/dashboard/dashboard.component.d.ts +1 -1
- package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +1 -1
- package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +1 -1
- package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +1 -1
- package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +1 -1
- package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +1 -1
- package/elements/lib/avatar/avatar.component.d.ts +1 -1
- package/elements/lib/button/button.component.d.ts +2 -2
- package/elements/lib/checkbox/checkbox.component.d.ts +1 -1
- package/elements/lib/date-picker/date-picker.component.d.ts +1 -1
- package/elements/lib/directives/input.directive.d.ts +2 -2
- package/elements/lib/dropdown/dropdown.component.d.ts +1 -1
- package/elements/lib/file-picker/file-picker.component.d.ts +2 -2
- package/elements/lib/form-control/form-control.component.d.ts +1 -1
- package/elements/lib/form-error/form-error.component.d.ts +1 -1
- package/elements/lib/form-group/form-group.component.d.ts +1 -1
- package/elements/lib/icon/icon.component.d.ts +1 -1
- package/elements/lib/image-picker/image-picker.component.d.ts +1 -1
- package/elements/lib/spinner/spinner.component.d.ts +1 -1
- package/esm2022/auth/lib/auth.interceptor.mjs +91 -0
- package/esm2022/auth/lib/auth.module.mjs +36 -0
- package/esm2022/auth/lib/auth.service.mjs +271 -0
- package/esm2022/auth/lib/directives/authenticated.directive.mjs +43 -0
- package/esm2022/auth/lib/guards/anonymous.guard.mjs +54 -0
- package/esm2022/auth/lib/guards/authenticated.guard.mjs +57 -0
- package/esm2022/collections/lib/collections.module.mjs +55 -0
- package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +124 -0
- package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +32 -0
- package/esm2022/collections/lib/components/collections.directive.mjs +47 -0
- package/esm2022/controls/lib/checkbox/checkbox/checkbox.component.mjs +179 -0
- package/esm2022/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +69 -0
- package/esm2022/controls/lib/checkbox/checkbox.module.mjs +21 -0
- package/esm2022/controls/lib/control-error/control-error/control-error.component.mjs +64 -0
- package/esm2022/controls/lib/control-error/control-error-submit.directive.mjs +48 -0
- package/esm2022/controls/lib/control-error/control-error.module.mjs +20 -0
- package/esm2022/controls/lib/controls.module.mjs +63 -0
- package/esm2022/controls/lib/form-control/form-control/form-control.component.mjs +80 -0
- package/esm2022/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +23 -0
- package/esm2022/controls/lib/form-control/form-control-input.directive.mjs +125 -0
- package/esm2022/controls/lib/form-control/form-control.module.mjs +35 -0
- package/esm2022/controls/lib/radio/radio-button/radio-button.component.mjs +76 -0
- package/esm2022/controls/lib/radio/radio-group/radio-group.component.mjs +169 -0
- package/esm2022/controls/lib/radio/radio.module.mjs +22 -0
- package/esm2022/controls/lib/toggle/toggle/toggle.component.mjs +154 -0
- package/esm2022/controls/lib/toggle/toggle-group/toggle-group.component.mjs +63 -0
- package/esm2022/controls/lib/toggle/toggle.module.mjs +21 -0
- package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +58 -0
- package/{esm2020 → esm2022}/dashboard/lib/dashboard-header/dashboard-header.component.mjs +6 -5
- package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +32 -0
- package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +30 -0
- package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +76 -0
- package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +100 -0
- package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +63 -0
- package/esm2022/dashboard/lib/dashboard.module.mjs +48 -0
- package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +13 -0
- package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +47 -0
- package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +78 -0
- package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +19 -0
- package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +12 -0
- package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +68 -0
- package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +80 -0
- package/esm2022/dialog/lib/dialog.insertion.mjs +17 -0
- package/esm2022/dialog/lib/dialog.module.mjs +69 -0
- package/esm2022/dialog/lib/dialog.service.mjs +69 -0
- package/esm2022/elements/lib/avatar/avatar.component.mjs +150 -0
- package/esm2022/elements/lib/button/button.component.mjs +63 -0
- package/esm2022/elements/lib/checkbox/checkbox.component.mjs +74 -0
- package/esm2022/elements/lib/date-picker/date-picker.component.mjs +308 -0
- package/esm2022/elements/lib/directives/addon.directive.mjs +31 -0
- package/esm2022/elements/lib/directives/form-submit.directive.mjs +51 -0
- package/esm2022/elements/lib/directives/form-submitter.directive.mjs +26 -0
- package/esm2022/elements/lib/directives/input.directive.mjs +138 -0
- package/esm2022/elements/lib/dropdown/dropdown.component.mjs +102 -0
- package/esm2022/elements/lib/elements.module.mjs +178 -0
- package/esm2022/elements/lib/file-picker/file-picker.component.mjs +237 -0
- package/esm2022/elements/lib/form-control/form-control.component.mjs +50 -0
- package/esm2022/elements/lib/form-error/form-error.component.mjs +124 -0
- package/esm2022/elements/lib/form-group/form-group.component.mjs +19 -0
- package/esm2022/elements/lib/icon/icon.component.mjs +103 -0
- package/esm2022/elements/lib/image-picker/image-picker.component.mjs +107 -0
- package/esm2022/elements/lib/pipes/file-image.pipe.mjs +44 -0
- package/esm2022/elements/lib/pipes/file-size.pipe.mjs +29 -0
- package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +97 -0
- package/esm2022/elements/lib/spinner/spinner.component.mjs +26 -0
- package/esm2022/elements/lib/tag/tag.component.mjs +19 -0
- package/esm2022/http/lib/http.module.mjs +44 -0
- package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +51 -0
- package/esm2022/http/lib/interceptors/error.interceptor.mjs +33 -0
- package/esm2022/lib/core/services/clipboard.service.mjs +71 -0
- package/esm2022/lib/core/services/exif.service.mjs +164 -0
- package/esm2022/lib/core/services/file-loader.service.mjs +88 -0
- package/esm2022/lib/core/services/image-converter.service.mjs +124 -0
- package/esm2022/lib/core/services/languages.service.mjs +75 -0
- package/esm2022/lib/core/services/network.service.mjs +56 -0
- package/esm2022/lib/core/services/patch.service.mjs +64 -0
- package/esm2022/localize/lib/localize.module.mjs +82 -0
- package/esm2022/localize/lib/localize.pipe.mjs +47 -0
- package/esm2022/localize/lib/localize.service.mjs +186 -0
- package/{esm2020 → esm2022}/localize/lib/transforms/interpolate.transform.mjs +1 -1
- package/{esm2020 → esm2022}/localize/lib/transforms/reference.transform.mjs +1 -1
- package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +89 -0
- package/esm2022/localize/lib/views/localize-template.directive.mjs +22 -0
- package/esm2022/masking/lib/directives/currency-mask.directive.mjs +36 -0
- package/esm2022/masking/lib/directives/date-mask.directive.mjs +36 -0
- package/esm2022/masking/lib/directives/input-mask.directive.mjs +119 -0
- package/esm2022/masking/lib/masking.module.mjs +31 -0
- package/esm2022/masking/lib/masking.service.mjs +104 -0
- package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +101 -0
- package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +48 -0
- package/esm2022/notifications/lib/notifications.module.mjs +31 -0
- package/esm2022/notifications/lib/notifications.service.mjs +142 -0
- package/esm2022/permissions/lib/directives/permission.directive.mjs +89 -0
- package/esm2022/permissions/lib/guards/permission.guard.mjs +57 -0
- package/esm2022/permissions/lib/permissions.module.mjs +40 -0
- package/esm2022/permissions/lib/permissions.service.mjs +97 -0
- package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +220 -0
- package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +96 -0
- package/esm2022/recaptcha/lib/recaptcha.module.mjs +28 -0
- package/esm2022/storage/lib/storage.service.mjs +110 -0
- package/esm2022/table/lib/components/table/table.component.mjs +194 -0
- package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +12 -0
- package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +132 -0
- package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +137 -0
- package/esm2022/table/lib/data/generic.data.mjs +82 -0
- package/esm2022/table/lib/table.module.mjs +43 -0
- package/esm2022/theming/lib/theming.directive.mjs +39 -0
- package/esm2022/theming/lib/theming.module.mjs +17 -0
- package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +32 -0
- package/esm2022/tooltip/lib/tooltip.directive.mjs +141 -0
- package/esm2022/tooltip/lib/tooltip.module.mjs +32 -0
- package/esm2022/utils/lib/directives/autosize.directive.mjs +73 -0
- package/esm2022/utils/lib/directives/focus-trap.directive.mjs +78 -0
- package/esm2022/utils/lib/directives/focus.directive.mjs +38 -0
- package/esm2022/utils/lib/directives/template.directive.mjs +29 -0
- package/esm2022/utils/lib/functions/parse-date.function.mjs +19 -0
- package/esm2022/utils/lib/utils.module.mjs +36 -0
- package/esm2022/utils/public_api.mjs +7 -0
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-auth.mjs +19 -19
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-collections.mjs +38 -38
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-controls.mjs +83 -83
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dashboard.mjs +37 -37
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dialog.mjs +46 -46
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-elements.mjs +185 -185
- package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-http.mjs +10 -10
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-http.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-localize.mjs +20 -20
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-masking.mjs +20 -20
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-notifications.mjs +13 -13
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-permissions.mjs +13 -13
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-permissions.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-recaptcha.mjs +16 -16
- package/{fesm2015 → fesm2022}/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-storage.mjs +3 -3
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-table.mjs +46 -36
- package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-theming.mjs +7 -7
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-theming.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-tooltip.mjs +13 -13
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-tooltip.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-utils.mjs +42 -23
- package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation.mjs +21 -21
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation.mjs.map +1 -1
- package/localize/lib/views/localize-string/localize-string.component.d.ts +1 -1
- package/localize/lib/views/localize-template.directive.d.ts +1 -1
- package/masking/lib/directives/currency-mask.directive.d.ts +1 -1
- package/masking/lib/directives/date-mask.directive.d.ts +1 -1
- package/masking/lib/directives/input-mask.directive.d.ts +1 -1
- package/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
- package/package.json +70 -112
- package/permissions/lib/directives/permission.directive.d.ts +1 -1
- package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +1 -1
- package/table/lib/components/table/table.component.d.ts +1 -1
- package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +1 -1
- package/table/lib/components/table-pager/table-pager.component.d.ts +1 -1
- package/table/lib/data/generic.data.d.ts +2 -0
- package/theming/lib/theming.directive.d.ts +1 -1
- package/tooltip/lib/tooltip.directive.d.ts +1 -1
- package/utils/lib/directives/autosize.directive.d.ts +1 -1
- package/utils/lib/directives/template.directive.d.ts +1 -1
- package/utils/lib/functions/parse-date.function.d.ts +1 -0
- package/utils/public_api.d.ts +1 -0
- package/esm2020/auth/lib/auth.interceptor.mjs +0 -90
- package/esm2020/auth/lib/auth.module.mjs +0 -35
- package/esm2020/auth/lib/auth.service.mjs +0 -270
- package/esm2020/auth/lib/directives/authenticated.directive.mjs +0 -42
- package/esm2020/auth/lib/guards/anonymous.guard.mjs +0 -53
- package/esm2020/auth/lib/guards/authenticated.guard.mjs +0 -56
- package/esm2020/collections/lib/collections.module.mjs +0 -54
- package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +0 -123
- package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +0 -31
- package/esm2020/collections/lib/components/collections.directive.mjs +0 -43
- package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +0 -178
- package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +0 -68
- package/esm2020/controls/lib/checkbox/checkbox.module.mjs +0 -20
- package/esm2020/controls/lib/control-error/control-error/control-error.component.mjs +0 -63
- package/esm2020/controls/lib/control-error/control-error-submit.directive.mjs +0 -47
- package/esm2020/controls/lib/control-error/control-error.module.mjs +0 -19
- package/esm2020/controls/lib/controls.module.mjs +0 -62
- package/esm2020/controls/lib/form-control/form-control/form-control.component.mjs +0 -79
- package/esm2020/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +0 -22
- package/esm2020/controls/lib/form-control/form-control-input.directive.mjs +0 -124
- package/esm2020/controls/lib/form-control/form-control.module.mjs +0 -34
- package/esm2020/controls/lib/radio/radio-button/radio-button.component.mjs +0 -75
- package/esm2020/controls/lib/radio/radio-group/radio-group.component.mjs +0 -168
- package/esm2020/controls/lib/radio/radio.module.mjs +0 -21
- package/esm2020/controls/lib/toggle/toggle/toggle.component.mjs +0 -153
- package/esm2020/controls/lib/toggle/toggle-group/toggle-group.component.mjs +0 -62
- package/esm2020/controls/lib/toggle/toggle.module.mjs +0 -20
- package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +0 -57
- package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +0 -31
- package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +0 -29
- package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +0 -75
- package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +0 -99
- package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +0 -62
- package/esm2020/dashboard/lib/dashboard.module.mjs +0 -47
- package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +0 -12
- package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +0 -46
- package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +0 -77
- package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +0 -18
- package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +0 -11
- package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +0 -67
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +0 -79
- package/esm2020/dialog/lib/dialog.insertion.mjs +0 -16
- package/esm2020/dialog/lib/dialog.module.mjs +0 -68
- package/esm2020/dialog/lib/dialog.service.mjs +0 -68
- package/esm2020/elements/lib/avatar/avatar.component.mjs +0 -149
- package/esm2020/elements/lib/button/button.component.mjs +0 -61
- package/esm2020/elements/lib/checkbox/checkbox.component.mjs +0 -73
- package/esm2020/elements/lib/date-picker/date-picker.component.mjs +0 -307
- package/esm2020/elements/lib/directives/addon.directive.mjs +0 -29
- package/esm2020/elements/lib/directives/form-submit.directive.mjs +0 -50
- package/esm2020/elements/lib/directives/form-submitter.directive.mjs +0 -25
- package/esm2020/elements/lib/directives/input.directive.mjs +0 -136
- package/esm2020/elements/lib/dropdown/dropdown.component.mjs +0 -100
- package/esm2020/elements/lib/elements.module.mjs +0 -177
- package/esm2020/elements/lib/file-picker/file-picker.component.mjs +0 -236
- package/esm2020/elements/lib/form-control/form-control.component.mjs +0 -49
- package/esm2020/elements/lib/form-error/form-error.component.mjs +0 -123
- package/esm2020/elements/lib/form-group/form-group.component.mjs +0 -18
- package/esm2020/elements/lib/icon/icon.component.mjs +0 -102
- package/esm2020/elements/lib/image-picker/image-picker.component.mjs +0 -106
- package/esm2020/elements/lib/pipes/file-image.pipe.mjs +0 -43
- package/esm2020/elements/lib/pipes/file-size.pipe.mjs +0 -28
- package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +0 -96
- package/esm2020/elements/lib/spinner/spinner.component.mjs +0 -25
- package/esm2020/elements/lib/tag/tag.component.mjs +0 -18
- package/esm2020/http/lib/http.module.mjs +0 -43
- package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +0 -50
- package/esm2020/http/lib/interceptors/error.interceptor.mjs +0 -32
- package/esm2020/lib/core/services/clipboard.service.mjs +0 -70
- package/esm2020/lib/core/services/exif.service.mjs +0 -163
- package/esm2020/lib/core/services/file-loader.service.mjs +0 -87
- package/esm2020/lib/core/services/image-converter.service.mjs +0 -123
- package/esm2020/lib/core/services/languages.service.mjs +0 -74
- package/esm2020/lib/core/services/network.service.mjs +0 -55
- package/esm2020/lib/core/services/patch.service.mjs +0 -63
- package/esm2020/localize/lib/localize.module.mjs +0 -81
- package/esm2020/localize/lib/localize.pipe.mjs +0 -46
- package/esm2020/localize/lib/localize.service.mjs +0 -185
- package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +0 -88
- package/esm2020/localize/lib/views/localize-template.directive.mjs +0 -21
- package/esm2020/masking/lib/directives/currency-mask.directive.mjs +0 -35
- package/esm2020/masking/lib/directives/date-mask.directive.mjs +0 -35
- package/esm2020/masking/lib/directives/input-mask.directive.mjs +0 -118
- package/esm2020/masking/lib/masking.module.mjs +0 -30
- package/esm2020/masking/lib/masking.service.mjs +0 -103
- package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +0 -100
- package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +0 -47
- package/esm2020/notifications/lib/notifications.module.mjs +0 -30
- package/esm2020/notifications/lib/notifications.service.mjs +0 -141
- package/esm2020/permissions/lib/directives/permission.directive.mjs +0 -88
- package/esm2020/permissions/lib/guards/permission.guard.mjs +0 -56
- package/esm2020/permissions/lib/permissions.module.mjs +0 -39
- package/esm2020/permissions/lib/permissions.service.mjs +0 -96
- package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +0 -219
- package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +0 -95
- package/esm2020/recaptcha/lib/recaptcha.module.mjs +0 -27
- package/esm2020/storage/lib/storage.service.mjs +0 -109
- package/esm2020/table/lib/components/table/table.component.mjs +0 -191
- package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +0 -11
- package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +0 -131
- package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +0 -136
- package/esm2020/table/lib/data/generic.data.mjs +0 -72
- package/esm2020/table/lib/table.module.mjs +0 -42
- package/esm2020/theming/lib/theming.directive.mjs +0 -38
- package/esm2020/theming/lib/theming.module.mjs +0 -16
- package/esm2020/tooltip/lib/tooltip-container/tooltip-container.component.mjs +0 -31
- package/esm2020/tooltip/lib/tooltip.directive.mjs +0 -140
- package/esm2020/tooltip/lib/tooltip.module.mjs +0 -31
- package/esm2020/utils/lib/directives/autosize.directive.mjs +0 -72
- package/esm2020/utils/lib/directives/focus-trap.directive.mjs +0 -77
- package/esm2020/utils/lib/directives/focus.directive.mjs +0 -37
- package/esm2020/utils/lib/directives/template.directive.mjs +0 -28
- package/esm2020/utils/lib/utils.module.mjs +0 -35
- package/esm2020/utils/public_api.mjs +0 -6
- package/fesm2015/bravobit-bb-foundation-auth.mjs +0 -851
- package/fesm2015/bravobit-bb-foundation-auth.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-collections.mjs +0 -474
- package/fesm2015/bravobit-bb-foundation-collections.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-controls.mjs +0 -1217
- package/fesm2015/bravobit-bb-foundation-controls.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs +0 -417
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-dialog.mjs +0 -512
- package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs +0 -1883
- package/fesm2015/bravobit-bb-foundation-elements.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-http.mjs +0 -176
- package/fesm2015/bravobit-bb-foundation-http.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-localize.mjs +0 -835
- package/fesm2015/bravobit-bb-foundation-localize.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-masking.mjs +0 -334
- package/fesm2015/bravobit-bb-foundation-masking.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-notifications.mjs +0 -357
- package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-permissions.mjs +0 -310
- package/fesm2015/bravobit-bb-foundation-permissions.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +0 -349
- package/fesm2015/bravobit-bb-foundation-rxjs.mjs +0 -22
- package/fesm2015/bravobit-bb-foundation-rxjs.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-storage.mjs +0 -418
- package/fesm2015/bravobit-bb-foundation-storage.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-table.mjs +0 -603
- package/fesm2015/bravobit-bb-foundation-table.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-theming.mjs +0 -382
- package/fesm2015/bravobit-bb-foundation-theming.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-tooltip.mjs +0 -210
- package/fesm2015/bravobit-bb-foundation-tooltip.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-utils.mjs +0 -246
- package/fesm2015/bravobit-bb-foundation-utils.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation.mjs +0 -929
- package/fesm2015/bravobit-bb-foundation.mjs.map +0 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs.map +0 -1
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +0 -1
- package/fesm2020/bravobit-bb-foundation-table.mjs.map +0 -1
- package/fesm2020/bravobit-bb-foundation-utils.mjs.map +0 -1
- /package/{esm2020 → esm2022}/auth/bravobit-bb-foundation-auth.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/auth.session.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/directives/abstract.directive.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/helpers/jwt.helper.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/interfaces/config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/interfaces/provider.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/interfaces/token.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/providers/email.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/providers/verify.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/tokens/use-authorization.token.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/bravobit-bb-foundation.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/bravobit-bb-foundation-collections.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/lib/collection.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/lib/interfaces/collection.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/lib/providers/api-collection.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/lib/providers/collection.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/lib/providers/local-collection.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/bravobit-bb-foundation-controls.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/lib/control-error/control-error/control-error.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/lib/control-error/control-error.defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/lib/control-error/control-error.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/lib/control-error/control-error.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/lib/controls.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/dashboard/bravobit-bb-foundation-dashboard.mjs +0 -0
- /package/{esm2020 → esm2022}/dashboard/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/bravobit-bb-foundation-dialog.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/lib/dialog-container/dialog-container.animations.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/lib/dialog-overlay/dialog-overlay.animations.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/lib/dialog.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/lib/dialog.ref.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/elements/bravobit-bb-foundation-elements.mjs +0 -0
- /package/{esm2020 → esm2022}/elements/lib/elements.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/elements/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/http/bravobit-bb-foundation-http.mjs +0 -0
- /package/{esm2020 → esm2022}/http/lib/classes/http.config.mjs +0 -0
- /package/{esm2020 → esm2022}/http/lib/classes/http.error.mjs +0 -0
- /package/{esm2020 → esm2022}/http/lib/http.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/http/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/functions/date.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/functions/password.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/miscellaneous/regex.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/miscellaneous/validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/can-disable.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/can-hide-errors.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/can-load.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/constructor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/has-error.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/is-focused.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/is-grouped.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/is-readonly.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/is-required.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/accept-language.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/base-url.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/cookie.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/location.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/navigator.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/window.token.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/bravobit-bb-foundation-localize.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/dictionary/dictionary.class.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/dictionary/dictionary.context.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/dictionary/dictionary.data.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/functions/date.function.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/functions/lowercase.function.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/functions/uppercase.function.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/handlers/missing.handler.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/interfaces/config.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/interfaces/functions.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/interfaces/handlers.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/interfaces/options.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/interfaces/transforms.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/locale.token.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/localizations/dutch.localization.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/localizations/english.localization.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/transforms/abstract.transform.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/masking/bravobit-bb-foundation-masking.mjs +0 -0
- /package/{esm2020 → esm2022}/masking/lib/input-mask.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/masking/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/notifications/bravobit-bb-foundation-notifications.mjs +0 -0
- /package/{esm2020 → esm2022}/notifications/lib/notifications.animations.mjs +0 -0
- /package/{esm2020 → esm2022}/notifications/lib/notifications.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/notifications/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/bravobit-bb-foundation-permissions.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/lib/handlers/abstract.handler.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/lib/handlers/local.handler.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/lib/permissions.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/recaptcha/bravobit-bb-foundation-recaptcha.mjs +0 -0
- /package/{esm2020 → esm2022}/recaptcha/lib/recaptcha.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/recaptcha/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/rxjs/bravobit-bb-foundation-rxjs.mjs +0 -0
- /package/{esm2020 → esm2022}/rxjs/lib/observables/get-control-value.observable.mjs +0 -0
- /package/{esm2020 → esm2022}/rxjs/lib/operators/combine-latest-map.operator.mjs +0 -0
- /package/{esm2020 → esm2022}/rxjs/lib/operators/filter-nil.operator.mjs +0 -0
- /package/{esm2020 → esm2022}/rxjs/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/bravobit-bb-foundation-storage.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/interfaces/attributes.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/interfaces/memory.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/interfaces/strategy.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/strategies/cookie-storage.strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/strategies/memory-storage.strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/strategies/polyfill-storage.strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/table/bravobit-bb-foundation-table.mjs +0 -0
- /package/{esm2020 → esm2022}/table/lib/data/datasource.data.mjs +0 -0
- /package/{esm2020 → esm2022}/table/lib/interfaces/datasource.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/table/lib/interfaces/table.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/table/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/bravobit-bb-foundation-theming.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/checkbox-group.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/checkbox.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/control-error.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/form-control-addon.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/form-control.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/radio-button.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/radio-group.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/toggle-group.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/toggle.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/theming.data.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/theming.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/utils/theming.variable.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/bravobit-bb-foundation-tooltip.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/lib/tooltip.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/bravobit-bb-foundation-utils.mjs +0 -0
- /package/{fesm2020 → fesm2022}/bravobit-bb-foundation-rxjs.mjs +0 -0
- /package/{fesm2020 → fesm2022}/bravobit-bb-foundation-rxjs.mjs.map +0 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { mixinDisabled, mixinGrouped, mixinRequired, mixinError, mixinHideErrors } from '@bravobit/bb-foundation';
|
|
3
|
+
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { animate, style, transition, trigger } from '@angular/animations';
|
|
5
|
+
import { BehaviorSubject } from 'rxjs';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@bravobit/bb-foundation/utils";
|
|
9
|
+
import * as i3 from "../form-error/form-error.component";
|
|
10
|
+
import * as i4 from "@bravobit/bb-foundation/localize";
|
|
11
|
+
import * as i5 from "../pipes/file-size.pipe";
|
|
12
|
+
import * as i6 from "../pipes/file-image.pipe";
|
|
13
|
+
let nextUniqueId = 0;
|
|
14
|
+
class BbFilePickerBase {
|
|
15
|
+
}
|
|
16
|
+
const BbFilePickerMixinBase = mixinRequired(mixinDisabled(mixinGrouped(mixinError(mixinHideErrors(BbFilePickerBase)))));
|
|
17
|
+
class BbFilePicker extends BbFilePickerMixinBase {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
// Inputs.
|
|
21
|
+
this.label = null;
|
|
22
|
+
this.hint = null;
|
|
23
|
+
this.accept = null;
|
|
24
|
+
this.showImages = true;
|
|
25
|
+
this.allowDragging = true;
|
|
26
|
+
// State.
|
|
27
|
+
this.labelId = `bb-file-picker-${nextUniqueId++}`;
|
|
28
|
+
this.hovered = false;
|
|
29
|
+
this.value$ = new BehaviorSubject({});
|
|
30
|
+
this.valueChange = new EventEmitter();
|
|
31
|
+
this.onTouchedCallback = () => {
|
|
32
|
+
};
|
|
33
|
+
this.onChangeCallback = () => {
|
|
34
|
+
};
|
|
35
|
+
this.saveFile = (files) => {
|
|
36
|
+
// Validate the files exist.
|
|
37
|
+
if (!files) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Retrieve the first file.
|
|
41
|
+
const file = files[0];
|
|
42
|
+
// Validate the first file exists.
|
|
43
|
+
if (!file) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Save the file.
|
|
47
|
+
this.value = file;
|
|
48
|
+
};
|
|
49
|
+
this.getFileListFromEvent = (event) => {
|
|
50
|
+
const element = event.target;
|
|
51
|
+
if (!element) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
return element.files;
|
|
55
|
+
};
|
|
56
|
+
this.preventDefault = (event) => {
|
|
57
|
+
event.preventDefault();
|
|
58
|
+
event.stopPropagation();
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
get value() {
|
|
62
|
+
const { file } = this.value$.getValue();
|
|
63
|
+
return file;
|
|
64
|
+
}
|
|
65
|
+
set value(value) {
|
|
66
|
+
this.value$.next({ file: value });
|
|
67
|
+
this.valueChange.emit(value);
|
|
68
|
+
}
|
|
69
|
+
onDrag(event, isHovered) {
|
|
70
|
+
// Validate the input can support drag.
|
|
71
|
+
if (!this.allowDragging || this.disabled) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Prevent the default event action
|
|
75
|
+
// and start the hovering.
|
|
76
|
+
this.preventDefault(event);
|
|
77
|
+
this.hovered = isHovered;
|
|
78
|
+
}
|
|
79
|
+
onDrop(event) {
|
|
80
|
+
// Validate the input can support drag.
|
|
81
|
+
if (!this.allowDragging || this.disabled) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// Prevent the default event action
|
|
85
|
+
// and stop the hovering.
|
|
86
|
+
this.preventDefault(event);
|
|
87
|
+
this.hovered = false;
|
|
88
|
+
// Save the file.
|
|
89
|
+
this.saveFile(event['dataTransfer'].files);
|
|
90
|
+
// Run the on change callback.
|
|
91
|
+
this.onChangeCallback(this.value);
|
|
92
|
+
}
|
|
93
|
+
onButtonPressed(file) {
|
|
94
|
+
if (file) {
|
|
95
|
+
this.value = null;
|
|
96
|
+
this.onChangeCallback(this.value);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
return this.openFilePicker();
|
|
100
|
+
}
|
|
101
|
+
openFilePicker() {
|
|
102
|
+
return this.fileInput
|
|
103
|
+
&& this.fileInput.nativeElement
|
|
104
|
+
&& this.fileInput.nativeElement.click
|
|
105
|
+
&& this.fileInput.nativeElement.click();
|
|
106
|
+
}
|
|
107
|
+
onFileChange(event) {
|
|
108
|
+
// Validate the input is not disabled.
|
|
109
|
+
if (this.disabled) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
// Extract the file from the event.
|
|
113
|
+
const fileList = this.getFileListFromEvent(event);
|
|
114
|
+
// Save the file.
|
|
115
|
+
this.saveFile(fileList);
|
|
116
|
+
// Run the on change callback.
|
|
117
|
+
this.onChangeCallback(this.value);
|
|
118
|
+
// Clear the file input.
|
|
119
|
+
if (this.fileInput && this.fileInput.nativeElement) {
|
|
120
|
+
this.fileInput.nativeElement.value = '';
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
writeValue(value) {
|
|
124
|
+
this.value = value;
|
|
125
|
+
}
|
|
126
|
+
registerOnChange(method) {
|
|
127
|
+
this.onChangeCallback = method;
|
|
128
|
+
}
|
|
129
|
+
registerOnTouched(method) {
|
|
130
|
+
this.onTouchedCallback = method;
|
|
131
|
+
}
|
|
132
|
+
setDisabledState(isDisabled) {
|
|
133
|
+
this.disabled = isDisabled;
|
|
134
|
+
}
|
|
135
|
+
onErrorChange(error) {
|
|
136
|
+
this.error = !!error;
|
|
137
|
+
}
|
|
138
|
+
validate({ value }) {
|
|
139
|
+
if (value === null || value === undefined) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
const regexString = (this.accept || '*')
|
|
143
|
+
.replace(/\*/g, '.\*')
|
|
144
|
+
.replace(/,/g, '|');
|
|
145
|
+
const mimeTypeRegex = new RegExp(regexString);
|
|
146
|
+
const isNotValid = (typeof File === 'undefined') || !(value instanceof File) || !mimeTypeRegex.test(value?.type);
|
|
147
|
+
return isNotValid && {
|
|
148
|
+
invalidFileType: true
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BbFilePicker, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
152
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: BbFilePicker, selector: "bb-file-picker", inputs: { disabled: "disabled", hideErrors: "hideErrors", grouped: "grouped", required: "required", label: "label", hint: "hint", accept: "accept", showImages: "showImages", allowDragging: "allowDragging", value: "value" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "dragover": "onDrag($event,true)", "dragleave": "onDrag($event,false)", "drop": "onDrop($event)" }, properties: { "class.required": "required", "class.disabled": "disabled", "class.grouped": "grouped", "class.hovered": "hovered", "class.error": "error" }, classAttribute: "bb-file-picker" }, providers: [
|
|
153
|
+
{
|
|
154
|
+
provide: NG_VALUE_ACCESSOR,
|
|
155
|
+
useExisting: forwardRef(() => BbFilePicker),
|
|
156
|
+
multi: true
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
provide: NG_VALIDATORS,
|
|
160
|
+
useExisting: BbFilePicker,
|
|
161
|
+
multi: true
|
|
162
|
+
}
|
|
163
|
+
], queries: [{ propertyName: "extraTemplate", first: true, predicate: ["extra"], descendants: true }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<!-- The label of the input. -->\n<label *ngIf=\"label as labelContent\"\n [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\n\n<!-- The input that can open the file picker. -->\n<input #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n class=\"bb-file-picker-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n<div *ngIf=\"value$ | async as data\"\n class=\"bb-file-picker-wrapper\">\n <!-- The button that accepts files. -->\n <div class=\"bb-file-picker-container\">\n <button [class.destructive]=\"!!data?.file\"\n [class.standalone]=\"!allowDragging\"\n [disabled]=\"disabled\"\n [id]=\"labelId\"\n (click)=\"onButtonPressed(data?.file)\"\n type=\"button\"\n class=\"bb-file-picker-button\">\n <ng-container *ngTemplateOutlet=\"data?.file ? closeIcon : uploadIcon\"></ng-container>\n {{ (data?.file ? 'file-picker.remove' : 'file-picker.choose') | bbLocalize }}\n </button>\n <div *ngIf=\"allowDragging\"\n class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n </div>\n\n <ng-container *ngIf=\"!!extraTemplate\">\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"showImages\">\n <div *ngIf=\"data?.file | bbFileImage | async as image\"\n class=\"bb-file-picker-image-container\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [@bbFilePickerImageAnimation]=\"true\"\n [style.padding-top.%]=\"image?.aspectRatio * 100\"\n [style.background-image]=\"image?.background\"\n class=\"bb-file-picker-image\">\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n <span *ngIf=\"data?.file?.name as name\">{{ name }}</span>\n <span *ngIf=\"data?.file?.size as size\">{{ size | bbFileSize }}</span>\n </div>\n</div>\n\n<bb-form-error *ngIf=\"!hideErrors\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The file picker hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\n\n<!-- Upload icon. -->\n<ng-template #uploadIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"24\"\n height=\"24\">\n <path fill=\"currentColor\"\n d=\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5a2.5 2.5 0 010-5H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"></path>\n <path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path>\n </svg>\n</ng-template>\n\n<!-- Close icon. -->\n<ng-template #closeIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"24\"\n height=\"24\">\n <path fill=\"currentColor\"\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n </svg>\n</ng-template>\n", styles: [".bb-file-picker{display:block}.bb-file-picker.disabled>.bb-file-picker-wrapper{cursor:default;background-color:#cccccca3}.bb-file-picker.grouped{margin-bottom:20px}.bb-file-picker.full>.bb-file-picker-wrapper{width:100%}.bb-file-picker:not(.disabled) .bb-file-picker-button{background-color:#fff}.bb-file-picker:not(.disabled):focus>.bb-file-picker-wrapper,.bb-file-picker:not(.disabled).hovered>.bb-file-picker-wrapper{box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a,0 0 0 3px #007bff33}.bb-file-picker.required>.bb-file-picker-label:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5}.bb-file-picker.error>.bb-file-picker-label{color:#c23934}.bb-file-picker.error>.bb-file-picker-hint{display:none}.bb-file-picker.error>.bb-file-picker-wrapper{border:1px solid #962b26;background-color:#c2393440!important;box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a,0 0 0 3px #c2393466!important}.bb-file-picker.error .bb-file-picker-button{background-color:transparent}.bb-file-picker-wrapper{max-width:100%;-webkit-user-select:none;user-select:none;border-radius:3px;display:inline-flex;flex-direction:column;border:1px solid #b6bbc1;background-color:#fff8ff;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a}.bb-file-picker-label{color:#000;display:block;position:relative;margin-bottom:4px}.bb-file-picker-input{opacity:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;position:absolute}.bb-file-picker-container{min-height:38px;display:inline-flex}.bb-file-picker-button{margin:0;z-index:1;border:none;color:#2196f3;line-height:1;cursor:pointer;padding:0 12px;-webkit-appearance:none;appearance:none;font-weight:500;align-items:center;white-space:nowrap;display:inline-flex;border-top-left-radius:3px;border-bottom-left-radius:3px;border-right:1px solid #b6bbc1;background-color:#ffffff80;transition:box-shadow .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-button:focus{box-shadow:0 0 0 3px #007bff33}.bb-file-picker-button:disabled{cursor:default}.bb-file-picker-button.destructive{color:#f55656}.bb-file-picker-button.standalone{width:100%;border-right:none;border-top-right-radius:3px;border-bottom-right-radius:3px}.bb-file-picker-icon{margin-right:4px}.bb-file-picker-zone{flex:1;color:#848f99;font-size:14px;padding:8px 12px;line-height:18px;align-items:center;display:inline-flex;justify-content:center}.bb-file-picker-info{height:0;color:#848f99;padding:0 12px;overflow:hidden;line-height:36px;align-items:center;display:inline-flex;background-color:#fff8ff;border-top:0 solid #b6bbc1;transition:height .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-info.visible{height:38px;border-top-width:1px}.bb-file-picker-info>span{opacity:.4;max-width:100%;font-size:14px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.bb-file-picker-info>span:first-child{flex:1}.bb-file-picker-info>span:last-child{margin-left:12px}.bb-file-picker-image-container{overflow:hidden;border-top:1px solid #b6bbc1}.bb-file-picker-image-wrapper{width:100%;max-width:40%;margin:20px auto}.bb-file-picker-image{width:100%;display:flex;overflow:hidden;position:relative;border-radius:4px;will-change:opacity;background-size:cover;background-position:center;background-repeat:no-repeat}.bb-file-picker-hint{display:block;color:#738694;font-size:13px;margin-top:4px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "component", type: i3.BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.BbLocalize, name: "bbLocalize" }, { kind: "pipe", type: i5.BbFileSize, name: "bbFileSize" }, { kind: "pipe", type: i6.BbFileImage, name: "bbFileImage" }], animations: [
|
|
164
|
+
trigger('bbFilePickerImageAnimation', [
|
|
165
|
+
transition(':enter', [
|
|
166
|
+
style({ opacity: 0 }),
|
|
167
|
+
animate('200ms', style({ opacity: 1 }))
|
|
168
|
+
]),
|
|
169
|
+
transition(':leave', [
|
|
170
|
+
animate('200ms', style({ opacity: 0 }))
|
|
171
|
+
])
|
|
172
|
+
])
|
|
173
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
174
|
+
}
|
|
175
|
+
export { BbFilePicker };
|
|
176
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BbFilePicker, decorators: [{
|
|
177
|
+
type: Component,
|
|
178
|
+
args: [{ selector: 'bb-file-picker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
|
|
179
|
+
{
|
|
180
|
+
provide: NG_VALUE_ACCESSOR,
|
|
181
|
+
useExisting: forwardRef(() => BbFilePicker),
|
|
182
|
+
multi: true
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
provide: NG_VALIDATORS,
|
|
186
|
+
useExisting: BbFilePicker,
|
|
187
|
+
multi: true
|
|
188
|
+
}
|
|
189
|
+
], host: {
|
|
190
|
+
'class': 'bb-file-picker',
|
|
191
|
+
'[class.required]': 'required',
|
|
192
|
+
'[class.disabled]': 'disabled',
|
|
193
|
+
'[class.grouped]': 'grouped',
|
|
194
|
+
'[class.hovered]': 'hovered',
|
|
195
|
+
'[class.error]': 'error'
|
|
196
|
+
}, animations: [
|
|
197
|
+
trigger('bbFilePickerImageAnimation', [
|
|
198
|
+
transition(':enter', [
|
|
199
|
+
style({ opacity: 0 }),
|
|
200
|
+
animate('200ms', style({ opacity: 1 }))
|
|
201
|
+
]),
|
|
202
|
+
transition(':leave', [
|
|
203
|
+
animate('200ms', style({ opacity: 0 }))
|
|
204
|
+
])
|
|
205
|
+
])
|
|
206
|
+
], inputs: ['disabled', 'hideErrors', 'grouped', 'required'], preserveWhitespaces: false, template: "<!-- The label of the input. -->\n<label *ngIf=\"label as labelContent\"\n [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\n\n<!-- The input that can open the file picker. -->\n<input #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n class=\"bb-file-picker-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n<div *ngIf=\"value$ | async as data\"\n class=\"bb-file-picker-wrapper\">\n <!-- The button that accepts files. -->\n <div class=\"bb-file-picker-container\">\n <button [class.destructive]=\"!!data?.file\"\n [class.standalone]=\"!allowDragging\"\n [disabled]=\"disabled\"\n [id]=\"labelId\"\n (click)=\"onButtonPressed(data?.file)\"\n type=\"button\"\n class=\"bb-file-picker-button\">\n <ng-container *ngTemplateOutlet=\"data?.file ? closeIcon : uploadIcon\"></ng-container>\n {{ (data?.file ? 'file-picker.remove' : 'file-picker.choose') | bbLocalize }}\n </button>\n <div *ngIf=\"allowDragging\"\n class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n </div>\n\n <ng-container *ngIf=\"!!extraTemplate\">\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"showImages\">\n <div *ngIf=\"data?.file | bbFileImage | async as image\"\n class=\"bb-file-picker-image-container\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [@bbFilePickerImageAnimation]=\"true\"\n [style.padding-top.%]=\"image?.aspectRatio * 100\"\n [style.background-image]=\"image?.background\"\n class=\"bb-file-picker-image\">\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n <span *ngIf=\"data?.file?.name as name\">{{ name }}</span>\n <span *ngIf=\"data?.file?.size as size\">{{ size | bbFileSize }}</span>\n </div>\n</div>\n\n<bb-form-error *ngIf=\"!hideErrors\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The file picker hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\n\n<!-- Upload icon. -->\n<ng-template #uploadIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"24\"\n height=\"24\">\n <path fill=\"currentColor\"\n d=\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5a2.5 2.5 0 010-5H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"></path>\n <path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path>\n </svg>\n</ng-template>\n\n<!-- Close icon. -->\n<ng-template #closeIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"24\"\n height=\"24\">\n <path fill=\"currentColor\"\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n </svg>\n</ng-template>\n", styles: [".bb-file-picker{display:block}.bb-file-picker.disabled>.bb-file-picker-wrapper{cursor:default;background-color:#cccccca3}.bb-file-picker.grouped{margin-bottom:20px}.bb-file-picker.full>.bb-file-picker-wrapper{width:100%}.bb-file-picker:not(.disabled) .bb-file-picker-button{background-color:#fff}.bb-file-picker:not(.disabled):focus>.bb-file-picker-wrapper,.bb-file-picker:not(.disabled).hovered>.bb-file-picker-wrapper{box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a,0 0 0 3px #007bff33}.bb-file-picker.required>.bb-file-picker-label:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5}.bb-file-picker.error>.bb-file-picker-label{color:#c23934}.bb-file-picker.error>.bb-file-picker-hint{display:none}.bb-file-picker.error>.bb-file-picker-wrapper{border:1px solid #962b26;background-color:#c2393440!important;box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a,0 0 0 3px #c2393466!important}.bb-file-picker.error .bb-file-picker-button{background-color:transparent}.bb-file-picker-wrapper{max-width:100%;-webkit-user-select:none;user-select:none;border-radius:3px;display:inline-flex;flex-direction:column;border:1px solid #b6bbc1;background-color:#fff8ff;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a}.bb-file-picker-label{color:#000;display:block;position:relative;margin-bottom:4px}.bb-file-picker-input{opacity:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;position:absolute}.bb-file-picker-container{min-height:38px;display:inline-flex}.bb-file-picker-button{margin:0;z-index:1;border:none;color:#2196f3;line-height:1;cursor:pointer;padding:0 12px;-webkit-appearance:none;appearance:none;font-weight:500;align-items:center;white-space:nowrap;display:inline-flex;border-top-left-radius:3px;border-bottom-left-radius:3px;border-right:1px solid #b6bbc1;background-color:#ffffff80;transition:box-shadow .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-button:focus{box-shadow:0 0 0 3px #007bff33}.bb-file-picker-button:disabled{cursor:default}.bb-file-picker-button.destructive{color:#f55656}.bb-file-picker-button.standalone{width:100%;border-right:none;border-top-right-radius:3px;border-bottom-right-radius:3px}.bb-file-picker-icon{margin-right:4px}.bb-file-picker-zone{flex:1;color:#848f99;font-size:14px;padding:8px 12px;line-height:18px;align-items:center;display:inline-flex;justify-content:center}.bb-file-picker-info{height:0;color:#848f99;padding:0 12px;overflow:hidden;line-height:36px;align-items:center;display:inline-flex;background-color:#fff8ff;border-top:0 solid #b6bbc1;transition:height .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-info.visible{height:38px;border-top-width:1px}.bb-file-picker-info>span{opacity:.4;max-width:100%;font-size:14px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.bb-file-picker-info>span:first-child{flex:1}.bb-file-picker-info>span:last-child{margin-left:12px}.bb-file-picker-image-container{overflow:hidden;border-top:1px solid #b6bbc1}.bb-file-picker-image-wrapper{width:100%;max-width:40%;margin:20px auto}.bb-file-picker-image{width:100%;display:flex;overflow:hidden;position:relative;border-radius:4px;will-change:opacity;background-size:cover;background-position:center;background-repeat:no-repeat}.bb-file-picker-hint{display:block;color:#738694;font-size:13px;margin-top:4px}\n"] }]
|
|
207
|
+
}], propDecorators: { fileInput: [{
|
|
208
|
+
type: ViewChild,
|
|
209
|
+
args: ['fileInput', { static: true }]
|
|
210
|
+
}], extraTemplate: [{
|
|
211
|
+
type: ContentChild,
|
|
212
|
+
args: ['extra']
|
|
213
|
+
}], label: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], hint: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], accept: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}], showImages: [{
|
|
220
|
+
type: Input
|
|
221
|
+
}], allowDragging: [{
|
|
222
|
+
type: Input
|
|
223
|
+
}], value: [{
|
|
224
|
+
type: Input
|
|
225
|
+
}], valueChange: [{
|
|
226
|
+
type: Output
|
|
227
|
+
}], onDrag: [{
|
|
228
|
+
type: HostListener,
|
|
229
|
+
args: ['dragover', ['$event', 'true']]
|
|
230
|
+
}, {
|
|
231
|
+
type: HostListener,
|
|
232
|
+
args: ['dragleave', ['$event', 'false']]
|
|
233
|
+
}], onDrop: [{
|
|
234
|
+
type: HostListener,
|
|
235
|
+
args: ['drop', ['$event']]
|
|
236
|
+
}] } });
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2ZpbGUtcGlja2VyL2ZpbGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9maWxlLXBpY2tlci9maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBRVosWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFXSCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGFBQWEsRUFDYixVQUFVLEVBQ1YsZUFBZSxFQUNsQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBb0MsYUFBYSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBRXJDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQUVyQixNQUFNLGdCQUFnQjtDQUNyQjtBQUVELE1BQU0scUJBQXFCLEdBTXJCLGFBQWEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWhHLE1Bd0NhLFlBQWEsU0FBUSxxQkFBcUI7SUF4Q3ZEOztRQThDSSxV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LEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQztnQ0FDbkIsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzs2QkFDeEMsQ0FBQzs0QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNqQixPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDOzZCQUN4QyxDQUFDO3lCQUNMLENBQUM7cUJBQ0wsVUFDTyxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyx1QkFDcEMsS0FBSzs4QkFLYyxTQUFTO3NCQUFoRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ2YsYUFBYTtzQkFBbkMsWUFBWTt1QkFBQyxPQUFPO2dCQUdaLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFRRixLQUFLO3NCQURSLEtBQUs7Z0JBTUksV0FBVztzQkFBcEIsTUFBTTtnQkFTUCxNQUFNO3NCQUZMLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQzs7c0JBQzNDLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQztnQkFjOUMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDYW5EaXNhYmxlLFxuICAgIENhbkRpc2FibGVDb25zdHJ1Y3RvcixcbiAgICBJc0dyb3VwZWQsXG4gICAgSXNHcm91cGVkQ29uc3RydWN0b3IsXG4gICAgSXNSZXF1aXJlZCxcbiAgICBJc1JlcXVpcmVkQ29uc3RydWN0b3IsXG4gICAgQ2FuSGlkZUVycm9ycyxcbiAgICBDYW5IaWRlRXJyb3JzQ29uc3RydWN0b3IsXG4gICAgSGFzRXJyb3IsXG4gICAgSGFzRXJyb3JDb25zdHJ1Y3RvcixcbiAgICBtaXhpbkRpc2FibGVkLFxuICAgIG1peGluR3JvdXBlZCxcbiAgICBtaXhpblJlcXVpcmVkLFxuICAgIG1peGluRXJyb3IsXG4gICAgbWl4aW5IaWRlRXJyb3JzXG59IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHthbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5jbGFzcyBCYkZpbGVQaWNrZXJCYXNlIHtcbn1cblxuY29uc3QgQmJGaWxlUGlja2VyTWl4aW5CYXNlOiBJc1JlcXVpcmVkQ29uc3RydWN0b3JcbiAgICAmIENhbkRpc2FibGVDb25zdHJ1Y3RvclxuICAgICYgSXNHcm91cGVkQ29uc3RydWN0b3JcbiAgICAmIEhhc0Vycm9yQ29uc3RydWN0b3JcbiAgICAmIENhbkhpZGVFcnJvcnNDb25zdHJ1Y3RvclxuICAgICYgdHlwZW9mIEJiRmlsZVBpY2tlckJhc2VcbiAgICA9IG1peGluUmVxdWlyZWQobWl4aW5EaXNhYmxlZChtaXhpbkdyb3VwZWQobWl4aW5FcnJvcihtaXhpbkhpZGVFcnJvcnMoQmJGaWxlUGlja2VyQmFzZSkpKSkpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiLWZpbGUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCYkZpbGVQaWNrZXIpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBCYkZpbGVQaWNrZXIsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYi1maWxlLXBpY2tlcicsXG4gICAgICAgICdbY2xhc3MucmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAgICAgJ1tjbGFzcy5kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICAgICAnW2NsYXNzLmdyb3VwZWRdJzogJ2dyb3VwZWQnLFxuICAgICAgICAnW2NsYXNzLmhvdmVyZWRdJzogJ2hvdmVyZWQnLFxuICAgICAgICAnW2NsYXNzLmVycm9yXSc6ICdlcnJvcidcbiAgICB9LFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignYmJGaWxlUGlja2VySW1hZ2VBbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoe29wYWNpdHk6IDB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCcyMDBtcycsIHN0eWxlKHtvcGFjaXR5OiAxfSkpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKCcyMDBtcycsIHN0eWxlKHtvcGFjaXR5OiAwfSkpXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2hpZGVFcnJvcnMnLCAnZ3JvdXBlZCcsICdyZXF1aXJlZCddLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIEJiRmlsZVBpY2tlciBleHRlbmRzIEJiRmlsZVBpY2tlck1peGluQmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBJc1JlcXVpcmVkLCBDYW5EaXNhYmxlLCBJc0dyb3VwZWQsIEhhc0Vycm9yLCBDYW5IaWRlRXJyb3JzIHtcblxuICAgIC8vIFZpZXdzLlxuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcsIHtzdGF0aWM6IHRydWV9KSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gICAgQENvbnRlbnRDaGlsZCgnZXh0cmEnKSBleHRyYVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLy8gSW5wdXRzLlxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgaGludDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgc2hvd0ltYWdlczogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgYWxsb3dEcmFnZ2luZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBsYWJlbElkID0gYGJiLWZpbGUtcGlja2VyLSR7bmV4dFVuaXF1ZUlkKyt9YDtcbiAgICBob3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgdmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IGZpbGU/OiBGaWxlIH0+KHt9KTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICBjb25zdCB7ZmlsZX0gPSB0aGlzLnZhbHVlJC5nZXRWYWx1ZSgpO1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGUgfCBudWxsPigpO1xuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBGaWxlIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnZhbHVlJC5uZXh0KHtmaWxlOiB2YWx1ZX0pO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnLCAndHJ1ZSddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIFsnJGV2ZW50JywgJ2ZhbHNlJ10pXG4gICAgb25EcmFnKGV2ZW50OiBFdmVudCwgaXNIb3ZlcmVkOiBib29sZWFuKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBjYW4gc3VwcG9ydCBkcmFnLlxuICAgICAgICBpZiAoIXRoaXMuYWxsb3dEcmFnZ2luZyB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmV2ZW50IHRoZSBkZWZhdWx0IGV2ZW50IGFjdGlvblxuICAgICAgICAvLyBhbmQgc3RhcnQgdGhlIGhvdmVyaW5nLlxuICAgICAgICB0aGlzLnByZXZlbnREZWZhdWx0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5ob3ZlcmVkID0gaXNIb3ZlcmVkO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICAgIG9uRHJvcChldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGlucHV0IGNhbiBzdXBwb3J0IGRyYWcuXG4gICAgICAgIGlmICghdGhpcy5hbGxvd0RyYWdnaW5nIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByZXZlbnQgdGhlIGRlZmF1bHQgZXZlbnQgYWN0aW9uXG4gICAgICAgIC8vIGFuZCBzdG9wIHRoZSBob3ZlcmluZy5cbiAgICAgICAgdGhpcy5wcmV2ZW50RGVmYXVsdChldmVudCk7XG4gICAgICAgIHRoaXMuaG92ZXJlZCA9IGZhbHNlO1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGZpbGUuXG4gICAgICAgIHRoaXMuc2F2ZUZpbGUoZXZlbnRbJ2RhdGFUcmFuc2ZlciddLmZpbGVzKTtcblxuICAgICAgICAvLyBSdW4gdGhlIG9uIGNoYW5nZSBjYWxsYmFjay5cbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIG9uQnV0dG9uUHJlc3NlZChmaWxlPzogRmlsZSkge1xuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuRmlsZVBpY2tlcigpO1xuICAgIH1cblxuICAgIG9wZW5GaWxlUGlja2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlSW5wdXRcbiAgICAgICAgICAgICYmIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgICYmIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2tcbiAgICAgICAgICAgICYmIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG5cbiAgICBvbkZpbGVDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBpcyBub3QgZGlzYWJsZWQuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeHRyYWN0IHRoZSBmaWxlIGZyb20gdGhlIGV2ZW50LlxuICAgICAgICBjb25zdCBmaWxlTGlzdCA9IHRoaXMuZ2V0RmlsZUxpc3RGcm9tRXZlbnQoZXZlbnQpO1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGZpbGUuXG4gICAgICAgIHRoaXMuc2F2ZUZpbGUoZmlsZUxpc3QpO1xuXG4gICAgICAgIC8vIFJ1biB0aGUgb24gY2hhbmdlIGNhbGxiYWNrLlxuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy52YWx1ZSk7XG5cbiAgICAgICAgLy8gQ2xlYXIgdGhlIGZpbGUgaW5wdXQuXG4gICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dCAmJiB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICB9O1xuXG4gICAgb25DaGFuZ2VDYWxsYmFjazogKF86IEZpbGUgfCBudWxsKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIH07XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBGaWxlIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShtZXRob2Q6IChfOiBGaWxlIHwgbnVsbCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBtZXRob2Q7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQobWV0aG9kOiAoKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBtZXRob2Q7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIG9uRXJyb3JDaGFuZ2UoZXJyb3I6IHsgdG9rZW46IHN0cmluZywgZGF0YT86IGFueSB9IHwgbnVsbCkge1xuICAgICAgICB0aGlzLmVycm9yID0gISFlcnJvcjtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh7dmFsdWV9OiBGb3JtQ29udHJvbDxGaWxlPikge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWdleFN0cmluZyA9ICh0aGlzLmFjY2VwdCB8fCAnKicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwqL2csICcuXFwqJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICd8Jyk7XG4gICAgICAgIGNvbnN0IG1pbWVUeXBlUmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4U3RyaW5nKTtcblxuICAgICAgICBjb25zdCBpc05vdFZhbGlkID0gKHR5cGVvZiBGaWxlID09PSAndW5kZWZpbmVkJykgfHwgISh2YWx1ZSBpbnN0YW5jZW9mIEZpbGUpIHx8ICFtaW1lVHlwZVJlZ2V4LnRlc3QodmFsdWU/LnR5cGUpO1xuICAgICAgICByZXR1cm4gaXNOb3RWYWxpZCAmJiB7XG4gICAgICAgICAgICBpbnZhbGlkRmlsZVR5cGU6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhdmVGaWxlID0gKGZpbGVzPzogRmlsZUxpc3QpID0+IHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGZpbGVzIGV4aXN0LlxuICAgICAgICBpZiAoIWZpbGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgZmlyc3QgZmlsZS5cbiAgICAgICAgY29uc3QgZmlsZSA9IGZpbGVzWzBdO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBmaXJzdCBmaWxlIGV4aXN0cy5cbiAgICAgICAgaWYgKCFmaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTYXZlIHRoZSBmaWxlLlxuICAgICAgICB0aGlzLnZhbHVlID0gZmlsZTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBnZXRGaWxlTGlzdEZyb21FdmVudCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWxlbWVudC5maWxlcztcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwcmV2ZW50RGVmYXVsdCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfTtcblxufVxuIiwiPCEtLSBUaGUgbGFiZWwgb2YgdGhlIGlucHV0LiAtLT5cbjxsYWJlbCAqbmdJZj1cImxhYmVsIGFzIGxhYmVsQ29udGVudFwiXG4gICAgICAgW2Zvcl09XCJsYWJlbElkXCJcbiAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWxhYmVsXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtiYlRlbXBsYXRlXT1cImxhYmVsQ29udGVudFwiPlxuICAgICAgICB7eyBsYWJlbENvbnRlbnQgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9sYWJlbD5cblxuPCEtLSBUaGUgaW5wdXQgdGhhdCBjYW4gb3BlbiB0aGUgZmlsZSBwaWNrZXIuIC0tPlxuPGlucHV0ICNmaWxlSW5wdXRcbiAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWlucHV0XCJcbiAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgdGFiaW5kZXg9XCItMVwiPlxuXG48ZGl2ICpuZ0lmPVwidmFsdWUkIHwgYXN5bmMgYXMgZGF0YVwiXG4gICAgIGNsYXNzPVwiYmItZmlsZS1waWNrZXItd3JhcHBlclwiPlxuICAgIDwhLS0gVGhlIGJ1dHRvbiB0aGF0IGFjY2VwdHMgZmlsZXMuIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1jb250YWluZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBbY2xhc3MuZGVzdHJ1Y3RpdmVdPVwiISFkYXRhPy5maWxlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc3RhbmRhbG9uZV09XCIhYWxsb3dEcmFnZ2luZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwibGFiZWxJZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQnV0dG9uUHJlc3NlZChkYXRhPy5maWxlKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1idXR0b25cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRhPy5maWxlID8gY2xvc2VJY29uIDogdXBsb2FkSWNvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAge3sgKGRhdGE/LmZpbGUgPyAnZmlsZS1waWNrZXIucmVtb3ZlJyA6ICdmaWxlLXBpY2tlci5jaG9vc2UnKSB8IGJiTG9jYWxpemUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd0RyYWdnaW5nXCJcbiAgICAgICAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLXpvbmVcIj5cbiAgICAgICAgICAgIHt7ICdmaWxlLXBpY2tlci5kcm9wJyB8IGJiTG9jYWxpemUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFleHRyYVRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHRyYVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkYXRhPy5maWxlfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dJbWFnZXNcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRhdGE/LmZpbGUgfCBiYkZpbGVJbWFnZSB8IGFzeW5jIGFzIGltYWdlXCJcbiAgICAgICAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWltYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWltYWdlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtAYmJGaWxlUGlja2VySW1hZ2VBbmltYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICBbc3R5bGUucGFkZGluZy10b3AuJV09XCJpbWFnZT8uYXNwZWN0UmF0aW8gKiAxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiaW1hZ2U/LmJhY2tncm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1pbWFnZVwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBFeHRyYSBpbmZvcm1hdGlvbiBvZiB0aGUgZmlsZS4gLS0+XG4gICAgPGRpdiBbY2xhc3MudmlzaWJsZV09XCIhIWRhdGE/LmZpbGVcIlxuICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1pbmZvXCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YT8uZmlsZT8ubmFtZSBhcyBuYW1lXCI+e3sgbmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhPy5maWxlPy5zaXplIGFzIHNpemVcIj57eyBzaXplIHwgYmJGaWxlU2l6ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48YmItZm9ybS1lcnJvciAqbmdJZj1cIiFoaWRlRXJyb3JzXCJcbiAgICAgICAgICAgICAgIChlcnJvckNoYW5nZSk9XCJvbkVycm9yQ2hhbmdlKCRldmVudClcIj5cbjwvYmItZm9ybS1lcnJvcj5cblxuPCEtLSBUaGUgZmlsZSBwaWNrZXIgaGludC4gLS0+XG48cCAqbmdJZj1cImhpbnQgYXMgaGludENvbnRlbnRcIlxuICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1oaW50XCI+XG4gICAgPG5nLXRlbXBsYXRlIFtiYlRlbXBsYXRlXT1cImhpbnRDb250ZW50XCI+XG4gICAgICAgIHt7IGhpbnRDb250ZW50IH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvcD5cblxuPCEtLSBVcGxvYWQgaWNvbi4gLS0+XG48bmctdGVtcGxhdGUgI3VwbG9hZEljb24+XG4gICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgIGNsYXNzPVwiYmItZmlsZS1waWNrZXItaWNvblwiXG4gICAgICAgICB3aWR0aD1cIjI0XCJcbiAgICAgICAgIGhlaWdodD1cIjI0XCI+XG4gICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICBkPVwiTTIgMTIuNUMyIDkuNDYgNC40NiA3IDcuNSA3SDE4YzIuMjEgMCA0IDEuNzkgNCA0cy0xLjc5IDQtNCA0SDkuNWEyLjUgMi41IDAgMDEwLTVIMTd2Mkg5LjQxYy0uNTUgMC0uNTUgMSAwIDFIMThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0ySDcuNUM1LjU3IDkgNCAxMC41NyA0IDEyLjVTNS41NyAxNiA3LjUgMTZIMTd2Mkg3LjVDNC40NiAxOCAyIDE1LjU0IDIgMTIuNXpcIj48L3BhdGg+XG4gICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gQ2xvc2UgaWNvbi4gLS0+XG48bmctdGVtcGxhdGUgI2Nsb3NlSWNvbj5cbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1pY29uXCJcbiAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgaGVpZ2h0PVwiMjRcIj5cbiAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIGQ9XCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiPjwvcGF0aD5cbiAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { mixinRequired, mixinDisabled, mixinReadonly, mixinGrouped, mixinFocused, mixinError, mixinHideErrors } from '@bravobit/bb-foundation';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ContentChild, Input, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { NgControl } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@bravobit/bb-foundation/utils";
|
|
7
|
+
import * as i3 from "../form-error/form-error.component";
|
|
8
|
+
let nextUniqueId = 0;
|
|
9
|
+
class BbFormControlBase {
|
|
10
|
+
}
|
|
11
|
+
const BbFormControlMixinBase = mixinDisabled(mixinFocused(mixinReadonly(mixinGrouped(mixinRequired(mixinError(mixinHideErrors(BbFormControlBase)))))));
|
|
12
|
+
class BbFormControl extends BbFormControlMixinBase {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
// Inputs.
|
|
16
|
+
this.label = null;
|
|
17
|
+
this.hint = null;
|
|
18
|
+
// Data.
|
|
19
|
+
this.arrow = false;
|
|
20
|
+
// Data.
|
|
21
|
+
this.labelId = `bb-form-control-${nextUniqueId++}`;
|
|
22
|
+
}
|
|
23
|
+
onErrorChange(error) {
|
|
24
|
+
this.error = !!error;
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BbFormControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: BbFormControl, selector: "bb-form-control", inputs: { grouped: "grouped", hideErrors: "hideErrors", label: "label", hint: "hint" }, host: { properties: { "class.readonly": "readonly", "class.required": "required", "class.disabled": "disabled", "class.focused": "focused", "class.grouped": "grouped", "class.arrow": "arrow", "class.error": "error" }, classAttribute: "bb-form-control" }, queries: [{ propertyName: "ngControl", first: true, predicate: NgControl, descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n<bb-form-error *ngIf=\"!hideErrors\"\n [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The form control hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\n", styles: [".bb-form-control{color:#2d3c4d;display:block}.bb-form-control>.bb-form-control-container>*.bb-prefix,.bb-form-control>.bb-form-control-container>*.bb-suffix{margin:0 8px;color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control.grouped{margin-bottom:20px}.bb-form-control.small{max-width:240px}.bb-form-control.medium{max-width:480px}.bb-form-control.large{max-width:720px}.bb-form-control.required>.bb-form-control-label:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5}.bb-form-control.disabled>.bb-form-control-container{cursor:default;pointer-events:none;background-color:#cccccca3}.bb-form-control.disabled>.bb-form-control-container>input,.bb-form-control.disabled>.bb-form-control-container>textarea,.bb-form-control.disabled>.bb-form-control-container>select{color:#aaa}.bb-form-control.readonly>.bb-form-control-container{cursor:default;border:1px dotted #bdc4c9}.bb-form-control:not(.disabled):not(.readonly).focused>.bb-form-control-container{background-color:#fff;box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a,0 0 0 3px #007bff33}.bb-form-control:not(.disabled):not(.readonly).focused>.bb-form-control-container>input::placeholder,.bb-form-control:not(.disabled):not(.readonly).focused>.bb-form-control-container>textarea::placeholder{color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control.error>.bb-form-control-label{color:#c23934}.bb-form-control.error>.bb-form-control-hint{display:none}.bb-form-control.error>.bb-form-control-container{border:1px solid #962b26;background-color:#c2393440!important;box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a,0 0 0 3px #c2393466!important}.bb-form-control.error>.bb-form-control-container>*.bb-prefix,.bb-form-control.error>.bb-form-control-container>.bb-suffix{color:#c23934}.bb-form-control.error>.bb-form-control-container>input::placeholder,.bb-form-control.error>.bb-form-control-container>textarea::placeholder{color:#c2393466!important}.bb-form-control.arrow>.bb-form-control-container:after{top:0;right:0;bottom:0;width:20px;content:\"\";height:36px;display:flex;min-width:20px;position:absolute;pointer-events:none;background-repeat:no-repeat;background-position:calc(100% - 8px) center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAGCAYAAAAYLBS/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAWUlEQVQYlY3QsQ2DMAAEwMMTsAkrZInvWY3WXiIjJJtkA1OBRCIRf/nSffFTrXXGE4uxbCXJBw+8R0CStcAg3JKsUI7mDzzBBd3AC4Cp9/4z21o7znl9A9gBAf4fpjLTwkUAAAAASUVORK5CYII=)}.bb-form-control-container{width:100%;display:flex;overflow:hidden;position:relative;border-radius:3px;align-items:center;border:1px solid #b6bbc1;background-color:#fff8ff;transition-duration:.25s;transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a}.bb-form-control-container>input::placeholder,.bb-form-control-container>textarea::placeholder{color:#d2d2d2;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control-container>input,.bb-form-control-container>textarea,.bb-form-control-container>select{margin:0;width:100%;border:none;color:#3d464d;font-size:16px;-webkit-appearance:none;appearance:none;background-color:transparent}.bb-form-control-container>input,.bb-form-control-container>select{height:36px;padding:0 8px}.bb-form-control-container>select{padding-right:28px}.bb-form-control-container>select>::-ms-expand{display:none}.bb-form-control-container>input::-ms-clear,.bb-form-control-container>input::-ms-reveal{width:0;height:0;display:none}.bb-form-control-container>input::-webkit-search-decoration,.bb-form-control-container>input::-webkit-search-cancel-button,.bb-form-control-container>input::-webkit-search-results-button,.bb-form-control-container>input::-webkit-search-results-decoration{display:none}.bb-form-control-container>textarea{resize:none;padding:8px}.bb-form-control-label{color:#000;display:block;position:relative;margin-bottom:4px;transition:color 30ms cubic-bezier(0,0,.2,1)}.bb-form-control-error,.bb-form-control-hint{display:block;font-size:13px;margin-top:4px}.bb-form-control-error{color:#c23934}.bb-form-control-hint{color:#738694}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "component", type: i3.BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
28
|
+
}
|
|
29
|
+
export { BbFormControl };
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BbFormControl, decorators: [{
|
|
31
|
+
type: Component,
|
|
32
|
+
args: [{ selector: 'bb-form-control', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
33
|
+
'class': 'bb-form-control',
|
|
34
|
+
'[class.readonly]': 'readonly',
|
|
35
|
+
'[class.required]': 'required',
|
|
36
|
+
'[class.disabled]': 'disabled',
|
|
37
|
+
'[class.focused]': 'focused',
|
|
38
|
+
'[class.grouped]': 'grouped',
|
|
39
|
+
'[class.arrow]': 'arrow',
|
|
40
|
+
'[class.error]': 'error'
|
|
41
|
+
}, inputs: ['grouped', 'hideErrors'], preserveWhitespaces: false, template: "<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n<bb-form-error *ngIf=\"!hideErrors\"\n [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The form control hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\n", styles: [".bb-form-control{color:#2d3c4d;display:block}.bb-form-control>.bb-form-control-container>*.bb-prefix,.bb-form-control>.bb-form-control-container>*.bb-suffix{margin:0 8px;color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control.grouped{margin-bottom:20px}.bb-form-control.small{max-width:240px}.bb-form-control.medium{max-width:480px}.bb-form-control.large{max-width:720px}.bb-form-control.required>.bb-form-control-label:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5}.bb-form-control.disabled>.bb-form-control-container{cursor:default;pointer-events:none;background-color:#cccccca3}.bb-form-control.disabled>.bb-form-control-container>input,.bb-form-control.disabled>.bb-form-control-container>textarea,.bb-form-control.disabled>.bb-form-control-container>select{color:#aaa}.bb-form-control.readonly>.bb-form-control-container{cursor:default;border:1px dotted #bdc4c9}.bb-form-control:not(.disabled):not(.readonly).focused>.bb-form-control-container{background-color:#fff;box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a,0 0 0 3px #007bff33}.bb-form-control:not(.disabled):not(.readonly).focused>.bb-form-control-container>input::placeholder,.bb-form-control:not(.disabled):not(.readonly).focused>.bb-form-control-container>textarea::placeholder{color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control.error>.bb-form-control-label{color:#c23934}.bb-form-control.error>.bb-form-control-hint{display:none}.bb-form-control.error>.bb-form-control-container{border:1px solid #962b26;background-color:#c2393440!important;box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a,0 0 0 3px #c2393466!important}.bb-form-control.error>.bb-form-control-container>*.bb-prefix,.bb-form-control.error>.bb-form-control-container>.bb-suffix{color:#c23934}.bb-form-control.error>.bb-form-control-container>input::placeholder,.bb-form-control.error>.bb-form-control-container>textarea::placeholder{color:#c2393466!important}.bb-form-control.arrow>.bb-form-control-container:after{top:0;right:0;bottom:0;width:20px;content:\"\";height:36px;display:flex;min-width:20px;position:absolute;pointer-events:none;background-repeat:no-repeat;background-position:calc(100% - 8px) center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAGCAYAAAAYLBS/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAWUlEQVQYlY3QsQ2DMAAEwMMTsAkrZInvWY3WXiIjJJtkA1OBRCIRf/nSffFTrXXGE4uxbCXJBw+8R0CStcAg3JKsUI7mDzzBBd3AC4Cp9/4z21o7znl9A9gBAf4fpjLTwkUAAAAASUVORK5CYII=)}.bb-form-control-container{width:100%;display:flex;overflow:hidden;position:relative;border-radius:3px;align-items:center;border:1px solid #b6bbc1;background-color:#fff8ff;transition-duration:.25s;transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a}.bb-form-control-container>input::placeholder,.bb-form-control-container>textarea::placeholder{color:#d2d2d2;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control-container>input,.bb-form-control-container>textarea,.bb-form-control-container>select{margin:0;width:100%;border:none;color:#3d464d;font-size:16px;-webkit-appearance:none;appearance:none;background-color:transparent}.bb-form-control-container>input,.bb-form-control-container>select{height:36px;padding:0 8px}.bb-form-control-container>select{padding-right:28px}.bb-form-control-container>select>::-ms-expand{display:none}.bb-form-control-container>input::-ms-clear,.bb-form-control-container>input::-ms-reveal{width:0;height:0;display:none}.bb-form-control-container>input::-webkit-search-decoration,.bb-form-control-container>input::-webkit-search-cancel-button,.bb-form-control-container>input::-webkit-search-results-button,.bb-form-control-container>input::-webkit-search-results-decoration{display:none}.bb-form-control-container>textarea{resize:none;padding:8px}.bb-form-control-label{color:#000;display:block;position:relative;margin-bottom:4px;transition:color 30ms cubic-bezier(0,0,.2,1)}.bb-form-control-error,.bb-form-control-hint{display:block;font-size:13px;margin-top:4px}.bb-form-control-error{color:#c23934}.bb-form-control-hint{color:#738694}\n"] }]
|
|
42
|
+
}], propDecorators: { ngControl: [{
|
|
43
|
+
type: ContentChild,
|
|
44
|
+
args: [NgControl]
|
|
45
|
+
}], label: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], hint: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}] } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxhQUFhLEVBR2IsYUFBYSxFQUdiLGFBQWEsRUFHYixZQUFZLEVBR1osWUFBWSxFQUdaLFVBQVUsRUFHVixlQUFlLEVBQ2xCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFlLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFekMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBRXJCLE1BQU0saUJBQWlCO0NBQ3RCO0FBRUQsTUFBTSxzQkFBc0IsR0FRdEIsYUFBYSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFOUgsTUFtQmEsYUFBYyxTQUFRLHNCQUFzQjtJQW5CekQ7O1FBd0JJLFVBQVU7UUFDRCxVQUFLLEdBQXFDLElBQUksQ0FBQztRQUMvQyxTQUFJLEdBQXFDLElBQUksQ0FBQztRQUV2RCxRQUFRO1FBQ1IsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUV2QixRQUFRO1FBQ1IsWUFBTyxHQUFHLG1CQUFtQixZQUFZLEVBQUUsRUFBRSxDQUFDO0tBTWpEO0lBSkcsYUFBYSxDQUFDLEtBQTJDO1FBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN6QixDQUFDOzhHQWpCUSxhQUFhO2tHQUFiLGFBQWEscWJBR1IsU0FBUyx1RUMvRDNCLGs0QkE2QkE7O1NEK0JhLGFBQWE7MkZBQWIsYUFBYTtrQkFuQnpCLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsa0JBQWtCLEVBQUUsVUFBVTt3QkFDOUIsa0JBQWtCLEVBQUUsVUFBVTt3QkFDOUIsa0JBQWtCLEVBQUUsVUFBVTt3QkFDOUIsaUJBQWlCLEVBQUUsU0FBUzt3QkFDNUIsaUJBQWlCLEVBQUUsU0FBUzt3QkFDNUIsZUFBZSxFQUFFLE9BQU87d0JBQ3hCLGVBQWUsRUFBRSxPQUFPO3FCQUMzQixVQUNPLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyx1QkFDWixLQUFLOzhCQUtELFNBQVM7c0JBQWpDLFlBQVk7dUJBQUMsU0FBUztnQkFHZCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBJc1JlcXVpcmVkLFxuICAgIElzUmVxdWlyZWRDb25zdHJ1Y3RvcixcbiAgICBtaXhpblJlcXVpcmVkLFxuICAgIENhbkRpc2FibGUsXG4gICAgQ2FuRGlzYWJsZUNvbnN0cnVjdG9yLFxuICAgIG1peGluRGlzYWJsZWQsXG4gICAgSXNSZWFkb25seSxcbiAgICBJc1JlYWRvbmx5Q29uc3RydWN0b3IsXG4gICAgbWl4aW5SZWFkb25seSxcbiAgICBJc0dyb3VwZWQsXG4gICAgSXNHcm91cGVkQ29uc3RydWN0b3IsXG4gICAgbWl4aW5Hcm91cGVkLFxuICAgIElzRm9jdXNlZCxcbiAgICBJc0ZvY3VzZWRDb25zdHJ1Y3RvcixcbiAgICBtaXhpbkZvY3VzZWQsXG4gICAgSGFzRXJyb3IsXG4gICAgSGFzRXJyb3JDb25zdHJ1Y3RvcixcbiAgICBtaXhpbkVycm9yLFxuICAgIENhbkhpZGVFcnJvcnMsXG4gICAgQ2FuSGlkZUVycm9yc0NvbnN0cnVjdG9yLFxuICAgIG1peGluSGlkZUVycm9yc1xufSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuY2xhc3MgQmJGb3JtQ29udHJvbEJhc2Uge1xufVxuXG5jb25zdCBCYkZvcm1Db250cm9sTWl4aW5CYXNlOiBJc1JlcXVpcmVkQ29uc3RydWN0b3JcbiAgICAmIElzR3JvdXBlZENvbnN0cnVjdG9yXG4gICAgJiBJc0ZvY3VzZWRDb25zdHJ1Y3RvclxuICAgICYgSXNSZWFkb25seUNvbnN0cnVjdG9yXG4gICAgJiBDYW5EaXNhYmxlQ29uc3RydWN0b3JcbiAgICAmIEhhc0Vycm9yQ29uc3RydWN0b3JcbiAgICAmIENhbkhpZGVFcnJvcnNDb25zdHJ1Y3RvclxuICAgICYgdHlwZW9mIEJiRm9ybUNvbnRyb2xCYXNlXG4gICAgPSBtaXhpbkRpc2FibGVkKG1peGluRm9jdXNlZChtaXhpblJlYWRvbmx5KG1peGluR3JvdXBlZChtaXhpblJlcXVpcmVkKG1peGluRXJyb3IobWl4aW5IaWRlRXJyb3JzKEJiRm9ybUNvbnRyb2xCYXNlKSkpKSkpKTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYi1mb3JtLWNvbnRyb2wnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmItZm9ybS1jb250cm9sJyxcbiAgICAgICAgJ1tjbGFzcy5yZWFkb25seV0nOiAncmVhZG9ubHknLFxuICAgICAgICAnW2NsYXNzLnJlcXVpcmVkXSc6ICdyZXF1aXJlZCcsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1tjbGFzcy5mb2N1c2VkXSc6ICdmb2N1c2VkJyxcbiAgICAgICAgJ1tjbGFzcy5ncm91cGVkXSc6ICdncm91cGVkJyxcbiAgICAgICAgJ1tjbGFzcy5hcnJvd10nOiAnYXJyb3cnLFxuICAgICAgICAnW2NsYXNzLmVycm9yXSc6ICdlcnJvcidcbiAgICB9LFxuICAgIGlucHV0czogWydncm91cGVkJywgJ2hpZGVFcnJvcnMnXSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBCYkZvcm1Db250cm9sIGV4dGVuZHMgQmJGb3JtQ29udHJvbE1peGluQmFzZSBpbXBsZW1lbnRzIElzUmVxdWlyZWQsIElzRm9jdXNlZCwgSXNSZWFkb25seSwgSXNHcm91cGVkLCBDYW5EaXNhYmxlLCBIYXNFcnJvciwgQ2FuSGlkZUVycm9ycyB7XG5cbiAgICAvLyBWaWV3cy5cbiAgICBAQ29udGVudENoaWxkKE5nQ29udHJvbCkgbmdDb250cm9sOiBOZ0NvbnRyb2w7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBoaW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBEYXRhLlxuICAgIGFycm93OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBEYXRhLlxuICAgIGxhYmVsSWQgPSBgYmItZm9ybS1jb250cm9sLSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAgIG9uRXJyb3JDaGFuZ2UoZXJyb3I6IHsgdG9rZW46IHN0cmluZywgZGF0YT86IGFueSB9IHwgbnVsbCkge1xuICAgICAgICB0aGlzLmVycm9yID0gISFlcnJvcjtcbiAgICB9XG5cbn1cbiIsIjwhLS0gTGFiZWwgb2YgdGhlIGZvcm0gY29udHJvbC4gLS0+XG48bGFiZWwgKm5nSWY9XCJsYWJlbCBhcyBsYWJlbENvbnRlbnRcIlxuICAgICAgIFthdHRyLmZvcl09XCJsYWJlbElkXCJcbiAgICAgICBjbGFzcz1cImJiLWZvcm0tY29udHJvbC1sYWJlbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJsYWJlbENvbnRlbnRcIj5cbiAgICAgICAge3sgbGFiZWxDb250ZW50IH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbGFiZWw+XG5cbjwhLS0gVGhlIGlucHV0IHdpdGggdGhlIGFkZG9ucy4gLS0+XG48ZGl2IGNsYXNzPVwiYmItZm9ybS1jb250cm9sLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYlByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JiSW5wdXRdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYlN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPCEtLSBUaGUgZXJyb3IgY29tcG9uZW50LiAtLT5cbjxiYi1mb3JtLWVycm9yICpuZ0lmPVwiIWhpZGVFcnJvcnNcIlxuICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwibmdDb250cm9sXCJcbiAgICAgICAgICAgICAgIChlcnJvckNoYW5nZSk9XCJvbkVycm9yQ2hhbmdlKCRldmVudClcIj5cbjwvYmItZm9ybS1lcnJvcj5cblxuPCEtLSBUaGUgZm9ybSBjb250cm9sIGhpbnQuIC0tPlxuPHAgKm5nSWY9XCJoaW50IGFzIGhpbnRDb250ZW50XCJcbiAgIGNsYXNzPVwiYmItZm9ybS1jb250cm9sLWhpbnRcIj5cbiAgICA8bmctdGVtcGxhdGUgW2JiVGVtcGxhdGVdPVwiaGludENvbnRlbnRcIj5cbiAgICAgICAge3sgaGludENvbnRlbnQgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9wPlxuIl19
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { delay, distinctUntilChanged, map, startWith, tap } from 'rxjs/operators';
|
|
3
|
+
import { ELEMENTS_ERRORS } from '../elements.interfaces';
|
|
4
|
+
import { combineLatest, EMPTY, of } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../directives/form-submit.directive";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
import * as i3 from "../directives/form-submitter.directive";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
import * as i5 from "@bravobit/bb-foundation/localize";
|
|
11
|
+
class BbFormError {
|
|
12
|
+
// Inputs.
|
|
13
|
+
set control(value) {
|
|
14
|
+
this._ngControl = value;
|
|
15
|
+
}
|
|
16
|
+
get control() {
|
|
17
|
+
return this._ngControl;
|
|
18
|
+
}
|
|
19
|
+
constructor(_form, _control, _formSubmitter, _errors) {
|
|
20
|
+
this._form = _form;
|
|
21
|
+
this._control = _control;
|
|
22
|
+
this._formSubmitter = _formSubmitter;
|
|
23
|
+
this._errors = _errors;
|
|
24
|
+
// Outputs.
|
|
25
|
+
this.errorChange = new EventEmitter();
|
|
26
|
+
// Subscriptions.
|
|
27
|
+
this._ngControl = null;
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
// Set the control if it was not set before.
|
|
31
|
+
if (!this.control) {
|
|
32
|
+
this.control = this._control;
|
|
33
|
+
}
|
|
34
|
+
// Listen for the submit changes
|
|
35
|
+
const submitStatus$ = this.submitStatusChanges();
|
|
36
|
+
// An observable that emits error changes.
|
|
37
|
+
const errorChanges$ = this.statusChanges().pipe(map(() => this.getError(this.control.errors)), distinctUntilChanged(), map(error => typeof error === 'string' ? { token: error } : error));
|
|
38
|
+
// Whenever the user submitted the form we want to
|
|
39
|
+
// listen for any error changes.
|
|
40
|
+
this.error$ = combineLatest([submitStatus$, errorChanges$]).pipe(map(([submitted, error]) => {
|
|
41
|
+
// If not submitted return null.
|
|
42
|
+
if (!submitted) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
// Return the error if submitted.
|
|
46
|
+
return error;
|
|
47
|
+
}), tap(value => this.errorChange.emit(value)));
|
|
48
|
+
}
|
|
49
|
+
getError(errors) {
|
|
50
|
+
// Validate the errors exist.
|
|
51
|
+
if (!errors) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
// Get the first error in the errors.
|
|
55
|
+
const [errorName] = Object.keys(errors);
|
|
56
|
+
const error = errors[errorName];
|
|
57
|
+
// Validate the error exists.
|
|
58
|
+
if (!error) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
// Map the arrays into a object so we can
|
|
62
|
+
// access the functions by a key-lookup.
|
|
63
|
+
const errorFunctions = this._errors.reduce((previous, current) => ({ ...previous, ...current }), {});
|
|
64
|
+
// Get the error function.
|
|
65
|
+
const errorFunction = errorFunctions[errorName] || errorFunctions['unknown'];
|
|
66
|
+
// Validate the error function exists.
|
|
67
|
+
if (!errorFunction) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
// Return the parsed error.
|
|
71
|
+
return errorFunction(error);
|
|
72
|
+
}
|
|
73
|
+
submitStatusChanges() {
|
|
74
|
+
const native$ = this.getNativeFormSubmit();
|
|
75
|
+
const manual$ = this.getManualFormSubmit();
|
|
76
|
+
return combineLatest([native$, manual$]).pipe(map(([native, manual]) => native || manual), distinctUntilChanged());
|
|
77
|
+
}
|
|
78
|
+
getNativeFormSubmit() {
|
|
79
|
+
if (!this._form) {
|
|
80
|
+
return of(true);
|
|
81
|
+
}
|
|
82
|
+
return this._form.submitStatus$;
|
|
83
|
+
}
|
|
84
|
+
getManualFormSubmit() {
|
|
85
|
+
if (!this._formSubmitter) {
|
|
86
|
+
return of(false);
|
|
87
|
+
}
|
|
88
|
+
return this._formSubmitter.submitted$.pipe(distinctUntilChanged());
|
|
89
|
+
}
|
|
90
|
+
statusChanges() {
|
|
91
|
+
if (!this.control) {
|
|
92
|
+
return EMPTY;
|
|
93
|
+
}
|
|
94
|
+
if (!this.control.statusChanges) {
|
|
95
|
+
return EMPTY;
|
|
96
|
+
}
|
|
97
|
+
return this.control.statusChanges.pipe(startWith(this.control.status), delay(0));
|
|
98
|
+
}
|
|
99
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BbFormError, deps: [{ token: i1.BbFormSubmit, optional: true }, { token: i2.NgControl, optional: true }, { token: i3.BbFormSubmitter, optional: true }, { token: ELEMENTS_ERRORS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
100
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: BbFormError, selector: "bb-form-error", inputs: { control: "control" }, outputs: { errorChange: "errorChange" }, host: { classAttribute: "bb-form-error" }, ngImport: i0, template: "<ng-container *ngIf=\"error$ | async as error\">\n <p *ngIf=\"error?.token | bbLocalize:{optional: true, data: error?.data} as message\"\n class=\"bb-form-error-message\">\n {{ message }}\n </p>\n</ng-container>", styles: [".bb-form-error{display:block}.bb-form-error-message{color:#c23934;display:block;font-size:13px;margin-top:4px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
101
|
+
}
|
|
102
|
+
export { BbFormError };
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BbFormError, decorators: [{
|
|
104
|
+
type: Component,
|
|
105
|
+
args: [{ selector: 'bb-form-error', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
106
|
+
'class': 'bb-form-error'
|
|
107
|
+
}, preserveWhitespaces: false, template: "<ng-container *ngIf=\"error$ | async as error\">\n <p *ngIf=\"error?.token | bbLocalize:{optional: true, data: error?.data} as message\"\n class=\"bb-form-error-message\">\n {{ message }}\n </p>\n</ng-container>", styles: [".bb-form-error{display:block}.bb-form-error-message{color:#c23934;display:block;font-size:13px;margin-top:4px}\n"] }]
|
|
108
|
+
}], ctorParameters: function () { return [{ type: i1.BbFormSubmit, decorators: [{
|
|
109
|
+
type: Optional
|
|
110
|
+
}] }, { type: i2.NgControl, decorators: [{
|
|
111
|
+
type: Optional
|
|
112
|
+
}] }, { type: i3.BbFormSubmitter, decorators: [{
|
|
113
|
+
type: Optional
|
|
114
|
+
}] }, { type: undefined, decorators: [{
|
|
115
|
+
type: Optional
|
|
116
|
+
}, {
|
|
117
|
+
type: Inject,
|
|
118
|
+
args: [ELEMENTS_ERRORS]
|
|
119
|
+
}] }]; }, propDecorators: { control: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], errorChange: [{
|
|
122
|
+
type: Output
|
|
123
|
+
}] } });
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWhGLE9BQU8sRUFBQyxlQUFlLEVBQWdCLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBRTFELE1BV2EsV0FBVztJQUVwQixVQUFVO0lBQ1YsSUFDSSxPQUFPLENBQUMsS0FBZ0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBV0QsWUFBZ0MsS0FBb0IsRUFDcEIsUUFBb0IsRUFDcEIsY0FBZ0MsRUFDUCxPQUF5QjtRQUhsRCxVQUFLLEdBQUwsS0FBSyxDQUFlO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDcEIsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ1AsWUFBTyxH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MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzRDQXBCM0MsT0FBTztzQkFEVixLQUFLO2dCQVVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2RlbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGgsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtCYkZvcm1TdWJtaXR0ZXJ9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9ybS1zdWJtaXR0ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7RUxFTUVOVFNfRVJST1JTLCBFbGVtZW50c0Vycm9yfSBmcm9tICcuLi9lbGVtZW50cy5pbnRlcmZhY2VzJztcbmltcG9ydCB7QmJGb3JtU3VibWl0fSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvcm0tc3VibWl0LmRpcmVjdGl2ZSc7XG5pbXBvcnQge05nQ29udHJvbCwgVmFsaWRhdGlvbkVycm9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBFTVBUWSwgT2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiLWZvcm0tZXJyb3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVycm9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtLWVycm9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYi1mb3JtLWVycm9yJ1xuICAgIH0sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgQmJGb3JtRXJyb3IgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLy8gSW5wdXRzLlxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvbnRyb2wodmFsdWU6IE5nQ29udHJvbCkge1xuICAgICAgICB0aGlzLl9uZ0NvbnRyb2wgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgY29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25nQ29udHJvbDtcbiAgICB9XG5cbiAgICAvLyBPdXRwdXRzLlxuICAgIEBPdXRwdXQoKSBlcnJvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0b2tlbjogc3RyaW5nLCBkYXRhPzogYW55IH0gfCBudWxsPigpO1xuXG4gICAgLy8gU3RhdGUuXG4gICAgZXJyb3IkOiBPYnNlcnZhYmxlPHsgdG9rZW46IHN0cmluZywgZGF0YT86IGFueSB9IHwgbnVsbD47XG5cbiAgICAvLyBTdWJzY3JpcHRpb25zLlxuICAgIHByaXZhdGUgX25nQ29udHJvbDogTmdDb250cm9sIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIF9mb3JtPzogQmJGb3JtU3VibWl0LFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbnRyb2w/OiBOZ0NvbnRyb2wsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZm9ybVN1Ym1pdHRlcj86IEJiRm9ybVN1Ym1pdHRlcixcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEVMRU1FTlRTX0VSUk9SUykgcHJpdmF0ZSBfZXJyb3JzPzogRWxlbWVudHNFcnJvcltdKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIFNldCB0aGUgY29udHJvbCBpZiBpdCB3YXMgbm90IHNldCBiZWZvcmUuXG4gICAgICAgIGlmICghdGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLl9jb250cm9sO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTGlzdGVuIGZvciB0aGUgc3VibWl0IGNoYW5nZXNcbiAgICAgICAgY29uc3Qgc3VibWl0U3RhdHVzJCA9IHRoaXMuc3VibWl0U3RhdHVzQ2hhbmdlcygpO1xuXG4gICAgICAgIC8vIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBlcnJvciBjaGFuZ2VzLlxuICAgICAgICBjb25zdCBlcnJvckNoYW5nZXMkID0gdGhpcy5zdGF0dXNDaGFuZ2VzKCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmdldEVycm9yKHRoaXMuY29udHJvbC5lcnJvcnMpKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICBtYXAoZXJyb3IgPT4gdHlwZW9mIGVycm9yID09PSAnc3RyaW5nJyA/IHt0b2tlbjogZXJyb3J9IDogZXJyb3IpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gV2hlbmV2ZXIgdGhlIHVzZXIgc3VibWl0dGVkIHRoZSBmb3JtIHdlIHdhbnQgdG9cbiAgICAgICAgLy8gbGlzdGVuIGZvciBhbnkgZXJyb3IgY2hhbmdlcy5cbiAgICAgICAgdGhpcy5lcnJvciQgPSBjb21iaW5lTGF0ZXN0KFtzdWJtaXRTdGF0dXMkLCBlcnJvckNoYW5nZXMkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3N1Ym1pdHRlZCwgZXJyb3JdKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgbm90IHN1Ym1pdHRlZCByZXR1cm4gbnVsbC5cbiAgICAgICAgICAgICAgICBpZiAoIXN1Ym1pdHRlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIGVycm9yIGlmIHN1Ym1pdHRlZC5cbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCh2YWx1ZSA9PiB0aGlzLmVycm9yQ2hhbmdlLmVtaXQodmFsdWUpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RXJyb3IoZXJyb3JzPzogVmFsaWRhdGlvbkVycm9ycykge1xuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgZXJyb3JzIGV4aXN0LlxuICAgICAgICBpZiAoIWVycm9ycykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXQgdGhlIGZpcnN0IGVycm9yIGluIHRoZSBlcnJvcnMuXG4gICAgICAgIGNvbnN0IFtlcnJvck5hbWVdID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBlcnJvcnNbZXJyb3JOYW1lXTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgZXJyb3IgZXhpc3RzLlxuICAgICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1hcCB0aGUgYXJyYXlzIGludG8gYSBvYmplY3Qgc28gd2UgY2FuXG4gICAgICAgIC8vIGFjY2VzcyB0aGUgZnVuY3Rpb25zIGJ5IGEga2V5LWxvb2t1cC5cbiAgICAgICAgY29uc3QgZXJyb3JGdW5jdGlvbnMgPSB0aGlzLl9lcnJvcnMucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gKHsuLi5wcmV2aW91cywgLi4uY3VycmVudH0pLCB7fSk7XG5cbiAgICAgICAgLy8gR2V0IHRoZSBlcnJvciBmdW5jdGlvbi5cbiAgICAgICAgY29uc3QgZXJyb3JGdW5jdGlvbiA9IGVycm9yRnVuY3Rpb25zW2Vycm9yTmFtZV0gfHwgZXJyb3JGdW5jdGlvbnNbJ3Vua25vd24nXTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgZXJyb3IgZnVuY3Rpb24gZXhpc3RzLlxuICAgICAgICBpZiAoIWVycm9yRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBwYXJzZWQgZXJyb3IuXG4gICAgICAgIHJldHVybiBlcnJvckZ1bmN0aW9uKGVycm9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN1Ym1pdFN0YXR1c0NoYW5nZXMoKSB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZSQgPSB0aGlzLmdldE5hdGl2ZUZvcm1TdWJtaXQoKTtcbiAgICAgICAgY29uc3QgbWFudWFsJCA9IHRoaXMuZ2V0TWFudWFsRm9ybVN1Ym1pdCgpO1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbbmF0aXZlJCwgbWFudWFsJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtuYXRpdmUsIG1hbnVhbF0pID0+IG5hdGl2ZSB8fCBtYW51YWwpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TmF0aXZlRm9ybVN1Ym1pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9mb3JtKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybS5zdWJtaXRTdGF0dXMkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWFudWFsRm9ybVN1Ym1pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9mb3JtU3VibWl0dGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1TdWJtaXR0ZXIuc3VibWl0dGVkJC5waXBlKFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdHVzQ2hhbmdlcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5jb250cm9sLnN0YXR1c0NoYW5nZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuY29udHJvbC5zdGF0dXMgYXMgdW5rbm93biksXG4gICAgICAgICAgICBkZWxheSgwKVxuICAgICAgICApO1xuICAgIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yJCB8IGFzeW5jIGFzIGVycm9yXCI+XG4gICAgPHAgKm5nSWY9XCJlcnJvcj8udG9rZW4gfCBiYkxvY2FsaXplOntvcHRpb25hbDogdHJ1ZSwgZGF0YTogZXJyb3I/LmRhdGF9IGFzIG1lc3NhZ2VcIlxuICAgICAgIGNsYXNzPVwiYmItZm9ybS1lcnJvci1tZXNzYWdlXCI+XG4gICAgICAgIHt7IG1lc3NhZ2UgfX1cbiAgICA8L3A+XG48L25nLWNvbnRhaW5lcj4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { mixinGrouped } from '@bravobit/bb-foundation';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
class BbFormGroupBase {
|
|
5
|
+
}
|
|
6
|
+
const BbFormGroupMixinBase = mixinGrouped(BbFormGroupBase);
|
|
7
|
+
class BbFormGroup extends BbFormGroupMixinBase {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BbFormGroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: BbFormGroup, selector: "bb-form-group", inputs: { grouped: "grouped" }, host: { properties: { "class.grouped": "grouped" }, classAttribute: "bb-form-group" }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bb-form-group{width:100%;display:flex;flex-wrap:wrap;margin-top:-10px}.bb-form-group>*{margin-top:10px}.bb-form-group>*:not(:first-child){margin-left:10px}.bb-form-group.start{justify-content:flex-start}.bb-form-group.end{justify-content:flex-end}.bb-form-group.vertical{flex-direction:column;justify-content:normal}.bb-form-group.vertical>*{margin-left:0}.bb-form-group.vertical.start{align-items:flex-start}.bb-form-group.vertical.end{align-items:flex-end}.bb-form-group.grouped{margin-bottom:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
10
|
+
}
|
|
11
|
+
export { BbFormGroup };
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BbFormGroup, decorators: [{
|
|
13
|
+
type: Component,
|
|
14
|
+
args: [{ selector: 'bb-form-group', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
15
|
+
'class': 'bb-form-group',
|
|
16
|
+
'[class.grouped]': 'grouped'
|
|
17
|
+
}, inputs: ['grouped'], preserveWhitespaces: false, template: "<ng-content></ng-content>\n", styles: [".bb-form-group{width:100%;display:flex;flex-wrap:wrap;margin-top:-10px}.bb-form-group>*{margin-top:10px}.bb-form-group>*:not(:first-child){margin-left:10px}.bb-form-group.start{justify-content:flex-start}.bb-form-group.end{justify-content:flex-end}.bb-form-group.vertical{flex-direction:column;justify-content:normal}.bb-form-group.vertical>*{margin-left:0}.bb-form-group.vertical.start{align-items:flex-start}.bb-form-group.vertical.end{align-items:flex-end}.bb-form-group.grouped{margin-bottom:20px}\n"] }]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvZm9ybS1ncm91cC9mb3JtLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQyxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RixPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUVwRixNQUFNLGVBQWU7Q0FDcEI7QUFFRCxNQUFNLG9CQUFvQixHQUVwQixZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFcEMsTUFhYSxXQUFZLFNBQVEsb0JBQW9COzhHQUF4QyxXQUFXO2tHQUFYLFdBQVcsbU1DdkJ4Qiw2QkFDQTs7U0RzQmEsV0FBVzsyRkFBWCxXQUFXO2tCQWJ2QixTQUFTOytCQUNJLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixPQUFPLEVBQUUsZUFBZTt3QkFDeEIsaUJBQWlCLEVBQUUsU0FBUztxQkFDL0IsVUFDTyxDQUFDLFNBQVMsQ0FBQyx1QkFDRSxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJc0dyb3VwZWQsIElzR3JvdXBlZENvbnN0cnVjdG9yLCBtaXhpbkdyb3VwZWR9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jbGFzcyBCYkZvcm1Hcm91cEJhc2Uge1xufVxuXG5jb25zdCBCYkZvcm1Hcm91cE1peGluQmFzZTogSXNHcm91cGVkQ29uc3RydWN0b3JcbiAgICAmIHR5cGVvZiBCYkZvcm1Hcm91cEJhc2VcbiAgICA9IG1peGluR3JvdXBlZChCYkZvcm1Hcm91cEJhc2UpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiLWZvcm0tZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYi1mb3JtLWdyb3VwJyxcbiAgICAgICAgJ1tjbGFzcy5ncm91cGVkXSc6ICdncm91cGVkJ1xuICAgIH0sXG4gICAgaW5wdXRzOiBbJ2dyb3VwZWQnXSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBCYkZvcm1Hcm91cCBleHRlbmRzIEJiRm9ybUdyb3VwTWl4aW5CYXNlIGltcGxlbWVudHMgSXNHcm91cGVkIHtcbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|