Skip to content

config.default_form_class should not be *overriden* but *complemented* when html: { :class } is specified #1819

Open
@jerefrer

Description

I just updated a very old project and the CSS exploded for my forms.

Took me a while to realize that it all came from:

= simple_form_for user, html: { class: ('compact' if request.xhr?) }

In which the html: { class: ('compact' if request.xhr?) } actually replaced the default class from the config file:

config.default_form_class = 'ui form'

because if request.xhr? is false, then html[:class] is nil, but it still overrides the default class from the config file.

Alright I thought, maybe it comes from having html[:class] as nil, so I changed my code to only pass the html[:class] bit if request.xhr? is true.
That's kind of annoying, but why not.

But then I realized that when request.xhr? is actually true, I also have my forms go unstyled.

So when request.xhr? is true, I have to specify that I want the compact css class, but also to explicitly specify that I still want to keep the default one.

This doesn't look very DRY to me, because I have to repeat the default form class everywhere I want to add an extra class to the default.

It all originate from here it seems: 1e8bba7

And I wonder if it was actually a good move to accept this behavior.

What do you think? Should we revert to an additive behavior instead of substitutive?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions