@jumoo/usync 17.5.0 → 18.2.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.
@@ -1,5 +1,5 @@
1
1
  export type ClientOptions = {
2
- baseUrl: 'http://localhost:16903' | (string & {});
2
+ baseUrl: 'https://localhost:44304/' | (string & {});
3
3
  };
4
4
  export declare enum ChangeDetailType {
5
5
  NO_CHANGE = "NoChange",
@@ -27,6 +27,18 @@ export declare enum ChangeType {
27
27
  CLEAN = "Clean",
28
28
  REMOVED = "Removed"
29
29
  }
30
+ export type EntityTagHeaderValue = {
31
+ tag: StringSegment;
32
+ isWeak: boolean;
33
+ };
34
+ export type FileContentResult = {
35
+ fileContents: string;
36
+ contentType: null | string;
37
+ fileDownloadName: null | string;
38
+ lastModified?: null | string;
39
+ entityTag?: null | EntityTagHeaderValue;
40
+ enableRangeProcessing: boolean;
41
+ };
30
42
  export type HandlerSettings = {
31
43
  enabled: boolean;
32
44
  actions: Array<string>;
@@ -49,18 +61,25 @@ export declare enum HandlerStatus {
49
61
  export type PerformActionRequest = {
50
62
  requestId: string;
51
63
  action: string;
52
- stepNumber: number;
53
- options?: USyncOptions | null;
54
- username?: string | null;
64
+ stepNumber: number | string;
65
+ options?: null | USyncOptions;
66
+ username?: null | string;
55
67
  };
56
68
  export type PerformActionResponse = {
57
69
  requestId: string;
58
- status?: Array<SyncHandlerSummary> | null;
59
- actions?: Array<USyncActionView> | null;
70
+ status?: null | Array<SyncHandlerSummary>;
71
+ actions?: null | Array<USyncActionView>;
60
72
  complete: boolean;
61
73
  inBackground: boolean;
62
- operationId?: string | null;
63
- message?: string | null;
74
+ operationId?: null | string;
75
+ message?: null | string;
76
+ };
77
+ export type StringSegment = {
78
+ buffer?: null | string;
79
+ offset: number | string;
80
+ length: number | string;
81
+ value?: null | string;
82
+ hasValue: boolean;
64
83
  };
65
84
  export type SyncActionButton = {
66
85
  key: string;
@@ -77,11 +96,11 @@ export type SyncActionGroup = {
77
96
  icon: string;
78
97
  groupName: string;
79
98
  buttons: Array<SyncActionButton>;
80
- lastSync?: string | null;
99
+ lastSync?: null | string;
81
100
  };
82
101
  export type SyncFileVersionCheckResult = {
83
102
  isCurrent: boolean;
84
- formatVersion?: string | null;
103
+ formatVersion?: null | string;
85
104
  hmacMatch: boolean;
86
105
  };
87
106
  export declare enum SyncFolderMode {
@@ -93,34 +112,34 @@ export type SyncHandlerSummary = {
93
112
  icon: string;
94
113
  name: string;
95
114
  status: HandlerStatus;
96
- changes: number;
115
+ changes: number | string;
97
116
  inError: boolean;
98
117
  };
99
118
  export type SyncLegacyCheckResponse = {
100
119
  hasLegacy: boolean;
101
- legacyFolder?: string | null;
120
+ legacyFolder?: null | string;
102
121
  legacyTypes: Array<string>;
103
122
  latestFolder: string;
104
123
  latestVersion: string;
105
124
  };
106
125
  export type SyncOperationStatusResponse = {
107
126
  operationId: string;
108
- requestId?: string | null;
109
- action?: string | null;
127
+ requestId?: null | string;
128
+ action?: null | string;
110
129
  operationStatus: string;
111
130
  complete: boolean;
112
- status?: Array<SyncHandlerSummary> | null;
113
- actions?: Array<USyncActionView> | null;
114
- message?: string | null;
131
+ status?: null | Array<SyncHandlerSummary>;
132
+ actions?: null | Array<USyncActionView>;
133
+ message?: null | string;
115
134
  };
116
135
  export declare enum SyncProcessingMode {
117
136
  NORMAL = "Normal",
118
137
  BACKGROUND = "Background"
119
138
  }
120
139
  export type SyncRunningOperationResponse = {
121
- operationId?: string | null;
122
- requestId?: string | null;
123
- action?: string | null;
140
+ operationId?: null | string;
141
+ requestId?: null | string;
142
+ action?: null | string;
124
143
  };
125
144
  export type SyncSelectableSet = {
126
145
  name: string;
@@ -138,13 +157,13 @@ export type USyncActionView = {
138
157
  change: ChangeType;
139
158
  success: boolean;
140
159
  details: Array<USyncChange>;
141
- message?: string | null;
160
+ message?: null | string;
142
161
  };
143
162
  export type USyncAddonInfo = {
144
163
  version: string;
145
164
  };
146
165
  export type USyncAddonSplash = {
147
- [key: string]: never;
166
+ [key: string]: unknown;
148
167
  };
149
168
  export type USyncChange = {
150
169
  success: boolean;
@@ -194,17 +213,15 @@ export type USyncSettings = {
194
213
  failOnMissingParent: boolean;
195
214
  failOnDuplicates: boolean;
196
215
  cacheFolderKeys: boolean;
216
+ cacheImportState: boolean;
197
217
  showVersionCheckWarning: boolean;
198
- customMappings: {
199
- [key: string]: string;
200
- };
201
218
  enableHistory: boolean;
202
219
  defaultExtension: string;
203
220
  importOnFirstBoot: boolean;
204
221
  firstBootGroup: string;
205
222
  disableDashboard: boolean;
206
223
  summaryDashboard: boolean;
207
- summaryLimit: number;
224
+ summaryLimit: number | string;
208
225
  hideAddOns: string;
209
226
  disableNotificationSuppression: boolean;
210
227
  backgroundNotifications: boolean;
@@ -215,25 +232,6 @@ export type USyncSettings = {
215
232
  additionalBadNames: Array<string>;
216
233
  includeWindowsReservedNames: boolean;
217
234
  };
218
- export type GetActionsData = {
219
- body?: never;
220
- path?: never;
221
- query?: never;
222
- url: '/umbraco/usync/api/v1/Actions';
223
- };
224
- export type GetActionsErrors = {
225
- /**
226
- * The resource is protected and requires an authentication token
227
- */
228
- 401: unknown;
229
- };
230
- export type GetActionsResponses = {
231
- /**
232
- * OK
233
- */
234
- 200: Array<SyncActionGroup>;
235
- };
236
- export type GetActionsResponse = GetActionsResponses[keyof GetActionsResponses];
237
235
  export type GetActionsBySetData = {
238
236
  body?: never;
239
237
  path?: never;
@@ -255,83 +253,64 @@ export type GetActionsBySetResponses = {
255
253
  200: Array<SyncActionGroup>;
256
254
  };
257
255
  export type GetActionsBySetResponse = GetActionsBySetResponses[keyof GetActionsBySetResponses];
258
- export type DownloadData = {
256
+ export type PostDownloadData = {
259
257
  body?: never;
260
258
  path?: never;
261
259
  query?: never;
262
260
  url: '/umbraco/usync/api/v1/Download';
263
261
  };
264
- export type DownloadErrors = {
262
+ export type PostDownloadErrors = {
265
263
  /**
266
264
  * The resource is protected and requires an authentication token
267
265
  */
268
266
  401: unknown;
269
267
  };
270
- export type DownloadResponses = {
268
+ export type PostDownloadResponses = {
271
269
  /**
272
270
  * OK
273
271
  */
274
- 200: Blob | File;
272
+ 200: FileContentResult;
275
273
  };
276
- export type DownloadResponse = DownloadResponses[keyof DownloadResponses];
277
- export type GetSyncFileInfoData = {
278
- body?: never;
279
- path?: never;
280
- query?: never;
281
- url: '/umbraco/usync/api/v1/GetSyncFileInfo';
282
- };
283
- export type GetSyncFileInfoErrors = {
284
- /**
285
- * The resource is protected and requires an authentication token
286
- */
287
- 401: unknown;
288
- };
289
- export type GetSyncFileInfoResponses = {
290
- /**
291
- * OK
292
- */
293
- 200: SyncFileVersionCheckResult;
294
- };
295
- export type GetSyncFileInfoResponse = GetSyncFileInfoResponses[keyof GetSyncFileInfoResponses];
296
- export type ImportSingleData = {
297
- body?: USyncActionView;
274
+ export type PostDownloadResponse = PostDownloadResponses[keyof PostDownloadResponses];
275
+ export type PostImportData = {
276
+ body: USyncActionView;
298
277
  path?: never;
299
278
  query?: never;
300
279
  url: '/umbraco/usync/api/v1/Import';
301
280
  };
302
- export type ImportSingleErrors = {
281
+ export type PostImportErrors = {
303
282
  /**
304
283
  * The resource is protected and requires an authentication token
305
284
  */
306
285
  401: unknown;
307
286
  };
308
- export type ImportSingleResponses = {
287
+ export type PostImportResponses = {
309
288
  /**
310
289
  * OK
311
290
  */
312
291
  200: USyncActionView;
313
292
  };
314
- export type ImportSingleResponse = ImportSingleResponses[keyof ImportSingleResponses];
315
- export type PerformActionData = {
316
- body?: PerformActionRequest;
293
+ export type PostImportResponse = PostImportResponses[keyof PostImportResponses];
294
+ export type PostPerformData = {
295
+ body: PerformActionRequest;
317
296
  path?: never;
318
297
  query?: never;
319
298
  url: '/umbraco/usync/api/v1/Perform';
320
299
  };
321
- export type PerformActionErrors = {
300
+ export type PostPerformErrors = {
322
301
  /**
323
302
  * The resource is protected and requires an authentication token
324
303
  */
325
304
  401: unknown;
326
305
  };
327
- export type PerformActionResponses = {
306
+ export type PostPerformResponses = {
328
307
  /**
329
308
  * OK
330
309
  */
331
310
  200: PerformActionResponse;
332
311
  };
333
- export type PerformActionResponse2 = PerformActionResponses[keyof PerformActionResponses];
334
- export type ProcessUploadData = {
312
+ export type PostPerformResponse = PostPerformResponses[keyof PostPerformResponses];
313
+ export type PostProcessUploadData = {
335
314
  body?: never;
336
315
  path?: never;
337
316
  query?: {
@@ -339,39 +318,39 @@ export type ProcessUploadData = {
339
318
  };
340
319
  url: '/umbraco/usync/api/v1/ProcessUpload';
341
320
  };
342
- export type ProcessUploadErrors = {
321
+ export type PostProcessUploadErrors = {
343
322
  /**
344
323
  * The resource is protected and requires an authentication token
345
324
  */
346
325
  401: unknown;
347
326
  };
348
- export type ProcessUploadResponses = {
327
+ export type PostProcessUploadResponses = {
349
328
  /**
350
329
  * OK
351
330
  */
352
331
  200: UploadImportResult;
353
332
  };
354
- export type ProcessUploadResponse = ProcessUploadResponses[keyof ProcessUploadResponses];
355
- export type RunningData = {
333
+ export type PostProcessUploadResponse = PostProcessUploadResponses[keyof PostProcessUploadResponses];
334
+ export type GetRunningData = {
356
335
  body?: never;
357
336
  path?: never;
358
337
  query?: never;
359
338
  url: '/umbraco/usync/api/v1/Running';
360
339
  };
361
- export type RunningErrors = {
340
+ export type GetRunningErrors = {
362
341
  /**
363
342
  * The resource is protected and requires an authentication token
364
343
  */
365
344
  401: unknown;
366
345
  };
367
- export type RunningResponses = {
346
+ export type GetRunningResponses = {
368
347
  /**
369
348
  * OK
370
349
  */
371
350
  200: SyncRunningOperationResponse;
372
351
  };
373
- export type RunningResponse = RunningResponses[keyof RunningResponses];
374
- export type StatusData = {
352
+ export type GetRunningResponse = GetRunningResponses[keyof GetRunningResponses];
353
+ export type GetStatusData = {
375
354
  body?: never;
376
355
  path?: never;
377
356
  query?: {
@@ -379,95 +358,114 @@ export type StatusData = {
379
358
  };
380
359
  url: '/umbraco/usync/api/v1/Status';
381
360
  };
382
- export type StatusErrors = {
361
+ export type GetStatusErrors = {
383
362
  /**
384
363
  * The resource is protected and requires an authentication token
385
364
  */
386
365
  401: unknown;
387
366
  };
388
- export type StatusResponses = {
367
+ export type GetStatusResponses = {
389
368
  /**
390
369
  * OK
391
370
  */
392
371
  200: SyncOperationStatusResponse;
393
372
  };
394
- export type StatusResponse = StatusResponses[keyof StatusResponses];
395
- export type MergeExportFolderData = {
373
+ export type GetStatusResponse = GetStatusResponses[keyof GetStatusResponses];
374
+ export type GetSyncFileInfoData = {
375
+ body?: never;
376
+ path?: never;
377
+ query?: never;
378
+ url: '/umbraco/usync/api/v1/SyncFileInfo';
379
+ };
380
+ export type GetSyncFileInfoErrors = {
381
+ /**
382
+ * The resource is protected and requires an authentication token
383
+ */
384
+ 401: unknown;
385
+ };
386
+ export type GetSyncFileInfoResponses = {
387
+ /**
388
+ * OK
389
+ */
390
+ 200: SyncFileVersionCheckResult;
391
+ };
392
+ export type GetSyncFileInfoResponse = GetSyncFileInfoResponses[keyof GetSyncFileInfoResponses];
393
+ export type PostMergeExportData = {
396
394
  body?: never;
397
395
  path?: never;
398
396
  query?: never;
399
397
  url: '/umbraco/usync/api/v1/MergeExport';
400
398
  };
401
- export type MergeExportFolderErrors = {
399
+ export type PostMergeExportErrors = {
402
400
  /**
403
401
  * The resource is protected and requires an authentication token
404
402
  */
405
403
  401: unknown;
406
404
  };
407
- export type MergeExportFolderResponses = {
405
+ export type PostMergeExportResponses = {
408
406
  /**
409
407
  * OK
410
408
  */
411
- 200: number;
409
+ 200: number | string;
412
410
  };
413
- export type MergeExportFolderResponse = MergeExportFolderResponses[keyof MergeExportFolderResponses];
414
- export type CheckLegacyData = {
411
+ export type PostMergeExportResponse = PostMergeExportResponses[keyof PostMergeExportResponses];
412
+ export type GetCheckLegacyData = {
415
413
  body?: never;
416
414
  path?: never;
417
415
  query?: never;
418
416
  url: '/umbraco/usync/api/v1/CheckLegacy';
419
417
  };
420
- export type CheckLegacyErrors = {
418
+ export type GetCheckLegacyErrors = {
421
419
  /**
422
420
  * The resource is protected and requires an authentication token
423
421
  */
424
422
  401: unknown;
425
423
  };
426
- export type CheckLegacyResponses = {
424
+ export type GetCheckLegacyResponses = {
427
425
  /**
428
426
  * OK
429
427
  */
430
428
  200: SyncLegacyCheckResponse;
431
429
  };
432
- export type CheckLegacyResponse = CheckLegacyResponses[keyof CheckLegacyResponses];
433
- export type CopyLegacyData = {
430
+ export type GetCheckLegacyResponse = GetCheckLegacyResponses[keyof GetCheckLegacyResponses];
431
+ export type PostCopyLegacyData = {
434
432
  body?: never;
435
433
  path?: never;
436
434
  query?: never;
437
435
  url: '/umbraco/usync/api/v1/CopyLegacy';
438
436
  };
439
- export type CopyLegacyErrors = {
437
+ export type PostCopyLegacyErrors = {
440
438
  /**
441
439
  * The resource is protected and requires an authentication token
442
440
  */
443
441
  401: unknown;
444
442
  };
445
- export type CopyLegacyResponses = {
443
+ export type PostCopyLegacyResponses = {
446
444
  /**
447
445
  * OK
448
446
  */
449
447
  200: boolean;
450
448
  };
451
- export type CopyLegacyResponse = CopyLegacyResponses[keyof CopyLegacyResponses];
452
- export type IgnoreLegacyData = {
449
+ export type PostCopyLegacyResponse = PostCopyLegacyResponses[keyof PostCopyLegacyResponses];
450
+ export type PostIgnoreLegacyData = {
453
451
  body?: never;
454
452
  path?: never;
455
453
  query?: never;
456
454
  url: '/umbraco/usync/api/v1/IgnoreLegacy';
457
455
  };
458
- export type IgnoreLegacyErrors = {
456
+ export type PostIgnoreLegacyErrors = {
459
457
  /**
460
458
  * The resource is protected and requires an authentication token
461
459
  */
462
460
  401: unknown;
463
461
  };
464
- export type IgnoreLegacyResponses = {
462
+ export type PostIgnoreLegacyResponses = {
465
463
  /**
466
464
  * OK
467
465
  */
468
466
  200: boolean;
469
467
  };
470
- export type IgnoreLegacyResponse = IgnoreLegacyResponses[keyof IgnoreLegacyResponses];
468
+ export type PostIgnoreLegacyResponse = PostIgnoreLegacyResponses[keyof PostIgnoreLegacyResponses];
471
469
  export type GetAddOnsData = {
472
470
  body?: never;
473
471
  path?: never;
@@ -487,26 +485,26 @@ export type GetAddOnsResponses = {
487
485
  200: USyncAddonInfo;
488
486
  };
489
487
  export type GetAddOnsResponse = GetAddOnsResponses[keyof GetAddOnsResponses];
490
- export type GetAddonSplashData = {
488
+ export type GetAddOnSplashData = {
491
489
  body?: never;
492
490
  path?: never;
493
491
  query?: never;
494
492
  url: '/umbraco/usync/api/v1/AddOnSplash';
495
493
  };
496
- export type GetAddonSplashErrors = {
494
+ export type GetAddOnSplashErrors = {
497
495
  /**
498
496
  * The resource is protected and requires an authentication token
499
497
  */
500
498
  401: unknown;
501
499
  };
502
- export type GetAddonSplashResponses = {
500
+ export type GetAddOnSplashResponses = {
503
501
  /**
504
502
  * OK
505
503
  */
506
504
  200: USyncAddonSplash;
507
505
  };
508
- export type GetAddonSplashResponse = GetAddonSplashResponses[keyof GetAddonSplashResponses];
509
- export type GetHandlerSetSettingsData = {
506
+ export type GetAddOnSplashResponse = GetAddOnSplashResponses[keyof GetAddOnSplashResponses];
507
+ export type GetHandlerSettingsData = {
510
508
  body?: never;
511
509
  path?: never;
512
510
  query?: {
@@ -514,19 +512,19 @@ export type GetHandlerSetSettingsData = {
514
512
  };
515
513
  url: '/umbraco/usync/api/v1/HandlerSettings';
516
514
  };
517
- export type GetHandlerSetSettingsErrors = {
515
+ export type GetHandlerSettingsErrors = {
518
516
  /**
519
517
  * The resource is protected and requires an authentication token
520
518
  */
521
519
  401: unknown;
522
520
  };
523
- export type GetHandlerSetSettingsResponses = {
521
+ export type GetHandlerSettingsResponses = {
524
522
  /**
525
523
  * OK
526
524
  */
527
525
  200: USyncHandlerSetSettings;
528
526
  };
529
- export type GetHandlerSetSettingsResponse = GetHandlerSetSettingsResponses[keyof GetHandlerSetSettingsResponses];
527
+ export type GetHandlerSettingsResponse = GetHandlerSettingsResponses[keyof GetHandlerSettingsResponses];
530
528
  export type GetSetsData = {
531
529
  body?: never;
532
530
  path?: never;
@@ -36,10 +36,12 @@ let uSyncActionBox = class uSyncActionBox extends UmbLitElement {
36
36
  return html `
37
37
  <uui-box class="action-box ${this.disabled ? 'disabled' : ''}">
38
38
  <div class="box-content">
39
- <h2 class="box-heading" title=${this.getLastSyncDate()}>
40
- ${this.localize.termOrDefault(`uSync_group${this.group?.groupName}`, this.group?.groupName ?? '')}
41
- </h2>
42
- <umb-icon name=${this.group?.icon}></umb-icon>
39
+ <div class="box-heading">
40
+ <h2 class="box-heading" title=${this.getLastSyncDate()}>
41
+ ${this.localize.termOrDefault(`uSync_group${this.group?.groupName}`, this.group?.groupName ?? '')}
42
+ </h2>
43
+ <umb-icon name=${this.group?.icon}></umb-icon>
44
+ </div>
43
45
  <div class="box-buttons">${dropdownButtons}</div>
44
46
  </div>
45
47
  </uui-box>
@@ -64,6 +66,7 @@ uSyncActionBox.styles = css `
64
66
 
65
67
  .action-box {
66
68
  transition: opacity 0.2s ease-in-out;
69
+ --uui-box-default-padding: var(--uui-size-space-4) 0;
67
70
  }
68
71
 
69
72
  .box-content {
@@ -79,7 +82,7 @@ uSyncActionBox.styles = css `
79
82
  }
80
83
 
81
84
  umb-icon {
82
- margin: var(--uui-size-8) 0 var(--uui-size-10);
85
+ margin: var(--uui-size-4) 0 var(--uui-size-4);
83
86
  font-size: var(--uui-type-h2-size);
84
87
  color: var(--uui-color-text-alt);
85
88
  }
@@ -102,6 +105,13 @@ uSyncActionBox.styles = css `
102
105
  font-style: italic;
103
106
  font-size: var(--uui-size-5);
104
107
  }
108
+
109
+ .box-heading {
110
+ display: flex;
111
+ flex-direction: row-reverse;
112
+ gap: var(--uui-size-2);
113
+ align-items: center;
114
+ }
105
115
  `;
106
116
  __decorate([
107
117
  property({ type: Object })
@@ -12,7 +12,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
12
12
  var _uSyncProcessBox_instances, _uSyncProcessBox_hideProgress, _uSyncProcessBox_camelize;
13
13
  import { customElement, LitElement, css, html, property, nothing, state, classMap, } from '@umbraco-cms/backoffice/external/lit';
14
14
  import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api';
15
- import { USYNC_SIGNALR_CONTEXT_TOKEN, HandlerStatus, } from '@jumoo/uSync';
15
+ import { HandlerStatus } from '@jumoo/uSync';
16
+ import { USYNC_SIGNALR_CONTEXT_TOKEN, } from '@jumoo/uSync';
16
17
  /**
17
18
  * Provides the progress box while things happen.
18
19
  */
@@ -74,7 +75,9 @@ let uSyncProcessBox = class uSyncProcessBox extends UmbElementMixin(LitElement)
74
75
  const progressClass = { hidden: !this.showProgress };
75
76
  return html `
76
77
  <uui-box>
77
- <h2>${this.localize.termOrDefault(`uSync_group${this.title}`, this.title)}</h2>
78
+ <div class="header">
79
+ <h2>${this.localize.termOrDefault(`uSync_group${this.title}`, this.title)}</h2>
80
+ </div>
78
81
  <div class="action-list">${actionHtml}</div>
79
82
  <div class="update-box">${this.updateMsg?.message}</div>
80
83
  <uui-progress-bar
@@ -120,8 +123,13 @@ uSyncProcessBox.styles = css `
120
123
  display: block;
121
124
  }
122
125
 
126
+ .header {
127
+ display: flex;
128
+ justify-content: center;
129
+ padding: var(uui-size-space-3);
130
+ }
131
+
123
132
  h2 {
124
- text-align: center;
125
133
  margin: 0;
126
134
  }
127
135
 
@@ -140,11 +148,11 @@ uSyncProcessBox.styles = css `
140
148
  min-width: var(--uui-size-layout-5);
141
149
  color: var(--uui-color-text-alt);
142
150
  opacity: 0.67;
143
- margin: var(--uui-size-space-4) 0 var(--uui-size-space-6);
151
+ margin: var(--uui-size-space-2) 0;
144
152
  }
145
153
 
146
154
  .action h4 {
147
- margin: var(--uui-size-space-4) 0;
155
+ margin: var(--uui-size-space-2) 0;
148
156
  }
149
157
 
150
158
  .icon-holder {
@@ -91,6 +91,10 @@ uSyncResultRow.styles = css `
91
91
  cursor: pointer;
92
92
  }
93
93
 
94
+ :host:last-child {
95
+ background-color: blue;
96
+ }
97
+
94
98
  .row:hover {
95
99
  background-color: var(--uui-color-surface-alt);
96
100
  }
@@ -38,9 +38,8 @@ let uSyncResultGroupView = class uSyncResultGroupView extends UmbLitElement {
38
38
  class=${classMap({ expanded: this.expanded })}></uui-icon>
39
39
  </div>
40
40
  </div>
41
- <uui-table>
42
- ${when(this.expanded == true, () => html `${this.renderGroupedRows(this.results)}`)}
43
- </uui-table>
41
+
42
+ ${when(this.expanded == true, () => html `<uui-table>${this.renderGroupedRows(this.results)}</uui-table>`)}
44
43
  </uui-box>
45
44
  `;
46
45
  }
@@ -59,6 +58,15 @@ uSyncResultGroupView.styles = css `
59
58
  --uui-box-default-padding: 0;
60
59
  }
61
60
 
61
+ uui-table {
62
+ border-top-left-radius: 0;
63
+ border-top-right-radius: 0;
64
+ }
65
+
66
+ usync-result-row:last-child row {
67
+ border-bottom: none;
68
+ }
69
+
62
70
  .expanded {
63
71
  border-bottom: 1px solid var(--uui-color-border);
64
72
  }
@@ -135,6 +135,7 @@ uSyncResultsView.styles = css `
135
135
  justify-content: space-between;
136
136
  padding: var(--uui-size-space-4);
137
137
  border: 1px solid var(--uui-color-border);
138
+ border-radius: var(--uui-border-radius);
138
139
  padding: var(--uui-size-space-4);
139
140
  }
140
141