Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Mini Cart Block and related blocks: now the additional classes are visible on frontend page #5991

Merged
merged 1 commit into from
Mar 8, 2022

Conversation

gigitux
Copy link
Contributor

@gigitux gigitux commented Mar 3, 2022

With this PR, the additional classes added on the editor side are now rendered on the frontend side.
This PR fixes the scrollbar issue when there are too many products.

Fixes #5881

Testing

Manual Testing

How to test the changes in this Pull Request:
Check out this branch:

Classname problem

  1. Open the FSE editor.
  2. Add the Mini Cart block.
  3. Get focused on it.
  4. On the right sidebar, on the block settings -> advanced section, add custom classes.
  5. Save.
  6. On the frontend page, inspect the Mini Cart Block element.
  7. Check that the custom classes are added.
  8. Open the FSE editor.
  9. Open Mini Cart template editor.
  10. Repeat 3-7 steps for each block in the template ( Mini Cart Contents, Filled Mini Cart Contents, Mini Cart Title, Mini Cart Items, Mini Cart Products Table, Mini Cart Footer, Empty Mini Cart Contents, Mini Cart Shopping Button)

Scrollbar issue

  1. Open the FSE editor.
  2. Add the Mini Cart block.
  3. Save.
  4. On the frontend side, add a lot of products to the cart.
  5. Open the Mini Cart Block and check that the scroll works well (check the attached gif to see the potential issue).

Screen Capture on 2022-03-03 at 12-08-40

Additional classes are visible on frontend page
@gigitux gigitux added type: bug The issue/PR concerns a confirmed bug. skip-changelog PRs that you don't want to appear in the changelog. block: mini-cart Issues related to the Mini-Cart block. labels Mar 3, 2022
@gigitux gigitux self-assigned this Mar 3, 2022
@rubikuserbot rubikuserbot requested review from a team and albarin and removed request for a team March 3, 2022 15:45
@github-actions
Copy link
Contributor

github-actions bot commented Mar 3, 2022

Size Change: +381 B (0%)

Total Size: 864 kB

