@q2devel/q2-storybook 1.0.199 → 1.0.201

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.
@@ -41,6 +41,7 @@ export type BasketDialogProps = {
41
41
  shippingAndTax: string;
42
42
  };
43
43
  showLinkToProduct?: boolean;
44
+ fallbackImageSrc?: string;
44
45
  classNames?: {
45
46
  container?: string;
46
47
  title?: string;
@@ -65,4 +66,4 @@ export type BasketDialogProps = {
65
66
  quantity?: string;
66
67
  };
67
68
  };
68
- export declare const BasketDialog: ({ isOpen, onClose, products, subtotal, onQuantityChange, onRemoveProduct, onCheckout, onContinueShopping, productLink, title, checkoutText, checkoutTextClass, continueShoppingText, showShippingNote, showQuantityControls, pendingUpdates, processingItems, isAddingToCart, totalItems, locale, productPriceOptions, totalPriceOptions, translations, showLinkToProduct, classNames, }: BasketDialogProps) => import("react/jsx-runtime").JSX.Element;
69
+ export declare const BasketDialog: ({ isOpen, onClose, products, subtotal, onQuantityChange, onRemoveProduct, onCheckout, onContinueShopping, productLink, title, checkoutText, checkoutTextClass, continueShoppingText, showShippingNote, showQuantityControls, pendingUpdates, processingItems, isAddingToCart, totalItems, locale, productPriceOptions, totalPriceOptions, translations, showLinkToProduct, fallbackImageSrc, classNames, }: BasketDialogProps) => import("react/jsx-runtime").JSX.Element;
@@ -8,7 +8,7 @@ import Heading from '../../../components/Base/heading/Heading';
8
8
  import { Price } from '../../../components/Base/price/Price';
9
9
  import Spinner from '../../../components/Base/spinner/Spinner';
10
10
  import { buildClassesByJoining } from '../../../utils/StyleHelper';
