31 Commits

Author SHA1 Message Date
Gaetan Craig-Riou
31afdfd8c4 Disable "enter" hotkeys only on tag input element
We are still able to use enter to submit the form on anyother input.The
tag input creates a new tag when enter is pressed
2025-04-22 13:42:09 +10:00
Gaetan Craig-Riou
559249b621 Improve tagListInputController to integrate with bulkFormController
tagListInputController is not a standard form controller so we had to
make a few changes to integrate with the change tracking used int
bulkFormController. Mainly we make sure to manually trigger event when
deleting a tags, and we handle the change highlight.
2025-04-22 13:41:01 +10:00
Gaetan Craig-Riou
6ff4c2c3aa Disable submitting form with enter key
We need to the enter key available to create new tags
2025-04-22 13:41:01 +10:00
Gaetan Craig-Riou
4ad6971121 Fix Bulk product edit system spec after rebase 2024-10-14 15:01:18 +11:00
Ahmed Ejaz
4b9141f66d 11987 - add products table mutation listner 2024-06-20 12:44:55 +05:00
David Cook
4f287ffe05 When dropdown fields don't allow blank, but are blank, show as changed
They were already counted as changed by the javascript, but didn't have a 'changed' class to indicate it.
The reason they are 'changed', is because the dropdown has no blank option, and is forced to select the first item in the list.

This is purely to cover the case of invalid data, but should help a lot when debugging data issues. I don't think it's any less efficient, because the extra 'classList.toggle' calls don't do anything on unchanged fields.
2024-05-27 17:14:18 +10:00
David Cook
da77994a89 Ignore disconnected form elements
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..
2024-05-14 11:26:40 +10:00
David Cook
b45df8a723 Use built-in feature to delete new record row
I looked at the source code and found that we were missing one detail: data-new-record.
https://github.com/stimulus-components/stimulus-rails-nested-form/blob/master/src/index.ts#L32-L35

It's documented here, but it's easy to miss: https://www.stimulus-components.com/docs/stimulus-rails-nested-form/
2024-05-14 11:25:52 +10:00
cyrillefr
808f1c65f2 Requested changes on Delete Button missing
- 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
2024-05-14 11:25:22 +10:00
Ahmed Ejaz
b577a81f48 11060 - add tax category field 2024-05-07 14:59:14 +02:00
David Cook
dadabcf8ad Prettify 2024-04-10 15:17:56 +01:00
David Cook
d904c2a494 Don't warn when submitting form 2024-04-10 15:17:56 +01:00
David Cook
d238fc0cad TODO: optimise and fix bug 2024-03-27 20:20:20 +11:00
David Cook
bfd6319cf2 Mark tom-select as changed
Thankfully I was able to use basic DOM features, so there's no coupling of the logic with tom-select.

It wasn't going to be simple to get tom-select to listen for the 'changed' class on the original select, so I found a simple solution with a CSS sibling selector instead.
2024-03-06 13:41:22 +11:00
David Cook
915a5ce66b Listen for changes on added fields
Finally, we can add new variants!

Requires updated stimulus-rails-nested-form
2024-02-16 08:51:49 +11:00
David Cook
3706b6d1da Make actions target optional
This is to make testing simpler, but it is strictly optional anyway.
2024-02-15 17:32:08 +11:00
David Cook
765ee0ed78 refactor js 2024-02-15 17:32:08 +11:00
David Cook
373743f96d Simplify event handlers
The new 'input' event is for this exact use case.
2023-11-28 10:44:34 +11:00
David Cook
5e96368c85 Count changed checkboxes 2023-11-28 10:44:34 +11:00
David Cook
735b5789cc [wip] Style on-hand button
Had to update the form controller a little bit to handle buttons.

But arrow not showwing on focus.
Getting some weird SCSS behaviour here.. maybe I'm trying to be too clever.
2023-11-28 10:44:34 +11:00
David Cook
7fe6f3fe89 Disable form elements in a disabled-section
I chose to use the 'elements' collection rather than choosing which elements to include (ie this supports inputs, textareas, buttons and anything else I didn't think of). It could be a bit simpler if we assume the element is a form. Even simpler if it's a fieldset (that has a disabled property). But I didn't want to limit it too much.

Unfortunately JS is quite ugly compared to Ruby. And 'prettier' made it uglier in my opinion.
2023-11-03 14:32:58 +11:00
David Cook
d0abbc5d2c Ensure error summary always shows when error
Best viewed with whitespace ignored.
2023-11-03 14:32:58 +11:00
David Cook
41cf0bedfc Fix: Handle missing attributes 2023-11-03 14:32:58 +11:00
David Cook
fdad45bb46 Rename 'modified' state to 'changed'
This conveniently matches the terminology used in both JavaScript and ActiveModel::Dirty.
2023-10-24 15:21:13 +11:00
David Cook
ed207e3df6 DRY up code 2023-10-04 13:40:36 +02:00
David Cook
4467758a9f Apply code suggestion
Co-authored-by: Jean-Baptiste Bellet <jb.bellet@gmail.com>
2023-10-04 13:40:36 +02:00
David Cook
e075d40525 Prevent accidentally leaving the page 2023-09-15 16:00:41 +10:00
David Cook
8ff67aca41 Disable filters and sorting when form is modified
Stimulus controllers aren't supposed to reach outside their own element (so we can't do this with targets). Perhaps the controller should be bigger to encompass more, but I wanted to see if I could avoid making a mega component that does everything. For now it seems appropriate just to pass a selector in.
Another option is to publish events on other controllers using Outlets, but I don't know if we need to go there just yet.
2023-09-15 15:45:48 +10:00
David Cook
15f7a8299b Show form actions only when modified 2023-09-15 15:45:48 +10:00
David Cook
daefada5a9 Show summary of modified records
I found myself trying to write Ruby in Javascript, and it's not nearly as pretty..
Javascript now has more advanced data structures like Map, but it's rather useless because it doesn't have the usual iterator methods (such as filter, map, reduce etc).

Also for the spec I wasn't sure of the best approach, so will gladly recieve feedback.
2023-09-15 15:45:48 +10:00
David Cook
18e40bebd0 Mark modified fields 2023-09-15 15:45:45 +10:00