@commercelayer/react-components 2.47.1 → 2.48.3

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.
@@ -1,7 +1,7 @@
1
1
  import { FunctionComponent, PropsWithoutRef, ReactNode } from 'react';
2
2
  import { FunctionChildren } from '../typings/index';
3
3
  import { AddToCartReturn } from '../reducers/OrderReducer';
4
- import { VariantOptions } from './VariantSelector';
4
+ import { VariantOption } from './VariantSelector';
5
5
  declare type ChildrenProps = {
6
6
  handleClick: () => AddToCartReturn;
7
7
  } & Omit<AddToCartButtonProps, 'children'>;
@@ -14,7 +14,7 @@ declare type AddToCartButtonProps = {
14
14
  bundleCode?: string;
15
15
  disabled?: boolean;
16
16
  skuListId?: string;
17
- lineItem?: VariantOptions['lineItem'];
17
+ lineItem?: VariantOption['lineItem'];
18
18
  } & PropsWithoutRef<JSX.IntrinsicElements['button']>;
19
19
  declare const AddToCartButton: FunctionComponent<AddToCartButtonProps>;
20
20
  export default AddToCartButton;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});const tslib_1=require("tslib");const jsx_runtime_1=require("react/jsx-runtime");const react_1=require("react");const Parent_1=(0,tslib_1.__importDefault)(require("./utils/Parent"));const OrderContext_1=(0,tslib_1.__importDefault)(require("../context/OrderContext"));const lodash_1=require("lodash");const ItemContext_1=(0,tslib_1.__importDefault)(require("../context/ItemContext"));const getCurrentItemKey_1=(0,tslib_1.__importDefault)(require("../utils/getCurrentItemKey"));const components_1=(0,tslib_1.__importDefault)(require("../config/components"));const SkuListsContext_1=(0,tslib_1.__importDefault)(require("../context/SkuListsContext"));const ExternalFunctionContext_1=(0,tslib_1.__importDefault)(require("../context/ExternalFunctionContext"));const isFunction_1=(0,tslib_1.__importDefault)(require("lodash/isFunction"));const propTypes=components_1.default.AddToCartButton.propTypes;const defaultProps=components_1.default.AddToCartButton.defaultProps;const displayName=components_1.default.AddToCartButton.displayName;const AddToCartButton=t=>{var e;const{label:o="Add to cart",children:n,skuCode:s,bundleCode:r,disabled:i,skuListId:u,lineItem:d}=t,a=(0,tslib_1.__rest)(t,["label","children","skuCode","bundleCode","disabled","skuListId","lineItem"]);const{addToCart:l,orderId:c,getOrder:_,setOrderErrors:p}=(0,react_1.useContext)(OrderContext_1.default);const{url:m,callExternalFunction:C}=(0,react_1.useContext)(ExternalFunctionContext_1.default);const{item:x,items:f,quantity:b,option:y,prices:h,lineItems:I,lineItem:q,skuCode:k}=(0,react_1.useContext)(ItemContext_1.default);const{skuLists:T}=(0,react_1.useContext)(SkuListsContext_1.default);const v=!(0,lodash_1.isEmpty)(f)&&s?(e=f[s])===null||e===void 0?void 0:e.code:s||(0,getCurrentItemKey_1.default)(x)||k;const j=()=>{var t,e;const o=b[v];const n=y[v];const s=!(0,lodash_1.isEmpty)(d||q)?d||q:I[v];if(!(0,lodash_1.isEmpty)(T)&&u&&m){const t=b[u]||1;if((0,lodash_1.has)(T,u)){const e=T&&T[u].map((e=>({skuCode:e,quantity:t,_update_quantity:1})));return C({url:m,data:{resourceType:"orders",inputs:[{id:c,lineItems:e}]}}).then((t=>{_&&c&&_(c);return t})).catch((({response:t})=>{p&&p(t["data"]);return t}))}}return!m?l&&l({bundleCode:r,skuCode:v,skuId:(t=x[v])===null||t===void 0?void 0:t.id,quantity:o,option:n,lineItem:s}):C({url:m,data:{bundleCode:r,skuCode:v,skuId:(e=x[v])===null||e===void 0?void 0:e.id,quantity:o,option:n,lineItem:s}}).then((t=>{_&&c&&_(c);return t})).catch((({response:t})=>{p&&p(t["data"]);return t}))};const A=!(0,lodash_1.isEmpty)(T)||u?false:i||!h[v]||!v;const E=Object.assign({handleClick:j,disabled:i||A,label:o},t);return n?(0,jsx_runtime_1.jsx)(Parent_1.default,Object.assign({},E,{children:n}),void 0):(0,jsx_runtime_1.jsx)("button",Object.assign({},a,{disabled:A,onClick:j},{children:(0,isFunction_1.default)(o)?o():o}),void 0)};AddToCartButton.propTypes=propTypes;AddToCartButton.defaultProps=defaultProps;AddToCartButton.displayName=displayName;exports.default=AddToCartButton;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});const tslib_1=require("tslib");const jsx_runtime_1=require("react/jsx-runtime");const react_1=require("react");const Parent_1=(0,tslib_1.__importDefault)(require("./utils/Parent"));const OrderContext_1=(0,tslib_1.__importDefault)(require("../context/OrderContext"));const lodash_1=require("lodash");const ItemContext_1=(0,tslib_1.__importDefault)(require("../context/ItemContext"));const getCurrentItemKey_1=(0,tslib_1.__importDefault)(require("../utils/getCurrentItemKey"));const components_1=(0,tslib_1.__importDefault)(require("../config/components"));const SkuListsContext_1=(0,tslib_1.__importDefault)(require("../context/SkuListsContext"));const ExternalFunctionContext_1=(0,tslib_1.__importDefault)(require("../context/ExternalFunctionContext"));const isFunction_1=(0,tslib_1.__importDefault)(require("lodash/isFunction"));const propTypes=components_1.default.AddToCartButton.propTypes;const defaultProps=components_1.default.AddToCartButton.defaultProps;const displayName=components_1.default.AddToCartButton.displayName;const AddToCartButton=t=>{var e,o,n;const{label:s="Add to cart",children:r,skuCode:i,bundleCode:u,disabled:d,skuListId:a,lineItem:l}=t,c=(0,tslib_1.__rest)(t,["label","children","skuCode","bundleCode","disabled","skuListId","lineItem"]);const{addToCart:_,orderId:p,getOrder:m,setOrderErrors:C}=(0,react_1.useContext)(OrderContext_1.default);const{url:x,callExternalFunction:f}=(0,react_1.useContext)(ExternalFunctionContext_1.default);const{item:b,items:y,quantity:h,option:q,prices:I,lineItems:k,lineItem:v,skuCode:T}=(0,react_1.useContext)(ItemContext_1.default);const{skuLists:j}=(0,react_1.useContext)(SkuListsContext_1.default);const A=!(0,lodash_1.isEmpty)(y)&&i?(e=y[i])===null||e===void 0?void 0:e.code:i||(0,getCurrentItemKey_1.default)(b)||T;const E=((n=(o=b[A])===null||o===void 0?void 0:o.inventory)===null||n===void 0?void 0:n.quantity)||0;const O=()=>{var t,e;const o=h[A];const n=q[A];const s=!(0,lodash_1.isEmpty)(l||v)?l||v:k[A];if(!(0,lodash_1.isEmpty)(j)&&a&&x){const t=h[a]||1;if((0,lodash_1.has)(j,a)){const e=j&&j[a].map((e=>({skuCode:e,quantity:t,_update_quantity:1})));return f({url:x,data:{resourceType:"orders",inputs:[{id:p,lineItems:e}]}}).then((t=>{m&&p&&m(p);return t})).catch((({response:t})=>{C&&C(t["data"]);return t}))}}return!x?_&&_({bundleCode:u,skuCode:A,skuId:(t=b[A])===null||t===void 0?void 0:t.id,quantity:o,option:n,lineItem:s}):f({url:x,data:{bundleCode:u,skuCode:A,skuId:(e=b[A])===null||e===void 0?void 0:e.id,quantity:o,option:n,lineItem:s}}).then((t=>{m&&p&&m(p);return t})).catch((({response:t})=>{C&&C(t["data"]);return t}))};const g=!(0,lodash_1.isEmpty)(j)||a?false:d||!I[A]||!A||E===0;const B=Object.assign({handleClick:O,disabled:d||g,label:s},t);return r?(0,jsx_runtime_1.jsx)(Parent_1.default,Object.assign({},B,{children:r}),void 0):(0,jsx_runtime_1.jsx)("button",Object.assign({},c,{disabled:g,onClick:O},{children:(0,isFunction_1.default)(s)?s():s}),void 0)};AddToCartButton.propTypes=propTypes;AddToCartButton.defaultProps=defaultProps;AddToCartButton.displayName=displayName;exports.default=AddToCartButton;
