@skyux/tiles 5.0.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.
Files changed (99) hide show
  1. package/README.md +6 -4
  2. package/documentation.json +95 -12
  3. package/esm2015/index.js +24 -0
  4. package/esm2015/index.js.map +1 -0
  5. package/esm2015/lib/modules/shared/sky-tiles-resources.module.js +60 -0
  6. package/esm2015/lib/modules/shared/sky-tiles-resources.module.js.map +1 -0
  7. package/esm2015/lib/modules/tiles/tile/tile-summary.component.js +19 -0
  8. package/esm2015/lib/modules/tiles/tile/tile-summary.component.js.map +1 -0
  9. package/esm2015/{modules → lib/modules}/tiles/tile/tile-title.component.js +1 -1
  10. package/esm2015/lib/modules/tiles/tile/tile-title.component.js.map +1 -0
  11. package/esm2015/lib/modules/tiles/tile/tile.component.js +165 -0
  12. package/esm2015/lib/modules/tiles/tile/tile.component.js.map +1 -0
  13. package/esm2015/lib/modules/tiles/tile/tile.module.js +53 -0
  14. package/esm2015/lib/modules/tiles/tile/tile.module.js.map +1 -0
  15. package/esm2015/{modules → lib/modules}/tiles/tile-content/tile-content-section.component.js +1 -1
  16. package/esm2015/lib/modules/tiles/tile-content/tile-content-section.component.js.map +1 -0
  17. package/esm2015/lib/modules/tiles/tile-content/tile-content.component.js +18 -0
  18. package/esm2015/lib/modules/tiles/tile-content/tile-content.component.js.map +1 -0
  19. package/esm2015/lib/modules/tiles/tile-content/tile-content.module.js +20 -0
  20. package/esm2015/lib/modules/tiles/tile-content/tile-content.module.js.map +1 -0
  21. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard-message-type.js +15 -0
  22. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard-message-type.js.map +1 -0
  23. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard-message.js +2 -0
  24. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard-message.js.map +1 -0
  25. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.component.js +133 -0
  26. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.component.js.map +1 -0
  27. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.module.js +32 -0
  28. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.module.js.map +1 -0
  29. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.service.js +523 -0
  30. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.service.js.map +1 -0
  31. package/esm2015/{modules → lib/modules}/tiles/tile-dashboard-column/tile-dashboard-column.component.js +3 -2
  32. package/esm2015/lib/modules/tiles/tile-dashboard-column/tile-dashboard-column.component.js.map +1 -0
  33. package/esm2015/lib/modules/tiles/tile-dashboard-column/tile-dashboard-column.module.js +19 -0
  34. package/esm2015/lib/modules/tiles/tile-dashboard-column/tile-dashboard-column.module.js.map +1 -0
  35. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-column.js +2 -0
  36. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-column.js.map +1 -0
  37. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-tile.js +2 -0
  38. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-tile.js.map +1 -0
  39. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout.js +2 -0
  40. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout.js.map +1 -0
  41. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-reorder-data.js +2 -0
  42. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-reorder-data.js.map +1 -0
  43. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-tile.js +2 -0
  44. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-tile.js.map +1 -0
  45. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config.js +2 -0
  46. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config.js.map +1 -0
  47. package/esm2015/lib/modules/tiles/tiles.module.js +31 -0
  48. package/esm2015/lib/modules/tiles/tiles.module.js.map +1 -0
  49. package/esm2015/skyux-tiles.js +2 -2
  50. package/esm2015/skyux-tiles.js.map +1 -0
  51. package/fesm2015/skyux-tiles.js +2 -2
  52. package/fesm2015/skyux-tiles.js.map +1 -1
  53. package/index.d.ts +21 -0
  54. package/{modules → lib/modules}/shared/sky-tiles-resources.module.d.ts +0 -0
  55. package/{modules → lib/modules}/tiles/tile/tile-summary.component.d.ts +0 -0
  56. package/{modules → lib/modules}/tiles/tile/tile-title.component.d.ts +0 -0
  57. package/{modules → lib/modules}/tiles/tile/tile.component.d.ts +0 -0
  58. package/{modules → lib/modules}/tiles/tile/tile.module.d.ts +0 -0
  59. package/{modules → lib/modules}/tiles/tile-content/tile-content-section.component.d.ts +0 -0
  60. package/{modules → lib/modules}/tiles/tile-content/tile-content.component.d.ts +0 -0
  61. package/{modules → lib/modules}/tiles/tile-content/tile-content.module.d.ts +0 -0
  62. package/{modules → lib/modules}/tiles/tile-dashboard/tile-dashboard-message-type.d.ts +0 -0
  63. package/{modules → lib/modules}/tiles/tile-dashboard/tile-dashboard-message.d.ts +0 -0
  64. package/{modules → lib/modules}/tiles/tile-dashboard/tile-dashboard.component.d.ts +2 -2
  65. package/{modules → lib/modules}/tiles/tile-dashboard/tile-dashboard.module.d.ts +0 -0
  66. package/{modules → lib/modules}/tiles/tile-dashboard/tile-dashboard.service.d.ts +0 -0
  67. package/{modules → lib/modules}/tiles/tile-dashboard-column/tile-dashboard-column.component.d.ts +0 -0
  68. package/{modules → lib/modules}/tiles/tile-dashboard-column/tile-dashboard-column.module.d.ts +0 -0
  69. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config-layout-column.d.ts +0 -0
  70. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config-layout-tile.d.ts +0 -0
  71. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config-layout.d.ts +0 -0
  72. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config-reorder-data.d.ts +0 -0
  73. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config-tile.d.ts +0 -0
  74. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config.d.ts +0 -0
  75. package/{modules → lib/modules}/tiles/tiles.module.d.ts +0 -0
  76. package/package.json +19 -5
  77. package/skyux-tiles.d.ts +1 -1
  78. package/LICENSE +0 -21
  79. package/esm2015/modules/shared/sky-tiles-resources.module.js +0 -60
  80. package/esm2015/modules/tiles/tile/tile-summary.component.js +0 -19
  81. package/esm2015/modules/tiles/tile/tile.component.js +0 -164
  82. package/esm2015/modules/tiles/tile/tile.module.js +0 -53
  83. package/esm2015/modules/tiles/tile-content/tile-content.component.js +0 -18
  84. package/esm2015/modules/tiles/tile-content/tile-content.module.js +0 -20
  85. package/esm2015/modules/tiles/tile-dashboard/tile-dashboard-message-type.js +0 -15
  86. package/esm2015/modules/tiles/tile-dashboard/tile-dashboard-message.js +0 -2
  87. package/esm2015/modules/tiles/tile-dashboard/tile-dashboard.component.js +0 -132
  88. package/esm2015/modules/tiles/tile-dashboard/tile-dashboard.module.js +0 -32
  89. package/esm2015/modules/tiles/tile-dashboard/tile-dashboard.service.js +0 -522
  90. package/esm2015/modules/tiles/tile-dashboard-column/tile-dashboard-column.module.js +0 -19
  91. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-column.js +0 -2
  92. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-tile.js +0 -2
  93. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout.js +0 -2
  94. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config-reorder-data.js +0 -2
  95. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config-tile.js +0 -2
  96. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config.js +0 -2
  97. package/esm2015/modules/tiles/tiles.module.js +0 -31
  98. package/esm2015/public-api.js +0 -24
  99. package/public-api.d.ts +0 -21
