* Switch assemble theme to TT4
* Add changefile(s) from automation for the following project(s): woocommerce
* Rename changelog file
* Add changefile(s) from automation for the following project(s): woocommerce
* Remove duplicated changelog
* Add changefile(s) from automation for the following project(s): woocommerce
* Remove duplicated changelog
---------
Co-authored-by: github-actions <github-actions@github.com>
* Fix restriction preventing the update of products with AI-generated content after the 3rd attempt.
* use set_slug rather than wp_update_post for updating the product permalink.
---------
Co-authored-by: Alba Rincón <alba.rincon@automattic.com>
Ensures that if the "Search within these files" form is submitted with
an empty input, it does not trigger a fatal error due to the search
method returning an empty array at a time when it should be returning
the integer `0`.
This PR removes a line-height rule causing vertical alignment issues in the variations selector and introduces a bottom margin on the single variation container.
Closes#41367
* Show variations in upsells when parent is not published
I was struggling to get the upsell section to show for our eCommerce site. After some digging I found that line 1525 stopped variations from showing in the upsell section if the parent product was set to privately published. This makes testing products and upsells hard, and it's inconsistent behaviour when simple products that are privately published do show up. The proposed change will make variations show up as long as the current user can edit the parent product. This is consistent with the behaviour for simple products.
* Add changelog
---------
Co-authored-by: Jorge Torres <jorge.torres@automattic.com>
* Flush after updating all products, not after updating each of the products
Flushing is an expensive operation so we should run it carefully
* Remove the index param and add the last_product param to the Product endpoint.
---------
Co-authored-by: Patricia Hillebrandt <patriciahillebrandt@gmail.com>
* Create closeWelcomeModal, goToPageEditor and goToPostEditor utils in PlayWright e2e tests
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Create add to custom fields documentation
* Update the checkout custom field docs
* Add back end steps and examples
* Make it clear that we are building a field block
* Update docs/third-party-developers/extensibility/rest-api/extend-rest-api-add-custom-fields.md
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Update docs/third-party-developers/extensibility/rest-api/extend-rest-api-add-custom-fields.md
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Update docs/third-party-developers/extensibility/rest-api/extend-rest-api-add-custom-fields.md
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Update docs/third-party-developers/extensibility/rest-api/extend-rest-api-add-custom-fields.md
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Mention that the block will not render if parent isn't required
* Add more details about `seExtensionData`
* Add additional code examples for the backend
* Avoid extending store API inside an IntegrationInterface
* Add code example that invokes the extend store endpoint class
---------
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Avoid running a second query to account for incorrect totals if pagination is set too high if pagination isn't used.
Fixes#40075
* Adding changelog entry
* Add extra protections against wrong filter values in the Command Palette logic
* Add changefile(s) from automation for the following project(s): woocommerce
* Add protection to make sure is an array
---------
Co-authored-by: github-actions <github-actions@github.com>
* Show warning modal when user tries to leave the assember hub
* Remove pushState and popstate changes from the iframe
* Listen to popstate and render a warning modal when the user tries to leave the page
* Add changefile(s) from automation for the following project(s): woocommerce
* Update GoBackWarningModal to accept a callback for reusability
* Reuse GoBackWarningModal
---------
Co-authored-by: github-actions <github-actions@github.com>
* sets sale price to 23:59:59 when sale schedule variation bulk action runs
* made the date being sent in the CRUD object coherent with the rest of the wc codebase. added changelog file
* fix issue raised by linter
* Limit number of visible incompatible extensions in sidebar notice
* Adjust link text
* Ensure text-decoration works in Safari
* Minor CSS tweaks
* Refactor constant names
* Adjust chevron position for opened state
* Revert "Adjust chevron position for opened state"
This reverts commit ff5142427738626837be887dd8d7e5d94c2432d4.
* Normalize render method names
* Refactor get_query_params to allow key filtering
* Scaffold the search results view
* Add missing unslash
* First pass at functional search
* Fix memory leak and recursive highlighting
* Fix various search string edge cases
* Move match highlighting to format_match method
* Tweak match line formatting
* Rename ListTable to FileListTable
* Switch search results view to a list table
* Add notice about max files for search
* Remove unused function
* Only use monospace font on the matched line part of search results
* Add notice about search result limit
* Fix font in table header
* phpcs cleanup
* Remove unnecessary search form action
* Add caching to search results
* Add unit test for search method
* Caching improvements
* phpcs cleanup
* Add unit test for close_stream
* Remove unneeded linting exception
* Add changelog file
* Remove unnecessary usage of get_class()
* Make sure file stream gets closed when we break the loop early
* Make the returned results an even 200 when hitting the limit
* When the user selects a grouped product type, we show an additional Products in this group section in the General tab.
* When the user selects a grouped product type, we hide the Pricing and Shipping tabs.
* When empty, the grouped products card has an empty state with an illustration
* When the user clicks Add products, we show a modal
* When the user clicks the search field, we immediately display the list of all existing products. It is sorted alphabetically. Clicking an item closes the search and adds the product to the list.
* Add remove button to the product list
* When the user clicks Add, we close the modal and display the list of added products in the product form
* Clicking the product name will open it in the editing view in a new tab
* Clicking the arrow button will open the product's page in a new tab
* Prevent adding already added products
* If the name or SKU extends beyond this width, we truncate the text
* Add changelog files
* Fix linter errors
* add simple initial integration with Command Palette
* Add WooCommerce commands
* Add e2e tests
* Fixes
* Add changefile(s) from automation for the following project(s): woocommerce
* Avoid using page.waitForLoadState() in Command Palette tests
* Make Settings and Analytics commands dynamic
* Decode entities to make sure characters are displayed correctly in the command palette
* Move decodeEntities() into registerCommandWithTracking()
---------
Co-authored-by: Darren Ethier <darren@roughsmootheng.in>
Co-authored-by: github-actions <github-actions@github.com>
* Tweak the product prompt
To avoid creating products that are things that cannot be sold in stores (forests, people, etc.)
* Return error when images are not provided
* Check permalink and flush cache if not found
* Update the product slug with the new title
* Use wp_update_post to update the product
* Remove unused method
* Reorganise Columns controls and fix undefined problem in Product Collection settings
* Remove type condition in hasValue of Columns control
* Adjust the E2E tests locator to new changes
* Try env:restart instead of env:start
* Change env:restart to env:start again
* Try env:restart instead of env:start
* Change env:restart to env:start again
* Adjust heading level of cart and checkout template
* Replace button selector with label selector
* Try env:restart instead of env:start
* Change env:restart to env:start again
* Ensure to close welcome guide modal
* Adjust heading level of default template content
* Try env:restart instead of env:start
* Change env:restart to env:start again
* Try env:restart instead of env:start
* Change env:restart to env:start again
* Address existing TS issues
* View template in edit mode
* Keep certain tests skipped
* Fix broken tests after addressing TS issues
* Update extensibility doc
This PR adds a missing link to the Extensibility page for a new doc that was added about the migrated hood.
* Update docs/third-party-developers/extensibility/README.md
Co-authored-by: Tarun Vijwani <tarun.vijwani@automattic.com>
---------
Co-authored-by: Tarun Vijwani <tarun.vijwani@automattic.com>
* Convert to tsx and replace proptypes by ts definitions
* Fix imports
* Fix noReviewsPlaceholder type
* Fix ts errors
* Use createHigherOrderComponent in withReviews
* Revert hoc change
---------
Co-authored-by: Niels Lange <info@nielslange.de>
* Fix link to e2e tests documentation from WooCommerce Admin directory
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Add HTML entity decoding for product names in Hand-Picked Products control
In the Hand-Picked Products control within the product-collection inspector controls, a function for decoding HTML entities in product names has been added.
- A new utility function `decodeHTMLEntities` has been implemented. This function decodes HTML entities in a string, ensuring that special characters are correctly displayed in their human-readable form.
- The `transformTokenIntoProductName` function has been updated to utilize `decodeHTMLEntities`. Now, when a product name is fetched (either directly as a token or via a product ID), the HTML entities within the name are decoded.
- This enhancement ensures that product names containing characters like ampersands or other HTML entities are accurately displayed in the UI.
This change improves the readability and accuracy of product names within the Hand-Picked Products control, enhancing the user experience for store managers using WooCommerce Blocks.
* Update label and hide description
This commit updates the `HandPickedProductsControl` component. Specifically, the user-facing label for product selection has been changed from 'Pick some products' to 'Hand-picked Products'. Additionally, the `__experimentalShowHowTo` property has been added with a `false` value, to hide description. Corresponding changes have been made in the E2E test file `product-collection.block_theme.spec.ts`, where the filter name is updated to match the new label.
* Refactor: Replace custom HTML entity decoder with `@wordpress/html-entities`
Rationale:
- The shift to `@wordpress/html-entities` aligns with standard WordPress practices, ensuring consistency across the platform.
- Enhances maintainability by relying on a well-supported library rather than custom code.
- Simplifies the codebase by removing a redundant utility function.
This change enhances the robustness of our code and aligns with best practices in WordPress development.
* Product Gallery Thumbnails: Refactor sizing in the editor and the front end
* Product Gallery Thumbnails: Change default vertical alignment to top and better control the width of the thumbnails
* Product Gallery Thumbnails: Fix thumbnails cropping based on the 'Crop images to fit' setting
* Product Gallery Thumbnails: Revert thumbnails styling from woocommerce/woocommerce-blocks#11665
* Product Gallery Thumbnails: Update the default value of the cropImages setting to false
* Product Gallery Thumbnails: Refactor sizing in the editor and the front end
* Product Gallery Thumbnails: Change default vertical alignment to top and better control the width of the thumbnails
* Product Gallery Thumbnails: Restrict the bottom position thumbnails width based on the total number of thumbnails set
* Product Gallery: Remove hardcoded width for Thumbnails and the Large Image and update the width inside of the Dialog
* Product Gallery Thumbnails: Introduce thumbnails scaling based on the number of thumbnails
* Product Gallery Thumbnails: Fix editor thumbnails scaling
* Product Gallery Thumbnails: Remove unused column gap variable
* Product Gallery Thumbnails: Fix styling for vertical images
* Product Gallery: Remove the unused editor.scss file
* Product Gallery: Fix the placement of the Thumbnails block in the block template
* Product Gallery Dialog: Reset changes to the dialog
* update @wordpress/e2e-test-utils-playwright package
* don't update node version
* remove waitForSiteEditorFinishLoading function
* use visitSiteEditor util
* Product Gallery Thumbnails: Add code comments
* Product Gallery Thumbnails E2E: Fix the test checking the default position of the thumbnails
* Product Gallery E2E: Fix the test checking if the cropping setting works correctly
* Product Gallery Thumbnails: Hide the Thumbnails block if there aren't at least 2 thumbnails to display
---------
Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>
Co-authored-by: Luigi Teschio <gigitux@gmail.com>
* Add new ai/store-title endpoint to update the store title with an AI generated one
* Add StoreTitle schema
* Fix error to response param
* Fix var name and tweak prompt
* Update comment
* Replace it by Ai generated if it's the default title
* Return error if AI failed
* Return false if the title is not updated with an AI one
* update readme.txt for Woo Copy update on WP.org product page
* Transform to sub-header texts
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: nigeljamesstevenson <nigeljamesstevenson@gmail.com>
Co-authored-by: github-actions <github-actions@github.com>
* Enable shrink columns option in Product Collection by default
* Improve tests about responsiveness
* Make regex allowing for floating pixels
* Related products should not use sticky and author attribute or have hardcoded queryId
* Bring back properties for Related Products as it's based on Propducts block, not Product Collection
* Enable shrink columns to fit by default in patterns
* Run daily smoke tests on wp-env
* Add changelog
* Add step to install playwright to e2e tests
* Run k6 containers as e2e
* Get build first for k6
* Tweak for API report
* Change k6 tests back to non-local
---------
Co-authored-by: Jon Lane <jon.lane@automattic.com>
* Remove "Checkout is not available whilst your cart is empty." notice
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Discounts are not in the format `array( 'string' => 'string' )`, they are in the format `array( 'string' => array( int, int ) );`.
* Remove `ArrayUtil` because `ensure_key_is_array` creates the array and returns `true`.
* Add Changelog manually
* Fix changelog placement.
---------
Co-authored-by: John Rom <john@nimblelight.com>
* Add tests for analytics (orders)
* Fix for download test
* E2E action scheduler runner (#40687)
* Add utility to trigger processing of pending scheduled actions (E2E).
* Update analytics test to use E2E scheduled action helper.
* Expand notes.
* No changelog needed.
* Further test setup work needed for Process Waiting Actions utility.
* Update download test
* Fix for FTUX tour, locator matching
* Update selectors
* Address review feedback
* Add comment to explain helper plugin
---------
Co-authored-by: Jon Lane <jon.lane@automattic.com>
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Marketplace: add Tracks events for the subscription page
Added events for:
- marketplace_product_installed
- marketplace_product_install_failed
- marketplace_renew_button_clicked
- marketplace_subscribe_button_clicked
- marketplace_product_updated
- marketplace_product_update_failed
* Marketplace: update Tracks properties
We used to reference product slug only. But may change and if the store
is rate limited, that information is missing. This commit switches
using "product_zip_slug" and "product_id".
* Marketplace: add product version info to update and install Tracks events
* Marketplace readme
* Add structure and development
* Linter fix
* linter
* Tweaks to the In-App Marketplace README.
---------
Co-authored-by: And Finally <andfinally@users.noreply.github.com>
* Clean up created pages and posts
* Move tax tests so that they run last
* Improve locators
* Changelog
* Improve locators
* Improve locator on heading
* Change assertions to look for alert text
* Change assertion to look for text
* Update locators
* Update locator
* Update alternate elements
* Specify first order amount
* Update locator
* Changelog
* Increase reliability of checkout test
* Update a few locators
* Remove .slice()
---------
Co-authored-by: Jon Lane <jon.lane@automattic.com>
* validate coupon usage against user and email
* add checks for logged out user
* change to direct array call
* fix the query
* fix the query
* fix arrays
* fixe how id is fetched
* Make function private
* use implode instead of join
* coupon shouldnt be a pointer
* move ignore statement
* add comment about tentative usage
* Update src/StoreApi/Utilities/OrderController.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* better validation for user data
* remove unused variable
* bail early if we dont have limits
* add empty line after function
---------
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Sync Interactivity API code with Gutenberg
* New store() API
* Store raw actions
* Update wc-interactivity-store implementation
* Replace `wc_store` with `wc_initial_state`
* Parse and populate initial state
* Allow store parts in `store()`
* Accept namespaces in directive paths
* Add $$namespace to directives' object values
* Make namespace parsing more robust
* Use DeepPartial type for store parts
* Do not pass `rawStore` to `afterLoad` callbacks
* Simplify `store()` a bit
* Implement `privateStore()`
* Sync context directive with Gutenberg
* Refactor scope and extract getters per scope
* Add namespace to getters and actions
* Remove current privateStore implementation
* Remove `afterLoad` option from `store`
* Use same proxy handlers for ns, getters and actions
* Set scope inside `evaluate`
* Refactor proxy handlers
* Improve types a bit
* Catch errors in async actions
* Implement stacks for scopes and namespaces
* Implement `getElement`
* Change directives object structure
* Remove unnecessary import
* Implement private stores
* Return value from sync actions
* Minor optimizations and improved comments
* Don't use async inside `data-wp-watch`
* Use a single Provider in context directive
* Remove DeepPartial type
* Do not check if element exists
* Add the `current` prop of state inside the scope
* Move getters outside scope
* Fix wc-key assignment
* Fix missing `navigate` in directives
* Fix namespace not being picked in the same element
* Deep merge raw stores instead of proxied ones
* Fix namespace assignment
* Allow forward slashes in namespaces
* Migration of Product Collection and Product Button blocks to the new `store()` API (https://github.com/woocommerce/woocommerce-blocks/pull/11558)
* Refactor Product Button with new store() API
* Use `wc_initial_state` in Product Button
* Fix namespace
* Remove unnecessary state
* Test namespaces in directive paths
* Add test context with namespace
* Simplify woo-test context
* Move addToCart and animations to a file
* Do not pass `rawStore` to `afterLoad` callbacks
* Move callbacks and actions back to the main file
Because the animation was broken.
* Remove selectors in favor of state
* Use default ns in `getContext` for state and actions
* Remove `afterLoad` callback
* Remove unnecessary ns
* Fix getContext in add-to-cart
* Replace namespace and delete unnecessary store
* Pass context types only once
* Use an alternative for requestIdleCallback
* Add previous react code for notices
* Add namespace to Product Collection block
* Replace getTextButton with getButtonText
* Add block name to the ProductCollection namespace
* fix style HTML code
* Remove circular deps error on the Interactivity API
* Product Gallery block: Migrate to new Interactivity API store (https://github.com/woocommerce/woocommerce-blocks/pull/11721)
* Migrate Product Gallery block to new Interactivity API store
* Fix some references
* Add missing data-wc-interactive
* Fix an additional namespace
* Remove unnecessary click handler
* Dialog working
* Refactor action names
* Reindex PHP array
There was some missing indexes, which turned the array into an object in JS.
* Remove unused event handlers
* Move next/previous logic to external function
* Move StorePart util to the types folder
* Rename namespace to `woocommerce/product-gallery`
* Undo product collection namespace renaming
* Remove unnecessary namespace
* Don't hide the large image on page load
* Minor refactorings
* Fix eslint error
* Fix php cs errors with spacing and double arrows alignment
* Disable no-use-before-define rule for eslint
* Disable @typescript-eslint/ban-types rule for eslint
* Fix parsed context error in e2e tests
* Fix context parser for Thumbnail image
* Move store to the top of the frontend file
* Add interactivity api utils to the @woocommerce/utils alias
* Replace deprecated event attribute
---------
Co-authored-by: Luis Herranz <luisherranz@gmail.com>
Co-authored-by: David Arenas <david.arenas@automattic.com>
Co-authored-by: roykho <roykho77@gmail.com>
---------
Co-authored-by: David Arenas <david.arenas@automattic.com>
Co-authored-by: Luigi Teschio <gigitux@gmail.com>
Co-authored-by: Alexandre Lara <allexandrelara@gmail.com>
Co-authored-by: roykho <roykho77@gmail.com>
* Fix error when closing product gallery dialog with keyboard escape key
* use wc_initial_state instead of wc_store
---------
Co-authored-by: Luis Herranz <luisherranz@gmail.com>
Co-authored-by: Luigi Teschio <gigitux@gmail.com>
Co-authored-by: Alexandre Lara <allexandrelara@gmail.com>
Co-authored-by: roykho <roykho77@gmail.com>
* Run E2E test suite on Twenty Twenty-Four
* Update TT4 download URL to the stable one
---------
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
* Don't show a My Subscriptions group if it's empty
* Hide expiry if installed but has no subscription
* Show subscription status labels in a column
* Add changefile(s) from automation for the following project(s): woocommerce
* Show only one badge
* Show installed header if no installed items
* Remove test code
* Show entire installed section
---------
Co-authored-by: github-actions <github-actions@github.com>
This commit introduces the `get_block_type_style` method in the `ProductCollectionNoResults` class. This new method is designed to manage frontend style handling specifically for this block type. Currently, it returns null, indicating no specific styles are assigned at this stage.
* Update Interactivity API JS files
* Disable TS checks in the Interactivity API for now
* Add new SSR files
* Replace wp_ prefixes with wc_ ones
* Replace wp- prefix with wc-
* Replace guternberg_ prefix with woocommerce_
* Remove file comments from Gutenberg
* Rename files with `wp` prefix
* Fix code to load Interactivity API php files
* Remove TODO comments
* Replace @wordpress with @woocommerce
* Update Webpack configuration
* Fix directive prefix
* Remove interactivity folder from tsconfig exclude
* Add client-side navigation meta tag code
* Remove unneeded blocks.php file
* Fix store tag id
* Register Interactivity API runtime script
* Fix Interactivity API runtime registering
* Add Simple Price Filter block
* Remove all files related to directive processing in PHP
* Use values directly for SimplePriceFilter SSR
* Reset pages to 0 when changing filter
Note: we also need to do this with `/page/x`
* wip
* phpcs
* register price filter as inner block
* try: render block using save
* add types
* use min range var instead of 0
* inject dynamic data
* query price data in editor
* better injecting interactivity data
* remove rounding
* Product Collection Data endpoint doesn't care about current query so we remove the context for now
* extract data injecting as a method, possbily a trait in the future
* add sidebar setting
* duplicating the markup in php render callback for safety
* remove directive from edit component
* show prices without decimal
* use final class
* use sample collection data response
* prepare for multiple styles support
* use collection data from context
* cleanup props and props passing
* pass only necessary states
* retire heredoc in favor of late escaping
* reorganize style
* inherit style from current price filter react component, pre extract the component for multiple display style support
* keep minPrice smaller than max
* remove unnecessary active handler logic
* update folder structure
* avoid whitespace change
* clean up
* title
* move inspector to component folder, ready to be extracted to inner block
* block icon
* block name
* name
* use inner block for view
* inner block view switcher
* try: process data in Collection Filtes block only
* wip: query collection data from collection filters block only
* provide all context from collection filters block
* simplify context passing
* feat: use default attribute to define filter type of view block
* rename
* remove price block
* rename price slider to price, default price filter should be a slider
* type cleanup
* fix ancestor block name
* only passing the collection data down
* wip
* recusive
* editor preview
* refactor: data fetching, context passing, and code organization
* initial attribute filter block
* feat: attribute selector
* inspector control
* wip
* break the edit into smaller components
* wip: editor component
* extract checkbox list
* wip editor preview
* show count checkbox list
* fix param aggregation for attribute filter blocks
* post merge fix
* fix param aggregation for attribute filters
* fix: set correct selected attribute
* WIP checkbox list
* WIP checkbox list
* avoid action name conflicts
* Checkbox list front end
* phpcs
* update context on input, navigate on change
* fix: attribute selection
* dropdown
* remove isDeepEqual
* add: warning when attribute has no products or no attribute is selected
* update type
* update type
---------
Co-authored-by: David Arenas <david.arenas@automattic.com>
Co-authored-by: Luis Herranz <luisherranz@gmail.com>
* Merge changelogs into one
* Update plugins/woocommerce/changelog/feature-marketplace-subscriptions
Co-authored-by: And Finally <andfinally@users.noreply.github.com>
* Not connected screen fixes
* Table improvements
* Success notice icon
* Use the same layout of columns for both tables
* Popover
* Add changefile(s) from automation for the following project(s): woocommerce
* CSS lint fixes
* Styling tweaks. Changed font-weight of `.woocommerce-marketplace__product-list-title` to 400, to correspond with the correct weight of the titles like "Installed on this store" in the My Subscriptions section.
* Undo refresh move
* Fix subgrid max widths
* Fic status height
* Update collaborate link
---------
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: And Finally <andfinally@users.noreply.github.com>
* Add discover products to page view event
* Initial implementation of beacon REST API (WIP)
* Discover page - products viewed
* Product card clicked event (WIP)
This takes data from various sources and sends it based on the different places that product cards could appear.
Data included:
- position
- vendor
- product type
- label - indicates if "promoted" if applicable
- group - the discover page group if applicable
- search_term - the search term if applicable
- category - the product category clicked from
The data is essentially complete. The beacon API needs finalising still though. Also, the vendor name click event will need to be updated with the same data.
* See more button & Category dropdown "more" events
* Marketplace: remove custom Beacon and use "queueRecordEvent"
* Marketplace: reenable product card links
This was disabled temporarily while we tested tracks on click
* Marketplace: Add position to tracks event
Co-authored-by: Kyle Nel <22053773+kdevnel@users.noreply.github.com>
* Marketplace: move Tracks data to a different prop and type
* Marketplace: refactor Tracks calls in product card
---------
Co-authored-by: raicem <unalancem@gmail.com>
Co-authored-by: Cem Ünalan <raicem@users.noreply.github.com>
* Update copy
* Remove uppercase from labels
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* give settings proper names
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Fix primary btns colors
* go back to var(--wp-admin-theme-color)
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Tweak Post code UI styles
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Components: TreeSelectControl - Make sure individuallySelectParent value is preserved (#40301)
* make sure individually selected parent value is preserved
* Add changefile(s) from automation for the following project(s): @woocommerce/components
---------
Co-authored-by: github-actions <github-actions@github.com>
* Add changefile(s) from automation for the following project(s): woocommerce
* fix rebase error
* appease linter
---------
Co-authored-by: github-actions <github-actions@github.com>
* Fine-tune the prompts for generating product titles.
* Update the prompt for images.
* Update the prompts for generating content for patterns.
* Break down the pattern content generation into individual methods.
* Add character limit to prompts.
* Add character limit for a handful of titles.
* Add character limit to the title of the product-collection-4-columns pattern.
* Update the prompt to not add abbreviations
* Introduce the refine_returned_images_results method for AI to filter the images returned by Pexels
* Implement retry if the number of images returned by Pexels API is smaller than the number of images required by products and patterns.
* Update the prompt for the images search term.
* Fix AI image assignment for newly created products and improve performance.
* Ensure no additional dummy products are created or updated in simultaneous requests.
* Fix error on generating content for patterns for the first time and saving it to the post.
* Return error if the connection with AI failed.
* Update the prompt character limit for the Featured Category Triple pattern.
* Implement retry if the API connection with AI fails. Update the prompt to remove the length instruction. Add the last_business_description check to prevent duplicated API calls. Set a transient for images in case the request fails.
* Add retry for returning the refined search results. Update the prompt for defining the search term. Update error validation.
* Update the structure for fetching patterns content and reduce the number of requests.
* Break down the pattern ai content generation and assignment into multiple methods and introduce retry in case of failure.
* Update the structure for applying the AI generated content to patterns. Update the fetch and validation of ai responses and update the prompt to ensure longer texts are returned.
* Update the validation of the content returned by AI by verifying the array keys and ensuring the values are not empty. Additionally, the completion should be set.
* If for some reason AI didn't return the complete list of expected generated content, use the same the previous text from the same pattern as a replacement and avoid making an extra request to fetch just fetch a possible missing result.
* Update prompts for patterns.
* Make a single request to fetch all products data, implement retry for products and validation for the response returned by AI.
* Update the retries variable first within the patterns loop.
* Narrow down the AI content generation to only patterns that are part of the Assembler.
* Update the size of images and the prompt for AI generated content assigned to products.
* Don't make request to AI if the user provided a single word for their business description.
* Update the image assignment to products and remove the unused update_dummy_products method.
* Update the prompt for generating content for patterns.
* Update the prompt for products content generation and ensure that an error is returned if all requests fail.
* Update the prompt for patterns.
* Update the prompt for images.
* Update the prompt for images.
* Update prompt for button text.
* Don't schedule action for updating patterns content if the business description wasn't updated.
* add associative option when the local json is parsed
* Ensure the expected list of results matches the number or products to be updated.
* fix lint error
* Address CR.
---------
Co-authored-by: Luigi Teschio <gigitux@gmail.com>
* Add custom 'No Results' block for Product Collection
This commit introduces a new 'No Results' block, replacing the default core 'query-no-results' block within product collection block. The 'No Results' block provides a tailored experience for WooCommerce stores, displaying a custom message when no products are found in a query.
Key changes include:
- A new block type 'woocommerce/no-results' is registered with a complete configuration and content structure.
- Edit and save functions are implemented for the block, allowing for custom content and styles within the block editor and on the front end.
- Webpack entries are updated to include the new block in the build process.
- A PHP class NoResults is added for server-side rendering, which only displays the block when the product query returns no results, enhancing performance.
- The ProductCollectionUtils utility class is extended to support the new block's query needs.
The new block enriches the user experience by providing clearer communication when no products match the collection criteria and allows store owners to customize the message and presentation.
* Update description
* Rename 'no-results' block to 'product-collection-no-results'
Changes include:
- Updating the block name in `edit.tsx` within the `product-collection` directory.
- Modifying the block.json file in the `no-results` inner block to reflect the new name.
- Adjusting the className in `edit.tsx` for the `no-results` inner block.
- Altering the webpack entries in `webpack-entries.js` to recognize the new block name.
- Renaming the block in `NoResults.php` to align with this update.
This renaming aims to make the block's purpose more clear and to maintain a consistent naming scheme within our product collection blocks.
* Rename NoResults to ProductCollectionNoResults for clarity
This commit renames the `NoResults` class to `ProductCollectionNoResults`. The change aims to enhance clarity and specificity about the class's purpose, indicating that it specifically handles no-result scenarios within product collections.
Changes made:
- Renamed `NoResults.php` to `ProductCollectionNoResults.php`.
- Updated the class name from `NoResults` to `ProductCollectionNoResults` in the file.
- Modified the reference in `BlockTypesController.php` to use the new class name.
This renaming ensures better readability and understanding of the class's role in the context of product collections. The primary change is the renaming, with no significant alterations in the class functionality.
* Update No-Results Message Formatting in Product Collection Block
This commit simplifies the layout and message content for the 'No results found' message in the product collection block's no-results edit component. The changes include:
1. Removal of the full stop in the 'No results found' string for consistency.
2. Replacing the 'core/group' block with a 'core/paragraph' block.
3. Streamlining the message content to be more concise and integrated into fewer text blocks.
4. Direct links for 'clearing any filters' and navigating to the 'store's home' are now included in the same paragraph.
---------
Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>
* Fix strings in modal window
* Update assets/js/editor-components/incompatible-extension-notice/modal.tsx
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
---------
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Add payment-gateway-suggestions cache test
* Add changefile(s) from automation for the following project(s): woocommerce
* Fix broeken test
* Fix broeken test
* Fix broeken test
* Lint fix
* Refactor test
* Lint fix
---------
Co-authored-by: github-actions <github-actions@github.com>
* Add digital product task selection to the A/B test for WC 8.4.
* Add changelog
* Enable the product-virtual-downloadable feature.
* Fix linting error
---------
Co-authored-by: Lourens Schep <lourensschep@gmail.com>
* Add nonce check during process_bulk_action
The webhooks screen already has a nonce field available, so all that's needed here is to verify the nonce when processing a delete action.
Fixes#284
* Add e2e regression test
* Check admin referer on all present/future actions, not just delete
* Add cleanup after e2e test
* Updates to e2e test
* Use better locators (user facing)
* Simplify some assertions
* Better usage of networkidle
* Remove empty catch clauses
* Add changelog
---------
Co-authored-by: Corey McKrill <916023+coreymckrill@users.noreply.github.com>
* Add buy button section
* Enable external product support into the product block editor
* Hide buy button section when product type is not external
* Remove BaseControl from TextControl since it's not required anymore, InputControl takes care of that now
* Add type and suffix support to the product-text-field block
* Add the placeholder to the external url input and remove required constraint to the buy button text
* Set the url icon link type to external
* Fix input border to be red when invalida now that base control is not present twice
* Set the min height to 36px to match others non InputControls components height
* Extends required constrain to also support a custom error message
* Extends the product-text-field validation system
* Add product-text-field documentation
* Add changelog files
* Fix php linter error
* Fix compilation error
* Fix linter errors
* Update smoke testing docs to mention the Product Collection block instead of the Products block
* Mention that Cart and Checkout blocks need to be added to the template instead of the pages
* Update docs/internal-developers/testing/smoke-testing.md
Co-authored-by: Karol Manijak <20098064+kmanijak@users.noreply.github.com>
---------
Co-authored-by: Karol Manijak <20098064+kmanijak@users.noreply.github.com>
* use latest commit of stalebot action, tweak configuration accordingly
* remove stalebot.js
* use default operations per run
---------
Co-authored-by: Ron Rennick <ronald.rennick@automattic.com>
* WIP: experimenting with strategy pattern for block registration
* Add TemplateChangeDetector to BlocksRegistrationManager
* Handle blocks registration
* Fix issue causing blocks to be registered multiple times
* Allow register/unregister blocks when on pages or posts
* Add BlockRegistrationStrategy logic
* Fix import error
* Add doc comments for BlockRegistrationManager class
* Add doc comments to TemplateChangeDetector class
* Fix eslint errors
* Import domReady from @wordpress/dom-ready
* Prevent error when using blockName for registerBlockType function
* Add e2e tests to check for block availability in different contexts
* Add e2e tests to cover block availability on different contexts
* fix: fixed all instances of translator lint rule violations
* Add changefile(s) from automation for the following project(s): @woocommerce/eslint-plugin, @woocommerce/components, woocommerce
* fix i18n lint violations in @woo/components
* fix all i18n lint rule violations in @woo/product-editor
* Add changefile(s) from automation for the following project(s): @woocommerce/product-editor, @woocommerce/eslint-plugin, @woocommerce/components, woocommerce
* empty commit to trigger CI
---------
Co-authored-by: github-actions <github-actions@github.com>
* Hide pager in dialog
* Product Gallery: reset main image when dialog closes
* Product Gallery block: Add product title to dialog
* Align double arrow
* Use H2 to be more semantic
* Use product title block in template part
* Default pager to off
* Remove pager only in dialog
* Remove unused param
* Default pager to off instead of removing
* Adds a state example for the payment data store
* Update docs/third-party-developers/extensibility/data-store/payment.md
Co-authored-by: Niels Lange <info@nielslange.de>
* Update docs/third-party-developers/extensibility/data-store/payment.md
Co-authored-by: Niels Lange <info@nielslange.de>
* Update docs/third-party-developers/extensibility/data-store/payment.md
Co-authored-by: Niels Lange <info@nielslange.de>
* Full stop
---------
Co-authored-by: Niels Lange <info@nielslange.de>
* Check if wc_admin_register_page exists before using it
* Add changefile(s) from automation for the following project(s): woocommerce
* Trigger Build
---------
Co-authored-by: github-actions <github-actions@github.com>
* Redirect connect deny to correct subscriptions page
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Fix snackbar icon position
* Add changefile(s) from automation for the following project(s): woocommerce
* Remove absolute positioning
---------
Co-authored-by: github-actions <github-actions@github.com>
* Add AI disclaimer
* Add changefile(s) from automation for the following project(s): woocommerce
* Move .ai-disclaime to inside the .woocommerce-customize-store-banner-content p rule
---------
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Check if $data['billing_email'] is set
Checks if $data['billing_email'] is set in the create_order function. Fixes#41097
* Add changelog entry
Adds the changelog entry for #41097
* Move Button, StoreNotice and StoreNoticesContainer components into the components package
* Delete the button folder and leave alias in index.ts
* Update references from @woocommerce/blocks-checkout to @woocommerce/blocks-components
* Add disable conditions functionality to back-end
* Evaluate _templateBlockDisableConditions in registerWooBlockType
* Add 'disabled' support for number, pricing, and text
* Add disabled support for checkbox
* Add disabled for taxonomy block
* Add changelogs
* Update documentation
* Add unit tests
* Augment attribute with disabled in back-end
* Fix disabled styling
* Remove disabled from toggle since it's being added for all blocks
* Improve CSS for disabled fields
* Only add disabled attribute when it's not added on the block json and refactor
* Allow adding disable conditions in the constructor
* Fix lint issue
* Fix test
* Add disableConditions to dependencies
* Added a new parameter $status_transition to the woocommerce_order_status_$status_transition["to"] hook.
* Added changelog
* fix - phpcs errors
* Added version to the hook
* Update woocommerce.php required WP version for 6.4 release
* Update readme.txt for WP 6.4 release
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Load content and images on registration if the patterns is in the dictionary
* Stop getting the content from each pattern
* Add comment with explanation about the change
* Add new e2e tests to cover shopper cart block first part
* Add changelog
* Add more tests to cover coupons
* Update coupon tests to include discounts
* Split cart block tests and update tests
* Add E2E tests for cart block shipping
* Add tests for shopper cart block calculating tax
* Remove test.skip
* Add a workaround for filling shipping due to issue found
* Improve welcome modal closure
---------
Co-authored-by: Jon Lane <jon.lane@automattic.com>
* Update mini-cart test to include tax scenario
* Include changelog file
* Move changelog file to the right place
* Update taxing options
* Update calculation for tax price
* Remove only parameter
* Improve closing welcome popup if prompted
---------
Co-authored-by: Jon Lane <jon.lane@automattic.com>
* Hide install if not installable
* Refactor local data generation
* Add subscription installed flag
* Add connect support to not in use items
* Remove debug code
* Add changefile(s) from automation for the following project(s): woocommerce
* Linter fixes
* Add changefile(s) from automation for the following project(s): woocommerce
* Update plugins/woocommerce/includes/admin/helper/class-wc-helper.php
Co-authored-by: And Finally <andfinally@users.noreply.github.com>
* Update plugins/woocommerce/includes/admin/helper/class-wc-helper.php
Co-authored-by: And Finally <andfinally@users.noreply.github.com>
* Update plugins/woocommerce/includes/admin/helper/class-wc-helper.php
Co-authored-by: And Finally <andfinally@users.noreply.github.com>
* Update plugins/woocommerce/includes/admin/helper/class-wc-helper.php
Co-authored-by: And Finally <andfinally@users.noreply.github.com>
* Remove duplicate changelog
---------
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: And Finally <andfinally@users.noreply.github.com>
* Clear payment suggestion cache when base country gets updated
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Compare a serialised version of the meta value when trying to find existing matching meta
* Add changefile(s) from automation for the following project(s): woocommerce
* Add unit test
---------
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Jorge Torres <jorge.torres@automattic.com>
* Move Template implementation classes to internal namespace
* Fix namespaces that were changed by mistake
* Add missing imports to files since they were moved to another namespace
* Adapt to new lint rules
In order to do this, but still have differentiated bright colors,
this changes it from a background color to a border color. Also tweaks
the border styles to make it look like a label icon.
* Add checks to see if getCartData finished before rendering address
* Prevent block error due to excessive updates of customValidation
* Do not condense address in admin and handle phone field
* Add missing showPhoneField for billing
---------
Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
* We display the number of selected items, e.g., '5 selected'
* We display a number of all existing items next to the button, e.g., "Select all (25)".
* When only some items are selected on the page, we show an additional button that says "Select page (X)" where X stands for the number of rows on the page. Clicking it selects all rows on the page.
* Clicking "Select all" selects all existing items
* Add changelog file
* Add tracking events
* Saving progress on variations table
* Manage tracking events and error handling
* Hide edition features when at least one variation is selected
* Fix linter errors
* Resolve rebase conflicts
* Remove use selection hook since is not needed anymore
* Fix filter items vertical alignment
* Add changelog files
* Fix inconsistent loading and variations state
* Do not show EmptyTableState when the product has variations but the filter get empty list
* Invalidate cache state before generating variations
* Fix select all after filtering variations
* Remove delete variations from the selection list
* Retreive the product after generating variations
* Fix linter
* Invalidate variations cache after generating variations
* Create Related Products pattern reused in the Single Product template
That's needed in order to make the Related Products string translatable
* Add margin to Related Products heading
* Add margin to Related Products transformed from classic template
* Simplify the translation
* Change string capitalization so it's the same as the other one and can be transklated
* Separate count query
* Fix total_results var
* Add count-low-in-stock endpoint
* Use new count-low-in-stock endpoint
* Fix inconsistent in function names
* Type cast to int
* Add changefile(s) from automation for the following project(s): woocommerce
* Fix spelling
* Separate count query function
* Add changefile(s) from automation for the following project(s): woocommerce
* Use get_count_query
* Use count-low-in-stock endpoint
* Remove condition where it only updates product count when there is less than 2 items -- no longer needed as we are using a new endpoint to count the products
* Fix spelling
* Add changefile(s) from automation for the following project(s): woocommerce
* Lint fixes
---------
Co-authored-by: github-actions <github-actions@github.com>
* Bump version in composer.json
* Update lock files
* changelog
* ensure the properties exist before accessing them
* add changelog file
* skip a test that is waiting for a fix from WooCommerce Blocks
* appease the linter
* remove commented out code
* use `empty` instead of `property_exists`
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Update WooCommerce Blocks package to 11.5.1
* Update WooCommerce Blocks package to 11.5.2
* Undo test removal
* bump to woocommerce blocks 11.5.3
---------
Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>
Co-authored-by: Leif Singer <git@singer.sh>
Co-authored-by: Leif Singer <leif@automattic.com>
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
Co-authored-by: Luigi <gigitux@gmail.com>
* Clean up created pages and posts
* Move tax tests so that they run last
* Improve locators
* Changelog
* Improve locators
* Improve locator on heading
* Change assertions to look for alert text
* Change assertion to look for text
* Update locators
* Update locator
---------
Co-authored-by: Jon Lane <jon.lane@automattic.com>
* Fix attempts to count possible non-countable variables or usage of undefined variables
This fixes a few miscellaneous small problems where a possibly undefined variable was attempted to be accessed or a variable that wasn't necessarily countable was passed to `count()`
These were found by running Rector with rules specific to finding issues with php8.
* Fixing lint spacing issue
* Use wp_post table instead wp_option to store patterns data generated by AI
* avoid crash when there isn't any patterns_ai_data post type
* restore check
* remove unnecessary constant
* catch error
* pass boolean to return WP_Error
* Marketplace: table design updates
* Marketplace: address PR feedback
- Added enum for status levels
- Fixed color for the table rows
- Used ADMIN_URL for referencing plugins page
-
* Marketplace: Update WooCommerce.com references to Woo.com
Co-authored-by: And Finally <andfinally@users.noreply.github.com>
* Marketplace: fix how status badges look on narrower screens
---------
Co-authored-by: And Finally <andfinally@users.noreply.github.com>
* Add support for filtering products by featured status
- Added `featured` attribute to `ProductCollectionQuery` type to enable filtering by featured status.
- Implemented `FeaturedProductsControl` to provide a toggle option in the inspector controls.
- Integrated `FeaturedProductsControl` into `ProductCollectionInspectorControls`.
- Added `get_featured_query` function in `ProductCollection` class to generate query for fetching featured products.
- Updated existing functions and queries in `ProductCollection` class to support featured products filtering.
* Revert changes to composer.lock
* Refactor handling of 'featured' parameter
This commit makes the handling of the 'featured' parameter consistent in the ProductCollection class. Previously, the 'featured' parameter was being type-casted to boolean, which was not necessary and could lead to incorrect results. Now, the 'featured' parameter is used directly without type-casting, and the check for 'featured' products in the get_featured_query method has been updated accordingly. This ensures that the 'featured' parameter is handled consistently and correctly throughout the class.
* Handle undefined 'featured' index
This commit adds null coalescing operator to handle the case when 'featured' index is not set in the $query array. This prevents potential PHP notices or errors that may arise when trying to access an undefined index.
* Add time frame filter to Product Collection block
This commit introduces the ability to filter products within the Product Collection block by a specified time frame. The changes include:
- A new 'timeFrame' property added to the DEFAULT_QUERY constant in constants.ts, initialized as null, allowing for the storage of time frame data.
- Creation of a new component `CreatedControl` in created-control.tsx that provides UI elements for selecting a time frame filter.
- Inclusion of `CreatedControl` in the Product Collection Inspector Controls.
- Expansion of the ProductCollectionQuery interface in types.ts to include a 'timeFrame' attribute.
- Addition of the 'timeFrame' parameter handling within the ProductCollection PHP class to construct and execute the date query based on the provided time frame.
The addition of the time frame filter offers enhanced flexibility in presenting products and allows users to dynamically segment their product lists based on product creation dates.
* Refactor: Standardize 'timeFrame' to be 'undefined' instead of 'null'
This commit includes a refactoring that changes the initialization and reset values for the `timeFrame` property from `null` to `undefined`. This standardization affects the constants, type definitions, and the handling of the `timeFrame` property in both the inspector controls and the PHP backend.
* Switch date query to use post_date_gmt for DST consistency
This commit changes the column reference in the date query from 'post_date' to 'post_date_gmt'. This update ensures that the product collection filtering is based on Coordinated Universal Time (UTC) rather than local time, which can be affected by Daylight Saving Time (DST) shifts. The modification will lead to more consistent and reliable behavior across different time zones and during DST changes.
* Capitalize toggle group labels
The following adjustments have been made:
- Introduced a constant `uppercaseStyle` to store the `{ textTransform: 'uppercase' }` style.
- Applied `uppercaseStyle` to both the 'IN' and 'NOT IN' toggle options to ensure label text is consistently uppercase.
- Updated the 'Not in' label text to uppercase ('NOT IN') to match the newly applied style.
These changes ensure that the toggle labels align with the design guidelines that call for uppercase styling in control elements.
* Make first letter of first work capital
* Rename to Within & Before
* Update i18n for Product Collection query operators
This commit updates the internationalization (i18n) for the Product Collection query operators in the 'Created' control component of the WooCommerce Blocks plugin. It replaces the '__' function with '_x' for translation and provides context comments for better translation handling. This improvement enhances the localization of the query operators for better multilingual support.
* Add 2 additional steps between the loader steps
* Support onChange callback
* Add loader progress transition
* Add smooth transition story
* Set the initial percentage to 5 to make the transition smoother
* Add changefile(s) from automation for the following project(s): @woocommerce/onboarding, woocommerce
* Add smooth-transition class to the progressbar
* Fix lint
* Update AssembleHubLoader
* Fix e2e
---------
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
In WordPress 6.4, it appears that the global `have_posts` is `false` in
the context of the full site editing single product template. This
breaks the Classic Template block.
In this commit, we are creating a custom query using the available id
instead of relying on the global query.
This might be a temporary workaround as we are waiting to see
if that's an issue that core is willing to fix, as it might affect
backwards-compatibility for other vendors.
* Rename Centered Header Menu with Search pattern
Since the search bar has been removed from this pattern, this PR renames
the pattern title and slug to reflect that change.
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Rename Centered Header Menu with Search pattern
Since the search bar has been removed from this pattern, this PR renames
the pattern title and slug to reflect that change.
* Rename file to reflect search removal.
Remove `search` from the filename, as this no longer reflects the
pattern.
* Avoid a type error when performing an `array_sum()` under PHP 8.3.
* avoid short array syntax (linter)
---------
Co-authored-by: Leif Singer <git@singer.sh>
* fix pattern route performance
* update namespace
* improve middleware
* improve ProductSchema
* improve error handling
* update identifier
* fix middleware
* update description
* use schema to return the response
* Break down the generate_content method and create the new fetch_dummy_products_to_update method for handling the fetch of dummy products to be updated.
* Ensure the Product endpoint relies on the fetch_dummy_products_to_update method for fetching dummy products to avoid code repetition and add safety checks and handle errors in case certain properties are not available.
* Add error handling for the Products endpoint.
* Remove memory limit increase and update docblocks.
* re-add set_time_limit
---------
Co-authored-by: Patricia Hillebrandt <patriciahillebrandt@gmail.com>
* Copy WelcomeGuide from gutenberg
* Remove CSS copied from guide component since it's not influencing the product Welcome Guide and it's interfering with the block editor welcome guide
* Fix issue with box-sizing
* Fix lint issues
* Show guide only when modal is open
* Add changelog
* Remove template and fix issue with component not re-rendering
* Add comment
* Add additional changelog
* Rename component