@commercelayer/react-components 4.7.7 → 4.7.9-beta.0

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 (29) hide show
  1. package/lib/cjs/components/addresses/AddressCountrySelector.d.ts +5 -0
  2. package/lib/cjs/components/addresses/AddressCountrySelector.js +1 -1
  3. package/lib/cjs/components/addresses/AddressStateSelector.d.ts +7 -0
  4. package/lib/cjs/components/addresses/AddressStateSelector.js +1 -1
  5. package/lib/cjs/components/customers/CustomerAddressForm.d.ts +5 -0
  6. package/lib/cjs/components/customers/CustomerAddressForm.js +1 -1
  7. package/lib/cjs/components/line_items/LineItemsCount.js +1 -1
  8. package/lib/cjs/components/skus/AvailabilityContainer.js +1 -1
  9. package/lib/cjs/reducers/AvailabilityReducer.d.ts +1 -1
  10. package/lib/cjs/reducers/AvailabilityReducer.js +1 -1
  11. package/lib/cjs/utils/countryStateCity.d.ts +798 -5
  12. package/lib/cjs/utils/countryStateCity.js +1 -1
  13. package/lib/esm/components/addresses/AddressCountrySelector.d.ts +5 -0
  14. package/lib/esm/components/addresses/AddressCountrySelector.js +1 -1
  15. package/lib/esm/components/addresses/AddressStateSelector.d.ts +7 -0
  16. package/lib/esm/components/addresses/AddressStateSelector.js +1 -1
  17. package/lib/esm/components/customers/CustomerAddressForm.d.ts +5 -0
  18. package/lib/esm/components/customers/CustomerAddressForm.js +1 -1
  19. package/lib/esm/components/line_items/LineItemsCount.js +1 -1
  20. package/lib/esm/components/skus/AvailabilityContainer.js +1 -1
  21. package/lib/esm/reducers/AvailabilityReducer.d.ts +1 -1
  22. package/lib/esm/reducers/AvailabilityReducer.js +1 -1
  23. package/lib/esm/utils/countryStateCity.d.ts +798 -5
  24. package/lib/esm/utils/countryStateCity.js +1 -1
  25. package/package.json +1 -3
  26. package/lib/cjs/utils/isEmptyStates.d.ts +0 -1
  27. package/lib/cjs/utils/isEmptyStates.js +0 -2
  28. package/lib/esm/utils/isEmptyStates.d.ts +0 -1
  29. package/lib/esm/utils/isEmptyStates.js +0 -2
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isValidState=exports.getStateOfCountry=exports.getCountries=void 0;const countries_service_1=require("@ac-dev/countries-service"),states_service_1=require("@ac-dev/states-service");function getCountries(){return countries_service_1.Countries.getCountries({sort:{mode:"alphabetical",key:"name"}}).map(({name,iso2})=>({label:name,value:iso2}))}exports.getCountries=getCountries;function getStateOfCountry(country_code){const filters={country_code};return country_code==="IT"&&(filters.is_region=!1),states_service_1.States.getStates({filters,sort:{mode:"alphabetical",key:"name"}}).map(({name,state_code})=>({label:name.replace("Province of",""),value:state_code}))}exports.getStateOfCountry=getStateOfCountry;function isValidState(state_code,country_code){return states_service_1.States.getStates({filters:{state_code,country_code}}).length>0}exports.isValidState=isValidState;
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isEmptyStates=exports.isValidState=exports.getStateOfCountry=exports.getCountries=void 0;const tslib_1=require("tslib"),isEmpty_1=tslib_1.__importDefault(require("lodash/isEmpty"));function getCountries(countries){return!(0,isEmpty_1.default)(countries)&&countries?.every(c=>"value"in c&&"label"in c)?countries:[...defaultCountries]}exports.getCountries=getCountries;function getStateOfCountry({countryCode,states}){var _a;return(_a=Object.assign(Object.assign({},defaultStates),states)[countryCode])!==null&&_a!==void 0?_a:[]}exports.getStateOfCountry=getStateOfCountry;function isValidState({stateCode,countryCode,states}){var _a;return!!(!((_a=Object.assign(Object.assign({},defaultStates),states)[countryCode])===null||_a===void 0)&&_a.find(state=>state.value===stateCode))}exports.isValidState=isValidState;function isEmptyStates({countryCode,countriesWithPredefinedStateOptions}){return!(countriesWithPredefinedStateOptions==null||(0,isEmpty_1.default)(countriesWithPredefinedStateOptions)?Object.keys(defaultStates):countriesWithPredefinedStateOptions).includes(countryCode)}exports.isEmptyStates=isEmptyStates;const defaultCountries=[{label:"Afghanistan",value:"AF"},{label:"Aland Islands",value:"AX"},{label:"Albania",value:"AL"},{label:"Algeria",value:"DZ"},{label:"American Samoa",value:"AS"},{label:"Andorra",value:"AD"},{label:"Angola",value:"AO"},{label:"Anguilla",value:"AI"},{label:"Antarctica",value:"AQ"},{label:"Antigua And Barbuda",value:"AG"},{label:"Argentina",value:"AR"},{label:"Armenia",value:"AM"},{label:"Aruba",value:"AW"},{label:"Australia",value:"AU"},{label:"Austria",value:"AT"},{label:"Azerbaijan",value:"AZ"},{label:"Bahamas The",value:"BS"},{label:"Bahrain",value:"BH"},{label:"Bangladesh",value:"BD"},{label:"Barbados",value:"BB"},{label:"Belarus",value:"BY"},{label:"Belgium",value:"BE"},{label:"Belize",value:"BZ"},{label:"Benin",value:"BJ"},{label:"Bermuda",value:"BM"},{label:"Bhutan",value:"BT"},{label:"Bolivia",value:"BO"},{label:"Bonaire, Sint Eustatius and Saba",value:"BQ"},{label:"Bosnia and Herzegovina",value:"BA"},{label:"Botswana",value:"BW"},{label:"Bouvet Island",value:"BV"},{label:"Brazil",value:"BR"},{label:"British Indian Ocean Territory",value:"IO"},{label:"Brunei",value:"BN"},{label:"Bulgaria",value:"BG"},{label:"Burkina Faso",value:"BF"},{label:"Burundi",value:"BI"},{label:"Cambodia",value:"KH"},{label:"Cameroon",value:"CM"},{label:"Canada",value:"CA"},{label:"Cape Verde",value:"CV"},{label:"Cayman Islands",value:"KY"},{label:"Central African Republic",value:"CF"},{label:"Chad",value:"TD"},{label:"Chile",value:"CL"},{label:"China",value:"CN"},{label:"Christmas Island",value:"CX"},{label:"Cocos (Keeling) Islands",value:"CC"},{label:"Colombia",value:"CO"},{label:"Comoros",value:"KM"},{label:"Congo",value:"CG"},{label:"Cook Islands",value:"CK"},{label:"Costa Rica",value:"CR"},{label:"Cote D'Ivoire (Ivory Coast)",value:"CI"},{label:"Croatia",value:"HR"},{label:"Cuba",value:"CU"},{label:"Cura\xE7ao",value:"CW"},{label:"Cyprus",value:"CY"},{label:"Czech Republic",value:"CZ"},{label:"Democratic Republic of the Congo",value:"CD"},{label:"Denmark",value:"DK"},{label:"Djibouti",value:"DJ"},{label:"Dominica",value:"DM"},{label:"Dominican Republic",value:"DO"},{label:"East Timor",value:"TL"},{label:"Ecuador",value:"EC"},{label:"Egypt",value:"EG"},{label:"El Salvador",value:"SV"},{label:"Equatorial Guinea",value:"GQ"},{label:"Eritrea",value:"ER"},{label:"Estonia",value:"EE"},{label:"Ethiopia",value:"ET"},{label:"Falkland Islands",value:"FK"},{label:"Faroe Islands",value:"FO"},{label:"Fiji Islands",value:"FJ"},{label:"Finland",value:"FI"},{label:"France",value:"FR"},{label:"French Guiana",value:"GF"},{label:"French Polynesia",value:"PF"},{label:"French Southern Territories",value:"TF"},{label:"Gabon",value:"GA"},{label:"Gambia The",value:"GM"},{label:"Georgia",value:"GE"},{label:"Germany",value:"DE"},{label:"Ghana",value:"GH"},{label:"Gibraltar",value:"GI"},{label:"Greece",value:"GR"},{label:"Greenland",value:"GL"},{label:"Grenada",value:"GD"},{label:"Guadeloupe",value:"GP"},{label:"Guam",value:"GU"},{label:"Guatemala",value:"GT"},{label:"Guernsey and Alderney",value:"GG"},{label:"Guinea",value:"GN"},{label:"Guinea-Bissau",value:"GW"},{label:"Guyana",value:"GY"},{label:"Haiti",value:"HT"},{label:"Heard Island and McDonald Islands",value:"HM"},{label:"Honduras",value:"HN"},{label:"Hong Kong S.A.R.",value:"HK"},{label:"Hungary",value:"HU"},{label:"Iceland",value:"IS"},{label:"India",value:"IN"},{label:"Indonesia",value:"ID"},{label:"Iran",value:"IR"},{label:"Iraq",value:"IQ"},{label:"Ireland",value:"IE"},{label:"Israel",value:"IL"},{label:"Italy",value:"IT"},{label:"Jamaica",value:"JM"},{label:"Japan",value:"JP"},{label:"Jersey",value:"JE"},{label:"Jordan",value:"JO"},{label:"Kazakhstan",value:"KZ"},{label:"Kenya",value:"KE"},{label:"Kiribati",value:"KI"},{label:"Kosovo",value:"XK"},{label:"Kuwait",value:"KW"},{label:"Kyrgyzstan",value:"KG"},{label:"Laos",value:"LA"},{label:"Latvia",value:"LV"},{label:"Lebanon",value:"LB"},{label:"Lesotho",value:"LS"},{label:"Liberia",value:"LR"},{label:"Libya",value:"LY"},{label:"Liechtenstein",value:"LI"},{label:"Lithuania",value:"LT"},{label:"Luxembourg",value:"LU"},{label:"Macau S.A.R.",value:"MO"},{label:"Macedonia",value:"MK"},{label:"Madagascar",value:"MG"},{label:"Malawi",value:"MW"},{label:"Malaysia",value:"MY"},{label:"Maldives",value:"MV"},{label:"Mali",value:"ML"},{label:"Malta",value:"MT"},{label:"Man (Isle of)",value:"IM"},{label:"Marshall Islands",value:"MH"},{label:"Martinique",value:"MQ"},{label:"Mauritania",value:"MR"},{label:"Mauritius",value:"MU"},{label:"Mayotte",value:"YT"},{label:"Mexico",value:"MX"},{label:"Micronesia",value:"FM"},{label:"Moldova",value:"MD"},{label:"Monaco",value:"MC"},{label:"Mongolia",value:"MN"},{label:"Montenegro",value:"ME"},{label:"Montserrat",value:"MS"},{label:"Morocco",value:"MA"},{label:"Mozambique",value:"MZ"},{label:"Myanmar",value:"MM"},{label:"Namibia",value:"NA"},{label:"Nauru",value:"NR"},{label:"Nepal",value:"NP"},{label:"Netherlands",value:"NL"},{label:"New Caledonia",value:"NC"},{label:"New Zealand",value:"NZ"},{label:"Nicaragua",value:"NI"},{label:"Niger",value:"NE"},{label:"Nigeria",value:"NG"},{label:"Niue",value:"NU"},{label:"Norfolk Island",value:"NF"},{label:"North Korea",value:"KP"},{label:"Northern Mariana Islands",value:"MP"},{label:"Norway",value:"NO"},{label:"Oman",value:"OM"},{label:"Pakistan",value:"PK"},{label:"Palau",value:"PW"},{label:"Palestinian Territory Occupied",value:"PS"},{label:"Panama",value:"PA"},{label:"Papua new Guinea",value:"PG"},{label:"Paraguay",value:"PY"},{label:"Peru",value:"PE"},{label:"Philippines",value:"PH"},{label:"Pitcairn Island",value:"PN"},{label:"Poland",value:"PL"},{label:"Portugal",value:"PT"},{label:"Puerto Rico",value:"PR"},{label:"Qatar",value:"QA"},{label:"Reunion",value:"RE"},{label:"Romania",value:"RO"},{label:"Russia",value:"RU"},{label:"Rwanda",value:"RW"},{label:"Saint Helena",value:"SH"},{label:"Saint Kitts And Nevis",value:"KN"},{label:"Saint Lucia",value:"LC"},{label:"Saint Pierre and Miquelon",value:"PM"},{label:"Saint Vincent And The Grenadines",value:"VC"},{label:"Saint-Barthelemy",value:"BL"},{label:"Saint-Martin (French part)",value:"MF"},{label:"Samoa",value:"WS"},{label:"San Marino",value:"SM"},{label:"Sao Tome and Principe",value:"ST"},{label:"Saudi Arabia",value:"SA"},{label:"Senegal",value:"SN"},{label:"Serbia",value:"RS"},{label:"Seychelles",value:"SC"},{label:"Sierra Leone",value:"SL"},{label:"Singapore",value:"SG"},{label:"Sint Maarten (Dutch part)",value:"SX"},{label:"Slovakia",value:"SK"},{label:"Slovenia",value:"SI"},{label:"Solomon Islands",value:"SB"},{label:"Somalia",value:"SO"},{label:"South Africa",value:"ZA"},{label:"South Georgia",value:"GS"},{label:"South Korea",value:"KR"},{label:"South Sudan",value:"SS"},{label:"Spain",value:"ES"},{label:"Sri Lanka",value:"LK"},{label:"Sudan",value:"SD"},{label:"Suriname",value:"SR"},{label:"Svalbard And Jan Mayen Islands",value:"SJ"},{label:"Swaziland",value:"SZ"},{label:"Sweden",value:"SE"},{label:"Switzerland",value:"CH"},{label:"Syria",value:"SY"},{label:"Taiwan",value:"TW"},{label:"Tajikistan",value:"TJ"},{label:"Tanzania",value:"TZ"},{label:"Thailand",value:"TH"},{label:"Togo",value:"TG"},{label:"Tokelau",value:"TK"},{label:"Tonga",value:"TO"},{label:"Trinidad And Tobago",value:"TT"},{label:"Tunisia",value:"TN"},{label:"Turkey",value:"TR"},{label:"Turkmenistan",value:"TM"},{label:"Turks And Caicos Islands",value:"TC"},{label:"Tuvalu",value:"TV"},{label:"Uganda",value:"UG"},{label:"Ukraine",value:"UA"},{label:"United Arab Emirates",value:"AE"},{label:"United Kingdom",value:"GB"},{label:"United States",value:"US"},{label:"United States Minor Outlying Islands",value:"UM"},{label:"Uruguay",value:"UY"},{label:"Uzbekistan",value:"UZ"},{label:"Vanuatu",value:"VU"},{label:"Vatican City State (Holy See)",value:"VA"},{label:"Venezuela",value:"VE"},{label:"Vietnam",value:"VN"},{label:"Virgin Islands (British)",value:"VG"},{label:"Virgin Islands (US)",value:"VI"},{label:"Wallis And Futuna Islands",value:"WF"},{label:"Western Sahara",value:"EH"},{label:"Yemen",value:"YE"},{label:"Zambia",value:"ZM"},{label:"Zimbabwe",value:"ZW"}],statesIt=[{label:"Agrigento",value:"AG"},{label:"Alessandria",value:"AL"},{label:"Ancona",value:"AN"},{label:"Aosta",value:"AO"},{label:"Arezzo",value:"AR"},{label:"Ascoli Piceno",value:"AP"},{label:"Asti",value:"AT"},{label:"Avellino",value:"AV"},{label:"Bari",value:"BA"},{label:"Barletta-Andria-Trani",value:"BT"},{label:"Belluno",value:"BL"},{label:"Benevento",value:"BN"},{label:"Bergamo",value:"BG"},{label:"Biella",value:"BI"},{label:"Bologna",value:"BO"},{label:"Bolzano",value:"BZ"},{label:"Brescia",value:"BS"},{label:"Brindisi",value:"BR"},{label:"Cagliari",value:"CA"},{label:"Caltanissetta",value:"CL"},{label:"Campobasso",value:"CB"},{label:"Carbonia-Iglesias",value:"CI"},{label:"Caserta",value:"CE"},{label:"Catania",value:"CT"},{label:"Catanzaro",value:"CZ"},{label:"Chieti",value:"CH"},{label:"Como",value:"CO"},{label:"Cosenza",value:"CS"},{label:"Cremona",value:"CR"},{label:"Crotone",value:"KR"},{label:"Cuneo",value:"CN"},{label:"Enna",value:"EN"},{label:"Fermo",value:"FM"},{label:"Ferrara",value:"FE"},{label:"Florence",value:"FI"},{label:"Foggia",value:"FG"},{label:"Forl\xEC-Cesena",value:"FC"},{label:"Frosinone",value:"FR"},{label:"Genoa",value:"GE"},{label:"Gorizia",value:"GO"},{label:"Grosseto",value:"GR"},{label:"Imperia",value:"IM"},{label:"Isernia",value:"IS"},{label:" L'Aquila",value:"AQ"},{label:"La Spezia",value:"SP"},{label:"Latina",value:"LT"},{label:"Lecce",value:"LE"},{label:"Lecco",value:"LC"},{label:"Livorno",value:"LI"},{label:"Lodi",value:"LO"},{label:"Lucca",value:"LU"},{label:"Macerata",value:"MC"},{label:"Mantua",value:"MN"},{label:"Massa and Carrara",value:"MS"},{label:"Matera",value:"MT"},{label:"Medio Campidano",value:"VS"},{label:"Messina",value:"ME"},{label:"Milan",value:"MI"},{label:"Modena",value:"MO"},{label:"Monza and Brianza",value:"MB"},{label:"Naples",value:"NA"},{label:"Novara",value:"NO"},{label:"Nuoro",value:"NU"},{label:"Ogliastra",value:"OG"},{label:"Olbia-Tempio",value:"OT"},{label:"Oristano",value:"OR"},{label:"Padua",value:"PD"},{label:"Palermo",value:"PA"},{label:"Parma",value:"PR"},{label:"Pavia",value:"PV"},{label:"Perugia",value:"PG"},{label:"Pesaro and Urbino",value:"PU"},{label:"Pescara",value:"PE"},{label:"Piacenza",value:"PC"},{label:"Pisa",value:"PI"},{label:"Pistoia",value:"PT"},{label:"Pordenone",value:"PN"},{label:"Potenza",value:"PZ"},{label:"Prato",value:"PO"},{label:"Ragusa",value:"RG"},{label:"Ravenna",value:"RA"},{label:"Reggio Calabria",value:"RC"},{label:"Reggio Emilia",value:"RE"},{label:"Rieti",value:"RI"},{label:"Rimini",value:"RN"},{label:"Rome",value:"RM"},{label:"Rovigo",value:"RO"},{label:"Salerno",value:"SA"},{label:"Sassari",value:"SS"},{label:"Savona",value:"SV"},{label:"Siena",value:"SI"},{label:"Sondrio",value:"SO"},{label:"South Sardinia",value:"SU"},{label:"Syracuse",value:"SR"},{label:"Taranto",value:"TA"},{label:"Teramo",value:"TE"},{label:"Terni",value:"TR"},{label:"Trapani",value:"TP"},{label:"Trento",value:"TN"},{label:"Treviso",value:"TV"},{label:"Trieste",value:"TS"},{label:"Turin",value:"TO"},{label:"Udine",value:"UD"},{label:"Varese",value:"VA"},{label:"Venice",value:"VE"},{label:"Verbano-Cusio-Ossola",value:"VB"},{label:"Vercelli",value:"VC"},{label:"Verona",value:"VR"},{label:"Vibo Valentia",value:"VV"},{label:"Vicenza",value:"VI"},{label:"Viterbo",value:"VT"}],statesUs=[{label:"Alabama",value:"AL"},{label:"Alaska",value:"AK"},{label:"Arizona",value:"AZ"},{label:"Arkansas",value:"AR"},{label:"California",value:"CA"},{label:"Colorado",value:"CO"},{label:"Connecticut",value:"CT"},{label:"Delaware",value:"DE"},{label:"District of Columbia",value:"DC"},{label:"Florida",value:"FL"},{label:"Georgia",value:"GA"},{label:"Hawaii",value:"HI"},{label:"Idaho",value:"ID"},{label:"Illinois",value:"IL"},{label:"Indiana",value:"IN"},{label:"Iowa",value:"IA"},{label:"Kansas",value:"KS"},{label:"Kentucky",value:"KY"},{label:"Louisiana",value:"LA"},{label:"Maine",value:"ME"},{label:"Maryland",value:"MD"},{label:"Massachusetts",value:"MA"},{label:"Michigan",value:"MI"},{label:"Minnesota",value:"MN"},{label:"Mississippi",value:"MS"},{label:"Missouri",value:"MO"},{label:"Montana",value:"MT"},{label:"Nebraska",value:"NE"},{label:"Nevada",value:"NV"},{label:"New Hampshire",value:"NH"},{label:"New Jersey",value:"NJ"},{label:"New Mexico",value:"NM"},{label:"New York",value:"NY"},{label:"North Carolina",value:"NC"},{label:"North Dakota",value:"ND"},{label:"Ohio",value:"OH"},{label:"Oklahoma",value:"OK"},{label:"Oregon",value:"OR"},{label:"Pennsylvania",value:"PA"},{label:"Rhode Island",value:"RI"},{label:"South Carolina",value:"SC"},{label:"South Dakota",value:"SD"},{label:"Tennessee",value:"TN"},{label:"Texas",value:"TX"},{label:"Utah",value:"UT"},{label:"Vermont",value:"VT"},{label:"Virginia",value:"VA"},{label:"Washington",value:"WA"},{label:"West Virginia",value:"WV"},{label:"Wisconsin",value:"WI"},{label:"Wyoming",value:"WY"}],defaultStates={US:statesUs,IT:statesIt};
@@ -1,10 +1,15 @@
1
1
  import { type BaseSelectComponentProps } from '../../typings/index';
