@koumoul/vjsf 3.0.0-beta.21 → 3.0.0-beta.23

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koumoul/vjsf",
3
- "version": "3.0.0-beta.21",
3
+ "version": "3.0.0-beta.23",
4
4
  "description": "Generate forms for the vuetify UI library (vuejs) based on annotated JSON schemas.",
5
5
  "scripts": {
6
6
  "test": "vitest",
@@ -72,10 +72,10 @@
72
72
  },
73
73
  "peerDependencies": {
74
74
  "vue": "^3.4.3",
75
- "vuetify": "^3.4.9"
75
+ "vuetify": "^3.6.8"
76
76
  },
77
77
  "dependencies": {
78
- "@json-layout/core": "0.16.4",
78
+ "@json-layout/core": "0.19.0",
79
79
  "@vueuse/core": "^10.5.0",
80
80
  "debug": "^4.3.4",
81
81
  "ejs": "^3.1.9"
package/src/compat/v2.js CHANGED
@@ -11,7 +11,7 @@ const Ajv = /** @type {typeof ajvModule.default} */ (ajvModule)
11
11
  * @param {string} expression
12
12
  * @returns {{type: 'js-eval' | undefined, expr: string, pure: boolean}}
13
13
  */
14
- const fiexEvalExpression = (expression) => {
14
+ const fixEvalExpression = (expression) => {
15
15
  let expr = expression
16
16
  let pure = true
17
17
  if (expr.includes('rootData')) {
@@ -19,7 +19,7 @@ const fiexEvalExpression = (expression) => {
19
19
  }
20
20
  if (expr.includes('parent.value')) {
21
21
  pure = false
22
- expr = expr.replace(/parent\.value/g, 'parentData')
22
+ expr = expr.replace(/parent\.value/g, 'parent.data')
23
23
  }
24
24
 
25
25
  return { type: 'js-eval', expr, pure }
@@ -42,7 +42,11 @@ const processFragment = (/** @type {import("ajv").SchemaObject} */schema) => {
42
42
  }
43
43
 
44
44
  if (schema['x-display']) {
45
- layout.comp = schema['x-display']
45
+ let display = schema['x-display']
46
+ if (display === 'radio') display = 'radio-group'
47
+ if (display === 'checkbox' && schema.type !== 'boolean') display = 'checkbox-group'
48
+ if (display === 'switch' && schema.type !== 'boolean') display = 'switch-group'
49
+ layout.comp = display
46
50
  delete schema['x-display']
47
51
  }
48
52
 
@@ -57,13 +61,13 @@ const processFragment = (/** @type {import("ajv").SchemaObject} */schema) => {
57
61
  }
58
62
 
59
63
  if (schema['x-fromData']) {
60
- layout.comp = 'select'
61
- layout.getItems = fiexEvalExpression(schema['x-fromData'])
64
+ layout.comp = layout.comp ?? 'select'
65
+ layout.getItems = fixEvalExpression(schema['x-fromData'])
62
66
  delete schema['x-fromData']
63
67
  }
64
68
 
65
69
  if (schema['x-if']) {
66
- layout.if = fiexEvalExpression(schema['x-if'])
70
+ layout.if = fixEvalExpression(schema['x-if'])
67
71
  delete schema['x-if']
68
72
  }
69
73
 
@@ -132,6 +136,15 @@ const processFragment = (/** @type {import("ajv").SchemaObject} */schema) => {
132
136
  processFragment(schema.items)
133
137
  }
134
138
  }
139
+ if (schema.dependencies) {
140
+ for (const key of Object.keys(schema.dependencies)) {
141
+ processFragment(schema.dependencies[key])
142
+ }
143
+ }
144
+ if (schema.if) {
145
+ if (schema.then) processFragment(schema.then)
146
+ if (schema.else) processFragment(schema.else)
147
+ }
135
148
  }
136
149
 
137
150
  /**
@@ -0,0 +1,121 @@
1
+ <script>
2
+ import { VInput, VLabel, VCheckbox, VSwitch, VSkeletonLoader } from 'vuetify/components'
3
+ import { defineComponent, h, computed, ref, shallowRef } from 'vue'
4
+ import { getInputProps, getCompSlots } from '../../utils/index.js'
5
+
6
+ export default defineComponent({
7
+ props: {
8
+ modelValue: {
9
+ /** @type import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode> */
10
+ type: Object,
11
+ required: true
12
+ },
13
+ statefulLayout: {
14
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
15
+ type: Object,
16
+ required: true
17
+ },
18
+ type: {
19
+ type: String,
20
+ required: true
21
+ }
22
+ },
23
+ setup (props) {
24
+ /** @type import('vue').Ref<import('@json-layout/vocabulary').SelectItems> */
25
+ const items = shallowRef([])
26
+ /** @type import('vue').Ref<boolean> */
27
+ const loading = ref(false)
28
+
29
+ const fieldProps = computed(() => {
30
+ const fieldProps = getInputProps(props.modelValue, props.statefulLayout)
31
+ fieldProps.class.push('v-radio-group') // reuse some styles from radio-group
32
+ fieldProps.class.push('vjsf-selection-group')
33
+ return fieldProps
34
+ })
35
+
36
+ /** @type import('@json-layout/core').StateTree | null */
37
+ let lastStateTree = null
38
+ /** @type Record<string, any> | null */
39
+ let lastContext = null
40
+
41
+ const refresh = async () => {
42
+ if (props.statefulLayout.stateTree === lastStateTree && props.statefulLayout.options.context === lastContext) return
43
+ lastStateTree = props.statefulLayout.stateTree
44
+ lastContext = props.statefulLayout.options.context ?? null
45
+ loading.value = true
46
+ items.value = await props.statefulLayout.getItems(props.modelValue)
47
+ loading.value = false
48
+ }
49
+
50
+ if (!props.modelValue.layout.items) {
51
+ refresh()
52
+ }
53
+
54
+ const fieldSlots = computed(() => {
55
+ const slots = getCompSlots(props.modelValue, props.statefulLayout)
56
+
57
+ if (!slots.default) {
58
+ slots.default = () => {
59
+ /** @type {import('vue').VNode[]} */
60
+ const children = [h(VLabel, { text: fieldProps.value.label })]
61
+ if (loading.value) {
62
+ children.push(h(VSkeletonLoader, { type: 'chip' }))
63
+ } else {
64
+ /** @type {import('vue').VNode[]} */
65
+ const checkboxes = []
66
+ for (const item of items.value) {
67
+ let modelValue = false
68
+ if (props.modelValue.layout.multiple) {
69
+ modelValue = props.modelValue.data?.includes(item.value)
70
+ } else {
71
+ modelValue = props.modelValue.data === item.value
72
+ }
73
+ checkboxes.push(h(props.type === 'switch' ? VSwitch : VCheckbox, {
74
+ label: item.title,
75
+ hideDetails: true,
76
+ density: props.modelValue.options?.density,
77
+ key: item.key,
78
+ modelValue,
79
+ onClick: () => {
80
+ let newValue
81
+ if (props.modelValue.layout.multiple) {
82
+ newValue = props.modelValue.data ? [...props.modelValue.data] : []
83
+ if (newValue.includes(item.value)) {
84
+ newValue = newValue.filter((/** @type {any} */v) => v !== item.value)
85
+ } else {
86
+ newValue.push(item.value)
87
+ }
88
+ } else {
89
+ if (props.modelValue.data === item.value) {
90
+ newValue = undefined
91
+ } else {
92
+ newValue = item.value
93
+ }
94
+ }
95
+ props.statefulLayout.input(props.modelValue, newValue)
96
+ }
97
+ }))
98
+ }
99
+ children.push(h('div', { class: 'v-selection-control-group' }, checkboxes))
100
+ }
101
+ return children
102
+ }
103
+ }
104
+
105
+ return slots
106
+ })
107
+
108
+ // @ts-ignore
109
+ return () => {
110
+ return h(VInput, fieldProps.value, fieldSlots.value)
111
+ }
112
+ }
113
+ })
114
+
115
+ </script>
116
+
117
+ <style>
118
+ .vjsf-selection-group .v-selection-control-group>.v-input .v-selection-control {
119
+ min-height: auto;
120
+ }
121
+ </style>
@@ -0,0 +1,36 @@
1
+ <script>
2
+ import SelectionGroup from '../fragments/selection-group.vue'
3
+ import { defineComponent, h } from 'vue'
4
+
5
+ export default defineComponent({
6
+ props: {
7
+ modelValue: {
8
+ /** @type import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode> */
9
+ type: Object,
10
+ required: true
11
+ },
12
+ statefulLayout: {
13
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
14
+ type: Object,
15
+ required: true
16
+ }
17
+ },
18
+ setup (props) {
19
+ // @ts-ignore
20
+ return () => {
21
+ return h(SelectionGroup, {
22
+ modelValue: props.modelValue,
23
+ statefulLayout: props.statefulLayout,
24
+ type: 'checkbox'
25
+ })
26
+ }
27
+ }
28
+ })
29
+
30
+ </script>
31
+
32
+ <style>
33
+ .vjsf-node-checkbox-group .v-selection-control-group .v-checkbox .v-selection-control {
34
+ min-height: auto;
35
+ }
36
+ </style>
@@ -2,7 +2,8 @@
2
2
  import { VSelect, VRow, VCol } from 'vuetify/components'
