* remove logic server side for getting payment method from paymentdata
* ensure stripe accounts for payment request type payment methods
* make sure legacy payment method handling always runs last
* add processedPaymentMethodId to payment method data context state
* switch checkout processor to use new processedPaymentMethod id for submission
* implement returning paymentMethodId from payment-request-express
* include paymentMethodId in stripe cc success return value
* include paymentMethodId in cheque success return value
* add active payment method setting and handling via checkout
express payment methods still need to implement:
- onClick when their button is clicked
- onClose when the express payment interface is closed (cancelled etc).
* don’t expose setActivePaymentMethod on the payment method interface
* remove/fix artifacts from earlier iterations of the pull
* rename `id` property to `name` property for payment method registration
* Revert "include paymentMethodId in cheque success return value"
This reverts commit fe4ee8aced6d67bbd9033263ce61844349d18250.
* Revert "include paymentMethodId in stripe cc success return value"
This reverts commit 359a1f0089866110ec204182f8ffa14ab099c425.
* Revert "implement returning paymentMethodId from payment-request-express"
This reverts commit 117c68980b0876dee0acc78cec7754ccfe2a9bb1.
* Revert "switch checkout processor to use new processedPaymentMethod id for submission"
This reverts commit c38a05b63626dfc1336c7bb0e86417b798a803d6.
* Revert "add processedPaymentMethodId to payment method data context state"
This reverts commit 3d7923e7297f3c76efde536d26eaf68464ba9583.
* improve isSuccess response check and variable name
* implement paymentMethodId config option
* doh php ain’t javascript
* add missing dependency from rebase
* remove calculating as a checkout status (making it separate)
* include checkout is calculating for determining whether to flip payment status to process
* only change payment method state for status changes if needed
* fix reducer for shipping state
* include checkoutIsCalculating for determining whether to show validation errors in checkout block
* change where currentStatus is defined
* fix bug with saved payment method option
* Counting helpers for shipping rates and packages
* Use new helpers
* Make shipping calculator use shipping context directly
* Totals should use current address
* Avoid useShippingRates
* Return rates and other items from useShippingRatse in useStoreCart instead
* Update tests
* Merge conflict
* Merge conflict
* Only show descriptions if shipping/payment methods > 1
* Hide descriptions if no description text is set
* Fix object length
* methods->options
* Counting helpers for shipping rates and packages
* Use new helpers
* disable continue to checkout if item is being removed
* rename isPending and selectors/actions to isPendingDelete
* switch itemPendingDelete params order
* change to watching quantity changes not removal
* yield RECEIVE_REMOVED_ITEM
* update types and add return to select
* update tests
* switch params back
* only delete item after response from server
* update tests
* handle errors and unrelated unmounts
* disable row if is loading
* Make validation errors appear
* Make validation errors appear all at once
* Simplify diff
* Expose shippingErrorStatus from shipping context
* Memoize currentErrorStatus
* Pass currentErrorStatus to observers
* Add missing type-def property
* Fix typo in constant name
* Refactor emitEvent so false responses don't return true
* Make onCheckoutProcessing observers return errorMessage and validationErrors properties
* Move no-shipping-placeholder to block - allow pointer events
* Allow payments placeholder to have pointer events
* Enable pointer events for children
* Wrap checkout with disabled
* Add interface for setting an express payment error notice.
* fix typedefs
* remove usage of paymentstatus dispatcher from stripe cc
* remove usage of paymentstatus dispatcher from apple pay
* remove any existing express payment notice on click
* revert buggy change with abort payment call
- also ensure that completePayment sets applePayProcessing to false
* Hook up checkout validation with context
* Make sure hasValidationErrors is up to date in onCheckoutProcessing
* Move validation check inside CheckoutProcessor's processCheckout
* Make sure all checkout form fields have a unique ID
* Don't clear checkout context errors in shipping context
* Move CheckoutProcessor to the top so scrollToTop works
* Do not disable Place Order Button if there are errors
* Split checkValidation and processCheckout in Checkout Provider
* Refactor event emitter to use Maps
* Save payment method errors to validation context
* Show an notice when a payment method has an error
* Make sure JS errors during payment are displayed
* Remove error notice when payment method doesn't return an error anymore
* Make sure payment methods know if shipping and billing addresses are the same
* Make sure checkout is only processed if payment methods didn't fail
* Make sure state input also has an id
* Clear input and select errors on unmount
* Pass id to CountryInput and StateInput
* Fix function name
* Add missing default context values
* Move onCheckoutCompleteError effect to CheckoutBlock
* Remove conditional from shipping setHasError
* Rename and move existing checkout provider to checkout-state provider.
This allows us to re-use the interface exposed on this provider for cart and checkout blocks.
* refactor checkout provider to implement the new checkout state provider.
* Add Cart provider and export
* fix type-defs
* fix editor context provider and ensure all `isEditor` checks come from this provider
* fix type definition
* implement cart provider
* add selecting rate resolution state to the cart store
* expose whether rate is being selected on useSelectShippingRate
* Cleanup and refactor ShippingDataProvider
- remove un-needed component and move shipping rates into context provider
- remove error handling (currently the ui/ux for the checkout should result in no errors and any api errors are non-recoverable).
- Add logic for shipping rate selection into context provider and add event emitters for it.
- increment/decrement checkout calculation counts when shipping rates are being selected.
* dispatch checkout error if there is an error
* disable place order button if checkout is calculating or has error
* update doc block
* fix convention for js comment blocks
* Make Product Price component accessible
* Render checkout form step number before the content instead of after
* Announce changes in the Shipping Rates Control results
* Render product name before product price in the Checkout sidebar
* Verify error element id exists before using it in describedBy
* Avoid reading 'Choose a shipping method' if no shipping methods are available
* Hide product image from screen readers if there is no alt text and make link not focusable
* Move Checkout block buttons below the sidebar
* Simplify selector
* Remove ternary to make code easier to understand
* Fix rebase issue
* Fix step number not visible for payment methods
* Server side changes for payment method integrations
Including adding a stripe class temporarily
* update needed npm packages (and add some types)
* updates to contexts
* remove stepContent from payment config for payment methods
* update payment method interface and typedefs
Exposing a components property to pass along components that payment methods can use (so we keep styles consistent for them)
* add apple pay and stripe cc integration and remove paypal
* remove save payment checkbox from checkout block
It is handled by payment methods.
* Include an id prop for tabs
* fix activePaymentMethod pass through on rendered payment method element
also adds an id for the rendered tab
* add styles for payment method fields
If payment methods use these classes for their fields then the styles will get applied. It _could_ allow for consistent styling, we may have to provide design documentation for this?
These are styles in cases where payment methods have to use elements provided by the gateway (eg. Stripe elements). In future iterations we could look at providing components to payment methods to use (if they aren’t restricted by the gateway).
* fix rebase conflict
* do a test payment request for applePay to determine if the current browser supports it
* don’t console.error for stripe loading.
* Fix placeholder errors in the editor
* improve styling and add missing validation for inline card element
* update pacakge-lock
* rename payment-methods-demo folder to payment-methods-extension
* expose checkbox control on payment method interface
* export payment-methods-extension to it’s own asset build
This allows us to more accurately demonstrate how payment extensions would hook in to the blocks.
* don’t enqueue a style that doesn’t exist
* add full stop to comments and remove obsolete comment blcok
* fix spacing
* switch `activeContent` to `content` for payment method registration config
* add payment-methods-demo config to sideEffects and install @wordpress/icons and @wordpress/primitives to be used directly.
* configure dependency extraction to ignore imports we want to use directly
* fix style issues for production builds
It looks like when a style is imported on the entrypoint of a component (or in a file with just exports), it get’s treeshaken from the final build _regardless of exception rules_.
* fix style imports from wordpress components
* fix loading skeleton showing on production builds
* fix block skeleton showing on production builds for cart
* import side effectful code
* add treatment for `@wordpress/warning` too
* fix typo
* exclude `settings/block` from sideEffects
* rollback `wordpress-components` update and keep sideEffects fixes
* remove unnecessary handle handling
Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
* Only update grid default attributes on WP >= 5.3
* Use @wordpress/compose from external in Reviews sort-select
* Import withInstanceId from external only on legacy builds
* FallbackModule: add extensions to paths if it's missing
* Use path package to extract path extension
* Make all components import from the base withInstanceId HOC
* Add saved-payment-method options handling and improve payment method registration initialization
* add server side exposure of saved customer payment methods
* fix reducer for express payment method state
* fix default for customerPaymentMethods
* Fix wrong optional label for city
* Decode all address entities in shipping calculator
* Move decodeEntities to useShippingRates
* Move decodeEntities to useShippingAddress
* Add line pricing for cart items in the API (https://github.com/woocommerce/woocommerce-blocks/pull/1979)
* Add line pricing for cart items
* Update checkout linePrice
* Fix tests
* Update schema - add dinero
* Implement dinero in cart totals
* Update preview and remove line totals
* Update package lock
* Update checkout review
* Fix preview and default data shapes
* return first and last name in shipping address
* remove shippingAsBilling option from editor settings
* remove billing data from store
* move to context
* hook billing to hook and sync with shipping
* add email to billingData
* hydrate billing data
* some refactors
* move hydrated billing data to reducer initial state and fix stale dependencies
* fix stale useCallback
* better checks in php types
* get isEditor from context
* update typedefs
* skip state update if nothing changed
* fix rebase
* update snapshots
* rebase package
* wrap setEmail in useCallback
* remove ValidationContextProvider
* fix docs
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Add Checkout form validation
* Add back validation when filling the address without having set a country
* Split TextInput and Select so they can be used with or without validation
* Cleanup
* Only display the missing country error if city, state or postcode are entered
* Fix CSS specificity conflict
* Remove unnecessary semicolon
* Rename areThereValidationErrors to hasValidationErrors
* Add checkout skeleton as loading state and remove placeholder text from save method
* Hide skeleton when not loading
* add loading class
* Update snap
* add errormessage handling to countryinput (along with storybook)
* add types for react
* Add validation context and implement
* implement validation context for country field validation
* tweak ValidationInputError so that it can receive property name for getting error from
* improve storybook webpack config to pull from tsconfig.json
* update storybook story to cover changes with context
* Wrap Checkout Provider with Validation Context Provider
* add screen-reader-text style to storybook
* add styles for input error validation to text input
* improve styling for ValidationInputError component
* add validation error handling to TotalsCouponCode component
And story
* make sure errors are cleared on successful receive/remove item
* dispatch loading cancellation on catching errors
This is needed because loading would be cancelled before the error is thrown so any error handling after the thrown error will not be able to rely on loading.
* implement validation setting for coupon errors
* add error color to labels on inputs too
* fix borders back and force border color
* remove extra structure and improve validation error with alignment for coupon code
* add aria-describedby for text inputs
* add back in validation context provider to fix rebase issue
* rework validation so it works for both checkout and cart
* Some styling tweaks
* more style fixes
* remove unnecessary method
* make sure new function is included in context defaults
* package.lock update? seems harmless so rolling with it.
* add snackbarnotices to notices system
* implement snackbar notices for coupon code ui
* improve styles with mobile styles as well
* some more css fixes
* use native filter
* remove usage of lodash filter and dont’ output container if there are no regular notices
* remove unnecessary duplication of styles
- load default snackbar styles from WordPress components
- override for frontend to make them fixed to the window (including mobile treatement).
* simplify css class generation (save some bytes)
* improve proptypes definition
h/t: @aljullu
* consistent style handle name
* increase bundle size budget
* Add back icon
* Add cart URL constant
* Add button components
* Implement button components into checkout
* Update checkout styles to match mockup incl updates to margins and padding
* Add options to control return to cart link
* Use checkout context
* Update snapshot
* Update context
* href
* Color/arrow styling
* Implement select instead of open URL field
* Add notice and updated settings control
* Show notice conditonally
* Store permalinks to avoid extra API requests, and get pages via API
* Update snapshots
* Fix double layout conflict
* Switch back to ID and add permalink via block setting
* snaps
* Fix snapshot; add default shape for pages
* Feedback
* Better undefined handling
* Update assets/js/blocks/cart-checkout/checkout/block.js
Co-Authored-By: Darren Ethier <darren@roughsmootheng.in>
Co-authored-by: Darren Ethier <darren@roughsmootheng.in>
* Fix address form layout broken because select was occupying too much space
* Fix shipping rates appearing in the Checkout sidebar
* Center button text
* Include shipping and billing address data in cart schema
* update cart hook (and data api) with new properties from endpoint
* add use-shipping-address hook and implement in use-shipping-rates
* update usages of useShippingRates through code
* update tests for use-shipping-rates
* update use-payment-method-interface and typedef to remove country field
This is provided reliably via the shippingAddress now.
* restore pluck comparison to effect.
Also added some clarification docs for why `iniitalAddress` is not included in the effect dependencies.
* remove billingAddress from cart schema
* clear city and postcode when changing country
* Update REST Api schemas aftere rebase
- CustomerSchema no longer exists
- Added ShippingAddressSchema implemented by Cart and Order schemas
- fix broken js because of bad merge conflict resolution.
* remove duplicate keys
* Add missing props to sidebar-layout components
* Move specific CSS class to checkout block
* Add comment on top of @wordpress/components styles in webpack entry
* Make it so our styles load after vendor styles
* Remove unnecessary @todo comment
* Add Order Summary card to Checkout sidebar
* Improve responsive layout
* Increase cart.js bundlewatch size
* Remove wrong comment
* Remove unnecessary usage of useStoreCartItemQuantity
* Refactor layout so the product description can occupy more width
* Move paddings to the button so focus styles look better
* Refactor useShippingRates so it doesn't use Object.fromEntries
* Refactor Checkout form CSS so it doesn't use grid autopositioning
* Fix Payment Methods title occupying too much space in IE11
* Fix payment methods tab icons not centered in IE11
* Move cart attributes to attributes file
* Stop feedback prompt jumping around; consolodate strings
* Update option labels and descriptions
* Match checkout save function
* hasShippingRate helper
* Refactor full cart/frontend views for shipping calc
* Add hasShippingAddress to useShippingRates hook
* Initial shipping calculator in totals row implementation
* Create cart context
* Update preview data to match API response
* Use context provider for cart
* Provide default cart item for placeholder with correct shape
* Remove outdated shape validation from cartlineitemrow
* Use preview data in editor context
* Tidy up components
* Tests/lint
* Update assets/js/base/components/totals/totals-shipping-item/has-shipping-rate.js
Co-Authored-By: Seghir Nadir <nadir.seghir@gmail.com>
* No need to camel case previewdata
* Use isValidElement
* Implement EditorContext
* Use select if no post is given
Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
* Set min-height to 0 for Country & State hidden inputs
* Fix button styles broken in the Cart block in editor
* Avoid having editor.scss specific stylesheets for button and totals
* Move Button inside cart-checkout subfolder
* remove throwing errors if there’s an error in state.
These type of errors should be surfaced to user as needed via an error notice, not as a blocking error boundary. Error boundary should only be for non-recoverable errors.
* prevent default behaviour for applyCoupon button
* add various hooks and improve hooks folder structure
- Also restructures hooks directory to make things a bit more organized
- Add useStoreOrder placeholder (followed up in future pull)
- Add useBillingData hook.
* implement usePaymentMethodInterface hook in payment method components
* remove obsolete hooks and implement new checkout context hooks
- add useCheckoutSubmit which exposes checkout submit button interface
- add useCheckoutRedirectUrl which exposes checkout redirect url interface
* add alias for `@woocommerce/base-utils` to jest config
* use consistent variable names for payment method id
* add isEditor to checkotu context and implement in provider usage
* modify configuration expectations for payment method registration api
* update registration of payment methods in demo
* implement new configuration in payment method components
* fix argument order and update jsdocs