2
2
  import { type AddressValuesKeys } from '../../context/BillingAddressFormContext';
3
+ import { type Country } from '../../utils/countryStateCity';
3
4
  type TCountryFieldName = 'billing_address_country_code' | 'shipping_address_country_code' | 'customer_address_country_code';
4
5
  interface Props extends Omit<BaseSelectComponentProps, 'options' | 'name'>, Pick<JSX.IntrinsicElements['select'], 'className' | 'id' | 'style'> {
5
6
  name: Extract<AddressValuesKeys, TCountryFieldName>;
6
7
  required?: boolean;
7
8
  disabled?: boolean;
9
+ /**
10
+ * Optional country list to override default ones.
11
+ */
12
+ countries?: Country[];
8
13
  }
9
14
  export declare function AddressCountrySelector(props: Props): JSX.Element;
10
15
  export default AddressCountrySelector;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{jsx as _jsx}from"react/jsx-runtime";import{useContext,useEffect,useMemo}from"react";import BaseSelect from"../utils/BaseSelect";import BillingAddressFormContext from"../../context/BillingAddressFormContext";import ShippingAddressFormContext from"../../context/ShippingAddressFormContext";import{getCountries}from"../../utils/countryStateCity";import CustomerAddressFormContext from"../../context/CustomerAddressFormContext";export function AddressCountrySelector(props){const{required=!0,value,name,className,...p}=props,billingAddress=useContext(BillingAddressFormContext),shippingAddress=useContext(ShippingAddressFormContext),customerAddress=useContext(CustomerAddressFormContext);useEffect(()=>{value&&billingAddress?.setValue&&billingAddress.setValue(name,value),value&&shippingAddress?.setValue&&shippingAddress.setValue(name,value),value&&customerAddress?.setValue&&customerAddress.setValue(name,value)},[value]);const hasError=useMemo(()=>!!(billingAddress?.errors?.[name]?.error||shippingAddress?.errors?.[name]?.error||customerAddress?.errors?.[name]?.error),[value,billingAddress?.errors,shippingAddress?.errors,customerAddress?.errors]),errorClassName=billingAddress?.errorClassName||shippingAddress?.errorClassName||customerAddress?.errorClassName,classNameComputed=`${className??""} ${hasError&&errorClassName?errorClassName:""}`;return _jsx(BaseSelect,{className:classNameComputed,ref:billingAddress?.validation||shippingAddress?.validation||customerAddress?.validation,required,options:getCountries(),name,value,...p})}export default AddressCountrySelector;
