@propeller-commerce/propeller-v2-react-ui 0.6.1 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/dist/index.cjs +523 -66
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +202 -1
- package/dist/index.d.ts +202 -1
- package/dist/index.js +522 -67
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,53 @@ once it reaches 1.0. Until then (the `0.x` line) the public API may change
|
|
|
8
8
|
between minor versions; breaking changes are called out below and in
|
|
9
9
|
[MIGRATION.md](./MIGRATION.md).
|
|
10
10
|
|
|
11
|
+
## [0.7.1] - 2026-07-28
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **`cartUpdateAddress` rejected a blank email** — optional address fields were
|
|
16
|
+
sent as empty strings when left blank, and the API validates optional fields
|
|
17
|
+
whenever they are present, so a blank email failed with
|
|
18
|
+
`email must be an email` (400). This blocked the address step for a delivery
|
|
19
|
+
address, where the email legitimately lives on the contact / customer record
|
|
20
|
+
rather than the address. Optional fields are now omitted when blank, matching
|
|
21
|
+
how `useAddress` already built its payloads. Affects every optional field
|
|
22
|
+
(`email`, `phone`, `mobile`, `company`, `notes`, …), not just email.
|
|
23
|
+
- **`<AddressCard>` required an email on every address** — the edit and create
|
|
24
|
+
forms hardcoded `required` plus a `*` on the email input, contradicting the
|
|
25
|
+
field being optional on the address itself. Email is now optional in both
|
|
26
|
+
forms.
|
|
27
|
+
- **`<AddressCard>` accepted undeliverable emails** — `type="email"` alone
|
|
28
|
+
permits dotless domains such as `aa@gg` (valid per the HTML5 spec for
|
|
29
|
+
intranet hosts, but rejected by the API). Both email inputs now carry a
|
|
30
|
+
pattern requiring a dotted top-level domain, so invalid input is caught in
|
|
31
|
+
the form instead of surfacing as a failed mutation. Subdomains
|
|
32
|
+
(`user@sub.co.uk`) and tagged addresses (`user+tag@example.com`) remain
|
|
33
|
+
valid.
|
|
34
|
+
|
|
35
|
+
## [0.7.0] - 2026-07-27
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
|
|
39
|
+
- **`<QuickOrder>` component + `useQuickOrder` composable** — a bulk "quick
|
|
40
|
+
order" pad for B2B replenishment. Each row has a debounced SKU/code typeahead
|
|
41
|
+
(`ProductSearch`); selecting a match fills the row's name, net price and
|
|
42
|
+
minimum quantity. Quantities are editable, rows can be added/removed, and
|
|
43
|
+
duplicate SKUs are rejected. "Add to cart" resolves the user's cart (shared
|
|
44
|
+
`initCart` flow) and adds every resolved row in a single `CartItemBulk`
|
|
45
|
+
mutation (`CartService.bulkUpdateCartItems`). Ports the WordPress plugin's
|
|
46
|
+
quick-order/replenish flow.
|
|
47
|
+
- Optional XLSX upload: pass a `parseSpreadsheet(file)` handler (the app owns
|
|
48
|
+
the parser — the package ships no spreadsheet dependency) plus a
|
|
49
|
+
`templateUrl`; parsed code+quantity lines are resolved against the API and
|
|
50
|
+
unresolved codes reported via `onMissingCodes`.
|
|
51
|
+
- Fully label-driven (`labels` prop) and `configuration`-aware (image filters
|
|
52
|
+
so typeahead results carry thumbnails, same as `SearchBar`). Infra props
|
|
53
|
+
(`graphqlClient`/`user`/`companyId`/`language`) resolve from
|
|
54
|
+
`<PropellerProvider>` via `useInfraProps`.
|
|
55
|
+
- A typed code is only ever a *search term* — a row's product identity and
|
|
56
|
+
price always come from the API, never from the typed/uploaded value.
|
|
57
|
+
|
|
11
58
|
## [0.6.1] - 2026-07-23
|
|
12
59
|
|
|
13
60
|
### Fixed
|