@@ -1,7 +1,10 @@
1
1
  import { FunctionComponent } from 'react';
2
2
  import { TimeFormat, FunctionChildren } from '../typings/index';
3
3
  import { DeliveryLeadTime } from '../reducers/AvailabilityReducer';
4
- declare type AvailabilityTemplateChildrenProps = FunctionChildren<Omit<AvailabilityTemplateProps, 'children'> & DeliveryLeadTime>;
4
+ declare type AvailabilityTemplateChildrenProps = FunctionChildren<Omit<AvailabilityTemplateProps, 'children'> & DeliveryLeadTime & {
5
+ text: string;
6
+ quantity: number;
7
+ }>;
5
8
  declare type AvailabilityTemplateProps = {
6
9
  children?: AvailabilityTemplateChildrenProps;
7
10
  timeFormat?: TimeFormat;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});const tslib_1=require("tslib");const jsx_runtime_1=require("react/jsx-runtime");const react_1=require("react");const AvailabilityContext_1=(0,tslib_1.__importDefault)(require("../context/AvailabilityContext"));const Parent_1=(0,tslib_1.__importDefault)(require("./utils/Parent"));const lodash_1=require("lodash");const components_1=(0,tslib_1.__importDefault)(require("../config/components"));const propTypes=components_1.default.AvailabilityTemplate.propTypes;const defaultProps=components_1.default.AvailabilityTemplate.defaultProps;const displayName=components_1.default.AvailabilityTemplate.displayName;const AvailabilityTemplate=t=>{const{timeFormat:e,showShippingMethodName:i,children:a}=t,s=(0,tslib_1.__rest)(t,["timeFormat","showShippingMethodName","children"]);const{min:l,max:o,shipping_method:n,quantity:p}=(0,react_1.useContext)(AvailabilityContext_1.default);const r=!(0,lodash_1.isEmpty)(l)&&e?l===null||l===void 0?void 0:l[e]:"";const c=!(0,lodash_1.isEmpty)(o)&&e?o===null||o===void 0?void 0:o[e]:"";const m=[];const u=i&&n?`with ${n.name}`:"";if(p&&p>0){m.push("Available");if(r&&c){m.push(`in ${r} - ${c} ${e} ${u}`)}}else if(p===0){m.push("Out of stock")}const _=Object.assign({min:l,max:o,shipping_method:n,quantity:p},t);return a?(0,jsx_runtime_1.jsx)(Parent_1.default,Object.assign({},_,{children:a}),void 0):(0,jsx_runtime_1.jsx)("p",Object.assign({},s,{children:m.join(" ")}),void 0)};AvailabilityTemplate.propTypes=propTypes;AvailabilityTemplate.defaultProps=defaultProps;AvailabilityTemplate.displayName=displayName;exports.default=AvailabilityTemplate;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});const tslib_1=require("tslib");const jsx_runtime_1=require("react/jsx-runtime");const react_1=require("react");const AvailabilityContext_1=(0,tslib_1.__importDefault)(require("../context/AvailabilityContext"));const Parent_1=(0,tslib_1.__importDefault)(require("./utils/Parent"));const lodash_1=require("lodash");const components_1=(0,tslib_1.__importDefault)(require("../config/components"));const propTypes=components_1.default.AvailabilityTemplate.propTypes;const defaultProps=components_1.default.AvailabilityTemplate.defaultProps;const displayName=components_1.default.AvailabilityTemplate.displayName;const AvailabilityTemplate=t=>{const{timeFormat:e,showShippingMethodName:i,children:a}=t,s=(0,tslib_1.__rest)(t,["timeFormat","showShippingMethodName","children"]);const{min:l,max:o,shipping_method:n,quantity:p}=(0,react_1.useContext)(AvailabilityContext_1.default);const r=!(0,lodash_1.isEmpty)(l)&&e?l===null||l===void 0?void 0:l[e]:"";const c=!(0,lodash_1.isEmpty)(o)&&e?o===null||o===void 0?void 0:o[e]:"";const m=[];const u=i&&n?`with ${n.name}`:"";if(p&&p>0){m.push("Available");if(r&&c){m.push(`in ${r} - ${c} ${e} ${u}`)}}else if(p===0){m.push("Out of stock")}const _=Object.assign({min:l,max:o,shipping_method:n,quantity:p,text:m.join(" ")},t);return a?(0,jsx_runtime_1.jsx)(Parent_1.default,Object.assign({},_,{children:a}),void 0):(0,jsx_runtime_1.jsx)("p",Object.assign({},s,{children:m.join(" ")}),void 0)};AvailabilityTemplate.propTypes=propTypes;AvailabilityTemplate.defaultProps=defaultProps;AvailabilityTemplate.displayName=displayName;exports.default=AvailabilityTemplate;
@@ -1,8 +1,9 @@
1
1
  import { FunctionComponent, ReactNode } from 'react';
2
+ import { VariantHandleCallback } from './utils/VariantTemplate';
2
3
  import { BaseSelectorType } from '../typings/index';
3
4
  import { FunctionChildren } from '../typings/index';
4
5
  import { VariantsObject, SetSkuCode } from '../reducers/VariantReducer';