Filename Size Change
build/mini-cart-component-frontend.js 16 kB +3 B (0%)
build/mini-cart-contents-block/empty-cart-frontend.js 329 B -34 B (-9%)
build/mini-cart-contents-block/filled-cart-frontend.js 230 B +8 B (+4%)
build/mini-cart-contents-block/footer-frontend.js 6.3 kB +26 B (0%)
build/mini-cart-contents-block/items-frontend.js 225 B +19 B (+9%) 🔍
build/mini-cart-contents-block/products-table-frontend.js 5.35 kB +19 B (0%)
build/mini-cart-contents-block/shopping-button-frontend.js 287 B +27 B (+10%) ⚠️
build/mini-cart-contents-block/title-frontend.js 367 B +19 B (+5%) 🔍
build/mini-cart-contents.js 24.3 kB +35 B (0%)
build/wc-blocks-style-rtl.css 22.4 kB +131 B (+1%)
build/wc-blocks-style.css 22.3 kB +128 B (+1%)
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 6.27 kB
build/active-filters.js 6.94 kB
build/all-products-frontend.js 18.6 kB
build/all-products.js 33.9 kB
build/all-reviews.js 8.03 kB
build/atomic-block-components/add-to-cart--atomic-block-components/button--atomic-block-components/catego--90468e1a.js 223 B
build/atomic-block-components/add-to-cart--atomic-block-components/button--atomic-block-components/image---a7e2bb9b.js 2.65 kB
build/atomic-block-components/add-to-cart-frontend.js 7.01 kB
build/atomic-block-components/add-to-cart.js 7.49 kB
build/atomic-block-components/button--atomic-block-components/category-list--atomic-block-components/imag--f11cdc7a.js 498 B
build/atomic-block-components/button-frontend.js 2.08 kB
build/atomic-block-components/button.js 2.3 kB
build/atomic-block-components/category-list-frontend.js 920 B
build/atomic-block-components/category-list.js 501 B
build/atomic-block-components/image-frontend.js 1.86 kB
build/atomic-block-components/image.js 1.09 kB
build/atomic-block-components/price-frontend.js 1.93 kB
build/atomic-block-components/price.js 1.51 kB
build/atomic-block-components/rating-frontend.js 1.13 kB
build/atomic-block-components/rating.js 718 B
build/atomic-block-components/sale-badge-frontend.js 1.09 kB
build/atomic-block-components/sale-badge.js 683 B
build/atomic-block-components/sku-frontend.js 385 B
build/atomic-block-components/sku.js 386 B
build/atomic-block-components/stock-indicator-frontend.js 1.03 kB
build/atomic-block-components/stock-indicator.js 624 B
build/atomic-block-components/summary-frontend.js 1.34 kB
build/atomic-block-components/summary.js 923 B
build/atomic-block-components/tag-list-frontend.js 921 B
build/atomic-block-components/tag-list.js 499 B
build/atomic-block-components/title-frontend.js 1.31 kB
build/atomic-block-components/title.js 932 B
build/attribute-filter-frontend.js 16.8 kB
build/attribute-filter.js 13 kB
build/blocks-checkout.js 17.2 kB
build/cart-blocks/accepted-payment-methods-frontend.js 1.14 kB
build/cart-blocks/checkout-button-frontend.js 1.15 kB
build/cart-blocks/empty-cart-frontend.js 347 B
build/cart-blocks/express-payment-frontend.js 5.18 kB
build/cart-blocks/filled-cart-frontend.js 767 B
build/cart-blocks/items-frontend.js 299 B
build/cart-blocks/line-items-frontend.js 5.5 kB
build/cart-blocks/order-summary-frontend.js 8.88 kB
build/cart-blocks/totals-frontend.js 320 B
build/cart-frontend.js 45.2 kB
build/cart.js 43.5 kB
build/checkout-blocks/actions-frontend.js 1.41 kB
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.13 kB
build/checkout-blocks/billing-address-frontend.js 891 B
build/checkout-blocks/contact-information-frontend.js 2.85 kB
build/checkout-blocks/express-payment-frontend.js 5.48 kB
build/checkout-blocks/fields-frontend.js 344 B
build/checkout-blocks/order-note-frontend.js 1.13 kB
build/checkout-blocks/order-summary-frontend.js 11.3 kB
build/checkout-blocks/payment-frontend.js 7.77 kB
build/checkout-blocks/shipping-address-frontend.js 997 B
build/checkout-blocks/shipping-methods-frontend.js 4.73 kB
build/checkout-blocks/terms-frontend.js 1.22 kB
build/checkout-blocks/totals-frontend.js 323 B
build/checkout-frontend.js 47.4 kB
build/checkout.js 44.7 kB
build/featured-category.js 8.62 kB
build/featured-product.js 9.73 kB
build/handpicked-products.js 7.1 kB
build/legacy-template.js 2.18 kB
build/mini-cart-contents-block/footer--mini-cart-contents-block/products-table-frontend.js 5.33 kB
build/mini-cart-frontend.js 1.71 kB
build/mini-cart.js 6.39 kB
build/price-filter-frontend.js 12.5 kB
build/price-filter.js 8.47 kB
build/price-format.js 1.19 kB
build/product-best-sellers.js 7.37 kB
build/product-categories.js 3.17 kB
build/product-category.js 8.49 kB
build/product-new.js 7.67 kB
build/product-on-sale.js 7.99 kB
build/product-search.js 2.19 kB
build/product-tag.js 7.81 kB
build/product-top-rated.js 7.9 kB
build/products-by-attribute.js 8.38 kB
build/reviews-by-category.js 11.4 kB
build/reviews-by-product.js 12.6 kB
build/reviews-frontend.js 7.34 kB
build/single-product-frontend.js 22 kB
build/single-product.js 10 kB
build/stock-filter-frontend.js 6.5 kB
build/stock-filter.js 6.56 kB
build/vendors--atomic-block-components/add-to-cart--cart-blocks/order-summary--checkout-blocks/billing-ad--c5eb4dcd-frontend.js 19 kB
build/vendors--atomic-block-components/add-to-cart-frontend.js 7.51 kB
build/vendors--atomic-block-components/price--cart-blocks/line-items--cart-blocks/order-summary--checkout--194c50bf-frontend.js 5.26 kB
build/vendors--cart-blocks/line-items--checkout-blocks/order-summary--mini-cart-contents-block/products-table-frontend.js 3.14 kB
build/vendors--cart-blocks/order-summary--checkout-blocks/billing-address--checkout-blocks/order-summary---eb4d2cec-frontend.js 4.74 kB
build/vendors--mini-cart-contents-block/footer--mini-cart-contents-block/products-table-frontend.js 7.72 kB
build/wc-blocks-data.js 9.78 kB
build/wc-blocks-editor-style-rtl.css 4.84 kB
build/wc-blocks-editor-style.css 4.84 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 953 B
build/wc-blocks-registry.js 2.7 kB
build/wc-blocks-shared-context.js 1.52 kB
build/wc-blocks-shared-hocs.js 1.14 kB
build/wc-blocks-vendors-style-rtl.css 1.28 kB
build/wc-blocks-vendors-style.css 1.28 kB
build/wc-blocks-vendors.js 69.4 kB
build/wc-blocks.js 2.62 kB
build/wc-payment-method-bacs.js 816 B
build/wc-payment-method-cheque.js 811 B
build/wc-payment-method-cod.js 909 B
build/wc-payment-method-paypal.js 837 B
build/wc-settings.js 2.61 kB

