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

Expose withFilteredAttributes to extensions #5058

Merged
merged 1 commit into from
Nov 4, 2021

Conversation

senadir
Copy link
Member

@senadir senadir commented Nov 3, 2021

This PR moves withFilteredAttributes to shared-hocs package.

Motivation behind this:

  • Third-party blocks wishing to use attributes in frontend will have to render in them in the saved HTML. A limitation there is that default attributes are not available in PHP, meaning they can't be appended in HTML and can't be accessed in frontend.
  • To fix the issue above, you need to register your block in PHP, and register your attributes there.
  • This solution works fine if all of your attributes are in block.json, but for some blocks, default value of attributes is dynamic and coming from settings or something.
  • So you need to duplicate the default logic in PHP and JS.
  • To avoid doing that, withFilteredAttributes takes your default attributes in JS and pass them to your frontend block, it's the cleanest solution.

@senadir senadir added type: enhancement The issue is a request for an enhancement. category: extensibility Work involving adding or updating extensibility. Useful to combine with other scopes impacted. labels Nov 3, 2021
@senadir senadir self-assigned this Nov 3, 2021
@rubikuserbot rubikuserbot requested review from a team and mikejolley and removed request for a team November 3, 2021 08:06
@github-actions
Copy link
Contributor

github-actions bot commented Nov 3, 2021

Size Change: -801 B (0%)

Total Size: 1.12 MB

