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

Add Store Breadcrumbs block #8222

Merged
merged 20 commits into from
Jan 27, 2023
Merged

Add Store Breadcrumbs block #8222

merged 20 commits into from
Jan 27, 2023

Conversation

nefeline
Copy link
Contributor

@nefeline nefeline commented Jan 17, 2023

Introduce the new Store Breadcrumbs block, allowing merchants to keep track of their locations within the store and navigate back to parent pages.

Fixes #8063

Screenshots

Breadcrumbs

Editor Preview FrontEnd
Screenshot 2023-01-24 at 11 21 57 Screenshot 2023-01-24 at 11 21 36

Editor sidebar

Screenshot 2023-01-24 at 11 42 23

Block inserter

Screenshot 2023-01-24 at 11 45 08

@vivialice this icon was selected as it was the closest that resembles a breadcrumb I've found: looking forward to hearing your thoughts here and if a different one should be used instead!

Testing

Automated Tests

  • Changes in this PR are covered by Automated Tests.
    • Unit tests
    • E2E tests

User Facing Testing

  1. Make sure you are using a block theme.
  2. Edit any template on the Site Editor e.g. the Single Product Template (wp-admin/site-editor.php?postType=wp_template&postId=woocommerce%2Fwoocommerce%2F%2Fsingle-product&canvas=edit&sidebar=%2Ftemplates).
  3. Insert the new Store Breadcrumbs block.
  4. Style the breadcrumbs (update the colors for the link and text and typography) and ensure the changes are also visible on the FrontEnd.

WooCommerce Visibility

  • WooCommerce Core
  • Feature plugin
  • Experimental

Changelog

Enhancement: Add Store Breadcrumbs block, allowing merchants to keep track of their locations within the store and navigate back to parent pages.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 17, 2023

The release ZIP for this PR is accessible via:

https://wcblocks.wpcomstaging.com/wp-content/uploads/woocommerce-gutenberg-products-block-8222.zip

Script Dependencies Report

There is no changed script dependency between this branch and trunk.

This comment was automatically generated by the ./github/compare-assets action.

TypeScript Errors Report

  • Files with errors: 504
  • Total errors: 2344

⚠️ ⚠️ This PR introduces new TS errors on 1 files:

assets/js/blocks/breadcrumbs/index.tsx

comments-aggregator

@github-actions
Copy link
Contributor

github-actions bot commented Jan 17, 2023

Size Change: +1.63 kB (0%)

Total Size: 1.1 MB