2
+ import{jsx as _jsx}from"react/jsx-runtime";import{useContext,useEffect,useMemo}from"react";import BaseSelect from"../utils/BaseSelect";import BillingAddressFormContext from"../../context/BillingAddressFormContext";import ShippingAddressFormContext from"../../context/ShippingAddressFormContext";import{getCountries}from"../../utils/countryStateCity";import CustomerAddressFormContext from"../../context/CustomerAddressFormContext";export function AddressCountrySelector(props){const{required=!0,value,name,className,countries,...p}=props,billingAddress=useContext(BillingAddressFormContext),shippingAddress=useContext(ShippingAddressFormContext),customerAddress=useContext(CustomerAddressFormContext);useEffect(()=>{value&&billingAddress?.setValue&&billingAddress.setValue(name,value),value&&shippingAddress?.setValue&&shippingAddress.setValue(name,value),value&&customerAddress?.setValue&&customerAddress.setValue(name,value)},[value]);const hasError=useMemo(()=>!!(billingAddress?.errors?.[name]?.error||shippingAddress?.errors?.[name]?.error||customerAddress?.errors?.[name]?.error),[value,billingAddress?.errors,shippingAddress?.errors,customerAddress?.errors]),errorClassName=billingAddress?.errorClassName||shippingAddress?.errorClassName||customerAddress?.errorClassName,classNameComputed=`${className??""} ${hasError&&errorClassName?errorClassName:""}`;return _jsx(BaseSelect,{className:classNameComputed,ref:billingAddress?.validation||shippingAddress?.validation||customerAddress?.validation,required,options:getCountries(countries),name,value,...p})}export default AddressCountrySelector;
@@ -1,10 +1,17 @@
1
1
  import { type AddressStateSelectName, type BaseSelectComponentProps } from '../../typings/index';
