jsonforms-nuxt-ui-renderers 0.1.4 → 0.1.6
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 +280 -104
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +261 -81
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
// src/nuxtUiRenderers.ts
|
|
2
2
|
import {
|
|
3
|
+
and,
|
|
4
|
+
formatIs,
|
|
3
5
|
isBooleanControl,
|
|
4
6
|
isEnumControl,
|
|
7
|
+
isEnumSchema,
|
|
5
8
|
isIntegerControl,
|
|
6
9
|
isMultiLineControl,
|
|
7
10
|
isNumberControl,
|
|
8
11
|
isObjectControl,
|
|
9
12
|
isStringControl,
|
|
10
13
|
rankWith,
|
|
14
|
+
Resolve as Resolve2,
|
|
11
15
|
schemaTypeIs,
|
|
12
16
|
uiTypeIs
|
|
13
17
|
} from "@jsonforms/core";
|
|
@@ -459,18 +463,98 @@ var NuxtUiIntegerControl = defineComponent5({
|
|
|
459
463
|
}
|
|
460
464
|
});
|
|
461
465
|
|
|
462
|
-
// src/renderers/controls/
|
|
466
|
+
// src/renderers/controls/NuxtUiMultiEnumControl.ts
|
|
463
467
|
import { rendererProps as rendererProps6, useJsonFormsControl as useJsonFormsControl4 } from "@jsonforms/vue";
|
|
464
468
|
import { computed as computed7, defineComponent as defineComponent6, h as h6, resolveComponent as resolveComponent5 } from "vue";
|
|
465
|
-
|
|
466
|
-
|
|
469
|
+
function schemaEnumOptions2(schema) {
|
|
470
|
+
if (!schema) return [];
|
|
471
|
+
if (Array.isArray(schema.enum)) {
|
|
472
|
+
return schema.enum.map((v) => ({ label: String(v), value: v }));
|
|
473
|
+
}
|
|
474
|
+
const oneOf = schema.oneOf;
|
|
475
|
+
if (!Array.isArray(oneOf)) return [];
|
|
476
|
+
const out = [];
|
|
477
|
+
for (const entry of oneOf) {
|
|
478
|
+
if (typeof entry !== "object" || entry === null) continue;
|
|
479
|
+
const maybe = entry;
|
|
480
|
+
if (!("const" in maybe)) continue;
|
|
481
|
+
out.push({
|
|
482
|
+
value: maybe.const,
|
|
483
|
+
label: typeof maybe.title === "string" && maybe.title.trim() ? maybe.title : String(maybe.const)
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
return out;
|
|
487
|
+
}
|
|
488
|
+
function arrayItemsSchema(schema) {
|
|
489
|
+
if (!schema) return void 0;
|
|
490
|
+
const items = schema.items;
|
|
491
|
+
if (typeof items !== "object" || items === null) return void 0;
|
|
492
|
+
return items;
|
|
493
|
+
}
|
|
494
|
+
var NuxtUiMultiEnumControl = defineComponent6({
|
|
495
|
+
name: "NuxtUiMultiEnumControl",
|
|
467
496
|
props: rendererProps6(),
|
|
468
497
|
setup(props) {
|
|
469
498
|
const { control, handleChange } = useJsonFormsControl4(
|
|
470
499
|
props
|
|
471
500
|
);
|
|
472
501
|
const errorMessage = computed7(() => trimmedOrUndefined(control.value.errors));
|
|
473
|
-
const
|
|
502
|
+
const options = computed7(
|
|
503
|
+
() => schemaEnumOptions2(arrayItemsSchema(control.value.schema))
|
|
504
|
+
);
|
|
505
|
+
const selectedValues = computed7({
|
|
506
|
+
get: () => Array.isArray(control.value.data) ? control.value.data : [],
|
|
507
|
+
set: (v) => handleChange(control.value.path, v)
|
|
508
|
+
});
|
|
509
|
+
return () => {
|
|
510
|
+
if (!control.value.visible) return null;
|
|
511
|
+
const UFormField = resolveComponent5("UFormField");
|
|
512
|
+
const USelectMenu = resolveComponent5("USelectMenu");
|
|
513
|
+
return h6(
|
|
514
|
+
"div",
|
|
515
|
+
{},
|
|
516
|
+
h6(
|
|
517
|
+
UFormField,
|
|
518
|
+
{
|
|
519
|
+
label: control.value.label,
|
|
520
|
+
description: control.value.description,
|
|
521
|
+
required: control.value.required,
|
|
522
|
+
error: errorMessage.value
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
default: () => h6(USelectMenu, {
|
|
526
|
+
multiple: true,
|
|
527
|
+
modelValue: selectedValues.value,
|
|
528
|
+
items: options.value,
|
|
529
|
+
valueKey: "value",
|
|
530
|
+
labelKey: "label",
|
|
531
|
+
disabled: !control.value.enabled,
|
|
532
|
+
color: errorMessage.value ? "error" : void 0,
|
|
533
|
+
"aria-invalid": Boolean(errorMessage.value),
|
|
534
|
+
placeholder: "Select...",
|
|
535
|
+
"onUpdate:modelValue": (v) => {
|
|
536
|
+
selectedValues.value = Array.isArray(v) ? v : [];
|
|
537
|
+
}
|
|
538
|
+
})
|
|
539
|
+
}
|
|
540
|
+
)
|
|
541
|
+
);
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
});
|
|
545
|
+
|
|
546
|
+
// src/renderers/controls/NuxtUiNumberControl.ts
|
|
547
|
+
import { rendererProps as rendererProps7, useJsonFormsControl as useJsonFormsControl5 } from "@jsonforms/vue";
|
|
548
|
+
import { computed as computed8, defineComponent as defineComponent7, h as h7, resolveComponent as resolveComponent6 } from "vue";
|
|
549
|
+
var NuxtUiNumberControl = defineComponent7({
|
|
550
|
+
name: "NuxtUiNumberControl",
|
|
551
|
+
props: rendererProps7(),
|
|
552
|
+
setup(props) {
|
|
553
|
+
const { control, handleChange } = useJsonFormsControl5(
|
|
554
|
+
props
|
|
555
|
+
);
|
|
556
|
+
const errorMessage = computed8(() => trimmedOrUndefined(control.value.errors));
|
|
557
|
+
const modelValue = computed8(() => {
|
|
474
558
|
const v = control.value.data;
|
|
475
559
|
return v === null || v === void 0 ? "" : String(v);
|
|
476
560
|
});
|
|
@@ -485,12 +569,12 @@ var NuxtUiNumberControl = defineComponent6({
|
|
|
485
569
|
}
|
|
486
570
|
return () => {
|
|
487
571
|
if (!control.value.visible) return null;
|
|
488
|
-
const UFormField =
|
|
489
|
-
const UInput =
|
|
490
|
-
return
|
|
572
|
+
const UFormField = resolveComponent6("UFormField");
|
|
573
|
+
const UInput = resolveComponent6("UInput");
|
|
574
|
+
return h7(
|
|
491
575
|
"div",
|
|
492
576
|
{},
|
|
493
|
-
|
|
577
|
+
h7(
|
|
494
578
|
UFormField,
|
|
495
579
|
{
|
|
496
580
|
label: control.value.label,
|
|
@@ -499,7 +583,7 @@ var NuxtUiNumberControl = defineComponent6({
|
|
|
499
583
|
error: errorMessage.value
|
|
500
584
|
},
|
|
501
585
|
{
|
|
502
|
-
default: () =>
|
|
586
|
+
default: () => h7(UInput, {
|
|
503
587
|
type: "number",
|
|
504
588
|
inputmode: "decimal",
|
|
505
589
|
modelValue: modelValue.value,
|
|
@@ -515,30 +599,95 @@ var NuxtUiNumberControl = defineComponent6({
|
|
|
515
599
|
}
|
|
516
600
|
});
|
|
517
601
|
|
|
602
|
+
// src/renderers/controls/NuxtUiPasswordControl.ts
|
|
603
|
+
import { rendererProps as rendererProps8, useJsonFormsControl as useJsonFormsControl6 } from "@jsonforms/vue";
|
|
604
|
+
import { computed as computed9, defineComponent as defineComponent8, h as h8, ref, resolveComponent as resolveComponent7 } from "vue";
|
|
605
|
+
var NuxtUiPasswordControl = defineComponent8({
|
|
606
|
+
name: "NuxtUiPasswordControl",
|
|
607
|
+
props: rendererProps8(),
|
|
608
|
+
setup(props) {
|
|
609
|
+
const { control, handleChange } = useJsonFormsControl6(
|
|
610
|
+
props
|
|
611
|
+
);
|
|
612
|
+
const errorMessage = computed9(() => trimmedOrUndefined(control.value.errors));
|
|
613
|
+
const showPassword = ref(false);
|
|
614
|
+
const inputType = computed9(() => showPassword.value ? "text" : "password");
|
|
615
|
+
return () => {
|
|
616
|
+
if (!control.value.visible) return null;
|
|
617
|
+
const UFormField = resolveComponent7("UFormField");
|
|
618
|
+
const UInput = resolveComponent7("UInput");
|
|
619
|
+
const UButton = resolveComponent7("UButton");
|
|
620
|
+
return h8(
|
|
621
|
+
"div",
|
|
622
|
+
{},
|
|
623
|
+
h8(
|
|
624
|
+
UFormField,
|
|
625
|
+
{
|
|
626
|
+
label: control.value.label,
|
|
627
|
+
description: control.value.description,
|
|
628
|
+
required: control.value.required,
|
|
629
|
+
error: errorMessage.value
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
default: () => h8(
|
|
633
|
+
UInput,
|
|
634
|
+
{
|
|
635
|
+
modelValue: control.value.data ?? "",
|
|
636
|
+
class: "w-full",
|
|
637
|
+
type: inputType.value,
|
|
638
|
+
autocomplete: "current-password",
|
|
639
|
+
disabled: !control.value.enabled,
|
|
640
|
+
color: errorMessage.value ? "error" : void 0,
|
|
641
|
+
"aria-invalid": Boolean(errorMessage.value),
|
|
642
|
+
"onUpdate:modelValue": (v) => handleChange(control.value.path, v)
|
|
643
|
+
},
|
|
644
|
+
{
|
|
645
|
+
trailing: () => h8(UButton, {
|
|
646
|
+
type: "button",
|
|
647
|
+
color: "neutral",
|
|
648
|
+
variant: "ghost",
|
|
649
|
+
square: true,
|
|
650
|
+
icon: showPassword.value ? "i-heroicons-eye-slash" : "i-heroicons-eye",
|
|
651
|
+
"aria-pressed": showPassword.value,
|
|
652
|
+
"aria-label": showPassword.value ? "Hide password" : "Show password",
|
|
653
|
+
disabled: !control.value.enabled,
|
|
654
|
+
onClick: () => {
|
|
655
|
+
showPassword.value = !showPassword.value;
|
|
656
|
+
}
|
|
657
|
+
})
|
|
658
|
+
}
|
|
659
|
+
)
|
|
660
|
+
}
|
|
661
|
+
)
|
|
662
|
+
);
|
|
663
|
+
};
|
|
664
|
+
}
|
|
665
|
+
});
|
|
666
|
+
|
|
518
667
|
// src/renderers/controls/NuxtUiStringControl.ts
|
|
519
|
-
import { rendererProps as
|
|
668
|
+
import { rendererProps as rendererProps9, useJsonFormsControl as useJsonFormsControl7 } from "@jsonforms/vue";
|
|
520
669
|
import {
|
|
521
|
-
computed as
|
|
522
|
-
defineComponent as
|
|
523
|
-
h as
|
|
524
|
-
resolveComponent as
|
|
670
|
+
computed as computed10,
|
|
671
|
+
defineComponent as defineComponent9,
|
|
672
|
+
h as h9,
|
|
673
|
+
resolveComponent as resolveComponent8
|
|
525
674
|
} from "vue";
|
|
526
|
-
var NuxtUiStringControl =
|
|
675
|
+
var NuxtUiStringControl = defineComponent9({
|
|
527
676
|
name: "NuxtUiStringControl",
|
|
528
|
-
props:
|
|
677
|
+
props: rendererProps9(),
|
|
529
678
|
setup(props) {
|
|
530
|
-
const { control, handleChange } =
|
|
679
|
+
const { control, handleChange } = useJsonFormsControl7(
|
|
531
680
|
props
|
|
532
681
|
);
|
|
533
|
-
const errorMessage =
|
|
682
|
+
const errorMessage = computed10(() => trimmedOrUndefined(control.value.errors));
|
|
534
683
|
return () => {
|
|
535
684
|
if (!control.value.visible) return null;
|
|
536
|
-
const UFormField =
|
|
537
|
-
const UInput =
|
|
538
|
-
return
|
|
685
|
+
const UFormField = resolveComponent8("UFormField");
|
|
686
|
+
const UInput = resolveComponent8("UInput");
|
|
687
|
+
return h9(
|
|
539
688
|
"div",
|
|
540
689
|
{},
|
|
541
|
-
|
|
690
|
+
h9(
|
|
542
691
|
UFormField,
|
|
543
692
|
{
|
|
544
693
|
label: control.value.label,
|
|
@@ -547,7 +696,7 @@ var NuxtUiStringControl = defineComponent7({
|
|
|
547
696
|
error: errorMessage.value
|
|
548
697
|
},
|
|
549
698
|
{
|
|
550
|
-
default: () =>
|
|
699
|
+
default: () => h9(UInput, {
|
|
551
700
|
modelValue: control.value.data ?? "",
|
|
552
701
|
class: "w-full",
|
|
553
702
|
disabled: !control.value.enabled,
|
|
@@ -563,24 +712,24 @@ var NuxtUiStringControl = defineComponent7({
|
|
|
563
712
|
});
|
|
564
713
|
|
|
565
714
|
// src/renderers/controls/NuxtUiTextareaControl.ts
|
|
566
|
-
import { rendererProps as
|
|
567
|
-
import { computed as
|
|
568
|
-
var NuxtUiTextareaControl =
|
|
715
|
+
import { rendererProps as rendererProps10, useJsonFormsControl as useJsonFormsControl8 } from "@jsonforms/vue";
|
|
716
|
+
import { computed as computed11, defineComponent as defineComponent10, h as h10, resolveComponent as resolveComponent9 } from "vue";
|
|
717
|
+
var NuxtUiTextareaControl = defineComponent10({
|
|
569
718
|
name: "NuxtUiTextareaControl",
|
|
570
|
-
props:
|
|
719
|
+
props: rendererProps10(),
|
|
571
720
|
setup(props) {
|
|
572
|
-
const { control, handleChange } =
|
|
721
|
+
const { control, handleChange } = useJsonFormsControl8(
|
|
573
722
|
props
|
|
574
723
|
);
|
|
575
|
-
const errorMessage =
|
|
724
|
+
const errorMessage = computed11(() => trimmedOrUndefined(control.value.errors));
|
|
576
725
|
return () => {
|
|
577
726
|
if (!control.value.visible) return null;
|
|
578
|
-
const UFormField =
|
|
579
|
-
const UTextarea =
|
|
580
|
-
return
|
|
727
|
+
const UFormField = resolveComponent9("UFormField");
|
|
728
|
+
const UTextarea = resolveComponent9("UTextarea");
|
|
729
|
+
return h10(
|
|
581
730
|
"div",
|
|
582
731
|
{},
|
|
583
|
-
|
|
732
|
+
h10(
|
|
584
733
|
UFormField,
|
|
585
734
|
{
|
|
586
735
|
label: control.value.label,
|
|
@@ -589,7 +738,7 @@ var NuxtUiTextareaControl = defineComponent8({
|
|
|
589
738
|
error: errorMessage.value
|
|
590
739
|
},
|
|
591
740
|
{
|
|
592
|
-
default: () =>
|
|
741
|
+
default: () => h10(UTextarea, {
|
|
593
742
|
modelValue: control.value.data ?? "",
|
|
594
743
|
class: "w-full",
|
|
595
744
|
disabled: !control.value.enabled,
|
|
@@ -606,37 +755,37 @@ var NuxtUiTextareaControl = defineComponent8({
|
|
|
606
755
|
});
|
|
607
756
|
|
|
608
757
|
// src/renderers/layouts/NuxtUiCategorizationRenderer.ts
|
|
609
|
-
import { DispatchRenderer as DispatchRenderer3, rendererProps as
|
|
610
|
-
import { defineComponent as
|
|
611
|
-
var NuxtUiCategorizationRenderer =
|
|
758
|
+
import { DispatchRenderer as DispatchRenderer3, rendererProps as rendererProps11, useJsonFormsCategorization } from "@jsonforms/vue";
|
|
759
|
+
import { defineComponent as defineComponent11, h as h11 } from "vue";
|
|
760
|
+
var NuxtUiCategorizationRenderer = defineComponent11({
|
|
612
761
|
name: "NuxtUiCategorizationRenderer",
|
|
613
762
|
components: { DispatchRenderer: DispatchRenderer3 },
|
|
614
|
-
props:
|
|
763
|
+
props: rendererProps11(),
|
|
615
764
|
setup(props) {
|
|
616
765
|
const { layout, categories } = useJsonFormsCategorization(
|
|
617
766
|
props
|
|
618
767
|
);
|
|
619
768
|
return () => {
|
|
620
769
|
if (!layout.value.visible) return null;
|
|
621
|
-
return
|
|
770
|
+
return h11(
|
|
622
771
|
"div",
|
|
623
772
|
{ class: "flex flex-col gap-6" },
|
|
624
773
|
categories.map((categoryRef, catIndex) => {
|
|
625
774
|
const category = categoryRef.value;
|
|
626
775
|
const elements = category.uischema.elements ?? [];
|
|
627
|
-
return
|
|
776
|
+
return h11(
|
|
628
777
|
"div",
|
|
629
778
|
{ key: `${layout.value.path}-cat-${catIndex}`, class: "flex flex-col gap-3" },
|
|
630
779
|
[
|
|
631
|
-
category.label ?
|
|
632
|
-
|
|
780
|
+
category.label ? h11("div", { class: "text-sm font-semibold" }, category.label) : null,
|
|
781
|
+
h11(
|
|
633
782
|
"div",
|
|
634
783
|
{ class: "flex flex-col gap-3" },
|
|
635
784
|
elements.map(
|
|
636
|
-
(element, index) =>
|
|
785
|
+
(element, index) => h11(
|
|
637
786
|
"div",
|
|
638
787
|
{ key: `${category.path}-${index}` },
|
|
639
|
-
|
|
788
|
+
h11(DispatchRenderer3, {
|
|
640
789
|
schema: category.schema,
|
|
641
790
|
uischema: element,
|
|
642
791
|
path: category.path,
|
|
@@ -656,12 +805,12 @@ var NuxtUiCategorizationRenderer = defineComponent9({
|
|
|
656
805
|
});
|
|
657
806
|
|
|
658
807
|
// src/renderers/layouts/NuxtUiCategoryRenderer.ts
|
|
659
|
-
import { DispatchRenderer as DispatchRenderer4, rendererProps as
|
|
660
|
-
import { defineComponent as
|
|
661
|
-
var NuxtUiCategoryRenderer =
|
|
808
|
+
import { DispatchRenderer as DispatchRenderer4, rendererProps as rendererProps12, useJsonFormsLayout } from "@jsonforms/vue";
|
|
809
|
+
import { defineComponent as defineComponent12, h as h12 } from "vue";
|
|
810
|
+
var NuxtUiCategoryRenderer = defineComponent12({
|
|
662
811
|
name: "NuxtUiCategoryRenderer",
|
|
663
812
|
components: { DispatchRenderer: DispatchRenderer4 },
|
|
664
|
-
props:
|
|
813
|
+
props: rendererProps12(),
|
|
665
814
|
setup(props) {
|
|
666
815
|
const { layout } = useJsonFormsLayout(
|
|
667
816
|
props
|
|
@@ -669,16 +818,16 @@ var NuxtUiCategoryRenderer = defineComponent10({
|
|
|
669
818
|
return () => {
|
|
670
819
|
if (!layout.value.visible) return null;
|
|
671
820
|
const elements = layout.value.uischema.elements ?? [];
|
|
672
|
-
return
|
|
673
|
-
layout.value.label ?
|
|
674
|
-
|
|
821
|
+
return h12("div", { class: "flex flex-col gap-3" }, [
|
|
822
|
+
layout.value.label ? h12("div", { class: "text-sm font-semibold" }, layout.value.label) : null,
|
|
823
|
+
h12(
|
|
675
824
|
"div",
|
|
676
825
|
{ class: "flex flex-col gap-3" },
|
|
677
826
|
elements.map(
|
|
678
|
-
(element, index) =>
|
|
827
|
+
(element, index) => h12(
|
|
679
828
|
"div",
|
|
680
829
|
{ key: `${layout.value.path}-${index}` },
|
|
681
|
-
|
|
830
|
+
h12(DispatchRenderer4, {
|
|
682
831
|
schema: layout.value.schema,
|
|
683
832
|
uischema: element,
|
|
684
833
|
path: layout.value.path,
|
|
@@ -695,12 +844,12 @@ var NuxtUiCategoryRenderer = defineComponent10({
|
|
|
695
844
|
});
|
|
696
845
|
|
|
697
846
|
// src/renderers/layouts/NuxtUiGroupRenderer.ts
|
|
698
|
-
import { DispatchRenderer as DispatchRenderer5, rendererProps as
|
|
699
|
-
import { defineComponent as
|
|
700
|
-
var NuxtUiGroupRenderer =
|
|
847
|
+
import { DispatchRenderer as DispatchRenderer5, rendererProps as rendererProps13, useJsonFormsLayout as useJsonFormsLayout2 } from "@jsonforms/vue";
|
|
848
|
+
import { defineComponent as defineComponent13, h as h13 } from "vue";
|
|
849
|
+
var NuxtUiGroupRenderer = defineComponent13({
|
|
701
850
|
name: "NuxtUiGroupRenderer",
|
|
702
851
|
components: { DispatchRenderer: DispatchRenderer5 },
|
|
703
|
-
props:
|
|
852
|
+
props: rendererProps13(),
|
|
704
853
|
setup(props) {
|
|
705
854
|
const { layout } = useJsonFormsLayout2(
|
|
706
855
|
props
|
|
@@ -708,16 +857,16 @@ var NuxtUiGroupRenderer = defineComponent11({
|
|
|
708
857
|
return () => {
|
|
709
858
|
if (!layout.value.visible) return null;
|
|
710
859
|
const elements = layout.value.uischema.elements ?? [];
|
|
711
|
-
return
|
|
712
|
-
layout.value.label ?
|
|
713
|
-
|
|
860
|
+
return h13("div", { class: "rounded border p-3" }, [
|
|
861
|
+
layout.value.label ? h13("div", { class: "mb-3 text-sm font-semibold" }, layout.value.label) : null,
|
|
862
|
+
h13(
|
|
714
863
|
"div",
|
|
715
864
|
{ class: "flex flex-col gap-3" },
|
|
716
865
|
elements.map(
|
|
717
|
-
(element, index) =>
|
|
866
|
+
(element, index) => h13(
|
|
718
867
|
"div",
|
|
719
868
|
{ key: `${layout.value.path}-${index}` },
|
|
720
|
-
|
|
869
|
+
h13(DispatchRenderer5, {
|
|
721
870
|
schema: layout.value.schema,
|
|
722
871
|
uischema: element,
|
|
723
872
|
path: layout.value.path,
|
|
@@ -734,12 +883,12 @@ var NuxtUiGroupRenderer = defineComponent11({
|
|
|
734
883
|
});
|
|
735
884
|
|
|
736
885
|
// src/renderers/layouts/NuxtUiHorizontalLayoutRenderer.ts
|
|
737
|
-
import { DispatchRenderer as DispatchRenderer6, rendererProps as
|
|
738
|
-
import { defineComponent as
|
|
739
|
-
var NuxtUiHorizontalLayoutRenderer =
|
|
886
|
+
import { DispatchRenderer as DispatchRenderer6, rendererProps as rendererProps14, useJsonFormsLayout as useJsonFormsLayout3 } from "@jsonforms/vue";
|
|
887
|
+
import { defineComponent as defineComponent14, h as h14 } from "vue";
|
|
888
|
+
var NuxtUiHorizontalLayoutRenderer = defineComponent14({
|
|
740
889
|
name: "NuxtUiHorizontalLayoutRenderer",
|
|
741
890
|
components: { DispatchRenderer: DispatchRenderer6 },
|
|
742
|
-
props:
|
|
891
|
+
props: rendererProps14(),
|
|
743
892
|
setup(props) {
|
|
744
893
|
const { layout } = useJsonFormsLayout3(
|
|
745
894
|
props
|
|
@@ -747,14 +896,14 @@ var NuxtUiHorizontalLayoutRenderer = defineComponent12({
|
|
|
747
896
|
return () => {
|
|
748
897
|
if (!layout.value.visible) return null;
|
|
749
898
|
const elements = layout.value.uischema.elements ?? [];
|
|
750
|
-
return
|
|
899
|
+
return h14(
|
|
751
900
|
"div",
|
|
752
901
|
{ class: "flex flex-col gap-3 md:flex-row md:flex-wrap" },
|
|
753
902
|
elements.map(
|
|
754
|
-
(element, index) =>
|
|
903
|
+
(element, index) => h14(
|
|
755
904
|
"div",
|
|
756
905
|
{ key: `${layout.value.path}-${index}`, class: "min-w-0 flex-1" },
|
|
757
|
-
|
|
906
|
+
h14(DispatchRenderer6, {
|
|
758
907
|
schema: layout.value.schema,
|
|
759
908
|
uischema: element,
|
|
760
909
|
path: layout.value.path,
|
|
@@ -770,18 +919,18 @@ var NuxtUiHorizontalLayoutRenderer = defineComponent12({
|
|
|
770
919
|
});
|
|
771
920
|
|
|
772
921
|
// src/renderers/layouts/NuxtUiLabelRenderer.ts
|
|
773
|
-
import { rendererProps as
|
|
774
|
-
import { defineComponent as
|
|
775
|
-
var NuxtUiLabelRenderer =
|
|
922
|
+
import { rendererProps as rendererProps15, useJsonFormsLabel } from "@jsonforms/vue";
|
|
923
|
+
import { defineComponent as defineComponent15, h as h15 } from "vue";
|
|
924
|
+
var NuxtUiLabelRenderer = defineComponent15({
|
|
776
925
|
name: "NuxtUiLabelRenderer",
|
|
777
|
-
props:
|
|
926
|
+
props: rendererProps15(),
|
|
778
927
|
setup(props) {
|
|
779
928
|
const { label } = useJsonFormsLabel(
|
|
780
929
|
props
|
|
781
930
|
);
|
|
782
931
|
return () => {
|
|
783
932
|
if (!label.value.visible) return null;
|
|
784
|
-
return
|
|
933
|
+
return h15(
|
|
785
934
|
"div",
|
|
786
935
|
{ class: "text-sm text-gray-600 dark:text-gray-300" },
|
|
787
936
|
label.value.text
|
|
@@ -791,12 +940,12 @@ var NuxtUiLabelRenderer = defineComponent13({
|
|
|
791
940
|
});
|
|
792
941
|
|
|
793
942
|
// src/renderers/layouts/NuxtUiVerticalLayoutRenderer.ts
|
|
794
|
-
import { DispatchRenderer as DispatchRenderer7, rendererProps as
|
|
795
|
-
import { defineComponent as
|
|
796
|
-
var NuxtUiVerticalLayoutRenderer =
|
|
943
|
+
import { DispatchRenderer as DispatchRenderer7, rendererProps as rendererProps16, useJsonFormsLayout as useJsonFormsLayout4 } from "@jsonforms/vue";
|
|
944
|
+
import { defineComponent as defineComponent16, h as h16 } from "vue";
|
|
945
|
+
var NuxtUiVerticalLayoutRenderer = defineComponent16({
|
|
797
946
|
name: "NuxtUiVerticalLayoutRenderer",
|
|
798
947
|
components: { DispatchRenderer: DispatchRenderer7 },
|
|
799
|
-
props:
|
|
948
|
+
props: rendererProps16(),
|
|
800
949
|
setup(props) {
|
|
801
950
|
const { layout } = useJsonFormsLayout4(
|
|
802
951
|
props
|
|
@@ -804,14 +953,14 @@ var NuxtUiVerticalLayoutRenderer = defineComponent14({
|
|
|
804
953
|
return () => {
|
|
805
954
|
if (!layout.value.visible) return null;
|
|
806
955
|
const elements = layout.value.uischema.elements ?? [];
|
|
807
|
-
return
|
|
956
|
+
return h16(
|
|
808
957
|
"div",
|
|
809
958
|
{ class: "flex flex-col gap-3" },
|
|
810
959
|
elements.map(
|
|
811
|
-
(element, index) =>
|
|
960
|
+
(element, index) => h16(
|
|
812
961
|
"div",
|
|
813
962
|
{ key: `${layout.value.path}-${index}` },
|
|
814
|
-
|
|
963
|
+
h16(DispatchRenderer7, {
|
|
815
964
|
schema: layout.value.schema,
|
|
816
965
|
uischema: element,
|
|
817
966
|
path: layout.value.path,
|
|
@@ -829,6 +978,28 @@ var NuxtUiVerticalLayoutRenderer = defineComponent14({
|
|
|
829
978
|
// src/nuxtUiRenderers.ts
|
|
830
979
|
var RANK = 10;
|
|
831
980
|
var ENUM_RANK = RANK + 1;
|
|
981
|
+
var PASSWORD_RANK = ENUM_RANK + 1;
|
|
982
|
+
var isMultiEnumControl = (uischema, schema, context) => {
|
|
983
|
+
if (!uiTypeIs("Control")(uischema, schema, context)) {
|
|
984
|
+
return false;
|
|
985
|
+
}
|
|
986
|
+
const scope = uischema?.scope;
|
|
987
|
+
if (typeof scope !== "string") return false;
|
|
988
|
+
const rootSchema = context?.rootSchema ?? schema;
|
|
989
|
+
let resolved;
|
|
990
|
+
try {
|
|
991
|
+
resolved = Resolve2.schema(schema, scope, rootSchema);
|
|
992
|
+
} catch {
|
|
993
|
+
return false;
|
|
994
|
+
}
|
|
995
|
+
if (resolved?.type !== "array") return false;
|
|
996
|
+
const items = resolved?.items;
|
|
997
|
+
if (!items) return false;
|
|
998
|
+
if (Array.isArray(items)) return false;
|
|
999
|
+
if (typeof items !== "object" || items === null) return false;
|
|
1000
|
+
const resolvedItems = "$ref" in items && typeof items.$ref === "string" ? Resolve2.schema(rootSchema, items.$ref, rootSchema) : items;
|
|
1001
|
+
return isEnumSchema(resolvedItems);
|
|
1002
|
+
};
|
|
832
1003
|
var nuxtUiRenderers = [
|
|
833
1004
|
// Layouts
|
|
834
1005
|
{
|
|
@@ -881,12 +1052,21 @@ var nuxtUiRenderers = [
|
|
|
881
1052
|
tester: rankWith(RANK, isBooleanControl),
|
|
882
1053
|
renderer: markRaw(NuxtUiBooleanControl)
|
|
883
1054
|
},
|
|
1055
|
+
{
|
|
1056
|
+
// Multi-enum must outrank generic array renderer and string renderer.
|
|
1057
|
+
tester: rankWith(ENUM_RANK, isMultiEnumControl),
|
|
1058
|
+
renderer: markRaw(NuxtUiMultiEnumControl)
|
|
1059
|
+
},
|
|
884
1060
|
{
|
|
885
1061
|
// Enum must outrank the generic string control, otherwise enums can render
|
|
886
1062
|
// as freeform text inputs.
|
|
887
1063
|
tester: rankWith(ENUM_RANK, isEnumControl),
|
|
888
1064
|
renderer: markRaw(NuxtUiEnumControl)
|
|
889
1065
|
},
|
|
1066
|
+
{
|
|
1067
|
+
tester: rankWith(PASSWORD_RANK, and(isStringControl, formatIs("password"))),
|
|
1068
|
+
renderer: markRaw(NuxtUiPasswordControl)
|
|
1069
|
+
},
|
|
890
1070
|
{
|
|
891
1071
|
tester: rankWith(RANK, isStringControl),
|
|
892
1072
|
renderer: markRaw(NuxtUiStringControl)
|