@record-evolution/widget-form 1.0.24 → 1.0.26

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.
@@ -117,12 +117,13 @@ export class WidgetForm extends LitElement {
117
117
  let rawValue: any
118
118
 
119
119
  if (field.hiddenField) {
120
- rawValue = field.preFilledValue ?? field.defaultValue ?? ''
120
+ rawValue = this.effectivePreFilledValue(field) ?? this.effectiveDefaultValue(field) ?? ''
121
121
  } else if (field.type === 'checkbox') {
122
122
  rawValue = formData.has(name) ? 'on' : 'off'
123
123
  } else {
124
124
  const entry = formData.get(name)
125
- rawValue = entry === null || entry === '' ? (field.defaultValue ?? '') : entry
125
+ rawValue =
126
+ entry === null || entry === '' ? (this.effectiveDefaultValue(field) ?? '') : entry
126
127
  }
127
128
 
128
129
  return {
@@ -169,6 +170,31 @@ export class WidgetForm extends LitElement {
169
170
  this.dialogOpen = false
170
171
  }
171
172
 
173
+ // preFilledValue/defaultValue and their *Multiline/*Boolean twins are separate
174
+ // config keys (the editor shows a single-line, multi-line or checkbox input
175
+ // depending on the field type). Resolve by the current type — normalizing the
176
+ // boolean keys to 'true'/'false' strings for the existing downstream logic —
177
+ // and fall back to the single-line key so fields configured before the split
178
+ // keep their values. A value lingering in a hidden twin key after a type
179
+ // switch is ignored.
180
+ effectivePreFilledValue(field: Column): string | undefined {
181
+ if (field.type === 'textarea')
182
+ return (field.preFilledValueMultiline as string | undefined) ?? field.preFilledValue
183
+ if (field.type === 'checkbox')
184
+ return field.preFilledValueBoolean != null
185
+ ? String(field.preFilledValueBoolean)
186
+ : field.preFilledValue
187
+ return field.preFilledValue
188
+ }
189
+
190
+ effectiveDefaultValue(field: Column): string | undefined {
191
+ if (field.type === 'textarea')
192
+ return (field.defaultValueMultiline as string | undefined) ?? field.defaultValue
193
+ if (field.type === 'checkbox')
194
+ return field.defaultValueBoolean != null ? String(field.defaultValueBoolean) : field.defaultValue
195
+ return field.defaultValue
196
+ }
197
+
172
198
  formatValue(value: string, type: string): any {
173
199
  switch (type) {
174
200
  case 'numberfield': {
@@ -218,14 +244,16 @@ export class WidgetForm extends LitElement {
218
244
  }
219
245
 
220
246
  renderCheckbox(field: Column, i: number) {
247
+ const preFilledValue = this.effectivePreFilledValue(field)
248
+ const defaultValue = this.effectiveDefaultValue(field)
221
249
  return html`
222
250
  <div class="checkbox-container">
223
251
  <md-checkbox
224
252
  name="column-${i}"
225
253
  aria-label=${field.label ?? ''}
226
- ?checked=${String(field.preFilledValue ?? field.defaultValue) === 'true'}
254
+ ?checked=${String(preFilledValue ?? defaultValue) === 'true'}
227
255
  supporting-text=${field.description ?? ''}
228
- ?required=${field.required && !field.defaultValue && !field.preFilledValue}
256
+ ?required=${field.required && !defaultValue && !preFilledValue}
229
257
  ></md-checkbox>
230
258
  <label class="label"> ${field.label} </label>
231
259
  </div>
@@ -233,26 +261,33 @@ export class WidgetForm extends LitElement {
233
261
  }
234
262
 
235
263
  renderTextArea(field: Column, i: number) {
264
+ const preFilledValue = this.effectivePreFilledValue(field)
265
+ const defaultValue = this.effectiveDefaultValue(field)
236
266
  return html`
237
267
  <md-outlined-text-field
238
268
  .name="column-${i}"
239
269
  .label="${field.label ?? ''}"
240
270
  type="textarea"
241
- .value="${field.preFilledValue ?? ''}"
242
- .placeholder="${field.defaultValue ?? ''}"
271
+ .value="${preFilledValue ?? ''}"
272
+ .placeholder="${defaultValue ?? ''}"
243
273
  rows="3"
244
- ?required=${field.required && !field.defaultValue && !field.preFilledValue}
274
+ ?required=${field.required && !defaultValue && !preFilledValue}
245
275
  supporting-text=${field.description ?? ''}
246
276
  ></md-outlined-text-field>
247
277
  `
248
278
  }
249
279
 
250
280
  renderDropdown(field: Column, i: number) {
281
+ // Bind the value on the select itself (not just `selected` on the option):
282
+ // md-outlined-select only reports its `value` to the form via ElementInternals,
283
+ // and the declarative `selected` attribute does not reliably sync into it — so
284
+ // a prefilled option would display but submit empty.
251
285
  return html`
252
286
  <label class="label">
253
287
  ${field.label}
254
288
  <md-outlined-select
255
289
  name="column-${i}"
290
+ .value=${field.preFilledValue ?? field.defaultValue ?? ''}
256
291
  supporting-text=${field.description ?? ''}
257
292
  ?required=${field.required && !field.defaultValue && !field.preFilledValue}
258
293
  >
@@ -261,10 +296,7 @@ export class WidgetForm extends LitElement {
261
296
  (val) => val.value,
262
297
  (val) => {
263
298
  return html`
264
- <md-select-option
265
- .value="${val.value ?? ''}"
266
- ?selected="${val.value === (field.preFilledValue ?? field.defaultValue)}"
267
- >
299
+ <md-select-option .value="${val.value ?? ''}">
268
300
  ${val.displayLabel}
269
301
  </md-select-option>
270
302
  `