2
+ import { type States } from '../../utils/countryStateCity';
2
3
  type Props = Omit<BaseSelectComponentProps, 'options' | 'name'> & {
3
4
  name: AddressStateSelectName;
4
5
  required?: boolean;
5
6
  disabled?: boolean;
6
7
  inputClassName?: string;
7
8
  selectClassName?: string;
9
+ /**
10
+ * Optional states list to extend the default one.
11
+ * This component will try to render a select getting as options the states found for the selected country.
12
+ * If the country has no states, it will render a text input field instead.
13
+ */
14
+ states?: States;
8
15
  } & Pick<JSX.IntrinsicElements['select'], 'className' | 'id' | 'style'>;
9
16
  export declare function AddressStateSelector(props: Props): JSX.Element;
10
17
  export default AddressStateSelector;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{jsx as _jsx}from"react/jsx-runtime";import{useContext,useEffect,useState}from"react";import BaseSelect from"../utils/BaseSelect";import BillingAddressFormContext from"../../context/BillingAddressFormContext";import ShippingAddressFormContext from"../../context/ShippingAddressFormContext";import isEmpty from"lodash/isEmpty";import{getStateOfCountry,isValidState}from"../../utils/countryStateCity";import isEmptyStates from"../../utils/isEmptyStates";import AddressesContext from"../../context/AddressContext";import BaseInput from"../utils/BaseInput";import CustomerAddressFormContext from"../../context/CustomerAddressFormContext";export function AddressStateSelector(props){const{required=!0,value,name,className="",inputClassName="",selectClassName="",...p}=props,billingAddress=useContext(BillingAddressFormContext),shippingAddress=useContext(ShippingAddressFormContext),customerAddress=useContext(CustomerAddressFormContext),{errors:addressErrors}=useContext(AddressesContext),[hasError,setHasError]=useState(!1),[countryCode,setCountryCode]=useState(""),[val,setVal]=useState(value||"");useEffect(()=>{const billingCountryCode=typeof billingAddress?.values?.billing_address_country_code=="string"?billingAddress?.values?.billing_address_country_code:billingAddress?.values?.billing_address_country_code?.value;billingCountryCode&&billingCountryCode!==countryCode&&setCountryCode(billingCountryCode);const shippingCountryCode=typeof shippingAddress?.values?.shipping_address_country_code=="string"?shippingAddress?.values?.shipping_address_country_code:shippingAddress?.values?.shipping_address_country_code?.value;if(shippingCountryCode&&shippingCountryCode!==countryCode&&setCountryCode(shippingCountryCode),[Object.keys(billingAddress).length>0,billingCountryCode,countryCode!==billingCountryCode].every(Boolean)&&billingCountryCode&&!isValidState(val,billingCountryCode)&&!isEmptyStates(billingCountryCode)&&(billingAddress.resetField&&billingAddress?.resetField(name),setVal("")),[!isEmpty(shippingAddress),shippingCountryCode,countryCode!==shippingCountryCode].every(Boolean)&&shippingCountryCode&&!isValidState(val,shippingCountryCode)&&!isEmptyStates(shippingCountryCode)&&(shippingAddress.resetField&&shippingAddress?.resetField(name),setVal("")),!isEmpty(billingAddress)){const fieldError=billingAddress?.errors?.[name]?.error;setHasError(!!fieldError)}if(!isEmpty(customerAddress)){const fieldError=customerAddress?.errors?.[name]?.error;setHasError(!!fieldError)}if(!isEmpty(shippingAddress)){const fieldError=shippingAddress?.errors?.[name]?.error;setHasError(!!fieldError)}return()=>{setHasError(!1)}},[value,billingAddress,shippingAddress,addressErrors,customerAddress]);const errorClassName=billingAddress?.errorClassName||shippingAddress?.errorClassName||customerAddress?.errorClassName||"",classNameComputed=isEmptyStates(countryCode)?`${className} ${inputClassName} ${hasError?errorClassName:""}`:`${className} ${selectClassName} ${hasError?errorClassName:""}`;return isEmptyStates(countryCode)?_jsx(BaseInput,{...p,name,ref:billingAddress?.validation||shippingAddress?.validation||customerAddress?.validation,className:classNameComputed,required,placeholder:p.placeholder?.label||"",defaultValue:val,type:"text"}):_jsx(BaseSelect,{...p,className:classNameComputed,ref:billingAddress?.validation||shippingAddress?.validation||customerAddress?.validation,required,options:getStateOfCountry(countryCode),name,value:val})}export default AddressStateSelector;
