@compas-oscd/scl-template-update 0.0.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.
@@ -0,0 +1,42 @@
1
+ import { LitElement } from 'lit';
2
+ import { TreeNode } from '@openenergytools/tree-grid';
3
+ import { OscdDialog } from '@omicronenergy/oscd-ui/dialog/OscdDialog.js';
4
+ import { OscdOutlinedTextField } from '@omicronenergy/oscd-ui/textfield/OscdOutlinedTextField.js';
5
+ import { OscdFilledSelect } from '@omicronenergy/oscd-ui/select/OscdFilledSelect.js';
6
+ import { OscdSelectOption } from '@omicronenergy/oscd-ui/select/OscdSelectOption.js';
7
+ import { OscdTextButton } from '@omicronenergy/oscd-ui/button/OscdTextButton.js';
8
+ declare const AddDataObjectDialog_base: typeof LitElement & import("@open-wc/scoped-elements/lit-element.js").ScopedElementsHostConstructor;
9
+ export declare class AddDataObjectDialog extends AddDataObjectDialog_base {
10
+ static scopedElements: {
11
+ 'oscd-dialog': typeof OscdDialog;
12
+ 'oscd-outlined-text-field': typeof OscdOutlinedTextField;
13
+ 'oscd-text-button': typeof OscdTextButton;
14
+ 'oscd-select-option': typeof OscdSelectOption;
15
+ 'oscd-filled-select': typeof OscdFilledSelect;
16
+ };
17
+ static styles: import("lit").CSSResult;
18
+ tree: Partial<Record<string, TreeNode>>;
19
+ cdClasses: string[];
20
+ onConfirm?: (cdcType: string, doName: string, namespace: string | null) => void;
21
+ open: boolean;
22
+ errorText: string;
23
+ createDOdialog: OscdDialog;
24
+ cdcType: OscdFilledSelect;
25
+ doName: OscdOutlinedTextField;
26
+ namespace: OscdOutlinedTextField;
27
+ private namespaceDefaultValue;
28
+ private validationDebounceDelay;
29
+ private isCustomNamespaceDisabled;
30
+ show(): void;
31
+ close(): void;
32
+ private getMultiTree;
33
+ private findMatchingTreeNode;
34
+ private getDONameStatus;
35
+ private onValueChange;
36
+ private setDONameStatusError;
37
+ private validateForm;
38
+ private onAddDataObjectSubmit;
39
+ private resetErrorText;
40
+ render(): import("lit").TemplateResult<1>;
41
+ }
42
+ export default AddDataObjectDialog;
@@ -0,0 +1,288 @@
1
+ import { __decorate } from "tslib";
2
+ /* eslint-disable @typescript-eslint/no-unused-vars */
3
+ import { LitElement, html, css } from 'lit';
4
+ import { property, state, query } from 'lit/decorators.js';
5
+ import { ScopedElementsMixin } from '@open-wc/scoped-elements/lit-element.js';
6
+ import { OscdDialog } from '@omicronenergy/oscd-ui/dialog/OscdDialog.js';
7
+ import { OscdOutlinedTextField } from '@omicronenergy/oscd-ui/textfield/OscdOutlinedTextField.js';
8
+ import { OscdFilledSelect } from '@omicronenergy/oscd-ui/select/OscdFilledSelect.js';
9
+ import { OscdSelectOption } from '@omicronenergy/oscd-ui/select/OscdSelectOption.js';
10
+ import { OscdTextButton } from '@omicronenergy/oscd-ui/button/OscdTextButton.js';
11
+ import { debounce } from '../utils/debounce.js';
12
+ // eslint-disable-next-line no-shadow
13
+ var DONameStatus;
14
+ (function (DONameStatus) {
15
+ DONameStatus["Ok"] = "Ok";
16
+ DONameStatus["Taken"] = "Taken";
17
+ DONameStatus["InvalidCDC"] = "InvalidCDC";
18
+ DONameStatus["CustomNamespaceNeeded"] = "CustomNamespaceNeeded";
19
+ })(DONameStatus || (DONameStatus = {}));
20
+ const firstTextBlockRegExp = /[A-Za-z]+/;
21
+ export class AddDataObjectDialog extends ScopedElementsMixin(LitElement) {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.tree = {};
25
+ this.cdClasses = [];
26
+ this.open = false;
27
+ this.errorText = '';
28
+ this.namespaceDefaultValue = 'User-Defined';
29
+ this.validationDebounceDelay = 300;
30
+ this.isCustomNamespaceDisabled = true;
31
+ this.onValueChange = debounce(() => {
32
+ if (!this.cdcType.value || !this.doName.value) {
33
+ this.isCustomNamespaceDisabled = true;
34
+ return;
35
+ }
36
+ const status = this.getDONameStatus();
37
+ this.setDONameStatusError(status);
38
+ this.isCustomNamespaceDisabled =
39
+ status !== DONameStatus.CustomNamespaceNeeded;
40
+ }, this.validationDebounceDelay);
41
+ }
42
+ static { this.scopedElements = {
43
+ 'oscd-dialog': OscdDialog,
44
+ 'oscd-outlined-text-field': OscdOutlinedTextField,
45
+ 'oscd-text-button': OscdTextButton,
46
+ 'oscd-select-option': OscdSelectOption,
47
+ 'oscd-filled-select': OscdFilledSelect,
48
+ }; }
49
+ static { this.styles = css `
50
+ oscd-dialog {
51
+ min-width: 350px;
52
+ }
53
+ .dialog-content {
54
+ display: flex;
55
+ flex-direction: column;
56
+ gap: 16px;
57
+ margin-top: 8px;
58
+ }
59
+ oscd-filled-select,
60
+ oscd-outlined-text-field {
61
+ width: 100%;
62
+ }
63
+ oscd-text-button {
64
+ text-transform: uppercase;
65
+ }
66
+ `; }
67
+ show() {
68
+ this.createDOdialog.show();
69
+ }
70
+ close() {
71
+ if (this.cdcType) {
72
+ this.cdcType.errorText = '';
73
+ this.cdcType.error = false;
74
+ this.cdcType.reset();
75
+ }
76
+ if (this.doName) {
77
+ this.doName.errorText = '';
78
+ this.doName.error = false;
79
+ this.doName.value = '';
80
+ }
81
+ if (this.namespace) {
82
+ this.namespace.errorText = '';
83
+ this.namespace.error = false;
84
+ this.namespace.value = '';
85
+ this.isCustomNamespaceDisabled = true;
86
+ }
87
+ this.createDOdialog.close();
88
+ }
89
+ getMultiTree() {
90
+ return Object.keys(this.tree)
91
+ .filter(key => this.tree[key].presCond === 'Omulti')
92
+ .reduce((acc, key) => {
93
+ acc[key] = this.tree[key];
94
+ return acc;
95
+ }, {});
96
+ }
97
+ // eslint-disable-next-line class-methods-use-this
98
+ findMatchingTreeNode(doName, multiTree) {
99
+ const firstTextBlockMatch = doName.match(firstTextBlockRegExp);
100
+ if (!firstTextBlockMatch) {
101
+ return null;
102
+ }
103
+ const firstTextBlock = firstTextBlockMatch[0];
104
+ const matchingNode = multiTree[`${firstTextBlock}1`];
105
+ return matchingNode || null;
106
+ }
107
+ getDONameStatus() {
108
+ const doNameValue = this.doName.value;
109
+ const cdcValue = this.cdcType.value;
110
+ const isTaken = doNameValue in this.tree;
111
+ if (isTaken) {
112
+ return DONameStatus.Taken;
113
+ }
114
+ const multiTree = this.getMultiTree();
115
+ const matchingTreeNode = this.findMatchingTreeNode(doNameValue, multiTree);
116
+ if (matchingTreeNode) {
117
+ const doCDCsMatch = cdcValue === matchingTreeNode.type;
118
+ if (!doCDCsMatch) {
119
+ return DONameStatus.InvalidCDC;
120
+ }
121
+ return DONameStatus.Ok;
122
+ }
123
+ return DONameStatus.CustomNamespaceNeeded;
124
+ }
125
+ setDONameStatusError(status) {
126
+ if (status === DONameStatus.Taken) {
127
+ this.doName.errorText = 'DO name already in use';
128
+ this.doName.error = true;
129
+ }
130
+ else {
131
+ this.doName.errorText = '';
132
+ this.doName.error = false;
133
+ }
134
+ if (status === DONameStatus.InvalidCDC) {
135
+ this.cdcType.errorText = 'CDC type invalid for this DO';
136
+ this.cdcType.error = true;
137
+ }
138
+ else {
139
+ this.cdcType.errorText = '';
140
+ this.cdcType.error = false;
141
+ }
142
+ }
143
+ validateForm() {
144
+ let isValid = true;
145
+ if (!this.cdcType?.value) {
146
+ this.cdcType.errorText = 'Please select a common data class.';
147
+ this.cdcType.error = true;
148
+ isValid = false;
149
+ }
150
+ else {
151
+ this.cdcType.errorText = '';
152
+ this.cdcType.error = false;
153
+ }
154
+ if (!this.doName?.checkValidity()) {
155
+ this.doName.errorText = 'Not a valid DO name.';
156
+ this.doName.error = true;
157
+ isValid = false;
158
+ }
159
+ else {
160
+ this.doName.errorText = '';
161
+ this.doName.error = false;
162
+ }
163
+ const status = this.getDONameStatus();
164
+ if (status === DONameStatus.CustomNamespaceNeeded) {
165
+ if (!this.namespace.value) {
166
+ this.namespace.errorText = 'Custom namespace required.';
167
+ this.namespace.error = true;
168
+ isValid = false;
169
+ }
170
+ }
171
+ else if (status === DONameStatus.Taken ||
172
+ status === DONameStatus.InvalidCDC) {
173
+ this.setDONameStatusError(status);
174
+ isValid = false;
175
+ }
176
+ return isValid;
177
+ }
178
+ onAddDataObjectSubmit(e) {
179
+ e.preventDefault();
180
+ if (!this.validateForm())
181
+ return;
182
+ const status = this.getDONameStatus();
183
+ const cdcType = this.cdcType.value;
184
+ const doName = this.doName.value;
185
+ const namespace = status === DONameStatus.CustomNamespaceNeeded
186
+ ? this.namespace.value
187
+ : null;
188
+ this.onConfirm?.(cdcType, doName, namespace);
189
+ this.close();
190
+ }
191
+ /* eslint-disable class-methods-use-this */
192
+ resetErrorText(e) {
193
+ const target = e.target;
194
+ if (target.errorText && target.checkValidity()) {
195
+ target.errorText = '';
196
+ target.error = false;
197
+ }
198
+ }
199
+ render() {
200
+ return html `
201
+ <oscd-dialog @closed=${this.close}>
202
+ <div slot="headline">Add Data Object</div>
203
+ <form
204
+ slot="content"
205
+ id="add-data-object"
206
+ class="dialog-content"
207
+ novalidate
208
+ @submit=${this.onAddDataObjectSubmit}
209
+ @reset=${this.close}
210
+ >
211
+ <oscd-filled-select
212
+ class="cdc-type"
213
+ label="Common Data Class"
214
+ required
215
+ id="cdc-type"
216
+ @input=${(e) => {
217
+ this.resetErrorText(e);
218
+ this.onValueChange();
219
+ }}
220
+ >
221
+ ${this.cdClasses.map(cdClass => html `<oscd-select-option value=${cdClass}
222
+ >${cdClass}</oscd-select-option
223
+ >`)}
224
+ </oscd-filled-select>
225
+ <oscd-outlined-text-field
226
+ label="Data Object Name"
227
+ id="do-name"
228
+ required
229
+ maxlength="12"
230
+ pattern="[A-Z][0-9A-Za-z]*"
231
+ @input=${(e) => {
232
+ this.resetErrorText(e);
233
+ this.onValueChange();
234
+ }}
235
+ ></oscd-outlined-text-field>
236
+ <oscd-outlined-text-field
237
+ id="namespace"
238
+ label="Namespace"
239
+ placeholder=${this.namespaceDefaultValue}
240
+ required
241
+ .disabled=${this.isCustomNamespaceDisabled}
242
+ @input=${this.resetErrorText}
243
+ ></oscd-outlined-text-field>
244
+ </form>
245
+ <div slot="actions">
246
+ <oscd-text-button form="add-data-object" type="reset"
247
+ >Close</oscd-text-button
248
+ >
249
+ <oscd-text-button form="add-data-object" type="submit"
250
+ >Add</oscd-text-button
251
+ >
252
+ </div>
253
+ </oscd-dialog>
254
+ `;
255
+ }
256
+ }
257
+ __decorate([
258
+ property()
259
+ ], AddDataObjectDialog.prototype, "tree", void 0);
260
+ __decorate([
261
+ property({ type: Array })
262
+ ], AddDataObjectDialog.prototype, "cdClasses", void 0);
263
+ __decorate([
264
+ property({ type: Function })
265
+ ], AddDataObjectDialog.prototype, "onConfirm", void 0);
266
+ __decorate([
267
+ state()
268
+ ], AddDataObjectDialog.prototype, "open", void 0);
269
+ __decorate([
270
+ state()
271
+ ], AddDataObjectDialog.prototype, "errorText", void 0);
272
+ __decorate([
273
+ query('oscd-dialog')
274
+ ], AddDataObjectDialog.prototype, "createDOdialog", void 0);
275
+ __decorate([
276
+ query('#cdc-type')
277
+ ], AddDataObjectDialog.prototype, "cdcType", void 0);
278
+ __decorate([
279
+ query('#do-name')
280
+ ], AddDataObjectDialog.prototype, "doName", void 0);
281
+ __decorate([
282
+ query('#namespace')
283
+ ], AddDataObjectDialog.prototype, "namespace", void 0);
284
+ __decorate([
285
+ state()
286
+ ], AddDataObjectDialog.prototype, "isCustomNamespaceDisabled", void 0);
287
+ export default AddDataObjectDialog;
288
+ //# sourceMappingURL=add-data-object-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-data-object-dialog.js","sourceRoot":"","sources":["../../components/add-data-object-dialog.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { LitElement, html, css } from 'lit';\nimport { property, state, query } from 'lit/decorators.js';\nimport { Tree, TreeNode } from '@openenergytools/tree-grid';\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements/lit-element.js';\nimport { OscdDialog } from '@omicronenergy/oscd-ui/dialog/OscdDialog.js';\nimport { OscdOutlinedTextField } from '@omicronenergy/oscd-ui/textfield/OscdOutlinedTextField.js';\nimport { OscdFilledSelect } from '@omicronenergy/oscd-ui/select/OscdFilledSelect.js';\nimport { OscdSelectOption } from '@omicronenergy/oscd-ui/select/OscdSelectOption.js';\nimport { OscdTextButton } from '@omicronenergy/oscd-ui/button/OscdTextButton.js';\nimport { debounce } from '../utils/debounce.js';\n\n// eslint-disable-next-line no-shadow\nenum DONameStatus {\n Ok = 'Ok',\n Taken = 'Taken',\n InvalidCDC = 'InvalidCDC',\n CustomNamespaceNeeded = 'CustomNamespaceNeeded',\n}\n\nconst firstTextBlockRegExp = /[A-Za-z]+/;\n\nexport class AddDataObjectDialog extends ScopedElementsMixin(LitElement) {\n static scopedElements = {\n 'oscd-dialog': OscdDialog,\n 'oscd-outlined-text-field': OscdOutlinedTextField,\n 'oscd-text-button': OscdTextButton,\n 'oscd-select-option': OscdSelectOption,\n 'oscd-filled-select': OscdFilledSelect,\n };\n\n static styles = css`\n oscd-dialog {\n min-width: 350px;\n }\n .dialog-content {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 8px;\n }\n oscd-filled-select,\n oscd-outlined-text-field {\n width: 100%;\n }\n oscd-text-button {\n text-transform: uppercase;\n }\n `;\n\n @property()\n tree: Partial<Record<string, TreeNode>> = {};\n\n @property({ type: Array })\n cdClasses: string[] = [];\n\n @property({ type: Function })\n onConfirm?: (\n cdcType: string,\n doName: string,\n namespace: string | null\n ) => void;\n\n @state()\n open = false;\n\n @state()\n errorText = '';\n\n @query('oscd-dialog')\n createDOdialog!: OscdDialog;\n\n @query('#cdc-type')\n cdcType!: OscdFilledSelect;\n\n @query('#do-name')\n doName!: OscdOutlinedTextField;\n\n @query('#namespace')\n namespace!: OscdOutlinedTextField;\n\n private namespaceDefaultValue = 'User-Defined';\n\n private validationDebounceDelay = 300;\n\n @state()\n private isCustomNamespaceDisabled = true;\n\n show() {\n this.createDOdialog.show();\n }\n\n close() {\n if (this.cdcType) {\n this.cdcType.errorText = '';\n this.cdcType.error = false;\n this.cdcType.reset();\n }\n\n if (this.doName) {\n this.doName.errorText = '';\n this.doName.error = false;\n this.doName.value = '';\n }\n\n if (this.namespace) {\n this.namespace.errorText = '';\n this.namespace.error = false;\n this.namespace.value = '';\n this.isCustomNamespaceDisabled = true;\n }\n\n this.createDOdialog.close();\n }\n\n private getMultiTree() {\n return Object.keys(this.tree)\n .filter(key => (this.tree[key] as any).presCond === 'Omulti')\n .reduce((acc, key) => {\n acc[key] = this.tree[key];\n return acc;\n }, {} as any);\n }\n\n // eslint-disable-next-line class-methods-use-this\n private findMatchingTreeNode(doName: string, multiTree: any) {\n const firstTextBlockMatch = doName.match(firstTextBlockRegExp);\n\n if (!firstTextBlockMatch) {\n return null;\n }\n\n const firstTextBlock = firstTextBlockMatch[0];\n const matchingNode = multiTree[`${firstTextBlock}1`];\n\n return matchingNode || null;\n }\n\n private getDONameStatus(): DONameStatus {\n const doNameValue = this.doName.value;\n const cdcValue = this.cdcType.value;\n const isTaken = doNameValue in this.tree;\n\n if (isTaken) {\n return DONameStatus.Taken;\n }\n\n const multiTree = this.getMultiTree();\n const matchingTreeNode = this.findMatchingTreeNode(doNameValue, multiTree);\n\n if (matchingTreeNode) {\n const doCDCsMatch = cdcValue === matchingTreeNode.type;\n\n if (!doCDCsMatch) {\n return DONameStatus.InvalidCDC;\n }\n return DONameStatus.Ok;\n }\n\n return DONameStatus.CustomNamespaceNeeded;\n }\n\n private onValueChange = debounce(() => {\n if (!this.cdcType.value || !this.doName.value) {\n this.isCustomNamespaceDisabled = true;\n return;\n }\n\n const status = this.getDONameStatus();\n this.setDONameStatusError(status);\n\n this.isCustomNamespaceDisabled =\n status !== DONameStatus.CustomNamespaceNeeded;\n }, this.validationDebounceDelay);\n\n private setDONameStatusError(status: DONameStatus): void {\n if (status === DONameStatus.Taken) {\n this.doName.errorText = 'DO name already in use';\n this.doName.error = true;\n } else {\n this.doName.errorText = '';\n this.doName.error = false;\n }\n\n if (status === DONameStatus.InvalidCDC) {\n this.cdcType.errorText = 'CDC type invalid for this DO';\n this.cdcType.error = true;\n } else {\n this.cdcType.errorText = '';\n this.cdcType.error = false;\n }\n }\n\n private validateForm(): boolean {\n let isValid = true;\n\n if (!this.cdcType?.value) {\n this.cdcType.errorText = 'Please select a common data class.';\n this.cdcType.error = true;\n isValid = false;\n } else {\n this.cdcType.errorText = '';\n this.cdcType.error = false;\n }\n\n if (!this.doName?.checkValidity()) {\n this.doName.errorText = 'Not a valid DO name.';\n this.doName.error = true;\n isValid = false;\n } else {\n this.doName.errorText = '';\n this.doName.error = false;\n }\n\n const status = this.getDONameStatus();\n\n if (status === DONameStatus.CustomNamespaceNeeded) {\n if (!this.namespace.value) {\n this.namespace.errorText = 'Custom namespace required.';\n this.namespace.error = true;\n isValid = false;\n }\n } else if (\n status === DONameStatus.Taken ||\n status === DONameStatus.InvalidCDC\n ) {\n this.setDONameStatusError(status);\n isValid = false;\n }\n\n return isValid;\n }\n\n private onAddDataObjectSubmit(e: Event) {\n e.preventDefault();\n if (!this.validateForm()) return;\n const status = this.getDONameStatus();\n\n const cdcType = this.cdcType.value;\n const doName = this.doName.value;\n const namespace =\n status === DONameStatus.CustomNamespaceNeeded\n ? this.namespace.value\n : null;\n\n this.onConfirm?.(cdcType, doName, namespace);\n this.close();\n }\n\n /* eslint-disable class-methods-use-this */\n private resetErrorText(e: Event): void {\n const target = e.target as OscdOutlinedTextField;\n if (target.errorText && target.checkValidity()) {\n target.errorText = '';\n target.error = false;\n }\n }\n\n render() {\n return html`\n <oscd-dialog @closed=${this.close}>\n <div slot=\"headline\">Add Data Object</div>\n <form\n slot=\"content\"\n id=\"add-data-object\"\n class=\"dialog-content\"\n novalidate\n @submit=${this.onAddDataObjectSubmit}\n @reset=${this.close}\n >\n <oscd-filled-select\n class=\"cdc-type\"\n label=\"Common Data Class\"\n required\n id=\"cdc-type\"\n @input=${(e: Event) => {\n this.resetErrorText(e);\n this.onValueChange();\n }}\n >\n ${this.cdClasses.map(\n cdClass =>\n html`<oscd-select-option value=${cdClass}\n >${cdClass}</oscd-select-option\n >`\n )}\n </oscd-filled-select>\n <oscd-outlined-text-field\n label=\"Data Object Name\"\n id=\"do-name\"\n required\n maxlength=\"12\"\n pattern=\"[A-Z][0-9A-Za-z]*\"\n @input=${(e: Event) => {\n this.resetErrorText(e);\n this.onValueChange();\n }}\n ></oscd-outlined-text-field>\n <oscd-outlined-text-field\n id=\"namespace\"\n label=\"Namespace\"\n placeholder=${this.namespaceDefaultValue}\n required\n .disabled=${this.isCustomNamespaceDisabled}\n @input=${this.resetErrorText}\n ></oscd-outlined-text-field>\n </form>\n <div slot=\"actions\">\n <oscd-text-button form=\"add-data-object\" type=\"reset\"\n >Close</oscd-text-button\n >\n <oscd-text-button form=\"add-data-object\" type=\"submit\"\n >Add</oscd-text-button\n >\n </div>\n </oscd-dialog>\n `;\n }\n}\n\nexport default AddDataObjectDialog;\n"]}
@@ -0,0 +1,21 @@
1
+ import { LitElement } from 'lit';
2
+ import { OscdDialog } from '@omicronenergy/oscd-ui/dialog/OscdDialog.js';
3
+ import { OscdOutlinedButton } from '@omicronenergy/oscd-ui/button/OscdOutlinedButton.js';
4
+ declare const DeleteDialog_base: typeof LitElement & import("@open-wc/scoped-elements/lit-element.js").ScopedElementsHostConstructor;
5
+ export declare class DeleteDialog extends DeleteDialog_base {
6
+ static scopedElements: {
7
+ 'oscd-dialog': typeof OscdDialog;
8
+ 'oscd-outlined-button': typeof OscdOutlinedButton;
9
+ };
10
+ onConfirm: () => void;
11
+ lnodeTypeId: string;
12
+ dialog: OscdDialog;
13
+ get open(): boolean;
14
+ show(): void;
15
+ close(): void;
16
+ private handleCancel;
17
+ private handleConfirm;
18
+ render(): import("lit").TemplateResult<1>;
19
+ static styles: import("lit").CSSResult;
20
+ }
21
+ export {};
@@ -0,0 +1,104 @@
1
+ import { __decorate } from "tslib";
2
+ /* eslint-disable @typescript-eslint/no-unused-vars */
3
+ import { ScopedElementsMixin } from '@open-wc/scoped-elements/lit-element.js';
4
+ import { LitElement, html, css } from 'lit';
5
+ import { query, property } from 'lit/decorators.js';
6
+ import { OscdDialog } from '@omicronenergy/oscd-ui/dialog/OscdDialog.js';
7
+ import { OscdOutlinedButton } from '@omicronenergy/oscd-ui/button/OscdOutlinedButton.js';
8
+ export class DeleteDialog extends ScopedElementsMixin(LitElement) {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.lnodeTypeId = '';
12
+ }
13
+ static { this.scopedElements = {
14
+ 'oscd-dialog': OscdDialog,
15
+ 'oscd-outlined-button': OscdOutlinedButton,
16
+ }; }
17
+ get open() {
18
+ return this.dialog?.open ?? false;
19
+ }
20
+ show() {
21
+ this.dialog?.show();
22
+ }
23
+ close() {
24
+ this.dialog?.close();
25
+ }
26
+ handleCancel() {
27
+ this.close();
28
+ }
29
+ handleConfirm() {
30
+ this.onConfirm();
31
+ this.close();
32
+ }
33
+ render() {
34
+ return html `
35
+ <oscd-dialog>
36
+ <div slot="headline">Confirm delete</div>
37
+ <div slot="content" class="delete-content">
38
+ Are you sure you want to delete Logical Node Type ${this.lnodeTypeId}?
39
+ This action may have severe consequences.
40
+ </div>
41
+ <div slot="actions">
42
+ <oscd-outlined-button
43
+ class="button close"
44
+ @click="${this.handleCancel}"
45
+ >Cancel</oscd-outlined-button
46
+ >
47
+ <oscd-outlined-button
48
+ class="button delete"
49
+ @click="${this.handleConfirm}"
50
+ >Delete</oscd-outlined-button
51
+ >
52
+ </div>
53
+ </oscd-dialog>
54
+ `;
55
+ }
56
+ static { this.styles = css `
57
+ * {
58
+ --md-sys-color-primary: var(--oscd-primary);
59
+ --md-sys-color-secondary: var(--oscd-secondary);
60
+ --md-sys-typescale-body-large-font: var(--oscd-theme-text-font);
61
+ --md-outlined-text-field-input-text-color: var(--oscd-base01);
62
+
63
+ --md-sys-color-surface: var(--oscd-base3);
64
+ --md-sys-color-on-surface: var(--oscd-base00);
65
+ --md-sys-color-on-primary: var(--oscd-base2);
66
+ --md-sys-color-on-surface-variant: var(--oscd-base00);
67
+ --md-menu-container-color: var(--oscd-base3);
68
+ font-family: var(--oscd-theme-text-font);
69
+ --md-sys-color-surface-container-highest: var(--oscd-base2);
70
+ --md-dialog-container-color: var(--oscd-base3);
71
+ font-family: var(--oscd-theme-text-font, 'Roboto');
72
+ }
73
+
74
+ md-outlined-button {
75
+ text-transform: uppercase;
76
+ }
77
+
78
+ .delete-content {
79
+ display: flex;
80
+ flex-direction: column;
81
+ gap: 12px;
82
+ }
83
+
84
+ .button.close {
85
+ --md-outlined-button-label-text-color: var(--oscd-accent-red);
86
+ --md-outlined-button-hover-label-text-color: var(--oscd-accent-red);
87
+ }
88
+
89
+ .button.delete {
90
+ --md-outlined-button-label-text-color: var(--oscd-accent-red);
91
+ --md-outlined-button-hover-label-text-color: var(--oscd-accent-red);
92
+ }
93
+ `; }
94
+ }
95
+ __decorate([
96
+ property()
97
+ ], DeleteDialog.prototype, "onConfirm", void 0);
98
+ __decorate([
99
+ property()
100
+ ], DeleteDialog.prototype, "lnodeTypeId", void 0);
101
+ __decorate([
102
+ query('oscd-dialog')
103
+ ], DeleteDialog.prototype, "dialog", void 0);
104
+ //# sourceMappingURL=delete-lnodetype-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-lnodetype-dialog.js","sourceRoot":"","sources":["../../components/delete-lnodetype-dialog.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAC;AAEzF,MAAM,OAAO,YAAa,SAAQ,mBAAmB,CAAC,UAAU,CAAC;IAAjE;;QAUE,gBAAW,GAAW,EAAE,CAAC;IAwF3B,CAAC;aAjGQ,mBAAc,GAAG;QACtB,aAAa,EAAE,UAAU;QACzB,sBAAsB,EAAE,kBAAkB;KAC3C,AAHoB,CAGnB;IAWF,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,KAAK,CAAC;IACpC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;8DAI+C,IAAI,CAAC,WAAW;;;;;;sBAMxD,IAAI,CAAC,YAAY;;;;;sBAKjB,IAAI,CAAC,aAAa;;;;;KAKnC,CAAC;IACJ,CAAC;aAEM,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqClB,AArCY,CAqCX;;AA1FF;IADC,QAAQ,EAAE;+CACY;AAGvB;IADC,QAAQ,EAAE;iDACc;AAGzB;IADC,KAAK,CAAC,aAAa,CAAC;4CACD","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements/lit-element.js';\nimport { LitElement, html, css } from 'lit';\nimport { query, property } from 'lit/decorators.js';\nimport { OscdDialog } from '@omicronenergy/oscd-ui/dialog/OscdDialog.js';\nimport { OscdOutlinedButton } from '@omicronenergy/oscd-ui/button/OscdOutlinedButton.js';\n\nexport class DeleteDialog extends ScopedElementsMixin(LitElement) {\n static scopedElements = {\n 'oscd-dialog': OscdDialog,\n 'oscd-outlined-button': OscdOutlinedButton,\n };\n\n @property()\n onConfirm!: () => void;\n\n @property()\n lnodeTypeId: string = '';\n\n @query('oscd-dialog')\n dialog!: OscdDialog;\n\n get open() {\n return this.dialog?.open ?? false;\n }\n\n show() {\n this.dialog?.show();\n }\n\n close() {\n this.dialog?.close();\n }\n\n private handleCancel() {\n this.close();\n }\n\n private handleConfirm() {\n this.onConfirm();\n this.close();\n }\n\n render() {\n return html`\n <oscd-dialog>\n <div slot=\"headline\">Confirm delete</div>\n <div slot=\"content\" class=\"delete-content\">\n Are you sure you want to delete Logical Node Type ${this.lnodeTypeId}?\n This action may have severe consequences.\n </div>\n <div slot=\"actions\">\n <oscd-outlined-button\n class=\"button close\"\n @click=\"${this.handleCancel}\"\n >Cancel</oscd-outlined-button\n >\n <oscd-outlined-button\n class=\"button delete\"\n @click=\"${this.handleConfirm}\"\n >Delete</oscd-outlined-button\n >\n </div>\n </oscd-dialog>\n `;\n }\n\n static styles = css`\n * {\n --md-sys-color-primary: var(--oscd-primary);\n --md-sys-color-secondary: var(--oscd-secondary);\n --md-sys-typescale-body-large-font: var(--oscd-theme-text-font);\n --md-outlined-text-field-input-text-color: var(--oscd-base01);\n\n --md-sys-color-surface: var(--oscd-base3);\n --md-sys-color-on-surface: var(--oscd-base00);\n --md-sys-color-on-primary: var(--oscd-base2);\n --md-sys-color-on-surface-variant: var(--oscd-base00);\n --md-menu-container-color: var(--oscd-base3);\n font-family: var(--oscd-theme-text-font);\n --md-sys-color-surface-container-highest: var(--oscd-base2);\n --md-dialog-container-color: var(--oscd-base3);\n font-family: var(--oscd-theme-text-font, 'Roboto');\n }\n\n md-outlined-button {\n text-transform: uppercase;\n }\n\n .delete-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .button.close {\n --md-outlined-button-label-text-color: var(--oscd-accent-red);\n --md-outlined-button-hover-label-text-color: var(--oscd-accent-red);\n }\n\n .button.delete {\n --md-outlined-button-label-text-color: var(--oscd-accent-red);\n --md-outlined-button-hover-label-text-color: var(--oscd-accent-red);\n }\n `;\n}\n"]}
@@ -0,0 +1,28 @@
1
+ import { LitElement, PropertyValues } from 'lit';
2
+ import { OscdFilledButton } from '@omicronenergy/oscd-ui/button/OscdFilledButton.js';
3
+ import { OscdOutlinedTextField } from '@omicronenergy/oscd-ui/textfield/OscdOutlinedTextField.js';
4
+ import { OscdList } from '@omicronenergy/oscd-ui/list/OscdList.js';
5
+ import { OscdListItem } from '@omicronenergy/oscd-ui/list/OscdListItem.js';
6
+ declare const LNodeTypeSidebar_base: typeof LitElement & import("@open-wc/scoped-elements/lit-element.js").ScopedElementsHostConstructor;
7
+ export declare class LNodeTypeSidebar extends LNodeTypeSidebar_base {
8
+ static scopedElements: {
9
+ 'oscd-filled-button': typeof OscdFilledButton;
10
+ 'oscd-outlined-textfield': typeof OscdOutlinedTextField;
11
+ 'oscd-list': typeof OscdList;
12
+ 'oscd-list-item': typeof OscdListItem;
13
+ };
14
+ lNodeTypes: Element[];
15
+ selectedId?: string;
16
+ filter: string;
17
+ private sortedLNodeTypes;
18
+ private debounceTimer?;
19
+ private static sortLNodeTypes;
20
+ protected willUpdate(changedProperties: PropertyValues<this>): void;
21
+ private handleInput;
22
+ private clearFilter;
23
+ private handleClick;
24
+ get filteredLNodeTypes(): Element[];
25
+ render(): import("lit").TemplateResult<1>;
26
+ static styles: import("lit").CSSResult;
27
+ }
28
+ export {};