Filename Size Change
build/all-products.js 33.6 kB -2 B (0%)
build/cart.js 47.7 kB +7 B (0%)
build/catalog-sorting.js 1.71 kB +1 B (0%)
build/checkout.js 43.5 kB +3 B (0%)
build/customer-account.js 3.08 kB +1 B (0%)
build/featured-category.js 13.1 kB -2 B (0%)
build/featured-product.js 13.4 kB +5 B (0%)
build/legacy-template.js 2.87 kB -1 B (0%)
build/mini-cart-contents.js 17 kB +8 B (0%)
build/price-filter.js 8.4 kB -7 B (0%)
build/product-add-to-cart.js 8.59 kB +3 B (0%)
build/product-categories.js 2.36 kB -1 B (0%)
build/product-category.js 8.6 kB +3 B (0%)
build/product-image.js 4.07 kB +1 B (0%)
build/product-results-count.js 1.67 kB -1 B (0%)
build/product-sale-badge.js 813 B -1 B (0%)
build/product-search.js 2.62 kB +2 B (0%)
build/product-sku.js 378 B +1 B (0%)
build/product-summary.js 921 B +1 B (0%)
build/product-tag-list.js 497 B +1 B (0%)
build/product-tag.js 8.08 kB -3 B (0%)
build/product-title.js 3.44 kB +2 B (0%)
build/product-top-rated.js 7.84 kB -2 B (0%)
build/products-by-attribute.js 8.52 kB -2 B (0%)
build/rating-filter.js 7.45 kB +3 B (0%)
build/reviews-by-product.js 12.3 kB -1 B (0%)
build/single-product.js 9.98 kB -8 B (0%)
build/stock-filter.js 8.18 kB +2 B (0%)
build/store-notices.js 1.65 kB -1 B (0%)
build/wc-blocks-style-rtl.css 25.7 kB +15 B (0%)
build/wc-blocks-style.css 25.6 kB +15 B (0%)
build/wc-blocks-vendors.js 64.3 kB +74 B (0%)
build/breadcrumbs.js 1.51 kB +1.51 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 7.99 kB
build/active-filters-wrapper-frontend.js 6 kB
build/active-filters.js 7.31 kB
build/all-products-frontend.js 11.7 kB
build/all-reviews.js 7.66 kB
build/attribute-filter-frontend.js 22.9 kB
build/attribute-filter-wrapper-frontend.js 7.68 kB
build/attribute-filter.js 12.4 kB
build/blocks-checkout.js 41 kB
build/cart-blocks/cart-accepted-payment-methods-frontend.js 1.38 kB
build/cart-blocks/cart-cross-sells-frontend.js 253 B
build/cart-blocks/cart-cross-sells-products-frontend.js 9.64 kB
build/cart-blocks/cart-express-payment--checkout-blocks/express-payment-frontend.js 5.08 kB
build/cart-blocks/cart-express-payment-frontend.js 720 B
build/cart-blocks/cart-items-frontend.js 299 B
build/cart-blocks/cart-line-items--mini-cart-contents-block/products-table-frontend.js 5.34 kB
build/cart-blocks/cart-line-items-frontend.js 1.06 kB
build/cart-blocks/cart-order-summary-frontend.js 1.24 kB
build/cart-blocks/cart-totals-frontend.js 321 B
build/cart-blocks/empty-cart-frontend.js 345 B
build/cart-blocks/filled-cart-frontend.js 655 B
build/cart-blocks/order-summary-coupon-form-frontend.js 1.69 kB
build/cart-blocks/order-summary-discount-frontend.js 2.12 kB
build/cart-blocks/order-summary-fee-frontend.js 274 B
build/cart-blocks/order-summary-heading-frontend.js 455 B
build/cart-blocks/order-summary-shipping-frontend.js 14.9 kB
build/cart-blocks/order-summary-subtotal-frontend.js 275 B
build/cart-blocks/order-summary-taxes-frontend.js 435 B
build/cart-blocks/proceed-to-checkout-frontend.js 1.24 kB
build/cart-frontend.js 28.7 kB
build/checkout-blocks/actions-frontend.js 1.86 kB
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 3.92 kB
build/checkout-blocks/billing-address-frontend.js 1.16 kB
build/checkout-blocks/contact-information-frontend.js 2.05 kB
build/checkout-blocks/express-payment-frontend.js 1.13 kB
build/checkout-blocks/fields-frontend.js 344 B
build/checkout-blocks/order-note-frontend.js 1.14 kB
build/checkout-blocks/order-summary-cart-items-frontend.js 3.68 kB
build/checkout-blocks/order-summary-coupon-form-frontend.js 1.85 kB
build/checkout-blocks/order-summary-discount-frontend.js 2.29 kB
build/checkout-blocks/order-summary-fee-frontend.js 277 B
build/checkout-blocks/order-summary-frontend.js 1.24 kB
build/checkout-blocks/order-summary-shipping-frontend.js 14.9 kB
build/checkout-blocks/order-summary-subtotal-frontend.js 275 B
build/checkout-blocks/order-summary-taxes-frontend.js 434 B
build/checkout-blocks/payment-frontend.js 8.32 kB
build/checkout-blocks/pickup-options-frontend.js 2.81 kB
build/checkout-blocks/shipping-address-frontend.js 1.12 kB
build/checkout-blocks/shipping-method-frontend.js 2.27 kB
build/checkout-blocks/shipping-methods-frontend.js 4.83 kB
build/checkout-blocks/terms-frontend.js 1.56 kB
build/checkout-blocks/totals-frontend.js 324 B
build/checkout-frontend.js 30.2 kB
build/filter-wrapper-frontend.js 14 kB
build/filter-wrapper.js 2.39 kB
build/general-style-rtl.css 1.31 kB
build/general-style.css 1.31 kB
build/handpicked-products.js 7.24 kB
build/mini-cart-component-frontend.js 27.8 kB
build/mini-cart-contents-block/empty-cart-frontend.js 366 B
build/mini-cart-contents-block/filled-cart-frontend.js 268 B
build/mini-cart-contents-block/footer-frontend.js 2.82 kB
build/mini-cart-contents-block/items-frontend.js 237 B
build/mini-cart-contents-block/products-table-frontend.js 590 B
build/mini-cart-contents-block/shopping-button-frontend.js 313 B
build/mini-cart-contents-block/title-frontend.js 367 B
build/mini-cart-frontend.js 2 kB
build/mini-cart.js 4.29 kB
build/price-filter-frontend.js 13.9 kB
build/price-filter-wrapper-frontend.js 7 kB
build/price-format.js 1.19 kB
build/product-add-to-cart--product-button--product-category-list--product-image--product-price--product-r--a0326d00.js 226 B
build/product-add-to-cart--product-button--product-image--product-rating--product-title.js 151 B
build/product-add-to-cart-frontend.js 6.72 kB
build/product-best-sellers.js 7.61 kB
build/product-button--product-category-list--product-image--product-price--product-rating--product-sale-b--e17c7c01.js 439 B
build/product-button--product-image--product-price--product-rating--product-sale-badge--product-title.js 257 B
build/product-button-frontend.js 2.14 kB
build/product-button.js 3.97 kB
build/product-category-list-frontend.js 1.14 kB
build/product-category-list.js 503 B
build/product-image-frontend.js 2.15 kB
build/product-new.js 7.6 kB
build/product-on-sale.js 7.92 kB
build/product-price-frontend.js 2.23 kB
build/product-price.js 1.58 kB
build/product-query.js 5.92 kB
build/product-rating-frontend.js 1.57 kB
build/product-rating.js 920 B
build/product-sale-badge-frontend.js 1.38 kB
build/product-sku-frontend.js 629 B
build/product-stock-indicator-frontend.js 1.27 kB
build/product-stock-indicator.js 645 B
build/product-summary-frontend.js 1.53 kB
build/product-tag-list-frontend.js 1.13 kB
build/product-title-frontend.js 1.57 kB
build/rating-filter-frontend.js 21.4 kB
build/rating-filter-wrapper-frontend.js 6.21 kB
build/reviews-by-category.js 11.2 kB
build/reviews-frontend.js 7.15 kB
build/single-product-frontend.js 17.8 kB
build/stock-filter-frontend.js 21.1 kB
build/stock-filter-wrapper-frontend.js 5.88 kB
build/vendors--attribute-filter-wrapper--cart-blocks/cart-cross-sells-products--cart-blocks/order-summary--82e4ed06-frontend.js 6.86 kB
build/vendors--attribute-filter-wrapper--rating-filter-wrapper--stock-filter-wrapper-frontend.js 7.69 kB
build/vendors--cart-blocks/cart-cross-sells-products--cart-blocks/cart-line-items--cart-blocks/cart-order--3c5fe802-frontend.js 5.26 kB
build/vendors--cart-blocks/cart-cross-sells-products--cart-blocks/order-summary-shipping--checkout-blocks--18f9376a-frontend.js 19.4 kB
build/vendors--cart-blocks/cart-cross-sells-products--product-add-to-cart-frontend.js 7.53 kB
build/vendors--cart-blocks/cart-line-items--checkout-blocks/order-summary-cart-items--mini-cart-contents---233ab542-frontend.js 3.14 kB
build/vendors--cart-blocks/order-summary-shipping--checkout-blocks/billing-address--checkout-blocks/order--5b8feb0b-frontend.js 4.83 kB
build/vendors--checkout-blocks/shipping-method-frontend.js 12 kB
build/vendors--checkout-blocks/shipping-methods-frontend.js 9.48 kB
build/wc-blocks-data.js 22 kB
build/wc-blocks-editor-style-rtl.css 5.47 kB
build/wc-blocks-editor-style.css 5.47 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 933 B
build/wc-blocks-registry.js 3.16 kB
build/wc-blocks-shared-context.js 1.52 kB
build/wc-blocks-shared-hocs.js 1.73 kB
build/wc-blocks-vendors-style-rtl.css 1.96 kB
build/wc-blocks-vendors-style.css 1.96 kB
build/wc-blocks.js 2.63 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.6 kB
build/wc-shipping-method-pickup-location.js 29.7 kB
build/wp-directives-runtime.js 2.4 kB
build/wp-directives-vendors.js 7.89 kB

