The cols could have been a lot cleaner with simple classnames, but I preferred to mark up in a way that reveals the purpose (otherwise they could be used for styling).
It doesn't seem to be any faster comparing querySelector('[data]') vs class, or iterating through the dom nodes.
Nested forms are not valid HTML and we were submitting the wrong
authenticity token to Rails when updating the enterprise.
I inverted the hierarchy of the form and the panels. The menu and
tab-panel structure now sits above and the enterprise edit form is
nested within.
The current structure is not ideal but it's only a transition phase. I'm
expecting the page to get re-designed at some point and re-writen
without AngularJS.
Didn't even need to touch the controller, because data-turbo-stream tells it to render the turbo_stream format ✨
But you might notice that it doesn't redirect to the right return_url yet. Let's see if we can use more Turbo to avoid the page refresh..
TODO: also handle empty images
The validation message is on "tax_category", so labels and error messages can use that to show the error state.
But the select field has to be "tax_category_id" to work.
Simple Rails forms prevent double-clicking on submit already. Converting
the StimulusReflex interaction to a simple form submit to a controller
solves the race condition.
The UX is slightly worse because the whole page is reloaded instead
rendering only the connected app panel. But we can solve that when we
add more apps and want to activate them independently. By then, we may
have good patterns for working with Turbo.
Technically, the new buttons are a form within a form which is invalid
HTML, but it works.
When elements are removed from the DOM, they remain in the recordElements array. But we can simply ignore them.
We have to wait until after rails-nested-form:remove is completed before toggleFormChanged.
hmm It would be even better to remove them from the array..
- Styling(in red) for the remove button/link in view
- A remove method to the bulk_form controller
- removes elements from the Dom
- removes changed elements from the binded Array in controller
- so that menu that indicates changes disappear and blured elements
- resume to non blurring state
- Added the corresponding specs
- test with one, two variants
- test with two different products
I'm not happy about it, but we need it to be a standard link to make it work. I assume it's because BulkFormController.preventLeavingChangedForm() isn't smart enough.
This reverts commit 91f0a80189.