Filename Size Change
build/active-filters-frontend.js 8.33 kB -3 B (0%)
build/all-products-frontend.js 23.3 kB -1 B (0%)
build/all-products.js 38 kB -18 B (0%)
build/atomic-block-components/add-to-cart--atomic-block-components/button.js 1.81 kB -1 B (0%)
build/atomic-block-components/add-to-cart--atomic-block-components/image--atomic-block-components/title.js 0 B -334 B (removed) 🏆
build/atomic-block-components/add-to-cart-frontend.js 8.36 kB -149 B (-2%)
build/atomic-block-components/add-to-cart.js 7.85 kB +9 B (0%)
build/atomic-block-components/button-frontend.js 1.74 kB +2 B (0%)
build/atomic-block-components/category-list-frontend.js 464 B -1 B (0%)
build/atomic-block-components/category-list.js 469 B -1 B (0%)
build/atomic-block-components/image-frontend.js 1.71 kB -175 B (-9%)
build/atomic-block-components/image.js 1.36 kB +12 B (+1%)
build/atomic-block-components/price-frontend.js 2.13 kB -1 B (0%)
build/atomic-block-components/sale-badge.js 868 B -1 B (0%)
build/atomic-block-components/sku-frontend.js 390 B -1 B (0%)
build/atomic-block-components/sku.js 393 B +1 B (0%)
build/atomic-block-components/stock-indicator-frontend.js 610 B -2 B (0%)
build/atomic-block-components/tag-list-frontend.js 467 B +1 B (0%)
build/atomic-block-components/title-frontend.js 1.47 kB -163 B (-10%) 👏
build/atomic-block-components/title.js 1.48 kB +13 B (+1%)
build/attribute-filter-frontend.js 18.3 kB +1 B (0%)
build/blocks-checkout.js 21.1 kB +2 B (0%)
build/cart-blocks/accepted-payment-methods-frontend.js 1.38 kB -1 B (0%)
build/cart-blocks/checkout-button-frontend.js 1.22 kB -19 B (-2%)
build/cart-blocks/express-payment--checkout-blocks/express-payment--checkout-blocks/payment-frontend.js 4.72 kB -3 B (0%)
build/cart-blocks/express-payment-frontend.js 1.59 kB +2 B (0%)
build/cart-blocks/filled-cart-frontend.js 805 B -1 B (0%)
build/cart-blocks/items-frontend.js 302 B -1 B (0%)
build/cart-blocks/line-items-frontend.js 5.86 kB +1 B (0%)
build/cart-blocks/order-summary-frontend.js 7.4 kB -24 B (0%)
build/cart-blocks/totals-frontend.js 324 B +1 B (0%)
build/cart-frontend.js 52.9 kB +25 B (0%)
build/checkout-blocks/actions-frontend.js 1.48 kB -23 B (-2%)
build/checkout-blocks/billing-address-frontend.js 2.64 kB -27 B (-1%)
build/checkout-blocks/contact-information-frontend.js 3.87 kB -19 B (0%)
build/checkout-blocks/express-payment-frontend.js 1.93 kB +2 B (0%)
build/checkout-blocks/fields-frontend.js 347 B +1 B (0%)
build/checkout-blocks/order-summary-frontend.js 12.8 kB +5 B (0%)
build/checkout-blocks/payment-frontend.js 4.55 kB -33 B (-1%)
build/checkout-blocks/shipping-address-frontend.js 3.03 kB -27 B (-1%)
build/checkout-blocks/shipping-methods-frontend.js 5.54 kB -17 B (0%)
build/checkout-blocks/terms-frontend.js 1.65 kB -2 B (0%)
build/checkout-blocks/totals-frontend.js 330 B +1 B (0%)
build/checkout-frontend.js 55.1 kB +12 B (0%)
build/checkout.js 54 kB +1 B (0%)
build/legacy-template.js 2.03 kB -1 B (0%)
build/mini-cart-component-frontend.js 45 kB +3 B (0%)
build/reviews-frontend.js 8.96 kB +1 B (0%)
build/single-product-frontend.js 26.6 kB -4 B (0%)
build/single-product.js 9.75 kB -17 B (0%)
build/stock-filter-frontend.js 8.77 kB -1 B (0%)
build/vendors--atomic-block-components/add-to-cart--cart-blocks/order-summary--checkout-blocks/billing-ad--c5eb4dcd-frontend.js 16.1 kB +2 B (0%)
build/vendors--atomic-block-components/add-to-cart-frontend.js 4.77 kB +1 B (0%)
build/wc-blocks-data.js 11.3 kB +2 B (0%)
build/wc-blocks-middleware.js 1.47 kB +1 B (0%)
build/wc-blocks-registry.js 3.71 kB +1 B (0%)
build/wc-blocks-shared-context.js 1.54 kB -3 B (0%)
build/wc-blocks-shared-hocs.js 1.92 kB +171 B (+10%) ⚠️
build/wc-settings.js 2.91 kB -1 B (0%)
ℹ️ View Unchanged
Filename Size
build/active-filters.js 8.01 kB
build/all-reviews.js 9.57 kB
build/atomic-block-components/add-to-cart--atomic-block-components/button--atomic-block-components/image---a7e2bb9b.js 3.19 kB
build/atomic-block-components/button.js 875 B
build/atomic-block-components/price.js 2.11 kB
build/atomic-block-components/rating-frontend.js 561 B
build/atomic-block-components/rating.js 565 B
build/atomic-block-components/sale-badge-frontend.js 859 B
build/atomic-block-components/stock-indicator.js 611 B
build/atomic-block-components/summary-frontend.js 906 B
build/atomic-block-components/summary.js 912 B
build/atomic-block-components/tag-list.js 471 B
build/attribute-filter.js 12.1 kB
build/cart-blocks/empty-cart-frontend.js 349 B
build/cart-blocks/order-summary--checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 3.69 kB
build/cart.js 50.5 kB
build/checkout-blocks/order-note-frontend.js 1.56 kB
build/featured-category.js 7.74 kB
build/featured-product.js 9.42 kB
build/handpicked-products.js 6.27 kB
build/mini-cart-frontend.js 2.33 kB
build/mini-cart.js 5.72 kB
build/price-filter-frontend.js 14.4 kB
build/price-filter.js 9.65 kB
build/price-format.js 1.37 kB
build/product-best-sellers.js 6.62 kB
build/product-categories.js 3.37 kB
build/product-category.js 7.49 kB
build/product-new.js 6.77 kB
build/product-on-sale.js 7.11 kB
build/product-search.js 2.68 kB
build/product-tag.js 6.6 kB
build/product-top-rated.js 6.74 kB
build/products-by-attribute.js 7.7 kB
build/reviews-by-category.js 11.4 kB
build/reviews-by-product.js 13 kB
build/stock-filter.js 7.81 kB
build/vendors--atomic-block-components/price--cart-blocks/line-items--cart-blocks/order-summary--checkout--8a3571de-frontend.js 5.71 kB
build/vendors--cart-blocks/line-items--checkout-blocks/order-summary-frontend.js 3.14 kB
build/vendors--cart-blocks/order-summary--checkout-blocks/billing-address--checkout-blocks/order-summary---eb4d2cec-frontend.js 5.02 kB
build/wc-blocks-editor-style-rtl.css 15.7 kB
build/wc-blocks-editor-style.css 15.7 kB
build/wc-blocks-google-analytics.js 1.98 kB
build/wc-blocks-style-rtl.css 21.1 kB
build/wc-blocks-style.css 21 kB
build/wc-blocks-vendors-style-rtl.css 1.37 kB
build/wc-blocks-vendors-style.css 1.37 kB
build/wc-blocks-vendors.js 254 kB
build/wc-blocks.js 3.49 kB
build/wc-payment-method-bacs.js 806 B
build/wc-payment-method-cheque.js 806 B
build/wc-payment-method-cod.js 898 B
build/wc-payment-method-paypal.js 839 B
build/wc-payment-method-stripe.js 12.2 kB

compressed-size-action

Copy link
Member

@mikejolley mikejolley left a comment

Choose a reason for hiding this comment

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

LGTM

@github-actions github-actions bot added this to the 6.3.0 milestone Nov 4, 2021
@mikejolley mikejolley merged commit 4cbdea8 into trunk Nov 4, 2021
@mikejolley mikejolley deleted the add/move-filter-attributes-hoc-to-shared branch November 4, 2021 11:03
@nielslange nielslange added the skip-changelog PRs that you don't want to appear in the changelog. label Nov 16, 2021
jonny-bull pushed a commit to jonny-bull/woocommerce-gutenberg-products-block that referenced this pull request Dec 14, 2021
jonny-bull pushed a commit to jonny-bull/woocommerce-gutenberg-products-block that referenced this pull request Dec 16, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
category: extensibility Work involving adding or updating extensibility. Useful to combine with other scopes impacted. skip-changelog PRs that you don't want to appear in the changelog. type: enhancement The issue is a request for an enhancement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants