'boolean' widget without default value behaves strangely
papandreou opened this issue ยท 11 comments
- Do you want to request a feature or report a bug?
bug
- What is the current behavior?
A boolean
field without a default
defined in config.yml will initially render as false
, but the field will fail the required check:
Clicking the widget twice so it turns on and back off allows me to persist a value of false
.
- If the current behavior is a bug, please provide the steps to reproduce.
- Define a field like this in config.yml:
-
label: Awesome
name: awesome
widget: boolean
- Create a new item in the collection
- Try to publish the item
You'll get an "AWESOME IS REQUIRED" error.
For the record, specifying default: false
for the field makes the problem disappear.
Because default
presently doesn't work for editor components, this problem makes it hard to get the boolean
widget working in that setting.
- What is the expected behavior?
That the error does not show and awesome: false
gets persisted. Or that an error is thrown early because the field doesn't have a default
specified. Alternatively that a distinct "undefined" state be added for boolean fields so that you could at least tell the difference between "off" and "undefined".
- Please mention your versions where applicable.
Netlify CMS version: 1.8.4
Browser version: 67.0.3396.62/OSX
Node.JS version: 9.5.0
Operating System: Mac OSX 10.13.4 (High Sierra)
@erquhart/ @papandreou is this issue still valid? It's open but it looks like a fix was merged for widgets. Just looking for an issue to help out with :)
@TatisLois, I can still reproduce it with netlify-cms@2.3.2. Which fix is that?
#1662 was never merged, that's probably why it didn't have an effect ๐
@TatisLois If you are still up for this, I can guide you on how to implement a simple fix for this issue.
@TatisLois take a look at the createEmptyDraftData function, just check for boolean
widgets that does not have any default value and assign a false
value, that's it. Also add some comments to explain the assigment. You can DM me on gitter if you have any questions ๐
I opened a PR in #2525. Reviews are welcome ๐
Specifying a false
default as in - {label: "Noindex", name: "no_index", widget: "boolean", default: false}
does not work for me. I am still forced to click twice on the toggle to make it falsy.
Hi @miguelt1, the best way to move this issue forward is to submit a contribution for it