woocommerce/plugins/woocommerce-blocks/assets/js/blocks/product-collection/index.tsx

27 lines
742 B
TypeScript
Raw Normal View History

Foundation of New Product Collection Block (https://github.com/woocommerce/woocommerce-blocks/pull/9352) * Add Products Collection block scaffolding This commit adds the initial scaffolding for the new Products Collection block. It includes the creation of new files (block.json, edit.tsx, index.tsx and ProductsCollection.php) and additions to existing files (webpack-entries.js and BlockTypesController.php). The block is marked as experimental and currently displays a static "Product collection" text in both the editor and the frontend. * Add Product Template block and integrate with Products Collection block This commit introduces the new Product Template block and integrates it with the existing Products Collection block. The changes include: - Creation of the Product Template block, including its block.json, edit.tsx, icon.tsx, index.tsx, and save.tsx files. - Modification of the Products Collection block, adding an icon.tsx file and updating its edit.tsx and index.tsx files. - Updates to the webpack-entries.js file to include the new Product Template block. - Addition of the ProductTemplate class in the src/BlockTypes directory. - Inclusion of the ProductTemplate class in the src/BlockTypesController.php file. * Enhance product-template block with context and styling This commit adds various enhancements to the product-template block. It includes: - Introduce `usesContext` and `supports` properties to the block.json file - Update the edit.tsx file to use BlockContextProvider and add query logic - Add an editor.scss file for styling the product-template block in the editor - Extend the products-collection block.json file with new properties - Modify the products-collection edit.tsx file to include instanceId and useEffect These changes improve the product-template block by providing better context handling and styling options. * Add 'woocommerce/product-template' to supported inner blocks and improve product-template editing This commit adds 'woocommerce/product-template' as a supported inner block for various product elements, including button, image, rating, sale-badge, SKU, and stock-indicator. It also improves the editing experience for the product-template block by memoizing the block previews and rendering them more efficiently. This should lead to a smoother editing experience and better performance in the block editor. * Add product title and summary variations for Products Collection block - Add default spacing between product elements in `style.scss` - Register product title and summary element variations in `products-collection` block - Create utility for registering element variations - Extend core elements with WooCommerce namespace * Set inherit to false by default and other improvements This commit introduces several changes to the ProductsCollection block: 1. Set the "inherit" property to false in block.json, disabling inheritance by default. 2. Remove the default styles for inner blocks in the edit.tsx file. 3. Add a save function in the index.tsx file, and create a save.tsx file to handle saving the block. 4. Update the ProductTemplate.php file to properly render the block content based on the changes. 5. Remove the render function from the ProductsCollection.php file, as it is no longer necessary. These changes improve the functionality and flexibility of the ProductsCollection block, allowing for better customization and control over the block's appearance and behavior. * Fix pagination issue * Minor code quality improvments * Register product blocks only in experimental builds - Wrap registerBlockType calls in product-template and products-collection with isExperimentalBuild check to enable block registration only in experimental builds. - Update the default value for the perPage property in products-collection/block.json from null to 9, setting a default display of 9 items per page. * Add experimental flag to PHP file * Update documentation for feature flags - Add Products Collection and Product Template blocks to the list of experimental flags in the feature-flags-and-experimental-interfaces.md file. - Include references to PHP and webpack flags for both blocks. * Change default order and orderBy values in block.json - Update the default 'order' value from 'desc' to 'asc'. - Update the default 'orderBy' value from 'date' to 'title'. * Refactor experimental block registration and remove unused file - Replace `isExperimentalBuild()` with `registerExperimentalBlockType()` in product-template/index.tsx. - Remove unused file types.ts in product-template directory. - Add `get_block_type_script()` function to ProductTemplate.php and ProductsCollection.php to return null. * Update variation names in product summary and product title elements Updated variation names for product summary and product title elements to match the new products-collection namespace. The previous variation names used the product-query namespace which will be deprecated. This change ensures that the correct variation names are used for these elements in the products-collection block. * Rename 'Products Collection' to 'Product Collection' - Renamed all instances of "products-collection" to "product-collection" across multiple files. - Adjusted related types and method calls to match the new naming convention. - Updated documentation and feature flags to reflect the name change. - Made necessary changes in `BlockTypesController.php` and `bin/webpack-entries.js`. * Hide product-template block from inserter - Added "woocommerce/product-collection" to the list of parent blocks in `product-template/block.json`. - Added `"inserter": false` to the "supports" section to disable the option of inserting this block through the editor inserter component. * Fix Eslint error
2023-05-15 08:51:49 +00:00
/**
* External dependencies
*/
import { registerBlockType } from '@wordpress/blocks';
/**
* Internal dependencies
*/
import metadata from './block.json';
import edit from './edit';
import save from './save';
import icon from './icon';
import registerProductSummaryVariation from './variations/elements/product-summary';
import registerProductTitleVariation from './variations/elements/product-title';
New flow of adding Product Collection and basic set of Collections (#42696) * Migrate PR to Core * Migrate test changes * Add Custom Collection with inherit query attribute disabled * Update copy of Product Catalog collection * Don't choose default active collection in polaceholder and remove highlight * Remove inherit query option from inspector controls * Add collection names to Product Catalog and Custom one * Unify Collection Chooser between Modal and Placeholder * Bring back util removed by accident * Replace the translations domain with woocommerce * Remove leftovers after merge * Add pagination and no results to Product Catalog and Custom collections * Revert textdomain change * Fix lint error * Add changelog entry * Change collection label * Bring back Inherit query from template * Remove Custom collection and bring back single Product Collection * Simplify applying collection * Make sure Inherit query from template is enabled in archive templates by default and disbaled in posts/pages * Change incorrect Playwright locator * Add test for Product Catalog inheriting the query in product archive * Add tests for recommendation collection hiding the predefined filters * Add reviews to multiple products * Update expected products in Top Rated * Remove rating creation in test env and skip undeterministic tests * Add skip to Best Sellers test * Update README.md * Add more keywords to collections, like 'product collection' to recommendation collections * Rephrase the README note about Collections registration * Simplify types * Rename unchangeableFilters to hideControls * Fix typo in file name * Remove 'pattern' references from toolbar files * Replace hardcoded SCSS color with wc variable * Remove changelog file from different PR * Move hideControls to Product Collection ayttributes * Improve responsiveness of columns in Product Collection Placeholder * Use admin color pallette in Product Collection Placeholder * Move Inherit query from template to the top of Inspector Controls * Change the Collection prefix to woocommerce rather than woocommerce-blocks * Simplify Placeholder and Modal styles
2023-12-27 10:07:27 +00:00
import registerCollections from './collections';
import { addProductCollectionToQueryPaginationParentOrAncestor } from './utils';
Foundation of New Product Collection Block (https://github.com/woocommerce/woocommerce-blocks/pull/9352) * Add Products Collection block scaffolding This commit adds the initial scaffolding for the new Products Collection block. It includes the creation of new files (block.json, edit.tsx, index.tsx and ProductsCollection.php) and additions to existing files (webpack-entries.js and BlockTypesController.php). The block is marked as experimental and currently displays a static "Product collection" text in both the editor and the frontend. * Add Product Template block and integrate with Products Collection block This commit introduces the new Product Template block and integrates it with the existing Products Collection block. The changes include: - Creation of the Product Template block, including its block.json, edit.tsx, icon.tsx, index.tsx, and save.tsx files. - Modification of the Products Collection block, adding an icon.tsx file and updating its edit.tsx and index.tsx files. - Updates to the webpack-entries.js file to include the new Product Template block. - Addition of the ProductTemplate class in the src/BlockTypes directory. - Inclusion of the ProductTemplate class in the src/BlockTypesController.php file. * Enhance product-template block with context and styling This commit adds various enhancements to the product-template block. It includes: - Introduce `usesContext` and `supports` properties to the block.json file - Update the edit.tsx file to use BlockContextProvider and add query logic - Add an editor.scss file for styling the product-template block in the editor - Extend the products-collection block.json file with new properties - Modify the products-collection edit.tsx file to include instanceId and useEffect These changes improve the product-template block by providing better context handling and styling options. * Add 'woocommerce/product-template' to supported inner blocks and improve product-template editing This commit adds 'woocommerce/product-template' as a supported inner block for various product elements, including button, image, rating, sale-badge, SKU, and stock-indicator. It also improves the editing experience for the product-template block by memoizing the block previews and rendering them more efficiently. This should lead to a smoother editing experience and better performance in the block editor. * Add product title and summary variations for Products Collection block - Add default spacing between product elements in `style.scss` - Register product title and summary element variations in `products-collection` block - Create utility for registering element variations - Extend core elements with WooCommerce namespace * Set inherit to false by default and other improvements This commit introduces several changes to the ProductsCollection block: 1. Set the "inherit" property to false in block.json, disabling inheritance by default. 2. Remove the default styles for inner blocks in the edit.tsx file. 3. Add a save function in the index.tsx file, and create a save.tsx file to handle saving the block. 4. Update the ProductTemplate.php file to properly render the block content based on the changes. 5. Remove the render function from the ProductsCollection.php file, as it is no longer necessary. These changes improve the functionality and flexibility of the ProductsCollection block, allowing for better customization and control over the block's appearance and behavior. * Fix pagination issue * Minor code quality improvments * Register product blocks only in experimental builds - Wrap registerBlockType calls in product-template and products-collection with isExperimentalBuild check to enable block registration only in experimental builds. - Update the default value for the perPage property in products-collection/block.json from null to 9, setting a default display of 9 items per page. * Add experimental flag to PHP file * Update documentation for feature flags - Add Products Collection and Product Template blocks to the list of experimental flags in the feature-flags-and-experimental-interfaces.md file. - Include references to PHP and webpack flags for both blocks. * Change default order and orderBy values in block.json - Update the default 'order' value from 'desc' to 'asc'. - Update the default 'orderBy' value from 'date' to 'title'. * Refactor experimental block registration and remove unused file - Replace `isExperimentalBuild()` with `registerExperimentalBlockType()` in product-template/index.tsx. - Remove unused file types.ts in product-template directory. - Add `get_block_type_script()` function to ProductTemplate.php and ProductsCollection.php to return null. * Update variation names in product summary and product title elements Updated variation names for product summary and product title elements to match the new products-collection namespace. The previous variation names used the product-query namespace which will be deprecated. This change ensures that the correct variation names are used for these elements in the products-collection block. * Rename 'Products Collection' to 'Product Collection' - Renamed all instances of "products-collection" to "product-collection" across multiple files. - Adjusted related types and method calls to match the new naming convention. - Updated documentation and feature flags to reflect the name change. - Made necessary changes in `BlockTypesController.php` and `bin/webpack-entries.js`. * Hide product-template block from inserter - Added "woocommerce/product-collection" to the list of parent blocks in `product-template/block.json`. - Added `"inserter": false` to the "supports" section to disable the option of inserting this block through the editor inserter component. * Fix Eslint error
2023-05-15 08:51:49 +00:00
registerBlockType( metadata, {
icon,
edit,
save,
} );
registerProductSummaryVariation();
registerProductTitleVariation();
New flow of adding Product Collection and basic set of Collections (#42696) * Migrate PR to Core * Migrate test changes * Add Custom Collection with inherit query attribute disabled * Update copy of Product Catalog collection * Don't choose default active collection in polaceholder and remove highlight * Remove inherit query option from inspector controls * Add collection names to Product Catalog and Custom one * Unify Collection Chooser between Modal and Placeholder * Bring back util removed by accident * Replace the translations domain with woocommerce * Remove leftovers after merge * Add pagination and no results to Product Catalog and Custom collections * Revert textdomain change * Fix lint error * Add changelog entry * Change collection label * Bring back Inherit query from template * Remove Custom collection and bring back single Product Collection * Simplify applying collection * Make sure Inherit query from template is enabled in archive templates by default and disbaled in posts/pages * Change incorrect Playwright locator * Add test for Product Catalog inheriting the query in product archive * Add tests for recommendation collection hiding the predefined filters * Add reviews to multiple products * Update expected products in Top Rated * Remove rating creation in test env and skip undeterministic tests * Add skip to Best Sellers test * Update README.md * Add more keywords to collections, like 'product collection' to recommendation collections * Rephrase the README note about Collections registration * Simplify types * Rename unchangeableFilters to hideControls * Fix typo in file name * Remove 'pattern' references from toolbar files * Replace hardcoded SCSS color with wc variable * Remove changelog file from different PR * Move hideControls to Product Collection ayttributes * Improve responsiveness of columns in Product Collection Placeholder * Use admin color pallette in Product Collection Placeholder * Move Inherit query from template to the top of Inspector Controls * Change the Collection prefix to woocommerce rather than woocommerce-blocks * Simplify Placeholder and Modal styles
2023-12-27 10:07:27 +00:00
registerCollections();
addProductCollectionToQueryPaginationParentOrAncestor();