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

Use consistent and semantically correct HTML elements in the Cart and Checkout blocks #9065

Conversation

nielslange
Copy link
Member

@nielslange nielslange commented Apr 17, 2023

🤖 Generated by Copilot at 05bf111

Summary

🚚🧹🎨

This pull request refactors the order summary heading components in the cart and checkout blocks, to improve their accessibility, semantics, and reusability. It removes the Title component and the titleTag prop, and uses simple span elements instead of nested headings.

We're refactoring the order summary
To make it more accessible and tidy
We're dropping the titleTag prop
And the Title component we'll chop

Walkthrough

  • Remove titleTag prop from OrderSummary component to simplify API and avoid nested headings (link)
  • Replace Title component with span element in cart-order-summary-heading block and edit components to align with OrderSummary change and reduce bundle size (link, link, link, link, link)

👨‍💼 Enhanced by @nielslange

Fixes #8976

Testing

User Facing Testing

  1. Create a test page and add the Cart block.
  2. Within the post editor, verify that the CART TOTALS element, with the CSS class .wc-block-cart__totals-title, is using a <span> instead of an <h2>.
  3. Create another test page and add the Checkout block.
  4. Within the post editor, verify that the Order summary element, with the CSS class .wc-block-components-order-summary, is using a <div> instead of an <h2>.
  5. Go to the frontend and add a product to the cart.
  6. On the page with the Cart block, verify that the CART TOTALS element, with the CSS class .wc-block-cart__totals-title, is using a <span> instead of an <h2>.
  7. On the page with the Checkout block, verify that the Order summary element, with the CSS class .wc-block-components-order-summary, is using a <div> instead of an <h2>.

WooCommerce Visibility

  • WooCommerce Core
  • Feature plugin
  • Experimental

@nielslange nielslange added type: enhancement The issue is a request for an enhancement. type: refactor The issue/PR is related to refactoring. skip-changelog PRs that you don't want to appear in the changelog. block: cart Issues related to the cart block. block: checkout Issues related to the checkout block. labels Apr 17, 2023
@nielslange nielslange self-assigned this Apr 17, 2023
@github-actions
Copy link
Contributor

github-actions bot commented Apr 17, 2023

The release ZIP for this PR is accessible via:

https://wcblocks.wpcomstaging.com/wp-content/uploads/woocommerce-gutenberg-products-block-9065.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: 452
  • Total errors: 2213

🎉 🎉 This PR does not introduce new TS errors.

comments-aggregator

@nielslange nielslange force-pushed the update/8976-consistent-semantically-correct-HTML-markup branch from 26a7e0e to 05bf111 Compare April 17, 2023 05:48
@github-actions
Copy link
Contributor

github-actions bot commented Apr 17, 2023

Size Change: -217 B (0%)

Total Size: 1.1 MB

