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.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,
|
|
@@ -828,65 +908,94 @@ var NuxtUiVerticalLayoutRenderer = (0, import_vue29.defineComponent)({
|
|
|
828
908
|
|
|
829
909
|
// src/nuxtUiRenderers.ts
|
|
830
910
|
var RANK = 10;
|
|
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
|
+
};
|
|
831
933
|
var nuxtUiRenderers = [
|
|
832
934
|
// Layouts
|
|
833
935
|
{
|
|
834
936
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("VerticalLayout")),
|
|
835
|
-
renderer: (0,
|
|
937
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiVerticalLayoutRenderer)
|
|
836
938
|
},
|
|
837
939
|
{
|
|
838
940
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("HorizontalLayout")),
|
|
839
|
-
renderer: (0,
|
|
941
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiHorizontalLayoutRenderer)
|
|
840
942
|
},
|
|
841
943
|
{
|
|
842
944
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Group")),
|
|
843
|
-
renderer: (0,
|
|
945
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiGroupRenderer)
|
|
844
946
|
},
|
|
845
947
|
{
|
|
846
948
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Categorization")),
|
|
847
|
-
renderer: (0,
|
|
949
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiCategorizationRenderer)
|
|
848
950
|
},
|
|
849
951
|
{
|
|
850
952
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Category")),
|
|
851
|
-
renderer: (0,
|
|
953
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiCategoryRenderer)
|
|
852
954
|
},
|
|
853
955
|
{
|
|
854
956
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Label")),
|
|
855
|
-
renderer: (0,
|
|
957
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiLabelRenderer)
|
|
856
958
|
},
|
|
857
959
|
// Complex schemas
|
|
858
960
|
{
|
|
859
961
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.schemaTypeIs)("array")),
|
|
860
|
-
renderer: (0,
|
|
962
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiArrayListRenderer)
|
|
861
963
|
},
|
|
862
964
|
{
|
|
863
965
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isObjectControl),
|
|
864
|
-
renderer: (0,
|
|
966
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiObjectRenderer)
|
|
865
967
|
},
|
|
866
968
|
// Primitive controls
|
|
867
969
|
{
|
|
868
970
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isMultiLineControl),
|
|
869
|
-
renderer: (0,
|
|
870
|
-
},
|
|
871
|
-
{
|
|
872
|
-
tester: (0, import_core3.rankWith)(RANK, import_core3.isStringControl),
|
|
873
|
-
renderer: (0, import_vue30.markRaw)(NuxtUiStringControl)
|
|
971
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiTextareaControl)
|
|
874
972
|
},
|
|
875
973
|
{
|
|
876
974
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isNumberControl),
|
|
877
|
-
renderer: (0,
|
|
975
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiNumberControl)
|
|
878
976
|
},
|
|
879
977
|
{
|
|
880
978
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isIntegerControl),
|
|
881
|
-
renderer: (0,
|
|
979
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiIntegerControl)
|
|
882
980
|
},
|
|
883
981
|
{
|
|
884
982
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isBooleanControl),
|
|
885
|
-
renderer: (0,
|
|
983
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiBooleanControl)
|
|
886
984
|
},
|
|
887
985
|
{
|
|
888
|
-
|
|
889
|
-
|
|
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)
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
// Enum must outrank the generic string control, otherwise enums can render
|
|
992
|
+
// as freeform text inputs.
|
|
993
|
+
tester: (0, import_core3.rankWith)(ENUM_RANK, import_core3.isEnumControl),
|
|
994
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiEnumControl)
|
|
995
|
+
},
|
|
996
|
+
{
|
|
997
|
+
tester: (0, import_core3.rankWith)(RANK, import_core3.isStringControl),
|
|
998
|
+
renderer: (0, import_vue32.markRaw)(NuxtUiStringControl)
|
|
890
999
|
}
|
|
891
1000
|
];
|
|
892
1001
|
// Annotate the CommonJS export names for ESM import in node:
|