@bravura/ui 3.8.1 → 5.0.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/CHANGELOG.md +585 -565
- package/LICENSE +6 -6
- package/README.md +3 -1
- package/alert/alert-container.component.d.ts +1 -1
- package/alert/alert-message.component.d.ts +1 -1
- package/behavior/await.directive.d.ts +1 -1
- package/behavior/observe-content-class.directive.d.ts +1 -1
- package/behavior/sizing.directive.d.ts +1 -1
- package/clip-note/clip-note.directive.d.ts +1 -1
- package/currency-input/currency-input.directive.d.ts +1 -1
- package/decimal-input/decimal-input.directive.d.ts +1 -1
- package/discrete-input/discrete-input.component.d.ts +1 -1
- package/esm2022/alert/alert-container.component.mjs +207 -0
- package/esm2022/alert/alert-message.component.mjs +101 -0
- package/esm2022/alert/alert.module.mjs +22 -0
- package/{esm2020 → esm2022}/alert/public-api.mjs +1 -1
- package/esm2022/alert/testing/test-api.mjs +44 -0
- package/esm2022/behavior/await.directive.mjs +133 -0
- package/esm2022/behavior/behavior.module.mjs +37 -0
- package/esm2022/behavior/observe-content-class.directive.mjs +63 -0
- package/{esm2020 → esm2022}/behavior/public-api.mjs +1 -1
- package/esm2022/behavior/sizing-monitor.directive.mjs +31 -0
- package/esm2022/behavior/sizing.directive.mjs +256 -0
- package/esm2022/clip-note/clip-note.component.mjs +216 -0
- package/esm2022/clip-note/clip-note.directive.mjs +141 -0
- package/esm2022/clip-note/clip-note.module.mjs +32 -0
- package/{esm2020 → esm2022}/clip-note/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/common/common-utils.mjs +1 -1
- package/esm2022/common/common.module.mjs +53 -0
- package/{esm2020 → esm2022}/common/public-api.mjs +1 -1
- package/esm2022/currency-input/currency-input.directive.mjs +276 -0
- package/esm2022/currency-input/currency-input.module.mjs +19 -0
- package/{esm2020 → esm2022}/currency-input/public-api.mjs +1 -1
- package/esm2022/decimal-input/decimal-input.directive.mjs +122 -0
- package/{esm2020 → esm2022}/decimal-input/decimal-input.module.mjs +5 -5
- package/esm2022/discrete-input/discrete-input.component.mjs +337 -0
- package/esm2022/discrete-input/discrete-input.module.mjs +21 -0
- package/{esm2020 → esm2022}/discrete-input/public-api.mjs +1 -1
- package/esm2022/file-upload/file-upload.component.mjs +400 -0
- package/esm2022/file-upload/file-upload.module.mjs +44 -0
- package/esm2022/file-upload/file-upload.service.mjs +29 -0
- package/{esm2020 → esm2022}/file-upload/public-api.mjs +1 -1
- package/esm2022/form-field/form-field.component.mjs +82 -0
- package/esm2022/form-field/form-field.module.mjs +33 -0
- package/{esm2020 → esm2022}/form-field/public-api.mjs +1 -1
- package/esm2022/icon-font/icon-font.module.mjs +22 -0
- package/esm2022/icon-font/icon.directive.mjs +102 -0
- package/{esm2020 → esm2022}/icon-font/public-api.mjs +1 -1
- package/esm2022/icon-font/utilities.mjs +51 -0
- package/esm2022/panel/panel-section.component.mjs +41 -0
- package/esm2022/panel/panel.component.mjs +87 -0
- package/esm2022/panel/panel.module.mjs +23 -0
- package/{esm2020 → esm2022}/panel/public-api.mjs +1 -1
- package/esm2022/panel/tinted.directive.mjs +60 -0
- package/esm2022/phone-number/phone-number.directive.mjs +188 -0
- package/{esm2020 → esm2022}/phone-number/phone-number.module.mjs +5 -5
- package/esm2022/phone-number/phone-number.pipe.mjs +47 -0
- package/esm2022/phone-number/phone-number.validator.mjs +64 -0
- package/{esm2020 → esm2022}/phone-number/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/public-api.mjs +1 -1
- package/esm2022/radio-panel/radio-panel-item.component.mjs +93 -0
- package/esm2022/radio-panel/radio-panel.component.mjs +81 -0
- package/{esm2020 → esm2022}/radio-panel/radio-panel.module.mjs +5 -5
- package/esm2022/radio-panel/testing/test-api.mjs +46 -0
- package/{esm2020 → esm2022}/selection-panel/public-api.mjs +1 -1
- package/esm2022/selection-panel/selection-panel-item.component.mjs +166 -0
- package/esm2022/selection-panel/selection-panel.directive.mjs +119 -0
- package/esm2022/selection-panel/selection-panel.module.mjs +23 -0
- package/{esm2020 → esm2022}/skeletons/public-api.mjs +1 -1
- package/esm2022/skeletons/skeleton-loader-presets.directive.mjs +83 -0
- package/esm2022/skeletons/skeleton-loader.component.mjs +76 -0
- package/esm2022/skeletons/skeletons.module.mjs +35 -0
- package/{esm2020 → esm2022}/stepper/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/stepper/stepper-animation.mjs +1 -1
- package/esm2022/stepper/stepper.component.mjs +176 -0
- package/esm2022/stepper/stepper.module.mjs +52 -0
- package/{esm2020 → esm2022}/tooltip/public-api.mjs +1 -1
- package/esm2022/tooltip/tooltip.component.mjs +63 -0
- package/esm2022/tooltip/tooltip.directive.mjs +148 -0
- package/esm2022/tooltip/tooltip.module.mjs +25 -0
- package/{fesm2020 → fesm2022}/bravura-ui-alert-testing.mjs +2 -2
- package/fesm2022/bravura-ui-alert-testing.mjs.map +1 -0
- package/fesm2022/bravura-ui-alert.mjs +327 -0
- package/fesm2022/bravura-ui-alert.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-behavior.mjs +45 -45
- package/fesm2022/bravura-ui-behavior.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-clip-note.mjs +70 -70
- package/fesm2022/bravura-ui-clip-note.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-common.mjs +6 -6
- package/fesm2022/bravura-ui-common.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-currency-input.mjs +11 -11
- package/fesm2022/bravura-ui-currency-input.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-decimal-input.mjs +12 -12
- package/fesm2022/bravura-ui-decimal-input.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-discrete-input.mjs +48 -48
- package/fesm2022/bravura-ui-discrete-input.mjs.map +1 -0
- package/fesm2022/bravura-ui-file-upload.mjs +474 -0
- package/fesm2022/bravura-ui-file-upload.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-form-field.mjs +19 -19
- package/fesm2022/bravura-ui-form-field.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-icon-font.mjs +8 -8
- package/fesm2022/bravura-ui-icon-font.mjs.map +1 -0
- package/fesm2022/bravura-ui-panel.mjs +206 -0
- package/fesm2022/bravura-ui-panel.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-phone-number.mjs +30 -30
- package/fesm2022/bravura-ui-phone-number.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-radio-panel-testing.mjs +5 -6
- package/fesm2022/bravura-ui-radio-panel-testing.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-radio-panel.mjs +32 -32
- package/fesm2022/bravura-ui-radio-panel.mjs.map +1 -0
- package/fesm2022/bravura-ui-selection-panel.mjs +306 -0
- package/fesm2022/bravura-ui-selection-panel.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-skeletons.mjs +43 -43
- package/fesm2022/bravura-ui-skeletons.mjs.map +1 -0
- package/fesm2022/bravura-ui-stepper.mjs +251 -0
- package/fesm2022/bravura-ui-stepper.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-tooltip.mjs +32 -24
- package/fesm2022/bravura-ui-tooltip.mjs.map +1 -0
- package/fesm2022/bravura-ui.mjs.map +1 -0
- package/file-upload/file-upload.component.d.ts +1 -1
- package/form-field/form-field.component.d.ts +1 -1
- package/icon-font/icon.directive.d.ts +1 -1
- package/package.json +88 -132
- package/panel/panel.component.d.ts +1 -1
- package/panel/tinted.directive.d.ts +1 -1
- package/phone-number/phone-number.directive.d.ts +1 -1
- package/phone-number/phone-number.validator.d.ts +2 -2
- package/radio-panel/radio-panel-item.component.d.ts +1 -1
- package/radio-panel/radio-panel.component.d.ts +1 -1
- package/radio-panel/testing/test-api.d.ts +2 -3
- package/selection-panel/selection-panel-item.component.d.ts +1 -1
- package/selection-panel/selection-panel.directive.d.ts +1 -1
- package/skeletons/skeleton-loader-presets.directive.d.ts +3 -3
- package/stepper/stepper.component.d.ts +1 -1
- package/theme/_bui-card.scss +56 -56
- package/theme/_ui-theme.scss +3 -3
- package/theme/global-style-by-bootstrap.scss +3 -3
- package/theme/global-style-by-tailwind.scss +3 -3
- package/theme/scrollbar.scss +40 -40
- package/tooltip/tooltip.component.d.ts +2 -0
- package/tooltip/tooltip.directive.d.ts +3 -5
- package/esm2020/alert/alert-container.component.mjs +0 -207
- package/esm2020/alert/alert-message.component.mjs +0 -102
- package/esm2020/alert/alert.module.mjs +0 -22
- package/esm2020/alert/testing/test-api.mjs +0 -44
- package/esm2020/behavior/await.directive.mjs +0 -133
- package/esm2020/behavior/behavior.module.mjs +0 -37
- package/esm2020/behavior/observe-content-class.directive.mjs +0 -63
- package/esm2020/behavior/sizing-monitor.directive.mjs +0 -31
- package/esm2020/behavior/sizing.directive.mjs +0 -256
- package/esm2020/clip-note/clip-note.component.mjs +0 -216
- package/esm2020/clip-note/clip-note.directive.mjs +0 -141
- package/esm2020/clip-note/clip-note.module.mjs +0 -32
- package/esm2020/common/common.module.mjs +0 -53
- package/esm2020/currency-input/currency-input.directive.mjs +0 -276
- package/esm2020/currency-input/currency-input.module.mjs +0 -19
- package/esm2020/decimal-input/decimal-input.directive.mjs +0 -122
- package/esm2020/discrete-input/discrete-input.component.mjs +0 -337
- package/esm2020/discrete-input/discrete-input.module.mjs +0 -21
- package/esm2020/file-upload/file-upload.component.mjs +0 -400
- package/esm2020/file-upload/file-upload.module.mjs +0 -44
- package/esm2020/file-upload/file-upload.service.mjs +0 -29
- package/esm2020/form-field/form-field.component.mjs +0 -82
- package/esm2020/form-field/form-field.module.mjs +0 -33
- package/esm2020/icon-font/icon-font.module.mjs +0 -22
- package/esm2020/icon-font/icon.directive.mjs +0 -102
- package/esm2020/icon-font/utilities.mjs +0 -51
- package/esm2020/panel/panel-section.component.mjs +0 -41
- package/esm2020/panel/panel.component.mjs +0 -87
- package/esm2020/panel/panel.module.mjs +0 -23
- package/esm2020/panel/tinted.directive.mjs +0 -60
- package/esm2020/phone-number/phone-number.directive.mjs +0 -188
- package/esm2020/phone-number/phone-number.pipe.mjs +0 -47
- package/esm2020/phone-number/phone-number.validator.mjs +0 -64
- package/esm2020/radio-panel/radio-panel-item.component.mjs +0 -93
- package/esm2020/radio-panel/radio-panel.component.mjs +0 -81
- package/esm2020/radio-panel/testing/test-api.mjs +0 -47
- package/esm2020/selection-panel/selection-panel-item.component.mjs +0 -166
- package/esm2020/selection-panel/selection-panel.directive.mjs +0 -119
- package/esm2020/selection-panel/selection-panel.module.mjs +0 -23
- package/esm2020/skeletons/skeleton-loader-presets.directive.mjs +0 -83
- package/esm2020/skeletons/skeleton-loader.component.mjs +0 -76
- package/esm2020/skeletons/skeletons.module.mjs +0 -35
- package/esm2020/stepper/stepper.component.mjs +0 -176
- package/esm2020/stepper/stepper.module.mjs +0 -52
- package/esm2020/tooltip/tooltip.component.mjs +0 -54
- package/esm2020/tooltip/tooltip.directive.mjs +0 -149
- package/esm2020/tooltip/tooltip.module.mjs +0 -25
- package/fesm2015/bravura-ui-alert-testing.mjs +0 -64
- package/fesm2015/bravura-ui-alert-testing.mjs.map +0 -1
- package/fesm2015/bravura-ui-alert.mjs +0 -340
- package/fesm2015/bravura-ui-alert.mjs.map +0 -1
- package/fesm2015/bravura-ui-behavior.mjs +0 -515
- package/fesm2015/bravura-ui-behavior.mjs.map +0 -1
- package/fesm2015/bravura-ui-clip-note.mjs +0 -393
- package/fesm2015/bravura-ui-clip-note.mjs.map +0 -1
- package/fesm2015/bravura-ui-common.mjs +0 -96
- package/fesm2015/bravura-ui-common.mjs.map +0 -1
- package/fesm2015/bravura-ui-currency-input.mjs +0 -300
- package/fesm2015/bravura-ui-currency-input.mjs.map +0 -1
- package/fesm2015/bravura-ui-decimal-input.mjs +0 -145
- package/fesm2015/bravura-ui-decimal-input.mjs.map +0 -1
- package/fesm2015/bravura-ui-discrete-input.mjs +0 -365
- package/fesm2015/bravura-ui-discrete-input.mjs.map +0 -1
- package/fesm2015/bravura-ui-file-upload.mjs +0 -478
- package/fesm2015/bravura-ui-file-upload.mjs.map +0 -1
- package/fesm2015/bravura-ui-form-field.mjs +0 -120
- package/fesm2015/bravura-ui-form-field.mjs.map +0 -1
- package/fesm2015/bravura-ui-icon-font.mjs +0 -178
- package/fesm2015/bravura-ui-icon-font.mjs.map +0 -1
- package/fesm2015/bravura-ui-panel.mjs +0 -210
- package/fesm2015/bravura-ui-panel.mjs.map +0 -1
- package/fesm2015/bravura-ui-phone-number.mjs +0 -327
- package/fesm2015/bravura-ui-phone-number.mjs.map +0 -1
- package/fesm2015/bravura-ui-radio-panel-testing.mjs +0 -63
- package/fesm2015/bravura-ui-radio-panel-testing.mjs.map +0 -1
- package/fesm2015/bravura-ui-radio-panel.mjs +0 -200
- package/fesm2015/bravura-ui-radio-panel.mjs.map +0 -1
- package/fesm2015/bravura-ui-selection-panel.mjs +0 -311
- package/fesm2015/bravura-ui-selection-panel.mjs.map +0 -1
- package/fesm2015/bravura-ui-skeletons.mjs +0 -195
- package/fesm2015/bravura-ui-skeletons.mjs.map +0 -1
- package/fesm2015/bravura-ui-stepper.mjs +0 -253
- package/fesm2015/bravura-ui-stepper.mjs.map +0 -1
- package/fesm2015/bravura-ui-tooltip.mjs +0 -229
- package/fesm2015/bravura-ui-tooltip.mjs.map +0 -1
- package/fesm2015/bravura-ui.mjs.map +0 -1
- package/fesm2020/bravura-ui-alert-testing.mjs.map +0 -1
- package/fesm2020/bravura-ui-alert.mjs +0 -328
- package/fesm2020/bravura-ui-alert.mjs.map +0 -1
- package/fesm2020/bravura-ui-behavior.mjs.map +0 -1
- package/fesm2020/bravura-ui-clip-note.mjs.map +0 -1
- package/fesm2020/bravura-ui-common.mjs.map +0 -1
- package/fesm2020/bravura-ui-currency-input.mjs.map +0 -1
- package/fesm2020/bravura-ui-decimal-input.mjs.map +0 -1
- package/fesm2020/bravura-ui-discrete-input.mjs.map +0 -1
- package/fesm2020/bravura-ui-file-upload.mjs +0 -474
- package/fesm2020/bravura-ui-file-upload.mjs.map +0 -1
- package/fesm2020/bravura-ui-form-field.mjs.map +0 -1
- package/fesm2020/bravura-ui-icon-font.mjs.map +0 -1
- package/fesm2020/bravura-ui-panel.mjs +0 -206
- package/fesm2020/bravura-ui-panel.mjs.map +0 -1
- package/fesm2020/bravura-ui-phone-number.mjs.map +0 -1
- package/fesm2020/bravura-ui-radio-panel-testing.mjs.map +0 -1
- package/fesm2020/bravura-ui-radio-panel.mjs.map +0 -1
- package/fesm2020/bravura-ui-selection-panel.mjs +0 -306
- package/fesm2020/bravura-ui-selection-panel.mjs.map +0 -1
- package/fesm2020/bravura-ui-skeletons.mjs.map +0 -1
- package/fesm2020/bravura-ui-stepper.mjs +0 -251
- package/fesm2020/bravura-ui-stepper.mjs.map +0 -1
- package/fesm2020/bravura-ui-tooltip.mjs.map +0 -1
- package/fesm2020/bravura-ui.mjs +0 -8
- package/fesm2020/bravura-ui.mjs.map +0 -1
- /package/{esm2020 → esm2022}/alert/bravura-ui-alert.mjs +0 -0
- /package/{esm2020 → esm2022}/alert/testing/bravura-ui-alert-testing.mjs +0 -0
- /package/{esm2020 → esm2022}/behavior/bravura-ui-behavior.mjs +0 -0
- /package/{esm2020 → esm2022}/bravura-ui.mjs +0 -0
- /package/{esm2020 → esm2022}/clip-note/bravura-ui-clip-note.mjs +0 -0
- /package/{esm2020 → esm2022}/common/bravura-ui-common.mjs +0 -0
- /package/{esm2020 → esm2022}/currency-input/bravura-ui-currency-input.mjs +0 -0
- /package/{esm2020 → esm2022}/decimal-input/bravura-ui-decimal-input.mjs +0 -0
- /package/{esm2020 → esm2022}/decimal-input/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/discrete-input/bravura-ui-discrete-input.mjs +0 -0
- /package/{esm2020 → esm2022}/file-upload/bravura-ui-file-upload.mjs +0 -0
- /package/{esm2020 → esm2022}/form-field/bravura-ui-form-field.mjs +0 -0
- /package/{esm2020 → esm2022}/icon-font/bravura-ui-icon-font.mjs +0 -0
- /package/{esm2020 → esm2022}/panel/bravura-ui-panel.mjs +0 -0
- /package/{esm2020 → esm2022}/phone-number/bravura-ui-phone-number.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-panel/bravura-ui-radio-panel.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-panel/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-panel/testing/bravura-ui-radio-panel-testing.mjs +0 -0
- /package/{esm2020 → esm2022}/selection-panel/bravura-ui-selection-panel.mjs +0 -0
- /package/{esm2020 → esm2022}/skeletons/bravura-ui-skeletons.mjs +0 -0
- /package/{esm2020 → esm2022}/stepper/bravura-ui-stepper.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/bravura-ui-tooltip.mjs +0 -0
- /package/{fesm2015 → fesm2022}/bravura-ui.mjs +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bravura-ui-behavior.mjs","sources":["../../../projects/ui/behavior/sizing-monitor.directive.ts","../../../projects/ui/behavior/sizing.directive.ts","../../../projects/ui/behavior/await.directive.ts","../../../projects/ui/behavior/observe-content-class.directive.ts","../../../projects/ui/behavior/behavior.module.ts","../../../projects/ui/behavior/bravura-ui-behavior.ts"],"sourcesContent":["import { Directive, ElementRef } from '@angular/core';\r\n\r\n/**\r\n * Use this directive to designate a target HTML element, based on which the child elements'\r\n * `[buiSizing]` directives will calculate the sizes.\r\n *\r\n * ```html\r\n * <div [buiSizingMonitor]>\r\n * <div [buiSizing]=\"...\">\r\n * </div>\r\n * <div>\r\n * <div [buiSizing]=\"...\">\r\n * </div>\r\n * </div>\r\n * <div>\r\n * ```\r\n */\r\n@Directive({\r\n\tselector: '[buiSizingMonitor]'\r\n})\r\nexport class SizingMonitorDirective {\r\n\tconstructor(public readonly element: ElementRef<HTMLElement>) {}\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n\tDirective,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInject,\r\n\tInput,\r\n\tNgZone,\r\n\tOnChanges,\r\n\tOnDestroy,\r\n\tOptional,\r\n\tOutput,\r\n\tSimpleChanges\r\n} from '@angular/core';\r\nimport { debounceTime, take } from 'rxjs/operators';\r\nimport { SizingMonitorDirective } from './sizing-monitor.directive';\r\n\r\n/**\r\n * This directive monitors the changes in the width of the `sizingBy` target, and apply specified style\r\n * classes and/or inline styles to the current element dynamically.\r\n *\r\n * In order for the layout engine to efficiently calculate and stabilize the dimensions, the effective style property\r\n * `box-sizing` of the `sizingBy` target element must be set to `border-box`.\r\n *\r\n * The directive uses [ResizeObserver API](https://developer.mozilla.org/en-US/docs/Web/API/Resize_Observer_API)\r\n * to capture the events of element resizing. Please use a polyfill if you want to support older browsers\r\n * that do not implement ResizeObserver API.\r\n *\r\n * Examples:\r\n *\r\n * ```html\r\n * <div #parentElement>\r\n * <div [buiSizing]=\"{'400': 'small', '800': 'medium', '~': 'large'}\" [buiSizingBy]=\"parentElement\"></div>\r\n * <div [buiSizing]=\"['small', 'medium', 'large']\" [buiSizingBy]=\"'root'\"></div>\r\n * <div [buiSizing]=\"{'650': 'border-color: #28569', '~': 'bg-muted; border-style: dotted'}\" [buiSizingBy]=\"parentElement\"></div>\r\n * </div>\r\n * ```\r\n */\r\n@Directive({\r\n\tselector: '[buiSizing],[buiResized],[buiSizingBy],[buiFixedHeight]'\r\n})\r\nexport class SizingDirective implements OnChanges, OnDestroy {\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tstatic defaultSizingBreakpoints = ['400', '800', '~'];\r\n\r\n\t/**\r\n\t * Specifies the breakpoint widths and the style classes.\r\n\t *\r\n\t * The sizing spec `{\"400\": \"small\", \"800\": \"medium\", \"~\": \"large\"}` tells the directive to apply\r\n\t * a style class `small` when the width of the monitored target is smaller than 400 pixels,\r\n\t * `medium` when the width is between 400 and 800 pixels, and `large` when above.\r\n\t *\r\n\t * @example {'400': 'small', '800': 'medium', '~': 'large'}\r\n\t */\r\n\t@Input()\r\n\tbuiSizing: string | Array<string> | { [key: string]: string } = {};\r\n\r\n\t/**\r\n\t * The alias of `buiSizingBy`.\r\n\t * @default 'root'\r\n\t * @deprecated\r\n\t * @ignore\r\n\t */\r\n\t@Input()\r\n\tsizingBy: 'root' | 'parent' | HTMLElement = 'root';\r\n\r\n\t/**\r\n\t * Designate an element to be monitored for recalculating the style classes of the current element.\r\n\t *\r\n\t * - `root` specifies the document root or the enclosing shadow host. This is the default value.\r\n\t * - `parent` specifies the parent element.\r\n\t *\r\n\t * @default 'root'\r\n\t * @alias sizingBy\r\n\t */\r\n\t@Input()\r\n\tget buiSizingBy(): 'root' | 'parent' | HTMLElement {\r\n\t\treturn this.sizingBy;\r\n\t}\r\n\tset buiSizingBy(target: 'root' | 'parent' | HTMLElement) {\r\n\t\tthis.sizingBy = target;\r\n\t}\r\n\r\n\t/**\r\n\t * Emits `{width, height}` when the monitor target element resizes.\r\n\t *\r\n\t * Note that the dimensions emitted are of the [sizingBy] target, but not the current element.\r\n\t */\r\n\t@Output()\r\n\tbuiResized = new EventEmitter<{ width: number; height: number }>();\r\n\r\n\t/**\r\n\t * Recalculate the height of this element according to the height of the monitored target.\r\n\t */\r\n\t@Input()\r\n\tbuiFixedHeight = false;\r\n\r\n\tprivate _monitorTarget: HTMLElement;\r\n\tprivate _observer: ResizeObserver | undefined;\r\n\tprivate _sizingSpec: { [key: string]: string } = {};\r\n\tprivate _width = 0;\r\n\tprivate _height = 0;\r\n\tprivate _reflowFrameCount = 0;\r\n\tprivate _element: HTMLElement;\r\n\tprivate _frameHandlerId = 0;\r\n\r\n\tconstructor(\r\n\t\t@Inject(DOCUMENT) private _doc: Document,\r\n\t\t@Optional() private _defaultTarget: SizingMonitorDirective,\r\n\t\telemRef: ElementRef<HTMLElement>,\r\n\t\tprivate _zone: NgZone\r\n\t) {\r\n\t\tthis._element = elemRef.nativeElement;\r\n\t\tthis._monitorTarget = this._element;\r\n\t}\r\n\r\n\tngOnChanges(_: SimpleChanges): void {\r\n\t\tconst disconnected = this._element.getRootNode() instanceof HTMLElement;\r\n\t\tif (disconnected) {\r\n\t\t\t// defer shadow detection till dom connection event\r\n\t\t\tthis._zone.onStable.pipe(debounceTime(10), take(1)).subscribe(() => this._initOrReset());\r\n\t\t} else {\r\n\t\t\tthis._initOrReset();\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis._tearDownNodeMonitor();\r\n\t}\r\n\r\n\tprivate _initOrReset() {\r\n\t\tconst originalTarget = this._monitorTarget;\r\n\t\tif (this.buiSizingBy instanceof HTMLElement) {\r\n\t\t\tthis._monitorTarget = this.buiSizingBy;\r\n\t\t} else if (this._defaultTarget) {\r\n\t\t\tthis._monitorTarget = this._defaultTarget.element.nativeElement;\r\n\t\t} else if (this.buiSizingBy === 'root') {\r\n\t\t\tconst root = this._element.getRootNode();\r\n\t\t\tif (root instanceof ShadowRoot) {\r\n\t\t\t\tthis._monitorTarget = root.host as HTMLElement;\r\n\t\t\t} else {\r\n\t\t\t\tthis._monitorTarget = this._doc.documentElement;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis._monitorTarget = this._element.parentElement as any;\r\n\t\t}\r\n\r\n\t\tif (this._monitorTarget != originalTarget) {\r\n\t\t\tthis._setUpNodeMonitor();\r\n\t\t}\r\n\r\n\t\tthis._sizingSpec = {};\r\n\t\tlet spec = this.buiSizing;\r\n\t\tif (typeof spec === 'string') {\r\n\t\t\tspec = spec.split(',').map(k => k.trim());\r\n\t\t}\r\n\r\n\t\tif (Array.isArray(spec)) {\r\n\t\t\tspec.forEach((c, i) => {\r\n\t\t\t\tthis._sizingSpec[SizingDirective.defaultSizingBreakpoints[i] || '~'] = c;\r\n\t\t\t});\r\n\t\t} else if (spec) {\r\n\t\t\tthis._sizingSpec = spec;\r\n\t\t}\r\n\r\n\t\tthis.buiFixedHeight = coerceBooleanProperty(this.buiFixedHeight);\r\n\r\n\t\tthis._calculateSize();\r\n\t}\r\n\r\n\tprivate _setUpNodeMonitor() {\r\n\t\tthis._tearDownNodeMonitor();\r\n\t\tif (this._monitorTarget) {\r\n\t\t\tthis._observer = new ResizeObserver(() => this._runWithObserver(this._calculateSize.bind(this)));\r\n\r\n\t\t\tthis._observer.observe(this._monitorTarget, { box: 'border-box' });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _tearDownNodeMonitor() {\r\n\t\tcancelAnimationFrame(this._frameHandlerId);\r\n\t\tthis._runWithObserver(() => {\r\n\t\t\tthis._observer!.disconnect();\r\n\t\t\tthis._observer = undefined;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _runWithObserver<T>(func: () => T): T | undefined {\r\n\t\tif (this._observer) {\r\n\t\t\treturn func();\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tprivate _calculateSize() {\r\n\t\tconst widthChanged = this._width !== this._monitorTarget.clientWidth;\r\n\t\tconst heightChanged = this._height !== this._monitorTarget.clientHeight;\r\n\t\tif (widthChanged) {\r\n\t\t\tthis._width = this._monitorTarget.clientWidth;\r\n\r\n\t\t\tconst bks = Object.keys(this._sizingSpec).sort((a, b) => this._toNumber(a) - this._toNumber(b));\r\n\t\t\tlet found = false;\r\n\t\t\tfor (const key of bks) {\r\n\t\t\t\tconst classesOrStyles = this._sizingSpec[key].split(/;+/).filter(c => c);\r\n\t\t\t\tthis._removeClassesOrStyles(classesOrStyles);\r\n\t\t\t\tconst expectedWidth = this._toNumber(key);\r\n\t\t\t\tif (this._width <= expectedWidth && !found) {\r\n\t\t\t\t\tthis._applyClassesOrStyles(classesOrStyles);\r\n\t\t\t\t\tfound = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (widthChanged || heightChanged) {\r\n\t\t\tthis._height = this._monitorTarget.clientHeight;\r\n\t\t\tif (this.buiFixedHeight) {\r\n\t\t\t\tthis._reflowFrameCount = 0;\r\n\t\t\t\tthis._reflowHeight();\r\n\t\t\t}\r\n\t\t\tsetTimeout(() => this._zone.run(() => this.buiResized.emit({ width: this._width, height: this._height })));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _applyClassesOrStyles(clsOrStyles: string[]) {\r\n\t\tclsOrStyles.forEach(s => {\r\n\t\t\tif (s.includes(':')) {\r\n\t\t\t\tconst [prop, val] = s.split(':');\r\n\t\t\t\tthis._element.style.setProperty(prop.trim(), val.trim());\r\n\t\t\t} else {\r\n\t\t\t\tconst classes = s.split(/\\s+/).filter(c => c);\r\n\t\t\t\tif (classes.length) {\r\n\t\t\t\t\tthis._element.classList.add(...classes);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _removeClassesOrStyles(clsOrStyles: string[]) {\r\n\t\tclsOrStyles.forEach(s => {\r\n\t\t\tif (s.includes(':')) {\r\n\t\t\t\tconst [prop] = s.split(':');\r\n\t\t\t\tthis._element.style.removeProperty(prop);\r\n\t\t\t} else {\r\n\t\t\t\tconst classes = s.split(/\\s+/).filter(c => c);\r\n\t\t\t\tif (classes.length) {\r\n\t\t\t\t\tthis._element.classList.remove(...classes);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _reflowHeight() {\r\n\t\tconst cnt = this._reflowFrameCount;\r\n\t\tif (cnt < 15) {\r\n\t\t\tcancelAnimationFrame(this._frameHandlerId);\r\n\t\t\tthis._frameHandlerId = requestAnimationFrame(this._reflowHeight.bind(this));\r\n\r\n\t\t\tif (cnt === 0) {\r\n\t\t\t\tthis._element.style.height = '0';\r\n\t\t\t} else if (cnt === 14) {\r\n\t\t\t\tconst gt = parseInt(\r\n\t\t\t\t\tgetComputedStyle(this._monitorTarget).getPropertyValue('padding-top').replace(/px$/, '') || '0',\r\n\t\t\t\t\t10\r\n\t\t\t\t);\r\n\t\t\t\tconst gb = parseInt(\r\n\t\t\t\t\tgetComputedStyle(this._monitorTarget).getPropertyValue('padding-bottom').replace(/px$/, '') || '0',\r\n\t\t\t\t\t10\r\n\t\t\t\t);\r\n\t\t\t\tthis._element.style.height = `${this._height - gt - gb - 5}px`;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._reflowFrameCount++;\r\n\t}\r\n\r\n\tprivate _toNumber(s: string) {\r\n\t\treturn (s === '~' ? Infinity : Number(s)) || -Infinity;\r\n\t}\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n\tAfterViewInit,\r\n\tComponentRef,\r\n\tDirective,\r\n\tDoCheck,\r\n\tElementRef,\r\n\tInject,\r\n\tInput,\r\n\tOptional,\r\n\tViewContainerRef\r\n} from '@angular/core';\r\nimport {\r\n\tMatButton,\r\n\tMatFabAnchor,\r\n\tMatFabButton,\r\n\tMatIconAnchor,\r\n\tMatIconButton,\r\n\tMatMiniFabAnchor,\r\n\tMatMiniFabButton\r\n} from '@angular/material/button';\r\nimport { MatProgressSpinner, ProgressSpinnerMode } from '@angular/material/progress-spinner';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/**\r\n * Use this directive on a `MatButton` element to provide an alternative view when an async operation is in progress.\r\n *\r\n * For example:\r\n *\r\n * ```\r\n * <button (click)=\"submit();\" [buiAwait]=\"submitSubscription\" buiAwaitAriaLabel=\"submitting\">Submit</button>\r\n * ```\r\n *\r\n * Please refer to [Material Design](https://material.io/components/progress-indicators#circular-progress-indicators)\r\n * for more details of integrating circular spinner component with action buttons.\r\n *\r\n * The operation is considered 'in progress' when the bound property `buiAwait` evaluates to\r\n *\r\n * - `true`; or\r\n * - a `number` within 0 - 100; or\r\n * - an instance of `rxjs/Subscription` and `buiAwait.closed` is falsy\r\n *\r\n * When in progress\r\n *\r\n * - the button's caption will be hidden;\r\n * - a `<mat-progress-spinner>` will be displayed in place of the caption;\r\n * - the button will be disabled by setting the property `disabled` of the `MatButton` instance.\r\n */\r\n@Directive({\r\n\tselector: '[buiAwait]'\r\n})\r\nexport class AwaitDirective implements AfterViewInit, DoCheck {\r\n\t/**\r\n\t * Indicates the `in progress` status of an async operation.\r\n\t *\r\n\t * The operation is considered 'in progress' when the property evaluates to\r\n\t *\r\n\t * - `true`; or\r\n\t * - a `number` within 0 - 100; or\r\n\t * - an instance of `rxjs/Subscription` and `buiAwait.closed` is falsy\r\n\t *\r\n\t * When it is a number, it represets the progress in percentage term.\r\n\t */\r\n\t@Input()\r\n\tbuiAwait: null | undefined | boolean | Subscription | number;\r\n\r\n\t/** The ARIA label to be put on the spinner. The default value is `\"In progress\"`. */\r\n\t@Input()\r\n\tbuiAwaitAriaLabel = 'In progress';\r\n\r\n\t/** The diameter of the in-progress spinner. The default value is `20`. */\r\n\t@Input()\r\n\tbuiAwaitDiameter = 20;\r\n\r\n\tprivate _overlayEl: HTMLDivElement | undefined;\r\n\tprivate _processing = false;\r\n\tprivate _spinnerRef: ComponentRef<MatProgressSpinner> | undefined;\r\n\tprivate _captionWrapper: HTMLElement | undefined;\r\n\tprivate button:\r\n\t\t| MatButton\r\n\t\t| MatIconButton\r\n\t\t| MatIconAnchor\r\n\t\t| MatFabButton\r\n\t\t| MatFabAnchor\r\n\t\t| MatMiniFabButton\r\n\t\t| MatMiniFabAnchor\r\n\t\t| undefined;\r\n\r\n\tconstructor(\r\n\t\tprivate readonly _eRef: ElementRef<HTMLElement>,\r\n\t\t@Optional() readonly _button: MatButton,\r\n\t\t@Optional() readonly _iconButton: MatIconButton,\r\n\t\t@Optional() readonly _iconAnchor: MatIconAnchor,\r\n\t\t@Optional() readonly _fab: MatFabButton,\r\n\t\t@Optional() readonly _fabAnchor: MatFabAnchor,\r\n\t\t@Optional() readonly _miniFab: MatMiniFabButton,\r\n\t\t@Optional() readonly _miniFabAnchor: MatMiniFabAnchor,\r\n\t\t@Inject(DOCUMENT) private readonly doc: Document,\r\n\t\tprivate _viewCont: ViewContainerRef\r\n\t) {\r\n\t\tthis.button = _button || _iconButton || _iconAnchor || _fab || _fabAnchor || _miniFab || _miniFabAnchor;\r\n\t\tif (!this.button) {\r\n\t\t\tconsole.error('[buiAwait] can only be used on a Material button.');\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tngAfterViewInit(): void {\r\n\t\tif (this.button) {\r\n\t\t\tthis._overlayEl = this.doc.createElement('div');\r\n\t\t\tthis._eRef.nativeElement.appendChild(this._overlayEl);\r\n\t\t\tthis._overlayEl.classList.add('bui-await-overlay');\r\n\t\t\tthis._overlayEl.style.cssText =\r\n\t\t\t\t'display:flex; position:absolute; top:0; right:0; bottom:0; left:0; align-items: center; justify-content: center';\r\n\t\t\tthis._captionWrapper = this._eRef.nativeElement.querySelector('.mdc-button__label,.mat-icon') as HTMLElement;\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tngDoCheck(): void {\r\n\t\tconst inProgress =\r\n\t\t\tthis.buiAwait === true || (typeof this.buiAwait === 'object' && !this.buiAwait!.closed) || this._isDeterminate;\r\n\t\tif (inProgress !== this._processing) {\r\n\t\t\tthis._processing = inProgress;\r\n\t\t\tthis._statusChanged(this._isDeterminate ? 'determinate' : 'indeterminate');\r\n\t\t}\r\n\t\tif (this._isDeterminate && this._spinnerRef) {\r\n\t\t\tthis._spinnerRef.setInput('value', this.buiAwait);\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tprivate get _isDeterminate(): boolean {\r\n\t\treturn typeof this.buiAwait === 'number' && this.buiAwait >= 0 && this.buiAwait < 100;\r\n\t}\r\n\r\n\tprivate _statusChanged(mode: ProgressSpinnerMode) {\r\n\t\tif (this.button) {\r\n\t\t\tthis.button.disabled = this._processing;\r\n\r\n\t\t\tif (this._processing) {\r\n\t\t\t\tthis._spinnerRef = this._viewCont.createComponent(MatProgressSpinner);\r\n\t\t\t\tconst c = this._spinnerRef.instance;\r\n\t\t\t\tc.diameter = this.buiAwaitDiameter;\r\n\t\t\t\tc.mode = mode;\r\n\t\t\t\tc.color = this.button.color;\r\n\t\t\t\tconst e: HTMLElement = this._spinnerRef.location.nativeElement;\r\n\t\t\t\te.setAttribute('aria-label', this.buiAwaitAriaLabel);\r\n\t\t\t\tthis._overlayEl!.appendChild(e);\r\n\t\t\t\tthis._captionWrapper!.style.visibility = 'hidden';\r\n\t\t\t} else {\r\n\t\t\t\tthis._captionWrapper!.style.visibility = '';\r\n\t\t\t\tthis._spinnerRef!.destroy();\r\n\t\t\t\tthis._spinnerRef = undefined;\r\n\t\t\t\tthis._overlayEl!.innerHTML = '';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { ContentObserver } from '@angular/cdk/observers';\r\nimport { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/**\r\n * Use `[bui-class.not-empty]` to specify a style class activated only when the host element has DOM children;\r\n *\r\n * use `[bui-class.empty]` for a style class activated when it has no DOM children.\r\n *\r\n * Use `[bui-class.no-text]` to specify a style class activated only when the host element has text content;\r\n *\r\n * use `[bui-class.has-text]` for a style class activated when it has no text content.\r\n */\r\n@Directive({\r\n\tselector: '[bui-class.empty],[bui-class.not-empty],[bui-class.no-text],[bui-class.has-text]'\r\n})\r\nexport class ObserveContentClassDirective implements OnDestroy, OnInit {\r\n\tprivate readonly subscription: Subscription;\r\n\tprivate readonly element: HTMLElement;\r\n\tprivate classToRemove: string[] = [];\r\n\r\n\t@Input('bui-class.empty')\r\n\tprivate classEmpty?: string;\r\n\r\n\t@Input('bui-class.not-empty')\r\n\tprivate classNotEmpty?: string;\r\n\r\n\t@Input('bui-class.no-text')\r\n\tprivate classNoText?: string;\r\n\r\n\t@Input('bui-class.has-text')\r\n\tprivate classHasText?: string;\r\n\r\n\tconstructor(observer: ContentObserver, elementRef: ElementRef<HTMLElement>) {\r\n\t\tthis.element = elementRef.nativeElement;\r\n\t\tthis.subscription = observer.observe(elementRef).subscribe(() => this.checkClass());\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.checkClass.bind(this);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscription.unsubscribe();\r\n\t}\r\n\r\n\tprivate checkClass(): void {\r\n\t\tthis.element.classList.remove(...this.classToRemove);\r\n\t\tthis.classToRemove = [];\r\n\t\tthis.checkClassWith(\r\n\t\t\tthis.classEmpty,\r\n\t\t\tthis.classNotEmpty,\r\n\t\t\t() => this.element.childElementCount === 0 && !this.element.textContent?.trim()\r\n\t\t);\r\n\t\tthis.checkClassWith(this.classNoText, this.classHasText, () => !this.element.textContent?.trim());\r\n\t}\r\n\r\n\tprivate checkClassWith(\r\n\t\twithoutClass: string | null | undefined,\r\n\t\twithClass: string | null | undefined,\r\n\t\tisWithout: () => boolean\r\n\t): void {\r\n\t\tconst without = isWithout();\r\n\t\tthis.addClass(without ? withoutClass : (withClass as any));\r\n\t}\r\n\r\n\tprivate addClass(cls: string | null) {\r\n\t\tif (cls?.trim()) {\r\n\t\t\tconst classes = cls.trim().split(/\\s+/);\r\n\t\t\tthis.element.classList.add(...classes);\r\n\t\t\tthis.classToRemove.push(...classes);\r\n\t\t}\r\n\t}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SizingDirective } from './sizing.directive';\r\nimport { SizingMonitorDirective } from './sizing-monitor.directive';\r\nimport { AwaitDirective } from './await.directive';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { ObserveContentClassDirective } from './observe-content-class.directive';\r\nimport { ObserversModule } from '@angular/cdk/observers';\r\n\r\n/**\r\n * For functionality that cannot be easily achieved via CSS.\r\n */\r\n@NgModule({\r\n\tdeclarations: [SizingDirective, SizingMonitorDirective, AwaitDirective, ObserveContentClassDirective],\r\n\timports: [CommonModule, MatButtonModule, MatProgressSpinnerModule, ObserversModule],\r\n\texports: [\r\n\t\tSizingDirective,\r\n\t\tSizingMonitorDirective,\r\n\t\tAwaitDirective,\r\n\t\tMatProgressSpinnerModule,\r\n\t\tObserveContentClassDirective\r\n\t]\r\n})\r\nexport class BehaviorModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SizingMonitorDirective","i1"],"mappings":"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"}
|
|
@@ -16,21 +16,6 @@ import { trigger, state, style, transition, group, animate, query, animateChild
|
|
|
16
16
|
import { Subject, takeUntil } from 'rxjs';
|
|
17
17
|
|
|
18
18
|
class ClipNoteComponent {
|
|
19
|
-
constructor(_cd, _dir, _elemRef) {
|
|
20
|
-
this._cd = _cd;
|
|
21
|
-
this._dir = _dir;
|
|
22
|
-
this._elemRef = _elemRef;
|
|
23
|
-
this.buttonText = '';
|
|
24
|
-
this.panelState = 'closed-ltr';
|
|
25
|
-
this.direction = 'ltr';
|
|
26
|
-
this._buttonAnimating = false;
|
|
27
|
-
this._hasContent = false;
|
|
28
|
-
this.opened = new EventEmitter();
|
|
29
|
-
this.closed = new EventEmitter();
|
|
30
|
-
this._hovering = false;
|
|
31
|
-
this._destroyed$ = new Subject();
|
|
32
|
-
this._toggleQueue = [];
|
|
33
|
-
}
|
|
34
19
|
get buttonState() {
|
|
35
20
|
if (this._hovering || this.panelState === 'open') {
|
|
36
21
|
return 'active';
|
|
@@ -46,6 +31,21 @@ class ClipNoteComponent {
|
|
|
46
31
|
}
|
|
47
32
|
return 'inactive';
|
|
48
33
|
}
|
|
34
|
+
constructor(_cd, _dir, _elemRef) {
|
|
35
|
+
this._cd = _cd;
|
|
36
|
+
this._dir = _dir;
|
|
37
|
+
this._elemRef = _elemRef;
|
|
38
|
+
this.buttonText = '';
|
|
39
|
+
this.panelState = 'closed-ltr';
|
|
40
|
+
this.direction = 'ltr';
|
|
41
|
+
this._buttonAnimating = false;
|
|
42
|
+
this._hasContent = false;
|
|
43
|
+
this.opened = new EventEmitter();
|
|
44
|
+
this.closed = new EventEmitter();
|
|
45
|
+
this._hovering = false;
|
|
46
|
+
this._destroyed$ = new Subject();
|
|
47
|
+
this._toggleQueue = [];
|
|
48
|
+
}
|
|
49
49
|
ngOnInit() {
|
|
50
50
|
const changeDir = () => {
|
|
51
51
|
this.direction = this._dir.value;
|
|
@@ -145,39 +145,39 @@ class ClipNoteComponent {
|
|
|
145
145
|
this._icon = icon;
|
|
146
146
|
this._cd.markForCheck();
|
|
147
147
|
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
148
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ClipNoteComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Directionality }, { token: i0.ElementRef, host: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
149
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: ClipNoteComponent, selector: "bui-clip-note", host: { classAttribute: "bui-clip-note bui-host" }, viewQueries: [{ propertyName: "_viewDiv", first: true, predicate: ["viewDiv"], descendants: true, read: ElementRef, static: true }, { propertyName: "_noteViewRef", first: true, predicate: ["noteViewRef"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "_fallbackTemplate", first: true, predicate: ["fallbackTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"bui-clip-note-wrapper\">\r\n\t<div\r\n\t\tclass=\"bui-clip-note-content bui-border-{{ _color }} mat-elevation-z3\"\r\n\t\t[@panelAnimation]=\"panelState\"\r\n\t\t#viewDiv\r\n\t\t(cdkObserveContent)=\"_checkContent()\"\r\n\t>\r\n\t\t<ng-container #noteViewRef></ng-container>\r\n\t</div>\r\n\r\n\t<button\r\n\t\tmat-raised-button\r\n\t\tclass=\"bui-clip-note-trigger bui-clip-note-trigger-{{ buttonIconState }}\"\r\n\t\t[color]=\"_color\"\r\n\t\t[@buttonAnimation]=\"buttonState\"\r\n\t\t(mouseenter)=\"_mouseOverButton(true)\"\r\n\t\t(mouseleave)=\"_mouseOverButton(false)\"\r\n\t\t(click)=\"_scheduleToggle()\"\r\n\t>\r\n\t\t<mat-icon\r\n\t\t\t[@buttonIconAnimation]=\"_icon ? 'disabled' : buttonIconState\"\r\n\t\t\t(@buttonIconAnimation.start)=\"_buttonAnimating = true\"\r\n\t\t\t(@buttonIconAnimation.done)=\"_buttonAnimating = false; _checkToggle()\"\r\n\t\t\t[buiIcon]=\"_icon || (direction === 'rtl' ? 'chevron_right' : 'chevron_left')\"\r\n\t\t\tstyle=\"margin: 0\"\r\n\t\t>\r\n\t\t</mat-icon>\r\n\t\t<span [@buttonTextAnimation]=\"buttonState\" class=\"bui-clip-note-button-text\"> {{ buttonText }}</span>\r\n\t</button>\r\n</div>\r\n\r\n<ng-template #fallbackTemplate>\r\n\t<div [innerHTML]=\"_content\"></div>\r\n</ng-template>\r\n", styles: [":host{position:absolute;top:2rem;box-sizing:border-box;z-index:var(--bui-clip-note-z-index, 100)}:host(.bui-clip-note-hidden){display:none}:host-context(:not([dir=rtl])){right:0}:host-context(:not([dir=rtl])) .bui-clip-note-trigger{right:-18px}:host-context([dir=rtl]){left:0;right:unset}:host-context([dir=rtl]) .bui-clip-note-trigger{left:-18px;right:unset}.bui-clip-note-trigger{border-radius:18px;overflow:hidden;position:absolute;top:-1rem}.bui-clip-note-button-text{display:inline-block;overflow:hidden;white-space:nowrap;vertical-align:middle}.bui-clip-note-wrapper{position:relative}.bui-clip-note-content{max-width:320px;min-width:150px;background-color:var(--bui-bg-body);border-radius:6px;border-width:1px;border-style:solid;padding:1rem;overflow-y:hidden}@keyframes rubber-band{0%{transform:scaleZ(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleZ(1)}}:host(.bui-clip-note-reveal) .bui-clip-note-trigger{animation:rubber-band .8s ease}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "directive", type: i5.IconDirective, selector: "[buiIcon]", inputs: ["buiIcon", "size", "variant"] }], animations: [
|
|
150
|
+
trigger('buttonAnimation', [
|
|
151
|
+
state('*', style({ width: '36px', minWidth: 0, padding: 0 })),
|
|
152
|
+
state('active', style({})),
|
|
153
|
+
transition('inactive <=> active', [
|
|
154
|
+
group([animate('250ms cubic-bezier(.56,.14,.18,.91)'), query('@buttonTextAnimation', animateChild())]),
|
|
155
|
+
query('@buttonIconAnimation', animateChild())
|
|
156
|
+
])
|
|
157
|
+
]),
|
|
158
|
+
trigger('buttonTextAnimation', [
|
|
159
|
+
state('inactive', style({ opacity: 0, width: 0 })),
|
|
160
|
+
state('active', style({ opacity: 1 })),
|
|
161
|
+
transition('inactive => active', animate('250ms cubic-bezier(.88,.15,.63,.61)')),
|
|
162
|
+
transition('active => inactive', animate('250ms cubic-bezier(.05,.72,.44,.92)'))
|
|
163
|
+
]),
|
|
164
|
+
trigger('buttonIconAnimation', [
|
|
165
|
+
state('active-ltr', style({ transform: 'rotate(-90deg)' })),
|
|
166
|
+
state('active-rtl', style({ transform: 'rotate(90deg)' })),
|
|
167
|
+
state('open-ltr', style({ transform: 'rotate(90deg)' })),
|
|
168
|
+
state('open-rtl', style({ transform: 'rotate(270deg)' })),
|
|
169
|
+
state('inactive', style({})),
|
|
170
|
+
transition('inactive <=> *, * <=> open-ltr, * <=> open-rtl', animate('250ms cubic-bezier(0.25, 0.8, 0.25, 1)'))
|
|
171
|
+
]),
|
|
172
|
+
trigger('panelAnimation', [
|
|
173
|
+
state('open', style({})),
|
|
174
|
+
state('closed-rtl', style({ transform: 'scale(0) translate(-80%, -70%)', padding: 0, opacity: 0 })),
|
|
175
|
+
state('closed-ltr', style({ transform: 'scale(0) translate(80%, -70%)', padding: 0, opacity: 0 })),
|
|
176
|
+
transition('open <=> *', animate('300ms cubic-bezier(.69,.12,.6,.62)'))
|
|
157
177
|
])
|
|
158
|
-
])
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
state('active', style({ opacity: 1 })),
|
|
162
|
-
transition('inactive => active', animate('250ms cubic-bezier(.88,.15,.63,.61)')),
|
|
163
|
-
transition('active => inactive', animate('250ms cubic-bezier(.05,.72,.44,.92)'))
|
|
164
|
-
]),
|
|
165
|
-
trigger('buttonIconAnimation', [
|
|
166
|
-
state('active-ltr', style({ transform: 'rotate(-90deg)' })),
|
|
167
|
-
state('active-rtl', style({ transform: 'rotate(90deg)' })),
|
|
168
|
-
state('open-ltr', style({ transform: 'rotate(90deg)' })),
|
|
169
|
-
state('open-rtl', style({ transform: 'rotate(270deg)' })),
|
|
170
|
-
state('inactive', style({})),
|
|
171
|
-
transition('inactive <=> *, * <=> open-ltr, * <=> open-rtl', animate('250ms cubic-bezier(0.25, 0.8, 0.25, 1)'))
|
|
172
|
-
]),
|
|
173
|
-
trigger('panelAnimation', [
|
|
174
|
-
state('open', style({})),
|
|
175
|
-
state('closed-rtl', style({ transform: 'scale(0) translate(-80%, -70%)', padding: 0, opacity: 0 })),
|
|
176
|
-
state('closed-ltr', style({ transform: 'scale(0) translate(80%, -70%)', padding: 0, opacity: 0 })),
|
|
177
|
-
transition('open <=> *', animate('300ms cubic-bezier(.69,.12,.6,.62)'))
|
|
178
|
-
])
|
|
179
|
-
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ClipNoteComponent, decorators: [{
|
|
178
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
179
|
+
}
|
|
180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ClipNoteComponent, decorators: [{
|
|
181
181
|
type: Component,
|
|
182
182
|
args: [{ selector: 'bui-clip-note', host: { class: 'bui-clip-note bui-host' }, animations: [
|
|
183
183
|
trigger('buttonAnimation', [
|
|
@@ -208,10 +208,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
208
208
|
state('closed-ltr', style({ transform: 'scale(0) translate(80%, -70%)', padding: 0, opacity: 0 })),
|
|
209
209
|
transition('open <=> *', animate('300ms cubic-bezier(.69,.12,.6,.62)'))
|
|
210
210
|
])
|
|
211
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"bui-clip-note-wrapper\">\n\t<div\n\t\tclass=\"bui-clip-note-content bui-border-{{ _color }} mat-elevation-z3\"\n\t\t[@panelAnimation]=\"panelState\"\n\t\t#viewDiv\n\t\t(cdkObserveContent)=\"_checkContent()\"\n\t>\n\t\t<ng-container #noteViewRef></ng-container>\n\t</div>\n\n\t<button\n\t\tmat-raised-button\n\t\tclass=\"bui-clip-note-trigger bui-clip-note-trigger-{{ buttonIconState }}\"\n\t\t[color]=\"_color\"\n\t\t[@buttonAnimation]=\"buttonState\"\n\t\t(mouseenter)=\"_mouseOverButton(true)\"\n\t\t(mouseleave)=\"_mouseOverButton(false)\"\n\t\t(click)=\"_scheduleToggle()\"\n\t>\n\t\t<mat-icon\n\t\t\t[@buttonIconAnimation]=\"_icon ? 'disabled' : buttonIconState\"\n\t\t\t(@buttonIconAnimation.start)=\"_buttonAnimating = true\"\n\t\t\t(@buttonIconAnimation.done)=\"_buttonAnimating = false; _checkToggle()\"\n\t\t\t[buiIcon]=\"_icon || (direction === 'rtl' ? 'chevron_right' : 'chevron_left')\"\n\t\t\tstyle=\"margin: 0\"\n\t\t>\n\t\t</mat-icon>\n\t\t<span [@buttonTextAnimation]=\"buttonState\" class=\"bui-clip-note-button-text\"> {{ buttonText }}</span>\n\t</button>\n</div>\n\n<ng-template #fallbackTemplate>\n\t<div [innerHTML]=\"_content\"></div>\n</ng-template>\n", styles: [":host{position:absolute;top:2rem;box-sizing:border-box;z-index:var(--bui-clip-note-z-index, 100)}:host(.bui-clip-note-hidden){display:none}:host-context(:not([dir=rtl])){right:0}:host-context(:not([dir=rtl])) .bui-clip-note-trigger{right:-18px}:host-context([dir=rtl]){left:0;right:unset}:host-context([dir=rtl]) .bui-clip-note-trigger{left:-18px;right:unset}.bui-clip-note-trigger{border-radius:18px;overflow:hidden;position:absolute;top:-1rem}.bui-clip-note-button-text{display:inline-block;overflow:hidden;white-space:nowrap;vertical-align:middle}.bui-clip-note-wrapper{position:relative}.bui-clip-note-content{max-width:320px;min-width:150px;background-color:var(--bui-bg-body);border-radius:6px;border-width:1px;border-style:solid;padding:1rem;overflow-y:hidden}@keyframes rubber-band{0%{transform:scaleZ(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleZ(1)}}:host(.bui-clip-note-reveal) .bui-clip-note-trigger{animation:rubber-band .8s ease}\n"] }]
|
|
212
|
-
}], ctorParameters:
|
|
211
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"bui-clip-note-wrapper\">\r\n\t<div\r\n\t\tclass=\"bui-clip-note-content bui-border-{{ _color }} mat-elevation-z3\"\r\n\t\t[@panelAnimation]=\"panelState\"\r\n\t\t#viewDiv\r\n\t\t(cdkObserveContent)=\"_checkContent()\"\r\n\t>\r\n\t\t<ng-container #noteViewRef></ng-container>\r\n\t</div>\r\n\r\n\t<button\r\n\t\tmat-raised-button\r\n\t\tclass=\"bui-clip-note-trigger bui-clip-note-trigger-{{ buttonIconState }}\"\r\n\t\t[color]=\"_color\"\r\n\t\t[@buttonAnimation]=\"buttonState\"\r\n\t\t(mouseenter)=\"_mouseOverButton(true)\"\r\n\t\t(mouseleave)=\"_mouseOverButton(false)\"\r\n\t\t(click)=\"_scheduleToggle()\"\r\n\t>\r\n\t\t<mat-icon\r\n\t\t\t[@buttonIconAnimation]=\"_icon ? 'disabled' : buttonIconState\"\r\n\t\t\t(@buttonIconAnimation.start)=\"_buttonAnimating = true\"\r\n\t\t\t(@buttonIconAnimation.done)=\"_buttonAnimating = false; _checkToggle()\"\r\n\t\t\t[buiIcon]=\"_icon || (direction === 'rtl' ? 'chevron_right' : 'chevron_left')\"\r\n\t\t\tstyle=\"margin: 0\"\r\n\t\t>\r\n\t\t</mat-icon>\r\n\t\t<span [@buttonTextAnimation]=\"buttonState\" class=\"bui-clip-note-button-text\"> {{ buttonText }}</span>\r\n\t</button>\r\n</div>\r\n\r\n<ng-template #fallbackTemplate>\r\n\t<div [innerHTML]=\"_content\"></div>\r\n</ng-template>\r\n", styles: [":host{position:absolute;top:2rem;box-sizing:border-box;z-index:var(--bui-clip-note-z-index, 100)}:host(.bui-clip-note-hidden){display:none}:host-context(:not([dir=rtl])){right:0}:host-context(:not([dir=rtl])) .bui-clip-note-trigger{right:-18px}:host-context([dir=rtl]){left:0;right:unset}:host-context([dir=rtl]) .bui-clip-note-trigger{left:-18px;right:unset}.bui-clip-note-trigger{border-radius:18px;overflow:hidden;position:absolute;top:-1rem}.bui-clip-note-button-text{display:inline-block;overflow:hidden;white-space:nowrap;vertical-align:middle}.bui-clip-note-wrapper{position:relative}.bui-clip-note-content{max-width:320px;min-width:150px;background-color:var(--bui-bg-body);border-radius:6px;border-width:1px;border-style:solid;padding:1rem;overflow-y:hidden}@keyframes rubber-band{0%{transform:scaleZ(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleZ(1)}}:host(.bui-clip-note-reveal) .bui-clip-note-trigger{animation:rubber-band .8s ease}\n"] }]
|
|
212
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.Directionality }, { type: i0.ElementRef, decorators: [{
|
|
213
213
|
type: Host
|
|
214
|
-
}] }]
|
|
214
|
+
}] }], propDecorators: { _viewDiv: [{
|
|
215
215
|
type: ViewChild,
|
|
216
216
|
args: ['viewDiv', { static: true, read: ElementRef }]
|
|
217
217
|
}], _noteViewRef: [{
|
|
@@ -241,17 +241,6 @@ const CLIP_NOTE_DEFAULT_CONFIG = new InjectionToken('bui-clip-note.default-confi
|
|
|
241
241
|
*
|
|
242
242
|
*/
|
|
243
243
|
class ClipNoteDirective {
|
|
244
|
-
constructor(_elementRef, _vc, _config) {
|
|
245
|
-
this._elementRef = _elementRef;
|
|
246
|
-
this._vc = _vc;
|
|
247
|
-
/** Emits when the panel opens */
|
|
248
|
-
this.buiClipNoteOpened = new EventEmitter();
|
|
249
|
-
/** Emits when the panel closes */
|
|
250
|
-
this.buiClipNoteClosed = new EventEmitter();
|
|
251
|
-
this._color = 'primary';
|
|
252
|
-
this._caption = _config.caption;
|
|
253
|
-
this._color = _config.color;
|
|
254
|
-
}
|
|
255
244
|
/**
|
|
256
245
|
* Provide content to the clip note's floating notepad element.
|
|
257
246
|
* It accepts a `string` of HTML content or a `TemplateRef` object.
|
|
@@ -303,6 +292,17 @@ class ClipNoteDirective {
|
|
|
303
292
|
this._compRef.instance._assignButtonText(this._caption);
|
|
304
293
|
}
|
|
305
294
|
}
|
|
295
|
+
constructor(_elementRef, _vc, _config) {
|
|
296
|
+
this._elementRef = _elementRef;
|
|
297
|
+
this._vc = _vc;
|
|
298
|
+
/** Emits when the panel opens */
|
|
299
|
+
this.buiClipNoteOpened = new EventEmitter();
|
|
300
|
+
/** Emits when the panel closes */
|
|
301
|
+
this.buiClipNoteClosed = new EventEmitter();
|
|
302
|
+
this._color = 'primary';
|
|
303
|
+
this._caption = _config.caption;
|
|
304
|
+
this._color = _config.color;
|
|
305
|
+
}
|
|
306
306
|
ngAfterViewInit() {
|
|
307
307
|
setTimeout(() => {
|
|
308
308
|
this._compRef = this._vc.createComponent(ClipNoteComponent);
|
|
@@ -332,21 +332,21 @@ class ClipNoteDirective {
|
|
|
332
332
|
_processContent() {
|
|
333
333
|
this._compRef.instance._contentChanged(this._content);
|
|
334
334
|
}
|
|
335
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ClipNoteDirective, deps: [{ token: i0.ElementRef, host: true }, { token: i0.ViewContainerRef }, { token: CLIP_NOTE_DEFAULT_CONFIG }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
336
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: ClipNoteDirective, selector: "[buiClipNote]", inputs: { buiClipNote: "buiClipNote", buiClipNoteColor: "buiClipNoteColor", buiClipNoteIcon: "buiClipNoteIcon", buiClipNoteCaption: "buiClipNoteCaption" }, outputs: { buiClipNoteOpened: "buiClipNoteOpened", buiClipNoteClosed: "buiClipNoteClosed" }, exportAs: ["buiClipNote"], ngImport: i0 }); }
|
|
335
337
|
}
|
|
336
|
-
|
|
337
|
-
ClipNoteDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: ClipNoteDirective, selector: "[buiClipNote]", inputs: { buiClipNote: "buiClipNote", buiClipNoteColor: "buiClipNoteColor", buiClipNoteIcon: "buiClipNoteIcon", buiClipNoteCaption: "buiClipNoteCaption" }, outputs: { buiClipNoteOpened: "buiClipNoteOpened", buiClipNoteClosed: "buiClipNoteClosed" }, exportAs: ["buiClipNote"], ngImport: i0 });
|
|
338
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ClipNoteDirective, decorators: [{
|
|
338
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ClipNoteDirective, decorators: [{
|
|
339
339
|
type: Directive,
|
|
340
340
|
args: [{
|
|
341
341
|
selector: '[buiClipNote]',
|
|
342
342
|
exportAs: 'buiClipNote'
|
|
343
343
|
}]
|
|
344
|
-
}], ctorParameters:
|
|
344
|
+
}], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
|
|
345
345
|
type: Host
|
|
346
346
|
}] }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
|
347
347
|
type: Inject,
|
|
348
348
|
args: [CLIP_NOTE_DEFAULT_CONFIG]
|
|
349
|
-
}] }]
|
|
349
|
+
}] }], propDecorators: { buiClipNote: [{
|
|
350
350
|
type: Input
|
|
351
351
|
}], buiClipNoteColor: [{
|
|
352
352
|
type: Input
|
|
@@ -367,11 +367,11 @@ class ClipNoteModule {
|
|
|
367
367
|
providers: [{ provide: CLIP_NOTE_DEFAULT_CONFIG, useValue: config }]
|
|
368
368
|
};
|
|
369
369
|
}
|
|
370
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ClipNoteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
371
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: ClipNoteModule, declarations: [ClipNoteComponent, ClipNoteDirective], imports: [CommonModule, MatButtonModule, MatIconModule, BidiModule, BuiCommonModule, ObserversModule, IconFontModule], exports: [ClipNoteDirective] }); }
|
|
372
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ClipNoteModule, imports: [CommonModule, MatButtonModule, MatIconModule, BidiModule, BuiCommonModule, ObserversModule, IconFontModule] }); }
|
|
370
373
|
}
|
|
371
|
-
|
|
372
|
-
ClipNoteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: ClipNoteModule, declarations: [ClipNoteComponent, ClipNoteDirective], imports: [CommonModule, MatButtonModule, MatIconModule, BidiModule, BuiCommonModule, ObserversModule, IconFontModule], exports: [ClipNoteDirective] });
|
|
373
|
-
ClipNoteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ClipNoteModule, imports: [CommonModule, MatButtonModule, MatIconModule, BidiModule, BuiCommonModule, ObserversModule, IconFontModule] });
|
|
374
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ClipNoteModule, decorators: [{
|
|
374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ClipNoteModule, decorators: [{
|
|
375
375
|
type: NgModule,
|
|
376
376
|
args: [{
|
|
377
377
|
declarations: [ClipNoteComponent, ClipNoteDirective],
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bravura-ui-clip-note.mjs","sources":["../../../projects/ui/clip-note/clip-note.component.ts","../../../projects/ui/clip-note/clip-note.component.html","../../../projects/ui/clip-note/clip-note.directive.ts","../../../projects/ui/clip-note/clip-note.module.ts","../../../projects/ui/clip-note/bravura-ui-clip-note.ts"],"sourcesContent":["import { animate, animateChild, group, query, state, style, transition, trigger } from '@angular/animations';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport {\r\n\tChangeDetectionStrategy,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tElementRef,\r\n\tEmbeddedViewRef,\r\n\tEventEmitter,\r\n\tHost,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tTemplateRef,\r\n\tViewChild,\r\n\tViewContainerRef\r\n} from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'bui-clip-note',\r\n\ttemplateUrl: './clip-note.component.html',\r\n\tstyleUrls: ['./clip-note.component.scss'],\r\n\thost: { class: 'bui-clip-note bui-host' },\r\n\tanimations: [\r\n\t\ttrigger('buttonAnimation', [\r\n\t\t\tstate('*', style({ width: '36px', minWidth: 0, padding: 0 })),\r\n\t\t\tstate('active', style({})),\r\n\t\t\ttransition('inactive <=> active', [\r\n\t\t\t\tgroup([animate('250ms cubic-bezier(.56,.14,.18,.91)'), query('@buttonTextAnimation', animateChild())]),\r\n\t\t\t\tquery('@buttonIconAnimation', animateChild())\r\n\t\t\t])\r\n\t\t]),\r\n\t\ttrigger('buttonTextAnimation', [\r\n\t\t\tstate('inactive', style({ opacity: 0, width: 0 })),\r\n\t\t\tstate('active', style({ opacity: 1 })),\r\n\t\t\ttransition('inactive => active', animate('250ms cubic-bezier(.88,.15,.63,.61)')),\r\n\t\t\ttransition('active => inactive', animate('250ms cubic-bezier(.05,.72,.44,.92)'))\r\n\t\t]),\r\n\t\ttrigger('buttonIconAnimation', [\r\n\t\t\tstate('active-ltr', style({ transform: 'rotate(-90deg)' })),\r\n\t\t\tstate('active-rtl', style({ transform: 'rotate(90deg)' })),\r\n\t\t\tstate('open-ltr', style({ transform: 'rotate(90deg)' })),\r\n\t\t\tstate('open-rtl', style({ transform: 'rotate(270deg)' })),\r\n\t\t\tstate('inactive', style({})),\r\n\t\t\ttransition('inactive <=> *, * <=> open-ltr, * <=> open-rtl', animate('250ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\r\n\t\t]),\r\n\t\ttrigger('panelAnimation', [\r\n\t\t\tstate('open', style({})),\r\n\t\t\tstate('closed-rtl', style({ transform: 'scale(0) translate(-80%, -70%)', padding: 0, opacity: 0 })),\r\n\t\t\tstate('closed-ltr', style({ transform: 'scale(0) translate(80%, -70%)', padding: 0, opacity: 0 })),\r\n\t\t\ttransition('open <=> *', animate('300ms cubic-bezier(.69,.12,.6,.62)'))\r\n\t\t])\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ClipNoteComponent implements OnInit, OnDestroy {\r\n\tbuttonText = '';\r\n\r\n\tget buttonState(): string {\r\n\t\tif (this._hovering || this.panelState === 'open') {\r\n\t\t\treturn 'active';\r\n\t\t}\r\n\t\treturn 'inactive';\r\n\t}\r\n\r\n\tget buttonIconState(): string {\r\n\t\tif (this.panelState === 'open') {\r\n\t\t\treturn `open-${this.direction}`;\r\n\t\t}\r\n\t\tif (this.buttonState === 'active') {\r\n\t\t\treturn `active-${this.direction}`;\r\n\t\t}\r\n\t\treturn 'inactive';\r\n\t}\r\n\r\n\tpanelState: 'open' | 'closed-ltr' | 'closed-rtl' = 'closed-ltr';\r\n\r\n\tdirection = 'ltr';\r\n\t_contentView?: EmbeddedViewRef<any>;\r\n\t_content?: string;\r\n\t_color: ThemePalette;\r\n\t_buttonAnimating = false;\r\n\t_icon?: string;\r\n\t_hasContent = false;\r\n\r\n\treadonly opened = new EventEmitter<void>();\r\n\treadonly closed = new EventEmitter<void>();\r\n\r\n\tprivate _hovering = false;\r\n\tprivate _destroyed$ = new Subject<void>();\r\n\tprivate _toggleQueue: boolean[] = [];\r\n\r\n\t@ViewChild('viewDiv', { static: true, read: ElementRef })\r\n\tprivate _viewDiv!: ElementRef<HTMLDivElement>;\r\n\r\n\t@ViewChild('noteViewRef', { static: true, read: ViewContainerRef })\r\n\tprivate _noteViewRef!: ViewContainerRef;\r\n\r\n\t@ViewChild('fallbackTemplate', { static: true })\r\n\tprivate _fallbackTemplate!: TemplateRef<any>;\r\n\r\n\tconstructor(\r\n\t\tprivate _cd: ChangeDetectorRef,\r\n\t\tprivate _dir: Directionality,\r\n\t\t@Host() private _elemRef: ElementRef<HTMLElement>\r\n\t) {}\r\n\r\n\tngOnInit(): void {\r\n\t\tconst changeDir = () => {\r\n\t\t\tthis.direction = this._dir.value;\r\n\t\t\tthis.panelState = `closed-${this.direction}` as any;\r\n\t\t\tthis._cd.markForCheck();\r\n\t\t};\r\n\t\tthis._dir.change.pipe(takeUntil(this._destroyed$)).subscribe(changeDir);\r\n\t\tchangeDir();\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis._destroyed$.next();\r\n\t\tthis._destroyed$.complete();\r\n\t}\r\n\r\n\t_mouseOverButton(hovering: boolean) {\r\n\t\tif (this._hovering !== hovering) {\r\n\t\t\tthis._hovering = hovering;\r\n\t\t\tthis._cd.markForCheck();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle() {\r\n\t\tthis.panelState = this.panelState === `closed-${this.direction}` ? 'open' : (`closed-${this.direction}` as any);\r\n\t\tthis._cd.markForCheck();\r\n\t}\r\n\r\n\t_scheduleToggle() {\r\n\t\tif (this._buttonAnimating) {\r\n\t\t\tthis._toggleQueue.push(true);\r\n\t\t} else {\r\n\t\t\tthis.toggle();\r\n\t\t}\r\n\t}\r\n\r\n\t_checkToggle() {\r\n\t\tif (this._toggleQueue.pop()) {\r\n\t\t\tthis.toggle();\r\n\t\t}\r\n\t}\r\n\r\n\topen() {\r\n\t\tthis.panelState = 'open';\r\n\t\tthis._cd.markForCheck();\r\n\t\tthis._emit();\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.panelState = `closed-${this.direction}` as any;\r\n\t\tthis._cd.markForCheck();\r\n\t\tthis._emit();\r\n\t}\r\n\r\n\t_emit() {\r\n\t\tif (this.panelState === 'open') {\r\n\t\t\tthis.opened.emit();\r\n\t\t} else {\r\n\t\t\tthis.closed.emit();\r\n\t\t}\r\n\t}\r\n\r\n\t_contentChanged(content?: string | TemplateRef<any>) {\r\n\t\tlet template: TemplateRef<any>;\r\n\r\n\t\tif (content instanceof TemplateRef) {\r\n\t\t\ttemplate = content;\r\n\t\t} else {\r\n\t\t\ttemplate = this._fallbackTemplate;\r\n\t\t\tthis._content = content;\r\n\t\t}\r\n\t\tthis._noteViewRef.clear();\r\n\t\tconst context = {};\r\n\t\tthis._contentView = this._noteViewRef.createEmbeddedView(template, context);\r\n\t\tthis._checkContent(true);\r\n\t}\r\n\r\n\t_checkContent(initial?: boolean) {\r\n\t\tthis._contentView?.detectChanges();\r\n\t\tthis._hasContent = !!this._viewDiv.nativeElement.textContent?.trim();\r\n\t\tconst classList = this._elemRef.nativeElement.classList;\r\n\t\tconst cls = 'bui-clip-note-hidden';\r\n\t\tconst cls1 = 'bui-clip-note-reveal';\r\n\t\tif (this._hasContent) {\r\n\t\t\tclassList.remove(cls);\r\n\t\t\tif (!initial && this.panelState !== 'open') {\r\n\t\t\t\tclassList.add(cls1);\r\n\t\t\t}\r\n\t\t\tthis._elemRef.nativeElement.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\r\n\t\t} else {\r\n\t\t\tclassList.add(cls);\r\n\t\t\tclassList.remove(cls1);\r\n\t\t\tthis.close();\r\n\t\t}\r\n\t}\r\n\r\n\t_assignColor(color: ThemePalette) {\r\n\t\tthis._color = color;\r\n\t\tthis._cd.markForCheck();\r\n\t}\r\n\r\n\t_assignButtonText(text: string) {\r\n\t\tthis.buttonText = text;\r\n\t\tthis._cd.markForCheck();\r\n\t}\r\n\r\n\t_assignButtonIcon(icon?: string) {\r\n\t\tthis._icon = icon;\r\n\t\tthis._cd.markForCheck();\r\n\t}\r\n}\r\n","<div class=\"bui-clip-note-wrapper\">\r\n\t<div\r\n\t\tclass=\"bui-clip-note-content bui-border-{{ _color }} mat-elevation-z3\"\r\n\t\t[@panelAnimation]=\"panelState\"\r\n\t\t#viewDiv\r\n\t\t(cdkObserveContent)=\"_checkContent()\"\r\n\t>\r\n\t\t<ng-container #noteViewRef></ng-container>\r\n\t</div>\r\n\r\n\t<button\r\n\t\tmat-raised-button\r\n\t\tclass=\"bui-clip-note-trigger bui-clip-note-trigger-{{ buttonIconState }}\"\r\n\t\t[color]=\"_color\"\r\n\t\t[@buttonAnimation]=\"buttonState\"\r\n\t\t(mouseenter)=\"_mouseOverButton(true)\"\r\n\t\t(mouseleave)=\"_mouseOverButton(false)\"\r\n\t\t(click)=\"_scheduleToggle()\"\r\n\t>\r\n\t\t<mat-icon\r\n\t\t\t[@buttonIconAnimation]=\"_icon ? 'disabled' : buttonIconState\"\r\n\t\t\t(@buttonIconAnimation.start)=\"_buttonAnimating = true\"\r\n\t\t\t(@buttonIconAnimation.done)=\"_buttonAnimating = false; _checkToggle()\"\r\n\t\t\t[buiIcon]=\"_icon || (direction === 'rtl' ? 'chevron_right' : 'chevron_left')\"\r\n\t\t\tstyle=\"margin: 0\"\r\n\t\t>\r\n\t\t</mat-icon>\r\n\t\t<span [@buttonTextAnimation]=\"buttonState\" class=\"bui-clip-note-button-text\"> {{ buttonText }}</span>\r\n\t</button>\r\n</div>\r\n\r\n<ng-template #fallbackTemplate>\r\n\t<div [innerHTML]=\"_content\"></div>\r\n</ng-template>\r\n","import {\r\n\tAfterViewInit,\r\n\tComponentRef,\r\n\tDirective,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tHost,\r\n\tInject,\r\n\tInjectionToken,\r\n\tInput,\r\n\tOutput,\r\n\tTemplateRef,\r\n\tViewContainerRef\r\n} from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { ClipNoteComponent } from './clip-note.component';\r\n\r\nexport interface ClipNoteDefaultConfig {\r\n\tcolor: ThemePalette;\r\n\tcaption: string;\r\n}\r\n\r\n/** Used to provide default config for clip notes. */\r\nexport const CLIP_NOTE_DEFAULT_CONFIG = new InjectionToken<ClipNoteDefaultConfig>('bui-clip-note.default-config', {\r\n\tfactory: () => ({ color: 'primary', caption: 'More info' })\r\n});\r\n\r\n/**\r\n * A clip note consists of a toggle button and a floating 'notepad' element, attached to the top end of the host element's\r\n * viewable area. The 'notepad' normally collapses away and only reveals itself when the toggle button is active.\r\n *\r\n * The toggle button clips on the edge of the host element and expands to display the full caption when hovered. It hides itself\r\n * automatically when there is no content provided via the `buiClipNote` property of the directive.\r\n *\r\n * The clip note component is suitable for large page container elements with visible boundaries. It can present contextual\r\n * information regarding and in addition to the content displayed in the main view area.\r\n *\r\n * The properties `buiClipNoteColor` and `buiClipNoteCaption` customise the appearance of the clip note, the default values of which\r\n * can optionally be provided by the `ClipNoteModule.forConfig()` method.\r\n *\r\n */\r\n@Directive({\r\n\tselector: '[buiClipNote]',\r\n\texportAs: 'buiClipNote'\r\n})\r\nexport class ClipNoteDirective implements AfterViewInit {\r\n\t/**\r\n\t * Provide content to the clip note's floating notepad element.\r\n\t * It accepts a `string` of HTML content or a `TemplateRef` object.\r\n\t */\r\n\t@Input()\r\n\tget buiClipNote(): string | TemplateRef<any> | undefined {\r\n\t\treturn this._content;\r\n\t}\r\n\tset buiClipNote(note: string | TemplateRef<any> | undefined) {\r\n\t\tthis._content = note;\r\n\t\tif (this._compRef) {\r\n\t\t\tthis._processContent();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Customise the theme color alias.\r\n\t * @default 'primary'\r\n\t */\r\n\t@Input()\r\n\tget buiClipNoteColor(): ThemePalette {\r\n\t\treturn this._color;\r\n\t}\r\n\tset buiClipNoteColor(color: ThemePalette) {\r\n\t\tthis._color = color;\r\n\t\tif (this._compRef) {\r\n\t\t\tthis._compRef.instance._assignColor(this._color);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Customise the icon on the toggle button. With this property specified, the animation on the icon\r\n\t * will not be active.\r\n\t */\r\n\t@Input()\r\n\tget buiClipNoteIcon(): string | undefined {\r\n\t\treturn this._icon;\r\n\t}\r\n\tset buiClipNoteIcon(icon: string | undefined) {\r\n\t\tthis._icon = icon;\r\n\t\tif (this._compRef) {\r\n\t\t\tthis._compRef.instance._assignButtonIcon(this._icon);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * The caption of the toggle button when expanded.\r\n\t */\r\n\t@Input()\r\n\tget buiClipNoteCaption(): string {\r\n\t\treturn this._caption;\r\n\t}\r\n\tset buiClipNoteCaption(text: string) {\r\n\t\tthis._caption = text;\r\n\t\tif (this._compRef) {\r\n\t\t\tthis._compRef.instance._assignButtonText(this._caption);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Emits when the panel opens */\r\n\t@Output()\r\n\treadonly buiClipNoteOpened = new EventEmitter<void>();\r\n\r\n\t/** Emits when the panel closes */\r\n\t@Output()\r\n\treadonly buiClipNoteClosed = new EventEmitter<void>();\r\n\r\n\tprivate _content?: string | TemplateRef<any>;\r\n\tprivate _color: ThemePalette = 'primary';\r\n\tprivate _compRef!: ComponentRef<ClipNoteComponent>;\r\n\tprivate _caption: string;\r\n\tprivate _icon?: string;\r\n\r\n\tconstructor(\r\n\t\t@Host() private _elementRef: ElementRef<HTMLElement>,\r\n\t\tprivate _vc: ViewContainerRef,\r\n\t\t@Inject(CLIP_NOTE_DEFAULT_CONFIG) _config: ClipNoteDefaultConfig\r\n\t) {\r\n\t\tthis._caption = _config.caption;\r\n\t\tthis._color = _config.color;\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis._compRef = this._vc.createComponent(ClipNoteComponent);\r\n\t\t\tconst childElement: HTMLElement = this._compRef.location.nativeElement;\r\n\t\t\tconst element = this._elementRef.nativeElement;\r\n\t\t\telement.style.position = 'relative';\r\n\t\t\telement.appendChild(childElement);\r\n\t\t\tthis._compRef.instance._assignColor(this._color);\r\n\t\t\tthis._compRef.instance._assignButtonText(this._caption);\r\n\t\t\tthis._compRef.instance._assignButtonIcon(this._icon);\r\n\t\t\tthis._compRef.instance.opened.subscribe(this.buiClipNoteOpened.next.bind(this.buiClipNoteOpened));\r\n\t\t\tthis._compRef.instance.closed.subscribe(this.buiClipNoteClosed.next.bind(this.buiClipNoteClosed));\r\n\t\t\tthis._processContent();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis._compRef.destroy();\r\n\t}\r\n\r\n\t/** Open the note panel */\r\n\topen() {\r\n\t\tthis._compRef.instance.open();\r\n\t}\r\n\r\n\t/** Close the note panel */\r\n\tclose() {\r\n\t\tthis._compRef.instance.close();\r\n\t}\r\n\r\n\tprivate _processContent() {\r\n\t\tthis._compRef.instance._contentChanged(this._content);\r\n\t}\r\n}\r\n","import { BidiModule } from '@angular/cdk/bidi';\r\nimport { ObserversModule } from '@angular/cdk/observers';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BuiCommonModule } from '@bravura/ui/common';\r\nimport { IconFontModule } from '@bravura/ui/icon-font';\r\nimport { ClipNoteComponent } from './clip-note.component';\r\nimport { ClipNoteDefaultConfig, ClipNoteDirective, CLIP_NOTE_DEFAULT_CONFIG } from './clip-note.directive';\r\n\r\n@NgModule({\r\n\tdeclarations: [ClipNoteComponent, ClipNoteDirective],\r\n\timports: [CommonModule, MatButtonModule, MatIconModule, BidiModule, BuiCommonModule, ObserversModule, IconFontModule],\r\n\texports: [ClipNoteDirective]\r\n})\r\nexport class ClipNoteModule {\r\n\tstatic forConfig(config: ClipNoteDefaultConfig): ModuleWithProviders<ClipNoteModule> {\r\n\t\treturn {\r\n\t\t\tngModule: ClipNoteModule,\r\n\t\t\tproviders: [{ provide: CLIP_NOTE_DEFAULT_CONFIG, useValue: config }]\r\n\t\t};\r\n\t}\r\n}\r\n\r\nexport { ClipNoteDirective };\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -66,25 +66,25 @@ class BuiCommonModule {
|
|
|
66
66
|
observer.observe(document.body, { attributes: true });
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: BuiCommonModule, deps: [{ token: i1.Directionality }, { token: BuiCommonModule, optional: true, skipSelf: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
70
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: BuiCommonModule, imports: [BidiModule], exports: [BidiModule] }); }
|
|
71
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: BuiCommonModule, imports: [BidiModule, BidiModule] }); }
|
|
69
72
|
}
|
|
70
|
-
|
|
71
|
-
BuiCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: BuiCommonModule, imports: [BidiModule], exports: [BidiModule] });
|
|
72
|
-
BuiCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BuiCommonModule, imports: [BidiModule, BidiModule] });
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BuiCommonModule, decorators: [{
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: BuiCommonModule, decorators: [{
|
|
74
74
|
type: NgModule,
|
|
75
75
|
args: [{
|
|
76
76
|
declarations: [],
|
|
77
77
|
imports: [BidiModule],
|
|
78
78
|
exports: [BidiModule]
|
|
79
79
|
}]
|
|
80
|
-
}], ctorParameters:
|
|
80
|
+
}], ctorParameters: () => [{ type: i1.Directionality }, { type: BuiCommonModule, decorators: [{
|
|
81
81
|
type: Optional
|
|
82
82
|
}, {
|
|
83
83
|
type: SkipSelf
|
|
84
84
|
}] }, { type: Document, decorators: [{
|
|
85
85
|
type: Inject,
|
|
86
86
|
args: [DOCUMENT]
|
|
87
|
-
}] }]
|
|
87
|
+
}] }] });
|
|
88
88
|
|
|
89
89
|
/**
|
|
90
90
|
* Generated bundle index. Do not edit.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bravura-ui-common.mjs","sources":["../../../projects/ui/common/common-utils.ts","../../../projects/ui/common/common.module.ts","../../../projects/ui/common/bravura-ui-common.ts"],"sourcesContent":["export function generateID() {\r\n\treturn Math.round(Math.random() * Math.pow(2, 50)).toString(36);\r\n}\r\n\r\nexport function isElementInViewport(el: HTMLElement) {\r\n\tconst rect = el.getBoundingClientRect();\r\n\r\n\treturn (\r\n\t\trect.top >= 0 &&\r\n\t\trect.left >= 0 &&\r\n\t\trect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\r\n\t);\r\n}\r\n\r\n/**\r\n * Uses canvas.measureText to compute and return the width of the given text of given font in pixels.\r\n *\r\n * @param {String} text The text to be rendered.\r\n * @param el the element used to compute the font styles\r\n *\r\n * @see https://stackoverflow.com/questions/118241/calculate-text-width-with-javascript/21015393#21015393\r\n */\r\nexport function getTextWidth(text: string, el: HTMLElement = document.body): number {\r\n\tfunction getCssStyle(element: HTMLElement, prop: string) {\r\n\t\treturn window.getComputedStyle(element, null).getPropertyValue(prop);\r\n\t}\r\n\r\n\tconst fontWeight = getCssStyle(el, 'font-weight') || 'normal';\r\n\tconst fontSize = getCssStyle(el, 'font-size') || '16px';\r\n\tconst fontFamily = getCssStyle(el, 'font-family') || 'Arial';\r\n\r\n\tconst font = `${fontWeight} ${fontSize} ${fontFamily}`;\r\n\r\n\t// re-use canvas object for better performance\r\n\tconst canvas = (getTextWidth as any).canvas || ((getTextWidth as any).canvas = document.createElement('canvas'));\r\n\tconst context = canvas.getContext('2d');\r\n\tcontext.font = font;\r\n\tconst metrics = context.measureText(text);\r\n\treturn Math.round(metrics.width);\r\n}\r\n","import { BidiModule, Direction, Directionality } from '@angular/cdk/bidi';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Inject, NgModule, Optional, SkipSelf } from '@angular/core';\r\n\r\n/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */\r\nconst RTL_LOCALE_PATTERN =\r\n\t/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;\r\n\r\n/** Resolves a string value to a specific direction. */\r\nexport function _resolveDirectionality(rawValue: string): Direction {\r\n\tconst value = rawValue?.toLowerCase() || '';\r\n\r\n\tif (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {\r\n\t\treturn RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';\r\n\t}\r\n\r\n\treturn value === 'rtl' ? 'rtl' : 'ltr';\r\n}\r\n\r\n@NgModule({\r\n\tdeclarations: [],\r\n\timports: [BidiModule],\r\n\texports: [BidiModule]\r\n})\r\nexport class BuiCommonModule {\r\n\tconstructor(\r\n\t\tdir: Directionality,\r\n\t\t@Optional()\r\n\t\t@SkipSelf()\r\n\t\tthisModule: BuiCommonModule,\r\n\t\t@Inject(DOCUMENT) document: Document\r\n\t) {\r\n\t\tif (!thisModule) {\r\n\t\t\tconst observer = new MutationObserver(() => {\r\n\t\t\t\tconst attr = document.documentElement.getAttribute('dir') || document.body.getAttribute('dir');\r\n\t\t\t\tif (attr && dir.value !== attr) {\r\n\t\t\t\t\tconst d = _resolveDirectionality(attr);\r\n\t\t\t\t\tdir.change.emit(d);\r\n\t\t\t\t\tif (Object.getOwnPropertyNames(dir).includes('value')) {\r\n\t\t\t\t\t\t(dir as any).value = d;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsetTimeout(() => dir.change.emit(d));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tobserver.observe(document.documentElement, { attributes: true });\r\n\t\t\tobserver.observe(document.body, { attributes: true });\r\n\t\t}\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getCurrencySymbol, DecimalPipe, CommonModule } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { ɵfindLocaleData, LOCALE_ID, DEFAULT_CURRENCY_CODE, forwardRef, Directive, Self, Inject, Optional, Input, HostBinding, HostListener, NgModule } from '@angular/core';
|
|
3
|
+
import { ɵfindLocaleData as _findLocaleData, LOCALE_ID, DEFAULT_CURRENCY_CODE, forwardRef, Directive, Self, Inject, Optional, Input, HostBinding, HostListener, NgModule } from '@angular/core';
|
|
4
4
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
5
|
import * as i1 from '@angular/material/form-field';
|
|
6
6
|
import { MAT_FORM_FIELD } from '@angular/material/form-field';
|
|
@@ -86,7 +86,7 @@ class CurrencyInputDirective {
|
|
|
86
86
|
_currencyUpdated() {
|
|
87
87
|
this.currencyCode = this.currencyCode || this._defaultCurrencyCode;
|
|
88
88
|
this._symbol = getCurrencySymbol(this.currencyCode, this.format, this._locale) || '$';
|
|
89
|
-
const localeData =
|
|
89
|
+
const localeData = _findLocaleData(this._locale);
|
|
90
90
|
this._ds = localeData[13][0];
|
|
91
91
|
this._decimalPipe = new DecimalPipe(this._locale);
|
|
92
92
|
const curFormat = localeData[14][2];
|
|
@@ -222,16 +222,16 @@ class CurrencyInputDirective {
|
|
|
222
222
|
const decimalStr = this.baseUnitOnly ? '' : `${this._ds}00`;
|
|
223
223
|
return this._trailing ? `0${decimalStr} ${this._symbol}` : `${this._symbol}0${decimalStr}`;
|
|
224
224
|
}
|
|
225
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: CurrencyInputDirective, deps: [{ token: i0.ElementRef, self: true }, { token: i0.Renderer2 }, { token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }, { token: MAT_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
226
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: CurrencyInputDirective, selector: "input[buiCurrencyInput],input[currencyCode],input[data-type=currency]", inputs: { allowNegative: "allowNegative", currencyCode: "currencyCode", baseUnitOnly: "baseUnitOnly", format: "format" }, host: { listeners: { "input": "onInput()", "focus": "onFocus()", "blur": "onblur()" }, properties: { "placeholder": "this.placeholder", "autocomplete": "this.autocomplete", "type": "this.type", "attr.inputmode": "this.inputMode" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CurrencyInputDirective), multi: true }], usesOnChanges: true, ngImport: i0 }); }
|
|
225
227
|
}
|
|
226
|
-
|
|
227
|
-
CurrencyInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: CurrencyInputDirective, selector: "input[buiCurrencyInput],input[currencyCode],input[data-type=currency]", inputs: { allowNegative: "allowNegative", currencyCode: "currencyCode", baseUnitOnly: "baseUnitOnly", format: "format" }, host: { listeners: { "input": "onInput()", "focus": "onFocus()", "blur": "onblur()" }, properties: { "placeholder": "this.placeholder", "autocomplete": "this.autocomplete", "type": "this.type", "attr.inputmode": "this.inputMode" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CurrencyInputDirective), multi: true }], usesOnChanges: true, ngImport: i0 });
|
|
228
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: CurrencyInputDirective, decorators: [{
|
|
228
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: CurrencyInputDirective, decorators: [{
|
|
229
229
|
type: Directive,
|
|
230
230
|
args: [{
|
|
231
231
|
selector: 'input[buiCurrencyInput],input[currencyCode],input[data-type=currency]',
|
|
232
232
|
providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CurrencyInputDirective), multi: true }]
|
|
233
233
|
}]
|
|
234
|
-
}], ctorParameters:
|
|
234
|
+
}], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
|
|
235
235
|
type: Self
|
|
236
236
|
}] }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
|
237
237
|
type: Inject,
|
|
@@ -244,7 +244,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
244
244
|
}, {
|
|
245
245
|
type: Inject,
|
|
246
246
|
args: [MAT_FORM_FIELD]
|
|
247
|
-
}] }]
|
|
247
|
+
}] }], propDecorators: { allowNegative: [{
|
|
248
248
|
type: Input
|
|
249
249
|
}], currencyCode: [{
|
|
250
250
|
type: Input
|
|
@@ -276,11 +276,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
276
276
|
}] } });
|
|
277
277
|
|
|
278
278
|
class CurrencyInputModule {
|
|
279
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: CurrencyInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
280
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: CurrencyInputModule, declarations: [CurrencyInputDirective], imports: [CommonModule], exports: [CurrencyInputDirective] }); }
|
|
281
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: CurrencyInputModule, imports: [CommonModule] }); }
|
|
279
282
|
}
|
|
280
|
-
|
|
281
|
-
CurrencyInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: CurrencyInputModule, declarations: [CurrencyInputDirective], imports: [CommonModule], exports: [CurrencyInputDirective] });
|
|
282
|
-
CurrencyInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: CurrencyInputModule, imports: [CommonModule] });
|
|
283
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: CurrencyInputModule, decorators: [{
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: CurrencyInputModule, decorators: [{
|
|
284
284
|
type: NgModule,
|
|
285
285
|
args: [{
|
|
286
286
|
declarations: [CurrencyInputDirective],
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bravura-ui-currency-input.mjs","sources":["../../../projects/ui/currency-input/currency-input.directive.ts","../../../projects/ui/currency-input/currency-input.module.ts","../../../projects/ui/currency-input/bravura-ui-currency-input.ts"],"sourcesContent":["import { DecimalPipe, getCurrencySymbol } from '@angular/common';\r\nimport {\r\n\tDEFAULT_CURRENCY_CODE,\r\n\tDirective,\r\n\tElementRef,\r\n\tforwardRef,\r\n\tHostBinding,\r\n\tHostListener,\r\n\tInject,\r\n\tInput,\r\n\tLOCALE_ID,\r\n\tOnChanges,\r\n\tOnInit,\r\n\tOptional,\r\n\tRenderer2,\r\n\tSelf,\r\n\tɵfindLocaleData\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatFormField, MAT_FORM_FIELD } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { noop } from 'rxjs';\r\n\r\n/* tslint:disable:no-empty */\r\nexport const noop_consumer = (_: any) => {};\r\n\r\n/**\r\n * This directive will enhance an input element to format the numbers entered to a currency amount.\r\n */\r\n@Directive({\r\n\tselector: 'input[buiCurrencyInput],input[currencyCode],input[data-type=currency]',\r\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CurrencyInputDirective), multi: true }]\r\n})\r\nexport class CurrencyInputDirective implements OnInit, OnChanges, ControlValueAccessor {\r\n\t/**\r\n\t * true to allow negative input, otherwise false\r\n\t * Default to false.\r\n\t */\r\n\t@Input()\r\n\tallowNegative: boolean = false;\r\n\r\n\t/**\r\n\t * Provide the currency code to format the entered amount.\r\n\t * Uses angular token DEFAULT_CURRENCY_CODE by default.\r\n\t */\r\n\t@Input()\r\n\tcurrencyCode: string = '';\r\n\r\n\t/**\r\n\t * true if no decimal digits allowed, otherwise false.\r\n\t * Default to false.\r\n\t */\r\n\t@Input()\r\n\tbaseUnitOnly = false;\r\n\r\n\t/**\r\n\t * The format the of the amount either in wide or narrow.\r\n\t */\r\n\t@Input()\r\n\tformat: 'narrow' | 'wide' = 'wide';\r\n\r\n\t@HostBinding('placeholder')\r\n\tprivate placeholder: string = '';\r\n\r\n\t@HostBinding('autocomplete')\r\n\tprivate autocomplete = 'off';\r\n\r\n\t@HostBinding('type')\r\n\tprivate type = 'text';\r\n\r\n\t@HostBinding('attr.inputmode')\r\n\tprivate inputMode = 'decimal';\r\n\r\n\tprivate change = noop_consumer;\r\n\tprivate onTouch = noop;\r\n\tprivate _safari: boolean;\r\n\tprivate _symbol: string = '$';\r\n\tprivate _decimalPipe!: DecimalPipe;\r\n\r\n\tprivate _ds = '.'; // decimal separator\r\n\tprivate _trailing = false;\r\n\r\n\tconstructor(\r\n\t\t@Self() private _el: ElementRef<HTMLInputElement>,\r\n\t\tprivate _renderer: Renderer2,\r\n\t\t@Inject(LOCALE_ID) private _locale: string,\r\n\t\t@Inject(DEFAULT_CURRENCY_CODE) private _defaultCurrencyCode: string,\r\n\t\t@Optional() @Inject(MAT_FORM_FIELD) private _field?: MatFormField\r\n\t) {\r\n\t\tconst userAgent = navigator.userAgent;\r\n\t\tthis._safari = !userAgent.match(/Firefox/i) && !userAgent.match(/Chrome/i) && !!userAgent.match(/safari/i);\r\n\t\tthis._currencyUpdated();\r\n\t}\r\n\r\n\tngOnInit() {}\r\n\r\n\tngOnChanges(): void {\r\n\t\tthis._currencyUpdated();\r\n\t\tthis.onInput();\r\n\t}\r\n\r\n\t@HostListener('input')\r\n\tonInput() {\r\n\t\tthis._formatCurrency(this._el, false, true);\r\n\t}\r\n\r\n\t@HostListener('focus')\r\n\tonFocus() {\r\n\t\tthis._formatCurrency(this._el, false, true);\r\n\t}\r\n\r\n\t@HostListener('blur')\r\n\tonblur() {\r\n\t\tthis.onTouch();\r\n\t\tthis._formatCurrency(this._el, true, false);\r\n\t}\r\n\r\n\twriteValue(value: any) {\r\n\t\tvalue = this._decimalPipe.transform(value);\r\n\t\tthis._renderer.setProperty(this._el.nativeElement, 'value', value);\r\n\t\tthis._formatCurrency(this._el, true, false);\r\n\t}\r\n\r\n\tregisterOnChange(fn: any) {\r\n\t\tthis.change = fn;\r\n\t}\r\n\r\n\tregisterOnTouched(fn: any) {\r\n\t\tthis.onTouch = fn;\r\n\t}\r\n\r\n\tprivate _updatePlaceholder() {\r\n\t\tthis.placeholder = this.placeholder || this._0Text;\r\n\t\tif (this._field?._control instanceof MatInput) {\r\n\t\t\tthis._field._control.placeholder = this.placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _currencyUpdated() {\r\n\t\tthis.currencyCode = this.currencyCode || this._defaultCurrencyCode;\r\n\t\tthis._symbol = getCurrencySymbol(this.currencyCode, this.format, this._locale) || '$';\r\n\t\tconst localeData = ɵfindLocaleData(this._locale);\r\n\t\tthis._ds = localeData[13][0];\r\n\t\tthis._decimalPipe = new DecimalPipe(this._locale);\r\n\t\tconst curFormat: string = localeData[14][2];\r\n\t\tthis._trailing = curFormat.indexOf('¤') > 0;\r\n\t\tthis._updatePlaceholder();\r\n\t}\r\n\r\n\tprivate _formatCurrency(input: ElementRef<HTMLInputElement>, blur: boolean, focus: boolean) {\r\n\t\t// appends $ to value, validates decimal side\r\n\t\t// and puts cursor back in right position.\r\n\t\t// get input value\r\n\t\tlet input_val = input.nativeElement.value;\r\n\r\n\t\t// don't validate empty input\r\n\t\tif (input_val === '') {\r\n\t\t\tthis.change(null);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst minus = this.allowNegative ? '-' : '';\r\n\r\n\t\t// remove non digit values except currency symbol, decimal separator and hypen\r\n\t\tconst reg = new RegExp(`[^0-9${minus}${this._symbol}${this._ds}]`, 'g');\r\n\r\n\t\tlet sanitiseValue = input_val.replace(reg, '');\r\n\r\n\t\tif (sanitiseValue === '' || sanitiseValue === this._symbol) {\r\n\t\t\tthis.change(null);\r\n\t\t\tthis._renderer.setProperty(input.nativeElement, 'value', '');\r\n\t\t\treturn;\r\n\t\t} else if (\r\n\t\t\t(this.allowNegative && sanitiseValue === `-${this._symbol}`) ||\r\n\t\t\tsanitiseValue === '-' ||\r\n\t\t\tsanitiseValue === '--'\r\n\t\t) {\r\n\t\t\tthis.change(null);\r\n\t\t\tthis._renderer.setProperty(input.nativeElement, 'value', '-');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst negative = this.allowNegative && input_val.indexOf('-') >= 0;\r\n\r\n\t\t// original length\r\n\t\tconst original_len = input_val.length;\r\n\r\n\t\t// initial caret position\r\n\t\tlet caret_pos = input.nativeElement.selectionStart;\r\n\r\n\t\tinput_val = input_val.replace(RegExp(`[^0-9${minus}${this._ds}]`, 'g'), '').replace(/^\\.\\./, '');\r\n\t\t// check for decimal\r\n\t\tif (input_val.indexOf(this._ds) >= 0) {\r\n\t\t\t// get position of first decimal\r\n\t\t\t// this prevents multiple decimals from\r\n\t\t\t// being entered\r\n\t\t\tlet decimal_pos = input_val.indexOf(this._ds);\r\n\r\n\t\t\t// split number by decimal point\r\n\t\t\tlet left_side = input_val.substring(0, decimal_pos);\r\n\t\t\tlet right_side = input_val.substring(decimal_pos);\r\n\r\n\t\t\t// add commas to left side of number\r\n\t\t\tleft_side = this._formatNumber(left_side, blur) || '';\r\n\r\n\t\t\t// no value append a zero for decimal values\r\n\t\t\tif (!left_side.length) {\r\n\t\t\t\tleft_side = '0';\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.baseUnitOnly) {\r\n\t\t\t\t// validate right side\r\n\t\t\t\tright_side = right_side.replace(/\\D/g, '');\r\n\r\n\t\t\t\t// Limit decimal to only 2 digits\r\n\t\t\t\tlet v = Number(`0.${right_side}`);\r\n\t\t\t\tif (v) {\r\n\t\t\t\t\tconst length = right_side.length > 1 ? 2 : 1;\r\n\t\t\t\t\tright_side = v.toFixed(length).substring(2, 4);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// On blur make sure 2 numbers after decimal\r\n\t\t\t\tif (blur) {\r\n\t\t\t\t\tright_side += '00';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tright_side = right_side.substring(0, 2);\r\n\r\n\t\t\t\t// join number by .\r\n\t\t\t\tinput_val = left_side + this._ds + right_side;\r\n\t\t\t} else {\r\n\t\t\t\tinput_val = left_side;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tinput_val = this._formatNumber(input_val, blur);\r\n\r\n\t\t\t// final formatting\r\n\t\t\tif (blur && !this.baseUnitOnly) {\r\n\t\t\t\tinput_val += `${this._ds}00`;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst numStr = input_val;\r\n\t\t// append the currency symbol\r\n\t\tif (!this._safari || !focus) {\r\n\t\t\tif (this._trailing) {\r\n\t\t\t\tinput_val = input_val + ' ' + this._symbol;\r\n\t\t\t} else {\r\n\t\t\t\tinput_val = this._symbol + input_val;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (negative) {\r\n\t\t\t// append the hypen back to the value if a negative value was entered\r\n\t\t\tinput_val = `-${input_val}`;\r\n\t\t}\r\n\r\n\t\tconst num = this._convert((negative ? '-' : '') + numStr);\r\n\r\n\t\t// update control value first with the number\r\n\t\tthis.change(Number(num));\r\n\r\n\t\tif (blur && num === 0) {\r\n\t\t\tinput_val = this._0Text;\r\n\t\t}\r\n\r\n\t\t// update dom with the formatted value\r\n\t\tthis._renderer.setProperty(input.nativeElement, 'value', input_val);\r\n\t\t// put caret back in the right position\r\n\t\tlet updated_len = input_val.length;\r\n\t\tif (caret_pos) {\r\n\t\t\tcaret_pos = updated_len - original_len + caret_pos;\r\n\t\t\tif (input_val.substring(caret_pos - this._symbol.length) === this._symbol && this._trailing) {\r\n\t\t\t\tcaret_pos -= this._symbol.length + 1;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!this._safari) {\r\n\t\t\tinput.nativeElement.setSelectionRange(caret_pos, caret_pos);\r\n\t\t}\r\n\t}\r\n\r\n\t// format the number into currency format\r\n\tprivate _formatNumber(n: string, blur: boolean = false) {\r\n\t\t// format number 1000000 to 1,234,567\r\n\t\tn = n.replace(/\\D/g, '');\r\n\t\tif (blur) {\r\n\t\t\tn = n.replace(/^0+/, '');\r\n\t\t}\r\n\t\treturn this._decimalPipe.transform(n, '1.0-0') as string;\r\n\t}\r\n\r\n\tprivate _convert(input: string): number {\r\n\t\tconst val = input\r\n\t\t\t.replace(this._ds, 'd')\r\n\t\t\t.replace(/[^0-9d-]/g, '')\r\n\t\t\t.replace('d', '.');\r\n\t\treturn parseFloat(val);\r\n\t}\r\n\r\n\tprivate get _0Text(): string {\r\n\t\tconst decimalStr = this.baseUnitOnly ? '' : `${this._ds}00`;\r\n\t\treturn this._trailing ? `0${decimalStr} ${this._symbol}` : `${this._symbol}0${decimalStr}`;\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { CurrencyInputDirective } from './currency-input.directive';\r\n\r\n@NgModule({\r\n\tdeclarations: [CurrencyInputDirective],\r\n\timports: [CommonModule],\r\n\texports: [CurrencyInputDirective]\r\n})\r\nexport class CurrencyInputModule {}\r\n\r\nexport { CurrencyInputDirective };\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵfindLocaleData"],"mappings":"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"}
|