solidus_admin 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +23 -4
- data/README.md +6 -1
- data/Rakefile +15 -15
- data/app/assets/builds/solidus_admin/tailwind.css +722 -45
- data/app/assets/images/solidus_admin/remixicon.license.txt +196 -0
- data/app/assets/images/solidus_admin/remixicon.symbol.svg +4 -4
- data/app/blueprints/solidus_admin/state_blueprint.rb +13 -0
- data/app/components/concerns/solidus_admin/slotable_default.rb +42 -0
- data/app/components/solidus_admin/adjustment_reasons/edit/component.html.erb +6 -15
- data/app/components/solidus_admin/adjustment_reasons/edit/component.yml +0 -1
- data/app/components/solidus_admin/adjustment_reasons/index/component.rb +13 -13
- data/app/components/solidus_admin/adjustment_reasons/new/component.html.erb +6 -15
- data/app/components/solidus_admin/adjustment_reasons/new/component.yml +0 -1
- data/app/components/solidus_admin/base_component.rb +7 -3
- data/app/components/solidus_admin/layout/confirm/component.html.erb +18 -0
- data/app/components/solidus_admin/layout/confirm/component.js +21 -0
- data/app/components/solidus_admin/layout/confirm/component.rb +26 -0
- data/app/components/solidus_admin/layout/confirm/component.yml +4 -0
- data/app/components/solidus_admin/layout/flashes/alerts/component.html.erb +7 -0
- data/app/components/solidus_admin/layout/flashes/alerts/component.rb +19 -0
- data/app/components/solidus_admin/layout/flashes/component.html.erb +5 -0
- data/app/components/solidus_admin/layout/flashes/component.rb +4 -0
- data/app/components/solidus_admin/layout/flashes/toasts/component.html.erb +5 -0
- data/app/components/solidus_admin/layout/flashes/toasts/component.rb +9 -0
- data/app/components/solidus_admin/layout/navigation/account/component.html.erb +12 -1
- data/app/components/solidus_admin/layout/navigation/account/component.rb +4 -4
- data/app/components/solidus_admin/layout/page_helpers.rb +3 -9
- data/app/components/solidus_admin/layout/skip_link/component.rb +3 -3
- data/app/components/solidus_admin/option_types/edit/component.html.erb +44 -0
- data/app/components/solidus_admin/option_types/edit/component.rb +5 -0
- data/app/components/solidus_admin/option_types/edit/component.yml +10 -0
- data/app/components/solidus_admin/option_types/index/component.rb +22 -22
- data/app/components/solidus_admin/option_types/new/component.html.erb +16 -0
- data/app/components/solidus_admin/option_types/new/component.rb +4 -0
- data/app/components/solidus_admin/option_types/new/component.yml +4 -0
- data/app/components/solidus_admin/option_values/edit/component.html.erb +16 -0
- data/app/components/solidus_admin/option_values/edit/component.rb +4 -0
- data/app/components/solidus_admin/option_values/edit/component.yml +4 -0
- data/app/components/solidus_admin/option_values/new/component.html.erb +16 -0
- data/app/components/solidus_admin/option_values/new/component.rb +7 -0
- data/app/components/solidus_admin/option_values/new/component.yml +4 -0
- data/app/components/solidus_admin/option_values/table/component.rb +53 -0
- data/app/components/solidus_admin/option_values/table/component.yml +3 -0
- data/app/components/solidus_admin/orders/cart/component.html.erb +5 -7
- data/app/components/solidus_admin/orders/cart/result/component.html.erb +2 -2
- data/app/components/solidus_admin/orders/index/component.rb +26 -26
- data/app/components/solidus_admin/orders/show/address/component.html.erb +8 -20
- data/app/components/solidus_admin/orders/show/address/component.rb +7 -7
- data/app/components/solidus_admin/orders/show/address/component.yml +0 -1
- data/app/components/solidus_admin/orders/show/adjustments/index/adjustable/spree_shipment/component.rb +1 -1
- data/app/components/solidus_admin/orders/show/adjustments/index/component.rb +24 -21
- data/app/components/solidus_admin/orders/show/component.html.erb +2 -2
- data/app/components/solidus_admin/orders/show/component.rb +1 -1
- data/app/components/solidus_admin/orders/show/component.yml +0 -3
- data/app/components/solidus_admin/orders/show/customer_search/result/component.html.erb +2 -2
- data/app/components/solidus_admin/orders/show/email/component.html.erb +2 -2
- data/app/components/solidus_admin/payment_methods/edit/component.html.erb +13 -0
- data/app/components/solidus_admin/payment_methods/edit/component.rb +7 -0
- data/app/components/solidus_admin/payment_methods/edit/component.yml +2 -0
- data/app/components/solidus_admin/payment_methods/form/component.html.erb +29 -0
- data/app/components/solidus_admin/payment_methods/form/component.rb +34 -0
- data/app/components/solidus_admin/payment_methods/form/component.yml +15 -0
- data/app/components/solidus_admin/payment_methods/index/component.rb +24 -23
- data/app/components/solidus_admin/payment_methods/new/component.html.erb +12 -0
- data/app/components/solidus_admin/payment_methods/new/component.rb +7 -0
- data/app/components/solidus_admin/payment_methods/new/component.yml +2 -0
- data/app/components/solidus_admin/products/index/component.rb +26 -26
- data/app/components/solidus_admin/products/show/categories/new/component.html.erb +17 -0
- data/app/components/solidus_admin/products/show/categories/new/component.rb +17 -0
- data/app/components/solidus_admin/products/show/categories/new/component.yml +5 -0
- data/app/components/solidus_admin/products/show/component.html.erb +90 -66
- data/app/components/solidus_admin/products/show/component.rb +2 -2
- data/app/components/solidus_admin/products/show/component.yml +23 -11
- data/app/components/solidus_admin/products/status/component.rb +1 -1
- data/app/components/solidus_admin/products/stock/component.rb +7 -7
- data/app/components/solidus_admin/properties/edit/component.html.erb +5 -5
- data/app/components/solidus_admin/properties/index/component.rb +13 -13
- data/app/components/solidus_admin/properties/new/component.html.erb +5 -5
- data/app/components/solidus_admin/refund_reasons/edit/component.html.erb +6 -15
- data/app/components/solidus_admin/refund_reasons/edit/component.yml +0 -1
- data/app/components/solidus_admin/refund_reasons/index/component.rb +13 -13
- data/app/components/solidus_admin/refund_reasons/new/component.html.erb +6 -14
- data/app/components/solidus_admin/refund_reasons/new/component.yml +0 -1
- data/app/components/solidus_admin/refunds_and_returns/component.rb +7 -7
- data/app/components/solidus_admin/reimbursement_types/index/component.rb +2 -2
- data/app/components/solidus_admin/return_reasons/edit/component.html.erb +5 -14
- data/app/components/solidus_admin/return_reasons/index/component.rb +11 -11
- data/app/components/solidus_admin/return_reasons/new/component.html.erb +5 -14
- data/app/components/solidus_admin/roles/edit/component.html.erb +12 -12
- data/app/components/solidus_admin/roles/edit/component.yml +0 -1
- data/app/components/solidus_admin/roles/index/component.rb +12 -12
- data/app/components/solidus_admin/roles/new/component.html.erb +12 -12
- data/app/components/solidus_admin/roles/new/component.yml +0 -1
- data/app/components/solidus_admin/shipping/component.rb +5 -5
- data/app/components/solidus_admin/shipping_categories/edit/component.html.erb +4 -4
- data/app/components/solidus_admin/shipping_categories/edit/component.yml +0 -1
- data/app/components/solidus_admin/shipping_categories/index/component.rb +9 -9
- data/app/components/solidus_admin/shipping_categories/new/component.html.erb +4 -4
- data/app/components/solidus_admin/shipping_categories/new/component.yml +0 -1
- data/app/components/solidus_admin/shipping_methods/index/component.rb +10 -10
- data/app/components/solidus_admin/stock_items/edit/component.html.erb +5 -8
- data/app/components/solidus_admin/stock_items/edit/component.rb +2 -2
- data/app/components/solidus_admin/stock_items/index/component.rb +25 -25
- data/app/components/solidus_admin/stock_locations/edit/component.html.erb +16 -0
- data/app/components/solidus_admin/stock_locations/edit/component.rb +5 -0
- data/app/components/solidus_admin/stock_locations/edit/component.yml +2 -0
- data/app/components/solidus_admin/stock_locations/form/component.html.erb +65 -0
- data/app/components/solidus_admin/stock_locations/form/component.rb +11 -0
- data/app/components/solidus_admin/stock_locations/form/component.yml +19 -0
- data/app/components/solidus_admin/stock_locations/index/component.rb +94 -47
- data/app/components/solidus_admin/stock_locations/new/component.html.erb +16 -0
- data/app/components/solidus_admin/stock_locations/new/component.rb +16 -0
- data/app/components/solidus_admin/stock_locations/new/component.yml +2 -0
- data/app/components/solidus_admin/store_credit_reasons/edit/component.html.erb +5 -14
- data/app/components/solidus_admin/store_credit_reasons/edit/component.yml +0 -1
- data/app/components/solidus_admin/store_credit_reasons/index/component.rb +11 -11
- data/app/components/solidus_admin/store_credit_reasons/new/component.html.erb +5 -14
- data/app/components/solidus_admin/store_credit_reasons/new/component.yml +0 -1
- data/app/components/solidus_admin/stores/edit/component.html.erb +27 -0
- data/app/components/solidus_admin/stores/edit/component.rb +5 -0
- data/app/components/solidus_admin/stores/form/component.html.erb +102 -0
- data/app/components/solidus_admin/stores/form/component.rb +27 -0
- data/app/components/solidus_admin/stores/form/component.yml +17 -0
- data/app/components/solidus_admin/stores/index/component.rb +51 -22
- data/app/components/solidus_admin/stores/new/component.html.erb +16 -0
- data/app/components/solidus_admin/stores/new/component.rb +5 -0
- data/app/components/solidus_admin/stores/new/component.yml +2 -0
- data/app/components/solidus_admin/tax_categories/edit/component.html.erb +7 -15
- data/app/components/solidus_admin/tax_categories/edit/component.yml +0 -1
- data/app/components/solidus_admin/tax_categories/index/component.rb +17 -17
- data/app/components/solidus_admin/tax_categories/new/component.html.erb +7 -15
- data/app/components/solidus_admin/tax_categories/new/component.yml +0 -1
- data/app/components/solidus_admin/tax_rates/edit/component.html.erb +12 -0
- data/app/components/solidus_admin/tax_rates/edit/component.rb +5 -0
- data/app/components/solidus_admin/tax_rates/edit/component.yml +4 -0
- data/app/components/solidus_admin/tax_rates/form/component.html.erb +25 -0
- data/app/components/solidus_admin/tax_rates/form/component.rb +29 -0
- data/app/components/solidus_admin/tax_rates/form/component.yml +9 -0
- data/app/components/solidus_admin/tax_rates/index/component.rb +38 -20
- data/app/components/solidus_admin/tax_rates/new/component.html.erb +12 -0
- data/app/components/solidus_admin/tax_rates/new/component.rb +5 -0
- data/app/components/solidus_admin/tax_rates/new/component.yml +4 -0
- data/app/components/solidus_admin/taxes/component.rb +4 -4
- data/app/components/solidus_admin/taxonomies/index/component.rb +7 -7
- data/app/components/solidus_admin/turbo/target_frame/component.html.erb +5 -0
- data/app/components/solidus_admin/turbo/target_frame/component.rb +8 -0
- data/app/components/solidus_admin/ui/alert/component.html.erb +35 -0
- data/app/components/solidus_admin/ui/alert/component.rb +51 -0
- data/app/components/solidus_admin/ui/alert/component.yml +8 -0
- data/app/components/solidus_admin/ui/badge/component.rb +11 -11
- data/app/components/solidus_admin/ui/button/component.rb +84 -27
- data/app/components/solidus_admin/ui/button/component.yml +10 -0
- data/app/components/solidus_admin/ui/checkbox/component.rb +42 -0
- data/app/components/solidus_admin/ui/dropdown/component.rb +3 -3
- data/app/components/solidus_admin/ui/forms/address/component.html.erb +1 -48
- data/app/components/solidus_admin/ui/forms/address/component.rb +29 -6
- data/app/components/solidus_admin/ui/forms/address/fields/city_and_zipcode/component.html.erb +4 -0
- data/app/components/solidus_admin/ui/forms/address/fields/city_and_zipcode/component.rb +8 -0
- data/app/components/solidus_admin/ui/forms/address/fields/country_and_state/component.html.erb +39 -0
- data/app/components/solidus_admin/ui/forms/address/{component.js → fields/country_and_state/component.js} +2 -0
- data/app/components/solidus_admin/ui/forms/address/fields/country_and_state/component.rb +15 -0
- data/app/components/solidus_admin/ui/forms/address/fields/reverse_charge_fields/component.html.erb +7 -0
- data/app/components/solidus_admin/ui/forms/address/fields/reverse_charge_fields/component.rb +12 -0
- data/app/components/solidus_admin/ui/forms/address/fieldsets/base.rb +54 -0
- data/app/components/solidus_admin/ui/forms/address/fieldsets/contact/component.rb +16 -0
- data/app/components/solidus_admin/ui/forms/address/fieldsets/contact_info/component.rb +10 -0
- data/app/components/solidus_admin/ui/forms/address/fieldsets/location/component.rb +14 -0
- data/app/components/solidus_admin/ui/forms/checkbox/component.html.erb +14 -0
- data/app/components/solidus_admin/ui/forms/checkbox/component.rb +24 -31
- data/app/components/solidus_admin/ui/forms/field/component.html.erb +4 -4
- data/app/components/solidus_admin/ui/forms/field/component.rb +14 -18
- data/app/components/solidus_admin/ui/forms/input/component.rb +9 -18
- data/app/components/solidus_admin/ui/forms/search/result/component.rb +2 -2
- data/app/components/solidus_admin/ui/forms/select/component.html.erb +21 -0
- data/app/components/solidus_admin/ui/forms/select/component.rb +157 -0
- data/app/components/solidus_admin/ui/forms/switch/component.rb +4 -4
- data/app/components/solidus_admin/ui/icon/component.rb +4 -4
- data/app/components/solidus_admin/ui/icon/names.txt +973 -238
- data/app/components/solidus_admin/ui/modal/component.html.erb +2 -4
- data/app/components/solidus_admin/ui/modal/component.js +7 -1
- data/app/components/solidus_admin/ui/modal/component.rb +2 -2
- data/app/components/solidus_admin/ui/pages/index/component.rb +50 -19
- data/app/components/solidus_admin/ui/panel/component.rb +5 -9
- data/app/components/solidus_admin/ui/radio/component.rb +29 -0
- data/app/components/solidus_admin/ui/tab/component.rb +4 -4
- data/app/components/solidus_admin/ui/table/component.html.erb +11 -10
- data/app/components/solidus_admin/ui/table/component.js +18 -26
- data/app/components/solidus_admin/ui/table/component.rb +24 -18
- data/app/components/solidus_admin/ui/table/component.yml +1 -0
- data/app/components/solidus_admin/ui/table/ransack_filter/component.html.erb +1 -1
- data/app/components/solidus_admin/ui/table/ransack_filter/component.rb +7 -7
- data/app/components/solidus_admin/ui/thumbnail/component.rb +5 -5
- data/app/components/solidus_admin/ui/toast/component.html.erb +6 -6
- data/app/components/solidus_admin/ui/toast/component.rb +1 -1
- data/app/components/solidus_admin/ui/toggletip/component.rb +1 -1
- data/app/components/solidus_admin/users/addresses/component.html.erb +3 -5
- data/app/components/solidus_admin/users/addresses/component.rb +0 -30
- data/app/components/solidus_admin/users/addresses/component.yml +0 -7
- data/app/components/solidus_admin/users/edit/api_access/component.html.erb +6 -4
- data/app/components/solidus_admin/users/edit/api_access/component.yml +8 -2
- data/app/components/solidus_admin/users/edit/component.html.erb +15 -12
- data/app/components/solidus_admin/users/edit/component.rb +1 -33
- data/app/components/solidus_admin/users/edit/component.yml +0 -7
- data/app/components/solidus_admin/users/edit/tabs/component.rb +46 -0
- data/app/components/solidus_admin/users/edit/tabs/component.yml +6 -0
- data/app/components/solidus_admin/users/index/component.rb +20 -20
- data/app/components/solidus_admin/users/items/component.html.erb +1 -3
- data/app/components/solidus_admin/users/items/component.rb +18 -51
- data/app/components/solidus_admin/users/items/component.yml +0 -7
- data/app/components/solidus_admin/users/orders/component.html.erb +1 -3
- data/app/components/solidus_admin/users/orders/component.rb +9 -39
- data/app/components/solidus_admin/users/orders/component.yml +0 -6
- data/app/components/solidus_admin/users/store_credits/edit_amount/component.html.erb +7 -8
- data/app/components/solidus_admin/users/store_credits/edit_amount/component.rb +0 -5
- data/app/components/solidus_admin/users/store_credits/edit_amount/component.yml +0 -1
- data/app/components/solidus_admin/users/store_credits/edit_memo/component.html.erb +4 -4
- data/app/components/solidus_admin/users/store_credits/edit_memo/component.yml +0 -1
- data/app/components/solidus_admin/users/store_credits/edit_validity/component.html.erb +6 -7
- data/app/components/solidus_admin/users/store_credits/edit_validity/component.rb +0 -5
- data/app/components/solidus_admin/users/store_credits/index/component.html.erb +4 -6
- data/app/components/solidus_admin/users/store_credits/index/component.rb +10 -40
- data/app/components/solidus_admin/users/store_credits/index/component.yml +0 -6
- data/app/components/solidus_admin/users/store_credits/new/component.html.erb +12 -13
- data/app/components/solidus_admin/users/store_credits/new/component.rb +0 -9
- data/app/components/solidus_admin/users/store_credits/new/component.yml +0 -1
- data/app/components/solidus_admin/users/store_credits/show/component.html.erb +5 -7
- data/app/components/solidus_admin/users/store_credits/show/component.rb +8 -38
- data/app/components/solidus_admin/users/store_credits/show/component.yml +0 -6
- data/app/components/solidus_admin/users_and_roles/component.rb +4 -4
- data/app/components/solidus_admin/zones/edit/component.html.erb +1 -0
- data/app/components/solidus_admin/zones/edit/component.rb +4 -0
- data/app/components/solidus_admin/zones/form/component.html.erb +47 -0
- data/app/components/solidus_admin/zones/form/component.js +32 -0
- data/app/components/solidus_admin/zones/form/component.rb +23 -0
- data/app/components/solidus_admin/zones/form/component.yml +7 -0
- data/app/components/solidus_admin/zones/index/component.rb +57 -18
- data/app/components/solidus_admin/zones/new/component.html.erb +1 -0
- data/app/components/solidus_admin/zones/new/component.rb +4 -0
- data/app/controllers/concerns/solidus_admin/moveable.rb +31 -0
- data/app/controllers/solidus_admin/addresses_controller.rb +9 -11
- data/app/controllers/solidus_admin/adjustments_controller.rb +5 -6
- data/app/controllers/solidus_admin/base_controller.rb +8 -7
- data/app/controllers/solidus_admin/controller_helpers/authorization.rb +1 -1
- data/app/controllers/solidus_admin/controller_helpers/locale.rb +1 -1
- data/app/controllers/solidus_admin/controller_helpers/pagination.rb +37 -0
- data/app/controllers/solidus_admin/controller_helpers/search.rb +5 -5
- data/app/controllers/solidus_admin/controller_helpers/theme.rb +2 -2
- data/app/controllers/solidus_admin/customers_controller.rb +3 -3
- data/app/controllers/solidus_admin/line_items_controller.rb +3 -3
- data/app/controllers/solidus_admin/option_types_controller.rb +11 -32
- data/app/controllers/solidus_admin/option_values_controller.rb +54 -0
- data/app/controllers/solidus_admin/orders_controller.rb +25 -19
- data/app/controllers/solidus_admin/payment_methods_controller.rb +23 -28
- data/app/controllers/solidus_admin/product_option_types_controller.rb +5 -0
- data/app/controllers/solidus_admin/product_taxons_controller.rb +58 -0
- data/app/controllers/solidus_admin/products_controller.rb +24 -28
- data/app/controllers/solidus_admin/reimbursement_types_controller.rb +3 -3
- data/app/controllers/solidus_admin/resources_controller.rb +59 -20
- data/app/controllers/solidus_admin/shipping_methods_controller.rb +4 -4
- data/app/controllers/solidus_admin/states_controller.rb +30 -0
- data/app/controllers/solidus_admin/stock_items_controller.rb +11 -6
- data/app/controllers/solidus_admin/stock_locations_controller.rb +25 -26
- data/app/controllers/solidus_admin/store_credits_controller.rb +9 -9
- data/app/controllers/solidus_admin/stores_controller.rb +43 -9
- data/app/controllers/solidus_admin/tax_rates_controller.rb +9 -22
- data/app/controllers/solidus_admin/taxonomies_controller.rb +5 -21
- data/app/controllers/solidus_admin/users_controller.rb +16 -16
- data/app/controllers/solidus_admin/zones_controller.rb +6 -26
- data/app/helpers/solidus_admin/flash_helper.rb +14 -0
- data/app/helpers/solidus_admin/last_login_helper.rb +2 -2
- data/app/helpers/solidus_admin/permission_sets_helper.rb +3 -3
- data/app/helpers/solidus_admin/solidus_form_helper.rb +9 -0
- data/app/helpers/solidus_admin/stimulus_helper.rb +29 -0
- data/app/helpers/solidus_admin/void_elements_helper.rb +1 -1
- data/app/javascript/solidus_admin/application.js +10 -1
- data/app/javascript/solidus_admin/confirm_modal.js +24 -0
- data/app/javascript/solidus_admin/controllers/custom_validity_controller.js +12 -0
- data/app/javascript/solidus_admin/controllers/sortable_controller.js +9 -2
- data/app/javascript/solidus_admin/tom-select/plugins/patch_scroll.js +19 -0
- data/app/javascript/solidus_admin/tom-select/plugins/remote_with_pagination.js +67 -0
- data/app/javascript/solidus_admin/tom-select/plugins/stash_on_search.js +68 -0
- data/app/javascript/solidus_admin/tom-select/tom-select.js +11 -0
- data/app/javascript/solidus_admin/utils.js +40 -0
- data/app/javascript/solidus_admin/web_components/solidus_select.js +90 -0
- data/app/javascript/vendor/custom_elements.js +3 -0
- data/app/lib/solidus_admin/form_builder.rb +58 -0
- data/app/views/layouts/solidus_admin/application.html.erb +6 -8
- data/app/views/layouts/solidus_admin/preview.html.erb +1 -1
- data/app/views/solidus_admin/option_values/create.turbo_stream.erb +3 -0
- data/app/views/solidus_admin/option_values/destroy.turbo_stream.erb +3 -0
- data/app/views/solidus_admin/option_values/update.turbo_stream.erb +3 -0
- data/config/importmap.rb +9 -0
- data/config/initializers/view_component.rb +1 -1
- data/config/locales/option_types.en.yml +5 -1
- data/config/locales/option_values.en.yml +9 -0
- data/config/locales/payment_methods.en.yml +5 -1
- data/config/locales/product_taxons.en.yml +6 -0
- data/config/locales/products.en.yml +2 -0
- data/config/locales/solidus_select.yml +6 -0
- data/config/locales/stock_locations.en.yml +4 -0
- data/config/locales/stores.en.yml +22 -0
- data/config/locales/tax_rates.en.yml +4 -0
- data/config/locales/zones.en.yml +4 -0
- data/config/routes.rb +21 -9
- data/config/tailwind.config.js +6 -2
- data/docs/components.md +2 -2
- data/docs/index_pages.md +11 -5
- data/docs/stimulusjs.md +1 -1
- data/eslint.config.mjs +25 -0
- data/lib/generators/solidus_admin/component/component_generator.rb +10 -6
- data/lib/generators/solidus_admin/install/install_generator.rb +24 -5
- data/lib/generators/solidus_admin/install/templates/config/initializers/solidus_admin.rb.tt +6 -0
- data/lib/solidus_admin/admin_resources.rb +1 -1
- data/lib/solidus_admin/configuration.rb +14 -14
- data/lib/solidus_admin/engine.rb +3 -2
- data/lib/solidus_admin/importmap.rb +1 -1
- data/lib/solidus_admin/menu_item.rb +1 -1
- data/lib/solidus_admin/preview.rb +1 -0
- data/lib/solidus_admin/testing_support/admin_assets.rb +1 -1
- data/lib/solidus_admin/testing_support/feature_helpers.rb +77 -3
- data/lib/solidus_admin/testing_support/shared_examples/crud_resource_requests.rb +43 -36
- data/lib/solidus_admin/testing_support/shared_examples/moveable.rb +48 -0
- data/lib/solidus_admin/testing_support/shared_examples/promotion_categories_features.rb +5 -11
- data/lib/solidus_admin/version.rb +1 -1
- data/lib/tasks/tailwind.rake +1 -1
- data/solidus_admin.gemspec +24 -21
- metadata +173 -29
- data/.eslintrc.json +0 -7
- data/app/components/solidus_admin/products/show/component.js +0 -9
- data/app/components/solidus_admin/ui/forms/input/component.js +0 -15
- data/app/components/solidus_admin/users/edit/api_access/component.js +0 -9
- data/app/javascript/solidus_admin/controllers/confirm_controller.js +0 -21
- data/lib/solidus_admin/testing_support/shared_examples/bulk_delete_resources.rb +0 -20
- /data/app/{components/solidus_admin/ui/toast/component.js → javascript/solidus_admin/controllers/alert_animation_controller.js} +0 -0
|
@@ -27,8 +27,8 @@ class SolidusAdmin::UI::Forms::Field::Component < SolidusAdmin::BaseComponent
|
|
|
27
27
|
tag: :input,
|
|
28
28
|
size:,
|
|
29
29
|
value: object.public_send(method),
|
|
30
|
-
error:
|
|
31
|
-
**attributes
|
|
30
|
+
error: errors&.to_sentence&.capitalize,
|
|
31
|
+
**attributes
|
|
32
32
|
}
|
|
33
33
|
)
|
|
34
34
|
end
|
|
@@ -36,20 +36,16 @@ class SolidusAdmin::UI::Forms::Field::Component < SolidusAdmin::BaseComponent
|
|
|
36
36
|
def self.select(form, method, choices, object: nil, hint: nil, tip: nil, size: :m, **attributes)
|
|
37
37
|
object_name, object, label, errors = extract_form_details(form, object, method)
|
|
38
38
|
|
|
39
|
-
new(
|
|
39
|
+
component("ui/forms/select").new(
|
|
40
40
|
label:,
|
|
41
41
|
hint:,
|
|
42
42
|
tip:,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
value: (object.public_send(method) if object.respond_to?(method)),
|
|
50
|
-
error: (errors.to_sentence.capitalize if errors),
|
|
51
|
-
**attributes,
|
|
52
|
-
}
|
|
43
|
+
size: size,
|
|
44
|
+
name: "#{object_name}[#{method}]#{"[]" if attributes[:multiple].present?}",
|
|
45
|
+
choices:,
|
|
46
|
+
value: object.try(method),
|
|
47
|
+
error: errors&.to_sentence&.capitalize,
|
|
48
|
+
**attributes
|
|
53
49
|
)
|
|
54
50
|
end
|
|
55
51
|
|
|
@@ -66,8 +62,8 @@ class SolidusAdmin::UI::Forms::Field::Component < SolidusAdmin::BaseComponent
|
|
|
66
62
|
size:,
|
|
67
63
|
tag: :textarea,
|
|
68
64
|
value: object.public_send(method),
|
|
69
|
-
error:
|
|
70
|
-
**attributes
|
|
65
|
+
error: errors&.to_sentence&.capitalize,
|
|
66
|
+
**attributes
|
|
71
67
|
}
|
|
72
68
|
)
|
|
73
69
|
end
|
|
@@ -79,14 +75,14 @@ class SolidusAdmin::UI::Forms::Field::Component < SolidusAdmin::BaseComponent
|
|
|
79
75
|
label:,
|
|
80
76
|
hint:,
|
|
81
77
|
tip:,
|
|
82
|
-
error: errors
|
|
78
|
+
error: errors
|
|
83
79
|
).with_content(
|
|
84
|
-
component(
|
|
80
|
+
component("ui/forms/switch").new(
|
|
85
81
|
name: "#{object_name}[#{method}]",
|
|
86
82
|
size:,
|
|
87
83
|
checked: object.public_send(method),
|
|
88
84
|
include_hidden: true,
|
|
89
|
-
**attributes
|
|
85
|
+
**attributes
|
|
90
86
|
)
|
|
91
87
|
)
|
|
92
88
|
end
|
|
@@ -16,7 +16,7 @@ class SolidusAdmin::UI::Forms::Input::Component < SolidusAdmin::BaseComponent
|
|
|
16
16
|
MULTILINE_HEIGHTS = {
|
|
17
17
|
s: %w[min-h-[84px]],
|
|
18
18
|
m: %w[min-h-[108px]],
|
|
19
|
-
l: %w[min-h-[144px]]
|
|
19
|
+
l: %w[min-h-[144px]]
|
|
20
20
|
}.freeze
|
|
21
21
|
|
|
22
22
|
TYPES = Set.new(%i[
|
|
@@ -34,10 +34,11 @@ class SolidusAdmin::UI::Forms::Input::Component < SolidusAdmin::BaseComponent
|
|
|
34
34
|
week
|
|
35
35
|
search
|
|
36
36
|
time
|
|
37
|
+
hidden
|
|
37
38
|
]).freeze
|
|
38
39
|
|
|
39
40
|
def initialize(tag: :input, size: :m, error: nil, **attributes)
|
|
40
|
-
raise ArgumentError, "unsupported tag: #{tag}" unless %i[input textarea
|
|
41
|
+
raise ArgumentError, "unsupported tag: #{tag}" unless %i[input textarea].include?(tag)
|
|
41
42
|
|
|
42
43
|
specialized_classes = []
|
|
43
44
|
readonly_classes = "read-only:bg-gray-15 focus:read-only:bg-gray-15 focus:read-only:ring-0
|
|
@@ -56,20 +57,11 @@ class SolidusAdmin::UI::Forms::Input::Component < SolidusAdmin::BaseComponent
|
|
|
56
57
|
specialized_classes << "form-textarea"
|
|
57
58
|
specialized_classes << readonly_classes
|
|
58
59
|
specialized_classes << MULTILINE_HEIGHTS[size]
|
|
59
|
-
when :select
|
|
60
|
-
if attributes[:multiple]
|
|
61
|
-
specialized_classes << "form-multiselect"
|
|
62
|
-
specialized_classes << MULTILINE_HEIGHTS[size]
|
|
63
|
-
else
|
|
64
|
-
specialized_classes << "form-select"
|
|
65
|
-
specialized_classes << "bg-arrow-down-s-fill-gray-700 invalid:bg-arrow-down-s-fill-red-400 aria-invalid:bg-arrow-down-s-fill-red-400"
|
|
66
|
-
specialized_classes << HEIGHTS[size]
|
|
67
|
-
end
|
|
68
60
|
end
|
|
69
61
|
|
|
70
62
|
attributes[:class] = [
|
|
71
63
|
%w[
|
|
72
|
-
w-full
|
|
64
|
+
peer w-full
|
|
73
65
|
text-black bg-white border border-gray-300 rounded-sm placeholder:text-gray-400
|
|
74
66
|
hover:border-gray-500
|
|
75
67
|
focus:ring focus:ring-gray-300 focus:ring-0.5 focus:bg-white focus:ring-offset-0 [&:focus-visible]:outline-none
|
|
@@ -79,7 +71,7 @@ class SolidusAdmin::UI::Forms::Input::Component < SolidusAdmin::BaseComponent
|
|
|
79
71
|
],
|
|
80
72
|
SIZES[size],
|
|
81
73
|
specialized_classes,
|
|
82
|
-
attributes[:class]
|
|
74
|
+
attributes[:class]
|
|
83
75
|
].compact.join(" ")
|
|
84
76
|
|
|
85
77
|
@tag = tag
|
|
@@ -89,8 +81,8 @@ class SolidusAdmin::UI::Forms::Input::Component < SolidusAdmin::BaseComponent
|
|
|
89
81
|
end
|
|
90
82
|
|
|
91
83
|
def call
|
|
92
|
-
if @tag == :
|
|
93
|
-
with_content
|
|
84
|
+
if @tag == :textarea && @attributes[:value]
|
|
85
|
+
with_content @attributes.delete(:value)
|
|
94
86
|
end
|
|
95
87
|
|
|
96
88
|
build_tag
|
|
@@ -107,9 +99,8 @@ class SolidusAdmin::UI::Forms::Input::Component < SolidusAdmin::BaseComponent
|
|
|
107
99
|
|
|
108
100
|
def tag_options
|
|
109
101
|
@tag_options ||= {
|
|
110
|
-
"data-controller":
|
|
111
|
-
"data
|
|
112
|
-
"data-action": "#{stimulus_id}#clearCustomValidity",
|
|
102
|
+
"data-controller": "custom-validity",
|
|
103
|
+
"data-custom-validity-error-message-value": @error.presence,
|
|
113
104
|
**@attributes
|
|
114
105
|
}
|
|
115
106
|
end
|
|
@@ -5,8 +5,8 @@ class SolidusAdmin::UI::Forms::Search::Result::Component < SolidusAdmin::BaseCom
|
|
|
5
5
|
tag.div(
|
|
6
6
|
content,
|
|
7
7
|
class: "rounded p-2 hover:bg-gray-25 aria-selected:bg-gray-25 cursor-pointer",
|
|
8
|
-
"data-#{component(
|
|
9
|
-
"data-action": "click->#{component(
|
|
8
|
+
"data-#{component("ui/forms/search").stimulus_id}-target": "result",
|
|
9
|
+
"data-action": "click->#{component("ui/forms/search").stimulus_id}#clickedResult"
|
|
10
10
|
)
|
|
11
11
|
end
|
|
12
12
|
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<div class="flex flex-col gap-2 w-full">
|
|
2
|
+
<div class="flex gap-1 items-center">
|
|
3
|
+
<label class="text-gray-700 font-semibold" <%= tag.attributes for: @attributes[:id] %>>
|
|
4
|
+
<%= @label %>
|
|
5
|
+
</label>
|
|
6
|
+
<%= render component('ui/toggletip').new(text: @tip) if @tip.present? %>
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<%= tag.select(@options_collection, **@attributes) %>
|
|
10
|
+
|
|
11
|
+
<% if @hint.present? || @error.present? %>
|
|
12
|
+
<div class="
|
|
13
|
+
font-normal
|
|
14
|
+
[:disabled~&]:text-gray-300 text-gray-500
|
|
15
|
+
flex gap-1 flex-col [&>.error]:hidden [&>.error]:peer-invalid:block
|
|
16
|
+
">
|
|
17
|
+
<%= tag.span @hint if @hint.present? %>
|
|
18
|
+
<%= tag.span safe_join(@error, tag.br), class: "error text-red-600" %>
|
|
19
|
+
</div>
|
|
20
|
+
<% end %>
|
|
21
|
+
</div>
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::UI::Forms::Select::Component < SolidusAdmin::BaseComponent
|
|
4
|
+
FONT_SIZES = {
|
|
5
|
+
s: "[&>.control]:text-xs [&_.dropdown]:text-xs",
|
|
6
|
+
m: "[&>.control]:text-sm [&_.dropdown]:text-sm",
|
|
7
|
+
l: "[&>.control]:text-base [&_.dropdown]:text-base"
|
|
8
|
+
}.freeze
|
|
9
|
+
|
|
10
|
+
HEIGHTS = {
|
|
11
|
+
control: {
|
|
12
|
+
s: "[&>.control]:min-h-7",
|
|
13
|
+
m: "[&>.control]:min-h-9",
|
|
14
|
+
l: "[&>.control]:min-h-12"
|
|
15
|
+
},
|
|
16
|
+
option: {
|
|
17
|
+
s: "[&_.option]:h-7",
|
|
18
|
+
m: "[&_.option]:h-9",
|
|
19
|
+
l: "[&_.option]:h-12"
|
|
20
|
+
},
|
|
21
|
+
item: {
|
|
22
|
+
s: "[&_.item]:h-5",
|
|
23
|
+
m: "[&_.item]:h-5.5",
|
|
24
|
+
l: "[&_.item]:h-8"
|
|
25
|
+
}
|
|
26
|
+
}.freeze
|
|
27
|
+
|
|
28
|
+
# Render custom select component, which uses "solidus_select" custom element
|
|
29
|
+
# @see "admin/app/javascript/solidus_admin/web_components/solidus_select.js"
|
|
30
|
+
# @param choices [Array<String>, Array<Array<String>>] container with options to be rendered
|
|
31
|
+
# (see `ActionView::Helpers::FormOptionsHelper#options_for_select`).
|
|
32
|
+
# When +:src+ parameter is provided, use +:choices+ to provide the list of selected options only.
|
|
33
|
+
# Include a dataset hash `{ data: { item_label: <alternative_label_text> } }` to change the text displayed in select
|
|
34
|
+
# box when option is selected.
|
|
35
|
+
# @param src [nil, String] URL of a JSON resource with options data to be loaded instead of rendering options in place.
|
|
36
|
+
# @option attributes [nil, String, Integer, Array<String, Integer>] :value which option should be selected
|
|
37
|
+
# @option attributes [String] :"data-option-value-field"
|
|
38
|
+
# @option attributes [String] :"data-option-label-field" when +:src+ param is passed, value and label of loaded options
|
|
39
|
+
# will be mapped to JSON response +"id"+ and +"name"+ by default. Use these parameters to map to different keys.
|
|
40
|
+
# @option attributes [String] :"data-json-path" when +:src+ param is passed and options data is nested in JSON response,
|
|
41
|
+
# specify path to it with this parameter.
|
|
42
|
+
# @option attributes [String] :"data-query-param" when +:src+ param is passed, use this parameter to specify the name of
|
|
43
|
+
# a query parameter to be used with search, e.g.:
|
|
44
|
+
# ```
|
|
45
|
+
# src: solidus_admin.countries_url,
|
|
46
|
+
# "data-query-param": "q[name_cont]",
|
|
47
|
+
# ```
|
|
48
|
+
# @option attributes [String] :"data-no-preload" when +:src+ param is passed, options are preloaded when the component
|
|
49
|
+
# is initialized. Use this option to disable preload.
|
|
50
|
+
# @option attributes [String] :"data-loading-message" when +:src+ param is passed, which text to show while loading options.
|
|
51
|
+
# Default: "Loading".
|
|
52
|
+
# @option attributes [String] :"data-loading-more-message" when +:src+ param is passed, which text to show while
|
|
53
|
+
# loading next page of results. Default: "Loading more results".
|
|
54
|
+
# @option attributes [String] :"data-no-results-message" which text to show when there are no search results returned.
|
|
55
|
+
# Default: "No results found".
|
|
56
|
+
# @option attributes [true, String] :include_blank if passed, an empty option will be prepended to the list of options.
|
|
57
|
+
# Pass +true+ for empty option with no text, or +String+ for the text to be shown as empty option.
|
|
58
|
+
# @raise [ArgumentError] if +choices+ is not an array
|
|
59
|
+
def initialize(label:, name:, choices:, src: nil, size: :m, hint: nil, tip: nil, error: nil, **attributes)
|
|
60
|
+
@label = label
|
|
61
|
+
@hint = hint
|
|
62
|
+
@tip = tip
|
|
63
|
+
@error = Array.wrap(error)
|
|
64
|
+
@attributes = attributes
|
|
65
|
+
|
|
66
|
+
prepare_options(choices:, src:)
|
|
67
|
+
prepare_classes(size:)
|
|
68
|
+
|
|
69
|
+
@attributes[:name] = name
|
|
70
|
+
@attributes[:is] = "solidus-select"
|
|
71
|
+
@attributes[:id] ||= "#{stimulus_id}_#{name}"
|
|
72
|
+
@attributes[:"data-error-message"] = @error.presence
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
private
|
|
76
|
+
|
|
77
|
+
# translations are not available at initialization so need to define them here
|
|
78
|
+
def before_render
|
|
79
|
+
@attributes[:"data-loading-message"] ||= t("solidus_admin.solidus_select.loading")
|
|
80
|
+
@attributes[:"data-loading-more-message"] ||= t("solidus_admin.solidus_select.loading_more")
|
|
81
|
+
@attributes[:"data-no-results-message"] ||= t("solidus_admin.solidus_select.no_results")
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def prepare_options(choices:, src:)
|
|
85
|
+
raise ArgumentError, "`choices` must be an array" unless choices.is_a?(Array)
|
|
86
|
+
|
|
87
|
+
if src.present?
|
|
88
|
+
@attributes[:"data-src"] = src
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
if (blank_option = @attributes.delete(:include_blank))
|
|
92
|
+
blank_option = "" if blank_option == true
|
|
93
|
+
choices.unshift([blank_option, ""])
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
@options_collection = options_for_select(choices, @attributes.delete(:value))
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def prepare_classes(size:)
|
|
100
|
+
general_classes = ["w-full relative text-black font-normal #{FONT_SIZES[size]}"]
|
|
101
|
+
control_classes = ["[&>.control]:peer-invalid:border-red-600 [&>.control]:peer-invalid:hover:border-red-600
|
|
102
|
+
[&>.control]:peer-invalid:text-red-600 [&>.control]:flex [&>.control]:flex-wrap [&>.control]:items-center
|
|
103
|
+
[&>.control]:gap-1 [&>.control]:rounded-sm [&>.control]:w-full [&>.control]:rounded-sm [&>.control]:pl-3
|
|
104
|
+
[&>.control]:pr-10 [&>.control]:py-1.5 [&>.control]:bg-white [&>.control]:border [&>.control]:border-gray-300
|
|
105
|
+
[&>.control]:hover:border-gray-500 [&>.control]:has-[:disabled]:bg-gray-50 [&>.control]:has-[:disabled]:text-gray-500
|
|
106
|
+
[&>.control]:has-[:disabled]:cursor-not-allowed [&>.control]:has-[:disabled]:hover:border-gray-300
|
|
107
|
+
[&>.control]:has-[:focus]:ring [&>.control]:has-[:focus]:ring-gray-300 [&>.control]:has-[:focus]:ring-0.5
|
|
108
|
+
[&>.control]:has-[:focus]:bg-white [&>.control]:has-[:focus]:ring-offset-0 [&>.control]:has-[:focus]:outline-none
|
|
109
|
+
#{HEIGHTS[:control][size]}"]
|
|
110
|
+
|
|
111
|
+
unless @attributes[:multiple]
|
|
112
|
+
control_classes << "[&>.control]:peer-invalid:bg-arrow-down-s-fill-red-400 [&>.control]:form-select
|
|
113
|
+
[&>.control]:bg-arrow-down-s-fill-gray-700"
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
item_classes = []
|
|
117
|
+
if @attributes[:multiple]
|
|
118
|
+
item_classes << "[&_.item]:flex [&_.item]:gap-1 [&_.item]:items-center [&_.item]:rounded-full [&_.item]:whitespace-nowrap
|
|
119
|
+
[&_.item]:px-2 [&_.item]:py-0.5 [&_.item]:bg-graphite-light [&_.item]:peer-invalid:bg-red-100 #{HEIGHTS[:item][size]}
|
|
120
|
+
[&_.item_.remove-button]:text-xl [&_.item_.remove-button]:pb-0.5 [&_.item_.remove-button]:order-first
|
|
121
|
+
[&_.item_.remove-button]:has-[:disabled]:cursor-not-allowed"
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
input_classes = ["[&_input]:has-[.item]:placeholder:opacity-0 [&_input:disabled]:cursor-not-allowed [&_input:disabled]:bg-gray-50
|
|
125
|
+
[&_input]:peer-invalid:placeholder:text-red-400"]
|
|
126
|
+
|
|
127
|
+
unless @attributes[:multiple]
|
|
128
|
+
input_classes << "[&_input]:has-[.item]:opacity-0 [&_input]:has-[.item]:cursor-default"
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
dropdown_classes = ["[&_.dropdown]:w-full [&_.dropdown]:absolute [&_.dropdown]:border [&_.dropdown]:border-gray-100
|
|
132
|
+
[&_.dropdown]:mt-0.5 [&_.dropdown]:min-w-[10rem] [&_.dropdown]:p-2 [&_.dropdown]:rounded-sm [&_.dropdown]:z-10
|
|
133
|
+
[&_.dropdown]:shadow-lg [&_.dropdown]:bg-white"]
|
|
134
|
+
|
|
135
|
+
dropdown_content_classes = ["[&_.dropdown-content]:flex [&_.dropdown-content]:flex-col [&_.dropdown-content]:max-h-[200px]
|
|
136
|
+
[&_.dropdown-content]:overflow-x-hidden [&_.dropdown-content]:overflow-y-auto [&_.dropdown-content]:scroll-smooth
|
|
137
|
+
[&_.no-results]:text-gray-500 [&_.no-results]:px-2 [&_.no-results]:py-1
|
|
138
|
+
[&_.loading]:animate-pulse [&_.loading]:italic [&_.loading]:text-gray-500 [&_.loading]:px-2 [&_.loading]:py-1"]
|
|
139
|
+
|
|
140
|
+
option_classes = ["[&_.option]:p-2 [&_.option]:rounded-sm [&_.option]:min-w-fit [&_.option.active]:bg-gray-50
|
|
141
|
+
[&_.option.active]:text-gray-700 [&_.option_.highlight]:bg-yellow [&_.option_.highlight]:rounded-[1px]
|
|
142
|
+
[&_.option.loading-more]:animate-pulse [&_.option.loading-more]:italic [&_.option.loading-more]:text-gray-500 [&_.option.loading-more]:text-center [&_.option.loading-more]:text-xs [&_.option.loading-more]:py-0.5 [&_.option.loading-more]:pointer-events-none
|
|
143
|
+
#{HEIGHTS[:option][size]}"]
|
|
144
|
+
|
|
145
|
+
@attributes[:class] = [
|
|
146
|
+
"peer",
|
|
147
|
+
general_classes,
|
|
148
|
+
control_classes,
|
|
149
|
+
item_classes,
|
|
150
|
+
input_classes,
|
|
151
|
+
dropdown_classes,
|
|
152
|
+
dropdown_content_classes,
|
|
153
|
+
option_classes,
|
|
154
|
+
@attributes[:class]
|
|
155
|
+
].compact.join(" ")
|
|
156
|
+
end
|
|
157
|
+
end
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
class SolidusAdmin::UI::Forms::Switch::Component < SolidusAdmin::BaseComponent
|
|
4
4
|
SIZES = {
|
|
5
|
-
s:
|
|
6
|
-
m:
|
|
5
|
+
s: "w-8 h-5 after:w-4 after:h-4 after:checked:translate-x-3",
|
|
6
|
+
m: "w-10 h-6 after:w-5 after:h-5 after:checked:translate-x-4"
|
|
7
7
|
}.freeze
|
|
8
8
|
|
|
9
9
|
def initialize(size: :m, include_hidden: false, **attributes)
|
|
@@ -34,8 +34,8 @@ class SolidusAdmin::UI::Forms::Switch::Component < SolidusAdmin::BaseComponent
|
|
|
34
34
|
|
|
35
35
|
def call
|
|
36
36
|
input = tag.input(
|
|
37
|
-
type:
|
|
38
|
-
**@attributes
|
|
37
|
+
type: "checkbox",
|
|
38
|
+
**@attributes
|
|
39
39
|
)
|
|
40
40
|
|
|
41
41
|
@include_hidden ? hidden_field_tag(@attributes.fetch(:name), false) + input : input
|
|
@@ -15,17 +15,17 @@ class SolidusAdmin::UI::Icon::Component < SolidusAdmin::BaseComponent
|
|
|
15
15
|
@attrs = attrs
|
|
16
16
|
|
|
17
17
|
# Hide the icon from screen readers by default.
|
|
18
|
-
@attrs[
|
|
18
|
+
@attrs["aria-hidden"] = true unless @attrs.key?("aria-hidden")
|
|
19
19
|
|
|
20
20
|
# Default icons without style to 16x16, mostly useful in test snapshots.
|
|
21
|
-
@attrs[
|
|
22
|
-
@attrs[
|
|
21
|
+
@attrs["width"] = "16"
|
|
22
|
+
@attrs["height"] = "16"
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def call
|
|
26
26
|
# bypass the asset_host configuration to avoid CORS issues with CDNs:
|
|
27
27
|
# https://github.com/solidusio/solidus/issues/5657
|
|
28
28
|
href = asset_path("solidus_admin/remixicon.symbol.svg#ri-#{@name}", host: "")
|
|
29
|
-
tag.svg(tag.use("xlink:href": href), **@attrs)
|
|
29
|
+
tag.svg(tag.use("xlink:href": href, href:), **@attrs)
|
|
30
30
|
end
|
|
31
31
|
end
|