2
+ import{jsx as _jsx}from"react/jsx-runtime";import{useContext,useEffect,useMemo,useState}from"react";import BaseSelect from"../utils/BaseSelect";import BillingAddressFormContext from"../../context/BillingAddressFormContext";import ShippingAddressFormContext from"../../context/ShippingAddressFormContext";import isEmpty from"lodash/isEmpty";import{getStateOfCountry,isValidState}from"../../utils/countryStateCity";import AddressesContext from"../../context/AddressContext";import BaseInput from"../utils/BaseInput";import CustomerAddressFormContext from"../../context/CustomerAddressFormContext";export function AddressStateSelector(props){const{required=!0,value,name,className="",inputClassName="",selectClassName="",states,...p}=props,billingAddress=useContext(BillingAddressFormContext),shippingAddress=useContext(ShippingAddressFormContext),customerAddress=useContext(CustomerAddressFormContext),{errors:addressErrors}=useContext(AddressesContext),[hasError,setHasError]=useState(!1),[countryCode,setCountryCode]=useState(""),[val,setVal]=useState(value||""),stateOptions=useMemo(()=>isEmpty(countryCode)?[]:getStateOfCountry({countryCode,states}),[states,countryCode]),isEmptyStates=useMemo(()=>()=>isEmpty(stateOptions),[stateOptions]);useEffect(()=>{const billingCountryCode=typeof billingAddress?.values?.billing_address_country_code=="string"?billingAddress?.values?.billing_address_country_code:billingAddress?.values?.billing_address_country_code?.value;billingCountryCode&&billingCountryCode!==countryCode&&setCountryCode(billingCountryCode);const shippingCountryCode=typeof shippingAddress?.values?.shipping_address_country_code=="string"?shippingAddress?.values?.shipping_address_country_code:shippingAddress?.values?.shipping_address_country_code?.value;if(shippingCountryCode&&shippingCountryCode!==countryCode&&setCountryCode(shippingCountryCode),[Object.keys(billingAddress).length>0,billingCountryCode,countryCode!==billingCountryCode].every(Boolean)&&billingCountryCode&&!isValidState({stateCode:val,countryCode:billingCountryCode,states})&&!isEmptyStates()&&(billingAddress.resetField&&billingAddress?.resetField(name),setVal("")),[!isEmpty(shippingAddress),shippingCountryCode,countryCode!==shippingCountryCode].every(Boolean)&&shippingCountryCode&&!isValidState({stateCode:val,countryCode:shippingCountryCode,states})&&!isEmptyStates()&&(shippingAddress.resetField&&shippingAddress?.resetField(name),setVal("")),!isEmpty(billingAddress)){const fieldError=billingAddress?.errors?.[name]?.error;setHasError(!!fieldError)}if(!isEmpty(customerAddress)){const fieldError=customerAddress?.errors?.[name]?.error;setHasError(!!fieldError)}if(!isEmpty(shippingAddress)){const fieldError=shippingAddress?.errors?.[name]?.error;setHasError(!!fieldError)}return()=>{setHasError(!1)}},[value,billingAddress,shippingAddress,addressErrors,customerAddress]);const errorClassName=billingAddress?.errorClassName||shippingAddress?.errorClassName||customerAddress?.errorClassName||"",classNameComputed=isEmptyStates()?`${className} ${inputClassName} ${hasError?errorClassName:""}`:`${className} ${selectClassName} ${hasError?errorClassName:""}`;return isEmptyStates()?_jsx(BaseInput,{...p,name,ref:billingAddress?.validation||shippingAddress?.validation||customerAddress?.validation,className:classNameComputed,required,placeholder:p.placeholder?.label||"",defaultValue:val,type:"text"}):_jsx(BaseSelect,{...p,className:classNameComputed,ref:billingAddress?.validation||shippingAddress?.validation||customerAddress?.validation,required,options:stateOptions,name,value:val})}export default AddressStateSelector;
@@ -3,6 +3,11 @@ interface Props extends Omit<JSX.IntrinsicElements['form'], 'onSubmit'> {
3
3
  children: ReactNode;
4
4
  reset?: boolean;
5
5
  errorClassName?: string;
6
+ /**
7
+ * Array of countries that have states has select options. Ignore this if you are not overriding the default states list.
8
+ * If you are overriding the default states list, you must pass the countries that have states as select options.
9
+ */
10
+ countriesWithPredefinedStateOptions?: string[];
6
11
  }