5
- export interface VariantOptions {
6
+ export interface VariantOption {
6
7
  label: string;
7
8
  code: string;
8
9
  lineItem?: {
@@ -17,11 +18,12 @@ declare type VariantSelectorChildrenProps = FunctionChildren<Omit<VariantSelecto
17
18
  }>;
18
19
  declare type VariantSelectorProps = {
19
20
  children?: VariantSelectorChildrenProps;
20
- options: VariantOptions[];
21
+ options: VariantOption[];
21
22
  type?: BaseSelectorType;
22
23
  loader?: ReactNode;
23
24
  placeholder?: string;
24
25
  skuCode?: string;
26
+ handleCallback?: VariantHandleCallback;
25
27
  } & JSX.IntrinsicElements['input'] & JSX.IntrinsicElements['select'];
26
28
  declare const VariantSelector: FunctionComponent<VariantSelectorProps>;
27
29
  export default VariantSelector;
@@ -2,7 +2,7 @@ import { FunctionComponent, ReactNode } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { BaseSelectorType } from '../../typings/index';
4
4
  import { VariantsObject, SetSkuCode } from '../../reducers/VariantReducer';
5
- import { VariantOptions } from '../VariantSelector';
5
+ import { VariantOption } from '../VariantSelector';
6
6
  export declare const propTypes: {
7
7
  variants: PropTypes.Validator<any>;
8
8
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
@@ -21,14 +21,16 @@ export declare const propTypes: {
21
21
  placeholder: PropTypes.Requireable<string>;
22
22
  skuCode: PropTypes.Requireable<string>;
23
23
  };
24
+ export declare type VariantHandleCallback = (variant: VariantOption) => void;
24
25
  export declare type VariantTemplateProps = {
25
26
  variants: VariantsObject | Record<string, any>;
26
27
  handleChange?: SetSkuCode;
27
- options: VariantOptions[];
28
+ options: VariantOption[];
28
29
  type?: BaseSelectorType;
29
30
  loader?: ReactNode;
30
31
  placeholder?: string;
31
32
  skuCode?: string;
33
+ handleCallback?: VariantHandleCallback;
32
34
  } & JSX.IntrinsicElements['input'] & JSX.IntrinsicElements['select'];
33
35
  declare const VariantTemplate: FunctionComponent<VariantTemplateProps>;
34
36
  export default VariantTemplate;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.propTypes=void 0;const tslib_1=require("tslib");const jsx_runtime_1=require("react/jsx-runtime");const react_1=require("react");const lodash_1=require("lodash");const prop_types_1=(0,tslib_1.__importDefault)(require("prop-types"));exports.propTypes={variants:prop_types_1.default.any.isRequired,onChange:prop_types_1.default.func,options:prop_types_1.default.arrayOf(prop_types_1.default.shape({label:prop_types_1.default.string.isRequired,code:prop_types_1.default.string.isRequired,lineItem:prop_types_1.default.shape({name:prop_types_1.default.string.isRequired,imageUrl:prop_types_1.default.string})}).isRequired).isRequired,name:prop_types_1.default.string,children:prop_types_1.default.func,type:prop_types_1.default.oneOf(["select","radio"]),loader:prop_types_1.default.element,placeholder:prop_types_1.default.string,skuCode:prop_types_1.default.string};const VariantTemplate=e=>{const{id:t,variants:s,type:r,placeholder:a,options:p,skuCode:i,handleChange:n}=e,o=(0,tslib_1.__rest)(e,["id","variants","type","placeholder","options","skuCode","handleChange"]);const d=(0,lodash_1.keys)(s).map(((e,a)=>{const d=i===e;return r==="select"?(0,jsx_runtime_1.jsx)("option",Object.assign({"data-sku-id":s[e].id,value:s[e].code},{children:p.length>0?p[a].label:s[e].name}),s[e].id):(0,jsx_runtime_1.jsxs)(react_1.Fragment,{children:[(0,jsx_runtime_1.jsx)("input",Object.assign({id:t&&`${t}-${a}`,defaultChecked:d,type:"radio",value:s[e].code,onChange:t=>n&&n(t.target.value,s[e].id)},o),void 0),p.length>0?p[a].label:s[e].name]},s[e].id)}));if(r==="select"){return(0,jsx_runtime_1.jsxs)("select",Object.assign({id:t,onChange:e=>{const t=e.target.value;const s=e.target.selectedIndex;const r=e.target[s].dataset.skuId;n&&n(t,r)},value:i||""},o,{children:[(0,jsx_runtime_1.jsx)("option",Object.assign({disabled:!!i},{children:a}),void 0),d]}),void 0)}return(0,jsx_runtime_1.jsx)(react_1.Fragment,{children:d},void 0)};VariantTemplate.propTypes=exports.propTypes;exports.default=VariantTemplate;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.propTypes=void 0;const tslib_1=require("tslib");const jsx_runtime_1=require("react/jsx-runtime");const react_1=require("react");const lodash_1=require("lodash");const prop_types_1=(0,tslib_1.__importDefault)(require("prop-types"));exports.propTypes={variants:prop_types_1.default.any.isRequired,onChange:prop_types_1.default.func,options:prop_types_1.default.arrayOf(prop_types_1.default.shape({label:prop_types_1.default.string.isRequired,code:prop_types_1.default.string.isRequired,lineItem:prop_types_1.default.shape({name:prop_types_1.default.string.isRequired,imageUrl:prop_types_1.default.string})}).isRequired).isRequired,name:prop_types_1.default.string,children:prop_types_1.default.func,type:prop_types_1.default.oneOf(["select","radio"]),loader:prop_types_1.default.element,placeholder:prop_types_1.default.string,skuCode:prop_types_1.default.string};const VariantTemplate=e=>{const{id:t,variants:s,type:a,placeholder:r,options:p,skuCode:i,handleChange:n,handleCallback:o}=e,l=(0,tslib_1.__rest)(e,["id","variants","type","placeholder","options","skuCode","handleChange","handleCallback"]);const d=(0,lodash_1.keys)(s).map(((e,r)=>{const d=i===e;const _=p.length>0?p[r].label:s[e].name;return a==="select"?(0,jsx_runtime_1.jsx)("option",Object.assign({"data-sku-id":s[e].id,"data-label":_,value:s[e].code},{children:_}),s[e].id):(0,jsx_runtime_1.jsxs)(react_1.Fragment,{children:[(0,jsx_runtime_1.jsx)("input",Object.assign({id:t&&`${t}-${r}`,defaultChecked:d,type:"radio",value:s[e].code,onChange:t=>{const a=t.target.value;n&&n(a,s[e].id);o&&o({code:a,label:_})}},l),void 0),_]},s[e].id)}));if(a==="select"){return(0,jsx_runtime_1.jsxs)("select",Object.assign({id:t,title:"Variant selector",onChange:e=>{const t=e.target.value;const s=e.target.selectedIndex;const a=e.target[s].dataset.skuId;const r=e.target[s].dataset.label;n&&n(t,a);o&&o({code:t,label:r})},value:i||""},l,{children:[(0,jsx_runtime_1.jsx)("option",Object.assign({disabled:!!i},{children:r}),void 0),d]}),void 0)}return(0,jsx_runtime_1.jsx)(react_1.Fragment,{children:d},void 0)};VariantTemplate.propTypes=exports.propTypes;exports.default=VariantTemplate;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getAvailability=exports.availabilityInitialState=void 0;const tslib_1=require("tslib");const baseReducer_1=(0,tslib_1.__importDefault)(require("../utils/baseReducer"));const getSdk_1=(0,tslib_1.__importDefault)(require("../utils/getSdk"));exports.availabilityInitialState={quantity:null,min:{days:0,hours:0},max:{days:0,hours:0},errors:[]};const getAvailability=async({skuCode:t,dispatch:i,config:e})=>{var s;const a=(0,getSdk_1.default)(e);try{const[e]=await a.skus.list({fields:{skus:["id"]},filters:{code_in:t}});const l=await a.skus.retrieve(e.id,{fields:{skus:["inventory"]}});const[o]=(s=l.inventory)===null||s===void 0?void 0:s.levels;const[r]=o===null||o===void 0?void 0:o.delivery_lead_times;i({type:"setAvailability",payload:Object.assign(Object.assign({},r),{quantity:o===null||o===void 0?void 0:o.quantity})})}catch(t){console.error("Get SKU availability",t)}};exports.getAvailability=getAvailability;const typeAction=["setAvailability","setErrors"];const availabilityReducer=(t,i)=>(0,baseReducer_1.default)(t,i,typeAction);exports.default=availabilityReducer;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getAvailability=exports.availabilityInitialState=void 0;const tslib_1=require("tslib");const baseReducer_1=(0,tslib_1.__importDefault)(require("../utils/baseReducer"));const getSdk_1=(0,tslib_1.__importDefault)(require("../utils/getSdk"));exports.availabilityInitialState={quantity:null,min:{days:0,hours:0},max:{days:0,hours:0},errors:[]};const getAvailability=async({skuCode:t,dispatch:i,config:e})=>{var s;const a=(0,getSdk_1.default)(e);try{const[e]=await a.skus.list({fields:{skus:["id"]},filters:{code_in:t}});const l=await a.skus.retrieve(e.id,{fields:{skus:["inventory"]}});const[r]=((s=l.inventory)===null||s===void 0?void 0:s.levels)||[];const[o]=(r===null||r===void 0?void 0:r.delivery_lead_times)||[];i({type:"setAvailability",payload:Object.assign(Object.assign({},o),{quantity:l.inventory.quantity})})}catch(t){console.error("Get SKU availability",t)}};exports.getAvailability=getAvailability;const typeAction=["setAvailability","setErrors"];const availabilityReducer=(t,i)=>(0,baseReducer_1.default)(t,i,typeAction);exports.default=availabilityReducer;
@@ -1,5 +1,5 @@
1
1
  import { Sku } from '@commercelayer/sdk';
2
- import { VariantOptions } from '../components/VariantSelector';
2
+ import { VariantOption } from '../components/VariantSelector';
3
3
  import { Dispatch } from 'react';
4
4
  import { CommerceLayerConfig } from '../context/CommerceLayerContext';
5
5
  import { Items, CustomLineItem, SetCustomLineItems } from './ItemReducer';
@@ -15,7 +15,7 @@ export interface SetSkuCodeVariant {
15
15
  (params: SetSkuCodeVariantParams): void;
16
16
  }
17
17
  declare type SetVariantSkuCodesParams = {
18
- skuCodes: VariantOptions[];
18
+ skuCodes: VariantOption[];
19
19
  dispatch: Dispatch<VariantAction>;
20
20
  setCustomLineItems?: SetCustomLineItems;
21
21
  };
@@ -37,7 +37,7 @@ export interface VariantPayload {
37
37
  currentQuantity?: number;
38
38
  currentPrices?: Sku[];
39
39
  setSkuCode?: SetSkuCode;
40
- setSkuCodes?: (skuCodes: VariantOptions[]) => void;
40
+ setSkuCodes?: (skuCodes: VariantOption[]) => void;
41
41
  }
42
42
  export interface VariantState extends VariantPayload {
43
43
  skuCodes: string[];
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.variantInitialState=exports.unsetVariantState=exports.getVariants=exports.setSkuCode=exports.setVariantSkuCodes=void 0;const tslib_1=require("tslib");const baseReducer_1=(0,tslib_1.__importDefault)(require("../utils/baseReducer"));const getSkus_1=(0,tslib_1.__importDefault)(require("../utils/getSkus"));const lodash_1=require("lodash");const getSdk_1=(0,tslib_1.__importDefault)(require("../utils/getSdk"));const setVariantSkuCodes=({skuCodes:t,dispatch:e,setCustomLineItems:s})=>{const a={};const r=t.map((t=>{if((0,lodash_1.has)(t,"lineItem")){a[t.code]=t.lineItem}return t.code}));if(!(0,lodash_1.isEmpty)(a)){s&&s(a)}e({type:"setSkuCodes",payload:{skuCodes:r}})};exports.setVariantSkuCodes=setVariantSkuCodes;const setSkuCode=t=>{const{id:e,code:s,config:a,setItem:r,dispatch:o}=t;if(e){const t=(0,getSdk_1.default)(a);t.skus.retrieve(e,{include:["sku_options"]}).then((t=>{r&&r({[`${s}`]:t})})).catch((t=>{debugger;o({type:"setErrors",payload:{errors:t}})}))}};exports.setSkuCode=setSkuCode;const getVariants=t=>{const{config:e,state:s,skuCode:a,dispatch:r,setItem:o,filters:i}=t;const n=(0,getSdk_1.default)(e);n.skus.list({filters:Object.assign({code_in:s.skuCodes.join(",")},i)}).then((t=>{const s=(0,getSkus_1.default)(t);if(a){(0,exports.setSkuCode)({code:s[a].code,id:s[a].id,config:e,dispatch:r,setItem:o})}r({type:"setVariants",payload:{variants:s}});r({type:"setLoading",payload:{loading:false}})})).catch((t=>{r({type:"setErrors",payload:{errors:t}})}))};exports.getVariants=getVariants;const unsetVariantState=t=>{t({type:"setSkuCode",payload:{skuCode:""}});t({type:"setVariants",payload:{variants:{}}});t({type:"setLoading",payload:{loading:false}})};exports.unsetVariantState=unsetVariantState;exports.variantInitialState={loading:false,variants:{},skuCodes:[],skuCode:"",errors:[],currentSkuId:"",currentSkuInventory:{available:false,quantity:0,levels:[]},currentQuantity:1,currentPrices:[]};const actionType=["setLoading","setVariants","setSkuCodes","setSkuCode","setCurrentSkuId","setCurrentSkuInventory","setCurrentPrices","setErrors"];const variantReducer=(t,e)=>(0,baseReducer_1.default)(t,e,actionType);exports.default=variantReducer;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.variantInitialState=exports.unsetVariantState=exports.getVariants=exports.setSkuCode=exports.setVariantSkuCodes=void 0;const tslib_1=require("tslib");const baseReducer_1=(0,tslib_1.__importDefault)(require("../utils/baseReducer"));const getSkus_1=(0,tslib_1.__importDefault)(require("../utils/getSkus"));const lodash_1=require("lodash");const getSdk_1=(0,tslib_1.__importDefault)(require("../utils/getSdk"));const setVariantSkuCodes=({skuCodes:e,dispatch:t,setCustomLineItems:s})=>{const a={};const r=e.map((e=>{if((0,lodash_1.has)(e,"lineItem")){a[e.code]=e.lineItem}return e.code}));if(!(0,lodash_1.isEmpty)(a)){s&&s(a)}t({type:"setSkuCodes",payload:{skuCodes:r}})};exports.setVariantSkuCodes=setVariantSkuCodes;const setSkuCode=e=>{const{id:t,code:s,config:a,setItem:r,dispatch:o}=e;if(t){const e=(0,getSdk_1.default)(a);e.skus.retrieve(t,{include:["sku_options"]}).then((e=>{r&&r({[`${s}`]:e})})).catch((e=>{debugger;o({type:"setErrors",payload:{errors:e}})}))}};exports.setSkuCode=setSkuCode;const getVariants=e=>{const{config:t,state:s,skuCode:a,dispatch:r,setItem:o,filters:i}=e;const n=(0,getSdk_1.default)(t);n.skus.list({filters:Object.assign({code_in:s.skuCodes.join(",")},i)}).then((e=>{const i=(0,getSkus_1.default)(e,s.skuCodes);if(a){(0,exports.setSkuCode)({code:i[a].code,id:i[a].id,config:t,dispatch:r,setItem:o})}r({type:"setVariants",payload:{variants:i}});r({type:"setLoading",payload:{loading:false}})})).catch((e=>{r({type:"setErrors",payload:{errors:e}})}))};exports.getVariants=getVariants;const unsetVariantState=e=>{e({type:"setSkuCode",payload:{skuCode:""}});e({type:"setVariants",payload:{variants:{}}});e({type:"setLoading",payload:{loading:false}})};exports.unsetVariantState=unsetVariantState;exports.variantInitialState={loading:false,variants:{},skuCodes:[],skuCode:"",errors:[],currentSkuId:"",currentSkuInventory:{available:false,quantity:0,levels:[]},currentQuantity:1,currentPrices:[]};const actionType=["setLoading","setVariants","setSkuCodes","setSkuCode","setCurrentSkuId","setCurrentSkuInventory","setCurrentPrices","setErrors"];const variantReducer=(e,t)=>(0,baseReducer_1.default)(e,t,actionType);exports.default=variantReducer;
@@ -1,3 +1,3 @@
1
1
  import { Sku } from '@commercelayer/sdk';
2
- declare const getSkus: (skus: Sku[]) => Record<string, any>;
2
+ declare const getSkus: (skus: Sku[], sortBy: string[]) => Record<string, any>;
3
3
  export default getSkus;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});const getSkus=e=>{const t={};e.forEach((e=>{if(e===null||e===void 0?void 0:e.code)t[e.code]=e}));return t};exports.default=getSkus;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});const getSkus=(e,t)=>{const o={};t.forEach((t=>{e.forEach((e=>{if((e===null||e===void 0?void 0:e.code)===t)o[e.code]=e}))}));return o};exports.default=getSkus;
