jsonforms-nuxt-ui-renderers 0.1.4 → 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 +210 -104
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +189 -81
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -26,7 +26,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
26
26
|
|
|
27
27
|
// src/nuxtUiRenderers.ts
|
|
28
28
|
var import_core3 = require("@jsonforms/core");
|
|
29
|
-
var
|
|
29
|
+
var import_vue32 = require("vue");
|
|
30
30
|
|
|
31
31
|
// src/renderers/complex/NuxtUiArrayListRenderer.ts
|
|
32
32
|
var import_core = require("@jsonforms/core");
|
|
@@ -464,18 +464,98 @@ var NuxtUiIntegerControl = (0, import_vue11.defineComponent)({
|
|
|
464
464
|
}
|
|
465
465
|
});
|
|
466
466
|
|
|
467
|
-
// src/renderers/controls/
|
|
467
|
+
// src/renderers/controls/NuxtUiMultiEnumControl.ts
|
|
468
468
|
var import_vue12 = require("@jsonforms/vue");
|
|
469
469
|
var import_vue13 = require("vue");
|
|
470
|
-
|
|
471
|
-
|
|
470
|
+
function schemaEnumOptions2(schema) {
|
|
471
|
+
if (!schema) return [];
|
|
472
|
+
if (Array.isArray(schema.enum)) {
|
|
473
|
+
return schema.enum.map((v) => ({ label: String(v), value: v }));
|
|
474
|
+
}
|
|
475
|
+
const oneOf = schema.oneOf;
|
|
476
|
+
if (!Array.isArray(oneOf)) return [];
|
|
477
|
+
const out = [];
|
|
478
|
+
for (const entry of oneOf) {
|
|
479
|
+
if (typeof entry !== "object" || entry === null) continue;
|
|
480
|
+
const maybe = entry;
|
|
481
|
+
if (!("const" in maybe)) continue;
|
|
482
|
+
out.push({
|
|
483
|
+
value: maybe.const,
|
|
484
|
+
label: typeof maybe.title === "string" && maybe.title.trim() ? maybe.title : String(maybe.const)
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
return out;
|
|
488
|
+
}
|
|
489
|
+
function arrayItemsSchema(schema) {
|
|
490
|
+
if (!schema) return void 0;
|
|
491
|
+
const items = schema.items;
|
|
492
|
+
if (typeof items !== "object" || items === null) return void 0;
|
|
493
|
+
return items;
|
|
494
|
+
}
|
|
495
|
+
var NuxtUiMultiEnumControl = (0, import_vue13.defineComponent)({
|
|
496
|
+
name: "NuxtUiMultiEnumControl",
|
|
472
497
|
props: (0, import_vue12.rendererProps)(),
|
|
473
498
|
setup(props) {
|
|
474
499
|
const { control, handleChange } = (0, import_vue12.useJsonFormsControl)(
|
|
475
500
|
props
|
|
476
501
|
);
|
|
477
502
|
const errorMessage = (0, import_vue13.computed)(() => trimmedOrUndefined(control.value.errors));
|
|
478
|
-
const
|
|
503
|
+
const options = (0, import_vue13.computed)(
|
|
504
|
+
() => schemaEnumOptions2(arrayItemsSchema(control.value.schema))
|
|
505
|
+
);
|
|
506
|
+
const selectedValues = (0, import_vue13.computed)({
|
|
507
|
+
get: () => Array.isArray(control.value.data) ? control.value.data : [],
|
|
508
|
+
set: (v) => handleChange(control.value.path, v)
|
|
509
|
+
});
|
|
510
|
+
return () => {
|
|
511
|
+
if (!control.value.visible) return null;
|
|
512
|
+
const UFormField = (0, import_vue13.resolveComponent)("UFormField");
|
|
513
|
+
const USelectMenu = (0, import_vue13.resolveComponent)("USelectMenu");
|
|
514
|
+
return (0, import_vue13.h)(
|
|
515
|
+
"div",
|
|
516
|
+
{},
|
|
517
|
+
(0, import_vue13.h)(
|
|
518
|
+
UFormField,
|
|
519
|
+
{
|
|
520
|
+
label: control.value.label,
|
|
521
|
+
description: control.value.description,
|
|
522
|
+
required: control.value.required,
|
|
523
|
+
error: errorMessage.value
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
default: () => (0, import_vue13.h)(USelectMenu, {
|
|
527
|
+
multiple: true,
|
|
528
|
+
modelValue: selectedValues.value,
|
|
529
|
+
items: options.value,
|
|
530
|
+
valueKey: "value",
|
|
531
|
+
labelKey: "label",
|
|
532
|
+
disabled: !control.value.enabled,
|
|
533
|
+
color: errorMessage.value ? "error" : void 0,
|
|
534
|
+
"aria-invalid": Boolean(errorMessage.value),
|
|
535
|
+
placeholder: "Select...",
|
|
536
|
+
"onUpdate:modelValue": (v) => {
|
|
537
|
+
selectedValues.value = Array.isArray(v) ? v : [];
|
|
538
|
+
}
|
|
539
|
+
})
|
|
540
|
+
}
|
|
541
|
+
)
|
|
542
|
+
);
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
});
|
|
546
|
+
|
|
547
|
+
// src/renderers/controls/NuxtUiNumberControl.ts
|
|
548
|
+
var import_vue14 = require("@jsonforms/vue");
|
|
549
|
+
var import_vue15 = require("vue");
|
|
550
|
+
var NuxtUiNumberControl = (0, import_vue15.defineComponent)({
|
|
551
|
+
name: "NuxtUiNumberControl",
|
|
552
|
+
props: (0, import_vue14.rendererProps)(),
|
|
553
|
+
setup(props) {
|
|
554
|
+
const { control, handleChange } = (0, import_vue14.useJsonFormsControl)(
|
|
555
|
+
props
|
|
556
|
+
);
|
|
557
|
+
const errorMessage = (0, import_vue15.computed)(() => trimmedOrUndefined(control.value.errors));
|
|
558
|
+
const modelValue = (0, import_vue15.computed)(() => {
|
|
479
559
|
const v = control.value.data;
|
|
480
560
|
return v === null || v === void 0 ? "" : String(v);
|
|
481
561
|
});
|
|
@@ -490,12 +570,12 @@ var NuxtUiNumberControl = (0, import_vue13.defineComponent)({
|
|
|
490
570
|
}
|
|
491
571
|
return () => {
|
|
492
572
|
if (!control.value.visible) return null;
|
|
493
|
-
const UFormField = (0,
|
|
494
|
-
const UInput = (0,
|
|
495
|
-
return (0,
|
|
573
|
+
const UFormField = (0, import_vue15.resolveComponent)("UFormField");
|
|
574
|
+
const UInput = (0, import_vue15.resolveComponent)("UInput");
|
|
575
|
+
return (0, import_vue15.h)(
|
|
496
576
|
"div",
|
|
497
577
|
{},
|
|
498
|
-
(0,
|
|
578
|
+
(0, import_vue15.h)(
|
|
499
579
|
UFormField,
|
|
500
580
|
{
|
|
501
581
|
label: control.value.label,
|
|
@@ -504,7 +584,7 @@ var NuxtUiNumberControl = (0, import_vue13.defineComponent)({
|
|
|
504
584
|
error: errorMessage.value
|
|
505
585
|
},
|
|
506
586
|
{
|
|
507
|
-
default: () => (0,
|
|
587
|
+
default: () => (0, import_vue15.h)(UInput, {
|
|
508
588
|
type: "number",
|
|
509
589
|
inputmode: "decimal",
|
|
510
590
|
modelValue: modelValue.value,
|
|
@@ -521,24 +601,24 @@ var NuxtUiNumberControl = (0, import_vue13.defineComponent)({
|
|
|
521
601
|
});
|
|
522
602
|
|
|
523
603
|
// src/renderers/controls/NuxtUiStringControl.ts
|
|
524
|
-
var
|
|
525
|
-
var
|
|
526
|
-
var NuxtUiStringControl = (0,
|
|
604
|
+
var import_vue16 = require("@jsonforms/vue");
|
|
605
|
+
var import_vue17 = require("vue");
|
|
606
|
+
var NuxtUiStringControl = (0, import_vue17.defineComponent)({
|
|
527
607
|
name: "NuxtUiStringControl",
|
|
528
|
-
props: (0,
|
|
608
|
+
props: (0, import_vue16.rendererProps)(),
|
|
529
609
|
setup(props) {
|
|
530
|
-
const { control, handleChange } = (0,
|
|
610
|
+
const { control, handleChange } = (0, import_vue16.useJsonFormsControl)(
|
|
531
611
|
props
|
|
532
612
|
);
|
|
533
|
-
const errorMessage = (0,
|
|
613
|
+
const errorMessage = (0, import_vue17.computed)(() => trimmedOrUndefined(control.value.errors));
|
|
534
614
|
return () => {
|
|
535
615
|
if (!control.value.visible) return null;
|
|
536
|
-
const UFormField = (0,
|
|
537
|
-
const UInput = (0,
|
|
538
|
-
return (0,
|
|
616
|
+
const UFormField = (0, import_vue17.resolveComponent)("UFormField");
|
|
617
|
+
const UInput = (0, import_vue17.resolveComponent)("UInput");
|
|
618
|
+
return (0, import_vue17.h)(
|
|
539
619
|
"div",
|
|
540
620
|
{},
|
|
541
|
-
(0,
|
|
621
|
+
(0, import_vue17.h)(
|
|
542
622
|
UFormField,
|
|
543
623
|
{
|
|
544
624
|
label: control.value.label,
|
|
@@ -547,7 +627,7 @@ var NuxtUiStringControl = (0, import_vue15.defineComponent)({
|
|
|
547
627
|
error: errorMessage.value
|
|
548
628
|
},
|
|
549
629
|
{
|
|
550
|
-
default: () => (0,
|
|
630
|
+
default: () => (0, import_vue17.h)(UInput, {
|
|
551
631
|
modelValue: control.value.data ?? "",
|
|
552
632
|
class: "w-full",
|
|
553
633
|
disabled: !control.value.enabled,
|
|
@@ -563,24 +643,24 @@ var NuxtUiStringControl = (0, import_vue15.defineComponent)({
|
|
|
563
643
|
});
|
|
564
644
|
|
|
565
645
|
// src/renderers/controls/NuxtUiTextareaControl.ts
|
|
566
|
-
var
|
|
567
|
-
var
|
|
568
|
-
var NuxtUiTextareaControl = (0,
|
|
646
|
+
var import_vue18 = require("@jsonforms/vue");
|
|
647
|
+
var import_vue19 = require("vue");
|
|
648
|
+
var NuxtUiTextareaControl = (0, import_vue19.defineComponent)({
|
|
569
649
|
name: "NuxtUiTextareaControl",
|
|
570
|
-
props: (0,
|
|
650
|
+
props: (0, import_vue18.rendererProps)(),
|
|
571
651
|
setup(props) {
|
|
572
|
-
const { control, handleChange } = (0,
|
|
652
|
+
const { control, handleChange } = (0, import_vue18.useJsonFormsControl)(
|
|
573
653
|
props
|
|
574
654
|
);
|
|
575
|
-
const errorMessage = (0,
|
|
655
|
+
const errorMessage = (0, import_vue19.computed)(() => trimmedOrUndefined(control.value.errors));
|
|
576
656
|
return () => {
|
|
577
657
|
if (!control.value.visible) return null;
|
|
578
|
-
const UFormField = (0,
|
|
579
|
-
const UTextarea = (0,
|
|
580
|
-
return (0,
|
|
658
|
+
const UFormField = (0, import_vue19.resolveComponent)("UFormField");
|
|
659
|
+
const UTextarea = (0, import_vue19.resolveComponent)("UTextarea");
|
|
660
|
+
return (0, import_vue19.h)(
|
|
581
661
|
"div",
|
|
582
662
|
{},
|
|
583
|
-
(0,
|
|
663
|
+
(0, import_vue19.h)(
|
|
584
664
|
UFormField,
|
|
585
665
|
{
|
|
586
666
|
label: control.value.label,
|
|
@@ -589,7 +669,7 @@ var NuxtUiTextareaControl = (0, import_vue17.defineComponent)({
|
|
|
589
669
|
error: errorMessage.value
|
|
590
670
|
},
|
|
591
671
|
{
|
|
592
|
-
default: () => (0,
|
|
672
|
+
default: () => (0, import_vue19.h)(UTextarea, {
|
|
593
673
|
modelValue: control.value.data ?? "",
|
|
594
674
|
class: "w-full",
|
|
595
675
|
disabled: !control.value.enabled,
|
|
@@ -606,37 +686,37 @@ var NuxtUiTextareaControl = (0, import_vue17.defineComponent)({
|
|
|
606
686
|
});
|
|
607
687
|
|
|
608
688
|
// src/renderers/layouts/NuxtUiCategorizationRenderer.ts
|
|
609
|
-
var
|
|
610
|
-
var
|
|
611
|
-
var NuxtUiCategorizationRenderer = (0,
|
|
689
|
+
var import_vue20 = require("@jsonforms/vue");
|
|
690
|
+
var import_vue21 = require("vue");
|
|
691
|
+
var NuxtUiCategorizationRenderer = (0, import_vue21.defineComponent)({
|
|
612
692
|
name: "NuxtUiCategorizationRenderer",
|
|
613
|
-
components: { DispatchRenderer:
|
|
614
|
-
props: (0,
|
|
693
|
+
components: { DispatchRenderer: import_vue20.DispatchRenderer },
|
|
694
|
+
props: (0, import_vue20.rendererProps)(),
|
|
615
695
|
setup(props) {
|
|
616
|
-
const { layout, categories } = (0,
|
|
696
|
+
const { layout, categories } = (0, import_vue20.useJsonFormsCategorization)(
|
|
617
697
|
props
|
|
618
698
|
);
|
|
619
699
|
return () => {
|
|
620
700
|
if (!layout.value.visible) return null;
|
|
621
|
-
return (0,
|
|
701
|
+
return (0, import_vue21.h)(
|
|
622
702
|
"div",
|
|
623
703
|
{ class: "flex flex-col gap-6" },
|
|
624
704
|
categories.map((categoryRef, catIndex) => {
|
|
625
705
|
const category = categoryRef.value;
|
|
626
706
|
const elements = category.uischema.elements ?? [];
|
|
627
|
-
return (0,
|
|
707
|
+
return (0, import_vue21.h)(
|
|
628
708
|
"div",
|
|
629
709
|
{ key: `${layout.value.path}-cat-${catIndex}`, class: "flex flex-col gap-3" },
|
|
630
710
|
[
|
|
631
|
-
category.label ? (0,
|
|
632
|
-
(0,
|
|
711
|
+
category.label ? (0, import_vue21.h)("div", { class: "text-sm font-semibold" }, category.label) : null,
|
|
712
|
+
(0, import_vue21.h)(
|
|
633
713
|
"div",
|
|
634
714
|
{ class: "flex flex-col gap-3" },
|
|
635
715
|
elements.map(
|
|
636
|
-
(element, index) => (0,
|
|
716
|
+
(element, index) => (0, import_vue21.h)(
|
|
637
717
|
"div",
|
|
638
718
|
{ key: `${category.path}-${index}` },
|
|
639
|
-
(0,
|
|
719
|
+
(0, import_vue21.h)(import_vue20.DispatchRenderer, {
|
|
640
720
|
schema: category.schema,
|
|
641
721
|
uischema: element,
|
|
642
722
|
path: category.path,
|
|
@@ -656,29 +736,29 @@ var NuxtUiCategorizationRenderer = (0, import_vue19.defineComponent)({
|
|
|
656
736
|
});
|
|
657
737
|
|
|
658
738
|
// src/renderers/layouts/NuxtUiCategoryRenderer.ts
|
|
659
|
-
var
|
|
660
|
-
var
|
|
661
|
-
var NuxtUiCategoryRenderer = (0,
|
|
739
|
+
var import_vue22 = require("@jsonforms/vue");
|
|
740
|
+
var import_vue23 = require("vue");
|
|
741
|
+
var NuxtUiCategoryRenderer = (0, import_vue23.defineComponent)({
|
|
662
742
|
name: "NuxtUiCategoryRenderer",
|
|
663
|
-
components: { DispatchRenderer:
|
|
664
|
-
props: (0,
|
|
743
|
+
components: { DispatchRenderer: import_vue22.DispatchRenderer },
|
|
744
|
+
props: (0, import_vue22.rendererProps)(),
|
|
665
745
|
setup(props) {
|
|
666
|
-
const { layout } = (0,
|
|
746
|
+
const { layout } = (0, import_vue22.useJsonFormsLayout)(
|
|
667
747
|
props
|
|
668
748
|
);
|
|
669
749
|
return () => {
|
|
670
750
|
if (!layout.value.visible) return null;
|
|
671
751
|
const elements = layout.value.uischema.elements ?? [];
|
|
672
|
-
return (0,
|
|
673
|
-
layout.value.label ? (0,
|
|
674
|
-
(0,
|
|
752
|
+
return (0, import_vue23.h)("div", { class: "flex flex-col gap-3" }, [
|
|
753
|
+
layout.value.label ? (0, import_vue23.h)("div", { class: "text-sm font-semibold" }, layout.value.label) : null,
|
|
754
|
+
(0, import_vue23.h)(
|
|
675
755
|
"div",
|
|
676
756
|
{ class: "flex flex-col gap-3" },
|
|
677
757
|
elements.map(
|
|
678
|
-
(element, index) => (0,
|
|
758
|
+
(element, index) => (0, import_vue23.h)(
|
|
679
759
|
"div",
|
|
680
760
|
{ key: `${layout.value.path}-${index}` },
|
|
681
|
-
(0,
|
|
761
|
+
(0, import_vue23.h)(import_vue22.DispatchRenderer, {
|
|
682
762
|
schema: layout.value.schema,
|
|
683
763
|
uischema: element,
|
|
684
764
|
path: layout.value.path,
|
|
@@ -695,29 +775,29 @@ var NuxtUiCategoryRenderer = (0, import_vue21.defineComponent)({
|
|
|
695
775
|
});
|
|
696
776
|
|
|
697
777
|
// src/renderers/layouts/NuxtUiGroupRenderer.ts
|
|
698
|
-
var
|
|
699
|
-
var
|
|
700
|
-
var NuxtUiGroupRenderer = (0,
|
|
778
|
+
var import_vue24 = require("@jsonforms/vue");
|
|
779
|
+
var import_vue25 = require("vue");
|
|
780
|
+
var NuxtUiGroupRenderer = (0, import_vue25.defineComponent)({
|
|
701
781
|
name: "NuxtUiGroupRenderer",
|
|
702
|
-
components: { DispatchRenderer:
|
|
703
|
-
props: (0,
|
|
782
|
+
components: { DispatchRenderer: import_vue24.DispatchRenderer },
|
|
783
|
+
props: (0, import_vue24.rendererProps)(),
|
|
704
784
|
setup(props) {
|
|
705
|
-
const { layout } = (0,
|
|
785
|
+
const { layout } = (0, import_vue24.useJsonFormsLayout)(
|
|
706
786
|
props
|
|
707
787
|
);
|
|
708
788
|
return () => {
|
|
709
789
|
if (!layout.value.visible) return null;
|
|
710
790
|
const elements = layout.value.uischema.elements ?? [];
|
|
711
|
-
return (0,
|
|
712
|
-
layout.value.label ? (0,
|
|
713
|
-
(0,
|
|
791
|
+
return (0, import_vue25.h)("div", { class: "rounded border p-3" }, [
|
|
792
|
+
layout.value.label ? (0, import_vue25.h)("div", { class: "mb-3 text-sm font-semibold" }, layout.value.label) : null,
|
|
793
|
+
(0, import_vue25.h)(
|
|
714
794
|
"div",
|
|
715
795
|
{ class: "flex flex-col gap-3" },
|
|
716
796
|
elements.map(
|
|
717
|
-
(element, index) => (0,
|
|
797
|
+
(element, index) => (0, import_vue25.h)(
|
|
718
798
|
"div",
|
|
719
799
|
{ key: `${layout.value.path}-${index}` },
|
|
720
|
-
(0,
|
|
800
|
+
(0, import_vue25.h)(import_vue24.DispatchRenderer, {
|
|
721
801
|
schema: layout.value.schema,
|
|
722
802
|
uischema: element,
|
|
723
803
|
path: layout.value.path,
|
|
@@ -734,27 +814,27 @@ var NuxtUiGroupRenderer = (0, import_vue23.defineComponent)({
|
|
|
734
814
|
});
|
|
735
815
|
|
|
736
816
|
// src/renderers/layouts/NuxtUiHorizontalLayoutRenderer.ts
|
|
737
|
-
var
|
|
738
|
-
var
|
|
739
|
-
var NuxtUiHorizontalLayoutRenderer = (0,
|
|
817
|
+
var import_vue26 = require("@jsonforms/vue");
|
|
818
|
+
var import_vue27 = require("vue");
|
|
819
|
+
var NuxtUiHorizontalLayoutRenderer = (0, import_vue27.defineComponent)({
|
|
740
820
|
name: "NuxtUiHorizontalLayoutRenderer",
|
|
741
|
-
components: { DispatchRenderer:
|
|
742
|
-
props: (0,
|
|
821
|
+
components: { DispatchRenderer: import_vue26.DispatchRenderer },
|
|
822
|
+
props: (0, import_vue26.rendererProps)(),
|
|
743
823
|
setup(props) {
|
|
744
|
-
const { layout } = (0,
|
|
824
|
+
const { layout } = (0, import_vue26.useJsonFormsLayout)(
|
|
745
825
|
props
|
|
746
826
|
);
|
|
747
827
|
return () => {
|
|
748
828
|
if (!layout.value.visible) return null;
|
|
749
829
|
const elements = layout.value.uischema.elements ?? [];
|
|
750
|
-
return (0,
|
|
830
|
+
return (0, import_vue27.h)(
|
|
751
831
|
"div",
|
|
752
832
|
{ class: "flex flex-col gap-3 md:flex-row md:flex-wrap" },
|
|
753
833
|
elements.map(
|
|
754
|
-
(element, index) => (0,
|
|
834
|
+
(element, index) => (0, import_vue27.h)(
|
|
755
835
|
"div",
|
|
756
836
|
{ key: `${layout.value.path}-${index}`, class: "min-w-0 flex-1" },
|
|
757
|
-
(0,
|
|
837
|
+
(0, import_vue27.h)(import_vue26.DispatchRenderer, {
|
|
758
838
|
schema: layout.value.schema,
|
|
759
839
|
uischema: element,
|
|
760
840
|
path: layout.value.path,
|
|
@@ -770,18 +850,18 @@ var NuxtUiHorizontalLayoutRenderer = (0, import_vue25.defineComponent)({
|
|
|
770
850
|
});
|
|
771
851
|
|
|
772
852
|
// src/renderers/layouts/NuxtUiLabelRenderer.ts
|
|
773
|
-
var
|
|
774
|
-
var
|
|
775
|
-
var NuxtUiLabelRenderer = (0,
|
|
853
|
+
var import_vue28 = require("@jsonforms/vue");
|
|
854
|
+
var import_vue29 = require("vue");
|
|
855
|
+
var NuxtUiLabelRenderer = (0, import_vue29.defineComponent)({
|
|
776
856
|
name: "NuxtUiLabelRenderer",
|
|
777
|
-
props: (0,
|
|
857
|
+
props: (0, import_vue28.rendererProps)(),
|
|
778
858
|
setup(props) {
|
|
779
|
-
const { label } = (0,
|
|
859
|
+
const { label } = (0, import_vue28.useJsonFormsLabel)(
|
|
780
860
|
props
|
|
781
861
|
);
|
|
782
862
|
return () => {
|
|
783
863
|
if (!label.value.visible) return null;
|
|
784
|
-
return (0,
|
|
864
|
+
return (0, import_vue29.h)(
|
|
785
865
|
"div",
|
|
786
866
|
{ class: "text-sm text-gray-600 dark:text-gray-300" },
|
|
787
867
|
label.value.text
|
|
@@ -791,27 +871,27 @@ var NuxtUiLabelRenderer = (0, import_vue27.defineComponent)({
|
|
|
791
871
|
});
|
|
792
872
|
|
|
793
873
|
// src/renderers/layouts/NuxtUiVerticalLayoutRenderer.ts
|
|
794
|
-
var
|
|
795
|
-
var
|
|
796
|
-
var NuxtUiVerticalLayoutRenderer = (0,
|
|
874
|
+
var import_vue30 = require("@jsonforms/vue");
|
|
875
|
+
var import_vue31 = require("vue");
|
|
876
|
+
var NuxtUiVerticalLayoutRenderer = (0, import_vue31.defineComponent)({
|
|
797
877
|
name: "NuxtUiVerticalLayoutRenderer",
|
|
798
|
-
components: { DispatchRenderer:
|
|
799
|
-
props: (0,
|
|
878
|
+
components: { DispatchRenderer: import_vue30.DispatchRenderer },
|
|
879
|
+
props: (0, import_vue30.rendererProps)(),
|
|
800
880
|
setup(props) {
|
|
801
|
-
const { layout } = (0,
|
|
881
|
+
const { layout } = (0, import_vue30.useJsonFormsLayout)(
|
|
802
882
|
props
|
|
803
883
|
);
|
|
804
884
|
return () => {
|
|
805
885
|
if (!layout.value.visible) return null;
|
|
806
886
|
const elements = layout.value.uischema.elements ?? [];
|
|
807
|
-
return (0,
|
|
887
|
+
return (0, import_vue31.h)(
|
|
808
888
|
"div",
|
|
809
889
|
{ class: "flex flex-col gap-3" },
|
|
810
890
|
elements.map(
|
|
811
|
-
(element, index) => (0,
|
|
891
|
+
(element, index) => (0, import_vue31.h)(
|
|
812
892
|
"div",
|
|
813
893
|
{ key: `${layout.value.path}-${index}` },
|
|
814
|
-
(0,
|
|
894
|
+
(0, import_vue31.h)(import_vue30.DispatchRenderer, {
|
|
815
895
|
schema: layout.value.schema,
|
|
816
896
|
uischema: element,
|
|
817
897
|
path: layout.value.path,
|
|
@@ -829,67 +909,93 @@ var NuxtUiVerticalLayoutRenderer = (0, import_vue29.defineComponent)({
|
|
|
829
909
|
// src/nuxtUiRenderers.ts
|
|
830
910
|
var RANK = 10;
|
|
831
911
|
var ENUM_RANK = RANK + 1;
|
|
912
|
+
var isMultiEnumControl = (uischema, schema, context) => {
|
|
913
|
+
if (!(0, import_core3.uiTypeIs)("Control")(uischema, schema, context)) {
|
|
914
|
+
return false;
|
|
915
|
+
}
|
|
916
|
+
const scope = uischema?.scope;
|
|
917
|
+
if (typeof scope !== "string") return false;
|
|
918
|
+
const rootSchema = context?.rootSchema ?? schema;
|
|
919
|
+
let resolved;
|
|
920
|
+
try {
|
|
921
|
+
resolved = import_core3.Resolve.schema(schema, scope, rootSchema);
|
|
922
|
+
} catch {
|
|
923
|
+
return false;
|
|
924
|
+
}
|
|
925
|
+
if (resolved?.type !== "array") return false;
|
|
926
|
+
const items = resolved?.items;
|
|
927
|
+
if (!items) return false;
|
|
928
|
+
if (Array.isArray(items)) return false;
|
|
929
|
+
if (typeof items !== "object" || items === null) return false;
|
|
930
|
+
const resolvedItems = "$ref" in items && typeof items.$ref === "string" ? import_core3.Resolve.schema(rootSchema, items.$ref, rootSchema) : items;
|
|
931
|
+
return (0, import_core3.isEnumSchema)(resolvedItems);
|
|
932
|
+
};
|
|
832
933
|
var nuxtUiRenderers = [
|
|
833
934
|
// Layouts
|
|
834
935
|
{
|
|
835
936
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("VerticalLayout")),
|
|
836
|
-
renderer: (0,
|
|
937
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiVerticalLayoutRenderer)
|
|
837
938
|
},
|
|
838
939
|
{
|
|
839
940
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("HorizontalLayout")),
|
|
840
|
-
renderer: (0,
|
|
941
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiHorizontalLayoutRenderer)
|
|
841
942
|
},
|
|
842
943
|
{
|
|
843
944
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Group")),
|
|
844
|
-
renderer: (0,
|
|
945
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiGroupRenderer)
|
|
845
946
|
},
|
|
846
947
|
{
|
|
847
948
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Categorization")),
|
|
848
|
-
renderer: (0,
|
|
949
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiCategorizationRenderer)
|
|
849
950
|
},
|
|
850
951
|
{
|
|
851
952
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Category")),
|
|
852
|
-
renderer: (0,
|
|
953
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiCategoryRenderer)
|
|
853
954
|
},
|
|
854
955
|
{
|
|
855
956
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Label")),
|
|
856
|
-
renderer: (0,
|
|
957
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiLabelRenderer)
|
|
857
958
|
},
|
|
858
959
|
// Complex schemas
|
|
859
960
|
{
|
|
860
961
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.schemaTypeIs)("array")),
|
|
861
|
-
renderer: (0,
|
|
962
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiArrayListRenderer)
|
|
862
963
|
},
|
|
863
964
|
{
|
|
864
965
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isObjectControl),
|
|
865
|
-
renderer: (0,
|
|
966
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiObjectRenderer)
|
|
866
967
|
},
|
|
867
968
|
// Primitive controls
|
|
868
969
|
{
|
|
869
970
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isMultiLineControl),
|
|
870
|
-
renderer: (0,
|
|
971
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiTextareaControl)
|
|
871
972
|
},
|
|
872
973
|
{
|
|
873
974
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isNumberControl),
|
|
874
|
-
renderer: (0,
|
|
975
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiNumberControl)
|
|
875
976
|
},
|
|
876
977
|
{
|
|
877
978
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isIntegerControl),
|
|
878
|
-
renderer: (0,
|
|
979
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiIntegerControl)
|
|
879
980
|
},
|
|
880
981
|
{
|
|
881
982
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isBooleanControl),
|
|
882
|
-
renderer: (0,
|
|
983
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiBooleanControl)
|
|
984
|
+
},
|
|
985
|
+
{
|
|
986
|
+
// Multi-enum must outrank generic array renderer and string renderer.
|
|
987
|
+
tester: (0, import_core3.rankWith)(ENUM_RANK, isMultiEnumControl),
|
|
988
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiMultiEnumControl)
|
|
883
989
|
},
|
|
884
990
|
{
|
|
885
991
|
// Enum must outrank the generic string control, otherwise enums can render
|
|
886
992
|
// as freeform text inputs.
|
|
887
993
|
tester: (0, import_core3.rankWith)(ENUM_RANK, import_core3.isEnumControl),
|
|
888
|
-
renderer: (0,
|
|
994
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiEnumControl)
|
|
889
995
|
},
|
|
890
996
|
{
|
|
891
997
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isStringControl),
|
|
892
|
-
renderer: (0,
|
|
998
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiStringControl)
|
|
893
999
|
}
|
|
894
1000
|
];
|
|
895
1001
|
// Annotate the CommonJS export names for ESM import in node:
|