mbg-val-input 0.4.2 → 0.5.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.
- package/README.md +135 -6
- package/demo/index.html +6 -0
- package/dist/src/MbgValInput.d.ts +3 -2
- package/dist/src/MbgValInput.js +60 -21
- package/dist/src/MbgValInput.js.map +1 -1
- package/dist/src/currency-input.d.ts +2 -2
- package/dist/src/currency-input.js +4 -4
- package/dist/src/currency-input.js.map +1 -1
- package/dist/src/design-tokens.d.ts +1 -0
- package/dist/src/design-tokens.js +32 -0
- package/dist/src/design-tokens.js.map +1 -0
- package/dist/stories/index.stories.d.ts +9 -0
- package/dist/stories/index.stories.js +44 -1
- package/dist/stories/index.stories.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/MbgValInput.ts +57 -20
- package/src/currency-input.ts +8 -4
- package/src/design-tokens.ts +32 -0
- package/stories/index.stories.ts +50 -0
package/README.md
CHANGED
|
@@ -2,6 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
This webcomponent follows the [open-wc](https://github.com/open-wc/open-wc) recommendation.
|
|
4
4
|
|
|
5
|
+
## Table of contents
|
|
6
|
+
|
|
7
|
+
- [Installation](#installation)
|
|
8
|
+
- [Usage](#usage)
|
|
9
|
+
- [Theming](#theming)
|
|
10
|
+
- [Supported basic types (bTypes)](#supported-basic-types-btypes)
|
|
11
|
+
- [Boolean](#boolean)
|
|
12
|
+
- [Integers](#integers)
|
|
13
|
+
- [Floats](#floats)
|
|
14
|
+
- [Octet strings](#octet-strings)
|
|
15
|
+
- [Visible and Unicode strings](#visible-and-unicode-strings)
|
|
16
|
+
- [Bit strings](#bit-strings)
|
|
17
|
+
- [Enumerations](#enumerations)
|
|
18
|
+
- [Other](#other)
|
|
19
|
+
- [Development Workflow](#development-workflow)
|
|
20
|
+
- [Linting and formatting](#linting-and-formatting)
|
|
21
|
+
- [Testing with Web Test Runner](#testing-with-web-test-runner)
|
|
22
|
+
- [Demoing with Storybook](#demoing-with-storybook)
|
|
23
|
+
- [Tooling configs](#tooling-configs)
|
|
24
|
+
- [Local Demo with web-dev-server](#local-demo-with-web-dev-server)
|
|
25
|
+
|
|
5
26
|
## Installation
|
|
6
27
|
|
|
7
28
|
```bash
|
|
@@ -18,7 +39,116 @@ npm i mbg-val-input
|
|
|
18
39
|
<mbg-val-input></mbg-val-input>
|
|
19
40
|
```
|
|
20
41
|
|
|
21
|
-
##
|
|
42
|
+
## Theming
|
|
43
|
+
|
|
44
|
+
`<mbg-val-input>` exposes CSS custom properties (design tokens) so you can adjust its appearance without overriding internal styles. The default values are based on what is defined in the Material Web toolkit.
|
|
45
|
+
|
|
46
|
+
| Token | Default | Description |
|
|
47
|
+
| --- | --- | --- |
|
|
48
|
+
| `--mbg-val-input-shape` | `4px` | Border radius of the input container |
|
|
49
|
+
| `--mbg-val-input-space` | `16px` | Top and bottom padding inside the field |
|
|
50
|
+
| `--mbg-val-input-height` | `56px` | Height of the component |
|
|
51
|
+
| `--mbg-val-input-width` | `auto` | Width of the component |
|
|
52
|
+
| `--mbg-val-input-min-width` | `100px` | Minimum width |
|
|
53
|
+
| `--mbg-val-input-max-width` | `100%` | Maximum width |
|
|
54
|
+
|
|
55
|
+
Set any of these on the element or a parent selector:
|
|
56
|
+
|
|
57
|
+
```css
|
|
58
|
+
mbg-val-input {
|
|
59
|
+
--mbg-val-input-shape: 8px;
|
|
60
|
+
--mbg-val-input-height: 48px;
|
|
61
|
+
--mbg-val-input-width: 320px;
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Supported basic types (bTypes)
|
|
66
|
+
|
|
67
|
+
`<mbg-val-input>` supports the following basic types, as defined in the IEC 61850 standard. Pass the type via the `bType` attribute.
|
|
68
|
+
|
|
69
|
+
### Boolean
|
|
70
|
+
|
|
71
|
+
| bType | Input | Notes |
|
|
72
|
+
| --- | --- | --- |
|
|
73
|
+
| `BOOLEAN` | Toggle switch | Accepts `true`/`1` or `false`/`0` as default value |
|
|
74
|
+
|
|
75
|
+
### Integers
|
|
76
|
+
|
|
77
|
+
| bType | Input | Range |
|
|
78
|
+
| --- | --- | --- |
|
|
79
|
+
| `INT8` | Number field | -128 to 127 |
|
|
80
|
+
| `INT16` | Number field | -32,768 to 32,767 |
|
|
81
|
+
| `INT24` | Number field | -8,388,608 to 8,388,607 |
|
|
82
|
+
| `INT32` | Number field | -2,147,483,648 to 2,147,483,647 |
|
|
83
|
+
| `INT64` | Text field | 64-bit signed (parsed as BigInt) |
|
|
84
|
+
| `INT128` | Text field | 128-bit signed (parsed as BigInt) |
|
|
85
|
+
| `INT8U` | Number field | 0 to 255 |
|
|
86
|
+
| `INT16U` | Number field | 0 to 65,535 |
|
|
87
|
+
| `INT24U` | Number field | 0 to 16,777,215 |
|
|
88
|
+
| `INT32U` | Number field | 0 to 4,294,967,295 |
|
|
89
|
+
| `Check` | Number field | 8-bit unsigned (0 to 255) |
|
|
90
|
+
|
|
91
|
+
### Floats
|
|
92
|
+
|
|
93
|
+
| bType | Input | Range |
|
|
94
|
+
| --- | --- | --- |
|
|
95
|
+
| `FLOAT32` | Text field | IEEE 754 single precision |
|
|
96
|
+
| `FLOAT64` | Text field | IEEE 754 double precision |
|
|
97
|
+
|
|
98
|
+
### Octet strings
|
|
99
|
+
|
|
100
|
+
Accepts hexadecimal characters only. Max length is `size × 2` hex characters.
|
|
101
|
+
|
|
102
|
+
| bType | Input | Max length |
|
|
103
|
+
| --- | --- | --- |
|
|
104
|
+
| `Octet6` | Text field | 12 hex chars |
|
|
105
|
+
| `Octet16` | Text field | 32 hex chars |
|
|
106
|
+
| `Octet64` | Text field | 128 hex chars |
|
|
107
|
+
| `EntryID` | Text field | 16 hex chars |
|
|
108
|
+
| `EntryTime` | Text field | 12 hex chars |
|
|
109
|
+
|
|
110
|
+
### Visible and Unicode strings
|
|
111
|
+
|
|
112
|
+
| bType | Input | Max length |
|
|
113
|
+
| --- | --- | --- |
|
|
114
|
+
| `VisString32` | Text field | 32 |
|
|
115
|
+
| `VisString64` | Text field | 64 |
|
|
116
|
+
| `VisString65` | Text field | 65 |
|
|
117
|
+
| `VisString129` | Text field | 129 |
|
|
118
|
+
| `VisString255` | Text field | 255 |
|
|
119
|
+
| `Unicode255` | Text field | 255 |
|
|
120
|
+
|
|
121
|
+
### Bit strings
|
|
122
|
+
|
|
123
|
+
Accepts only `0` and `1` characters.
|
|
124
|
+
|
|
125
|
+
| bType | Input | Length |
|
|
126
|
+
| --- | --- | --- |
|
|
127
|
+
| `Quality` | Text field | 14 bits |
|
|
128
|
+
| `TrgOps` | Text field | 6 bits |
|
|
129
|
+
| `OptFlds` | Text field | 10 bits |
|
|
130
|
+
| `SvOptFlds` | Text field | 6 bits |
|
|
131
|
+
| `LogOptFlds` | Text field | 5 bits |
|
|
132
|
+
|
|
133
|
+
### Enumerations
|
|
134
|
+
|
|
135
|
+
| bType | Input | Notes |
|
|
136
|
+
| --- | --- | --- |
|
|
137
|
+
| `Enum` | Dropdown | Options driven by `enumOrdinals` and `enumLabels` properties |
|
|
138
|
+
| `Dbpos` | Dropdown | Fixed: `0` intermediate-state, `1` off, `2` on, `3` bad-state |
|
|
139
|
+
| `Tcmd` | Dropdown | Fixed: `0` neutral, `1` lower, `2` higher, `3` reserved |
|
|
140
|
+
|
|
141
|
+
### Other
|
|
142
|
+
|
|
143
|
+
| bType | Input | Notes |
|
|
144
|
+
| --- | --- | --- |
|
|
145
|
+
| `Timestamp` | Text field | Format: `YYYY-MM-DDTHH:MM:SS.sss` |
|
|
146
|
+
| `ObjRef` | Text field | Alphanumeric and `_`, `/`, `$`; max 255 chars |
|
|
147
|
+
| `Currency` | Currency field | Custom currency input |
|
|
148
|
+
|
|
149
|
+
## Development Workflow
|
|
150
|
+
|
|
151
|
+
### Linting and formatting
|
|
22
152
|
|
|
23
153
|
To scan the project for linting and formatting errors, run
|
|
24
154
|
|
|
@@ -32,7 +162,7 @@ To automatically fix linting and formatting errors, run
|
|
|
32
162
|
npm run format
|
|
33
163
|
```
|
|
34
164
|
|
|
35
|
-
|
|
165
|
+
### Testing with Web Test Runner
|
|
36
166
|
|
|
37
167
|
To execute a single test run:
|
|
38
168
|
|
|
@@ -46,7 +176,7 @@ To run the tests in interactive watch mode run:
|
|
|
46
176
|
npm run test:watch
|
|
47
177
|
```
|
|
48
178
|
|
|
49
|
-
|
|
179
|
+
### Demoing with Storybook
|
|
50
180
|
|
|
51
181
|
To run a local instance of Storybook for your component, run
|
|
52
182
|
|
|
@@ -60,14 +190,13 @@ To build a production version of Storybook, run
|
|
|
60
190
|
npm run storybook:build
|
|
61
191
|
```
|
|
62
192
|
|
|
63
|
-
|
|
64
|
-
## Tooling configs
|
|
193
|
+
### Tooling configs
|
|
65
194
|
|
|
66
195
|
For most of the tools, the configuration is in the `package.json` to reduce the amount of files in your project.
|
|
67
196
|
|
|
68
197
|
If you customize the configuration a lot, you can consider moving them to individual files.
|
|
69
198
|
|
|
70
|
-
|
|
199
|
+
### Local Demo with `web-dev-server`
|
|
71
200
|
|
|
72
201
|
```bash
|
|
73
202
|
npm start
|
package/demo/index.html
CHANGED
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
|
6
6
|
<style>
|
|
7
|
+
* {
|
|
8
|
+
--mbg-val-input-shape: 10px;
|
|
9
|
+
--mbg-val-input-space: 8px;
|
|
10
|
+
--mbg-val-input-height: 40px;
|
|
11
|
+
}
|
|
12
|
+
|
|
7
13
|
body {
|
|
8
14
|
background: #fafafa;
|
|
9
15
|
font-family: sans-serif;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { LitElement, TemplateResult } from 'lit';
|
|
2
2
|
import '@material/web/textfield/outlined-text-field.js';
|
|
3
|
-
import '@material/web/select/
|
|
3
|
+
import '@material/web/select/outlined-select.js';
|
|
4
4
|
import '@material/web/select/select-option.js';
|
|
5
5
|
import '@material/web/switch/switch.js';
|
|
6
6
|
/** Web Component for inputting IEC61850-6 "Val" values */
|
|
7
7
|
export declare class MbgValInput extends LitElement {
|
|
8
|
-
static styles: import("lit").CSSResult;
|
|
8
|
+
static styles: import("lit").CSSResult[];
|
|
9
9
|
bType?: string;
|
|
10
|
+
readOnly: boolean;
|
|
10
11
|
default: string;
|
|
11
12
|
enumOrdinals: string[];
|
|
12
13
|
enumLabels: string[];
|
package/dist/src/MbgValInput.js
CHANGED
|
@@ -3,8 +3,9 @@ import { __decorate } from "tslib";
|
|
|
3
3
|
import { html, css, LitElement, nothing } from 'lit';
|
|
4
4
|
import { property, query } from 'lit/decorators.js';
|
|
5
5
|
import { currencyInput } from './currency-input.js';
|
|
6
|
+
import { designTokens } from './design-tokens.js';
|
|
6
7
|
import '@material/web/textfield/outlined-text-field.js';
|
|
7
|
-
import '@material/web/select/
|
|
8
|
+
import '@material/web/select/outlined-select.js';
|
|
8
9
|
import '@material/web/select/select-option.js';
|
|
9
10
|
import '@material/web/switch/switch.js';
|
|
10
11
|
function xmlBoolean(val) {
|
|
@@ -26,6 +27,8 @@ function isValidBigInt(value, size) {
|
|
|
26
27
|
return false;
|
|
27
28
|
}
|
|
28
29
|
function sanitizeAndValidateInt(value, size, isUserInput, isSigned = true) {
|
|
30
|
+
if (!value)
|
|
31
|
+
return '';
|
|
29
32
|
// allow leading negative sign
|
|
30
33
|
const signed = value[0] === '-' ? '-' : '';
|
|
31
34
|
const negative = signed === '-';
|
|
@@ -79,6 +82,8 @@ function isValidFloat(value, size) {
|
|
|
79
82
|
}
|
|
80
83
|
/** Removes invalid characters and validates the float value input */
|
|
81
84
|
function sanitizeAndValidateFloat(value, isUserInput, size) {
|
|
85
|
+
if (!value)
|
|
86
|
+
return '';
|
|
82
87
|
let sanitized = '';
|
|
83
88
|
// allow leading negative sign
|
|
84
89
|
const signed = value[0] === '-' ? '-' : '';
|
|
@@ -140,15 +145,17 @@ function sanitizeAndValidateFloat(value, isUserInput, size) {
|
|
|
140
145
|
return sanitized;
|
|
141
146
|
}
|
|
142
147
|
function sanitizeOctet(value) {
|
|
143
|
-
return value
|
|
148
|
+
return value?.replace(/[^0-9a-fA-F]/g, '');
|
|
144
149
|
}
|
|
145
150
|
function sanitizeObjRef(value) {
|
|
146
|
-
return value
|
|
151
|
+
return value?.replace(/[^A-Za-z0-9_/$]/g, '');
|
|
147
152
|
}
|
|
148
153
|
function sanitizeBitString(value) {
|
|
149
|
-
return value
|
|
154
|
+
return value?.replace(/[^01]/g, '');
|
|
150
155
|
}
|
|
151
156
|
function formatTimestamp(input) {
|
|
157
|
+
if (!input)
|
|
158
|
+
return '';
|
|
152
159
|
const digits = input.replace(/\D/g, '');
|
|
153
160
|
// Extract parts
|
|
154
161
|
const year = digits.slice(0, 4);
|
|
@@ -177,6 +184,7 @@ function formatTimestamp(input) {
|
|
|
177
184
|
export class MbgValInput extends LitElement {
|
|
178
185
|
constructor() {
|
|
179
186
|
super(...arguments);
|
|
187
|
+
this.readOnly = false;
|
|
180
188
|
// If the DA/BDA is assigned a Val in DataTypeTemplates
|
|
181
189
|
this.default = '';
|
|
182
190
|
// if bType === "Enum" - ordinal values
|
|
@@ -225,6 +233,7 @@ export class MbgValInput extends LitElement {
|
|
|
225
233
|
type="text"
|
|
226
234
|
value="${validatedDefault ?? nothing}"
|
|
227
235
|
@input="${this.handleBigIntInput}"
|
|
236
|
+
?disabled="${this.readOnly}"
|
|
228
237
|
></md-outlined-text-field>`;
|
|
229
238
|
}
|
|
230
239
|
return html `<md-outlined-text-field
|
|
@@ -236,6 +245,7 @@ export class MbgValInput extends LitElement {
|
|
|
236
245
|
max="${max}"
|
|
237
246
|
value="${validatedDefault ?? nothing}"
|
|
238
247
|
@input="${this.handleIntInput}"
|
|
248
|
+
?disabled="${this.readOnly}"
|
|
239
249
|
></md-outlined-text-field>`;
|
|
240
250
|
}
|
|
241
251
|
handleFloatInput(event) {
|
|
@@ -257,6 +267,7 @@ export class MbgValInput extends LitElement {
|
|
|
257
267
|
type="text"
|
|
258
268
|
value="${validatedDefault ?? nothing}"
|
|
259
269
|
@input="${this.handleFloatInput}"
|
|
270
|
+
?disabled="${this.readOnly}"
|
|
260
271
|
></md-outlined-text-field>
|
|
261
272
|
`;
|
|
262
273
|
}
|
|
@@ -276,6 +287,7 @@ export class MbgValInput extends LitElement {
|
|
|
276
287
|
value="${sanitizeOctet(this.default) ?? nothing}"
|
|
277
288
|
maxlength="${size * 2}"
|
|
278
289
|
@input="${this.handleOctetInput}"
|
|
290
|
+
?disabled="${this.readOnly}"
|
|
279
291
|
></md-outlined-text-field>
|
|
280
292
|
`;
|
|
281
293
|
}
|
|
@@ -294,6 +306,7 @@ export class MbgValInput extends LitElement {
|
|
|
294
306
|
value="${this.default ?? nothing}"
|
|
295
307
|
maxlength="${size}"
|
|
296
308
|
@input="${this.handleStringInput}"
|
|
309
|
+
?disabled="${this.readOnly}"
|
|
297
310
|
></md-outlined-text-field>
|
|
298
311
|
`;
|
|
299
312
|
}
|
|
@@ -307,16 +320,21 @@ export class MbgValInput extends LitElement {
|
|
|
307
320
|
labels = JSON.parse(this.enumLabels);
|
|
308
321
|
}
|
|
309
322
|
return html `
|
|
310
|
-
<md-
|
|
323
|
+
<md-outlined-select
|
|
324
|
+
id="input"
|
|
325
|
+
label="${this.label}"
|
|
326
|
+
?disabled="${this.readOnly}"
|
|
327
|
+
>
|
|
311
328
|
${ordinals.map((ordinal, index) => html `
|
|
312
329
|
<md-select-option
|
|
313
330
|
value="${labels[index]}"
|
|
314
|
-
?selected=${
|
|
331
|
+
?selected=${this.default === labels[index] ||
|
|
332
|
+
this.default === ordinal}
|
|
315
333
|
>
|
|
316
334
|
<div slot="headline">${ordinal} - ${labels[index]}</div>
|
|
317
335
|
</md-select-option>
|
|
318
336
|
`)}
|
|
319
|
-
</md-
|
|
337
|
+
</md-outlined-select>
|
|
320
338
|
`;
|
|
321
339
|
}
|
|
322
340
|
handleTimestampInput(event) {
|
|
@@ -339,6 +357,7 @@ export class MbgValInput extends LitElement {
|
|
|
339
357
|
label="${this.label}"
|
|
340
358
|
value="${validatedDefault ?? nothing}"
|
|
341
359
|
@input="${this.handleTimestampInput}"
|
|
360
|
+
?disabled="${this.readOnly}"
|
|
342
361
|
></md-outlined-text-field>
|
|
343
362
|
`;
|
|
344
363
|
}
|
|
@@ -358,12 +377,13 @@ export class MbgValInput extends LitElement {
|
|
|
358
377
|
value="${sanitizeObjRef(this.default) ?? nothing}"
|
|
359
378
|
maxlength="255"
|
|
360
379
|
@input="${this.handleObjRefInput}"
|
|
380
|
+
?disabled="${this.readOnly}"
|
|
361
381
|
></md-outlined-text-field>
|
|
362
382
|
`;
|
|
363
383
|
}
|
|
364
384
|
dbposInput() {
|
|
365
385
|
return html `
|
|
366
|
-
<md-
|
|
386
|
+
<md-outlined-select id="input" label="${this.label}" ?disabled="${this.readOnly}">
|
|
367
387
|
<md-select-option value="0" ?selected=${this.default === '0'}>
|
|
368
388
|
<div slot="headline">0 - intermediate-state</div>
|
|
369
389
|
</md-select-option>
|
|
@@ -378,12 +398,12 @@ export class MbgValInput extends LitElement {
|
|
|
378
398
|
<md-select-option value="3" ?selected=${this.default === '3'}>
|
|
379
399
|
<div slot="headline">3 - bad-state</div>
|
|
380
400
|
</md-select-option>
|
|
381
|
-
</md-
|
|
401
|
+
</md-outlined-select>
|
|
382
402
|
`;
|
|
383
403
|
}
|
|
384
404
|
tcmdInput() {
|
|
385
405
|
return html `
|
|
386
|
-
<md-
|
|
406
|
+
<md-outlined-select id="input" label="${this.label}" ?disabled="${this.readOnly}">
|
|
387
407
|
<md-select-option value="0" ?selected=${this.default === '0'}>
|
|
388
408
|
<div slot="headline">0 - neutral</div>
|
|
389
409
|
</md-select-option>
|
|
@@ -398,7 +418,7 @@ export class MbgValInput extends LitElement {
|
|
|
398
418
|
<md-select-option value="3" ?selected=${this.default === '3'}>
|
|
399
419
|
<div slot="headline">3 - reserved</div>
|
|
400
420
|
</md-select-option>
|
|
401
|
-
</md-
|
|
421
|
+
</md-outlined-select>
|
|
402
422
|
`;
|
|
403
423
|
}
|
|
404
424
|
handleBitStringInput(event) {
|
|
@@ -417,6 +437,7 @@ export class MbgValInput extends LitElement {
|
|
|
417
437
|
value="${sanitizeBitString(this.default) ?? nothing}"
|
|
418
438
|
maxlength="${size}"
|
|
419
439
|
@input="${this.handleBitStringInput}"
|
|
440
|
+
?disabled="${this.readOnly}"
|
|
420
441
|
></md-outlined-text-field>
|
|
421
442
|
`;
|
|
422
443
|
}
|
|
@@ -431,9 +452,14 @@ export class MbgValInput extends LitElement {
|
|
|
431
452
|
}
|
|
432
453
|
get inputs() {
|
|
433
454
|
return {
|
|
434
|
-
BOOLEAN: html `<label
|
|
455
|
+
BOOLEAN: html `<label class="boolean-input"
|
|
435
456
|
>${this.label}
|
|
436
|
-
<md-switch
|
|
457
|
+
<md-switch
|
|
458
|
+
id="input"
|
|
459
|
+
?disabled="${this.readOnly}"
|
|
460
|
+
?selected=${xmlBoolean(this.default)}
|
|
461
|
+
icons
|
|
462
|
+
></md-switch
|
|
437
463
|
></label>`,
|
|
438
464
|
INT8: this.intInput(8),
|
|
439
465
|
INT16: this.intInput(16),
|
|
@@ -457,7 +483,7 @@ export class MbgValInput extends LitElement {
|
|
|
457
483
|
VisString255: this.stringInput(255),
|
|
458
484
|
Unicode255: this.stringInput(255),
|
|
459
485
|
Quality: this.bitstringInput(14),
|
|
460
|
-
Currency: currencyInput(this.label, this.default),
|
|
486
|
+
Currency: currencyInput(this.label, this.default, this.readOnly),
|
|
461
487
|
Enum: this.enumInput(),
|
|
462
488
|
Timestamp: this.timestampInput(),
|
|
463
489
|
ObjRef: this.objrefInput(),
|
|
@@ -478,19 +504,32 @@ export class MbgValInput extends LitElement {
|
|
|
478
504
|
id="input"
|
|
479
505
|
label="${this.label}"
|
|
480
506
|
value="${this.default ?? nothing}"
|
|
507
|
+
?disabled="${this.readOnly}"
|
|
481
508
|
></md-outlined-text-field>`);
|
|
482
509
|
}
|
|
483
510
|
}
|
|
484
|
-
MbgValInput.styles =
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
511
|
+
MbgValInput.styles = [
|
|
512
|
+
designTokens,
|
|
513
|
+
css `
|
|
514
|
+
md-outlined-text-field.Timestamp {
|
|
515
|
+
min-width: 250px;
|
|
516
|
+
max-width: 100%;
|
|
517
|
+
width: auto;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
.boolean-input {
|
|
521
|
+
display: flex;
|
|
522
|
+
align-items: center;
|
|
523
|
+
gap: 0.5rem;
|
|
524
|
+
}
|
|
525
|
+
`,
|
|
526
|
+
];
|
|
491
527
|
__decorate([
|
|
492
528
|
property({ type: String })
|
|
493
529
|
], MbgValInput.prototype, "bType", void 0);
|
|
530
|
+
__decorate([
|
|
531
|
+
property({ type: Boolean })
|
|
532
|
+
], MbgValInput.prototype, "readOnly", void 0);
|
|
494
533
|
__decorate([
|
|
495
534
|
property({ type: String })
|
|
496
535
|
], MbgValInput.prototype, "default", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MbgValInput.js","sourceRoot":"","sources":["../../src/MbgValInput.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { html, css, LitElement, TemplateResult, nothing } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport type { MdSwitch } from '@material/web/switch/switch.js';\nimport { currencyInput } from './currency-input.js';\n\nimport '@material/web/textfield/outlined-text-field.js';\nimport '@material/web/select/filled-select.js';\nimport '@material/web/select/select-option.js';\nimport '@material/web/switch/switch.js';\n\nfunction xmlBoolean(val?: string) {\n return ['true', '1'].includes(val?.toLowerCase().trim() ?? 'false');\n}\n\nfunction isValidInt(value: number, size: number, signed: boolean): boolean {\n const min = signed ? -(2 ** (size - 1)) : 0;\n const max = signed ? 2 ** (size - 1) - 1 : 2 ** size - 1;\n return value >= min && value <= max;\n}\n\nfunction isValidBigInt(value: bigint, size: 64 | 128): boolean {\n if (size === 64) {\n return value >= -9223372036854775808n && value <= 9223372036854775807n;\n }\n if (size === 128) {\n return (\n value >= -170141183460469231731687303715884105728n &&\n value <= 170141183460469231731687303715884105727n\n );\n }\n return false;\n}\n\nfunction sanitizeAndValidateInt(\n value: string,\n size: number,\n isUserInput: boolean,\n isSigned = true,\n) {\n // allow leading negative sign\n const signed = value[0] === '-' ? '-' : '';\n const negative = signed === '-';\n\n // remove leading zeros and invalid characters\n let sanitized = value.replace(/[^0-9]/g, '').replace(/^0+(?=\\d)/, '');\n\n // handle special cases\n if (negative && !sanitized.startsWith('-')) {\n sanitized = signed + sanitized;\n }\n if (sanitized === '-0') {\n sanitized = '0';\n }\n\n // ensure input was properly sanitized\n const intRegex = /^-?\\d*$/;\n if (!intRegex.test(sanitized)) {\n return '';\n }\n\n // allow leading negative sign only if it is from user input\n if (sanitized === '') {\n if (isUserInput) {\n return sanitized;\n }\n return '';\n }\n\n // parse and validate\n if (sanitized !== '') {\n if (size === 64 || size === 128) {\n const parsedValue = BigInt(sanitized);\n if (Number.isNaN(parsedValue) || !isValidBigInt(parsedValue, size)) {\n return '';\n }\n } else {\n const parsedValue = Number(sanitized);\n if (\n Number.isNaN(parsedValue) ||\n !isValidInt(parsedValue, size, isSigned)\n ) {\n return '';\n }\n }\n }\n\n return sanitized;\n}\n\nfunction isValidFloat(value: number, size: 32 | 64): boolean {\n if (size === 32) {\n return value >= -3.4028235e38 && value <= 3.4028235e38;\n }\n if (size === 64) {\n return value >= -1.7976931348623157e308 && value <= 1.7976931348623157e308;\n }\n return false;\n}\n\n/** Removes invalid characters and validates the float value input */\nfunction sanitizeAndValidateFloat(\n value: string,\n isUserInput: boolean,\n size: 32 | 64,\n) {\n let sanitized = '';\n\n // allow leading negative sign\n const signed = value[0] === '-' ? '-' : '';\n const negative = signed === '-';\n\n // account for Euler's number\n if (value === 'e' || value === '-e') {\n sanitized = '2.7182818284590452354';\n return signed + sanitized;\n }\n\n // remove leading zeros and invalid characters\n sanitized = value\n .replace(/[^0-9eE.+-]/g, '')\n .replace(/(?<![eE])\\+|(?<![eE])-/, '');\n\n // handle multiple exponents\n const numExponents = sanitized.split(/[eE]/).length - 1;\n if (numExponents > 1) {\n sanitized = sanitized.replace(/[eE].*?[eE]/g, 'E0');\n }\n if (sanitized.endsWith('e') || sanitized.endsWith('E')) {\n sanitized += '0';\n }\n\n // handle multiple decimal points\n const numDecimalPoints = sanitized.split('.').length - 1;\n if (numDecimalPoints > 1) {\n sanitized = sanitized.replace(/\\.(?=.*\\.)/g, '');\n }\n\n // remove leading zeros\n sanitized = sanitized.replace(/^0+(?=\\d)/, '');\n sanitized = sanitized.replace(/^-0+(?=\\d)/, '-');\n\n // handle special cases\n if (sanitized === '0e' || sanitized === '-0e') {\n return '0';\n }\n if (negative && !sanitized.startsWith('-')) {\n sanitized = signed + sanitized;\n }\n if (sanitized === '.') {\n sanitized = '0.';\n }\n\n // ensure input was properly sanitized\n const floatRegex = /^-?\\d*(\\.\\d*)?([eE][-+]?\\d*)?$/;\n if (!floatRegex.test(sanitized)) {\n return '';\n }\n\n // allow leading negative sign only if it is from user input\n if (sanitized === '-') {\n if (isUserInput) {\n return sanitized;\n }\n return '';\n }\n\n // parse into float and validate\n if (sanitized !== '') {\n const parsedValue = parseFloat(sanitized);\n if (Number.isNaN(parsedValue) || !isValidFloat(parsedValue, size)) {\n return '';\n }\n }\n\n return sanitized;\n}\n\nfunction sanitizeOctet(value: string) {\n return value.replace(/[^0-9a-fA-F]/g, '');\n}\n\nfunction sanitizeObjRef(value: string) {\n return value.replace(/[^A-Za-z0-9_/$]/g, '');\n}\n\nfunction sanitizeBitString(value: string) {\n return value.replace(/[^01]/g, '');\n}\n\nfunction formatTimestamp(input: string) {\n const digits = input.replace(/\\D/g, '');\n\n // Extract parts\n const year = digits.slice(0, 4);\n const month = digits.slice(4, 6);\n const day = digits.slice(6, 8);\n const hour = digits.slice(8, 10);\n const minute = digits.slice(10, 12);\n const second = digits.slice(12, 14);\n const millisecond = digits.slice(14, 17); // Optional milliseconds\n\n let formatted = `${year}`;\n if (month) formatted += `-${month}`;\n if (day) formatted += `-${day}`;\n if (hour) formatted += `T${hour}`;\n if (minute) formatted += `:${minute}`;\n if (second) formatted += `:${second}`;\n if (millisecond) formatted += `.${millisecond}`;\n\n return formatted;\n}\n\n/** Web Component for inputting IEC61850-6 \"Val\" values */\nexport class MbgValInput extends LitElement {\n static styles = css`\n md-outlined-text-field.Timestamp {\n min-width: 250px;\n max-width: 100%;\n width: auto;\n }\n `;\n\n @property({ type: String }) bType?: string;\n\n // If the DA/BDA is assigned a Val in DataTypeTemplates\n @property({ type: String }) default = '';\n\n // if bType === \"Enum\" - ordinal values\n @property({ type: Array }) enumOrdinals: string[] = [];\n\n // if bType === \"Enum\" - string labels\n @property({ type: Array }) enumLabels: string[] = [];\n\n @property({ type: String }) label = 'Val';\n\n @query('#input') input?: HTMLInputElement;\n\n private updateValue(event: Event, userValue: string) {\n this.value = userValue;\n // eslint-disable-next-line no-param-reassign\n (event.target as HTMLInputElement).value = userValue;\n }\n\n private parseBTypeSize() {\n const match = this.bType?.match(/INT(\\d+)/);\n return match ? parseInt(match[1], 10) : 0;\n }\n\n private handleBigIntInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n const validatedInput = sanitizeAndValidateInt(\n input,\n this.parseBTypeSize(),\n true,\n );\n const validatedDefault = sanitizeAndValidateInt(\n this.default,\n this.parseBTypeSize(),\n false,\n );\n\n if (validatedInput === '') {\n this.updateValue(event, validatedDefault ?? '0');\n return;\n }\n\n this.updateValue(event, validatedInput);\n }\n\n private handleIntInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n const signed = !(this.bType?.endsWith('U') || this.bType === 'Check');\n const size = this.bType === 'Check' ? 8 : this.parseBTypeSize();\n\n const validatedDefault = sanitizeAndValidateInt(\n this.default,\n size,\n false,\n signed,\n );\n\n // set default if input is empty\n if (input === '') {\n this.updateValue(event, validatedDefault ?? 0);\n }\n }\n\n intInput(size: 8 | 16 | 24 | 32 | 64 | 128, signed = true) {\n const min = signed ? -(2 ** (size - 1)) : 0;\n const max = signed ? 2 ** (size - 1) - 1 : 2 ** size - 1;\n\n const validatedDefault = sanitizeAndValidateInt(\n this.default,\n size,\n false,\n signed,\n );\n\n if (size > 52) {\n return html`<md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n type=\"text\"\n value=\"${validatedDefault ?? nothing}\"\n @input=\"${this.handleBigIntInput}\"\n ></md-outlined-text-field>`;\n }\n\n return html`<md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n type=\"number\"\n step=\"1\"\n min=\"${min}\"\n max=\"${max}\"\n value=\"${validatedDefault ?? nothing}\"\n @input=\"${this.handleIntInput}\"\n ></md-outlined-text-field>`;\n }\n\n private handleFloatInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n const validatedInput = sanitizeAndValidateFloat(\n input,\n true,\n this.bType === 'FLOAT32' ? 32 : 64,\n );\n const validatedDefault = sanitizeAndValidateFloat(\n this.default,\n false,\n this.bType === 'FLOAT32' ? 32 : 64,\n );\n\n if (validatedInput === '') {\n this.updateValue(event, validatedDefault ?? '0');\n return;\n }\n\n this.updateValue(event, validatedInput);\n }\n\n floatInput() {\n const validatedDefault = sanitizeAndValidateFloat(\n this.default,\n false,\n this.bType === 'FLOAT32' ? 32 : 64,\n );\n return html`\n <md-outlined-text-field\n id=\"$input\"\n label=\"${this.label}\"\n type=\"text\"\n value=\"${validatedDefault ?? nothing}\"\n @input=\"${this.handleFloatInput}\"\n ></md-outlined-text-field>\n `;\n }\n\n private handleOctetInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n let sanitizedInput = sanitizeOctet(input);\n if (sanitizedInput === '') {\n sanitizedInput = sanitizeOctet(this.default) ?? '';\n }\n this.updateValue(event, sanitizedInput);\n }\n\n octetInput(size: 6 | 8 | 16 | 64) {\n return html`\n <md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n value=\"${sanitizeOctet(this.default) ?? nothing}\"\n maxlength=\"${size * 2}\"\n @input=\"${this.handleOctetInput}\"\n ></md-outlined-text-field>\n `;\n }\n\n private handleStringInput(event: Event) {\n let input = (event.target as HTMLInputElement).value;\n if (input === '') {\n input = this.default ?? '';\n }\n this.updateValue(event, input);\n }\n\n stringInput(size: 32 | 64 | 65 | 129 | 255) {\n return html`\n <md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n value=\"${this.default ?? nothing}\"\n maxlength=\"${size}\"\n @input=\"${this.handleStringInput}\"\n ></md-outlined-text-field>\n `;\n }\n\n enumInput() {\n let ordinals: string[] = [];\n let labels: string[] = [];\n\n if (typeof this.enumOrdinals === 'string') {\n ordinals = JSON.parse(this.enumOrdinals) as string[];\n }\n if (typeof this.enumLabels === 'string') {\n labels = JSON.parse(this.enumLabels) as string[];\n }\n\n return html`\n <md-filled-select id=\"input\" label=\"${this.label}\">\n ${ordinals.map(\n (ordinal, index) => html`\n <md-select-option\n value=\"${labels[index]}\"\n ?selected=${(this.default === labels[index]) || (this.default === ordinal)}\n >\n <div slot=\"headline\">${ordinal} - ${labels[index]}</div>\n </md-select-option>\n `,\n )}\n </md-filled-select>\n `;\n }\n\n private handleTimestampInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n const validatedInput = formatTimestamp(input);\n\n if (validatedInput === '') {\n const validatedDefault = formatTimestamp(this.default);\n this.updateValue(event, validatedDefault ?? '');\n return;\n }\n\n this.updateValue(event, validatedInput);\n }\n\n timestampInput() {\n const validatedDefault = formatTimestamp(this.default);\n return html`\n <md-outlined-text-field\n class=\"Timestamp\"\n id=\"input\"\n placeholder=\"YYYY-MM-DDTHH:MM:SS.sss\"\n label=\"${this.label}\"\n value=\"${validatedDefault ?? nothing}\"\n @input=\"${this.handleTimestampInput}\"\n ></md-outlined-text-field>\n `;\n }\n\n private handleObjRefInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n let sanitizedInput = sanitizeObjRef(input);\n if (sanitizedInput === '') {\n sanitizedInput = sanitizeObjRef(this.default) ?? '';\n }\n this.updateValue(event, sanitizedInput);\n }\n\n objrefInput() {\n return html`\n <md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n value=\"${sanitizeObjRef(this.default) ?? nothing}\"\n maxlength=\"255\"\n @input=\"${this.handleObjRefInput}\"\n ></md-outlined-text-field>\n `;\n }\n\n dbposInput() {\n return html`\n <md-filled-select id=\"input\" label=\"${this.label}\">\n <md-select-option value=\"0\" ?selected=${this.default === '0'}>\n <div slot=\"headline\">0 - intermediate-state</div>\n </md-select-option>\n <md-select-option value=\"1\" ?selected=${this.default === '1'}>\n <div slot=\"headline\">1 - off</div>\n </md-select-option>\n </md-select-option>\n <md-select-option value=\"2\" ?selected=${this.default === '2'}>\n <div slot=\"headline\">2 - on</div>\n </md-select-option>\n </md-select-option>\n <md-select-option value=\"3\" ?selected=${this.default === '3'}>\n <div slot=\"headline\">3 - bad-state</div>\n </md-select-option>\n </md-filled-select>\n `;\n }\n\n tcmdInput() {\n return html`\n <md-filled-select id=\"input\" label=\"${this.label}\">\n <md-select-option value=\"0\" ?selected=${this.default === '0'}>\n <div slot=\"headline\">0 - neutral</div>\n </md-select-option>\n <md-select-option value=\"1\" ?selected=${this.default === '1'}>\n <div slot=\"headline\">1 - lower</div>\n </md-select-option>\n </md-select-option>\n <md-select-option value=\"2\" ?selected=${this.default === '2'}>\n <div slot=\"headline\">2 - higher</div>\n </md-select-option>\n </md-select-option>\n <md-select-option value=\"3\" ?selected=${this.default === '3'}>\n <div slot=\"headline\">3 - reserved</div>\n </md-select-option>\n </md-filled-select>\n `;\n }\n\n private handleBitStringInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n let sanitizedInput = sanitizeBitString(input);\n if (sanitizedInput === '') {\n sanitizedInput = sanitizeBitString(this.default) ?? '';\n }\n this.updateValue(event, sanitizedInput);\n }\n\n bitstringInput(size: 5 | 6 | 10 | 14) {\n return html`\n <md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n value=\"${sanitizeBitString(this.default) ?? nothing}\"\n maxlength=\"${size}\"\n @input=\"${this.handleBitStringInput}\"\n ></md-outlined-text-field>\n `;\n }\n\n get value() {\n if (this.bType === 'BOOLEAN') {\n return (this.input as unknown as MdSwitch).selected ? 'true' : 'false';\n }\n return this.input?.value ?? '';\n }\n\n set value(val: string) {\n this.input?.setAttribute('value', val);\n }\n\n get inputs(): Partial<Record<string, TemplateResult>> {\n return {\n BOOLEAN: html`<label\n >${this.label}\n <md-switch id=\"input\" ?selected=${xmlBoolean(this.default)}></md-switch\n ></label>`,\n INT8: this.intInput(8),\n INT16: this.intInput(16),\n INT24: this.intInput(24),\n INT32: this.intInput(32),\n INT64: this.intInput(64),\n INT128: this.intInput(128),\n INT8U: this.intInput(8, false),\n INT16U: this.intInput(16, false),\n INT24U: this.intInput(24, false),\n INT32U: this.intInput(32, false),\n FLOAT32: this.floatInput(),\n FLOAT64: this.floatInput(),\n Octet6: this.octetInput(6),\n Octet16: this.octetInput(16),\n Octet64: this.octetInput(64),\n VisString32: this.stringInput(32),\n VisString64: this.stringInput(64),\n VisString65: this.stringInput(65),\n VisString129: this.stringInput(129),\n VisString255: this.stringInput(255),\n Unicode255: this.stringInput(255),\n Quality: this.bitstringInput(14),\n Currency: currencyInput(this.label, this.default),\n Enum: this.enumInput(),\n Timestamp: this.timestampInput(),\n ObjRef: this.objrefInput(),\n Dbpos: this.dbposInput(),\n Tcmd: this.tcmdInput(),\n EntryTime: this.octetInput(6),\n Check: this.intInput(8, false),\n TrgOps: this.bitstringInput(6),\n OptFlds: this.bitstringInput(10),\n SvOptFlds: this.bitstringInput(6),\n LogOptFlds: this.bitstringInput(5),\n EntryID: this.octetInput(8),\n };\n }\n\n render() {\n return (\n this.inputs[this.bType ?? ''] ??\n html`<md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n value=\"${this.default ?? nothing}\"\n ></md-outlined-text-field>`\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MbgValInput.js","sourceRoot":"","sources":["../../src/MbgValInput.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { html, css, LitElement, TemplateResult, nothing } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport type { MdSwitch } from '@material/web/switch/switch.js';\nimport { currencyInput } from './currency-input.js';\n\nimport { designTokens } from './design-tokens.js';\n\nimport '@material/web/textfield/outlined-text-field.js';\nimport '@material/web/select/outlined-select.js';\nimport '@material/web/select/select-option.js';\nimport '@material/web/switch/switch.js';\n\nfunction xmlBoolean(val?: string) {\n return ['true', '1'].includes(val?.toLowerCase().trim() ?? 'false');\n}\n\nfunction isValidInt(value: number, size: number, signed: boolean): boolean {\n const min = signed ? -(2 ** (size - 1)) : 0;\n const max = signed ? 2 ** (size - 1) - 1 : 2 ** size - 1;\n return value >= min && value <= max;\n}\n\nfunction isValidBigInt(value: bigint, size: 64 | 128): boolean {\n if (size === 64) {\n return value >= -9223372036854775808n && value <= 9223372036854775807n;\n }\n if (size === 128) {\n return (\n value >= -170141183460469231731687303715884105728n &&\n value <= 170141183460469231731687303715884105727n\n );\n }\n return false;\n}\n\nfunction sanitizeAndValidateInt(\n value: string,\n size: number,\n isUserInput: boolean,\n isSigned = true,\n) {\n if (!value) return '';\n\n // allow leading negative sign\n const signed = value[0] === '-' ? '-' : '';\n const negative = signed === '-';\n\n // remove leading zeros and invalid characters\n let sanitized = value.replace(/[^0-9]/g, '').replace(/^0+(?=\\d)/, '');\n\n // handle special cases\n if (negative && !sanitized.startsWith('-')) {\n sanitized = signed + sanitized;\n }\n if (sanitized === '-0') {\n sanitized = '0';\n }\n\n // ensure input was properly sanitized\n const intRegex = /^-?\\d*$/;\n if (!intRegex.test(sanitized)) {\n return '';\n }\n\n // allow leading negative sign only if it is from user input\n if (sanitized === '') {\n if (isUserInput) {\n return sanitized;\n }\n return '';\n }\n\n // parse and validate\n if (sanitized !== '') {\n if (size === 64 || size === 128) {\n const parsedValue = BigInt(sanitized);\n if (Number.isNaN(parsedValue) || !isValidBigInt(parsedValue, size)) {\n return '';\n }\n } else {\n const parsedValue = Number(sanitized);\n if (\n Number.isNaN(parsedValue) ||\n !isValidInt(parsedValue, size, isSigned)\n ) {\n return '';\n }\n }\n }\n\n return sanitized;\n}\n\nfunction isValidFloat(value: number, size: 32 | 64): boolean {\n if (size === 32) {\n return value >= -3.4028235e38 && value <= 3.4028235e38;\n }\n if (size === 64) {\n return value >= -1.7976931348623157e308 && value <= 1.7976931348623157e308;\n }\n return false;\n}\n\n/** Removes invalid characters and validates the float value input */\nfunction sanitizeAndValidateFloat(\n value: string,\n isUserInput: boolean,\n size: 32 | 64,\n) {\n if (!value) return '';\n\n let sanitized = '';\n\n // allow leading negative sign\n const signed = value[0] === '-' ? '-' : '';\n const negative = signed === '-';\n\n // account for Euler's number\n if (value === 'e' || value === '-e') {\n sanitized = '2.7182818284590452354';\n return signed + sanitized;\n }\n\n // remove leading zeros and invalid characters\n sanitized = value\n .replace(/[^0-9eE.+-]/g, '')\n .replace(/(?<![eE])\\+|(?<![eE])-/, '');\n\n // handle multiple exponents\n const numExponents = sanitized.split(/[eE]/).length - 1;\n if (numExponents > 1) {\n sanitized = sanitized.replace(/[eE].*?[eE]/g, 'E0');\n }\n if (sanitized.endsWith('e') || sanitized.endsWith('E')) {\n sanitized += '0';\n }\n\n // handle multiple decimal points\n const numDecimalPoints = sanitized.split('.').length - 1;\n if (numDecimalPoints > 1) {\n sanitized = sanitized.replace(/\\.(?=.*\\.)/g, '');\n }\n\n // remove leading zeros\n sanitized = sanitized.replace(/^0+(?=\\d)/, '');\n sanitized = sanitized.replace(/^-0+(?=\\d)/, '-');\n\n // handle special cases\n if (sanitized === '0e' || sanitized === '-0e') {\n return '0';\n }\n if (negative && !sanitized.startsWith('-')) {\n sanitized = signed + sanitized;\n }\n if (sanitized === '.') {\n sanitized = '0.';\n }\n\n // ensure input was properly sanitized\n const floatRegex = /^-?\\d*(\\.\\d*)?([eE][-+]?\\d*)?$/;\n if (!floatRegex.test(sanitized)) {\n return '';\n }\n\n // allow leading negative sign only if it is from user input\n if (sanitized === '-') {\n if (isUserInput) {\n return sanitized;\n }\n return '';\n }\n\n // parse into float and validate\n if (sanitized !== '') {\n const parsedValue = parseFloat(sanitized);\n if (Number.isNaN(parsedValue) || !isValidFloat(parsedValue, size)) {\n return '';\n }\n }\n\n return sanitized;\n}\n\nfunction sanitizeOctet(value: string) {\n return value?.replace(/[^0-9a-fA-F]/g, '');\n}\n\nfunction sanitizeObjRef(value: string) {\n return value?.replace(/[^A-Za-z0-9_/$]/g, '');\n}\n\nfunction sanitizeBitString(value: string) {\n return value?.replace(/[^01]/g, '');\n}\n\nfunction formatTimestamp(input: string) {\n if (!input) return '';\n\n const digits = input.replace(/\\D/g, '');\n\n // Extract parts\n const year = digits.slice(0, 4);\n const month = digits.slice(4, 6);\n const day = digits.slice(6, 8);\n const hour = digits.slice(8, 10);\n const minute = digits.slice(10, 12);\n const second = digits.slice(12, 14);\n const millisecond = digits.slice(14, 17); // Optional milliseconds\n\n let formatted = `${year}`;\n if (month) formatted += `-${month}`;\n if (day) formatted += `-${day}`;\n if (hour) formatted += `T${hour}`;\n if (minute) formatted += `:${minute}`;\n if (second) formatted += `:${second}`;\n if (millisecond) formatted += `.${millisecond}`;\n\n return formatted;\n}\n\n/** Web Component for inputting IEC61850-6 \"Val\" values */\nexport class MbgValInput extends LitElement {\n static styles = [\n designTokens,\n css`\n md-outlined-text-field.Timestamp {\n min-width: 250px;\n max-width: 100%;\n width: auto;\n }\n\n .boolean-input {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n `,\n ];\n\n @property({ type: String }) bType?: string;\n\n @property({ type: Boolean }) readOnly = false;\n\n // If the DA/BDA is assigned a Val in DataTypeTemplates\n @property({ type: String }) default = '';\n\n // if bType === \"Enum\" - ordinal values\n @property({ type: Array }) enumOrdinals: string[] = [];\n\n // if bType === \"Enum\" - string labels\n @property({ type: Array }) enumLabels: string[] = [];\n\n @property({ type: String }) label = 'Val';\n\n @query('#input') input?: HTMLInputElement;\n\n private updateValue(event: Event, userValue: string) {\n this.value = userValue;\n // eslint-disable-next-line no-param-reassign\n (event.target as HTMLInputElement).value = userValue;\n }\n\n private parseBTypeSize() {\n const match = this.bType?.match(/INT(\\d+)/);\n return match ? parseInt(match[1], 10) : 0;\n }\n\n private handleBigIntInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n const validatedInput = sanitizeAndValidateInt(\n input,\n this.parseBTypeSize(),\n true,\n );\n const validatedDefault = sanitizeAndValidateInt(\n this.default,\n this.parseBTypeSize(),\n false,\n );\n\n if (validatedInput === '') {\n this.updateValue(event, validatedDefault ?? '0');\n return;\n }\n\n this.updateValue(event, validatedInput);\n }\n\n private handleIntInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n const signed = !(this.bType?.endsWith('U') || this.bType === 'Check');\n const size = this.bType === 'Check' ? 8 : this.parseBTypeSize();\n\n const validatedDefault = sanitizeAndValidateInt(\n this.default,\n size,\n false,\n signed,\n );\n\n // set default if input is empty\n if (input === '') {\n this.updateValue(event, validatedDefault ?? 0);\n }\n }\n\n intInput(size: 8 | 16 | 24 | 32 | 64 | 128, signed = true) {\n const min = signed ? -(2 ** (size - 1)) : 0;\n const max = signed ? 2 ** (size - 1) - 1 : 2 ** size - 1;\n\n const validatedDefault = sanitizeAndValidateInt(\n this.default,\n size,\n false,\n signed,\n );\n\n if (size > 52) {\n return html`<md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n type=\"text\"\n value=\"${validatedDefault ?? nothing}\"\n @input=\"${this.handleBigIntInput}\"\n ?disabled=\"${this.readOnly}\"\n ></md-outlined-text-field>`;\n }\n\n return html`<md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n type=\"number\"\n step=\"1\"\n min=\"${min}\"\n max=\"${max}\"\n value=\"${validatedDefault ?? nothing}\"\n @input=\"${this.handleIntInput}\"\n ?disabled=\"${this.readOnly}\"\n ></md-outlined-text-field>`;\n }\n\n private handleFloatInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n const validatedInput = sanitizeAndValidateFloat(\n input,\n true,\n this.bType === 'FLOAT32' ? 32 : 64,\n );\n const validatedDefault = sanitizeAndValidateFloat(\n this.default,\n false,\n this.bType === 'FLOAT32' ? 32 : 64,\n );\n\n if (validatedInput === '') {\n this.updateValue(event, validatedDefault ?? '0');\n return;\n }\n\n this.updateValue(event, validatedInput);\n }\n\n floatInput() {\n const validatedDefault = sanitizeAndValidateFloat(\n this.default,\n false,\n this.bType === 'FLOAT32' ? 32 : 64,\n );\n return html`\n <md-outlined-text-field\n id=\"$input\"\n label=\"${this.label}\"\n type=\"text\"\n value=\"${validatedDefault ?? nothing}\"\n @input=\"${this.handleFloatInput}\"\n ?disabled=\"${this.readOnly}\"\n ></md-outlined-text-field>\n `;\n }\n\n private handleOctetInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n let sanitizedInput = sanitizeOctet(input);\n if (sanitizedInput === '') {\n sanitizedInput = sanitizeOctet(this.default) ?? '';\n }\n this.updateValue(event, sanitizedInput);\n }\n\n octetInput(size: 6 | 8 | 16 | 64) {\n return html`\n <md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n value=\"${sanitizeOctet(this.default) ?? nothing}\"\n maxlength=\"${size * 2}\"\n @input=\"${this.handleOctetInput}\"\n ?disabled=\"${this.readOnly}\"\n ></md-outlined-text-field>\n `;\n }\n\n private handleStringInput(event: Event) {\n let input = (event.target as HTMLInputElement).value;\n if (input === '') {\n input = this.default ?? '';\n }\n this.updateValue(event, input);\n }\n\n stringInput(size: 32 | 64 | 65 | 129 | 255) {\n return html`\n <md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n value=\"${this.default ?? nothing}\"\n maxlength=\"${size}\"\n @input=\"${this.handleStringInput}\"\n ?disabled=\"${this.readOnly}\"\n ></md-outlined-text-field>\n `;\n }\n\n enumInput() {\n let ordinals: string[] = [];\n let labels: string[] = [];\n\n if (typeof this.enumOrdinals === 'string') {\n ordinals = JSON.parse(this.enumOrdinals) as string[];\n }\n if (typeof this.enumLabels === 'string') {\n labels = JSON.parse(this.enumLabels) as string[];\n }\n\n return html`\n <md-outlined-select\n id=\"input\"\n label=\"${this.label}\"\n ?disabled=\"${this.readOnly}\"\n >\n ${ordinals.map(\n (ordinal, index) => html`\n <md-select-option\n value=\"${labels[index]}\"\n ?selected=${this.default === labels[index] ||\n this.default === ordinal}\n >\n <div slot=\"headline\">${ordinal} - ${labels[index]}</div>\n </md-select-option>\n `,\n )}\n </md-outlined-select>\n `;\n }\n\n private handleTimestampInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n const validatedInput = formatTimestamp(input);\n\n if (validatedInput === '') {\n const validatedDefault = formatTimestamp(this.default);\n this.updateValue(event, validatedDefault ?? '');\n return;\n }\n\n this.updateValue(event, validatedInput);\n }\n\n timestampInput() {\n const validatedDefault = formatTimestamp(this.default);\n return html`\n <md-outlined-text-field\n class=\"Timestamp\"\n id=\"input\"\n placeholder=\"YYYY-MM-DDTHH:MM:SS.sss\"\n label=\"${this.label}\"\n value=\"${validatedDefault ?? nothing}\"\n @input=\"${this.handleTimestampInput}\"\n ?disabled=\"${this.readOnly}\"\n ></md-outlined-text-field>\n `;\n }\n\n private handleObjRefInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n let sanitizedInput = sanitizeObjRef(input);\n if (sanitizedInput === '') {\n sanitizedInput = sanitizeObjRef(this.default) ?? '';\n }\n this.updateValue(event, sanitizedInput);\n }\n\n objrefInput() {\n return html`\n <md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n value=\"${sanitizeObjRef(this.default) ?? nothing}\"\n maxlength=\"255\"\n @input=\"${this.handleObjRefInput}\"\n ?disabled=\"${this.readOnly}\"\n ></md-outlined-text-field>\n `;\n }\n\n dbposInput() {\n return html`\n <md-outlined-select id=\"input\" label=\"${this.label}\" ?disabled=\"${this.readOnly}\">\n <md-select-option value=\"0\" ?selected=${this.default === '0'}>\n <div slot=\"headline\">0 - intermediate-state</div>\n </md-select-option>\n <md-select-option value=\"1\" ?selected=${this.default === '1'}>\n <div slot=\"headline\">1 - off</div>\n </md-select-option>\n </md-select-option>\n <md-select-option value=\"2\" ?selected=${this.default === '2'}>\n <div slot=\"headline\">2 - on</div>\n </md-select-option>\n </md-select-option>\n <md-select-option value=\"3\" ?selected=${this.default === '3'}>\n <div slot=\"headline\">3 - bad-state</div>\n </md-select-option>\n </md-outlined-select>\n `;\n }\n\n tcmdInput() {\n return html`\n <md-outlined-select id=\"input\" label=\"${this.label}\" ?disabled=\"${this.readOnly}\">\n <md-select-option value=\"0\" ?selected=${this.default === '0'}>\n <div slot=\"headline\">0 - neutral</div>\n </md-select-option>\n <md-select-option value=\"1\" ?selected=${this.default === '1'}>\n <div slot=\"headline\">1 - lower</div>\n </md-select-option>\n </md-select-option>\n <md-select-option value=\"2\" ?selected=${this.default === '2'}>\n <div slot=\"headline\">2 - higher</div>\n </md-select-option>\n </md-select-option>\n <md-select-option value=\"3\" ?selected=${this.default === '3'}>\n <div slot=\"headline\">3 - reserved</div>\n </md-select-option>\n </md-outlined-select>\n `;\n }\n\n private handleBitStringInput(event: Event) {\n const input = (event.target as HTMLInputElement).value;\n let sanitizedInput = sanitizeBitString(input);\n if (sanitizedInput === '') {\n sanitizedInput = sanitizeBitString(this.default) ?? '';\n }\n this.updateValue(event, sanitizedInput);\n }\n\n bitstringInput(size: 5 | 6 | 10 | 14) {\n return html`\n <md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n value=\"${sanitizeBitString(this.default) ?? nothing}\"\n maxlength=\"${size}\"\n @input=\"${this.handleBitStringInput}\"\n ?disabled=\"${this.readOnly}\"\n ></md-outlined-text-field>\n `;\n }\n\n get value() {\n if (this.bType === 'BOOLEAN') {\n return (this.input as unknown as MdSwitch).selected ? 'true' : 'false';\n }\n return this.input?.value ?? '';\n }\n\n set value(val: string) {\n this.input?.setAttribute('value', val);\n }\n\n get inputs(): Partial<Record<string, TemplateResult>> {\n return {\n BOOLEAN: html`<label class=\"boolean-input\"\n >${this.label}\n <md-switch\n id=\"input\"\n ?disabled=\"${this.readOnly}\"\n ?selected=${xmlBoolean(this.default)}\n icons\n ></md-switch\n ></label>`,\n INT8: this.intInput(8),\n INT16: this.intInput(16),\n INT24: this.intInput(24),\n INT32: this.intInput(32),\n INT64: this.intInput(64),\n INT128: this.intInput(128),\n INT8U: this.intInput(8, false),\n INT16U: this.intInput(16, false),\n INT24U: this.intInput(24, false),\n INT32U: this.intInput(32, false),\n FLOAT32: this.floatInput(),\n FLOAT64: this.floatInput(),\n Octet6: this.octetInput(6),\n Octet16: this.octetInput(16),\n Octet64: this.octetInput(64),\n VisString32: this.stringInput(32),\n VisString64: this.stringInput(64),\n VisString65: this.stringInput(65),\n VisString129: this.stringInput(129),\n VisString255: this.stringInput(255),\n Unicode255: this.stringInput(255),\n Quality: this.bitstringInput(14),\n Currency: currencyInput(this.label, this.default, this.readOnly),\n Enum: this.enumInput(),\n Timestamp: this.timestampInput(),\n ObjRef: this.objrefInput(),\n Dbpos: this.dbposInput(),\n Tcmd: this.tcmdInput(),\n EntryTime: this.octetInput(6),\n Check: this.intInput(8, false),\n TrgOps: this.bitstringInput(6),\n OptFlds: this.bitstringInput(10),\n SvOptFlds: this.bitstringInput(6),\n LogOptFlds: this.bitstringInput(5),\n EntryID: this.octetInput(8),\n };\n }\n\n render() {\n return (\n this.inputs[this.bType ?? ''] ??\n html`<md-outlined-text-field\n id=\"input\"\n label=\"${this.label}\"\n value=\"${this.default ?? nothing}\"\n ?disabled=\"${this.readOnly}\"\n ></md-outlined-text-field>`\n );\n }\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import '@material/web/select/
|
|
1
|
+
import '@material/web/select/outlined-select.js';
|
|
2
2
|
import '@material/web/select/select-option.js';
|
|
3
|
-
export declare function currencyInput(label: string, defaultVal: string): import("lit-html").TemplateResult<1>;
|
|
3
|
+
export declare function currencyInput(label: string, defaultVal: string, readOnly: boolean): import("lit-html").TemplateResult<1>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { html } from 'lit';
|
|
2
|
-
import '@material/web/select/
|
|
2
|
+
import '@material/web/select/outlined-select.js';
|
|
3
3
|
import '@material/web/select/select-option.js';
|
|
4
|
-
export function currencyInput(label, defaultVal) {
|
|
4
|
+
export function currencyInput(label, defaultVal, readOnly) {
|
|
5
5
|
return html `
|
|
6
|
-
<md-
|
|
6
|
+
<md-outlined-select id="input" label="${label}" ?disabled="${readOnly}">
|
|
7
7
|
<md-select-option value="AED" ?selected=${defaultVal === 'AED'}>
|
|
8
8
|
<div slot="headline">AED (UAE Dirham)</div>
|
|
9
9
|
</md-select-option>
|
|
@@ -490,7 +490,7 @@ export function currencyInput(label, defaultVal) {
|
|
|
490
490
|
<md-select-option value="ZWG" ?selected=${defaultVal === 'ZWG'}>
|
|
491
491
|
<div slot="headline">ZWG (Zimbabwe Gold)</div>
|
|
492
492
|
</md-select-option>
|
|
493
|
-
</md-
|
|
493
|
+
</md-outlined-select>
|
|
494
494
|
`;
|
|
495
495
|
}
|
|
496
496
|
//# sourceMappingURL=currency-input.js.map
|