Commit Graph

225 Commits

Author SHA1 Message Date
Filipe
c9084db933 Merge pull request #11761 from binarygit/open-external-links-in-new-page
Open external links in product description in a new page
2023-11-17 10:30:03 +00:00
binarygit
f52c7e8a5d Rename richtext controller and write specs 2023-11-13 21:31:41 +05:45
binarygit
e78fe663d2 Open external links in product description in a new page 2023-11-13 21:31:41 +05:45
Ryan Murphy
5c4b06730b Fix navigation behavior on enterprise panel tabs 2023-11-10 12:26:16 -05: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
Gaetan Craig-Riou
4639e53673 Remove insertToolTipMarkup
It's not great to have Stimulus controller rendering markup on `connect`
Stimulus is intended to add behavior to existing markup.
Plus add some documentation
2023-10-17 13:33:15 +11:00
David Cook
6f43165006 Show generic error message when StimulusReflex fails
I decided not to invest the time to figure out how to test this..

The messages should have the same effect as the 500 error, but not technically a 500 because it's not handling a HTTP response. The documentation seems to state this covers server-side errors only (not network errors for example). I couldn't find any way to handle network errors with action cable.
2023-10-04 13:40:36 +02: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
Rachel Arnould
a3ca7e9032 Merge pull request #11568 from jibees/11069-buu-fully-update-the-details-of-my-products-and-variants-1
🚧 [BUU] Add `Edit` link into a small menu on the last Actions column to the right of the table
2023-09-22 10:30:01 +02:00
Jean-Baptiste Bellet
458a031558 Create a private function for event listener 2023-09-22 09:30:40 +02:00
Jean-Baptiste Bellet
c76bc07f7f Creates a vertical-ellipsis-menu component 2023-09-19 15:32:50 +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
Jean-Baptiste Bellet
a8a35318f5 Add horizontal rule to trix editor 2023-09-04 15:46:54 +02:00
Jean-Baptiste Bellet
2abfa623f0 Once products start loading, scroll higher, ie. just above filters
can see the loading spinner then
2023-08-18 10:20:10 +02:00
David Cook
f4a6bec25d Code fix
Cache result.
2023-08-15 08:36:50 +02:00
Jean-Baptiste Bellet
3b68674896 Remove new_products_page and all associated controller/components/
new_products_page` is dead, long live `admin_style_v3` !
2023-08-10 10:02:45 +02:00
Filipe
69dfd53658 Merge pull request #11254 from rioug/11130-add-product-filter-order-report
11130 add product filter order report
2023-08-03 16:08:44 +01:00
Filipe
f816d4b2d6 Merge pull request #11235 from jibees/11223-notices-tab-on-shopfront-persisting-after-selecting-an-order-cycle
Shopfront: On non-shop tab, when changing OC, switch to shop tab and hides non-shop tab content
2023-08-02 16:02:23 +01:00
Gaetan Craig-Riou
ec78de7cea Add product dropdown on Order and Fulfillment reports
It includes loading the selected product to populate the dropdown
when needed.
2023-07-21 14:51:40 +10:00
Gaetan Craig-Riou
b4a3aaab19 Add select variant stimulus controller
This is similar to variantAutocomplete directive used on the
new order page. It doesn't have all the same feature, but it's a
start
2023-07-21 14:51:40 +10:00
Jean-Baptiste Bellet
1750575f8c Need to update tab before updating panel since we retrieve panel from tab 2023-07-19 16:28:10 +02:00
Jean-Baptiste Bellet
695f76d3b6 Update format to be solve prettier warnings 2023-07-19 16:28:03 +02:00
Jean-Baptiste Bellet
ddfc60c85e Don't use events, but call the loading controller itself 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
38d0af8ec0 Simplify: don't need to pass through the js controller
Use the reflex itself

+ Don't need to create a method that will be called only in the connect

+ Simply code by adding only two lifecycle methods

Actually it seems that all reflex related to products controller should show/hide loading
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
643897abb2 Add search functionnality 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
0fd4d892d9 This is now unused: through the js controller only at startup 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
61d1f30e04 Rename productsV3 to products: avoid upper|lower case issues
This is causing some issues, misunderstandings around case.

Therefore, directly use the Reflex, and lifecycle methods `beforeFetch` and `afterFetch` are called, even if we use the Reflex (and not the js controller methods). This is pretty handy.

+ adds some id to pagination element (https://docs.stimulusreflex.com/guide/reflexes.html#declaring-a-reflex-in-html-with-data-attributes)

Global documentation: https://docs.stimulusreflex.com/guide/reflexes.html
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
574adb88d2 Add a per page component
This is still a WIP.
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
0b83dc088d Separation of concerns: use a loading controller
Two different events can be used: `show-loading` and `hide-loading`.

I'm not 100% sure this is the right way to go, but let's try!
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
5aebbe4102 use beforeFetch and afterFetch lifecycle methods
+ Move outside `Admin` module the reflex

Therefore, this reflex should be _equivalent_ to its javascript controller: `ProductsV3` (relation is made through names)

Remove unwanted line

Actually call StimulusJS controller instead of calling the reflex itself

In order to have this "showLoading", "hideLoading" behavior.

It seems to be possible to directly use the Reflex itself (use `data-reflex` instead of `data-action`) but I can't make it work: the `stimulus-controller:after` event is never broadcasted/catched (but `stimulus-controller:before` yes...)

Documentation:
https://docs.stimulusreflex.com/guide/reflexes.html#understanding-stimulusreflex-controllers
https://docs.stimulusreflex.com/guide/lifecycle.html#generic-life-cycle-methods

Maybe @dacook if you want to have a look...
2023-07-19 14:58:39 +02:00
David Cook
d03b88cf83 Rename variables
To make it clear they are arrays
2023-07-11 10:48:52 +02:00
Jean-Baptiste Bellet
0fdf7876a6 Instanciate instance variable + use spread operator to be more concise
and efficient ;)
2023-07-11 10:48:52 +02:00
Jean-Baptiste Bellet
7084c53f38 Do not display menu is the dropdown is 'disabled'
ie. classList contains `disabled`
2023-07-11 10:48:52 +02:00
Jean-Baptiste Bellet
02aea989be Add on_click_outside behavior on dropdown_controller
"It's a Surprise Tool That Will Help Us Later"
2023-07-11 10:48:52 +02:00
Jean-Baptiste Bellet
d78af187e0 Allow dropdown controller to toggle more than one class
"It's a Surprise Tool That Will Help Us Later"
2023-07-11 10:48:51 +02:00
David Cook
05a22b80bc Merge pull request #11123 from dacook/buu-products-table
[admin_style_v3] Products table with variants
2023-07-06 09:37:31 +10:00
Filipe
97f131e556 Merge pull request #11089 from jibees/11049-invoices-actions-dropdown-menu-disappears-after-creating-the-first-invoice
[Invoices] Actions dropdown menu disappears after creating the first invoice
2023-06-29 16:23:35 +01:00
David Cook
809c15b197 Load products page with reflex
We will add the products in the next commit.
2023-06-28 09:59:57 +10:00
Maikel
a7915b8089 Merge pull request #10849 from mkllnk/report-cable
Show "loading" screen for background reports and display when ready
2023-06-26 10:25:48 +10:00
Jean-Baptiste Bellet
7421691506 Creates a dropdown controller with its specs 2023-06-21 10:29:47 +02:00
Jean-Baptiste Bellet
74fd1814e4 Create a trixeditor controller and broadcast a change event on form
Therefore, AngularJS can set form as dirty

+ add associated spec
2023-06-09 08:03:17 +02:00
Matt-Yorkley
524d1f0264 Switch to tighter Channel scoping...
This is not a normal pattern for setting up ActionCable channels, so it might need some notes. It ensures the broadcasts from the ReportJob are unique not just to the user session but also to the specific tab in the user's browser. Otherwise if the user has two different report pages open in separate tabs with the same session, the broadcast would overwrite the #report-table element in both of them.
2023-06-09 14:44:53 +10:00