@koumoul/vjsf 3.15.8 → 3.16.0

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.15.8",
3
+ "version": "3.16.0",
4
4
  "description": "Generate forms for the vuetify UI library (vuejs) based on annotated JSON schemas.",
5
5
  "scripts": {
6
6
  "test": "vitest run",
@@ -68,11 +68,11 @@
68
68
  },
69
69
  "peerDependencies": {
70
70
  "vue": "^3.4.3",
71
- "vuetify": "^3.6.13"
71
+ "vuetify": "^3.8.12"
72
72
  },
73
73
  "dependencies": {
74
- "@json-layout/core": "~1.10.10",
75
- "@json-layout/vocabulary": "~2.3.3",
74
+ "@json-layout/core": "~1.11.0",
75
+ "@json-layout/vocabulary": "~2.4.0",
76
76
  "@vueuse/core": "^12.5.0",
77
77
  "debug": "^4.3.4"
78
78
  },
@@ -7,10 +7,12 @@ import { computed, ref, toRef, watch } from 'vue'
7
7
  import Debug from 'debug'
8
8
  import { getDateTimeParts, getDateTimeWithOffset, localeKeyboardFormat } from '../../utils/dates.js'
9
9
  import useNode from '../../composables/use-node.js'
10
+ import useCompDefaults from '../../composables/use-comp-defaults.js'
10
11
 
11
12
  const debug = Debug('vjsf:date-picker')
12
13
 
13
14
  useDefaults({}, 'VjsfDatePicker')
15
+ const datePickerDefaults = useCompDefaults('VDatePicker', { hideHeader: true })
14
16
 
