@quandis/qbo4.configuration 4.0.1-CI-20241017-003408 → 4.0.1-CI-20241017-182709

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quandis/qbo4.configuration",
3
- "version": "4.0.1-CI-20241017-003408",
3
+ "version": "4.0.1-CI-20241017-182709",
4
4
  "type": "module",
5
5
  "types": "./src/Program.d.ts",
6
6
  "exports": {
@@ -35,7 +35,7 @@
35
35
  "mini-css-extract-plugin": "^2.9.1",
36
36
  "postcss-cli": "^11.0.0",
37
37
  "postcss-loader": "^8.1.1",
38
- "sass": "^1.80.0",
38
+ "sass": "^1.80.1",
39
39
  "sass-loader": "^16.0.2",
40
40
  "style-loader": "^4.0.0",
41
41
  "typescript": "^5.6.3",
@@ -12,6 +12,8 @@ export declare class QboConfigEditor extends LitElement {
12
12
  addKeyValuePair(event: any): void;
13
13
  deleteKeyValuePair(key: any, event: any): Promise<void>;
14
14
  saveChanges(event: any): Promise<void>;
15
+ clearNotifications(): void;
16
+ alertError(error: any): void;
15
17
  alertUpdated(): void;
16
18
  alertClear(alert: Element): void;
17
19
  cancelChanges(event: any): Promise<void>;
@@ -45,19 +45,21 @@ export class QboConfigEditor extends LitElement {
45
45
  }
46
46
  async deleteKeyValuePair(key, event) {
47
47
  event.preventDefault();
48
+ this.clearNotifications();
48
49
  try {
49
50
  await fetch(`${this.apiEndpoint}/delete/${key}`, {
50
51
  method: 'GET'
51
52
  });
52
53
  }
53
54
  catch (err) {
54
- dispatchEvent(new CustomEvent('qbo-error', { detail: err }));
55
+ this.alertError(err);
55
56
  }
56
57
  await this.search();
57
58
  this.alertUpdated();
58
59
  }
59
60
  async saveChanges(event) {
60
61
  event.preventDefault();
62
+ this.clearNotifications();
61
63
  try {
62
64
  await fetch(`${this.apiEndpoint}/save`, {
63
65
  method: 'POST',
@@ -65,13 +67,31 @@ export class QboConfigEditor extends LitElement {
65
67
  });
66
68
  }
67
69
  catch (err) {
68
- dispatchEvent(new CustomEvent('qbo-error', { detail: err }));
70
+ this.alertError(err);
69
71
  }
70
72
  await this.search();
71
73
  this.alertUpdated();
72
74
  }
75
+ clearNotifications() {
76
+ this.renderRoot.querySelector(`div.error`)?.classList.add("hidden");
77
+ this.renderRoot.querySelector(`div.success`)?.classList.add("hidden");
78
+ }
79
+ alertError(error) {
80
+ dispatchEvent(new CustomEvent('qbo-error', { detail: error }));
81
+ var alert = this.renderRoot.querySelector(`div.error`);
82
+ if (alert) {
83
+ alert.classList.remove("hidden");
84
+ }
85
+ else {
86
+ alert = document.createElement("div");
87
+ alert.className = "error";
88
+ alert.innerHTML = error;
89
+ var form = this.renderRoot.querySelector(`form`);
90
+ form?.insertBefore(alert, form?.querySelector(`div.${this.buttonClass}`));
91
+ }
92
+ }
73
93
  alertUpdated() {
74
- var alert = this.renderRoot.querySelector(`div.alert-success`);
94
+ var alert = this.renderRoot.querySelector(`div.success`);
75
95
  if (alert) {
76
96
  alert.classList.remove("hidden");
77
97
  }
@@ -97,6 +117,7 @@ export class QboConfigEditor extends LitElement {
97
117
  await this.search();
98
118
  }
99
119
  async search() {
120
+ this.clearNotifications();
100
121
  var input = this.renderRoot.querySelector(`div.${this.searchClass}`)?.querySelector('input');
101
122
  if (input instanceof HTMLInputElement) {
102
123
  if (input.value.trim() == '') {
@@ -111,7 +132,7 @@ export class QboConfigEditor extends LitElement {
111
132
  this.configData = await response.json();
112
133
  }
113
134
  catch (err) {
114
- dispatchEvent(new CustomEvent('qbo-error', { detail: err }));
135
+ this.alertError(err);
115
136
  }
116
137
  }
117
138
  }
@@ -121,20 +142,22 @@ export class QboConfigEditor extends LitElement {
121
142
  }
122
143
  render() {
123
144
  const source = new JsonConfigurationSource(this.configData);
124
- return html `<slot>
125
- <form @submit="${this.handleSubmit}" class="${this.formClass}" data-bs-theme="${this.theme}">
126
- <div class="${this.searchClass}">
127
- <input type="text" @keydown="${this.filter}">
128
- <button type="button" @click="${this.filter}">Search</button>
129
- </div>
145
+ const header = Array.from(source.getValues()).length == 0 ? html `` : html `
130
146
  <div class="${this.rowClass}">
131
147
  <div>
132
- <label>Key</label>
148
+ <strong>Name</strong>
133
149
  </div>
134
150
  <div>
135
- <label>Value</label>
151
+ <strong>Value</strong>
136
152
  </div>
153
+ </div>`;
154
+ return html `
155
+ <form @submit="${this.handleSubmit}" class="${this.formClass}" data-bs-theme="${this.theme}">
156
+ <div class="${this.searchClass}">
157
+ <input type="text" @keydown="${this.filter}">
158
+ <button type="button" @click="${this.filter}">Search</button>
137
159
  </div>
160
+ ${header}
138
161
  ${Array.from(source.getValues()).map(({ key, value }) => html `
139
162
  <div class="${this.rowClass}">
140
163
  <div>
@@ -154,8 +177,7 @@ export class QboConfigEditor extends LitElement {
154
177
  <button type="button" class="cancel" @click="${this.cancelChanges}">Cancel</button>
155
178
  </div>
156
179
  </div>
157
- </form>
158
- </slot>`;
180
+ </form>`;
159
181
  }
160
182
  }
161
183
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"qbo-config-editor.js","sourceRoot":"","sources":["qbo-config-editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qbo-config-editor.js","sourceRoot":"","sources":["qbo-config-editor.ts"],"names":[],"mappings":"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"}
@@ -51,12 +51,13 @@ export class QboConfigEditor extends LitElement {
51
51
 
52
52
  async deleteKeyValuePair(key, event) {
53
53
  event.preventDefault();
54
+ this.clearNotifications();
54
55
  try {
55
56
  await fetch(`${this.apiEndpoint}/delete/${key}`, {
56
57
  method: 'GET'
57
58
  });
58
59
  } catch (err) {
59
- dispatchEvent(new CustomEvent('qbo-error', { detail: err }));
60
+ this.alertError(err);
60
61
  }
61
62
  await this.search();
62
63
  this.alertUpdated();
@@ -64,20 +65,42 @@ export class QboConfigEditor extends LitElement {
64
65
 
65
66
  async saveChanges(event) {
66
67
  event.preventDefault();
68
+ this.clearNotifications();
67
69
  try {
68
70
  await fetch(`${this.apiEndpoint}/save`, {
69
71
  method: 'POST',
70
72
  body: JSON.stringify(this.configData)
71
73
  });
72
74
  } catch (err) {
73
- dispatchEvent(new CustomEvent('qbo-error', { detail: err }));
75
+ this.alertError(err);
74
76
  }
75
77
  await this.search();
76
78
  this.alertUpdated();
77
79
  }
78
80
 
81
+ clearNotifications() {
82
+ this.renderRoot.querySelector(`div.error`)?.classList.add("hidden");
83
+ this.renderRoot.querySelector(`div.success`)?.classList.add("hidden");
84
+ }
85
+
86
+ alertError(error) {
87
+ dispatchEvent(new CustomEvent('qbo-error', { detail: error }));
88
+
89
+ var alert = this.renderRoot.querySelector(`div.error`);
90
+ if (alert) {
91
+ alert.classList.remove("hidden");
92
+ } else {
93
+ alert = document.createElement("div");
94
+ alert.className = "error";
95
+ alert.innerHTML = error;
96
+
97
+ var form = this.renderRoot.querySelector(`form`);
98
+ form?.insertBefore(alert, form?.querySelector(`div.${this.buttonClass}`));
99
+ }
100
+ }
101
+
79
102
  alertUpdated() {
80
- var alert = this.renderRoot.querySelector(`div.alert-success`);
103
+ var alert = this.renderRoot.querySelector(`div.success`);
81
104
  if (alert) {
82
105
  alert.classList.remove("hidden");
83
106
  } else {
@@ -106,6 +129,7 @@ export class QboConfigEditor extends LitElement {
106
129
  }
107
130
 
108
131
  async search() {
132
+ this.clearNotifications();
109
133
  var input = this.renderRoot.querySelector(`div.${this.searchClass}`)?.querySelector('input');
110
134
  if (input instanceof HTMLInputElement) {
111
135
 
@@ -122,7 +146,7 @@ export class QboConfigEditor extends LitElement {
122
146
  });
123
147
  this.configData = await response.json();
124
148
  } catch (err) {
125
- dispatchEvent(new CustomEvent('qbo-error', { detail: err }));
149
+ this.alertError(err);
126
150
  }
127
151
 
128
152
  }
@@ -135,20 +159,23 @@ export class QboConfigEditor extends LitElement {
135
159
 
136
160
  render() {
137
161
  const source = new JsonConfigurationSource(this.configData);
138
- return html`<slot>
139
- <form @submit="${this.handleSubmit}" class="${this.formClass}" data-bs-theme="${this.theme}">
140
- <div class="${this.searchClass}">
141
- <input type="text" @keydown="${this.filter}">
142
- <button type="button" @click="${this.filter}">Search</button>
143
- </div>
162
+ const header = Array.from(source.getValues()).length == 0 ? html`` : html`
144
163
  <div class="${this.rowClass}">
145
164
  <div>
146
- <label>Key</label>
165
+ <strong>Name</strong>
147
166
  </div>
148
167
  <div>
149
- <label>Value</label>
168
+ <strong>Value</strong>
150
169
  </div>
170
+ </div>`;
171
+
172
+ return html`
173
+ <form @submit="${this.handleSubmit}" class="${this.formClass}" data-bs-theme="${this.theme}">
174
+ <div class="${this.searchClass}">
175
+ <input type="text" @keydown="${this.filter}">
176
+ <button type="button" @click="${this.filter}">Search</button>
151
177
  </div>
178
+ ${header}
152
179
  ${Array.from(source.getValues()).map(({ key, value }) => html`
153
180
  <div class="${this.rowClass}">
154
181
  <div>
@@ -168,8 +195,7 @@ export class QboConfigEditor extends LitElement {
168
195
  <button type="button" class="cancel" @click="${this.cancelChanges}">Cancel</button>
169
196
  </div>
170
197
  </div>
171
- </form>
172
- </slot>`;
198
+ </form>`;
173
199
  }
174
200
  }
175
201