@commercelayer/react-components 4.0.0-alpha.12 → 4.0.0-alpha.14

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.
Files changed (165) hide show
  1. package/lib/cjs/components/line_items/LineItem.d.ts +4 -11
  2. package/lib/cjs/components/line_items/LineItem.js +1 -1
  3. package/lib/cjs/components/line_items/LineItemAmount.d.ts +0 -13
  4. package/lib/cjs/components/line_items/LineItemAmount.js +1 -1
  5. package/lib/cjs/components/line_items/LineItemCode.d.ts +6 -11
  6. package/lib/cjs/components/line_items/LineItemCode.js +1 -1
  7. package/lib/cjs/components/line_items/LineItemField.d.ts +14 -0
  8. package/lib/cjs/components/line_items/LineItemField.js +1 -0
  9. package/lib/cjs/components/line_items/LineItemImage.d.ts +4 -11
  10. package/lib/cjs/components/line_items/LineItemImage.js +1 -1
  11. package/lib/cjs/components/line_items/LineItemName.d.ts +6 -11
  12. package/lib/cjs/components/line_items/LineItemName.js +1 -1
  13. package/lib/cjs/components/line_items/LineItemOption.d.ts +5 -16
  14. package/lib/cjs/components/line_items/LineItemOption.js +1 -1
  15. package/lib/cjs/components/line_items/LineItemOptions.d.ts +2 -5
  16. package/lib/cjs/components/line_items/LineItemOptions.js +1 -1
  17. package/lib/cjs/components/line_items/LineItemRemoveLink.js +1 -1
  18. package/lib/cjs/components/line_items/LineItemsContainer.d.ts +2 -14
  19. package/lib/cjs/components/line_items/LineItemsContainer.js +1 -1
  20. package/lib/cjs/components/orders/AddToCartButton.d.ts +29 -6
  21. package/lib/cjs/components/orders/AddToCartButton.js +1 -1
  22. package/lib/cjs/components/orders/OrderContainer.js +1 -1
  23. package/lib/cjs/components/prices/Price.js +1 -1
  24. package/lib/cjs/components/prices/PricesContainer.js +1 -1
  25. package/lib/cjs/components/skus/AvailabilityContainer.d.ts +3 -9
  26. package/lib/cjs/components/skus/AvailabilityContainer.js +1 -1
  27. package/lib/cjs/components/skus/AvailabilityTemplate.d.ts +23 -4
  28. package/lib/cjs/components/skus/AvailabilityTemplate.js +1 -1
  29. package/lib/cjs/components/skus/SkuField.js +1 -1
  30. package/lib/cjs/components/skus/SkusContainer.d.ts +2 -2
  31. package/lib/cjs/components/utils/AddressCardsTemplate.d.ts +3 -4
  32. package/lib/cjs/components/utils/BaseInput.d.ts +1 -1
  33. package/lib/cjs/components/utils/GenericFieldComponent.d.ts +4 -4
  34. package/lib/cjs/components/utils/GenericFieldComponent.js +1 -1
  35. package/lib/cjs/components/utils/PaymentCardsTemplate.d.ts +3 -3
  36. package/lib/cjs/context/ExternalFunctionContext.d.ts +2 -2
  37. package/lib/cjs/context/ExternalFunctionContext.js +1 -1
  38. package/lib/cjs/context/LineItemContext.d.ts +1 -1
  39. package/lib/cjs/context/OrderContext.d.ts +2 -2
  40. package/lib/cjs/index.d.ts +2 -15
  41. package/lib/cjs/index.js +1 -1
  42. package/lib/cjs/reducers/AvailabilityReducer.d.ts +4 -14
  43. package/lib/cjs/reducers/AvailabilityReducer.js +1 -1
  44. package/lib/cjs/reducers/OrderReducer.d.ts +36 -22
  45. package/lib/cjs/reducers/OrderReducer.js +1 -1
  46. package/lib/cjs/reducers/PriceReducer.d.ts +12 -19
  47. package/lib/cjs/reducers/PriceReducer.js +1 -1
  48. package/lib/cjs/reducers/SkuReducer.d.ts +3 -3
  49. package/lib/cjs/typings/errors.d.ts +4 -4
  50. package/lib/esm/components/line_items/LineItem.d.ts +4 -11
  51. package/lib/esm/components/line_items/LineItem.js +1 -1
  52. package/lib/esm/components/line_items/LineItemAmount.d.ts +0 -13
  53. package/lib/esm/components/line_items/LineItemAmount.js +1 -1
  54. package/lib/esm/components/line_items/LineItemCode.d.ts +6 -11
  55. package/lib/esm/components/line_items/LineItemCode.js +1 -1
  56. package/lib/esm/components/line_items/LineItemField.d.ts +14 -0
  57. package/lib/esm/components/line_items/LineItemField.js +1 -0
  58. package/lib/esm/components/line_items/LineItemImage.d.ts +4 -11
  59. package/lib/esm/components/line_items/LineItemImage.js +1 -1
  60. package/lib/esm/components/line_items/LineItemName.d.ts +6 -11
  61. package/lib/esm/components/line_items/LineItemName.js +1 -1
  62. package/lib/esm/components/line_items/LineItemOption.d.ts +5 -16
  63. package/lib/esm/components/line_items/LineItemOption.js +1 -1
  64. package/lib/esm/components/line_items/LineItemOptions.d.ts +2 -5
  65. package/lib/esm/components/line_items/LineItemOptions.js +1 -1
  66. package/lib/esm/components/line_items/LineItemRemoveLink.js +1 -1
  67. package/lib/esm/components/line_items/LineItemsContainer.d.ts +2 -14
  68. package/lib/esm/components/line_items/LineItemsContainer.js +1 -1
  69. package/lib/esm/components/orders/AddToCartButton.d.ts +29 -6
  70. package/lib/esm/components/orders/AddToCartButton.js +1 -1
  71. package/lib/esm/components/orders/OrderContainer.js +1 -1
  72. package/lib/esm/components/prices/Price.js +1 -1
  73. package/lib/esm/components/prices/PricesContainer.js +1 -1
  74. package/lib/esm/components/skus/AvailabilityContainer.d.ts +3 -9
  75. package/lib/esm/components/skus/AvailabilityContainer.js +1 -1
  76. package/lib/esm/components/skus/AvailabilityTemplate.d.ts +23 -4
  77. package/lib/esm/components/skus/AvailabilityTemplate.js +1 -1
  78. package/lib/esm/components/skus/SkuField.js +1 -1
  79. package/lib/esm/components/skus/SkusContainer.d.ts +2 -2
  80. package/lib/esm/components/utils/AddressCardsTemplate.d.ts +3 -4
  81. package/lib/esm/components/utils/BaseInput.d.ts +1 -1
  82. package/lib/esm/components/utils/GenericFieldComponent.d.ts +4 -4
  83. package/lib/esm/components/utils/GenericFieldComponent.js +1 -1
  84. package/lib/esm/components/utils/PaymentCardsTemplate.d.ts +3 -3
  85. package/lib/esm/context/ExternalFunctionContext.d.ts +2 -2
  86. package/lib/esm/context/ExternalFunctionContext.js +1 -1
  87. package/lib/esm/context/LineItemContext.d.ts +1 -1
  88. package/lib/esm/context/OrderContext.d.ts +2 -2
  89. package/lib/esm/index.d.ts +2 -15
  90. package/lib/esm/index.js +1 -1
  91. package/lib/esm/reducers/AvailabilityReducer.d.ts +4 -14
  92. package/lib/esm/reducers/AvailabilityReducer.js +1 -1
  93. package/lib/esm/reducers/OrderReducer.d.ts +36 -22
  94. package/lib/esm/reducers/OrderReducer.js +1 -1
  95. package/lib/esm/reducers/PriceReducer.d.ts +12 -19
  96. package/lib/esm/reducers/PriceReducer.js +1 -1
  97. package/lib/esm/reducers/SkuReducer.d.ts +3 -3
  98. package/lib/esm/typings/errors.d.ts +4 -4
  99. package/lib/tsconfig.prod.esm.tsbuildinfo +1 -1
  100. package/lib/tsconfig.prod.tsbuildinfo +1 -1
  101. package/package.json +2 -2
  102. package/lib/cjs/components/orders/ItemContainer.d.ts +0 -11
  103. package/lib/cjs/components/orders/ItemContainer.js +0 -1
  104. package/lib/cjs/components/skus/QuantitySelector.d.ts +0 -17
  105. package/lib/cjs/components/skus/QuantitySelector.js +0 -1
  106. package/lib/cjs/components/skus/SkuOption.d.ts +0 -14
  107. package/lib/cjs/components/skus/SkuOption.js +0 -1
  108. package/lib/cjs/components/skus/SkuOptionInput.d.ts +0 -15
  109. package/lib/cjs/components/skus/SkuOptionInput.js +0 -1
  110. package/lib/cjs/components/skus/SkuOptionsContainer.d.ts +0 -14
  111. package/lib/cjs/components/skus/SkuOptionsContainer.js +0 -1
  112. package/lib/cjs/components/skus/VariantSelector.d.ts +0 -29
  113. package/lib/cjs/components/skus/VariantSelector.js +0 -1
  114. package/lib/cjs/components/skus/VariantsContainer.d.ts +0 -8
  115. package/lib/cjs/components/skus/VariantsContainer.js +0 -1
  116. package/lib/cjs/components/utils/VariantTemplate.d.ts +0 -36
  117. package/lib/cjs/components/utils/VariantTemplate.js +0 -1
  118. package/lib/cjs/context/ItemContext.d.ts +0 -13
  119. package/lib/cjs/context/ItemContext.js +0 -1
  120. package/lib/cjs/context/SkuOptionChildrenContext.d.ts +0 -8
  121. package/lib/cjs/context/SkuOptionChildrenContext.js +0 -1
  122. package/lib/cjs/context/SkuOptionsContext.d.ts +0 -3
  123. package/lib/cjs/context/SkuOptionsContext.js +0 -1
  124. package/lib/cjs/context/VariantsContext.d.ts +0 -3
  125. package/lib/cjs/context/VariantsContext.js +0 -1
  126. package/lib/cjs/reducers/ItemReducer.d.ts +0 -69
  127. package/lib/cjs/reducers/ItemReducer.js +0 -1
  128. package/lib/cjs/reducers/SkuOptionsReducer.d.ts +0 -26
  129. package/lib/cjs/reducers/SkuOptionsReducer.js +0 -1
  130. package/lib/cjs/reducers/VariantReducer.d.ts +0 -64
  131. package/lib/cjs/reducers/VariantReducer.js +0 -1
  132. package/lib/cjs/utils/getCurrentItemKey.d.ts +0 -6
  133. package/lib/cjs/utils/getCurrentItemKey.js +0 -1
  134. package/lib/esm/components/orders/ItemContainer.d.ts +0 -11
  135. package/lib/esm/components/orders/ItemContainer.js +0 -1
  136. package/lib/esm/components/skus/QuantitySelector.d.ts +0 -17
  137. package/lib/esm/components/skus/QuantitySelector.js +0 -1
  138. package/lib/esm/components/skus/SkuOption.d.ts +0 -14
  139. package/lib/esm/components/skus/SkuOption.js +0 -1
  140. package/lib/esm/components/skus/SkuOptionInput.d.ts +0 -15
  141. package/lib/esm/components/skus/SkuOptionInput.js +0 -1
  142. package/lib/esm/components/skus/SkuOptionsContainer.d.ts +0 -14
  143. package/lib/esm/components/skus/SkuOptionsContainer.js +0 -1
  144. package/lib/esm/components/skus/VariantSelector.d.ts +0 -29
  145. package/lib/esm/components/skus/VariantSelector.js +0 -1
  146. package/lib/esm/components/skus/VariantsContainer.d.ts +0 -8
  147. package/lib/esm/components/skus/VariantsContainer.js +0 -1
  148. package/lib/esm/components/utils/VariantTemplate.d.ts +0 -36
  149. package/lib/esm/components/utils/VariantTemplate.js +0 -1
  150. package/lib/esm/context/ItemContext.d.ts +0 -13
  151. package/lib/esm/context/ItemContext.js +0 -1
  152. package/lib/esm/context/SkuOptionChildrenContext.d.ts +0 -8
  153. package/lib/esm/context/SkuOptionChildrenContext.js +0 -1
  154. package/lib/esm/context/SkuOptionsContext.d.ts +0 -3
  155. package/lib/esm/context/SkuOptionsContext.js +0 -1
  156. package/lib/esm/context/VariantsContext.d.ts +0 -3
  157. package/lib/esm/context/VariantsContext.js +0 -1
  158. package/lib/esm/reducers/ItemReducer.d.ts +0 -69
  159. package/lib/esm/reducers/ItemReducer.js +0 -1
  160. package/lib/esm/reducers/SkuOptionsReducer.d.ts +0 -26
  161. package/lib/esm/reducers/SkuOptionsReducer.js +0 -1
  162. package/lib/esm/reducers/VariantReducer.d.ts +0 -64
  163. package/lib/esm/reducers/VariantReducer.js +0 -1
  164. package/lib/esm/utils/getCurrentItemKey.d.ts +0 -6
  165. package/lib/esm/utils/getCurrentItemKey.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercelayer/react-components",
