Merge pull request #11848 from dacook/vertical_ellipsis_menu_component

Vertical ellipsis menu component
This commit is contained in:
Gaetan Craig-Riou
2023-11-27 10:21:09 +11:00
committed by GitHub
9 changed files with 34 additions and 12 deletions

View File

@@ -70,6 +70,10 @@ Rails/SkipsModelValidations:
- "update_column"
- "update_columns"
Rails/OutputSafety:
Exclude:
- 'spec/**/*'
Style/Documentation:
Enabled: false

View File

@@ -0,0 +1,4 @@
# frozen_string_literal: true
class VerticalEllipsisMenuComponent < ViewComponent::Base
end

View File

@@ -0,0 +1,4 @@
.vertical-ellipsis-menu{ "data-controller": "vertical-ellipsis-menu" }
%i.fa.fa-ellipsis-v{ "data-action": "click->vertical-ellipsis-menu#toggle" }
.vertical-ellipsis-menu-content{ "data-vertical-ellipsis-menu-target": "content" }
= content

View File

@@ -30,7 +30,7 @@
display: block;
}
.vertical-ellipsis-menu-content-item {
& > a {
display: block;
padding: 5px 10px;
cursor: pointer;

View File

@@ -67,7 +67,10 @@
%td.align-left
.content= product.inherits_properties ? 'YES' : 'NO' #TODO: consider using https://github.com/RST-J/human_attribute_values, else use I18n.t (also below)
%td.align-right
= render partial: 'admin/products_v3/components/product_actions', locals: { product: product }
= render(VerticalEllipsisMenuComponent.new) do
= link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product)
= link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product)
- product.variants.each do |variant|
= form.fields_for("products][][variants_attributes][", variant, index: nil) do |variant_form|
%tr.condensed
@@ -94,4 +97,5 @@
%td.align-left
-# empty
%td.align-right
= render partial: 'admin/products_v3/components/product_actions', locals: { product: product, variant: variant }
= render(VerticalEllipsisMenuComponent.new) do
= link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant)

View File

@@ -1,8 +0,0 @@
.vertical-ellipsis-menu{ "data-controller": "vertical-ellipsis-menu" }
%i.fa.fa-ellipsis-v{ "data-action": "click->vertical-ellipsis-menu#toggle" }
.vertical-ellipsis-menu-content{ "data-vertical-ellipsis-menu-target": "content" }
- if defined?(variant)
= link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant), class: "vertical-ellipsis-menu-content-item"
- else
= link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product), class: "vertical-ellipsis-menu-content-item"
= link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product), class: "vertical-ellipsis-menu-content-item"

View File

@@ -113,7 +113,6 @@
@import "../admin/reports";
@import "components/select2"; // admin_v3
@import "components/sidebar-item"; // admin_v3
@import "components/vertical_ellipsis_menu"; // admin_v3 and only V3
@import "../admin/side_menu";
@import "../admin/tables";
@import "../admin/tag_rules";
@@ -130,4 +129,5 @@
@import "app/components/help_modal_component/help_modal_component";
@import "app/components/confirm_modal_component/confirm_modal_component";
@import "app/components/vertical_ellipsis_menu_component/vertical_ellipsis_menu_component"; // admin_v3 and only V3
@import "app/webpacker/css/admin/trix.scss";

View File

@@ -248,5 +248,7 @@ module Openfoodnetwork
config.active_storage.url_options = config.action_controller.default_url_options
config.exceptions_app = self.routes
config.view_component.generate.sidecar = true # Always generate components in subfolders
end
end

View File

@@ -0,0 +1,12 @@
# frozen_string_literal: true
require "spec_helper"
describe VerticalEllipsisMenuComponent, type: :component do
it "displays the included links" do
content = "<a href>Edit</a>"
render_inline(VerticalEllipsisMenuComponent.new.with_content(content.html_safe))
expect(page).to have_selector "a", text: "Edit"
end
end