7
12
  export declare function CustomerAddressForm(props: Props): JSX.Element;
8
13
  export default CustomerAddressForm;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{jsx as _jsx}from"react/jsx-runtime";import AddressesContext from"../../context/AddressContext";import{useRapidForm}from"rapid-form";import{useContext,useEffect,useRef}from"react";import CustomerAddressFormContext from"../../context/CustomerAddressFormContext";import OrderContext from"../../context/OrderContext";import isEmptyStates from"../../utils/isEmptyStates";export function CustomerAddressForm(props){const{children,errorClassName,autoComplete="on",reset=!1,...p}=props,{validation,values,errors,reset:resetForm}=useRapidForm(),{setAddressErrors,setAddress}=useContext(AddressesContext),{order}=useContext(OrderContext),ref=useRef(null);useEffect(()=>{if(Object.keys(errors).length>0){const formErrors=[];for(const fieldName in errors){const code=errors[fieldName]?.code,message=errors[fieldName]?.message||"";fieldName==="billing_address_state_code"?values.state_code?delete errors[fieldName]:formErrors.push({code,message,resource:"billing_address",field:fieldName}):formErrors.push({code,message,resource:"billing_address",field:fieldName})}setAddressErrors(formErrors,"billing_address")}else if(Object.keys(values).length>0){setAddressErrors([],"billing_address");for(const name in values){const field=values[name];if(field?.value&&(values[name.replace("billing_address_","")]=field.value,delete values[name]),["billing_address_state_code"].includes(name)){const countryCode=values.billing_address_country_code?.value||values.country_code;!isEmptyStates(countryCode)&&!field.value&&delete values.billing_address_state_code}}setAddress({values,resource:"billing_address"})}reset&&(Object.keys(values).length>0||Object.keys(errors).length>0)&&ref&&(ref.current?.reset(),resetForm({target:ref.current}),setAddressErrors([],"billing_address"),setAddress({values:{},resource:"billing_address"}))},[errors,values,reset]);const providerValues={values,validation,setValue:(name,value)=>{const field={[name.replace("billing_address_","")]:value};setAddress({values:{...values,...field},resource:"billing_address"})},errorClassName,requiresBillingInfo:order?.requires_billing_info||!1,errors,resetField:name=>{resetForm({currentTarget:ref.current},name)}};return _jsx(CustomerAddressFormContext.Provider,{value:providerValues,children:_jsx("form",{ref,autoComplete,...p,children})})}export default CustomerAddressForm;