compressed-size-action

"default": "small"
}
},
"supports": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Based on the planned native breadcrumbs supports: https://github.com/WordPress/gutenberg/pull/32500/files

@nefeline nefeline self-assigned this Jan 24, 2023
@nefeline nefeline marked this pull request as ready for review January 24, 2023 10:59
@woocommercebot woocommercebot requested review from a team and kmanijak and removed request for a team January 24, 2023 11:01
@nefeline nefeline added the type: new block Applied to work that introduces a new block (typically used on an epic issue). label Jan 24, 2023
Copy link
Contributor

@kmanijak kmanijak left a comment

Choose a reason for hiding this comment

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

Thank you for working on this block! 🎉

I checked it and it tests good 👍 I left minor comments, but except for them all looks good! I'm pre-approving then!

assets/js/blocks/breadcrumbs/block.json Show resolved Hide resolved
assets/js/blocks/breadcrumbs/edit.tsx Outdated Show resolved Hide resolved
tests/e2e/specs/backend/breadcrumbs.test.js Show resolved Hide resolved
@nefeline
Copy link
Contributor Author

Thanks for the review here @kmanijak 🙌 ! Feedback addressed, awaiting design review regarding the copy for the block title and the icon to merge :)

cc: @vivialice

@nefeline nefeline added the needs: design The issue requires design input/work from a designer. label Jan 25, 2023
@kmanijak
Copy link
Contributor

