@dragonworks/ngx-dashboard 20.0.6 → 20.1.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 (78) hide show
  1. package/fesm2022/dragonworks-ngx-dashboard.mjs +2250 -0
  2. package/fesm2022/dragonworks-ngx-dashboard.mjs.map +1 -0
  3. package/index.d.ts +727 -0
  4. package/package.json +45 -34
  5. package/ng-package.json +0 -7
  6. package/src/lib/__tests__/dashboard-component-widget-state-integration.spec.ts +0 -537
  7. package/src/lib/cell/__tests__/cell-resize.component.spec.ts +0 -442
  8. package/src/lib/cell/__tests__/cell.component.spec.ts +0 -541
  9. package/src/lib/cell/cell-context-menu.component.ts +0 -138
  10. package/src/lib/cell/cell-context-menu.service.ts +0 -36
  11. package/src/lib/cell/cell.component.html +0 -37
  12. package/src/lib/cell/cell.component.scss +0 -198
  13. package/src/lib/cell/cell.component.ts +0 -375
  14. package/src/lib/dashboard/dashboard.component.html +0 -18
  15. package/src/lib/dashboard/dashboard.component.scss +0 -17
  16. package/src/lib/dashboard/dashboard.component.ts +0 -187
  17. package/src/lib/dashboard-editor/dashboard-editor.component.html +0 -57
  18. package/src/lib/dashboard-editor/dashboard-editor.component.scss +0 -87
  19. package/src/lib/dashboard-editor/dashboard-editor.component.ts +0 -219
  20. package/src/lib/dashboard-viewer/__tests__/dashboard-viewer.component.spec.ts +0 -258
  21. package/src/lib/dashboard-viewer/dashboard-viewer.component.html +0 -20
  22. package/src/lib/dashboard-viewer/dashboard-viewer.component.scss +0 -50
  23. package/src/lib/dashboard-viewer/dashboard-viewer.component.ts +0 -70
  24. package/src/lib/drop-zone/__tests__/drop-zone.component.spec.ts +0 -465
  25. package/src/lib/drop-zone/drop-zone.component.html +0 -20
  26. package/src/lib/drop-zone/drop-zone.component.scss +0 -67
  27. package/src/lib/drop-zone/drop-zone.component.ts +0 -122
  28. package/src/lib/internal-widgets/unknown-widget/unknown-widget.component.ts +0 -72
  29. package/src/lib/models/cell-data.ts +0 -13
  30. package/src/lib/models/cell-dialog.ts +0 -7
  31. package/src/lib/models/cell-id.ts +0 -85
  32. package/src/lib/models/cell-position.ts +0 -15
  33. package/src/lib/models/dashboard-data.dto.ts +0 -44
  34. package/src/lib/models/dashboard-data.utils.ts +0 -49
  35. package/src/lib/models/drag-data.ts +0 -6
  36. package/src/lib/models/index.ts +0 -11
  37. package/src/lib/models/reserved-space.ts +0 -24
  38. package/src/lib/models/widget-factory.ts +0 -33
  39. package/src/lib/models/widget-id.ts +0 -70
  40. package/src/lib/models/widget.ts +0 -21
  41. package/src/lib/providers/cell-settings-dialog/cell-settings-dialog.component.ts +0 -127
  42. package/src/lib/providers/cell-settings-dialog/cell-settings-dialog.provider.ts +0 -15
  43. package/src/lib/providers/cell-settings-dialog/cell-settings-dialog.tokens.ts +0 -20
  44. package/src/lib/providers/cell-settings-dialog/default-cell-settings-dialog.provider.ts +0 -32
  45. package/src/lib/providers/cell-settings-dialog/index.ts +0 -3
  46. package/src/lib/providers/index.ts +0 -1
  47. package/src/lib/services/__tests__/dashboard-bridge.service.spec.ts +0 -220
  48. package/src/lib/services/__tests__/dashboard-viewport.service.spec.ts +0 -362
  49. package/src/lib/services/dashboard-bridge.service.ts +0 -155
  50. package/src/lib/services/dashboard-viewport.service.ts +0 -148
  51. package/src/lib/services/dashboard.service.ts +0 -62
  52. package/src/lib/store/__tests__/dashboard-store-collision-detection.spec.ts +0 -756
  53. package/src/lib/store/__tests__/dashboard-store-computed-properties.spec.ts +0 -974
  54. package/src/lib/store/__tests__/dashboard-store-drag-drop.spec.ts +0 -279
  55. package/src/lib/store/__tests__/dashboard-store-export-import.spec.ts +0 -780
  56. package/src/lib/store/__tests__/dashboard-store-grid-config.spec.ts +0 -128
  57. package/src/lib/store/__tests__/dashboard-store-query-methods.spec.ts +0 -229
  58. package/src/lib/store/__tests__/dashboard-store-resize-operations.spec.ts +0 -652
  59. package/src/lib/store/__tests__/dashboard-store-widget-management.spec.ts +0 -461
  60. package/src/lib/store/__tests__/dashboard-store-widget-state-preservation.spec.ts +0 -369
  61. package/src/lib/store/dashboard-store.ts +0 -239
  62. package/src/lib/store/features/drag-drop.feature.ts +0 -140
  63. package/src/lib/store/features/grid-config.feature.ts +0 -43
  64. package/src/lib/store/features/resize.feature.ts +0 -140
  65. package/src/lib/store/features/utils/collision.utils.ts +0 -89
  66. package/src/lib/store/features/utils/grid-query-internal.utils.ts +0 -37
  67. package/src/lib/store/features/utils/resize.utils.ts +0 -165
  68. package/src/lib/store/features/widget-management.feature.ts +0 -158
  69. package/src/lib/styles/_dashboard-grid-vars.scss +0 -11
  70. package/src/lib/widget-list/__tests__/widget-list-bridge-integration.spec.ts +0 -137
  71. package/src/lib/widget-list/widget-list.component.html +0 -22
  72. package/src/lib/widget-list/widget-list.component.scss +0 -154
  73. package/src/lib/widget-list/widget-list.component.ts +0 -106
  74. package/src/public-api.ts +0 -21
  75. package/src/test-setup.ts +0 -10
  76. package/tsconfig.lib.json +0 -15
  77. package/tsconfig.lib.prod.json +0 -11
  78. package/tsconfig.spec.json +0 -14