@@ -0,0 +1,523 @@
1
+ import { EventEmitter, Injectable, Output, Injector, } from '@angular/core';
2
+ import { DragulaService } from 'ng2-dragula';
3
+ import { take } from 'rxjs/operators';
4
+ import { SkyMediaBreakpoints, SkyMediaQueryService, SkyUIConfigService, } from '@skyux/core';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "ng2-dragula";
7
+ import * as i2 from "@skyux/core";
8
+ const ATTR_TILE_ID = '_sky-tile-dashboard-tile-id';
9
+ let bagIdIndex = 0;
10
+ export class SkyTileDashboardService {
11
+ constructor(dragulaService, mediaQuery, uiConfigService) {
12
+ this.dragulaService = dragulaService;
13
+ this.mediaQuery = mediaQuery;
14
+ this.uiConfigService = uiConfigService;
15
+ /**
16
+ * @internal
17
+ */
18
+ this.configChange = new EventEmitter();
19
+ /**
20
+ * Fires when the tile dashboard's initialization is complete.
21
+ */
22
+ this.dashboardInitialized = new EventEmitter();
23
+ this.bagId = 'sky-tile-dashboard-bag-' + ++bagIdIndex;
24
+ this.initDragula();
25
+ }
26
+ /**
27
+ * @internal
28
+ */
29
+ init(config, columns, singleColumn, settingsKey) {
30
+ if (settingsKey) {
31
+ // Clone this so changes to the config object outside of this class don't modify
32
+ // the config used inside and vice versa.
33
+ this.defaultConfig = this.config = Object.assign({}, config);
34
+ this.settingsKey = settingsKey;
35
+ this.uiConfigService
36
+ .getConfig(settingsKey, config)
37
+ .pipe(take(1))
38
+ .subscribe((value) => {
39
+ if (value.persisted) {
40
+ this.config.layout = value.layout;
41
+ this.checkForNewTiles(value.tileIds);
42
+ this.configChange.emit(this.config);
43
+ this.columns = columns;
44
+ this.singleColumn = singleColumn;
45
+ this.checkReadyAndLoadTiles();
46
+ }
47
+ else {
48
+ // Bad data, or config is the default config.
49
+ this.initToDefaults(config, columns, singleColumn);
50
+ }
51
+ }, (error) => {
52
+ // Config setting key doesn't exist or other config service error
53
+ this.initToDefaults(config, columns, singleColumn);
54
+ });
55
+ }
56
+ else {
57
+ this.initToDefaults(config, columns, singleColumn);
58
+ }
59
+ }
60
+ /**
61
+ * Adds a new tile to the tile dashboard.
62
+ * @param tile Specifies the tile configuration.
63
+ * @param component Specifies the tile component to add.
64
+ */
65
+ addTileComponent(tile, component) {
66
+ this.tileComponents = this.tileComponents || [];
67
+ this.tileComponents.push(component);
68
+ component.location.nativeElement.setAttribute(ATTR_TILE_ID, tile.id);
69
+ }
70
+ /**
71
+ * Checks whether a specified tile is collapsed.
72
+ * @param tile Specifies the tile component to check.
73
+ */
74
+ tileIsCollapsed(tile) {
75
+ let tileConfig = this.findTile(this.getTileId(tile));
76
+ if (tileConfig) {
77
+ return tileConfig.isCollapsed;
78
+ }
79
+ return undefined;
80
+ }
81
+ /**
82
+ * Sets the collapsed state of all tiles.
83
+ * @param isCollapsed Indicates whether tiles are collapsed.
84
+ */
85
+ setAllTilesCollapsed(isCollapsed) {
86
+ /*istanbul ignore else */
87
+ if (this.config && this.config.layout.multiColumn) {
88
+ for (let column of this.config.layout.multiColumn) {
89
+ for (let tile of column.tiles) {
90
+ tile.isCollapsed = isCollapsed;
91
+ }
92
+ }
93
+ for (let tile of this.config.layout.singleColumn.tiles) {
94
+ tile.isCollapsed = isCollapsed;
95
+ }
96
+ }
97
+ if (this.settingsKey) {
98
+ this.setUserConfig(this.config);
99
+ }
100
+ this.configChange.emit(this.config);
101
+ }
102
+ /**
103
+ * Sets the collapsed state of a specified tile.
104
+ * @param tile Specifies the tile component.
105
+ * @param isCollapsed Indicates whether the tile is collapsed.
106
+ */
107
+ setTileCollapsed(tile, isCollapsed) {
108
+ let tileConfig = this.findTile(this.getTileId(tile));
109
+ if (tileConfig) {
110
+ tileConfig.isCollapsed = isCollapsed;
111
+ if (this.settingsKey) {
112
+ this.setUserConfig(this.config);
113
+ }
114
+ this.configChange.emit(this.config);
115
+ }
116
+ }
117
+ /**
118
+ * @internal
119
+ */
120
+ getTileComponentType(layoutTile) {
121
+ if (layoutTile) {
122
+ for (let tile of this.config.tiles) {
123
+ if (tile.id === layoutTile.id) {
124
+ return tile.componentType;
125
+ }
126
+ }
127
+ }
128
+ return undefined;
129
+ }
130
+ /**
131
+ * @internal
132
+ */
133
+ changeColumnMode(isSingleColumn) {
134
+ /*istanbul ignore else */
135
+ if (this.config) {
136
+ if (isSingleColumn) {
137
+ this.moveTilesToSingleColumn();
138
+ }
139
+ else {
140
+ this.moveTilesToMultiColumn();
141
+ }
142
+ }
143
+ }
144
+ /**
145
+ * @internal
146
+ */
147
+ getTileComponent(tileId) {
148
+ for (let tileComponent of this.tileComponents) {
149
+ if (tileComponent.location.nativeElement.getAttribute(ATTR_TILE_ID) ===
150
+ tileId) {
151
+ return tileComponent;
152
+ }
153
+ }
154
+ /*istanbul ignore next */
155
+ return undefined;
156
+ }
157
+ /**
158
+ * @internal
159
+ */
160
+ destroy() {
161
+ /*istanbul ignore else */
162
+ if (this.mediaSubscription) {
163
+ this.mediaSubscription.unsubscribe();
164
+ }
165
+ }
166
+ /**
167
+ * @internal
168
+ */
169
+ moveTileOnKeyDown(tileCmp, direction, tileDescription) {
170
+ const isSingleColumnMode = this.mediaQuery.current === SkyMediaBreakpoints.xs ||
171
+ this.mediaQuery.current === SkyMediaBreakpoints.sm;
172
+ let tileId = this.getTileId(tileCmp);
173
+ let tile = this.findTile(tileId);
174
+ let column;
175
+ let colIndex;
176
+ if (isSingleColumnMode) {
177
+ column = this.config.layout.singleColumn;
178
+ }
179
+ else {
180
+ column = this.findTileColumn(tileId);
181
+ colIndex = this.config.layout.multiColumn.findIndex((value) => value === column);
182
+ }
183
+ if ((direction === 'left' || direction === 'right') &&
184
+ !isSingleColumnMode) {
185
+ let operator = direction === 'left' ? -1 : 1;
186
+ let newColumn = this.config.layout.multiColumn[colIndex + operator];
187
+ if (newColumn) {
188
+ // Move the tile to the end of the new column
189
+ newColumn.tiles.push(tile);
190
+ column.tiles = column.tiles.filter((item) => item !== tile);
191
+ this.moveTilesToColumn(this.columns.toArray()[colIndex + operator], [
192
+ tile,
193
+ ]);
194
+ // Report the change in configuration
195
+ let reportConfig = this.config;
196
+ reportConfig.movedTile = {
197
+ tileDescription: tileDescription || /* istanbul ignore next */ tile.id,
198
+ column: colIndex + operator + 1,
199
+ position: newColumn.tiles.length,
200
+ };
201
+ this.configChange.emit(reportConfig);
202
+ }
203
+ }
204
+ else {
205
+ let operator = direction === 'up' ? -1 : 1;
206
+ let curIndex = column.tiles.findIndex((value) => value.id === tile.id);
207
+ let tileComponentInstance = this.getTileComponent(tileId);
208
+ if (tileComponentInstance && column.tiles[curIndex + operator]) {
209
+ let temp = column.tiles[curIndex + operator];
210
+ column.tiles[curIndex + operator] = tile;
211
+ column.tiles[curIndex] = temp;
212
+ // Get the column element
213
+ let columnEl;
214
+ if (isSingleColumnMode) {
215
+ columnEl = this.getColumnEl(this.singleColumn);
216
+ }
217
+ else {
218
+ columnEl = this.getColumnEl(this.columns.toArray()[colIndex]);
219
+ }
220
+ // Move the tile element in the document
221
+ if (curIndex + operator === column.tiles.length - 1) {
222
+ columnEl.appendChild(tileComponentInstance.location.nativeElement);
223
+ }
224
+ else {
225
+ columnEl.insertBefore(tileComponentInstance.location.nativeElement, this.getTileComponent(column.tiles[curIndex + operator + 1].id)
226
+ .location.nativeElement);
227
+ }
228
+ // Report the change in configuration
229
+ let reportConfig = this.config;
230
+ reportConfig.movedTile = {
231
+ tileDescription: tileDescription || /* istanbul ignore next */ tile.id,
232
+ column: isSingleColumnMode ? undefined : colIndex + 1,
233
+ position: curIndex + operator + 1,
234
+ };
235
+ this.configChange.emit(reportConfig);
236
+ }
237
+ }
238
+ }
239
+ getTileId(tile) {
240
+ if (tile) {
241
+ let el = tile.elementRef.nativeElement;
242
+ let tileId;
243
+ while (el) {
244
+ tileId = el.getAttribute(ATTR_TILE_ID);
245
+ if (tileId) {
246
+ return tileId;
247
+ }
248
+ el = el.parentElement;
249
+ }
250
+ }
251
+ return undefined;
252
+ }
253
+ getTileOrRemoveFromLayout(layoutTile) {
254
+ /*istanbul ignore else */
255
+ if (layoutTile) {
256
+ for (let tile of this.config.tiles) {
257
+ if (tile.id === layoutTile.id) {
258
+ return tile;
259
+ }
260
+ }
261
+ // If the layout tile was not found in the list of tiles, it was removed since last the user updated settings
262
+ /*istanbul ignore else */
263
+ if (this.config.layout.singleColumn) {
264
+ this.config.layout.singleColumn.tiles =
265
+ this.config.layout.singleColumn.tiles.filter((elem) => elem.id !== layoutTile.id);
266
+ }
267
+ /*istanbul ignore else */
268
+ if (this.config.layout.multiColumn) {
269
+ this.config.layout.multiColumn.forEach((elem) => {
270
+ elem.tiles = elem.tiles.filter((res) => res.id !== layoutTile.id);
271
+ });
272
+ }
273
+ }
274
+ /*istanbul ignore next */
275
+ return undefined;
276
+ }
277
+ checkReadyAndLoadTiles() {
278
+ if (this.config && this.columns) {
279
+ this.loadTiles();
280
+ this.initMediaQueries();
281
+ this.dashboardInitialized.emit();
282
+ }
283
+ }
284
+ loadTiles() {
285
+ let layout = this.config.layout;
286
+ if (this.mediaQuery.current === SkyMediaBreakpoints.xs ||
287
+ this.mediaQuery.current === SkyMediaBreakpoints.sm) {
288
+ for (let tile of layout.singleColumn.tiles) {
289
+ this.loadTileIntoColumn(this.singleColumn, tile);
290
+ }
291
+ }
292
+ else {
293
+ let columns = this.columns.toArray();
294
+ for (let i = 0, n = layout.multiColumn.length; i < n; i++) {
295
+ let column = columns[i];
296
+ for (let tile of layout.multiColumn[i].tiles) {
297
+ this.loadTileIntoColumn(column, tile);
298
+ }
299
+ }
300
+ }
301
+ }
302
+ loadTileIntoColumn(column, layoutTile) {
303
+ let tile = this.getTileOrRemoveFromLayout(layoutTile);
304
+ /*istanbul ignore else */
305
+ if (tile) {
306
+ let componentType = tile.componentType;
307
+ let providers = tile.providers /* istanbul ignore next */ || [];
308
+ const injector = Injector.create({
309
+ providers,
310
+ parent: column.injector,
311
+ });
312
+ const factory = column.resolver.resolveComponentFactory(componentType);
313
+ const componentRef = column.content.createComponent(factory, undefined, injector);
314
+ this.addTileComponent(layoutTile, componentRef);
315
+ // Make sure the component is marked for changes in case the parent component uses
316
+ // the OnPush change detection strategy.
317
+ componentRef.changeDetectorRef.markForCheck();
318
+ }
319
+ }
320
+ moveTilesToSingleColumn() {
321
+ this.moveTilesToColumn(this.singleColumn, this.config.layout.singleColumn.tiles);
322
+ }
323
+ moveTilesToMultiColumn() {
324
+ let layoutColumns = this.config.layout.multiColumn;
325
+ let columns = this.columns.toArray();
326
+ for (let i = 0, n = layoutColumns.length; i < n; i++) {
327
+ this.moveTilesToColumn(columns[i], layoutColumns[i].tiles);
328
+ }
329
+ }
330
+ moveTilesToColumn(column, layoutTiles) {
331
+ let columnEl = this.getColumnEl(column);
332
+ for (let layoutTile of layoutTiles) {
333
+ let tileComponentInstance = this.getTileComponent(layoutTile.id);
334
+ /*istanbul ignore else */
335
+ if (tileComponentInstance) {
336
+ columnEl.appendChild(tileComponentInstance.location.nativeElement);
337
+ }
338
+ }
339
+ }
340
+ getConfigForUIState() {
341
+ /*istanbul ignore else */
342
+ if (this.config) {
343
+ this.config = {
344
+ tiles: this.config.tiles,
345
+ layout: {
346
+ singleColumn: this.getSingleColumnLayoutForUIState(),
347
+ multiColumn: this.getMultiColumnLayoutForUIState(),
348
+ },
349
+ };
350
+ }
351
+ return this.config;
352
+ }
353
+ getSingleColumnLayoutForUIState() {
354
+ if (this.mediaQuery.current === SkyMediaBreakpoints.xs ||
355
+ this.mediaQuery.current === SkyMediaBreakpoints.sm) {
356
+ return {
357
+ tiles: this.getTilesInEl(this.getColumnEl(this.singleColumn)),
358
+ };
359
+ }
360
+ return this.config.layout.singleColumn;
361
+ }
362
+ getMultiColumnLayoutForUIState() {
363
+ if (!(this.mediaQuery.current === SkyMediaBreakpoints.xs ||
364
+ this.mediaQuery.current === SkyMediaBreakpoints.sm)) {
365
+ let layoutColumns = [];
366
+ let columns = this.columns.toArray();
367
+ for (let column of columns) {
368
+ if (column !== this.singleColumn) {
369
+ let layoutColumn = {
370
+ tiles: this.getTilesInEl(this.getColumnEl(column)),
371
+ };
372
+ layoutColumns.push(layoutColumn);
373
+ }
374
+ }
375
+ return layoutColumns;
376
+ }
377
+ return this.config.layout.multiColumn;
378
+ }
379
+ getTilesInEl(el) {
380
+ let tileEls = el.querySelectorAll('[' + ATTR_TILE_ID + ']');
381
+ let layoutTiles = [];
382
+ /*istanbul ignore else */
383
+ if (tileEls) {
384
+ for (let i = 0, n = tileEls.length; i < n; i++) {
385
+ let tileEl = tileEls[i];
386
+ let tileId = tileEl.getAttribute(ATTR_TILE_ID);
387
+ let tile = this.findTile(tileId);
388
+ /*istanbul ignore else */
389
+ if (tile) {
390
+ layoutTiles.push(tile);
391
+ }
392
+ }
393
+ }
394
+ return layoutTiles;
395
+ }
396
+ initMediaQueries() {
397
+ /*istanbul ignore else */
398
+ if (!this.mediaSubscription) {
399
+ this.mediaSubscription = this.mediaQuery.subscribe((args) => {
400
+ this.changeColumnMode(args === SkyMediaBreakpoints.xs || args === SkyMediaBreakpoints.sm);
401
+ });
402
+ }
403
+ }
404
+ initDragula() {
405
+ this.dragulaService.setOptions(this.bagId, {
406
+ moves: (el, container, handle) => {
407
+ const target = el.querySelector('.sky-tile-grab-handle');
408
+ return target.contains(handle);
409
+ },
410
+ });
411
+ this.dragulaService.drop.subscribe((value) => {
412
+ let config = this.getConfigForUIState();
413
+ /*istanbul ignore else */
414
+ if (config) {
415
+ if (this.settingsKey) {
416
+ this.setUserConfig(config);
417
+ }
418
+ this.configChange.emit(config);
419
+ }
420
+ });
421
+ }
422
+ getColumnEl(column) {
423
+ return column.content.element.nativeElement.parentNode;
424
+ }
425
+ findTile(tileId) {
426
+ /*istanbul ignore else */
427
+ if (this.config && this.config.layout.multiColumn) {
428
+ for (let column of this.config.layout.multiColumn) {
429
+ /*istanbul ignore else */
430
+ if (column.tiles) {
431
+ for (let tile of column.tiles) {
432
+ if (tile.id === tileId) {
433
+ return tile;
434
+ }
435
+ }
436
+ }
437
+ }
438
+ }
439
+ return undefined;
440
+ }
441
+ findTileColumn(tileId) {
442
+ /*istanbul ignore else */
443
+ if (this.config && this.config.layout.multiColumn) {
444
+ return this.config.layout.multiColumn.find((col) => col.tiles && !!col.tiles.find((tile) => tile.id === tileId));
445
+ }
446
+ /*istanbul ignore next */
447
+ return undefined;
448
+ }
449
+ initToDefaults(config, columns, singleColumn) {
450
+ this.config = config;
451
+ this.columns = columns;
452
+ this.singleColumn = singleColumn;
453
+ this.checkReadyAndLoadTiles();
454
+ }
455
+ setUserConfig(config) {
456
+ this.uiConfigService
457
+ .setConfig(this.settingsKey, {
458
+ layout: this.config.layout,
459
+ persisted: true,
460
+ tileIds: this.defaultConfig.tiles.map((elem) => elem.id),
461
+ })
462
+ .subscribe(() => { }, (err) => {
463
+ console.warn('Could not save tile dashboard settings.');
464
+ console.warn(err);
465
+ });
466
+ }
467
+ checkForNewTiles(oldUserTiles) {
468
+ // Get a list of tiles that are in the config's default list but not in the user's settings
469
+ let newTiles = this.config.tiles.filter((elem) => {
470
+ return oldUserTiles.indexOf(elem.id) === -1;
471
+ });
472
+ const { multiColumn, singleColumn } = this.config.layout;
473
+ // Append new tiles to the end of the layouts
474
+ /*istanbul ignore else */
475
+ if (newTiles.length > 0) {
476
+ /*istanbul ignore else */
477
+ if (multiColumn) {
478
+ newTiles.forEach((elem) => {
479
+ let locationToAdd = 0;
480
+ let smallest = multiColumn[0].tiles.length;
481
+ multiColumn.forEach((item, index) => {
482
+ if (item.tiles.length < smallest) {
483
+ locationToAdd = index;
484
+ smallest = item.tiles.length;
485
+ }
486
+ });
487
+ multiColumn[locationToAdd].tiles.push({
488
+ id: elem.id,
489
+ isCollapsed: false,
490
+ });
491
+ });
492
+ }
493
+ /*istanbul ignore else */
494
+ if (singleColumn) {
495
+ newTiles.forEach((elem) => {
496
+ singleColumn.tiles.push({ id: elem.id, isCollapsed: false });
497
+ });
498
+ }
499
+ }
500
+ /*istanbul ignore else */
501
+ if (singleColumn) {
502
+ for (let tile of singleColumn.tiles) {
503
+ this.getTileOrRemoveFromLayout(tile);
504
+ }
505
+ }
506
+ /*istanbul ignore else */
507
+ if (multiColumn) {
508
+ for (let i = 0, n = multiColumn.length; i < n; i++) {
509
+ for (let tile of multiColumn[i].tiles) {
510
+ this.getTileOrRemoveFromLayout(tile);
511
+ }
512
+ }
513
+ }
514
+ }
515
+ }
516
+ SkyTileDashboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardService, deps: [{ token: i1.DragulaService }, { token: i2.SkyMediaQueryService }, { token: i2.SkyUIConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
517
+ SkyTileDashboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardService });
518
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardService, decorators: [{
519
+ type: Injectable
520
+ }], ctorParameters: function () { return [{ type: i1.DragulaService }, { type: i2.SkyMediaQueryService }, { type: i2.SkyUIConfigService }]; }, propDecorators: { dashboardInitialized: [{
521
+ type: Output
522
+ }] } });
523
+ //# sourceMappingURL=tile-dashboard.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile-dashboard.service.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/tiles/src/lib/modules/tiles/tile-dashboard/tile-dashboard.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ComponentRef,\n EventEmitter,\n Injectable,\n QueryList,\n Output,\n Injector,\n} from '@angular/core';\n\nimport { DragulaService } from 'ng2-dragula';\n\nimport { Subscription } from 'rxjs';\n\nimport { take } from 'rxjs/operators';\n\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryService,\n SkyUIConfigService,\n} from '@skyux/core';\n\nimport { SkyTileComponent } from '../tile/tile.component';\n\nimport { SkyTileDashboardColumnComponent } from '../tile-dashboard-column/tile-dashboard-column.component';\n\nimport { SkyTileDashboardConfig } from '../tile-dashboard-config/tile-dashboard-config';\n\nimport { SkyTileDashboardConfigLayoutColumn } from '../tile-dashboard-config/tile-dashboard-config-layout-column';\n\nimport { SkyTileDashboardConfigLayoutTile } from '../tile-dashboard-config/tile-dashboard-config-layout-tile';\n\nimport { SkyTileDashboardConfigTile } from '../tile-dashboard-config/tile-dashboard-config-tile';\n\nconst ATTR_TILE_ID = '_sky-tile-dashboard-tile-id';\n\nlet bagIdIndex = 0;\n\n@Injectable()\nexport class SkyTileDashboardService {\n /**\n * @internal\n */\n public bagId: string;\n\n /**\n * @internal\n */\n public configChange = new EventEmitter<SkyTileDashboardConfig>();\n\n /**\n * Fires when the tile dashboard's initialization is complete.\n */\n @Output()\n public dashboardInitialized = new EventEmitter<void>();\n\n private tileComponents: ComponentRef<any>[];\n\n private config: SkyTileDashboardConfig;\n\n private defaultConfig: SkyTileDashboardConfig;\n\n private columns: QueryList<SkyTileDashboardColumnComponent>;\n\n private singleColumn: SkyTileDashboardColumnComponent;\n\n private mediaSubscription: Subscription;\n\n private settingsKey: string;\n\n constructor(\n private dragulaService: DragulaService,\n private mediaQuery: SkyMediaQueryService,\n private uiConfigService: SkyUIConfigService\n ) {\n this.bagId = 'sky-tile-dashboard-bag-' + ++bagIdIndex;\n\n this.initDragula();\n }\n\n /**\n * @internal\n */\n public init(\n config: SkyTileDashboardConfig,\n columns?: QueryList<SkyTileDashboardColumnComponent>,\n singleColumn?: SkyTileDashboardColumnComponent,\n settingsKey?: string\n ) {\n if (settingsKey) {\n // Clone this so changes to the config object outside of this class don't modify\n // the config used inside and vice versa.\n this.defaultConfig = this.config = Object.assign({}, config);\n\n this.settingsKey = settingsKey;\n\n this.uiConfigService\n .getConfig(settingsKey, config)\n .pipe(take(1))\n .subscribe(\n (value: any) => {\n if (value.persisted) {\n this.config.layout = value.layout;\n this.checkForNewTiles(value.tileIds);\n this.configChange.emit(this.config);\n\n this.columns = columns;\n this.singleColumn = singleColumn;\n this.checkReadyAndLoadTiles();\n } else {\n // Bad data, or config is the default config.\n this.initToDefaults(config, columns, singleColumn);\n }\n },\n (error: any) => {\n // Config setting key doesn't exist or other config service error\n this.initToDefaults(config, columns, singleColumn);\n }\n );\n } else {\n this.initToDefaults(config, columns, singleColumn);\n }\n }\n\n /**\n * Adds a new tile to the tile dashboard.\n * @param tile Specifies the tile configuration.\n * @param component Specifies the tile component to add.\n */\n public addTileComponent(\n tile: SkyTileDashboardConfigLayoutTile,\n component: ComponentRef<any>\n ) {\n this.tileComponents = this.tileComponents || [];\n\n this.tileComponents.push(component);\n\n component.location.nativeElement.setAttribute(ATTR_TILE_ID, tile.id);\n }\n\n /**\n * Checks whether a specified tile is collapsed.\n * @param tile Specifies the tile component to check.\n */\n public tileIsCollapsed(tile: SkyTileComponent): boolean {\n let tileConfig = this.findTile(this.getTileId(tile));\n\n if (tileConfig) {\n return tileConfig.isCollapsed;\n }\n\n return undefined;\n }\n\n /**\n * Sets the collapsed state of all tiles.\n * @param isCollapsed Indicates whether tiles are collapsed.\n */\n public setAllTilesCollapsed(isCollapsed: boolean): void {\n /*istanbul ignore else */\n if (this.config && this.config.layout.multiColumn) {\n for (let column of this.config.layout.multiColumn) {\n for (let tile of column.tiles) {\n tile.isCollapsed = isCollapsed;\n }\n }\n for (let tile of this.config.layout.singleColumn.tiles) {\n tile.isCollapsed = isCollapsed;\n }\n }\n\n if (this.settingsKey) {\n this.setUserConfig(this.config);\n }\n\n this.configChange.emit(this.config);\n }\n\n /**\n * Sets the collapsed state of a specified tile.\n * @param tile Specifies the tile component.\n * @param isCollapsed Indicates whether the tile is collapsed.\n */\n public setTileCollapsed(tile: SkyTileComponent, isCollapsed: boolean) {\n let tileConfig = this.findTile(this.getTileId(tile));\n\n if (tileConfig) {\n tileConfig.isCollapsed = isCollapsed;\n\n if (this.settingsKey) {\n this.setUserConfig(this.config);\n }\n\n this.configChange.emit(this.config);\n }\n }\n\n /**\n * @internal\n */\n public getTileComponentType(\n layoutTile: SkyTileDashboardConfigLayoutTile\n ): any {\n if (layoutTile) {\n for (let tile of this.config.tiles) {\n if (tile.id === layoutTile.id) {\n return tile.componentType;\n }\n }\n }\n\n return undefined;\n }\n\n /**\n * @internal\n */\n public changeColumnMode(isSingleColumn: boolean) {\n /*istanbul ignore else */\n if (this.config) {\n if (isSingleColumn) {\n this.moveTilesToSingleColumn();\n } else {\n this.moveTilesToMultiColumn();\n }\n }\n }\n\n /**\n * @internal\n */\n public getTileComponent(tileId: string): ComponentRef<any> {\n for (let tileComponent of this.tileComponents) {\n if (\n tileComponent.location.nativeElement.getAttribute(ATTR_TILE_ID) ===\n tileId\n ) {\n return tileComponent;\n }\n }\n\n /*istanbul ignore next */\n return undefined;\n }\n\n /**\n * @internal\n */\n public destroy() {\n /*istanbul ignore else */\n if (this.mediaSubscription) {\n this.mediaSubscription.unsubscribe();\n }\n }\n\n /**\n * @internal\n */\n public moveTileOnKeyDown(\n tileCmp: SkyTileComponent,\n direction: string,\n tileDescription: string\n ) {\n const isSingleColumnMode =\n this.mediaQuery.current === SkyMediaBreakpoints.xs ||\n this.mediaQuery.current === SkyMediaBreakpoints.sm;\n\n let tileId = this.getTileId(tileCmp);\n let tile = this.findTile(tileId);\n\n let column: SkyTileDashboardConfigLayoutColumn;\n let colIndex: number;\n if (isSingleColumnMode) {\n column = this.config.layout.singleColumn;\n } else {\n column = this.findTileColumn(tileId);\n colIndex = this.config.layout.multiColumn.findIndex(\n (value) => value === column\n );\n }\n\n if (\n (direction === 'left' || direction === 'right') &&\n !isSingleColumnMode\n ) {\n let operator = direction === 'left' ? -1 : 1;\n let newColumn = this.config.layout.multiColumn[colIndex + operator];\n\n if (newColumn) {\n // Move the tile to the end of the new column\n newColumn.tiles.push(tile);\n column.tiles = column.tiles.filter((item) => item !== tile);\n this.moveTilesToColumn(this.columns.toArray()[colIndex + operator], [\n tile,\n ]);\n\n // Report the change in configuration\n let reportConfig = this.config;\n reportConfig.movedTile = {\n tileDescription:\n tileDescription || /* istanbul ignore next */ tile.id,\n column: colIndex + operator + 1,\n position: newColumn.tiles.length,\n };\n this.configChange.emit(reportConfig);\n }\n } else {\n let operator = direction === 'up' ? -1 : 1;\n let curIndex = column.tiles.findIndex((value) => value.id === tile.id);\n let tileComponentInstance = this.getTileComponent(tileId);\n\n if (tileComponentInstance && column.tiles[curIndex + operator]) {\n let temp = column.tiles[curIndex + operator];\n column.tiles[curIndex + operator] = tile;\n column.tiles[curIndex] = temp;\n\n // Get the column element\n let columnEl: Element;\n if (isSingleColumnMode) {\n columnEl = this.getColumnEl(this.singleColumn);\n } else {\n columnEl = this.getColumnEl(this.columns.toArray()[colIndex]);\n }\n\n // Move the tile element in the document\n if (curIndex + operator === column.tiles.length - 1) {\n columnEl.appendChild(tileComponentInstance.location.nativeElement);\n } else {\n columnEl.insertBefore(\n tileComponentInstance.location.nativeElement,\n this.getTileComponent(column.tiles[curIndex + operator + 1].id)\n .location.nativeElement\n );\n }\n\n // Report the change in configuration\n let reportConfig = this.config;\n reportConfig.movedTile = {\n tileDescription:\n tileDescription || /* istanbul ignore next */ tile.id,\n column: isSingleColumnMode ? undefined : colIndex + 1,\n position: curIndex + operator + 1,\n };\n this.configChange.emit(reportConfig);\n }\n }\n }\n\n private getTileId(tile: SkyTileComponent): string {\n if (tile) {\n let el = tile.elementRef.nativeElement;\n let tileId: string;\n\n while (el) {\n tileId = el.getAttribute(ATTR_TILE_ID);\n\n if (tileId) {\n return tileId;\n }\n\n el = el.parentElement;\n }\n }\n\n return undefined;\n }\n\n private getTileOrRemoveFromLayout(\n layoutTile: SkyTileDashboardConfigLayoutTile\n ): SkyTileDashboardConfigTile {\n /*istanbul ignore else */\n if (layoutTile) {\n for (let tile of this.config.tiles) {\n if (tile.id === layoutTile.id) {\n return tile;\n }\n }\n\n // If the layout tile was not found in the list of tiles, it was removed since last the user updated settings\n /*istanbul ignore else */\n if (this.config.layout.singleColumn) {\n this.config.layout.singleColumn.tiles =\n this.config.layout.singleColumn.tiles.filter(\n (elem) => elem.id !== layoutTile.id\n );\n }\n\n /*istanbul ignore else */\n if (this.config.layout.multiColumn) {\n this.config.layout.multiColumn.forEach((elem) => {\n elem.tiles = elem.tiles.filter((res) => res.id !== layoutTile.id);\n });\n }\n }\n\n /*istanbul ignore next */\n return undefined;\n }\n\n private checkReadyAndLoadTiles() {\n if (this.config && this.columns) {\n this.loadTiles();\n this.initMediaQueries();\n this.dashboardInitialized.emit();\n }\n }\n\n private loadTiles() {\n let layout = this.config.layout;\n\n if (\n this.mediaQuery.current === SkyMediaBreakpoints.xs ||\n this.mediaQuery.current === SkyMediaBreakpoints.sm\n ) {\n for (let tile of layout.singleColumn.tiles) {\n this.loadTileIntoColumn(this.singleColumn, tile);\n }\n } else {\n let columns = this.columns.toArray();\n\n for (let i = 0, n = layout.multiColumn.length; i < n; i++) {\n let column = columns[i];\n\n for (let tile of layout.multiColumn[i].tiles) {\n this.loadTileIntoColumn(column, tile);\n }\n }\n }\n }\n\n private loadTileIntoColumn(\n column: SkyTileDashboardColumnComponent,\n layoutTile: SkyTileDashboardConfigLayoutTile\n ) {\n let tile = this.getTileOrRemoveFromLayout(layoutTile);\n\n /*istanbul ignore else */\n if (tile) {\n let componentType = tile.componentType;\n let providers = tile.providers /* istanbul ignore next */ || [];\n\n const injector = Injector.create({\n providers,\n parent: column.injector,\n });\n\n const factory = column.resolver.resolveComponentFactory(componentType);\n const componentRef = column.content.createComponent(\n factory,\n undefined,\n injector\n );\n\n this.addTileComponent(layoutTile, componentRef);\n\n // Make sure the component is marked for changes in case the parent component uses\n // the OnPush change detection strategy.\n componentRef.changeDetectorRef.markForCheck();\n }\n }\n\n private moveTilesToSingleColumn() {\n this.moveTilesToColumn(\n this.singleColumn,\n this.config.layout.singleColumn.tiles\n );\n }\n\n private moveTilesToMultiColumn() {\n let layoutColumns = this.config.layout.multiColumn;\n let columns = this.columns.toArray();\n\n for (let i = 0, n = layoutColumns.length; i < n; i++) {\n this.moveTilesToColumn(columns[i], layoutColumns[i].tiles);\n }\n }\n\n private moveTilesToColumn(\n column: SkyTileDashboardColumnComponent,\n layoutTiles: SkyTileDashboardConfigLayoutTile[]\n ) {\n let columnEl = this.getColumnEl(column);\n\n for (let layoutTile of layoutTiles) {\n let tileComponentInstance = this.getTileComponent(layoutTile.id);\n\n /*istanbul ignore else */\n if (tileComponentInstance) {\n columnEl.appendChild(tileComponentInstance.location.nativeElement);\n }\n }\n }\n\n private getConfigForUIState(): SkyTileDashboardConfig {\n /*istanbul ignore else */\n if (this.config) {\n this.config = {\n tiles: this.config.tiles,\n layout: {\n singleColumn: this.getSingleColumnLayoutForUIState(),\n multiColumn: this.getMultiColumnLayoutForUIState(),\n },\n };\n }\n\n return this.config;\n }\n\n private getSingleColumnLayoutForUIState(): SkyTileDashboardConfigLayoutColumn {\n if (\n this.mediaQuery.current === SkyMediaBreakpoints.xs ||\n this.mediaQuery.current === SkyMediaBreakpoints.sm\n ) {\n return {\n tiles: this.getTilesInEl(this.getColumnEl(this.singleColumn)),\n };\n }\n\n return this.config.layout.singleColumn;\n }\n\n private getMultiColumnLayoutForUIState(): SkyTileDashboardConfigLayoutColumn[] {\n if (\n !(\n this.mediaQuery.current === SkyMediaBreakpoints.xs ||\n this.mediaQuery.current === SkyMediaBreakpoints.sm\n )\n ) {\n let layoutColumns: SkyTileDashboardConfigLayoutColumn[] = [];\n let columns = this.columns.toArray();\n\n for (let column of columns) {\n if (column !== this.singleColumn) {\n let layoutColumn: SkyTileDashboardConfigLayoutColumn = {\n tiles: this.getTilesInEl(this.getColumnEl(column)),\n };\n\n layoutColumns.push(layoutColumn);\n }\n }\n\n return layoutColumns;\n }\n\n return this.config.layout.multiColumn;\n }\n\n private getTilesInEl(el: Element): SkyTileDashboardConfigLayoutTile[] {\n let tileEls: any = el.querySelectorAll('[' + ATTR_TILE_ID + ']');\n let layoutTiles: SkyTileDashboardConfigLayoutTile[] = [];\n\n /*istanbul ignore else */\n if (tileEls) {\n for (let i = 0, n = tileEls.length; i < n; i++) {\n let tileEl = tileEls[i];\n let tileId = tileEl.getAttribute(ATTR_TILE_ID);\n let tile = this.findTile(tileId);\n\n /*istanbul ignore else */\n if (tile) {\n layoutTiles.push(tile);\n }\n }\n }\n\n return layoutTiles;\n }\n\n private initMediaQueries() {\n /*istanbul ignore else */\n if (!this.mediaSubscription) {\n this.mediaSubscription = this.mediaQuery.subscribe(\n (args: SkyMediaBreakpoints) => {\n this.changeColumnMode(\n args === SkyMediaBreakpoints.xs || args === SkyMediaBreakpoints.sm\n );\n }\n );\n }\n }\n\n private initDragula() {\n this.dragulaService.setOptions(this.bagId, {\n moves: (el: HTMLElement, container: HTMLElement, handle: HTMLElement) => {\n const target = el.querySelector('.sky-tile-grab-handle');\n return target.contains(handle);\n },\n });\n\n this.dragulaService.drop.subscribe((value: any[]) => {\n let config = this.getConfigForUIState();\n\n /*istanbul ignore else */\n if (config) {\n if (this.settingsKey) {\n this.setUserConfig(config);\n }\n\n this.configChange.emit(config);\n }\n });\n }\n\n private getColumnEl(column: SkyTileDashboardColumnComponent): Element {\n return column.content.element.nativeElement.parentNode;\n }\n\n private findTile(tileId: string): SkyTileDashboardConfigLayoutTile {\n /*istanbul ignore else */\n if (this.config && this.config.layout.multiColumn) {\n for (let column of this.config.layout.multiColumn) {\n /*istanbul ignore else */\n if (column.tiles) {\n for (let tile of column.tiles) {\n if (tile.id === tileId) {\n return tile;\n }\n }\n }\n }\n }\n\n return undefined;\n }\n\n private findTileColumn(tileId: string): SkyTileDashboardConfigLayoutColumn {\n /*istanbul ignore else */\n if (this.config && this.config.layout.multiColumn) {\n return this.config.layout.multiColumn.find(\n (col) => col.tiles && !!col.tiles.find((tile) => tile.id === tileId)\n );\n }\n\n /*istanbul ignore next */\n return undefined;\n }\n\n private initToDefaults(\n config: SkyTileDashboardConfig,\n columns: QueryList<SkyTileDashboardColumnComponent>,\n singleColumn: SkyTileDashboardColumnComponent\n ) {\n this.config = config;\n this.columns = columns;\n this.singleColumn = singleColumn;\n this.checkReadyAndLoadTiles();\n }\n\n private setUserConfig(config: SkyTileDashboardConfig) {\n this.uiConfigService\n .setConfig(this.settingsKey, {\n layout: this.config.layout,\n persisted: true,\n tileIds: this.defaultConfig.tiles.map((elem) => elem.id),\n })\n .subscribe(\n () => {},\n (err) => {\n console.warn('Could not save tile dashboard settings.');\n console.warn(err);\n }\n );\n }\n\n private checkForNewTiles(oldUserTiles: string[]) {\n // Get a list of tiles that are in the config's default list but not in the user's settings\n let newTiles = this.config.tiles.filter((elem) => {\n return oldUserTiles.indexOf(elem.id) === -1;\n });\n\n const { multiColumn, singleColumn } = this.config.layout;\n\n // Append new tiles to the end of the layouts\n /*istanbul ignore else */\n if (newTiles.length > 0) {\n /*istanbul ignore else */\n if (multiColumn) {\n newTiles.forEach((elem) => {\n let locationToAdd = 0;\n let smallest = multiColumn[0].tiles.length;\n multiColumn.forEach((item, index) => {\n if (item.tiles.length < smallest) {\n locationToAdd = index;\n smallest = item.tiles.length;\n }\n });\n multiColumn[locationToAdd].tiles.push({\n id: elem.id,\n isCollapsed: false,\n });\n });\n }\n\n /*istanbul ignore else */\n if (singleColumn) {\n newTiles.forEach((elem) => {\n singleColumn.tiles.push({ id: elem.id, isCollapsed: false });\n });\n }\n }\n\n /*istanbul ignore else */\n if (singleColumn) {\n for (let tile of singleColumn.tiles) {\n this.getTileOrRemoveFromLayout(tile);\n }\n }\n\n /*istanbul ignore else */\n if (multiColumn) {\n for (let i = 0, n = multiColumn.length; i < n; i++) {\n for (let tile of multiColumn[i].tiles) {\n this.getTileOrRemoveFromLayout(tile);\n }\n }\n }\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
- import { Component, ViewChild, ViewContainerRef, } from '@angular/core';
1
+ import { Component, ComponentFactoryResolver, Injector, ViewChild, ViewContainerRef, } from '@angular/core';
2
+ import { SkyTileDashboardService } from '../tile-dashboard/tile-dashboard.service';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "../tile-dashboard/tile-dashboard.service";
4
5
  import * as i2 from "ng2-dragula";