Filename Size Change
build/active-filters.js 7.48 kB -5 B (0%)
build/all-products.js 38.4 kB +4 B (0%)
build/all-reviews.js 7.65 kB -2 B (0%)
build/attribute-filter.js 13.2 kB -1 B (0%)
build/breadcrumbs.js 2.05 kB +2 B (0%)
build/cart-blocks/order-summary-heading-frontend.js 334 B -121 B (-27%) 🎉
build/cart-blocks/order-summary-shipping-frontend.js 11.8 kB -1 B (0%)
build/cart.js 44.5 kB -58 B (0%)
build/catalog-sorting.js 1.7 kB +1 B (0%)
build/checkout-blocks/billing-address-frontend.js 4.19 kB -2 B (0%)
build/checkout-blocks/contact-information-frontend.js 2.05 kB -1 B (0%)
build/checkout-blocks/order-note-frontend.js 1.13 kB -1 B (0%)
build/checkout-blocks/order-summary-cart-items-frontend.js 3.69 kB -8 B (0%)
build/checkout-blocks/payment-frontend.js 8.27 kB +3 B (0%)
build/checkout-blocks/pickup-options-frontend.js 4.13 kB -2 B (0%)
build/checkout-blocks/shipping-address-frontend.js 4.14 kB -1 B (0%)
build/checkout-blocks/shipping-method-frontend.js 2.63 kB -2 B (0%)
build/checkout-blocks/shipping-methods-frontend.js 5.84 kB +3 B (0%)
build/checkout-frontend.js 30.9 kB -8 B (0%)
build/checkout.js 46.3 kB -26 B (0%)
build/customer-account.js 3.17 kB +1 B (0%)
build/featured-category.js 14.1 kB +1 B (0%)
build/filter-wrapper.js 2.4 kB +5 B (0%)
build/handpicked-products.js 7.92 kB -4 B (0%)
build/legacy-template.js 5.63 kB -4 B (0%)
build/mini-cart-contents.js 17.8 kB +5 B (0%)
build/price-filter.js 8.46 kB -3 B (0%)
build/product-add-to-cart.js 8.84 kB +7 B (0%)
build/product-best-sellers.js 8.26 kB -2 B (0%)
build/product-button.js 4.17 kB +2 B (0%)
build/product-categories.js 2.36 kB -3 B (0%)
build/product-category.js 9.25 kB +3 B (0%)
build/product-image.js 4.29 kB +1 B (0%)
build/product-new.js 8.26 kB +2 B (0%)
build/product-on-sale.js 8.59 kB -1 B (0%)
build/product-price.js 1.67 kB -1 B (0%)
build/product-query.js 11.3 kB +7 B (0%)
build/product-rating.js 919 B -2 B (0%)
build/product-results-count.js 1.65 kB -2 B (0%)
build/product-sku.js 579 B +1 B (0%)
build/product-stock-indicator.js 645 B -1 B (0%)
build/product-summary.js 922 B +1 B (0%)
build/product-title.js 3.73 kB +9 B (0%)
build/product-top-rated.js 8.5 kB +1 B (0%)
build/rating-filter.js 6.98 kB -2 B (0%)
build/reviews-by-category.js 11.9 kB -5 B (0%)
build/reviews-by-product.js 13 kB -4 B (0%)
build/single-product.js 11 kB +2 B (0%)
build/stock-filter.js 7.71 kB -4 B (0%)
build/store-notices.js 1.69 kB +2 B (0%)
build/wc-blocks-vendors.js 63.8 kB -3 B (0%)
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 7.99 kB
build/active-filters-wrapper-frontend.js 5.97 kB
build/all-products-frontend.js 11.8 kB
build/attribute-filter-frontend.js 22.5 kB
build/attribute-filter-wrapper-frontend.js 7.07 kB
build/blocks-checkout.js 35.1 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 5.37 kB
build/cart-blocks/cart-express-payment--checkout-blocks/express-payment-frontend.js 5.17 kB
build/cart-blocks/cart-express-payment-frontend.js 718 B
build/cart-blocks/cart-items-frontend.js 301 B
build/cart-blocks/cart-line-items--mini-cart-contents-block/products-table-frontend.js 5.39 kB
build/cart-blocks/cart-line-items-frontend.js 1.06 kB
build/cart-blocks/cart-order-summary-frontend.js 1.27 kB
build/cart-blocks/cart-totals-frontend.js 308 B
build/cart-blocks/empty-cart-frontend.js 344 B
build/cart-blocks/filled-cart-frontend.js 656 B
build/cart-blocks/order-summary-coupon-form-frontend.js 1.63 kB
build/cart-blocks/order-summary-discount-frontend.js 2.12 kB
build/cart-blocks/order-summary-fee-frontend.js 272 B
build/cart-blocks/order-summary-subtotal-frontend.js 274 B
build/cart-blocks/order-summary-taxes-frontend.js 431 B
build/cart-blocks/proceed-to-checkout-frontend.js 1.33 kB
build/cart-frontend.js 29.3 kB
build/checkout-blocks/actions-frontend.js 1.84 kB
build/checkout-blocks/express-payment-frontend.js 1.13 kB
build/checkout-blocks/fields-frontend.js 330 B
build/checkout-blocks/order-summary-coupon-form-frontend.js 1.79 kB
build/checkout-blocks/order-summary-discount-frontend.js 2.29 kB
build/checkout-blocks/order-summary-fee-frontend.js 275 B
build/checkout-blocks/order-summary-frontend.js 1.27 kB
build/checkout-blocks/order-summary-shipping-frontend.js 11.8 kB
build/checkout-blocks/order-summary-subtotal-frontend.js 273 B
build/checkout-blocks/order-summary-taxes-frontend.js 431 B
build/checkout-blocks/terms-frontend.js 1.56 kB
build/checkout-blocks/totals-frontend.js 311 B
build/featured-product.js 14.3 kB
build/filter-wrapper-frontend.js 14 kB
build/general-style-rtl.css 1.31 kB
build/general-style.css 1.31 kB
build/mini-cart-component-frontend.js 29.2 kB
build/mini-cart-contents-block/cart-button-frontend.js 868 B
build/mini-cart-contents-block/checkout-button-frontend.js 871 B
build/mini-cart-contents-block/empty-cart-frontend.js 360 B
build/mini-cart-contents-block/filled-cart-frontend.js 268 B
build/mini-cart-contents-block/footer-frontend.js 3.2 kB
build/mini-cart-contents-block/items-frontend.js 237 B
build/mini-cart-contents-block/products-table-frontend.js 589 B
build/mini-cart-contents-block/shopping-button-frontend.js 759 B
build/mini-cart-contents-block/title-frontend.js 1.09 kB
build/mini-cart-contents-block/title-items-counter-frontend.js 730 B
build/mini-cart-contents-block/title-label-frontend.js 659 B
build/mini-cart-frontend.js 2.02 kB
build/mini-cart.js 4.49 kB
build/price-filter-frontend.js 13.9 kB
build/price-filter-wrapper-frontend.js 7.04 kB
build/price-format.js 1.19 kB
build/product-add-to-cart--product-button--product-image--product-price--product-rating--product-sale-bad--49d3ecb2.js 253 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.42 kB
build/product-button--product-image--product-price--product-rating--product-sale-badge--product-sku--prod--5bce0384.js 464 B
build/product-button--product-image--product-price--product-rating--product-sale-badge--product-sku--product-title.js 262 B
build/product-button-frontend.js 1.92 kB
build/product-image-frontend.js 1.83 kB
build/product-price-frontend.js 2.12 kB
build/product-rating-frontend.js 1.33 kB
build/product-sale-badge-frontend.js 974 B
build/product-sale-badge.js 800 B
build/product-search.js 2.63 kB
build/product-sku-frontend.js 1 kB
build/product-stock-indicator-frontend.js 1.01 kB
build/product-summary-frontend.js 1.29 kB
build/product-tag.js 8.74 kB
build/product-title-frontend.js 1.37 kB
build/products-by-attribute.js 9.59 kB
build/rating-filter-frontend.js 20.8 kB
build/rating-filter-wrapper-frontend.js 5.59 kB
build/reviews-frontend.js 7.1 kB
build/stock-filter-frontend.js 21.1 kB
build/stock-filter-wrapper-frontend.js 5.83 kB
build/vendors--attribute-filter-wrapper--cart-blocks/order-summary-coupon-form--cart-blocks/order-summary--48e1e4bb-frontend.js 6.82 kB
build/vendors--attribute-filter-wrapper--rating-filter-wrapper--stock-filter-wrapper-frontend.js 7.7 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-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--decc3dc6-frontend.js 19.4 kB
build/vendors--cart-blocks/order-summary-shipping--checkout-blocks/order-summary-shipping--checkout-block--24d3fc0c-frontend.js 8.24 kB
build/vendors--checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 5.44 kB
build/vendors--checkout-blocks/shipping-method-frontend.js 12 kB
build/vendors--product-add-to-cart-frontend.js 7.25 kB
build/wc-blocks-data.js 21.8 kB
build/wc-blocks-editor-style-rtl.css 5.87 kB
build/wc-blocks-editor-style.css 5.87 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 933 B
build/wc-blocks-registry.js 3.15 kB
build/wc-blocks-shared-context.js 1.52 kB
build/wc-blocks-shared-hocs.js 1.73 kB
build/wc-blocks-style-rtl.css 27.6 kB
build/wc-blocks-style.css 27.5 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.9 kB
build/woo-directives-runtime.js 2.73 kB
build/woo-directives-vendors.js 7.91 kB

