@propeller-commerce/propeller-v2-vue-ui 0.3.15 → 0.3.18
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 +68 -0
- package/dist/components/CartItem.vue.d.ts +2 -0
- package/dist/components/ClusterCard.vue.d.ts +13 -0
- package/dist/components/GridFiltersPanel.vue.d.ts +13 -0
- package/dist/components/ProductCard.vue.d.ts +13 -0
- package/dist/index.cjs +1204 -918
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1231 -945
- 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,74 @@ 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.3.18] - 2026-06-19
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **`GridFiltersPanel`** — a responsive wrapper around `GridFilters`. At `lg`
|
|
16
|
+
(1024px) and up it renders the filters as the inline sidebar; below `lg` it
|
|
17
|
+
collapses them behind a "Filters" button that opens a left slide-in drawer
|
|
18
|
+
(dimmed backdrop, close button, "Show results" to dismiss). A single
|
|
19
|
+
`GridFilters` instance backs both layouts — no duplicate fetch or state.
|
|
20
|
+
Replaces the host's `<aside><GridFilters/></aside>`. New label keys:
|
|
21
|
+
`filtersButton`, `applyFilters`, `closeFilters`. Optional `activeFilterCount`
|
|
22
|
+
shows a badge on the button.
|
|
23
|
+
|
|
24
|
+
## [0.3.17] - 2026-06-19
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- **Product card list view broke on desktop after the 0.3.16 mobile
|
|
29
|
+
redesign.** The mobile-first footer (`flex-col`, full-width `AddToCart`
|
|
30
|
+
controls) leaked into the desktop row layout because the `md:` overrides
|
|
31
|
+
lost the cross-Tailwind cascade. The desktop (≥768px) row intent is now
|
|
32
|
+
restated on the BEM hook classes in `styles.css` — footer back to a row,
|
|
33
|
+
`__footer-meta` to `display: contents`, and the `AddToCart` controls back to
|
|
34
|
+
a single nowrap row with a fixed-width quantity input.
|
|
35
|
+
- **Price clipped in the mobile grid card.** The stock + price meta row could
|
|
36
|
+
overflow a narrow (~190px) grid card. The row now wraps and the price is
|
|
37
|
+
allowed to shrink (`min-w-0`, right-aligned) instead of being cut off.
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- **`ClusterCard` gets the same responsive footer as `ProductCard`.** Below
|
|
42
|
+
768px the list view uses a 2-row footer (stock/price, then full-width "View
|
|
43
|
+
cluster" button) and the grid view pairs stock/price in a wrapping meta row;
|
|
44
|
+
desktop (≥768px) is unchanged.
|
|
45
|
+
|
|
46
|
+
## [0.3.16] - 2026-06-19
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
|
|
50
|
+
- **Mobile product card layout (below 768px).** On narrow viewports the
|
|
51
|
+
`ProductCard` action area no longer overflows the card edge — the quantity
|
|
52
|
+
stepper and "Add to cart" button were clipped. Below `md` (768px):
|
|
53
|
+
- **List view** (`columns === 1`): the footer becomes two rows — stock and
|
|
54
|
+
price share the first row (`justify-between`), and the full-width
|
|
55
|
+
`AddToCart` (stepper + button) sits on the second row.
|
|
56
|
+
- **Grid view** (`columns > 1`): the footer becomes three rows — stock ↔
|
|
57
|
+
price, then a full-width stepper, then a full-width button.
|
|
58
|
+
|
|
59
|
+
At `md` and up the previous desktop layout is unchanged. This flows through
|
|
60
|
+
every surface that renders `ProductCard` / `ProductGrid` (catalog, search,
|
|
61
|
+
product slider). Implemented purely with responsive Tailwind classes — no
|
|
62
|
+
JavaScript width detection.
|
|
63
|
+
|
|
64
|
+
### Added
|
|
65
|
+
|
|
66
|
+
- **Cart icon in the `AddToCart` button.** The submit button now renders a
|
|
67
|
+
built-in cart glyph (`.propeller-add-to-cart__icon`) before its label, drawn
|
|
68
|
+
with `currentColor` and `em` sizing so consumers can restyle its size,
|
|
69
|
+
colour and stroke via CSS.
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
|
|
73
|
+
- **`CartItem` lost its card border and delete button.** Vue coerces an
|
|
74
|
+
unpassed `Boolean` prop to `false`, so the on-by-default `cardFrame` and
|
|
75
|
+
`showDelete` props evaluated to `false` and hid the card frame and the
|
|
76
|
+
delete (trash) button. Both now default to `true` explicitly via
|
|
77
|
+
`withDefaults`.
|
|
78
|
+
|
|
11
79
|
## [0.3.15] - 2026-06-11
|
|
12
80
|
|
|
13
81
|
### Fixed
|
|
@@ -168,6 +168,8 @@ declare const __VLS_component: import('vue').DefineComponent<CartItemProps, {},
|
|
|
168
168
|
titleLinkable: boolean;
|
|
169
169
|
showSku: boolean;
|
|
170
170
|
enableIncrementDecrement: boolean;
|
|
171
|
+
cardFrame: boolean;
|
|
172
|
+
showDelete: boolean;
|
|
171
173
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
172
174
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
173
175
|
export default _default;
|
|
@@ -198,6 +198,19 @@ declare function __VLS_template(): {
|
|
|
198
198
|
showAvailability: boolean;
|
|
199
199
|
labels: Record<string, string> | undefined;
|
|
200
200
|
}): any;
|
|
201
|
+
stock?(_: {
|
|
202
|
+
cluster: Cluster;
|
|
203
|
+
inventory: import('@propeller-commerce/propeller-sdk-v2').ProductInventory;
|
|
204
|
+
showAvailability: boolean;
|
|
205
|
+
labels: Record<string, string> | undefined;
|
|
206
|
+
}): any;
|
|
207
|
+
price?(_: {
|
|
208
|
+
cluster: Cluster;
|
|
209
|
+
price: import('@propeller-commerce/propeller-sdk-v2').ProductPrice | undefined;
|
|
210
|
+
includeTax: boolean;
|
|
211
|
+
currency: string | undefined;
|
|
212
|
+
labels: Record<string, string> | undefined;
|
|
213
|
+
}): any;
|
|
201
214
|
price?(_: {
|
|
202
215
|
cluster: Cluster;
|
|
203
216
|
price: import('@propeller-commerce/propeller-sdk-v2').ProductPrice | undefined;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GridFiltersProps } from './GridFilters.vue';
|
|
2
|
+
export interface GridFiltersPanelProps extends GridFiltersProps {
|
|
3
|
+
/**
|
|
4
|
+
* Number of active filters, shown as a badge on the mobile trigger button.
|
|
5
|
+
* The host computes this from its active filter state. Omit or 0 to hide
|
|
6
|
+
* the badge.
|
|
7
|
+
*/
|
|
8
|
+
activeFilterCount?: number;
|
|
9
|
+
/** Extra CSS class on the outer panel root. */
|
|
10
|
+
wrapperClassName?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: import('vue').DefineComponent<GridFiltersPanelProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<GridFiltersPanelProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
13
|
+
export default _default;
|
|
@@ -280,6 +280,19 @@ declare function __VLS_template(): {
|
|
|
280
280
|
showAvailability: boolean;
|
|
281
281
|
labels: Record<string, string> | undefined;
|
|
282
282
|
}): any;
|
|
283
|
+
stock?(_: {
|
|
284
|
+
product: Product;
|
|
285
|
+
inventory: import('@propeller-commerce/propeller-sdk-v2').ProductInventory | undefined;
|
|
286
|
+
showAvailability: boolean;
|
|
287
|
+
labels: Record<string, string> | undefined;
|
|
288
|
+
}): any;
|
|
289
|
+
price?(_: {
|
|
290
|
+
product: Product;
|
|
291
|
+
price: import('@propeller-commerce/propeller-sdk-v2').ProductPrice;
|
|
292
|
+
includeTax: boolean;
|
|
293
|
+
currency: string | undefined;
|
|
294
|
+
labels: Record<string, string> | undefined;
|
|
295
|
+
}): any;
|
|
283
296
|
price?(_: {
|
|
284
297
|
product: Product;
|
|
285
298
|
price: import('@propeller-commerce/propeller-sdk-v2').ProductPrice;
|