@bagelink/vue 0.0.1043 → 0.0.1048

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.
@@ -1 +1 @@
1
- {"version":3,"file":"BagelFormUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BagelFormUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BagelFormUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BagelFormUtils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "0.0.1043",
4
+ "version": "0.0.1048",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Neveh Allon",
@@ -22,7 +22,7 @@ import { FORM_STATE_KEY } from './useBagelFormState'
22
22
 
23
23
  const props = defineProps<{
24
24
  field: Field<T>
25
- id?: string
25
+ fieldID?: string
26
26
  modelValue?: any
27
27
  parentPath?: string
28
28
  }>()
@@ -51,27 +51,27 @@ const is = $computed(() => {
51
51
  if (props.field.$el === 'file') return FileUpload
52
52
  if (props.field.$el === 'date') return DateInput
53
53
  if (props.field.$el === 'tabs') return TabsNav
54
- if (props.field.$el === 'form') return BglForm
54
+ if (props.field.$el === 'bglform') return BglForm
55
55
  return props.field.$el ?? 'div'
56
56
  })
57
57
 
58
58
  const fieldData = $computed({
59
59
  get: () => {
60
- if (!props.id) return props.field.defaultValue ?? (props.field.$el === 'form' ? {} : '')
61
- const value = formState?.getFieldData(props.id)
60
+ if (!props.fieldID) return props.field.defaultValue ?? (props.field.$el === 'form' ? {} : '')
61
+ const value = formState?.getFieldData(props.fieldID)
62
62
  if (props.field.$el === 'form' && !value) return {}
63
63
  return value ?? ''
64
64
  },
65
65
  set: (val: any) => {
66
- if (!props.id) return
67
- const currentValue = formState?.getFieldData(props.id)
66
+ if (!props.fieldID) return
67
+ const currentValue = formState?.getFieldData(props.fieldID)
68
68
  if (JSON.stringify(val) === JSON.stringify(currentValue)) return
69
69
 
70
70
  emit('update:modelValue', val)
71
71
  if (props.field.onUpdate) {
72
72
  props.field.onUpdate(val, currentValue)
73
73
  }
74
- formState?.updateField(props.id, val)
74
+ formState?.updateField(props.fieldID, val)
75
75
  }
76
76
  })
77
77
 
@@ -94,6 +94,7 @@ const computedOptions = $computed(
94
94
 
95
95
  const computedAttrs = $computed(() => {
96
96
  const attrs = { ...customAttrs, ...props.field.attrs }
97
+ delete attrs.schema
97
98
  return bindAttrs(attrs, fieldData, formState?.data.value)
98
99
  })
99
100
 
@@ -107,8 +108,8 @@ const computedClass = $computed(
107
108
  v-bind="computedAttrs"
108
109
  :is="is"
109
110
  v-if="vIf"
110
- :id="props.id"
111
111
  v-model="fieldData"
112
+ :fieldID="props.fieldID"
112
113
  :required="field.required"
113
114
  :class="computedClass"
114
115
  :label="field.label"
@@ -119,17 +120,14 @@ const computedClass = $computed(
119
120
  :helptext="field.helptext"
120
121
  :schema="field.attrs?.schema ?? undefined"
121
122
  >
122
- <template v-if="field.$el === 'form'">
123
- <slot />
124
- </template>
125
- <template v-else>
123
+ <template v-for="(child, ii) in field.children" :key="ii">
126
124
  <BglField
127
- v-for="(child, ii) in field.children"
128
- :id="[props.id, child.id].filter(Boolean).join('.')"
129
- :key="child.id || ii"
125
+ v-if="(typeof child !== 'string')"
126
+ :fieldID="[props.fieldID, child.id].filter(Boolean).join('.')"
130
127
  :field="child"
131
- :parent-path="props.id"
128
+ :parent-path="props.fieldID"
132
129
  />
130
+ <span v-else>{{ child }}</span>
133
131
  </template>
134
132
  </component>
135
133
  </template>
@@ -8,28 +8,30 @@ export type FormStatus = 'idle' | 'loading' | 'success' | 'error'
8
8
  const props = withDefaults(
9
9
  defineProps<{
10
10
  label?: string
11
- id?: string
11
+ fieldID?: string
12
12
  schema: BglFormSchemaFnT<any>
13
13
  modelValue?: { [key: string]: any }
14
14
  onDelete?: (id: string) => void
15
15
  onSubmit?: (data: any) => void
16
16
  status?: FormStatus
17
+ tag?: 'template' | 'form'
17
18
  }>(),
18
19
  {
19
20
  modelValue: () => ({}),
21
+ tag: 'form',
20
22
  },
21
23
  )
22
24
 
23
25
  const emit = defineEmits(['update:modelValue', 'submit', 'dirty'])
24
26
 
25
- const slots = useSlots()
27
+ const slots = useSlots() as any
26
28
  const { showModal } = useModal()
27
29
  const instAt = new Date()
28
30
  const timeSinceInst = () => Date.now() - instAt.getTime()
29
31
 
30
32
  // Check if we're a nested form
31
33
  const existingFormState = inject<BagelFormState | undefined>(FORM_STATE_KEY)
32
- const isNested = Boolean(existingFormState && props.id)
34
+ const isNested = Boolean(existingFormState && props.fieldID)
33
35
 
34
36
  // Only provide new form state if we're not nested
35
37
  const { data, isDirty } = isNested
@@ -119,11 +121,11 @@ defineExpose({
119
121
  </script>
120
122
 
121
123
  <template>
122
- <template v-if="id">
124
+ <template v-if="tag === 'template'">
123
125
  <BglField
124
126
  v-for="(field, i) in computedSchema"
125
- :id="[id, field.id].filter(Boolean).join('.')"
126
127
  :key="field.id || `${i}p`"
128
+ :fieldID="field.id"
127
129
  :field="field"
128
130
  />
129
131
  <slot name="submit" :submit="runSubmit" :isDirty="isDirty" :validateForm="validateForm" />
@@ -136,8 +138,8 @@ defineExpose({
136
138
  <Title v-if="label" tag="h4" :label="label" />
137
139
  <BglField
138
140
  v-for="(field, i) in computedSchema"
139
- :id="field.id"
140
141
  :key="field.id || `${i}p`"
142
+ :fieldID="field.id"
141
143
  :field="field"
142
144
  />
143
145
  <slot name="submit" :submit="runSubmit" :isDirty="isDirty" :validateForm="validateForm" />
@@ -115,19 +115,30 @@ const displayTo = $computed(() => formatValue(validTo))
115
115
  class="txt-center txt-12 range-slider-position-txt absolute line-height-1 opacity-0"
116
116
  :style="{ '--progress': `${fromPercentage}` }"
117
117
  >
118
- {{ displayFrom }}
118
+ <slot v-if="!multiRange" name="progress" :progress="displayFrom" :min="formatValue(min)" :max="formatValue(max)">
119
+ {{ displayFrom }}
120
+ </slot>
121
+ <slot v-if="multiRange" name="from" :from="displayFrom" :to="displayTo" :min="formatValue(min)" :max="formatValue(max)">
122
+ {{ displayFrom }}
123
+ </slot>
119
124
  </p>
120
125
  <p
121
126
  v-if="multiRange && validTo !== max"
122
127
  class="txt-center txt-12 range-slider-position-txt opacity-0 line-height-1 absolute"
123
128
  :style="{ '--progress': `${toPercentage}` }"
124
129
  >
125
- {{ displayTo }}
130
+ <slot name="to" :to="displayTo" :from="displayFrom" :min="formatValue(min)" :max="formatValue(max)">
131
+ {{ displayTo }}
132
+ </slot>
126
133
  </p>
127
134
  </div>
128
135
  <p class="txt-center txt-14 user-select-none range-slider-txt flex space-between opacity-4 mx-05">
129
- <span>{{ formatValue(min) }}</span>
130
- <span>{{ formatValue(max) }}</span>
136
+ <slot name="min" :max="formatValue(max)" :min="formatValue(min)" :from="displayFrom" :to="displayTo" :progress="displayFrom">
137
+ <span>{{ formatValue(min) }}</span>
138
+ </slot>
139
+ <slot name="max" :max="formatValue(max)" :min="formatValue(min)" :from="displayFrom" :to="displayTo" :progress="displayFrom">
140
+ <span>{{ formatValue(max) }}</span>
141
+ </slot>
131
142
  </p>
132
143
  </div>
133
144
  </template>
@@ -29,7 +29,7 @@ export interface BaseBagelField<T = { [key: string]: any }> {
29
29
  'id'?: string
30
30
  'label'?: string
31
31
  'placeholder'?: string
32
- 'children'?: Field<T>[]
32
+ 'children'?: (Field<T> | string)[]
33
33
  'class'?: AttributeValue | AttributeFn<T>
34
34
  'attrs'?: Attributes<T>
35
35
  'required'?: boolean
@@ -221,7 +221,7 @@ export function findBglFieldById(id: string, _schema: BglFormSchemaT): Field | u
221
221
  for (const field of _schema) {
222
222
  if (field.id === id) return field
223
223
  if (field.children && Number(field.children.length) > 0) {
224
- const child = findBglFieldById(id, field.children)
224
+ const child = findBglFieldById(id, field.children.filter(c => typeof c !== 'string'))
225
225
  if (child) return child
226
226
  }
227
227
  }