3
3
  import { shallowRef, watch, computed, h } from 'vue'
4
4
  import { isSection } from '@json-layout/core'
5
- import { getInputProps, getCompSlots } from '../../utils/index.js'
5
+ import { isCompObject } from '@json-layout/vocabulary'
6
+ import { getInputProps } from '../../utils/index.js'
6
7
  import Node from '../node.vue'
7
8
 
8
9
  const props = defineProps({
@@ -39,7 +40,14 @@ const fieldProps = computed(() => {
39
40
  fieldProps.modelValue = activeChildTree.value
40
41
  fieldProps['onUpdate:modelValue'] = onChange
41
42
  fieldProps.returnObject = true
42
- fieldProps.items = props.modelValue.skeleton.childrenTrees
43
+ const items = []
44
+ for (const childTree of props.modelValue.skeleton.childrenTrees || []) {
45
+ const childLayout = props.statefulLayout.compiledLayout.normalizedLayouts[childTree.root.pointer]
46
+ if (!isCompObject(childLayout) || !childLayout.if || !!props.statefulLayout.evalNodeExpression(props.modelValue, childLayout.if, props.modelValue.data)) {
47
+ items.push(childTree)
48
+ }
49
+ }
50
+ fieldProps.items = items
43
51
  fieldProps.itemTitle = 'title'
44
52
  return fieldProps
45
53
  })
@@ -0,0 +1,70 @@
1
+ <script>
2
+ import { VRadioGroup, VRadio, VSkeletonLoader } from 'vuetify/components'
3
+ import { defineComponent, h, computed, ref, shallowRef } from 'vue'
4
+ import { getInputProps, getCompSlots } from '../../utils/index.js'
5
+
6
+ export default defineComponent({
7
+ props: {
8
+ modelValue: {
9
+ /** @type import('vue').PropType<import('../../types.js').VjsfRadioGroupNode> */
10
+ type: Object,
11
+ required: true
12
+ },
13
+ statefulLayout: {
14
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
15
+ type: Object,
16
+ required: true
17
+ }
18
+ },
19
+ setup (props) {
20
+ /** @type import('vue').Ref<import('@json-layout/vocabulary').SelectItems> */
21
+ const items = shallowRef([])
22
+ /** @type import('vue').Ref<boolean> */
23
+ const loading = ref(false)
24
+
25
+ const fieldProps = computed(() => {
26
+ const fieldProps = getInputProps(props.modelValue, props.statefulLayout)
27
+ return fieldProps
28
+ })
29
+
30
+ /** @type import('@json-layout/core').StateTree | null */
31
+ let lastStateTree = null
32
+ /** @type Record<string, any> | null */
33
+ let lastContext = null
34
+
35
+ const refresh = async () => {
36
+ if (props.statefulLayout.stateTree === lastStateTree && props.statefulLayout.options.context === lastContext) return
37
+ lastStateTree = props.statefulLayout.stateTree
38
+ lastContext = props.statefulLayout.options.context ?? null
39
+ loading.value = true
40
+ items.value = await props.statefulLayout.getItems(props.modelValue)
41
+ loading.value = false
42
+ }
43
+
44
+ if (!props.modelValue.layout.items) {
45
+ refresh()
46
+ }
47
+
48
+ const fieldSlots = computed(() => {
49
+ const slots = getCompSlots(props.modelValue, props.statefulLayout)
50
+ /** @type {import('vue').VNode[]} */
51
+ const children = []
52
+ if (loading.value) {
53
+ children.push(h(VSkeletonLoader, { type: 'chip' }))
54
+ } else {
55
+ for (const item of items.value) {
56
+ children.push(h(VRadio, { label: item.title, value: item.value }))
57
+ }
58
+ }
59
+ slots.default = () => children
60
+ return slots
61
+ })
62
+
63
+ // @ts-ignore
64
+ return () => {
65
+ return h(VRadioGroup, fieldProps.value, fieldSlots.value)
66
+ }
67
+ }
68
+ })
69
+
70
+ </script>
@@ -0,0 +1,36 @@
1
+ <script>
2
+ import SelectionGroup from '../fragments/selection-group.vue'
3
+ import { defineComponent, h } from 'vue'
4
+
5
+ export default defineComponent({
6
+ props: {
7
+ modelValue: {
8
+ /** @type import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode> */
9
+ type: Object,
10
+ required: true
11
+ },
12
+ statefulLayout: {
13
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
14
+ type: Object,
15
+ required: true
16
+ }
17
+ },
18
+ setup (props) {
19
+ // @ts-ignore
20
+ return () => {
21
+ return h(SelectionGroup, {
22
+ modelValue: props.modelValue,
23
+ statefulLayout: props.statefulLayout,
24
+ type: 'switch'
25
+ })
26
+ }
27
+ }
28
+ })
29
+
30
+ </script>
31
+
32
+ <style>
33
+ .vjsf-node-checkbox-group .v-selection-control-group .v-checkbox .v-selection-control {
34
+ min-height: auto;
35
+ }
36
+ </style>
@@ -18,6 +18,9 @@ import NodeDateTimePicker from './nodes/date-time-picker.vue'
18
18
  import NodeColorPicker from './nodes/color-picker.vue'
19
19
  import NodeSelect from './nodes/select.vue'
20
20
  import NodeAutocomplete from './nodes/autocomplete.vue'
21
+ import NodeRadioGroup from './nodes/radio-group.vue'
22
+ import NodeCheckboxGroup from './nodes/checkbox-group.vue'
23
+ import NodeSwitchGroup from './nodes/switch-group.vue'
21
24
  import NodeOneOfSelect from './nodes/one-of-select.vue'
22
25
  import NodeTabs from './nodes/tabs.vue'
23
26
  import NodeVerticalTabs from './nodes/vertical-tabs.vue'
@@ -42,6 +45,9 @@ const nodeComponents = {
42
45
  'color-picker': NodeColorPicker,
43
46
  select: NodeSelect,
44
47
  autocomplete: NodeAutocomplete,
48
+ 'radio-group': NodeRadioGroup,
49
+ 'checkbox-group': NodeCheckboxGroup,
50
+ 'switch-group': NodeSwitchGroup,
45
51
  'one-of-select': NodeOneOfSelect,
46
52
  tabs: NodeTabs,
47
53
  'vertical-tabs': NodeVerticalTabs,
@@ -62,7 +62,6 @@ export const useVjsf = (schema, modelValue, options, nodeComponents, emit, compi
62
62
  watch(fullOptions, (newOptions) => {
63
63
  if (precompiledLayout?.value) return
64
64
  const newCompileOptions = produceCompileOptions(compileOptions.value, newOptions)
65
- console.log('compile options', newOptions, newCompileOptions)
66
65
  if (newCompileOptions !== compileOptions.value) compileOptions.value = newCompileOptions
67
66
  }, { immediate: true })
68
67
 
package/src/types.ts CHANGED
@@ -17,6 +17,9 @@ import {
17
17
  OneOfSelectNode,
18
18
  SectionNode,
19
19
  SelectNode,
20
+ RadioGroupNode,
21
+ CheckboxGroupNode,
22
+ SwitchGroupNode,
20
23
  SliderNode,
21
24
  SwitchNode,
22
25
  TextFieldNode,
@@ -68,6 +71,9 @@ export type VjsfNumberFieldNode = Omit<NumberFieldNode, 'options'> & {options: V
68
71
  export type VjsfOneOfSelectNode = Omit<OneOfSelectNode, 'options'> & {options: VjsfOptions}
69
72
  export type VjsfSectionNode = Omit<SectionNode, 'options'> & {options: VjsfOptions}
70
73
  export type VjsfSelectNode = Omit<SelectNode, 'options'> & {options: VjsfOptions}
74
+ export type VjsfRadioGroupNode = Omit<RadioGroupNode, 'options'> & {options: VjsfOptions}
75
+ export type VjsfCheckboxGroupNode = Omit<CheckboxGroupNode, 'options'> & {options: VjsfOptions}
76
+ export type VjsfSwitchGroupNode = Omit<SwitchGroupNode, 'options'> & {options: VjsfOptions}
71
77
  export type VjsfSliderNode = Omit<SliderNode, 'options'> & {options: VjsfOptions}
72
78
  export type VjsfSwitchNode = Omit<SwitchNode, 'options'> & {options: VjsfOptions}
73
79
  export type VjsfTextFieldNode = Omit<TextFieldNode, 'options'> & {options: VjsfOptions}
@@ -1 +1 @@
1
- {"version":3,"file":"v2.d.ts","sourceRoot":"","sources":["../../src/compat/v2.js"],"names":[],"mappings":"AAwIA;;;;;;GAMG;AACH,kCALW,MAAM,+CAEN,MAAM,0BAkBhB;sBA9JqB,KAAK"}
1
+ {"version":3,"file":"v2.d.ts","sourceRoot":"","sources":["../../src/compat/v2.js"],"names":[],"mappings":"AAqJA;;;;;;GAMG;AACH,kCALW,MAAM,+CAEN,MAAM,0BAkBhB;sBA3KqB,KAAK"}
@@ -0,0 +1,35 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ modelValue: {
3
+ /** @type import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode> */
4
+ type: import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode>;
5
+ required: true;
6
+ };
7
+ statefulLayout: {
8
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
9
+ type: import('vue').PropType<import('../../types.js').VjsfStatefulLayout>;
10
+ required: true;
11
+ };
12
+ type: {
13
+ type: StringConstructor;
14
+ required: true;
15
+ };
16
+ }, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
17
+ [key: string]: any;
18
+ }>, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
19
+ modelValue: {
20
+ /** @type import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode> */
21
+ type: import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode>;
22
+ required: true;
23
+ };
24
+ statefulLayout: {
25
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
26
+ type: import('vue').PropType<import('../../types.js').VjsfStatefulLayout>;
27
+ required: true;
28
+ };
29
+ type: {
30
+ type: StringConstructor;
31
+ required: true;
32
+ };
33
+ }>>, {}, {}>;
34
+ export default _default;
35
+ //# sourceMappingURL=selection-group.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection-group.vue.d.ts","sourceRoot":"","sources":["../../../src/components/fragments/selection-group.vue.js"],"names":[],"mappings":";;QASM,mFAAmF;cAAzE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;;;;QAKhF,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;;;;;QAL7E,mFAAmF;cAAzE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;;;;QAKhF,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC"}
@@ -0,0 +1,27 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ modelValue: {
3
+ /** @type import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode> */
4
+ type: import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode>;
5
+ required: true;
6
+ };
7
+ statefulLayout: {
8
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
9
+ type: import('vue').PropType<import('../../types.js').VjsfStatefulLayout>;
10
+ required: true;
11
+ };
12
+ }, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
13
+ [key: string]: any;
14
+ }>, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
15
+ modelValue: {
16
+ /** @type import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode> */
17
+ type: import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode>;
18
+ required: true;
19
+ };
20
+ statefulLayout: {
21
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
22
+ type: import('vue').PropType<import('../../types.js').VjsfStatefulLayout>;
23
+ required: true;
24
+ };
25
+ }>>, {}, {}>;
26
+ export default _default;
27
+ //# sourceMappingURL=checkbox-group%20copy.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-group copy.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/checkbox-group copy.vue.js"],"names":[],"mappings":";;QAQI,mFAAmF;cAAzE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;;;;QAKhF,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,mFAAmF;cAAzE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;;;;QAKhF,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC"}
@@ -0,0 +1,27 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ modelValue: {
3
+ /** @type import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode> */
4
+ type: import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode>;
5
+ required: true;
6
+ };
7
+ statefulLayout: {
8
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
9
+ type: import('vue').PropType<import('../../types.js').VjsfStatefulLayout>;
10
+ required: true;
11
+ };
12
+ }, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
13
+ [key: string]: any;
14
+ }>, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
15
+ modelValue: {
16
+ /** @type import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode> */
17
+ type: import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode>;
18
+ required: true;
19
+ };
20
+ statefulLayout: {
21
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
22
+ type: import('vue').PropType<import('../../types.js').VjsfStatefulLayout>;
23
+ required: true;
24
+ };
25
+ }>>, {}, {}>;
26
+ export default _default;
27
+ //# sourceMappingURL=checkbox-group.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-group.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/checkbox-group.vue.js"],"names":[],"mappings":";;QAQI,mFAAmF;cAAzE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;;;;QAKhF,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,mFAAmF;cAAzE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;;;;QAKhF,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC"}
@@ -0,0 +1,27 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ modelValue: {
3
+ /** @type import('vue').PropType<import('../../types.js').VjsfRadioGroupNode> */
4
+ type: import('vue').PropType<import('../../types.js').VjsfRadioGroupNode>;
5
+ required: true;
6
+ };
7
+ statefulLayout: {
8
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
9
+ type: import('vue').PropType<import('../../types.js').VjsfStatefulLayout>;
10
+ required: true;
11
+ };
12
+ }, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
13
+ [key: string]: any;
14
+ }>, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
15
+ modelValue: {
16
+ /** @type import('vue').PropType<import('../../types.js').VjsfRadioGroupNode> */
17
+ type: import('vue').PropType<import('../../types.js').VjsfRadioGroupNode>;
18
+ required: true;
19
+ };
20
+ statefulLayout: {
21
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
22
+ type: import('vue').PropType<import('../../types.js').VjsfStatefulLayout>;
23
+ required: true;
24
+ };
25
+ }>>, {}, {}>;
26
+ export default _default;
27
+ //# sourceMappingURL=radio-group.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/radio-group.vue.js"],"names":[],"mappings":";;QASM,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {
2
+ modelValue: import("../../types.js").VjsfSwitchNode;
3
+ statefulLayout: import("../../types.js").VjsfStatefulLayout;
4
+ $props: {
5
+ readonly modelValue?: import("../../types.js").VjsfSwitchNode | undefined;
6
+ readonly statefulLayout?: import("../../types.js").VjsfStatefulLayout | undefined;
7
+ };
8
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
9
+ export default _default;
10
+ //# sourceMappingURL=radio.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/radio.vue.js"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ modelValue: {
3
+ /** @type import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode> */
4
+ type: import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode>;
5
+ required: true;
6
+ };
7
+ statefulLayout: {
8
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
9
+ type: import('vue').PropType<import('../../types.js').VjsfStatefulLayout>;
10
+ required: true;
11
+ };
12
+ }, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
13
+ [key: string]: any;
14
+ }>, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
15
+ modelValue: {
16
+ /** @type import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode> */
17
+ type: import('vue').PropType<import('../../types.js').VjsfCheckboxGroupNode>;
18
+ required: true;
19
+ };
20
+ statefulLayout: {
21
+ /** @type import('vue').PropType<import('../../types.js').VjsfStatefulLayout> */
22
+ type: import('vue').PropType<import('../../types.js').VjsfStatefulLayout>;
23
+ required: true;
24
+ };
25
+ }>>, {}, {}>;
26
+ export default _default;
27
+ //# sourceMappingURL=switch-group.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch-group.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/switch-group.vue.js"],"names":[],"mappings":";;QAQI,mFAAmF;cAAzE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;;;;QAKhF,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,mFAAmF;cAAzE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;;;;QAKhF,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC"}
@@ -1,12 +1,12 @@
1
1
  declare const _default: import("vue").DefineComponent<{}, {
2
2
  $emit: ((event: "update:modelValue", data: any) => void) & ((event: "update:state", state: import("../types.js").VjsfStatefulLayout) => void);
3
- modelValue: any;
4
3
  options: Partial<Omit<import("../types.js").VjsfOptions, "width" | "vjsfSlots">> | null;
4
+ modelValue: any;
5
5
  schema: Record<string, any>;
6
6
  precompiledLayout: import("../../../node_modules/@json-layout/core/types/compile/types.js").CompiledLayout;
7
7
  $props: {
8
- readonly modelValue?: any;
9
8
  readonly options?: Partial<Omit<import("../types.js").VjsfOptions, "width" | "vjsfSlots">> | null | undefined;
9
+ readonly modelValue?: any;
10
10
  readonly schema?: Record<string, any> | undefined;
11
11
  readonly precompiledLayout?: import("../../../node_modules/@json-layout/core/types/compile/types.js").CompiledLayout | undefined;
12
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-vjsf.d.ts","sourceRoot":"","sources":["../../src/composables/use-vjsf.js"],"names":[],"mappings":"AASA;IACE;;MAEE;gCADO,GAAG;IAGZ;;MAEE;4BADO,OAAO,aAAa,EAAE,kBAAkB;EAGlD;AAWM,gCARI,OAAO,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,cACzB,OAAO,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,WACtB,OAAO,KAAK,EAAE,GAAG,CAAC,OAAO,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAC,kBAClE,OAAO,MAAM,EAAE,OAAO,KAAK,EAAE,SAAS,CAAC,QACvC,GAAG;;;;EAuHb"}
1
+ {"version":3,"file":"use-vjsf.d.ts","sourceRoot":"","sources":["../../src/composables/use-vjsf.js"],"names":[],"mappings":"AASA;IACE;;MAEE;gCADO,GAAG;IAGZ;;MAEE;4BADO,OAAO,aAAa,EAAE,kBAAkB;EAGlD;AAWM,gCARI,OAAO,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,cACzB,OAAO,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,WACtB,OAAO,KAAK,EAAE,GAAG,CAAC,OAAO,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAC,kBAClE,OAAO,MAAM,EAAE,OAAO,KAAK,EAAE,SAAS,CAAC,QACvC,GAAG;;;;EAsHb"}
package/types/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Component } from 'vue';
2
2
  import { ComponentInfo } from '@json-layout/vocabulary';
3
- import { StatefulLayout, StatefulLayoutOptions, StateNode, CheckboxNode, ColorPickerNode, DatePickerNode, DateTimePickerNode, TabsNode, ExpansionPanelsNode, ListNode, NumberFieldNode, OneOfSelectNode, SectionNode, SelectNode, SliderNode, SwitchNode, TextFieldNode, TextareaNode, VerticalTabsNode, StepperNode, ComboboxNode, FileInputNode, CompileOptions } from '@json-layout/core';
3
+ import { StatefulLayout, StatefulLayoutOptions, StateNode, CheckboxNode, ColorPickerNode, DatePickerNode, DateTimePickerNode, TabsNode, ExpansionPanelsNode, ListNode, NumberFieldNode, OneOfSelectNode, SectionNode, SelectNode, RadioGroupNode, CheckboxGroupNode, SwitchGroupNode, SliderNode, SwitchNode, TextFieldNode, TextareaNode, VerticalTabsNode, StepperNode, ComboboxNode, FileInputNode, CompileOptions } from '@json-layout/core';
4
4
  export type Density = 'default' | 'comfortable' | 'compact';
5
5
  export type Plugin = {
6
6
  info: ComponentInfo;
@@ -57,6 +57,15 @@ export type VjsfSectionNode = Omit<SectionNode, 'options'> & {
57
57
  export type VjsfSelectNode = Omit<SelectNode, 'options'> & {
58
58
  options: VjsfOptions;
59
59
  };
60
+ export type VjsfRadioGroupNode = Omit<RadioGroupNode, 'options'> & {
61
+ options: VjsfOptions;
62
+ };
63
+ export type VjsfCheckboxGroupNode = Omit<CheckboxGroupNode, 'options'> & {
64
+ options: VjsfOptions;
65
+ };
66
+ export type VjsfSwitchGroupNode = Omit<SwitchGroupNode, 'options'> & {
67
+ options: VjsfOptions;
68
+ };
60
69
  export type VjsfSliderNode = Omit<SliderNode, 'options'> & {
61
70
  options: VjsfOptions;
62
71
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}