15
17
  const props = defineProps({
16
18
  modelValue: {
@@ -44,7 +46,7 @@ const updateValue = (/** @type {Date | null} */value) => {
44
46
 
45
47
  const datePickerProps = computed(() => {
46
48
  /** @type Record<String, any> */
47
- const datePickerProps = { ...compProps.value }
49
+ const datePickerProps = { ...datePickerDefaults.value, ...compProps.value }
48
50
  datePickerProps.hideActions = true
49
51
  if (localData.value) datePickerProps.modelValue = new Date(/** @type {string} */(localData.value))
50
52
  datePickerProps['onUpdate:modelValue'] = (/** @type {Date} */value) => {
@@ -1,7 +1,7 @@
1
1
  <script setup>
2
2
  import TextFieldMenu from '../fragments/text-field-menu.vue'
3
3
  import { VDatePicker } from 'vuetify/components/VDatePicker'
4
- import { VTimePicker } from 'vuetify/labs/VTimePicker'
4
+ import { VTimePicker } from 'vuetify/components/VTimePicker'
5
5
  import { VDefaultsProvider } from 'vuetify/components/VDefaultsProvider'
6
6
  import { VTabs, VTab, VTabsWindow, VTabsWindowItem } from 'vuetify/components/VTabs'
7
7
  import { VIcon } from 'vuetify/components/VIcon'
@@ -13,7 +13,8 @@ import useNode from '../../composables/use-node.js'
13
13
  import useCompDefaults from '../../composables/use-comp-defaults.js'
14
14
 
15
15
  useDefaults({}, 'VjsfDatePicker')
16
- const timePickerDefaults = useCompDefaults('VTimePicker')
16
+ const datePickerDefaults = useCompDefaults('VDatePicker', { hideHeader: true })
17
+ const timePickerDefaults = useCompDefaults('VTimePicker', { title: '' })
17
18
 
18
19
  const props = defineProps({
19
20
  modelValue: {
@@ -37,7 +38,7 @@ watch(menuOpened, () => { tab.value = 'date' })
37
38
  const { compProps, localData } = useNode(toRef(props, 'modelValue'), props.statefulLayout)
38
39
 
39
40
  const datePickerProps = computed(() => {
40
- const datePickerProps = { ...compProps.value }
41
+ const datePickerProps = { ...datePickerDefaults.value, ...compProps.value }
41
42
  datePickerProps.hideActions = true
42
43
  if (localData.value) datePickerProps.modelValue = new Date(localData.value)
43
44
  datePickerProps['onUpdate:modelValue'] = (/** @type {Date} */value) => {
@@ -1,6 +1,6 @@
1
1
  <script>
2
- import { defineComponent, h, computed, toRef } from 'vue'
3
- import { VTextField } from 'vuetify/components/VTextField'
2
+ import { defineComponent, h, computed, toRef, watch } from 'vue'
3
+ import { VNumberInput } from 'vuetify/components/VNumberInput'
4
4
  import useNode from '../../composables/use-node.js'
5
5
  import { useDefaults } from 'vuetify'
6
6
 
@@ -21,18 +21,19 @@ export default defineComponent({
21
21
  useDefaults({}, 'VjsfNumberField')
22
22
 
23
23
  const { inputProps, localData, compSlots } = useNode(
24
- toRef(props, 'modelValue'), props.statefulLayout, { layoutPropsMap: ['step', 'min', 'max', 'placeholder'], bindData: false }
24
+ toRef(props, 'modelValue'), props.statefulLayout, { layoutPropsMap: ['step', 'min', 'max', 'precision', 'placeholder'] }
25
25
  )
26
26
 
27
+ watch(localData, () => console.log('data', localData))
28
+
27
29
  const fullProps = computed(() => {
28
30
  const fullProps = { ...inputProps.value }
29
- fullProps.type = 'number'
30
- fullProps['onUpdate:modelValue'] = (/** @type string */value) => props.statefulLayout.input(props.modelValue, value ? Number(value) : undefined)
31
31
  fullProps.modelValue = localData.value
32
+ console.log('FULL PROPS', fullProps)
32
33
  return fullProps
33
34
  })
34
35
 
35
- return () => h(VTextField, fullProps.value, compSlots.value)
36
+ return () => h(VNumberInput, fullProps.value, compSlots.value)
36
37
  }
37
38
  })
38
39
 
@@ -1,8 +1,9 @@
1
1
  <script setup>
2
2
  import TextFieldMenu from '../fragments/text-field-menu.vue'
3
- import { VTimePicker } from 'vuetify/labs/VTimePicker'
3
+ import { VTimePicker } from 'vuetify/components/VTimePicker'
4
4
  import { VIcon } from 'vuetify/components/VIcon'
5
5
  import { VDefaultsProvider } from 'vuetify/components/VDefaultsProvider'
6
+ import { VSheet } from 'vuetify/components/VSheet'
6
7
  import { useDate, useDefaults } from 'vuetify'
7
8
  import { computed, toRef } from 'vue'
8
9
  import { getShortTime, getLongTime } from '../../utils/dates.js'
@@ -10,7 +11,7 @@ import useNode from '../../composables/use-node.js'
10
11
  import useCompDefaults from '../../composables/use-comp-defaults.js'
11
12
 
12
13
  useDefaults({}, 'VjsfTimePicker')
13
- const timePickerDefaults = useCompDefaults('VTimePicker')
14
+ const timePickerDefaults = useCompDefaults('VTimePicker', { title: '' })
14
15
 
15
16
  const props = defineProps({
16
17
  modelValue: {
@@ -46,11 +47,13 @@ const timePickerProps = computed(() => {
46
47
  <template #prepend-inner>
47
48
  <v-icon :icon="statefulLayout.options.icons.clock" />
48
49
  </template>
49
- <v-defaults-provider :defaults="{global: { density: 'default' }}">
50
- <v-time-picker
51
- v-bind="timePickerProps"
52
- @update:model-value="value => {statefulLayout.input(props.modelValue, value && getLongTime(value))}"
53
- />
54
- </v-defaults-provider>
50
+ <v-sheet style="width: 328px">
51
+ <v-defaults-provider :defaults="{global: { density: 'default' }}">
52
+ <v-time-picker
53
+ v-bind="timePickerProps"
54
+ @update:model-value="value => {statefulLayout.input(props.modelValue, value && getLongTime(value))}"
55
+ />
56
+ </v-defaults-provider>
57
+ </v-sheet>
55
58
  </text-field-menu>
56
59
  </template>