@skyux/core 5.9.4 → 6.0.0-beta.10
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/documentation.json +727 -503
- package/esm2020/index.mjs +64 -0
- package/esm2020/lib/modules/adapter-service/adapter.module.mjs +16 -0
- package/esm2020/lib/modules/adapter-service/adapter.service.mjs +225 -0
- package/esm2020/lib/modules/adapter-service/focusable-children-options.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-auto-fit-context.mjs +12 -0
- package/esm2020/lib/modules/affix/affix-config.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-horizontal-alignment.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-offset-change.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-offset.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-placement-change.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-placement.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-utils.mjs +18 -0
- package/esm2020/lib/modules/affix/affix-vertical-alignment.mjs +2 -0
- package/esm2020/lib/modules/affix/affix.directive.mjs +100 -0
- package/esm2020/lib/modules/affix/affix.module.mjs +18 -0
- package/esm2020/lib/modules/affix/affix.service.mjs +24 -0
- package/esm2020/lib/modules/affix/affixer.mjs +346 -0
- package/esm2020/lib/modules/affix/dom-utils.mjs +77 -0
- package/esm2020/lib/modules/dock/dock-dom-adapter.service.mjs +80 -0
- package/esm2020/lib/modules/dock/dock-insert-component-config.mjs +2 -0
- package/esm2020/lib/modules/dock/dock-item-config.mjs +2 -0
- package/esm2020/lib/modules/dock/dock-item-reference.mjs +2 -0
- package/esm2020/lib/modules/dock/dock-item.mjs +29 -0
- package/esm2020/lib/modules/dock/dock-location.mjs +19 -0
- package/esm2020/lib/modules/dock/dock-options.mjs +2 -0
- package/esm2020/lib/modules/dock/dock.component.mjs +88 -0
- package/esm2020/lib/modules/dock/dock.module.mjs +19 -0
- package/esm2020/lib/modules/dock/dock.service.mjs +95 -0
- package/esm2020/lib/modules/dock/sort-by-stack-order.mjs +13 -0
- package/esm2020/lib/modules/dynamic-component/dynamic-component-location.mjs +27 -0
- package/esm2020/lib/modules/dynamic-component/dynamic-component-options.mjs +2 -0
- package/esm2020/lib/modules/dynamic-component/dynamic-component.module.mjs +17 -0
- package/esm2020/lib/modules/dynamic-component/dynamic-component.service.mjs +83 -0
- package/esm2020/lib/modules/format/app-format.mjs +18 -0
- package/esm2020/lib/modules/id/id.directive.mjs +34 -0
- package/esm2020/lib/modules/id/id.module.mjs +16 -0
- package/esm2020/lib/modules/log/log.module.mjs +16 -0
- package/esm2020/lib/modules/log/log.service.mjs +132 -0
- package/esm2020/lib/modules/log/types/log-deprecation-args.mjs +2 -0
- package/esm2020/lib/modules/log/types/log-level-token.mjs +6 -0
- package/esm2020/lib/modules/log/types/log-level.mjs +2 -0
- package/esm2020/lib/modules/media-query/media-breakpoints.mjs +20 -0
- package/esm2020/lib/modules/media-query/media-query-listener.mjs +2 -0
- package/esm2020/lib/modules/media-query/media-query.module.mjs +16 -0
- package/esm2020/lib/modules/media-query/media-query.service.mjs +121 -0
- package/esm2020/lib/modules/mutation/mutation-observer-service.mjs +16 -0
- package/esm2020/lib/modules/numeric/numeric-symbol.mjs +2 -0
- package/esm2020/lib/modules/numeric/numeric.module.mjs +20 -0
- package/esm2020/lib/modules/numeric/numeric.options.mjs +46 -0
- package/esm2020/lib/modules/numeric/numeric.pipe.mjs +80 -0
- package/esm2020/lib/modules/numeric/numeric.service.mjs +186 -0
- package/esm2020/lib/modules/overlay/overlay-adapter.service.mjs +41 -0
- package/esm2020/lib/modules/overlay/overlay-config.mjs +2 -0
- package/esm2020/lib/modules/overlay/overlay-context.mjs +10 -0
- package/esm2020/lib/modules/overlay/overlay-instance.mjs +55 -0
- package/esm2020/lib/modules/overlay/overlay.component.mjs +149 -0
- package/esm2020/lib/modules/overlay/overlay.module.mjs +17 -0
- package/esm2020/lib/modules/overlay/overlay.service.mjs +120 -0
- package/esm2020/lib/modules/percent-pipe/percent-pipe.module.mjs +20 -0
- package/esm2020/lib/modules/percent-pipe/percent.pipe.mjs +48 -0
- package/esm2020/lib/modules/resize-observer/resize-observer-media-query.service.mjs +117 -0
- package/esm2020/lib/modules/resize-observer/resize-observer.service.mjs +73 -0
- package/esm2020/lib/modules/scrollable-host/scrollable-host.service.mjs +184 -0
- package/esm2020/lib/modules/shared/number-format/number-format-utility.mjs +71 -0
- package/esm2020/lib/modules/shared/sky-core-resources.module.mjs +50 -0
- package/esm2020/lib/modules/title/set-title-args.mjs +2 -0
- package/esm2020/lib/modules/title/title.service.mjs +31 -0
- package/esm2020/lib/modules/ui-config/ui-config.service.mjs +21 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +2 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper-fixed-styles.mjs +2 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper-host-options.mjs +10 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper-offset.mjs +2 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper-options.mjs +2 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper.directive.mjs +116 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper.mjs +251 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper.module.mjs +16 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper.service.mjs +39 -0
- package/esm2020/lib/modules/window/window-ref.mjs +30 -0
- package/esm2020/skyux-core.mjs +5 -0
- package/esm2020/testing/mock-media-query.service.mjs +41 -0
- package/esm2020/testing/mock-ui-config.service.mjs +59 -0
- package/esm2020/testing/public-api.mjs +3 -0
- package/esm2020/testing/skyux-core-testing.mjs +5 -0
- package/fesm2015/{skyux-core-testing.js → skyux-core-testing.mjs} +7 -7
- package/fesm2015/skyux-core-testing.mjs.map +1 -0
- package/fesm2015/skyux-core.mjs +3343 -0
- package/fesm2015/skyux-core.mjs.map +1 -0
- package/fesm2020/skyux-core-testing.mjs +103 -0
- package/fesm2020/skyux-core-testing.mjs.map +1 -0
- package/{fesm2015/skyux-core.js → fesm2020/skyux-core.mjs} +270 -178
- package/fesm2020/skyux-core.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/lib/modules/log/log.service.d.ts +37 -3
- package/lib/modules/log/types/log-deprecation-args.d.ts +27 -0
- package/lib/modules/log/types/log-level-token.d.ts +6 -0
- package/lib/modules/log/types/log-level.d.ts +8 -0
- package/lib/modules/numeric/numeric.options.d.ts +6 -1
- package/lib/modules/numeric/numeric.pipe.d.ts +2 -4
- package/lib/modules/numeric/numeric.service.d.ts +2 -2
- package/lib/modules/resize-observer/resize-observer-media-query.service.d.ts +0 -1
- package/package.json +35 -11
- package/testing/package.json +5 -5
- package/bundles/skyux-core-testing.umd.js +0 -459
- package/bundles/skyux-core.umd.js +0 -3848
- package/esm2015/index.js +0 -62
- package/esm2015/index.js.map +0 -1
- package/esm2015/lib/modules/adapter-service/adapter.module.js +0 -16
- package/esm2015/lib/modules/adapter-service/adapter.module.js.map +0 -1
- package/esm2015/lib/modules/adapter-service/adapter.service.js +0 -226
- package/esm2015/lib/modules/adapter-service/adapter.service.js.map +0 -1
- package/esm2015/lib/modules/adapter-service/focusable-children-options.js +0 -2
- package/esm2015/lib/modules/adapter-service/focusable-children-options.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-auto-fit-context.js +0 -12
- package/esm2015/lib/modules/affix/affix-auto-fit-context.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-config.js +0 -2
- package/esm2015/lib/modules/affix/affix-config.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-horizontal-alignment.js +0 -2
- package/esm2015/lib/modules/affix/affix-horizontal-alignment.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-offset-change.js +0 -2
- package/esm2015/lib/modules/affix/affix-offset-change.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-offset.js +0 -2
- package/esm2015/lib/modules/affix/affix-offset.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-placement-change.js +0 -2
- package/esm2015/lib/modules/affix/affix-placement-change.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-placement.js +0 -2
- package/esm2015/lib/modules/affix/affix-placement.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-utils.js +0 -18
- package/esm2015/lib/modules/affix/affix-utils.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-vertical-alignment.js +0 -2
- package/esm2015/lib/modules/affix/affix-vertical-alignment.js.map +0 -1
- package/esm2015/lib/modules/affix/affix.directive.js +0 -100
- package/esm2015/lib/modules/affix/affix.directive.js.map +0 -1
- package/esm2015/lib/modules/affix/affix.module.js +0 -18
- package/esm2015/lib/modules/affix/affix.module.js.map +0 -1
- package/esm2015/lib/modules/affix/affix.service.js +0 -24
- package/esm2015/lib/modules/affix/affix.service.js.map +0 -1
- package/esm2015/lib/modules/affix/affixer.js +0 -349
- package/esm2015/lib/modules/affix/affixer.js.map +0 -1
- package/esm2015/lib/modules/affix/dom-utils.js +0 -77
- package/esm2015/lib/modules/affix/dom-utils.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-dom-adapter.service.js +0 -80
- package/esm2015/lib/modules/dock/dock-dom-adapter.service.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-insert-component-config.js +0 -2
- package/esm2015/lib/modules/dock/dock-insert-component-config.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-item-config.js +0 -2
- package/esm2015/lib/modules/dock/dock-item-config.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-item-reference.js +0 -2
- package/esm2015/lib/modules/dock/dock-item-reference.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-item.js +0 -29
- package/esm2015/lib/modules/dock/dock-item.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-location.js +0 -19
- package/esm2015/lib/modules/dock/dock-location.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-options.js +0 -2
- package/esm2015/lib/modules/dock/dock-options.js.map +0 -1
- package/esm2015/lib/modules/dock/dock.component.js +0 -95
- package/esm2015/lib/modules/dock/dock.component.js.map +0 -1
- package/esm2015/lib/modules/dock/dock.module.js +0 -20
- package/esm2015/lib/modules/dock/dock.module.js.map +0 -1
- package/esm2015/lib/modules/dock/dock.service.js +0 -95
- package/esm2015/lib/modules/dock/dock.service.js.map +0 -1
- package/esm2015/lib/modules/dock/sort-by-stack-order.js +0 -13
- package/esm2015/lib/modules/dock/sort-by-stack-order.js.map +0 -1
- package/esm2015/lib/modules/dynamic-component/dynamic-component-location.js +0 -27
- package/esm2015/lib/modules/dynamic-component/dynamic-component-location.js.map +0 -1
- package/esm2015/lib/modules/dynamic-component/dynamic-component-options.js +0 -2
- package/esm2015/lib/modules/dynamic-component/dynamic-component-options.js.map +0 -1
- package/esm2015/lib/modules/dynamic-component/dynamic-component.module.js +0 -17
- package/esm2015/lib/modules/dynamic-component/dynamic-component.module.js.map +0 -1
- package/esm2015/lib/modules/dynamic-component/dynamic-component.service.js +0 -83
- package/esm2015/lib/modules/dynamic-component/dynamic-component.service.js.map +0 -1
- package/esm2015/lib/modules/format/app-format.js +0 -18
- package/esm2015/lib/modules/format/app-format.js.map +0 -1
- package/esm2015/lib/modules/id/id.directive.js +0 -34
- package/esm2015/lib/modules/id/id.directive.js.map +0 -1
- package/esm2015/lib/modules/id/id.module.js +0 -16
- package/esm2015/lib/modules/id/id.module.js.map +0 -1
- package/esm2015/lib/modules/log/log.module.js +0 -16
- package/esm2015/lib/modules/log/log.module.js.map +0 -1
- package/esm2015/lib/modules/log/log.service.js +0 -23
- package/esm2015/lib/modules/log/log.service.js.map +0 -1
- package/esm2015/lib/modules/media-query/media-breakpoints.js +0 -20
- package/esm2015/lib/modules/media-query/media-breakpoints.js.map +0 -1
- package/esm2015/lib/modules/media-query/media-query-listener.js +0 -2
- package/esm2015/lib/modules/media-query/media-query-listener.js.map +0 -1
- package/esm2015/lib/modules/media-query/media-query.module.js +0 -16
- package/esm2015/lib/modules/media-query/media-query.module.js.map +0 -1
- package/esm2015/lib/modules/media-query/media-query.service.js +0 -121
- package/esm2015/lib/modules/media-query/media-query.service.js.map +0 -1
- package/esm2015/lib/modules/mutation/mutation-observer-service.js +0 -16
- package/esm2015/lib/modules/mutation/mutation-observer-service.js.map +0 -1
- package/esm2015/lib/modules/numeric/numeric-symbol.js +0 -2
- package/esm2015/lib/modules/numeric/numeric-symbol.js.map +0 -1
- package/esm2015/lib/modules/numeric/numeric.module.js +0 -20
- package/esm2015/lib/modules/numeric/numeric.module.js.map +0 -1
- package/esm2015/lib/modules/numeric/numeric.options.js +0 -41
- package/esm2015/lib/modules/numeric/numeric.options.js.map +0 -1
- package/esm2015/lib/modules/numeric/numeric.pipe.js +0 -83
- package/esm2015/lib/modules/numeric/numeric.pipe.js.map +0 -1
- package/esm2015/lib/modules/numeric/numeric.service.js +0 -189
- package/esm2015/lib/modules/numeric/numeric.service.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay-adapter.service.js +0 -41
- package/esm2015/lib/modules/overlay/overlay-adapter.service.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay-config.js +0 -2
- package/esm2015/lib/modules/overlay/overlay-config.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay-context.js +0 -10
- package/esm2015/lib/modules/overlay/overlay-context.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay-instance.js +0 -55
- package/esm2015/lib/modules/overlay/overlay-instance.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay.component.js +0 -154
- package/esm2015/lib/modules/overlay/overlay.component.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay.module.js +0 -18
- package/esm2015/lib/modules/overlay/overlay.module.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay.service.js +0 -120
- package/esm2015/lib/modules/overlay/overlay.service.js.map +0 -1
- package/esm2015/lib/modules/percent-pipe/percent-pipe.module.js +0 -20
- package/esm2015/lib/modules/percent-pipe/percent-pipe.module.js.map +0 -1
- package/esm2015/lib/modules/percent-pipe/percent.pipe.js +0 -48
- package/esm2015/lib/modules/percent-pipe/percent.pipe.js.map +0 -1
- package/esm2015/lib/modules/resize-observer/resize-observer-media-query.service.js +0 -117
- package/esm2015/lib/modules/resize-observer/resize-observer-media-query.service.js.map +0 -1
- package/esm2015/lib/modules/resize-observer/resize-observer.service.js +0 -73
- package/esm2015/lib/modules/resize-observer/resize-observer.service.js.map +0 -1
- package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js +0 -184
- package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js.map +0 -1
- package/esm2015/lib/modules/shared/number-format/number-format-utility.js +0 -72
- package/esm2015/lib/modules/shared/number-format/number-format-utility.js.map +0 -1
- package/esm2015/lib/modules/shared/sky-core-resources.module.js +0 -50
- package/esm2015/lib/modules/shared/sky-core-resources.module.js.map +0 -1
- package/esm2015/lib/modules/title/set-title-args.js +0 -2
- package/esm2015/lib/modules/title/set-title-args.js.map +0 -1
- package/esm2015/lib/modules/title/title.service.js +0 -31
- package/esm2015/lib/modules/title/title.service.js.map +0 -1
- package/esm2015/lib/modules/ui-config/ui-config.service.js +0 -21
- package/esm2015/lib/modules/ui-config/ui-config.service.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper-boundary-info.js +0 -2
- package/esm2015/lib/modules/viewkeeper/viewkeeper-boundary-info.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper-fixed-styles.js +0 -2
- package/esm2015/lib/modules/viewkeeper/viewkeeper-fixed-styles.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper-host-options.js +0 -10
- package/esm2015/lib/modules/viewkeeper/viewkeeper-host-options.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper-offset.js +0 -2
- package/esm2015/lib/modules/viewkeeper/viewkeeper-offset.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper-options.js +0 -2
- package/esm2015/lib/modules/viewkeeper/viewkeeper-options.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js +0 -116
- package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.js +0 -251
- package/esm2015/lib/modules/viewkeeper/viewkeeper.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.module.js +0 -16
- package/esm2015/lib/modules/viewkeeper/viewkeeper.module.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.service.js +0 -39
- package/esm2015/lib/modules/viewkeeper/viewkeeper.service.js.map +0 -1
- package/esm2015/lib/modules/window/window-ref.js +0 -30
- package/esm2015/lib/modules/window/window-ref.js.map +0 -1
- package/esm2015/skyux-core.js +0 -5
- package/esm2015/skyux-core.js.map +0 -1
- package/esm2015/testing/mock-media-query.service.js +0 -41
- package/esm2015/testing/mock-media-query.service.js.map +0 -1
- package/esm2015/testing/mock-ui-config.service.js +0 -59
- package/esm2015/testing/mock-ui-config.service.js.map +0 -1
- package/esm2015/testing/public-api.js +0 -3
- package/esm2015/testing/public-api.js.map +0 -1
- package/esm2015/testing/skyux-core-testing.js +0 -5
- package/esm2015/testing/skyux-core-testing.js.map +0 -1
- package/fesm2015/skyux-core-testing.js.map +0 -1
- package/fesm2015/skyux-core.js.map +0 -1
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"ui-config.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/core/src/lib/modules/ui-config/ui-config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAc,EAAE,IAAI,YAAY,EAAE,MAAM,MAAM,CAAC;;AAKtD,MAAM,OAAO,kBAAkB;IACtB,SAAS,CAAC,GAAW,EAAE,aAAmB;QAC/C,OAAO,YAAY,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED,0BAA0B;IACnB,SAAS,CAAC,GAAW,EAAE,KAAU;QACtC,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;;gHARU,kBAAkB;oHAAlB,kBAAkB,cAFjB,MAAM;4FAEP,kBAAkB;kBAH9B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB","sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { Observable, of as observableOf } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyUIConfigService {\n public getConfig(key: string, defaultConfig?: any): Observable<any> {\n return observableOf(defaultConfig);\n }\n\n /* istanbul ignore next */\n public setConfig(key: string, value: any): Observable<any> {\n return observableOf({});\n }\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"viewkeeper-boundary-info.js","sourceRoot":"","sources":["../../../../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper-boundary-info.ts"],"names":[],"mappings":"","sourcesContent":["import { SkyViewkeeperOffset } from './viewkeeper-offset';\n\nexport interface SkyViewkeeperBoundaryInfo {\n elHeight: number;\n\n spacerEl: HTMLElement;\n\n spacerId: string;\n\n boundaryBottom: number;\n\n boundaryOffset: SkyViewkeeperOffset;\n\n boundaryEl: HTMLElement;\n\n scrollLeft: number;\n\n scrollTop: number;\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"viewkeeper-fixed-styles.js","sourceRoot":"","sources":["../../../../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper-fixed-styles.ts"],"names":[],"mappings":"","sourcesContent":["export interface SkyViewkeeperFixedStyles {\n elFixedLeft: number;\n\n elFixedTop: number;\n\n elFixedWidth: number;\n}\n"]}
|
@@ -1,10 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export class SkyViewkeeperHostOptions {
|
4
|
-
}
|
5
|
-
SkyViewkeeperHostOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperHostOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
6
|
-
SkyViewkeeperHostOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperHostOptions });
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperHostOptions, decorators: [{
|
8
|
-
type: Injectable
|
9
|
-
}] });
|
10
|
-
//# sourceMappingURL=viewkeeper-host-options.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"viewkeeper-host-options.js","sourceRoot":"","sources":["../../../../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper-host-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAK3C,MAAM,OAAO,wBAAwB;;sHAAxB,wBAAwB;0HAAxB,wBAAwB;4FAAxB,wBAAwB;kBADpC,UAAU","sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\n@Injectable()\nexport class SkyViewkeeperHostOptions implements SkyViewkeeperOptions {\n public boundaryEl?: HTMLElement;\n\n public el?: HTMLElement;\n\n public scrollableHost?: HTMLElement;\n\n public setWidth?: boolean;\n\n public verticalOffset?: number;\n\n public verticalOffsetEl?: HTMLElement;\n\n public viewportMarginTop?: number;\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"viewkeeper-offset.js","sourceRoot":"","sources":["../../../../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper-offset.ts"],"names":[],"mappings":"","sourcesContent":["export interface SkyViewkeeperOffset {\n top: number;\n\n left: number;\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"viewkeeper-options.js","sourceRoot":"","sources":["../../../../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper-options.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Options for creating a viewkeeper instance.\n */\nexport interface SkyViewkeeperOptions {\n /**\n * The element that defines the bounds in which to keep the element in view. When the\n * boundary element is scrolled out of view, the viewkeeper element will be scrolled\n * out of view.\n */\n boundaryEl?: HTMLElement;\n\n /**\n * The element to keep in view.\n */\n el?: HTMLElement;\n\n /**\n * Specifies a scrollable parent which the viewkeeper resides in and should listen to and be\n * positioned within.\n */\n scrollableHost?: HTMLElement;\n\n /**\n * Specifies whether to set the width of the viewkeeper element to the width of its\n * host element. Otherwise, if the element does not have an explicit width specified,\n * the element would collapse horizontally as a result of fixing the element to the top\n * of the viewport.\n */\n setWidth?: boolean;\n\n /**\n * Reserved space in pixels above the viewkeeper element.\n */\n verticalOffset?: number;\n\n /**\n * The element under which the viewkeeper element should be fixed. Typically this is\n * another viewkeeper element that is above the current viewkeeper element in the same\n * boundary element.\n */\n verticalOffsetEl?: HTMLElement;\n\n /**\n * Reserved space in pixels at the top of the viewport.\n */\n viewportMarginTop?: number;\n}\n"]}
|
@@ -1,116 +0,0 @@
|
|
1
|
-
import { Directive, ElementRef, Input, Optional, } from '@angular/core';
|
2
|
-
import { Subject } from 'rxjs';
|
3
|
-
import { takeUntil } from 'rxjs/operators';
|
4
|
-
import { MutationObserverService } from '../mutation/mutation-observer-service';
|
5
|
-
import { SkyScrollableHostService } from '../scrollable-host/scrollable-host.service';
|
6
|
-
import { SkyViewkeeperService } from './viewkeeper.service';
|
7
|
-
import * as i0 from "@angular/core";
|
8
|
-
import * as i1 from "../mutation/mutation-observer-service";
|
9
|
-
import * as i2 from "./viewkeeper.service";
|
10
|
-
import * as i3 from "../scrollable-host/scrollable-host.service";
|
11
|
-
export class SkyViewkeeperDirective {
|
12
|
-
constructor(el, mutationObserverSvc, viewkeeperSvc, scrollableHostService) {
|
13
|
-
this.el = el;
|
14
|
-
this.mutationObserverSvc = mutationObserverSvc;
|
15
|
-
this.viewkeeperSvc = viewkeeperSvc;
|
16
|
-
this.scrollableHostService = scrollableHostService;
|
17
|
-
this.viewkeepers = [];
|
18
|
-
this.scrollableHostWatchUnsubscribe = undefined;
|
19
|
-
}
|
20
|
-
set skyViewkeeper(value) {
|
21
|
-
this._skyViewkeeper = value;
|
22
|
-
this.detectElements();
|
23
|
-
}
|
24
|
-
get skyViewkeeper() {
|
25
|
-
return this._skyViewkeeper;
|
26
|
-
}
|
27
|
-
ngOnInit() {
|
28
|
-
this.observer = this.mutationObserverSvc.create(() => this.detectElements());
|
29
|
-
this.observer.observe(this.el.nativeElement, {
|
30
|
-
childList: true,
|
31
|
-
subtree: true,
|
32
|
-
});
|
33
|
-
}
|
34
|
-
ngOnDestroy() {
|
35
|
-
this.observer.disconnect();
|
36
|
-
this.destroyViewkeepers();
|
37
|
-
}
|
38
|
-
destroyViewkeepers() {
|
39
|
-
for (const viewkeeper of this.viewkeepers) {
|
40
|
-
this.viewkeeperSvc.destroy(viewkeeper);
|
41
|
-
}
|
42
|
-
this.viewkeepers = [];
|
43
|
-
}
|
44
|
-
getViewkeeperEls() {
|
45
|
-
let viewkeeperEls;
|
46
|
-
if (this.skyViewkeeper) {
|
47
|
-
viewkeeperEls = [];
|
48
|
-
for (const item of this.skyViewkeeper) {
|
49
|
-
const matchingEls = Array.from(this.el.nativeElement.querySelectorAll(item));
|
50
|
-
viewkeeperEls = [...viewkeeperEls, ...matchingEls];
|
51
|
-
}
|
52
|
-
}
|
53
|
-
return viewkeeperEls;
|
54
|
-
}
|
55
|
-
viewkeeperElsChanged(viewkeeperEls) {
|
56
|
-
if (!viewkeeperEls !== !this.currentViewkeeperEls) {
|
57
|
-
return true;
|
58
|
-
}
|
59
|
-
if (viewkeeperEls && this.currentViewkeeperEls) {
|
60
|
-
if (viewkeeperEls.length !== this.currentViewkeeperEls.length) {
|
61
|
-
return true;
|
62
|
-
}
|
63
|
-
for (let i = 0, n = viewkeeperEls.length; i < n; i++) {
|
64
|
-
if (viewkeeperEls[i] !== this.currentViewkeeperEls[i]) {
|
65
|
-
return true;
|
66
|
-
}
|
67
|
-
}
|
68
|
-
}
|
69
|
-
return false;
|
70
|
-
}
|
71
|
-
detectElements() {
|
72
|
-
const viewkeeperEls = this.getViewkeeperEls();
|
73
|
-
if (this.viewkeeperElsChanged(viewkeeperEls)) {
|
74
|
-
if (this.scrollableHostWatchUnsubscribe) {
|
75
|
-
this.scrollableHostWatchUnsubscribe.next();
|
76
|
-
this.scrollableHostWatchUnsubscribe = new Subject();
|
77
|
-
}
|
78
|
-
else {
|
79
|
-
this.scrollableHostWatchUnsubscribe = new Subject();
|
80
|
-
}
|
81
|
-
this.scrollableHostService
|
82
|
-
.watchScrollableHost(this.el)
|
83
|
-
.pipe(takeUntil(this.scrollableHostWatchUnsubscribe))
|
84
|
-
.subscribe((scrollableHost) => {
|
85
|
-
this.destroyViewkeepers();
|
86
|
-
let previousViewkeeperEl;
|
87
|
-
for (const viewkeeperEl of viewkeeperEls) {
|
88
|
-
this.viewkeepers.push(this.viewkeeperSvc.create({
|
89
|
-
boundaryEl: this.el.nativeElement,
|
90
|
-
scrollableHost: scrollableHost instanceof HTMLElement
|
91
|
-
? scrollableHost
|
92
|
-
: undefined,
|
93
|
-
el: viewkeeperEl,
|
94
|
-
setWidth: true,
|
95
|
-
verticalOffsetEl: previousViewkeeperEl,
|
96
|
-
}));
|
97
|
-
previousViewkeeperEl = viewkeeperEl;
|
98
|
-
}
|
99
|
-
});
|
100
|
-
this.currentViewkeeperEls = viewkeeperEls;
|
101
|
-
}
|
102
|
-
}
|
103
|
-
}
|
104
|
-
SkyViewkeeperDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperDirective, deps: [{ token: i0.ElementRef }, { token: i1.MutationObserverService }, { token: i2.SkyViewkeeperService }, { token: i3.SkyScrollableHostService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
105
|
-
SkyViewkeeperDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: SkyViewkeeperDirective, selector: "[skyViewkeeper]", inputs: { skyViewkeeper: "skyViewkeeper" }, ngImport: i0 });
|
106
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperDirective, decorators: [{
|
107
|
-
type: Directive,
|
108
|
-
args: [{
|
109
|
-
selector: '[skyViewkeeper]',
|
110
|
-
}]
|
111
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.MutationObserverService }, { type: i2.SkyViewkeeperService }, { type: i3.SkyScrollableHostService, decorators: [{
|
112
|
-
type: Optional
|
113
|
-
}] }]; }, propDecorators: { skyViewkeeper: [{
|
114
|
-
type: Input
|
115
|
-
}] } });
|
116
|
-
//# sourceMappingURL=viewkeeper.directive.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"viewkeeper.directive.js","sourceRoot":"","sources":["../../../../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { MutationObserverService } from '../mutation/mutation-observer-service';\nimport { SkyScrollableHostService } from '../scrollable-host/scrollable-host.service';\n\nimport { SkyViewkeeper } from './viewkeeper';\nimport { SkyViewkeeperService } from './viewkeeper.service';\n\n@Directive({\n selector: '[skyViewkeeper]',\n})\nexport class SkyViewkeeperDirective implements OnInit, OnDestroy {\n @Input()\n public set skyViewkeeper(value: string[]) {\n this._skyViewkeeper = value;\n\n this.detectElements();\n }\n\n public get skyViewkeeper(): string[] {\n return this._skyViewkeeper;\n }\n\n private _skyViewkeeper: string[];\n\n private viewkeepers: SkyViewkeeper[] = [];\n\n private observer: MutationObserver;\n\n private currentViewkeeperEls: HTMLElement[];\n\n private scrollableHostWatchUnsubscribe: Subject<void> | undefined = undefined;\n\n constructor(\n private el: ElementRef,\n private mutationObserverSvc: MutationObserverService,\n private viewkeeperSvc: SkyViewkeeperService,\n @Optional() private scrollableHostService: SkyScrollableHostService\n ) {}\n\n public ngOnInit(): void {\n this.observer = this.mutationObserverSvc.create(() =>\n this.detectElements()\n );\n\n this.observer.observe(this.el.nativeElement, {\n childList: true,\n subtree: true,\n });\n }\n\n public ngOnDestroy(): void {\n this.observer.disconnect();\n\n this.destroyViewkeepers();\n }\n\n private destroyViewkeepers(): void {\n for (const viewkeeper of this.viewkeepers) {\n this.viewkeeperSvc.destroy(viewkeeper);\n }\n\n this.viewkeepers = [];\n }\n\n private getViewkeeperEls(): HTMLElement[] {\n let viewkeeperEls: HTMLElement[];\n\n if (this.skyViewkeeper) {\n viewkeeperEls = [];\n\n for (const item of this.skyViewkeeper) {\n const matchingEls = Array.from(\n (this.el.nativeElement as HTMLElement).querySelectorAll(item)\n ) as HTMLElement[];\n\n viewkeeperEls = [...viewkeeperEls, ...matchingEls];\n }\n }\n\n return viewkeeperEls;\n }\n\n private viewkeeperElsChanged(viewkeeperEls: HTMLElement[]): boolean {\n if (!viewkeeperEls !== !this.currentViewkeeperEls) {\n return true;\n }\n\n if (viewkeeperEls && this.currentViewkeeperEls) {\n if (viewkeeperEls.length !== this.currentViewkeeperEls.length) {\n return true;\n }\n\n for (let i = 0, n = viewkeeperEls.length; i < n; i++) {\n if (viewkeeperEls[i] !== this.currentViewkeeperEls[i]) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n private detectElements(): void {\n const viewkeeperEls = this.getViewkeeperEls();\n\n if (this.viewkeeperElsChanged(viewkeeperEls)) {\n if (this.scrollableHostWatchUnsubscribe) {\n this.scrollableHostWatchUnsubscribe.next();\n this.scrollableHostWatchUnsubscribe = new Subject();\n } else {\n this.scrollableHostWatchUnsubscribe = new Subject();\n }\n\n this.scrollableHostService\n .watchScrollableHost(this.el)\n .pipe(takeUntil(this.scrollableHostWatchUnsubscribe))\n .subscribe((scrollableHost) => {\n this.destroyViewkeepers();\n\n let previousViewkeeperEl: HTMLElement;\n\n for (const viewkeeperEl of viewkeeperEls) {\n this.viewkeepers.push(\n this.viewkeeperSvc.create({\n boundaryEl: this.el.nativeElement,\n scrollableHost:\n scrollableHost instanceof HTMLElement\n ? scrollableHost\n : undefined,\n el: viewkeeperEl,\n setWidth: true,\n verticalOffsetEl: previousViewkeeperEl,\n })\n );\n\n previousViewkeeperEl = viewkeeperEl;\n }\n });\n\n this.currentViewkeeperEls = viewkeeperEls;\n }\n }\n}\n"]}
|
@@ -1,251 +0,0 @@
|
|
1
|
-
const CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';
|
2
|
-
const EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';
|
3
|
-
let styleEl;
|
4
|
-
let nextIdIndex;
|
5
|
-
function ensureStyleEl() {
|
6
|
-
if (!styleEl) {
|
7
|
-
styleEl = document.createElement('style');
|
8
|
-
const css = document.createTextNode(`
|
9
|
-
.${CLS_VIEWKEEPER_FIXED} {
|
10
|
-
position: fixed !important;
|
11
|
-
z-index: 999;
|
12
|
-
opacity: 0.95;
|
13
|
-
overflow: hidden;
|
14
|
-
}
|
15
|
-
|
16
|
-
.sky-theme-modern .${CLS_VIEWKEEPER_FIXED} {
|
17
|
-
box-shadow: 0px 1px 8px -1px rgba(0, 0, 0, 0.3);
|
18
|
-
opacity: initial;
|
19
|
-
}
|
20
|
-
`);
|
21
|
-
styleEl.appendChild(css);
|
22
|
-
document.head.appendChild(styleEl);
|
23
|
-
}
|
24
|
-
}
|
25
|
-
function nextId() {
|
26
|
-
nextIdIndex = (nextIdIndex || 0) + 1;
|
27
|
-
return 'viewkeeper-' + nextIdIndex;
|
28
|
-
}
|
29
|
-
function getOffset(el, scrollableHost) {
|
30
|
-
const rect = el.getBoundingClientRect();
|
31
|
-
const parent = scrollableHost ? scrollableHost : document.documentElement;
|
32
|
-
return {
|
33
|
-
top: rect.top + parent.scrollTop,
|
34
|
-
left: rect.left + parent.scrollLeft,
|
35
|
-
};
|
36
|
-
}
|
37
|
-
function px(value) {
|
38
|
-
let pxValue = value ? value.toString() : '';
|
39
|
-
if (typeof value === 'number') {
|
40
|
-
pxValue = value + 'px';
|
41
|
-
}
|
42
|
-
return pxValue;
|
43
|
-
}
|
44
|
-
function setElPosition(el, left, top, width, marginTop) {
|
45
|
-
el.style.top = px(top);
|
46
|
-
el.style.left = px(left);
|
47
|
-
el.style.marginTop = px(marginTop);
|
48
|
-
/*istanbul ignore else*/
|
49
|
-
/* sanity check */
|
50
|
-
if (width !== null) {
|
51
|
-
el.style.width = px(width);
|
52
|
-
}
|
53
|
-
}
|
54
|
-
function getHeightWithMargin(el) {
|
55
|
-
const computedStyle = getComputedStyle(el);
|
56
|
-
return (el.offsetHeight +
|
57
|
-
parseInt(computedStyle.marginTop, 10) +
|
58
|
-
parseInt(computedStyle.marginBottom, 10));
|
59
|
-
}
|
60
|
-
function createCustomEvent(name) {
|
61
|
-
const evt = document.createEvent('CustomEvent');
|
62
|
-
evt.initCustomEvent(name, false, false, undefined);
|
63
|
-
return evt;
|
64
|
-
}
|
65
|
-
export class SkyViewkeeper {
|
66
|
-
constructor(options) {
|
67
|
-
options = options || /* istanbul ignore next */ {};
|
68
|
-
this.setWidth = options.setWidth;
|
69
|
-
this.id = nextId();
|
70
|
-
this.el = options.el;
|
71
|
-
this.boundaryEl = options.boundaryEl;
|
72
|
-
this.scrollableHost = options.scrollableHost;
|
73
|
-
this.verticalOffset = options.verticalOffset || 0;
|
74
|
-
this.verticalOffsetEl = options.verticalOffsetEl;
|
75
|
-
this.viewportMarginTop = options.viewportMarginTop || 0;
|
76
|
-
this.syncElPositionHandler = () => this.syncElPosition();
|
77
|
-
if (this.verticalOffsetEl) {
|
78
|
-
this.verticalOffsetEl.addEventListener(EVT_AFTER_VIEWKEEPER_SYNC, this.syncElPositionHandler);
|
79
|
-
}
|
80
|
-
window.addEventListener('scroll', this.syncElPositionHandler, true);
|
81
|
-
window.addEventListener('resize', this.syncElPositionHandler);
|
82
|
-
window.addEventListener('orientationchange', this.syncElPositionHandler);
|
83
|
-
ensureStyleEl();
|
84
|
-
this.syncElPosition();
|
85
|
-
}
|
86
|
-
set viewportMarginTop(margin) {
|
87
|
-
this._viewportMarginTop = margin;
|
88
|
-
}
|
89
|
-
get viewportMarginTop() {
|
90
|
-
if (this.scrollableHost) {
|
91
|
-
return 0;
|
92
|
-
}
|
93
|
-
else {
|
94
|
-
return this._viewportMarginTop;
|
95
|
-
}
|
96
|
-
}
|
97
|
-
syncElPosition() {
|
98
|
-
const verticalOffset = this.calculateVerticalOffset();
|
99
|
-
// When the element isn't visible, its size can't be calculated, so don't attempt syncing position in this case.
|
100
|
-
if (this.el.offsetWidth === 0 && this.el.offsetHeight === 0) {
|
101
|
-
return;
|
102
|
-
}
|
103
|
-
const boundaryInfo = this.getBoundaryInfo();
|
104
|
-
const fixedStyles = this.getFixedStyles(boundaryInfo, verticalOffset);
|
105
|
-
const doFixEl = this.shouldFixEl(boundaryInfo, verticalOffset);
|
106
|
-
if (this.needsUpdating(doFixEl, fixedStyles)) {
|
107
|
-
if (doFixEl) {
|
108
|
-
this.fixEl(boundaryInfo, fixedStyles);
|
109
|
-
}
|
110
|
-
else {
|
111
|
-
this.unfixEl();
|
112
|
-
}
|
113
|
-
}
|
114
|
-
const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);
|
115
|
-
this.el.dispatchEvent(evt);
|
116
|
-
}
|
117
|
-
destroy() {
|
118
|
-
if (!this.isDestroyed) {
|
119
|
-
window.removeEventListener('scroll', this.syncElPositionHandler, true);
|
120
|
-
window.removeEventListener('resize', this.syncElPositionHandler);
|
121
|
-
window.removeEventListener('orientationchange', this.syncElPositionHandler);
|
122
|
-
this.unfixEl();
|
123
|
-
if (this.verticalOffsetEl) {
|
124
|
-
this.verticalOffsetEl.removeEventListener(EVT_AFTER_VIEWKEEPER_SYNC, this.syncElPositionHandler);
|
125
|
-
}
|
126
|
-
this.el = this.boundaryEl = this.verticalOffsetEl = undefined;
|
127
|
-
this.isDestroyed = true;
|
128
|
-
}
|
129
|
-
}
|
130
|
-
getSpacerId() {
|
131
|
-
return this.id + '-spacer';
|
132
|
-
}
|
133
|
-
unfixEl() {
|
134
|
-
const spacerEl = document.getElementById(this.getSpacerId());
|
135
|
-
if (spacerEl) {
|
136
|
-
spacerEl.parentElement.removeChild(spacerEl);
|
137
|
-
}
|
138
|
-
this.el.classList.remove(CLS_VIEWKEEPER_FIXED);
|
139
|
-
this.currentElFixedLeft =
|
140
|
-
this.currentElFixedTop =
|
141
|
-
this.currentElFixedWidth =
|
142
|
-
undefined;
|
143
|
-
let width;
|
144
|
-
if (this.setWidth) {
|
145
|
-
width = 'auto';
|
146
|
-
}
|
147
|
-
setElPosition(this.el, '', '', width, '');
|
148
|
-
}
|
149
|
-
calculateVerticalOffset() {
|
150
|
-
let offset = this.verticalOffset;
|
151
|
-
if (this.verticalOffsetEl) {
|
152
|
-
const verticalOffsetElTopStyle = this.verticalOffsetEl.style.top;
|
153
|
-
const verticalOffsetElTop = parseInt(verticalOffsetElTopStyle, 10) || 0;
|
154
|
-
offset += this.verticalOffsetEl.offsetHeight + verticalOffsetElTop;
|
155
|
-
}
|
156
|
-
else if (this.scrollableHost) {
|
157
|
-
offset += this.scrollableHost.getBoundingClientRect().top;
|
158
|
-
}
|
159
|
-
return offset;
|
160
|
-
}
|
161
|
-
shouldFixEl(boundaryInfo, verticalOffset) {
|
162
|
-
let anchorTop;
|
163
|
-
if (boundaryInfo.spacerEl) {
|
164
|
-
anchorTop = getOffset(boundaryInfo.spacerEl, this.scrollableHost).top;
|
165
|
-
}
|
166
|
-
else {
|
167
|
-
anchorTop = getOffset(this.el, this.scrollableHost).top;
|
168
|
-
}
|
169
|
-
const doFixEl = boundaryInfo.scrollTop + verticalOffset + this.viewportMarginTop >
|
170
|
-
anchorTop;
|
171
|
-
return doFixEl;
|
172
|
-
}
|
173
|
-
getFixedStyles(boundaryInfo, verticalOffset) {
|
174
|
-
// If the element needs to be fixed, this will calculate its position. The position
|
175
|
-
// will be 0 (fully visible) unless the user is scrolling the boundary out of view.
|
176
|
-
// In that case, the element should begin to scroll out of view with the
|
177
|
-
// rest of the boundary by setting its top position to a negative value.
|
178
|
-
const elFixedTop = Math.min(boundaryInfo.boundaryBottom -
|
179
|
-
boundaryInfo.elHeight -
|
180
|
-
boundaryInfo.scrollTop, verticalOffset);
|
181
|
-
const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;
|
182
|
-
const elFixedLeft = boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;
|
183
|
-
return {
|
184
|
-
elFixedLeft,
|
185
|
-
elFixedTop,
|
186
|
-
elFixedWidth,
|
187
|
-
};
|
188
|
-
}
|
189
|
-
needsUpdating(doFixEl, fixedStyles) {
|
190
|
-
if ((doFixEl &&
|
191
|
-
this.currentElFixedLeft === fixedStyles.elFixedLeft &&
|
192
|
-
this.currentElFixedTop === fixedStyles.elFixedTop &&
|
193
|
-
this.currentElFixedWidth === fixedStyles.elFixedWidth) ||
|
194
|
-
(!doFixEl &&
|
195
|
-
!(this.currentElFixedLeft !== undefined &&
|
196
|
-
this.currentElFixedLeft !== null))) {
|
197
|
-
// The element is either currently fixed and its position and width do not need
|
198
|
-
// to change, or the element is not currently fixed and does not need to be fixed.
|
199
|
-
// No changes are needed.
|
200
|
-
return false;
|
201
|
-
}
|
202
|
-
return true;
|
203
|
-
}
|
204
|
-
fixEl(boundaryInfo, fixedStyles) {
|
205
|
-
const el = this.el;
|
206
|
-
/* istanbul ignore else */
|
207
|
-
/* sanity check */
|
208
|
-
if (!boundaryInfo.spacerEl) {
|
209
|
-
const spacerHeight = boundaryInfo.elHeight;
|
210
|
-
const spacerEl = document.createElement('div');
|
211
|
-
spacerEl.id = boundaryInfo.spacerId;
|
212
|
-
spacerEl.style.height = px(spacerHeight);
|
213
|
-
el.parentNode.insertBefore(spacerEl, el.nextSibling);
|
214
|
-
}
|
215
|
-
el.classList.add(CLS_VIEWKEEPER_FIXED);
|
216
|
-
this.currentElFixedTop = fixedStyles.elFixedTop;
|
217
|
-
this.currentElFixedLeft = fixedStyles.elFixedLeft;
|
218
|
-
this.currentElFixedWidth = fixedStyles.elFixedWidth;
|
219
|
-
let width;
|
220
|
-
if (this.setWidth) {
|
221
|
-
width = fixedStyles.elFixedWidth;
|
222
|
-
}
|
223
|
-
setElPosition(el, fixedStyles.elFixedLeft, fixedStyles.elFixedTop, width, this.viewportMarginTop);
|
224
|
-
}
|
225
|
-
getBoundaryInfo() {
|
226
|
-
const spacerId = this.getSpacerId();
|
227
|
-
const spacerEl = document.getElementById(spacerId);
|
228
|
-
const boundaryEl = this.boundaryEl;
|
229
|
-
const boundaryOffset = getOffset(boundaryEl, this.scrollableHost);
|
230
|
-
const boundaryTop = boundaryOffset.top;
|
231
|
-
const boundaryBottom = boundaryTop + boundaryEl.getBoundingClientRect().height;
|
232
|
-
const scrollLeft = this.scrollableHost
|
233
|
-
? this.scrollableHost.scrollLeft
|
234
|
-
: document.documentElement.scrollLeft;
|
235
|
-
const scrollTop = this.scrollableHost
|
236
|
-
? this.scrollableHost.scrollTop
|
237
|
-
: document.documentElement.scrollTop;
|
238
|
-
const elHeight = getHeightWithMargin(this.el);
|
239
|
-
return {
|
240
|
-
boundaryBottom,
|
241
|
-
boundaryOffset,
|
242
|
-
boundaryEl,
|
243
|
-
elHeight,
|
244
|
-
scrollLeft,
|
245
|
-
scrollTop,
|
246
|
-
spacerId,
|
247
|
-
spacerEl,
|
248
|
-
};
|
249
|
-
}
|
250
|
-
}
|
251
|
-
//# sourceMappingURL=viewkeeper.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"viewkeeper.js","sourceRoot":"","sources":["../../../../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.ts"],"names":[],"mappings":"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","sourcesContent":["import { SkyViewkeeperBoundaryInfo } from './viewkeeper-boundary-info';\nimport { SkyViewkeeperFixedStyles } from './viewkeeper-fixed-styles';\nimport { SkyViewkeeperOffset } from './viewkeeper-offset';\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\nconst CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';\nconst EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';\n\nlet styleEl: HTMLStyleElement;\nlet nextIdIndex: number;\n\nfunction ensureStyleEl(): void {\n if (!styleEl) {\n styleEl = document.createElement('style');\n\n const css = document.createTextNode(`\n.${CLS_VIEWKEEPER_FIXED} {\n position: fixed !important;\n z-index: 999;\n opacity: 0.95;\n overflow: hidden;\n}\n\n.sky-theme-modern .${CLS_VIEWKEEPER_FIXED} {\n box-shadow: 0px 1px 8px -1px rgba(0, 0, 0, 0.3);\n opacity: initial;\n}\n`);\n\n styleEl.appendChild(css);\n\n document.head.appendChild(styleEl);\n }\n}\n\nfunction nextId(): string {\n nextIdIndex = (nextIdIndex || 0) + 1;\n\n return 'viewkeeper-' + nextIdIndex;\n}\n\nfunction getOffset(\n el: HTMLElement,\n scrollableHost?: HTMLElement\n): SkyViewkeeperOffset {\n const rect = el.getBoundingClientRect();\n const parent = scrollableHost ? scrollableHost : document.documentElement;\n\n return {\n top: rect.top + parent.scrollTop,\n left: rect.left + parent.scrollLeft,\n };\n}\n\nfunction px(value: number | string): string {\n let pxValue = value ? value.toString() : '';\n\n if (typeof value === 'number') {\n pxValue = value + 'px';\n }\n\n return pxValue;\n}\n\nfunction setElPosition(\n el: HTMLElement,\n left: number | string,\n top: number | string,\n width: number | string,\n marginTop: number | string\n): void {\n el.style.top = px(top);\n el.style.left = px(left);\n el.style.marginTop = px(marginTop);\n\n /*istanbul ignore else*/\n /* sanity check */\n if (width !== null) {\n el.style.width = px(width);\n }\n}\n\nfunction getHeightWithMargin(el: HTMLElement): number {\n const computedStyle = getComputedStyle(el);\n\n return (\n el.offsetHeight +\n parseInt(computedStyle.marginTop, 10) +\n parseInt(computedStyle.marginBottom, 10)\n );\n}\n\nfunction createCustomEvent(name: any): CustomEvent<any> {\n const evt = document.createEvent('CustomEvent');\n\n evt.initCustomEvent(name, false, false, undefined);\n\n return evt;\n}\n\nexport class SkyViewkeeper {\n private setWidth: boolean;\n\n private id: string;\n\n private el: HTMLElement;\n\n private boundaryEl: HTMLElement;\n\n private verticalOffset: number;\n\n private verticalOffsetEl: HTMLElement;\n\n private set viewportMarginTop(margin: number) {\n this._viewportMarginTop = margin;\n }\n\n private get viewportMarginTop(): number {\n if (this.scrollableHost) {\n return 0;\n } else {\n return this._viewportMarginTop;\n }\n }\n\n private isDestroyed: boolean;\n\n private currentElFixedTop: number;\n\n private currentElFixedLeft: number;\n\n private currentElFixedWidth: number;\n\n private scrollableHost: HTMLElement;\n\n private syncElPositionHandler: () => void;\n\n private _viewportMarginTop: number;\n\n constructor(options: SkyViewkeeperOptions) {\n options = options || /* istanbul ignore next */ {};\n\n this.setWidth = options.setWidth;\n this.id = nextId();\n this.el = options.el;\n this.boundaryEl = options.boundaryEl;\n this.scrollableHost = options.scrollableHost;\n this.verticalOffset = options.verticalOffset || 0;\n this.verticalOffsetEl = options.verticalOffsetEl;\n this.viewportMarginTop = options.viewportMarginTop || 0;\n\n this.syncElPositionHandler = () => this.syncElPosition();\n\n if (this.verticalOffsetEl) {\n this.verticalOffsetEl.addEventListener(\n EVT_AFTER_VIEWKEEPER_SYNC,\n this.syncElPositionHandler\n );\n }\n\n window.addEventListener('scroll', this.syncElPositionHandler, true);\n window.addEventListener('resize', this.syncElPositionHandler);\n window.addEventListener('orientationchange', this.syncElPositionHandler);\n\n ensureStyleEl();\n\n this.syncElPosition();\n }\n\n public syncElPosition(): void {\n const verticalOffset = this.calculateVerticalOffset();\n\n // When the element isn't visible, its size can't be calculated, so don't attempt syncing position in this case.\n if (this.el.offsetWidth === 0 && this.el.offsetHeight === 0) {\n return;\n }\n\n const boundaryInfo = this.getBoundaryInfo();\n const fixedStyles = this.getFixedStyles(boundaryInfo, verticalOffset);\n\n const doFixEl = this.shouldFixEl(boundaryInfo, verticalOffset);\n\n if (this.needsUpdating(doFixEl, fixedStyles)) {\n if (doFixEl) {\n this.fixEl(boundaryInfo, fixedStyles);\n } else {\n this.unfixEl();\n }\n }\n\n const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);\n\n this.el.dispatchEvent(evt);\n }\n\n public destroy(): void {\n if (!this.isDestroyed) {\n window.removeEventListener('scroll', this.syncElPositionHandler, true);\n window.removeEventListener('resize', this.syncElPositionHandler);\n window.removeEventListener(\n 'orientationchange',\n this.syncElPositionHandler\n );\n\n this.unfixEl();\n\n if (this.verticalOffsetEl) {\n this.verticalOffsetEl.removeEventListener(\n EVT_AFTER_VIEWKEEPER_SYNC,\n this.syncElPositionHandler\n );\n }\n\n this.el = this.boundaryEl = this.verticalOffsetEl = undefined;\n\n this.isDestroyed = true;\n }\n }\n\n private getSpacerId(): string {\n return this.id + '-spacer';\n }\n\n private unfixEl(): void {\n const spacerEl = document.getElementById(this.getSpacerId());\n\n if (spacerEl) {\n spacerEl.parentElement.removeChild(spacerEl);\n }\n\n this.el.classList.remove(CLS_VIEWKEEPER_FIXED);\n\n this.currentElFixedLeft =\n this.currentElFixedTop =\n this.currentElFixedWidth =\n undefined;\n\n let width: string;\n\n if (this.setWidth) {\n width = 'auto';\n }\n\n setElPosition(this.el, '', '', width, '');\n }\n\n private calculateVerticalOffset(): number {\n let offset = this.verticalOffset;\n\n if (this.verticalOffsetEl) {\n const verticalOffsetElTopStyle = this.verticalOffsetEl.style.top;\n const verticalOffsetElTop = parseInt(verticalOffsetElTopStyle, 10) || 0;\n\n offset += this.verticalOffsetEl.offsetHeight + verticalOffsetElTop;\n } else if (this.scrollableHost) {\n offset += this.scrollableHost.getBoundingClientRect().top;\n }\n\n return offset;\n }\n\n private shouldFixEl(\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n verticalOffset: number\n ): boolean {\n let anchorTop: number;\n\n if (boundaryInfo.spacerEl) {\n anchorTop = getOffset(boundaryInfo.spacerEl, this.scrollableHost).top;\n } else {\n anchorTop = getOffset(this.el, this.scrollableHost).top;\n }\n\n const doFixEl =\n boundaryInfo.scrollTop + verticalOffset + this.viewportMarginTop >\n anchorTop;\n\n return doFixEl;\n }\n\n private getFixedStyles(\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n verticalOffset: number\n ): SkyViewkeeperFixedStyles {\n // If the element needs to be fixed, this will calculate its position. The position\n // will be 0 (fully visible) unless the user is scrolling the boundary out of view.\n // In that case, the element should begin to scroll out of view with the\n // rest of the boundary by setting its top position to a negative value.\n const elFixedTop = Math.min(\n boundaryInfo.boundaryBottom -\n boundaryInfo.elHeight -\n boundaryInfo.scrollTop,\n verticalOffset\n );\n\n const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;\n const elFixedLeft =\n boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;\n\n return {\n elFixedLeft,\n elFixedTop,\n elFixedWidth,\n };\n }\n\n private needsUpdating(\n doFixEl: boolean,\n fixedStyles: SkyViewkeeperFixedStyles\n ): boolean {\n if (\n (doFixEl &&\n this.currentElFixedLeft === fixedStyles.elFixedLeft &&\n this.currentElFixedTop === fixedStyles.elFixedTop &&\n this.currentElFixedWidth === fixedStyles.elFixedWidth) ||\n (!doFixEl &&\n !(\n this.currentElFixedLeft !== undefined &&\n this.currentElFixedLeft !== null\n ))\n ) {\n // The element is either currently fixed and its position and width do not need\n // to change, or the element is not currently fixed and does not need to be fixed.\n // No changes are needed.\n return false;\n }\n\n return true;\n }\n\n private fixEl(\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n fixedStyles: SkyViewkeeperFixedStyles\n ): void {\n const el = this.el;\n\n /* istanbul ignore else */\n /* sanity check */\n if (!boundaryInfo.spacerEl) {\n const spacerHeight = boundaryInfo.elHeight;\n\n const spacerEl = document.createElement('div');\n spacerEl.id = boundaryInfo.spacerId;\n spacerEl.style.height = px(spacerHeight);\n\n el.parentNode.insertBefore(spacerEl, el.nextSibling);\n }\n\n el.classList.add(CLS_VIEWKEEPER_FIXED);\n\n this.currentElFixedTop = fixedStyles.elFixedTop;\n this.currentElFixedLeft = fixedStyles.elFixedLeft;\n this.currentElFixedWidth = fixedStyles.elFixedWidth;\n\n let width: number;\n\n if (this.setWidth) {\n width = fixedStyles.elFixedWidth;\n }\n\n setElPosition(\n el,\n fixedStyles.elFixedLeft,\n fixedStyles.elFixedTop,\n width,\n this.viewportMarginTop\n );\n }\n\n private getBoundaryInfo(): SkyViewkeeperBoundaryInfo {\n const spacerId = this.getSpacerId();\n\n const spacerEl = document.getElementById(spacerId);\n\n const boundaryEl = this.boundaryEl;\n\n const boundaryOffset = getOffset(boundaryEl, this.scrollableHost);\n const boundaryTop = boundaryOffset.top;\n const boundaryBottom =\n boundaryTop + boundaryEl.getBoundingClientRect().height;\n\n const scrollLeft = this.scrollableHost\n ? this.scrollableHost.scrollLeft\n : document.documentElement.scrollLeft;\n const scrollTop = this.scrollableHost\n ? this.scrollableHost.scrollTop\n : document.documentElement.scrollTop;\n\n const elHeight = getHeightWithMargin(this.el);\n\n return {\n boundaryBottom,\n boundaryOffset,\n boundaryEl,\n elHeight,\n scrollLeft,\n scrollTop,\n spacerId,\n spacerEl,\n };\n }\n}\n"]}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import { NgModule } from '@angular/core';
|
2
|
-
import { SkyViewkeeperDirective } from './viewkeeper.directive';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class SkyViewkeeperModule {
|
5
|
-
}
|
6
|
-
SkyViewkeeperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
7
|
-
SkyViewkeeperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperModule, declarations: [SkyViewkeeperDirective], exports: [SkyViewkeeperDirective] });
|
8
|
-
SkyViewkeeperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperModule });
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperModule, decorators: [{
|
10
|
-
type: NgModule,
|
11
|
-
args: [{
|
12
|
-
declarations: [SkyViewkeeperDirective],
|
13
|
-
exports: [SkyViewkeeperDirective],
|
14
|
-
}]
|
15
|
-
}] });
|
16
|
-
//# sourceMappingURL=viewkeeper.module.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"viewkeeper.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;;AAMhE,MAAM,OAAO,mBAAmB;;iHAAnB,mBAAmB;kHAAnB,mBAAmB,iBAHf,sBAAsB,aAC3B,sBAAsB;kHAErB,mBAAmB;4FAAnB,mBAAmB;kBAJ/B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;iBAClC","sourcesContent":["import { NgModule } from '@angular/core';\n\nimport { SkyViewkeeperDirective } from './viewkeeper.directive';\n\n@NgModule({\n declarations: [SkyViewkeeperDirective],\n exports: [SkyViewkeeperDirective],\n})\nexport class SkyViewkeeperModule {}\n"]}
|
@@ -1,39 +0,0 @@
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
2
|
-
import { SkyViewkeeper } from './viewkeeper';
|
3
|
-
import { SkyViewkeeperHostOptions } from './viewkeeper-host-options';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "./viewkeeper-host-options";
|
6
|
-
/**
|
7
|
-
* Provides methods for creating and destroying viewkeeper instances.
|
8
|
-
*/
|
9
|
-
export class SkyViewkeeperService {
|
10
|
-
constructor(hostOptions) {
|
11
|
-
this.hostOptions = hostOptions;
|
12
|
-
}
|
13
|
-
/**
|
14
|
-
*
|
15
|
-
* @param options Creates a viewkeeper instance, applying host options where applicable.
|
16
|
-
*/
|
17
|
-
create(options) {
|
18
|
-
options = Object.assign({}, this.hostOptions || {}, options);
|
19
|
-
return new SkyViewkeeper(options);
|
20
|
-
}
|
21
|
-
/**
|
22
|
-
* Destroys a viewkeeper instance.
|
23
|
-
* @param vk Viewkeeper instance to destroy.
|
24
|
-
*/
|
25
|
-
destroy(vk) {
|
26
|
-
vk.destroy();
|
27
|
-
}
|
28
|
-
}
|
29
|
-
SkyViewkeeperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperService, deps: [{ token: i1.SkyViewkeeperHostOptions, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
30
|
-
SkyViewkeeperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperService, providedIn: 'root' });
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyViewkeeperService, decorators: [{
|
32
|
-
type: Injectable,
|
33
|
-
args: [{
|
34
|
-
providedIn: 'root',
|
35
|
-
}]
|
36
|
-
}], ctorParameters: function () { return [{ type: i1.SkyViewkeeperHostOptions, decorators: [{
|
37
|
-
type: Optional
|
38
|
-
}] }]; } });
|
39
|
-
//# sourceMappingURL=viewkeeper.service.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"viewkeeper.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;;;AAGrE;;GAEG;AAIH,MAAM,OAAO,oBAAoB;IAC/B,YAAgC,WAAsC;QAAtC,gBAAW,GAAX,WAAW,CAA2B;IAAG,CAAC;IAE1E;;;OAGG;IACI,MAAM,CAAC,OAA6B;QACzC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QAE7D,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,OAAO,CAAC,EAAiB;QAC9B,EAAE,CAAC,OAAO,EAAE,CAAC;IACf,CAAC;;kHAnBU,oBAAoB;sHAApB,oBAAoB,cAFnB,MAAM;4FAEP,oBAAoB;kBAHhC,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;0BAEc,QAAQ","sourcesContent":["import { Injectable, Optional } from '@angular/core';\n\nimport { SkyViewkeeper } from './viewkeeper';\nimport { SkyViewkeeperHostOptions } from './viewkeeper-host-options';\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\n/**\n * Provides methods for creating and destroying viewkeeper instances.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyViewkeeperService {\n constructor(@Optional() private hostOptions?: SkyViewkeeperHostOptions) {}\n\n /**\n *\n * @param options Creates a viewkeeper instance, applying host options where applicable.\n */\n public create(options: SkyViewkeeperOptions): SkyViewkeeper {\n options = Object.assign({}, this.hostOptions || {}, options);\n\n return new SkyViewkeeper(options);\n }\n\n /**\n * Destroys a viewkeeper instance.\n * @param vk Viewkeeper instance to destroy.\n */\n public destroy(vk: SkyViewkeeper): void {\n vk.destroy();\n }\n}\n"]}
|
@@ -1,30 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
/**
|
4
|
-
* @internal
|
5
|
-
*/
|
6
|
-
export function getWindow() {
|
7
|
-
return window;
|
8
|
-
}
|
9
|
-
/**
|
10
|
-
* The application window reference service references the global window variable.
|
11
|
-
* After users inject SkyAppWindowRef into a component, they can use the service to interact with
|
12
|
-
* window properties and event handlers by referencing its nativeWindow property.
|
13
|
-
*/
|
14
|
-
export class SkyAppWindowRef {
|
15
|
-
/**
|
16
|
-
* References the global `window` variable.
|
17
|
-
*/
|
18
|
-
get nativeWindow() {
|
19
|
-
return getWindow();
|
20
|
-
}
|
21
|
-
}
|
22
|
-
SkyAppWindowRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyAppWindowRef, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
23
|
-
SkyAppWindowRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyAppWindowRef, providedIn: 'root' });
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyAppWindowRef, decorators: [{
|
25
|
-
type: Injectable,
|
26
|
-
args: [{
|
27
|
-
providedIn: 'root',
|
28
|
-
}]
|
29
|
-
}] });
|
30
|
-
//# sourceMappingURL=window-ref.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"window-ref.js","sourceRoot":"","sources":["../../../../../../../../libs/components/core/src/lib/modules/window/window-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAE3C;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AAIH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,IAAW,YAAY;QACrB,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC;;6GANU,eAAe;iHAAf,eAAe,cAFd,MAAM;4FAEP,eAAe;kBAH3B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB","sourcesContent":["import { Injectable } from '@angular/core';\n\n/**\n * @internal\n */\nexport function getWindow(): any {\n return window;\n}\n\n/**\n * The application window reference service references the global window variable.\n * After users inject SkyAppWindowRef into a component, they can use the service to interact with\n * window properties and event handlers by referencing its nativeWindow property.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppWindowRef {\n /**\n * References the global `window` variable.\n */\n public get nativeWindow(): any {\n return getWindow();\n }\n}\n"]}
|
package/esm2015/skyux-core.js
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"skyux-core.js","sourceRoot":"","sources":["../../../../../libs/components/core/src/skyux-core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"]}
|
@@ -1,41 +0,0 @@
|
|
1
|
-
import { Injectable, NgZone } from '@angular/core';
|
2
|
-
import { SkyMediaBreakpoints, SkyMediaQueryService, } from '@skyux/core';
|
3
|
-
import { BehaviorSubject } from 'rxjs';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
export class MockSkyMediaQueryService extends SkyMediaQueryService {
|
6
|
-
constructor() {
|
7
|
-
super(new NgZone({
|
8
|
-
enableLongStackTrace: true,
|
9
|
-
}));
|
10
|
-
this.currentMockSubject = new BehaviorSubject(this.current);
|
11
|
-
this._currentBreakpoints = SkyMediaBreakpoints.md;
|
12
|
-
}
|
13
|
-
get current() {
|
14
|
-
return this._currentBreakpoints;
|
15
|
-
}
|
16
|
-
set current(breakpoints) {
|
17
|
-
this._currentBreakpoints = breakpoints;
|
18
|
-
}
|
19
|
-
subscribe(listener) {
|
20
|
-
return this.currentMockSubject.subscribe({
|
21
|
-
next: (breakpoints) => {
|
22
|
-
listener(breakpoints);
|
23
|
-
},
|
24
|
-
});
|
25
|
-
}
|
26
|
-
fire(args) {
|
27
|
-
this._currentBreakpoints = args;
|
28
|
-
this.currentMockSubject.next(this._currentBreakpoints);
|
29
|
-
}
|
30
|
-
destroy() { }
|
31
|
-
}
|
32
|
-
MockSkyMediaQueryService.xs = '(max-width: 767px)';
|
33
|
-
MockSkyMediaQueryService.sm = '(min-width: 768px) and (max-width: 991px)';
|
34
|
-
MockSkyMediaQueryService.md = '(min-width: 992px) and (max-width: 1199px)';
|
35
|
-
MockSkyMediaQueryService.lg = '(min-width: 1200px)';
|
36
|
-
MockSkyMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MockSkyMediaQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
37
|
-
MockSkyMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MockSkyMediaQueryService });
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MockSkyMediaQueryService, decorators: [{
|
39
|
-
type: Injectable
|
40
|
-
}], ctorParameters: function () { return []; } });
|
41
|
-
//# sourceMappingURL=mock-media-query.service.js.map
|