Hi @nefeline, one of the first usage of Breadcrumbs block will be in a blockified Product Archive template (PR).

We realised there's a need for an alignment setting in Store Notices and Breadcrumbs block to be able to recreate the same current layout as current Classic Template (comment)

Do you think you could add the setting within this PR or, in case you have other stuff to work on, I could help with that as I'm currently working on the same setting for the Store Notices block?

@kmanijak
Copy link
Contributor

kmanijak commented Jan 26, 2023

Feedback addressed, awaiting design review regarding the copy for the block title and the icon to merge :)

Regarding icons - we merged Store Notices, Product Results Block and Catalog Sorting with temporary icons, so that won't be a blocker here as well. We'll batch update the icons once they're available.

But I think we should merge with the correct block name. cc'ing: @dinhtungdu who documented the names and descriptions. What should be the block name: Store Breadcrumbs or WooCommerce Breadscrumbs (comment)

@nefeline
Copy link
Contributor Author

Hi there @kmanijak !

Do you think you could add the setting within this PR or, in case you have other stuff to work on, I could help with that as I'm currently working on the same setting for the Store Notices block?

I've added the attribute over here. The support was already enabled for 'wide' and 'full': do we want to support any other alignments or are these enough?

@kmanijak
Copy link
Contributor

I've added the attribute over here.

Thank you for a really quick reaction and solution! 🙇

The support was already enabled for 'wide' and 'full': do we want to support any other alignments or are these enough?

These are enough and also it's aligned with what was added to the Store Notices block 👍

Thank you again for this! 🙏 Let's sort out the naming and let's ship it! 🎉

@vivialice
Copy link

Hey @nefeline ! If I am understanding correctly, we want feedback on the icon and the description text.

The icon looks great to me 👌

I suggest a small amendment to the text by removing the 's' on 'locations':

Enable customers to keep track of their location within the store and navigate back to parent pages.

I have a small design related request: is it possible to increase the margin around the '/' on the breadcrumb? Maybe double what it is at the moment?

@nefeline
Copy link
Contributor Author

Hi @vivialice : thanks for the feedback!

The icon looks great to me 👌

Awesome! 🙌

I suggest a small amendment to the text by removing the 's' on 'locations':

✅ Done

I have a small design related request: is it possible to increase the margin around the '/' on the breadcrumb? Maybe double what it is at the moment?

At this moment, it is not possible as we are relying exclusively on what the core of WooCommerce outputs for the breadcrumbs.

@nefeline nefeline removed the needs: design The issue requires design input/work from a designer. label Jan 27, 2023
@nefeline
Copy link
Contributor Author

Some tests are failing here, but they are all unrelated to this block, @albarin is already working on a fix on #8292, so I'm going ahead and merging this. Thanks all for the reviews!

@nefeline nefeline merged commit 49ce240 into trunk Jan 27, 2023
@nefeline nefeline deleted the add/breadcrumb-block branch January 27, 2023 17:31
@nielslange nielslange added type: enhancement The issue is a request for an enhancement. block: store breadcrumbs Issues related to the Store Breadcrumbs block. labels Jan 30, 2023
@nielslange nielslange changed the title Create Store Breadcrumbs Block Add Store Breadcrumbs block Jan 30, 2023
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.

I know this has already been merged, but I left a couple of questions/comments. Do you think you can take a look, @nefeline? I can open issues if that makes it easier. 🙂

assets/js/blocks/breadcrumbs/block.json Show resolved Hide resolved
assets/js/blocks/breadcrumbs/block.json Show resolved Hide resolved
@nefeline
Copy link
Contributor Author

Thanks @Aljullu !

I know this has already been merged, but I left a couple of questions/comments. Do you think you can take a look, @nefeline?

Sure thing! I'm opening a PR to gate the global styles with experimental flags as suggested.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: store breadcrumbs Issues related to the Store Breadcrumbs block. type: enhancement The issue is a request for an enhancement. type: new block Applied to work that introduces a new block (typically used on an epic issue).
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Create Breadcrumbs Block.
6 participants