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.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_vue34 = 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,
|
|
@@ -520,25 +600,90 @@ var NuxtUiNumberControl = (0, import_vue13.defineComponent)({
|
|
|
520
600
|
}
|
|
521
601
|
});
|
|
522
602
|
|
|
603
|
+
// src/renderers/controls/NuxtUiPasswordControl.ts
|
|
604
|
+
var import_vue16 = require("@jsonforms/vue");
|
|
605
|
+
var import_vue17 = require("vue");
|
|
606
|
+
var NuxtUiPasswordControl = (0, import_vue17.defineComponent)({
|
|
607
|
+
name: "NuxtUiPasswordControl",
|
|
608
|
+
props: (0, import_vue16.rendererProps)(),
|
|
609
|
+
setup(props) {
|
|
610
|
+
const { control, handleChange } = (0, import_vue16.useJsonFormsControl)(
|
|
611
|
+
props
|
|
612
|
+
);
|
|
613
|
+
const errorMessage = (0, import_vue17.computed)(() => trimmedOrUndefined(control.value.errors));
|
|
614
|
+
const showPassword = (0, import_vue17.ref)(false);
|
|
615
|
+
const inputType = (0, import_vue17.computed)(() => showPassword.value ? "text" : "password");
|
|
616
|
+
return () => {
|
|
617
|
+
if (!control.value.visible) return null;
|
|
618
|
+
const UFormField = (0, import_vue17.resolveComponent)("UFormField");
|
|
619
|
+
const UInput = (0, import_vue17.resolveComponent)("UInput");
|
|
620
|
+
const UButton = (0, import_vue17.resolveComponent)("UButton");
|
|
621
|
+
return (0, import_vue17.h)(
|
|
622
|
+
"div",
|
|
623
|
+
{},
|
|
624
|
+
(0, import_vue17.h)(
|
|
625
|
+
UFormField,
|
|
626
|
+
{
|
|
627
|
+
label: control.value.label,
|
|
628
|
+
description: control.value.description,
|
|
629
|
+
required: control.value.required,
|
|
630
|
+
error: errorMessage.value
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
default: () => (0, import_vue17.h)(
|
|
634
|
+
UInput,
|
|
635
|
+
{
|
|
636
|
+
modelValue: control.value.data ?? "",
|
|
637
|
+
class: "w-full",
|
|
638
|
+
type: inputType.value,
|
|
639
|
+
autocomplete: "current-password",
|
|
640
|
+
disabled: !control.value.enabled,
|
|
641
|
+
color: errorMessage.value ? "error" : void 0,
|
|
642
|
+
"aria-invalid": Boolean(errorMessage.value),
|
|
643
|
+
"onUpdate:modelValue": (v) => handleChange(control.value.path, v)
|
|
644
|
+
},
|
|
645
|
+
{
|
|
646
|
+
trailing: () => (0, import_vue17.h)(UButton, {
|
|
647
|
+
type: "button",
|
|
648
|
+
color: "neutral",
|
|
649
|
+
variant: "ghost",
|
|
650
|
+
square: true,
|
|
651
|
+
icon: showPassword.value ? "i-heroicons-eye-slash" : "i-heroicons-eye",
|
|
652
|
+
"aria-pressed": showPassword.value,
|
|
653
|
+
"aria-label": showPassword.value ? "Hide password" : "Show password",
|
|
654
|
+
disabled: !control.value.enabled,
|
|
655
|
+
onClick: () => {
|
|
656
|
+
showPassword.value = !showPassword.value;
|
|
657
|
+
}
|
|
658
|
+
})
|
|
659
|
+
}
|
|
660
|
+
)
|
|
661
|
+
}
|
|
662
|
+
)
|
|
663
|
+
);
|
|
664
|
+
};
|
|
665
|
+
}
|
|
666
|
+
});
|
|
667
|
+
|
|
523
668
|
// src/renderers/controls/NuxtUiStringControl.ts
|
|
524
|
-
var
|
|
525
|
-
var
|
|
526
|
-
var NuxtUiStringControl = (0,
|
|
669
|
+
var import_vue18 = require("@jsonforms/vue");
|
|
670
|
+
var import_vue19 = require("vue");
|
|
671
|
+
var NuxtUiStringControl = (0, import_vue19.defineComponent)({
|
|
527
672
|
name: "NuxtUiStringControl",
|
|
528
|
-
props: (0,
|
|
673
|
+
props: (0, import_vue18.rendererProps)(),
|
|
529
674
|
setup(props) {
|
|
530
|
-
const { control, handleChange } = (0,
|
|
675
|
+
const { control, handleChange } = (0, import_vue18.useJsonFormsControl)(
|
|
531
676
|
props
|
|
532
677
|
);
|
|
533
|
-
const errorMessage = (0,
|
|
678
|
+
const errorMessage = (0, import_vue19.computed)(() => trimmedOrUndefined(control.value.errors));
|
|
534
679
|
return () => {
|
|
535
680
|
if (!control.value.visible) return null;
|
|
536
|
-
const UFormField = (0,
|
|
537
|
-
const UInput = (0,
|
|
538
|
-
return (0,
|
|
681
|
+
const UFormField = (0, import_vue19.resolveComponent)("UFormField");
|
|
682
|
+
const UInput = (0, import_vue19.resolveComponent)("UInput");
|
|
683
|
+
return (0, import_vue19.h)(
|
|
539
684
|
"div",
|
|
540
685
|
{},
|
|
541
|
-
(0,
|
|
686
|
+
(0, import_vue19.h)(
|
|
542
687
|
UFormField,
|
|
543
688
|
{
|
|
544
689
|
label: control.value.label,
|
|
@@ -547,7 +692,7 @@ var NuxtUiStringControl = (0, import_vue15.defineComponent)({
|
|
|
547
692
|
error: errorMessage.value
|
|
548
693
|
},
|
|
549
694
|
{
|
|
550
|
-
default: () => (0,
|
|
695
|
+
default: () => (0, import_vue19.h)(UInput, {
|
|
551
696
|
modelValue: control.value.data ?? "",
|
|
552
697
|
class: "w-full",
|
|
553
698
|
disabled: !control.value.enabled,
|
|
@@ -563,24 +708,24 @@ var NuxtUiStringControl = (0, import_vue15.defineComponent)({
|
|
|
563
708
|
});
|
|
564
709
|
|
|
565
710
|
// src/renderers/controls/NuxtUiTextareaControl.ts
|
|
566
|
-
var
|
|
567
|
-
var
|
|
568
|
-
var NuxtUiTextareaControl = (0,
|
|
711
|
+
var import_vue20 = require("@jsonforms/vue");
|
|
712
|
+
var import_vue21 = require("vue");
|
|
713
|
+
var NuxtUiTextareaControl = (0, import_vue21.defineComponent)({
|
|
569
714
|
name: "NuxtUiTextareaControl",
|
|
570
|
-
props: (0,
|
|
715
|
+
props: (0, import_vue20.rendererProps)(),
|
|
571
716
|
setup(props) {
|
|
572
|
-
const { control, handleChange } = (0,
|
|
717
|
+
const { control, handleChange } = (0, import_vue20.useJsonFormsControl)(
|
|
573
718
|
props
|
|
574
719
|
);
|
|
575
|
-
const errorMessage = (0,
|
|
720
|
+
const errorMessage = (0, import_vue21.computed)(() => trimmedOrUndefined(control.value.errors));
|
|
576
721
|
return () => {
|
|
577
722
|
if (!control.value.visible) return null;
|
|
578
|
-
const UFormField = (0,
|
|
579
|
-
const UTextarea = (0,
|
|
580
|
-
return (0,
|
|
723
|
+
const UFormField = (0, import_vue21.resolveComponent)("UFormField");
|
|
724
|
+
const UTextarea = (0, import_vue21.resolveComponent)("UTextarea");
|
|
725
|
+
return (0, import_vue21.h)(
|
|
581
726
|
"div",
|
|
582
727
|
{},
|
|
583
|
-
(0,
|
|
728
|
+
(0, import_vue21.h)(
|
|
584
729
|
UFormField,
|
|
585
730
|
{
|
|
586
731
|
label: control.value.label,
|
|
@@ -589,7 +734,7 @@ var NuxtUiTextareaControl = (0, import_vue17.defineComponent)({
|
|
|
589
734
|
error: errorMessage.value
|
|
590
735
|
},
|
|
591
736
|
{
|
|
592
|
-
default: () => (0,
|
|
737
|
+
default: () => (0, import_vue21.h)(UTextarea, {
|
|
593
738
|
modelValue: control.value.data ?? "",
|
|
594
739
|
class: "w-full",
|
|
595
740
|
disabled: !control.value.enabled,
|
|
@@ -606,37 +751,37 @@ var NuxtUiTextareaControl = (0, import_vue17.defineComponent)({
|
|
|
606
751
|
});
|
|
607
752
|
|
|
608
753
|
// src/renderers/layouts/NuxtUiCategorizationRenderer.ts
|
|
609
|
-
var
|
|
610
|
-
var
|
|
611
|
-
var NuxtUiCategorizationRenderer = (0,
|
|
754
|
+
var import_vue22 = require("@jsonforms/vue");
|
|
755
|
+
var import_vue23 = require("vue");
|
|
756
|
+
var NuxtUiCategorizationRenderer = (0, import_vue23.defineComponent)({
|
|
612
757
|
name: "NuxtUiCategorizationRenderer",
|
|
613
|
-
components: { DispatchRenderer:
|
|
614
|
-
props: (0,
|
|
758
|
+
components: { DispatchRenderer: import_vue22.DispatchRenderer },
|
|
759
|
+
props: (0, import_vue22.rendererProps)(),
|
|
615
760
|
setup(props) {
|
|
616
|
-
const { layout, categories } = (0,
|
|
761
|
+
const { layout, categories } = (0, import_vue22.useJsonFormsCategorization)(
|
|
617
762
|
props
|
|
618
763
|
);
|
|
619
764
|
return () => {
|
|
620
765
|
if (!layout.value.visible) return null;
|
|
621
|
-
return (0,
|
|
766
|
+
return (0, import_vue23.h)(
|
|
622
767
|
"div",
|
|
623
768
|
{ class: "flex flex-col gap-6" },
|
|
624
769
|
categories.map((categoryRef, catIndex) => {
|
|
625
770
|
const category = categoryRef.value;
|
|
626
771
|
const elements = category.uischema.elements ?? [];
|
|
627
|
-
return (0,
|
|
772
|
+
return (0, import_vue23.h)(
|
|
628
773
|
"div",
|
|
629
774
|
{ key: `${layout.value.path}-cat-${catIndex}`, class: "flex flex-col gap-3" },
|
|
630
775
|
[
|
|
631
|
-
category.label ? (0,
|
|
632
|
-
(0,
|
|
776
|
+
category.label ? (0, import_vue23.h)("div", { class: "text-sm font-semibold" }, category.label) : null,
|
|
777
|
+
(0, import_vue23.h)(
|
|
633
778
|
"div",
|
|
634
779
|
{ class: "flex flex-col gap-3" },
|
|
635
780
|
elements.map(
|
|
636
|
-
(element, index) => (0,
|
|
781
|
+
(element, index) => (0, import_vue23.h)(
|
|
637
782
|
"div",
|
|
638
783
|
{ key: `${category.path}-${index}` },
|
|
639
|
-
(0,
|
|
784
|
+
(0, import_vue23.h)(import_vue22.DispatchRenderer, {
|
|
640
785
|
schema: category.schema,
|
|
641
786
|
uischema: element,
|
|
642
787
|
path: category.path,
|
|
@@ -656,29 +801,29 @@ var NuxtUiCategorizationRenderer = (0, import_vue19.defineComponent)({
|
|
|
656
801
|
});
|
|
657
802
|
|
|
658
803
|
// src/renderers/layouts/NuxtUiCategoryRenderer.ts
|
|
659
|
-
var
|
|
660
|
-
var
|
|
661
|
-
var NuxtUiCategoryRenderer = (0,
|
|
804
|
+
var import_vue24 = require("@jsonforms/vue");
|
|
805
|
+
var import_vue25 = require("vue");
|
|
806
|
+
var NuxtUiCategoryRenderer = (0, import_vue25.defineComponent)({
|
|
662
807
|
name: "NuxtUiCategoryRenderer",
|
|
663
|
-
components: { DispatchRenderer:
|
|
664
|
-
props: (0,
|
|
808
|
+
components: { DispatchRenderer: import_vue24.DispatchRenderer },
|
|
809
|
+
props: (0, import_vue24.rendererProps)(),
|
|
665
810
|
setup(props) {
|
|
666
|
-
const { layout } = (0,
|
|
811
|
+
const { layout } = (0, import_vue24.useJsonFormsLayout)(
|
|
667
812
|
props
|
|
668
813
|
);
|
|
669
814
|
return () => {
|
|
670
815
|
if (!layout.value.visible) return null;
|
|
671
816
|
const elements = layout.value.uischema.elements ?? [];
|
|
672
|
-
return (0,
|
|
673
|
-
layout.value.label ? (0,
|
|
674
|
-
(0,
|
|
817
|
+
return (0, import_vue25.h)("div", { class: "flex flex-col gap-3" }, [
|
|
818
|
+
layout.value.label ? (0, import_vue25.h)("div", { class: "text-sm font-semibold" }, layout.value.label) : null,
|
|
819
|
+
(0, import_vue25.h)(
|
|
675
820
|
"div",
|
|
676
821
|
{ class: "flex flex-col gap-3" },
|
|
677
822
|
elements.map(
|
|
678
|
-
(element, index) => (0,
|
|
823
|
+
(element, index) => (0, import_vue25.h)(
|
|
679
824
|
"div",
|
|
680
825
|
{ key: `${layout.value.path}-${index}` },
|
|
681
|
-
(0,
|
|
826
|
+
(0, import_vue25.h)(import_vue24.DispatchRenderer, {
|
|
682
827
|
schema: layout.value.schema,
|
|
683
828
|
uischema: element,
|
|
684
829
|
path: layout.value.path,
|
|
@@ -695,29 +840,29 @@ var NuxtUiCategoryRenderer = (0, import_vue21.defineComponent)({
|
|
|
695
840
|
});
|
|
696
841
|
|
|
697
842
|
// src/renderers/layouts/NuxtUiGroupRenderer.ts
|
|
698
|
-
var
|
|
699
|
-
var
|
|
700
|
-
var NuxtUiGroupRenderer = (0,
|
|
843
|
+
var import_vue26 = require("@jsonforms/vue");
|
|
844
|
+
var import_vue27 = require("vue");
|
|
845
|
+
var NuxtUiGroupRenderer = (0, import_vue27.defineComponent)({
|
|
701
846
|
name: "NuxtUiGroupRenderer",
|
|
702
|
-
components: { DispatchRenderer:
|
|
703
|
-
props: (0,
|
|
847
|
+
components: { DispatchRenderer: import_vue26.DispatchRenderer },
|
|
848
|
+
props: (0, import_vue26.rendererProps)(),
|
|
704
849
|
setup(props) {
|
|
705
|
-
const { layout } = (0,
|
|
850
|
+
const { layout } = (0, import_vue26.useJsonFormsLayout)(
|
|
706
851
|
props
|
|
707
852
|
);
|
|
708
853
|
return () => {
|
|
709
854
|
if (!layout.value.visible) return null;
|
|
710
855
|
const elements = layout.value.uischema.elements ?? [];
|
|
711
|
-
return (0,
|
|
712
|
-
layout.value.label ? (0,
|
|
713
|
-
(0,
|
|
856
|
+
return (0, import_vue27.h)("div", { class: "rounded border p-3" }, [
|
|
857
|
+
layout.value.label ? (0, import_vue27.h)("div", { class: "mb-3 text-sm font-semibold" }, layout.value.label) : null,
|
|
858
|
+
(0, import_vue27.h)(
|
|
714
859
|
"div",
|
|
715
860
|
{ class: "flex flex-col gap-3" },
|
|
716
861
|
elements.map(
|
|
717
|
-
(element, index) => (0,
|
|
862
|
+
(element, index) => (0, import_vue27.h)(
|
|
718
863
|
"div",
|
|
719
864
|
{ key: `${layout.value.path}-${index}` },
|
|
720
|
-
(0,
|
|
865
|
+
(0, import_vue27.h)(import_vue26.DispatchRenderer, {
|
|
721
866
|
schema: layout.value.schema,
|
|
722
867
|
uischema: element,
|
|
723
868
|
path: layout.value.path,
|
|
@@ -734,27 +879,27 @@ var NuxtUiGroupRenderer = (0, import_vue23.defineComponent)({
|
|
|
734
879
|
});
|
|
735
880
|
|
|
736
881
|
// src/renderers/layouts/NuxtUiHorizontalLayoutRenderer.ts
|
|
737
|
-
var
|
|
738
|
-
var
|
|
739
|
-
var NuxtUiHorizontalLayoutRenderer = (0,
|
|
882
|
+
var import_vue28 = require("@jsonforms/vue");
|
|
883
|
+
var import_vue29 = require("vue");
|
|
884
|
+
var NuxtUiHorizontalLayoutRenderer = (0, import_vue29.defineComponent)({
|
|
740
885
|
name: "NuxtUiHorizontalLayoutRenderer",
|
|
741
|
-
components: { DispatchRenderer:
|
|
742
|
-
props: (0,
|
|
886
|
+
components: { DispatchRenderer: import_vue28.DispatchRenderer },
|
|
887
|
+
props: (0, import_vue28.rendererProps)(),
|
|
743
888
|
setup(props) {
|
|
744
|
-
const { layout } = (0,
|
|
889
|
+
const { layout } = (0, import_vue28.useJsonFormsLayout)(
|
|
745
890
|
props
|
|
746
891
|
);
|
|
747
892
|
return () => {
|
|
748
893
|
if (!layout.value.visible) return null;
|
|
749
894
|
const elements = layout.value.uischema.elements ?? [];
|
|
750
|
-
return (0,
|
|
895
|
+
return (0, import_vue29.h)(
|
|
751
896
|
"div",
|
|
752
897
|
{ class: "flex flex-col gap-3 md:flex-row md:flex-wrap" },
|
|
753
898
|
elements.map(
|
|
754
|
-
(element, index) => (0,
|
|
899
|
+
(element, index) => (0, import_vue29.h)(
|
|
755
900
|
"div",
|
|
756
901
|
{ key: `${layout.value.path}-${index}`, class: "min-w-0 flex-1" },
|
|
757
|
-
(0,
|
|
902
|
+
(0, import_vue29.h)(import_vue28.DispatchRenderer, {
|
|
758
903
|
schema: layout.value.schema,
|
|
759
904
|
uischema: element,
|
|
760
905
|
path: layout.value.path,
|
|
@@ -770,18 +915,18 @@ var NuxtUiHorizontalLayoutRenderer = (0, import_vue25.defineComponent)({
|
|
|
770
915
|
});
|
|
771
916
|
|
|
772
917
|
// src/renderers/layouts/NuxtUiLabelRenderer.ts
|
|
773
|
-
var
|
|
774
|
-
var
|
|
775
|
-
var NuxtUiLabelRenderer = (0,
|
|
918
|
+
var import_vue30 = require("@jsonforms/vue");
|
|
919
|
+
var import_vue31 = require("vue");
|
|
920
|
+
var NuxtUiLabelRenderer = (0, import_vue31.defineComponent)({
|
|
776
921
|
name: "NuxtUiLabelRenderer",
|
|
777
|
-
props: (0,
|
|
922
|
+
props: (0, import_vue30.rendererProps)(),
|
|
778
923
|
setup(props) {
|
|
779
|
-
const { label } = (0,
|
|
924
|
+
const { label } = (0, import_vue30.useJsonFormsLabel)(
|
|
780
925
|
props
|
|
781
926
|
);
|
|
782
927
|
return () => {
|
|
783
928
|
if (!label.value.visible) return null;
|
|
784
|
-
return (0,
|
|
929
|
+
return (0, import_vue31.h)(
|
|
785
930
|
"div",
|
|
786
931
|
{ class: "text-sm text-gray-600 dark:text-gray-300" },
|
|
787
932
|
label.value.text
|
|
@@ -791,27 +936,27 @@ var NuxtUiLabelRenderer = (0, import_vue27.defineComponent)({
|
|
|
791
936
|
});
|
|
792
937
|
|
|
793
938
|
// src/renderers/layouts/NuxtUiVerticalLayoutRenderer.ts
|
|
794
|
-
var
|
|
795
|
-
var
|
|
796
|
-
var NuxtUiVerticalLayoutRenderer = (0,
|
|
939
|
+
var import_vue32 = require("@jsonforms/vue");
|
|
940
|
+
var import_vue33 = require("vue");
|
|
941
|
+
var NuxtUiVerticalLayoutRenderer = (0, import_vue33.defineComponent)({
|
|
797
942
|
name: "NuxtUiVerticalLayoutRenderer",
|
|
798
|
-
components: { DispatchRenderer:
|
|
799
|
-
props: (0,
|
|
943
|
+
components: { DispatchRenderer: import_vue32.DispatchRenderer },
|
|
944
|
+
props: (0, import_vue32.rendererProps)(),
|
|
800
945
|
setup(props) {
|
|
801
|
-
const { layout } = (0,
|
|
946
|
+
const { layout } = (0, import_vue32.useJsonFormsLayout)(
|
|
802
947
|
props
|
|
803
948
|
);
|
|
804
949
|
return () => {
|
|
805
950
|
if (!layout.value.visible) return null;
|
|
806
951
|
const elements = layout.value.uischema.elements ?? [];
|
|
807
|
-
return (0,
|
|
952
|
+
return (0, import_vue33.h)(
|
|
808
953
|
"div",
|
|
809
954
|
{ class: "flex flex-col gap-3" },
|
|
810
955
|
elements.map(
|
|
811
|
-
(element, index) => (0,
|
|
956
|
+
(element, index) => (0, import_vue33.h)(
|
|
812
957
|
"div",
|
|
813
958
|
{ key: `${layout.value.path}-${index}` },
|
|
814
|
-
(0,
|
|
959
|
+
(0, import_vue33.h)(import_vue32.DispatchRenderer, {
|
|
815
960
|
schema: layout.value.schema,
|
|
816
961
|
uischema: element,
|
|
817
962
|
path: layout.value.path,
|
|
@@ -829,67 +974,98 @@ var NuxtUiVerticalLayoutRenderer = (0, import_vue29.defineComponent)({
|
|
|
829
974
|
// src/nuxtUiRenderers.ts
|
|
830
975
|
var RANK = 10;
|
|
831
976
|
var ENUM_RANK = RANK + 1;
|
|
977
|
+
var PASSWORD_RANK = ENUM_RANK + 1;
|
|
978
|
+
var isMultiEnumControl = (uischema, schema, context) => {
|
|
979
|
+
if (!(0, import_core3.uiTypeIs)("Control")(uischema, schema, context)) {
|
|
980
|
+
return false;
|
|
981
|
+
}
|
|
982
|
+
const scope = uischema?.scope;
|
|
983
|
+
if (typeof scope !== "string") return false;
|
|
984
|
+
const rootSchema = context?.rootSchema ?? schema;
|
|
985
|
+
let resolved;
|
|
986
|
+
try {
|
|
987
|
+
resolved = import_core3.Resolve.schema(schema, scope, rootSchema);
|
|
988
|
+
} catch {
|
|
989
|
+
return false;
|
|
990
|
+
}
|
|
991
|
+
if (resolved?.type !== "array") return false;
|
|
992
|
+
const items = resolved?.items;
|
|
993
|
+
if (!items) return false;
|
|
994
|
+
if (Array.isArray(items)) return false;
|
|
995
|
+
if (typeof items !== "object" || items === null) return false;
|
|
996
|
+
const resolvedItems = "$ref" in items && typeof items.$ref === "string" ? import_core3.Resolve.schema(rootSchema, items.$ref, rootSchema) : items;
|
|
997
|
+
return (0, import_core3.isEnumSchema)(resolvedItems);
|
|
998
|
+
};
|
|
832
999
|
var nuxtUiRenderers = [
|
|
833
1000
|
// Layouts
|
|
834
1001
|
{
|
|
835
1002
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("VerticalLayout")),
|
|
836
|
-
renderer: (0,
|
|
1003
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiVerticalLayoutRenderer)
|
|
837
1004
|
},
|
|
838
1005
|
{
|
|
839
1006
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("HorizontalLayout")),
|
|
840
|
-
renderer: (0,
|
|
1007
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiHorizontalLayoutRenderer)
|
|
841
1008
|
},
|
|
842
1009
|
{
|
|
843
1010
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Group")),
|
|
844
|
-
renderer: (0,
|
|
1011
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiGroupRenderer)
|
|
845
1012
|
},
|
|
846
1013
|
{
|
|
847
1014
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Categorization")),
|
|
848
|
-
renderer: (0,
|
|
1015
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiCategorizationRenderer)
|
|
849
1016
|
},
|
|
850
1017
|
{
|
|
851
1018
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Category")),
|
|
852
|
-
renderer: (0,
|
|
1019
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiCategoryRenderer)
|
|
853
1020
|
},
|
|
854
1021
|
{
|
|
855
1022
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Label")),
|
|
856
|
-
renderer: (0,
|
|
1023
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiLabelRenderer)
|
|
857
1024
|
},
|
|
858
1025
|
// Complex schemas
|
|
859
1026
|
{
|
|
860
1027
|
tester: (0, import_core3.rankWith)(RANK, (0, import_core3.schemaTypeIs)("array")),
|
|
861
|
-
renderer: (0,
|
|
1028
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiArrayListRenderer)
|
|
862
1029
|
},
|
|
863
1030
|
{
|
|
864
1031
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isObjectControl),
|
|
865
|
-
renderer: (0,
|
|
1032
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiObjectRenderer)
|
|
866
1033
|
},
|
|
867
1034
|
// Primitive controls
|
|
868
1035
|
{
|
|
869
1036
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isMultiLineControl),
|
|
870
|
-
renderer: (0,
|
|
1037
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiTextareaControl)
|
|
871
1038
|
},
|
|
872
1039
|
{
|
|
873
1040
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isNumberControl),
|
|
874
|
-
renderer: (0,
|
|
1041
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiNumberControl)
|
|
875
1042
|
},
|
|
876
1043
|
{
|
|
877
1044
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isIntegerControl),
|
|
878
|
-
renderer: (0,
|
|
1045
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiIntegerControl)
|
|
879
1046
|
},
|
|
880
1047
|
{
|
|
881
1048
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isBooleanControl),
|
|
882
|
-
renderer: (0,
|
|
1049
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiBooleanControl)
|
|
1050
|
+
},
|
|
1051
|
+
{
|
|
1052
|
+
// Multi-enum must outrank generic array renderer and string renderer.
|
|
1053
|
+
tester: (0, import_core3.rankWith)(ENUM_RANK, isMultiEnumControl),
|
|
1054
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiMultiEnumControl)
|
|
883
1055
|
},
|
|
884
1056
|
{
|
|
885
1057
|
// Enum must outrank the generic string control, otherwise enums can render
|
|
886
1058
|
// as freeform text inputs.
|
|
887
1059
|
tester: (0, import_core3.rankWith)(ENUM_RANK, import_core3.isEnumControl),
|
|
888
|
-
renderer: (0,
|
|
1060
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiEnumControl)
|
|
1061
|
+
},
|
|
1062
|
+
{
|
|
1063
|
+
tester: (0, import_core3.rankWith)(PASSWORD_RANK, (0, import_core3.and)(import_core3.isStringControl, (0, import_core3.formatIs)("password"))),
|
|
1064
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiPasswordControl)
|
|
889
1065
|
},
|
|
890
1066
|
{
|
|
891
1067
|
tester: (0, import_core3.rankWith)(RANK, import_core3.isStringControl),
|
|
892
|
-
renderer: (0,
|
|
1068
|
+
renderer: (0, import_vue34.markRaw)(NuxtUiStringControl)
|
|
893
1069
|
}
|
|
894
1070
|
];
|
|
895
1071
|
// Annotate the CommonJS export names for ESM import in node:
|