decaporg / decap-cms

A Git-based CMS for Static Site Generators
https://decapcms.org
MIT License
17.83k stars 3.04k forks source link

[i18n] duplicate boolean field is not reactive #7086

Open razonyang opened 8 months ago

razonyang commented 8 months ago

Describe the bug

I have a duplicate boolean field comments, when changing it in one locale, the field won't sync in other locales.

The problem is that the boolean widget does not update in real-time, while string and other widgets do. Once you save the page and refresh it, it will switch to the correct value.

To Reproduce Have a boolean widget with i18n: duplicate, show 2 locales side-by-side, and toggle it. The widget on the other locale will not update.

Expected behavior The toggle on the second locale should provide feedback in real time as the string widget does.

Screenshots

image

Applicable Versions:

CMS configuration

Updated for clarity

local_backend: true
locale: en
media_folder: static/images/uploads
public_folder: /images/uploads
backend:
  name: git-gateway
collections:
- create: true
  folder: content/foo
  i18n: true
  label: Foo
  name: foo
  fields:
  - default: true
    hint: Whether to show comments.
    i18n: duplicate
    label: Comments
    name: comments
    required: false
    widget: boolean
  - i18n: duplicate
    label: Nav Weight
    name: nav_weight
    widget: number

Additional context

martinjagodic commented 8 months ago

I don't see a comments field in your config, could that be the problem?

razonyang commented 8 months ago

Sorry, I cut off the wrong part, updated with full configuration (maybe too long).

martinjagodic commented 8 months ago

What happens if you remove default and/or required? nav_weight doesn't have them, does it work as expected?

razonyang commented 8 months ago

What happens if you remove default and/or required?

Same issue when 1) remove one of them, 2) remove all of them.

nav_weight doesn't have them, does it work as expected?

Yep, the nav_weight works as expected.

image

razonyang commented 8 months ago

The field will be synchronized after clicking the Toggle i18n button twice.

martinjagodic commented 8 months ago

Could you prepare a minimum reproducible config? This one is very large so it's hard to determine the real culprit

razonyang commented 8 months ago

Sure.

backend:
  name: git-gateway
collections:
- create: true
  fields:
  - default: true
    hint: Whether to show comments.
    i18n: duplicate
    label: Comments
    name: comments
    required: false
    widget: boolean
  - i18n: duplicate
    label: Nav Weight
    name: nav_weight
    widget: number
  folder: content/foo
  i18n: true
  label: Foo
  name: foo
i18n:
  default_locale: en
  locales:
  - en
  - zh-hans
  - zh-hant
  structure: multiple_files
local_backend: true
locale: en
logo_url: http://localhost:7070/images/logo.png
media_folder: static/images/uploads
public_folder: /images/uploads
publish_mode: editorial_workflow
search: true
site_url: http://localhost:7070/

decapcms-boolean-i18n-duplicate

martinjagodic commented 8 months ago

The problem is that the boolean widget does not update in real-time, while string and other widgets do. Once you save the page and refresh it, it will switch to the correct value.

I have other priorities at the moment but I would gladly accept a PR that fixes this.

I updated the original post and title to describe the issue better.