@jumoo/usync 17.5.0 → 17.5.1

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 (33) hide show
  1. package/LICENCE +372 -372
  2. package/README.md +10 -10
  3. package/dist/components/usync-action-box.js +61 -61
  4. package/dist/components/usync-change-detail.js +409 -409
  5. package/dist/components/usync-change-view.js +49 -49
  6. package/dist/components/usync-progress-box.js +106 -106
  7. package/dist/components/usync-result-row.js +61 -61
  8. package/dist/components/usync-results-group-view.js +55 -55
  9. package/dist/components/usync-results-view.js +63 -63
  10. package/dist/components/usync-sync-file-info-view.js +10 -10
  11. package/dist/dialogs/details-modal-element.js +37 -37
  12. package/dist/dialogs/error-modal-element.js +21 -21
  13. package/dist/dialogs/legacy-modal-element.js +22 -22
  14. package/dist/dialogs/single-import-modal.element.js +30 -30
  15. package/dist/icons/svg/logo.js +20 -20
  16. package/dist/lang/files/da-dk.js +12 -12
  17. package/dist/lang/files/de-de.js +12 -12
  18. package/dist/lang/files/en-us.js +12 -12
  19. package/dist/lang/files/es-es.js +12 -12
  20. package/dist/lang/files/fr-fr.js +12 -12
  21. package/dist/lang/files/nl-nl.js +12 -12
  22. package/dist/tree/usync.menu-element.js +8 -8
  23. package/dist/workspace/components/usync-action-button.js +50 -50
  24. package/dist/workspace/components/usync-file-picker.element.js +33 -33
  25. package/dist/workspace/components/usync-file-upload.element.js +25 -25
  26. package/dist/workspace/dialogs/import-modal.element.js +22 -22
  27. package/dist/workspace/views/addons/addons.element.js +97 -97
  28. package/dist/workspace/views/default/default.element.js +186 -186
  29. package/dist/workspace/views/legacy/legacy.element.js +81 -81
  30. package/dist/workspace/views/settings/components/usyncSettingItem.element.js +38 -38
  31. package/dist/workspace/views/settings/settings.element.js +124 -124
  32. package/dist/workspace/workspace.element.js +16 -16
  33. package/package.json +70 -70
@@ -43,33 +43,33 @@ let uSyncChangeView = class uSyncChangeView extends UmbLitElement {
43
43
  // straight away; with more than one, start collapsed and let the user
44
44
  // open the ones they care about.
45
45
  const startOpen = details.length <= 1;
46
- return html `
47
- <div class="detail-list">
48
- ${repeat(details, (detail, index) => `${index}:${detail.path}:${detail.name}`, (detail) => html `<usync-change-detail
49
- .detail=${detail}
50
- ?open=${startOpen}></usync-change-detail>`)}
51
- </div>
46
+ return html `
47
+ <div class="detail-list">
48
+ ${repeat(details, (detail, index) => `${index}:${detail.path}:${detail.name}`, (detail) => html `<usync-change-detail
49
+ .detail=${detail}
50
+ ?open=${startOpen}></usync-change-detail>`)}
51
+ </div>
52
52
  `;
53
53
  }
54
54
  renderNoChanges() {
55
- return html `
56
- <div class="change-box">
57
- <h3>
58
- <umb-localize key="uSync_noChanges${this.item?.change}"
59
- >No changes</umb-localize
60
- >
61
- </h3>
62
- ${this.renderMessage()}
63
- </div>
55
+ return html `
56
+ <div class="change-box">
57
+ <h3>
58
+ <umb-localize key="uSync_noChanges${this.item?.change}"
59
+ >No changes</umb-localize
60
+ >
61
+ </h3>
62
+ ${this.renderMessage()}
63
+ </div>
64
64
  `;
65
65
  }