@@ -1,7 +1,7 @@
1
1
  import { FunctionComponent, PropsWithoutRef, ReactNode } from 'react';
2
2
  import { FunctionChildren } from '../typings/index';
3
3
  import { AddToCartReturn } from '../reducers/OrderReducer';
4
- import { VariantOptions } from './VariantSelector';
4
+ import { VariantOption } from './VariantSelector';
5
5
  declare type ChildrenProps = {
6
6
  handleClick: () => AddToCartReturn;
7
7
  } & Omit<AddToCartButtonProps, 'children'>;
@@ -14,7 +14,7 @@ declare type AddToCartButtonProps = {
14
14
  bundleCode?: string;
15
15
  disabled?: boolean;
16
16
  skuListId?: string;
17
- lineItem?: VariantOptions['lineItem'];
17
+ lineItem?: VariantOption['lineItem'];
18
18
  } & PropsWithoutRef<JSX.IntrinsicElements['button']>;
19
19
  declare const AddToCartButton: FunctionComponent<AddToCartButtonProps>;
20
20
  export default AddToCartButton;
@@ -1 +1 @@
1
- import{__rest}from"tslib";import{jsx as _jsx}from"react/jsx-runtime";import{useContext}from"react";import Parent from"./utils/Parent";import OrderContext from"../context/OrderContext";import{isEmpty,has}from"lodash";import ItemContext from"../context/ItemContext";import getCurrentItemKey from"../utils/getCurrentItemKey";import components from"../config/components";import SkuListsContext from"../context/SkuListsContext";import ExternalFunctionContext from"../context/ExternalFunctionContext";import isFunction from"lodash/isFunction";const propTypes=components.AddToCartButton.propTypes;const defaultProps=components.AddToCartButton.defaultProps;const displayName=components.AddToCartButton.displayName;const AddToCartButton=t=>{var e;const{label:o="Add to cart",children:n,skuCode:s,bundleCode:r,disabled:d,skuListId:i,lineItem:u}=t,a=__rest(t,["label","children","skuCode","bundleCode","disabled","skuListId","lineItem"]);const{addToCart:l,orderId:c,getOrder:m,setOrderErrors:p}=useContext(OrderContext);const{url:C,callExternalFunction:x}=useContext(ExternalFunctionContext);const{item:y,items:f,quantity:I,option:b,prices:k,lineItems:T,lineItem:h,skuCode:v}=useContext(ItemContext);const{skuLists:E}=useContext(SkuListsContext);const A=!isEmpty(f)&&s?(e=f[s])===null||e===void 0?void 0:e.code:s||getCurrentItemKey(y)||v;const _=()=>{var t,e;const o=I[A];const n=b[A];const s=!isEmpty(u||h)?u||h:T[A];if(!isEmpty(E)&&i&&C){const t=I[i]||1;if(has(E,i)){const e=E&&E[i].map((e=>({skuCode:e,quantity:t,_update_quantity:1})));return x({url:C,data:{resourceType:"orders",inputs:[{id:c,lineItems:e}]}}).then((t=>{m&&c&&m(c);return t})).catch((({response:t})=>{p&&p(t["data"]);return t}))}}return!C?l&&l({bundleCode:r,skuCode:A,skuId:(t=y[A])===null||t===void 0?void 0:t.id,quantity:o,option:n,lineItem:s}):x({url:C,data:{bundleCode:r,skuCode:A,skuId:(e=y[A])===null||e===void 0?void 0:e.id,quantity:o,option:n,lineItem:s}}).then((t=>{m&&c&&m(c);return t})).catch((({response:t})=>{p&&p(t["data"]);return t}))};const g=!isEmpty(E)||i?false:d||!k[A]||!A;const j=Object.assign({handleClick:_,disabled:d||g,label:o},t);return n?_jsx(Parent,Object.assign({},j,{children:n}),void 0):_jsx("button",Object.assign({},a,{disabled:g,onClick:_},{children:isFunction(o)?o():o}),void 0)};AddToCartButton.propTypes=propTypes;AddToCartButton.defaultProps=defaultProps;AddToCartButton.displayName=displayName;export default AddToCartButton;
1
+ import{__rest}from"tslib";import{jsx as _jsx}from"react/jsx-runtime";import{useContext}from"react";import Parent from"./utils/Parent";import OrderContext from"../context/OrderContext";import{isEmpty,has}from"lodash";import ItemContext from"../context/ItemContext";import getCurrentItemKey from"../utils/getCurrentItemKey";import components from"../config/components";import SkuListsContext from"../context/SkuListsContext";import ExternalFunctionContext from"../context/ExternalFunctionContext";import isFunction from"lodash/isFunction";const propTypes=components.AddToCartButton.propTypes;const defaultProps=components.AddToCartButton.defaultProps;const displayName=components.AddToCartButton.displayName;const AddToCartButton=t=>{var o,e,n;const{label:s="Add to cart",children:r,skuCode:i,bundleCode:d,disabled:u,skuListId:a,lineItem:l}=t,c=__rest(t,["label","children","skuCode","bundleCode","disabled","skuListId","lineItem"]);const{addToCart:m,orderId:p,getOrder:C,setOrderErrors:x}=useContext(OrderContext);const{url:y,callExternalFunction:f}=useContext(ExternalFunctionContext);const{item:I,items:b,quantity:k,option:v,prices:T,lineItems:h,lineItem:E,skuCode:A}=useContext(ItemContext);const{skuLists:_}=useContext(SkuListsContext);const g=!isEmpty(b)&&i?(o=b[i])===null||o===void 0?void 0:o.code:i||getCurrentItemKey(I)||A;const j=((n=(e=I[g])===null||e===void 0?void 0:e.inventory)===null||n===void 0?void 0:n.quantity)||0;const B=()=>{var t,o;const e=k[g];const n=v[g];const s=!isEmpty(l||E)?l||E:h[g];if(!isEmpty(_)&&a&&y){const t=k[a]||1;if(has(_,a)){const o=_&&_[a].map((o=>({skuCode:o,quantity:t,_update_quantity:1})));return f({url:y,data:{resourceType:"orders",inputs:[{id:p,lineItems:o}]}}).then((t=>{C&&p&&C(p);return t})).catch((({response:t})=>{x&&x(t["data"]);return t}))}}return!y?m&&m({bundleCode:d,skuCode:g,skuId:(t=I[g])===null||t===void 0?void 0:t.id,quantity:e,option:n,lineItem:s}):f({url:y,data:{bundleCode:d,skuCode:g,skuId:(o=I[g])===null||o===void 0?void 0:o.id,quantity:e,option:n,lineItem:s}}).then((t=>{C&&p&&C(p);return t})).catch((({response:t})=>{x&&x(t["data"]);return t}))};const O=!isEmpty(_)||a?false:u||!T[g]||!g||j===0;const F=Object.assign({handleClick:B,disabled:u||O,label:s},t);return r?_jsx(Parent,Object.assign({},F,{children:r}),void 0):_jsx("button",Object.assign({},c,{disabled:O,onClick:B},{children:isFunction(s)?s():s}),void 0)};AddToCartButton.propTypes=propTypes;AddToCartButton.defaultProps=defaultProps;AddToCartButton.displayName=displayName;export default AddToCartButton;
@@ -1,7 +1,10 @@
1
1
  import { FunctionComponent } from 'react';