11
- export const BasketDialog = ({ isOpen, onClose, products, subtotal, onQuantityChange, onRemoveProduct, onCheckout, onContinueShopping, productLink, title = 'Váš košík', checkoutText = 'Pokračovat k objednávce', checkoutTextClass = 'button-brand w-full', continueShoppingText = 'Pokračovat v nákupu', showShippingNote = true, showQuantityControls = true, pendingUpdates = {}, processingItems = {}, isAddingToCart = false, totalItems, locale, productPriceOptions, totalPriceOptions, translations, showLinkToProduct = true, classNames, }) => {
11
+ export const BasketDialog = ({ isOpen, onClose, products, subtotal, onQuantityChange, onRemoveProduct, onCheckout, onContinueShopping, productLink, title = 'Váš košík', checkoutText = 'Pokračovat k objednávce', checkoutTextClass = 'button-brand w-full', continueShoppingText = 'Pokračovat v nákupu', showShippingNote = true, showQuantityControls = true, pendingUpdates = {}, processingItems = {}, isAddingToCart = false, totalItems, locale, productPriceOptions, totalPriceOptions, translations, showLinkToProduct = true, fallbackImageSrc = '', classNames, }) => {
12
12
  const [shouldShowAddingIndicator, setShouldShowAddingIndicator] = useState(false);
13
13
  const initialTotalItems = useRef(null);
14
14
  useEffect(() => {
@@ -70,7 +70,7 @@ export const BasketDialog = ({ isOpen, onClose, products, subtotal, onQuantityCh
70
70
  product.variation_name, src: product
71
71
  .all_images[0]
72
72
  ?.href ||
73
- '/lk_logo.png', className: buildClassesByJoining('size-full object-contain', classNames?.image) }), isTemporaryRow && (_jsx("div", { className: buildClassesByJoining('absolute inset-0 flex items-center justify-center bg-white bg-opacity-75', classNames?.temporaryRow), children: _jsx(Spinner, { className: buildClassesByJoining('h-8 w-8 text-[var(--primary)]', classNames?.spinner) }) }))] }), _jsxs("div", { className: "ml-4 flex flex-1 flex-col", children: [_jsx("div", { children: _jsxs("div", { className: "flex justify-between text-base font-medium text-gray-900", children: [_jsx(Heading, { level: 3, className: buildClassesByJoining('font-extralight text-lg', classNames?.heading), children: _jsxs("div", { className: "flex items-center gap-2", children: [showLinkToProduct ? (_jsx(Button, { asLink: true, unstyled: true, href: productLink?.(product.product_name, product.variation_id), children: product.product_name })) : (_jsx("span", { children: product.product_name })), isProcessing &&
73
+ fallbackImageSrc, className: buildClassesByJoining('size-full object-contain', classNames?.image) }), isTemporaryRow && (_jsx("div", { className: buildClassesByJoining('absolute inset-0 flex items-center justify-center bg-white bg-opacity-75', classNames?.temporaryRow), children: _jsx(Spinner, { className: buildClassesByJoining('h-8 w-8 text-[var(--primary)]', classNames?.spinner) }) }))] }), _jsxs("div", { className: "ml-4 flex flex-1 flex-col", children: [_jsx("div", { children: _jsxs("div", { className: "flex justify-between text-base font-medium text-gray-900", children: [_jsx(Heading, { level: 3, className: buildClassesByJoining('font-extralight text-lg', classNames?.heading), children: _jsxs("div", { className: "flex items-center gap-2", children: [showLinkToProduct ? (_jsx(Button, { asLink: true, unstyled: true, href: productLink?.(product.product_name, product.variation_id), children: product.product_name })) : (_jsx("span", { children: product.product_name })), isProcessing &&
74
74
  !isTemporaryRow && (_jsx(Spinner, { className: buildClassesByJoining('h-4 w-4 text-gray-400', classNames?.spinner) }))] }) }), _jsx(Price, { value: product.price, locale: locale, options: productPriceOptions, className: buildClassesByJoining('ml-4 font-light', classNames?.price) })] }) }), _jsxs("div", { className: "flex flex-1 items-end justify-between text-sm", children: [isTemporaryRow ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Spinner, { className: buildClassesByJoining('h-4 w-4 text-[var(--primary)]', classNames?.spinner) }), _jsx("p", { className: "text-gray-500 italic", children: translations.addingToBasket })] })) : showQuantityControls &&
75
75
  onQuantityChange ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("p", { className: buildClassesByJoining('text-gray-500 mr-2', classNames?.amount), children: translations.amount }), _jsxs("div", { className: "flex items-center", children: [_jsx("button", { type: "button", onClick: () => !isProcessing &&
76
76
  handleDecrement(product.variation_uuid, displayQuantity), disabled: isProcessing, className: buildClassesByJoining(`rounded-full p-1 text-gray-600 ${isProcessing
@@ -135,6 +135,8 @@ export type ProductProps = {
135
135
  variations: ProductVariation[];
136
136
  currentVariationId: string;
137
137
  selectedVariationGradient?: boolean;
138
+ variationsLimit?: number;
139
+ showAllVariations?: boolean;
138
140
  cartMode?: 'full' | 'add-only';
139
141
  onOpenBasket?: () => void;
140
142
  addToCartButtonCustomAction?: () => void | Promise<void>;
@@ -229,4 +231,4 @@ export type ProductProps = {
229
231
  stockAvailability?: React.ReactNode;
230
232
  stockAvailabilityClassName?: string;
231
233
  };
232
- export declare const ProductDetail: ({ name, price, discountPercent, description, detail, buttonText, className, specification, conversionToOtherUnit, hiddenStock, classNames, buttonClassName, descriptionClassName, product, currentQuantity, onQuantityChange, maxQuantity, disabled, badges, showVariations, variations, currentVariationId, cartMode, onOpenBasket, addToCartButtonCustomAction, selectedVariationGradient, showWishlistButton, isInWishlist, onWishlistToggle, enableMultipleWishlists, wishlists, onAddToWishlist, onRemoveFromWishlist, onCreateWishlist, productWishlistIds, isWishlistPending, isLogged, onWishlistTextClick, showWishlistDropdown, onCloseWishlistDropdown, onAddToSpecificWishlist, onRemoveFromSpecificWishlist, onCreateNewWishlistFromDropdown, translationsWishlistDropdown, classNamesWishlistDropdown, onShippingOptionsClick, isWatchdogEnabled, onWatchdogClick, onDemandClick, translations, locale, quantUnit, mainPriceFormatOptions, discountPriceFormatOptions, variationPriceFormatOptions, volumePriceFormatOptions, secondaryPrice, secondaryPriceFormatOptions, secondaryPriceClassName, secondaryQuantUnit, secondaryOmitMainQuantUnit, secondaryQuantUnitClassName, secondaryPriceRowClassName, mainPriceClassName, discountPriceClassName, variationPriceClassName, mainQuantUnitClassName, discountQuantUnitClassName, volumePriceClassName, volumeQuantUnitClassName, breakpointForFreeShipping, stockAvailability, stockAvailabilityClassName, }: ProductProps) => import("react/jsx-runtime").JSX.Element | null;
234
+ export declare const ProductDetail: ({ name, price, discountPercent, description, detail, buttonText, className, specification, conversionToOtherUnit, hiddenStock, classNames, buttonClassName, descriptionClassName, product, currentQuantity, onQuantityChange, maxQuantity, disabled, badges, showVariations, variations, currentVariationId, cartMode, onOpenBasket, addToCartButtonCustomAction, selectedVariationGradient, variationsLimit, showAllVariations, showWishlistButton, isInWishlist, onWishlistToggle, enableMultipleWishlists, wishlists, onAddToWishlist, onRemoveFromWishlist, onCreateWishlist, productWishlistIds, isWishlistPending, isLogged, onWishlistTextClick, showWishlistDropdown, onCloseWishlistDropdown, onAddToSpecificWishlist, onRemoveFromSpecificWishlist, onCreateNewWishlistFromDropdown, translationsWishlistDropdown, classNamesWishlistDropdown, onShippingOptionsClick, isWatchdogEnabled, onWatchdogClick, onDemandClick, translations, locale, quantUnit, mainPriceFormatOptions, discountPriceFormatOptions, variationPriceFormatOptions, volumePriceFormatOptions, secondaryPrice, secondaryPriceFormatOptions, secondaryPriceClassName, secondaryQuantUnit, secondaryOmitMainQuantUnit, secondaryQuantUnitClassName, secondaryPriceRowClassName, mainPriceClassName, discountPriceClassName, variationPriceClassName, mainQuantUnitClassName, discountQuantUnitClassName, volumePriceClassName, volumeQuantUnitClassName, breakpointForFreeShipping, stockAvailability, stockAvailabilityClassName, }: ProductProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -91,7 +91,7 @@ classNames = {
91
91
  },
92
92
  }, buttonClassName = '', descriptionClassName = '',
93
93
  // Cart props
94
- product, currentQuantity = 0, onQuantityChange, maxQuantity = 99, disabled = false, badges = [], showVariations = false, variations = [], currentVariationId, cartMode = 'full', onOpenBasket, addToCartButtonCustomAction, selectedVariationGradient = false,
94
+ product, currentQuantity = 0, onQuantityChange, maxQuantity = 99, disabled = false, badges = [], showVariations = false, variations = [], currentVariationId, cartMode = 'full', onOpenBasket, addToCartButtonCustomAction, selectedVariationGradient = false, variationsLimit = 6, showAllVariations = false,
95
95
  // Wishlist props
96
96
  showWishlistButton = false, isInWishlist = false, onWishlistToggle, enableMultipleWishlists = false, wishlists = [], onAddToWishlist, onRemoveFromWishlist, onCreateWishlist, productWishlistIds = [], isWishlistPending = false, isLogged = false, onWishlistTextClick,
97
97
  // Wishlist dropdown props
@@ -178,10 +178,9 @@ mainPriceFormatOptions, discountPriceFormatOptions, variationPriceFormatOptions,
178
178
  return 1;
179
179
  return 0;
180
180
  });
181
- const numberOfVisibleVariations = 6;
182
- const visibleVariations = showAll
181
+ const visibleVariations = showAllVariations || showAll
183
182
  ? sortedVariations
184
- : sortedVariations.slice(0, numberOfVisibleVariations);
183
+ : sortedVariations.slice(0, variationsLimit);
185
184
  if (!product) {
186
185
  return null;
187
186
  }
@@ -241,8 +240,9 @@ mainPriceFormatOptions, discountPriceFormatOptions, variationPriceFormatOptions,
241
240
  ?.variationEan), children: [translations.EAN, ":", ' ', variation.ean] })), _jsx(Price, { value: variation.price, locale: locale, options: variationPriceFormatOptions ||
242
241
  mainPriceFormatOptions, className: buildClassesByJoining('font-semibold text-lg', variationPriceClassName, classNames
243
242
  ?.variations
244
- ?.variationPrice) })] })] }, variation.id))) }), sortedVariations.length >
245
- numberOfVisibleVariations && (_jsx("button", { type: "button", onClick: () => setShowAll(!showAll), className: buildClassesByJoining('mt-3 text-sm font-medium text-green-700 hover:underline', classNames?.variations
243
+ ?.variationPrice) })] })] }, variation.id))) }), !showAllVariations &&
244
+ sortedVariations.length >
245
+ variationsLimit && (_jsx("button", { type: "button", onClick: () => setShowAll(!showAll), className: buildClassesByJoining('mt-3 text-sm font-medium text-green-700 hover:underline', classNames?.variations
246
246
  ?.variationShowAll), children: showAll
247
247
  ? translations.showLessVariations
248
248
  : translations.showMoreVariations }))] })), _jsxs("div", { className: "mt-3", children: [_jsx(Heading, { level: 2, className: "sr-only", children: "Product information" }), _jsxs("div", { children: [_jsx(Price, { value: price, locale: locale, options: mainPriceFormatOptions, className: buildClassesByJoining('text-3xl tracking-tight font-semibold text-[var(--primary)]', mainPriceClassName, classNames?.price?.mainPrice), quantUnit: quantUnit, quantUnitClassName: buildClassesByJoining('text-3xl tracking-tight font-semibold text-black', mainQuantUnitClassName, classNames?.price?.mainQuantUnit) }), secondaryPrice !== undefined && (_jsx("div", { className: buildClassesByJoining('mt-0.5', classNames?.price
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@q2devel/q2-storybook",
3
- "version": "1.0.199",
3
+ "version": "1.0.201",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",