* 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
* Install prettier
* Reformat all files
* Add prettier to precommit hook
* Update prettier settings to match Gutenberg code standards
* Reformat files with new settings
* Improve legibility in some line breaks
* Add inline settings script later than init
* Rename to shared-settings for clarity - other extensions filter these
* Implement block settings
* tweak used hooks
* update comment
* Shared settings should be dependency
* Make Webpack output shared and block settings (https://github.com/woocommerce/woocommerce-blocks/pull/918)
* export new @woocommerce/settings external on `wc.blockSettings` global
- This handles reading data from the dom and assigning it to the global used in all packages dependent on `@woocommerce/settings` which is registered as an external pointing to the global.
- ensures that server data is only loaded on a route if needed.
* switch all direct imports of constants to use new `@woocommerce/settings` external
* enqueu new `wc-block-settings` script and attach inline data to it.
* fix test configuration and adjust test to use new external
* fix bad merge resolution after rebase
* switch constants import to `@woocommerce/settings` external after rebase
* reorder imports for convention
* improve method name
* Reset 'loaded' state in Featured Product and Category blocks
* Minor code improvements
* Remove state from ApiErrorPlaceholder
* Move getProduct to a HOC
* Undo changes in Featured Category
* Update proptypes
* Move error messages to <ApiErrorPlaceholder>
* Reorder props
* Move lifecycle methods to HOC
* Make <FeaturedProduct> component presentational
* Move withProduct to js/hocs
* Create NAMESPACE constant in utils
* Create getProduct util function
* Set 'error' and 'product' state to null instead of 'false' when they have no value
* Prevent getImageSrcFromProduct and getImageIdFromProduct returning an error when 'product' is not an object
* Add HOC tests
* Use 'toBe' and 'toBeNull' jest expect methods instead of 'toEqual' when possible
* Export HOCs from index
* Move mock implementation to beforeEach
* unqiueID helper to replace compose
* move get categories function to own file
* fix svg styling
* remove lodash dependency
* Refactor block/edit to use less dependencies
* Babel config to skip wp.element
* update comments
* Update assets/js/blocks/product-categories/frontend.js
ie11 compatible for each on nodelist
Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com>
* move id generation to constructor
* simplify webpack config
* Remove components CSS dependency
* use HOC for component ID
* Correct case on ComponentId
* Introduced WGPB_Extend_Core class to modify shortcodes and API requests of core
* Require the new class
* WC_REST_Blocks_Products_Controller_V2 to override the wc-blocks API to support new tags properties
* Register new products by tag block type
* Modify utils to support tags and tag_operators
* Add ProductTagControl to handle tag searching
* Add the actual products by tag block
* Set limitTags to 100
* Create Package class and use in main plugin file
* Move and refactor library class - split asset methods into new Assets class.
* Add jetpack autoloader dependency
* fix tests
* Update from master
* AbstractBlock class for general block registration
* remove test autoloader so tests do not break
* Create AbstractProductGrid
* FeaturedProduct
* HandpickedProducts
* ProductBestSellers
* ProductCategory
* ProductNew
* ProductOnSale
* ProductTopRated
* ProductsByAttribute
* Remove old base and render functions
* Allow non-dynamic blocks and register category block
* Fix products-by-attribute due to wrong naming
* Remove no dev
* test phpunit dir
* Update testing framework
* Update with new abstract classes and build in API
* Undo edit to attribute block
* Move edit mode
* No need to support shortcodes
* correct linting errors
* Update tests/bootstrap.php
Co-Authored-By: Albert Juhé Lluveras <aljullu@gmail.com>
* Update code comment to make more sense.
* Correct test package
* docblock
* Fix cancel button class
* Fix classname schema
* Set loading state so spinner is shown
* Add placeholder element when no tags are selected
* No tags placeholder
* Update rest endpoints
* Add alignButtons handling and styling to grid-base
* Add ToggleControl and alignButtons attribute to handpicked products
* Pass alignButtons to the blocks with sharedattributes
* Add alignButtons to shared-attributes.js
* Add alignButtons to products-by-attributes block
* Add alignButtons to attributes on the PHP side
* Add alignButtons control to grid-layout-control
* Remove alignButtons from deprecated definitions
* has-aligned-buttons
* Update comment
* package lock
* Add initial work for Product Categories List block
* Add empty category toggle
* Add option to show list as a dropdown
* Fix console warnings
* Only show proptypes linter warning if the component declares proptypes
* Add frontend script to render the product categories
* Split wcSettings & wc_product_block_data globals so that the later can be used from the frontend
* Remove wp dependencies, these are added by the webpack script now
* Capture all "woo packages" into a separate script chunk
These require `wcSettings`, which can't be available on the frontend - but we do need vendors on the frontend.
* Rewrite component into a function
* Fix validation error on editor reload
* Add grid block base class to handle rendering all grid blocks
Using code from the shortcode handler to create the query, subclass into newest product to show use
* Update preview content to match rendering from the new grid block handler
* Fix the categories query builder
* Update order of rating/price
* Remove center alignment
* Extract rating & button into separate functions
* Wrap the content in a link
* Add the current class names for better theme support
* Fix some styling in editor preview & frontend
* Add back the deprecated cols support for existing blocks
* Add multiple-rows class, style tweaks
* Switch Newest Products to dynamic rendering, deprecate existing shortcode method
* Add “On Sale” flag
* Switch “On Sale Products” to dynamic rendering
* Fix reusable block preview
* Add correct classes to On Sale Products
* Remove dynamic blocks from CSS hidden content rules
Content is not output to browser now, so we don’t need to hide it
* Fix undefined parameters
* Fix attributes for on sale
* Add deprecation comment, use more descriptive function name
* Addressing review feedback
* Update test: classnames have changed, image now wrapped in div
* Disable HTML editing for dynamic blocks
* Moved rendering logic into block library
* Remove unnecessary !important on styles
* Add transforms for shared attributes.
This adds transforms for the 5 blocks which share attributes:
- woocommerce/product-best-sellers
- woocommerce/product-category
- woocommerce/product-new
- woocommerce/product-on-sale
- woocommerce/product-top-rated
* Use createBlock directly and rowColumnBlockTypes
This adds rowColumnBlockTypes as an array of woocommerce/* block types
that use row and column layouts
* Move block types into utils, and use without
This uses lodash instead of without instead of difference
It also moves the block types from an index into the shared-attributes
in utils.
* Component: GridContentControl for controlling visibility of product content
* Add the content control to all grid blocks
* Use CSS to hide the content on the front end
* Fix missing translation functions
* Add catalog_visibility param to products api
This adds a catalog_visibility=visible option to the product api which
will filter out any products that are excluded from the catalog.
* Add product_visibility phpunit test
* Add catalog_visibility for catalog, search, hidden
* Fix util js test
The util js test checks for query parameters, so this adds the
category_visibility = 'visible' param.
* Updated for comments
1. Added collection params
2. moved catalog_visibility default with others
* Add “attribute selection” step before allowing terms to be selected
* Update query builder
* Use shortcode to render block
* Styling for child list items
* Add a new LayoutControl component
* Use new LayoutControl to handle rows & columns settings
* Fix errors when rows or columns is empty (silently fall back to default to prevent breaking the block)
* Rename `LayoutControl` to `GridLayoutControl`
* Add media icon to toolbar, save selected media ID and src as attributes
* Use the selected image instead of the product image, if set
* Unset the selected image when a new product is selected
* Add a prop to turn on “single choice” mode
* Create new ProductControl to select a single product
* Remove align from shared attributes
This is given to us by default for using supports.align
* Add Featured Product block
* Fix spelling mistake & copy-paste issue
* Fix lint warning
* Add featured product script to build process, register block in PHP
* Prevent Products by Category from showing all products when no category is selected
* Update string when no categories are selected
* Update button text
* Revert button change, Done is more appropriate
* Add ProductsControl component to search and select products
* Add “Hand-picked Products” block
* Update hand-picked & new product icons
* Prevent API request when no products are selected
* Remove rows setting
* Update shortcode/query helpers for the handpicked products
* Remove shortcode from post if no product IDs are passed
Rendering a shortcode with `ids=‘’` will show all products, as if the ids param wasn’t there. The expected outcome would be no products are shown, we we achieve by removing the shortcode.
* Remove unused rows attribute
* Update accessible spoken notice
* Add a variable to hold whether there are selected products
* Fix copy-paste comments
* Add initial attribute selector control
* Make the attribute group name unselectable
* Update selected map to reflect attribute syntax
* Add the attributes selector to the product category block
* Update copy-paste comment
* Update variable name to be more clear
* Move & rename the attribute selector in Products by Category
* Reorganize the API calls to fetch attributes + attribute terms
* add newest products block
* update class name in index.js and product-new.js
* Add a new WooCommerce block category and include all blocks within.
* Fix shortcode product order
* Show block category on all post types
* Add core breakpoint 480px, remove non-core breakpoints
* Add the optional operator & save callback
* Add the catOperator as a valid attribute
* Enable cat operator for Products by Category
* Add cat_operator support the products API endpoint
* Enable cat_operator in the shortcode and query utils
* Pluralize the “nothing found” string if we have multiple categories
* Fix style in the inspector panel
* Add category operator support to the Best Sellers product block
* Add cat_operator support to On Sale Products block
* Update label & margin
* Move from a JS file per block registration to one file registering all blocks
This will let webpack combine shared libraries, like gridicons
* Move global block settings to the “before all scripts” section
These shouldn’t be tied to a specific block file, since they’re used across all blocks
* Register both block types
We can also remove the scripts, since we enqueue these below
* Update getShortcode & getQuery to handle different block types
* Pass block type name to getQuery
* Update shared attributes - edit_mode is not a universal option, but categories will be
Categories is shared, but orderby is not
* Add “Best Selling Products” block
* Add a shared class name for product grid blocks
* Fix failing tests
* Load only published products in the preview
* Fix post status in legacy block too
* Filter searching for individual products to only search published products
* Update query tests with change
* Add a second block, for “products by category”
* Fetch products in the given category, when attributes change
* Display the resulting products
* Style the product preview
* Create utils folder, move shared attributes
* Move getQuery to shared utils folder
* Create a helper function to get the shortcode string
* Support the menu_order setting
* Support center/wide/full alignment
* Update PropTypes
* Add tests
* Add text domain to translation functions