@@ -1,279 +0,0 @@
1
- import { TestBed } from '@angular/core/testing';
2
- import { DashboardStore } from '../dashboard-store';
3
- import { CellIdUtils, WidgetIdUtils, DragData, WidgetMetadata, WidgetFactory } from '../../models';
4
- import { DashboardService } from '../../services/dashboard.service';
5
-
6
- describe('DashboardStore - Drag & Drop Operations', () => {
7
- let store: InstanceType<typeof DashboardStore>;
8
- let testWidgetMetadata: WidgetMetadata;
9
- let mockWidgetFactory: WidgetFactory;
10
- let dashboardService: jasmine.SpyObj<DashboardService>;
11
-
12
- beforeEach(() => {
13
- const spy = jasmine.createSpyObj('DashboardService', ['getFactory']);
14
-
15
- TestBed.configureTestingModule({
16
- providers: [
17
- DashboardStore,
18
- { provide: DashboardService, useValue: spy }
19
- ]
20
- });
21
-
22
- store = TestBed.inject(DashboardStore);
23
- dashboardService = TestBed.inject(DashboardService) as jasmine.SpyObj<DashboardService>;
24
- store.setGridConfig({ rows: 16, columns: 16 });
25
-
26
- testWidgetMetadata = {
27
- widgetTypeid: 'test-widget',
28
- name: 'Test Widget',
29
- description: 'A test widget for unit tests',
30
- svgIcon: '<svg></svg>'
31
- };
32
-
33
- mockWidgetFactory = {
34
- widgetTypeid: 'test-widget',
35
- createComponent: jasmine.createSpy('createComponent')
36
- } as any;
37
-
38
- dashboardService.getFactory.and.returnValue(mockWidgetFactory);
39
- });
40
-
41
- describe('dragData management', () => {
42
- it('should start drag with widget data', () => {
43
- const dragData: DragData = {
44
- kind: 'widget',
45
- content: testWidgetMetadata
46
- };
47
-
48
- store.startDrag(dragData);
49
- expect(store.dragData()).toEqual(dragData);
50
- });
51
-
52
- it('should start drag with cell data', () => {
53
- const dragData: DragData = {
54
- kind: 'cell',
55
- content: {
56
- widgetId: WidgetIdUtils.generate(),
57
- cellId: CellIdUtils.create(5, 5),
58
- row: 5,
59
- col: 5,
60
- rowSpan: 2,
61
- colSpan: 2,
62
- }
63
- };
64
-
65
- store.startDrag(dragData);
66
- expect(store.dragData()).toEqual(dragData);
67
- });
68
-
69
- it('should clear drag data when ended', () => {
70
- // First set some drag data
71
- const dragData: DragData = {
72
- kind: 'widget',
73
- content: testWidgetMetadata
74
- };
75
- store.startDrag(dragData);
76
- expect(store.dragData()).toEqual(dragData);
77
-
78
- // Then clear it
79
- store.endDrag();
80
- expect(store.dragData()).toBeNull();
81
- });
82
-
83
- it('should overwrite existing drag data', () => {
84
- const dragData1: DragData = {
85
- kind: 'widget',
86
- content: testWidgetMetadata
87
- };
88
-
89
- const dragData2: DragData = {
90
- kind: 'cell',
91
- content: {
92
- widgetId: WidgetIdUtils.generate(),
93
- cellId: CellIdUtils.create(3, 3),
94
- row: 3,
95
- col: 3,
96
- rowSpan: 1,
97
- colSpan: 1,
98
- }
99
- };
100
-
101
- store.startDrag(dragData1);
102
- expect(store.dragData()).toEqual(dragData1);
103
-
104
- store.startDrag(dragData2);
105
- expect(store.dragData()).toEqual(dragData2);
106
- });
107
- });
108
-
109
-
110
- describe('endDrag', () => {
111
- it('should clear drag data and hovered drop zone', () => {
112
- const dragData: DragData = {
113
- kind: 'widget',
114
- content: testWidgetMetadata
115
- };
116
-
117
- store.startDrag(dragData);
118
- store.setHoveredDropZone({ row: 5, col: 5 });
119
-
120
- expect(store.dragData()).toEqual(dragData);
121
- expect(store.hoveredDropZone()).toEqual({ row: 5, col: 5 });
122
-
123
- store.endDrag();
124
-
125
- expect(store.dragData()).toBeNull();
126
- expect(store.hoveredDropZone()).toBeNull();
127
- });
128
-
129
- it('should work when no drag is active', () => {
130
- expect(store.dragData()).toBeNull();
131
- expect(store.hoveredDropZone()).toBeNull();
132
-
133
- store.endDrag();
134
-
135
- expect(store.dragData()).toBeNull();
136
- expect(store.hoveredDropZone()).toBeNull();
137
- });
138
-
139
- it('should clear drag data without affecting hovered zone if it was null', () => {
140
- const dragData: DragData = {
141
- kind: 'widget',
142
- content: testWidgetMetadata
143
- };
144
-
145
- store.startDrag(dragData);
146
- expect(store.dragData()).toEqual(dragData);
147
- expect(store.hoveredDropZone()).toBeNull();
148
-
149
- store.endDrag();
150
-
151
- expect(store.dragData()).toBeNull();
152
- expect(store.hoveredDropZone()).toBeNull();
153
- });
154
- });
155
-
156
- describe('setHoveredDropZone', () => {
157
- it('should set hovered drop zone', () => {
158
- const zone = { row: 8, col: 12 };
159
- store.setHoveredDropZone(zone);
160
- expect(store.hoveredDropZone()).toEqual(zone);
161
- });
162
-
163
- it('should update hovered drop zone', () => {
164
- const zone1 = { row: 5, col: 5 };
165
- const zone2 = { row: 10, col: 15 };
166
-
167
- store.setHoveredDropZone(zone1);
168
- expect(store.hoveredDropZone()).toEqual(zone1);
169
-
170
- store.setHoveredDropZone(zone2);
171
- expect(store.hoveredDropZone()).toEqual(zone2);
172
- });
173
-
174
- it('should clear hovered drop zone when null', () => {
175
- const zone = { row: 5, col: 5 };
176
- store.setHoveredDropZone(zone);
177
- expect(store.hoveredDropZone()).toEqual(zone);
178
-
179
- store.setHoveredDropZone(null);
180
- expect(store.hoveredDropZone()).toBeNull();
181
- });
182
-
183
- it('should handle boundary positions', () => {
184
- const zone1 = { row: 1, col: 1 };
185
- const zone2 = { row: 16, col: 16 };
186
-
187
- store.setHoveredDropZone(zone1);
188
- expect(store.hoveredDropZone()).toEqual(zone1);
189
-
190
- store.setHoveredDropZone(zone2);
191
- expect(store.hoveredDropZone()).toEqual(zone2);
192
- });
193
-
194
- it('should allow setting same zone multiple times', () => {
195
- const zone = { row: 7, col: 9 };
196
-
197
- store.setHoveredDropZone(zone);
198
- expect(store.hoveredDropZone()).toEqual(zone);
199
-
200
- store.setHoveredDropZone(zone);
201
- expect(store.hoveredDropZone()).toEqual(zone);
202
- });
203
- });
204
-
205
- describe('Drag & Drop Integration', () => {
206
- it('should maintain drag state during hover changes', () => {
207
- const dragData: DragData = {
208
- kind: 'widget',
209
- content: testWidgetMetadata
210
- };
211
-
212
- store.startDrag(dragData);
213
- store.setHoveredDropZone({ row: 5, col: 5 });
214
- store.setHoveredDropZone({ row: 8, col: 8 });
215
-
216
- expect(store.dragData()).toEqual(dragData);
217
- expect(store.hoveredDropZone()).toEqual({ row: 8, col: 8 });
218
- });
219
-
220
- it('should maintain hover state during drag changes', () => {
221
- const zone = { row: 10, col: 10 };
222
- const dragData1: DragData = {
223
- kind: 'widget',
224
- content: testWidgetMetadata
225
- };
226
- const dragData2: DragData = {
227
- kind: 'cell',
228
- content: {
229
- widgetId: WidgetIdUtils.generate(),
230
- cellId: CellIdUtils.create(3, 3),
231
- row: 3,
232
- col: 3,
233
- rowSpan: 1,
234
- colSpan: 1,
235
- }
236
- };
237
-
238
- store.setHoveredDropZone(zone);
239
- store.startDrag(dragData1);
240
- store.startDrag(dragData2);
241
-
242
- expect(store.hoveredDropZone()).toEqual(zone);
243
- expect(store.dragData()).toEqual(dragData2);
244
- });
245
-
246
- it('should handle complex drag operation sequence', () => {
247
- const dragData: DragData = {
248
- kind: 'cell',
249
- content: {
250
- widgetId: WidgetIdUtils.generate(),
251
- cellId: CellIdUtils.create(5, 5),
252
- row: 5,
253
- col: 5,
254
- rowSpan: 2,
255
- colSpan: 3,
256
- }
257
- };
258
-
259
- // Start drag
260
- store.startDrag(dragData);
261
- expect(store.dragData()).toEqual(dragData);
262
-
263
- // Move through different zones
264
- store.setHoveredDropZone({ row: 1, col: 1 });
265
- expect(store.hoveredDropZone()).toEqual({ row: 1, col: 1 });
266
-
267
- store.setHoveredDropZone({ row: 5, col: 8 });
268
- expect(store.hoveredDropZone()).toEqual({ row: 5, col: 8 });
269
-
270
- store.setHoveredDropZone({ row: 12, col: 15 });
271
- expect(store.hoveredDropZone()).toEqual({ row: 12, col: 15 });
272
-
273
- // End drag
274
- store.endDrag();
275
- expect(store.dragData()).toBeNull();
276
- expect(store.hoveredDropZone()).toBeNull();
277
- });
278
- });
279
- });