@skyux/core 5.5.0 → 5.6.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/documentation.json +93 -93
- package/esm2015/lib/modules/adapter-service/adapter.service.js +1 -1
- package/esm2015/lib/modules/adapter-service/adapter.service.js.map +1 -1
- package/esm2015/lib/modules/affix/affix-config.js.map +1 -1
- package/esm2015/lib/modules/affix/affix.directive.js.map +1 -1
- package/esm2015/lib/modules/affix/affix.module.js.map +1 -1
- package/esm2015/lib/modules/affix/affixer.js +1 -1
- package/esm2015/lib/modules/affix/affixer.js.map +1 -1
- package/esm2015/lib/modules/dock/dock-dom-adapter.service.js +1 -1
- package/esm2015/lib/modules/dock/dock-dom-adapter.service.js.map +1 -1
- package/esm2015/lib/modules/dock/dock.component.js.map +1 -1
- package/esm2015/lib/modules/dock/dock.module.js.map +1 -1
- package/esm2015/lib/modules/dock/dock.service.js +3 -3
- package/esm2015/lib/modules/dock/dock.service.js.map +1 -1
- package/esm2015/lib/modules/dynamic-component/dynamic-component.service.js.map +1 -1
- package/esm2015/lib/modules/media-query/media-query.service.js.map +1 -1
- package/esm2015/lib/modules/numeric/numeric.module.js.map +1 -1
- package/esm2015/lib/modules/numeric/numeric.pipe.js +4 -4
- package/esm2015/lib/modules/numeric/numeric.pipe.js.map +1 -1
- package/esm2015/lib/modules/numeric/numeric.service.js +1 -1
- package/esm2015/lib/modules/numeric/numeric.service.js.map +1 -1
- package/esm2015/lib/modules/overlay/overlay-instance.js.map +1 -1
- package/esm2015/lib/modules/overlay/overlay.component.js +1 -1
- package/esm2015/lib/modules/overlay/overlay.component.js.map +1 -1
- package/esm2015/lib/modules/overlay/overlay.module.js.map +1 -1
- package/esm2015/lib/modules/overlay/overlay.service.js.map +1 -1
- package/esm2015/lib/modules/percent-pipe/percent-pipe.module.js.map +1 -1
- package/esm2015/lib/modules/percent-pipe/percent.pipe.js.map +1 -1
- package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js +4 -4
- package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js.map +1 -1
- package/esm2015/lib/modules/shared/number-format/number-format-utility.js.map +1 -1
- package/esm2015/lib/modules/shared/sky-core-resources.module.js +1 -1
- package/esm2015/lib/modules/shared/sky-core-resources.module.js.map +1 -1
- package/esm2015/lib/modules/title/title.service.js.map +1 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js +2 -2
- package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js.map +1 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.js +1 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.js.map +1 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.service.js.map +1 -1
- package/esm2015/testing/mock-media-query.service.js.map +1 -1
- package/esm2015/testing/mock-ui-config.service.js.map +1 -1
- package/fesm2015/skyux-core-testing.js.map +1 -1
- package/fesm2015/skyux-core.js +50 -50
- package/fesm2015/skyux-core.js.map +1 -1
- package/lib/modules/affix/affix.directive.d.ts +2 -2
- package/lib/modules/affix/affixer.d.ts +1 -1
- package/lib/modules/dock/dock.service.d.ts +2 -2
- package/lib/modules/numeric/numeric.pipe.d.ts +2 -2
- package/lib/modules/overlay/overlay-instance.d.ts +1 -1
- package/package.json +2 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mock-ui-config.service.js","sourceRoot":"","sources":["../../../../../../libs/components/core/testing/src/mock-ui-config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
1
|
+
{"version":3,"file":"mock-ui-config.service.js","sourceRoot":"","sources":["../../../../../../libs/components/core/testing/src/mock-ui-config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,EAAE,IAAI,YAAY,EAAE,MAAM,MAAM,CAAC;;AAG1C,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IACrD,SAAS,CAAC,GAAW,EAAE,aAAmB;QAC/C,QAAQ,GAAG,EAAE;YACX,KAAK,iBAAiB;gBACpB,OAAO,YAAY,CAAC,aAAa,CAAC,CAAC;YACrC,KAAK,SAAS;gBACZ,OAAO,YAAY,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,CAAC;gBACP,OAAO,YAAY,CAAC;oBAClB,QAAQ,EAAE;wBACR,YAAY,EAAE;4BACZ,YAAY,EAAE;gCACZ,KAAK,EAAE;oCACL;wCACE,EAAE,EAAE,QAAQ;wCACZ,WAAW,EAAE,IAAI;qCAClB;oCACD;wCACE,EAAE,EAAE,QAAQ;wCACZ,WAAW,EAAE,IAAI;qCAClB;iCACF;6BACF;4BACD,WAAW,EAAE;gCACX;oCACE,KAAK,EAAE;wCACL;4CACE,EAAE,EAAE,QAAQ;4CACZ,WAAW,EAAE,IAAI;yCAClB;qCACF;iCACF;gCACD;oCACE,KAAK,EAAE;wCACL;4CACE,EAAE,EAAE,QAAQ;4CACZ,WAAW,EAAE,IAAI;yCAClB;qCACF;iCACF;6BACF;yBACF;wBACD,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;qBACtC;iBACF,CAAC,CAAC;aACJ;SACF;IACH,CAAC;;oHA/CU,sBAAsB;wHAAtB,sBAAsB;4FAAtB,sBAAsB;kBADlC,UAAU","sourcesContent":["import { Injectable } from '@angular/core';\nimport { SkyUIConfigService } from '@skyux/core';\n\nimport { of as observableOf } from 'rxjs';\n\n@Injectable()\nexport class MockSkyUIConfigService extends SkyUIConfigService {\n public getConfig(key: string, defaultConfig?: any): any {\n switch (key) {\n case 'defaultSettings':\n return observableOf(defaultConfig);\n case 'badData':\n return observableOf({ invalidProperty: 'invalidData' });\n default: {\n return observableOf({\n settings: {\n userSettings: {\n singleColumn: {\n tiles: [\n {\n id: 'tile-1',\n isCollapsed: true,\n },\n {\n id: 'tile-2',\n isCollapsed: true,\n },\n ],\n },\n multiColumn: [\n {\n tiles: [\n {\n id: 'tile-2',\n isCollapsed: true,\n },\n ],\n },\n {\n tiles: [\n {\n id: 'tile-1',\n isCollapsed: true,\n },\n ],\n },\n ],\n },\n defaultSettings: ['tile-1', 'tile-2'],\n },\n });\n }\n }\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"skyux-core-testing.js","sources":["../../../../../libs/components/core/testing/src/mock-media-query.service.ts","../../../../../libs/components/core/testing/src/mock-ui-config.service.ts","../../../../../libs/components/core/testing/src/skyux-core-testing.ts"],"sourcesContent":["import { Injectable, NgZone } from '@angular/core';\
|
1
|
+
{"version":3,"file":"skyux-core-testing.js","sources":["../../../../../libs/components/core/testing/src/mock-media-query.service.ts","../../../../../libs/components/core/testing/src/mock-ui-config.service.ts","../../../../../libs/components/core/testing/src/skyux-core-testing.ts"],"sourcesContent":["import { Injectable, NgZone } from '@angular/core';\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryListener,\n SkyMediaQueryService,\n} from '@skyux/core';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\n@Injectable()\nexport class MockSkyMediaQueryService extends SkyMediaQueryService {\n public static xs = '(max-width: 767px)';\n public static sm = '(min-width: 768px) and (max-width: 991px)';\n public static md = '(min-width: 992px) and (max-width: 1199px)';\n public static lg = '(min-width: 1200px)';\n\n public get current(): SkyMediaBreakpoints {\n return this._currentBreakpoints;\n }\n\n public set current(breakpoints: SkyMediaBreakpoints) {\n this._currentBreakpoints = breakpoints;\n }\n\n public currentMockSubject = new BehaviorSubject<SkyMediaBreakpoints>(\n this.current\n );\n\n private _currentBreakpoints = SkyMediaBreakpoints.md;\n\n constructor() {\n super(\n new NgZone({\n enableLongStackTrace: true,\n })\n );\n }\n\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.currentMockSubject.subscribe({\n next: (breakpoints: SkyMediaBreakpoints) => {\n listener(breakpoints);\n },\n });\n }\n\n public fire(args: SkyMediaBreakpoints): void {\n this._currentBreakpoints = args;\n this.currentMockSubject.next(this._currentBreakpoints);\n }\n\n public destroy(): void {}\n}\n","import { Injectable } from '@angular/core';\nimport { SkyUIConfigService } from '@skyux/core';\n\nimport { of as observableOf } from 'rxjs';\n\n@Injectable()\nexport class MockSkyUIConfigService extends SkyUIConfigService {\n public getConfig(key: string, defaultConfig?: any): any {\n switch (key) {\n case 'defaultSettings':\n return observableOf(defaultConfig);\n case 'badData':\n return observableOf({ invalidProperty: 'invalidData' });\n default: {\n return observableOf({\n settings: {\n userSettings: {\n singleColumn: {\n tiles: [\n {\n id: 'tile-1',\n isCollapsed: true,\n },\n {\n id: 'tile-2',\n isCollapsed: true,\n },\n ],\n },\n multiColumn: [\n {\n tiles: [\n {\n id: 'tile-2',\n isCollapsed: true,\n },\n ],\n },\n {\n tiles: [\n {\n id: 'tile-1',\n isCollapsed: true,\n },\n ],\n },\n ],\n },\n defaultSettings: ['tile-1', 'tile-2'],\n },\n });\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":";;;;;MAUa,wBAAyB,SAAQ,oBAAoB;IAoBhE;QACE,KAAK,CACH,IAAI,MAAM,CAAC;YACT,oBAAoB,EAAE,IAAI;SAC3B,CAAC,CACH,CAAC;QAXG,uBAAkB,GAAG,IAAI,eAAe,CAC7C,IAAI,CAAC,OAAO,CACb,CAAC;QAEM,wBAAmB,GAAG,mBAAmB,CAAC,EAAE,CAAC;KAQpD;IApBD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACjC;IAED,IAAW,OAAO,CAAC,WAAgC;QACjD,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;KACxC;IAgBM,SAAS,CAAC,QAA+B;QAC9C,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;YACvC,IAAI,EAAE,CAAC,WAAgC;gBACrC,QAAQ,CAAC,WAAW,CAAC,CAAC;aACvB;SACF,CAAC,CAAC;KACJ;IAEM,IAAI,CAAC,IAAyB;QACnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;KACxD;IAEM,OAAO,MAAW;;AAxCX,2BAAE,GAAG,oBAAoB,CAAC;AAC1B,2BAAE,GAAG,2CAA2C,CAAC;AACjD,2BAAE,GAAG,4CAA4C,CAAC;AAClD,2BAAE,GAAG,qBAAqB,CAAC;sHAJ9B,wBAAwB;0HAAxB,wBAAwB;4FAAxB,wBAAwB;kBADpC,UAAU;;;MCHE,sBAAuB,SAAQ,kBAAkB;IACrD,SAAS,CAAC,GAAW,EAAE,aAAmB;QAC/C,QAAQ,GAAG;YACT,KAAK,iBAAiB;gBACpB,OAAOA,EAAY,CAAC,aAAa,CAAC,CAAC;YACrC,KAAK,SAAS;gBACZ,OAAOA,EAAY,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC;YAC1D,SAAS;gBACP,OAAOA,EAAY,CAAC;oBAClB,QAAQ,EAAE;wBACR,YAAY,EAAE;4BACZ,YAAY,EAAE;gCACZ,KAAK,EAAE;oCACL;wCACE,EAAE,EAAE,QAAQ;wCACZ,WAAW,EAAE,IAAI;qCAClB;oCACD;wCACE,EAAE,EAAE,QAAQ;wCACZ,WAAW,EAAE,IAAI;qCAClB;iCACF;6BACF;4BACD,WAAW,EAAE;gCACX;oCACE,KAAK,EAAE;wCACL;4CACE,EAAE,EAAE,QAAQ;4CACZ,WAAW,EAAE,IAAI;yCAClB;qCACF;iCACF;gCACD;oCACE,KAAK,EAAE;wCACL;4CACE,EAAE,EAAE,QAAQ;4CACZ,WAAW,EAAE,IAAI;yCAClB;qCACF;iCACF;6BACF;yBACF;wBACD,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;qBACtC;iBACF,CAAC,CAAC;aACJ;SACF;KACF;;oHA/CU,sBAAsB;wHAAtB,sBAAsB;4FAAtB,sBAAsB;kBADlC,UAAU;;;ACLX;;;;;;"}
|
package/fesm2015/skyux-core.js
CHANGED
@@ -187,7 +187,7 @@ class SkyCoreAdapterService {
|
|
187
187
|
// In certain scenarios, an element is removed after a click event; by the time the event
|
188
188
|
// bubbles up to other elements, however, the element has been removed and the computed style returns empty.
|
189
189
|
// In this case, we'll need to check the z-index directly, via the style property.
|
190
|
-
|
190
|
+
const targetZIndex = getComputedStyle(el).zIndex || el.style.zIndex;
|
191
191
|
if (targetZIndex !== '' &&
|
192
192
|
targetZIndex !== 'auto' &&
|
193
193
|
+targetZIndex > +zIndex) {
|
@@ -1595,6 +1595,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
1595
1595
|
}]
|
1596
1596
|
}] });
|
1597
1597
|
|
1598
|
+
/**
|
1599
|
+
* Provides arguments for the number to format.
|
1600
|
+
*/
|
1601
|
+
class NumericOptions {
|
1602
|
+
constructor() {
|
1603
|
+
/**
|
1604
|
+
* Specifies the maximum number of digits after the decimal separator.
|
1605
|
+
* @default 1
|
1606
|
+
*/
|
1607
|
+
this.digits = 1;
|
1608
|
+
/**
|
1609
|
+
* Specifies how to format the number. Options are `currency` or `number`.
|
1610
|
+
* @default "number"
|
1611
|
+
*/
|
1612
|
+
this.format = 'number';
|
1613
|
+
/**
|
1614
|
+
* Specifies the format of the currency.
|
1615
|
+
* @default "standard"
|
1616
|
+
*/
|
1617
|
+
this.currencySign = 'standard';
|
1618
|
+
/**
|
1619
|
+
* Specifies the ISO4217 currency code to use for currency formatting. If you do not specify a
|
1620
|
+
* currency code, the component uses the browser's culture to determine the currency unless your
|
1621
|
+
* SPA provides a different culture with `SkyAppLocaleProvider`.
|
1622
|
+
* @default "USD"
|
1623
|
+
*/
|
1624
|
+
this.iso = 'USD';
|
1625
|
+
/**
|
1626
|
+
* Indicates whether to shorten numbers to rounded numbers and abbreviation characters
|
1627
|
+
* such as K for thousands, M for millions, B for billions, and T for trillion.
|
1628
|
+
*/
|
1629
|
+
this.truncate = true;
|
1630
|
+
/**
|
1631
|
+
* Specifies the starting point after which numbers are shortened to rounded numbers
|
1632
|
+
* and abbreviation characters.
|
1633
|
+
* @default 0
|
1634
|
+
*/
|
1635
|
+
this.truncateAfter = 0;
|
1636
|
+
}
|
1637
|
+
}
|
1638
|
+
|
1598
1639
|
/* tslint:disable:no-null-keyword */
|
1599
1640
|
function isNumeric(value) {
|
1600
1641
|
return !isNaN(value - parseFloat(value));
|
@@ -1699,7 +1740,7 @@ class SkyNumericService {
|
|
1699
1740
|
// Get the symbol for the number after rounding, since rounding could push the number
|
1700
1741
|
// into a different symbol range.
|
1701
1742
|
let roundedNumber = this.roundNumber(value, options.digits);
|
1702
|
-
|
1743
|
+
const roundedNumberAbs = Math.abs(roundedNumber);
|
1703
1744
|
let suffix = '';
|
1704
1745
|
for (let i = 0; i < this.symbolIndex.length; i++) {
|
1705
1746
|
let symbol = this.symbolIndex[i];
|
@@ -1847,47 +1888,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
1847
1888
|
}]
|
1848
1889
|
}], ctorParameters: function () { return [{ type: i1.SkyLibResourcesService }]; } });
|
1849
1890
|
|
1850
|
-
/**
|
1851
|
-
* Provides arguments for the number to format.
|
1852
|
-
*/
|
1853
|
-
class NumericOptions {
|
1854
|
-
constructor() {
|
1855
|
-
/**
|
1856
|
-
* Specifies the maximum number of digits after the decimal separator.
|
1857
|
-
* @default 1
|
1858
|
-
*/
|
1859
|
-
this.digits = 1;
|
1860
|
-
/**
|
1861
|
-
* Specifies how to format the number. Options are `currency` or `number`.
|
1862
|
-
* @default "number"
|
1863
|
-
*/
|
1864
|
-
this.format = 'number';
|
1865
|
-
/**
|
1866
|
-
* Specifies the format of the currency.
|
1867
|
-
* @default "standard"
|
1868
|
-
*/
|
1869
|
-
this.currencySign = 'standard';
|
1870
|
-
/**
|
1871
|
-
* Specifies the ISO4217 currency code to use for currency formatting. If you do not specify a
|
1872
|
-
* currency code, the component uses the browser's culture to determine the currency unless your
|
1873
|
-
* SPA provides a different culture with `SkyAppLocaleProvider`.
|
1874
|
-
* @default "USD"
|
1875
|
-
*/
|
1876
|
-
this.iso = 'USD';
|
1877
|
-
/**
|
1878
|
-
* Indicates whether to shorten numbers to rounded numbers and abbreviation characters
|
1879
|
-
* such as K for thousands, M for millions, B for billions, and T for trillion.
|
1880
|
-
*/
|
1881
|
-
this.truncate = true;
|
1882
|
-
/**
|
1883
|
-
* Specifies the starting point after which numbers are shortened to rounded numbers
|
1884
|
-
* and abbreviation characters.
|
1885
|
-
* @default 0
|
1886
|
-
*/
|
1887
|
-
this.truncateAfter = 0;
|
1888
|
-
}
|
1889
|
-
}
|
1890
|
-
|
1891
1891
|
/**
|
1892
1892
|
* Shortens numbers to rounded numbers and abbreviation characters such as K for thousands,
|
1893
1893
|
* M for millions, B for billions, and T for trillions. The pipe also formats for currency.
|
@@ -1919,7 +1919,7 @@ class SkyNumericPipe {
|
|
1919
1919
|
}
|
1920
1920
|
transform(value, config) {
|
1921
1921
|
var _a;
|
1922
|
-
|
1922
|
+
const newCacheKey = (config ? JSON.stringify(config, Object.keys(config).sort()) : '') +
|
1923
1923
|
`${value}_${(config === null || config === void 0 ? void 0 : config.locale) || this.providerLocale}`;
|
1924
1924
|
/* If the value and locale are the same as the last transform then return the previous value
|
1925
1925
|
instead of reformatting. */
|
@@ -2432,14 +2432,14 @@ class SkyScrollableHostService {
|
|
2432
2432
|
* @internal
|
2433
2433
|
*/
|
2434
2434
|
watchScrollableHost(elementRef) {
|
2435
|
-
|
2435
|
+
const subscribers = [];
|
2436
2436
|
let mutationObserver;
|
2437
2437
|
return new Observable((subscriber) => {
|
2438
2438
|
subscribers.push(subscriber);
|
2439
2439
|
let scrollableHost = this.findScrollableHost(elementRef.nativeElement);
|
2440
2440
|
if (subscribers.length === 1) {
|
2441
2441
|
mutationObserver = this.mutationObserverSvc.create(() => {
|
2442
|
-
|
2442
|
+
const newScrollableHost = this.findScrollableHost(elementRef.nativeElement);
|
2443
2443
|
if (newScrollableHost !== scrollableHost) {
|
2444
2444
|
scrollableHost = newScrollableHost;
|
2445
2445
|
this.observeForScrollableHostChanges(scrollableHost, mutationObserver);
|
@@ -2469,7 +2469,7 @@ class SkyScrollableHostService {
|
|
2469
2469
|
* @returns An observable which emits the scroll events from the given element's scrollable host
|
2470
2470
|
*/
|
2471
2471
|
watchScrollableHostScrollEvents(elementRef) {
|
2472
|
-
|
2472
|
+
const subscribers = [];
|
2473
2473
|
let scrollableHost;
|
2474
2474
|
let newScrollableHostObservable = new Subject();
|
2475
2475
|
let scrollableHostSubscription;
|
@@ -2621,7 +2621,7 @@ let nextIdIndex;
|
|
2621
2621
|
function ensureStyleEl() {
|
2622
2622
|
if (!styleEl) {
|
2623
2623
|
styleEl = document.createElement('style');
|
2624
|
-
|
2624
|
+
const css = document.createTextNode(`
|
2625
2625
|
.${CLS_VIEWKEEPER_FIXED} {
|
2626
2626
|
position: fixed !important;
|
2627
2627
|
z-index: 999;
|
@@ -2940,7 +2940,7 @@ class SkyViewkeeperDirective {
|
|
2940
2940
|
if (this.skyViewkeeper) {
|
2941
2941
|
viewkeeperEls = [];
|
2942
2942
|
for (const item of this.skyViewkeeper) {
|
2943
|
-
|
2943
|
+
const matchingEls = Array.from(this.el.nativeElement.querySelectorAll(item));
|
2944
2944
|
viewkeeperEls = [...viewkeeperEls, ...matchingEls];
|
2945
2945
|
}
|
2946
2946
|
}
|
@@ -2963,7 +2963,7 @@ class SkyViewkeeperDirective {
|
|
2963
2963
|
return false;
|
2964
2964
|
}
|
2965
2965
|
detectElements() {
|
2966
|
-
|
2966
|
+
const viewkeeperEls = this.getViewkeeperEls();
|
2967
2967
|
if (this.viewkeeperElsChanged(viewkeeperEls)) {
|
2968
2968
|
if (this.scrollableHostWatchUnsubscribe) {
|
2969
2969
|
this.scrollableHostWatchUnsubscribe.next();
|