66
66
  render_create() {
67
- return html `
68
- <div class="change-box">
69
- <h3>
70
- <umb-localize key="uSync_changeCreate">This item is being created</umb-localize>
71
- </h3>
72
- </div>
67
+ return html `
68
+ <div class="change-box">
69
+ <h3>
70
+ <umb-localize key="uSync_changeCreate">This item is being created</umb-localize>
71
+ </h3>
72
+ </div>
73
73
  `;
74
74
  }
75
75
  renderMessage() {
@@ -86,34 +86,34 @@ _uSyncChangeView_instances = new WeakSet();
86
86
  _uSyncChangeView_renderable = function _uSyncChangeView_renderable() {
87
87
  return (this.item?.details ?? []).filter((detail) => detail.change !== ChangeDetailType.NO_CHANGE);
88
88
  };
89
- uSyncChangeView.styles = css `
90
- :host {
91
- display: block;
92
- margin: 0;
93
- }
94
-
95
- .change-box {
96
- display: block;
97
- padding: var(
98
- --uui-box-header-padding,
99
- var(--uui-size-space-4, 12px) var(--uui-size-space-5, 18px)
100
- );
101
- }
102
-
103
- .change-box h3 {
104
- margin: 0;
105
- }
106
-
107
- .error {
108
- color: var(--uui-color-danger);
109
- margin-top: var(--uui-size-space-2);
110
- }
111
-
112
- .detail-list {
113
- display: flex;
114
- flex-direction: column;
115
- border-top: 1px solid var(--uui-color-border);
116
- }
89
+ uSyncChangeView.styles = css `
90
+ :host {
91
+ display: block;
92
+ margin: 0;
93
+ }
94
+
95
+ .change-box {
96
+ display: block;
97
+ padding: var(
98
+ --uui-box-header-padding,
99
+ var(--uui-size-space-4, 12px) var(--uui-size-space-5, 18px)
100
+ );
101
+ }
102
+
103
+ .change-box h3 {
104
+ margin: 0;
105
+ }
106
+
107
+ .error {
108
+ color: var(--uui-color-danger);
109
+ margin-top: var(--uui-size-space-2);
110
+ }
111
+
112
+ .detail-list {
113
+ display: flex;
114
+ flex-direction: column;
115
+ border-top: 1px solid var(--uui-color-border);
116
+ }
117
117
  `;
118
118
  __decorate([
119
119
  property({ type: Object })
@@ -49,17 +49,17 @@ let uSyncProcessBox = class uSyncProcessBox extends UmbElementMixin(LitElement)
49
49
  if (action.status == HandlerStatus.COMPLETE)
50
50
  progress++;
51
51
  const actionName = __classPrivateFieldGet(this, _uSyncProcessBox_instances, "m", _uSyncProcessBox_camelize).call(this, action.name ?? 'unknown');
52
- return html `
53
- <div
54
- class="action
55
- ${action.status == HandlerStatus.COMPLETE ? 'complete' : ''}
56
- ${action.status == HandlerStatus.PROCESSING ? 'working' : ''}">
57
- <div class="icon-holder">
58
- <uui-icon .name=${action.icon ?? 'icon-box'}></uui-icon>
59
- ${this.renderBadge(action)}
60
- </div>
61
- <h4>${this.localize.termOrDefault(`treeHeaders_${actionName}`, actionName)}</h4>
62
- </div>
52
+ return html `
53
+ <div
54
+ class="action
55
+ ${action.status == HandlerStatus.COMPLETE ? 'complete' : ''}
56
+ ${action.status == HandlerStatus.PROCESSING ? 'working' : ''}">
57
+ <div class="icon-holder">
58
+ <uui-icon .name=${action.icon ?? 'icon-box'}></uui-icon>
59
+ ${this.renderBadge(action)}
60
+ </div>
61
+ <h4>${this.localize.termOrDefault(`treeHeaders_${actionName}`, actionName)}</h4>
62
+ </div>
63
63
  `;
64
64
  });
65
65
  let overall = this.showProgress
@@ -72,23 +72,23 @@ let uSyncProcessBox = class uSyncProcessBox extends UmbElementMixin(LitElement)
72
72
  this.showProgress = true;
73
73
  }
74
74
  const progressClass = { hidden: !this.showProgress };
75
- return html `
76
- <uui-box>
77
- <h2>${this.localize.termOrDefault(`uSync_group${this.title}`, this.title)}</h2>
78
- <div class="action-list">${actionHtml}</div>
79
- <div class="update-box">${this.updateMsg?.message}</div>
80
- <uui-progress-bar
81
- progress=${overall}
82
- class=${classMap(progressClass)}></uui-progress-bar>
83
- </uui-box>
75
+ return html `
76
+ <uui-box>
77
+ <h2>${this.localize.termOrDefault(`uSync_group${this.title}`, this.title)}</h2>
78
+ <div class="action-list">${actionHtml}</div>
79
+ <div class="update-box">${this.updateMsg?.message}</div>
80
+ <uui-progress-bar
81
+ progress=${overall}
82
+ class=${classMap(progressClass)}></uui-progress-bar>
83
+ </uui-box>
84
84
  `;
85
85
  }
86
86
  renderBadge(action) {
87
87
  if (action.status == HandlerStatus.PENDING)
88
88
  return;
89
89
  if (action.status == HandlerStatus.PROCESSING) {
90
- return html `<uui-badge color="positive" look="default">
91
- <uui-icon name="icon-circle-dotted" class="rotating"></uui-icon
90
+ return html `<uui-badge color="positive" look="default">
91
+ <uui-icon name="icon-circle-dotted" class="rotating"></uui-icon
92
92
  ></uui-badge>`;
93
93
  }
94
94
  const color = action.inError ? 'warning' : 'positive';
@@ -96,8 +96,8 @@ let uSyncProcessBox = class uSyncProcessBox extends UmbElementMixin(LitElement)
96
96
  ? 'Some errors occured duing import'
97
97
  : 'Changes imported successfully';
98
98
  if (!this.complete || action.changes == 0)
99
- return html `<uui-badge .color=${color} look="default" title=${label}
100
- ><uui-icon name="icon-check"></uui-icon
99
+ return html `<uui-badge .color=${color} look="default" title=${label}
100
+ ><uui-icon name="icon-check"></uui-icon
101
101
  ></uui-badge>`;
102
102
  return html `<uui-badge .color=${color} title=${label}>${action.changes}</uui-badge>`;
103
103
  }
@@ -115,88 +115,88 @@ _uSyncProcessBox_camelize = function _uSyncProcessBox_camelize(str) {
115
115
  })
116
116
  .replace(/\s+/g, '');
117
117
  };
118
- uSyncProcessBox.styles = css `
119
- :host {
120
- display: block;
121
- }
122
-
123
- h2 {
124
- text-align: center;
125
- margin: 0;
126
- }
127
-
128
- .action-list {
129
- margin-top: var(--uui-size-space-4);
130
- padding: var(--uui-size-space-4) 0;
131
- display: flex;
132
- flex-wrap: wrap;
133
- justify-content: center;
134
- }
135
-
136
- .action {
137
- display: flex;
138
- flex-direction: column;
139
- align-items: center;
140
- min-width: var(--uui-size-layout-5);
141
- color: var(--uui-color-text-alt);
142
- opacity: 0.67;
143
- margin: var(--uui-size-space-4) 0 var(--uui-size-space-6);
144
- }
145
-
146
- .action h4 {
147
- margin: var(--uui-size-space-4) 0;
148
- }
149
-
150
- .icon-holder {
151
- position: relative;
152
- padding: 0 var(--uui-size-7);
153
- }
154
-
155
- .rotating {
156
- animation: spin-animation 2s infinite;
157
- animation-timing-function: linear;
158
- display: inline-block;
159
- }
160
-
161
- @keyframes spin-animation {
162
- 0% {
163
- transform: rotate(360deg);
164
- }
165
- 100% {
166
- transform: rotate(0deg);
167
- }
168
- }
169
-
170
- .action uui-icon {
171
- font-size: var(--uui-size-12);
172
- }
173
-
174
- .action uui-badge uui-icon {
175
- font-size: var(--uui-type-h4-size);
176
- }
177
-
178
- .complete {
179
- color: var(--uui-color-default-emphasis);
180
- }
181
-
182
- .working {
183
- color: var(--uui-color-positive);
184
- opacity: 1;
185
- }
186
-
187
- .update-box {
188
- font-weight: bold;
189
- text-align: center;
190
- }
191
-
192
- uui-progress-bar {
193
- padding: 0;
194
- margin: 0;
195
- }
196
-
197
- .hidden {
198
- opacity: 0;
199
- }
118
+ uSyncProcessBox.styles = css `
119
+ :host {
120
+ display: block;
121
+ }
122
+
123
+ h2 {
124
+ text-align: center;
125
+ margin: 0;
126
+ }
127
+
128
+ .action-list {
129
+ margin-top: var(--uui-size-space-4);
130
+ padding: var(--uui-size-space-4) 0;
131
+ display: flex;
132
+ flex-wrap: wrap;
133
+ justify-content: center;
134
+ }
135
+
136
+ .action {
137
+ display: flex;
138
+ flex-direction: column;
139
+ align-items: center;
140
+ min-width: var(--uui-size-layout-5);
141
+ color: var(--uui-color-text-alt);
142
+ opacity: 0.67;
143
+ margin: var(--uui-size-space-4) 0 var(--uui-size-space-6);
144
+ }
145
+
146
+ .action h4 {
147
+ margin: var(--uui-size-space-4) 0;
148
+ }
149
+
150
+ .icon-holder {
151
+ position: relative;
152
+ padding: 0 var(--uui-size-7);
153
+ }
154
+
155
+ .rotating {
156
+ animation: spin-animation 2s infinite;
157
+ animation-timing-function: linear;
158
+ display: inline-block;
159
+ }
160
+
161
+ @keyframes spin-animation {
162
+ 0% {
163
+ transform: rotate(360deg);
164
+ }
165
+ 100% {
166
+ transform: rotate(0deg);
167
+ }
168
+ }
169
+
170
+ .action uui-icon {
171
+ font-size: var(--uui-size-12);
172
+ }
173
+
174
+ .action uui-badge uui-icon {
175
+ font-size: var(--uui-type-h4-size);
176
+ }
177
+
178
+ .complete {
179
+ color: var(--uui-color-default-emphasis);
180
+ }
181
+
182
+ .working {
183
+ color: var(--uui-color-positive);
184
+ opacity: 1;
185
+ }
186
+
187
+ .update-box {
188
+ font-weight: bold;
189
+ text-align: center;
190
+ }
191
+
192
+ uui-progress-bar {
193
+ padding: 0;
194
+ margin: 0;
195
+ }
196
+
197
+ .hidden {
198
+ opacity: 0;
199
+ }
200
200
  `;
201
201
  __decorate([
202
202
  state()
@@ -32,21 +32,21 @@ let uSyncResultRow = class uSyncResultRow extends UmbLitElement {
32
32
  ? 'icon-check color-green'
33
33
  : 'icon-wrong color-red';
34
34
  const noChange = result.change == ChangeType.NO_CHANGE || result.change == ChangeType.EXPORT;
35
- return html `<div
36
- class="${classMap({ no_change: noChange })} row"
37
- @click=${() => __classPrivateFieldGet(this, _uSyncResultRow_instances, "m", _uSyncResultRow_showDetail).call(this, result)}>
38
- <div class="icon-cell" .noPadding=${true}>
39
- <umb-icon .name=${icon}></umb-icon>
40
- </div>
41
- <div class="row-content" .clipText=${true}>
42
- <div class="item-detail">
43
- <div class="item-change">${result.change}</div>
44
- </div>
45
- <div class="item-name">
46
- <div>${result.name}</div>
47
- <div>${this.renderMessage(result)}</div>
48
- </div>
49
- </div>
35
+ return html `<div
36
+ class="${classMap({ no_change: noChange })} row"
37
+ @click=${() => __classPrivateFieldGet(this, _uSyncResultRow_instances, "m", _uSyncResultRow_showDetail).call(this, result)}>
38
+ <div class="icon-cell" .noPadding=${true}>
39
+ <umb-icon .name=${icon}></umb-icon>
40
+ </div>
41
+ <div class="row-content" .clipText=${true}>
42
+ <div class="item-detail">
43
+ <div class="item-change">${result.change}</div>
44
+ </div>
45
+ <div class="item-name">
46
+ <div>${result.name}</div>
47
+ <div>${this.renderMessage(result)}</div>
48
+ </div>
49
+ </div>
50
50
  </div>`;
51
51
  }
