vira 33.3.0 → 33.4.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.
- package/dist/elements/vira-form.element.d.ts +4 -0
- package/dist/elements/vira-form.element.js +32 -2
- package/dist/elements/vira-json-form.element.js +4 -4
- package/dist/styles/shadows.d.ts +2 -2
- package/dist/styles/shadows.js +2 -2
- package/dist/util/shared-text-input-logic.js +3 -4
- package/dist/util/vira-json-schema.js +1 -4
- package/package.json +12 -12
|
@@ -63,6 +63,10 @@ export declare const ViraForm: import("element-vir").DeclarativeElementDefinitio
|
|
|
63
63
|
validChange: import("element-vir").DefineElementEvent<{
|
|
64
64
|
allFieldsAreValid: boolean;
|
|
65
65
|
}>;
|
|
66
|
+
/** Emitted when focus leaves a field entirely, not when it moves within the field. */
|
|
67
|
+
fieldBlur: import("element-vir").DefineElementEvent<{
|
|
68
|
+
key: string;
|
|
69
|
+
} & ViraFormField>;
|
|
66
70
|
/** Every field key, hidden ones included, in the order the user dropped them. */
|
|
67
71
|
fieldOrderChange: import("element-vir").DefineElementEvent<string[]>;
|
|
68
72
|
}, "vira-form-", "vira-form-", readonly [], readonly ["dragHandle"]>;
|
|
@@ -30,6 +30,8 @@ export const ViraForm = defineViraElement()({
|
|
|
30
30
|
events: {
|
|
31
31
|
valueChange: defineElementEvent(),
|
|
32
32
|
validChange: defineElementEvent(),
|
|
33
|
+
/** Emitted when focus leaves a field entirely, not when it moves within the field. */
|
|
34
|
+
fieldBlur: defineElementEvent(),
|
|
33
35
|
/** Every field key, hidden ones included, in the order the user dropped them. */
|
|
34
36
|
fieldOrderChange: defineElementEvent(),
|
|
35
37
|
},
|
|
@@ -128,6 +130,10 @@ export const ViraForm = defineViraElement()({
|
|
|
128
130
|
text-align: right;
|
|
129
131
|
}
|
|
130
132
|
|
|
133
|
+
&.reorderable th {
|
|
134
|
+
text-align: left;
|
|
135
|
+
}
|
|
136
|
+
|
|
131
137
|
& td {
|
|
132
138
|
width: 100%;
|
|
133
139
|
vertical-align: top;
|
|
@@ -175,6 +181,20 @@ export const ViraForm = defineViraElement()({
|
|
|
175
181
|
}),
|
|
176
182
|
}));
|
|
177
183
|
}
|
|
184
|
+
function listenToFieldBlur(key, field) {
|
|
185
|
+
/**
|
|
186
|
+
* `blur` doesn't bubble out of the field's shadow root, but `focusout` does, and the
|
|
187
|
+
* browser skips it on the field's host when focus moves between elements inside it.
|
|
188
|
+
*/
|
|
189
|
+
return listen('focusout', () => {
|
|
190
|
+
dispatch(new events.fieldBlur({
|
|
191
|
+
detail: {
|
|
192
|
+
key,
|
|
193
|
+
...field,
|
|
194
|
+
},
|
|
195
|
+
}));
|
|
196
|
+
});
|
|
197
|
+
}
|
|
178
198
|
function wrapFormField({ fieldTemplate, label, key, }) {
|
|
179
199
|
const dropLine = state.dragReorder.readDropLine(visibleKeys.indexOf(key));
|
|
180
200
|
const rowClasses = classMap({
|
|
@@ -239,6 +259,7 @@ export const ViraForm = defineViraElement()({
|
|
|
239
259
|
fillWhenUnchecked: field.fillWhenUnchecked,
|
|
240
260
|
})}
|
|
241
261
|
${field.testId ? testId(field.testId) : nothing}
|
|
262
|
+
${listenToFieldBlur(key, field)}
|
|
242
263
|
${listen(ViraCheckbox.events.valueChange, (event) => {
|
|
243
264
|
dispatch(new events.valueChange({
|
|
244
265
|
detail: {
|
|
@@ -286,6 +307,7 @@ export const ViraForm = defineViraElement()({
|
|
|
286
307
|
attributePassthrough: horizontalLabelAttributes,
|
|
287
308
|
})}
|
|
288
309
|
${field.testId ? testId(field.testId) : nothing}
|
|
310
|
+
${listenToFieldBlur(key, field)}
|
|
289
311
|
${listen(ViraDropdown.events.selectedValuesChange, (event) => {
|
|
290
312
|
dispatch(new events.valueChange({
|
|
291
313
|
detail: {
|
|
@@ -316,6 +338,7 @@ export const ViraForm = defineViraElement()({
|
|
|
316
338
|
attributePassthrough: horizontalLabelAttributes,
|
|
317
339
|
})}
|
|
318
340
|
${field.testId ? testId(field.testId) : nothing}
|
|
341
|
+
${listenToFieldBlur(key, field)}
|
|
319
342
|
${listen(ViraTextArea.events.valueChange, (event) => {
|
|
320
343
|
dispatch(new events.valueChange({
|
|
321
344
|
detail: {
|
|
@@ -365,6 +388,7 @@ export const ViraForm = defineViraElement()({
|
|
|
365
388
|
},
|
|
366
389
|
})}
|
|
367
390
|
${field.testId ? testId(field.testId) : nothing}
|
|
391
|
+
${listenToFieldBlur(key, field)}
|
|
368
392
|
${listen(ViraInput.events.valueChange, (event) => {
|
|
369
393
|
const numericValue = event.detail === '' ? undefined : Number(event.detail);
|
|
370
394
|
dispatch(new events.valueChange({
|
|
@@ -397,6 +421,7 @@ export const ViraForm = defineViraElement()({
|
|
|
397
421
|
label: childLabel,
|
|
398
422
|
})}
|
|
399
423
|
${field.testId ? testId(field.testId) : nothing}
|
|
424
|
+
${listenToFieldBlur(key, field)}
|
|
400
425
|
${listen(ViraDateInput.events.valueChange, (event) => {
|
|
401
426
|
dispatch(new events.valueChange({
|
|
402
427
|
detail: {
|
|
@@ -455,6 +480,7 @@ export const ViraForm = defineViraElement()({
|
|
|
455
480
|
: ViraInputType.Default,
|
|
456
481
|
})}
|
|
457
482
|
${field.testId ? testId(field.testId) : nothing}
|
|
483
|
+
${listenToFieldBlur(key, field)}
|
|
458
484
|
${listen(ViraInput.events.valueChange, (event) => {
|
|
459
485
|
dispatch(new events.valueChange({
|
|
460
486
|
detail: {
|
|
@@ -469,9 +495,13 @@ export const ViraForm = defineViraElement()({
|
|
|
469
495
|
});
|
|
470
496
|
}
|
|
471
497
|
});
|
|
498
|
+
const horizontalTableClasses = classMap({
|
|
499
|
+
'horizontal-fields': true,
|
|
500
|
+
reorderable: !!inputs.isReorderable,
|
|
501
|
+
});
|
|
472
502
|
const formFieldsWrapper = inputs.useHorizontalLabels
|
|
473
503
|
? html `
|
|
474
|
-
<table class
|
|
504
|
+
<table class=${horizontalTableClasses}>
|
|
475
505
|
<tbody ${dragReorderRows(state.dragReorder, dropField)}>
|
|
476
506
|
${formFieldTemplates}
|
|
477
507
|
</tbody>
|
|
@@ -495,7 +525,7 @@ export const ViraForm = defineViraElement()({
|
|
|
495
525
|
<div class="drag-ghost" ${dragReorderGhost(state.dragReorder)}>
|
|
496
526
|
${inputs.useHorizontalLabels
|
|
497
527
|
? html `
|
|
498
|
-
<table class
|
|
528
|
+
<table class=${horizontalTableClasses}>
|
|
499
529
|
<colgroup>
|
|
500
530
|
${state.dragReorder.value.draggedCellWidths.map((cellWidth) => {
|
|
501
531
|
return html `
|
|
@@ -472,7 +472,7 @@ export const ViraJsonForm = defineViraElement()({
|
|
|
472
472
|
selected: toSelectedValues(selectedType),
|
|
473
473
|
})}
|
|
474
474
|
${listen(ViraDropdown.events.selectedValuesChange, (event) => {
|
|
475
|
-
setPendingType(pathKey, assertWrap.
|
|
475
|
+
setPendingType(pathKey, assertWrap.isEnumValue(event.detail[0], ViraJsonType));
|
|
476
476
|
})}
|
|
477
477
|
></${ViraDropdown}>
|
|
478
478
|
${renderPlusButton({
|
|
@@ -536,7 +536,7 @@ export const ViraJsonForm = defineViraElement()({
|
|
|
536
536
|
selected: toSelectedValues(selectedType),
|
|
537
537
|
})}
|
|
538
538
|
${listen(ViraDropdown.events.selectedValuesChange, (event) => {
|
|
539
|
-
setPendingType(pathKey, assertWrap.
|
|
539
|
+
setPendingType(pathKey, assertWrap.isEnumValue(event.detail[0], ViraJsonType));
|
|
540
540
|
})}
|
|
541
541
|
></${ViraDropdown}>
|
|
542
542
|
${renderPlusButton({
|
|
@@ -849,7 +849,7 @@ export const ViraJsonForm = defineViraElement()({
|
|
|
849
849
|
})}
|
|
850
850
|
title="Choose from options or enter a custom value"
|
|
851
851
|
${listen(ViraDropdown.events.selectedValuesChange, (event) => {
|
|
852
|
-
setStringMode(pathKey, assertWrap.
|
|
852
|
+
setStringMode(pathKey, assertWrap.isEnumValue(event.detail[0], ViraJsonStringMode));
|
|
853
853
|
})}
|
|
854
854
|
></${ViraDropdown}>
|
|
855
855
|
</div>
|
|
@@ -904,7 +904,7 @@ export const ViraJsonForm = defineViraElement()({
|
|
|
904
904
|
})}
|
|
905
905
|
title="Change type"
|
|
906
906
|
${listen(ViraDropdown.events.selectedValuesChange, (event) => {
|
|
907
|
-
const newType = assertWrap.
|
|
907
|
+
const newType = assertWrap.isEnumValue(event.detail[0], ViraJsonType);
|
|
908
908
|
emitReplaceAt(path, createDefaultForJsonType(newType));
|
|
909
909
|
})}
|
|
910
910
|
></${ViraDropdown}>
|
package/dist/styles/shadows.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ import { type CSSResult } from 'element-vir';
|
|
|
5
5
|
* @category Styles
|
|
6
6
|
*/
|
|
7
7
|
export declare const shadowCssVars: import("lit-css-vars").CssVarDefinitions<{
|
|
8
|
-
readonly 'menu-shadow-color': "
|
|
9
|
-
readonly 'modal-shadow-color': "
|
|
8
|
+
readonly 'menu-shadow-color': "rgba(0, 0, 0, 0.11)";
|
|
9
|
+
readonly 'modal-shadow-color': "rgba(0, 0, 0, 0.69)";
|
|
10
10
|
}>;
|
|
11
11
|
/**
|
|
12
12
|
* CSS chunks for default Vira shadow styles.
|
package/dist/styles/shadows.js
CHANGED
|
@@ -6,8 +6,8 @@ import { defineCssVars } from 'lit-css-vars';
|
|
|
6
6
|
* @category Styles
|
|
7
7
|
*/
|
|
8
8
|
export const shadowCssVars = defineCssVars({
|
|
9
|
-
'menu-shadow-color': '
|
|
10
|
-
'modal-shadow-color': '
|
|
9
|
+
'menu-shadow-color': 'rgba(0, 0, 0, 0.11)',
|
|
10
|
+
'modal-shadow-color': 'rgba(0, 0, 0, 0.69)',
|
|
11
11
|
});
|
|
12
12
|
/**
|
|
13
13
|
* CSS chunks for default Vira shadow styles.
|
|
@@ -21,12 +21,11 @@ function doesMatch({ input, matcher }) {
|
|
|
21
21
|
}
|
|
22
22
|
function isAllowed({ value: rawValue, allowed, blocked }) {
|
|
23
23
|
const value = String(rawValue);
|
|
24
|
-
const isAllowedCharacter = allowed
|
|
25
|
-
|
|
24
|
+
const isAllowedCharacter = !allowed ||
|
|
25
|
+
doesMatch({
|
|
26
26
|
input: value,
|
|
27
27
|
matcher: allowed,
|
|
28
|
-
})
|
|
29
|
-
: true;
|
|
28
|
+
});
|
|
30
29
|
const isBlockedCharacter = blocked
|
|
31
30
|
? doesMatch({
|
|
32
31
|
input: value,
|
|
@@ -83,10 +83,7 @@ export function normalizeSchema(schema) {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
function jsonTypeFromSchemaType(type) {
|
|
86
|
-
|
|
87
|
-
return type;
|
|
88
|
-
}
|
|
89
|
-
return undefined;
|
|
86
|
+
return check.isEnumValue(type, ViraJsonType) ? type : undefined;
|
|
90
87
|
}
|
|
91
88
|
/** @category Internal */
|
|
92
89
|
export function createResolveContext(schema) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vira",
|
|
3
|
-
"version": "33.
|
|
3
|
+
"version": "33.4.1",
|
|
4
4
|
"description": "A simple and highly versatile design system using element-vir.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"design",
|
|
@@ -38,24 +38,24 @@
|
|
|
38
38
|
"test:docs": "virmator docs check"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@augment-vir/assert": "^32.
|
|
42
|
-
"@augment-vir/common": "^32.
|
|
43
|
-
"@augment-vir/web": "^32.
|
|
41
|
+
"@augment-vir/assert": "^32.5.0",
|
|
42
|
+
"@augment-vir/common": "^32.5.0",
|
|
43
|
+
"@augment-vir/web": "^32.5.0",
|
|
44
44
|
"@electrovir/color": "^2.0.0",
|
|
45
45
|
"@electrovir/local-storage-client": "^0.1.1",
|
|
46
|
-
"date-vir": "^9.
|
|
46
|
+
"date-vir": "^9.4.0",
|
|
47
47
|
"device-navigation": "^5.0.0",
|
|
48
48
|
"json-schema-to-ts": "^3.1.1",
|
|
49
49
|
"lit": "^3.3.3",
|
|
50
50
|
"lit-css-vars": "^3.6.3",
|
|
51
|
-
"object-shape-tester": "^6.15.
|
|
52
|
-
"observavir": "^2.
|
|
51
|
+
"object-shape-tester": "^6.15.1",
|
|
52
|
+
"observavir": "^2.4.2",
|
|
53
53
|
"page-active": "^1.0.4",
|
|
54
54
|
"spa-router-vir": "^6.8.0",
|
|
55
55
|
"typed-event-target": "^4.3.4"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@augment-vir/test": "^32.
|
|
58
|
+
"@augment-vir/test": "^32.5.0",
|
|
59
59
|
"@web/dev-server-esbuild": "^2.0.0",
|
|
60
60
|
"@web/test-runner": "^1.0.0",
|
|
61
61
|
"@web/test-runner-commands": "^1.0.1",
|
|
@@ -63,12 +63,12 @@
|
|
|
63
63
|
"@web/test-runner-visual-regression": "^1.0.1",
|
|
64
64
|
"esbuild": "^0.28.2",
|
|
65
65
|
"istanbul-smart-text-reporter": "^1.1.5",
|
|
66
|
-
"lucide-static": "^1.
|
|
67
|
-
"markdown-code-example-inserter": "^3.
|
|
68
|
-
"theme-vir": "^29.0.
|
|
66
|
+
"lucide-static": "^1.54.0",
|
|
67
|
+
"markdown-code-example-inserter": "^3.1.1",
|
|
68
|
+
"theme-vir": "^29.0.1",
|
|
69
69
|
"typedoc": "^0.28.20",
|
|
70
70
|
"typescript": "^6.0.3",
|
|
71
|
-
"vite": "^8.3.
|
|
71
|
+
"vite": "^8.3.4",
|
|
72
72
|
"vite-tsconfig-paths": "^6.1.1"
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|