@skyux/core 5.2.3 → 5.5.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/README.md +6 -4
- package/bundles/skyux-core-testing.umd.js +6 -6
- package/bundles/skyux-core.umd.js +131 -127
- package/documentation.json +293 -24
- package/esm2015/index.js +60 -0
- package/esm2015/index.js.map +1 -0
- package/esm2015/lib/modules/adapter-service/adapter.module.js +16 -0
- package/esm2015/lib/modules/adapter-service/adapter.module.js.map +1 -0
- package/esm2015/lib/modules/adapter-service/adapter.service.js +218 -0
- package/esm2015/lib/modules/adapter-service/adapter.service.js.map +1 -0
- package/esm2015/lib/modules/adapter-service/focusable-children-options.js +2 -0
- package/esm2015/lib/modules/adapter-service/focusable-children-options.js.map +1 -0
- package/esm2015/lib/modules/affix/affix-auto-fit-context.js +12 -0
- package/esm2015/lib/modules/affix/affix-auto-fit-context.js.map +1 -0
- package/esm2015/lib/modules/affix/affix-config.js +2 -0
- package/esm2015/lib/modules/affix/affix-config.js.map +1 -0
- package/esm2015/lib/modules/affix/affix-horizontal-alignment.js +2 -0
- package/esm2015/lib/modules/affix/affix-horizontal-alignment.js.map +1 -0
- package/esm2015/lib/modules/affix/affix-offset-change.js +2 -0
- package/esm2015/lib/modules/affix/affix-offset-change.js.map +1 -0
- package/esm2015/lib/modules/affix/affix-offset.js +2 -0
- package/esm2015/lib/modules/affix/affix-offset.js.map +1 -0
- package/esm2015/lib/modules/affix/affix-placement-change.js +2 -0
- package/esm2015/lib/modules/affix/affix-placement-change.js.map +1 -0
- package/esm2015/lib/modules/affix/affix-placement.js +2 -0
- package/esm2015/lib/modules/affix/affix-placement.js.map +1 -0
- package/esm2015/lib/modules/affix/affix-utils.js +18 -0
- package/esm2015/lib/modules/affix/affix-utils.js.map +1 -0
- package/esm2015/lib/modules/affix/affix-vertical-alignment.js +2 -0
- package/esm2015/lib/modules/affix/affix-vertical-alignment.js.map +1 -0
- package/esm2015/lib/modules/affix/affix.directive.js +100 -0
- package/esm2015/lib/modules/affix/affix.directive.js.map +1 -0
- package/esm2015/lib/modules/affix/affix.module.js +18 -0
- package/esm2015/lib/modules/affix/affix.module.js.map +1 -0
- package/esm2015/lib/modules/affix/affix.service.js +24 -0
- package/esm2015/lib/modules/affix/affix.service.js.map +1 -0
- package/esm2015/lib/modules/affix/affixer.js +349 -0
- package/esm2015/lib/modules/affix/affixer.js.map +1 -0
- package/esm2015/lib/modules/affix/dom-utils.js +77 -0
- package/esm2015/lib/modules/affix/dom-utils.js.map +1 -0
- package/esm2015/lib/modules/dock/dock-dom-adapter.service.js +80 -0
- package/esm2015/lib/modules/dock/dock-dom-adapter.service.js.map +1 -0
- package/esm2015/lib/modules/dock/dock-insert-component-config.js +2 -0
- package/esm2015/lib/modules/dock/dock-insert-component-config.js.map +1 -0
- package/esm2015/lib/modules/dock/dock-item-config.js +2 -0
- package/esm2015/lib/modules/dock/dock-item-config.js.map +1 -0
- package/esm2015/lib/modules/dock/dock-item-reference.js +2 -0
- package/esm2015/lib/modules/dock/dock-item-reference.js.map +1 -0
- package/esm2015/lib/modules/dock/dock-item.js +29 -0
- package/esm2015/lib/modules/dock/dock-item.js.map +1 -0
- package/esm2015/lib/modules/dock/dock-location.js +19 -0
- package/esm2015/lib/modules/dock/dock-location.js.map +1 -0
- package/esm2015/lib/modules/dock/dock-options.js +2 -0
- package/esm2015/lib/modules/dock/dock-options.js.map +1 -0
- package/esm2015/lib/modules/dock/dock.component.js +95 -0
- package/esm2015/lib/modules/dock/dock.component.js.map +1 -0
- package/esm2015/lib/modules/dock/dock.module.js +20 -0
- package/esm2015/lib/modules/dock/dock.module.js.map +1 -0
- package/esm2015/lib/modules/dock/dock.service.js +92 -0
- package/esm2015/lib/modules/dock/dock.service.js.map +1 -0
- package/esm2015/lib/modules/dock/sort-by-stack-order.js +13 -0
- package/esm2015/lib/modules/dock/sort-by-stack-order.js.map +1 -0
- package/esm2015/lib/modules/dynamic-component/dynamic-component-location.js +27 -0
- package/esm2015/lib/modules/dynamic-component/dynamic-component-location.js.map +1 -0
- package/esm2015/lib/modules/dynamic-component/dynamic-component-options.js +2 -0
- package/esm2015/lib/modules/dynamic-component/dynamic-component-options.js.map +1 -0
- package/esm2015/lib/modules/dynamic-component/dynamic-component.module.js +17 -0
- package/esm2015/lib/modules/dynamic-component/dynamic-component.module.js.map +1 -0
- package/esm2015/lib/modules/dynamic-component/dynamic-component.service.js +83 -0
- package/esm2015/lib/modules/dynamic-component/dynamic-component.service.js.map +1 -0
- package/esm2015/lib/modules/format/app-format.js +18 -0
- package/esm2015/lib/modules/format/app-format.js.map +1 -0
- package/esm2015/lib/modules/id/id.directive.js +34 -0
- package/esm2015/lib/modules/id/id.directive.js.map +1 -0
- package/esm2015/lib/modules/id/id.module.js +16 -0
- package/esm2015/lib/modules/id/id.module.js.map +1 -0
- package/esm2015/lib/modules/log/log.module.js +16 -0
- package/esm2015/lib/modules/log/log.module.js.map +1 -0
- package/esm2015/lib/modules/log/log.service.js +22 -0
- package/esm2015/lib/modules/log/log.service.js.map +1 -0
- package/esm2015/lib/modules/media-query/media-breakpoints.js +20 -0
- package/esm2015/lib/modules/media-query/media-breakpoints.js.map +1 -0
- package/esm2015/lib/modules/media-query/media-query-listener.js +2 -0
- package/esm2015/lib/modules/media-query/media-query-listener.js.map +1 -0
- package/esm2015/lib/modules/media-query/media-query.module.js +16 -0
- package/esm2015/lib/modules/media-query/media-query.module.js.map +1 -0
- package/esm2015/lib/modules/media-query/media-query.service.js +121 -0
- package/esm2015/lib/modules/media-query/media-query.service.js.map +1 -0
- package/esm2015/lib/modules/mutation/mutation-observer-service.js +16 -0
- package/esm2015/lib/modules/mutation/mutation-observer-service.js.map +1 -0
- package/esm2015/lib/modules/numeric/numeric-symbol.js +2 -0
- package/esm2015/lib/modules/numeric/numeric-symbol.js.map +1 -0
- package/esm2015/lib/modules/numeric/numeric.module.js +20 -0
- package/esm2015/lib/modules/numeric/numeric.module.js.map +1 -0
- package/esm2015/lib/modules/numeric/numeric.options.js +41 -0
- package/esm2015/lib/modules/numeric/numeric.options.js.map +1 -0
- package/esm2015/lib/modules/numeric/numeric.pipe.js +83 -0
- package/esm2015/lib/modules/numeric/numeric.pipe.js.map +1 -0
- package/esm2015/lib/modules/numeric/numeric.service.js +188 -0
- package/esm2015/lib/modules/numeric/numeric.service.js.map +1 -0
- package/esm2015/lib/modules/overlay/overlay-adapter.service.js +41 -0
- package/esm2015/lib/modules/overlay/overlay-adapter.service.js.map +1 -0
- package/esm2015/lib/modules/overlay/overlay-config.js +2 -0
- package/esm2015/lib/modules/overlay/overlay-config.js.map +1 -0
- package/esm2015/lib/modules/overlay/overlay-context.js +10 -0
- package/esm2015/lib/modules/overlay/overlay-context.js.map +1 -0
- package/esm2015/lib/modules/overlay/overlay-instance.js +55 -0
- package/esm2015/lib/modules/overlay/overlay-instance.js.map +1 -0
- package/esm2015/lib/modules/overlay/overlay.component.js +154 -0
- package/esm2015/lib/modules/overlay/overlay.component.js.map +1 -0
- package/esm2015/lib/modules/overlay/overlay.module.js +18 -0
- package/esm2015/lib/modules/overlay/overlay.module.js.map +1 -0
- package/esm2015/lib/modules/overlay/overlay.service.js +120 -0
- package/esm2015/lib/modules/overlay/overlay.service.js.map +1 -0
- package/esm2015/lib/modules/percent-pipe/percent-pipe.module.js +20 -0
- package/esm2015/lib/modules/percent-pipe/percent-pipe.module.js.map +1 -0
- package/esm2015/lib/modules/percent-pipe/percent.pipe.js +48 -0
- package/esm2015/lib/modules/percent-pipe/percent.pipe.js.map +1 -0
- package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js +163 -0
- package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js.map +1 -0
- package/esm2015/lib/modules/shared/number-format/number-format-utility.js +74 -0
- package/esm2015/lib/modules/shared/number-format/number-format-utility.js.map +1 -0
- package/esm2015/lib/modules/shared/sky-core-resources.module.js +50 -0
- package/esm2015/lib/modules/shared/sky-core-resources.module.js.map +1 -0
- package/esm2015/lib/modules/title/set-title-args.js +2 -0
- package/esm2015/lib/modules/title/set-title-args.js.map +1 -0
- package/esm2015/lib/modules/title/title.service.js +31 -0
- package/esm2015/lib/modules/title/title.service.js.map +1 -0
- package/esm2015/lib/modules/ui-config/ui-config.service.js +21 -0
- package/esm2015/lib/modules/ui-config/ui-config.service.js.map +1 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper-boundary-info.js +2 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper-boundary-info.js.map +1 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper-fixed-styles.js +2 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper-fixed-styles.js.map +1 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper-host-options.js +10 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper-host-options.js.map +1 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper-offset.js +2 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper-offset.js.map +1 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper-options.js +2 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper-options.js.map +1 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js +116 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js.map +1 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper.js +254 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper.js.map +1 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper.module.js +16 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper.module.js.map +1 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper.service.js +39 -0
- package/esm2015/lib/modules/viewkeeper/viewkeeper.service.js.map +1 -0
- package/esm2015/lib/modules/window/window-ref.js +30 -0
- package/esm2015/lib/modules/window/window-ref.js.map +1 -0
- package/esm2015/skyux-core.js +2 -2
- package/esm2015/skyux-core.js.map +1 -0
- package/esm2015/testing/mock-media-query.service.js +4 -4
- package/esm2015/testing/mock-media-query.service.js.map +1 -0
- package/esm2015/testing/mock-ui-config.service.js +4 -4
- package/esm2015/testing/mock-ui-config.service.js.map +1 -0
- package/esm2015/testing/public-api.js +1 -1
- package/esm2015/testing/public-api.js.map +1 -0
- package/esm2015/testing/skyux-core-testing.js +1 -1
- package/esm2015/testing/skyux-core-testing.js.map +1 -0
- package/fesm2015/skyux-core-testing.js +6 -6
- package/fesm2015/skyux-core-testing.js.map +1 -1
- package/fesm2015/skyux-core.js +170 -166
- package/fesm2015/skyux-core.js.map +1 -1
- package/index.d.ts +57 -0
- package/{modules → lib/modules}/adapter-service/adapter.module.d.ts +0 -0
- package/{modules → lib/modules}/adapter-service/adapter.service.d.ts +0 -0
- package/{modules → lib/modules}/adapter-service/focusable-children-options.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix-auto-fit-context.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix-config.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix-horizontal-alignment.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix-offset-change.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix-offset.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix-placement-change.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix-placement.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix-utils.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix-vertical-alignment.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix.directive.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix.module.d.ts +0 -0
- package/{modules → lib/modules}/affix/affix.service.d.ts +0 -0
- package/{modules → lib/modules}/affix/affixer.d.ts +0 -0
- package/{modules → lib/modules}/affix/dom-utils.d.ts +0 -0
- package/{modules → lib/modules}/dock/dock-dom-adapter.service.d.ts +0 -0
- package/{modules → lib/modules}/dock/dock-insert-component-config.d.ts +0 -0
- package/{modules → lib/modules}/dock/dock-item-config.d.ts +0 -0
- package/{modules → lib/modules}/dock/dock-item-reference.d.ts +0 -0
- package/{modules → lib/modules}/dock/dock-item.d.ts +0 -0
- package/{modules → lib/modules}/dock/dock-location.d.ts +0 -0
- package/{modules → lib/modules}/dock/dock-options.d.ts +0 -0
- package/{modules → lib/modules}/dock/dock.component.d.ts +0 -0
- package/{modules → lib/modules}/dock/dock.module.d.ts +0 -0
- package/{modules → lib/modules}/dock/dock.service.d.ts +0 -0
- package/{modules → lib/modules}/dock/sort-by-stack-order.d.ts +0 -0
- package/{modules → lib/modules}/dynamic-component/dynamic-component-location.d.ts +0 -0
- package/{modules → lib/modules}/dynamic-component/dynamic-component-options.d.ts +0 -0
- package/{modules → lib/modules}/dynamic-component/dynamic-component.module.d.ts +0 -0
- package/{modules → lib/modules}/dynamic-component/dynamic-component.service.d.ts +0 -0
- package/{modules → lib/modules}/format/app-format.d.ts +0 -0
- package/{modules → lib/modules}/id/id.directive.d.ts +0 -0
- package/{modules → lib/modules}/id/id.module.d.ts +0 -0
- package/{modules → lib/modules}/log/log.module.d.ts +0 -0
- package/{modules → lib/modules}/log/log.service.d.ts +0 -0
- package/{modules → lib/modules}/media-query/media-breakpoints.d.ts +0 -0
- package/{modules → lib/modules}/media-query/media-query-listener.d.ts +0 -0
- package/{modules → lib/modules}/media-query/media-query.module.d.ts +0 -0
- package/{modules → lib/modules}/media-query/media-query.service.d.ts +4 -0
- package/{modules → lib/modules}/mutation/mutation-observer-service.d.ts +0 -0
- package/{modules → lib/modules}/numeric/numeric-symbol.d.ts +0 -0
- package/{modules → lib/modules}/numeric/numeric.module.d.ts +0 -0
- package/{modules → lib/modules}/numeric/numeric.options.d.ts +2 -2
- package/{modules → lib/modules}/numeric/numeric.pipe.d.ts +2 -2
- package/{modules → lib/modules}/numeric/numeric.service.d.ts +0 -0
- package/{modules → lib/modules}/overlay/overlay-adapter.service.d.ts +0 -0
- package/{modules → lib/modules}/overlay/overlay-config.d.ts +0 -0
- package/{modules → lib/modules}/overlay/overlay-context.d.ts +0 -0
- package/{modules → lib/modules}/overlay/overlay-instance.d.ts +0 -0
- package/{modules → lib/modules}/overlay/overlay.component.d.ts +0 -0
- package/{modules → lib/modules}/overlay/overlay.module.d.ts +0 -0
- package/{modules → lib/modules}/overlay/overlay.service.d.ts +0 -0
- package/{modules → lib/modules}/percent-pipe/percent-pipe.module.d.ts +0 -0
- package/{modules → lib/modules}/percent-pipe/percent.pipe.d.ts +0 -0
- package/{modules → lib/modules}/scrollable-host/scrollable-host.service.d.ts +0 -0
- package/{modules → lib/modules}/shared/number-format/number-format-utility.d.ts +0 -0
- package/{modules → lib/modules}/shared/sky-core-resources.module.d.ts +0 -0
- package/{modules → lib/modules}/title/set-title-args.d.ts +0 -0
- package/{modules → lib/modules}/title/title.service.d.ts +0 -0
- package/{modules → lib/modules}/ui-config/ui-config.service.d.ts +0 -0
- package/{modules → lib/modules}/viewkeeper/viewkeeper-boundary-info.d.ts +0 -0
- package/{modules → lib/modules}/viewkeeper/viewkeeper-fixed-styles.d.ts +0 -0
- package/{modules → lib/modules}/viewkeeper/viewkeeper-host-options.d.ts +0 -0
- package/{modules → lib/modules}/viewkeeper/viewkeeper-offset.d.ts +0 -0
- package/{modules → lib/modules}/viewkeeper/viewkeeper-options.d.ts +0 -0
- package/{modules → lib/modules}/viewkeeper/viewkeeper.d.ts +0 -0
- package/{modules → lib/modules}/viewkeeper/viewkeeper.directive.d.ts +0 -0
- package/{modules → lib/modules}/viewkeeper/viewkeeper.module.d.ts +0 -0
- package/{modules → lib/modules}/viewkeeper/viewkeeper.service.d.ts +0 -0
- package/{modules → lib/modules}/window/window-ref.d.ts +0 -0
- package/package.json +19 -5
- package/skyux-core.d.ts +1 -1
- package/LICENSE +0 -21
- package/bundles/skyux-core-testing.umd.js.map +0 -1
- package/bundles/skyux-core.umd.js.map +0 -1
- package/esm2015/modules/adapter-service/adapter.module.js +0 -16
- package/esm2015/modules/adapter-service/adapter.service.js +0 -218
- package/esm2015/modules/adapter-service/focusable-children-options.js +0 -2
- package/esm2015/modules/affix/affix-auto-fit-context.js +0 -12
- package/esm2015/modules/affix/affix-config.js +0 -2
- package/esm2015/modules/affix/affix-horizontal-alignment.js +0 -2
- package/esm2015/modules/affix/affix-offset-change.js +0 -2
- package/esm2015/modules/affix/affix-offset.js +0 -2
- package/esm2015/modules/affix/affix-placement-change.js +0 -2
- package/esm2015/modules/affix/affix-placement.js +0 -2
- package/esm2015/modules/affix/affix-utils.js +0 -18
- package/esm2015/modules/affix/affix-vertical-alignment.js +0 -2
- package/esm2015/modules/affix/affix.directive.js +0 -98
- package/esm2015/modules/affix/affix.module.js +0 -18
- package/esm2015/modules/affix/affix.service.js +0 -24
- package/esm2015/modules/affix/affixer.js +0 -349
- package/esm2015/modules/affix/dom-utils.js +0 -77
- package/esm2015/modules/dock/dock-dom-adapter.service.js +0 -79
- package/esm2015/modules/dock/dock-insert-component-config.js +0 -2
- package/esm2015/modules/dock/dock-item-config.js +0 -2
- package/esm2015/modules/dock/dock-item-reference.js +0 -2
- package/esm2015/modules/dock/dock-item.js +0 -29
- package/esm2015/modules/dock/dock-location.js +0 -19
- package/esm2015/modules/dock/dock-options.js +0 -2
- package/esm2015/modules/dock/dock.component.js +0 -95
- package/esm2015/modules/dock/dock.module.js +0 -20
- package/esm2015/modules/dock/dock.service.js +0 -91
- package/esm2015/modules/dock/sort-by-stack-order.js +0 -13
- package/esm2015/modules/dynamic-component/dynamic-component-location.js +0 -27
- package/esm2015/modules/dynamic-component/dynamic-component-options.js +0 -2
- package/esm2015/modules/dynamic-component/dynamic-component.module.js +0 -17
- package/esm2015/modules/dynamic-component/dynamic-component.service.js +0 -82
- package/esm2015/modules/format/app-format.js +0 -18
- package/esm2015/modules/id/id.directive.js +0 -34
- package/esm2015/modules/id/id.module.js +0 -16
- package/esm2015/modules/log/log.module.js +0 -16
- package/esm2015/modules/log/log.service.js +0 -22
- package/esm2015/modules/media-query/media-breakpoints.js +0 -20
- package/esm2015/modules/media-query/media-query-listener.js +0 -2
- package/esm2015/modules/media-query/media-query.module.js +0 -16
- package/esm2015/modules/media-query/media-query.service.js +0 -117
- package/esm2015/modules/mutation/mutation-observer-service.js +0 -16
- package/esm2015/modules/numeric/numeric-symbol.js +0 -2
- package/esm2015/modules/numeric/numeric.module.js +0 -20
- package/esm2015/modules/numeric/numeric.options.js +0 -41
- package/esm2015/modules/numeric/numeric.pipe.js +0 -81
- package/esm2015/modules/numeric/numeric.service.js +0 -188
- package/esm2015/modules/overlay/overlay-adapter.service.js +0 -41
- package/esm2015/modules/overlay/overlay-config.js +0 -2
- package/esm2015/modules/overlay/overlay-context.js +0 -10
- package/esm2015/modules/overlay/overlay-instance.js +0 -55
- package/esm2015/modules/overlay/overlay.component.js +0 -152
- package/esm2015/modules/overlay/overlay.module.js +0 -18
- package/esm2015/modules/overlay/overlay.service.js +0 -119
- package/esm2015/modules/percent-pipe/percent-pipe.module.js +0 -20
- package/esm2015/modules/percent-pipe/percent.pipe.js +0 -48
- package/esm2015/modules/scrollable-host/scrollable-host.service.js +0 -161
- package/esm2015/modules/shared/number-format/number-format-utility.js +0 -74
- package/esm2015/modules/shared/sky-core-resources.module.js +0 -50
- package/esm2015/modules/title/set-title-args.js +0 -2
- package/esm2015/modules/title/title.service.js +0 -30
- package/esm2015/modules/ui-config/ui-config.service.js +0 -21
- package/esm2015/modules/viewkeeper/viewkeeper-boundary-info.js +0 -2
- package/esm2015/modules/viewkeeper/viewkeeper-fixed-styles.js +0 -2
- package/esm2015/modules/viewkeeper/viewkeeper-host-options.js +0 -10
- package/esm2015/modules/viewkeeper/viewkeeper-offset.js +0 -2
- package/esm2015/modules/viewkeeper/viewkeeper-options.js +0 -2
- package/esm2015/modules/viewkeeper/viewkeeper.directive.js +0 -113
- package/esm2015/modules/viewkeeper/viewkeeper.js +0 -254
- package/esm2015/modules/viewkeeper/viewkeeper.module.js +0 -16
- package/esm2015/modules/viewkeeper/viewkeeper.service.js +0 -38
- package/esm2015/modules/window/window-ref.js +0 -30
- package/esm2015/public-api.js +0 -60
- package/public-api.d.ts +0 -57
@@ -1,55 +0,0 @@
|
|
1
|
-
import { Subject } from 'rxjs';
|
2
|
-
/**
|
3
|
-
* Represents a new overlay instance. It is used to manage the "closed" state of the overlay,
|
4
|
-
* and access any public members on the appended content component instance.
|
5
|
-
*/
|
6
|
-
export class SkyOverlayInstance {
|
7
|
-
constructor(
|
8
|
-
/**
|
9
|
-
* The configuration for the overlay.
|
10
|
-
*/
|
11
|
-
config, componentRef) {
|
12
|
-
this.config = config;
|
13
|
-
this.componentRef = componentRef;
|
14
|
-
this._backdropClick = new Subject();
|
15
|
-
this._closed = new Subject();
|
16
|
-
this.componentRef.instance.closed.subscribe(() => {
|
17
|
-
this._closed.next();
|
18
|
-
this._closed.complete();
|
19
|
-
this._backdropClick.complete();
|
20
|
-
});
|
21
|
-
this.componentRef.instance.backdropClick.subscribe(() => {
|
22
|
-
this._backdropClick.next();
|
23
|
-
});
|
24
|
-
}
|
25
|
-
/**
|
26
|
-
* Emits when the overlay is clicked (but not its content).
|
27
|
-
*/
|
28
|
-
get backdropClick() {
|
29
|
-
return this._backdropClick.asObservable();
|
30
|
-
}
|
31
|
-
/**
|
32
|
-
* Emits after the overlay is closed.
|
33
|
-
*/
|
34
|
-
get closed() {
|
35
|
-
return this._closed.asObservable();
|
36
|
-
}
|
37
|
-
/**
|
38
|
-
* Creates and attaches a component to the overlay.
|
39
|
-
* @param component The component to attach.
|
40
|
-
* @param providers Custom providers to apply to the component.
|
41
|
-
*/
|
42
|
-
attachComponent(component, providers) {
|
43
|
-
const componentRef = this.componentRef.instance.attachComponent(component, providers);
|
44
|
-
return componentRef.instance;
|
45
|
-
}
|
46
|
-
/**
|
47
|
-
* Attaches a `TemplateRef` to the overlay.
|
48
|
-
* @param templateRef The `TemplateRef` to attach.
|
49
|
-
* @param context The context to provide to the template.
|
50
|
-
*/
|
51
|
-
attachTemplate(templateRef, context) {
|
52
|
-
this.componentRef.instance.attachTemplate(templateRef, context);
|
53
|
-
}
|
54
|
-
}
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1pbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5LWluc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNM0M7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQW1CN0I7SUFDRTs7T0FFRztJQUNhLE1BQXdCLEVBQ3hCLFlBQStDO1FBRC9DLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFtQztRQVR6RCxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFckMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFTcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQWxDRDs7T0FFRztJQUNILElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUF3QkQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FDcEIsU0FBa0IsRUFDbEIsU0FBNEI7UUFFNUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUM3RCxTQUFTLEVBQ1QsU0FBUyxDQUNWLENBQUM7UUFDRixPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxjQUFjLENBQUksV0FBMkIsRUFBRSxPQUFXO1FBQy9ELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBTdGF0aWNQcm92aWRlciwgVGVtcGxhdGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lPdmVybGF5Q29tcG9uZW50IH0gZnJvbSAnLi9vdmVybGF5LmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFNreU92ZXJsYXlDb25maWcgfSBmcm9tICcuL292ZXJsYXktY29uZmlnJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbmV3IG92ZXJsYXkgaW5zdGFuY2UuIEl0IGlzIHVzZWQgdG8gbWFuYWdlIHRoZSBcImNsb3NlZFwiIHN0YXRlIG9mIHRoZSBvdmVybGF5LFxuICogYW5kIGFjY2VzcyBhbnkgcHVibGljIG1lbWJlcnMgb24gdGhlIGFwcGVuZGVkIGNvbnRlbnQgY29tcG9uZW50IGluc3RhbmNlLlxuICovXG5leHBvcnQgY2xhc3MgU2t5T3ZlcmxheUluc3RhbmNlIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIG92ZXJsYXkgaXMgY2xpY2tlZCAoYnV0IG5vdCBpdHMgY29udGVudCkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJhY2tkcm9wQ2xpY2soKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2JhY2tkcm9wQ2xpY2suYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYWZ0ZXIgdGhlIG92ZXJsYXkgaXMgY2xvc2VkLlxuICAgKi9cbiAgcHVibGljIGdldCBjbG9zZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2JhY2tkcm9wQ2xpY2sgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2Nsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBvdmVybGF5LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjb25maWc6IFNreU92ZXJsYXlDb25maWcsXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFNreU92ZXJsYXlDb21wb25lbnQ+XG4gICkge1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fY2xvc2VkLm5leHQoKTtcbiAgICAgIHRoaXMuX2Nsb3NlZC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fYmFja2Ryb3BDbGljay5jb21wbGV0ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYmFja2Ryb3BDbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fYmFja2Ryb3BDbGljay5uZXh0KCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgYXR0YWNoZXMgYSBjb21wb25lbnQgdG8gdGhlIG92ZXJsYXkuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGNvbXBvbmVudCB0byBhdHRhY2guXG4gICAqIEBwYXJhbSBwcm92aWRlcnMgQ3VzdG9tIHByb3ZpZGVycyB0byBhcHBseSB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENvbXBvbmVudDxDPihcbiAgICBjb21wb25lbnQ6IFR5cGU8Qz4sXG4gICAgcHJvdmlkZXJzPzogU3RhdGljUHJvdmlkZXJbXVxuICApOiBDIHtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5hdHRhY2hDb21wb25lbnQoXG4gICAgICBjb21wb25lbnQsXG4gICAgICBwcm92aWRlcnNcbiAgICApO1xuICAgIHJldHVybiBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBgVGVtcGxhdGVSZWZgIHRvIHRoZSBvdmVybGF5LlxuICAgKiBAcGFyYW0gdGVtcGxhdGVSZWYgVGhlIGBUZW1wbGF0ZVJlZmAgdG8gYXR0YWNoLlxuICAgKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCB0byBwcm92aWRlIHRvIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2hUZW1wbGF0ZTxUPih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8VD4sIGNvbnRleHQ/OiBUKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYXR0YWNoVGVtcGxhdGUodGVtcGxhdGVSZWYsIGNvbnRleHQpO1xuICB9XG59XG4iXX0=
|
@@ -1,152 +0,0 @@
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ElementRef, Injector, Optional, ViewChild, ViewContainerRef, } from '@angular/core';
|
2
|
-
import { NavigationStart } from '@angular/router';
|
3
|
-
import { fromEvent, Subject } from 'rxjs';
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "../adapter-service/adapter.service";
|
7
|
-
import * as i2 from "./overlay-context";
|
8
|
-
import * as i3 from "@angular/router";
|
9
|
-
import * as i4 from "@angular/common";
|
10
|
-
/**
|
11
|
-
* Omnibar is 1000.
|
12
|
-
* See: https://github.com/blackbaud/auth-client/blob/master/src/omnibar/omnibar.ts#L139
|
13
|
-
* ---
|
14
|
-
* Modals start their z-indexes at 1040. However, each modal's z-index is a multiple of 10, so it
|
15
|
-
* will be difficult to reliably predict a z-index that will always appear above all other
|
16
|
-
* layers. Starting the z-index for overlays at a number much greater than modals will accommodate
|
17
|
-
* the most reasonable of scenarios.
|
18
|
-
* See: https://github.com/blackbaud/skyux-modals/blob/master/src/app/public/modules/modal/modal-host.service.ts#L22
|
19
|
-
* (NOTE: It should be noted that modals do not use the overlay service, which is something we
|
20
|
-
* should do in the near future to make sure z-indexes are predictable across all component
|
21
|
-
* libraries.)
|
22
|
-
*/
|
23
|
-
let uniqueZIndex = 5000;
|
24
|
-
/**
|
25
|
-
* @internal
|
26
|
-
*/
|
27
|
-
export class SkyOverlayComponent {
|
28
|
-
constructor(changeDetector, resolver, injector, coreAdapter, context, router) {
|
29
|
-
this.changeDetector = changeDetector;
|
30
|
-
this.resolver = resolver;
|
31
|
-
this.injector = injector;
|
32
|
-
this.coreAdapter = coreAdapter;
|
33
|
-
this.context = context;
|
34
|
-
this.router = router;
|
35
|
-
this.wrapperClass = '';
|
36
|
-
this.enablePointerEvents = false;
|
37
|
-
this.showBackdrop = false;
|
38
|
-
this.zIndex = `${++uniqueZIndex}`;
|
39
|
-
this.ngUnsubscribe = new Subject();
|
40
|
-
this._backdropClick = new Subject();
|
41
|
-
this._closed = new Subject();
|
42
|
-
}
|
43
|
-
get backdropClick() {
|
44
|
-
return this._backdropClick.asObservable();
|
45
|
-
}
|
46
|
-
get closed() {
|
47
|
-
return this._closed.asObservable();
|
48
|
-
}
|
49
|
-
ngOnInit() {
|
50
|
-
this.applyConfig(this.context.config);
|
51
|
-
setTimeout(() => {
|
52
|
-
this.addBackdropClickListener();
|
53
|
-
});
|
54
|
-
if (this.context.config.closeOnNavigation) {
|
55
|
-
this.addRouteListener();
|
56
|
-
}
|
57
|
-
}
|
58
|
-
ngOnDestroy() {
|
59
|
-
this.removeRouteListener();
|
60
|
-
this.ngUnsubscribe.next();
|
61
|
-
this.ngUnsubscribe.complete();
|
62
|
-
this._backdropClick.complete();
|
63
|
-
this._closed.next();
|
64
|
-
this._closed.complete();
|
65
|
-
}
|
66
|
-
attachComponent(component, providers = []) {
|
67
|
-
this.targetRef.clear();
|
68
|
-
const factory = this.resolver.resolveComponentFactory(component);
|
69
|
-
const injector = Injector.create({
|
70
|
-
providers,
|
71
|
-
parent: this.injector,
|
72
|
-
});
|
73
|
-
const componentRef = this.targetRef.createComponent(factory, undefined, injector);
|
74
|
-
// Run an initial change detection cycle after the component has been created.
|
75
|
-
componentRef.changeDetectorRef.detectChanges();
|
76
|
-
return componentRef;
|
77
|
-
}
|
78
|
-
attachTemplate(templateRef, context) {
|
79
|
-
this.targetRef.clear();
|
80
|
-
return this.targetRef.createEmbeddedView(templateRef, context);
|
81
|
-
}
|
82
|
-
applyConfig(config) {
|
83
|
-
this.wrapperClass = config.wrapperClass || '';
|
84
|
-
this.showBackdrop = config.showBackdrop;
|
85
|
-
this.enablePointerEvents = config.enablePointerEvents;
|
86
|
-
this.changeDetector.markForCheck();
|
87
|
-
}
|
88
|
-
addBackdropClickListener() {
|
89
|
-
fromEvent(window.document, 'click')
|
90
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
91
|
-
.subscribe((event) => {
|
92
|
-
const isChild = this.overlayContentRef.nativeElement.contains(event.target);
|
93
|
-
const isAbove = this.coreAdapter.isTargetAboveElement(event.target, this.overlayRef.nativeElement);
|
94
|
-
/* istanbul ignore else */
|
95
|
-
if (!isChild && !isAbove) {
|
96
|
-
this._backdropClick.next();
|
97
|
-
if (this.context.config.enableClose) {
|
98
|
-
this._closed.next();
|
99
|
-
}
|
100
|
-
}
|
101
|
-
});
|
102
|
-
}
|
103
|
-
addRouteListener() {
|
104
|
-
/*istanbul ignore else*/
|
105
|
-
if (this.router) {
|
106
|
-
this.routerSubscription = this.router.events.subscribe((event) => {
|
107
|
-
/* istanbul ignore else */
|
108
|
-
if (event instanceof NavigationStart) {
|
109
|
-
this._closed.next();
|
110
|
-
}
|
111
|
-
});
|
112
|
-
}
|
113
|
-
}
|
114
|
-
removeRouteListener() {
|
115
|
-
if (this.routerSubscription) {
|
116
|
-
this.routerSubscription.unsubscribe();
|
117
|
-
this.routerSubscription = undefined;
|
118
|
-
}
|
119
|
-
}
|
120
|
-
}
|
121
|
-
SkyOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyOverlayComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i1.SkyCoreAdapterService }, { token: i2.SkyOverlayContext }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
122
|
-
SkyOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyOverlayComponent, selector: "sky-overlay", viewQueries: [{ propertyName: "overlayContentRef", first: true, predicate: ["overlayContentRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "targetRef", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n [class]=\"wrapperClass\"\n [style.zIndex]=\"zIndex\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;top:0;right:0;left:0;bottom:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);top:0;right:0;left:0;bottom:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyOverlayComponent, decorators: [{
|
124
|
-
type: Component,
|
125
|
-
args: [{
|
126
|
-
selector: 'sky-overlay',
|
127
|
-
templateUrl: './overlay.component.html',
|
128
|
-
styleUrls: ['./overlay.component.scss'],
|
129
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
130
|
-
}]
|
131
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i1.SkyCoreAdapterService }, { type: i2.SkyOverlayContext }, { type: i3.Router, decorators: [{
|
132
|
-
type: Optional
|
133
|
-
}] }]; }, propDecorators: { overlayContentRef: [{
|
134
|
-
type: ViewChild,
|
135
|
-
args: ['overlayContentRef', {
|
136
|
-
read: ElementRef,
|
137
|
-
static: true,
|
138
|
-
}]
|
139
|
-
}], overlayRef: [{
|
140
|
-
type: ViewChild,
|
141
|
-
args: ['overlayRef', {
|
142
|
-
read: ElementRef,
|
143
|
-
static: true,
|
144
|
-
}]
|
145
|
-
}], targetRef: [{
|
146
|
-
type: ViewChild,
|
147
|
-
args: ['target', {
|
148
|
-
read: ViewContainerRef,
|
149
|
-
static: true,
|
150
|
-
}]
|
151
|
-
}] } });
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9tb2R1bGVzL292ZXJsYXkvb3ZlcmxheS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9tb2R1bGVzL292ZXJsYXkvb3ZlcmxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFHVCxVQUFVLEVBRVYsUUFBUSxFQUdSLFFBQVEsRUFJUixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFRM0M7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBRXhCOztHQUVHO0FBT0gsTUFBTSxPQUFPLG1CQUFtQjtJQTJDOUIsWUFDVSxjQUFpQyxFQUNqQyxRQUFrQyxFQUNsQyxRQUFrQixFQUNsQixXQUFrQyxFQUNsQyxPQUEwQixFQUNkLE1BQWU7UUFMM0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQWhEOUIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFVbEIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTVCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJC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QUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxTQUFTLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDdkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzswQkFrREksUUFBUTs0Q0E1QkgsaUJBQWlCO3NCQUp4QixTQUFTO3VCQUFDLG1CQUFtQixFQUFFO3dCQUM5QixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBT08sVUFBVTtzQkFKakIsU0FBUzt1QkFBQyxZQUFZLEVBQUU7d0JBQ3ZCLElBQUksRUFBRSxVQUFVO3dCQUNoQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTyxTQUFTO3NCQUpoQixTQUFTO3VCQUFDLFFBQVEsRUFBRTt3QkFDbkIsSUFBSSxFQUFFLGdCQUFnQjt3QkFDdEIsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU3RhdGljUHJvdmlkZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vYWRhcHRlci1zZXJ2aWNlL2FkYXB0ZXIuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreU92ZXJsYXlDb25maWcgfSBmcm9tICcuL292ZXJsYXktY29uZmlnJztcblxuaW1wb3J0IHsgU2t5T3ZlcmxheUNvbnRleHQgfSBmcm9tICcuL292ZXJsYXktY29udGV4dCc7XG5cbi8qKlxuICogT21uaWJhciBpcyAxMDAwLlxuICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmxhY2tiYXVkL2F1dGgtY2xpZW50L2Jsb2IvbWFzdGVyL3NyYy9vbW5pYmFyL29tbmliYXIudHMjTDEzOVxuICogLS0tXG4gKiBNb2RhbHMgc3RhcnQgdGhlaXIgei1pbmRleGVzIGF0IDEwNDAuIEhvd2V2ZXIsIGVhY2ggbW9kYWwncyB6LWluZGV4IGlzIGEgbXVsdGlwbGUgb2YgMTAsIHNvIGl0XG4gKiB3aWxsIGJlIGRpZmZpY3VsdCB0byByZWxpYWJseSBwcmVkaWN0IGEgei1pbmRleCB0aGF0IHdpbGwgYWx3YXlzIGFwcGVhciBhYm92ZSBhbGwgb3RoZXJcbiAqIGxheWVycy4gU3RhcnRpbmcgdGhlIHotaW5kZXggZm9yIG92ZXJsYXlzIGF0IGEgbnVtYmVyIG11Y2ggZ3JlYXRlciB0aGFuIG1vZGFscyB3aWxsIGFjY29tbW9kYXRlXG4gKiB0aGUgbW9zdCByZWFzb25hYmxlIG9mIHNjZW5hcmlvcy5cbiAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JsYWNrYmF1ZC9za3l1eC1tb2RhbHMvYmxvYi9tYXN0ZXIvc3JjL2FwcC9wdWJsaWMvbW9kdWxlcy9tb2RhbC9tb2RhbC1ob3N0LnNlcnZpY2UudHMjTDIyXG4gKiAoTk9URTogSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbW9kYWxzIGRvIG5vdCB1c2UgdGhlIG92ZXJsYXkgc2VydmljZSwgd2hpY2ggaXMgc29tZXRoaW5nIHdlXG4gKiBzaG91bGQgZG8gaW4gdGhlIG5lYXIgZnV0dXJlIHRvIG1ha2Ugc3VyZSB6LWluZGV4ZXMgYXJlIHByZWRpY3RhYmxlIGFjcm9zcyBhbGwgY29tcG9uZW50XG4gKiBsaWJyYXJpZXMuKVxuICovXG5sZXQgdW5pcXVlWkluZGV4ID0gNTAwMDtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LW92ZXJsYXknLFxuICB0ZW1wbGF0ZVVybDogJy4vb3ZlcmxheS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL292ZXJsYXkuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreU92ZXJsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyB3cmFwcGVyQ2xhc3MgPSAnJztcblxuICBwdWJsaWMgZ2V0IGJhY2tkcm9wQ2xpY2soKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2JhY2tkcm9wQ2xpY2suYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNsb3NlZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fY2xvc2VkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZVBvaW50ZXJFdmVudHMgPSBmYWxzZTtcblxuICBwdWJsaWMgc2hvd0JhY2tkcm9wID0gZmFsc2U7XG5cbiAgcHVibGljIHpJbmRleDogc3RyaW5nID0gYCR7Kyt1bmlxdWVaSW5kZXh9YDtcblxuICBAVmlld0NoaWxkKCdvdmVybGF5Q29udGVudFJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBvdmVybGF5Q29udGVudFJlZjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdvdmVybGF5UmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIG92ZXJsYXlSZWY6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgndGFyZ2V0Jywge1xuICAgIHJlYWQ6IFZpZXdDb250YWluZXJSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIHRhcmdldFJlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcm91dGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBfYmFja2Ryb3BDbGljayA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfY2xvc2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dDogU2t5T3ZlcmxheUNvbnRleHQsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByb3V0ZXI/OiBSb3V0ZXJcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcGx5Q29uZmlnKHRoaXMuY29udGV4dC5jb25maWcpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFkZEJhY2tkcm9wQ2xpY2tMaXN0ZW5lcigpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY29udGV4dC5jb25maWcuY2xvc2VPbk5hdmlnYXRpb24pIHtcbiAgICAgIHRoaXMuYWRkUm91dGVMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVJvdXRlTGlzdGVuZXIoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5fYmFja2Ryb3BDbGljay5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5fY2xvc2VkLm5leHQoKTtcbiAgICB0aGlzLl9jbG9zZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhdHRhY2hDb21wb25lbnQ8Qz4oXG4gICAgY29tcG9uZW50OiBUeXBlPEM+LFxuICAgIHByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSA9IFtdXG4gICk6IENvbXBvbmVudFJlZjxDPiB7XG4gICAgdGhpcy50YXJnZXRSZWYuY2xlYXIoKTtcblxuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudCk7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzLFxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy50YXJnZXRSZWYuY3JlYXRlQ29tcG9uZW50PEM+KFxuICAgICAgZmFjdG9yeSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGluamVjdG9yXG4gICAgKTtcblxuICAgIC8vIFJ1biBhbiBpbml0aWFsIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgYWZ0ZXIgdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBjcmVhdGVkLlxuICAgIGNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICB9XG5cbiAgcHVibGljIGF0dGFjaFRlbXBsYXRlPFQ+KFxuICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxUPixcbiAgICBjb250ZXh0OiBUXG4gICk6IEVtYmVkZGVkVmlld1JlZjxUPiB7XG4gICAgdGhpcy50YXJnZXRSZWYuY2xlYXIoKTtcblxuICAgIHJldHVybiB0aGlzLnRhcmdldFJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGVtcGxhdGVSZWYsIGNvbnRleHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvbmZpZyhjb25maWc6IFNreU92ZXJsYXlDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLndyYXBwZXJDbGFzcyA9IGNvbmZpZy53cmFwcGVyQ2xhc3MgfHwgJyc7XG4gICAgdGhpcy5zaG93QmFja2Ryb3AgPSBjb25maWcuc2hvd0JhY2tkcm9wO1xuICAgIHRoaXMuZW5hYmxlUG9pbnRlckV2ZW50cyA9IGNvbmZpZy5lbmFibGVQb2ludGVyRXZlbnRzO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEJhY2tkcm9wQ2xpY2tMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBmcm9tRXZlbnQod2luZG93LmRvY3VtZW50LCAnY2xpY2snKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpc0NoaWxkID0gdGhpcy5vdmVybGF5Q29udGVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKFxuICAgICAgICAgIGV2ZW50LnRhcmdldFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBpc0Fib3ZlID0gdGhpcy5jb3JlQWRhcHRlci5pc1RhcmdldEFib3ZlRWxlbWVudChcbiAgICAgICAgICBldmVudC50YXJnZXQsXG4gICAgICAgICAgdGhpcy5vdmVybGF5UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIWlzQ2hpbGQgJiYgIWlzQWJvdmUpIHtcbiAgICAgICAgICB0aGlzLl9iYWNrZHJvcENsaWNrLm5leHQoKTtcbiAgICAgICAgICBpZiAodGhpcy5jb250ZXh0LmNvbmZpZy5lbmFibGVDbG9zZSkge1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VkLm5leHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRSb3V0ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLnJvdXRlcikge1xuICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLl9jbG9zZWQubmV4dCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVJvdXRlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIFtjbGFzc109XCJ3cmFwcGVyQ2xhc3NcIlxuICBbc3R5bGUuekluZGV4XT1cInpJbmRleFwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnZW5hYmxlLXBvaW50ZXItZXZlbnRzLXBhc3MtdGhyb3VnaCc6IGVuYWJsZVBvaW50ZXJFdmVudHMsXG4gICAgJ3NreS1vdmVybGF5JzogdHJ1ZVxuICB9XCJcbiAgI292ZXJsYXlSZWZcbj5cbiAgPGRpdiBjbGFzcz1cInNreS1vdmVybGF5LWNvbnRlbnRcIiAjb3ZlcmxheUNvbnRlbnRSZWY+XG4gICAgPG5nLXRlbXBsYXRlICN0YXJnZXQ+IDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd0JhY2tkcm9wXCIgY2xhc3M9XCJza3ktb3ZlcmxheS1iYWNrZHJvcFwiPjwvZGl2PlxuPC9kaXY+XG4iXX0=
|
@@ -1,18 +0,0 @@
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
2
|
-
import { NgModule } from '@angular/core';
|
3
|
-
import { SkyOverlayComponent } from './overlay.component';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
export class SkyOverlayModule {
|
6
|
-
}
|
7
|
-
SkyOverlayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyOverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
8
|
-
SkyOverlayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyOverlayModule, declarations: [SkyOverlayComponent], imports: [CommonModule] });
|
9
|
-
SkyOverlayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyOverlayModule, imports: [[CommonModule]] });
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyOverlayModule, decorators: [{
|
11
|
-
type: NgModule,
|
12
|
-
args: [{
|
13
|
-
imports: [CommonModule],
|
14
|
-
declarations: [SkyOverlayComponent],
|
15
|
-
entryComponents: [SkyOverlayComponent],
|
16
|
-
}]
|
17
|
-
}] });
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9tb2R1bGVzL292ZXJsYXkvb3ZlcmxheS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBTzFELE1BQU0sT0FBTyxnQkFBZ0I7OzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixpQkFIWixtQkFBbUIsYUFEeEIsWUFBWTsrR0FJWCxnQkFBZ0IsWUFKbEIsQ0FBQyxZQUFZLENBQUM7NEZBSVosZ0JBQWdCO2tCQUw1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLGVBQWUsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL292ZXJsYXkuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1NreU92ZXJsYXlDb21wb25lbnRdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtTa3lPdmVybGF5Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5T3ZlcmxheU1vZHVsZSB7fVxuIl19
|
@@ -1,119 +0,0 @@
|
|
1
|
-
import { Injectable, Injector, } from '@angular/core';
|
2
|
-
import { SkyOverlayContext } from './overlay-context';
|
3
|
-
import { SkyOverlayInstance } from './overlay-instance';
|
4
|
-
import { SkyOverlayComponent } from './overlay.component';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "./overlay-adapter.service";
|
7
|
-
/**
|
8
|
-
* This service is used to create new overlays.
|
9
|
-
* @dynamic
|
10
|
-
*/
|
11
|
-
export class SkyOverlayService {
|
12
|
-
constructor(applicationRef, componentFactoryResolver, injector, adapter) {
|
13
|
-
this.applicationRef = applicationRef;
|
14
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
15
|
-
this.injector = injector;
|
16
|
-
this.adapter = adapter;
|
17
|
-
}
|
18
|
-
/**
|
19
|
-
* Creates an empty overlay. Use the returned `SkyOverlayInstance` to append content.
|
20
|
-
* @param config Configuration for the overlay.
|
21
|
-
*/
|
22
|
-
create(config) {
|
23
|
-
const settings = this.prepareConfig(config);
|
24
|
-
if (settings.enableScroll === false) {
|
25
|
-
this.adapter.restrictBodyScroll();
|
26
|
-
}
|
27
|
-
const componentRef = this.createOverlay(settings);
|
28
|
-
const instance = new SkyOverlayInstance(settings, componentRef);
|
29
|
-
instance.closed.subscribe(() => {
|
30
|
-
// Only execute the service's close method if the instance still exists.
|
31
|
-
// This is needed to address a race condition if the deprecated instance.close method is used instead.
|
32
|
-
if (SkyOverlayService.overlays.indexOf(instance) > -1) {
|
33
|
-
this.close(instance);
|
34
|
-
}
|
35
|
-
});
|
36
|
-
SkyOverlayService.overlays.push(instance);
|
37
|
-
return instance;
|
38
|
-
}
|
39
|
-
/**
|
40
|
-
* Closes (and destroys) an overlay instance.
|
41
|
-
* @param instance The instance to close.
|
42
|
-
*/
|
43
|
-
close(instance) {
|
44
|
-
this.destroyOverlay(instance);
|
45
|
-
this.applicationRef.detachView(instance.componentRef.hostView);
|
46
|
-
instance.componentRef.destroy();
|
47
|
-
// In some cases, Angular keeps dynamically-generated component's nodes in the DOM during
|
48
|
-
// unit tests. This can make querying difficult because the older DOM nodes still exist and
|
49
|
-
// produce inconsistent results.
|
50
|
-
// Angular Material's overlay appears to do the same thing:
|
51
|
-
// https://github.com/angular/components/blob/master/src/cdk/portal/dom-portal-outlet.ts#L143-L145
|
52
|
-
// (Ignoring coverage since this branch will only be hit by consumer unit tests.)
|
53
|
-
const componentElement = instance.componentRef.location.nativeElement;
|
54
|
-
/* istanbul ignore if */
|
55
|
-
if (componentElement.parentNode !== null) {
|
56
|
-
componentElement.parentNode.removeChild(componentElement);
|
57
|
-
}
|
58
|
-
}
|
59
|
-
/**
|
60
|
-
* Closes all overlay instances.
|
61
|
-
*/
|
62
|
-
closeAll() {
|
63
|
-
// The `close` event handler for each instance alters the array's length asynchronously,
|
64
|
-
// so the only "safe" index to call is zero.
|
65
|
-
while (SkyOverlayService.overlays.length > 0) {
|
66
|
-
this.close(SkyOverlayService.overlays[0]);
|
67
|
-
}
|
68
|
-
}
|
69
|
-
createOverlay(config) {
|
70
|
-
const injector = Injector.create({
|
71
|
-
parent: this.injector,
|
72
|
-
providers: [
|
73
|
-
{
|
74
|
-
provide: SkyOverlayContext,
|
75
|
-
useValue: new SkyOverlayContext(config),
|
76
|
-
},
|
77
|
-
],
|
78
|
-
});
|
79
|
-
const componentRef = this.componentFactoryResolver
|
80
|
-
.resolveComponentFactory(SkyOverlayComponent)
|
81
|
-
.create(injector);
|
82
|
-
this.applicationRef.attachView(componentRef.hostView);
|
83
|
-
const domElem = componentRef.hostView
|
84
|
-
.rootNodes[0];
|
85
|
-
document.body.appendChild(domElem);
|
86
|
-
return componentRef;
|
87
|
-
}
|
88
|
-
prepareConfig(config) {
|
89
|
-
const defaults = {
|
90
|
-
closeOnNavigation: true,
|
91
|
-
enableClose: false,
|
92
|
-
enablePointerEvents: false,
|
93
|
-
enableScroll: true,
|
94
|
-
showBackdrop: false,
|
95
|
-
wrapperClass: '',
|
96
|
-
};
|
97
|
-
return Object.assign(Object.assign({}, defaults), config);
|
98
|
-
}
|
99
|
-
destroyOverlay(instance) {
|
100
|
-
SkyOverlayService.overlays.splice(SkyOverlayService.overlays.indexOf(instance), 1);
|
101
|
-
if (instance.config.enableScroll === false) {
|
102
|
-
// Only release the body scroll if no other overlay wishes it to be disabled.
|
103
|
-
const anotherOverlayDisablesScroll = SkyOverlayService.overlays.some((o) => !o.config.enableScroll);
|
104
|
-
if (!anotherOverlayDisablesScroll) {
|
105
|
-
this.adapter.releaseBodyScroll();
|
106
|
-
}
|
107
|
-
}
|
108
|
-
}
|
109
|
-
}
|
110
|
-
SkyOverlayService.overlays = [];
|
111
|
-
SkyOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyOverlayService, deps: [{ token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i1.SkyOverlayAdapterService }], target: i0.ɵɵFactoryTarget.Injectable });
|
112
|
-
SkyOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyOverlayService, providedIn: 'root' });
|
113
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyOverlayService, decorators: [{
|
114
|
-
type: Injectable,
|
115
|
-
args: [{
|
116
|
-
providedIn: 'root',
|
117
|
-
}]
|
118
|
-
}], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i1.SkyOverlayAdapterService }]; } });
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbW9kdWxlcy9vdmVybGF5L292ZXJsYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBS0wsVUFBVSxFQUNWLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQU12QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRTFEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFDVSxjQUE4QixFQUM5Qix3QkFBa0QsRUFDbEQsUUFBa0IsRUFDbEIsT0FBaUM7UUFIakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUEwQjtJQUN4QyxDQUFDO0lBRUo7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLE1BQXlCO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUMsSUFBSSxRQUFRLENBQUMsWUFBWSxLQUFLLEtBQUssRUFBRTtZQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDbkM7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sUUFBUSxHQUFHLElBQUksa0JBQWtCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRWhFLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcs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QUssS0FBSyxFQUFFO1lBQzFDLDZFQUE2RTtZQUM3RSxNQUFNLDRCQUE0QixHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2xFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUM5QixDQUFDO1lBQ0YsSUFBSSxDQUFDLDRCQUE0QixFQUFFO2dCQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDbEM7U0FDRjtJQUNILENBQUM7O0FBNUhjLDBCQUFRLEdBQXlCLEVBQUUsQ0FBQzsrR0FEeEMsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEluamVjdGFibGUsXG4gIEluamVjdG9yLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5T3ZlcmxheUFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9vdmVybGF5LWFkYXB0ZXIuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreU92ZXJsYXlDb25maWcgfSBmcm9tICcuL292ZXJsYXktY29uZmlnJztcblxuaW1wb3J0IHsgU2t5T3ZlcmxheUNvbnRleHQgfSBmcm9tICcuL292ZXJsYXktY29udGV4dCc7XG5cbmltcG9ydCB7IFNreU92ZXJsYXlJbnN0YW5jZSB9IGZyb20gJy4vb3ZlcmxheS1pbnN0YW5jZSc7XG5cbmltcG9ydCB7IFNreU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL292ZXJsYXkuY29tcG9uZW50JztcblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgaXMgdXNlZCB0byBjcmVhdGUgbmV3IG92ZXJsYXlzLlxuICogQGR5bmFtaWNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreU92ZXJsYXlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgb3ZlcmxheXM6IFNreU92ZXJsYXlJbnN0YW5jZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGFkYXB0ZXI6IFNreU92ZXJsYXlBZGFwdGVyU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZW1wdHkgb3ZlcmxheS4gVXNlIHRoZSByZXR1cm5lZCBgU2t5T3ZlcmxheUluc3RhbmNlYCB0byBhcHBlbmQgY29udGVudC5cbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgb3ZlcmxheS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGUoY29uZmlnPzogU2t5T3ZlcmxheUNvbmZpZyk6IFNreU92ZXJsYXlJbnN0YW5jZSB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnByZXBhcmVDb25maWcoY29uZmlnKTtcblxuICAgIGlmIChzZXR0aW5ncy5lbmFibGVTY3JvbGwgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmFkYXB0ZXIucmVzdHJpY3RCb2R5U2Nyb2xsKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KHNldHRpbmdzKTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBTa3lPdmVybGF5SW5zdGFuY2Uoc2V0dGluZ3MsIGNvbXBvbmVudFJlZik7XG5cbiAgICBpbnN0YW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIC8vIE9ubHkgZXhlY3V0ZSB0aGUgc2VydmljZSdzIGNsb3NlIG1ldGhvZCBpZiB0aGUgaW5zdGFuY2Ugc3RpbGwgZXhpc3RzLlxuICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgdG8gYWRkcmVzcyBhIHJhY2UgY29uZGl0aW9uIGlmIHRoZSBkZXByZWNhdGVkIGluc3RhbmNlLmNsb3NlIG1ldGhvZCBpcyB1c2VkIGluc3RlYWQuXG4gICAgICBpZiAoU2t5T3ZlcmxheVNlcnZpY2Uub3ZlcmxheXMuaW5kZXhPZihpbnN0YW5jZSkgPiAtMSkge1xuICAgICAgICB0aGlzLmNsb3NlKGluc3RhbmNlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIFNreU92ZXJsYXlTZXJ2aWNlLm92ZXJsYXlzLnB1c2goaW5zdGFuY2UpO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyAoYW5kIGRlc3Ryb3lzKSBhbiBvdmVybGF5IGluc3RhbmNlLlxuICAgKiBAcGFyYW0gaW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIGNsb3NlLlxuICAgKi9cbiAgcHVibGljIGNsb3NlKGluc3RhbmNlOiBTa3lPdmVybGF5SW5zdGFuY2UpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KGluc3RhbmNlKTtcbiAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLmRldGFjaFZpZXcoaW5zdGFuY2UuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICBpbnN0YW5jZS5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuXG4gICAgLy8gSW4gc29tZSBjYXNlcywgQW5ndWxhciBrZWVwcyBkeW5hbWljYWxseS1nZW5lcmF0ZWQgY29tcG9uZW50J3Mgbm9kZXMgaW4gdGhlIERPTSBkdXJpbmdcbiAgICAvLyB1bml0IHRlc3RzLiBUaGlzIGNhbiBtYWtlIHF1ZXJ5aW5nIGRpZmZpY3VsdCBiZWNhdXNlIHRoZSBvbGRlciBET00gbm9kZXMgc3RpbGwgZXhpc3QgYW5kXG4gICAgLy8gcHJvZHVjZSBpbmNvbnNpc3RlbnQgcmVzdWx0cy5cbiAgICAvLyBBbmd1bGFyIE1hdGVyaWFsJ3Mgb3ZlcmxheSBhcHBlYXJzIHRvIGRvIHRoZSBzYW1lIHRoaW5nOlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL2Nkay9wb3J0YWwvZG9tLXBvcnRhbC1vdXRsZXQudHMjTDE0My1MMTQ1XG4gICAgLy8gKElnbm9yaW5nIGNvdmVyYWdlIHNpbmNlIHRoaXMgYnJhbmNoIHdpbGwgb25seSBiZSBoaXQgYnkgY29uc3VtZXIgdW5pdCB0ZXN0cy4pXG4gICAgY29uc3QgY29tcG9uZW50RWxlbWVudCA9IGluc3RhbmNlLmNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChjb21wb25lbnRFbGVtZW50LnBhcmVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbXBvbmVudEVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb21wb25lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIGFsbCBvdmVybGF5IGluc3RhbmNlcy5cbiAgICovXG4gIHB1YmxpYyBjbG9zZUFsbCgpOiB2b2lkIHtcbiAgICAvLyBUaGUgYGNsb3NlYCBldmVudCBoYW5kbGVyIGZvciBlYWNoIGluc3RhbmNlIGFsdGVycyB0aGUgYXJyYXkncyBsZW5ndGggYXN5bmNocm9ub3VzbHksXG4gICAgLy8gc28gdGhlIG9ubHkgXCJzYWZlXCIgaW5kZXggdG8gY2FsbCBpcyB6ZXJvLlxuICAgIHdoaWxlIChTa3lPdmVybGF5U2VydmljZS5vdmVybGF5cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmNsb3NlKFNreU92ZXJsYXlTZXJ2aWNlLm92ZXJsYXlzWzBdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoXG4gICAgY29uZmlnPzogU2t5T3ZlcmxheUNvbmZpZ1xuICApOiBDb21wb25lbnRSZWY8U2t5T3ZlcmxheUNvbXBvbmVudD4ge1xuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogU2t5T3ZlcmxheUNvbnRleHQsXG4gICAgICAgICAgdXNlVmFsdWU6IG5ldyBTa3lPdmVybGF5Q29udGV4dChjb25maWcpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyXG4gICAgICAucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoU2t5T3ZlcmxheUNvbXBvbmVudClcbiAgICAgIC5jcmVhdGUoaW5qZWN0b3IpO1xuXG4gICAgdGhpcy5hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG5cbiAgICBjb25zdCBkb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55PilcbiAgICAgIC5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZUNvbmZpZyhjb25maWc6IFNreU92ZXJsYXlDb25maWcpOiBTa3lPdmVybGF5Q29uZmlnIHtcbiAgICBjb25zdCBkZWZhdWx0czogU2t5T3ZlcmxheUNvbmZpZyA9IHtcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICBlbmFibGVTY3JvbGw6IHRydWUsXG4gICAgICBzaG93QmFja2Ryb3A6IGZhbHNlLFxuICAgICAgd3JhcHBlckNsYXNzOiAnJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHsgLi4uZGVmYXVsdHMsIC4uLmNvbmZpZyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95T3ZlcmxheShpbnN0YW5jZTogU2t5T3ZlcmxheUluc3RhbmNlKTogdm9pZCB7XG4gICAgU2t5T3ZlcmxheVNlcnZpY2Uub3ZlcmxheXMuc3BsaWNlKFxuICAgICAgU2t5T3ZlcmxheVNlcnZpY2Uub3ZlcmxheXMuaW5kZXhPZihpbnN0YW5jZSksXG4gICAgICAxXG4gICAgKTtcblxuICAgIGlmIChpbnN0YW5jZS5jb25maWcuZW5hYmxlU2Nyb2xsID09PSBmYWxzZSkge1xuICAgICAgLy8gT25seSByZWxlYXNlIHRoZSBib2R5IHNjcm9sbCBpZiBubyBvdGhlciBvdmVybGF5IHdpc2hlcyBpdCB0byBiZSBkaXNhYmxlZC5cbiAgICAgIGNvbnN0IGFub3RoZXJPdmVybGF5RGlzYWJsZXNTY3JvbGwgPSBTa3lPdmVybGF5U2VydmljZS5vdmVybGF5cy5zb21lKFxuICAgICAgICAobykgPT4gIW8uY29uZmlnLmVuYWJsZVNjcm9sbFxuICAgICAgKTtcbiAgICAgIGlmICghYW5vdGhlck92ZXJsYXlEaXNhYmxlc1Njcm9sbCkge1xuICAgICAgICB0aGlzLmFkYXB0ZXIucmVsZWFzZUJvZHlTY3JvbGwoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
2
|
-
import { NgModule } from '@angular/core';
|
3
|
-
import { SkyCoreResourcesModule } from '../shared/sky-core-resources.module';
|
4
|
-
import { SkyPercentPipe } from './percent.pipe';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
export class SkyPercentPipeModule {
|
7
|
-
}
|
8
|
-
SkyPercentPipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyPercentPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
9
|
-
SkyPercentPipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyPercentPipeModule, declarations: [SkyPercentPipe], imports: [CommonModule, SkyCoreResourcesModule], exports: [SkyPercentPipe] });
|
10
|
-
SkyPercentPipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyPercentPipeModule, providers: [SkyPercentPipe], imports: [[CommonModule, SkyCoreResourcesModule]] });
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyPercentPipeModule, decorators: [{
|
12
|
-
type: NgModule,
|
13
|
-
args: [{
|
14
|
-
declarations: [SkyPercentPipe],
|
15
|
-
providers: [SkyPercentPipe],
|
16
|
-
imports: [CommonModule, SkyCoreResourcesModule],
|
17
|
-
exports: [SkyPercentPipe],
|
18
|
-
}]
|
19
|
-
}] });
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyY2VudC1waXBlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL21vZHVsZXMvcGVyY2VudC1waXBlL3BlcmNlbnQtcGlwZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVFoRCxNQUFNLE9BQU8sb0JBQW9COztrSEFBcEIsb0JBQW9CO21IQUFwQixvQkFBb0IsaUJBTGhCLGNBQWMsYUFFbkIsWUFBWSxFQUFFLHNCQUFzQixhQUNwQyxjQUFjO21IQUViLG9CQUFvQixhQUpwQixDQUFDLGNBQWMsQ0FBQyxZQUNsQixDQUFDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQzs0RkFHcEMsb0JBQW9CO2tCQU5oQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDOUIsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUMzQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLENBQUM7b0JBQy9DLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lDb3JlUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1jb3JlLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lQZXJjZW50UGlwZSB9IGZyb20gJy4vcGVyY2VudC5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5UGVyY2VudFBpcGVdLFxuICBwcm92aWRlcnM6IFtTa3lQZXJjZW50UGlwZV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNreUNvcmVSZXNvdXJjZXNNb2R1bGVdLFxuICBleHBvcnRzOiBbU2t5UGVyY2VudFBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lQZXJjZW50UGlwZU1vZHVsZSB7fVxuIl19
|
@@ -1,48 +0,0 @@
|
|
1
|
-
import { Pipe } from '@angular/core';
|
2
|
-
import { SkyIntlNumberFormatStyle } from '@skyux/i18n';
|
3
|
-
import { Subject } from 'rxjs';
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
5
|
-
import { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "@skyux/i18n";
|
8
|
-
export class SkyPercentPipe {
|
9
|
-
constructor(localeProvider) {
|
10
|
-
this.localeProvider = localeProvider;
|
11
|
-
this.defaultFormat = '1.0-2';
|
12
|
-
this.defaultLocale = 'en-US';
|
13
|
-
this.ngUnsubscribe = new Subject();
|
14
|
-
this.localeProvider
|
15
|
-
.getLocaleInfo()
|
16
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
17
|
-
.subscribe((localeInfo) => {
|
18
|
-
this.defaultLocale = localeInfo.locale;
|
19
|
-
this.updateFormattedValue();
|
20
|
-
});
|
21
|
-
}
|
22
|
-
ngOnDestroy() {
|
23
|
-
this.ngUnsubscribe.next();
|
24
|
-
this.ngUnsubscribe.complete();
|
25
|
-
}
|
26
|
-
transform(value, format, locale) {
|
27
|
-
this.value = value;
|
28
|
-
this.format = format;
|
29
|
-
this.locale = locale;
|
30
|
-
this.updateFormattedValue();
|
31
|
-
return this.formattedValue;
|
32
|
-
}
|
33
|
-
updateFormattedValue() {
|
34
|
-
const locale = this.locale || this.defaultLocale;
|
35
|
-
const format = this.format || this.defaultFormat;
|
36
|
-
this.formattedValue = SkyNumberFormatUtility.formatNumber(locale, this.value, SkyIntlNumberFormatStyle.Percent, format);
|
37
|
-
}
|
38
|
-
}
|
39
|
-
SkyPercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyPercentPipe, deps: [{ token: i1.SkyAppLocaleProvider }], target: i0.ɵɵFactoryTarget.Pipe });
|
40
|
-
SkyPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyPercentPipe, name: "skyPercent", pure: false });
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyPercentPipe, decorators: [{
|
42
|
-
type: Pipe,
|
43
|
-
args: [{
|
44
|
-
name: 'skyPercent',
|
45
|
-
pure: false,
|
46
|
-
}]
|
47
|
-
}], ctorParameters: function () { return [{ type: i1.SkyAppLocaleProvider }]; } });
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyY2VudC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbW9kdWxlcy9wZXJjZW50LXBpcGUvcGVyY2VudC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRS9ELE9BQU8sRUFBd0Isd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7OztBQU12RixNQUFNLE9BQU8sY0FBYztJQWV6QixZQUFvQixjQUFvQztRQUFwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBc0I7UUFkaEQsa0JBQWEsR0FBRyxPQUFPLENBQUM7UUFJeEIsa0JBQWEsR0FBRyxPQUFPLENBQUM7UUFReEIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRzFDLElBQUksQ0FBQyxjQUFjO2FBQ2hCLGFBQWEsRUFBRTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUN2QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQWEsRUFBRSxNQUFlLEVBQUUsTUFBZTtRQUM5RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDakQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRWpELElBQUksQ0FBQyxjQUFjLEdBQUcsc0JBQXNCLENBQUMsWUFBWSxDQUN2RCxNQUFNLEVBQ04sSUFBSSxDQUFDLEtBQUssRUFDVix3QkFBd0IsQ0FBQyxPQUFPLEVBQ2hDLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQzs7NEdBbERVLGNBQWM7MEdBQWQsY0FBYzs0RkFBZCxjQUFjO2tCQUoxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uRGVzdHJveSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lBcHBMb2NhbGVQcm92aWRlciwgU2t5SW50bE51bWJlckZvcm1hdFN0eWxlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5TnVtYmVyRm9ybWF0VXRpbGl0eSB9IGZyb20gJy4uL3NoYXJlZC9udW1iZXItZm9ybWF0L251bWJlci1mb3JtYXQtdXRpbGl0eSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3NreVBlcmNlbnQnLFxuICBwdXJlOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5UGVyY2VudFBpcGUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIGRlZmF1bHRGb3JtYXQgPSAnMS4wLTInO1xuXG4gIHByaXZhdGUgZm9ybWF0OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0TG9jYWxlID0gJ2VuLVVTJztcblxuICBwcml2YXRlIGxvY2FsZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGZvcm1hdHRlZFZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2FsZVByb3ZpZGVyOiBTa3lBcHBMb2NhbGVQcm92aWRlcikge1xuICAgIHRoaXMubG9jYWxlUHJvdmlkZXJcbiAgICAgIC5nZXRMb2NhbGVJbmZvKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbykgPT4ge1xuICAgICAgICB0aGlzLmRlZmF1bHRMb2NhbGUgPSBsb2NhbGVJbmZvLmxvY2FsZTtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtYXR0ZWRWYWx1ZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgZm9ybWF0Pzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDtcbiAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZTtcblxuICAgIHRoaXMudXBkYXRlRm9ybWF0dGVkVmFsdWUoKTtcblxuICAgIHJldHVybiB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGb3JtYXR0ZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmxvY2FsZSB8fCB0aGlzLmRlZmF1bHRMb2NhbGU7XG4gICAgY29uc3QgZm9ybWF0ID0gdGhpcy5mb3JtYXQgfHwgdGhpcy5kZWZhdWx0Rm9ybWF0O1xuXG4gICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9IFNreU51bWJlckZvcm1hdFV0aWxpdHkuZm9ybWF0TnVtYmVyKFxuICAgICAgbG9jYWxlLFxuICAgICAgdGhpcy52YWx1ZSxcbiAgICAgIFNreUludGxOdW1iZXJGb3JtYXRTdHlsZS5QZXJjZW50LFxuICAgICAgZm9ybWF0XG4gICAgKTtcbiAgfVxufVxuIl19
|