2
+ import{jsx as _jsx}from"react/jsx-runtime";import AddressesContext from"../../context/AddressContext";import{useRapidForm}from"rapid-form";import{useContext,useEffect,useRef}from"react";import CustomerAddressFormContext from"../../context/CustomerAddressFormContext";import OrderContext from"../../context/OrderContext";import{isEmptyStates}from"../../utils/countryStateCity";export function CustomerAddressForm(props){const{children,errorClassName,autoComplete="on",reset=!1,countriesWithPredefinedStateOptions,...p}=props,{validation,values,errors,reset:resetForm}=useRapidForm(),{setAddressErrors,setAddress}=useContext(AddressesContext),{order}=useContext(OrderContext),ref=useRef(null);useEffect(()=>{if(Object.keys(errors).length>0){const formErrors=[];for(const fieldName in errors){const code=errors[fieldName]?.code,message=errors[fieldName]?.message||"";fieldName==="billing_address_state_code"?values.state_code?delete errors[fieldName]:formErrors.push({code,message,resource:"billing_address",field:fieldName}):formErrors.push({code,message,resource:"billing_address",field:fieldName})}setAddressErrors(formErrors,"billing_address")}else if(Object.keys(values).length>0){setAddressErrors([],"billing_address");for(const name in values){const field=values[name];if(field?.value&&(values[name.replace("billing_address_","")]=field.value,delete values[name]),["billing_address_state_code"].includes(name)){const countryCode=values.billing_address_country_code?.value||values.country_code;!isEmptyStates({countryCode,countriesWithPredefinedStateOptions})&&!field.value&&delete values.billing_address_state_code}}setAddress({values,resource:"billing_address"})}reset&&(Object.keys(values).length>0||Object.keys(errors).length>0)&&ref&&(ref.current?.reset(),resetForm({target:ref.current}),setAddressErrors([],"billing_address"),setAddress({values:{},resource:"billing_address"}))},[errors,values,reset]);const providerValues={values,validation,setValue:(name,value)=>{const field={[name.replace("billing_address_","")]:value};setAddress({values:{...values,...field},resource:"billing_address"})},errorClassName,requiresBillingInfo:order?.requires_billing_info||!1,errors,resetField:name=>{resetForm({currentTarget:ref.current},name)}};return _jsx(CustomerAddressFormContext.Provider,{value:providerValues,children:_jsx("form",{ref,autoComplete,...p,children})})}export default CustomerAddressForm;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{jsx as _jsx}from"react/jsx-runtime";import{useState,useEffect}from"react";import Parent from"../utils/Parent";import getLineItemsCount from"../../utils/getLineItemsCount";import LineItemContext from"../../context/LineItemContext";import useCustomContext from"../../utils/hooks/useCustomContext";export function LineItemsCount(props){const{children,typeAccepted,...p}=props,{lineItems}=useCustomContext({context:LineItemContext,contextComponentName:"LineItemsContainer",currentComponentName:"LineItemsCount",key:"lineItems"});console.log("lineItems",lineItems);const[quantity,setQuantity]=useState(0);useEffect(()=>{if(lineItems&&lineItems.length>0){const qty=getLineItemsCount({lineItems:lineItems||[],typeAccepted});setQuantity(qty)}return()=>{setQuantity(0)}},[lineItems,typeAccepted]);const parentProps={quantity,typeAccepted,...p};return children?_jsx(Parent,{...parentProps,children}):_jsx("span",{...p,children:quantity})}export default LineItemsCount;
2
+ import{jsx as _jsx}from"react/jsx-runtime";import{useState,useEffect}from"react";import Parent from"../utils/Parent";import getLineItemsCount from"../../utils/getLineItemsCount";import LineItemContext from"../../context/LineItemContext";import useCustomContext from"../../utils/hooks/useCustomContext";export function LineItemsCount(props){const{children,typeAccepted,...p}=props,{lineItems}=useCustomContext({context:LineItemContext,contextComponentName:"LineItemsContainer",currentComponentName:"LineItemsCount",key:"lineItems"}),[quantity,setQuantity]=useState(0);useEffect(()=>{if(lineItems&&lineItems.length>0){const qty=getLineItemsCount({lineItems:lineItems||[],typeAccepted});setQuantity(qty)}return()=>{setQuantity(0)}},[lineItems,typeAccepted]);const parentProps={quantity,typeAccepted,...p};return children?_jsx(Parent,{...parentProps,children}):_jsx("span",{...p,children:quantity})}export default LineItemsCount;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{jsx as _jsx}from"react/jsx-runtime";import{useContext,useReducer,useEffect,useMemo}from"react";import availabilityReducer,{availabilityInitialState,getAvailability}from"../../reducers/AvailabilityReducer";import AvailabilityContext from"../../context/AvailabilityContext";import CommerceLayerContext from"../../context/CommerceLayerContext";import LineItemChildrenContext from"../../context/LineItemChildrenContext";import SkuChildrenContext from"../../context/SkuChildrenContext";import useCustomContext from"../../utils/hooks/useCustomContext";export function AvailabilityContainer({children,skuCode,skuId,getQuantity}){const{lineItem}=useContext(LineItemChildrenContext),{sku}=useContext(SkuChildrenContext),{accessToken,endpoint}=useCustomContext({context:CommerceLayerContext,contextComponentName:"CommerceLayer",currentComponentName:"AvailabilityContainer",key:"accessToken"}),[state,dispatch]=useReducer(availabilityReducer,availabilityInitialState),sCode=skuCode||lineItem?.sku_code||sku?.code;useEffect(()=>(accessToken!=null&&accessToken!==""&&sCode&&getAvailability({skuCode:sCode,skuId,config:{accessToken,endpoint},dispatch}),()=>{dispatch({type:"setAvailability",payload:{}})}),[accessToken,sCode,skuId]),useEffect(()=>{getQuantity!=null&&state?.quantity!=null&&getQuantity(state?.quantity)},[state.quantity]);const memoized=useMemo(()=>({...state,parent:!0}),[state]);return _jsx(AvailabilityContext.Provider,{value:memoized,children})}export default AvailabilityContainer;
2
+ import{jsx as _jsx}from"react/jsx-runtime";import{useContext,useReducer,useEffect,useMemo}from"react";import availabilityReducer,{availabilityInitialState,getAvailability}from"../../reducers/AvailabilityReducer";import AvailabilityContext from"../../context/AvailabilityContext";import CommerceLayerContext from"../../context/CommerceLayerContext";import LineItemChildrenContext from"../../context/LineItemChildrenContext";import SkuChildrenContext from"../../context/SkuChildrenContext";import useCustomContext from"../../utils/hooks/useCustomContext";export function AvailabilityContainer({children,skuCode,skuId,getQuantity}){const{lineItem}=useContext(LineItemChildrenContext),{sku}=useContext(SkuChildrenContext),{accessToken,endpoint}=useCustomContext({context:CommerceLayerContext,contextComponentName:"CommerceLayer",currentComponentName:"AvailabilityContainer",key:"accessToken"}),[state,dispatch]=useReducer(availabilityReducer,availabilityInitialState),sCode=skuCode||lineItem?.sku_code||sku?.code;useEffect(()=>{if(accessToken!=null&&accessToken!==""){const config={accessToken,endpoint};(sCode!=null||skuId!=null)&&getAvailability({skuCode:sCode,skuId,config,dispatch})}return()=>{dispatch({type:"setAvailability",payload:{}})}},[accessToken,sCode,skuId]),useEffect(()=>{getQuantity!=null&&state?.quantity!=null&&getQuantity(state?.quantity)},[state.quantity]);const memoized=useMemo(()=>({...state,parent:!0}),[state]);return _jsx(AvailabilityContext.Provider,{value:memoized,children})}export default AvailabilityContainer;
@@ -43,7 +43,7 @@ export interface AvailabilityAction {
43
43
  }
