woocommerce/plugins/woocommerce-blocks/assets/js/data/shared-controls.ts

198 lines
5.2 KiB
TypeScript
Raw Normal View History

All Products with Inner Blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1032) * Inital block creation * Update labels * Columns, rows, sample data json * Output data from API * thumbnail_html * Split into smaller components of grid * Price handling * Image handling * Remove ! * frontend * Work on cart api * Cart error handling and product type conditions * innerblock progress * Implement layoutConfig as set from innerblocks shape. Note: - this is just a poc - where things are configured likely needs changed - will still need to work out how this gets persisted for the frontend and how things get displayed there (but likely will work fairly similar in terms of mapping to components). * use correct prop name * Working edit button * Clean up block controls and edit view * Add link with innerblocks * update link description * correctly handle components with inner blocks as children * Re-organise atomic components and blocks into own directories * Unique keys for components * Fix default layout when inserting block for first time * Working layoutconfig save * Save attributes * Move sale badge to image component * Add disabled to render preview and blocks * icons * Editor view styling * Update withComponetId to stop component ID incrementing too many times Co-Authored-By: Darren Ethier <darren@roughsmootheng.in> * Improve key generation * done/cancel buttons on edit * Create withProducts HOC for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/994) * Create withProducts HOC for All Products block * Add order select and pagination to All Products block * Go to first page when changing order * Add HOC test * Make sure block is updated whem columns/rows change in the editor * Fix 'SALE' badge positioning * Remove unnecessary key * Honor 'perPage' value when generating placeholders * Make placeholder sizes match rendered block item * Several CSS improvements * Remove unused CSS properties * Move getProducts to hocs utils * Remove All Products sample-data.json * Fix order select wrong margin in the editor * Refactor how loading image gets its size * Clear products when loadProducts start * Enhance pagination logic * Fix placeholder width * Fix regular_price check * Set product link max-width * Implement querystrings for the All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/997) * Implement querystrings for the All Products block * Create withWindow HOC * Add with-window tests * Use renderFrontend util in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1003) * Add with-window tests * Use renderFrontend util in All Products block * Rename properties and components from 'order' to 'sort' (https://github.com/woocommerce/woocommerce-blocks/pull/1012) * Rename properties and components from 'order' to 'sort' * Rename onOrderChange to onSortChange * Remove unnecessary stylint-disable-line (https://github.com/woocommerce/woocommerce-blocks/pull/1016) * Create withBrowserLocation and withBrowserHistory HOC (https://github.com/woocommerce/woocommerce-blocks/pull/1022) * Create withBrowserWindowProp HOC * Remove unnecessary expect's * Always pass window prop to propMap if it exists * Scroll to top when switching pages in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1011) * Scroll to top when switching pages in All Pages block * Improve keyboard navigation in the All Products block * Create withScrollToTop HOC * Fix variable name typo * Update paths with aliases * Avoid first and last page being included in pagination 'pagesToDisplay' (https://github.com/woocommerce/woocommerce-blocks/pull/1015) * Update lock * constants * linting * Clean up styling * Prettier * Block options for title/image * Prettier * Remove shared content controls * Update atomic block descriptions * Summary block * Prettier * Impoved template edit appearance and added inline tips * Apply prettier * Reset and cancel buttons * Improved keys * Tweak tip placement * Remove incorrect comments * Remove disabled ofr non interactive elements * Fragment not needed * Update assets/js/atomic/components/product-list/title/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Move componentId hoc * Comment * Implement onImageLoaded * Pagination: disable first/last page if they are active (https://github.com/woocommerce/woocommerce-blocks/pull/1041) * Update assets/js/atomic/components/product-list/rating/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Sale badges refactoring Adds sale badges blocks and improves how the default blocks are defined. * revert changes in withComponentId * fix flexbox alignment * Create withQueryStringValues HOC and use it in ProductGrid component (https://github.com/woocommerce/woocommerce-blocks/pull/1040) * Create withQueryStringValues HOC and use it in ProductGrid component * Add tests * Add comment explaining urlParameterSuffix * Don't destructure props if only used once * Move dependencies check outside the HOC * Update test description * Remove HOCs no longer used * Update assets/js/atomic/blocks/product-list/image/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Feedback * Grid to List * Improved badge handling * update package-lock after merge from master * Add wp.data store for schema and lists. (https://github.com/woocommerce/woocommerce-blocks/pull/1008) * install @wordpress/data-controls and deepFreeze * add schema store * add query-state store * add collections store * add bundle entry point (and export store keys and constants) * add master README.md for new stores * add bundle configuration and register asset php side * Add missing param name Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * code style fixes * remove unnecessary period from test description * Simplify conditional * reorder imports (code style) * reorder imports and codestyle * refactor using lodash for state utils * reorder imports * reorder imports * reorder dependencies * reorder dependnecies an remove duplication block * remove errant tab * reorder dependencies * Modify collections store to add headers to the store state. (https://github.com/woocommerce/woocommerce-blocks/pull/1073) * add control for getting unparsed response from apiFetch * Modify action so it recieves a response object. * modify reducer to handle response object * improve selectors to make headers accessible - modifys existing `getCollection` to retrieve items from state. - adds `getCollectionHeader` selector * update resolvers to handle full response from request - also adds resolver for `getCollectionHeader` * update docs for changes * Improve spacing in doc Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * Fix spacing in inline docs Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * change `getFromState` to receive an object instead of arguments list. * Prepare All Products block to accept extension inner blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1047) * Simplify BLOCK_MAP * Prepare All Products block to accept extension inner blocks * Change filter name * Update filter name * Add check that block exists in BLOCK_MAP * Create REVERSED_BLOCK_MAP instead of searching blocks each time * Change how child blocks are registered for All Products block * Refactor All Products block so reverse map isn't needed * Remove getDefaultBlocks * Make sure getRegisteredInnerBlocks always returns an object and add checks to registerInnerBlock * Add missing blockName arg * Add inline docs to block registry * Move 'blockName' prop to context * Typos * Improve registerInnerBlock error messages and create a validation function * Refactor context * Rename validateOption to assertOption * refactor where new context lives and add alias for base-context * fix doc block * remove todo block (there’s an issue for it) * rename context * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * HeadingToolbar comment * Tweak bool comparison * Improve how default layouts are set so all blocks can be removed and the no-content message is correct * Sale centering * Fix default template * Product example switch to preview * Update preview schema and image data to match latest schema * Add @woocommerce/atomic-components alias * Alias for previews to prevent need for relative paths * Drop `align` for sale block Align disrupts other blocks in unexpected and unavoidable ways. Drop support so the sale block is a block level item. * Rename atomic components and blocks (and create ProductLayoutContext) (https://github.com/woocommerce/woocommerce-blocks/pull/1089) * rename atomic blocks and components to be more generic (drop list) * create new context for productlayout and implement provider * Rename ProductSalesBadge to ProductSaleBadge * Add php5.3 restriction for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1090) * enable legacy builds and add handling for AllProducts to be wp5.3 only * fix legacy builds * Prevent filemtime notice * Implement new data stores with All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1067) * add new hooks and tests and alias for hooks * various fixes for stores after implementation tests * implement new stores for ProductList component * add doc blocks for useStoreProducts hooks * fix typo in property on returned object
2019-10-28 13:53:09 +00:00
/**
* External dependencies
*/
import { __ } from '@wordpress/i18n';
Add TypeScript support and convert cart data store to TypeScript (https://github.com/woocommerce/woocommerce-blocks/pull/3768) * add typescript support * Add type declarations for Cart and CartResponse interfaces * make sure we’re resolving .ts files as well as .js files on imports * add more types * type the cart data store * Apply suggestions from code review (implement .tsx in configs) Co-authored-by: Jon Surrell <jon.surrell@automattic.com> * remove global fetchMock declaration and directly import where used. * rename type * remove named action types and just infer by returning action creator values as const * use interface instead of type * rename * renames * create CartAction type as union of action creator returned types and implement in reducer * remove unused imports * refresh package-lock after rebase * Add base TS config that projects will inherit from * Add tsconfig for assets/js/data project * Ignore TS error on cart store registration We will address this in cooldown when we have time to investigate further * Add tsc to build step to catch TypeScript errors * add a separate command for tsc and tweak build command to use * restore checkJs and allowJs values in config and remove ts check from build command * Add ts:check-all command * Add TypeScript checking workflows * Change triggers for TypeScript workflow * Use npm ci instead of npm install * Remove ts:check-all from TypeScript workflow * Remove TS Check GitHub workflow * Remove type-defs dir from TS include, and remove ts:check-all script We no longer need the ts:check-all script because ts:check will do this for us, the old ts:check did nothing and did not work. * fix coupon loading issues * include .ts files only from type-defs folder Co-authored-by: Jon Surrell <jon.surrell@automattic.com> Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
2021-02-24 01:36:24 +00:00
import triggerFetch, { APIFetchOptions } from '@wordpress/api-fetch';
import DataLoader from 'dataloader';
Move Block Type Settings into Block Type Classes (https://github.com/woocommerce/woocommerce-blocks/pull/4059) * BLOCK SETTINGS: Remove unused constants/settings * AssetDataRegistry: Helpers to check for settings that exist, and registering page ID/permalinks * Move checkout and cart block settings to checkout and cart blocktypes * Move isShippingCalculatorEnabled to cart block * Remove HAS_DARK_EDITOR_STYLE_SUPPORT and IS_SHIPPING_CALCULATOR_ENABLED in favour of getSetting * Move displayCartPricesIncludingTax to blocktypes, and implement getSetting * Move block settings to core settings and blocktypes * Fix namespace usage * Move review settings * move tag settings * Keep productCount in core data * Move min and default height * Improve storePages code * Move attributes to attribute filter block type * Move $word_count_type outside of settings array * Remove unneeded setting in preview data (shippingCostRequiresAddress) * Move min/max settings dependency from GridLayoutControl to Blocks themselves and use getSettings * DEFAULT_COLUMNS and ROWS to settings * Move product columns/rows to block types * Add grid settings to AllProducts block * Correct default rows * correct min rows default * Move hasDarkEditorStyleSupport * Move hideOutOfStockItems to block type settings * Move build settings to inline script dependency * Pass data through asset api and move restApiRoutes * Export all core settings as constants * Remove WORD_COUNT_TYPE from core settings * Move some other core settings to assets * Update constants * Make settings use TypeScript * Update CURRENT_USER_IS_ADMIN usage * WORD_COUNT_TYPE * REST_API_ROUTES * REVIEW_RATINGS_ENABLED and SHOW_AVATARS * Remove REVIEW_RATINGS_ENABLED and SHOW_AVATARS constants * Remove MIN_HEIGHT * Remove DEFAULT_HEIGHT * PLACEHOLDER_IMG_SRC * LIMIT_TAGS * HAS_PRODUCTS * HOME_URL * HAS_TAGS * COUPONS_ENABLED * SHIPPING_ENABLED * TAXES_ENABLED * DISPLAY_ITEMIZED_TAXES * SHIPPING_COST_REQUIRES_ADDRESS * SHIPPING_STATES and SHIPPING_COUNTRIES * STORE_PAGES * ALLOWED_COUNTRIES * ALLOWED_STATES * SHIPPING_METHODS_EXIST * PAYMENT_GATEWAY_SORT_ORDER * CHECKOUT_SHOW_LOGIN_REMINDER * CHECKOUT_ALLOWS_GUEST and CHECKOUT_ALLOWS_SIGNUP * ATTRIBUTES * DISPLAY_CART_PRICES_INCLUDING_TAX * DISPLAY_CART_PRICES_INCLUDING_TAX * update build for TS files * fix build dir * Move blocks build config params * Move placeholderImgSrc to core settings * Move rest api hydration hoc to shared hocs and provide it restApiRoutes directly to avoid asset data registration * Move wordCountType to abstract block * Remove WORD_COUNT_TYPE in favour of getSetting * Move IS_LARGE_CATALOG and PRODUCT_COUNT to abstract block type and use getSetting inline * Add wcBlocksConfig * fix tests * Remove unused $asset_data_registry * remove console.log * Move build settings to abstract block * Trigger build again * Move hydration back to regular hocs for compatibility with trunk (merge conflict) * Removed wcSharedHocsConfig * esc home url * Update search fixture * Update search snap * 40000 timeout * hasProducts -> productCount * Product Count is part of blocks config * update mocks * Use version comparison to determine if batching is enabled * Change isWpVersion * scrollTo button
2021-04-22 11:37:27 +00:00
import { isWpVersion } from '@woocommerce/settings';
/**
* Internal dependencies
*/
import {
assertBatchResponseIsValid,
assertResponseIsValid,
ApiResponse,
} from './types';
Add TypeScript support and convert cart data store to TypeScript (https://github.com/woocommerce/woocommerce-blocks/pull/3768) * add typescript support * Add type declarations for Cart and CartResponse interfaces * make sure we’re resolving .ts files as well as .js files on imports * add more types * type the cart data store * Apply suggestions from code review (implement .tsx in configs) Co-authored-by: Jon Surrell <jon.surrell@automattic.com> * remove global fetchMock declaration and directly import where used. * rename type * remove named action types and just infer by returning action creator values as const * use interface instead of type * rename * renames * create CartAction type as union of action creator returned types and implement in reducer * remove unused imports * refresh package-lock after rebase * Add base TS config that projects will inherit from * Add tsconfig for assets/js/data project * Ignore TS error on cart store registration We will address this in cooldown when we have time to investigate further * Add tsc to build step to catch TypeScript errors * add a separate command for tsc and tweak build command to use * restore checkJs and allowJs values in config and remove ts check from build command * Add ts:check-all command * Add TypeScript checking workflows * Change triggers for TypeScript workflow * Use npm ci instead of npm install * Remove ts:check-all from TypeScript workflow * Remove TS Check GitHub workflow * Remove type-defs dir from TS include, and remove ts:check-all script We no longer need the ts:check-all script because ts:check will do this for us, the old ts:check did nothing and did not work. * fix coupon loading issues * include .ts files only from type-defs folder Co-authored-by: Jon Surrell <jon.surrell@automattic.com> Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
2021-02-24 01:36:24 +00:00
All Products with Inner Blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1032) * Inital block creation * Update labels * Columns, rows, sample data json * Output data from API * thumbnail_html * Split into smaller components of grid * Price handling * Image handling * Remove ! * frontend * Work on cart api * Cart error handling and product type conditions * innerblock progress * Implement layoutConfig as set from innerblocks shape. Note: - this is just a poc - where things are configured likely needs changed - will still need to work out how this gets persisted for the frontend and how things get displayed there (but likely will work fairly similar in terms of mapping to components). * use correct prop name * Working edit button * Clean up block controls and edit view * Add link with innerblocks * update link description * correctly handle components with inner blocks as children * Re-organise atomic components and blocks into own directories * Unique keys for components * Fix default layout when inserting block for first time * Working layoutconfig save * Save attributes * Move sale badge to image component * Add disabled to render preview and blocks * icons * Editor view styling * Update withComponetId to stop component ID incrementing too many times Co-Authored-By: Darren Ethier <darren@roughsmootheng.in> * Improve key generation * done/cancel buttons on edit * Create withProducts HOC for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/994) * Create withProducts HOC for All Products block * Add order select and pagination to All Products block * Go to first page when changing order * Add HOC test * Make sure block is updated whem columns/rows change in the editor * Fix 'SALE' badge positioning * Remove unnecessary key * Honor 'perPage' value when generating placeholders * Make placeholder sizes match rendered block item * Several CSS improvements * Remove unused CSS properties * Move getProducts to hocs utils * Remove All Products sample-data.json * Fix order select wrong margin in the editor * Refactor how loading image gets its size * Clear products when loadProducts start * Enhance pagination logic * Fix placeholder width * Fix regular_price check * Set product link max-width * Implement querystrings for the All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/997) * Implement querystrings for the All Products block * Create withWindow HOC * Add with-window tests * Use renderFrontend util in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1003) * Add with-window tests * Use renderFrontend util in All Products block * Rename properties and components from 'order' to 'sort' (https://github.com/woocommerce/woocommerce-blocks/pull/1012) * Rename properties and components from 'order' to 'sort' * Rename onOrderChange to onSortChange * Remove unnecessary stylint-disable-line (https://github.com/woocommerce/woocommerce-blocks/pull/1016) * Create withBrowserLocation and withBrowserHistory HOC (https://github.com/woocommerce/woocommerce-blocks/pull/1022) * Create withBrowserWindowProp HOC * Remove unnecessary expect's * Always pass window prop to propMap if it exists * Scroll to top when switching pages in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1011) * Scroll to top when switching pages in All Pages block * Improve keyboard navigation in the All Products block * Create withScrollToTop HOC * Fix variable name typo * Update paths with aliases * Avoid first and last page being included in pagination 'pagesToDisplay' (https://github.com/woocommerce/woocommerce-blocks/pull/1015) * Update lock * constants * linting * Clean up styling * Prettier * Block options for title/image * Prettier * Remove shared content controls * Update atomic block descriptions * Summary block * Prettier * Impoved template edit appearance and added inline tips * Apply prettier * Reset and cancel buttons * Improved keys * Tweak tip placement * Remove incorrect comments * Remove disabled ofr non interactive elements * Fragment not needed * Update assets/js/atomic/components/product-list/title/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Move componentId hoc * Comment * Implement onImageLoaded * Pagination: disable first/last page if they are active (https://github.com/woocommerce/woocommerce-blocks/pull/1041) * Update assets/js/atomic/components/product-list/rating/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Sale badges refactoring Adds sale badges blocks and improves how the default blocks are defined. * revert changes in withComponentId * fix flexbox alignment * Create withQueryStringValues HOC and use it in ProductGrid component (https://github.com/woocommerce/woocommerce-blocks/pull/1040) * Create withQueryStringValues HOC and use it in ProductGrid component * Add tests * Add comment explaining urlParameterSuffix * Don't destructure props if only used once * Move dependencies check outside the HOC * Update test description * Remove HOCs no longer used * Update assets/js/atomic/blocks/product-list/image/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Feedback * Grid to List * Improved badge handling * update package-lock after merge from master * Add wp.data store for schema and lists. (https://github.com/woocommerce/woocommerce-blocks/pull/1008) * install @wordpress/data-controls and deepFreeze * add schema store * add query-state store * add collections store * add bundle entry point (and export store keys and constants) * add master README.md for new stores * add bundle configuration and register asset php side * Add missing param name Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * code style fixes * remove unnecessary period from test description * Simplify conditional * reorder imports (code style) * reorder imports and codestyle * refactor using lodash for state utils * reorder imports * reorder imports * reorder dependencies * reorder dependnecies an remove duplication block * remove errant tab * reorder dependencies * Modify collections store to add headers to the store state. (https://github.com/woocommerce/woocommerce-blocks/pull/1073) * add control for getting unparsed response from apiFetch * Modify action so it recieves a response object. * modify reducer to handle response object * improve selectors to make headers accessible - modifys existing `getCollection` to retrieve items from state. - adds `getCollectionHeader` selector * update resolvers to handle full response from request - also adds resolver for `getCollectionHeader` * update docs for changes * Improve spacing in doc Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * Fix spacing in inline docs Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * change `getFromState` to receive an object instead of arguments list. * Prepare All Products block to accept extension inner blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1047) * Simplify BLOCK_MAP * Prepare All Products block to accept extension inner blocks * Change filter name * Update filter name * Add check that block exists in BLOCK_MAP * Create REVERSED_BLOCK_MAP instead of searching blocks each time * Change how child blocks are registered for All Products block * Refactor All Products block so reverse map isn't needed * Remove getDefaultBlocks * Make sure getRegisteredInnerBlocks always returns an object and add checks to registerInnerBlock * Add missing blockName arg * Add inline docs to block registry * Move 'blockName' prop to context * Typos * Improve registerInnerBlock error messages and create a validation function * Refactor context * Rename validateOption to assertOption * refactor where new context lives and add alias for base-context * fix doc block * remove todo block (there’s an issue for it) * rename context * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * HeadingToolbar comment * Tweak bool comparison * Improve how default layouts are set so all blocks can be removed and the no-content message is correct * Sale centering * Fix default template * Product example switch to preview * Update preview schema and image data to match latest schema * Add @woocommerce/atomic-components alias * Alias for previews to prevent need for relative paths * Drop `align` for sale block Align disrupts other blocks in unexpected and unavoidable ways. Drop support so the sale block is a block level item. * Rename atomic components and blocks (and create ProductLayoutContext) (https://github.com/woocommerce/woocommerce-blocks/pull/1089) * rename atomic blocks and components to be more generic (drop list) * create new context for productlayout and implement provider * Rename ProductSalesBadge to ProductSaleBadge * Add php5.3 restriction for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1090) * enable legacy builds and add handling for AllProducts to be wp5.3 only * fix legacy builds * Prevent filemtime notice * Implement new data stores with All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1067) * add new hooks and tests and alias for hooks * various fixes for stores after implementation tests * implement new stores for ProductList component * add doc blocks for useStoreProducts hooks * fix typo in property on returned object
2019-10-28 13:53:09 +00:00
/**
* Dispatched a control action for triggering an api fetch call with no parsing.
* Typically this would be used in scenarios where headers are needed.
*
Add TypeScript support and convert cart data store to TypeScript (https://github.com/woocommerce/woocommerce-blocks/pull/3768) * add typescript support * Add type declarations for Cart and CartResponse interfaces * make sure we’re resolving .ts files as well as .js files on imports * add more types * type the cart data store * Apply suggestions from code review (implement .tsx in configs) Co-authored-by: Jon Surrell <jon.surrell@automattic.com> * remove global fetchMock declaration and directly import where used. * rename type * remove named action types and just infer by returning action creator values as const * use interface instead of type * rename * renames * create CartAction type as union of action creator returned types and implement in reducer * remove unused imports * refresh package-lock after rebase * Add base TS config that projects will inherit from * Add tsconfig for assets/js/data project * Ignore TS error on cart store registration We will address this in cooldown when we have time to investigate further * Add tsc to build step to catch TypeScript errors * add a separate command for tsc and tweak build command to use * restore checkJs and allowJs values in config and remove ts check from build command * Add ts:check-all command * Add TypeScript checking workflows * Change triggers for TypeScript workflow * Use npm ci instead of npm install * Remove ts:check-all from TypeScript workflow * Remove TS Check GitHub workflow * Remove type-defs dir from TS include, and remove ts:check-all script We no longer need the ts:check-all script because ts:check will do this for us, the old ts:check did nothing and did not work. * fix coupon loading issues * include .ts files only from type-defs folder Co-authored-by: Jon Surrell <jon.surrell@automattic.com> Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
2021-02-24 01:36:24 +00:00
* @param {APIFetchOptions} options The options for the API request.
All Products with Inner Blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1032) * Inital block creation * Update labels * Columns, rows, sample data json * Output data from API * thumbnail_html * Split into smaller components of grid * Price handling * Image handling * Remove ! * frontend * Work on cart api * Cart error handling and product type conditions * innerblock progress * Implement layoutConfig as set from innerblocks shape. Note: - this is just a poc - where things are configured likely needs changed - will still need to work out how this gets persisted for the frontend and how things get displayed there (but likely will work fairly similar in terms of mapping to components). * use correct prop name * Working edit button * Clean up block controls and edit view * Add link with innerblocks * update link description * correctly handle components with inner blocks as children * Re-organise atomic components and blocks into own directories * Unique keys for components * Fix default layout when inserting block for first time * Working layoutconfig save * Save attributes * Move sale badge to image component * Add disabled to render preview and blocks * icons * Editor view styling * Update withComponetId to stop component ID incrementing too many times Co-Authored-By: Darren Ethier <darren@roughsmootheng.in> * Improve key generation * done/cancel buttons on edit * Create withProducts HOC for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/994) * Create withProducts HOC for All Products block * Add order select and pagination to All Products block * Go to first page when changing order * Add HOC test * Make sure block is updated whem columns/rows change in the editor * Fix 'SALE' badge positioning * Remove unnecessary key * Honor 'perPage' value when generating placeholders * Make placeholder sizes match rendered block item * Several CSS improvements * Remove unused CSS properties * Move getProducts to hocs utils * Remove All Products sample-data.json * Fix order select wrong margin in the editor * Refactor how loading image gets its size * Clear products when loadProducts start * Enhance pagination logic * Fix placeholder width * Fix regular_price check * Set product link max-width * Implement querystrings for the All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/997) * Implement querystrings for the All Products block * Create withWindow HOC * Add with-window tests * Use renderFrontend util in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1003) * Add with-window tests * Use renderFrontend util in All Products block * Rename properties and components from 'order' to 'sort' (https://github.com/woocommerce/woocommerce-blocks/pull/1012) * Rename properties and components from 'order' to 'sort' * Rename onOrderChange to onSortChange * Remove unnecessary stylint-disable-line (https://github.com/woocommerce/woocommerce-blocks/pull/1016) * Create withBrowserLocation and withBrowserHistory HOC (https://github.com/woocommerce/woocommerce-blocks/pull/1022) * Create withBrowserWindowProp HOC * Remove unnecessary expect's * Always pass window prop to propMap if it exists * Scroll to top when switching pages in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1011) * Scroll to top when switching pages in All Pages block * Improve keyboard navigation in the All Products block * Create withScrollToTop HOC * Fix variable name typo * Update paths with aliases * Avoid first and last page being included in pagination 'pagesToDisplay' (https://github.com/woocommerce/woocommerce-blocks/pull/1015) * Update lock * constants * linting * Clean up styling * Prettier * Block options for title/image * Prettier * Remove shared content controls * Update atomic block descriptions * Summary block * Prettier * Impoved template edit appearance and added inline tips * Apply prettier * Reset and cancel buttons * Improved keys * Tweak tip placement * Remove incorrect comments * Remove disabled ofr non interactive elements * Fragment not needed * Update assets/js/atomic/components/product-list/title/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Move componentId hoc * Comment * Implement onImageLoaded * Pagination: disable first/last page if they are active (https://github.com/woocommerce/woocommerce-blocks/pull/1041) * Update assets/js/atomic/components/product-list/rating/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Sale badges refactoring Adds sale badges blocks and improves how the default blocks are defined. * revert changes in withComponentId * fix flexbox alignment * Create withQueryStringValues HOC and use it in ProductGrid component (https://github.com/woocommerce/woocommerce-blocks/pull/1040) * Create withQueryStringValues HOC and use it in ProductGrid component * Add tests * Add comment explaining urlParameterSuffix * Don't destructure props if only used once * Move dependencies check outside the HOC * Update test description * Remove HOCs no longer used * Update assets/js/atomic/blocks/product-list/image/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Feedback * Grid to List * Improved badge handling * update package-lock after merge from master * Add wp.data store for schema and lists. (https://github.com/woocommerce/woocommerce-blocks/pull/1008) * install @wordpress/data-controls and deepFreeze * add schema store * add query-state store * add collections store * add bundle entry point (and export store keys and constants) * add master README.md for new stores * add bundle configuration and register asset php side * Add missing param name Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * code style fixes * remove unnecessary period from test description * Simplify conditional * reorder imports (code style) * reorder imports and codestyle * refactor using lodash for state utils * reorder imports * reorder imports * reorder dependencies * reorder dependnecies an remove duplication block * remove errant tab * reorder dependencies * Modify collections store to add headers to the store state. (https://github.com/woocommerce/woocommerce-blocks/pull/1073) * add control for getting unparsed response from apiFetch * Modify action so it recieves a response object. * modify reducer to handle response object * improve selectors to make headers accessible - modifys existing `getCollection` to retrieve items from state. - adds `getCollectionHeader` selector * update resolvers to handle full response from request - also adds resolver for `getCollectionHeader` * update docs for changes * Improve spacing in doc Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * Fix spacing in inline docs Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * change `getFromState` to receive an object instead of arguments list. * Prepare All Products block to accept extension inner blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1047) * Simplify BLOCK_MAP * Prepare All Products block to accept extension inner blocks * Change filter name * Update filter name * Add check that block exists in BLOCK_MAP * Create REVERSED_BLOCK_MAP instead of searching blocks each time * Change how child blocks are registered for All Products block * Refactor All Products block so reverse map isn't needed * Remove getDefaultBlocks * Make sure getRegisteredInnerBlocks always returns an object and add checks to registerInnerBlock * Add missing blockName arg * Add inline docs to block registry * Move 'blockName' prop to context * Typos * Improve registerInnerBlock error messages and create a validation function * Refactor context * Rename validateOption to assertOption * refactor where new context lives and add alias for base-context * fix doc block * remove todo block (there’s an issue for it) * rename context * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * HeadingToolbar comment * Tweak bool comparison * Improve how default layouts are set so all blocks can be removed and the no-content message is correct * Sale centering * Fix default template * Product example switch to preview * Update preview schema and image data to match latest schema * Add @woocommerce/atomic-components alias * Alias for previews to prevent need for relative paths * Drop `align` for sale block Align disrupts other blocks in unexpected and unavoidable ways. Drop support so the sale block is a block level item. * Rename atomic components and blocks (and create ProductLayoutContext) (https://github.com/woocommerce/woocommerce-blocks/pull/1089) * rename atomic blocks and components to be more generic (drop list) * create new context for productlayout and implement provider * Rename ProductSalesBadge to ProductSaleBadge * Add php5.3 restriction for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1090) * enable legacy builds and add handling for AllProducts to be wp5.3 only * fix legacy builds * Prevent filemtime notice * Implement new data stores with All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1067) * add new hooks and tests and alias for hooks * various fixes for stores after implementation tests * implement new stores for ProductList component * add doc blocks for useStoreProducts hooks * fix typo in property on returned object
2019-10-28 13:53:09 +00:00
*/
export const apiFetchWithHeaders = ( options: APIFetchOptions ) =>
( {
All Products with Inner Blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1032) * Inital block creation * Update labels * Columns, rows, sample data json * Output data from API * thumbnail_html * Split into smaller components of grid * Price handling * Image handling * Remove ! * frontend * Work on cart api * Cart error handling and product type conditions * innerblock progress * Implement layoutConfig as set from innerblocks shape. Note: - this is just a poc - where things are configured likely needs changed - will still need to work out how this gets persisted for the frontend and how things get displayed there (but likely will work fairly similar in terms of mapping to components). * use correct prop name * Working edit button * Clean up block controls and edit view * Add link with innerblocks * update link description * correctly handle components with inner blocks as children * Re-organise atomic components and blocks into own directories * Unique keys for components * Fix default layout when inserting block for first time * Working layoutconfig save * Save attributes * Move sale badge to image component * Add disabled to render preview and blocks * icons * Editor view styling * Update withComponetId to stop component ID incrementing too many times Co-Authored-By: Darren Ethier <darren@roughsmootheng.in> * Improve key generation * done/cancel buttons on edit * Create withProducts HOC for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/994) * Create withProducts HOC for All Products block * Add order select and pagination to All Products block * Go to first page when changing order * Add HOC test * Make sure block is updated whem columns/rows change in the editor * Fix 'SALE' badge positioning * Remove unnecessary key * Honor 'perPage' value when generating placeholders * Make placeholder sizes match rendered block item * Several CSS improvements * Remove unused CSS properties * Move getProducts to hocs utils * Remove All Products sample-data.json * Fix order select wrong margin in the editor * Refactor how loading image gets its size * Clear products when loadProducts start * Enhance pagination logic * Fix placeholder width * Fix regular_price check * Set product link max-width * Implement querystrings for the All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/997) * Implement querystrings for the All Products block * Create withWindow HOC * Add with-window tests * Use renderFrontend util in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1003) * Add with-window tests * Use renderFrontend util in All Products block * Rename properties and components from 'order' to 'sort' (https://github.com/woocommerce/woocommerce-blocks/pull/1012) * Rename properties and components from 'order' to 'sort' * Rename onOrderChange to onSortChange * Remove unnecessary stylint-disable-line (https://github.com/woocommerce/woocommerce-blocks/pull/1016) * Create withBrowserLocation and withBrowserHistory HOC (https://github.com/woocommerce/woocommerce-blocks/pull/1022) * Create withBrowserWindowProp HOC * Remove unnecessary expect's * Always pass window prop to propMap if it exists * Scroll to top when switching pages in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1011) * Scroll to top when switching pages in All Pages block * Improve keyboard navigation in the All Products block * Create withScrollToTop HOC * Fix variable name typo * Update paths with aliases * Avoid first and last page being included in pagination 'pagesToDisplay' (https://github.com/woocommerce/woocommerce-blocks/pull/1015) * Update lock * constants * linting * Clean up styling * Prettier * Block options for title/image * Prettier * Remove shared content controls * Update atomic block descriptions * Summary block * Prettier * Impoved template edit appearance and added inline tips * Apply prettier * Reset and cancel buttons * Improved keys * Tweak tip placement * Remove incorrect comments * Remove disabled ofr non interactive elements * Fragment not needed * Update assets/js/atomic/components/product-list/title/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Move componentId hoc * Comment * Implement onImageLoaded * Pagination: disable first/last page if they are active (https://github.com/woocommerce/woocommerce-blocks/pull/1041) * Update assets/js/atomic/components/product-list/rating/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Sale badges refactoring Adds sale badges blocks and improves how the default blocks are defined. * revert changes in withComponentId * fix flexbox alignment * Create withQueryStringValues HOC and use it in ProductGrid component (https://github.com/woocommerce/woocommerce-blocks/pull/1040) * Create withQueryStringValues HOC and use it in ProductGrid component * Add tests * Add comment explaining urlParameterSuffix * Don't destructure props if only used once * Move dependencies check outside the HOC * Update test description * Remove HOCs no longer used * Update assets/js/atomic/blocks/product-list/image/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Feedback * Grid to List * Improved badge handling * update package-lock after merge from master * Add wp.data store for schema and lists. (https://github.com/woocommerce/woocommerce-blocks/pull/1008) * install @wordpress/data-controls and deepFreeze * add schema store * add query-state store * add collections store * add bundle entry point (and export store keys and constants) * add master README.md for new stores * add bundle configuration and register asset php side * Add missing param name Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * code style fixes * remove unnecessary period from test description * Simplify conditional * reorder imports (code style) * reorder imports and codestyle * refactor using lodash for state utils * reorder imports * reorder imports * reorder dependencies * reorder dependnecies an remove duplication block * remove errant tab * reorder dependencies * Modify collections store to add headers to the store state. (https://github.com/woocommerce/woocommerce-blocks/pull/1073) * add control for getting unparsed response from apiFetch * Modify action so it recieves a response object. * modify reducer to handle response object * improve selectors to make headers accessible - modifys existing `getCollection` to retrieve items from state. - adds `getCollectionHeader` selector * update resolvers to handle full response from request - also adds resolver for `getCollectionHeader` * update docs for changes * Improve spacing in doc Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * Fix spacing in inline docs Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * change `getFromState` to receive an object instead of arguments list. * Prepare All Products block to accept extension inner blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1047) * Simplify BLOCK_MAP * Prepare All Products block to accept extension inner blocks * Change filter name * Update filter name * Add check that block exists in BLOCK_MAP * Create REVERSED_BLOCK_MAP instead of searching blocks each time * Change how child blocks are registered for All Products block * Refactor All Products block so reverse map isn't needed * Remove getDefaultBlocks * Make sure getRegisteredInnerBlocks always returns an object and add checks to registerInnerBlock * Add missing blockName arg * Add inline docs to block registry * Move 'blockName' prop to context * Typos * Improve registerInnerBlock error messages and create a validation function * Refactor context * Rename validateOption to assertOption * refactor where new context lives and add alias for base-context * fix doc block * remove todo block (there’s an issue for it) * rename context * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * HeadingToolbar comment * Tweak bool comparison * Improve how default layouts are set so all blocks can be removed and the no-content message is correct * Sale centering * Fix default template * Product example switch to preview * Update preview schema and image data to match latest schema * Add @woocommerce/atomic-components alias * Alias for previews to prevent need for relative paths * Drop `align` for sale block Align disrupts other blocks in unexpected and unavoidable ways. Drop support so the sale block is a block level item. * Rename atomic components and blocks (and create ProductLayoutContext) (https://github.com/woocommerce/woocommerce-blocks/pull/1089) * rename atomic blocks and components to be more generic (drop list) * create new context for productlayout and implement provider * Rename ProductSalesBadge to ProductSaleBadge * Add php5.3 restriction for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1090) * enable legacy builds and add handling for AllProducts to be wp5.3 only * fix legacy builds * Prevent filemtime notice * Implement new data stores with All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1067) * add new hooks and tests and alias for hooks * various fixes for stores after implementation tests * implement new stores for ProductList component * add doc blocks for useStoreProducts hooks * fix typo in property on returned object
2019-10-28 13:53:09 +00:00
type: 'API_FETCH_WITH_HEADERS',
options,
} as const );
All Products with Inner Blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1032) * Inital block creation * Update labels * Columns, rows, sample data json * Output data from API * thumbnail_html * Split into smaller components of grid * Price handling * Image handling * Remove ! * frontend * Work on cart api * Cart error handling and product type conditions * innerblock progress * Implement layoutConfig as set from innerblocks shape. Note: - this is just a poc - where things are configured likely needs changed - will still need to work out how this gets persisted for the frontend and how things get displayed there (but likely will work fairly similar in terms of mapping to components). * use correct prop name * Working edit button * Clean up block controls and edit view * Add link with innerblocks * update link description * correctly handle components with inner blocks as children * Re-organise atomic components and blocks into own directories * Unique keys for components * Fix default layout when inserting block for first time * Working layoutconfig save * Save attributes * Move sale badge to image component * Add disabled to render preview and blocks * icons * Editor view styling * Update withComponetId to stop component ID incrementing too many times Co-Authored-By: Darren Ethier <darren@roughsmootheng.in> * Improve key generation * done/cancel buttons on edit * Create withProducts HOC for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/994) * Create withProducts HOC for All Products block * Add order select and pagination to All Products block * Go to first page when changing order * Add HOC test * Make sure block is updated whem columns/rows change in the editor * Fix 'SALE' badge positioning * Remove unnecessary key * Honor 'perPage' value when generating placeholders * Make placeholder sizes match rendered block item * Several CSS improvements * Remove unused CSS properties * Move getProducts to hocs utils * Remove All Products sample-data.json * Fix order select wrong margin in the editor * Refactor how loading image gets its size * Clear products when loadProducts start * Enhance pagination logic * Fix placeholder width * Fix regular_price check * Set product link max-width * Implement querystrings for the All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/997) * Implement querystrings for the All Products block * Create withWindow HOC * Add with-window tests * Use renderFrontend util in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1003) * Add with-window tests * Use renderFrontend util in All Products block * Rename properties and components from 'order' to 'sort' (https://github.com/woocommerce/woocommerce-blocks/pull/1012) * Rename properties and components from 'order' to 'sort' * Rename onOrderChange to onSortChange * Remove unnecessary stylint-disable-line (https://github.com/woocommerce/woocommerce-blocks/pull/1016) * Create withBrowserLocation and withBrowserHistory HOC (https://github.com/woocommerce/woocommerce-blocks/pull/1022) * Create withBrowserWindowProp HOC * Remove unnecessary expect's * Always pass window prop to propMap if it exists * Scroll to top when switching pages in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1011) * Scroll to top when switching pages in All Pages block * Improve keyboard navigation in the All Products block * Create withScrollToTop HOC * Fix variable name typo * Update paths with aliases * Avoid first and last page being included in pagination 'pagesToDisplay' (https://github.com/woocommerce/woocommerce-blocks/pull/1015) * Update lock * constants * linting * Clean up styling * Prettier * Block options for title/image * Prettier * Remove shared content controls * Update atomic block descriptions * Summary block * Prettier * Impoved template edit appearance and added inline tips * Apply prettier * Reset and cancel buttons * Improved keys * Tweak tip placement * Remove incorrect comments * Remove disabled ofr non interactive elements * Fragment not needed * Update assets/js/atomic/components/product-list/title/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Move componentId hoc * Comment * Implement onImageLoaded * Pagination: disable first/last page if they are active (https://github.com/woocommerce/woocommerce-blocks/pull/1041) * Update assets/js/atomic/components/product-list/rating/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Sale badges refactoring Adds sale badges blocks and improves how the default blocks are defined. * revert changes in withComponentId * fix flexbox alignment * Create withQueryStringValues HOC and use it in ProductGrid component (https://github.com/woocommerce/woocommerce-blocks/pull/1040) * Create withQueryStringValues HOC and use it in ProductGrid component * Add tests * Add comment explaining urlParameterSuffix * Don't destructure props if only used once * Move dependencies check outside the HOC * Update test description * Remove HOCs no longer used * Update assets/js/atomic/blocks/product-list/image/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Feedback * Grid to List * Improved badge handling * update package-lock after merge from master * Add wp.data store for schema and lists. (https://github.com/woocommerce/woocommerce-blocks/pull/1008) * install @wordpress/data-controls and deepFreeze * add schema store * add query-state store * add collections store * add bundle entry point (and export store keys and constants) * add master README.md for new stores * add bundle configuration and register asset php side * Add missing param name Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * code style fixes * remove unnecessary period from test description * Simplify conditional * reorder imports (code style) * reorder imports and codestyle * refactor using lodash for state utils * reorder imports * reorder imports * reorder dependencies * reorder dependnecies an remove duplication block * remove errant tab * reorder dependencies * Modify collections store to add headers to the store state. (https://github.com/woocommerce/woocommerce-blocks/pull/1073) * add control for getting unparsed response from apiFetch * Modify action so it recieves a response object. * modify reducer to handle response object * improve selectors to make headers accessible - modifys existing `getCollection` to retrieve items from state. - adds `getCollectionHeader` selector * update resolvers to handle full response from request - also adds resolver for `getCollectionHeader` * update docs for changes * Improve spacing in doc Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * Fix spacing in inline docs Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * change `getFromState` to receive an object instead of arguments list. * Prepare All Products block to accept extension inner blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1047) * Simplify BLOCK_MAP * Prepare All Products block to accept extension inner blocks * Change filter name * Update filter name * Add check that block exists in BLOCK_MAP * Create REVERSED_BLOCK_MAP instead of searching blocks each time * Change how child blocks are registered for All Products block * Refactor All Products block so reverse map isn't needed * Remove getDefaultBlocks * Make sure getRegisteredInnerBlocks always returns an object and add checks to registerInnerBlock * Add missing blockName arg * Add inline docs to block registry * Move 'blockName' prop to context * Typos * Improve registerInnerBlock error messages and create a validation function * Refactor context * Rename validateOption to assertOption * refactor where new context lives and add alias for base-context * fix doc block * remove todo block (there’s an issue for it) * rename context * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * HeadingToolbar comment * Tweak bool comparison * Improve how default layouts are set so all blocks can be removed and the no-content message is correct * Sale centering * Fix default template * Product example switch to preview * Update preview schema and image data to match latest schema * Add @woocommerce/atomic-components alias * Alias for previews to prevent need for relative paths * Drop `align` for sale block Align disrupts other blocks in unexpected and unavoidable ways. Drop support so the sale block is a block level item. * Rename atomic components and blocks (and create ProductLayoutContext) (https://github.com/woocommerce/woocommerce-blocks/pull/1089) * rename atomic blocks and components to be more generic (drop list) * create new context for productlayout and implement provider * Rename ProductSalesBadge to ProductSaleBadge * Add php5.3 restriction for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1090) * enable legacy builds and add handling for AllProducts to be wp5.3 only * fix legacy builds * Prevent filemtime notice * Implement new data stores with All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1067) * add new hooks and tests and alias for hooks * various fixes for stores after implementation tests * implement new stores for ProductList component * add doc blocks for useStoreProducts hooks * fix typo in property on returned object
2019-10-28 13:53:09 +00:00
const EMPTY_OBJECT = {};
/**
* Error thrown when JSON cannot be parsed.
*/
const invalidJsonError = {
code: 'invalid_json',
message: __(
'The response is not a valid JSON response.',
'woo-gutenberg-products-block'
),
};
const setNonceOnFetch = ( headers: Headers ): void => {
if (
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore -- this does exist because it's monkey patched in
// middleware/store-api-nonce.
triggerFetch.setNonce &&
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore -- this does exist because it's monkey patched in
// middleware/store-api-nonce.
typeof triggerFetch.setNonce === 'function'
) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore -- this does exist because it's monkey patched in
// middleware/store-api-nonce.
triggerFetch.setNonce( headers );
} else {
// eslint-disable-next-line no-console
console.error(
'The monkey patched function on APIFetch, "setNonce", is not present, likely another plugin or some other code has removed this augmentation'
);
}
};
/**
* Trigger a fetch from the API using the batch endpoint.
*/
const triggerBatchFetch = ( keys: readonly APIFetchOptions[] ) => {
return triggerFetch( {
path: `/wc/store/v1/batch`,
method: 'POST',
data: {
requests: keys.map( ( request: APIFetchOptions ) => {
return {
...request,
body: request?.data,
};
} ),
},
} ).then( ( response: unknown ) => {
assertBatchResponseIsValid( response );
return keys.map(
( key, index: number ) =>
response.responses[ index ] || EMPTY_OBJECT
);
} );
};
/**
* In ms, how long we should wait for requests to batch.
*
* DataLoader collects all requests over this window of time (and as a consequence, adds this amount of latency).
*/
const triggerBatchFetchDelay = 300;
/**
* DataLoader instance for triggerBatchFetch.
*/
const triggerBatchFetchLoader = new DataLoader( triggerBatchFetch, {
batchScheduleFn: ( callback: () => void ) =>
setTimeout( callback, triggerBatchFetchDelay ),
cache: false,
maxBatchSize: 25,
} );
/**
* Trigger a fetch from the API using the batch endpoint.
*
* @param {APIFetchOptions} request Request object containing API request.
*/
const batchFetch = async ( request: APIFetchOptions ) => {
return await triggerBatchFetchLoader.load( request );
};
All Products with Inner Blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1032) * Inital block creation * Update labels * Columns, rows, sample data json * Output data from API * thumbnail_html * Split into smaller components of grid * Price handling * Image handling * Remove ! * frontend * Work on cart api * Cart error handling and product type conditions * innerblock progress * Implement layoutConfig as set from innerblocks shape. Note: - this is just a poc - where things are configured likely needs changed - will still need to work out how this gets persisted for the frontend and how things get displayed there (but likely will work fairly similar in terms of mapping to components). * use correct prop name * Working edit button * Clean up block controls and edit view * Add link with innerblocks * update link description * correctly handle components with inner blocks as children * Re-organise atomic components and blocks into own directories * Unique keys for components * Fix default layout when inserting block for first time * Working layoutconfig save * Save attributes * Move sale badge to image component * Add disabled to render preview and blocks * icons * Editor view styling * Update withComponetId to stop component ID incrementing too many times Co-Authored-By: Darren Ethier <darren@roughsmootheng.in> * Improve key generation * done/cancel buttons on edit * Create withProducts HOC for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/994) * Create withProducts HOC for All Products block * Add order select and pagination to All Products block * Go to first page when changing order * Add HOC test * Make sure block is updated whem columns/rows change in the editor * Fix 'SALE' badge positioning * Remove unnecessary key * Honor 'perPage' value when generating placeholders * Make placeholder sizes match rendered block item * Several CSS improvements * Remove unused CSS properties * Move getProducts to hocs utils * Remove All Products sample-data.json * Fix order select wrong margin in the editor * Refactor how loading image gets its size * Clear products when loadProducts start * Enhance pagination logic * Fix placeholder width * Fix regular_price check * Set product link max-width * Implement querystrings for the All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/997) * Implement querystrings for the All Products block * Create withWindow HOC * Add with-window tests * Use renderFrontend util in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1003) * Add with-window tests * Use renderFrontend util in All Products block * Rename properties and components from 'order' to 'sort' (https://github.com/woocommerce/woocommerce-blocks/pull/1012) * Rename properties and components from 'order' to 'sort' * Rename onOrderChange to onSortChange * Remove unnecessary stylint-disable-line (https://github.com/woocommerce/woocommerce-blocks/pull/1016) * Create withBrowserLocation and withBrowserHistory HOC (https://github.com/woocommerce/woocommerce-blocks/pull/1022) * Create withBrowserWindowProp HOC * Remove unnecessary expect's * Always pass window prop to propMap if it exists * Scroll to top when switching pages in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1011) * Scroll to top when switching pages in All Pages block * Improve keyboard navigation in the All Products block * Create withScrollToTop HOC * Fix variable name typo * Update paths with aliases * Avoid first and last page being included in pagination 'pagesToDisplay' (https://github.com/woocommerce/woocommerce-blocks/pull/1015) * Update lock * constants * linting * Clean up styling * Prettier * Block options for title/image * Prettier * Remove shared content controls * Update atomic block descriptions * Summary block * Prettier * Impoved template edit appearance and added inline tips * Apply prettier * Reset and cancel buttons * Improved keys * Tweak tip placement * Remove incorrect comments * Remove disabled ofr non interactive elements * Fragment not needed * Update assets/js/atomic/components/product-list/title/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Move componentId hoc * Comment * Implement onImageLoaded * Pagination: disable first/last page if they are active (https://github.com/woocommerce/woocommerce-blocks/pull/1041) * Update assets/js/atomic/components/product-list/rating/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Sale badges refactoring Adds sale badges blocks and improves how the default blocks are defined. * revert changes in withComponentId * fix flexbox alignment * Create withQueryStringValues HOC and use it in ProductGrid component (https://github.com/woocommerce/woocommerce-blocks/pull/1040) * Create withQueryStringValues HOC and use it in ProductGrid component * Add tests * Add comment explaining urlParameterSuffix * Don't destructure props if only used once * Move dependencies check outside the HOC * Update test description * Remove HOCs no longer used * Update assets/js/atomic/blocks/product-list/image/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Feedback * Grid to List * Improved badge handling * update package-lock after merge from master * Add wp.data store for schema and lists. (https://github.com/woocommerce/woocommerce-blocks/pull/1008) * install @wordpress/data-controls and deepFreeze * add schema store * add query-state store * add collections store * add bundle entry point (and export store keys and constants) * add master README.md for new stores * add bundle configuration and register asset php side * Add missing param name Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * code style fixes * remove unnecessary period from test description * Simplify conditional * reorder imports (code style) * reorder imports and codestyle * refactor using lodash for state utils * reorder imports * reorder imports * reorder dependencies * reorder dependnecies an remove duplication block * remove errant tab * reorder dependencies * Modify collections store to add headers to the store state. (https://github.com/woocommerce/woocommerce-blocks/pull/1073) * add control for getting unparsed response from apiFetch * Modify action so it recieves a response object. * modify reducer to handle response object * improve selectors to make headers accessible - modifys existing `getCollection` to retrieve items from state. - adds `getCollectionHeader` selector * update resolvers to handle full response from request - also adds resolver for `getCollectionHeader` * update docs for changes * Improve spacing in doc Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * Fix spacing in inline docs Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * change `getFromState` to receive an object instead of arguments list. * Prepare All Products block to accept extension inner blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1047) * Simplify BLOCK_MAP * Prepare All Products block to accept extension inner blocks * Change filter name * Update filter name * Add check that block exists in BLOCK_MAP * Create REVERSED_BLOCK_MAP instead of searching blocks each time * Change how child blocks are registered for All Products block * Refactor All Products block so reverse map isn't needed * Remove getDefaultBlocks * Make sure getRegisteredInnerBlocks always returns an object and add checks to registerInnerBlock * Add missing blockName arg * Add inline docs to block registry * Move 'blockName' prop to context * Typos * Improve registerInnerBlock error messages and create a validation function * Refactor context * Rename validateOption to assertOption * refactor where new context lives and add alias for base-context * fix doc block * remove todo block (there’s an issue for it) * rename context * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * HeadingToolbar comment * Tweak bool comparison * Improve how default layouts are set so all blocks can be removed and the no-content message is correct * Sale centering * Fix default template * Product example switch to preview * Update preview schema and image data to match latest schema * Add @woocommerce/atomic-components alias * Alias for previews to prevent need for relative paths * Drop `align` for sale block Align disrupts other blocks in unexpected and unavoidable ways. Drop support so the sale block is a block level item. * Rename atomic components and blocks (and create ProductLayoutContext) (https://github.com/woocommerce/woocommerce-blocks/pull/1089) * rename atomic blocks and components to be more generic (drop list) * create new context for productlayout and implement provider * Rename ProductSalesBadge to ProductSaleBadge * Add php5.3 restriction for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1090) * enable legacy builds and add handling for AllProducts to be wp5.3 only * fix legacy builds * Prevent filemtime notice * Implement new data stores with All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1067) * add new hooks and tests and alias for hooks * various fixes for stores after implementation tests * implement new stores for ProductList component * add doc blocks for useStoreProducts hooks * fix typo in property on returned object
2019-10-28 13:53:09 +00:00
/**
* Default export for registering the controls with the store.
*
* @return {Object} An object with the controls to register with the store on
* the controls property of the registration object.
*/
export const controls = {
API_FETCH_WITH_HEADERS: ( {
Add TypeScript support and convert cart data store to TypeScript (https://github.com/woocommerce/woocommerce-blocks/pull/3768) * add typescript support * Add type declarations for Cart and CartResponse interfaces * make sure we’re resolving .ts files as well as .js files on imports * add more types * type the cart data store * Apply suggestions from code review (implement .tsx in configs) Co-authored-by: Jon Surrell <jon.surrell@automattic.com> * remove global fetchMock declaration and directly import where used. * rename type * remove named action types and just infer by returning action creator values as const * use interface instead of type * rename * renames * create CartAction type as union of action creator returned types and implement in reducer * remove unused imports * refresh package-lock after rebase * Add base TS config that projects will inherit from * Add tsconfig for assets/js/data project * Ignore TS error on cart store registration We will address this in cooldown when we have time to investigate further * Add tsc to build step to catch TypeScript errors * add a separate command for tsc and tweak build command to use * restore checkJs and allowJs values in config and remove ts check from build command * Add ts:check-all command * Add TypeScript checking workflows * Change triggers for TypeScript workflow * Use npm ci instead of npm install * Remove ts:check-all from TypeScript workflow * Remove TS Check GitHub workflow * Remove type-defs dir from TS include, and remove ts:check-all script We no longer need the ts:check-all script because ts:check will do this for us, the old ts:check did nothing and did not work. * fix coupon loading issues * include .ts files only from type-defs folder Co-authored-by: Jon Surrell <jon.surrell@automattic.com> Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
2021-02-24 01:36:24 +00:00
options,
}: ReturnType< typeof apiFetchWithHeaders > ): Promise< unknown > => {
All Products with Inner Blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1032) * Inital block creation * Update labels * Columns, rows, sample data json * Output data from API * thumbnail_html * Split into smaller components of grid * Price handling * Image handling * Remove ! * frontend * Work on cart api * Cart error handling and product type conditions * innerblock progress * Implement layoutConfig as set from innerblocks shape. Note: - this is just a poc - where things are configured likely needs changed - will still need to work out how this gets persisted for the frontend and how things get displayed there (but likely will work fairly similar in terms of mapping to components). * use correct prop name * Working edit button * Clean up block controls and edit view * Add link with innerblocks * update link description * correctly handle components with inner blocks as children * Re-organise atomic components and blocks into own directories * Unique keys for components * Fix default layout when inserting block for first time * Working layoutconfig save * Save attributes * Move sale badge to image component * Add disabled to render preview and blocks * icons * Editor view styling * Update withComponetId to stop component ID incrementing too many times Co-Authored-By: Darren Ethier <darren@roughsmootheng.in> * Improve key generation * done/cancel buttons on edit * Create withProducts HOC for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/994) * Create withProducts HOC for All Products block * Add order select and pagination to All Products block * Go to first page when changing order * Add HOC test * Make sure block is updated whem columns/rows change in the editor * Fix 'SALE' badge positioning * Remove unnecessary key * Honor 'perPage' value when generating placeholders * Make placeholder sizes match rendered block item * Several CSS improvements * Remove unused CSS properties * Move getProducts to hocs utils * Remove All Products sample-data.json * Fix order select wrong margin in the editor * Refactor how loading image gets its size * Clear products when loadProducts start * Enhance pagination logic * Fix placeholder width * Fix regular_price check * Set product link max-width * Implement querystrings for the All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/997) * Implement querystrings for the All Products block * Create withWindow HOC * Add with-window tests * Use renderFrontend util in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1003) * Add with-window tests * Use renderFrontend util in All Products block * Rename properties and components from 'order' to 'sort' (https://github.com/woocommerce/woocommerce-blocks/pull/1012) * Rename properties and components from 'order' to 'sort' * Rename onOrderChange to onSortChange * Remove unnecessary stylint-disable-line (https://github.com/woocommerce/woocommerce-blocks/pull/1016) * Create withBrowserLocation and withBrowserHistory HOC (https://github.com/woocommerce/woocommerce-blocks/pull/1022) * Create withBrowserWindowProp HOC * Remove unnecessary expect's * Always pass window prop to propMap if it exists * Scroll to top when switching pages in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1011) * Scroll to top when switching pages in All Pages block * Improve keyboard navigation in the All Products block * Create withScrollToTop HOC * Fix variable name typo * Update paths with aliases * Avoid first and last page being included in pagination 'pagesToDisplay' (https://github.com/woocommerce/woocommerce-blocks/pull/1015) * Update lock * constants * linting * Clean up styling * Prettier * Block options for title/image * Prettier * Remove shared content controls * Update atomic block descriptions * Summary block * Prettier * Impoved template edit appearance and added inline tips * Apply prettier * Reset and cancel buttons * Improved keys * Tweak tip placement * Remove incorrect comments * Remove disabled ofr non interactive elements * Fragment not needed * Update assets/js/atomic/components/product-list/title/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Move componentId hoc * Comment * Implement onImageLoaded * Pagination: disable first/last page if they are active (https://github.com/woocommerce/woocommerce-blocks/pull/1041) * Update assets/js/atomic/components/product-list/rating/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Sale badges refactoring Adds sale badges blocks and improves how the default blocks are defined. * revert changes in withComponentId * fix flexbox alignment * Create withQueryStringValues HOC and use it in ProductGrid component (https://github.com/woocommerce/woocommerce-blocks/pull/1040) * Create withQueryStringValues HOC and use it in ProductGrid component * Add tests * Add comment explaining urlParameterSuffix * Don't destructure props if only used once * Move dependencies check outside the HOC * Update test description * Remove HOCs no longer used * Update assets/js/atomic/blocks/product-list/image/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Feedback * Grid to List * Improved badge handling * update package-lock after merge from master * Add wp.data store for schema and lists. (https://github.com/woocommerce/woocommerce-blocks/pull/1008) * install @wordpress/data-controls and deepFreeze * add schema store * add query-state store * add collections store * add bundle entry point (and export store keys and constants) * add master README.md for new stores * add bundle configuration and register asset php side * Add missing param name Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * code style fixes * remove unnecessary period from test description * Simplify conditional * reorder imports (code style) * reorder imports and codestyle * refactor using lodash for state utils * reorder imports * reorder imports * reorder dependencies * reorder dependnecies an remove duplication block * remove errant tab * reorder dependencies * Modify collections store to add headers to the store state. (https://github.com/woocommerce/woocommerce-blocks/pull/1073) * add control for getting unparsed response from apiFetch * Modify action so it recieves a response object. * modify reducer to handle response object * improve selectors to make headers accessible - modifys existing `getCollection` to retrieve items from state. - adds `getCollectionHeader` selector * update resolvers to handle full response from request - also adds resolver for `getCollectionHeader` * update docs for changes * Improve spacing in doc Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * Fix spacing in inline docs Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * change `getFromState` to receive an object instead of arguments list. * Prepare All Products block to accept extension inner blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1047) * Simplify BLOCK_MAP * Prepare All Products block to accept extension inner blocks * Change filter name * Update filter name * Add check that block exists in BLOCK_MAP * Create REVERSED_BLOCK_MAP instead of searching blocks each time * Change how child blocks are registered for All Products block * Refactor All Products block so reverse map isn't needed * Remove getDefaultBlocks * Make sure getRegisteredInnerBlocks always returns an object and add checks to registerInnerBlock * Add missing blockName arg * Add inline docs to block registry * Move 'blockName' prop to context * Typos * Improve registerInnerBlock error messages and create a validation function * Refactor context * Rename validateOption to assertOption * refactor where new context lives and add alias for base-context * fix doc block * remove todo block (there’s an issue for it) * rename context * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * HeadingToolbar comment * Tweak bool comparison * Improve how default layouts are set so all blocks can be removed and the no-content message is correct * Sale centering * Fix default template * Product example switch to preview * Update preview schema and image data to match latest schema * Add @woocommerce/atomic-components alias * Alias for previews to prevent need for relative paths * Drop `align` for sale block Align disrupts other blocks in unexpected and unavoidable ways. Drop support so the sale block is a block level item. * Rename atomic components and blocks (and create ProductLayoutContext) (https://github.com/woocommerce/woocommerce-blocks/pull/1089) * rename atomic blocks and components to be more generic (drop list) * create new context for productlayout and implement provider * Rename ProductSalesBadge to ProductSaleBadge * Add php5.3 restriction for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1090) * enable legacy builds and add handling for AllProducts to be wp5.3 only * fix legacy builds * Prevent filemtime notice * Implement new data stores with All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1067) * add new hooks and tests and alias for hooks * various fixes for stores after implementation tests * implement new stores for ProductList component * add doc blocks for useStoreProducts hooks * fix typo in property on returned object
2019-10-28 13:53:09 +00:00
return new Promise( ( resolve, reject ) => {
// GET Requests cannot be batched.
if (
! options.method ||
options.method === 'GET' ||
Move Block Type Settings into Block Type Classes (https://github.com/woocommerce/woocommerce-blocks/pull/4059) * BLOCK SETTINGS: Remove unused constants/settings * AssetDataRegistry: Helpers to check for settings that exist, and registering page ID/permalinks * Move checkout and cart block settings to checkout and cart blocktypes * Move isShippingCalculatorEnabled to cart block * Remove HAS_DARK_EDITOR_STYLE_SUPPORT and IS_SHIPPING_CALCULATOR_ENABLED in favour of getSetting * Move displayCartPricesIncludingTax to blocktypes, and implement getSetting * Move block settings to core settings and blocktypes * Fix namespace usage * Move review settings * move tag settings * Keep productCount in core data * Move min and default height * Improve storePages code * Move attributes to attribute filter block type * Move $word_count_type outside of settings array * Remove unneeded setting in preview data (shippingCostRequiresAddress) * Move min/max settings dependency from GridLayoutControl to Blocks themselves and use getSettings * DEFAULT_COLUMNS and ROWS to settings * Move product columns/rows to block types * Add grid settings to AllProducts block * Correct default rows * correct min rows default * Move hasDarkEditorStyleSupport * Move hideOutOfStockItems to block type settings * Move build settings to inline script dependency * Pass data through asset api and move restApiRoutes * Export all core settings as constants * Remove WORD_COUNT_TYPE from core settings * Move some other core settings to assets * Update constants * Make settings use TypeScript * Update CURRENT_USER_IS_ADMIN usage * WORD_COUNT_TYPE * REST_API_ROUTES * REVIEW_RATINGS_ENABLED and SHOW_AVATARS * Remove REVIEW_RATINGS_ENABLED and SHOW_AVATARS constants * Remove MIN_HEIGHT * Remove DEFAULT_HEIGHT * PLACEHOLDER_IMG_SRC * LIMIT_TAGS * HAS_PRODUCTS * HOME_URL * HAS_TAGS * COUPONS_ENABLED * SHIPPING_ENABLED * TAXES_ENABLED * DISPLAY_ITEMIZED_TAXES * SHIPPING_COST_REQUIRES_ADDRESS * SHIPPING_STATES and SHIPPING_COUNTRIES * STORE_PAGES * ALLOWED_COUNTRIES * ALLOWED_STATES * SHIPPING_METHODS_EXIST * PAYMENT_GATEWAY_SORT_ORDER * CHECKOUT_SHOW_LOGIN_REMINDER * CHECKOUT_ALLOWS_GUEST and CHECKOUT_ALLOWS_SIGNUP * ATTRIBUTES * DISPLAY_CART_PRICES_INCLUDING_TAX * DISPLAY_CART_PRICES_INCLUDING_TAX * update build for TS files * fix build dir * Move blocks build config params * Move placeholderImgSrc to core settings * Move rest api hydration hoc to shared hocs and provide it restApiRoutes directly to avoid asset data registration * Move wordCountType to abstract block * Remove WORD_COUNT_TYPE in favour of getSetting * Move IS_LARGE_CATALOG and PRODUCT_COUNT to abstract block type and use getSetting inline * Add wcBlocksConfig * fix tests * Remove unused $asset_data_registry * remove console.log * Move build settings to abstract block * Trigger build again * Move hydration back to regular hocs for compatibility with trunk (merge conflict) * Removed wcSharedHocsConfig * esc home url * Update search fixture * Update search snap * 40000 timeout * hasProducts -> productCount * Product Count is part of blocks config * update mocks * Use version comparison to determine if batching is enabled * Change isWpVersion * scrollTo button
2021-04-22 11:37:27 +00:00
isWpVersion( '5.6', '<' )
) {
// Parse is disabled here to avoid returning just the body--we also need headers.
Move Block Type Settings into Block Type Classes (https://github.com/woocommerce/woocommerce-blocks/pull/4059) * BLOCK SETTINGS: Remove unused constants/settings * AssetDataRegistry: Helpers to check for settings that exist, and registering page ID/permalinks * Move checkout and cart block settings to checkout and cart blocktypes * Move isShippingCalculatorEnabled to cart block * Remove HAS_DARK_EDITOR_STYLE_SUPPORT and IS_SHIPPING_CALCULATOR_ENABLED in favour of getSetting * Move displayCartPricesIncludingTax to blocktypes, and implement getSetting * Move block settings to core settings and blocktypes * Fix namespace usage * Move review settings * move tag settings * Keep productCount in core data * Move min and default height * Improve storePages code * Move attributes to attribute filter block type * Move $word_count_type outside of settings array * Remove unneeded setting in preview data (shippingCostRequiresAddress) * Move min/max settings dependency from GridLayoutControl to Blocks themselves and use getSettings * DEFAULT_COLUMNS and ROWS to settings * Move product columns/rows to block types * Add grid settings to AllProducts block * Correct default rows * correct min rows default * Move hasDarkEditorStyleSupport * Move hideOutOfStockItems to block type settings * Move build settings to inline script dependency * Pass data through asset api and move restApiRoutes * Export all core settings as constants * Remove WORD_COUNT_TYPE from core settings * Move some other core settings to assets * Update constants * Make settings use TypeScript * Update CURRENT_USER_IS_ADMIN usage * WORD_COUNT_TYPE * REST_API_ROUTES * REVIEW_RATINGS_ENABLED and SHOW_AVATARS * Remove REVIEW_RATINGS_ENABLED and SHOW_AVATARS constants * Remove MIN_HEIGHT * Remove DEFAULT_HEIGHT * PLACEHOLDER_IMG_SRC * LIMIT_TAGS * HAS_PRODUCTS * HOME_URL * HAS_TAGS * COUPONS_ENABLED * SHIPPING_ENABLED * TAXES_ENABLED * DISPLAY_ITEMIZED_TAXES * SHIPPING_COST_REQUIRES_ADDRESS * SHIPPING_STATES and SHIPPING_COUNTRIES * STORE_PAGES * ALLOWED_COUNTRIES * ALLOWED_STATES * SHIPPING_METHODS_EXIST * PAYMENT_GATEWAY_SORT_ORDER * CHECKOUT_SHOW_LOGIN_REMINDER * CHECKOUT_ALLOWS_GUEST and CHECKOUT_ALLOWS_SIGNUP * ATTRIBUTES * DISPLAY_CART_PRICES_INCLUDING_TAX * DISPLAY_CART_PRICES_INCLUDING_TAX * update build for TS files * fix build dir * Move blocks build config params * Move placeholderImgSrc to core settings * Move rest api hydration hoc to shared hocs and provide it restApiRoutes directly to avoid asset data registration * Move wordCountType to abstract block * Remove WORD_COUNT_TYPE in favour of getSetting * Move IS_LARGE_CATALOG and PRODUCT_COUNT to abstract block type and use getSetting inline * Add wcBlocksConfig * fix tests * Remove unused $asset_data_registry * remove console.log * Move build settings to abstract block * Trigger build again * Move hydration back to regular hocs for compatibility with trunk (merge conflict) * Removed wcSharedHocsConfig * esc home url * Update search fixture * Update search snap * 40000 timeout * hasProducts -> productCount * Product Count is part of blocks config * update mocks * Use version comparison to determine if batching is enabled * Change isWpVersion * scrollTo button
2021-04-22 11:37:27 +00:00
triggerFetch( {
...options,
parse: false,
} )
.then( ( fetchResponse ) => {
fetchResponse
.json()
.then( ( response ) => {
resolve( {
response,
headers: fetchResponse.headers,
} );
setNonceOnFetch( fetchResponse.headers );
} )
.catch( () => {
reject( invalidJsonError );
} );
} )
.catch( ( errorResponse ) => {
setNonceOnFetch( errorResponse.headers );
if ( typeof errorResponse.json === 'function' ) {
// Parse error response before rejecting it.
errorResponse
.json()
.then( ( error: unknown ) => {
reject( error );
} )
.catch( () => {
reject( invalidJsonError );
} );
} else {
reject( errorResponse.message );
}
} );
} else {
batchFetch( options )
.then( ( response: ApiResponse ) => {
assertResponseIsValid( response );
if ( response.status >= 200 && response.status < 300 ) {
resolve( {
response: response.body,
headers: response.headers,
} );
setNonceOnFetch( response.headers );
}
// Status code indicates error.
throw response;
} )
.catch( ( errorResponse: ApiResponse ) => {
if ( errorResponse.headers ) {
setNonceOnFetch( errorResponse.headers );
}
if ( errorResponse.body ) {
reject( errorResponse.body );
} else {
Experiment: Add Rate Limits to Store API (https://github.com/woocommerce/woocommerce-blocks/pull/5962) * Add rate limiting to cart endpoints based on session * Handle nonce and rate checks in permission_callback * Rate limit checkout only * Debug * Unused AbstractRoute * Code standards * Modify core rate limit table * Add rate limit at rest api level, not route level * Rate limit helper * Remove rate limit from routes * Usused dep * Remove custom error logic no longer needed * Remove dependency * Remove custom permission_callback * Hash IP and handle null * Remove error response handler * revert error_to_response changes * Remove add_response_headers * Remove IDENTIFIER * Remove white space * Increase limit * Missing class comment * Move rate limiting code within store api codebase * white space * Fix return type * Check rate limit expiry greater than now * Remove x- prefix * reorder functions * remove table * pass request to add_nonce_headers * return early and avoid elseif on AbstractCartRoute:get_response() * Refactor get_ip_address() before implementing options for functionality * Change rate limit to 5 requests Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com> * Change rate limit window to 60 seconds Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com> * Disable rate limiting by default Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com> * Updated limits comment * Example for Forwarded header * Updated "woocommerce_store_api_enable_rate_limit_check" filter doc * Added filter for the Store API rate limit check proxy support * Add an action here that carries over the IP address being blocked. * Added logic around setting the action_id, and returns an error when ip cannot be determined for users not logged in. * Renamed action for limit exceeded. * Common rate limiting header naming prefix, and fixed comment typos. * Doc for Rate Limiting (wip) * Example for Rate Limiting docs * Remove private IP range block for rate limiting * Refactored get_response() to add nonce headers to response instead of request * Disable batching for Checkout calls to prevent bypassing Rate Limiting. * Removed redundant arg. * package-lock.json update * Removed repeated func calls. * Fix failing tests. * Tests wip. * Request limit and timeframe are now constants for RateLimits utility class. * Tests for Rate Limit headers. * Reverted PHPUnit config to enable all tests again. * Update src/StoreApi/Authentication.php comment wording Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com> * Removed possibly unnecessary get_ip_address() call. * Changed wording on comment for get_ip_address() method. * Simplified validate_ip() method. * Fixed wrong header entry for "Forwarded" check. * Unit testing for Authentication::get_ip_address() * Comment explaining the reason to use ReflectionClass for testing get_ip_address(). * Support for error output outside batch request. * MD linting. * Refactor to implement options through a single filter. * fixed md lint error and config file * reverted accidental default func arg value removal * re-enabled batch support for checkout * action for limit exceed now also triggered in case we can't resolve the IP. * Doc tweak. * Return unresolved IP address when REMOTE_ADDR isn't set with proxy support disabled. * Group unresolved ips for rate limiting * Fixed bug where current limit wasn't properly initialized. Co-authored-by: Nadir Seghir <nadir.seghir@gmail.com> Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com> Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
2022-11-04 15:53:00 +00:00
reject( errorResponse );
}
} );
}
All Products with Inner Blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1032) * Inital block creation * Update labels * Columns, rows, sample data json * Output data from API * thumbnail_html * Split into smaller components of grid * Price handling * Image handling * Remove ! * frontend * Work on cart api * Cart error handling and product type conditions * innerblock progress * Implement layoutConfig as set from innerblocks shape. Note: - this is just a poc - where things are configured likely needs changed - will still need to work out how this gets persisted for the frontend and how things get displayed there (but likely will work fairly similar in terms of mapping to components). * use correct prop name * Working edit button * Clean up block controls and edit view * Add link with innerblocks * update link description * correctly handle components with inner blocks as children * Re-organise atomic components and blocks into own directories * Unique keys for components * Fix default layout when inserting block for first time * Working layoutconfig save * Save attributes * Move sale badge to image component * Add disabled to render preview and blocks * icons * Editor view styling * Update withComponetId to stop component ID incrementing too many times Co-Authored-By: Darren Ethier <darren@roughsmootheng.in> * Improve key generation * done/cancel buttons on edit * Create withProducts HOC for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/994) * Create withProducts HOC for All Products block * Add order select and pagination to All Products block * Go to first page when changing order * Add HOC test * Make sure block is updated whem columns/rows change in the editor * Fix 'SALE' badge positioning * Remove unnecessary key * Honor 'perPage' value when generating placeholders * Make placeholder sizes match rendered block item * Several CSS improvements * Remove unused CSS properties * Move getProducts to hocs utils * Remove All Products sample-data.json * Fix order select wrong margin in the editor * Refactor how loading image gets its size * Clear products when loadProducts start * Enhance pagination logic * Fix placeholder width * Fix regular_price check * Set product link max-width * Implement querystrings for the All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/997) * Implement querystrings for the All Products block * Create withWindow HOC * Add with-window tests * Use renderFrontend util in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1003) * Add with-window tests * Use renderFrontend util in All Products block * Rename properties and components from 'order' to 'sort' (https://github.com/woocommerce/woocommerce-blocks/pull/1012) * Rename properties and components from 'order' to 'sort' * Rename onOrderChange to onSortChange * Remove unnecessary stylint-disable-line (https://github.com/woocommerce/woocommerce-blocks/pull/1016) * Create withBrowserLocation and withBrowserHistory HOC (https://github.com/woocommerce/woocommerce-blocks/pull/1022) * Create withBrowserWindowProp HOC * Remove unnecessary expect's * Always pass window prop to propMap if it exists * Scroll to top when switching pages in All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1011) * Scroll to top when switching pages in All Pages block * Improve keyboard navigation in the All Products block * Create withScrollToTop HOC * Fix variable name typo * Update paths with aliases * Avoid first and last page being included in pagination 'pagesToDisplay' (https://github.com/woocommerce/woocommerce-blocks/pull/1015) * Update lock * constants * linting * Clean up styling * Prettier * Block options for title/image * Prettier * Remove shared content controls * Update atomic block descriptions * Summary block * Prettier * Impoved template edit appearance and added inline tips * Apply prettier * Reset and cancel buttons * Improved keys * Tweak tip placement * Remove incorrect comments * Remove disabled ofr non interactive elements * Fragment not needed * Update assets/js/atomic/components/product-list/title/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Move componentId hoc * Comment * Implement onImageLoaded * Pagination: disable first/last page if they are active (https://github.com/woocommerce/woocommerce-blocks/pull/1041) * Update assets/js/atomic/components/product-list/rating/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Sale badges refactoring Adds sale badges blocks and improves how the default blocks are defined. * revert changes in withComponentId * fix flexbox alignment * Create withQueryStringValues HOC and use it in ProductGrid component (https://github.com/woocommerce/woocommerce-blocks/pull/1040) * Create withQueryStringValues HOC and use it in ProductGrid component * Add tests * Add comment explaining urlParameterSuffix * Don't destructure props if only used once * Move dependencies check outside the HOC * Update test description * Remove HOCs no longer used * Update assets/js/atomic/blocks/product-list/image/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/atomic/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Feedback * Grid to List * Improved badge handling * update package-lock after merge from master * Add wp.data store for schema and lists. (https://github.com/woocommerce/woocommerce-blocks/pull/1008) * install @wordpress/data-controls and deepFreeze * add schema store * add query-state store * add collections store * add bundle entry point (and export store keys and constants) * add master README.md for new stores * add bundle configuration and register asset php side * Add missing param name Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * code style fixes * remove unnecessary period from test description * Simplify conditional * reorder imports (code style) * reorder imports and codestyle * refactor using lodash for state utils * reorder imports * reorder imports * reorder dependencies * reorder dependnecies an remove duplication block * remove errant tab * reorder dependencies * Modify collections store to add headers to the store state. (https://github.com/woocommerce/woocommerce-blocks/pull/1073) * add control for getting unparsed response from apiFetch * Modify action so it recieves a response object. * modify reducer to handle response object * improve selectors to make headers accessible - modifys existing `getCollection` to retrieve items from state. - adds `getCollectionHeader` selector * update resolvers to handle full response from request - also adds resolver for `getCollectionHeader` * update docs for changes * Improve spacing in doc Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * Fix spacing in inline docs Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * change `getFromState` to receive an object instead of arguments list. * Prepare All Products block to accept extension inner blocks (https://github.com/woocommerce/woocommerce-blocks/pull/1047) * Simplify BLOCK_MAP * Prepare All Products block to accept extension inner blocks * Change filter name * Update filter name * Add check that block exists in BLOCK_MAP * Create REVERSED_BLOCK_MAP instead of searching blocks each time * Change how child blocks are registered for All Products block * Refactor All Products block so reverse map isn't needed * Remove getDefaultBlocks * Make sure getRegisteredInnerBlocks always returns an object and add checks to registerInnerBlock * Add missing blockName arg * Add inline docs to block registry * Move 'blockName' prop to context * Typos * Improve registerInnerBlock error messages and create a validation function * Refactor context * Rename validateOption to assertOption * refactor where new context lives and add alias for base-context * fix doc block * remove todo block (there’s an issue for it) * rename context * Update assets/js/atomic/components/product-list/sale-badge/index.js Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com> * HeadingToolbar comment * Tweak bool comparison * Improve how default layouts are set so all blocks can be removed and the no-content message is correct * Sale centering * Fix default template * Product example switch to preview * Update preview schema and image data to match latest schema * Add @woocommerce/atomic-components alias * Alias for previews to prevent need for relative paths * Drop `align` for sale block Align disrupts other blocks in unexpected and unavoidable ways. Drop support so the sale block is a block level item. * Rename atomic components and blocks (and create ProductLayoutContext) (https://github.com/woocommerce/woocommerce-blocks/pull/1089) * rename atomic blocks and components to be more generic (drop list) * create new context for productlayout and implement provider * Rename ProductSalesBadge to ProductSaleBadge * Add php5.3 restriction for All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1090) * enable legacy builds and add handling for AllProducts to be wp5.3 only * fix legacy builds * Prevent filemtime notice * Implement new data stores with All Products block (https://github.com/woocommerce/woocommerce-blocks/pull/1067) * add new hooks and tests and alias for hooks * various fixes for stores after implementation tests * implement new stores for ProductList component * add doc blocks for useStoreProducts hooks * fix typo in property on returned object
2019-10-28 13:53:09 +00:00
} );
},
};