jsonforms-nuxt-ui-renderers 0.1.3 → 0.1.5
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/index.cjs +217 -108
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +197 -86
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
import {
|
|
3
3
|
isBooleanControl,
|
|
4
4
|
isEnumControl,
|
|
5
|
+
isEnumSchema,
|
|
5
6
|
isIntegerControl,
|
|
6
7
|
isMultiLineControl,
|
|
7
8
|
isNumberControl,
|
|
8
9
|
isObjectControl,
|
|
9
10
|
isStringControl,
|
|
10
11
|
rankWith,
|
|
12
|
+
Resolve as Resolve2,
|
|
11
13
|
schemaTypeIs,
|
|
12
14
|
uiTypeIs
|
|
13
15
|
} from "@jsonforms/core";
|
|
@@ -459,18 +461,98 @@ var NuxtUiIntegerControl = defineComponent5({
|
|
|
459
461
|
}
|
|
460
462
|
});
|
|
461
463
|
|
|
462
|
-
// src/renderers/controls/
|
|
464
|
+
// src/renderers/controls/NuxtUiMultiEnumControl.ts
|
|
463
465
|
import { rendererProps as rendererProps6, useJsonFormsControl as useJsonFormsControl4 } from "@jsonforms/vue";
|
|
464
466
|
import { computed as computed7, defineComponent as defineComponent6, h as h6, resolveComponent as resolveComponent5 } from "vue";
|
|
465
|
-
|
|
466
|
-
|
|
467
|
+
function schemaEnumOptions2(schema) {
|
|
468
|
+
if (!schema) return [];
|
|
469
|
+
if (Array.isArray(schema.enum)) {
|
|
470
|
+
return schema.enum.map((v) => ({ label: String(v), value: v }));
|
|
471
|
+
}
|
|
472
|
+
const oneOf = schema.oneOf;
|
|
473
|
+
if (!Array.isArray(oneOf)) return [];
|
|
474
|
+
const out = [];
|
|
475
|
+
for (const entry of oneOf) {
|
|
476
|
+
if (typeof entry !== "object" || entry === null) continue;
|
|
477
|
+
const maybe = entry;
|
|
478
|
+
if (!("const" in maybe)) continue;
|
|
479
|
+
out.push({
|
|
480
|
+
value: maybe.const,
|
|
481
|
+
label: typeof maybe.title === "string" && maybe.title.trim() ? maybe.title : String(maybe.const)
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
return out;
|
|
485
|
+
}
|
|
486
|
+
function arrayItemsSchema(schema) {
|
|
487
|
+
if (!schema) return void 0;
|
|
488
|
+
const items = schema.items;
|
|
489
|
+
if (typeof items !== "object" || items === null) return void 0;
|
|
490
|
+
return items;
|
|
491
|
+
}
|
|
492
|
+
var NuxtUiMultiEnumControl = defineComponent6({
|
|
493
|
+
name: "NuxtUiMultiEnumControl",
|
|
467
494
|
props: rendererProps6(),
|
|
468
495
|
setup(props) {
|
|
469
496
|
const { control, handleChange } = useJsonFormsControl4(
|
|
470
497
|
props
|
|
471
498
|
);
|
|
472
499
|
const errorMessage = computed7(() => trimmedOrUndefined(control.value.errors));
|
|
473
|
-
const
|
|
500
|
+
const options = computed7(
|
|
501
|
+
() => schemaEnumOptions2(arrayItemsSchema(control.value.schema))
|
|
502
|
+
);
|
|
503
|
+
const selectedValues = computed7({
|
|
504
|
+
get: () => Array.isArray(control.value.data) ? control.value.data : [],
|
|
505
|
+
set: (v) => handleChange(control.value.path, v)
|
|
506
|
+
});
|
|
507
|
+
return () => {
|
|
508
|
+
if (!control.value.visible) return null;
|
|
509
|
+
const UFormField = resolveComponent5("UFormField");
|
|
510
|
+
const USelectMenu = resolveComponent5("USelectMenu");
|
|
511
|
+
return h6(
|
|
512
|
+
"div",
|
|
513
|
+
{},
|
|
514
|
+
h6(
|
|
515
|
+
UFormField,
|
|
516
|
+
{
|
|
517
|
+
label: control.value.label,
|
|
518
|
+
description: control.value.description,
|
|
519
|
+
required: control.value.required,
|
|
520
|
+
error: errorMessage.value
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
default: () => h6(USelectMenu, {
|
|
524
|
+
multiple: true,
|
|
525
|
+
modelValue: selectedValues.value,
|
|
526
|
+
items: options.value,
|
|
527
|
+
valueKey: "value",
|
|
528
|
+
labelKey: "label",
|
|
529
|
+
disabled: !control.value.enabled,
|
|
530
|
+
color: errorMessage.value ? "error" : void 0,
|
|
531
|
+
"aria-invalid": Boolean(errorMessage.value),
|
|
532
|
+
placeholder: "Select...",
|
|
533
|
+
"onUpdate:modelValue": (v) => {
|
|
534
|
+
selectedValues.value = Array.isArray(v) ? v : [];
|
|
535
|
+
}
|
|
536
|
+
})
|
|
537
|
+
}
|
|
538
|
+
)
|
|
539
|
+
);
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
});
|
|
543
|
+
|
|
544
|
+
// src/renderers/controls/NuxtUiNumberControl.ts
|
|
545
|
+
import { rendererProps as rendererProps7, useJsonFormsControl as useJsonFormsControl5 } from "@jsonforms/vue";
|
|
546
|
+
import { computed as computed8, defineComponent as defineComponent7, h as h7, resolveComponent as resolveComponent6 } from "vue";
|
|
547
|
+
var NuxtUiNumberControl = defineComponent7({
|
|
548
|
+
name: "NuxtUiNumberControl",
|
|
549
|
+
props: rendererProps7(),
|
|
550
|
+
setup(props) {
|
|
551
|
+
const { control, handleChange } = useJsonFormsControl5(
|
|
552
|
+
props
|
|
553
|
+
);
|
|
554
|
+
const errorMessage = computed8(() => trimmedOrUndefined(control.value.errors));
|
|
555
|
+
const modelValue = computed8(() => {
|
|
474
556
|
const v = control.value.data;
|
|
475
557
|
return v === null || v === void 0 ? "" : String(v);
|
|
476
558
|
});
|
|
@@ -485,12 +567,12 @@ var NuxtUiNumberControl = defineComponent6({
|
|
|
485
567
|
}
|
|
486
568
|
return () => {
|
|
487
569
|
if (!control.value.visible) return null;
|
|
488
|
-
const UFormField =
|
|
489
|
-
const UInput =
|
|
490
|
-
return
|
|
570
|
+
const UFormField = resolveComponent6("UFormField");
|
|
571
|
+
const UInput = resolveComponent6("UInput");
|
|
572
|
+
return h7(
|
|
491
573
|
"div",
|
|
492
574
|
{},
|
|
493
|
-
|
|
575
|
+
h7(
|
|
494
576
|
UFormField,
|
|
495
577
|
{
|
|
496
578
|
label: control.value.label,
|
|
@@ -499,7 +581,7 @@ var NuxtUiNumberControl = defineComponent6({
|
|
|
499
581
|
error: errorMessage.value
|
|
500
582
|
},
|
|
501
583
|
{
|
|
502
|
-
default: () =>
|
|
584
|
+
default: () => h7(UInput, {
|
|
503
585
|
type: "number",
|
|
504
586
|
inputmode: "decimal",
|
|
505
587
|
modelValue: modelValue.value,
|
|
@@ -516,29 +598,29 @@ var NuxtUiNumberControl = defineComponent6({
|
|
|
516
598
|
});
|
|
517
599
|
|
|
518
600
|
// src/renderers/controls/NuxtUiStringControl.ts
|
|
519
|
-
import { rendererProps as
|
|
601
|
+
import { rendererProps as rendererProps8, useJsonFormsControl as useJsonFormsControl6 } from "@jsonforms/vue";
|
|
520
602
|
import {
|
|
521
|
-
computed as
|
|
522
|
-
defineComponent as
|
|
523
|
-
h as
|
|
524
|
-
resolveComponent as
|
|
603
|
+
computed as computed9,
|
|
604
|
+
defineComponent as defineComponent8,
|
|
605
|
+
h as h8,
|
|
606
|
+
resolveComponent as resolveComponent7
|
|
525
607
|
} from "vue";
|
|
526
|
-
var NuxtUiStringControl =
|
|
608
|
+
var NuxtUiStringControl = defineComponent8({
|
|
527
609
|
name: "NuxtUiStringControl",
|
|
528
|
-
props:
|
|
610
|
+
props: rendererProps8(),
|
|
529
611
|
setup(props) {
|
|
530
|
-
const { control, handleChange } =
|
|
612
|
+
const { control, handleChange } = useJsonFormsControl6(
|
|
531
613
|
props
|
|
532
614
|
);
|
|
533
|
-
const errorMessage =
|
|
615
|
+
const errorMessage = computed9(() => trimmedOrUndefined(control.value.errors));
|
|
534
616
|
return () => {
|
|
535
617
|
if (!control.value.visible) return null;
|
|
536
|
-
const UFormField =
|
|
537
|
-
const UInput =
|
|
538
|
-
return
|
|
618
|
+
const UFormField = resolveComponent7("UFormField");
|
|
619
|
+
const UInput = resolveComponent7("UInput");
|
|
620
|
+
return h8(
|
|
539
621
|
"div",
|
|
540
622
|
{},
|
|
541
|
-
|
|
623
|
+
h8(
|
|
542
624
|
UFormField,
|
|
543
625
|
{
|
|
544
626
|
label: control.value.label,
|
|
@@ -547,7 +629,7 @@ var NuxtUiStringControl = defineComponent7({
|
|
|
547
629
|
error: errorMessage.value
|
|
548
630
|
},
|
|
549
631
|
{
|
|
550
|
-
default: () =>
|
|
632
|
+
default: () => h8(UInput, {
|
|
551
633
|
modelValue: control.value.data ?? "",
|
|
552
634
|
class: "w-full",
|
|
553
635
|
disabled: !control.value.enabled,
|
|
@@ -563,24 +645,24 @@ var NuxtUiStringControl = defineComponent7({
|
|
|
563
645
|
});
|
|
564
646
|
|
|
565
647
|
// src/renderers/controls/NuxtUiTextareaControl.ts
|
|
566
|
-
import { rendererProps as
|
|
567
|
-
import { computed as
|
|
568
|
-
var NuxtUiTextareaControl =
|
|
648
|
+
import { rendererProps as rendererProps9, useJsonFormsControl as useJsonFormsControl7 } from "@jsonforms/vue";
|
|
649
|
+
import { computed as computed10, defineComponent as defineComponent9, h as h9, resolveComponent as resolveComponent8 } from "vue";
|
|
650
|
+
var NuxtUiTextareaControl = defineComponent9({
|
|
569
651
|
name: "NuxtUiTextareaControl",
|
|
570
|
-
props:
|
|
652
|
+
props: rendererProps9(),
|
|
571
653
|
setup(props) {
|
|
572
|
-
const { control, handleChange } =
|
|
654
|
+
const { control, handleChange } = useJsonFormsControl7(
|
|
573
655
|
props
|
|
574
656
|
);
|
|
575
|
-
const errorMessage =
|
|
657
|
+
const errorMessage = computed10(() => trimmedOrUndefined(control.value.errors));
|
|
576
658
|
return () => {
|
|
577
659
|
if (!control.value.visible) return null;
|
|
578
|
-
const UFormField =
|
|
579
|
-
const UTextarea =
|
|
580
|
-
return
|
|
660
|
+
const UFormField = resolveComponent8("UFormField");
|
|
661
|
+
const UTextarea = resolveComponent8("UTextarea");
|
|
662
|
+
return h9(
|
|
581
663
|
"div",
|
|
582
664
|
{},
|
|
583
|
-
|
|
665
|
+
h9(
|
|
584
666
|
UFormField,
|
|
585
667
|
{
|
|
586
668
|
label: control.value.label,
|
|
@@ -589,7 +671,7 @@ var NuxtUiTextareaControl = defineComponent8({
|
|
|
589
671
|
error: errorMessage.value
|
|
590
672
|
},
|
|
591
673
|
{
|
|
592
|
-
default: () =>
|
|
674
|
+
default: () => h9(UTextarea, {
|
|
593
675
|
modelValue: control.value.data ?? "",
|
|
594
676
|
class: "w-full",
|
|
595
677
|
disabled: !control.value.enabled,
|
|
@@ -606,37 +688,37 @@ var NuxtUiTextareaControl = defineComponent8({
|
|
|
606
688
|
});
|
|
607
689
|
|
|
608
690
|
// src/renderers/layouts/NuxtUiCategorizationRenderer.ts
|
|
609
|
-
import { DispatchRenderer as DispatchRenderer3, rendererProps as
|
|
610
|
-
import { defineComponent as
|
|
611
|
-
var NuxtUiCategorizationRenderer =
|
|
691
|
+
import { DispatchRenderer as DispatchRenderer3, rendererProps as rendererProps10, useJsonFormsCategorization } from "@jsonforms/vue";
|
|
692
|
+
import { defineComponent as defineComponent10, h as h10 } from "vue";
|
|
693
|
+
var NuxtUiCategorizationRenderer = defineComponent10({
|
|
612
694
|
name: "NuxtUiCategorizationRenderer",
|
|
613
695
|
components: { DispatchRenderer: DispatchRenderer3 },
|
|
614
|
-
props:
|
|
696
|
+
props: rendererProps10(),
|
|
615
697
|
setup(props) {
|
|
616
698
|
const { layout, categories } = useJsonFormsCategorization(
|
|
617
699
|
props
|
|
618
700
|
);
|
|
619
701
|
return () => {
|
|
620
702
|
if (!layout.value.visible) return null;
|
|
621
|
-
return
|
|
703
|
+
return h10(
|
|
622
704
|
"div",
|
|
623
705
|
{ class: "flex flex-col gap-6" },
|
|
624
706
|
categories.map((categoryRef, catIndex) => {
|
|
625
707
|
const category = categoryRef.value;
|
|
626
708
|
const elements = category.uischema.elements ?? [];
|
|
627
|
-
return
|
|
709
|
+
return h10(
|
|
628
710
|
"div",
|
|
629
711
|
{ key: `${layout.value.path}-cat-${catIndex}`, class: "flex flex-col gap-3" },
|
|
630
712
|
[
|
|
631
|
-
category.label ?
|
|
632
|
-
|
|
713
|
+
category.label ? h10("div", { class: "text-sm font-semibold" }, category.label) : null,
|
|
714
|
+
h10(
|
|
633
715
|
"div",
|
|
634
716
|
{ class: "flex flex-col gap-3" },
|
|
635
717
|
elements.map(
|
|
636
|
-
(element, index) =>
|
|
718
|
+
(element, index) => h10(
|
|
637
719
|
"div",
|
|
638
720
|
{ key: `${category.path}-${index}` },
|
|
639
|
-
|
|
721
|
+
h10(DispatchRenderer3, {
|
|
640
722
|
schema: category.schema,
|
|
641
723
|
uischema: element,
|
|
642
724
|
path: category.path,
|
|
@@ -656,12 +738,12 @@ var NuxtUiCategorizationRenderer = defineComponent9({
|
|
|
656
738
|
});
|
|
657
739
|
|
|
658
740
|
// src/renderers/layouts/NuxtUiCategoryRenderer.ts
|
|
659
|
-
import { DispatchRenderer as DispatchRenderer4, rendererProps as
|
|
660
|
-
import { defineComponent as
|
|
661
|
-
var NuxtUiCategoryRenderer =
|
|
741
|
+
import { DispatchRenderer as DispatchRenderer4, rendererProps as rendererProps11, useJsonFormsLayout } from "@jsonforms/vue";
|
|
742
|
+
import { defineComponent as defineComponent11, h as h11 } from "vue";
|
|
743
|
+
var NuxtUiCategoryRenderer = defineComponent11({
|
|
662
744
|
name: "NuxtUiCategoryRenderer",
|
|
663
745
|
components: { DispatchRenderer: DispatchRenderer4 },
|
|
664
|
-
props:
|
|
746
|
+
props: rendererProps11(),
|
|
665
747
|
setup(props) {
|
|
666
748
|
const { layout } = useJsonFormsLayout(
|
|
667
749
|
props
|
|
@@ -669,16 +751,16 @@ var NuxtUiCategoryRenderer = defineComponent10({
|
|
|
669
751
|
return () => {
|
|
670
752
|
if (!layout.value.visible) return null;
|
|
671
753
|
const elements = layout.value.uischema.elements ?? [];
|
|
672
|
-
return
|
|
673
|
-
layout.value.label ?
|
|
674
|
-
|
|
754
|
+
return h11("div", { class: "flex flex-col gap-3" }, [
|
|
755
|
+
layout.value.label ? h11("div", { class: "text-sm font-semibold" }, layout.value.label) : null,
|
|
756
|
+
h11(
|
|
675
757
|
"div",
|
|
676
758
|
{ class: "flex flex-col gap-3" },
|
|
677
759
|
elements.map(
|
|
678
|
-
(element, index) =>
|
|
760
|
+
(element, index) => h11(
|
|
679
761
|
"div",
|
|
680
762
|
{ key: `${layout.value.path}-${index}` },
|
|
681
|
-
|
|
763
|
+
h11(DispatchRenderer4, {
|
|
682
764
|
schema: layout.value.schema,
|
|
683
765
|
uischema: element,
|
|
684
766
|
path: layout.value.path,
|
|
@@ -695,12 +777,12 @@ var NuxtUiCategoryRenderer = defineComponent10({
|
|
|
695
777
|
});
|
|
696
778
|
|
|
697
779
|
// src/renderers/layouts/NuxtUiGroupRenderer.ts
|
|
698
|
-
import { DispatchRenderer as DispatchRenderer5, rendererProps as
|
|
699
|
-
import { defineComponent as
|
|
700
|
-
var NuxtUiGroupRenderer =
|
|
780
|
+
import { DispatchRenderer as DispatchRenderer5, rendererProps as rendererProps12, useJsonFormsLayout as useJsonFormsLayout2 } from "@jsonforms/vue";
|
|
781
|
+
import { defineComponent as defineComponent12, h as h12 } from "vue";
|
|
782
|
+
var NuxtUiGroupRenderer = defineComponent12({
|
|
701
783
|
name: "NuxtUiGroupRenderer",
|
|
702
784
|
components: { DispatchRenderer: DispatchRenderer5 },
|
|
703
|
-
props:
|
|
785
|
+
props: rendererProps12(),
|
|
704
786
|
setup(props) {
|
|
705
787
|
const { layout } = useJsonFormsLayout2(
|
|
706
788
|
props
|
|
@@ -708,16 +790,16 @@ var NuxtUiGroupRenderer = defineComponent11({
|
|
|
708
790
|
return () => {
|
|
709
791
|
if (!layout.value.visible) return null;
|
|
710
792
|
const elements = layout.value.uischema.elements ?? [];
|
|
711
|
-
return
|
|
712
|
-
layout.value.label ?
|
|
713
|
-
|
|
793
|
+
return h12("div", { class: "rounded border p-3" }, [
|
|
794
|
+
layout.value.label ? h12("div", { class: "mb-3 text-sm font-semibold" }, layout.value.label) : null,
|
|
795
|
+
h12(
|
|
714
796
|
"div",
|
|
715
797
|
{ class: "flex flex-col gap-3" },
|
|
716
798
|
elements.map(
|
|
717
|
-
(element, index) =>
|
|
799
|
+
(element, index) => h12(
|
|
718
800
|
"div",
|
|
719
801
|
{ key: `${layout.value.path}-${index}` },
|
|
720
|
-
|
|
802
|
+
h12(DispatchRenderer5, {
|
|
721
803
|
schema: layout.value.schema,
|
|
722
804
|
uischema: element,
|
|
723
805
|
path: layout.value.path,
|
|
@@ -734,12 +816,12 @@ var NuxtUiGroupRenderer = defineComponent11({
|
|
|
734
816
|
});
|
|
735
817
|
|
|
736
818
|
// src/renderers/layouts/NuxtUiHorizontalLayoutRenderer.ts
|
|
737
|
-
import { DispatchRenderer as DispatchRenderer6, rendererProps as
|
|
738
|
-
import { defineComponent as
|
|
739
|
-
var NuxtUiHorizontalLayoutRenderer =
|
|
819
|
+
import { DispatchRenderer as DispatchRenderer6, rendererProps as rendererProps13, useJsonFormsLayout as useJsonFormsLayout3 } from "@jsonforms/vue";
|
|
820
|
+
import { defineComponent as defineComponent13, h as h13 } from "vue";
|
|
821
|
+
var NuxtUiHorizontalLayoutRenderer = defineComponent13({
|
|
740
822
|
name: "NuxtUiHorizontalLayoutRenderer",
|
|
741
823
|
components: { DispatchRenderer: DispatchRenderer6 },
|
|
742
|
-
props:
|
|
824
|
+
props: rendererProps13(),
|
|
743
825
|
setup(props) {
|
|
744
826
|
const { layout } = useJsonFormsLayout3(
|
|
745
827
|
props
|
|
@@ -747,14 +829,14 @@ var NuxtUiHorizontalLayoutRenderer = defineComponent12({
|
|
|
747
829
|
return () => {
|
|
748
830
|
if (!layout.value.visible) return null;
|
|
749
831
|
const elements = layout.value.uischema.elements ?? [];
|
|
750
|
-
return
|
|
832
|
+
return h13(
|
|
751
833
|
"div",
|
|
752
834
|
{ class: "flex flex-col gap-3 md:flex-row md:flex-wrap" },
|
|
753
835
|
elements.map(
|
|
754
|
-
(element, index) =>
|
|
836
|
+
(element, index) => h13(
|
|
755
837
|
"div",
|
|
756
838
|
{ key: `${layout.value.path}-${index}`, class: "min-w-0 flex-1" },
|
|
757
|
-
|
|
839
|
+
h13(DispatchRenderer6, {
|
|
758
840
|
schema: layout.value.schema,
|
|
759
841
|
uischema: element,
|
|
760
842
|
path: layout.value.path,
|
|
@@ -770,18 +852,18 @@ var NuxtUiHorizontalLayoutRenderer = defineComponent12({
|
|
|
770
852
|
});
|
|
771
853
|
|
|
772
854
|
// src/renderers/layouts/NuxtUiLabelRenderer.ts
|
|
773
|
-
import { rendererProps as
|
|
774
|
-
import { defineComponent as
|
|
775
|
-
var NuxtUiLabelRenderer =
|
|
855
|
+
import { rendererProps as rendererProps14, useJsonFormsLabel } from "@jsonforms/vue";
|
|
856
|
+
import { defineComponent as defineComponent14, h as h14 } from "vue";
|
|
857
|
+
var NuxtUiLabelRenderer = defineComponent14({
|
|
776
858
|
name: "NuxtUiLabelRenderer",
|
|
777
|
-
props:
|
|
859
|
+
props: rendererProps14(),
|
|
778
860
|
setup(props) {
|
|
779
861
|
const { label } = useJsonFormsLabel(
|
|
780
862
|
props
|
|
781
863
|
);
|
|
782
864
|
return () => {
|
|
783
865
|
if (!label.value.visible) return null;
|
|
784
|
-
return
|
|
866
|
+
return h14(
|
|
785
867
|
"div",
|
|
786
868
|
{ class: "text-sm text-gray-600 dark:text-gray-300" },
|
|
787
869
|
label.value.text
|
|
@@ -791,12 +873,12 @@ var NuxtUiLabelRenderer = defineComponent13({
|
|
|
791
873
|
});
|
|
792
874
|
|
|
793
875
|
// src/renderers/layouts/NuxtUiVerticalLayoutRenderer.ts
|
|
794
|
-
import { DispatchRenderer as DispatchRenderer7, rendererProps as
|
|
795
|
-
import { defineComponent as
|
|
796
|
-
var NuxtUiVerticalLayoutRenderer =
|
|
876
|
+
import { DispatchRenderer as DispatchRenderer7, rendererProps as rendererProps15, useJsonFormsLayout as useJsonFormsLayout4 } from "@jsonforms/vue";
|
|
877
|
+
import { defineComponent as defineComponent15, h as h15 } from "vue";
|
|
878
|
+
var NuxtUiVerticalLayoutRenderer = defineComponent15({
|
|
797
879
|
name: "NuxtUiVerticalLayoutRenderer",
|
|
798
880
|
components: { DispatchRenderer: DispatchRenderer7 },
|
|
799
|
-
props:
|
|
881
|
+
props: rendererProps15(),
|
|
800
882
|
setup(props) {
|
|
801
883
|
const { layout } = useJsonFormsLayout4(
|
|
802
884
|
props
|
|
@@ -804,14 +886,14 @@ var NuxtUiVerticalLayoutRenderer = defineComponent14({
|
|
|
804
886
|
return () => {
|
|
805
887
|
if (!layout.value.visible) return null;
|
|
806
888
|
const elements = layout.value.uischema.elements ?? [];
|
|
807
|
-
return
|
|
889
|
+
return h15(
|
|
808
890
|
"div",
|
|
809
891
|
{ class: "flex flex-col gap-3" },
|
|
810
892
|
elements.map(
|
|
811
|
-
(element, index) =>
|
|
893
|
+
(element, index) => h15(
|
|
812
894
|
"div",
|
|
813
895
|
{ key: `${layout.value.path}-${index}` },
|
|
814
|
-
|
|
896
|
+
h15(DispatchRenderer7, {
|
|
815
897
|
schema: layout.value.schema,
|
|
816
898
|
uischema: element,
|
|
817
899
|
path: layout.value.path,
|
|
@@ -828,6 +910,28 @@ var NuxtUiVerticalLayoutRenderer = defineComponent14({
|
|
|
828
910
|
|
|
829
911
|
// src/nuxtUiRenderers.ts
|
|
830
912
|
var RANK = 10;
|
|
913
|
+
var ENUM_RANK = RANK + 1;
|
|
914
|
+
var isMultiEnumControl = (uischema, schema, context) => {
|
|
915
|
+
if (!uiTypeIs("Control")(uischema, schema, context)) {
|
|
916
|
+
return false;
|
|
917
|
+
}
|
|
918
|
+
const scope = uischema?.scope;
|
|
919
|
+
if (typeof scope !== "string") return false;
|
|
920
|
+
const rootSchema = context?.rootSchema ?? schema;
|
|
921
|
+
let resolved;
|
|
922
|
+
try {
|
|
923
|
+
resolved = Resolve2.schema(schema, scope, rootSchema);
|
|
924
|
+
} catch {
|
|
925
|
+
return false;
|
|
926
|
+
}
|
|
927
|
+
if (resolved?.type !== "array") return false;
|
|
928
|
+
const items = resolved?.items;
|
|
929
|
+
if (!items) return false;
|
|
930
|
+
if (Array.isArray(items)) return false;
|
|
931
|
+
if (typeof items !== "object" || items === null) return false;
|
|
932
|
+
const resolvedItems = "$ref" in items && typeof items.$ref === "string" ? Resolve2.schema(rootSchema, items.$ref, rootSchema) : items;
|
|
933
|
+
return isEnumSchema(resolvedItems);
|
|
934
|
+
};
|
|
831
935
|
var nuxtUiRenderers = [
|
|
832
936
|
// Layouts
|
|
833
937
|
{
|
|
@@ -868,10 +972,6 @@ var nuxtUiRenderers = [
|
|
|
868
972
|
tester: rankWith(RANK, isMultiLineControl),
|
|
869
973
|
renderer: markRaw(NuxtUiTextareaControl)
|
|
870
974
|
},
|
|
871
|
-
{
|
|
872
|
-
tester: rankWith(RANK, isStringControl),
|
|
873
|
-
renderer: markRaw(NuxtUiStringControl)
|
|
874
|
-
},
|
|
875
975
|
{
|
|
876
976
|
tester: rankWith(RANK, isNumberControl),
|
|
877
977
|
renderer: markRaw(NuxtUiNumberControl)
|
|
@@ -885,8 +985,19 @@ var nuxtUiRenderers = [
|
|
|
885
985
|
renderer: markRaw(NuxtUiBooleanControl)
|
|
886
986
|
},
|
|
887
987
|
{
|
|
888
|
-
|
|
988
|
+
// Multi-enum must outrank generic array renderer and string renderer.
|
|
989
|
+
tester: rankWith(ENUM_RANK, isMultiEnumControl),
|
|
990
|
+
renderer: markRaw(NuxtUiMultiEnumControl)
|
|
991
|
+
},
|
|
992
|
+
{
|
|
993
|
+
// Enum must outrank the generic string control, otherwise enums can render
|
|
994
|
+
// as freeform text inputs.
|
|
995
|
+
tester: rankWith(ENUM_RANK, isEnumControl),
|
|
889
996
|
renderer: markRaw(NuxtUiEnumControl)
|
|
997
|
+
},
|
|
998
|
+
{
|
|
999
|
+
tester: rankWith(RANK, isStringControl),
|
|
1000
|
+
renderer: markRaw(NuxtUiStringControl)
|
|
890
1001
|
}
|
|
891
1002
|
];
|
|
892
1003
|
export {
|