44
44
  export declare const availabilityInitialState: AvailabilityState;
45
45
  export declare function getAvailability({ skuCode, skuId, dispatch, config }: {
46
- skuCode: string;
46
+ skuCode?: string;
47
47
  skuId?: string;
48
48
  dispatch: Dispatch<AvailabilityAction>;
49
49
  config: CommerceLayerConfig;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import baseReducer from"../utils/baseReducer";import getSdk from"../utils/getSdk";export const availabilityInitialState={};export async function getAvailability({skuCode,skuId,dispatch,config}){const sdk=getSdk(config);try{const[sku]=skuId!=null?[{id:skuId}]:await sdk.skus.list({fields:{skus:["id"]},filters:{code_in:skuCode}});if(sku){const skuInventory=await sdk.skus.retrieve(sku.id,{fields:{skus:["inventory"]}}),[level]=skuInventory.inventory?.levels||[],[delivery]=level?.delivery_lead_times||[];dispatch({type:"setAvailability",payload:{...delivery,quantity:skuInventory.inventory.quantity,skuCode}})}}catch(error){console.error("Get SKU availability",error)}}const typeAction=["setAvailability","setErrors"],availabilityReducer=(state,reducer)=>baseReducer(state,reducer,typeAction);export default availabilityReducer;
2
+ import baseReducer from"../utils/baseReducer";import getSdk from"../utils/getSdk";export const availabilityInitialState={};export async function getAvailability({skuCode,skuId,dispatch,config}){const sdk=getSdk(config);try{const[sku]=skuId!=null?[{id:skuId}]:skuCode!=null?await sdk.skus.list({fields:{skus:["id"]},filters:{code_in:skuCode}}):[];if(sku){const skuInventory=await sdk.skus.retrieve(sku.id,{fields:{skus:["inventory"]}}),[level]=skuInventory.inventory?.levels||[],[delivery]=level?.delivery_lead_times||[];dispatch({type:"setAvailability",payload:{...delivery,quantity:skuInventory.inventory.quantity,skuCode}})}}catch(error){console.error("Get SKU availability",error)}}const typeAction=["setAvailability","setErrors"],availabilityReducer=(state,reducer)=>baseReducer(state,reducer,typeAction);export default availabilityReducer;