Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue: Content type actions generate half-functioning block fields. #808

Closed
theinfinit opened this issue May 17, 2024 · 5 comments
Closed
Labels
bug Something isn't working In BETA The current task is available for testing in the BETA version. v10.2.0 Project: v10.2.0 v10.3.0 Project: v10.3.0

Comments

@theinfinit
Copy link

Describe the bug

I have used the Content type action "Add missing fields" to generate missing fields based on the frontmatter.

It generated structure that is using block type with fields instead of fieldGroup as described in the documentation. And it is almost working.

  1. Records can be correctly removed and swapped,
  2. but editing and adding new records doesn't seem to work.

The generated structure is actually great, and what I would expect. Defining working structures like this without fieldGroup property will be really handy, as it is often unnecessary for creation of working frontmatter schema.

To Reproduce

Steps to reproduce the behavior:

  1. Add missing field to the frontmatter:
---
hero:
  title: |
    Welcome to Starlight
  tagline: Congrats on setting up a new Starlight project!
  image:
    file: ~/assets/houston.webp
  actions:
    - text: Example Guide
      link: /guides/example/
      icon: right-arrow
      variant: primary
    - text: Read the Starlight docs
      link: https://starlight.astro.build
      icon: external
---
  1. Click on 'Add missing fields'
  2. See generated fields.

Expected behavior

It's expected for "Content type actions" to generate valid, working fields. Additionally, editing and adding new records while using fields with block will be valuable addition.

Screenshots

As you can see, each object is properly recognized and swapped, so it seems like any kind of discriminator (like fieldGroup) is not necessary for Front Matter CMS to recognize and handle the objects correctly. But addition is for sure more complex :)

front-matter-block-with-fields.mp4

Desktop (please complete the following information):

  • OS: Win11
  • Version: Beta v10.2.9129636

Additional context: Generated part of the config

  {
    "title": "hero",
    "name": "hero",
    "type": "fields",
    "fields": [
      {
        "title": "title",
        "name": "title",
        "type": "string"
      },
      {
        "title": "tagline",
        "name": "tagline",
        "type": "string"
      },
      {
        "title": "image",
        "name": "image",
        "type": "fields",
        "fields": [
          {
            "title": "file",
            "name": "file",
            "type": "string"
          }
        ]
      },
      {
        "title": "actions",
        "name": "actions",
        "type": "block",
        "fields": [
          // Note: It actually generated two objects, for each entry present in the frontmatter
          {
            "title": "0",
            "name": "0",
            "type": "fields",
            "fields": [
              {
                "title": "text",
                "name": "text",
                "type": "string"
              },
              {
                "title": "link",
                "name": "link",
                "type": "string"
              },
              {
                "title": "icon",
                "name": "icon",
                "type": "string"
              },
              {
                "title": "variant",
                "name": "variant",
                "type": "string"
              }
            ]
          },
        ]
      }
    ]
  },
@theinfinit theinfinit added the bug Something isn't working label May 17, 2024
@estruyf
Copy link
Owner

estruyf commented May 21, 2024

Thanks for opening an issue for this. Some enhancements are required to support more "complicated" structures.

@project-labels project-labels bot added v10.2.0 Project: v10.2.0 In progress This is actively being worked on labels May 23, 2024
@estruyf
Copy link
Owner

estruyf commented May 23, 2024

@theinfinit I have added support for your sample in the latest beta.

The above example should now generate a new field group:

{
  "frontMatter.taxonomy.fieldGroups": [
    {
      "id": "actions_group",
      "fields": [
        {
          "title": "text",
          "name": "text",
          "type": "string"
        },
        {
          "title": "link",
          "name": "link",
          "type": "string"
        },
        {
          "title": "icon",
          "name": "icon",
          "type": "string"
        },
        {
          "title": "variant",
          "name": "variant",
          "type": "string"
        }
      ]
    }
  ]
}

And map this group in for the block field:

{
  "title": "actions",
  "name": "actions",
  "type": "block",
  "fieldGroup": [
    "actions_group"
  ]
}

This allows you to change the values from the UI:

Image

@project-labels project-labels bot added In BETA The current task is available for testing in the BETA version. and removed In progress This is actively being worked on labels May 23, 2024
@theinfinit
Copy link
Author

Thank you Elio for the fast response! I appreciate your dedication.

I tested your example with beta v10.2.9211615. I can edit the fields now. Output of the Content type action improved a lot too.

The only thing that is bothering me, is the added fieldGroup field. For simple cases like this, where we have an array of objects (each with the same schema). And considering the editing capabilities of the current solution — I would advocate for the ability to disable the addition of the fieldGroup.

Why?
Sometimes the frontmatter schema is configured in a strict way and doesn't allow the unknown fields. In such cases, you'll have to extend the schema with dummy fieldGroup field to make things work again.


Also, for more complex cases, and easier integration with existing websites, the ability to rename the fieldGroup discriminator, would help with the adoption of the Front Matter CMS.

What do you think?

@estruyf
Copy link
Owner

estruyf commented May 23, 2024

The fieldGroup property was introduced because there are situations where multiple types of field groups were added. The fieldGroup property links it with the correct group.

We can look into removing this property when only one group is defined. For that we best create a new issue to track its progress.

@theinfinit
Copy link
Author

That will be great. It is pretty common case, that discriminator is not used for arrays of objects of the same type.

@project-labels project-labels bot added Released The task has been released and removed In BETA The current task is available for testing in the BETA version. labels Jun 12, 2024
@estruyf estruyf closed this as completed Jun 12, 2024
@project-labels project-labels bot added v10.3.0 Project: v10.3.0 In BETA The current task is available for testing in the BETA version. and removed Released The task has been released labels Jun 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working In BETA The current task is available for testing in the BETA version. v10.2.0 Project: v10.2.0 v10.3.0 Project: v10.3.0
Projects
None yet
Development

No branches or pull requests

2 participants