compressed-size-action

@@ -35,7 +35,6 @@ const OrderSummary = ( {
{ __( 'Order summary', 'woo-gutenberg-products-block' ) }
</span>
}
titleTag="h2"
Copy link
Member Author

Choose a reason for hiding this comment

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

The issue description on #8976 states the following:

The title Order summary uses a <span> element instead of an <h2> element.

Given that this element will contain a few sub elements, I believe using a <div> is the better option here. Therefore, instead of changing titleTag="h2" to titleTag="span", I removed that part, as div is defined as the default titleTag.

@nielslange nielslange marked this pull request as ready for review April 17, 2023 06:15
@woocommercebot woocommercebot requested review from a team and wavvves and removed request for a team April 17, 2023 06:16
@nielslange nielslange requested a review from tarunvijwani April 17, 2023 07:27
Copy link

@tarunvijwani tarunvijwani 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 it, @nielslange! It works as expected. 🎉

@nielslange
Copy link
Member Author

Thank you for working on it, @nielslange! It works as expected. 🎉

Yeah! Thanks for your review, @tarunvijwani! 🙌

@nielslange nielslange merged commit 14b8cad into add/global-style-for-cart-checkout Apr 18, 2023
@nielslange nielslange deleted the update/8976-consistent-semantically-correct-HTML-markup branch April 18, 2023 03:54
tarunvijwani pushed a commit that referenced this pull request Apr 21, 2023
* Dummy commit to open a PR

* Revert the last change

* Ensure Checkout block supports the theme-level global styles for `Colors » Buttons` (#8844)

* Add GS support for button colors in Checkout block

* Sync button hover effect with GB

* Fix link margin/padding (#8908)

* Replace <AddToCartButton /> with <ProductButton /> (#8914)

* Add GS support for button typography in Checkout block (#8918)

* Ensure Checkout block supports the theme-level global styles for Typography » Buttons (#8892)

* Remove classname from cart image to avoid conflicts (#8898)

Co-authored-by: Niels Lange <[email protected]>

* Use consistent and semantically correct HTML elements in the Cart and Checkout blocks (#9065)

* Allow button height to adjust

* Ensure to display full width heading background

* Inherit font style and font weight for headings

* Inherit font style and font weight for textarea

* Inherit font family and font weight for buttons

---------

Co-authored-by: Niels Lange <[email protected]>
Co-authored-by: Mike Jolley <[email protected]>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: cart Issues related to the cart block. block: checkout Issues related to the checkout block. skip-changelog PRs that you don't want to appear in the changelog. type: enhancement The issue is a request for an enhancement. type: refactor The issue/PR is related to refactoring.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants