jsonforms-nuxt-ui-renderers 0.1.5 → 0.1.7
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/README.md +31 -4
- package/dist/index.cjs +185 -89
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +166 -68
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// src/nuxtUiRenderers.ts
|
|
2
2
|
import {
|
|
3
|
+
and,
|
|
4
|
+
formatIs,
|
|
3
5
|
isBooleanControl,
|
|
4
6
|
isEnumControl,
|
|
5
7
|
isEnumSchema,
|
|
@@ -597,26 +599,24 @@ var NuxtUiNumberControl = defineComponent7({
|
|
|
597
599
|
}
|
|
598
600
|
});
|
|
599
601
|
|
|
600
|
-
// src/renderers/controls/
|
|
602
|
+
// src/renderers/controls/NuxtUiPasswordControl.ts
|
|
601
603
|
import { rendererProps as rendererProps8, useJsonFormsControl as useJsonFormsControl6 } from "@jsonforms/vue";
|
|
602
|
-
import {
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
h as h8,
|
|
606
|
-
resolveComponent as resolveComponent7
|
|
607
|
-
} from "vue";
|
|
608
|
-
var NuxtUiStringControl = defineComponent8({
|
|
609
|
-
name: "NuxtUiStringControl",
|
|
604
|
+
import { computed as computed9, defineComponent as defineComponent8, h as h8, ref, resolveComponent as resolveComponent7 } from "vue";
|
|
605
|
+
var NuxtUiPasswordControl = defineComponent8({
|
|
606
|
+
name: "NuxtUiPasswordControl",
|
|
610
607
|
props: rendererProps8(),
|
|
611
608
|
setup(props) {
|
|
612
609
|
const { control, handleChange } = useJsonFormsControl6(
|
|
613
610
|
props
|
|
614
611
|
);
|
|
615
612
|
const errorMessage = computed9(() => trimmedOrUndefined(control.value.errors));
|
|
613
|
+
const showPassword = ref(false);
|
|
614
|
+
const inputType = computed9(() => showPassword.value ? "text" : "password");
|
|
616
615
|
return () => {
|
|
617
616
|
if (!control.value.visible) return null;
|
|
618
617
|
const UFormField = resolveComponent7("UFormField");
|
|
619
618
|
const UInput = resolveComponent7("UInput");
|
|
619
|
+
const UButton = resolveComponent7("UButton");
|
|
620
620
|
return h8(
|
|
621
621
|
"div",
|
|
622
622
|
{},
|
|
@@ -629,7 +629,74 @@ var NuxtUiStringControl = defineComponent8({
|
|
|
629
629
|
error: errorMessage.value
|
|
630
630
|
},
|
|
631
631
|
{
|
|
632
|
-
default: () => h8(
|
|
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
|
+
|
|
667
|
+
// src/renderers/controls/NuxtUiStringControl.ts
|
|
668
|
+
import { rendererProps as rendererProps9, useJsonFormsControl as useJsonFormsControl7 } from "@jsonforms/vue";
|
|
669
|
+
import {
|
|
670
|
+
computed as computed10,
|
|
671
|
+
defineComponent as defineComponent9,
|
|
672
|
+
h as h9,
|
|
673
|
+
resolveComponent as resolveComponent8
|
|
674
|
+
} from "vue";
|
|
675
|
+
var NuxtUiStringControl = defineComponent9({
|
|
676
|
+
name: "NuxtUiStringControl",
|
|
677
|
+
props: rendererProps9(),
|
|
678
|
+
setup(props) {
|
|
679
|
+
const { control, handleChange } = useJsonFormsControl7(
|
|
680
|
+
props
|
|
681
|
+
);
|
|
682
|
+
const errorMessage = computed10(() => trimmedOrUndefined(control.value.errors));
|
|
683
|
+
return () => {
|
|
684
|
+
if (!control.value.visible) return null;
|
|
685
|
+
const UFormField = resolveComponent8("UFormField");
|
|
686
|
+
const UInput = resolveComponent8("UInput");
|
|
687
|
+
return h9(
|
|
688
|
+
"div",
|
|
689
|
+
{},
|
|
690
|
+
h9(
|
|
691
|
+
UFormField,
|
|
692
|
+
{
|
|
693
|
+
label: control.value.label,
|
|
694
|
+
description: control.value.description,
|
|
695
|
+
required: control.value.required,
|
|
696
|
+
error: errorMessage.value
|
|
697
|
+
},
|
|
698
|
+
{
|
|
699
|
+
default: () => h9(UInput, {
|
|
633
700
|
modelValue: control.value.data ?? "",
|
|
634
701
|
class: "w-full",
|
|
635
702
|
disabled: !control.value.enabled,
|
|
@@ -645,24 +712,24 @@ var NuxtUiStringControl = defineComponent8({
|
|
|
645
712
|
});
|
|
646
713
|
|
|
647
714
|
// src/renderers/controls/NuxtUiTextareaControl.ts
|
|
648
|
-
import { rendererProps as
|
|
649
|
-
import { computed as
|
|
650
|
-
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({
|
|
651
718
|
name: "NuxtUiTextareaControl",
|
|
652
|
-
props:
|
|
719
|
+
props: rendererProps10(),
|
|
653
720
|
setup(props) {
|
|
654
|
-
const { control, handleChange } =
|
|
721
|
+
const { control, handleChange } = useJsonFormsControl8(
|
|
655
722
|
props
|
|
656
723
|
);
|
|
657
|
-
const errorMessage =
|
|
724
|
+
const errorMessage = computed11(() => trimmedOrUndefined(control.value.errors));
|
|
658
725
|
return () => {
|
|
659
726
|
if (!control.value.visible) return null;
|
|
660
|
-
const UFormField =
|
|
661
|
-
const UTextarea =
|
|
662
|
-
return
|
|
727
|
+
const UFormField = resolveComponent9("UFormField");
|
|
728
|
+
const UTextarea = resolveComponent9("UTextarea");
|
|
729
|
+
return h10(
|
|
663
730
|
"div",
|
|
664
731
|
{},
|
|
665
|
-
|
|
732
|
+
h10(
|
|
666
733
|
UFormField,
|
|
667
734
|
{
|
|
668
735
|
label: control.value.label,
|
|
@@ -671,7 +738,7 @@ var NuxtUiTextareaControl = defineComponent9({
|
|
|
671
738
|
error: errorMessage.value
|
|
672
739
|
},
|
|
673
740
|
{
|
|
674
|
-
default: () =>
|
|
741
|
+
default: () => h10(UTextarea, {
|
|
675
742
|
modelValue: control.value.data ?? "",
|
|
676
743
|
class: "w-full",
|
|
677
744
|
disabled: !control.value.enabled,
|
|
@@ -688,37 +755,37 @@ var NuxtUiTextareaControl = defineComponent9({
|
|
|
688
755
|
});
|
|
689
756
|
|
|
690
757
|
// src/renderers/layouts/NuxtUiCategorizationRenderer.ts
|
|
691
|
-
import { DispatchRenderer as DispatchRenderer3, rendererProps as
|
|
692
|
-
import { defineComponent as
|
|
693
|
-
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({
|
|
694
761
|
name: "NuxtUiCategorizationRenderer",
|
|
695
762
|
components: { DispatchRenderer: DispatchRenderer3 },
|
|
696
|
-
props:
|
|
763
|
+
props: rendererProps11(),
|
|
697
764
|
setup(props) {
|
|
698
765
|
const { layout, categories } = useJsonFormsCategorization(
|
|
699
766
|
props
|
|
700
767
|
);
|
|
701
768
|
return () => {
|
|
702
769
|
if (!layout.value.visible) return null;
|
|
703
|
-
return
|
|
770
|
+
return h11(
|
|
704
771
|
"div",
|
|
705
772
|
{ class: "flex flex-col gap-6" },
|
|
706
773
|
categories.map((categoryRef, catIndex) => {
|
|
707
774
|
const category = categoryRef.value;
|
|
708
775
|
const elements = category.uischema.elements ?? [];
|
|
709
|
-
return
|
|
776
|
+
return h11(
|
|
710
777
|
"div",
|
|
711
778
|
{ key: `${layout.value.path}-cat-${catIndex}`, class: "flex flex-col gap-3" },
|
|
712
779
|
[
|
|
713
|
-
category.label ?
|
|
714
|
-
|
|
780
|
+
category.label ? h11("div", { class: "text-sm font-semibold" }, category.label) : null,
|
|
781
|
+
h11(
|
|
715
782
|
"div",
|
|
716
783
|
{ class: "flex flex-col gap-3" },
|
|
717
784
|
elements.map(
|
|
718
|
-
(element, index) =>
|
|
785
|
+
(element, index) => h11(
|
|
719
786
|
"div",
|
|
720
787
|
{ key: `${category.path}-${index}` },
|
|
721
|
-
|
|
788
|
+
h11(DispatchRenderer3, {
|
|
722
789
|
schema: category.schema,
|
|
723
790
|
uischema: element,
|
|
724
791
|
path: category.path,
|
|
@@ -738,12 +805,12 @@ var NuxtUiCategorizationRenderer = defineComponent10({
|
|
|
738
805
|
});
|
|
739
806
|
|
|
740
807
|
// src/renderers/layouts/NuxtUiCategoryRenderer.ts
|
|
741
|
-
import { DispatchRenderer as DispatchRenderer4, rendererProps as
|
|
742
|
-
import { defineComponent as
|
|
743
|
-
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({
|
|
744
811
|
name: "NuxtUiCategoryRenderer",
|
|
745
812
|
components: { DispatchRenderer: DispatchRenderer4 },
|
|
746
|
-
props:
|
|
813
|
+
props: rendererProps12(),
|
|
747
814
|
setup(props) {
|
|
748
815
|
const { layout } = useJsonFormsLayout(
|
|
749
816
|
props
|
|
@@ -751,16 +818,16 @@ var NuxtUiCategoryRenderer = defineComponent11({
|
|
|
751
818
|
return () => {
|
|
752
819
|
if (!layout.value.visible) return null;
|
|
753
820
|
const elements = layout.value.uischema.elements ?? [];
|
|
754
|
-
return
|
|
755
|
-
layout.value.label ?
|
|
756
|
-
|
|
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(
|
|
757
824
|
"div",
|
|
758
825
|
{ class: "flex flex-col gap-3" },
|
|
759
826
|
elements.map(
|
|
760
|
-
(element, index) =>
|
|
827
|
+
(element, index) => h12(
|
|
761
828
|
"div",
|
|
762
829
|
{ key: `${layout.value.path}-${index}` },
|
|
763
|
-
|
|
830
|
+
h12(DispatchRenderer4, {
|
|
764
831
|
schema: layout.value.schema,
|
|
765
832
|
uischema: element,
|
|
766
833
|
path: layout.value.path,
|
|
@@ -777,12 +844,12 @@ var NuxtUiCategoryRenderer = defineComponent11({
|
|
|
777
844
|
});
|
|
778
845
|
|
|
779
846
|
// src/renderers/layouts/NuxtUiGroupRenderer.ts
|
|
780
|
-
import { DispatchRenderer as DispatchRenderer5, rendererProps as
|
|
781
|
-
import { defineComponent as
|
|
782
|
-
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({
|
|
783
850
|
name: "NuxtUiGroupRenderer",
|
|
784
851
|
components: { DispatchRenderer: DispatchRenderer5 },
|
|
785
|
-
props:
|
|
852
|
+
props: rendererProps13(),
|
|
786
853
|
setup(props) {
|
|
787
854
|
const { layout } = useJsonFormsLayout2(
|
|
788
855
|
props
|
|
@@ -790,16 +857,16 @@ var NuxtUiGroupRenderer = defineComponent12({
|
|
|
790
857
|
return () => {
|
|
791
858
|
if (!layout.value.visible) return null;
|
|
792
859
|
const elements = layout.value.uischema.elements ?? [];
|
|
793
|
-
return
|
|
794
|
-
layout.value.label ?
|
|
795
|
-
|
|
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(
|
|
796
863
|
"div",
|
|
797
864
|
{ class: "flex flex-col gap-3" },
|
|
798
865
|
elements.map(
|
|
799
|
-
(element, index) =>
|
|
866
|
+
(element, index) => h13(
|
|
800
867
|
"div",
|
|
801
868
|
{ key: `${layout.value.path}-${index}` },
|
|
802
|
-
|
|
869
|
+
h13(DispatchRenderer5, {
|
|
803
870
|
schema: layout.value.schema,
|
|
804
871
|
uischema: element,
|
|
805
872
|
path: layout.value.path,
|
|
@@ -816,12 +883,12 @@ var NuxtUiGroupRenderer = defineComponent12({
|
|
|
816
883
|
});
|
|
817
884
|
|
|
818
885
|
// src/renderers/layouts/NuxtUiHorizontalLayoutRenderer.ts
|
|
819
|
-
import { DispatchRenderer as DispatchRenderer6, rendererProps as
|
|
820
|
-
import { defineComponent as
|
|
821
|
-
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({
|
|
822
889
|
name: "NuxtUiHorizontalLayoutRenderer",
|
|
823
890
|
components: { DispatchRenderer: DispatchRenderer6 },
|
|
824
|
-
props:
|
|
891
|
+
props: rendererProps14(),
|
|
825
892
|
setup(props) {
|
|
826
893
|
const { layout } = useJsonFormsLayout3(
|
|
827
894
|
props
|
|
@@ -829,14 +896,14 @@ var NuxtUiHorizontalLayoutRenderer = defineComponent13({
|
|
|
829
896
|
return () => {
|
|
830
897
|
if (!layout.value.visible) return null;
|
|
831
898
|
const elements = layout.value.uischema.elements ?? [];
|
|
832
|
-
return
|
|
899
|
+
return h14(
|
|
833
900
|
"div",
|
|
834
901
|
{ class: "flex flex-col gap-3 md:flex-row md:flex-wrap" },
|
|
835
902
|
elements.map(
|
|
836
|
-
(element, index) =>
|
|
903
|
+
(element, index) => h14(
|
|
837
904
|
"div",
|
|
838
905
|
{ key: `${layout.value.path}-${index}`, class: "min-w-0 flex-1" },
|
|
839
|
-
|
|
906
|
+
h14(DispatchRenderer6, {
|
|
840
907
|
schema: layout.value.schema,
|
|
841
908
|
uischema: element,
|
|
842
909
|
path: layout.value.path,
|
|
@@ -852,18 +919,18 @@ var NuxtUiHorizontalLayoutRenderer = defineComponent13({
|
|
|
852
919
|
});
|
|
853
920
|
|
|
854
921
|
// src/renderers/layouts/NuxtUiLabelRenderer.ts
|
|
855
|
-
import { rendererProps as
|
|
856
|
-
import { defineComponent as
|
|
857
|
-
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({
|
|
858
925
|
name: "NuxtUiLabelRenderer",
|
|
859
|
-
props:
|
|
926
|
+
props: rendererProps15(),
|
|
860
927
|
setup(props) {
|
|
861
928
|
const { label } = useJsonFormsLabel(
|
|
862
929
|
props
|
|
863
930
|
);
|
|
864
931
|
return () => {
|
|
865
932
|
if (!label.value.visible) return null;
|
|
866
|
-
return
|
|
933
|
+
return h15(
|
|
867
934
|
"div",
|
|
868
935
|
{ class: "text-sm text-gray-600 dark:text-gray-300" },
|
|
869
936
|
label.value.text
|
|
@@ -873,12 +940,12 @@ var NuxtUiLabelRenderer = defineComponent14({
|
|
|
873
940
|
});
|
|
874
941
|
|
|
875
942
|
// src/renderers/layouts/NuxtUiVerticalLayoutRenderer.ts
|
|
876
|
-
import { DispatchRenderer as DispatchRenderer7, rendererProps as
|
|
877
|
-
import { defineComponent as
|
|
878
|
-
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({
|
|
879
946
|
name: "NuxtUiVerticalLayoutRenderer",
|
|
880
947
|
components: { DispatchRenderer: DispatchRenderer7 },
|
|
881
|
-
props:
|
|
948
|
+
props: rendererProps16(),
|
|
882
949
|
setup(props) {
|
|
883
950
|
const { layout } = useJsonFormsLayout4(
|
|
884
951
|
props
|
|
@@ -886,14 +953,14 @@ var NuxtUiVerticalLayoutRenderer = defineComponent15({
|
|
|
886
953
|
return () => {
|
|
887
954
|
if (!layout.value.visible) return null;
|
|
888
955
|
const elements = layout.value.uischema.elements ?? [];
|
|
889
|
-
return
|
|
956
|
+
return h16(
|
|
890
957
|
"div",
|
|
891
958
|
{ class: "flex flex-col gap-3" },
|
|
892
959
|
elements.map(
|
|
893
|
-
(element, index) =>
|
|
960
|
+
(element, index) => h16(
|
|
894
961
|
"div",
|
|
895
962
|
{ key: `${layout.value.path}-${index}` },
|
|
896
|
-
|
|
963
|
+
h16(DispatchRenderer7, {
|
|
897
964
|
schema: layout.value.schema,
|
|
898
965
|
uischema: element,
|
|
899
966
|
path: layout.value.path,
|
|
@@ -911,6 +978,7 @@ var NuxtUiVerticalLayoutRenderer = defineComponent15({
|
|
|
911
978
|
// src/nuxtUiRenderers.ts
|
|
912
979
|
var RANK = 10;
|
|
913
980
|
var ENUM_RANK = RANK + 1;
|
|
981
|
+
var PASSWORD_RANK = ENUM_RANK + 1;
|
|
914
982
|
var isMultiEnumControl = (uischema, schema, context) => {
|
|
915
983
|
if (!uiTypeIs("Control")(uischema, schema, context)) {
|
|
916
984
|
return false;
|
|
@@ -932,6 +1000,27 @@ var isMultiEnumControl = (uischema, schema, context) => {
|
|
|
932
1000
|
const resolvedItems = "$ref" in items && typeof items.$ref === "string" ? Resolve2.schema(rootSchema, items.$ref, rootSchema) : items;
|
|
933
1001
|
return isEnumSchema(resolvedItems);
|
|
934
1002
|
};
|
|
1003
|
+
var isOneOfEnumControl = (uischema, schema, context) => {
|
|
1004
|
+
if (!uiTypeIs("Control")(uischema, schema, context)) {
|
|
1005
|
+
return false;
|
|
1006
|
+
}
|
|
1007
|
+
const scope = uischema?.scope;
|
|
1008
|
+
if (typeof scope !== "string") return false;
|
|
1009
|
+
const rootSchema = context?.rootSchema ?? schema;
|
|
1010
|
+
let resolved;
|
|
1011
|
+
try {
|
|
1012
|
+
resolved = Resolve2.schema(schema, scope, rootSchema);
|
|
1013
|
+
} catch {
|
|
1014
|
+
return false;
|
|
1015
|
+
}
|
|
1016
|
+
const oneOf = resolved?.oneOf;
|
|
1017
|
+
if (!Array.isArray(oneOf) || oneOf.length === 0) return false;
|
|
1018
|
+
for (const entry of oneOf) {
|
|
1019
|
+
if (typeof entry !== "object" || entry === null) continue;
|
|
1020
|
+
if (!("const" in entry)) return false;
|
|
1021
|
+
}
|
|
1022
|
+
return true;
|
|
1023
|
+
};
|
|
935
1024
|
var nuxtUiRenderers = [
|
|
936
1025
|
// Layouts
|
|
937
1026
|
{
|
|
@@ -989,12 +1078,21 @@ var nuxtUiRenderers = [
|
|
|
989
1078
|
tester: rankWith(ENUM_RANK, isMultiEnumControl),
|
|
990
1079
|
renderer: markRaw(NuxtUiMultiEnumControl)
|
|
991
1080
|
},
|
|
1081
|
+
{
|
|
1082
|
+
// oneOf with const+title (display labels) - same as enum for rendering.
|
|
1083
|
+
tester: rankWith(ENUM_RANK, isOneOfEnumControl),
|
|
1084
|
+
renderer: markRaw(NuxtUiEnumControl)
|
|
1085
|
+
},
|
|
992
1086
|
{
|
|
993
1087
|
// Enum must outrank the generic string control, otherwise enums can render
|
|
994
1088
|
// as freeform text inputs.
|
|
995
1089
|
tester: rankWith(ENUM_RANK, isEnumControl),
|
|
996
1090
|
renderer: markRaw(NuxtUiEnumControl)
|
|
997
1091
|
},
|
|
1092
|
+
{
|
|
1093
|
+
tester: rankWith(PASSWORD_RANK, and(isStringControl, formatIs("password"))),
|
|
1094
|
+
renderer: markRaw(NuxtUiPasswordControl)
|
|
1095
|
+
},
|
|
998
1096
|
{
|
|
999
1097
|
tester: rankWith(RANK, isStringControl),
|
|
1000
1098
|
renderer: markRaw(NuxtUiStringControl)
|