compressed-size-action

Copy link
Contributor

@Aljullu Aljullu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, good job adding support for custom class names in all those blocks. 👏

I left one question, but besides that, pre-approving.

const { cartItems } = useStoreCart();

if ( cartItems.length === 0 ) {
return null;
}

return <>{ children }</>;
return <div className={ className }>{ children }</div>;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For blocks that didn't have any kind of markup like this one, I wonder if instead of adding support for custom class names, maybe we should just set supports: { customClassName: false }. If users want to add custom class names to be able to add styles, they can still add them to the block which render some markup. What do you think?

Copy link
Contributor Author

@gigitux gigitux Mar 4, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mmmm, good point!

The problem that I see is that the HTML (attached image) generated is different from the declared template. From my experience it seems that every block should have a wrapper.

image

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If users want to add custom class names to be able to add styles, they can still add them to the block which render some markup.

This approach sounds good to me too. Filled and Empty Mini Cart Contents blocks are always inside the Mini Cart Contents block. Users can add custom classes there to target inner blocks.

Copy link
Contributor Author

@gigitux gigitux Mar 7, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem that I see is that the HTML (attached image) generated is different from the declared template. From my experience it seems that every block should have a wrapper.

What about this? I guess that now, the Gutenberg team is adding more APIs for container block, I prefer to keep the wrapper, in this way we:

  • are consistent with the template.
  • are future proof, since if we want to add support for the new API from Gutenberg we already have the wrapper (I guess no migration).
  • follow the standard (I'm not sure about this point, but as I said above, it seems that every block has a dedicated wrapper).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good points. Honestly, I don't have a strong opinion on this, but agree that it makes sense keeping it consistent with other blocks that also have a wrapper div and allow a custom class name. So :shipit: from my side.

@github-actions github-actions bot added this to the 7.2.0 milestone Mar 4, 2022
@mikejolley mikejolley modified the milestones: 7.2.0, 7.3.0 Mar 7, 2022
@gigitux gigitux merged commit 1ff5b49 into trunk Mar 8, 2022
@gigitux gigitux deleted the fix/5881-add-additional-class-support branch March 8, 2022 13:24
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: mini-cart Issues related to the Mini-Cart block. skip-changelog PRs that you don't want to appear in the changelog. type: bug The issue/PR concerns a confirmed bug.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Mini Cart block: additional classes don't add on the frontend side
4 participants