@@ -32,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
32
33
  static: false,
33
34
  }]
34
35
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1kYXNoYm9hcmQtY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RpbGVzL3NyYy9tb2R1bGVzL3RpbGVzL3RpbGUtZGFzaGJvYXJkLWNvbHVtbi90aWxlLWRhc2hib2FyZC1jb2x1bW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGlsZXMvc3JjL21vZHVsZXMvdGlsZXMvdGlsZS1kYXNoYm9hcmQtY29sdW1uL3RpbGUtZGFzaGJvYXJkLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7Ozs7QUFJdkIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBRXRCOztHQUVHO0FBTUgsTUFBTSxPQUFPLCtCQUErQjtJQVcxQyxZQUNTLFFBQWtDLEVBQ2xDLFFBQWtCLEVBQ2pCLGdCQUF5QztRQUYxQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUFFakQsYUFBYSxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyx3QkFBd0IsR0FBRyxhQUFhLENBQUM7UUFFekQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQzNDLENBQUM7OzZIQXJCVSwrQkFBK0I7aUhBQS9CLCtCQUErQixnSkFNbEMsZ0JBQWdCLDZCQzFCMUIsaUdBR0E7NEZEaUJhLCtCQUErQjtrQkFMM0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxTQUFTLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQztvQkFDckQsV0FBVyxFQUFFLHdDQUF3QztpQkFDdEQ7NEtBVVEsT0FBTztzQkFKYixTQUFTO3VCQUFDLFNBQVMsRUFBRTt3QkFDcEIsSUFBSSxFQUFFLGdCQUFnQjt3QkFDdEIsTUFBTSxFQUFFLEtBQUs7cUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgSW5qZWN0b3IsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVRpbGVEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi4vdGlsZS1kYXNoYm9hcmQvdGlsZS1kYXNoYm9hcmQuc2VydmljZSc7XG5cbmxldCBjb2x1bW5JZEluZGV4ID0gMDtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRpbGUtZGFzaGJvYXJkLWNvbHVtbicsXG4gIHN0eWxlVXJsczogWycuL3RpbGUtZGFzaGJvYXJkLWNvbHVtbi5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vdGlsZS1kYXNoYm9hcmQtY29sdW1uLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGlsZURhc2hib2FyZENvbHVtbkNvbXBvbmVudCB7XG4gIHB1YmxpYyBiYWdJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb2x1bW5JZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnLCB7XG4gICAgcmVhZDogVmlld0NvbnRhaW5lclJlZixcbiAgICBzdGF0aWM6IGZhbHNlLFxuICB9KVxuICBwdWJsaWMgY29udGVudDogVmlld0NvbnRhaW5lclJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgZGFzaGJvYXJkU2VydmljZTogU2t5VGlsZURhc2hib2FyZFNlcnZpY2VcbiAgKSB7XG4gICAgY29sdW1uSWRJbmRleCsrO1xuXG4gICAgdGhpcy5jb2x1bW5JZCA9ICd0aWxlLWRhc2hib2FyZC1jb2x1bW4tJyArIGNvbHVtbklkSW5kZXg7XG5cbiAgICB0aGlzLmJhZ0lkID0gdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmJhZ0lkO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LXRpbGUtZGFzaGJvYXJkLWNvbHVtblwiIFtkcmFndWxhXT1cImJhZ0lkXCI+XG4gIDxkaXYgI2NvbnRlbnQ+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
36
+ //# sourceMappingURL=tile-dashboard-column.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile-dashboard-column.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/tiles/src/lib/modules/tiles/tile-dashboard-column/tile-dashboard-column.component.ts","../../../../../../../../../libs/components/tiles/src/lib/modules/tiles/tile-dashboard-column/tile-dashboard-column.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,wBAAwB,EACxB,QAAQ,EACR,SAAS,EACT,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;;;;AAEnF,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB;;GAEG;AAMH,MAAM,OAAO,+BAA+B;IAW1C,YACS,QAAkC,EAClC,QAAkB,EACjB,gBAAyC;QAF1C,aAAQ,GAAR,QAAQ,CAA0B;QAClC,aAAQ,GAAR,QAAQ,CAAU;QACjB,qBAAgB,GAAhB,gBAAgB,CAAyB;QAEjD,aAAa,EAAE,CAAC;QAEhB,IAAI,CAAC,QAAQ,GAAG,wBAAwB,GAAG,aAAa,CAAC;QAEzD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC3C,CAAC;;6HArBU,+BAA+B;iHAA/B,+BAA+B,gJAMlC,gBAAgB,6BC1B1B,iGAGA;4FDiBa,+BAA+B;kBAL3C,SAAS;mBAAC;oBACT,QAAQ,EAAE,2BAA2B;oBACrC,SAAS,EAAE,CAAC,wCAAwC,CAAC;oBACrD,WAAW,EAAE,wCAAwC;iBACtD;4KAUQ,OAAO;sBAJb,SAAS;uBAAC,SAAS,EAAE;wBACpB,IAAI,EAAE,gBAAgB;wBACtB,MAAM,EAAE,KAAK;qBACd","sourcesContent":["import {\n Component,\n ComponentFactoryResolver,\n Injector,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { SkyTileDashboardService } from '../tile-dashboard/tile-dashboard.service';\n\nlet columnIdIndex = 0;\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-tile-dashboard-column',\n styleUrls: ['./tile-dashboard-column.component.scss'],\n templateUrl: './tile-dashboard-column.component.html',\n})\nexport class SkyTileDashboardColumnComponent {\n public bagId: string;\n\n public columnId: string;\n\n @ViewChild('content', {\n read: ViewContainerRef,\n static: false,\n })\n public content: ViewContainerRef;\n\n constructor(\n public resolver: ComponentFactoryResolver,\n public injector: Injector,\n private dashboardService: SkyTileDashboardService\n ) {\n columnIdIndex++;\n\n this.columnId = 'tile-dashboard-column-' + columnIdIndex;\n\n this.bagId = this.dashboardService.bagId;\n }\n}\n","<div class=\"sky-tile-dashboard-column\" [dragula]=\"bagId\">\n <div #content></div>\n</div>\n"]}
@@ -0,0 +1,19 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { DragulaModule } from 'ng2-dragula';
4
+ import { SkyTileDashboardColumnComponent } from './tile-dashboard-column.component';
5
+ import * as i0 from "@angular/core";
6
+ export class SkyTileDashboardColumnModule {
7
+ }
8
+ SkyTileDashboardColumnModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardColumnModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ SkyTileDashboardColumnModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardColumnModule, declarations: [SkyTileDashboardColumnComponent], imports: [CommonModule, DragulaModule], exports: [SkyTileDashboardColumnComponent] });
10
+ SkyTileDashboardColumnModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardColumnModule, imports: [[CommonModule, DragulaModule]] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardColumnModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [SkyTileDashboardColumnComponent],
15
+ imports: [CommonModule, DragulaModule],
16
+ exports: [SkyTileDashboardColumnComponent],
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=tile-dashboard-column.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile-dashboard-column.module.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/tiles/src/lib/modules/tiles/tile-dashboard-column/tile-dashboard-column.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;;AAOpF,MAAM,OAAO,4BAA4B;;0HAA5B,4BAA4B;2HAA5B,4BAA4B,iBAJxB,+BAA+B,aACpC,YAAY,EAAE,aAAa,aAC3B,+BAA+B;2HAE9B,4BAA4B,YAH9B,CAAC,YAAY,EAAE,aAAa,CAAC;4FAG3B,4BAA4B;kBALxC,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,+BAA+B,CAAC;oBAC/C,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;oBACtC,OAAO,EAAE,CAAC,+BAA+B,CAAC;iBAC3C","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { DragulaModule } from 'ng2-dragula';\n\nimport { SkyTileDashboardColumnComponent } from './tile-dashboard-column.component';\n\n@NgModule({\n declarations: [SkyTileDashboardColumnComponent],\n imports: [CommonModule, DragulaModule],\n exports: [SkyTileDashboardColumnComponent],\n})\nexport class SkyTileDashboardColumnModule {}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tile-dashboard-config-layout-column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile-dashboard-config-layout-column.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/tiles/src/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-column.ts"],"names":[],"mappings":"","sourcesContent":["import { SkyTileDashboardConfigLayoutTile } from './tile-dashboard-config-layout-tile';\n\nexport interface SkyTileDashboardConfigLayoutColumn {\n /**\n * An array of `SkyTileDashboardConfigTile` objects that specifies the\n * tiles to include in the dashboard.\n */\n tiles: SkyTileDashboardConfigLayoutTile[];\n}\n"]}