52
52
  renderMessage(result) {
@@ -54,11 +54,11 @@ let uSyncResultRow = class uSyncResultRow extends UmbLitElement {
54
54
  result.change != ChangeType.IMPORT_FAIL) ||
55
55
  !result.message
56
56
  ? html `<em>${result.message}</em>`
57
- : html ` <uui-button
58
- look="outline"
59
- color="danger"
60
- label="View error"
61
- compact
57
+ : html ` <uui-button
58
+ look="outline"
59
+ color="danger"
60
+ label="View error"
61
+ compact
62
62
  @click=${(e) => __classPrivateFieldGet(this, _uSyncResultRow_instances, "m", _uSyncResultRow_viewError).call(this, e, result)}></uui-button>`;
63
63
  }
64
64
  };
@@ -81,47 +81,47 @@ _uSyncResultRow_viewError = async function _uSyncResultRow_viewError(e, result)
81
81
  });
82
82
  return data;
83
83
  };
84
- uSyncResultRow.styles = css `
85
- .row {
86
- display: flex;
87
- align-items: center;
88
- gap: var(--uui-size-space-5);
89
- padding: var(--uui-size-space-5);
90
- border-bottom: 1px solid var(--uui-color-border);
91
- cursor: pointer;
92
- }
93
-
94
- .row:hover {
95
- background-color: var(--uui-color-surface-alt);
96
- }
97
-
98
- .no_change {
99
- color: var(--uui-color-disabled-contrast);
100
- cursor: default;
101
- }
102
-
103
- .row-content {
104
- gap: 10px;
105
- flex-grow: 1;
106
- display: flex;
107
- align-items: center;
108
- justify-content: space-between;
109
- }
110
-
111
- .item-name {
112
- display: flex;
113
- font-weight: bold;
114
- align-items: center;
115
- flex-grow: 2;
116
- justify-content: space-between;
117
- }
118
-
119
- .item-detail {
120
- display: flex;
121
- flex-direction: column;
122
- font-size: smaller;
123
- min-width: 60px;
124
- }
84
+ uSyncResultRow.styles = css `
85
+ .row {
86
+ display: flex;
87
+ align-items: center;
88
+ gap: var(--uui-size-space-5);
89
+ padding: var(--uui-size-space-5);
90
+ border-bottom: 1px solid var(--uui-color-border);
91
+ cursor: pointer;
92
+ }
93
+
94
+ .row:hover {
95
+ background-color: var(--uui-color-surface-alt);
96
+ }
97
+
98
+ .no_change {
99
+ color: var(--uui-color-disabled-contrast);
100
+ cursor: default;
101
+ }
102
+
103
+ .row-content {
104
+ gap: 10px;
105
+ flex-grow: 1;
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: space-between;
109
+ }
110
+
111
+ .item-name {
112
+ display: flex;
113
+ font-weight: bold;
114
+ align-items: center;
115
+ flex-grow: 2;
116
+ justify-content: space-between;
117
+ }
118
+
119
+ .item-detail {
120
+ display: flex;
121
+ flex-direction: column;
122
+ font-size: smaller;
123
+ min-width: 60px;
124
+ }
125
125
  `;
126
126
  __decorate([
127
127
  property({ type: Object })
@@ -22,26 +22,26 @@ let uSyncResultGroupView = class uSyncResultGroupView extends UmbLitElement {
22
22
  const changeCount = this.getChangeCount() ?? 0;
23
23
  if (changeCount === 0 && !this.showAll)
24
24
  return nothing;
25
- return html `
26
- <uui-box
25
+ return html `
26
+ <uui-box
27
27
  class=${classMap({
28
28
  has_changes: changeCount > 0,
29
- })}>
30
- <div
31
- class="summary ${when(this.expanded, () => 'expanded')}"
32
- @click=${() => (this.expanded = !this.expanded)}>
33
- <h4>${this.localize.termOrDefault('uSync_' + this.groupName, this.groupName)}</h4>
34
- <div class="summary-right">
35
- <h4 class="count">${changeCount}/${this.results?.length}</h4>
36
- <uui-icon
37
- name="icon-play"
38
- class=${classMap({ expanded: this.expanded })}></uui-icon>
39
- </div>
40
- </div>
41
- <uui-table>
42
- ${when(this.expanded == true, () => html `${this.renderGroupedRows(this.results)}`)}
43
- </uui-table>
44
- </uui-box>
29
+ })}>
30
+ <div
31
+ class="summary ${when(this.expanded, () => 'expanded')}"
32
+ @click=${() => (this.expanded = !this.expanded)}>
33
+ <h4>${this.localize.termOrDefault('uSync_' + this.groupName, this.groupName)}</h4>
34
+ <div class="summary-right">
35
+ <h4 class="count">${changeCount}/${this.results?.length}</h4>
36
+ <uui-icon
37
+ name="icon-play"
38
+ class=${classMap({ expanded: this.expanded })}></uui-icon>
39
+ </div>
40
+ </div>
41
+ <uui-table>
42
+ ${when(this.expanded == true, () => html `${this.renderGroupedRows(this.results)}`)}
43
+ </uui-table>
44
+ </uui-box>
45
45
  `;
46
46
  }
47
47
  renderGroupedRows(results) {
@@ -53,43 +53,43 @@ let uSyncResultGroupView = class uSyncResultGroupView extends UmbLitElement {
53
53
  return rowsHtml;
54
54
  }
55
55
  };
56
- uSyncResultGroupView.styles = css `
57
- uui-box {
58
- cursor: pointer;
59
- --uui-box-default-padding: 0;
60
- }
61
-
62
- .expanded {
63
- border-bottom: 1px solid var(--uui-color-border);
64
- }
65
-
66
- .summary {
67
- display: flex;
68
- margin: 0;
69
- padding: 0 20px;
70
- justify-content: space-between;
71
- }
72
-
73
- .summary-right {
74
- display: flex;
75
- align-items: center;
76
- gap: var(--uui-size-space-2);
77
- color: var(--uui-color-border-emphasis);
78
- }
79
-
80
- .summary-right uui-icon {
81
- transform: rotate(90deg);
82
- transition: transform 0.5s cubic-bezier(0.42, 0, 0.37, 1.62);
83
- }
84
-
85
- .summary-right uui-icon.expanded {
86
- transform: rotate(-90deg);
87
- border-bottom: none;
88
- }
89
-
90
- .count {
91
- color: var(--uui-text);
92
- }
56
+ uSyncResultGroupView.styles = css `
57
+ uui-box {
58
+ cursor: pointer;
59
+ --uui-box-default-padding: 0;
60
+ }
61
+
62
+ .expanded {
63
+ border-bottom: 1px solid var(--uui-color-border);
64
+ }
65
+
66
+ .summary {
67
+ display: flex;
68
+ margin: 0;
69
+ padding: 0 20px;
70
+ justify-content: space-between;
71
+ }
72
+
73
+ .summary-right {
74
+ display: flex;
75
+ align-items: center;
76
+ gap: var(--uui-size-space-2);
77
+ color: var(--uui-color-border-emphasis);
78
+ }
79
+
80
+ .summary-right uui-icon {
81
+ transform: rotate(90deg);
82
+ transition: transform 0.5s cubic-bezier(0.42, 0, 0.37, 1.62);
83
+ }
84
+
85
+ .summary-right uui-icon.expanded {
86
+ transform: rotate(-90deg);
87
+ border-bottom: none;
88
+ }
89
+
90
+ .count {
91
+ color: var(--uui-text);
92
+ }
93
93
  `;
94
94
  __decorate([
95
95
  state()