3
- "version": "4.0.0-alpha.12",
3
+ "version": "4.0.0-alpha.14",
4
4
  "description": "The Official Commerce Layer React Components",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -132,7 +132,7 @@
132
132
  "build": "tsc -b tsconfig.prod.json tsconfig.prod.esm.json --verbose && pnpm postbuild",
133
133
  "build:dev": "tsc -b tsconfig.prod.json tsconfig.prod.esm.json --verbose && tsc-alias -p tsconfig.prod.json && tsc-alias -p tsconfig.prod.esm.json",
134
134
  "postbuild": "tsc-alias -p tsconfig.prod.json && tsc-alias -p tsconfig.prod.esm.json && minimize-js lib -w -s",
135
- "start": "NODE_OPTIONS='--inspect' next dev"
135
+ "dev": "NODE_OPTIONS='--inspect' next dev"
136
136
  },
137
137
  "repository": {
138
138
  "type": "git",
@@ -1,11 +0,0 @@
1
- import { ReactNode } from 'react';
2
- interface Props {
3
- children: ReactNode;
4
- skuCode?: string | null;
5
- lineItem?: {
6
- name: string;
7
- imageUrl?: string | null;
8
- } | null;
9
- }
10
- export declare function ItemContainer(props: Props): JSX.Element;
11
- export default ItemContainer;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ItemContainer=void 0;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),ItemContext_1=tslib_1.__importStar(require("../../context/ItemContext")),ItemReducer_1=tslib_1.__importStar(require("../../reducers/ItemReducer"));function ItemContainer(props){const{children,skuCode,lineItem}=props,[state,dispatch]=(0,react_1.useReducer)(ItemReducer_1.default,ItemReducer_1.itemInitialState);(0,react_1.useEffect)(()=>{const code=skuCode;code&&(0,ItemReducer_1.setItemState)(code,{type:"setSkuCode",key:"skuCode"},dispatch),lineItem&&(0,ItemReducer_1.setItemState)(lineItem,{type:"setCustomLineItem",key:"lineItem"},dispatch)},[]);const setItems=items=>(0,ItemReducer_1.setItemState)(items,{type:"setItems",key:"items"},dispatch),setItem=item=>(0,ItemReducer_1.setItemState)(item,{type:"setItem",key:"item"},dispatch),setQuantity=item=>(0,ItemReducer_1.setItemState)(item,{type:"setQuantity",key:"quantity"},dispatch),setOption=item=>(0,ItemReducer_1.setItemState)(item,{type:"setOption",key:"option"},dispatch),setPrices=item=>(0,ItemReducer_1.setItemState)(item,{type:"setPrices",key:"prices"},dispatch),setCustomLineItems=item=>(0,ItemReducer_1.setItemState)(item,{type:"setCustomLineItems",key:"lineItems"},dispatch),setSkuCode=code=>(0,ItemReducer_1.setItemState)(code,{type:"setSkuCode",key:"skuCode"},dispatch),itemValue={...ItemContext_1.initialItemContext,...state,setItems,setItem,setQuantity,setOption,setPrices,setCustomLineItems,setSkuCode};return(0,jsx_runtime_1.jsx)(ItemContext_1.default.Provider,{value:itemValue,children})}exports.ItemContainer=ItemContainer,exports.default=ItemContainer;
@@ -1,17 +0,0 @@
1
- /// <reference types="react" />
2
- import { ChildrenFunction } from '../../typings/index';
3
- interface ChildrenProps extends Omit<Props, 'children'> {
4
- handleChange: (event: React.MouseEvent<HTMLInputElement>) => void;
5
- handleBlur: (event: React.MouseEvent<HTMLInputElement>) => void;
6
- }
7
- declare type Props = {
8
- children?: ChildrenFunction<ChildrenProps>;
9
- disabled?: boolean;
10
- min?: number;
11
- max?: number;
12
- value?: string;
13
- skuCode?: string;
14
- skuListId?: string;
15
- } & JSX.IntrinsicElements['input'];
16
- export declare function QuantitySelector(props: Props): JSX.Element;
17
- export default QuantitySelector;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.QuantitySelector=void 0;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),Parent_1=tslib_1.__importDefault(require("../utils/Parent")),has_1=tslib_1.__importDefault(require("lodash/has")),isEmpty_1=tslib_1.__importDefault(require("lodash/isEmpty")),getCurrentItemKey_1=tslib_1.__importDefault(require("../../utils/getCurrentItemKey")),ItemContext_1=tslib_1.__importDefault(require("../../context/ItemContext")),SkuListsContext_1=tslib_1.__importDefault(require("../../context/SkuListsContext")),SkuChildrenContext_1=tslib_1.__importDefault(require("../../context/SkuChildrenContext"));function QuantitySelector(props){const{skuCode,skuListId,children,min=1,max,...p}=props,{item,setQuantity,items,quantity,prices,skuCode:itemSkuCode}=(0,react_1.useContext)(ItemContext_1.default),{sku}=(0,react_1.useContext)(SkuChildrenContext_1.default),{skuLists,listIds}=(0,react_1.useContext)(SkuListsContext_1.default),defaultVal=p?.value||min,[value,setValue]=(0,react_1.useState)(defaultVal),[disabled,setDisabled]=(0,react_1.useState)(!!p.disabled),sCode=!(0,isEmpty_1.default)(items)&&skuCode?items[skuCode]?.code:sku?.code||skuCode||(0,getCurrentItemKey_1.default)(item)||itemSkuCode,inventory=(0,isEmpty_1.default)(item)?50:item[sCode]?.inventory?.quantity,maxInv=max||inventory;(0,react_1.useEffect)(()=>{if(setValue(defaultVal),(!prices[sCode]||!sCode)&&setDisabled(!0),skuListId&&setDisabled(!1),sCode&&!quantity[sCode]){const qty=Number(defaultVal);setQuantity&&setQuantity({...quantity,[`${sCode}`]:qty}),!(0,isEmpty_1.default)(prices)&&(0,has_1.default)(prices,sCode)&&setDisabled(!1)}return()=>{setValue(defaultVal)}},[item,listIds,prices,quantity]);const handleChange=e=>{const qty=Number(e.target.value),valid=Number(qty)>=Number(min)&&Number(qty)<=Number(maxInv);setValue(qty),!(0,isEmpty_1.default)(skuLists)&&skuListId&&valid?setQuantity&&setQuantity({...quantity,[`${skuListId}`]:Number(qty)}):sCode&&valid&&setQuantity&&setQuantity({...quantity,[`${sCode}`]:Number(qty)})},handleBlur=e=>{const qty=e.target.value;if(!(Number(qty)>=Number(min)&&Number(qty)<=Number(maxInv))){const resetVal=Number(qty)<Number(min)?min:maxInv;resetVal&&setValue(resetVal),!(0,isEmpty_1.default)(skuLists)&&skuListId?setQuantity&&setQuantity({...quantity,[`${skuListId}`]:Number(resetVal)}):setQuantity&&setQuantity({...quantity,[`${sCode}`]:Number(resetVal)})}},parentProps={min,max:maxInv,disabled,handleChange,handleBlur,value,...props};return children?(0,jsx_runtime_1.jsx)(Parent_1.default,{...parentProps,children}):(0,jsx_runtime_1.jsx)("input",{type:"number",max:maxInv,min,value:value||"",disabled,onChange:handleChange,onBlur:handleBlur,...p})}exports.QuantitySelector=QuantitySelector,exports.default=QuantitySelector;
@@ -1,14 +0,0 @@
1
- import { ReactNode } from 'react';
2
- declare type Props = {
3
- children: ReactNode;
4
- id: string;
5
- };
6
- export declare function SkuOption(props: Props): JSX.Element;
7
- export declare namespace SkuOption {
8
- var propTypes: {
9
- children: import("prop-types").Validator<NonNullable<ReactNode | (() => JSX.Element)>>;
10
- id: import("prop-types").Validator<string>;
11
- };
12
- var displayName: string;
13
- }
14
- export default SkuOption;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SkuOption=void 0;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),SkuOptionChildrenContext_1=tslib_1.__importDefault(require("../../context/SkuOptionChildrenContext")),SkuOptionsContext_1=tslib_1.__importDefault(require("../../context/SkuOptionsContext")),components_1=tslib_1.__importDefault(require("../../config/components")),propTypes=components_1.default.SkuOption.propTypes,displayName=components_1.default.SkuOption.displayName;function SkuOption(props){const{id}=props,{skuOptions,skuCode}=(0,react_1.useContext)(SkuOptionsContext_1.default),items=skuOptions&&skuOptions.filter(l=>l.id===id).map((skuOption,k)=>(0,jsx_runtime_1.jsx)(SkuOptionChildrenContext_1.default.Provider,{value:{skuOption,skuCode},children:props.children},k));return(0,jsx_runtime_1.jsx)(react_1.Fragment,{children:items})}exports.SkuOption=SkuOption,SkuOption.propTypes=propTypes,SkuOption.displayName=displayName,exports.default=SkuOption;
@@ -1,15 +0,0 @@
1
- /// <reference types="react" />
2
- import { BaseInputComponentProps } from '../../typings/index';
3
- declare type Props = BaseInputComponentProps & JSX.IntrinsicElements['input'] & JSX.IntrinsicElements['textarea'];
4
- export declare function SkuOptionInput(props: Props): JSX.Element;
5
- export declare namespace SkuOptionInput {
6
- var propTypes: {
7
- children: import("prop-types").Requireable<(...args: any[]) => any>;
8
- name: import("prop-types").Validator<string>;
9
- type: import("prop-types").Validator<NonNullable<import("../../typings/index").BaseInputType>>;
10
- onChange: import("prop-types").Requireable<(...args: any[]) => any>;
11
- placeholder: import("prop-types").Requireable<string>;
12
- };
13
- var displayName: string;
14
- }
15
- export default SkuOptionInput;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SkuOptionInput=void 0;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),BaseInput_1=tslib_1.__importDefault(require("../utils/BaseInput")),ItemContext_1=tslib_1.__importDefault(require("../../context/ItemContext")),SkuOptionChildrenContext_1=tslib_1.__importDefault(require("../../context/SkuOptionChildrenContext")),has_1=tslib_1.__importDefault(require("lodash/has")),components_1=tslib_1.__importDefault(require("../../config/components")),propTypes=components_1.default.SkuOptionInput.propTypes,displayName=components_1.default.SkuOptionInput.displayName;function SkuOptionInput(props){const{name}=props,{option,setOption}=(0,react_1.useContext)(ItemContext_1.default),{skuOption,skuCode}=(0,react_1.useContext)(SkuOptionChildrenContext_1.default),handleChange=event=>{const val=event.target.value,options=(0,has_1.default)(option,`${skuCode}.${skuOption?.id}`)?option[skuCode]?.[`${skuOption?.id}`]?.options:{},o={[skuCode]:{...option[skuCode],[`${skuOption?.id}`]:{skuOptionId:skuOption?.id,options:{...options,[name]:val}}}};setOption&&setOption(o)};return(0,jsx_runtime_1.jsx)(BaseInput_1.default,{onChange:handleChange,...props})}exports.SkuOptionInput=SkuOptionInput,SkuOptionInput.propTypes=propTypes,SkuOptionInput.displayName=displayName,exports.default=SkuOptionInput;
@@ -1,14 +0,0 @@
1
- import { ReactNode } from 'react';
2
- declare type Props = {
3
- children: ReactNode;
4
- skuCode?: string;
5
- };
6
- export declare function SkuOptionsContainer(props: Props): JSX.Element;
7
- export declare namespace SkuOptionsContainer {
8
- var propTypes: {
9
- children: import("prop-types").Validator<NonNullable<ReactNode | (() => JSX.Element)>>;
10
- skuCode: import("prop-types").Requireable<string>;
11
- };
12
- var displayName: string;
13
- }
14
- export default SkuOptionsContainer;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SkuOptionsContainer=void 0;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),SkuOptionsContext_1=tslib_1.__importDefault(require("../../context/SkuOptionsContext")),SkuOptionsReducer_1=tslib_1.__importStar(require("../../reducers/SkuOptionsReducer")),CommerceLayerContext_1=tslib_1.__importDefault(require("../../context/CommerceLayerContext")),lodash_1=require("lodash"),getCurrentItemKey_1=tslib_1.__importDefault(require("../../utils/getCurrentItemKey")),ItemContext_1=tslib_1.__importDefault(require("../../context/ItemContext")),SkuOptionsReducer_2=require("../../reducers/SkuOptionsReducer"),components_1=tslib_1.__importDefault(require("../../config/components")),propTypes=components_1.default.SkuOptionsContainer.propTypes,displayName=components_1.default.SkuOptionsContainer.displayName;function SkuOptionsContainer(props){const{skuCode,children}=props,[state,dispatch]=(0,react_1.useReducer)(SkuOptionsReducer_1.default,SkuOptionsReducer_1.skuOptionsInitialState),config=(0,react_1.useContext)(CommerceLayerContext_1.default),{item,items}=(0,react_1.useContext)(ItemContext_1.default),sCode=!(0,lodash_1.isEmpty)(items)&&skuCode?items[skuCode]?.code:skuCode||(0,getCurrentItemKey_1.default)(item),skuOptionsValue={...state,skuCode:sCode};return(0,react_1.useEffect)(()=>(sCode&&item[sCode]?.sku_options&&(0,SkuOptionsReducer_2.getSkuOptions)({skuOptions:item[sCode]?.sku_options,dispatch}),()=>{(0,lodash_1.isEmpty)(sCode)&&dispatch({type:"setSkuOptions",payload:{skuOptions:[]}})}),[config,sCode]),(0,jsx_runtime_1.jsx)(SkuOptionsContext_1.default.Provider,{value:skuOptionsValue,children})}exports.SkuOptionsContainer=SkuOptionsContainer,SkuOptionsContainer.propTypes=propTypes,SkuOptionsContainer.displayName=displayName,exports.default=SkuOptionsContainer;
@@ -1,29 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { VariantHandleCallback } from '../utils/VariantTemplate';
3
- import { BaseSelectorType } from '../../typings/index';
4
- import { ChildrenFunction } from '../../typings/index';
5
- import { VariantsObject, SetSkuCode } from '../../reducers/VariantReducer';
6
- export interface VariantOption {
7
- label: string;
8
- code: string;
9
- lineItem?: {
10
- name: string;
11
- imageUrl?: string | null;
12
- } | null;
13
- }
14
- interface ChildrenProps extends Omit<Props, 'children'> {
15
- variants: VariantsObject;
16
- handleSelect: SetSkuCode;
17
- loading: boolean;
18
- }
19
- declare type Props = {
20
- children?: ChildrenFunction<ChildrenProps>;
21
- options: VariantOption[];
22
- type?: BaseSelectorType;
23
- loader?: ReactNode;
24
- placeholder?: string;
25
- skuCode?: string;
26
- handleCallback?: VariantHandleCallback;
27
- } & JSX.IntrinsicElements['input'] & JSX.IntrinsicElements['select'];
28
- export declare function VariantSelector(props: Props): JSX.Element;
29
- export default VariantSelector;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VariantSelector=void 0;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),VariantTemplate_1=tslib_1.__importDefault(require("../utils/VariantTemplate")),Parent_1=tslib_1.__importDefault(require("../utils/Parent")),VariantsContext_1=tslib_1.__importDefault(require("../../context/VariantsContext"));function VariantSelector(props){const{children,type="select",placeholder,skuCode,name,options,...prs}=props,{setSkuCode,skuCode:variantSkuCode,loading,variants,setSkuCodes}=(0,react_1.useContext)(VariantsContext_1.default);(0,react_1.useEffect)(()=>(setSkuCodes&&setSkuCodes(options),()=>{setSkuCodes&&setSkuCodes([])}),[options.length]);const sCode=variantSkuCode||skuCode||"",DefaultTemplate=()=>loading?(0,jsx_runtime_1.jsx)(jsx_runtime_1.Fragment,{children:props.loader||"Loading..."}):(0,jsx_runtime_1.jsx)(VariantTemplate_1.default,{variants,type,placeholder,skuCode:sCode,options,handleChange:setSkuCode,name,...prs});console.log("variants",variants,options);const parentProps={variants,loading:!!loading,handleSelect:setSkuCode,skuCode:sCode,...props};return children?(0,jsx_runtime_1.jsx)(Parent_1.default,{...parentProps,children}):(0,jsx_runtime_1.jsx)(DefaultTemplate,{})}exports.VariantSelector=VariantSelector,exports.default=VariantSelector;
@@ -1,8 +0,0 @@
1
- /// <reference types="react" />
2
- interface Props {
3
- children: JSX.Element | JSX.Element[];
4
- filters?: Record<string, any>;
5
- skuCode?: string;
6
- }
7
- export declare function VariantsContainer(props: Props): JSX.Element;
8
- export default VariantsContainer;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VariantsContainer=void 0;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),VariantReducer_1=tslib_1.__importStar(require("../../reducers/VariantReducer")),CommerceLayerContext_1=tslib_1.__importDefault(require("../../context/CommerceLayerContext")),VariantsContext_1=tslib_1.__importDefault(require("../../context/VariantsContext")),isEmpty_1=tslib_1.__importDefault(require("lodash/isEmpty")),isEqual_1=tslib_1.__importDefault(require("lodash/isEqual")),getCurrentItemKey_1=tslib_1.__importDefault(require("../../utils/getCurrentItemKey")),ItemContext_1=tslib_1.__importDefault(require("../../context/ItemContext"));function VariantsContainer(props){const{children,skuCode="",filters={}}=props,config=(0,react_1.useContext)(CommerceLayerContext_1.default);if(config.accessToken==null)throw new Error("Cannot use `VariantsContainer` outside of `CommerceLayer`");const{setItem,setItems,items,item:currentItem,setCustomLineItems,skuCode:itemSkuCode,setSkuCode:setItemSkuCode}=(0,react_1.useContext)(ItemContext_1.default),[state,dispatch]=(0,react_1.useReducer)(VariantReducer_1.default,VariantReducer_1.variantInitialState),sCode=(0,getCurrentItemKey_1.default)(currentItem)||skuCode||state.skuCode||itemSkuCode||"";(0,react_1.useEffect)(()=>{if(!(0,isEmpty_1.default)(items)&&!(0,isEmpty_1.default)(state.variants)&&!(0,isEqual_1.default)(items,state.variants)){const mergeItems={...items,...state.variants};setItems&&setItems(mergeItems)}return console.log("state.skuCodes",state.skuCodes),state.skuCodes.length>=1&&config.accessToken&&(dispatch({type:"setLoading",payload:{loading:!0}}),(0,VariantReducer_1.getVariants)({config,state,dispatch,setItem,skuCode:sCode,filters})),()=>(0,VariantReducer_1.unsetVariantState)(dispatch)},[config?.accessToken]);const variantValue={...state,skuCode:sCode,setSkuCode:(code,id,lineItem={})=>{!(0,isEmpty_1.default)(lineItem)&&setCustomLineItems&&setCustomLineItems({[code]:lineItem}),(0,VariantReducer_1.setSkuCode)({code,id,config,setItem,dispatch,setItemSkuCode})},setSkuCodes:skuCodes=>(0,VariantReducer_1.setVariantSkuCodes)({skuCodes,dispatch,setCustomLineItems})};return(0,jsx_runtime_1.jsx)(VariantsContext_1.default.Provider,{value:variantValue,children})}exports.VariantsContainer=VariantsContainer,exports.default=VariantsContainer;
@@ -1,36 +0,0 @@
1
- import { FunctionComponent, ReactNode } from 'react';
2
- import PropTypes from 'prop-types';
3
- import { BaseSelectorType } from '../../typings/index';
4
- import { VariantsObject, SetSkuCode } from '../../reducers/VariantReducer';
5
- import { VariantOption } from '../skus/VariantSelector';
6
- export declare const propTypes: {
7
- variants: PropTypes.Validator<any>;
8
- onChange: PropTypes.Requireable<(...args: any[]) => any>;
9
- options: PropTypes.Validator<NonNullable<PropTypes.InferProps<{
10
- label: PropTypes.Validator<string>;
11
- code: PropTypes.Validator<string>;
12
- lineItem: PropTypes.Requireable<PropTypes.InferProps<{
13
- name: PropTypes.Validator<string>;
14
- imageUrl: PropTypes.Requireable<string>;
15
- }>>;
16
- }>>[]>;
17
- name: PropTypes.Requireable<string>;
18
- children: PropTypes.Requireable<(...args: any[]) => any>;
19
- type: PropTypes.Requireable<BaseSelectorType>;
20
- loader: PropTypes.Requireable<PropTypes.ReactElementLike>;
21
- placeholder: PropTypes.Requireable<string>;
22
- skuCode: PropTypes.Requireable<string>;
23
- };
24
- export declare type VariantHandleCallback = (variant: VariantOption) => void;
25
- export declare type VariantTemplateProps = {
26
- variants: VariantsObject | Record<string, any>;
27
- handleChange?: SetSkuCode;
28
- options: VariantOption[];
29
- type?: BaseSelectorType;
30
- loader?: ReactNode;
31
- placeholder?: string;
32
- skuCode?: string;
33
- handleCallback?: VariantHandleCallback;
34
- } & JSX.IntrinsicElements['input'] & JSX.IntrinsicElements['select'];
35
- declare const VariantTemplate: FunctionComponent<VariantTemplateProps>;
36
- export default VariantTemplate;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.propTypes=void 0;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),prop_types_1=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=props=>{const{id,variants,type,placeholder,options,skuCode,handleChange,handleCallback,...prs}=props,vars=Object.keys(variants).map((v,k)=>{const checked=skuCode===v,label=options.length>0?options[k]?.label:variants[v].name;return type==="select"?(0,jsx_runtime_1.jsx)("option",{"data-sku-id":variants[v].id,"data-label":label,value:variants[v].code,children:label},variants[v].id):(0,jsx_runtime_1.jsxs)(react_1.Fragment,{children:[(0,jsx_runtime_1.jsx)("input",{id:`${id??"radio"}-${k}`,defaultChecked:checked,type:"radio",value:variants[v].code,onChange:e=>{const code=e.target.value;handleChange&&handleChange(code,variants[v].id),handleCallback&&handleCallback({code,label})},...prs}),label]},variants[v].id)});return console.log("vars",vars,variants),type==="select"?(0,jsx_runtime_1.jsxs)("select",{id,title:"Variant selector",onChange:e=>{const v=e.target.value,i=e.target.selectedIndex,id2=e.target[i]?.dataset?.skuId,label=e.target[i]?.dataset?.label;handleChange&&handleChange(v,id2),handleCallback&&handleCallback({code:v,label})},value:skuCode||"",...prs,children:[(0,jsx_runtime_1.jsx)("option",{disabled:!!skuCode,children:placeholder}),vars]}):(0,jsx_runtime_1.jsx)(jsx_runtime_1.Fragment,{children:vars})};exports.default=VariantTemplate;
@@ -1,13 +0,0 @@
1
- /// <reference types="react" />
2
- import { ItemState, Items, ItemQuantity, ItemOptions, ItemPrices, CustomLineItems } from '../reducers/ItemReducer';
3
- export interface InitItemContext extends Partial<ItemState> {
4
- item: Items;
5
- items: Items;
6
- quantity: ItemQuantity;
7
- option: ItemOptions;
8
- prices: ItemPrices;
9
- lineItems: CustomLineItems;
10
- }
11
- export declare const initialItemContext: InitItemContext;
12
- declare const ItemContext: import("react").Context<InitItemContext>;
13
- export default ItemContext;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.initialItemContext=void 0;const react_1=require("react");exports.initialItemContext={item:{},items:{},quantity:{},option:{},prices:{},lineItems:{}};const ItemContext=(0,react_1.createContext)(exports.initialItemContext);exports.default=ItemContext;
@@ -1,8 +0,0 @@
1
- /// <reference types="react" />
2
- import { SkuOption } from '@commercelayer/sdk';
3
- export interface SkuOptionChildrenInitalState {
4
- skuOption?: SkuOption | null;
5
- skuCode: string;
6
- }
7
- declare const SkuOptionChildrenContext: import("react").Context<SkuOptionChildrenInitalState>;
8
- export default SkuOptionChildrenContext;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const react_1=require("react"),initial={skuCode:""},SkuOptionChildrenContext=(0,react_1.createContext)(initial);exports.default=SkuOptionChildrenContext;
@@ -1,3 +0,0 @@
1
- /// <reference types="react" />
2
- declare const SkuOptionsContext: import("react").Context<import("../reducers/SkuOptionsReducer").SkuOptionsState>;
3
- export default SkuOptionsContext;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const react_1=require("react"),SkuOptionsReducer_1=require("../reducers/SkuOptionsReducer"),SkuOptionsContext=(0,react_1.createContext)(SkuOptionsReducer_1.skuOptionsInitialState);exports.default=SkuOptionsContext;
@@ -1,3 +0,0 @@
1
- /// <reference types="react" />
2
- declare const VariantsContext: import("react").Context<import("../reducers/VariantReducer").VariantState>;
3
- export default VariantsContext;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const react_1=require("react"),VariantReducer_1=require("../reducers/VariantReducer"),VariantsContext=(0,react_1.createContext)(VariantReducer_1.variantInitialState);exports.default=VariantsContext;
@@ -1,69 +0,0 @@
1
- import { BaseUnsetState } from '../typings/index';
2
- import { Price } from '@commercelayer/sdk';
3
- import { Dispatch } from 'react';
4
- import { SkuInventory } from './AvailabilityReducer';
5
- export interface Items {
6
- [skuCode: string]: SkuInventory;
7
- }
8
- export interface ItemPrices {
9
- [skuCode: string]: Price;
10
- }
11
- export interface ItemQuantity {
12
- [skuCode: string]: number;
13
- }
14
- export interface ItemOption {
15
- [key: string]: {
16
- skuOptionId: string;
17
- options: {
18
- [key: string]: string;
19
- };
20
- };
21
- }
22
- export interface ItemOptions {
23
- [skuCode: string]: ItemOption;
24
- }
25
- export declare type CustomLineItem = {
26
- name?: string;
27
- imageUrl?: string | null;
28
- };
29
- export interface CustomLineItems {
30
- [skuCode: string]: CustomLineItem;
31
- }
32
- declare type ItemParams = {
33
- type: ItemActionType;
34
- key: 'items' | 'item' | 'quantity' | 'option' | 'prices' | 'lineItem' | 'lineItems' | 'skuCode';
35
- };
36
- declare type DataType = Items | ItemQuantity | ItemOptions | ItemPrices | CustomLineItems | CustomLineItem | string;
37
- export interface SetItemState {
38
- (data: DataType, params: ItemParams, dispatch: Dispatch<ItemAction>): void;
39
- }
40
- export declare const setItemState: SetItemState;
41
- export declare const unsetItemState: BaseUnsetState<ItemAction>;
42
- export declare type SetCustomLineItems = (lineItems: CustomLineItems) => void;
43
- export declare type SetCustomLineItem = (lineItem: CustomLineItem) => void;
44
- export interface ItemState {
45
- skuCode?: string;
46
- items?: Items;
47
- item?: Items;
48
- lineItems?: CustomLineItems;
49
- lineItem?: CustomLineItem;
50
- quantity?: ItemQuantity;
51
- option?: ItemOptions;
52
- prices?: ItemPrices;
53
- setItems?: (items: Items) => void;
54
- setItem?: (item: Items) => void;
55
- setQuantity?: (quantity: ItemQuantity) => void;
56
- setOption?: (option: ItemOptions) => void;
57
- setPrices?: (prices: ItemPrices) => void;
58
- setSkuCode?: (skuCode: string) => void;
59
- setCustomLineItems: SetCustomLineItems;
60
- setCustomLineItem?: SetCustomLineItem;
61
- }
62
- declare type ItemActionType = 'setItem' | 'setItems' | 'setQuantity' | 'setOption' | 'setPrices' | 'setCustomLineItems' | 'setCustomLineItem' | 'setSkuCode';
63
- export interface ItemAction {
64
- type: ItemActionType;
65
- payload: Partial<ItemState>;
66
- }
67
- export declare const itemInitialState: Partial<ItemState>;
68
- declare const itemReducer: (state: Partial<ItemState>, reducer: ItemAction) => Partial<ItemState>;
69
- export default itemReducer;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.itemInitialState=exports.unsetItemState=exports.setItemState=void 0;const tslib_1=require("tslib"),baseReducer_1=tslib_1.__importDefault(require("../utils/baseReducer")),setItemState=(data,params,dispatch)=>{dispatch({type:params.type,payload:{[`${params.key}`]:data}})};exports.setItemState=setItemState;const unsetItemState=dispatch=>{dispatch({type:"setItem",payload:{item:{}}}),dispatch({type:"setItems",payload:{items:{}}}),dispatch({type:"setQuantity",payload:{quantity:{}}}),dispatch({type:"setOption",payload:{option:{}}}),dispatch({type:"setCustomLineItems",payload:{lineItems:{}}}),dispatch({type:"setCustomLineItem",payload:{lineItem:{}}})};exports.unsetItemState=unsetItemState;const actionType=["setItem","setItems","setQuantity","setOption","setPrices","setCustomLineItems","setCustomLineItem","setSkuCode"];exports.itemInitialState={items:{},item:{},quantity:{},option:{},prices:{},lineItems:{},lineItem:{},skuCode:""};const itemReducer=(state,reducer)=>(0,baseReducer_1.default)(state,reducer,actionType);exports.default=itemReducer;
@@ -1,26 +0,0 @@
1
- import { Dispatch } from 'react';
2
- import { SkuOption } from '@commercelayer/sdk';
3
- import { BaseUnsetState } from '../typings/index';
4
- import { BaseError } from '../typings/errors';
5
- export interface SkuOptionsState {
6
- skuCode?: string;
7
- skuOptions?: SkuOption[];
8
- errors?: BaseError[];
9
- }
10
- interface GetSkuOptionsParams {
11
- dispatch: Dispatch<SkuOptionsAction>;
12
- skuOptions?: SkuOption[];
13
- }
14
- export interface GetSkuOptions {
15
- (params: GetSkuOptionsParams): void;
16
- }
17
- export declare const getSkuOptions: GetSkuOptions;
18
- export declare const unsetSkuOptionsState: BaseUnsetState<SkuOptionsAction>;
19
- export declare type SkuOptionsActionType = 'setSkuOptions' | 'setErrors';
20
- export interface SkuOptionsAction {
21
- type: SkuOptionsActionType;
22
- payload: SkuOptionsState;
23
- }
24
- export declare const skuOptionsInitialState: SkuOptionsState;
25
- declare const skuOptionsReducer: (state: SkuOptionsState, reducer: SkuOptionsAction) => SkuOptionsState;
26
- export default skuOptionsReducer;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.skuOptionsInitialState=exports.unsetSkuOptionsState=exports.getSkuOptions=void 0;const tslib_1=require("tslib"),baseReducer_1=tslib_1.__importDefault(require("../utils/baseReducer")),getSkuOptions=async params=>{const{skuOptions,dispatch}=params;dispatch({type:"setSkuOptions",payload:{skuOptions}})};exports.getSkuOptions=getSkuOptions;const unsetSkuOptionsState=dispatch=>{dispatch({type:"setSkuOptions",payload:{skuOptions:[]}}),dispatch({type:"setErrors",payload:{errors:[]}})};exports.unsetSkuOptionsState=unsetSkuOptionsState;const actionType=["setSkuOptions","setErrors"];exports.skuOptionsInitialState={skuCode:"",skuOptions:[]};const skuOptionsReducer=(state,reducer)=>(0,baseReducer_1.default)(state,reducer,actionType);exports.default=skuOptionsReducer;
@@ -1,64 +0,0 @@
1
- import { Sku } from '@commercelayer/sdk';
2
- import { VariantOption } from '../components/skus/VariantSelector';
3
- import { Dispatch } from 'react';
4
- import { CommerceLayerConfig } from '../context/CommerceLayerContext';
5
- import { Items, CustomLineItem, SetCustomLineItems } from './ItemReducer';
6
- import { BaseError } from '../typings/errors';
7
- interface SetSkuCodeVariantParams {
8
- code: string;
9
- id: string;
10
- config: CommerceLayerConfig;
11
- dispatch: Dispatch<VariantAction>;
12
- setItem: ((item: Items) => void) | undefined;
13
- setItemSkuCode?: ((skuCode: string) => void) | undefined;
14
- }
15
- export declare type SetSkuCodeVariant = (params: SetSkuCodeVariantParams) => void;
16
- interface SetVariantSkuCodesParams {
17
- skuCodes: VariantOption[];
18
- dispatch: Dispatch<VariantAction>;
19
- setCustomLineItems?: SetCustomLineItems;
20
- }
21
- export declare type SetVariantSkuCodes = (params: SetVariantSkuCodesParams) => void;
22
- export interface VariantsObject {
23
- [key: string]: Sku;
24
- }
25
- export declare type SetSkuCode = (code: string, id: string, lineItem?: CustomLineItem) => void;
26
- export interface VariantPayload {
27
- loading?: boolean;
28
- variants?: VariantsObject | Record<string, any>;
29
- skuCodes?: string[];
30
- skuCode?: string;
31
- errors?: BaseError[];
32
- currentSkuId?: string;
33
- currentSkuInventory?: any;
34
- currentQuantity?: number;
35
- currentPrices?: Sku[];
36
- setSkuCode?: SetSkuCode;
37
- setSkuCodes?: (skuCodes: VariantOption[]) => void;
38
- }
39
- export interface VariantState extends VariantPayload {
40
- skuCodes: string[];
41
- variants: VariantsObject | Record<string, any>;
42
- }
43
- export interface VariantAction {
44
- type: VariantActionType;
45
- payload: VariantPayload;
46
- }
47
- export declare const setVariantSkuCodes: SetVariantSkuCodes;
48
- export declare type UnsetVariantState = (dispatch: Dispatch<VariantAction>) => void;
49
- export declare const setSkuCode: SetSkuCodeVariant;
50
- interface GetVariantsParams {
51
- config: CommerceLayerConfig;
52
- state: VariantState;
53
- skuCode: string;
54
- dispatch: Dispatch<VariantAction>;
55
- filters: Record<string, any>;
56
- setItem: ((item: Items) => void) | undefined;
57
- }
58
- export declare type GetVariants = (params: GetVariantsParams) => void;
59
- export declare const getVariants: GetVariants;
60
- export declare const unsetVariantState: UnsetVariantState;
61
- export declare const variantInitialState: VariantState;
62
- export declare type VariantActionType = 'setLoading' | 'setVariants' | 'setSkuCodes' | 'setSkuCode' | 'setCurrentSkuId' | 'setCurrentSkuInventory' | 'setCurrentPrices' | 'setErrors';
63
- declare const variantReducer: (state: VariantState, reducer: VariantAction) => VariantState;
64
- export default variantReducer;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.variantInitialState=exports.unsetVariantState=exports.getVariants=exports.setSkuCode=exports.setVariantSkuCodes=void 0;const tslib_1=require("tslib"),baseReducer_1=tslib_1.__importDefault(require("../utils/baseReducer")),getSkus_1=tslib_1.__importDefault(require("../utils/getSkus")),lodash_1=require("lodash"),getSdk_1=tslib_1.__importDefault(require("../utils/getSdk")),setVariantSkuCodes=({skuCodes,dispatch,setCustomLineItems})=>{const lineItems={},sCodes=skuCodes.map(s=>((0,lodash_1.has)(s,"lineItem")&&(lineItems[s.code]=s.lineItem),s.code));!(0,lodash_1.isEmpty)(lineItems)&&setCustomLineItems&&setCustomLineItems(lineItems),dispatch({type:"setSkuCodes",payload:{skuCodes:sCodes}})};exports.setVariantSkuCodes=setVariantSkuCodes;const setSkuCode=params=>{const{id,code,config,setItem,dispatch,setItemSkuCode}=params;id&&(0,getSdk_1.default)(config).skus.retrieve(id,{include:["sku_options"]}).then(sku=>{setItem&&setItem({[`${code}`]:sku}),setItemSkuCode&&setItemSkuCode(code)}).catch(errors=>{dispatch({type:"setErrors",payload:{errors}})})};exports.setSkuCode=setSkuCode;const getVariants=params=>{const{config,state,skuCode,dispatch,setItem,filters}=params;(0,getSdk_1.default)(config).skus.list({filters:{code_in:state.skuCodes.join(","),...filters}}).then(skus=>{const skusObj=(0,getSkus_1.default)(skus,state.skuCodes);skuCode&&(0,exports.setSkuCode)({code:skusObj[skuCode].code,id:skusObj[skuCode].id,config,dispatch,setItem}),dispatch({type:"setVariants",payload:{variants:skusObj}}),dispatch({type:"setLoading",payload:{loading:!1}})}).catch(errors=>{dispatch({type:"setErrors",payload:{errors}})})};exports.getVariants=getVariants;const unsetVariantState=dispatch=>{dispatch({type:"setSkuCode",payload:{skuCode:""}}),dispatch({type:"setVariants",payload:{variants:{}}}),dispatch({type:"setLoading",payload:{loading:!1}})};exports.unsetVariantState=unsetVariantState,exports.variantInitialState={loading:!1,variants:{},skuCodes:[],skuCode:"",errors:[],currentSkuId:"",currentSkuInventory:{available:!1,quantity:0,levels:[]},currentQuantity:1,currentPrices:[]};const actionType=["setLoading","setVariants","setSkuCodes","setSkuCode","setCurrentSkuId","setCurrentSkuInventory","setCurrentPrices","setErrors"],variantReducer=(state,reducer)=>(0,baseReducer_1.default)(state,reducer,actionType);exports.default=variantReducer;
@@ -1,6 +0,0 @@
1
- import { Items } from '../reducers/ItemReducer';
2
- export interface GetCurrentItemKey {
3
- (item: Items): string;
4
- }
5
- declare const getCurrentItemKey: GetCurrentItemKey;
6
- export default getCurrentItemKey;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const tslib_1=require("tslib"),first_1=tslib_1.__importDefault(require("lodash/first")),keys_1=tslib_1.__importDefault(require("lodash/keys")),getCurrentItemKey=item=>(0,first_1.default)((0,keys_1.default)(item))||"";exports.default=getCurrentItemKey;
@@ -1,11 +0,0 @@
1
- import { ReactNode } from 'react';
2
- interface Props {
3
- children: ReactNode;
4
- skuCode?: string | null;
5
- lineItem?: {
6
- name: string;
7
- imageUrl?: string | null;
8
- } | null;
9
- }
10
- export declare function ItemContainer(props: Props): JSX.Element;
11
- export default ItemContainer;
@@ -1 +0,0 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import{useReducer,useEffect}from"react";import ItemContext,{initialItemContext}from"../../context/ItemContext";import itemReducer,{itemInitialState,setItemState}from"../../reducers/ItemReducer";export function ItemContainer(props){const{children,skuCode,lineItem}=props,[state,dispatch]=useReducer(itemReducer,itemInitialState);useEffect(()=>{const code=skuCode;code&&setItemState(code,{type:"setSkuCode",key:"skuCode"},dispatch),lineItem&&setItemState(lineItem,{type:"setCustomLineItem",key:"lineItem"},dispatch)},[]);const itemValue={...initialItemContext,...state,setItems:items=>setItemState(items,{type:"setItems",key:"items"},dispatch),setItem:item=>setItemState(item,{type:"setItem",key:"item"},dispatch),setQuantity:item=>setItemState(item,{type:"setQuantity",key:"quantity"},dispatch),setOption:item=>setItemState(item,{type:"setOption",key:"option"},dispatch),setPrices:item=>setItemState(item,{type:"setPrices",key:"prices"},dispatch),setCustomLineItems:item=>setItemState(item,{type:"setCustomLineItems",key:"lineItems"},dispatch),setSkuCode:code=>setItemState(code,{type:"setSkuCode",key:"skuCode"},dispatch)};return _jsx(ItemContext.Provider,{value:itemValue,children})}export default ItemContainer;
@@ -1,17 +0,0 @@
1
- /// <reference types="react" />
2
- import { ChildrenFunction } from '../../typings/index';
3
- interface ChildrenProps extends Omit<Props, 'children'> {
4
- handleChange: (event: React.MouseEvent<HTMLInputElement>) => void;
5
- handleBlur: (event: React.MouseEvent<HTMLInputElement>) => void;
6
- }
7
- declare type Props = {
8
- children?: ChildrenFunction<ChildrenProps>;
9
- disabled?: boolean;
10
- min?: number;
11
- max?: number;
12
- value?: string;
13
- skuCode?: string;
14
- skuListId?: string;
15
- } & JSX.IntrinsicElements['input'];
16
- export declare function QuantitySelector(props: Props): JSX.Element;
17
- export default QuantitySelector;
@@ -1 +0,0 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import{useContext,useState,useEffect}from"react";import Parent from"../utils/Parent";import has from"lodash/has";import isEmpty from"lodash/isEmpty";import getCurrentItemKey from"../../utils/getCurrentItemKey";import ItemContext from"../../context/ItemContext";import SkuListsContext from"../../context/SkuListsContext";import SkuChildrenContext from"../../context/SkuChildrenContext";export function QuantitySelector(props){const{skuCode,skuListId,children,min=1,max,...p}=props,{item,setQuantity,items,quantity,prices,skuCode:itemSkuCode}=useContext(ItemContext),{sku}=useContext(SkuChildrenContext),{skuLists,listIds}=useContext(SkuListsContext),defaultVal=p?.value||min,[value,setValue]=useState(defaultVal),[disabled,setDisabled]=useState(!!p.disabled),sCode=!isEmpty(items)&&skuCode?items[skuCode]?.code:sku?.code||skuCode||getCurrentItemKey(item)||itemSkuCode,inventory=isEmpty(item)?50:item[sCode]?.inventory?.quantity,maxInv=max||inventory;useEffect(()=>{if(setValue(defaultVal),(!prices[sCode]||!sCode)&&setDisabled(!0),skuListId&&setDisabled(!1),sCode&&!quantity[sCode]){const qty=Number(defaultVal);setQuantity&&setQuantity({...quantity,[`${sCode}`]:qty}),!isEmpty(prices)&&has(prices,sCode)&&setDisabled(!1)}return()=>{setValue(defaultVal)}},[item,listIds,prices,quantity]);const handleChange=e=>{const qty=Number(e.target.value),valid=Number(qty)>=Number(min)&&Number(qty)<=Number(maxInv);setValue(qty),!isEmpty(skuLists)&&skuListId&&valid?setQuantity&&setQuantity({...quantity,[`${skuListId}`]:Number(qty)}):sCode&&valid&&setQuantity&&setQuantity({...quantity,[`${sCode}`]:Number(qty)})},handleBlur=e=>{const qty=e.target.value;if(!(Number(qty)>=Number(min)&&Number(qty)<=Number(maxInv))){const resetVal=Number(qty)<Number(min)?min:maxInv;resetVal&&setValue(resetVal),!isEmpty(skuLists)&&skuListId?setQuantity&&setQuantity({...quantity,[`${skuListId}`]:Number(resetVal)}):setQuantity&&setQuantity({...quantity,[`${sCode}`]:Number(resetVal)})}},parentProps={min,max:maxInv,disabled,handleChange,handleBlur,value,...props};return children?_jsx(Parent,{...parentProps,children}):_jsx("input",{type:"number",max:maxInv,min,value:value||"",disabled,onChange:handleChange,onBlur:handleBlur,...p})}export default QuantitySelector;
@@ -1,14 +0,0 @@
1
- import { ReactNode } from 'react';
2
- declare type Props = {
3
- children: ReactNode;
4
- id: string;
5
- };
6
- export declare function SkuOption(props: Props): JSX.Element;
7
- export declare namespace SkuOption {
8
- var propTypes: {
9
- children: import("prop-types").Validator<NonNullable<ReactNode | (() => JSX.Element)>>;
10
- id: import("prop-types").Validator<string>;
11
- };
12
- var displayName: string;
13
- }
14
- export default SkuOption;
@@ -1 +0,0 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import{Fragment,useContext}from"react";import SkuOptionChildrenContext from"../../context/SkuOptionChildrenContext";import SkuOptionsContext from"../../context/SkuOptionsContext";import components from"../../config/components";const propTypes=components.SkuOption.propTypes,displayName=components.SkuOption.displayName;export function SkuOption(props){const{id}=props,{skuOptions,skuCode}=useContext(SkuOptionsContext),items=skuOptions&&skuOptions.filter(l=>l.id===id).map((skuOption,k)=>_jsx(SkuOptionChildrenContext.Provider,{value:{skuOption,skuCode},children:props.children},k));return _jsx(Fragment,{children:items})}SkuOption.propTypes=propTypes,SkuOption.displayName=displayName;export default SkuOption;
@@ -1,15 +0,0 @@
1
- /// <reference types="react" />
2
- import { BaseInputComponentProps } from '../../typings/index';
3
- declare type Props = BaseInputComponentProps & JSX.IntrinsicElements['input'] & JSX.IntrinsicElements['textarea'];
4
- export declare function SkuOptionInput(props: Props): JSX.Element;
5
- export declare namespace SkuOptionInput {
6
- var propTypes: {
7
- children: import("prop-types").Requireable<(...args: any[]) => any>;
8
- name: import("prop-types").Validator<string>;
9
- type: import("prop-types").Validator<NonNullable<import("../../typings/index").BaseInputType>>;
10
- onChange: import("prop-types").Requireable<(...args: any[]) => any>;
11
- placeholder: import("prop-types").Requireable<string>;
12
- };
13
- var displayName: string;
14
- }
15
- export default SkuOptionInput;
@@ -1 +0,0 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import{useContext}from"react";import BaseInput from"../utils/BaseInput";import ItemContext from"../../context/ItemContext";import SkuOptionChildrenContext from"../../context/SkuOptionChildrenContext";import has from"lodash/has";import components from"../../config/components";const propTypes=components.SkuOptionInput.propTypes,displayName=components.SkuOptionInput.displayName;export function SkuOptionInput(props){const{name}=props,{option,setOption}=useContext(ItemContext),{skuOption,skuCode}=useContext(SkuOptionChildrenContext);return _jsx(BaseInput,{onChange:event=>{const val=event.target.value,options=has(option,`${skuCode}.${skuOption?.id}`)?option[skuCode]?.[`${skuOption?.id}`]?.options:{},o={[skuCode]:{...option[skuCode],[`${skuOption?.id}`]:{skuOptionId:skuOption?.id,options:{...options,[name]:val}}}};setOption&&setOption(o)},...props})}SkuOptionInput.propTypes=propTypes,SkuOptionInput.displayName=displayName;export default SkuOptionInput;
@@ -1,14 +0,0 @@
1
- import { ReactNode } from 'react';
2
- declare type Props = {
3
- children: ReactNode;
4
- skuCode?: string;
5
- };
6
- export declare function SkuOptionsContainer(props: Props): JSX.Element;
7
- export declare namespace SkuOptionsContainer {
8
- var propTypes: {
9
- children: import("prop-types").Validator<NonNullable<ReactNode | (() => JSX.Element)>>;
10
- skuCode: import("prop-types").Requireable<string>;
11
- };
12
- var displayName: string;
13
- }
14
- export default SkuOptionsContainer;
@@ -1 +0,0 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import{useReducer,useContext,useEffect}from"react";import SkuOptionsContext from"../../context/SkuOptionsContext";import skuOptionsReducer,{skuOptionsInitialState}from"../../reducers/SkuOptionsReducer";import CommerceLayerContext from"../../context/CommerceLayerContext";import{isEmpty}from"lodash";import getCurrentItemKey from"../../utils/getCurrentItemKey";import ItemContext from"../../context/ItemContext";import{getSkuOptions}from"../../reducers/SkuOptionsReducer";import components from"../../config/components";const propTypes=components.SkuOptionsContainer.propTypes,displayName=components.SkuOptionsContainer.displayName;export function SkuOptionsContainer(props){const{skuCode,children}=props,[state,dispatch]=useReducer(skuOptionsReducer,skuOptionsInitialState),config=useContext(CommerceLayerContext),{item,items}=useContext(ItemContext),sCode=!isEmpty(items)&&skuCode?items[skuCode]?.code:skuCode||getCurrentItemKey(item),skuOptionsValue={...state,skuCode:sCode};return useEffect(()=>(sCode&&item[sCode]?.sku_options&&getSkuOptions({skuOptions:item[sCode]?.sku_options,dispatch}),()=>{isEmpty(sCode)&&dispatch({type:"setSkuOptions",payload:{skuOptions:[]}})}),[config,sCode]),_jsx(SkuOptionsContext.Provider,{value:skuOptionsValue,children})}SkuOptionsContainer.propTypes=propTypes,SkuOptionsContainer.displayName=displayName;export default SkuOptionsContainer;
@@ -1,29 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { VariantHandleCallback } from '../utils/VariantTemplate';
3
- import { BaseSelectorType } from '../../typings/index';
4
- import { ChildrenFunction } from '../../typings/index';
5
- import { VariantsObject, SetSkuCode } from '../../reducers/VariantReducer';
6
- export interface VariantOption {
7
- label: string;
8
- code: string;
9
- lineItem?: {
10
- name: string;
11
- imageUrl?: string | null;
12
- } | null;
13
- }
14
- interface ChildrenProps extends Omit<Props, 'children'> {
15
- variants: VariantsObject;
16
- handleSelect: SetSkuCode;
17
- loading: boolean;
18
- }
19
- declare type Props = {
20
- children?: ChildrenFunction<ChildrenProps>;
21
- options: VariantOption[];
22
- type?: BaseSelectorType;
23
- loader?: ReactNode;
24
- placeholder?: string;
25
- skuCode?: string;
26
- handleCallback?: VariantHandleCallback;
27
- } & JSX.IntrinsicElements['input'] & JSX.IntrinsicElements['select'];
28
- export declare function VariantSelector(props: Props): JSX.Element;
29
- export default VariantSelector;
@@ -1 +0,0 @@
1
- import{Fragment as _Fragment,jsx as _jsx}from"react/jsx-runtime";import{useContext,useEffect}from"react";import VariantTemplate from"../utils/VariantTemplate";import Parent from"../utils/Parent";import VariantsContext from"../../context/VariantsContext";export function VariantSelector(props){const{children,type="select",placeholder,skuCode,name,options,...prs}=props,{setSkuCode,skuCode:variantSkuCode,loading,variants,setSkuCodes}=useContext(VariantsContext);useEffect(()=>(setSkuCodes&&setSkuCodes(options),()=>{setSkuCodes&&setSkuCodes([])}),[options.length]);const sCode=variantSkuCode||skuCode||"",DefaultTemplate=()=>loading?_jsx(_Fragment,{children:props.loader||"Loading..."}):_jsx(VariantTemplate,{variants,type,placeholder,skuCode:sCode,options,handleChange:setSkuCode,name,...prs});console.log("variants",variants,options);const parentProps={variants,loading:!!loading,handleSelect:setSkuCode,skuCode:sCode,...props};return children?_jsx(Parent,{...parentProps,children}):_jsx(DefaultTemplate,{})}export default VariantSelector;