2
2
  import { TimeFormat, FunctionChildren } from '../typings/index';
3
3
  import { DeliveryLeadTime } from '../reducers/AvailabilityReducer';
4
- declare type AvailabilityTemplateChildrenProps = FunctionChildren<Omit<AvailabilityTemplateProps, 'children'> & DeliveryLeadTime>;
4
+ declare type AvailabilityTemplateChildrenProps = FunctionChildren<Omit<AvailabilityTemplateProps, 'children'> & DeliveryLeadTime & {
5
+ text: string;
6
+ quantity: number;
7
+ }>;
5
8
  declare type AvailabilityTemplateProps = {
6
9
  children?: AvailabilityTemplateChildrenProps;
7
10
  timeFormat?: TimeFormat;
@@ -1 +1 @@
1
- import{__rest}from"tslib";import{jsx as _jsx}from"react/jsx-runtime";import{useContext}from"react";import AvailabilityContext from"../context/AvailabilityContext";import Parent from"./utils/Parent";import{isEmpty}from"lodash";import components from"../config/components";const propTypes=components.AvailabilityTemplate.propTypes;const defaultProps=components.AvailabilityTemplate.defaultProps;const displayName=components.AvailabilityTemplate.displayName;const AvailabilityTemplate=t=>{const{timeFormat:i,showShippingMethodName:e,children:o}=t,a=__rest(t,["timeFormat","showShippingMethodName","children"]);const{min:s,max:p,shipping_method:l,quantity:n}=useContext(AvailabilityContext);const m=!isEmpty(s)&&i?s===null||s===void 0?void 0:s[i]:"";const r=!isEmpty(p)&&i?p===null||p===void 0?void 0:p[i]:"";const c=[];const d=e&&l?`with ${l.name}`:"";if(n&&n>0){c.push("Available");if(m&&r){c.push(`in ${m} - ${r} ${i} ${d}`)}}else if(n===0){c.push("Out of stock")}const y=Object.assign({min:s,max:p,shipping_method:l,quantity:n},t);return o?_jsx(Parent,Object.assign({},y,{children:o}),void 0):_jsx("p",Object.assign({},a,{children:c.join(" ")}),void 0)};AvailabilityTemplate.propTypes=propTypes;AvailabilityTemplate.defaultProps=defaultProps;AvailabilityTemplate.displayName=displayName;export default AvailabilityTemplate;
1
+ import{__rest}from"tslib";import{jsx as _jsx}from"react/jsx-runtime";import{useContext}from"react";import AvailabilityContext from"../context/AvailabilityContext";import Parent from"./utils/Parent";import{isEmpty}from"lodash";import components from"../config/components";const propTypes=components.AvailabilityTemplate.propTypes;const defaultProps=components.AvailabilityTemplate.defaultProps;const displayName=components.AvailabilityTemplate.displayName;const AvailabilityTemplate=t=>{const{timeFormat:i,showShippingMethodName:e,children:o}=t,a=__rest(t,["timeFormat","showShippingMethodName","children"]);const{min:s,max:p,shipping_method:n,quantity:l}=useContext(AvailabilityContext);const m=!isEmpty(s)&&i?s===null||s===void 0?void 0:s[i]:"";const r=!isEmpty(p)&&i?p===null||p===void 0?void 0:p[i]:"";const c=[];const d=e&&n?`with ${n.name}`:"";if(l&&l>0){c.push("Available");if(m&&r){c.push(`in ${m} - ${r} ${i} ${d}`)}}else if(l===0){c.push("Out of stock")}const y=Object.assign({min:s,max:p,shipping_method:n,quantity:l,text:c.join(" ")},t);return o?_jsx(Parent,Object.assign({},y,{children:o}),void 0):_jsx("p",Object.assign({},a,{children:c.join(" ")}),void 0)};AvailabilityTemplate.propTypes=propTypes;AvailabilityTemplate.defaultProps=defaultProps;AvailabilityTemplate.displayName=displayName;export default AvailabilityTemplate;
@@ -1,8 +1,9 @@
1
1
  import { FunctionComponent, ReactNode } from 'react';
2
+ import { VariantHandleCallback } from './utils/VariantTemplate';
2
3
  import { BaseSelectorType } from '../typings/index';
3
4
  import { FunctionChildren } from '../typings/index';
4
5
  import { VariantsObject, SetSkuCode } from '../reducers/VariantReducer';
5
- export interface VariantOptions {
6
+ export interface VariantOption {
6
7
  label: string;
7
8
  code: string;
8
9
  lineItem?: {
@@ -17,11 +18,12 @@ declare type VariantSelectorChildrenProps = FunctionChildren<Omit<VariantSelecto
17
18
  }>;
18
19
  declare type VariantSelectorProps = {
19
20
  children?: VariantSelectorChildrenProps;
20
- options: VariantOptions[];
21
+ options: VariantOption[];
21
22
  type?: BaseSelectorType;
22
23
  loader?: ReactNode;
23
24
  placeholder?: string;
24
25
  skuCode?: string;
26
+ handleCallback?: VariantHandleCallback;
25
27
  } & JSX.IntrinsicElements['input'] & JSX.IntrinsicElements['select'];
26
28
  declare const VariantSelector: FunctionComponent<VariantSelectorProps>;
27
29
  export default VariantSelector;
@@ -2,7 +2,7 @@ import { FunctionComponent, ReactNode } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { BaseSelectorType } from '../../typings/index';
4
4
  import { VariantsObject, SetSkuCode } from '../../reducers/VariantReducer';
5
- import { VariantOptions } from '../VariantSelector';
5
+ import { VariantOption } from '../VariantSelector';
6
6
  export declare const propTypes: {
7
7
  variants: PropTypes.Validator<any>;
8
8
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
@@ -21,14 +21,16 @@ export declare const propTypes: {
21
21
  placeholder: PropTypes.Requireable<string>;
22
22
  skuCode: PropTypes.Requireable<string>;
23
23
  };
24
+ export declare type VariantHandleCallback = (variant: VariantOption) => void;
24
25
  export declare type VariantTemplateProps = {
25
26
  variants: VariantsObject | Record<string, any>;
26
27
  handleChange?: SetSkuCode;
27
- options: VariantOptions[];
28
+ options: VariantOption[];
28
29
  type?: BaseSelectorType;
29
30
  loader?: ReactNode;
30
31
  placeholder?: string;
31
32
  skuCode?: string;
33
+ handleCallback?: VariantHandleCallback;
32
34
  } & JSX.IntrinsicElements['input'] & JSX.IntrinsicElements['select'];
33
35
  declare const VariantTemplate: FunctionComponent<VariantTemplateProps>;
34
36
  export default VariantTemplate;
@@ -1 +1 @@
1
- import{__rest}from"tslib";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Fragment}from"react";import{keys}from"lodash";import PropTypes from"prop-types";export const propTypes={variants:PropTypes.any.isRequired,onChange:PropTypes.func,options:PropTypes.arrayOf(PropTypes.shape({label:PropTypes.string.isRequired,code:PropTypes.string.isRequired,lineItem:PropTypes.shape({name:PropTypes.string.isRequired,imageUrl:PropTypes.string})}).isRequired).isRequired,name:PropTypes.string,children:PropTypes.func,type:PropTypes.oneOf(["select","radio"]),loader:PropTypes.element,placeholder:PropTypes.string,skuCode:PropTypes.string};const VariantTemplate=e=>{const{id:s,variants:r,type:t,placeholder:o,options:a,skuCode:p,handleChange:i}=e,n=__rest(e,["id","variants","type","placeholder","options","skuCode","handleChange"]);const d=keys(r).map(((e,o)=>{const d=p===e;return t==="select"?_jsx("option",Object.assign({"data-sku-id":r[e].id,value:r[e].code},{children:a.length>0?a[o].label:r[e].name}),r[e].id):_jsxs(Fragment,{children:[_jsx("input",Object.assign({id:s&&`${s}-${o}`,defaultChecked:d,type:"radio",value:r[e].code,onChange:s=>i&&i(s.target.value,r[e].id)},n),void 0),a.length>0?a[o].label:r[e].name]},r[e].id)}));if(t==="select"){return _jsxs("select",Object.assign({id:s,onChange:e=>{const s=e.target.value;const r=e.target.selectedIndex;const t=e.target[r].dataset.skuId;i&&i(s,t)},value:p||""},n,{children:[_jsx("option",Object.assign({disabled:!!p},{children:o}),void 0),d]}),void 0)}return _jsx(Fragment,{children:d},void 0)};VariantTemplate.propTypes=propTypes;export default VariantTemplate;
1
+ import{__rest}from"tslib";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Fragment}from"react";import{keys}from"lodash";import PropTypes from"prop-types";export const propTypes={variants:PropTypes.any.isRequired,onChange:PropTypes.func,options:PropTypes.arrayOf(PropTypes.shape({label:PropTypes.string.isRequired,code:PropTypes.string.isRequired,lineItem:PropTypes.shape({name:PropTypes.string.isRequired,imageUrl:PropTypes.string})}).isRequired).isRequired,name:PropTypes.string,children:PropTypes.func,type:PropTypes.oneOf(["select","radio"]),loader:PropTypes.element,placeholder:PropTypes.string,skuCode:PropTypes.string};const VariantTemplate=e=>{const{id:s,variants:t,type:r,placeholder:a,options:o,skuCode:n,handleChange:p,handleCallback:i}=e,l=__rest(e,["id","variants","type","placeholder","options","skuCode","handleChange","handleCallback"]);const d=keys(t).map(((e,a)=>{const d=n===e;const c=o.length>0?o[a].label:t[e].name;return r==="select"?_jsx("option",Object.assign({"data-sku-id":t[e].id,"data-label":c,value:t[e].code},{children:c}),t[e].id):_jsxs(Fragment,{children:[_jsx("input",Object.assign({id:s&&`${s}-${a}`,defaultChecked:d,type:"radio",value:t[e].code,onChange:s=>{const r=s.target.value;p&&p(r,t[e].id);i&&i({code:r,label:c})}},l),void 0),c]},t[e].id)}));if(r==="select"){return _jsxs("select",Object.assign({id:s,title:"Variant selector",onChange:e=>{const s=e.target.value;const t=e.target.selectedIndex;const r=e.target[t].dataset.skuId;const a=e.target[t].dataset.label;p&&p(s,r);i&&i({code:s,label:a})},value:n||""},l,{children:[_jsx("option",Object.assign({disabled:!!n},{children:a}),void 0),d]}),void 0)}return _jsx(Fragment,{children:d},void 0)};VariantTemplate.propTypes=propTypes;export default VariantTemplate;
@@ -1 +1 @@
1
- import baseReducer from"../utils/baseReducer";import getSdk from"../utils/getSdk";export const availabilityInitialState={quantity:null,min:{days:0,hours:0},max:{days:0,hours:0},errors:[]};export const getAvailability=async({skuCode:t,dispatch:i,config:e})=>{var s;const a=getSdk(e);try{const[e]=await a.skus.list({fields:{skus:["id"]},filters:{code_in:t}});const o=await a.skus.retrieve(e.id,{fields:{skus:["inventory"]}});const[l]=(s=o.inventory)===null||s===void 0?void 0:s.levels;const[r]=l===null||l===void 0?void 0:l.delivery_lead_times;i({type:"setAvailability",payload:Object.assign(Object.assign({},r),{quantity:l===null||l===void 0?void 0:l.quantity})})}catch(t){console.error("Get SKU availability",t)}};const typeAction=["setAvailability","setErrors"];const availabilityReducer=(t,i)=>baseReducer(t,i,typeAction);export default availabilityReducer;
1
+ import baseReducer from"../utils/baseReducer";import getSdk from"../utils/getSdk";export const availabilityInitialState={quantity:null,min:{days:0,hours:0},max:{days:0,hours:0},errors:[]};export const getAvailability=async({skuCode:t,dispatch:i,config:e})=>{var s;const a=getSdk(e);try{const[e]=await a.skus.list({fields:{skus:["id"]},filters:{code_in:t}});const o=await a.skus.retrieve(e.id,{fields:{skus:["inventory"]}});const[l]=((s=o.inventory)===null||s===void 0?void 0:s.levels)||[];const[r]=(l===null||l===void 0?void 0:l.delivery_lead_times)||[];i({type:"setAvailability",payload:Object.assign(Object.assign({},r),{quantity:o.inventory.quantity})})}catch(t){console.error("Get SKU availability",t)}};const typeAction=["setAvailability","setErrors"];const availabilityReducer=(t,i)=>baseReducer(t,i,typeAction);export default availabilityReducer;
@@ -1,5 +1,5 @@
1
1
  import { Sku } from '@commercelayer/sdk';
2
- import { VariantOptions } from '../components/VariantSelector';
2
+ import { VariantOption } from '../components/VariantSelector';
3
3
  import { Dispatch } from 'react';
4
4
  import { CommerceLayerConfig } from '../context/CommerceLayerContext';
5
5
  import { Items, CustomLineItem, SetCustomLineItems } from './ItemReducer';
@@ -15,7 +15,7 @@ export interface SetSkuCodeVariant {
15
15
  (params: SetSkuCodeVariantParams): void;
16
16
  }
17
17
  declare type SetVariantSkuCodesParams = {
18
- skuCodes: VariantOptions[];
18
+ skuCodes: VariantOption[];
19
19
  dispatch: Dispatch<VariantAction>;
20
20
  setCustomLineItems?: SetCustomLineItems;
21
21
  };
@@ -37,7 +37,7 @@ export interface VariantPayload {
37
37
  currentQuantity?: number;
38
38
  currentPrices?: Sku[];
39
39
  setSkuCode?: SetSkuCode;
40
- setSkuCodes?: (skuCodes: VariantOptions[]) => void;
40
+ setSkuCodes?: (skuCodes: VariantOption[]) => void;
41
41
  }
42
42
  export interface VariantState extends VariantPayload {
43
43
  skuCodes: string[];
@@ -1 +1 @@
1
- import baseReducer from"../utils/baseReducer";import getSkus from"../utils/getSkus";import{isEmpty,has}from"lodash";import getSdk from"../utils/getSdk";export const setVariantSkuCodes=({skuCodes:e,dispatch:t,setCustomLineItems:s})=>{const o={};const a=e.map((e=>{if(has(e,"lineItem")){o[e.code]=e.lineItem}return e.code}));if(!isEmpty(o)){s&&s(o)}t({type:"setSkuCodes",payload:{skuCodes:a}})};export const setSkuCode=e=>{const{id:t,code:s,config:o,setItem:a,dispatch:r}=e;if(t){const e=getSdk(o);e.skus.retrieve(t,{include:["sku_options"]}).then((e=>{a&&a({[`${s}`]:e})})).catch((e=>{debugger;r({type:"setErrors",payload:{errors:e}})}))}};export const getVariants=e=>{const{config:t,state:s,skuCode:o,dispatch:a,setItem:r,filters:n}=e;const i=getSdk(t);i.skus.list({filters:Object.assign({code_in:s.skuCodes.join(",")},n)}).then((e=>{const s=getSkus(e);if(o){setSkuCode({code:s[o].code,id:s[o].id,config:t,dispatch:a,setItem:r})}a({type:"setVariants",payload:{variants:s}});a({type:"setLoading",payload:{loading:false}})})).catch((e=>{a({type:"setErrors",payload:{errors:e}})}))};export const unsetVariantState=e=>{e({type:"setSkuCode",payload:{skuCode:""}});e({type:"setVariants",payload:{variants:{}}});e({type:"setLoading",payload:{loading:false}})};export const variantInitialState={loading:false,variants:{},skuCodes:[],skuCode:"",errors:[],currentSkuId:"",currentSkuInventory:{available:false,quantity:0,levels:[]},currentQuantity:1,currentPrices:[]};const actionType=["setLoading","setVariants","setSkuCodes","setSkuCode","setCurrentSkuId","setCurrentSkuInventory","setCurrentPrices","setErrors"];const variantReducer=(e,t)=>baseReducer(e,t,actionType);export default variantReducer;
1
+ import baseReducer from"../utils/baseReducer";import getSkus from"../utils/getSkus";import{isEmpty,has}from"lodash";import getSdk from"../utils/getSdk";export const setVariantSkuCodes=({skuCodes:e,dispatch:t,setCustomLineItems:s})=>{const o={};const a=e.map((e=>{if(has(e,"lineItem")){o[e.code]=e.lineItem}return e.code}));if(!isEmpty(o)){s&&s(o)}t({type:"setSkuCodes",payload:{skuCodes:a}})};export const setSkuCode=e=>{const{id:t,code:s,config:o,setItem:a,dispatch:r}=e;if(t){const e=getSdk(o);e.skus.retrieve(t,{include:["sku_options"]}).then((e=>{a&&a({[`${s}`]:e})})).catch((e=>{debugger;r({type:"setErrors",payload:{errors:e}})}))}};export const getVariants=e=>{const{config:t,state:s,skuCode:o,dispatch:a,setItem:r,filters:n}=e;const i=getSdk(t);i.skus.list({filters:Object.assign({code_in:s.skuCodes.join(",")},n)}).then((e=>{const n=getSkus(e,s.skuCodes);if(o){setSkuCode({code:n[o].code,id:n[o].id,config:t,dispatch:a,setItem:r})}a({type:"setVariants",payload:{variants:n}});a({type:"setLoading",payload:{loading:false}})})).catch((e=>{a({type:"setErrors",payload:{errors:e}})}))};export const unsetVariantState=e=>{e({type:"setSkuCode",payload:{skuCode:""}});e({type:"setVariants",payload:{variants:{}}});e({type:"setLoading",payload:{loading:false}})};export const variantInitialState={loading:false,variants:{},skuCodes:[],skuCode:"",errors:[],currentSkuId:"",currentSkuInventory:{available:false,quantity:0,levels:[]},currentQuantity:1,currentPrices:[]};const actionType=["setLoading","setVariants","setSkuCodes","setSkuCode","setCurrentSkuId","setCurrentSkuInventory","setCurrentPrices","setErrors"];const variantReducer=(e,t)=>baseReducer(e,t,actionType);export default variantReducer;
@@ -1,3 +1,3 @@
1
1
  import { Sku } from '@commercelayer/sdk';
2
- declare const getSkus: (skus: Sku[]) => Record<string, any>;
2
+ declare const getSkus: (skus: Sku[], sortBy: string[]) => Record<string, any>;
3
3
  export default getSkus;
@@ -1 +1 @@
1
- const getSkus=o=>{const e={};o.forEach((o=>{if(o===null||o===void 0?void 0:o.code)e[o.code]=o}));return e};export default getSkus;
1
+ const getSkus=(o,e)=>{const t={};e.forEach((e=>{o.forEach((o=>{if((o===null||o===void 0?void 0:o.code)===e)t[o.code]=o}))}));return t};export default getSkus;