{"version":3,"sources":["Components/checkout/components/tooltip/Tooltip.jsx","Components/checkout/Features/Summary/checkout.module.css","Components/checkout/components/Layout/CheckoutSectionHeader.jsx","Components/checkout/components/Layout/CheckoutSectionBody.jsx","Components/checkout/components/Layout/CheckoutSection.jsx","Components/checkout/components/RadioInput/RadioInput.jsx","Components/checkout/components/styles.js","Components/checkout/components/OptionList/OptionListItemButtonWithOwnComponent.jsx","Components/checkout/components/OptionList/OptionListItemRadio.jsx","Components/checkout/components/FormComponents/TextFormEntry.jsx","Components/checkout/components/FormComponents/StateInput.jsx","Components/checkout/components/FormComponents/NumberInputSelect.jsx","Components/checkout/components/formatHelpers.js","Components/checkout/GlobalStateContainer/actions.js","Components/checkout/Features/UserMessaging/messagesListActionCreators.js","Components/checkout/componentAnimations/fadeInOut.jsx","Components/checkout/Features/UserMessaging/MessagesList.jsx","Components/checkout/Features/UserMessaging/userAlertTypes.js","Components/checkout/Features/UserMessaging/MessagesListContainer.js","Components/checkout/GlobalStateContainer/asyncActionHelpers.js","Components/util/listUtility.js","Components/checkout/Features/Cart/cartReducers.js","Components/checkout/Features/Summary/summaryReducers.js","Components/checkout/Features/UserMessaging/userMessagingReducers.js","Components/checkout/GlobalStateContainer/reducers.js","Components/checkout/Features/Address/addressReducers.js","Components/checkout/Features/PaymentMethod/paymentMethodReducers.js","Components/checkout/Features/ShippingMethod/shippingMethodReducers.js","Components/checkout/Features/Coupon/couponReducers.js","Components/checkout/Features/PlaceOrder/placeOrderReducers.js","Components/checkout/Features/TermsAndConditions/termsAndCondtionsReducers.js","Components/checkout/GlobalStateContainer/uiReducers.js","Components/checkout/Features/Coupon/CheckoutCoupon.jsx","Components/checkout/Features/Coupon/couponActionCreators.js","Components/checkout/Features/Coupon/CheckoutCouponContainer.js","Components/checkout/Features/Coupon/CheckoutExpandedCouponContainer.js","Components/checkout/Features/Cart/propTypes.js","Components/checkout/Features/Cart/TitlesIncludedInLicense.jsx","Components/checkout/Features/Cart/CartItem.jsx","Components/checkout/Features/Cart/cartActionCreators.js","Components/checkout/Features/Cart/CartList.jsx","Components/checkout/Features/Address/addressActionCreators.js","Components/checkout/Features/Address/propTypes.js","Components/checkout/Features/Address/AddressDisplay.jsx","Components/checkout/Features/Address/ActiveAddressInAddressSelectorList.jsx","Components/checkout/Features/Address/ActiveAddressInAddressSelectorListContainer.js","Components/checkout/Features/Address/AddressSelectorList.jsx","Components/checkout/Features/Address/AddressEditor.jsx","Components/checkout/Features/Address/AddressEditorContainer.js","Components/checkout/Features/Address/CheckoutAddressComponent.jsx","Components/checkout/Features/Address/CheckoutBillingAddressContainer.jsx","Components/checkout/Features/Address/CheckoutShippingAddressContainer.jsx","Components/checkout/Features/PlaceOrder/placeOrderActionCreators.js","Components/checkout/Features/PlaceOrder/mapStateToPlaceOrderDetails.js","Components/checkout/Features/PlaceOrder/CheckoutComplete.jsx","Components/checkout/Features/Validation/OrderDetailsValidation.js","Components/checkout/Features/Validation/OrderValidators.js","Components/checkout/Features/PlaceOrder/CheckoutCompleteContainer.js","Components/checkout/Features/Summary/CheckoutSummary.jsx","Components/checkout/Features/Summary/checkoutSummaryActions.js","Components/checkout/Features/Summary/CheckoutSummaryContainer.js","Components/checkout/Features/ShippingMethod/shippingMethodActions.js","Components/checkout/Features/ShippingMethod/CheckoutShipmentPresentation.jsx","Components/checkout/Features/ShippingMethod/CheckoutShipment.jsx","Components/checkout/Features/PaymentMethod/paymentMethodActionCreators.js","Components/checkout/Features/PaymentMethod/BraintreePaymentComponent.jsx","Components/checkout/Features/PaymentMethod/PurchaseOrderComponent.jsx","Components/checkout/Features/PaymentMethod/CheckoutPayment.jsx","Components/checkout/Features/PaymentMethod/EBizChargePaymentComponent.jsx","Components/checkout/Features/Navigation/CheckoutNavigation.jsx","Components/checkout/Features/Navigation/navigationActionCreators.js","Components/checkout/Features/Navigation/CheckoutContinue.jsx","Components/checkout/Features/Navigation/CheckoutContinueContainer.js","Components/checkout/Features/Navigation/mapStateToContinueOrderDetails.js","Components/checkout/Features/TermsAndConditions/CheckoutTermsAndCondtions.jsx","Components/checkout/Features/TermsAndConditions/termsAndCondtionsActionCreators.js","Components/checkout/Features/CheckoutPromoGiftCard.jsx","Components/checkout/components/Layout/CheckoutPageHeader.jsx","Components/checkout/Features/CheckoutComponents.jsx","Components/util/propTypeShapes.js","Components/checkout/GlobalStateContainer/mapTopLevelPropsToInitialStore.js","Components/checkout/CheckoutApp.jsx","Components/checkout/index.js","Components/search/components/WithClickTracking.jsx","Components/search/Features/Articles/Article.jsx","Components/search/components/MoreButton.jsx","Components/search/components/DropdownOption.js","Components/search/Features/Facets/Facet.jsx","Components/search/Features/Facets/Facets.jsx","Components/search/components/SortByDropdown.jsx","Components/search/Features/Pagination/PaginationContainer.jsx","Components/search/Features/Articles/ArticleSearchResultsContainer.jsx","Components/search/Features/Articles/ArticleSearchResults.jsx","Components/search/components/PerPageDropdown.jsx","Components/search/Features/Products/PaginationContainer.jsx","Components/search/Features/Products/ProductTile.jsx","Components/search/Features/Products/ProductTileContainer.jsx","Components/search/Features/Facets/MobileSelectedFacets.jsx","Components/search/Features/Products/ProductSearchResultsContainer.jsx","Components/search/Features/Products/ProductSearchResultsNonFound.jsx","Components/search/Features/Products/ProductSearchResults.jsx","Components/search/components/Loading.jsx","Components/search/components/WithLoading.jsx","Components/search/Features/Combined/CombinedSearchResults.jsx","Components/search/constants/index.js","Components/search/Infrastructure/urlBuilder.js","Components/search/Infrastructure/modelBuilder.js","Components/search/Features/Articles/ArticleSearchResultsNonFound.jsx","Components/util/zaiusUtility.js","Components/search/SearchApp.jsx","Components/search/Infrastructure/find.js","Components/wishlists/Features/EditList/EditListModalLink.jsx","Components/wishlists/WishlistsTab.jsx","Components/wishlists/Features/NewList/NewListModalLink.jsx","Components/wishlists/WishlistsTabList.jsx","Components/wishlists/WishlistProduct.jsx","Components/wishlists/Features/ListsModal/ListsModalLink.jsx","Components/wishlists/Features/PrintModal/PrintModalLink.jsx","Components/util/miniCartClient.js","Components/wishlists/WishlistsTabPanels.jsx","Components/wishlists/Features/NewList/NewListModal.jsx","Components/wishlists/Features/ListsModal/ModalTab.jsx","Components/wishlists/Features/ListsModal/ModalTabList.jsx","Components/wishlists/Features/ListsModal/ModalTabPanels.jsx","Components/wishlists/Features/ListsModal/ListsModal.jsx","Components/wishlists/Features/EditList/EditListModal.jsx","Components/wishlists/Features/CopyModal/CopyModalTab.jsx","Components/wishlists/Features/CopyModal/CopyModal.jsx","Components/wishlists/Features/PrintModal/PrintModal.jsx","Components/wishlists/Components/Notification.jsx","Components/wishlists/WishlistsApp.jsx","Components/quickorder/Features/QuickOrderEntry.jsx","Components/SharedComponents/componentAnimations/fadeInOut.jsx","Components/SharedComponents/UserMessaging/MessagesList.jsx","Components/SharedComponents/UserMessaging/userAlertTypes.js","Components/quickorder/QuickOrderApp.jsx","Components/quickorder/index.js","Components/typeahead/TypeaheadEntry.jsx","Components/typeahead/urlBuilder.js","Components/typeahead/TypeaheadResults.jsx","Components/typeahead/closeKeyboardOnScroll.js","Components/typeahead/TypeaheadApp.jsx","Components/shared/AddToCartButton.jsx","Components/reorder/Product.jsx","Components/reorder/Order.jsx","Components/reorder/ReorderApp.jsx","Components/reorder/index.js","Components/addtowishlist/ModalLink.jsx","Components/addtowishlist/ModalTab.jsx","Components/addtowishlist/AddToModal.jsx","Components/addtowishlist/AddToWishlistApp.jsx","Components/util/axiosUtility.js","index.js","shims/polyfills.js","Components/util/translationUtility.js","Components/util/fetchUtility.js","Components/wishlists/Components/NewListInput.jsx","Components/util/guidUtility.js","Components/wishlists/Components/ProductItem.jsx","Components/util/catalystFormDataBuilder.js","Components/customers/ExtendedProperty/Fields/CheckBoxBooleanField.tsx","Components/customers/ExtendedProperty/Fields/CurrencyField.tsx","Components/customers/ExtendedProperty/Fields/DateField.tsx","Components/customers/ExtendedProperty/Fields/DateTimeField.tsx","Components/customers/ExtendedProperty/Fields/DecimalField.tsx","Components/customers/ExtendedProperty/Fields/DropdownBooleanField.tsx","Components/customers/ExtendedProperty/Fields/DurationField.tsx","Components/customers/ExtendedProperty/Fields/EmailField.tsx","Components/customers/ExtendedProperty/Fields/GuidField.tsx","Components/customers/ExtendedProperty/Fields/IntegerField.tsx","Components/customers/ExtendedProperty/Fields/LongTextField.tsx","Components/businessFoundation/axiom/module/js/components/Form/Item/index.js","Components/businessFoundation/axiom/module/js/components/Icon/icon-types.js","Components/businessFoundation/axiom/module/js/components/Icon/custom-icons.js","Components/businessFoundation/axiom/module/js/components/Icon/icon.js","Components/businessFoundation/axiom/module/js/components/Link/index.js","Components/businessFoundation/axiom/module/js/components/Spinner/index.js","Components/businessFoundation/axiom/module/js/components/Button/index.js","Components/businessFoundation/axiom/module/js/components/PaginationControls/index.js","Components/businessFoundation/axiom/module/js/components/Typography/typography.js","Components/businessFoundation/axiom/module/js/utils/accessibility.js","Components/businessFoundation/axiom/module/js/tokens/forimport/index.es.js","Components/businessFoundation/axiom/module/js/components/ButtonIcon/index.js","Components/businessFoundation/axiom/module/js/components/Attention/index.js","Components/businessFoundation/axiom/module/js/components/ButtonRow/index.js","Components/businessFoundation/axiom/module/js/components/CloseButton/index.js","Components/businessFoundation/axiom/module/js/components/Sheet/index.js","Components/businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel.ts","Components/customers/ExtendedProperty/Fields/ReferenceDataDialog.tsx","Components/customers/ExtendedProperty/Fields/ReferenceField.tsx","Components/customers/ExtendedProperty/Fields/TextField.tsx","Components/customers/ExtendedProperty/Fields/UrlField.tsx","Components/customers/ExtendedProperty/ExtendedProperty.tsx","Components/customers/AddressManager/model/address.ts","Components/customers/AddressManager/services/addressService.ts","Components/customers/AddressManager/reducers/asyncThunks.ts","Components/customers/AddressManager/reducers/addressFormReducer.ts","Components/customers/AddressManager/reducers/addressListReducer.ts","Components/customers/EnumManager/services/enumService.ts","Components/customers/EnumManager/reducers/asyncThunks.ts","Components/customers/ContactManager/model/contact.ts","Components/customers/ContactManager/services/contactService.ts","Components/customers/ContactManager/reducers/asyncThunks.ts","Components/customers/ContactManager/reducers/contactDetailReducer.ts","Components/customers/ContactManager/reducers/contactListReducer.ts","Components/customers/ContactManager/reducers/userAccountAssignmentsReducer.ts","Components/customers/ContactManager/reducers/addAssignmentsToUserReducer.ts","Components/customers/ContactNoteManager/services/contactNoteService.ts","Components/customers/ContactNoteManager/reducers/asyncThunks.ts","Components/customers/ContactNoteManager/reducers/contactNoteManagerReducer.ts","Components/customers/EnumManager/reducers/enumFormReducer.ts","Components/customers/EnumManager/reducers/enumManagerReducer.ts","Components/customers/OrganizationManager/services/organizationService.ts","Components/customers/OrganizationManager/reducers/asyncThunks.ts","Components/customers/OrganizationManager/reducers/addChildOrganizationsReducer.ts","Components/customers/OrganizationManager/reducers/addContactsToOrganizationReducer.ts","Components/customers/OrganizationManager/reducers/childOrganizationListReducer.ts","Components/customers/OrganizationManager/reducers/contactListInOrganizationReducer.ts","Components/customers/OrganizationManager/reducers/organizationDetailReducer.ts","Components/customers/OrganizationManager/model/organization.ts","Components/customers/OrganizationManager/reducers/organizationListReducer.ts","Components/customers/store.ts","Components/customers/hooks.ts","Components/customers/AddressManager/components/AddressList.tsx","Components/customers/ContactNoteManager/components/ContactNoteManager.tsx","Components/customers/ContactManager/components/AddParentOrganization.tsx","Components/customers/ContactManager/components/AddAssignmentsToUser.tsx","Components/customers/ContactManager/components/UserAccountAssignments.tsx","Components/customers/ContactManager/components/ContactDetail.tsx","Components/customers/ContactManager/components/ContactList.tsx","Components/customers/EnumManager/components/EnumForm.tsx","Components/customers/EnumManager/components/EnumList.tsx","Components/customers/OrganizationManager/components/OrganizationList.tsx","Components/customers/OrganizationManager/components/AddContactsToOrganization.tsx","Components/customers/OrganizationManager/components/ContactListInOrganization.tsx","Components/customers/OrganizationManager/components/OrganizationDetail.tsx","Components/customers/AddressManager/components/AddressForm.tsx","Components/customers/CustomersApp.tsx"],"names":["Tooltip","text","useState","show","setShow","className","class","style","display","onMouseOver","onMouseOut","module","exports","CheckoutSectionHeader","label","toolTip","defaultStyle","styleWithNoBorder","border","padding","backgroundColor","CheckoutSectionBody","children","hideBodyBorder","CheckoutSection","classname","hidden","toLowerCase","replace","marginBottom","RadioInput","React","Component","componentDidMount","require","render","type","checked","this","props","selected","onClick","readOnly","hiddenAnchorStyle","color","textDecoration","fontWeight","verticalAlign","textAlign","justifyContent","width","lineHeight","height","textTransform","fontSize","optionListItemStyle","listStyle","pretendAnchorStyle","flexMiddle","OptionListItemRadio","id","isSelected","value","key","e","preventDefault","TextFormEntry","constructor","super","inputIsRequired","isRequired","name","state","isOpen","p","isNumberInput","inputId","inputIsInvalid","isInvalid","autocomplete","placeholder","input","onInput","onChange","autoComplete","pattern","required","htmlFor","setState","defaultProps","StateInput","states","find","s","Code","matchedByName","Name","length","map","StateDropdownWrapper","_handleChange","event","eventValue","target","countriesStatesMap","CountryCode","statesListContains","val","i","formatMoney","currencyCode","amount","Number","isNaN","toLocaleString","currency","NOTIFY_ERROR","UPDATE_ADDRESS","messageId","notifyError","message","diagnosticMessage","console","error","trace","notifyWarning","log","notifyCompleteCheckoutError","logError","transition","opacity","transitionStyles","entering","entered","Fade","inProp","disableAnimation","in","timeout","mountOnEnter","unmountOnExit","appear","getHeaderYOffset","header","document","getElementById","headerHeight","getBoundingClientRect","parseInt","window","getComputedStyle","paddingTop","MessagesList","visibleMessages","componentWillReceiveProps","nextProps","oldMessages","messages","every","cur","some","msg","Id","scrollToLast","componentDidUpdate","prevProps","highestMessageId","reduce","max","messageWithHighestId","findDOMNode","refs","toString","el","innerWidth","elemTop","top","elemBottom","bottom","innerHeight","isScrolledIntoView","element","headerYOffset","offsetPosition","scrollY","scrollTo","behavior","scrollToElement","dismissed","role","marginTop","ref","data-dismiss","aria-label","onDismiss","aria-hidden","split","line","filter","x","MessagesListContainer","connect","ui","dispatch","onDismissAll","fetchJson","spec","data","getState","notify","extract","onError","onSuccess","init","endpoint","Error","validateArguments","fetchInit","merge","makeCatalystFetchPostInit","Object","assign","fetch","then","response","ok","status","statusText","responseExtracted","addToList","list","newElement","hasOwnProperty","concat","elt","removeFromList","elementToRemove","removeFromListById","replaceInList","valueToReplace","newValue","includes","replaceInListById","elementToUpdateId","findIndex","emptySummary","Total","SubTotal","Discount","ShippingTotal","Currency","TotalRemaining","DiscountTotal","mapActionTypeToUserAlertType","actionType","entities","combineReducers","Addresses","action","address","addressId","BillingAddresses","SelectedBillingAddressId","ShippingAddresses","ID","SelectedShippingAddressId","CartItems","item","itemId","Quantity","newQuantity","RequiredPartnerIds","requiredPartnerIds","PaymentOptions","SelectedPaymentOptionId","paymentMethodId","PaymentRecord","BraintreePaymentNonce","payload","nonce","BraintreePaymentPayload","POValue","number","EbizChargePaymentStatus","EBizChargePaymentWebFormUrl","Url","FetchingEBizChargePaymentWebFormUrl","EBizChargePaymentWebFormError","ShippingOptions","shippingOptions","SelectedShippingOptionId","isRefreshingShippingOptions","Summary","summary","isRefreshingSummary","Coupons","coupons","useShippingForBilling","translateResourceString","m","isPlaceOrderPending","termsAndConditions","PhoneNumber","PhoneText","completeCheckoutButtonText","onPaymentScreen","checkoutApp","constants","CheckoutCoupon","isCollapsed","isExpanded","newCouponCode","currentCouponCode","onClickChange","onKeyPress","addCoupon","onAddCoupon","alert","removeCoupon","code","onRemoveCoupon","newProps","isEqual","placeOrderDetailsChanged","updateCoupons","Fragment","appliedCoupons","c","addCouponAsync","navigation","addCouponEndpoint","method","credentials","json","Applied","updateCouponsAsync","onAddCouponSuccess","Description","diagMsg","removeCouponAsync","removeCouponEndpoint","onRemoveCouponSuccess","couponsEndpoint","CheckoutCouponContainer","allowCoupons","partnerIdTooltip","CheckoutExpandedCouponContainer","RequiresPartnerId","PropTypes","shape","Price","string","SKU","TitlesIncludedInLicense","toggleModal","removeTitleFromLicense","skuToRemove","confirm","deleteFromLicenseUrl","lineItemId","resp","hasError","titles","title","variantCode","catch","err","Message","fetchData","a","url","jsonData","bind","format","href","Modal","toggle","centered","contentClassName","ModalHeader","ModalBody","CartItem","onQuantityChange","qty","onDelete","matchedRestrictedQuantity","RestrictedQuantities","rq","Value","quantity","Text","data-line-item-id","Link","alt","src","ImageUrl","LicenceDuration","LicenseDuration","Language","IsStopWorkshop","QtyMessage","TitlesIncluded","LineItemId","titlesIncludedInLicenseUrl","isEditable","updateItemQuantity","updateItemQuantityAsync","updateItemQuantityEndpoint","deleteItemAsync","deleteItemEndpoint","updateRequiredPartnerIdsAsync","requiredPartnerIdsEndpoint","numberOfRequiredPartnerIds","CartListContainer","items","titlesIncludedInLicenseEndpoint","prevQty","cartItems","nextAddressId","setAddressIdIfMissing","newAddress","addBillingAddress","addressWithIdOrError","addShippingAddress","selectBillingAddress","selectShippingAddress","setShippingAddressEndpoint","responseText","toUpperCase","updateAddress","saveAddress","addAddressEndpoint","postedAddress","isValidGuid","deleteAddress","deleteAddressEndpoint","AddressType","BillingAddressType","removeBillingAddress","removeShippingAddress","AddressActionCreatorsShape","propTypes","add","func","select","remove","update","AddressShape","AddressLine1","AddressLine2","City","CountryName","Phone","PostalCode","State","spanStyleCompact","marginLeft","marginRight","spanStyle","addressStyleCompact","margin","addressStyle","AddressDisplay","min","compact","nameEmph","addr","cityStateZip","si","sj","r","paddingLeft","paddingRight","paddingBottom","ActiveAddressInAddressSelectorList","onSelected","onRadioSelected","onBeginEdit","selectAddressMessage","AddressSelectorListActiveAddressContainer","ownProps","selectAddressActionCreator","onDeleted","deleteAddressActionCreator","bool","AddressSelectorList","activeAddressId","onItemClick","beginEdit","onAddressSelected","onDoneSelecting","listComponent","listItems","addresses","selectedAddressId","alignItems","useForAnotherSelected","allowAdding","AddressSelectorListContainer","addressActionCreators","requiredFields","AddressEditor","addressType","submitAttempted","invalidFields","originalId","validationRun","handleChange","handleCountryChange","onSubmit","validateField","indexOf","fieldName","warn","countryWithCode","countries","checkValidity","invalidFieldNames","keys","errorMessage","join","onEditOk","inputName","selectedAddress","countryOptions","country","submitted","disabled","onEditCancel","AddressEditorContainer","addressAction","newId","onAddressUpdated","onAddressCreated","AddressActionCreators","CheckoutAddressComponent","listCollapsed","editId","onClickCollapse","onEndEdit","editOpen","editAddressButtonText","sectionLabel","minHeight","allowSelect","cursor","allowBillingEqualsShipping","onUseForAnotherClicked","useForAnotherMessage","allowEdit","CheckoutBillingAddressContainer","allowAddingBillingAddresses","allowEditingBillingAddresses","billingAddressTooltip","CheckoutShippingAddressContainer","allowAddingShippingAddresses","ShippingAddressType","allowEditingShippingAddresses","IsPhysical","completeCheckoutAsync","placeOrderEndpoint","placeOrderDetails","responseObject","Success","location","orderConfirmationUrl","order","OrderNumber","JSON","stringify","mapStateToPlaceOrderDetails","shippingAddress","billingAddress","shippingOption","so","SelectedPayment","SelectedShippingAddress","SelectedBillingAddress","SelectedShippingOption","BillingEqualsShipping","PartnerIds","IsPartnerIdDiscount","TermsAndConditions","IsPartnerIdRequired","IsShippingRequired","IsTermsAndConditionsRequired","IsLicense","IsStopWorkShop","CheckoutComplete","onCompleteCheckout","additionalClassname","usingPo","buttonText","validate","orderDetails","validators","validator","partnerIdValidator","termsAndConditionsValidator","selectedShippingAddressValidator","billingEqualsShipping","selectedStopworkShopValidator","internationalShippingAddressValidator","selectedBillingAddressValidator","SelectedBillingAddressCanBeSubmitted","selectedShippingOptionValidator","selectedPaymentValidator","paymentIsInvalid","totalValidator","addressIsMissingIdOrRequiredData","braintreeSettings","braintreePaymentId","orderCanContinueValidators","orderCanBeSubmittedValidators","CheckoutCompleteContainer","backButtonText","continueButtonText","purchaseOrderPaymentId","errors","intro","acc","CheckoutSummary","ShippingMethod","TaxTotal","isRefreshing","formatCurrency","refreshSummary","cartSummaryEndpoint","CheckoutSummaryContainer","shippingMethodChanged","selectedShippingOptionId","shippingAddressChanged","selectedShippingAddressId","deepEquals","cart","dependenciesChanged","createElement","getSummaryErrorMessage","ConnectedCheckoutSummary","onGetSummaryError","selectShippingMethod","setShippingMethodEndpoint","shippingOptionsAreInvalid","arr","Set","refreshShippingOptionsAsync","refreshShippingOptionsEndpoint","invalidMessage","CheckoutShipmentPresentation","selectedId","isPendingRefresh","isStopWorkshop","sm","CheckoutShipment","prevState","deepEqual","onIsStale","canChange","CheckoutShipmentContainer","shippingAddressId","selectPaymentOption","displayName","updatePurchaseOrderNumber","fetchEBizChargeWebFormUrl","eBizChargeWebFormUrlEndpoint","onFetchEBizChargeWebFormUrlError","BraintreePaymentComponent","initBraintree","onBraintreeLoadTimeout","onClientTokenReceived","onClickSuccess","onDropinCreated","onStartOver","dropin","btInitializing","dropinInstance","paymentMethodAvailable","btLoaded","componentWillUnmount","teardown","onPaymentCancel","createErr","onCreateDropinError","isPaymentMethodRequestable","on","token","dropinConfig","locale","usePaypal","usePaypalCredit","braintreePaypalFlow","inLocale1","navigator","language","authorization","container","inLocale","supportedLocales","preferredLocale","found","forEach","idx","substring","getSupportedLocale","card","vault","allowVaultCardOverride","paypalConfig","flow","paypal","paypalCredit","makeDropinConfig","settings","create","logDevError","setTimeout","onBrainteeLoadTimeout","clientTokenEndpoint","braintreeClientTokenEndpoint","clientTokenResult","Token","onClientTokenFailed","canRetry","ErrorMessage","requestPaymentMethod","onSuccessNoDropin","getPaymentErr","onSuccesfulRequest","content","onPurchaseOrderChange","poNumber","tabIndex","BraintreePaymentComponentWrapper","serverMessage","retryMessage","diagnosticText","onPaymentIsValid","updateBraintreePaymentData","PurchaseOrderComponentContainer","CheckoutPayment","onItemSelected","onCancelClick","paymentOption","methods","pm","getById","paymentOptions","paymentOptionComponent","onCancel","selectedPaymentOptionId","visible","PaymentOptionComponent","formatPayment","formatters","det","firstName","lastName","email","formatPaypalPayloadDetailsForSummary","details","description","eBizChargePaymentMethodId","formatter","CheckoutPaymentContainer","allowPurchaseOrder","minimumCartValueForPO","checkIsStopWorkShop","po","selectedDisplay","EBizChargePaymentComponent","fetchEBizChargeWebFormUrlIfNeeded","handleMessage","addEventListener","removeEventListener","eBizChargePaymentWebFormError","fetchingEBizChargePaymentWebFormUrl","eBizChargePaymentWebFormUrl","origin","allowedOrigin","MessageType","handleEBizChargePayment","scrolling","overflow","EBizChargePaymentComponentContainer","URL","searchParams","append","Declined","CheckoutNavigation","onToShipping","cartLink","onShippingScreen","CheckoutNavigationContainer","shoppingCartUrl","onToPayment","CheckoutContinue","onContinueClick","CheckoutContinueContainer","SelectedProduct","mapStateToContinueOrderDetails","subTotal","isPurchaseOrderAllowed","isStopworkpoblock","filteredPaymentOptions","CheckoutTermsAndCondtions","toggleTermsAndCondtions","unCheckTermsAndConditions","checkTermsAndConditions","termsUrl","CheckoutTermsAndCondtionsContainer","CheckoutPromoGiftCard","CheckoutPageHeader","Components","docWidth","docTop","documentElement","clientWidth","affixedElt","conteainerElt","setAttribute","containerClientRect","affixedWidth","$","hasAffix","classList","contains","checkoutIsEmpty","shapeWithIdOfString","shapeWithIdOfAny","any","arrayOf","isAllUniqueValues","iteratee","uniqBy","initialDataIsInvalid","initialData","paymentOptionsAreInvalid","ci","cartItemsAreInvalid","mapTopLevelPropsToInitialStoreState","addResourceStrings","localizationItems","BraintreeClientSettings","BraintreePaymentOptionId","PurchaseOrderComponent","AllowBillingEqualsShipping","selectedBillingAddressId","CouponViewModels","SelectedShippingMethodId","MyAccountLink","checkoutUrl","ReceiptUrl","updateQuantityEndpoint","setBillingAndShippingAddressEndpoint","BraintreePaypalEnabled","BraintreePaypalCreditEnabled","BraintreePaypalFlow","Checkout","initialStoreState","store","createStore","composeWithDevTools","applyMiddleware","thunkMiddleware","createLogger","CheckoutComponents","checkout","WithClickTracking","withClickTracking","onResultClick","HitId","rest","Article","Title","CategoryButtonText","CategoryDisplayName","dangerouslySetInnerHTML","__html","propType","MoreButton","Button","block","DropdownOption","plus","minus","Facet","componentWillMount","expanded","values","onAttributeChange","onToggleFacetExpanded","showMore","updateOnToggle","onToggleShowMore","disableToggle","symbol","sizeToShow","Math","showShowMore","Collapse","slice","k","checkedCss","Checked","DisplayName","Facets","attributes","onClearAttributes","expandedFacets","showMoreFacets","onToggleShowMoreFacet","attribute","Values","SortByDropdown","dropdownOpen","CurrentSortBy","onCurrentSortByChange","sortOptions","option","selectedSort","Dropdown","DropdownToggle","DropdownMenu","DropdownItem","PaginationContainer","paginationViewModel","lastItemNumber","CurrentItemsOnPage","paginationText","ResultsTotal","selectedAttributes","checkedValue","push","sortBy","ArticleSearchResultsContainer","articles","onCurrentItemsPerPageChange","searchString","expandedArticleFacets","nextRequest","article_sort_options","article","ArticleWithClickTracking","Count","CurrentPageIndex","CurrentItemsPerPage","onPerPageChange","onPageChange","ArticleSearchResults","onCurrentPageIndexChange","firstProductNumber","lastProductNumber","ProductTile","image","priceViewModel","formats","languages","imageUrl","Alt","ProductTileWithClickTracking","ProductTileContainer","products","product","Image","Formats","Languages","MobileSelectedFacets","selectedAttributeValueArrays","attributeName","attributeValueName","mergedAttributeValueArrays","apply","showMobileSelectedFacets","ProductSearchResultsContainer","recommendedProducts","onShowMobileFacetsChange","categoryName","categoryImageUrl","categoryImageAltText","categoryDescription","promotionalArea","PerMoreAmount","categoryDescriptionHtml","promotionalAreaHtml","productSortOptions","RecommendationId","ProductSearchResultsNonFound","ProductSearchResults","Loading","WithLoading","withLoading","isLoading","CombinedSearchResults","articlePaginationViewModel","onArticleCurrentItemsPerPageChange","onArticleCurrentPageIndexChange","productAttributes","onProductAttributeChange","onProductCurrentItemsPerPageChange","onProductCurrentSortByChange","onArticleCurrentSortByChange","onProductCurrentPageIndexChange","productPaginationViewModel","view","onChangeView","expandedProductFacets","onToggleProductFacetExpanded","disableProducts","showArticles","showProducts","NavItem","NavLink","TabContent","activeTab","TabPane","tabId","ArticleSearchResultsWithLoading","ProductSearchResultsWithLoading","showMobileFacets","buildAttributesQueryString","prev","current","serialize","obj","encodeURIComponent","buildSelectedAttributesFromModel","attributeValue","buildFacetNamesFromModel","ArticleSearchResultsNonFound","windowZaius","zaius","zaiusUtility","event_type","args_object","SearchApp","SearchString","FindClickTracking","Articles","View","Products","CategoryFacets","Attributes","ProductFilters","selectedProductAttributes","ProductItems","PaginationViewModel","ArticleItemViewModels","findClickTrackingViewModel","buildStateFromModel","onClearProductAttributes","onArticleAttributeChange","onShowMobileFacetsToggle","hasSearchString","isCategory","apiEndpoint","ApiEndpoint","clickTrackingApiEndpoint","ClickTrackingApiEndpoint","trackId","TrackId","twoLetterLanguageCode","TwoLetterLanguageCode","siteDefinitionId","SiteDefinitionId","contentLinkId","ContentLinkId","ImageAltText","LocalizationItems","history","createHistory","listen","fetchProductsUsingUrl","search","search_term","updateState","searchResults","updateUrl","queryString","queryParams","productAttributesQueryString","articleAttributesQueryString","ac","articlePageIndex","articlePageSize","sa","sp","aq","pq","buildQueryString","result","selectedAttribute","splice","changes","newOptions","requestedSortBy","requestedItemsPerPage","requestedPageIndex","floor","hitId","searchTerm","trackClick","SearchTerm","facetName","index","suggestions","categories","selectedCategory","openCategories","suggestion","onAddToCartClick","EditListModalLink","AdditionalClasses","Color","Size","ToggleEditListModal","size","EditListModalIsOpen","ListName","WishlistsTab","IsActive","NewListModalLink","ToggleNewListModal","WishlistsTabList","Lists","ActiveTabIndex","array","WishlistProduct","ListPrice","ListIndex","RemoveProduct","ToggleCopyModal","ProductCommand","ListId","PricesAreHidden","UpdateQty","AddToCart","TotalPrice","isUpdating","useRef","prepareCopyData","removeAfter","ProductId","RemoveAfter","defaultValue","data-toggle","aria-haspopup","aria-expanded","x-placement","AddToCartEndpoint","ListsModalLink","LinkText","ToggleListsModal","PrintModalLink","TogglePrintModal","miniCart","MiniCart","client","refresh","hide","refreshAndShow","WishlistsTabPanels","UpdateLists","AddListToCartEndpoint","UpdateProductEndpoint","RemoveItemEndpoint","itemsUpdating","setItemsUpdating","quantityUpdateRequests","setQuantityUpdateRequests","useEffect","handleUpdateQtyRequest","removeProduct","sku","listIndex","Items","Remove","axios","post","makeAxiosCatalystPostData","listName","defaultAxiosCatalystPostConfig","newItems","newList","updateProducts","miniCartClient","setItemUpdating","itemSku","request","shift","handleUpdateQtyResponse","updateProductQty","productIndex","addListToCart","j","NewListModal","IsOpen","SelectActiveTab","CreateListEndpoint","wrapTag","tag","NewListInput","ModalTab","ModalTabList","ModalTabPanels","ProductItem","ListsModal","ListsModalIsOpen","selectedIndex","onSelect","tabsRole","EditListModal","RenameListEndpoint","DeleteListEndpoint","AddItemEndpoint","newListName","copyListNumber","increaseCopyListNumber","updateAndClose","Save","oldListName","saveList","Delete","deleteList","ModalFooter","trim","parse","skus","Copy","CopyModalTab","CopyProduct","CopyModal","CopyModalIsOpen","ToggleNotification","CopyItemNotificationText","MoveItemNotificationText","originalListIndex","copyProduct","targetListName","closeModal","TargetListName","AddProduct","PrintModal","PrintModalIsOpen","HidePrices","printSetting","wrapClassName","print","Notification","Alert","IsHidden","WishlistsApp","Wishlists","updateLists","NewListModalIsOpen","toggleNewListModal","toggleListsModal","toggleCopyModal","togglePrintModal","hidePrices","toggleEditListModal","selectActiveTab","toggleNotification","StockAvailability","QuickOrderEntry","onSelectSuggestedItem","onSkuSet","translationUtility","quantityValue","isSkuValidated","selectedSku","query","showAutocomplete","hasFocus","searchCompleted","autocompleteItems","itemLabel","itemName","searchedQueryLength","searchedQuery","onFocus","onFocusChanged","onBlur","onQueryChange","left","Sku","UrlImage","VariationName","MatchedField","minQuantity","maxQuantity","onQuantityBlur","hideCloseButton","deleteRow","scrollIntoView","createUserMessage","QuickOrderApp","rows","entries","onEntryQueryChange","ignoreChange","isEmpty","isValid","handleQueryChanged","clearTimeout","timer","getAutocompleteItems","onEntrySkuSet","updatedEntries","MinQty","itemMinQty","itemMaxQty","MaxQty","createEntry","addRow","entriesCopy","currentEntry","onAddItemsToCart","isAddingToCart","addToCartPromises","entriesAdded","addItemToCart","Promise","all","finally","userMessages","updateMiniCart","resolve","statusCode","onDismissMessage","renderLoginMessage","LoginPageLink","RegistrationPageLink","AutocompleteEndpoint","TranslationUtility","createGuid","entry","isSubmitting","addToCartLabel","entriesLength","invalidEntries","ent","UserIsAuthorized","BulkUploadUrl","quickOrderApp","TypeaheadEntry","typeaheadEntryClass","classNames","buildSearchTermUrl","searchSubmitLink","TypeaheadResults","searchTerms","currentSearchTerm","closeKeyboardOnScroll","activeElement","blur","scrollUp","TypeaheadApp","results","searchKey","showSuggestions","showMobileSearch","requests","onSearchChange","needsToSearch","fetchResults","onFocusMobile","setWrapperRef","handleClickOutside","fetchIntervalId","onMobileSearchClick","onDesktopSearchClick","onCancelMobileSearchClick","hideDocumentOverflow","node","wrapperRef","setResults","SearchTerms","Categories","ApiEndPoint","form","submit","flattenResults","currentResults","body","showDesktopSearch","SearchSubmitLink","searchResultsToShow","resultsKey","anyResults","autoFocus","AddToCartButton","addingToCart","handleAddToCart","handleAddToCartError","handleAddToCartSuccess","addToCartEndpoint","Product","Order","productsToShowCount","startOpen","LineItemCount","reordering","fetchedAll","fetching","fetchProducts","handleViewAllItemsInOrder","handleReorder","handleReorderError","handleReorderSuccess","productToFetchCount","ProductsApiEndpoint","ReorderCartEndpoint","orderNumber","reOrdering","OrderDate","Reorder","orderCount","OrderCount","orders","OrdersApiEndpoint","reorder","ModalLink","ClassName","SrText","ToggleModal","AddToModal","ModalIsOpen","SetLinkClass","SetSrText","SetLinkText","LoginLink","errorClass","addToListText","addedToListText","addProduct","getElementsByClassName","isInteger","requestData","modalBody","AddToWishlistApp","AddListEndpoint","linkClass","setLinkClass","srText","setSrText","linkText","setLinkText","makeFormData","headers","global","ReactDOM","ReactDOMServer","Search","Typeahead","reorderApp","AddToWishlist","QuickOrder","Contacts","CustomersApp","Organizations","Users","Accounts","String","prototype","padStart","targetLength","padString","repeat","start","Array","defineProperty","searchElement","fromIndex","TypeError","o","len","y","n","abs","predicate","thisArg","arguments","kValue","call","configurable","writable","itemKey","translation","Key","undefined","formatChars","formatUnicorn","clientTranslationStrings","resourceStrings","str","t","args","RegExp","formDataToBody","Create","createList","guidRegex","test","crypto","msCrypto","getRandomValues","Uint8Array","random","rel","formData","FormData","Blob","URLSearchParams","addArray","prefix","datum","addData","addArrayElement","isArray","getOwnPropertyNames","addObject","CheckBoxBooleanField","property","control","data-oui-component","friendlyName","field","validationData","CurrencyField","setValue","toFixed","rules","isNullable","allowNegative","outlined","helperText","extendedProperties","invalid","DateField","v","minValue","parseFloat","maxValue","checkValue","DateTimeField","timeValue","DecimalField","DropdownBooleanField","options","trueText","falseText","onValueChange","DurationField","_val","hours","round","minutes","convertToString","EmailField","maxLength","GuidField","IntegerField","LongTextField","_extends","source","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","Item","_ref","testSection","brandIcons","AppPushIcon","_ref$weight","weight","mobileIcon","arrowLeftLongIcon","LayeredIcons","Icon","OutlinedIcon","transform","WebPushIcon","_ref2","displayIcon","memo","customIcon","_ref$color","iconBaseColor","strippedName","endsWith","FontAwesomeIcon","icon","_ref2$outlineColor","outlineColor","brandBackgroundPrimaryColor","stroke","_ref3","_defineProperty","enumerable","_classNames","ariaLabel","leftIcon","_ref$isDisabled","isDisabled","_ref$isFullWidth","isFullWidth","_ref$newWindow","newWindow","rightIcon","classes","leftIconComp","rightIconComp","Spinner","hasOverlay","_ref$size","spinner","brandPrimaryColor","ariaHasPopup","buttonRef","isActive","isLink","isSubmit","loadingText","onMouseDown","_ref$width","buttonClassNames","leftIconClasses","rightIconClasses","_typeof","Symbol","iterator","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_possibleConstructorReturn","self","_assertThisInitialized","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","ReferenceError","_setPrototypeOf","PaginationControls","_Component","_getPrototypeOf2","_this","_len","_key","newPage","_this$props","goToPage","protoProps","staticProps","subClass","superClass","_inherits","_this$props2","currentPage","totalSlots","totalPages","sanitizedTotalPages","sanitizedTotalSlots","buffer","remainingSlotsToFill","_this$getCoercedInput","getCoercedInputs","currentPageIsCloseToBack","currentPageIsCloseToFront","ellipsesRequired","pageNumbers","_","times","activePage","distanceBetweenCurrentAndActivePages","frontEllipsesEligible","backEllipsesEligible","flatten","pageNumber","hrefBaseUrl","_this2","_this$props3","_this$getCoercedInput2","fillPageSlots","ariaLabelString","ariaLabelSuffix","isCurrent","getHrefUrl","handlePageChange","previousButton","nextButton","_this$props4","renderPageNumbers","Typography","_ref$tag","Tag","FILL_COLOR_MAP","aqua","yellow","green","orange","pink","red","magenta","grey","purple","black","ButtonIcon","iconFill","iconName","fillColor","iconSize","Attention","_ref$alignment","alignment","isDismissible","_ref$type","colorClassName","alignmentClassName","attentionAriaLabel","brand","warning","getAssistiveTextFromColorClass","alignClass","dismissBtn","renderDismissButton","ButtonRowSide","side","buttons","includesFullWidthButton","includesFullWidth","button","areAnyButtonsFullWidth","wrapperClassNames","flex","containerClasses","ButtonRow","centerGroup","leftGroup","rightGroup","CloseButton","closeIcon","Sheet","subtitleContent","centerHeader","footerButtonList","hasCloseButton","hasFooter","hasRequiredFieldsIndicator","onClose","subtitle","warningContent","warningTestSection","headerClasses","SortType","ReferenceDataDialog","object","setObject","closeDialog","columns","setColumns","setData","selectedObject","setSelectedObject","setTotalPages","pageIndex","pageSize","keyword","sortField","sortType","Asc","setSearchParams","host","handleSearch","useCallback","debounce","params","get","onSearch","column","record","rowIndex","rowId","primaryKeyId","properties","page","ReferenceField","otherData","openDialog","setOpenDialog","prop","refTitleFieldName","refMetaClassName","shouldDirty","shouldValidate","TextField","UrlField","FormatType","ExtendedProperty","metaFieldType","EMail","LongText","Integer","IntegerPercent","Duration","Guid","Decimal","CheckboxBoolean","DropDownBoolean","Date","DateTime","Reference","renderField","InView","fetchAddressesInContact","contactId","res","fetchAddressesInOrganization","orgId","fetchAddressById","createAsyncThunk","services","inView","Contact","Organization","organizationId","initialAddressFormState","open","daytimePhoneNumber","eveningPhoneNumber","line1","line2","city","countryCode","countryName","postalCode","regionCode","extendedPropertyErrors","addressFormSlice","createSlice","initialState","reducers","onOpenDialog","toISOString","changeExtendedPropertyErrors","resetForm","extraReducers","fulfilled","isFetched","isNew","actions","formSelector","createSelector","addressForm","initialAddressState","pagination","startRow","rowsPerPage","rowsPerPageOptions","totalRowCount","confirmDialog","addressListSlice","onChangeAddressPage","onChangeAddressRowPerPage","onChangeConfirmDialog","paginationSelector","addressList","confirmDialogSelector","fetchEnumsByType","updateEnum","enumData","deleteEnum","delete","enums","ServerSortType","ContactTab","ContactsType","ContactType","UserExtendedProps","AccountExtendedProps","fetchContacts","fetchContactById","searchContacts","startIndex","recordsToRetrieve","deleteContacts","contactIds","updateContact","contact","fetchCurrencies","fetchLanguages","fetchAddressesByContactId","fetchOrganizations","fetchUserByContactId","createCustomerAccount","account","fetchUserAccountAssignments","searchAvailableUserAccountAssignments","UpdateUserAccountAssignments","rejectWithValue","deleteParams","user","updateUserAccountAssignments","contacts","contactTitle","initialContactDetailState","fullName","middleName","ownerId","customerGroupId","customerGroup","preferredCurrencyId","preferredLanguageId","preferredShippingAddressId","preferredBillingAddressId","registrationSource","userId","contactNotes","acceptMarketingEmail","customerGroups","currencies","organizations","breadCrumbItems","level","link","Details","customerAccount","username","password","approved","errorOpen","contactDetailSlice","changeTitle","setParentId","setCustomerGroupId","updateBreadcrumb","onChangeProperty","changeActiveTab","reset","onAddAcountDialog","onChangeAccount","setError","onAddOrUpdateContactNote","contactNote","onDeleteContactNote","contactNoteIds","contactNoteId","onAddOrUpdateContactAddress","onDeleteContactAddress","rejected","titleSelector","contactDetail","contactSelector","currenciesSelector","languagesSelector","customerGroupsSelector","organizationsSelector","breadcrumbItemsSelector","activeTabSelector","customerAccountSelector","errorSelector","initialContactState","totalContacts","selectedContacts","sort","sortedColumn","sortDirection","SortDirection","Ascending","contactListPagination","searchInput","contactListSlice","selectContact","deselectContact","PrimaryKeyId","selectAllContacts","elem","deselectAllContacts","direction","pagingInfo","userAccountAssignmentsSlice","onChangeContactPage","onChangeContactRowPerPage","userAccountAssignmentsSelector","userAccountAssignments","userAccountAssignmentsPaginationSelector","initialAddAssignmentsToUserState","addAssignmentsToUserSlice","onChangeDialog","changeKeyword","contactsSelector","addAssignmentsToUser","sortSelector","contactListPaginationSelector","selectedContactsSelector","isOpenDialogSelector","addContactsTitleSelector","keywordSelector","fetchContactNotes","fetchContactNoteById","addOrUpdateContactNotes","deleteContactNotes","initialContactNoteState","created","modified","noteTitle","noteContent","contactName","selectedContactNotes","Unsorted","dialogStatus","confirmDialogStatus","dialogOpen","contactNoteManagerSlice","selectContactNote","deselectContactNote","selectAllContactNotes","deselectAllContactNotes","b","aValue","bValue","localeCompare","numeric","onChangeContactNotePage","onChangeContactNoteRowPerPage","onChangeDialogStatus","onChangeConfirmDialogStatus","onAddOrUpdate","selectedContactNotesSelector","contactNoteManager","contactNoteSelector","dialogStatusSelector","confirmDialogStatusSelector","enumFormTitle","OrganizationType","ContactGroup","BusinessCategory","initialEnumFormState","enumFormSlice","onChangeType","onChangeName","enumForm","enumType","enumListTitle","initialEnumState","enumManagerSlice","onChangeEnumPage","onChangeEnumRowPerPage","enumsSelector","enumManager","searchOrganizations","updateOrganization","organization","deleteOrganizations","organizationIds","mode","fetchOrganizationById","fetchContactsInOrganization","AddContactsToOrganization","fetchChildOrganizations","parentOrganizationId","addChildOrganizationsToOrganization","searchResult","org","addContactsToOrganization","childOrganizations","addChildOrganizationsSlice","clearAddChildError","addChildOrganizations","initialAddContactsToOrganizationState","addContactsToOrganizationSlice","childOrganizationListSlice","childOrganizationListPagination","onChangeChildOrganizationPage","onChangeChildOrganizationRowPerPage","onChangeTotalCount","contactListInOrganizationSlice","contactsInOrganizationPaginationSelector","contactListInOrganization","organizationTitle","initialOrganizationDetailState","organizationTypeId","organizationType","organizationCustomerGroupId","organizationCustomerGroup","businessCategoryId","businessCategory","parentId","organizationTypes","organizationCustomerGroups","businessCategories","organizationDetailSlice","updateOrganizationId","onAddOrUpdateOrganizationAddress","onDeleteOrganizationAddress","onAddOrUpdateContact","onAddOrUpdateChildren","newChildArray","organizationDetail","organizationSelector","organizationTypesSelector","organizationCustomerGroupsSelector","businessCategoriesSelector","DeleteMode","OrganizationTab","getData","totalRecords","initialOrganizationState","Descending","selectedOrganizations","Detach","organizationListSlice","selectOrganization","deselectOrganization","selectAllOrganizations","deselectAllOrganizations","reducer","contactList","organizationList","childOrganizationList","configureStore","useAppDispatch","useDispatch","useAppSelector","useSelector","AddressList","useHistory","inTab","None","viewId","renderRow","rowData","onConfirmDialog","selector","row","onChangePage","onChangeRowsPerPage","goBack","dismissLabel","confirmLabel","enableConfirm","onInteraction","detail","ContactNoteManager","useForm","reValidateMode","defaultValues","watch","clearErrors","trigger","formState","isDirty","initComponent","defaultChecked","onSelectedRowChanged","onToggleAllSelected","sortable","span","textarea","use","AddParentOrganization","excludedOrgId","defaultSearchParams","setDefaultSearchParams","setOrganizations","selectedOrganization","setSelectedOrganization","totalCount","setTotalCount","parentName","setParentName","setIsOpen","setErrorOpen","setOrganizationId","mounted","getParentName","contactResponse","orgResponse","debouncedSearch","nextValue","evt","onSort","_header","Desc","dismissesOnAction","AddAssignmentsToUser","sortDirectionRef","sortedColumnRef","Account","isSelectedProp","UserAccountAssignments","Assignments","pathname","lastOrder","toLocaleDateString","ContactDetail","useParams","initialContact","breadcrumbItems","invalidUsername","setInvalidUsername","invalidUsernameMessage","setInvalidUsernameMessage","invalidEmail","setInvalidEmail","invalidPassword","setInvalidPassword","setErrorMessage","User","allowedExtendedPropsNames","handleSubmit","setCustomerGroupIdData","unwrapResult","onChangeAccountField","persist","emailRegex","passRegexLength","passRegexLower","passRegexUpper","passRegexNumber","passRegexSymbol","onChangeRadioButton","active","resetData","activeTabIndex","onActivate","num","renderDetails","ContactNote","AccountAssignments","contained","ContactList","columnsDefault","contactCode","keyWord","onEdit","onSelectAll","onSelectChange","columnName","changedColumn","EnumForm","useFormik","enableReinitialize","initialValues","validationSchema","Yup","setFieldValue","validateForm","EnumList","from","replaceState","enum","OrganizationList","onChangeDeleteMode","deleteMode","ContactListInOrganization","pathContactType","AccountAdmin","OrganizationDetail","initialOrganization","addChildErrorSeletor","AddressForm","initialAddress","onChangeCheckbox","Public","Shipping","Billing","CustomersType","getCustomersApp","exact","path","to"],"mappings":"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","file":"static/js/bundle.js","sourcesContent":["import React, { useState } from 'react';\r\n\r\nexport const Tooltip = ({ text }) => {\r\n const [show, setShow] = useState(false);\r\n \r\n const displayTooltip = () => {\r\n setShow(true);\r\n }\r\n\r\n const hideTooltip = () => {\r\n setShow(false);\r\n }\r\n\r\n return
\r\n {text && \r\n
\r\n
{text}
\r\n \r\n
\r\n }\r\n
;\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryTable\":\"checkout_summaryTable__3rlNG\",\"total\":\"checkout_total__XVbuf\",\"shippingMethod\":\"checkout_shippingMethod__5blC9\"};","import React from 'react'\r\n\r\nimport { Tooltip } from '../tooltip/Tooltip'\r\n\r\nconst CheckoutSectionHeader = ({ label, toolTip }) => (\r\n
\r\n

{label}

\r\n \r\n
\r\n \r\n)\r\n\r\nexport default CheckoutSectionHeader\r\n","import React from 'react'\r\n\r\nconst defaultStyle = {};\r\nconst styleWithNoBorder = {border: 'none', padding: 0, backgroundColor: 'white'};\r\nconst CheckoutSectionBody = ({ children, hideBodyBorder }) => (\r\n \r\n {children}\r\n \r\n)\r\n\r\nexport default CheckoutSectionBody","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nimport CheckoutSectionHeader from './CheckoutSectionHeader'\r\nimport CheckoutSectionBody from './CheckoutSectionBody'\r\n\r\nconst CheckoutSection = ({ label, toolTip, children, classname, hidden = false, hideBodyBorder = false }) => (\r\n
\r\n {label && }\r\n \r\n \r\n {children}\r\n \r\n
\r\n \r\n)\r\n\r\nCheckoutSection.propTypes = {\r\n label: PropTypes.string,\r\n classname: PropTypes.string,\r\n hidden: PropTypes.bool,\r\n hideBodyBorder: PropTypes.bool\r\n}\r\n\r\nexport default CheckoutSection","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nclass RadioInput extends React.Component {\r\n\r\n componentDidMount() {\r\n require('./RadioInput.css');\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n this.props.onClick()}\r\n readOnly />\r\n )\r\n }\r\n}\r\n\r\nRadioInput.propTypes = {\r\n selected: PropTypes.bool.isRequired,\r\n onClick: PropTypes.func.isRequired\r\n}\r\n\r\nexport default RadioInput","export const hiddenAnchorStyle = {\r\n color: 'inherit',\r\n textDecoration: 'none',\r\n fontWeight: 'normal',\r\n padding: 0,\r\n display: 'flex',\r\n verticalAlign: 'middle',\r\n textAlign: 'left',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n lineHeight: '1.75rem',\r\n height: '100%',\r\n textTransform: 'none',\r\n fontSize: '18px',\r\n};\r\n\r\nexport const optionListItemStyle = {\r\n listStyle: 'none',\r\n lineHeight: 2,\r\n}\r\n\r\nexport const pretendAnchorStyle = {\r\n color: '#004af4',\r\n textDecoration: 'none',\r\n fontWeight: 600\r\n}\r\n\r\nexport const flexMiddle = {\r\n display: 'flex',\r\n verticalAlign: 'middle'\r\n}\r\n\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nimport { optionListItemStyle } from '../styles'\r\n\r\nclass OptionListItemButtonWithOwnComponent extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.onClick = this.onClick.bind(this)\r\n }\r\n\r\n onClick(e) {\r\n this.props.onClick(e, this.props.id);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n this.onClick(e)}>\r\n {this.props.label}\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nOptionListItemButtonWithOwnComponent.propTypes = {\r\n isSelected: PropTypes.bool.isRequired,\r\n onClick: PropTypes.func.isRequired,\r\n label: PropTypes.string.isRequired\r\n}\r\n\r\nexport default OptionListItemButtonWithOwnComponent","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nimport { optionListItemStyle, hiddenAnchorStyle, flexMiddle } from '../styles'\r\n\r\nimport RadioInput from '../RadioInput/RadioInput'\r\n\r\nconst OptionListItemRadio = ({ id, isSelected, onClick, label, children, hidden, value, className }) => (\r\n );\r\n\r\n\r\nOptionListItemRadio.propTypes = {\r\n isSelected: PropTypes.bool.isRequired,\r\n onClick: PropTypes.func.isRequired,\r\n label: PropTypes.string.isRequired\r\n}\r\n\r\nexport default OptionListItemRadio","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nlet id = 0;\r\n\r\nclass TextFormEntry extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n const inputIsRequired = (typeof props.isRequired === 'function') ? props.isRequired(props.name) : props.isRequired;\r\n this.state = {\r\n isOpen: !!props.value || inputIsRequired, \r\n id: id++\r\n };\r\n }\r\n\r\n render() {\r\n const p = this.props;\r\n\r\n // what type of input are we and how are we identified?\r\n const isNumberInput = p.type === 'number';\r\n const inputId = `${this.constructor.name}-${id}-${p.name}`;\r\n\r\n const inputIsRequired = (typeof p.isRequired === 'function')\r\n ? p.isRequired(p.name)\r\n : p.isRequired;\r\n const inputIsInvalid = (typeof p.isInvalid === 'function')\r\n ? p.isInvalid(p.name, p.value)\r\n : p.isInvalid;\r\n\r\n // Compute some reasonable defaults\r\n const autocomplete = p.autocomplete || p.name;\r\n const placeholder = p.placeholder || p.label;\r\n const value = p.value || (isNumberInput ? 0 : \"\");\r\n \r\n if (this.state.isOpen) {\r\n let input;\r\n if (isNumberInput) {\r\n input = inputIsRequired\r\n ? ()\r\n : ();\r\n } else {\r\n input = inputIsRequired\r\n ? ()\r\n : ();\r\n }\r\n\r\n return (\r\n \r\n \r\n {`${inputIsRequired ? \"* \" : \"\"}${p.label}:`}\r\n \r\n
\r\n {input}\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n }\r\n}\r\n\r\nTextFormEntry.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n label: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n type: PropTypes.oneOf(['url', 'tel', 'email', 'search', 'number', 'range', 'datetime-local', 'date', 'time', 'week', 'month', 'color', 'text']),\r\n autocomplete: PropTypes.string,\r\n pattern: PropTypes.string,\r\n placeholder: PropTypes.string\r\n}\r\n\r\nTextFormEntry.defaultProps = {\r\n type: 'text',\r\n isInvalid: false,\r\n isRequired: false,\r\n pattern: '.*'\r\n}\r\n\r\nexport default TextFormEntry;","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nconst StateInput = ({ states, value, onChange, isRequired }) => {\r\n const name = \"state\";\r\n\r\n // Check in case the current value that was passed is actually a state Name rather than a Code (i.e. \"Virginia\" instead of \"VA\").\r\n // If so, use the corresponding code instead.\r\n if (value && typeof value === 'string' && !states.find(s => s && s.Code && s.Code.toLowerCase() === value.toLowerCase())) {\r\n const matchedByName = states.find(s => s && s.Name && s.Name.toLowerCase() === value.toLowerCase());\r\n if (matchedByName) {\r\n value = matchedByName.Code;\r\n }\r\n }\r\n\r\n if (states && states.length > 0) {\r\n return (\r\n \r\n \r\n {states.map((state) =>\r\n \r\n )}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nStateInput.propTypes = {\r\n states: PropTypes.arrayOf(PropTypes.object),\r\n value: PropTypes.string,\r\n onChange: PropTypes.func.isRequired\r\n}\r\n\r\nclass StateDropdownWrapper extends React.Component {\r\n _handleChange(event) {\r\n let eventValue = event.target.value;\r\n let states = this.props.countriesStatesMap[this.props.CountryCode];\r\n if (!states || states.length === 0 || this.statesListContains(states, eventValue)) {\r\n this.props.onChange(event);\r\n }\r\n event.preventDefault();\r\n }\r\n\r\n statesListContains(states, val) {\r\n for (let i = 0; i < states.length; i++) {\r\n if (states[i].Code === val) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n render() {\r\n return (\r\n this._handleChange(event)}\r\n states={this.props.countriesStatesMap[this.props.CountryCode] || []}\r\n value={this.props.value}\r\n isRequired={this.props.isRequired}\r\n />\r\n );\r\n }\r\n}\r\n\r\nStateDropdownWrapper.propTypes = {\r\n countryCode: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n countriesStatesMap: PropTypes.object.isRequired,\r\n value: PropTypes.string\r\n}\r\n\r\nexport default StateDropdownWrapper;\r\n","import React from 'react';\r\nimport range from 'lodash/range'\r\nimport PropTypes from 'prop-types';\r\n\r\nconst moreThanMaxSymbol = 'more';\r\nconst blankValue = 'blankValue';\r\n\r\n/*\r\n * BBS DDD 2017-12-23 Switches between a dropdown and number input if mobile.\r\n * otherwise just show number input.\r\n *\r\n * This is a little convoluted.\r\n */\r\nclass NumberInputSelect extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onSelectChange = this.onSelectChange.bind(this);\r\n this.onQuantityChange = this.onQuantityChange.bind(this);\r\n this.onInputChange = this.onInputChange.bind(this);\r\n this.onInputBlur = this.onInputBlur.bind(this);\r\n this.state = { useInput: props.quantity > props.maxDropdownQuantity }\r\n }\r\n\r\n /*\r\n * When input changes, we receive the event from the input\r\n */\r\n onInputChange(e) {\r\n this.onQuantityChange(e.target.value);\r\n }\r\n\r\n /*\r\n * When the user moves away from the input, we receive the event from the input\r\n */\r\n onInputBlur(e) {\r\n const value = e.target.value;\r\n if (!isNaN(value)) {\r\n this.onQuantityChange(+value);\r\n return;\r\n }\r\n }\r\n\r\n /*\r\n * When we want to notify the outside world we've changed, call this.\r\n */\r\n onQuantityChange(val) {\r\n if (!isNaN(val)) this.props.onChange(+val);\r\n }\r\n\r\n /*\r\n * When the select input changes, call this with the new value selected by the user\r\n */\r\n onSelectChange(val) {\r\n if (val === blankValue) {\r\n return;\r\n }\r\n\r\n if (val === moreThanMaxSymbol) {\r\n this.setState({ useInput: true });\r\n this.onQuantityChange(this.props.maxDropdownQuantity + 1);\r\n } else {\r\n this.onQuantityChange(val);\r\n }\r\n }\r\n\r\n render() {\r\n const isMoreThanMax = this.props.quantity > this.props.maxDropdownQuantity;\r\n const useInput = (isMoreThanMax || this.state.useInput);\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nNumberInputSelect.propTypes = {\r\n componentClassName: PropTypes.string,\r\n maxDropdownQuantity: PropTypes.number.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n quantity: PropTypes.number.isRequired\r\n}\r\n\r\nexport default NumberInputSelect","\r\nexport const formatMoney = currencyCode => amount =>\r\n !Number.isNaN(amount) && amount !== null && amount.toLocaleString('en-US', { style: 'currency', currency: currencyCode })\r\n\r\n","\r\n/* SHIPPING_METHOD */\r\nexport const SELECT_SHIPPING_OPTION = 'SELECT_SHIPPING_METHOD_ACTION'\r\nexport const SELECT_SHIPPING_OPTION_ASYNC = 'SELECT_SHIPPING_OPTION_ASYNC_ACTION'\r\nexport const NOTIFY_REFRESHING_SHIPPING_OPTIONS = 'NOTIFY_REFRESHING_SHIPPING_METHODS_ACTION'\r\nexport const NEW_SHIPPING_OPTIONS = 'NEW_SHIPPING_METHODS_ACTION'\r\n/* PAYMENT_METHOD */\r\nexport const SELECT_PAYMENT_OPTION = 'SELECT_PAYMENT_OPTION_ACTION'\r\nexport const BRAINTREEE_PAYMENT_DATA_UPDATE = 'BRAINTREEE_PAYMENT_DATA_UPDATE_ACTION'\r\nexport const PURCHASE_ORDER_PAYMENT_DATA_UPDATE = 'PURCHASE_ORDER_PAYMENT_DATA_UPDATE_ACTION'\r\nexport const UPDATING_EBIZ_CHARGE_WEB_FORM_URL_ASYNC = 'UPDATING_EBIZ_CHARGE_WEB_FORM_URL_ASYNC_ACTION'\r\nexport const UPDATE_EBIZ_CHARGE_WEB_FORM_URL = 'UPDATE_EBIZ_CHARGE_WEB_FORM_URL'\r\nexport const EBIZ_CHARGE_WEB_FORM_URL_ERROR = 'EBIZ_CHARGE_WEB_FORM_URL_ERROR'\r\n/* COMPLETE CHECKOUT */\r\nexport const COMPLETE_CHECKOUT = 'COMPLETE_CHECKOUT_ACTION'\r\nexport const BACK = 'BACK_ACTION'\r\nexport const PLACE_ORDER_ASYNC = 'PLACE_ORDER_ASYNC_ACTION'\r\n/* ERROR */\r\nexport const NOTIFY_ERROR = 'NOTIFY_ERROR_ACTION'\r\nexport const NOTIFY_COMPLETE_CHECKOUT_ERROR = 'NOTIFY_COMPLETE_CHECKOUT_ERROR_ACTION'\r\nexport const LOG_ERROR = 'LOG_ERROR_ACTION'\r\n/* WARNING */\r\nexport const NOTIFY_WARNING = 'NOTIFY_WARNING_ACTION'\r\n/* UI */\r\nexport const USE_BILLING_FOR_SHIPPING_TOGGLE = 'USE_BILLING_FOR_SHIPPING_TOGGLE_ACTION'\r\nexport const DISMISS_MESSAGE = 'DISMISS_MESSAGE_ACTION'\r\nexport const DISMISS_ALL_MESSAGES = 'DISMISS_ALL_MESSAGES_ACTION'\r\n/* CART */\r\nexport const UPDATE_ITEM_QUANTITY = 'UPDATE_ITEM_QUANTITY'\r\nexport const DELETE_ITEM = 'DELETE_ITEM'\r\nexport const UPDATING_ITEM_QUANTITY_ASYNC = 'UPDATING_ITEM_QUANTITY_ASYNC'\r\nexport const DELETING_ITEM_ASYNC = 'DELETING_ITEM_ASYNC'\r\nexport const GET_REQUIRED_PARTNER_IDS_ASYNC = 'GET_REQUIRED_PARTNER_IDS_ASYNC'\r\nexport const GETTING_REQUIRED_PARTNER_IDS_ASYNC = 'GETTING_REQUIRED_PARTNER_IDS_ASYNC'\r\n\r\n/* ADDRESS */\r\nexport const ADD_SHIPPING_ADDRESS = 'ADD_SHIPPING_ADDRESS_ACTION'\r\nexport const ADD_BILLING_ADDRESS = 'ADD_BILLING_ADDRESS_ACTION'\r\nexport const REMOVE_SHIPPING_ADDRESS = 'REMOVE_SHIPPING_ADDRESS_ACTION'\r\nexport const REMOVE_BILLING_ADDRESS = 'REMOVE_BILLING_ADDRESS_ACTION'\r\nexport const UPDATE_ADDRESS = 'UPDATE_ADDRESS_ACTION'\r\nexport const SELECT_BILLING_ADDRESS = 'SELECT_BILLING_ADDRESS_ACTION'\r\nexport const SELECT_SHIPPING_ADDRESS = 'SELECT_SHIPPING_ADDRESS_ACTION'\r\nexport const SELECT_SHIPPING_ADDRESS_ASYNC = 'SELECT_SHIPPING_ADDRESS_ASYNC_ACTION'\r\nexport const SAVE_ADDRESS_ASYNC = 'SAVE_ADDRESS_ASYNC_ACTION'\r\nexport const DELETE_ADDRESS_ASYNC = 'DELETE_ADDRESS_ASYNC_ACTION'\r\nexport const SELECT_SHIPPING_AND_BILLING_ADDRESS = 'SELECT_BILLING_AND_SHIPPING_ADDRESS_ACTION'\r\n\r\n/* SUMMARY */\r\nexport const CHECKOUT_SUMMARY_RECEIVED = 'CHECKOUT_SUMMARY_RECEIVED_ACTION'\r\nexport const NOTIFY_REFRESHING_CHECKOUT_SUMMARY = 'NOTIFY_REFRESHING_CHECKOUT_SUMMARY_ACTION'\r\nexport const NEW_CHECKOUT_SUMMARY = 'NEW_CHECKOUT_SUMMARY_ACTION'\r\n\r\n/* COUPONS */\r\nexport const ADD_COUPON = 'ADD_COUPON_ACTION'\r\nexport const ADD_COUPON_ASYNC = 'ADD_COUPON_ASYNC_ACTION'\r\nexport const REMOVE_COUPON = 'REMOVE_COUPON'\r\nexport const REMOVE_COUPON_ASYNC = 'REMOVE_COUPON_ACTION'\r\nexport const UPDATING_COUPONS = 'UPDATING_COUPONS'\r\nexport const UPDATING_COUPONS_ASYNC = 'UPDATING_COUPONS_ASYNC'\r\n\r\n/* NAVIGATION */\r\nexport const TO_PAYMENT = 'TO_PAYMENT_ACTION'\r\nexport const TO_SHIPPING = 'TO_SHIPPING_ACTION'\r\n\r\n/* TERMS AND CONDITIONS */\r\nexport const CHECK_TERMS_CONDITIONS = 'CHECK_TERMS_CONDITIONS_ACTION'\r\nexport const UNCHECK_TERMS_CONDITIONS = 'UNCHECK_TERMS_CONDITIONS_ACTION'\r\n","import { \r\n NOTIFY_ERROR, \r\n NOTIFY_COMPLETE_CHECKOUT_ERROR, \r\n LOG_ERROR, DISMISS_MESSAGE, \r\n DISMISS_ALL_MESSAGES,\r\n NOTIFY_WARNING \r\n} from '../../GlobalStateContainer'\r\n\r\n/* ERROR */\r\nlet messageId = 0;\r\n\r\nexport function notifyError(message, diagnosticMessage) {\r\n diagnosticMessage && console.error(diagnosticMessage) && console.trace && console.trace();\r\n return { type: NOTIFY_ERROR, message, messageId: messageId++ }\r\n}\r\n\r\nexport function notifyWarning(message, diagnosticMessage) {\r\n diagnosticMessage && console.log(diagnosticMessage)\r\n return { type: NOTIFY_WARNING, message, messageId: messageId++ }\r\n}\r\n\r\nexport function notifyCompleteCheckoutError(message, diagnosticMessage) {\r\n diagnosticMessage && console.error(diagnosticMessage) && console.trace && console.trace();\r\n return { type: NOTIFY_COMPLETE_CHECKOUT_ERROR, message, messageId: messageId++ }\r\n}\r\n\r\nexport function logError(diagnosticMessage) {\r\n diagnosticMessage && console.error(diagnosticMessage) && console.trace && console.trace();\r\n return { type: LOG_ERROR, diagnosticMessage }\r\n}\r\n\r\nexport function dismissMessage(messageId) {\r\n return { type: DISMISS_MESSAGE, messageId }\r\n}\r\n\r\nexport function dismissAllMessages() {\r\n return { type: DISMISS_ALL_MESSAGES }\r\n}","import React from 'react'\r\nimport { Transition } from 'react-transition-group'\r\n\r\nconst duration = 200;\r\n\r\nconst defaultStyle = {\r\n transition: `opacity ${duration}ms ease-in-out`,\r\n opacity: 0\r\n}\r\n\r\nconst transitionStyles = {\r\n entering: { opacity: 0 },\r\n entered: { opacity: 1 }\r\n};\r\n\r\n// BBS DDD 2017-11-28 VS reports an error between the \"Transition\" \r\n// element name and the \"in\" attribute in the openting tag b/ c \"in\"\r\n// is an ES6 reserved word, but it appears to \"just work\" despite the error\r\nexport const Fade = ({ inProp, children, disableAnimation }) => (\r\n (disableAnimation)\r\n ? (
{children}
)\r\n : (\r\n {(state) => (\r\n
\r\n {children}\r\n
\r\n )}\r\n
)\r\n );","import React from 'react'\r\nimport { findDOMNode } from 'react-dom'\r\nimport PropTypes from 'prop-types'\r\n\r\nimport { ERROR_USER_ALERT, WARNING_USER_ALERT } from './userAlertTypes'\r\n\r\nimport { Fade } from '../../componentAnimations'\r\n\r\nconst hasNewMessage = (oldMessages, newMessages) => {\r\n return !newMessages.every((cur) => oldMessages.some(msg => msg.Id === cur.Id))\r\n}\r\n\r\n// BBS DDD from https://stackoverflow.com/questions/487073/check-if-element-is-visible-after-scrolling?noredirect=1&lq=1\r\nconst isScrolledIntoView = (el) => {\r\n if (typeof window === 'undefined' || window.innerWidth === 'undefined')\r\n return false;\r\n var elemTop = el.getBoundingClientRect().top;\r\n var elemBottom = el.getBoundingClientRect().bottom;\r\n const headerYOffset = getHeaderYOffset();\r\n\r\n // Only completely visible elements return true:\r\n var isVisible = ((elemTop - headerYOffset) >= 0) && (elemBottom <= window.innerHeight);\r\n // Partially visible elements return true:\r\n //isVisible = elemTop < window.innerHeight && elemBottom >= 0;\r\n return isVisible;\r\n}\r\n\r\nconst getHeaderYOffset = () => {\r\n const extraPadding = 10;\r\n try {\r\n const header = document.getElementById('header');\r\n const headerHeight = header.getBoundingClientRect().height;\r\n const headerPadding = parseInt(window.getComputedStyle(header).paddingTop, 10);\r\n return headerHeight + headerPadding + extraPadding;\r\n } catch (e) {\r\n return extraPadding;\r\n }\r\n}\r\n\r\nconst scrollToElement = (element) => {\r\n if (element) {\r\n var headerYOffset = getHeaderYOffset();\r\n var offsetPosition = element.getBoundingClientRect().top + window.scrollY - headerYOffset;\r\n window.scrollTo({\r\n top: offsetPosition,\r\n behavior: 'smooth'\r\n });\r\n }\r\n}\r\n\r\n\r\nclass MessagesList extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = { visibleMessages: 0 }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (hasNewMessage(this.props.messages, nextProps.messages)) {\r\n this.setState({ scrollToLast: true })\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.state.scrollToLast) {\r\n const highestMessageId = this.props.messages.reduce((max, cur) => cur.Id > max ? cur.Id : max, 0)\r\n const messageWithHighestId = findDOMNode(this.refs[highestMessageId.toString(10)])\r\n isScrolledIntoView(messageWithHighestId) || scrollToElement(messageWithHighestId);\r\n this.setState({ scrollToLast: false })\r\n }\r\n }\r\n\r\n render() {\r\n const children = this.props.messages.map(message => {\r\n if (message.dismissed)\r\n return \"\";\r\n return (\r\n \r\n \r\n e.preventDefault() || this.props.onDismiss(message.Id)}>\r\n ×\r\n \r\n {message.text.split('\\n').map((line, i) =>\r\n (

{line}

))}\r\n \r\n
\r\n )\r\n }).filter(x => x);\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n }\r\n}\r\n\r\nMessagesList.propTypes = {\r\n messages: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.number.isRequired,\r\n text: PropTypes.string.isRequired,\r\n type: PropTypes.string.isRequired\r\n }))\r\n}\r\n\r\nexport default MessagesList\r\n","export const UNKNOWN_USER_ALERT = \"UNKNOWN_USER_ALERT_TYPE\"\r\nexport const ERROR_USER_ALERT = \"ERROR_USER_ALERT_TYPE\"\r\nexport const WARNING_USER_ALERT = \"INFO_USER_ALERT_TYPE\"","// eslint-disable-next-line\r\nimport React from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nimport { dismissMessage, dismissAllMessages } from './messagesListActionCreators'\r\n\r\nimport MessagesList from './MessagesList'\r\n\r\nconst mapStateToProps = state => ({\r\n messages: state.ui.messages\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n onDismiss: (id) => dispatch(dismissMessage(id)),\r\n onDismissAll: () => dispatch(dismissAllMessages())\r\n})\r\n\r\nconst MessagesListContainer = connect(mapStateToProps, mapDispatchToProps)(MessagesList)\r\n\r\nexport default MessagesListContainer","import merge from 'lodash/merge'\r\nimport { notifyError } from \"../Features/UserMessaging\";\r\nimport { makeCatalystFetchPostInit } from \"../../util/fetchUtility\";\r\n\r\nconst validateArguments = (\r\n {\r\n notify,\r\n extract,\r\n onSuccess,\r\n onError,\r\n init\r\n }, endpoint) => {\r\n // Check that we have what we expect\r\n if (typeof endpoint !== 'string') {\r\n throw new Error( \"argument 'endpoint' must be of type string or a function that results in a string when passed the state: \" + endpoint);\r\n }\r\n if (typeof onSuccess !== 'function') {\r\n throw new Error( \"argument 'onSuccess' must be of type function if it is defined\");\r\n }\r\n if (typeof onError !== 'function') {\r\n throw new Error( \"argument 'onError' must be of type function if it is defined\");\r\n }\r\n if (typeof notify !== 'function') {\r\n throw new Error( \"argument 'notify' must be of type function if it is defined\");\r\n }\r\n if (typeof extract !== 'function') {\r\n throw new Error( \"argument 'extract' must be defined and be of type function\");\r\n }\r\n if (init && typeof init !== 'object') {\r\n throw new Error(\"expected init to be an object\");\r\n }\r\n}\r\n\r\n\r\n/*---------------------------------------------------------\r\n *\r\n * function: fetchJson(spec)\r\n *\r\n *---------------------------------------------------------\r\n *\r\n * For example, in action.js:\r\n *\r\n * var myAsyncDataFetchSpec = {\r\n * // Get the endpoint path from state (or simply specify a string for endpoint)\r\n * endpoint: (state) => state.myEndpointPath,\r\n *\r\n *\t\t // The fetch should post and include cookies, and\r\n * // include our headers (not necessarily custom)\r\n * init: { method: 'POST', credentials: 'same-origin', headers: { \"X-Custom-Header\": \"ServerHelpMe\"} }\r\n\r\n * // Tell everyone we started my action\r\n * notify: data => ( { type: FETCH_MY_DATA, data } ),\r\n *\r\n * // Get the data from the response\r\n * extract: r => r.json(),\r\n *\r\n *\t\t // When we get the data, send it to those concerned\r\n * onSuccess: (json, data) => ({ type: MY_JSON_DATA_RECEIVED, json, data.Id }),\r\n *\r\n *\t\t // If we fail, tell someone\r\n * onError: (msg, data) => {\r\n * \t\t\t\t console.log(msg);\r\n *\t \t\t console.log(data);\r\n *\t\t \t `We were trying my action for data with id '${data.Id}', but '${msg}' happened`;\r\n *\t\t\t\t },\r\n * };\r\n * export const fetchMyData = fetchJson(myAsyncDataFetchSpec);\r\n *\r\n *\r\n * A factory for creating async action creators for the redux-thunk\r\n * library.\r\n * https://redux.js.org/docs/advanced/AsyncActions.html\r\n * https://github.com/gaearon/redux-thunk\r\n * With redux-thunk, when store.dispatch() is called with a function\r\n * parameter (instead of calling store.dispatch() with an\r\n * action parameter, as usual), the function is called with\r\n * the parameters store.dispatch() and store.getState(). So, we can\r\n * dispatch additional actions and inspect the current state.\r\n *\r\n * We also use the fetch api\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch\r\n *\r\n * To create an async action creator, pass a object specifying:\r\n * * the actions to take when\r\n * 1) the async flow begins,\r\n * 2) the async flow succeeds\r\n * 3) the async flow fails.\r\n * * How to extract the data from the response body\r\n * (see using_fetch above from MDN)\r\n * * How to initalize the fetch request, beyond the content type of json\r\n * (see using_fetch above)\r\n *\r\n * A spec object is:\r\n * {\r\n * init, // an object to deep merge with the init\r\n * \t\t\t\t\t\t // object for a fetch call headers:\r\n * \t\t\t\t\t\t // { \"Content-Type\", \"application/json \"}, body }\r\n * \t\t\t\t\t\t // where body is the data transformed with\r\n * \t\t\t\t\t\t // JSON.stringify(data) if data is truthy.\r\n * \t\t\t\t\t\t // If data is falsy, then body is omitted\r\n * \t\t\t\t\t\t // from the init object passed to fetch\r\n *\r\n * endpoint, // either 1) a string specifying the location\r\n * \t\t\t\t\t\t // of the fetch call to make or 2) a funciton\r\n * \t\t\t\t\t\t // that returns a string specifying the location\r\n * \t\t\t\t\t\t // of the fetch call to make when passed the\r\n * \t\t\t\t\t\t // result of store.getState().\r\n *\r\n * notify, // The action creator to call when starting\r\n * \t\t\t\t\t // an async action. We pass the data to be\r\n * \t\t\t\t\t\t // sent in the request as a parameter.\r\n * \t\t\t\t\t\t // Generally a notification action that the\r\n * \t\t\t\t\t\t // sync request has started.\r\n *\r\n * extract, // The function to call on the response which\r\n * \t\t\t\t\t\t // extracts the data. Usually something like\r\n * // r => r.json()\r\n * // or one of: arrayBuffer, blob, json, text,\r\n * // or formData. See\r\n * // https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Body\r\n *\r\n * onSuccess, // The \"action creator\" to call when the\r\n *\t\t\t\t\t\t // response is successfully parsed. Both the\r\n *\t\t\t\t\t\t // successfully parsed response and the\r\n *\t\t\t\t\t\t // original data that was sent in the request\r\n *\t\t\t\t\t // are passed as parameters. Here, you might\r\n * // validate your data and generate an error\r\n * // action if validation fails, or an update-ish\r\n * // action if validation succeeds\r\n *\r\n * onError, // The \"action creator\" to call when the\r\n *\t\t\t\t\t // response cannot be retrieved. Passed\r\n * // a diagnostic (not appropriate to show\r\n *\t\t\t\t\t // to end users, but shouldn't contain\r\n * // sensitive information).\r\n * }\r\n *\r\n * The result of passing spec to fetchJson is a function that\r\n * dispatches an action when passed the request data. The action will\r\n * trigger the dispatch of other actions before and after it executes\r\n * an asynchronous call to the endpoint.\r\n *\r\n *\r\n * Doing a GET\r\n * -----------\r\n *\r\n * Omitting the data and doing a simple http GET to an endpoint:\r\n * If data is omitted from the call to the async function, then no\r\n * body is passed. The default fetch http action is \"GET\". (note that\r\n * the default fetch behavior is to NOT send cookies, so you won't be\r\n * authorized).\r\n *\r\n * Getting data should be as easy as:\r\n *\r\n * var page = getPageNumber()\r\n * var getMyData = {\r\n * init: {},\r\n * endpoint: \"https://example.com/api/serviceName\" + (page ? \"?p=\" + page : \"\"),\r\n * notify: { type: FETCH_MY_DATA, page },\r\n * extract: r => r.json(),\r\n * onSuccess: json => {type: UPDATE_MY_DATA_TYPE, json, page},\r\n * onError: msg => notifyError(\"sorry, but something didn't go right on page \" + page, msg)\r\n * }\r\n *\r\n * Then, in the reducer listening to the action UPDATE_MY_DATA update the\r\n * redux state based on the json received. See redux examples in more\r\n * authoritative locations for smart ways to update your state after\r\n * a call to an api.\r\n *\r\n * There are probably better ways of doing this\r\n * https://stackoverflow.com/questions/34930735/pros-cons-of-using-redux-saga-with-es6-generators-vs-redux-thunk-with-es2017-asy?rq=1\r\n * https://stackoverflow.com/questions/34570758/why-do-we-need-middleware-for-async-flow-in-redux?rq=1\r\n *\r\n */\r\nexport const fetchJson = spec => data => (dispatch, getState) => {\r\n const {\r\n notify = ()=>{},\r\n extract,\r\n onError = (diagnosticMessage, data, dispatch) => notifyError(\"An error occurred\", diagnosticMessage, dispatch),\r\n onSuccess = ()=>{},\r\n init\r\n } = spec;\r\n let {\r\n endpoint,\r\n } = spec;\r\n\r\n if (typeof endpoint === 'function') {\r\n // Get the endpoint if we want to compute it\r\n endpoint = endpoint(getState());\r\n }\r\n\r\n validateArguments(spec, endpoint);\r\n\r\n // Notify async action starting\r\n dispatch(notify(data));\r\n\r\n\r\n // Configure the fetch\r\n let fetchInit = (typeof data !== 'undefined')\r\n ? merge(makeCatalystFetchPostInit(data), init)\r\n : Object.assign({}, init);\r\n\r\n // Make the call\r\n return fetch(endpoint, fetchInit)\r\n .then( // Get the response if we have one\r\n response => {\r\n if (!response.ok) {\r\n dispatch(onError(`Got server error when calling '${endpoint}': (${response.status}): ${response.statusText}`, data, dispatch));\r\n return null;\r\n } else {\r\n return extract(response);\r\n }\r\n },\r\n // handle errors that don't have a status code\r\n error => dispatch(onError(`Got network error when calling '${endpoint}': ${error}`, data, dispatch))\r\n )\r\n .then( // Do something with whatever was extracted from the response\r\n responseExtracted => {\r\n console.log(responseExtracted);\r\n try {\r\n dispatch(onSuccess(responseExtracted, data, getState));\r\n } catch (e) {\r\n // const message = `Error executing success callback for extracted response: ${responseExtracted} for data sent: ${data}\\n ${e}`;\r\n dispatch(onError(`Error executing success callback for extracted response: ${responseExtracted} for data sent: ${data}\\n ${e}`, null, dispatch));\r\n }\r\n },\r\n // notify of other errors\r\n error => dispatch(onError(`Error getting response: ${error}`, data, dispatch))\r\n );\r\n}\r\n","import findIndex from 'lodash/findIndex'\r\nimport includes from 'lodash/includes'\r\n\r\n// BBS DDD 2017-11-20 Assumes all list elements that \r\n// are composite will have an \"Id\" element\r\n\r\n// If we change something, then return a new list, not the list we \r\n// got as an argument. If we change nothing, then return the list\r\n// we got as an argument.\r\n\r\n// Adds to list at front\r\nexport const addToList = (list, newElement) => {\r\n if (newElement.hasOwnProperty(\"Id\"))\r\n return [newElement].concat(list.filter(elt => elt.Id !== newElement.Id));\r\n return [newElement].concat(list.filter(elt => elt !== newElement));\r\n}\r\n\r\n// Returns new list if element exists, or same list\r\nexport const removeFromList = (list, elementToRemove) => {\r\n return list.filter(elt => elt !== elementToRemove);\r\n}\r\n\r\nexport const removeFromListById = (list, id) => {\r\n return list.filter(elt => elt.Id !== id);\r\n}\r\n\r\n// Returns new list if element exists, or same list\r\nexport const replaceInList = (list, valueToReplace, newValue) => {\r\n if (!includes(list, valueToReplace))\r\n return list;\r\n return list.map(elt => elt === valueToReplace ? newValue : elt);\r\n}\r\n\r\n// Returns new list if element exists, or same list\r\nexport const replaceInListById = (list, elementToUpdateId, newElement) => {\r\n if (findIndex(list, elt => elt.Id === elementToUpdateId) < 0)\r\n return list;\r\n return list.map(elt => elt.Id === elementToUpdateId ? newElement : elt);\r\n }","import {\r\n UPDATE_ITEM_QUANTITY,\r\n DELETE_ITEM,\r\n GET_REQUIRED_PARTNER_IDS_ASYNC\r\n} from '../../GlobalStateContainer'\r\n\r\n\r\nimport { removeFromListById } from '../../../util/listUtility'\r\n\r\nexport const CartItems = (state = [], action) => {\r\n switch (action.type) {\r\n case UPDATE_ITEM_QUANTITY:\r\n return state.map(item =>\r\n (item.Id === action.itemId)\r\n ? Object.assign({}, item, { Quantity: action.newQuantity })\r\n : item);\r\n case DELETE_ITEM:\r\n return removeFromListById(state, action.itemId);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport const RequiredPartnerIds = (state = '', action) => {\r\n switch (action.type) {\r\n case GET_REQUIRED_PARTNER_IDS_ASYNC:\r\n return action.requiredPartnerIds;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { NEW_CHECKOUT_SUMMARY, NOTIFY_REFRESHING_CHECKOUT_SUMMARY } from \"../../GlobalStateContainer\";\r\n\r\nconst emptySummary = { Total: 0, SubTotal: 0, Discount:0, ShippingTotal: null, Currency: 'USD', TotalRemaining: 0, DiscountTotal: 0}\r\n\r\nexport const Summary = function (state = emptySummary, action) {\r\n switch (action.type) {\r\n case NEW_CHECKOUT_SUMMARY:\r\n return action.summary;\r\n default: \r\n return state;\r\n }\r\n}\r\n\r\nexport const isRefreshingSummary = function (state = true, action) {\r\n switch (action.type) {\r\n case NOTIFY_REFRESHING_CHECKOUT_SUMMARY:\r\n return true;\r\n case NEW_CHECKOUT_SUMMARY:\r\n return false;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import {\r\n NOTIFY_ERROR,\r\n DISMISS_MESSAGE,\r\n DISMISS_ALL_MESSAGES,\r\n NOTIFY_COMPLETE_CHECKOUT_ERROR,\r\n NOTIFY_WARNING\r\n} from '../../GlobalStateContainer'\r\n\r\nimport {\r\n ERROR_USER_ALERT,\r\n UNKNOWN_USER_ALERT,\r\n WARNING_USER_ALERT\r\n} from './userAlertTypes'\r\n\r\nimport {\r\n addToList,\r\n replaceInListById\r\n} from '../../../util/listUtility'\r\n\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nconst mapActionTypeToUserAlertType = (actionType) => {\r\n switch (actionType) {\r\n case NOTIFY_WARNING:\r\n return WARNING_USER_ALERT;\r\n case NOTIFY_ERROR:\r\n case NOTIFY_COMPLETE_CHECKOUT_ERROR:\r\n return ERROR_USER_ALERT;\r\n default:\r\n return UNKNOWN_USER_ALERT;\r\n }\r\n}\r\n\r\nexport function messages(state = [], action) {\r\n switch (action.type) {\r\n case NOTIFY_WARNING:\r\n case NOTIFY_ERROR:\r\n return addToList(\r\n state,\r\n {\r\n type: mapActionTypeToUserAlertType(action.type),\r\n text: action.message,\r\n Id: action.messageId\r\n });\r\n case NOTIFY_COMPLETE_CHECKOUT_ERROR:\r\n return addToList(\r\n state,\r\n {\r\n type: mapActionTypeToUserAlertType(action.type),\r\n text: typeof(action.message) !== \"undefined\" && action.message !== null && action.message !== \"\"\r\n ? action.message\r\n : translateResourceString(\"/Checkout/UserMessaging/CompleteCheckoutError\"),\r\n Id: action.messageId\r\n });\r\n case DISMISS_MESSAGE:\r\n return replaceInListById(\r\n state,\r\n action.messageId,\r\n Object.assign({}, state.filter(m => m.Id === action.messageId)[0], { dismissed: true }))\r\n case DISMISS_ALL_MESSAGES:\r\n return [];\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { combineReducers } from 'redux'\r\n\r\nimport {\r\n Addresses,\r\n BillingAddresses,\r\n ShippingAddresses,\r\n SelectedBillingAddressId,\r\n SelectedShippingAddressId,\r\n useShippingForBilling\r\n} from '../Features/Address/addressReducers'\r\n\r\nimport {\r\n PhoneNumber,\r\n PhoneText,\r\n completeCheckoutButtonText,\r\n onPaymentScreen\r\n } from './uiReducers'\r\n\r\nimport {\r\n CartItems,\r\n RequiredPartnerIds \r\n} from '../Features/Cart/cartReducers'\r\n\r\nimport {\r\n PaymentOptions,\r\n SelectedPaymentOptionId,\r\n PaymentRecord,\r\n FetchingEBizChargePaymentWebFormUrl,\r\n EBizChargePaymentWebFormUrl,\r\n EBizChargePaymentWebFormError\r\n} from '../Features/PaymentMethod/paymentMethodReducers'\r\n\r\nimport {\r\n Summary,\r\n isRefreshingSummary\r\n} from '../Features/Summary/summaryReducers'\r\n\r\nimport { isPlaceOrderPending } from '../Features/PlaceOrder/placeOrderReducers'\r\n\r\nimport {\r\n ShippingOptions,\r\n SelectedShippingOptionId,\r\n isRefreshingShippingOptions\r\n} from '../Features/ShippingMethod/shippingMethodReducers'\r\n\r\nimport {\r\n Coupons\r\n} from '../Features/Coupon/couponReducers'\r\n\r\nimport { termsAndConditions } from '../Features/TermsAndConditions/termsAndCondtionsReducers'\r\n\r\nimport { messages } from '../Features/UserMessaging/userMessagingReducers'\r\n\r\nconst entities = combineReducers({\r\n // Address\r\n Addresses,\r\n BillingAddresses,\r\n SelectedBillingAddressId,\r\n ShippingAddresses,\r\n SelectedShippingAddressId,\r\n\r\n // Cart\r\n CartItems,\r\n RequiredPartnerIds,\r\n\r\n // Payment\r\n PaymentOptions,\r\n SelectedPaymentOptionId,\r\n PaymentRecord,\r\n EBizChargePaymentWebFormUrl,\r\n FetchingEBizChargePaymentWebFormUrl,\r\n EBizChargePaymentWebFormError,\r\n\r\n // Shipping\r\n ShippingOptions,\r\n SelectedShippingOptionId,\r\n isRefreshingShippingOptions,\r\n\r\n //Summary\r\n Summary,\r\n isRefreshingSummary,\r\n\r\n // Coupon\r\n Coupons\r\n});\r\n\r\nconst ui = combineReducers({\r\n // Address\r\n useShippingForBilling,\r\n\r\n // UserMessaging\r\n messages,\r\n\r\n // PlaceOrder\r\n isPlaceOrderPending,\r\n\r\n termsAndConditions,\r\n\r\n PhoneNumber,\r\n PhoneText,\r\n completeCheckoutButtonText,\r\n onPaymentScreen,\r\n});\r\n\r\nfunction constants(state = {}, action) {\r\n return state; // they're constants. duh.\r\n}\r\n\r\nexport const checkoutApp = combineReducers({\r\n ui,\r\n entities,\r\n constants\r\n})\r\n","\r\nimport {\r\n ADD_SHIPPING_ADDRESS,\r\n ADD_BILLING_ADDRESS,\r\n REMOVE_SHIPPING_ADDRESS,\r\n REMOVE_BILLING_ADDRESS,\r\n SELECT_BILLING_ADDRESS,\r\n SELECT_SHIPPING_ADDRESS,\r\n UPDATE_ADDRESS,\r\n SELECT_SHIPPING_AND_BILLING_ADDRESS,\r\n USE_BILLING_FOR_SHIPPING_TOGGLE\r\n} from '../../GlobalStateContainer'\r\n\r\nimport {\r\n addToList,\r\n removeFromList,\r\n removeFromListById,\r\n replaceInList,\r\n replaceInListById\r\n} from '../../../util/listUtility'\r\n\r\nexport function Addresses(state = [], action) {\r\n switch (action.type) {\r\n case ADD_BILLING_ADDRESS:\r\n return addToList(state, action.address);\r\n case ADD_SHIPPING_ADDRESS:\r\n return addToList(state, action.address);\r\n case REMOVE_BILLING_ADDRESS:\r\n return removeFromListById(state, action.addressId);\r\n case REMOVE_SHIPPING_ADDRESS:\r\n return removeFromListById(state, action.addressId);\r\n case UPDATE_ADDRESS:\r\n return replaceInListById(state, action.addressId, action.address);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function BillingAddresses(state = [], action) {\r\n switch (action.type) {\r\n case ADD_BILLING_ADDRESS:\r\n return addToList(state, action.address.Id);\r\n case REMOVE_BILLING_ADDRESS:\r\n return removeFromList(state, action.addressId);\r\n case SELECT_SHIPPING_AND_BILLING_ADDRESS:\r\n return addToList(state, action.addressId)\r\n case UPDATE_ADDRESS:\r\n return replaceInList(state, action.addressId, action.address.Id);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function ShippingAddresses(state = [], action) {\r\n switch (action.type) {\r\n case ADD_SHIPPING_ADDRESS:\r\n return addToList(state, action.address.Id);\r\n case REMOVE_SHIPPING_ADDRESS:\r\n return removeFromList(state, action.addressId);\r\n case UPDATE_ADDRESS:\r\n return (state.includes(action.addressId) && action.addressId !== action.address.ID)\r\n ? replaceInList(state, action.addressId, action.address.Id)\r\n : state;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function SelectedBillingAddressId(state = '', action) {\r\n switch (action.type) {\r\n case REMOVE_BILLING_ADDRESS:\r\n return state === action.addressId ? '' : state;\r\n case SELECT_BILLING_ADDRESS:\r\n return action.addressId;\r\n case SELECT_SHIPPING_AND_BILLING_ADDRESS:\r\n return action.addressId;\r\n case UPDATE_ADDRESS:\r\n return state === action.addressId ? action.address.Id : state;\r\n default: \r\n return state;\r\n }\r\n}\r\n\r\nexport function SelectedShippingAddressId(state = '', action) {\r\n switch (action.type) {\r\n case REMOVE_SHIPPING_ADDRESS:\r\n return state === action.addressId ? '' : state;\r\n case SELECT_SHIPPING_ADDRESS:\r\n return action.addressId;\r\n case SELECT_SHIPPING_AND_BILLING_ADDRESS:\r\n return action.addressId;\r\n case UPDATE_ADDRESS:\r\n return state === action.addressId ? action.address.Id : state;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function useShippingForBilling(state = true, action) {\r\n switch (action.type) {\r\n case USE_BILLING_FOR_SHIPPING_TOGGLE:\r\n return !state;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import {\r\n BRAINTREEE_PAYMENT_DATA_UPDATE,\r\n PURCHASE_ORDER_PAYMENT_DATA_UPDATE,\r\n SELECT_PAYMENT_OPTION,\r\n NOTIFY_COMPLETE_CHECKOUT_ERROR,\r\n UPDATE_EBIZ_CHARGE_WEB_FORM_URL,\r\n EBIZ_CHARGE_WEB_FORM_URL_ERROR,\r\n BACK,\r\n UPDATING_EBIZ_CHARGE_WEB_FORM_URL_ASYNC, \r\n SELECT_SHIPPING_OPTION\r\n} from '../../GlobalStateContainer'\r\n\r\nexport const PaymentOptions = function (state = [], action) {\r\n return state;\r\n}\r\n\r\nexport const SelectedPaymentOptionId = function(state = '', action) {\r\n switch (action.type) {\r\n case SELECT_PAYMENT_OPTION:\r\n return action.paymentMethodId || '';\r\n case NOTIFY_COMPLETE_CHECKOUT_ERROR:\r\n return '';\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport const PaymentRecord = function (state = {}, action) {\r\n switch (action.type) {\r\n case BRAINTREEE_PAYMENT_DATA_UPDATE:\r\n return Object.assign({}, state,\r\n {\r\n BraintreePaymentNonce: action.payload && action.payload.nonce,\r\n BraintreePaymentPayload: action.payload\r\n });\r\n case PURCHASE_ORDER_PAYMENT_DATA_UPDATE:\r\n return Object.assign({}, state, { POValue: action.number });\r\n case NOTIFY_COMPLETE_CHECKOUT_ERROR:\r\n return Object.assign({}, state, { POValue: null, BraintreePaymentNonce: null, BraintreePaymentPayload: null, EbizChargePaymentStatus: null });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport const FetchingEBizChargePaymentWebFormUrl = function (state = false, action) {\r\n switch (action.type) {\r\n case UPDATING_EBIZ_CHARGE_WEB_FORM_URL_ASYNC:\r\n return true;\r\n case UPDATE_EBIZ_CHARGE_WEB_FORM_URL:\r\n return false;\r\n case EBIZ_CHARGE_WEB_FORM_URL_ERROR:\r\n return false;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n/// \r\n/// Expects EBizChargeWebFormDetails\r\n/// url: string,\r\n/// amount: decimal,\r\n/// transactionId: string\r\n/// \r\nexport const EBizChargePaymentWebFormUrl = function (state = {}, action) {\r\n switch (action.type) {\r\n case UPDATE_EBIZ_CHARGE_WEB_FORM_URL:\r\n return action.payload.Url;\r\n case BACK:\r\n return null;\r\n case EBIZ_CHARGE_WEB_FORM_URL_ERROR:\r\n return null;\r\n case SELECT_SHIPPING_OPTION:\r\n return null;\r\n case NOTIFY_COMPLETE_CHECKOUT_ERROR:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport const EBizChargePaymentWebFormError = function (state = null, action) {\r\n switch (action.type) {\r\n case EBIZ_CHARGE_WEB_FORM_URL_ERROR:\r\n return true;\r\n case BACK:\r\n return false;\r\n default:\r\n return state;\r\n }\r\n}\r\n","\r\nimport {\r\n NEW_SHIPPING_OPTIONS,\r\n SELECT_SHIPPING_OPTION,\r\n NOTIFY_REFRESHING_SHIPPING_OPTIONS\r\n} from '../../GlobalStateContainer'\r\n\r\nexport const ShippingOptions = function (state = [], action) {\r\n switch (action.type) {\r\n case NEW_SHIPPING_OPTIONS:\r\n return action.shippingOptions;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport const SelectedShippingOptionId = function (state = '', action) {\r\n switch (action.type) {\r\n case SELECT_SHIPPING_OPTION:\r\n return action.id;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport const isRefreshingShippingOptions = function (state = '', action) {\r\n switch (action.type) {\r\n case NOTIFY_REFRESHING_SHIPPING_OPTIONS:\r\n return true;\r\n case NEW_SHIPPING_OPTIONS:\r\n return false;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n","import {\r\n UPDATING_COUPONS\r\n} from '../../GlobalStateContainer'\r\n\r\nexport const Coupons = function (state = [], action) {\r\n switch (action.type) {\r\n case UPDATING_COUPONS:\r\n console.log('UPDATING_COUPONS reducer', action);\r\n return action.coupons;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import {\r\n NOTIFY_COMPLETE_CHECKOUT_ERROR,\r\n PLACE_ORDER_ASYNC\r\n} from '../../GlobalStateContainer'\r\n\r\nexport function isPlaceOrderPending(state = false, action) {\r\n switch (action.type) {\r\n case PLACE_ORDER_ASYNC:\r\n return true;\r\n case NOTIFY_COMPLETE_CHECKOUT_ERROR:\r\n return false;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import {\r\n CHECK_TERMS_CONDITIONS,\r\n UNCHECK_TERMS_CONDITIONS\r\n } from '../../GlobalStateContainer'\r\n\r\n\r\n export function termsAndConditions(state = false, action) {\r\n switch(action.type) {\r\n case CHECK_TERMS_CONDITIONS:\r\n return true;\r\n case UNCHECK_TERMS_CONDITIONS:\r\n return false;\r\n }\r\n return state;\r\n}","import { TO_PAYMENT, TO_SHIPPING } from \"./actions\";\r\n\r\nexport function PhoneNumber(state = 'tel:+14144254069', action) {\r\n return state;\r\n}\r\n\r\nexport function PhoneText(state = '(414) 425-4069', action) {\r\n return state;\r\n}\r\n\r\nexport function completeCheckoutButtonText(state = '', action) {\r\n return state;\r\n}\r\n\r\nexport function onPaymentScreen(state = false, action) {\r\n switch(action.type) {\r\n case TO_PAYMENT:\r\n return true;\r\n case TO_SHIPPING:\r\n return false;\r\n }\r\n return state;\r\n}\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nimport { CheckoutSection } from '../../components'\r\nimport { notifyError } from '../UserMessaging'\r\nimport { Fade } from '../../componentAnimations'\r\n\r\nimport isEqual from 'lodash/isEqual'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\nimport { Tooltip } from '../../components/tooltip/Tooltip'\r\n\r\n\r\nconst placeOrderDetailsChanged = (prevProps, newProps) => !isEqual(prevProps.Coupons, newProps.Coupons) || !isEqual(prevProps.CartItems, newProps.CartItems) || !isEqual(prevProps.SelectedShippingOptionId, newProps.SelectedShippingOptionId);\r\n\r\n\r\nclass CheckoutCoupon extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isCollapsed: !!!this.props.isExpanded,\r\n newCouponCode: this.props.isExpanded && this.props.Coupons.length > 0 ? this.props.Coupons[0].Code : '',\r\n currentCouponCode: this.props.isExpanded && this.props.Coupons.length > 0 ? this.props.Coupons[0].Code : ''\r\n };\r\n }\r\n\r\n onClickChange(e) {\r\n e.preventDefault();\r\n this.setState({ isCollapsed: !this.state.isCollapsed });\r\n }\r\n\r\n onKeyPress(e) {\r\n if (e.key === \"Enter\") {\r\n this.addCoupon();\r\n }\r\n }\r\n\r\n addCoupon() {\r\n if (this.state.newCouponCode && this.state.newCouponCode != '') {\r\n this.props.onAddCoupon(this.state.newCouponCode);\r\n this.setState({ newCouponCode: this.props.isExpanded && this.props.Coupons.length > 0 ? this.props.Coupons[0].Code : '',\r\n currentCouponCode: this.props.isExpanded && this.props.Coupons.length > 0 ? this.props.Coupons[0].Code : '' });\r\n } else {\r\n alert(translateResourceString(\"/Checkout/Coupons/NoPromotionCodeEntered\"));\r\n }\r\n }\r\n\r\n removeCoupon(code) {\r\n if (code && code != '') {\r\n this.props.onRemoveCoupon(code);\r\n this.setState({ newCouponCode: this.props.isExpanded && this.props.Coupons.length > 0 ? this.props.Coupons[0].Code : '',\r\n currentCouponCode: this.props.isExpanded && this.props.Coupons.length > 0 ? this.props.Coupons[0].Code : '' });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (placeOrderDetailsChanged(prevProps, this.props)) {\r\n this.props.updateCoupons();\r\n this.setState({ newCouponCode: this.props.isExpanded && this.props.Coupons.length > 0 ? this.props.Coupons[0].Code : '',\r\n currentCouponCode: this.props.isExpanded && this.props.Coupons.length > 0 ? this.props.Coupons[0].Code : '' });\r\n }\r\n }\r\n\r\n render() {\r\n if(!!!this.props.show) {\r\n return ;\r\n }\r\n\r\n const usedCoupons = this.props.Coupons ? this.props.Coupons : [];\r\n const appliedCoupons = usedCoupons.map(c => {\r\n var key = \"appliedCoupons\" + c.Code;\r\n return (\r\n
\r\n \r\n {c.Discount && {c.Discount}}\r\n { this.removeCoupon(c.Code) }}>\r\n
\r\n );\r\n });\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nCheckoutCoupon.propTypes = {\r\n Coupons: PropTypes.array.isRequired,\r\n CartItems: PropTypes.array,\r\n SelectedShippingOptionId: PropTypes.string\r\n}\r\n\r\nexport default CheckoutCoupon\r\n","import {\r\n ADD_COUPON,\r\n ADD_COUPON_ASYNC,\r\n REMOVE_COUPON,\r\n REMOVE_COUPON_ASYNC,\r\n UPDATING_COUPONS,\r\n UPDATING_COUPONS_ASYNC\r\n} from '../../GlobalStateContainer'\r\n\r\nimport { notifyError } from '../UserMessaging'\r\nimport { fetchJson } from '../../GlobalStateContainer'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\n\r\nconst addingErrorMessage = () => \"Error adding your coupon.\";\r\nconst removingErrorMessage = () => \"Error removing your coupon.\";\r\nconst onAddCouponSuccess = (response) => {\r\n if (response.length > 0) {\r\n return notifyError(response[0], true);\r\n }\r\n return updateCouponsAsync();\r\n}\r\n\r\nconst addCouponAsyncSpec = {\r\n \r\n endpoint: (state) => state.constants.navigation.addCouponEndpoint,\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify: ({ code }) => { return { type: ADD_COUPON_ASYNC, code } },\r\n extract: (response) => response.json(),\r\n onSuccess: (response) => {\r\n if (response.Applied) {\r\n return onAddCouponSuccess(response);\r\n } else {\r\n var msg = response.Description && response.Description !== \"\"\r\n ? response.Description\r\n : addingErrorMessage()\r\n return notifyError(msg, response);\r\n }\r\n },\r\n onError: (diagMsg) => notifyError(translateResourceString(\"/Checkout/Coupons/CouponAdddingError\"), diagMsg)\r\n}\r\n\r\nexport const addCouponAsync = fetchJson(addCouponAsyncSpec);\r\n\r\n\r\nconst onRemoveCouponSuccess = (response) => {\r\n if (!response) {\r\n return notifyError(translateResourceString(\"/Checkout/Coupons/CouponRemovingError\"), true);\r\n }\r\n return updateCouponsAsync();\r\n}\r\n\r\nconst removeCouponAsyncSpec = {\r\n endpoint: (state) => state.constants.navigation.removeCouponEndpoint,\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify: ({ code }) => { return { type: REMOVE_COUPON_ASYNC, code } },\r\n extract: (response) => response.json(),\r\n onSuccess: (response) => onRemoveCouponSuccess(response),\r\n onError: (diagMsg) => notifyError(translateResourceString(\"/Checkout/Coupons/CouponRemovingError\"), diagMsg)\r\n};\r\n\r\nexport const removeCouponAsync = fetchJson(removeCouponAsyncSpec);\r\n\r\n\r\nconst updateCouponSuccess = (responseObject) => {\r\n const coupons = responseObject;\r\n return { type: UPDATING_COUPONS, coupons };\r\n}\r\n\r\nconst updateCouponsAsyncFetchSpec = {\r\n endpoint: (state) => state.constants.navigation.couponsEndpoint,\r\n init: { method: 'GET', credentials: 'same-origin' },\r\n notify: () => { return { type: UPDATING_COUPONS_ASYNC } },\r\n extract: (response) => response.json(),\r\n onSuccess: (response) => updateCouponSuccess(response),\r\n onError: (diagMsg) => notifyError(translateResourceString(\"/Checkout/Coupons/CouponClearingError\"), diagMsg)\r\n}\r\n\r\nexport const updateCouponsAsync = fetchJson(updateCouponsAsyncFetchSpec)","import { connect } from 'react-redux'\r\n\r\nimport CheckoutCoupon from './CheckoutCoupon'\r\nimport { addCouponAsync, removeCouponAsync, updateCouponsAsync } from './couponActionCreators'\r\n\r\nconst mapCheckoutCouponStateToProps = (state) => {\r\n return {\r\n Coupons: state.entities.Coupons,\r\n show: state.constants.allowCoupons && !!!state.ui.onPaymentScreen,\r\n isExpanded: false,\r\n isRequired: false,\r\n toolTip: state.constants.partnerIdTooltip\r\n };\r\n}\r\n\r\nconst mapCheckoutCouponDispatchToProps = (dispatch) => {\r\n return {\r\n onAddCoupon: (code) => (dispatch(addCouponAsync({ code }))),\r\n onRemoveCoupon: (code) => (dispatch(removeCouponAsync({ code }))),\r\n updateCoupons: () => dispatch(updateCouponsAsync())\r\n }\r\n}\r\n\r\nconst CheckoutCouponContainer = connect(mapCheckoutCouponStateToProps, mapCheckoutCouponDispatchToProps)(CheckoutCoupon);\r\n\r\nexport default CheckoutCouponContainer","import { connect } from 'react-redux'\r\n\r\nimport CheckoutCoupon from './CheckoutCoupon'\r\nimport { addCouponAsync, removeCouponAsync, updateCouponsAsync } from './couponActionCreators'\r\n\r\nconst mapCheckoutCouponStateToProps = (state) => {\r\n const isRequired = (state.entities.CartItems && state.entities.CartItems.some(item => item.RequiresPartnerId));\r\n return {\r\n Coupons: state.entities.Coupons,\r\n show: state.constants.allowCoupons && !!!state.ui.onPaymentScreen && isRequired,\r\n isExpanded: isRequired,\r\n isRequired: isRequired,\r\n toolTip: state.constants.partnerIdTooltip\r\n };\r\n}\r\n\r\nconst mapCheckoutCouponDispatchToProps = (dispatch) => {\r\n return {\r\n onAddCoupon: (code) => (dispatch(addCouponAsync({ code }))),\r\n onRemoveCoupon: (code) => (dispatch(removeCouponAsync({ code }))),\r\n updateCoupons: () => dispatch(updateCouponsAsync())\r\n }\r\n}\r\n\r\nconst CheckoutExpandedCouponContainer = connect(mapCheckoutCouponStateToProps, mapCheckoutCouponDispatchToProps)(CheckoutCoupon);\r\n\r\nexport default CheckoutExpandedCouponContainer","import PropTypes from 'prop-types'\r\n\r\nexport class CartItem { } \r\n\r\nCartItem.propTypes = PropTypes.shape({\r\n Id: PropTypes.number.isRequired,\r\n Price: PropTypes.string.isRequired,\r\n SKU: PropTypes.string,\r\n Quantity: PropTypes.number.isRequired\r\n})\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Modal, ModalBody, ModalHeader } from 'reactstrap'\r\n\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\nimport { makeCatalystFetchPostInit } from \"../../../util/fetchUtility\";\r\n\r\nclass TitlesIncludedInLicense extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n titles: [],\r\n isOpen: false,\r\n deleteFromLicenseUrl: \"\"\r\n };\r\n this.toggleModal = this.toggleModal.bind(this);\r\n this.toggleModal = this.toggleModal.bind(this);\r\n }\r\n\r\n toggleModal = (isOpen) => {\r\n this.setState({ isOpen: isOpen });\r\n }\r\n\r\n removeTitleFromLicense = (skuToRemove) => {\r\n if (window.confirm(translateResourceString(\"/Checkout/Cart/TitlesIncludedInLicense/DeleteConfirmation\"))) {\r\n fetch(this.state.deleteFromLicenseUrl, makeCatalystFetchPostInit({id: this.props.lineItemId, skuToRemove: skuToRemove}))\r\n .then(resp => resp.json())\r\n .then(data => {\r\n if (!data.hasError) {\r\n this.setState({ titles: this.state.titles.filter(title => title.variantCode !== skuToRemove)});\r\n } else {\r\n window.alert(data.message);\r\n }\r\n })\r\n .catch((err) => window.alert(err.Message));\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n \r\n fetchData = async () => {\r\n try {\r\n const url = this.props.url + `?lineItemId=${this.props.lineItemId}`\r\n const response = await fetch(url);\r\n const jsonData = await response.json();\r\n this.setState({ titles: jsonData.titles, deleteFromLicenseUrl: jsonData.deleteFromLicenseUrl });\r\n } catch (error) {\r\n console.error('Error fetching data for line item: ' + this.props.lineItemId + ':', error);\r\n }\r\n };\r\n\r\n render() {\r\n const titles = this.state.titles.map((title, key) => {\r\n return (\r\n
\r\n
{title.title}
\r\n
\r\n {title.format}\r\n \r\n
\r\n
\r\n );});\r\n return (\r\n
\r\n \r\n this.toggleModal(false)}\r\n centered={true}\r\n contentClassName=\"list-modal\"\r\n role=\"document\" >\r\n \r\n
\r\n
\r\n \r\n
{translateResourceString(\"/Checkout/Cart/TitlesIncludedInLicense/ModalHeader\")}
\r\n
\r\n
\r\n {translateResourceString(\"/Checkout/Cart/TitlesIncludedInLicense/ModalDescription\")}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{translateResourceString(\"/Checkout/Cart/TitlesIncludedInLicense/TitleLabel\")}
\r\n
{translateResourceString(\"/Checkout/Cart/TitlesIncludedInLicense/FormatLabel\")}
\r\n {titles}\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nTitlesIncludedInLicense.propTypes = {\r\n lineItemId: PropTypes.isRequired\r\n}\r\n\r\nexport default TitlesIncludedInLicense;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { NumberInputSelect } from '../../components';\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nimport TitlesIncludedInLicense from './TitlesIncludedInLicense';\r\n\r\nconst maxDropdownQuantity = 10;\r\n\r\nclass CartItem extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onQuantityChange = this.onQuantityChange.bind(this);\r\n }\r\n\r\n onQuantityChange(qty) {\r\n if (qty > 0) {\r\n this.props.onQuantityChange(this.props.item.Id, Number(qty));\r\n } else {\r\n this.props.onDelete(this.props.item.Id, this.props.item.Quantity);\r\n }\r\n }\r\n\r\n render() {\r\n const item = this.props.item;\r\n //Use restricted quantity text value if it exists. This will show Unlimited if it is used.\r\n const matchedRestrictedQuantity = item.RestrictedQuantities.find(rq => Number(rq.Value) === item.Quantity);\r\n const quantity = matchedRestrictedQuantity ? matchedRestrictedQuantity.Text : item.Quantity;\r\n return (\r\n
\r\n \r\n {item.Name}\r\n \r\n
\r\n
\r\n
\r\n

{item.Name}

\r\n
\r\n
\r\n \r\n {item.Price}\r\n
\r\n
\r\n   {item.SKU}\r\n
\r\n {item.LicenceDuration &&\r\n
\r\n {item.LicenseDuration}\r\n
\r\n }\r\n {item.Language &&\r\n
\r\n {item.Language}\r\n
\r\n }\r\n {!item.IsStopWorkshop &&\r\n
\r\n
{item.QtyMessage} {quantity}
\r\n {/* Use this if quantity is editeble\r\n {this.props.isEditable &&\r\n \r\n } */}\r\n
\r\n }\r\n {item.TitlesIncluded &&\r\n \r\n }\r\n
\r\n {this.props.isEditable &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nCartItem.propTypes = {\r\n item: PropTypes.shape({\r\n Name: PropTypes.string.isRequired,\r\n ImageUrl: PropTypes.string.isRequired,\r\n SKU: PropTypes.string.isRequired,\r\n Quantity: PropTypes.number.isRequired,\r\n RestrictedQuantities: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Text: PropTypes.string,\r\n Value: PropTypes.string,\r\n })\r\n ),\r\n }).isRequired,\r\n onDelete: PropTypes.func,\r\n onQuantityChange: PropTypes.func.isRequired,\r\n readOnly: PropTypes.bool\r\n}\r\n\r\nexport default CartItem;\r\n","import {\r\n fetchJson,\r\n UPDATE_ITEM_QUANTITY,\r\n DELETE_ITEM,\r\n UPDATING_ITEM_QUANTITY_ASYNC,\r\n DELETING_ITEM_ASYNC,\r\n GET_REQUIRED_PARTNER_IDS_ASYNC,\r\n GETTING_REQUIRED_PARTNER_IDS_ASYNC\r\n} from '../../GlobalStateContainer'\r\n\r\nimport { notifyError } from '../UserMessaging'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\n/* CART */\r\nexport function updateItemQuantity(itemId, newQuantity) {\r\n return { type: UPDATE_ITEM_QUANTITY, itemId, newQuantity }\r\n}\r\n\r\nexport function deleteItem(itemId) {\r\n return { type: DELETE_ITEM, itemId }\r\n}\r\n\r\nexport function updateRequiredPartnerIds(requiredPartnerIds) {\r\n return { type: GET_REQUIRED_PARTNER_IDS_ASYNC, requiredPartnerIds }\r\n}\r\n\r\n\r\nconst onUpdateQuantitySuccess = ({ error, message }, { id, qty }, getState) => {\r\n if (!error) {\r\n return updateItemQuantity(id, qty);\r\n } else {\r\n return notifyError(translateResourceString(\"/Checkout/Cart/Errors/UpdateQuantityFailed\"), message);\r\n }\r\n}\r\n\r\nconst notifyUpdatingItem = function ({ id, qty }) {\r\n return { type: UPDATING_ITEM_QUANTITY_ASYNC, id, qty };\r\n}\r\nconst updateItemQuantityAsyncSpec = {\r\n endpoint: (state) => state.constants.navigation.updateItemQuantityEndpoint,\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify: notifyUpdatingItem,\r\n extract: (response) => response.json(),\r\n onSuccess: onUpdateQuantitySuccess,\r\n onError: (diagMsg) => notifyError(translateResourceString(\"/Checkout/Cart/Errors/UpdateQuantityFailed\"), diagMsg)\r\n}\r\n\r\nexport const updateItemQuantityAsync = fetchJson(updateItemQuantityAsyncSpec)\r\n\r\n\r\nconst ondeleteSuccess = ({ error, message }, { id }, getState) => {\r\n if (!error) {\r\n return deleteItem(id);\r\n } else {\r\n return notifyError(translateResourceString(\"/Checkout/Cart/Errors/DeleteItemFailed\"), message);\r\n }\r\n}\r\n\r\nconst deleteItemAsyncSpec = {\r\n endpoint: (state) => state.constants.navigation.deleteItemEndpoint,\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify: ({ id }) => ({ type: DELETING_ITEM_ASYNC, id }),\r\n extract: (response) => response.json(),\r\n onSuccess: ondeleteSuccess,\r\n onError: (diagMsg) => notifyError(translateResourceString(\"/Checkout/Cart/Errors/DeleteItemFailed\"), diagMsg)\r\n}\r\n\r\nexport const deleteItemAsync = fetchJson(deleteItemAsyncSpec)\r\n\r\nconst onUpdateRequiredPartnerIdsAsyncSuccess = ({ error, message, numberOfRequiredPartnerIds }) => {\r\n if (!error) {\r\n return updateRequiredPartnerIds(numberOfRequiredPartnerIds);\r\n } else {\r\n return notifyError(translateResourceString(\"/Checkout/Cart/Errors/GettingNumberOfRequiredPartnerIds\"), message);\r\n }\r\n}\r\n\r\nconst updateRequiredPartnerIdsAsyncSpec = {\r\n endpoint: (state) => state.constants.navigation.requiredPartnerIdsEndpoint,\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify: () => { return { type: GETTING_REQUIRED_PARTNER_IDS_ASYNC } },\r\n extract: (response) => response.json(),\r\n onSuccess: onUpdateRequiredPartnerIdsAsyncSuccess,\r\n onError: (diagMsg) => notifyError(translateResourceString(\"/Checkout/Cart/Errors/GettingNumberOfRequiredPartnerIds\"), diagMsg)\r\n}\r\n\r\nexport const updateRequiredPartnerIdsAsync = fetchJson(updateRequiredPartnerIdsAsyncSpec)\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport CartItem from './CartItem'\r\nimport { CheckoutSection } from '../../components'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\nimport { deleteItemAsync, updateItemQuantityAsync, updateItemQuantity, updateRequiredPartnerIdsAsync } from './cartActionCreators'\r\n\r\nconst CartList = ({ items, isEditable, onQuantityChange, onDelete, titlesIncludedInLicenseUrl }) => {\r\n const cartItems = items.map((item) => {\r\n return (\r\n \r\n );\r\n });\r\n return (\r\n \r\n {cartItems}\r\n \r\n );\r\n}\r\n\r\nconst cartListMapStateToProps = (state) => {\r\n return {\r\n items: state.entities.CartItems,\r\n titlesIncludedInLicenseUrl: state.constants.navigation.titlesIncludedInLicenseEndpoint,\r\n isEditable: !!!state.ui.onPaymentScreen\r\n }\r\n}\r\n\r\nconst cartListMapDispatchToProps = (dispatch) => {\r\n return {\r\n onQuantityChange: (id, value) => {\r\n dispatch(updateItemQuantityAsync({ id, qty: value }));\r\n },\r\n onDelete: (id, prevQty) => {\r\n if (typeof window !== 'undefined' && typeof window.confirm !== 'undefined' && window.confirm(translateResourceString(\"/Checkout/Cart/DeleteItemConfirmation\"))) {\r\n dispatch(deleteItemAsync({ id }))\r\n dispatch(updateRequiredPartnerIdsAsync());\r\n } else {\r\n dispatch(updateItemQuantity(id, prevQty > 0 ? prevQty : 1))\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst CartListContainer = connect(cartListMapStateToProps, cartListMapDispatchToProps)(CartList);\r\n\r\nexport default CartListContainer\r\n","import find from 'lodash/find'\r\n\r\nimport { fetchJson } from '../../GlobalStateContainer'\r\nimport { isValidGuid } from '../../../util/guidUtility'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nimport {\r\n NOTIFY_ERROR,\r\n USE_BILLING_FOR_SHIPPING_TOGGLE,\r\n ADD_SHIPPING_ADDRESS,\r\n ADD_BILLING_ADDRESS,\r\n REMOVE_SHIPPING_ADDRESS,\r\n REMOVE_BILLING_ADDRESS,\r\n UPDATE_ADDRESS,\r\n SELECT_BILLING_ADDRESS,\r\n SELECT_SHIPPING_ADDRESS,\r\n SAVE_ADDRESS_ASYNC,\r\n DELETE_ADDRESS_ASYNC,\r\n SELECT_SHIPPING_AND_BILLING_ADDRESS,\r\n SELECT_SHIPPING_ADDRESS_ASYNC\r\n} from '../../GlobalStateContainer'\r\n\r\nimport {\r\n notifyError,\r\n logError\r\n} from '../UserMessaging'\r\n/*\r\n * SYNC ACTION CREATORS\r\n */\r\n\r\nlet nextAddressId = -1;\r\n\r\nlet setAddressIdIfMissing = (newAddress) => {\r\n if (newAddress.Id === \"\")\r\n return Object.assign({}, { Id: (nextAddressId--).toString() }, newAddress);\r\n else if (newAddress.Id < 0) {\r\n return notifyError(translateResourceString(\"/Checkout/Address/Errors/ErrorAdding\"), translateResourceString(\"/Checkout/Address/Errors/NegativeAddressId\"));\r\n }\r\n}\r\n\r\nexport function addBillingAddress(newAddress) {\r\n var addressWithIdOrError = setAddressIdIfMissing(newAddress);\r\n if (addressWithIdOrError && addressWithIdOrError.type && addressWithIdOrError.type === NOTIFY_ERROR)\r\n return addressWithIdOrError;\r\n return { type: ADD_BILLING_ADDRESS, address: addressWithIdOrError }\r\n}\r\n\r\nexport function addShippingAddress(newAddress) {\r\n var addressWithIdOrError = setAddressIdIfMissing(newAddress);\r\n if (addressWithIdOrError && addressWithIdOrError.type && addressWithIdOrError.type === NOTIFY_ERROR)\r\n return addressWithIdOrError;\r\n return { type: ADD_SHIPPING_ADDRESS, address: addressWithIdOrError }\r\n}\r\n\r\nexport function removeShippingAddress(addressId) {\r\n return { type: REMOVE_SHIPPING_ADDRESS, addressId }\r\n}\r\n\r\nexport function removeBillingAddress(addressId) {\r\n return { type: REMOVE_BILLING_ADDRESS, addressId }\r\n}\r\n\r\nexport function selectBillingAddress(addressId) {\r\n return { type: SELECT_BILLING_ADDRESS, addressId }\r\n}\r\n\r\nconst onSelectShippingAddressSucceeded = (responseText, addressId) => {\r\n if (responseText.toUpperCase() !== \"OK\")\r\n return notifyError(translateResourceString(\"/Checkout/Address/Errors/ErrorSelecting\"),\r\n `Expected to receive 'OK' when selecting an address but got '${responseText}'`);\r\n else {\r\n return { type: SELECT_SHIPPING_ADDRESS, addressId }\r\n }\r\n};\r\n\r\nconst selectShippingAddressFetchSpec = {\r\n endpoint : (state) => state.constants.navigation.setShippingAddressEndpoint,\r\n init : { method: 'POST', credentials: 'same-origin' },\r\n notify : (addressId) => ( { type: SELECT_SHIPPING_ADDRESS_ASYNC, addressId } ),\r\n extract : (response) => response.text() ,\r\n onSuccess: onSelectShippingAddressSucceeded,\r\n onError : (diagMsg) => notifyError(translateResourceString(\"/Checkout/Address/Errors/ErrorSelecting\"), diagMsg)\r\n}\r\n\r\nexport const selectShippingAddress = fetchJson(selectShippingAddressFetchSpec)\r\n\r\nexport function updateAddress(addressId, address) {\r\n return { type: UPDATE_ADDRESS, addressId, address }\r\n}\r\n\r\nexport function selectShippingAndBillingAddress(addressId) {\r\n return { type: SELECT_SHIPPING_AND_BILLING_ADDRESS, addressId }\r\n}\r\n\r\nexport function UseBillingForShippingToggle() {\r\n return { type: USE_BILLING_FOR_SHIPPING_TOGGLE }\r\n}\r\n\r\n\r\n/*\r\n * ASYNC ACTION CREATORS\r\n */\r\n\r\nconst onPostAddressSucceeded = (responseText, postedAddress) =>\r\n (isValidGuid(responseText))\r\n ? updateAddress(postedAddress.Id, Object.assign({}, postedAddress, { Id: responseText }))\r\n : notifyError(translateResourceString(\"/Checkout/Address/Errors/ErrorSaving\"), `${translateResourceString(\"/Checkout/Address/Errors/ExpectedGuid\")}: '${responseText}'`);\r\n\r\nconst saveAddressFetchSpec = {\r\n endpoint(state) { return state.constants.navigation.addAddressEndpoint; },\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify(address) { return { type: SAVE_ADDRESS_ASYNC, address }; },\r\n extract(response) { return response.text() },\r\n onSuccess: onPostAddressSucceeded,\r\n onError(diagMsg) { return notifyError(translateResourceString(\"/Checkout/Address/Errors/ErrorSaving\"), diagMsg); }\r\n};\r\n\r\nexport const saveAddress = fetchJson(saveAddressFetchSpec);\r\n\r\nconst onPostDeleteSucceeded = (responseText, { addressId }, getState) => {\r\n if (responseText.toUpperCase() !== \"OK\")\r\n return notifyError(translateResourceString(\"/Checkout/Address/Errors/ErrorDeleting\"),\r\n `${translateResourceString(\"/Checkout/Address/Errors/ExpectedOkDeleting\")} '${responseText}'`);\r\n else {\r\n const state = getState();\r\n const postedAddress = find(state.entities.Addresses, address => address.Id === addressId);\r\n if (!postedAddress)\r\n return logError(`No address to delete with id ${addressId}`);\r\n return (postedAddress.AddressType === state.constants.BillingAddressType)\r\n ? removeBillingAddress(postedAddress.Id)\r\n : removeShippingAddress(postedAddress.Id);\r\n }\r\n};\r\n\r\nconst deleteAddressFetchSpec = {\r\n endpoint: (state) => state.constants.navigation.deleteAddressEndpoint,\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify: ({ addressId }) => ({ type: DELETE_ADDRESS_ASYNC, addressId }),\r\n extract: (response) => response.text(),\r\n onSuccess: onPostDeleteSucceeded,\r\n onError: (diagMsg) => notifyError(translateResourceString(\"/Checkout/Address/Errors/ErrorDeleting\"), diagMsg)\r\n}\r\n\r\nexport const deleteAddress = fetchJson(deleteAddressFetchSpec)\r\n\r\n","import PropTypes from 'prop-types';\r\nimport findIndex from 'lodash/findIndex'\r\n\r\nexport class AddressActionCreatorsShape { };\r\n\r\nAddressActionCreatorsShape.propTypes = PropTypes.shape({\r\n add: PropTypes.func.isRequired,\r\n select: PropTypes.func.isRequired,\r\n remove: PropTypes.func.isRequired,\r\n update: PropTypes.func.isRequired\r\n});\r\n\r\nexport class AddressShape { }\r\n\r\nAddressShape.propTypes = PropTypes.shape({\r\n AddressLine1: PropTypes.string.isRequired,\r\n AddressLine2: PropTypes.string,\r\n AddressType: PropTypes.number.isRequired,\r\n City: PropTypes.string.isRequired,\r\n CountryCode: PropTypes.string.isRequired,\r\n CountryName: PropTypes.string.isRequired,\r\n Id: PropTypes.string.isRequired,\r\n Name: PropTypes.string.isRequired,\r\n Phone: PropTypes.string,\r\n PostalCode: PropTypes.string.isRequired,\r\n State: PropTypes.string.isRequired\r\n})\r\n\r\nexport const countriesStatesMap = (propValue, key, componentName, location, propFullName) => {\r\n if (!Array.isArray(propValue[key])) {\r\n return new Error(\r\n `Invalid prop \\`${propFullName}\\` supplied to \\`${componentName}\\`. Each key is a country code, with its value an array of states.`\r\n );\r\n }\r\n let isValidArrayElement = s => typeof s === 'object' && typeof s.Name === 'string';\r\n if (!propValue[key].every(isValidArrayElement)) {\r\n return new Error(\r\n `Invalid prop \\`${propFullName}\\` supplied to ${componentName}\\`. Element [${findIndex(propValue[key],\r\n elt => !isValidArrayElement(elt))}`);\r\n }\r\n return undefined;\r\n};\r\n\r\n","import React from 'react';\r\nimport { AddressShape } from './propTypes';\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nconst spanStyleCompact = {\r\n marginLeft: 5,\r\n marginRight: 0,\r\n marginTop: 0,\r\n marginBottom: 0\r\n}\r\n\r\nconst spanStyle = {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n marginTop: 0,\r\n marginBottom: 0,\r\n display: \"block\"\r\n}\r\n\r\nconst addressStyleCompact = {\r\n margin: 0,\r\n display: 'inline-block'\r\n}\r\n\r\nconst addressStyle = {\r\n margin: 0\r\n}\r\n\r\nexport default function AddressDisplay(props) {\r\n if (!props.address) {\r\n return (
{translateResourceString(\"/Checkout/Address/NoAddressProvided\")}
);\r\n }\r\n const min = props.compact;\r\n const nameEmph = props.compact ? ' strong' : '';\r\n const addr = props.address;\r\n const cityStateZip = addr.State ? `${addr.City}, ${addr.State} ${addr.PostalCode}` : `${addr.City}, ${addr.PostalCode}`;\r\n const s = props.compact ? spanStyleCompact : spanStyle;\r\n const si = Object.assign({}, s, { marginLeft: 0 });\r\n const sj = Object.assign({}, si, { });\r\n const a = props.compact ? addressStyleCompact : addressStyle;\r\n return (\r\n
\r\n
\r\n {addr.Name}\r\n {addr.AddressLine1}\r\n \r\n
\r\n
\r\n {cityStateZip }\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nAddressDisplay.propTypes = {\r\n address: AddressShape.propTypes\r\n}","// eslint-disable-next-line\r\nimport React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nimport { RadioInput } from '../../components'\r\n\r\nimport AddressDisplay from './AddressDisplay'\r\n\r\nimport { AddressShape } from './propTypes'\r\n\r\nconst r = {\r\n paddingTop: 10,\r\n paddingLeft: 15,\r\n paddingRight: 15,\r\n paddingBottom: 0\r\n}\r\n\r\nlet ActiveAddressInAddressSelectorList = (\r\n {\r\n address,\r\n isSelected,\r\n onSelected,\r\n onRadioSelected,\r\n onBeginEdit,\r\n onDelete,\r\n selectAddressMessage\r\n }) => (\r\n \r\n
\r\n onRadioSelected(address.Id)} />\r\n \r\n
\r\n
\r\n e.preventDefault() || onSelected(address.Id)}\r\n >\r\n {selectAddressMessage}\r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n)\r\n\r\nActiveAddressInAddressSelectorList.propTypes = {\r\n address: PropTypes.shape(AddressShape).isRequired,\r\n isSelected: PropTypes.bool.isRequired,\r\n onSelected: PropTypes.func.isRequired,\r\n onRadioSelected: PropTypes.func.isRequired,\r\n onBeginEdit: PropTypes.func.isRequired,\r\n onDelete: PropTypes.func.isRequired,\r\n selectAddressMessage: PropTypes.string.isRequired\r\n}\r\n\r\nexport default ActiveAddressInAddressSelectorList","// eslint-disable-next-line\r\nimport React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport PropTypes from 'prop-types'\r\nimport ActiveAddressInAddressSelectorList from './ActiveAddressInAddressSelectorList'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nimport { AddressShape } from './propTypes'\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n ...ownProps\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => {\r\n\r\n const confirmDelete = () => {\r\n if (typeof window.confirm !== 'undefined')\r\n return window.confirm(translateResourceString(\"/Checkout/Address/DeletionConfirmationMessage\"));\r\n else\r\n return false;\r\n }\r\n\r\n return {\r\n onSelected: id => {\r\n ownProps.onSelected(id);\r\n dispatch(ownProps.selectAddressActionCreator(id));\r\n },\r\n onRadioSelected: id => {\r\n dispatch(ownProps.selectAddressActionCreator(id));\r\n ownProps.onRadioSelected(id);\r\n },\r\n onDelete: id => {\r\n if (confirmDelete()) {\r\n ownProps.onDeleted(id);\r\n dispatch(ownProps.deleteAddressActionCreator({ addressId: id }));\r\n }\r\n }\r\n };\r\n}\r\n\r\nconst AddressSelectorListActiveAddressContainer = connect(mapStateToProps, mapDispatchToProps)(ActiveAddressInAddressSelectorList)\r\n\r\nAddressSelectorListActiveAddressContainer.propTypes = {\r\n address: PropTypes.shape(AddressShape).isRequired,\r\n selectAddressActionCreator: PropTypes.func.isRequired,\r\n deleteAddressActionCreator: PropTypes.func.isRequired,\r\n onBeginEdit: PropTypes.func.isRequired,\r\n selectAddressMessage: PropTypes.string.isRequired,\r\n isSelected: PropTypes.bool.isRequired,\r\n onDeleted: PropTypes.func.isRequired,\r\n onSelected: PropTypes.func.isRequired,\r\n onRadioSelected: PropTypes.func.isRequired\r\n}\r\n\r\nexport default AddressSelectorListActiveAddressContainer","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux'\r\n\r\nimport { AddressShape, AddressActionCreatorsShape as AddressActionCreators } from './propTypes'\r\n\r\nimport AddressDisplay from './AddressDisplay';\r\nimport { RadioInput } from '../../components';\r\nimport ActiveAddressInAddressSelectorListContainer from './ActiveAddressInAddressSelectorListContainer'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nimport {\r\n hiddenAnchorStyle,\r\n pretendAnchorStyle\r\n} from '../../components'\r\n\r\nclass AddressSelectorList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n activeAddressId: ''\r\n };\r\n\r\n this.onDeleted = this.onDeleted.bind(this);\r\n this.onSelected = this.onSelected.bind(this);\r\n this.onItemClick = this.onItemClick.bind(this);\r\n this.onRadioSelected = this.onRadioSelected.bind(this);\r\n }\r\n\r\n beginEdit(Id) {\r\n if (this.state.activeAddressId !== '') {\r\n // Only set active if we had an active before\r\n this.setState({ activeAddressId: Id });\r\n }\r\n this.props.onBeginEdit(Id);\r\n }\r\n\r\n onRadioSelected(id) {\r\n this.setState({ activeAddressId: id });\r\n this.props.onAddressSelected(id);\r\n }\r\n\r\n onSelected(id) {\r\n this.props.onAddressSelected(id);\r\n this.props.onDoneSelecting(id);\r\n this.setState({ activeAddressId: '' });\r\n }\r\n\r\n onDeleted(id) {\r\n this.setState({ activeAddressId: '' });\r\n }\r\n\r\n onItemClick(id) {\r\n this.setState({ activeAddressId: id });\r\n }\r\n\r\n render() {\r\n const listComponent = this;\r\n const props = this.props;\r\n const listItems = this.props.addresses.map((address) => {\r\n const isSelected = props.selectedAddressId === address.Id;\r\n const focused = listComponent.state.activeAddressId === address.Id;\r\n return (\r\n \r\n \r\n listComponent.onRadioSelected(address.Id, listComponent.props.useForAnotherSelected)}\r\n />\r\n {this.props.allowAdding &&\r\n { e.preventDefault(); listComponent.onItemClick(address.Id); }}\r\n >\r\n \r\n \r\n } \r\n\r\n {!!!this.props.allowAdding &&\r\n \r\n } \r\n \r\n\r\n {this.props.allowAdding &&
\r\n {\r\n e.preventDefault();\r\n listComponent.beginEdit(address.Id);\r\n }}>\r\n \r\n  \r\n {translateResourceString(\"/Checkout/Address/EditButton\")}\r\n \r\n
\r\n } \r\n \r\n );\r\n });\r\n\r\n return (\r\n
\r\n {listItems}\r\n {props.allowAdding && this.beginEdit()}>{translateResourceString(\"/Checkout/Address/AddNewButton\")}}\r\n
\r\n )\r\n }\r\n}\r\n\r\nAddressSelectorList.propTypes = {\r\n addressActionCreators: PropTypes.shape(AddressActionCreators).isRequired,\r\n addresses: PropTypes.arrayOf(AddressShape.propTypes).isRequired,\r\n allowAdding: PropTypes.bool.isRequired,\r\n onAddressSelected: PropTypes.func.isRequired,\r\n onDoneSelecting: PropTypes.func.isRequired,\r\n selectAddressMessage: PropTypes.string.isRequired,\r\n selectedAddressId: PropTypes.string\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n onAddressSelected: (id, address) => dispatch(ownProps.addressActionCreators.select(id, address))\r\n})\r\n\r\nconst AddressSelectorListContainer = connect(\r\n null,\r\n mapDispatchToProps\r\n)(AddressSelectorList)\r\n\r\nexport default AddressSelectorListContainer;","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nimport { TextFormEntry, StateInput } from '../../components'\r\n\r\nimport { AddressShape } from './propTypes'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\n\r\nconst requiredFields = [\"name\", \"line1\", \"country\", \"city\", \"state\", \"postalCode\"];\r\n\r\nexport class AddressEditor extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n const newAddress = {\r\n AddressLine1: \"\",\r\n AddressLine2: \"\",\r\n AddressType: props.addressType,\r\n City: \"\",\r\n CountryCode: \"USA\",\r\n CountryName: \"\",\r\n Id: \"\",\r\n Name: \"\",\r\n Phone: \"\",\r\n PostalCode: \"\",\r\n State: \"\"\r\n };\r\n this.state = {\r\n address: props.address || Object.assign({}, newAddress),\r\n submitAttempted: false,\r\n countriesStatesMap: props.countriesStatesMap,\r\n invalidFields: {},\r\n originalId: props.address && props.address.Id,\r\n validationRun: false\r\n };\r\n \r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleCountryChange = this.handleCountryChange.bind(this);\r\n this.onSubmit = this.onSubmit.bind(this);\r\n this.validateField = this.validateField.bind(this);\r\n this.isInvalid = this.isInvalid.bind(this);\r\n this.isRequired = this.isRequired.bind(this);\r\n }\r\n\r\n isRequired(name) {\r\n return requiredFields.indexOf(name) > -1;\r\n }\r\n\r\n validateField(invalidFields, fieldName, value) {\r\n if (this.isInvalid(value, fieldName)) {\r\n invalidFields[fieldName] = true;\r\n } else {\r\n invalidFields[fieldName] = false;\r\n }\r\n }\r\n\r\n handleChange(event) {\r\n const address = Object.assign({}, this.state.address);\r\n const value = event.target.value;\r\n const name = event.target.name;\r\n switch (name) {\r\n case \"name\":\r\n address.Name = value;\r\n break;\r\n case \"line1\":\r\n address.AddressLine1 = value;\r\n break;\r\n case \"line2\":\r\n address.AddressLine2 = value;\r\n break;\r\n case \"city\":\r\n address.City = value;\r\n break;\r\n case \"state\":\r\n address.State = value;\r\n break;\r\n case \"postalCode\":\r\n address.PostalCode = value;\r\n break;\r\n case \"phone\":\r\n address.Phone = value;\r\n break;\r\n default:\r\n if (typeof console.warn !== 'undefined')\r\n console.warn(`Unknown value change with name '${name}' and value '${value}'`);\r\n }\r\n const invalidFields = Object.assign({}, this.state.invalidFields);\r\n this.validateField(invalidFields, name, value);\r\n this.setState({ address: address, invalidFields: invalidFields });\r\n }\r\n\r\n handleCountryChange(event) {\r\n const countryWithCode = this.props.countries.filter((c) => c.Code === event.target.value);\r\n if (countryWithCode.length > 0) {\r\n this.setState({\r\n address: Object.assign({},\r\n this.state.address,\r\n {\r\n CountryCode: event.target.value,\r\n CountryName: countryWithCode[0].Code\r\n })\r\n });\r\n }\r\n event.preventDefault();\r\n }\r\n\r\n onSubmit(event) {\r\n event.preventDefault();\r\n if (!event.target.checkValidity()) {\r\n return;\r\n }\r\n const keys = this.state.invalidFields ? Object.keys(this.state.invalidFields) : [];\r\n const invalidFieldNames = keys.filter((key) => this.state.invalidFields[key]);\r\n let errorMessage = \"\";\r\n if (invalidFieldNames.length > 0) {\r\n errorMessage = `Please fix the following fields: ${invalidFieldNames.join(\", \") + \".\"}`;\r\n this.setState({ errorMessage: errorMessage });\r\n } else {\r\n this.props.onEditOk(this.state.address);\r\n }\r\n }\r\n \r\n isInvalid(value, inputName) {\r\n if ((!value || value.length < 1) && this.isRequired(inputName)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n \r\n render() {\r\n const selectedAddress = this.state.address;\r\n const countryOptions = this.props.countries.map((country) =>\r\n \r\n );\r\n return (\r\n
\r\n {this.state.submitted && this.state.errorMessage &&\r\n
\r\n {this.state.errorMessage}\r\n
\r\n }\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n );\r\n }\r\n}\r\n\r\nAddressEditor.propTypes = {\r\n addressType: PropTypes.number.isRequired,\r\n address: AddressShape.propTypes,\r\n countriesStatesMap: PropTypes.object.isRequired,\r\n countries: PropTypes.array.isRequired,\r\n onEditCancel: PropTypes.func.isRequired,\r\n onEditOk: PropTypes.func.isRequired\r\n}\r\n\r\nexport default AddressEditor","// eslint-disable-next-line\r\nimport React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { connect } from \"react-redux\"\r\nimport find from 'lodash/find'\r\n\r\nimport { saveAddress } from \"./addressActionCreators\"\r\nimport { AddressActionCreatorsShape as AddressActionCreators } from \"./propTypes\"\r\nimport AddressEditor from './AddressEditor'\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n countriesStatesMap: state.constants.countriesStatesMap,\r\n countries: state.constants.countries,\r\n address: find(state.entities.Addresses, \r\n address => address.Id === ownProps.addressId),\r\n ...ownProps\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => {\r\n return {\r\n onEditOk: address => {\r\n let addressAction;\r\n let newId = 0;\r\n if (typeof (address.Id) !== 'undefined' && address.Id) {\r\n addressAction = ownProps.addressActionCreators.update(address.Id, address);\r\n ownProps.onAddressUpdated(address.Id);\r\n } else {\r\n addressAction = ownProps.addressActionCreators.add(address);\r\n newId = addressAction.address && addressAction.address.Id;\r\n ownProps.onAddressCreated(address.Id);\r\n }\r\n dispatch(addressAction);\r\n newId && dispatch(ownProps.addressActionCreators.select(newId));\r\n dispatch(saveAddress(Object.assign({}, { Id: newId }, address)));\r\n },\r\n onEditCancel: ownProps.onEditCancel\r\n }\r\n}\r\n\r\nconst AddressEditorContainer = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AddressEditor);\r\n\r\nAddressEditorContainer.propTypes = {\r\n addressId: PropTypes.string,\r\n addressActionCreators: AddressActionCreators.propTypes.isRequired,\r\n onAddressCreated: PropTypes.func.isRequired,\r\n onAddressUpdated: PropTypes.func.isRequired\r\n}\r\n\r\nexport default AddressEditorContainer;","import React from 'react'\r\nimport PropTypes from 'prop-types';\r\nimport find from 'lodash/find'\r\n\r\nimport { CheckoutSection, hiddenAnchorStyle } from '../../components'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nimport { Fade } from '../../componentAnimations'\r\n\r\nimport AddressSelectorList from './AddressSelectorList'\r\nimport AddressDisplay from './AddressDisplay'\r\nimport AddressEditorContainer from './AddressEditorContainer'\r\n\r\nimport { AddressShape, AddressActionCreatorsShape as AddressActionCreators } from './propTypes'\r\n\r\nclass CheckoutAddressComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n listCollapsed: props.selectedAddressId ? true : false,\r\n editId: ''\r\n };\r\n this.onClickCollapse = this.onClickCollapse.bind(this);\r\n this.onDoneSelecting = this.onDoneSelecting.bind(this);\r\n this.onBeginEdit = this.onBeginEdit.bind(this);\r\n this.onEndEdit = this.onEndEdit.bind(this);\r\n this.onEditCancel = this.onEditCancel.bind(this);\r\n }\r\n\r\n onClickCollapse(e) {\r\n e.preventDefault();\r\n this.setState({ listCollapsed: !this.state.listCollapsed });\r\n }\r\n\r\n onDoneSelecting() {\r\n this.setState({ listCollapsed: true });\r\n }\r\n\r\n onBeginEdit(Id) {\r\n this.setState({ editOpen: true, editId: Id, listCollapsed: true });\r\n }\r\n\r\n onEndEdit(Id) {\r\n this.setState({ editOpen: false });\r\n this.props.onEndEdit(Id);\r\n }\r\n\r\n onEditCancel() {\r\n this.setState({ editOpen: false, listCollapsed: false })\r\n }\r\n\r\n render() {\r\n const selectedAddress = find(this.props.addresses, address => address && address.Id === this.props.selectedAddressId);\r\n\r\n let editAddressButtonText = translateResourceString(\"/Checkout/Address/DoneButton\");\r\n if (this.state.listCollapsed) {\r\n editAddressButtonText = this.props.allowAdding ? translateResourceString(\"/Checkout/Address/AddEditAddressesButton\")\r\n : translateResourceString(\"/Checkout/Address/EditAddressButton\");\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nCheckoutAddressComponent.propTypes = {\r\n addressActionCreators: AddressActionCreators.propTypes,\r\n addressType: PropTypes.number.isRequired,\r\n addresses: PropTypes.arrayOf(AddressShape.propTypes).isRequired,\r\n allowAdding: PropTypes.bool.isRequired,\r\n onEndEdit: PropTypes.func.isRequired,\r\n onUseForAnotherClicked: PropTypes.func,\r\n sectionLabel: PropTypes.string.isRequired,\r\n selectAddressMessage: PropTypes.string.isRequired,\r\n selectedAddressId: PropTypes.string,\r\n useForAnotherMessage: PropTypes.string,\r\n useForAnotherSelected: PropTypes.bool,\r\n allowBillingEqualsShipping: PropTypes.bool\r\n}\r\n\r\nexport default CheckoutAddressComponent;","// eslint-disable-next-line\r\nimport React from 'react'\r\nimport find from 'lodash/find'\r\nimport { connect } from 'react-redux'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nimport {\r\n addBillingAddress,\r\n selectBillingAddress,\r\n deleteAddress,\r\n updateAddress\r\n} from \"./addressActionCreators\"\r\n\r\nimport CheckoutAddressComponent from \"./CheckoutAddressComponent\"\r\n\r\nconst mapBillingAddressStateToProps = (state) => {\r\n const e = state.entities;\r\n const c = state.constants;\r\n const useShippingForBilling = state.ui.useShippingForBilling;\r\n return {\r\n addresses: useShippingForBilling ? e.ShippingAddresses.map(id => find(e.Addresses, address => address.Id === id)) : e.BillingAddresses.map(id => find(e.Addresses, address => address.Id === id)),\r\n allowAdding: !!!state.ui.onPaymentScreen && c.allowAddingBillingAddresses,\r\n selectedAddressId: useShippingForBilling ? e.SelectedShippingAddressId : e.SelectedBillingAddressId,\r\n addressType: c.BillingAddressType,\r\n addressActionCreators: {\r\n add: addBillingAddress,\r\n remove: deleteAddress,\r\n select: selectBillingAddress,\r\n update: updateAddress\r\n },\r\n selectAddressMessage: translateResourceString(\"/Checkout/Address/CheckoutBillingAddress/SelectAddressMessage\"),\r\n sectionLabel: translateResourceString(\"/Checkout/Address/CheckoutBillingAddress/SectionLabel\"),\r\n hidden: state.ui.onPaymentScreen,\r\n allowEdit: !!!useShippingForBilling && !!!state.ui.onPaymentScreen && c.allowEditingBillingAddresses,\r\n toolTip: state.constants.billingAddressTooltip,\r\n allowSelect: false \r\n }\r\n};\r\n\r\nconst mapBillingAddressDispatchToProps = (dispatch) => ({\r\n onEndEdit: (Id) => dispatch(selectBillingAddress(Id))\r\n})\r\nconst CheckoutBillingAddressContainer = connect(\r\n mapBillingAddressStateToProps,\r\n mapBillingAddressDispatchToProps\r\n)(CheckoutAddressComponent)\r\n\r\nexport default CheckoutBillingAddressContainer;","// eslint-disable-next-line\r\nimport React from 'react'\r\nimport find from 'lodash/find'\r\nimport { connect } from 'react-redux'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nimport {\r\n addShippingAddress,\r\n selectShippingAddress,\r\n deleteAddress,\r\n updateAddress,\r\n selectShippingAndBillingAddress,\r\n UseBillingForShippingToggle\r\n} from './addressActionCreators'\r\n\r\nimport CheckoutAddressComponent from './CheckoutAddressComponent'\r\n\r\nconst mapShippingAddressStateToProps = (state) => {\r\n const e = state.entities;\r\n const c = state.constants;\r\n const useShippingForBilling = state.ui.useShippingForBilling;\r\n\r\n return {\r\n addresses: e.ShippingAddresses.map(id => find(e.Addresses, address => address.Id === id)),\r\n allowAdding: !!!state.ui.onPaymentScreen && c.allowAddingShippingAddresses,\r\n selectedAddressId: e.SelectedShippingAddressId,\r\n addressType: c.ShippingAddressType,\r\n addressActionCreators: {\r\n add: addShippingAddress,\r\n remove: deleteAddress,\r\n select: selectShippingAddress,\r\n update: updateAddress\r\n },\r\n selectAddressMessage: useShippingForBilling ? translateResourceString(\"/Checkout/Address/CheckoutShippingAddress/SelectAddressMessage/BillAndShipTo\")\r\n : translateResourceString(\"/Checkout/Address/CheckoutShippingAddress/SelectAddressMessage/ShipTo\"),\r\n useForAnotherMessage: translateResourceString(\"/Checkout/Address/CheckoutShippingAddress/UseForAnotherMessage\"),\r\n useForAnotherSelected: useShippingForBilling,\r\n sectionLabel: translateResourceString(\"/Checkout/Address/CheckoutShippingAddress/SectionLabel\"),\r\n allowBillingEqualsShipping: c.allowBillingEqualsShipping,\r\n allowEdit: !!!state.ui.onPaymentScreen && c.allowEditingShippingAddresses,\r\n hidden: state.ui.onPaymentScreen || !!!(state.entities.CartItems && state.entities.CartItems.some(item => item.IsPhysical)),\r\n allowSelect: true\r\n }\r\n}\r\n\r\nconst mapShippingAddressDispatchToProps = dispatch => {\r\n return {\r\n onEndEdit: (Id) => dispatch(selectShippingAddress(Id)),\r\n onUseForAnotherClicked: () => dispatch(UseBillingForShippingToggle())\r\n }\r\n}\r\n\r\nconst CheckoutShippingAddressContainer = connect(\r\n mapShippingAddressStateToProps,\r\n mapShippingAddressDispatchToProps\r\n)(CheckoutAddressComponent);\r\n\r\nexport default CheckoutShippingAddressContainer;","import {\r\n fetchJson,\r\n COMPLETE_CHECKOUT,\r\n PLACE_ORDER_ASYNC,\r\n TO_PAYMENT,\r\n TO_SHIPPING\r\n} from '../../GlobalStateContainer'\r\n\r\nimport { notifyCompleteCheckoutError } from '../UserMessaging'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\n/* COMPLETE CHECKOUT */\r\n\r\nexport function completeCheckout() {\r\n return {type: COMPLETE_CHECKOUT}\r\n}\r\n\r\n\r\n\r\n\r\n/* ASYNC ACTION CREATORS */\r\nconst onPlaceOrderSuccess = (responseObject, { placeOrderDetails }, getState) => {\r\n if (responseObject.Success) {\r\n // No return, because we're navigating away from the app\r\n if (typeof window !== 'undefined' && typeof window.location !== 'undefined') {\r\n window.location.href = getState().constants.navigation.orderConfirmationUrl +\"?orderNumber=\" + responseObject.order.OrderNumber;\r\n }\r\n return completeCheckout();\r\n } else {\r\n return notifyCompleteCheckoutError(translateResourceString(\"/Checkout/PlaceOrder/Errors/CouldNotCompleteCheckout\") + \" \" + responseObject.Message,\r\n JSON.stringify(responseObject));\r\n }\r\n}\r\n\r\nconst completeCheckoutAsyncSpec = {\r\n endpoint: (state) => state.constants.navigation.placeOrderEndpoint,\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify: ( placeOrderDetails ) => ({ type: PLACE_ORDER_ASYNC, placeOrderDetails }),\r\n extract: (response) => response.json(),\r\n onSuccess: onPlaceOrderSuccess,\r\n onError: (diagMsg) => notifyCompleteCheckoutError(translateResourceString(\"/Checkout/PlaceOrder/Errors/ErrorPlacingOrder\"), diagMsg)\r\n}\r\n\r\nexport const completeCheckoutAsync = fetchJson(completeCheckoutAsyncSpec);\r\n\r\n","import find from 'lodash/find'\r\n\r\nexport const mapStateToPlaceOrderDetails = (state) => {\r\n const entities = state.entities;\r\n const shippingAddress = find(entities.Addresses, a => a.Id === entities.SelectedShippingAddressId);\r\n const billingAddress = (state.ui.useShippingForBilling)\r\n ? shippingAddress\r\n : find(entities.Addresses,\r\n address =>\r\n address.Id === entities.SelectedBillingAddressId\r\n && entities.BillingAddresses.includes(address.Id));\r\n const shippingOption = entities.ShippingOptions.filter(so => so.Id === entities.SelectedShippingOptionId)[0];\r\n return {\r\n SelectedPayment: {\r\n Id: entities.SelectedPaymentOptionId,\r\n POValue: entities.PaymentRecord.POValue ?? null,\r\n BraintreePaymentNonce: entities.PaymentRecord.BraintreePaymentNonce ?? null\r\n },\r\n\r\n SelectedShippingAddress: shippingAddress,\r\n SelectedBillingAddress: billingAddress,\r\n SelectedShippingOption: shippingOption,\r\n Coupons: state.entities.Coupons,\r\n BillingEqualsShipping: state.ui.useShippingForBilling,\r\n Total: state.entities.Summary.Total,\r\n PartnerIds: state.entities.Coupons.length > 0 ? state.entities.Coupons.filter(c => c.IsPartnerIdDiscount && c.Description).map(c => c.Description) : null,\r\n TermsAndConditions: state.ui.termsAndConditions, \r\n IsPartnerIdRequired: state.entities.CartItems.some(item => item.RequiresPartnerId),\r\n IsShippingRequired: state.entities.CartItems.some(item => item.IsPhysical),\r\n IsTermsAndConditionsRequired: state.entities.CartItems.some(item => item.IsLicense),\r\n RequiredPartnerIds: state.entities.RequiredPartnerIds,\r\n IsStopWorkShop: state.entities.CartItems.some(item => item.IsStopWorkShop),\r\n };\r\n}\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nclass CheckoutComplete extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onClick = this.onClick.bind(this);\r\n }\r\n\r\n onClick() {\r\n this.props.onCompleteCheckout(this.props.placeOrderDetails);\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.onPaymentScreen && this.props.usingPo &&\r\n this.onClick(e)}\r\n >\r\n {this.props.buttonText}\r\n {this.props.isPlaceOrderPending &&\r\n }\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nCheckoutComplete.propTypes = {\r\n onCompleteCheckout: PropTypes.func.isRequired,\r\n buttonText: PropTypes.string.isRequired,\r\n continueButtonText: PropTypes.string.isRequired,\r\n placeOrderDetails: PropTypes.object.isRequired,\r\n additionalClassname: PropTypes.string,\r\n isPlaceOrderPending: PropTypes.bool,\r\n backButtonText: PropTypes.string,\r\n onBack: PropTypes.func,\r\n onContinueClick: PropTypes.func,\r\n usingPo: PropTypes.bool,\r\n}\r\n\r\n\r\n\r\nexport default CheckoutComplete\r\n","import { translateResourceString } from '../../../util/translationUtility';\r\n\r\n// BBS DDD 2017-12-01 This archaic validation could probably be\r\n// replaced. see mapTopLevelPPropsToInitialStore.js for suggestion of valdatejs.org or such\r\nexport const validate = (orderDetails, validators) => {\r\n return validators\r\n .map(validator =>{\r\n const key = validator.key;\r\n\r\n if (!!!key) {\r\n return `${translateResourceString(\"/Checkout/PlaceOrder/Errors/UnknownOrderDetail\")}: '${key}'`;\r\n }\r\n\r\n const value = orderDetails[key];\r\n return validator.validate(value, orderDetails);\r\n })\r\n .filter(x => !!x);\r\n }","import { translateResourceString } from '../../../util/translationUtility';\r\n\r\nconst partnerIdValidator = {\r\n key: \"PartnerIds\",\r\n validate: (value, orderDetails) => {\r\n return (orderDetails.IsPartnerIdRequired && (!value || value.length < orderDetails.RequiredPartnerIds)) && translateResourceString(\"/Checkout/PlaceOrder/Errors/PartnerIdIsRequired\");\r\n }\r\n }\r\n\r\n const termsAndConditionsValidator = {\r\n key: \"TermsAndConditions\",\r\n validate: (value, orderDetails) => {\r\n return (orderDetails.IsTermsAndConditionsRequired && !value) && translateResourceString(\"/Checkout/PlaceOrder/Errors/TermsAndConditions\");\r\n }\r\n }\r\n\r\nconst selectedShippingAddressValidator = {\r\n key: \"SelectedShippingAddress\",\r\n validate: (value, orderDetails) => { \r\n return ((orderDetails.IsShippingRequired || orderDetails.billingEqualsShipping) && (!value || !value.Id)) && translateResourceString(\"/Checkout/PlaceOrder/Errors/ShippingAddressNotSelected\");\r\n }\r\n}\r\nconst selectedStopworkShopValidator = {\r\n key: \"SelectedProduct\",\r\n validate: (value, orderDetails) => {\r\n if (value === false) {\r\n return; // or return null if you prefer\r\n }\r\n return ((orderDetails.IsStopWorkshop)) && translateResourceString(\"/Checkout/PlaceOrder/Errors/IsStopWorkShop\");\r\n }\r\n}\r\n\r\n const internationalShippingAddressValidator = {\r\n key: \"SelectedShippingAddress\",\r\n validate: (value, orderDetails) => {\r\n return (orderDetails.IsShippingRequired && (value && value.Id && (value.CountryCode !== 'USA' && value.CountryCode !== 'CAN'))) && translateResourceString(\"/Checkout/PlaceOrder/Errors/InternationalShippingAddressSelected\");\r\n }\r\n }\r\n \r\n const selectedBillingAddressValidator = {\r\n key: \"SelectedBillingAddress\",\r\n validate: (value, orderDetails) => {\r\n return SelectedBillingAddressCanBeSubmitted(value, orderDetails[\"BillingEqualsShipping\"]);\r\n }\r\n }\r\n \r\n const selectedShippingOptionValidator = {\r\n key: \"SelectedShippingOption\",\r\n validate: (value, orderDetails) => {\r\n if (value === true) {\r\n return; // or return null if you prefer\r\n }\r\n return (orderDetails.IsShippingRequired && (!value || !value.Id)) && translateResourceString(\"/Checkout/PlaceOrder/Errors/ShippingOptionNotSelected\");\r\n }\r\n }\r\n \r\n const selectedPaymentValidator = {\r\n key: \"SelectedPayment\",\r\n validate: (value, orderDetails) => {\r\n return paymentIsInvalid(orderDetails.constants, value);\r\n }\r\n }\r\n \r\n const totalValidator = {\r\n key: \"Total\",\r\n validate: (value) => {\r\n return (typeof value !== 'number') || value < 0 && translateResourceString(\"/Checkout/PlaceOrder/Errors/Total\"); \r\n }\r\n }\r\n\r\nconst addressIsMissingIdOrRequiredData = function (address) {\r\n return (\r\n !address\r\n || !address.Id // True if address.Id is falsy\r\n || !( // True if any fields are falsy\r\n !!address.Name &&\r\n !!address.AddressLine1 &&\r\n !!address.City &&\r\n !!address.CountryCode &&\r\n !!address.PostalCode))\r\n };\r\n \r\nconst SelectedBillingAddressCanBeSubmitted = (address, billingEqualsShipping) => {\r\n return (\r\n (!billingEqualsShipping && addressIsMissingIdOrRequiredData(address))\r\n && translateResourceString(\"/Checkout/PlaceOrder/Errors/InvalidBillingAddress\")\r\n )\r\n }\r\n \r\nconst paymentIsInvalid = (constants, { Id, POValue, BraintreePaymentNonce }) => {\r\n if (!Id) {\r\n return translateResourceString(\"/Checkout/PlaceOrder/Errors/NoPaymentSelect\");\r\n } else if (Id === constants.braintreeSettings.braintreePaymentId && !BraintreePaymentNonce) {\r\n return translateResourceString(\"/Checkout/PlaceOrder/Errors/PaymentInvalid\");\r\n }\r\n return false;\r\n }\r\n\r\n export const orderCanContinueValidators = [\r\n selectedShippingAddressValidator,\r\n internationalShippingAddressValidator,\r\n selectedBillingAddressValidator,\r\n selectedShippingOptionValidator,\r\n\r\n \r\n totalValidator,\r\n partnerIdValidator,\r\n termsAndConditionsValidator,\r\n selectedStopworkShopValidator,\r\n ];\r\n\r\n export const orderCanBeSubmittedValidators = [\r\n selectedShippingAddressValidator,\r\n internationalShippingAddressValidator,\r\n selectedBillingAddressValidator,\r\n selectedShippingOptionValidator,\r\n selectedPaymentValidator,\r\n totalValidator,\r\n partnerIdValidator,\r\n termsAndConditionsValidator,\r\n selectedStopworkShopValidator,\r\n\r\n];\r\n","// eslint-disable-next-line\r\nimport React from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nimport { notifyError, dismissAllMessages } from '../UserMessaging'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nimport { completeCheckoutAsync } from './placeOrderActionCreators'\r\nimport { mapStateToPlaceOrderDetails } from './mapStateToPlaceOrderDetails'\r\nimport CheckoutComplete from './CheckoutComplete'\r\n\r\nimport { validate } from '../Validation/OrderDetailsValidation'\r\nimport { orderCanBeSubmittedValidators } from '../Validation/OrderValidators';\r\n\r\nconst mapCheckoutCompleteStateToProps = (state, ownProps) => {\r\n var placeOrderDetails = mapStateToPlaceOrderDetails(state);\r\n placeOrderDetails.constants = state.constants; // Hack on the constants object so we can see what constant values are when we validate\r\n return {\r\n buttonText: translateResourceString(\"/Checkout/Continue/PlaceOrder\"),\r\n backButtonText: translateResourceString(\"/Checkout/Continue/Back\"),\r\n continueButtonText: translateResourceString(\"/Checkout/Continue/ContinueToPayment\"),\r\n placeOrderDetails: placeOrderDetails,\r\n isPlaceOrderPending: state.ui.isPlaceOrderPending,\r\n onPaymentScreen: state.ui.onPaymentScreen,\r\n usingPo: state.entities.SelectedPaymentOptionId === state.constants.purchaseOrderPaymentId,\r\n ...ownProps\r\n }\r\n}\r\n\r\nconst orderDetailsCanBeSubmitted = (orderDetails) => validate(orderDetails, orderCanBeSubmittedValidators);\r\n\r\nconst mapCheckoutCompleteDispatchToProps = (dispatch) => {\r\n return {\r\n onCompleteCheckout: (placeOrderDetails) => {\r\n dispatch(dismissAllMessages());\r\n const errors = orderDetailsCanBeSubmitted(placeOrderDetails);\r\n if (errors.length === 0) {\r\n delete placeOrderDetails.constants; // Remove the property we stuck on to share state above in mapCheckoutCompleteStateToProps\r\n dispatch(completeCheckoutAsync(placeOrderDetails));\r\n } else {\r\n const intro = translateResourceString(\"/Checkout/PlaceOrder/Errors/Intro\") + \": \";\r\n const message = errors.reduce((acc, cur) => acc + '\\n' + cur, intro);\r\n dispatch(notifyError(message));\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst CheckoutCompleteContainer = connect(mapCheckoutCompleteStateToProps, mapCheckoutCompleteDispatchToProps)(CheckoutComplete)\r\n\r\nexport default CheckoutCompleteContainer\r\n","import React from 'react'\r\nimport { CheckoutSection, formatMoney } from '../../components'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\nimport styles from './checkout.module.css';\r\n\r\nconst spinnerSpan = ;\r\n\r\nconst CheckoutSummary = (\r\n {\r\n summary: {\r\n ShippingMethod,\r\n ShippingTotal,\r\n SubTotal,\r\n Total,\r\n Currency,\r\n TaxTotal,\r\n DiscountTotal\r\n },\r\n isRefreshing\r\n }) => {\r\n const formatCurrency = formatMoney(Currency);\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default CheckoutSummary\r\n","import {\r\n fetchJson, NEW_CHECKOUT_SUMMARY, NOTIFY_REFRESHING_CHECKOUT_SUMMARY\r\n} from '../../GlobalStateContainer'\r\nimport { notifyError } from \"../UserMessaging\";\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nexport function notifyRefreshingSummary() {\r\n return { type: NOTIFY_REFRESHING_CHECKOUT_SUMMARY }\r\n}\r\n\r\nfunction onRefreshSummary(summary) {\r\n return { type: NEW_CHECKOUT_SUMMARY, summary }\r\n}\r\n\r\nconst refreshSummarySpec = {\r\n endpoint: (state) => state.constants.navigation.cartSummaryEndpoint,\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify: notifyRefreshingSummary,\r\n extract: (response) => response.json(),\r\n onSuccess: onRefreshSummary,\r\n onError: (diagMsg) => notifyError(translateResourceString(\"/Checkout/ShippingMethod/Errors/ErrorRefreshing\"), diagMsg)\r\n}\r\nexport const refreshSummary = fetchJson(refreshSummarySpec)\r\n\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport deepEquals from \"deep-equal\";\r\n\r\nimport { mapStateToPlaceOrderDetails } from '../PlaceOrder'\r\nimport { notifyError } from '../UserMessaging'\r\n\r\nimport CheckoutSummary from './CheckoutSummary'\r\nimport { refreshSummary } from \"./checkoutSummaryActions\";\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nfunction dependenciesChanged(props, prevProps) {\r\n const shippingMethodChanged = props.selectedShippingOptionId !== prevProps.selectedShippingOptionId;\r\n const shippingAddressChanged = props.selectedShippingAddressId !== prevProps.selectedShippingAddressId;\r\n return shippingMethodChanged || \r\n shippingAddressChanged || \r\n !deepEquals(props.cart, prevProps.cart) ||\r\n !deepEquals(props.coupons, prevProps.coupons);\r\n}\r\n\r\nclass CheckoutSummaryContainer extends React.Component {\r\n componentDidUpdate(prevProps) {\r\n if (dependenciesChanged(this.props, prevProps)) {\r\n this.props.refreshSummary(this.props.placeOrderDetails)\r\n }\r\n }\r\n \r\n componentDidMount() {\r\n this.props.refreshSummary(this.props.placeOrderDetails);\r\n }\r\n\r\n render() {\r\n return React.createElement(CheckoutSummary,\r\n {\r\n summary: this.props.summary,\r\n isRefreshing: this.props.isRefreshing\r\n })\r\n }\r\n \r\n}\r\n\r\nconst mapCheckoutSummaryStateToProps = state => {\r\n return {\r\n summary: state.entities.Summary,\r\n placeOrderDetails: mapStateToPlaceOrderDetails(state),\r\n cart: state.entities.CartItems,\r\n isRefreshing: state.entities.isRefreshingSummary,\r\n selectedShippingOptionId: state.entities.SelectedShippingOptionId,\r\n selectedShippingAddressId: state.entities.SelectedShippingAddressId,\r\n coupons: state.entities.Coupons\r\n }\r\n}\r\n\r\nconst getSummaryErrorMessage = translateResourceString(\"/Checkout/Summary/ErrorRefreshing\");\r\n\r\nconst mapCheckoutSummaryDispatchToProps = dispatch => {\r\n return {\r\n onGetSummaryError: (diagnosticMessage) => \r\n dispatch(notifyError(getSummaryErrorMessage, diagnosticMessage)),\r\n refreshSummary: (placeOrderDetails) => \r\n dispatch(refreshSummary(placeOrderDetails))\r\n }\r\n}\r\n\r\nconst ConnectedCheckoutSummary = connect(mapCheckoutSummaryStateToProps, mapCheckoutSummaryDispatchToProps)(CheckoutSummaryContainer)\r\n\r\nexport default ConnectedCheckoutSummary","import {\r\n SELECT_SHIPPING_OPTION,\r\n SELECT_SHIPPING_OPTION_ASYNC,\r\n NOTIFY_REFRESHING_SHIPPING_OPTIONS,\r\n NEW_SHIPPING_OPTIONS,\r\n fetchJson\r\n} from '../../GlobalStateContainer'\r\nimport { notifyError } from \"../UserMessaging\";\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n/* SHIPPING METHOD */\r\n\r\nconst onSelectShippingSuccess = ({ id,error }) => {\r\n if(error) notifyError('An error occurred selecting a shipping method', 'There was a problem obtaining shipment information.');\r\n return { type: SELECT_SHIPPING_OPTION, id: id }\r\n}\r\n\r\nexport function notifySelectingShippingOption() {\r\n return { type: SELECT_SHIPPING_OPTION_ASYNC }\r\n}\r\nconst selectShippingMethodAsyncSpec = {\r\n endpoint: (state) => state.constants.navigation.setShippingMethodEndpoint,\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify: notifySelectingShippingOption,\r\n extract: (response) => response.json(),\r\n onSuccess: onSelectShippingSuccess,\r\n onError: (diagMsg) => notifyError('An error occurred refreshing the shipping methods', diagMsg)\r\n}\r\nexport const selectShippingMethod = fetchJson(selectShippingMethodAsyncSpec);\r\n\r\nexport function notifyRefreshingShippingOptions() {\r\n return { type: NOTIFY_REFRESHING_SHIPPING_OPTIONS }\r\n}\r\n\r\n\r\nconst isAllUniqueValues = (arr) => [...new Set(arr)].length === arr.length\r\n\r\nconst shippingOptionsAreInvalid = (shippingOptions) => {\r\n if (!isAllUniqueValues(shippingOptions.map(so => so.Id))) {\r\n console.error();\r\n return 'not all Ids unique for ShippingOptions';\r\n }\r\n return null;\r\n}\r\n\r\nconst onRefreshShippingOptionsSuccess = ({ shippingOptions }) => {\r\n const invalidMessage = shippingOptionsAreInvalid(shippingOptions);\r\n if (invalidMessage)\r\n return notifyError(translateResourceString(\"/Checkout/ShippingMethod/Errors/ErrorRetrieving\"), invalidMessage)\r\n\r\n return { type: NEW_SHIPPING_OPTIONS, shippingOptions }\r\n}\r\n\r\nconst refreshShippingOptionsAsyncSpec = {\r\n endpoint: (state) => state.constants.navigation.refreshShippingOptionsEndpoint,\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify: notifyRefreshingShippingOptions,\r\n extract: (response) => response.json(),\r\n onSuccess: onRefreshShippingOptionsSuccess,\r\n onError: (diagMsg) => notifyError(translateResourceString(\"/Checkout/ShippingMethod/Errors/ErrorRefreshing\"), diagMsg)\r\n}\r\n\r\nexport const refreshShippingOptionsAsync = fetchJson(refreshShippingOptionsAsyncSpec)\r\n","import React from \"react\";\r\nimport { CheckoutSection, hiddenAnchorStyle, OptionListItemRadio } from \"../../components\";\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\nimport { Fade } from \"../../componentAnimations\";\r\n\r\nconst CheckoutShipmentPresentation = (\r\n {\r\n shippingOptions,\r\n selectedId,\r\n onSelected,\r\n isPendingRefresh,\r\n isStopWorkshop\r\n }) => {\r\n \r\n return (\r\n !isStopWorkshop &&\r\n ()\r\n );\r\n};\r\n \r\nexport default CheckoutShipmentPresentation\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport deepEqual from 'deep-equal'\r\n\r\nimport {\r\n notifyRefreshingShippingOptions,\r\n refreshShippingOptionsAsync,\r\n selectShippingMethod\r\n} from './shippingMethodActions'\r\n\r\nimport CheckoutShipmentPresentation from \"./CheckoutShipmentPresentation\";\r\nimport { isValidGuid } from \"../../../util/guidUtility\";\r\n\r\n\r\nfunction dependenciesChanged(prevProps, props) {\r\n const addressChanged = prevProps.selectedShippingAddressId !== props.selectedShippingAddressId;\r\n return addressChanged || !deepEqual(prevProps.cartItems, props.cartItems);\r\n}\r\n\r\nclass CheckoutShipment extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isCollapsed: !!props.selectedShippingOptionId\r\n }\r\n this.onSelected = this.onSelected.bind(this)\r\n this.onClickChange = this.onClickChange.bind(this)\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if(dependenciesChanged(prevProps, this.props)) {\r\n this.props.onIsStale(this.props.selectedShippingAddressId);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.props.onIsStale(this.props.selectedShippingAddressId);\r\n }\r\n\r\n onClickChange(e) {\r\n e.preventDefault();\r\n this.setState({ isCollapsed: !this.state.isCollapsed });\r\n }\r\n\r\n onSelected(id) {\r\n this.setState({ isCollapsed: true });\r\n this.props.onSelected(id);\r\n }\r\n\r\n render() {\r\n return !!!this.props.hidden && React.createElement(CheckoutShipmentPresentation, {\r\n shippingOptions: this.props.shippingOptions,\r\n selectedId: this.props.selectedShippingOptionId,\r\n isPendingRefresh: this.props.isPendingRefresh,\r\n isStopWorkshop: this.props.isStopWorkshop,\r\n\r\n canChange: this.props.shippingOptions.length > 1 || !this.props.selectedShippingOptionId,\r\n isCollapsed: this.state.isCollapsed,\r\n onSelected: this.onSelected,\r\n onClickChange: this.onClickChange\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\nconst mapCheckoutShipmentStateToProps = (state) => {\r\n return {\r\n shippingOptions: state.entities.ShippingOptions,\r\n selectedShippingOptionId: state.entities.SelectedShippingOptionId,\r\n selectedShippingAddressId: state.entities.SelectedShippingAddressId,\r\n cartItems: state.entities.CartItems,\r\n isPendingRefresh: state.entities.isRefreshingShippingOptions,\r\n isStopWorkshop: state.entities.CartItems.some(item => item.IsStopWorkshop),\r\n hidden:state.ui.onPaymentScreen || !!!(state.entities.CartItems && state.entities.CartItems.some(item => item.IsPhysical))\r\n }\r\n}\r\n\r\nconst mapCheckoutShipmentDispatchToProps = (dispatch) => {\r\n return {\r\n onSelected: (id) => dispatch(selectShippingMethod({ id })),\r\n onIsStale: (shippingAddressId) => {\r\n if (isValidGuid(shippingAddressId))\r\n dispatch(refreshShippingOptionsAsync({addressId: shippingAddressId}))\r\n }\r\n }\r\n}\r\n\r\nconst CheckoutShipmentContainer = connect(mapCheckoutShipmentStateToProps, mapCheckoutShipmentDispatchToProps)(CheckoutShipment);\r\n\r\nexport default CheckoutShipmentContainer\r\n","import {\r\n SELECT_PAYMENT_OPTION,\r\n BRAINTREEE_PAYMENT_DATA_UPDATE,\r\n PURCHASE_ORDER_PAYMENT_DATA_UPDATE,\r\n UPDATING_EBIZ_CHARGE_WEB_FORM_URL_ASYNC,\r\n UPDATE_EBIZ_CHARGE_WEB_FORM_URL,\r\n EBIZ_CHARGE_WEB_FORM_URL_ERROR,\r\n fetchJson,\r\n} from '../../GlobalStateContainer';\r\nimport { \r\n notifyError,\r\n notifyCompleteCheckoutError } from '../UserMessaging';\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\n/* PAYMENT METHOD */\r\n\r\nexport function selectPaymentOption(paymentMethodId, displayName) {\r\n return { type: SELECT_PAYMENT_OPTION, paymentMethodId, displayName }\r\n}\r\n\r\nexport function updateBraintreePaymentData(payload) {\r\n return { type: BRAINTREEE_PAYMENT_DATA_UPDATE, payload }\r\n}\r\n\r\nexport function updatePurchaseOrderNumber(number) {\r\n return { type: PURCHASE_ORDER_PAYMENT_DATA_UPDATE, number }\r\n}\r\n\r\nexport function notifyRefreshingEBizChargeFormUrl() {\r\n return { type: UPDATING_EBIZ_CHARGE_WEB_FORM_URL_ASYNC }\r\n}\r\n\r\nfunction onFetchEBizChargeWebFormUrlSuccess(payload) {\r\n return { type: UPDATE_EBIZ_CHARGE_WEB_FORM_URL, payload }\r\n}\r\n\r\nfunction onFetchEBizChargeWebFormUrlError(diagMsg, dispatch) {\r\n dispatch(notifyError(translateResourceString(\"/Checkout/PaymentInformation/EBizCharge/FailedToLoad\"), diagMsg))\r\n return {type: EBIZ_CHARGE_WEB_FORM_URL_ERROR };\r\n}\r\n\r\nconst fetchEBizChargeWebFormUrlSpec = {\r\n endpoint: (state) => state.constants.navigation.eBizChargeWebFormUrlEndpoint,\r\n init: { method: 'POST', credentials: 'same-origin' },\r\n notify: notifyRefreshingEBizChargeFormUrl,\r\n extract: (response) => response.json(),\r\n onSuccess: onFetchEBizChargeWebFormUrlSuccess,\r\n onError: (diagMsg, data, dispatch) => onFetchEBizChargeWebFormUrlError(diagMsg, dispatch),\r\n}\r\n\r\nexport const fetchEBizChargeWebFormUrl = fetchJson(fetchEBizChargeWebFormUrlSpec)\r\n\r\nexport function handleEBizChargePayment(payload) {\r\n return (dispatch, getState) => {\r\n const state = getState();\r\n const orderConfirmationUrl = state.constants.navigation.orderConfirmationUrl;\r\n\r\n if (payload.Success && typeof window !== 'undefined' && typeof window.location !== 'undefined') {\r\n if(!payload.OrderNumber) {\r\n dispatch(notifyCompleteCheckoutError(translateResourceString(\"/Checkout/PaymentInformation/EBizCharge/PaymentAcceptedButNotProcessed\")));\r\n } else {\r\n const url = new URL(orderConfirmationUrl, window.location.origin);\r\n url.searchParams.append('orderNumber', payload.OrderNumber);\r\n window.location.href = url.toString();\r\n }\r\n } else if(!!payload.Declined) {\r\n dispatch(notifyCompleteCheckoutError(translateResourceString(\"/Checkout/PaymentInformation/EBizCharge/PaymentDeclined\")));\r\n } else {\r\n dispatch(notifyCompleteCheckoutError(translateResourceString(\"/Checkout/PaymentInformation/EBizCharge/PaymentError\")));\r\n }\r\n }\r\n}\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nimport { logError, notifyError } from '../UserMessaging'\r\nimport {\r\n selectPaymentOption,\r\n updateBraintreePaymentData,\r\n updatePurchaseOrderNumber\r\n} from './paymentMethodActionCreators'\r\n\r\nimport { mapStateToPlaceOrderDetails } from '../PlaceOrder'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\nimport { makeCatalystFetchPostInit } from \"../../../util/fetchUtility\";\r\n\r\nconst braintreeLoadTimeoutDuration = 15000;\r\n\r\nconst makeDropinConfig = (token, amount, locale, { usePaypal, usePaypalCredit, braintreePaypalFlow, currency }) => {\r\n function getSupportedLocale(inLocale = \"\") {\r\n var supportedLocales =\r\n [// BBS DDD 2017-09-07 https://braintree.github.io/braintree-web/3.22.2/PayPalCheckout.html#createPayment retrieved 2017-09-07\r\n \"en_US\", \"da_DK\", \"de_DE\", \"en_AU\", \"en_GB\", \"es_ES\", \"fr_CA\", \"fr_FR\", \"id_ID\", \"it_IT\", \"ja_JP\",\r\n \"ko_KR\", \"nl_NL\", \"no_NO\", \"pl_PL\", \"pt_BR\", \"pt_PT\", \"ru_RU\", \"sv_SE\", \"th_TH\", \"zh_CN\", \"zh_HK\", \"zh_TW\"\r\n ],\r\n preferredLocale = inLocale.toLowerCase(),\r\n i = 0,\r\n found = false;\r\n supportedLocales.forEach(function (locale, idx, arr) {\r\n if (found) return;\r\n if (preferredLocale === locale.toLowerCase()) {\r\n found = true;\r\n i = idx;\r\n }\r\n });\r\n if (found) return supportedLocales[i];\r\n supportedLocales.forEach(function (locale, idx, arr) {\r\n if (found) return;\r\n if (locale.toLowerCase().substring(0, preferredLocale.length) === preferredLocale) {\r\n found = true;\r\n i = idx;\r\n }\r\n });\r\n if (i > -1) return supportedLocales[i];\r\n return \"\";\r\n }\r\n\r\n const inLocale1 = typeof window !== 'undefined' &&\r\n window.navigator &&\r\n window.navigator.language &&\r\n window.navigator.language.replace\r\n ? window.navigator.language.replace('-', '_')\r\n : '';\r\n var dropinConfig = {\r\n authorization: token,\r\n container: \"#braintreeHolder\",\r\n locale: locale ||\r\n getSupportedLocale(\r\n inLocale1),\r\n //vaultManager: true,\r\n card: {\r\n vault: {\r\n allowVaultCardOverride: true\r\n }\r\n }\r\n }\r\n const paypalConfig = { flow: braintreePaypalFlow, amount, currency };\r\n if (usePaypal) {\r\n dropinConfig.paypal = paypalConfig\r\n if (usePaypalCredit) {\r\n dropinConfig.paypalCredit = paypalConfig\r\n }\r\n }\r\n return dropinConfig;\r\n}\r\n\r\nclass BraintreePaymentComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n const { isSelected, BraintreePaymentNonce } = props;\r\n this.initBraintree = this.initBraintree.bind(this);\r\n this.onBraintreeLoadTimeout = this.onBraintreeLoadTimeout.bind(this)\r\n this.onClientTokenReceived = this.onClientTokenReceived.bind(this)\r\n this.initBraintree = this.initBraintree.bind(this)\r\n this.componentDidUpdate = this.componentDidUpdate.bind(this)\r\n this.onClickSuccess = this.onClickSuccess.bind(this)\r\n this.onDropinCreated = this.onDropinCreated.bind(this)\r\n this.onStartOver = this.onStartOver.bind(this)\r\n this.dropin = null\r\n\r\n this.state = {\r\n btInitializing: false,\r\n dropinInstance: null,\r\n paymentMethodAvailable: false,\r\n isOpen: isSelected,\r\n btLoaded: false,\r\n nonce: BraintreePaymentNonce\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.state.dropinInstance && this.state.dropinInstance.teardown();\r\n this.setState({ dropinInstance: null, paymentMethodAvailable: false, btLoaded: false })\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.isSelected) {\r\n if (!prevState.isOpen && !this.state.isOpen) {\r\n this.setState({ isOpen: true });\r\n }\r\n }\r\n if (!prevState.btLoaded && !prevState.btInitializing && !this.state.btLoaded && !this.state.btInitializing) {\r\n this.initBraintree(this.props);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.dropin = require('braintree-web-drop-in')\r\n if (this.props.isSelected && (!this.state.nonce || this.state.nonce.length < 1)) {\r\n this.setState({ isOpen: true });\r\n if (!this.state.btLoaded && !this.state.btInitializing) {\r\n this.initBraintree(this.props);\r\n }\r\n }\r\n }\r\n\r\n onStartOver(e) {\r\n e.preventDefault();\r\n this.props.onStartOver();\r\n this.state.dropinInstance && this.state.dropinInstance.teardown();\r\n this.setState({ btInitializing: false, nonce: '', btLoaded: false, paymentMethodAvailable: false });\r\n this.initBraintree(this.props);\r\n }\r\n\r\n onPaymentCancel(e) {\r\n e.preventDefault();\r\n this.setState({ btInitializing: false, isOpen: false });\r\n this.props.onPaymentCancel();\r\n }\r\n\r\n onBraintreeLoadTimeout() {\r\n if (!this.state.btLoaded) {\r\n this.props.onBraintreeLoadTimeout();\r\n }\r\n }\r\n\r\n onDropinCreated(createErr, dropinInstance) {\r\n this.setState({ btInitializing: false });\r\n if (createErr) {\r\n this.props.onCreateDropinError(\r\n `${translateResourceString(\"/Checkout/PaymentInformation/Braintree/ErrorInitializingBraintree\")}: ${createErr}. ${translateResourceString(\"/Checkout/PaymentInformation/Braintree/PleaseReloadOrContactCustomerService\")}`,\r\n createErr);\r\n return;\r\n }\r\n this.setState({\r\n dropinInstance: dropinInstance,\r\n btLoaded: true,\r\n paymentMethodAvailable: dropinInstance.isPaymentMethodRequestable()\r\n });\r\n dropinInstance.on('paymentMethodRequestable', () => this.setState({ paymentMethodAvailable: true }));\r\n dropinInstance.on('noPaymentMethodRequestable', () => this.setState({ paymentMethodAvailable: false }));\r\n }\r\n\r\n onClientTokenReceived(token, nextProps) {\r\n var dropinConfig = makeDropinConfig(token, nextProps.amount, null, nextProps.settings);\r\n this.dropin.create(dropinConfig, this.onDropinCreated);\r\n }\r\n\r\n initBraintree(props) {\r\n // Don't run this server-side\r\n if (typeof window === 'undefined') {\r\n console.log('prevented initBraintree')\r\n return;\r\n }\r\n if (this.state.btInitializing) {\r\n props.logDevError(\"Warning: braintree already initialized or still initializing\");\r\n return;\r\n }\r\n this.setState({ btInitializing: true, btLoaded: false });\r\n setTimeout(this.onBrainteeLoadTimeout, braintreeLoadTimeoutDuration);\r\n const clientTokenEndpoint = props.braintreeClientTokenEndpoint;\r\n\r\n fetch(clientTokenEndpoint, makeCatalystFetchPostInit(props.placeOrderDetails))\r\n .then((response) => {\r\n if (response.ok)\r\n return response.json();\r\n throw new Error(`${response.status}: ${response.statusText}`)\r\n })\r\n .then((clientTokenResult) => {\r\n if (clientTokenResult.Success)\r\n this.onClientTokenReceived(clientTokenResult.Token, props, this.dropin);\r\n else\r\n props.onClientTokenFailed(clientTokenResult.canRetry, clientTokenResult.ErrorMessage);\r\n }).catch((error) => {\r\n props.onClientTokenFailed(false, error.message);\r\n });\r\n }\r\n\r\n onClickSuccess(e) {\r\n e && e.preventDefault && e.preventDefault();\r\n const dropinInstance = this.state.dropinInstance;\r\n if (!dropinInstance && dropinInstance.requestPaymentMethod) {\r\n this.props.onSuccessNoDropin(\r\n translateResourceString(\"/Checkout/PaymentInformation/Braintree/SomethingWentWrong\"),\r\n `dropin is undefined or wrong: ${dropinInstance}`);\r\n }\r\n dropinInstance.requestPaymentMethod((getPaymentErr, payload) => {\r\n if (getPaymentErr) {\r\n this.props.onSuccessNoDropin(translateResourceString(\"/Checkout/PaymentInformation/Braintree/ErrorGettingPaymentMethod\") + \": \" +\r\n getPaymentErr,\r\n getPaymentErr);\r\n return;\r\n }\r\n this.setState({ nonce: payload.nonce });\r\n this.props.onSuccesfulRequest(payload, this.props.braintreePaymentId);\r\n });\r\n }\r\n\r\n render() {\r\n let content;\r\n const disabled = (this.state.btInitializing || !this.state.paymentMethodAvailable);\r\n if (this.state.nonce && this.state.nonce.length > 0) {\r\n content = (
\r\n {translateResourceString(\"/Checkout/PaymentInformation/Braintree/AlreadyAuthorizedStartOver\")}  \r\n \r\n
);\r\n } else {\r\n content = (\r\n
\r\n
\r\n {this.state.btInitializing &&\r\n
\r\n }\r\n \r\n this.props.onPurchaseOrderChange(e)}\r\n value={this.props.poNumber}\r\n />\r\n this.onClickSuccess(e)}\r\n onKeyPress={e => e.key === \"Enter\" && this.onClickSuccess()}\r\n style={{ marginRight: 20 }}\r\n tabIndex={0}\r\n >\r\n {translateResourceString(\"/Checkout/PaymentInformation/Braintree/UseMethodButton\")}\r\n \r\n this.onPaymentCancel(e)}\r\n tabIndex={0}\r\n >\r\n {translateResourceString(\"/Checkout/PaymentInformation/Braintree/CancelButton\")}\r\n \r\n
\r\n )\r\n }\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapBraintreePaymentStateToProps = (state, ownProps) => {\r\n const settings = state.constants.braintreeSettings;\r\n const entities = state.entities;\r\n const addresses = entities.Addresses;\r\n const summary = entities.Summary;\r\n\r\n return {\r\n settings,\r\n amount: summary.TotalRemaining,\r\n billingAddress: addresses.filter(a => a.Id === entities.SelectedBillingAddressId)[0],\r\n braintreeClientTokenEndpoint: state.constants.navigation.braintreeClientTokenEndpoint,\r\n braintreePaymentId: settings.braintreePaymentId,\r\n placeOrderDetails: mapStateToPlaceOrderDetails(state),\r\n BraintreePaymentNonce: state.entities.PaymentRecord.BraintreePaymentNonce,\r\n ...ownProps\r\n }\r\n};\r\n\r\nconst mapBraintreePaymentDispatchToProps = (dispatch, ownProps) => {\r\n return {\r\n onBraintreeLoadTimeout: () => dispatch(notifyError(translateResourceString(\"/Checkout/PaymentInformation/Braintree/FailedToLoad\"),\r\n `Braintree form load timed out after ${braintreeLoadTimeoutDuration}ms`)),\r\n onClientTokenFailed: (canRetry, serverMessage) => {\r\n const retryMessage = (canRetry) ? translateResourceString(\"/Checkout/PaymentInformation/Braintree/ErrorSecondPartReload\") : translateResourceString(\"/Checkout/PaymentInformation/Braintree/ErrorSecondPartContactService\");\r\n const text = `${translateResourceString(\"/Checkout/PaymentInformation/Braintree/ErrorFirstPart\")} ${retryMessage}`;\r\n dispatch(notifyError(text, `message from server: \"${serverMessage}\"`));\r\n },\r\n onCreateDropinError: (text, diagnosticText) => dispatch(notifyError(text, diagnosticText)),\r\n logDevError: (text) => dispatch(logError(text)),\r\n onSuccesfulRequest: (payload, braintreePaymentId) => {\r\n ownProps.onPaymentIsValid();\r\n dispatch(selectPaymentOption(braintreePaymentId, \"Braintree\"));\r\n dispatch(updateBraintreePaymentData(payload));\r\n },\r\n onSuccessNoDropin: (text, diagnosticText) => dispatch(notifyError(text, diagnosticText)),\r\n onStartOver: () => ownProps.onPaymentCancel(),\r\n onPurchaseOrderChange: (e) => (e && e.target && dispatch(updatePurchaseOrderNumber(e.target.value)))\r\n };\r\n};\r\n\r\nconst BraintreePaymentComponentWrapper = connect(mapBraintreePaymentStateToProps, mapBraintreePaymentDispatchToProps)(BraintreePaymentComponent)\r\n\r\nexport default BraintreePaymentComponentWrapper","import React from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nimport { updatePurchaseOrderNumber } from './paymentMethodActionCreators'\r\n\r\nimport { Fade } from '../../componentAnimations'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nconst PurchaseOrderComponent = ({\r\n poNumber,\r\n selected,\r\n onChange,\r\n placeholder = translateResourceString(\"/Checkout/PaymentInformation/Purchase/PONumberPlaceholder\"),\r\n onPaymentIsValid\r\n}) => (\r\n \r\n
\r\n (e.key === \"Enter\" && onPaymentIsValid(e)) || onChange(e)}\r\n value={poNumber}\r\n />\r\n
\r\n
\r\n)\r\n\r\nconst mapStateToProps = (state, ownProps) => ({\r\n poNumber: state.entities.PaymentRecord.POValue || \"\",\r\n selected: state.entities.SelectedPaymentOptionId === state.constants.purchaseOrderPaymentId,\r\n ...ownProps\r\n})\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n onChange: (e) => (e && e.target && dispatch(updatePurchaseOrderNumber(e.target.value)))\r\n})\r\n\r\nconst PurchaseOrderComponentContainer = connect(mapStateToProps, mapDispatchToProps)(PurchaseOrderComponent)\r\n\r\nexport default PurchaseOrderComponentContainer\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport find from 'lodash/find'\r\n\r\nimport {\r\n selectPaymentOption\r\n} from './paymentMethodActionCreators'\r\n\r\nimport {\r\n OptionListItemRadio,\r\n CheckoutSection,\r\n hiddenAnchorStyle\r\n} from '../../components'\r\n\r\nimport { Fade } from '../../componentAnimations'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\nimport { CheckoutCompleteContainer } from '../PlaceOrder'\r\n\r\nconst getById = (methods, id) => {\r\n return methods.filter(pm => pm.Id === id)[0];\r\n}\r\n\r\nclass CheckoutPayment extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { isCollapsed: false };\r\n this.onItemSelected = this.onItemSelected.bind(this);\r\n this.onClickChange = this.onClickChange.bind(this);\r\n this.onPaymentIsValid = this.onPaymentIsValid.bind(this);\r\n this.onCancelClick = this.onCancelClick.bind(this);\r\n }\r\n\r\n onPaymentIsValid() {\r\n this.setState({ isCollapsed: true });\r\n }\r\n\r\n onItemSelected(id) {\r\n const paymentOption = getById(this.props.paymentOptions, id);\r\n if (!paymentOption) {\r\n console.error(`No payment method with id '${id}'`);\r\n return;\r\n }\r\n if (!paymentOption.paymentOptionComponent) {\r\n this.setState({ isCollapsed: true });\r\n }\r\n this.props.onSelected(id, paymentOption.Name);\r\n }\r\n\r\n onClickChange(e) {\r\n e.preventDefault();\r\n this.setState({ isCollapsed: !this.state.isCollapsed });\r\n this.props.onCancel();\r\n }\r\n\r\n onCancelClick(e) {\r\n this.setState({ isCollapsed: false });\r\n this.props.onCancel();\r\n }\r\n\r\n render() {\r\n if(!!!this.props.show) {\r\n return \r\n }\r\n\r\n const items = this.props.paymentOptions.map(pm => {\r\n let selected = pm.Id === this.props.selectedPaymentOptionId;\r\n const visible = !this.props.selectedPaymentOptionId || selected;\r\n if (pm.paymentOptionComponent) {\r\n const PaymentOptionComponent = pm.paymentOptionComponent;\r\n return (\r\n
\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\nconst formatPayment = ({ constants, entities }) => {\r\n\r\n const formatPaypalPayloadDetailsForSummary = (det) => {\r\n if (det) {\r\n if (typeof (det.firstName) !== 'undefined' && typeof (det.lastName) !== 'undefined' && typeof (det.email) !== 'undefined') {\r\n return `${det.firstName.length > 0 ? det.firstName + \" \" : \"\"}${det.lastName.length > 0 ? det.lastName + \" \" : \"\"} (${det.email})`;\r\n } else if (typeof (det.email) !== 'undefined' && det.email.length > 0) {\r\n return det.email;\r\n }\r\n }\r\n return \"unspecified\";\r\n }\r\n\r\n let formatters = [\r\n {\r\n Id: constants.purchaseOrderPaymentId,\r\n format: ({ POValue }) =>\r\n (`Purchase Order ${((POValue && POValue.length > 0) ? \" #: \" : \"\")}${POValue || \"\"}`)\r\n },\r\n {\r\n Id: constants.braintreeSettings.braintreePaymentId,\r\n format: ({ BraintreePaymentPayload }) => {\r\n if (!BraintreePaymentPayload) {\r\n return \"Pending\";\r\n } else {\r\n if (BraintreePaymentPayload.type === \"PayPalAccount\") {\r\n return `Paypal: ${formatPaypalPayloadDetailsForSummary(BraintreePaymentPayload.details)}`;\r\n } else if (BraintreePaymentPayload.type === \"CreditCard\") {\r\n return `Card: ${BraintreePaymentPayload.description}`\r\n } else {\r\n return \"Unknown payment method\";\r\n }\r\n\r\n }\r\n }\r\n },\r\n {\r\n Id: constants.eBizChargePaymentMethodId,\r\n format: () => translateResourceString(\"/Checkout/PaymentInformation/CreditCard\")\r\n }\r\n ];\r\n const formatter = find(formatters, x => x.Id === entities.SelectedPaymentOptionId);\r\n if (formatter) {\r\n return formatter.format(entities.PaymentRecord);\r\n }\r\n}\r\n\r\nconst mapCheckoutPaymentStateToProps = (state) => {\r\n var allowPurchaseOrder = state.entities.Summary.SubTotal >= state.constants.minimumCartValueForPO;\r\n var checkIsStopWorkShop = state.entities.CartItems.some(item => item.IsStopWorkshop);\r\n return {\r\n paymentOptions: state.entities.PaymentOptions.filter(po => po.Name !== \"Purchase Order\" || (allowPurchaseOrder && !checkIsStopWorkShop)),\r\n selectedPaymentOptionId: state.entities.SelectedPaymentOptionId,\r\n selectedDisplay: formatPayment(state),\r\n show: state.ui.onPaymentScreen\r\n }\r\n}\r\n\r\nconst mapCheckoutPaymentDispatchToProps = (dispatch) => {\r\n return {\r\n onSelected: (id, displayName) => dispatch(selectPaymentOption(id, displayName)),\r\n onCancel: () => dispatch(selectPaymentOption(''))\r\n }\r\n}\r\n\r\nconst CheckoutPaymentContainer = connect(\r\n mapCheckoutPaymentStateToProps,\r\n mapCheckoutPaymentDispatchToProps\r\n)(CheckoutPayment);\r\n\r\n\r\nexport default CheckoutPaymentContainer\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n fetchEBizChargeWebFormUrl,\r\n handleEBizChargePayment\r\n} from './paymentMethodActionCreators';\r\nimport { mapStateToPlaceOrderDetails } from '../PlaceOrder';\r\nimport { Fade } from '../../componentAnimations';\r\n\r\nclass EBizChargePaymentComponent extends React.Component {\r\n\r\n componentDidUpdate() {\r\n this.fetchEBizChargeWebFormUrlIfNeeded();\r\n }\r\n\r\n componentDidMount() {\r\n this.handleMessage = this.handleMessage.bind(this);\r\n window.addEventListener('message', this.handleMessage);\r\n this.fetchEBizChargeWebFormUrlIfNeeded();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('message', this.handleMessage);\r\n }\r\n\r\n fetchEBizChargeWebFormUrlIfNeeded() {\r\n // if selected but not already fetching/fetched => dispatch eBizChargePaymentWebUrl\r\n if(this.props.isSelected && // on payment screen\r\n !!!this.props.eBizChargePaymentWebFormError && // no error\r\n !!!this.props.fetchingEBizChargePaymentWebFormUrl && // not fetching\r\n (!this.props.eBizChargePaymentWebFormUrl || this.props.eBizChargePaymentWebFormUrl === \"\")) {\r\n this.props.fetchEBizChargeWebFormUrl(this.props.placeOrderDetails);\r\n }\r\n }\r\n\r\n handleMessage(event) {\r\n // Only react to messages from same domain as current document\r\n if (event.origin !== this.props.allowedOrigin || !event.data || !event.data.MessageType ||\r\n event.data.MessageType !== \"EBizChargePaymentResult\")\r\n return;\r\n\r\n try {\r\n this.props.handleEBizChargePayment(event.data);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n isSelected,\r\n eBizChargePaymentWebFormUrl,\r\n } = this.props;\r\n const show = isSelected && eBizChargePaymentWebFormUrl && eBizChargePaymentWebFormUrl !== \"\";\r\n return \r\n \r\n \r\n }\r\n}\r\n\r\n\r\nconst mapEBizChargePaymentComponentStateToProps = (state, ownProps) => {\r\n return {\r\n eBizChargePaymentWebFormUrl: state.entities.EBizChargePaymentWebFormUrl,\r\n placeOrderDetails: mapStateToPlaceOrderDetails(state),\r\n fetchingEBizChargePaymentWebFormUrl: state.entities.FetchingEBizChargePaymentWebFormUrl,\r\n eBizChargePaymentWebFormError: state.entities.EBizChargePaymentWebFormError,\r\n allowedOrigin: state.constants.allowedOrigin,\r\n ...ownProps\r\n }\r\n}\r\n\r\nconst mapEBizChargePaymentComponentDispatchToProps = (dispatch) => {\r\n return {\r\n fetchEBizChargeWebFormUrl: (placeOrderDetails) => dispatch(fetchEBizChargeWebFormUrl(placeOrderDetails)),\r\n handleEBizChargePayment: (payload) => dispatch(handleEBizChargePayment(payload)),\r\n }\r\n}\r\n\r\nconst EBizChargePaymentComponentContainer = connect(\r\n mapEBizChargePaymentComponentStateToProps,\r\n mapEBizChargePaymentComponentDispatchToProps\r\n)(EBizChargePaymentComponent);\r\n\r\n\r\nexport default EBizChargePaymentComponentContainer\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport PropTypes from 'prop-types'\r\nimport { dismissAllMessages } from '../UserMessaging'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nimport { toPayment, toShipping } from './navigationActionCreators';\r\n\r\n\r\nclass CheckoutNavigation extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onToShipping = this.onToShipping.bind(this);\r\n }\r\n\r\n onToShipping() {\r\n this.props.onToShipping();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nCheckoutNavigation.propTypes = {\r\n onPaymentScreen: PropTypes.bool,\r\n onShippingScreen: PropTypes.bool,\r\n cartLink: PropTypes.string\r\n}\r\n\r\nconst mapCheckoutNavigationStateToProps = (state) => {\r\n return {\r\n onPaymentScreen: state.ui.onPaymentScreen,\r\n onShippingScreen: !!!state.ui.onPaymentScreen,\r\n cartLink: state.constants.navigation.shoppingCartUrl,\r\n };\r\n}\r\n\r\nconst mapCheckoutNavigationDispatchToProps = (dispatch) => {\r\n return {\r\n onToPayment: () => {\r\n dispatch(dismissAllMessages());\r\n dispatch(toPayment());\r\n },\r\n onToShipping: () => {\r\n dispatch(dismissAllMessages());\r\n dispatch(toShipping());\r\n }\r\n }\r\n}\r\n\r\nconst CheckoutNavigationContainer = connect(mapCheckoutNavigationStateToProps, mapCheckoutNavigationDispatchToProps)(CheckoutNavigation);\r\n\r\nexport default CheckoutNavigationContainer","import {\r\n TO_PAYMENT,\r\n TO_SHIPPING\r\n } from '../../GlobalStateContainer'\r\n \r\n\r\n export function toPayment() {\r\n return {type: TO_PAYMENT}\r\n }\r\n \r\n export function toShipping() {\r\n return {type: TO_SHIPPING}\r\n }\r\n\r\n export function continueCheckout() {\r\n return {type: TO_PAYMENT}\r\n }","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\n\r\nclass CheckoutContinue extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onContinueClick = this.onContinueClick.bind(this);\r\n }\r\n\r\n onContinueClick() {\r\n this.props.onContinueClick(this.props.placeOrderDetails);\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {!!!this.props.onPaymentScreen &&\r\n this.onContinueClick(e)}\r\n >\r\n {this.props.continueButtonText}\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nCheckoutContinue.propTypes = {\r\n continueButtonText: PropTypes.string.isRequired,\r\n placeOrderDetails: PropTypes.object.isRequired,\r\n additionalClassname: PropTypes.string,\r\n onContinueClick: PropTypes.func,\r\n onPaymentScreen: PropTypes.bool,\r\n}\r\n\r\nexport default CheckoutContinue;\r\n","import { connect } from 'react-redux'\r\n\r\nimport { notifyError, dismissAllMessages, notifyWarning } from '../UserMessaging'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\nimport { continueCheckout } from './navigationActionCreators';\r\nimport { mapStateToContinueOrderDetails } from './mapStateToContinueOrderDetails'\r\n\r\nimport { validate } from '../Validation/OrderDetailsValidation'\r\nimport { orderCanContinueValidators } from '../Validation/OrderValidators';\r\nimport { formatMoney } from '../../components'\r\nimport CheckoutContinue from './CheckoutContinue'\r\n\r\nimport {\r\n selectPaymentOption\r\n} from '../PaymentMethod/paymentMethodActionCreators'\r\n\r\nconst mapCheckoutContinueStateToProps = (state, ownProps) => {\r\n var placeOrderDetails = mapStateToContinueOrderDetails(state);\r\n placeOrderDetails.constants = state.constants; // Hack on the constants object so we can see what constant values are when we validate\r\n \r\n return {\r\n continueButtonText: translateResourceString(\"/Checkout/Continue/ContinueToPayment\"),\r\n placeOrderDetails: placeOrderDetails,\r\n onPaymentScreen: state.ui.onPaymentScreen,\r\n ...ownProps\r\n }\r\n }\r\n \r\n const orderDetailsCanContinue = (orderDetails) => validate(orderDetails, orderCanContinueValidators);\r\n \r\nconst allowPurchaseOrder = (subTotal, minimumCartValueForPO) => {\r\n return subTotal >= minimumCartValueForPO;\r\n};\r\nconst blockPurhcaseOrderforStopworkshop = (IsStopWorkshop) => {\r\n return IsStopWorkshop;\r\n};\r\n\r\n\r\n\r\n const mapCheckoutContinueDispatchToProps = (dispatch) => {\r\n return {\r\n onContinueClick: (placeOrderDetails) => {\r\n dispatch(dismissAllMessages());\r\n const errors = orderDetailsCanContinue(placeOrderDetails);\r\n if(errors.length === 0) {\r\n dispatch(continueCheckout());\r\n const isPurchaseOrderAllowed = allowPurchaseOrder(placeOrderDetails.SubTotal, placeOrderDetails.constants.minimumCartValueForPO);\r\n if (!isPurchaseOrderAllowed) {\r\n const formatCurrency = formatMoney(placeOrderDetails.Currency);\r\n dispatch(notifyWarning(translateResourceString(\"/Checkout/PaymentInformation/MinimumCartValueForPOMessage\").replace(\"{0}\", formatCurrency(placeOrderDetails.constants.minimumCartValueForPO))));\r\n }\r\n const isStopworkpoblock = blockPurhcaseOrderforStopworkshop(placeOrderDetails.IsStopWorkshop);\r\n if (isStopworkpoblock) {\r\n dispatch(notifyWarning(translateResourceString(\"/Checkout/PaymentInformation/StopWorksupportMessage\").replace(\"{0}\")));\r\n }\r\n\r\n const filteredPaymentOptions = placeOrderDetails.PaymentOptions && placeOrderDetails.PaymentOptions.filter(po => po.Name !== \"Purchase Order\" || (isPurchaseOrderAllowed && !isStopworkpoblock));\r\n if (filteredPaymentOptions && filteredPaymentOptions.length === 1) {\r\n const paymentOption = filteredPaymentOptions[0];\r\n dispatch(selectPaymentOption(paymentOption.Id, paymentOption.Name));\r\n }\r\n\r\n } else {\r\n const intro = translateResourceString(\"/Checkout/Continue/Errors/Intro\") + \": \";\r\n const message = errors.reduce((acc, cur) => acc + '\\n' + cur, intro);\r\n dispatch(notifyError(message));\r\n }\r\n }\r\n }\r\n }\r\n \r\n const CheckoutContinueContainer = connect(mapCheckoutContinueStateToProps, mapCheckoutContinueDispatchToProps)(CheckoutContinue);\r\n \r\n export default CheckoutContinueContainer\r\n","import find from 'lodash/find'\r\n\r\nexport const mapStateToContinueOrderDetails = (state) => {\r\n const entities = state.entities;\r\n const shippingAddress = find(entities.Addresses, a => a.Id === entities.SelectedShippingAddressId);\r\n const billingAddress = (state.ui.useShippingForBilling)\r\n ? shippingAddress\r\n : find(entities.Addresses,\r\n address =>\r\n address.Id === entities.SelectedBillingAddressId\r\n && entities.BillingAddresses.includes(address.Id));\r\n const shippingOption = entities.ShippingOptions.filter(so => so.Id === entities.SelectedShippingOptionId)[0];\r\n return {\r\n SelectedShippingAddress: shippingAddress,\r\n SelectedBillingAddress: billingAddress,\r\n SelectedShippingOption: state.entities.CartItems.some(item => item.IsPhysical && item.IsStopWorkshop) ? state.entities.CartItems.some(item => item.IsPhysical && item.IsStopWorkshop) : shippingOption,\r\n Coupons: state.entities.Coupons,\r\n BillingEqualsShipping: state.ui.useShippingForBilling,\r\n Total: state.entities.Summary.Total,\r\n SubTotal: state.entities.Summary.SubTotal,\r\n PartnerIds: state.entities.Coupons.length > 0 ? state.entities.Coupons.filter(c => c.IsPartnerIdDiscount && c.Description).map(c => c.Description) : null,\r\n TermsAndConditions: state.ui.termsAndConditions, \r\n IsPartnerIdRequired: state.entities.CartItems.some(item => item.RequiresPartnerId),\r\n IsShippingRequired: state.entities.CartItems.some(item => item.IsPhysical ),\r\n IsTermsAndConditionsRequired: state.entities.CartItems.some(item => item.IsLicense) || state.entities.CartItems.some(item => item.IsStopWorkshop),\r\n PaymentOptions: state.entities.PaymentOptions,\r\n Currency: state.entities.Summary.Currency,\r\n RequiredPartnerIds: state.entities.RequiredPartnerIds,\r\n SelectedProduct: state.entities.CartItems.length > 1 && state.entities.CartItems.some(item => item.IsStopWorkshop),\r\n IsStopWorkshop: state.entities.CartItems.some(item => item.IsStopWorkshop)\r\n \r\n };\r\n}\r\n\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport PropTypes from 'prop-types'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nimport { checkTermsAndConditions, unCheckTermsAndConditions } from './termsAndCondtionsActionCreators';\r\n\r\n\r\nclass CheckoutTermsAndCondtions extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.toggleTermsAndCondtions = this.toggleTermsAndCondtions.bind(this);\r\n }\r\n\r\n toggleTermsAndCondtions() {\r\n if (this.props.termsAndConditions) this.props.unCheckTermsAndConditions();\r\n else this.props.checkTermsAndConditions();\r\n }\r\n\r\n render() {\r\n const termsUrl = this.props.IsStopWorkshop\r\n ? \"https://www.consultdss.com/490e69/globalassets/assets/documents/terms-and-conditions-virtual-workshop.pdf\" \r\n : \"https://www.consultdss.com/4aa943/globalassets/assets/documents/dssplus-streaming-user-agreement-2024.pdf\";\r\n return (\r\n
\r\n \r\n \r\n \r\n I accept the \r\n Terms & Conditions\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nCheckoutTermsAndCondtions.propTypes = {\r\n termsAndConditions: PropTypes.bool,\r\n hidden: PropTypes.bool\r\n}\r\n\r\nconst mapCheckoutTermsAndCondtionsStateToProps = (state) => {\r\n return {\r\n termsAndConditions: state.ui.termsAndConditions,\r\n // eslint-disable-next-line no-mixed-operators\r\n hidden: state.ui.onPaymentScreen || !!!(state.entities.CartItems && state.entities.CartItems.some(item => item.IsLicense) || state.entities.CartItems.some(item => item.IsStopWorkshop)),\r\n IsStopWorkshop: state.entities.CartItems.some(item => item.IsStopWorkshop)\r\n };\r\n}\r\n\r\nconst mapCheckoutTermsAndCondtionsDispatchToProps = (dispatch) => {\r\n return {\r\n checkTermsAndConditions: () => {\r\n dispatch(checkTermsAndConditions());\r\n },\r\n unCheckTermsAndConditions: () => {\r\n dispatch(unCheckTermsAndConditions());\r\n }\r\n }\r\n}\r\n\r\nconst CheckoutTermsAndCondtionsContainer = connect(mapCheckoutTermsAndCondtionsStateToProps, mapCheckoutTermsAndCondtionsDispatchToProps)(CheckoutTermsAndCondtions);\r\n\r\nexport default CheckoutTermsAndCondtionsContainer\r\n","import {\r\n CHECK_TERMS_CONDITIONS,\r\n UNCHECK_TERMS_CONDITIONS\r\n } from '../../GlobalStateContainer'\r\n \r\n\r\n export function checkTermsAndConditions() {\r\n return {type: CHECK_TERMS_CONDITIONS}\r\n }\r\n \r\n export function unCheckTermsAndConditions() {\r\n return {type: UNCHECK_TERMS_CONDITIONS}\r\n }","import React from 'react'\r\n\r\nfunction CheckoutPromoGiftCard(props) {\r\n console.error(\"NOT IMPLEMENTED: CheckoutGiftCard\");\r\n return (
);\r\n}\r\n\r\nexport default CheckoutPromoGiftCard","import React from 'react'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nconst CheckoutPageHeader = () => (\r\n

\r\n \r\n {translateResourceString(\"/Checkout/PageHeader\")}\r\n

\r\n)\r\n\r\nexport default CheckoutPageHeader","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport $ from 'jquery'\r\nimport { translateResourceString } from '../../util/translationUtility';\r\n\r\nimport { CheckoutCouponContainer } from './Coupon'\r\nimport { CheckoutExpandedCouponContainer } from './Coupon'\r\nimport { CartListContainer } from './Cart'\r\nimport { CheckoutShippingAddress } from './Address'\r\nimport { CheckoutSummaryContainer } from './Summary'\r\nimport { MessagesList } from './UserMessaging'\r\nimport { CheckoutShipment } from './ShippingMethod'\r\nimport { CheckoutPayment } from './PaymentMethod'\r\nimport { CheckoutBillingAddress } from './Address'\r\nimport { CheckoutNavigation, CheckoutContinue } from './Navigation';\r\nimport { CheckoutTermsAndCondtions } from './TermsAndConditions';\r\nimport CheckoutPromoGiftCard from './CheckoutPromoGiftCard'\r\nimport CheckoutPageHeader from '../components/Layout/CheckoutPageHeader';\r\n\r\nclass Components extends Component {\r\n\r\n componentDidMount() {\r\n\r\n // BBS DDD This should be refactored and moved into component animations, or\r\n // a renderProp component\r\n // https://reactjs.org/docs/render-props.html\r\n\r\n let docWidth = 0, docTop = 0;\r\n if (typeof document !== 'undefined' && document.documentElement) {\r\n\r\n docWidth = document.documentElement.clientWidth;\r\n docTop = document.documentElement.getBoundingClientRect().top\r\n } else {\r\n if (typeof window.innerWidth !== 'undefined' && window.innerWidth)\r\n docWidth = window.innerWidth;\r\n }\r\n const minPortWidthPx = 767;\r\n if (docWidth > minPortWidthPx) {\r\n // BBS DDD 2018-02-19 I broke down and used jquery. Yuck.\r\n const affixedElt = document.getElementById('right-summary');\r\n const conteainerElt = document.getElementById('right-summary-container');\r\n affixedElt.setAttribute(\"data-spy\", \"affix\");\r\n const containerClientRect = conteainerElt ? conteainerElt.getBoundingClientRect() : { top: 0, height: 0 };\r\n affixedElt.setAttribute(\"data-offset-top\", containerClientRect.top - docTop);\r\n affixedElt.setAttribute(\"data-offset-bottom\", containerClientRect.top + containerClientRect.height - affixedElt.getBoundingClientRect().height);\r\n let affixedWidth = affixedElt.getBoundingClientRect().width;\r\n affixedElt.style.width = affixedWidth;\r\n $('#right-summary').on('affix.bs.affix', (e) => { e.target.setAttribute('style', `top: 0px; width: ${affixedWidth}px`); });\r\n $('#right-summary').on('affix-top.bs.affix', (e) => { e.target.setAttribute('style', ` width: ${affixedWidth}px`); });\r\n\r\n if (typeof window !== 'undefined' && typeof window.addEventListener !== 'undefined') {\r\n window.addEventListener('resize', (e) => {\r\n // BBS DDD 2018-02-19 This code attempts to resize the width of the affixed\r\n // element when the window resizes, but nothing happens\r\n const hasAffix = affixedElt.classList.contains('affix');\r\n if (hasAffix) {\r\n affixedElt.classList.remove('affix');\r\n affixedElt.classList.add('affix-top');\r\n }\r\n affixedWidth = affixedElt.getBoundingClientRect().width;\r\n if (hasAffix) {\r\n affixedElt.classList.remove('affix-top');\r\n affixedElt.classList.add('affix');\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n if (this.props.checkoutIsEmpty) {\r\n return (\r\n
\r\n
\r\n

{translateResourceString(\"/Checkout/EmptyCartMessage\")}

\r\n

{translateResourceString(\"/Checkout/BackToHomeLink\")}

\r\n
\r\n
\r\n )\r\n }\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n checkoutIsEmpty: state.entities.CartItems.length < 1\r\n});\r\n\r\nexport default connect(mapStateToProps)(Components)","import PropTypes from 'prop-types'\r\n\r\nexport const shapeWithIdOfString = PropTypes.shape({Id: PropTypes.string.isRequired});\r\nexport const shapeWithIdOfAny = PropTypes.shape({Id: PropTypes.any.isRequired});\r\nexport const arrayOfShapesWithIdOfString = PropTypes.arrayOf(shapeWithIdOfString);\r\nexport const arrayOfShapesWithIdOfAny = PropTypes.arrayOf(shapeWithIdOfAny);\r\n","// BBS DDD 2020-06-02 TODO: replace lodash usage here. With vanilla js or other lib?\r\nimport uniqBy from 'lodash/uniqBy'\r\nimport find from 'lodash/find'\r\n\r\nimport { BraintreePaymentComponent, PurchaseOrderComponent, EBizChargePaymentComponent } from '../Features/PaymentMethod'\r\nimport { translateResourceString, addResourceStrings } from '../../util/translationUtility';\r\n\r\n// https://lodash.com/docs/4.17.10#uniqBy\r\nconst isAllUniqueValues = (list, iteratee = x => x) => {\r\n const len = list.length;\r\n const uniqLength = uniqBy(list, iteratee).length;\r\n return len === uniqLength;\r\n}\r\n\r\n\r\n//const addressesAreInvalid = (addresses) => {\r\n// if (!isAllUniqueValues(addresses.map(address => address.Id))) {\r\n// console.error('not all Ids unique for ShippingAddresses and BillingAddresses');\r\n// return true;\r\n// }\r\n//}\r\n\r\nconst paymentOptionsAreInvalid = (paymentOptions) => {\r\n if (!isAllUniqueValues(paymentOptions, po => po.Id)) {\r\n console.error('not all Ids unique for PaymentOptions');\r\n return true;\r\n }\r\n}\r\n\r\nconst cartItemsAreInvalid = (cartItems) => {\r\n if (!isAllUniqueValues(cartItems, ci => ci.Id)) {\r\n console.error('not all Ids unique for CartItems');\r\n return true;\r\n }\r\n}\r\n\r\n// Perhaps https://validatejs.org/ would be useful here\r\nconst initialDataIsInvalid = (initialData) => {\r\n if (paymentOptionsAreInvalid(initialData.PaymentOptions)) {\r\n return true;\r\n }\r\n if (cartItemsAreInvalid(initialData.CartItems)) {\r\n return true;\r\n }\r\n}\r\n\r\nconst mapTopLevelPropsToInitialStoreState = props => {\r\n // validate\r\n if (initialDataIsInvalid(props.initialData)) {\r\n return {};\r\n }\r\n\r\n addResourceStrings(props.localizationItems);\r\n\r\n // Add controls to payment if they have one\r\n const paymentOptions = props.initialData.PaymentOptions.map(po => {\r\n if (po.Id === props.BraintreeClientSettings.BraintreePaymentOptionId) {\r\n po.paymentOptionComponent = BraintreePaymentComponent;\r\n } else if (po.Id === props.purchaseOrderPaymentId) {\r\n po.paymentOptionComponent = PurchaseOrderComponent;\r\n } else if (po.Id === props.eBizChargePaymentMethodId) {\r\n po.paymentOptionComponent = EBizChargePaymentComponent;\r\n }\r\n return po;\r\n });\r\n\r\n const allowBillingEqualsShipping = props.initialData.AllowBillingEqualsShipping;\r\n const selectedShippingAddressId = props.initialData.SelectedShippingAddressId;\r\n const selectedBillingAddressId = (allowBillingEqualsShipping && selectedShippingAddressId)\r\n ? (selectedShippingAddressId)\r\n : (props.initialData.BillingAddresses[0] && props.initialData.BillingAddresses[0].Id);\r\n return {\r\n // BBS DDD 2017-11-19 The state of the ui. Make all ui updates here.\r\n ui: {\r\n PhoneNumber: props.initialData.PhoneNumber,\r\n PhoneText: props.initialData.PhoneText,\r\n useShippingForBilling: allowBillingEqualsShipping &&\r\n selectedBillingAddressId === selectedShippingAddressId,\r\n messages: [],\r\n completeCheckoutButtonText: \"Place Order\",\r\n isPlaceOrderPending: false,\r\n onPaymentScreen: false,\r\n termsAndConditions: true\r\n },\r\n // BBS DDD 2017-11-19 The state of the checkout. Make all business\r\n // updates here\r\n entities: {\r\n Addresses: props.initialData.BillingAddresses.concat(props.initialData.ShippingAddresses),\r\n BillingAddresses: props.initialData.BillingAddresses.map(addr => addr.Id),\r\n SelectedBillingAddressId: selectedBillingAddressId,\r\n ShippingAddresses: props.initialData.ShippingAddresses.map(addr => addr.Id),\r\n SelectedShippingAddressId: props.initialData.SelectedShippingAddressId,\r\n CartItems: props.initialData.CartItems,\r\n Coupons: props.initialData.CouponViewModels,\r\n PaymentOptions: paymentOptions,\r\n SelectedPaymentOptionId: '',\r\n ShippingOptions: props.initialData.ShippingOptions,\r\n isRefreshingShippingOptions: false,\r\n SelectedShippingOptionId: props.initialData.SelectedShippingMethodId,\r\n Summary: {\r\n Total: 0,\r\n SubTotal: 0,\r\n ShippingTotal: null,\r\n Currency: 'USD',\r\n TotalRemaining: 0,\r\n DiscountTotal: 0\r\n },\r\n isRefreshingSummary: true,\r\n PaymentRecord: {},\r\n EBizChargePaymentWebFormUrl: null,\r\n FetchingEBizChargePaymentWebFormUrl: false,\r\n EBizChargePaymentWebFormError: false,\r\n RequiredPartnerIds: props.initialData.RequiredPartnerIds\r\n },\r\n // BBS DDD 2017-11-19 Data definitions and other things\r\n constants: {\r\n // Locations of server resources\r\n navigation: {\r\n MyAccountLink: '',\r\n checkoutUrl: props.checkoutUrl,\r\n ReceiptUrl: props.initialData.ReceiptUrl,\r\n addCouponEndpoint: props.addCouponEndpoint,\r\n removeCouponEndpoint: props.removeCouponEndpoint,\r\n couponsEndpoint: props.couponsEndpoint,\r\n addAddressEndpoint: props.addAddressEndpoint,\r\n deleteAddressEndpoint: props.deleteAddressEndpoint,\r\n cartSummaryEndpoint: props.cartSummaryEndpoint,\r\n braintreeClientTokenEndpoint: props.braintreeClientTokenEndpoint,\r\n placeOrderEndpoint: props.placeOrderEndpoint,\r\n orderConfirmationUrl: props.orderConfirmationUrl,\r\n updateItemQuantityEndpoint: props.updateQuantityEndpoint,\r\n deleteItemEndpoint: props.deleteItemEndpoint,\r\n refreshShippingOptionsEndpoint: props.refreshShippingOptionsEndpoint,\r\n setShippingMethodEndpoint: props.setShippingMethodEndpoint,\r\n eBizChargeWebFormUrlEndpoint: props.eBizChargeWebFormUrlEndpoint,\r\n shoppingCartUrl: props.shoppingCartUrl,\r\n setShippingAddressEndpoint: props.setShippingAddressEndpoint,\r\n setBillingAndShippingAddressEndpoint: props.setBillingAndShippingAddressEndpoint,\r\n titlesIncludedInLicenseEndpoint: props.titlesIncludedInLicenseEndpoint,\r\n requiredPartnerIdsEndpoint: props.requiredPartnerIdsEndpoint,\r\n },\r\n ShippingAddressType: props.ShippingAddressType,\r\n BillingAddressType: props.BillingAddressType,\r\n allowAddingBillingAddresses: props.allowAddingBillingAddresses,\r\n allowAddingShippingAddresses: props.allowAddingShippingAddresses,\r\n countriesStatesMap: props.countriesStatesMap,\r\n countries: props.countries,\r\n braintreeSettings: {\r\n usePaypal: props.BraintreeClientSettings.BraintreePaypalEnabled,\r\n usePaypalCredit: props.BraintreeClientSettings.BraintreePaypalCreditEnabled,\r\n braintreePaypalFlow: props.BraintreeClientSettings.BraintreePaypalFlow,\r\n braintreePaymentId: props.BraintreeClientSettings.BraintreePaymentOptionId,\r\n },\r\n allowBillingEqualsShipping: props.initialData.allowBillingEqualsShipping,\r\n purchaseOrderPaymentId: props.purchaseOrderPaymentId,\r\n allowEditingBillingAddresses: props.allowEditingBillingAddresses,\r\n allowEditingShippingAddresses: props.allowEditingShippingAddresses,\r\n allowCoupons: true,\r\n eBizChargePaymentMethodId: props.eBizChargePaymentMethodId,\r\n allowedOrigin: props.allowedOrigin,\r\n billingAddressTooltip: props.billingAddressTooltip,\r\n partnerIdTooltip: props.partnerIdTooltip,\r\n minimumCartValueForPO: props.minimumCartValueForPO,\r\n }\r\n }\r\n}\r\n\r\n\r\nexport default mapTopLevelPropsToInitialStoreState\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { createStore, applyMiddleware } from 'redux'\r\nimport { Provider } from 'react-redux'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport { createLogger } from 'redux-logger'\r\nimport { composeWithDevTools } from 'redux-devtools-extension'\r\n\r\nimport { checkoutApp } from './GlobalStateContainer'\r\nimport CheckoutComponents from './Features/CheckoutComponents'\r\nimport { countriesStatesMap } from './Features/Address/propTypes'\r\nimport {\r\n arrayOfShapesWithIdOfString,\r\n arrayOfShapesWithIdOfAny \r\n} from '../util/propTypeShapes'\r\n\r\nimport mapTopLevelPropsToInitialStoreState from './GlobalStateContainer/mapTopLevelPropsToInitialStore'\r\n\r\n// props should contain all data we want to initialize the app with\r\nclass Checkout extends React.Component{\r\n constructor(props) {\r\n super(props);\r\n \r\n let initialStoreState = mapTopLevelPropsToInitialStoreState(props);\r\n\r\n // Create store\r\n this.store = createStore(\r\n checkoutApp,\r\n initialStoreState,\r\n // Initialize cr\r\n composeWithDevTools(\r\n applyMiddleware(\r\n // Setup library to help with async actions\r\n thunkMiddleware,\r\n // Setup console action logger middleware\r\n createLogger()\r\n )));\r\n\r\n }\r\n\r\n // Make Store available to components, and instantiate checkout components\r\n render() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nCheckout.propTypes = {\r\n initialData: PropTypes.shape({\r\n BillingAddresses: arrayOfShapesWithIdOfString.isRequired,\r\n ShippingAddresses: arrayOfShapesWithIdOfString.isRequired,\r\n CartItems: arrayOfShapesWithIdOfAny.isRequired,\r\n PaymentOptions: arrayOfShapesWithIdOfString.isRequired,\r\n AllowBillingEqualsShipping: PropTypes.bool.isRequired,\r\n CouponViewModel: PropTypes.shape({\r\n Code: PropTypes.string,\r\n Description: PropTypes.string,\r\n HasError: PropTypes.bool\r\n }),\r\n }\r\n ).isRequired,\r\n PhoneNumber: PropTypes.string,\r\n PhoneText: PropTypes.string,\r\n ReceiptUrl: PropTypes.string,\r\n CheckoutUrl: PropTypes.string,\r\n addAddressEndpoint: PropTypes.string,\r\n allowAddingBillingAddresses: PropTypes.bool,\r\n allowAddingShippingAddresses: PropTypes.bool,\r\n deleteAddressEndpoint: PropTypes.string,\r\n placeOrderEndpoint: PropTypes.string.isRequired,\r\n countries: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Name: PropTypes.string.isRequired,\r\n Code: PropTypes.string.isRequired\r\n })).isRequired,\r\n ShippingAddressType: PropTypes.number.isRequired,\r\n BillingAddressType: PropTypes.number.isRequired,\r\n countriesStatesMap: PropTypes.objectOf(countriesStatesMap).isRequired,\r\n BraintreeClientSettings: PropTypes.shape({\r\n BraintreePaypalEnabled : PropTypes.bool.isRequired,\r\n BraintreePaypalCreditEnabled: PropTypes.bool.isRequired,\r\n BraintreePaypalFlow: PropTypes.string.isRequired,\r\n BraintreePaymentOptionId: PropTypes.string.isRequired\r\n }).isRequired\r\n}\r\n\r\nexport default Checkout\r\n","import checkout from './CheckoutApp'\r\nexport default checkout","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst WithClickTracking = function(Component) {\r\n let withClickTracking = function({ onResultClick, HitId, ...rest }) {\r\n return (\r\n onResultClick && HitId \r\n ? onResultClick(HitId)} {...rest} />\r\n : \r\n );\r\n };\r\n withClickTracking.displayName = `WithClickTracking${Component.displayName}`;\r\n return withClickTracking;\r\n};\r\n\r\nWithClickTracking.propTypes = {\r\n Component: PropTypes.shape({\r\n onResultClick: PropTypes.func,\r\n HitId: PropTypes.string\r\n })\r\n};\r\n\r\nexport default WithClickTracking;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nconst Article = ({ Link, Title, Description, onClick, ImageUrl, CategoryButtonText, CategoryDisplayName }) => {\r\n return (\r\n \r\n
\r\n {ImageUrl &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n
\r\n
{CategoryDisplayName}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\n\r\nArticle.propType = {\r\n Link: PropTypes.string,\r\n Title: PropTypes.string,\r\n Description: PropTypes.string,\r\n ImageUrl: PropTypes.string,\r\n onClick: PropTypes.func\r\n};\r\n\r\nexport default Article;\r\n","import React from 'react';\r\nimport {Button} from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\nimport { translateResourceString } from '../../util/translationUtility';\r\n\r\nconst MoreButton = ({onClick}) => \r\n\r\n{translateResourceString(\"/SearchApp/Pagination/Article/LoadMore\")}\r\n;\r\n\r\nMoreButton.propType = {\r\n onClick: PropTypes.func.isRequired\r\n};\r\n\r\nexport default MoreButton;","class DropdownOption {\r\n constructor(displayName, value, title) {\r\n this.displayName = displayName;\r\n this.value = value;\r\n this.title = title;\r\n }\r\n\r\n title() {\r\n return this.title;\r\n }\r\n\r\n displayName() {\r\n return this.displayName;\r\n }\r\n\r\n value() {\r\n return this.value;\r\n }\r\n}\r\n\r\nexport default DropdownOption;","import React from 'react';\r\nimport { Collapse } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\nconst plus = ;\r\nconst minus = ;\r\nconst showMoreThreshold = 4;\r\n\r\nclass Facet extends React.Component {\r\n componentWillMount() {\r\n this.setState({ expanded: true });\r\n }\r\n\r\n render() {\r\n const {\r\n name,\r\n displayName,\r\n values,\r\n onAttributeChange,\r\n expanded,\r\n onToggleFacetExpanded,\r\n updateOnToggle,\r\n showMore,\r\n onToggleShowMore,\r\n disableToggle\r\n } = this.props;\r\n const symbol = disableToggle ? null\r\n : expanded ? minus : plus;\r\n const sizeToShow = showMore\r\n ? values.length\r\n : Math.min(showMoreThreshold, values.length);\r\n const showShowMore = !showMore && values.length > showMoreThreshold;\r\n const Count = ({ number }) => ({number})\r\n return (\r\n
\r\n
disableToggle ? false : onToggleFacetExpanded(name)}>\r\n \r\n {displayName}\r\n \r\n {symbol}\r\n
\r\n \r\n
\r\n\r\n {values.slice(0, sizeToShow).map((value, k) => {\r\n const key = `${name}-${k}`;\r\n const checkedCss = value.Checked ? 'bold' : 'normal';\r\n return (\r\n
\r\n {\r\n // value.Checked = !value.Checked;\r\n onAttributeChange(name, value.Name);\r\n }}\r\n />\r\n \r\n
\r\n )\r\n })\r\n }\r\n {showShowMore && onToggleShowMore(name)}>{translateResourceString(\"/SearchApp/Attributes/ShowMore\")}}\r\n
\r\n\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nFacet.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n displayName: PropTypes.string.isRequired,\r\n values: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Checked: PropTypes.bool,\r\n Count: PropTypes.number\r\n })).isRequired,\r\n onAttributeChange: PropTypes.func,\r\n expanded: PropTypes.bool,\r\n onToggleFacetExpanded: PropTypes.func,\r\n updateOnToggle: PropTypes.bool,\r\n showMore: PropTypes.bool,\r\n onToggleShowMore: PropTypes.func,\r\n};\r\n\r\nexport default Facet;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Facet from './Facet';\r\n\r\nconst Facets = ({\r\n attributes,\r\n onAttributeChange,\r\n onClearAttributes,\r\n expandedFacets,\r\n onToggleFacetExpanded,\r\n updateOnToggle,\r\n showMoreFacets,\r\n onToggleShowMoreFacet\r\n}) => \r\n \r\n {attributes && attributes.length > 0 &&\r\n
\r\n {\r\n attributes.map((attribute, i) => {\r\n const expanded = expandedFacets.indexOf(attribute.Name) > -1;\r\n const showMore = showMoreFacets.indexOf(attribute.Name) > -1;\r\n return (\r\n
\r\n \r\n
\r\n );\r\n })\r\n }\r\n
\r\n }\r\n
;\r\n\r\nFacets.propTypes = {\r\n attributes: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n DisplayName: PropTypes.string,\r\n Values: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Checked: PropTypes.bool,\r\n Count: PropTypes.number\r\n }))\r\n })),\r\n onAttributeChange: PropTypes.func,\r\n onClearAttributes: PropTypes.func,\r\n expandedFacets: PropTypes.arrayOf(PropTypes.string),\r\n onToggleFacetExpanded: PropTypes.func,\r\n updateOnToggle: PropTypes.bool,\r\n showMoreFacets: PropTypes.arrayOf(PropTypes.string),\r\n onToggleShowMoreFacet: PropTypes.func,\r\n};\r\n\r\nexport default Facets;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\r\nimport DropdownOption from './DropdownOption';\r\nimport { translateResourceString } from '../../util/translationUtility';\r\n\r\nlet sortOptions = [];\r\n\r\nclass SortByDropdown extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.toggle = this.toggle.bind(this);\r\n this.state = {\r\n dropdownOpen: false\r\n };\r\n }\r\n\r\n toggle() {\r\n this.setState(prevState => ({\r\n dropdownOpen: !prevState.dropdownOpen\r\n }));\r\n }\r\n\r\n render() {\r\n const { CurrentSortBy, onCurrentSortByChange, sortOptions } = this.props;\r\n\r\n // Need to go through array and find when it matches\r\n const found = sortOptions.find(option => {\r\n return option.value === CurrentSortBy;\r\n });\r\n\r\n const selectedSort = found ? found : sortOptions[0];\r\n const title = {translateResourceString(\"/SearchApp/SortBy\")} {selectedSort.displayName} ;\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n {sortOptions.map((option, i) => {\r\n if(option !== selectedSort){\r\n return (\r\n onCurrentSortByChange(option.value)}\r\n >\r\n {option.displayName}\r\n \r\n );\r\n }\r\n })\r\n\r\n }\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nSortByDropdown.propTypes = {\r\n CurrentSortBy: PropTypes.string,\r\n onCurrentSortByChange: PropTypes.func\r\n};\r\n\r\nexport default SortByDropdown;\r\n","import React from 'react';\r\nimport SortByDropdown from '../../components/SortByDropdown';\r\nimport PropTypes from 'prop-types';\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nclass PaginationContainer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const {\r\n attributes,\r\n paginationViewModel,\r\n onCurrentSortByChange,\r\n onAttributeChange,\r\n sortOptions,\r\n } = this.props;\r\n\r\n const lastItemNumber = paginationViewModel.CurrentItemsOnPage;\r\n const paginationText = translateResourceString(`/SearchApp/Pagination/Article/ItemCountFormatted`, lastItemNumber, paginationViewModel.ResultsTotal);\r\n\r\n const selectedAttributesSize = 3;\r\n\r\n const selectedAttributes = [];\r\n attributes.filter(attribute => attribute.Values.filter(x => x.Checked).map(checkedValue => {\r\n if (selectedAttributes.length < selectedAttributesSize) {\r\n selectedAttributes.push(\r\n {\r\n name: attribute.Name,\r\n displayName: attribute.DisplayName,\r\n value: checkedValue.Name\r\n })\r\n }\r\n }));\r\n\r\n const sortBy =\r\n
\r\n \r\n
\r\n\r\n return (\r\n
\r\n {selectedAttributes.length > 0\r\n ?\r\n \r\n
\r\n
\r\n
\r\n \r\n {sortBy}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n :\r\n
\r\n
\r\n
\r\n \r\n {sortBy}\r\n
\r\n
\r\n
\r\n }\r\n\r\n
\r\n );\r\n }\r\n};\r\n\r\nPaginationContainer.propTypes = {\r\n paginationViewModel: PropTypes.shape({\r\n ResultsTotal: PropTypes.number,\r\n CurrentItemsPerPage: PropTypes.number,\r\n CurrentPageIndex: PropTypes.number,\r\n CurrentSortBy: PropTypes.string,\r\n CurrentItemsOnPage: PropTypes.number\r\n }),\r\n onCurrentItemsPerPageChange: PropTypes.func,\r\n onCurrentSortByChange: PropTypes.func,\r\n onCurrentPageIndexChange: PropTypes.func,\r\n selectedCategory: PropTypes.shape({\r\n DisplayName: PropTypes.string,\r\n }),\r\n onSelectCategory: PropTypes.func\r\n};\r\n\r\nexport default PaginationContainer;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport WithClickTracking from '../../components/WithClickTracking';\r\nimport Article from './Article';\r\nimport MoreButton from '../../components/MoreButton';\r\nimport DropdownOption from '../../components/DropdownOption';\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\nimport Facets from '../Facets/Facets';\r\nimport PaginationContainer from \"../Pagination/PaginationContainer\";\r\n\r\nclass ArticleSearchResultsContainer extends React.Component {\r\n render() {\r\n const { articles,\r\n paginationViewModel,\r\n onCurrentItemsPerPageChange,\r\n //onCurrentPageIndexChange,\r\n onResultClick,\r\n searchString,\r\n onToggleFacetExpanded,\r\n onToggleShowMoreFacet,\r\n showMoreFacets,\r\n attributes,\r\n onAttributeChange,\r\n expandedArticleFacets,\r\n onCurrentSortByChange} = this.props;\r\n const perMoreAmount = 9;\r\n const nextRequest = Math.min(paginationViewModel.CurrentItemsOnPage + perMoreAmount, paginationViewModel.ResultsTotal);\r\n const showMore = paginationViewModel.ResultsTotal > paginationViewModel.CurrentItemsOnPage;\r\n let article_sort_options = [\r\n new DropdownOption(translateResourceString(\"/SearchApp/SortOptions/Recency/Display\"), 'Recency', translateResourceString(\"/SearchApp/SortOptions/Recency/FullDisplay\")),\r\n new DropdownOption(translateResourceString(\"/SearchApp/SortOptions/NameAZ/Display\"), 'NameAZ', translateResourceString(\"/SearchApp/SortOptions/NameAZ/FullDisplay\")),\r\n new DropdownOption(translateResourceString(\"/SearchApp/SortOptions/NameZA/Display\"), 'NameZA', translateResourceString(\"/SearchApp/SortOptions/NameZA/FullDisplay\")),\r\n ]\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {articles.map((article, i) => {\r\n return (\r\n \r\n \r\n );\r\n })\r\n }\r\n
\r\n
\r\n {showMore &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst ArticleWithClickTracking = WithClickTracking(Article);\r\n\r\nArticleSearchResultsContainer.propType = {\r\n articles: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Title: PropTypes.string,\r\n Link: PropTypes.string,\r\n Description: PropTypes.string,\r\n ImageUrl: PropTypes.string\r\n })\r\n ),\r\n attributes: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n DisplayName: PropTypes.string,\r\n Values: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Checked: PropTypes.bool,\r\n Count: PropTypes.number\r\n }))\r\n })),\r\n paginationViewModel: PropTypes.shape({\r\n CurrentPageIndex: PropTypes.number,\r\n CurrentItemsPerPage: PropTypes.number,\r\n ResultsTotal: PropTypes.number,\r\n CurrentItemsOnPage: PropTypes.number,\r\n CurrentSortBy: PropTypes.string\r\n }),\r\n onPerPageChange: PropTypes.func,\r\n onToggleShowMoreFacet: PropTypes.func,\r\n showMoreFacets: PropTypes.arrayOf(PropTypes.string),\r\n onToggleFacetExpanded: PropTypes.func,\r\n onPageChange: PropTypes.func\r\n};\r\n\r\nexport default ArticleSearchResultsContainer;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ArticleSearchResultsContainer from './ArticleSearchResultsContainer';\r\nimport {translateResourceString} from \"../../../util/translationUtility\";\r\n\r\nconst ArticleSearchResults = ({ articles,\r\n paginationViewModel,\r\n onCurrentItemsPerPageChange,\r\n onCurrentPageIndexChange,\r\n onResultClick,\r\n searchString,\r\n attributes,\r\n onAttributeChange,\r\n expandedArticleFacets,\r\n showMoreFacets,\r\n onToggleShowMoreFacet,\r\n onToggleFacetExpanded,\r\n onCurrentSortByChange }\r\n) => {\r\n return (\r\n
\r\n {articles.length > 0 &&\r\n \r\n }\r\n
\r\n );\r\n};\r\n\r\nArticleSearchResults.propType = {\r\n articles: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Title: PropTypes.string,\r\n Link: PropTypes.string,\r\n Description: PropTypes.string\r\n })\r\n ),\r\n attributes: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n DisplayName: PropTypes.string,\r\n Values: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Checked: PropTypes.bool,\r\n Count: PropTypes.number\r\n }))\r\n })),\r\n paginationViewModel: PropTypes.shape({\r\n CurrentPageIndex: PropTypes.number,\r\n CurrentItemsPerPage: PropTypes.number,\r\n ResultsTotal: PropTypes.number,\r\n CurrentItemsOnPage: PropTypes.number\r\n }),\r\n onCurrentItemsPerPageChange: PropTypes.func,\r\n onCurrentPageIndexChange: PropTypes.func,\r\n onAttributeChange: PropTypes.func,\r\n onResultClick: PropTypes.func,\r\n showMoreFacets: PropTypes.arrayOf(PropTypes.string),\r\n onToggleShowMoreFacet: PropTypes.func\r\n};\r\n\r\nexport default ArticleSearchResults;\r\n","import React from 'react';\r\nimport Dropdown from './Dropdown';\r\nimport DropdownOption from './DropdownOption';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst PRODUCTS_PER_PAGE_OPTIONS = [\r\n new DropdownOption(12,12),\r\n new DropdownOption(24,24),\r\n new DropdownOption(48,48),\r\n new DropdownOption(96,96)\r\n];\r\n\r\nconst PerPageDropdown = ({CurrentItemsPerPage, onCurrentItemsPerPageChange}) => {\r\n \r\n const found = PRODUCTS_PER_PAGE_OPTIONS.find(option => {\r\n return option.value === CurrentItemsPerPage;\r\n });\r\n\r\n const selectedPerPage = found ? found : PRODUCTS_PER_PAGE_OPTIONS[0];\r\n \r\n return (\r\n \r\n );\r\n};\r\n\r\nPerPageDropdown.propTypes = {\r\n CurrentItemsPerPage: PropTypes.number,\r\n onCurrentItemsPerPageChange: PropTypes.func\r\n};\r\n\r\nexport default PerPageDropdown;","import React from 'react';\r\nimport Pager from '../../components/Pager';\r\nimport SortByDropdown from '../../components/SortByDropdown';\r\nimport PerPageDropdown from '../../components/PerPageDropdown';\r\nimport PropTypes from 'prop-types';\r\nimport { Button } from 'reactstrap';\r\n\r\nclass PaginationContainer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const {\r\n paginationViewModel,\r\n onCurrentItemsPerPageChange,\r\n onCurrentSortByChange,\r\n onCurrentPageIndexChange,\r\n sortOptions\r\n } = this.props;\r\n const firstProductNumber = paginationViewModel.CurrentPageIndex * paginationViewModel.CurrentItemsPerPage + 1;\r\n const lastProductNumber = firstProductNumber + paginationViewModel.CurrentItemsOnPage - 1;\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n};\r\n\r\nPaginationContainer.propTypes = {\r\n paginationViewModel: PropTypes.shape({\r\n ResultsTotal: PropTypes.number,\r\n CurrentItemsPerPage: PropTypes.number,\r\n CurrentPageIndex: PropTypes.number,\r\n CurrentSortBy: PropTypes.string,\r\n CurrentItemsOnPage: PropTypes.number\r\n }),\r\n onCurrentItemsPerPageChange: PropTypes.func,\r\n onCurrentSortByChange: PropTypes.func,\r\n onCurrentPageIndexChange: PropTypes.func\r\n};\r\n\r\nexport default PaginationContainer;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nclass ProductTile extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const {\r\n name,\r\n url,\r\n priceViewModel,\r\n image,\r\n onClick,\r\n description,\r\n formats,\r\n languages\r\n } = this.props;\r\n\r\n const imageUrl = image?.Url;\r\n\r\n return (\r\n \r\n
\r\n {imageUrl &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n

{name}

\r\n \r\n \r\n
\r\n {formats &&\r\n
{translateResourceString(\"/SearchApp/ProductTile/Format\")} {formats}
\r\n }\r\n {languages &&\r\n
{translateResourceString(\"/SearchApp/ProductTile/Language\")} {languages}
\r\n }\r\n
\r\n
\r\n
\r\n
);\r\n }\r\n}\r\n\r\n\r\nProductTile.propTypes = {\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n priceViewModel: PropTypes.shape({\r\n RegularPrice: PropTypes.number,\r\n SalePrice: PropTypes.number,\r\n IsSalePrice: PropTypes.bool\r\n }),\r\n image: PropTypes.shape({\r\n Url: PropTypes.string,\r\n Alt: PropTypes.string\r\n }),\r\n description: PropTypes.string,\r\n formats: PropTypes.string,\r\n languages: PropTypes.string\r\n};\r\n\r\nexport default ProductTile;\r\n","import React from 'react';\r\nimport ProductTile from './ProductTile';\r\nimport PropTypes from 'prop-types';\r\nimport WithClickTracking from '../../components/WithClickTracking';\r\n\r\nconst ProductTileWithClickTracking = WithClickTracking(ProductTile);\r\n\r\nconst ProductTileContainer = ({ products, onResultClick }) =>\r\n
\r\n {products.map((product, i) => {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n })}\r\n
;\r\n\r\nProductTileContainer.propTypes = {\r\n products: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Url: PropTypes.string,\r\n Image: PropTypes.shape({\r\n Url: PropTypes.string,\r\n Alt: PropTypes.string\r\n }),\r\n Description: PropTypes.string,\r\n Formats: PropTypes.arrayOf(PropTypes.string),\r\n Languages: PropTypes.arrayOf(PropTypes.string)\r\n }))\r\n};\r\n\r\nexport default ProductTileContainer;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nclass MobileSelectedFacets extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n render() {\r\n const { attributes, onAttributeChange, onClearAttributes } = this.props;\r\n\r\n const selectedAttributeValueArrays = attributes.map(function (attribute) {\r\n return attribute.Values.filter(\r\n value => value.Checked).map(value => {\r\n return {\r\n attributeName: attribute.Name,\r\n attributeValueName: value.Name\r\n };\r\n });\r\n });\r\n\r\n const mergedAttributeValueArrays = [].concat.apply([], selectedAttributeValueArrays);\r\n const showMobileSelectedFacets = mergedAttributeValueArrays.length > 0;\r\n\r\n return (\r\n
\r\n {showMobileSelectedFacets &&\r\n
\r\n
{translateResourceString(\"/SearchApp/Pagination/FilterByLabel\")}
\r\n {\r\n \r\n mergedAttributeValueArrays.map((attribute, i) => {\r\n return (\r\n
\r\n
{attribute.attributeName}: {attribute.attributeValueName}
onAttributeChange(attribute.attributeName, attribute.attributeValueName)}>\r\n
\r\n );\r\n })\r\n }\r\n
\r\n
\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nMobileSelectedFacets.propTypes = {\r\n attributes: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n DisplayName: PropTypes.string,\r\n Values: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Checked: PropTypes.bool,\r\n Count: PropTypes.number\r\n }))\r\n })).isRequired,\r\n onAttributeChange: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default MobileSelectedFacets;","import React from 'react';\r\nimport Facets from '../Facets/Facets';\r\nimport PaginationContainer from './PaginationContainer';\r\nimport ProductTileContainer from './ProductTileContainer';\r\nimport PropTypes from 'prop-types';\r\nimport MoreButton from '../../components/MoreButton';\r\nimport MobileSelectedFacets from '../Facets/MobileSelectedFacets';\r\nimport DropdownOption from '../../components/DropdownOption';\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nconst ProductSearchResultsContainer = ({ attributes,\r\n onAttributeChange,\r\n onClearAttributes,\r\n paginationViewModel,\r\n onCurrentItemsPerPageChange,\r\n onCurrentSortByChange,\r\n products,\r\n recommendedProducts,\r\n onResultClick,\r\n onShowMobileFacetsChange,\r\n expandedFacets,\r\n onToggleFacetExpanded,\r\n categoryName,\r\n categoryImageUrl,\r\n categoryImageAltText,\r\n categoryDescription,\r\n showMoreFacets,\r\n onToggleShowMoreFacet,\r\n promotionalArea\r\n}) => {\r\n //const showClearAttributes = attributes.filter(\r\n // attribute => attribute.Values.filter(\r\n // value => value.Checked).length > 0).length > 0;\r\n const nextRequest = Math.min(paginationViewModel.CurrentItemsOnPage + paginationViewModel.PerMoreAmount, paginationViewModel.ResultsTotal);\r\n const showMore = paginationViewModel.ResultsTotal > paginationViewModel.CurrentItemsOnPage;\r\n var recommendationsHeading = \"Trending in Category\";\r\n const categoryDescriptionHtml = {\r\n __html: categoryDescription\r\n };\r\n const promotionalAreaHtml = {\r\n __html: promotionalArea\r\n };\r\n const firstProductNumber = paginationViewModel.CurrentPageIndex * paginationViewModel.CurrentItemsPerPage + 1;\r\n const lastProductNumber = firstProductNumber + paginationViewModel.CurrentItemsOnPage - 1;\r\n const productSortOptions = [\r\n new DropdownOption(translateResourceString(\"/SearchApp/SortOptions/Featured/Display\"), 'FeaturedProducts', translateResourceString(\"/SearchApp/SortOptions/Featured/FullDisplay\")),\r\n new DropdownOption(translateResourceString(\"/SearchApp/SortOptions/NameAZ/Display\"), 'NameAZ', translateResourceString(\"/SearchApp/SortOptions/NameAZ/FullDisplay\")),\r\n new DropdownOption(translateResourceString(\"/SearchApp/SortOptions/NameZA/Display\"), 'NameZA', translateResourceString(\"/SearchApp/SortOptions/NameZA/FullDisplay\"))\r\n ];\r\n return (\r\n
\r\n {categoryName && categoryName.length > 0 &&\r\n
\r\n
\r\n
\r\n

{categoryName}

\r\n
\r\n
\r\n
\r\n
\r\n }\r\n
\r\n
\r\n \r\n {promotionalArea &&
}\r\n
\r\n
\r\n {recommendedProducts && recommendedProducts.length > 0 &&\r\n
\r\n
\r\n
\r\n

{recommendationsHeading}

\r\n
\r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {showMore &&\r\n
\r\n
\r\n onCurrentItemsPerPageChange(nextRequest)}\r\n />\r\n
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nProductSearchResultsContainer.propType = {\r\n attributes: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n DisplayName: PropTypes.string,\r\n Values: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Checked: PropTypes.bool,\r\n Count: PropTypes.number\r\n }))\r\n })),\r\n onAttributeChange: PropTypes.func,\r\n onClearAttributes: PropTypes.func,\r\n paginationViewModel: PropTypes.shape({\r\n ResultsTotal: PropTypes.number,\r\n CurrentSortBy: PropTypes.string,\r\n CurrentItemsOnPage: PropTypes.number,\r\n PerMoreAmount: PropTypes.number\r\n }),\r\n onCurrentItemsPerPageChange: PropTypes.func,\r\n onCurrentSortByChange: PropTypes.func,\r\n products: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Url: PropTypes.string,\r\n Image: PropTypes.shape({\r\n Url: PropTypes.string,\r\n Alt: PropTypes.string\r\n }),\r\n Description: PropTypes.string,\r\n Formats: PropTypes.arrayOf(PropTypes.string),\r\n Languages: PropTypes.arrayOf(PropTypes.string)\r\n })),\r\n recommendedProducts: PropTypes.arrayOf(PropTypes.shape({\r\n RecommendationId: PropTypes.number,\r\n Name: PropTypes.string,\r\n Url: PropTypes.string,\r\n Image: PropTypes.shape({\r\n Url: PropTypes.string,\r\n Alt: PropTypes.string\r\n }),\r\n Description: PropTypes.string\r\n })),\r\n onShowMobileFacetsChange: PropTypes.func.isRequired,\r\n expandedFacets: PropTypes.arrayOf(PropTypes.string),\r\n onToggleFacetExpanded: PropTypes.func,\r\n showMoreFacets: PropTypes.arrayOf(PropTypes.string),\r\n onToggleShowMoreFacet: PropTypes.func,\r\n promotionalArea: PropTypes.string\r\n};\r\n\r\nexport default ProductSearchResultsContainer;\r\n","import React from 'react';\r\n\r\nconst ProductSearchResultsNonFound = () =>\r\n
\r\n No Products Found\r\n
;\r\n\r\nProductSearchResultsNonFound.propType = {};\r\n\r\nexport default ProductSearchResultsNonFound;\r\n\r\n","import React from 'react';\r\nimport ProductSearchResultsContainer from './ProductSearchResultsContainer';\r\nimport ProductSearchResultsNonFound from './ProductSearchResultsNonFound';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ProductSearchResults = ({\r\n attributes, \r\n onAttributeChange, \r\n onClearAttributes, \r\n paginationViewModel,\r\n onCurrentItemsPerPageChange, \r\n onCurrentSortByChange, \r\n onCurrentPageIndexChange, \r\n products,\r\n recommendedProducts,\r\n onResultClick,\r\n onShowMobileFacetsChange,\r\n expandedFacets,\r\n onToggleFacetExpanded,\r\n categoryName,\r\n categoryImageUrl,\r\n categoryImageAltText,\r\n categoryDescription,\r\n showMoreFacets,\r\n onToggleShowMoreFacet,\r\n promotionalArea\r\n}) => {\r\n return (\r\n
\r\n {products.length > 0 ? \r\n \r\n : \r\n }\r\n
\r\n );\r\n};\r\n\r\nProductSearchResults.propType = {\r\n attributes: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n DisplayName: PropTypes.string,\r\n Values: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Checked: PropTypes.bool,\r\n Count: PropTypes.number\r\n }))\r\n })),\r\n onAttributeChange: PropTypes.func, \r\n onClearAttributes: PropTypes.func, \r\n paginationViewModel: PropTypes.shape({\r\n ResultsTotal: PropTypes.number,\r\n CurrentItemsPerPage: PropTypes.number,\r\n CurrentPageIndex: PropTypes.number,\r\n CurrentSortBy: PropTypes.string,\r\n CurrentItemsOnPage: PropTypes.number,\r\n PerMoreAmount: PropTypes.number\r\n }),\r\n onCurrentItemsPerPageChange: PropTypes.func, \r\n onCurrentSortByChange: PropTypes.func, \r\n onCurrentPageIndexChange: PropTypes.func, \r\n products: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Url: PropTypes.string,\r\n Image: PropTypes.shape({\r\n Url: PropTypes.string,\r\n Alt: PropTypes.string\r\n }),\r\n Description: PropTypes.string,\r\n Formats: PropTypes.arrayOf(PropTypes.string),\r\n Languages: PropTypes.arrayOf(PropTypes.string)\r\n })),\r\n recommendedProducts: PropTypes.arrayOf(PropTypes.shape({\r\n RecommendationId: PropTypes.number,\r\n Name: PropTypes.string,\r\n Url: PropTypes.string,\r\n Image: PropTypes.shape({\r\n Url: PropTypes.string,\r\n Alt: PropTypes.string\r\n }),\r\n Description: PropTypes.string\r\n })),\r\n expandedFacets: PropTypes.arrayOf(PropTypes.string),\r\n onToggleFacetExpanded: PropTypes.func,\r\n showMoreFacets: PropTypes.arrayOf(PropTypes.string),\r\n onToggleShowMoreFacet: PropTypes.func,\r\n promotionalArea: PropTypes.string\r\n};\r\n\r\nexport default ProductSearchResults;","import React from 'react';\r\nconst Loading = ({children}) =>\r\n
\r\n {/*
\r\n \r\n
*/}\r\n {children}\r\n
;\r\n\r\nexport default Loading;","import React from 'react';\r\nimport Loading from './Loading';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst WithLoading = function(Component) {\r\n let withLoading = function({ isLoading, ...rest }) {\r\n return (\r\n isLoading\r\n ? \r\n \r\n \r\n : \r\n );\r\n };\r\n withLoading.displayName = `WithLoading${Component.displayName}`;\r\n return withLoading;\r\n};\r\n\r\nWithLoading.propTypes = {\r\n Component: PropTypes.shape({\r\n isLoading: PropTypes.bool\r\n })\r\n};\r\n\r\nexport default WithLoading;","import React from 'react';\r\nimport ArticleSearchResults from '../Articles/ArticleSearchResults';\r\nimport ProductSearchResults from '../Products/ProductSearchResults';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n ARTICLES,\r\n PRODUCTS\r\n} from '../../constants/index.js';\r\nimport WithLoading from '../../components/WithLoading';\r\nimport { Nav, NavItem, NavLink, TabContent, TabPane, Card, CardHeader, CardBody } from 'reactstrap';\r\nimport { translateResourceString } from '../../../util/translationUtility.js';\r\n\r\nconst CombinedSearchResults = ({ articles,\r\n articlePaginationViewModel,\r\n onArticleCurrentItemsPerPageChange,\r\n onArticleCurrentPageIndexChange,\r\n onResultClick,\r\n attributes,\r\n productAttributes,\r\n onAttributeChange,\r\n onProductAttributeChange,\r\n onClearAttributes,\r\n onProductCurrentItemsPerPageChange,\r\n onProductCurrentSortByChange,\r\n onArticleCurrentSortByChange,\r\n onProductCurrentPageIndexChange,\r\n productPaginationViewModel,\r\n products,\r\n view,\r\n onChangeView,\r\n isLoading,\r\n onShowMobileFacetsChange,\r\n expandedArticleFacets,\r\n expandedProductFacets,\r\n onToggleFacetExpanded,\r\n onToggleProductFacetExpanded,\r\n showMoreFacets,\r\n onToggleShowMoreFacet,\r\n disableProducts\r\n}) => {\r\n const showArticles = view === ARTICLES || disableProducts;\r\n const showProducts = !showArticles;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n\r\n \r\n onChangeView(ARTICLES)}\r\n href=\"#\"\r\n >\r\n {translateResourceString(\"/SearchApp/Content\")}\r\n \r\n \r\n {!disableProducts &&\r\n \r\n onChangeView(PRODUCTS)}\r\n href=\"#\"\r\n >\r\n {translateResourceString(\"/SearchApp/Products\")}\r\n \r\n \r\n }\r\n
\r\n\r\n \r\n \r\n \r\n \r\n {!disableProducts &&\r\n \r\n \r\n \r\n }\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst ArticleSearchResultsWithLoading = WithLoading(ArticleSearchResults);\r\nconst ProductSearchResultsWithLoading = WithLoading(ProductSearchResults);\r\n\r\nCombinedSearchResults.propType = {\r\n articles: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Title: PropTypes.string,\r\n Link: PropTypes.string,\r\n Description: PropTypes.string\r\n })\r\n ),\r\n articlePaginationViewModel: PropTypes.shape({\r\n CurrentPageIndex: PropTypes.number,\r\n CurrentItemsPerPage: PropTypes.number,\r\n ResultsTotal: PropTypes.number,\r\n CurrentItemsOnPage: PropTypes.number\r\n }),\r\n onArticleCurrentItemsPerPageChange: PropTypes.func,\r\n onArticleCurrentPageIndexChange: PropTypes.func,\r\n onResultClick: PropTypes.func,\r\n attributes: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n DisplayName: PropTypes.string,\r\n Values: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Checked: PropTypes.bool,\r\n Count: PropTypes.number\r\n }))\r\n })),\r\n productAttributes: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n DisplayName: PropTypes.string,\r\n Values: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Checked: PropTypes.bool,\r\n Count: PropTypes.number\r\n }))\r\n })),\r\n onAttributeChange: PropTypes.func,\r\n onClearAttributes: PropTypes.func,\r\n onProductCurrentItemsPerPageChange: PropTypes.func,\r\n onProductCurrentSortByChange: PropTypes.func,\r\n onProductCurrentPageIndexChange: PropTypes.func,\r\n productPaginationViewModel: PropTypes.shape({\r\n ResultsTotal: PropTypes.number,\r\n CurrentItemsPerPage: PropTypes.number,\r\n CurrentPageIndex: PropTypes.number,\r\n CurrentSortBy: PropTypes.string,\r\n CurrentItemsOnPage: PropTypes.number\r\n }),\r\n products: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Url: PropTypes.string,\r\n Image: PropTypes.shape({\r\n Url: PropTypes.string,\r\n Alt: PropTypes.string\r\n }),\r\n Description: PropTypes.string,\r\n Formats: PropTypes.string,\r\n Languages: PropTypes.string\r\n })),\r\n view: PropTypes.string,\r\n onChangeView: PropTypes.func,\r\n onShowMobileFacetsChange: PropTypes.func.isRequired,\r\n expandedArticleFacets: PropTypes.arrayOf(PropTypes.string),\r\n expandedProductFacets: PropTypes.arrayOf(PropTypes.string),\r\n onToggleFacetExpanded: PropTypes.func,\r\n onToggleProductFacetExpanded: PropTypes.func,\r\n showMoreFacets: PropTypes.arrayOf(PropTypes.string),\r\n onToggleShowMoreFacet: PropTypes.func,\r\n disableProducts: PropTypes.bool\r\n};\r\n\r\nexport default CombinedSearchResults;\r\n","export const ARTICLES = 'articles';\r\nexport const PRODUCTS = 'products';\r\n","export function buildAttributesQueryString(attributes) {\r\n let attributeString = attributes.map(x => `${x.name};${x.value}`).reduce((prev, current) => prev + '|' + current, '');\r\n return attributeString;\r\n}\r\n\r\nexport function buildQueryString(searchString, attributes, productAttributes, articlePaginationViewModel, productPaginationViewModel, view) {\r\n let queryParams = {};\r\n if (searchString)\r\n queryParams.searchString = searchString;\r\n const productAttributesQueryString = productAttributes && productAttributes.length > 0 ? buildAttributesQueryString(productAttributes) : null;\r\n const articleAttributesQueryString = attributes && attributes.length > 0 ? buildAttributesQueryString(attributes) : null; \r\n if (productAttributesQueryString && productAttributesQueryString.length > 0)\r\n queryParams.c = productAttributesQueryString;\r\n if (articleAttributesQueryString && articleAttributesQueryString.length > 0)\r\n queryParams.ac = articleAttributesQueryString; \r\n if (articlePaginationViewModel && articlePaginationViewModel.CurrentPageIndex)\r\n queryParams.articlePageIndex = articlePaginationViewModel.CurrentPageIndex;\r\n if (articlePaginationViewModel && articlePaginationViewModel.CurrentItemsPerPage)\r\n queryParams.articlePageSize = articlePaginationViewModel.CurrentItemsPerPage;\r\n if (articlePaginationViewModel && articlePaginationViewModel.CurrentSortBy)\r\n queryParams.sa = articlePaginationViewModel.CurrentSortBy;\r\n if (productPaginationViewModel && productPaginationViewModel.CurrentSortBy)\r\n queryParams.sp = productPaginationViewModel.CurrentSortBy;\r\n if (articlePaginationViewModel && articlePaginationViewModel.CurrentItemsPerPage)\r\n queryParams.aq = productPaginationViewModel.CurrentItemsPerPage;\r\n if (productPaginationViewModel && productPaginationViewModel.CurrentItemsPerPage)\r\n queryParams.pq = productPaginationViewModel.CurrentItemsPerPage;\r\n if (view)\r\n queryParams.view = view;\r\n return serialize(queryParams);\r\n}\r\n\r\nexport function serialize(obj) {\r\n return '?' + Object.keys(obj).reduce(function (a, k) { a.push(k + '=' + encodeURIComponent(obj[k])); return a; }, []).join('&');\r\n}\r\n","export function buildSelectedAttributesFromModel(attributes) {\r\n const selectedAttributes = [];\r\n\r\n attributes.forEach(attribute => {\r\n if (attribute.Values) {\r\n const attributeValues = attribute.Values.filter(\r\n value => value.Checked && value.Checked === true);\r\n\r\n attributeValues.forEach(attributeValue => {\r\n selectedAttributes.push({\r\n name: attribute.Name,\r\n value: attributeValue.Name\r\n });\r\n });\r\n }\r\n });\r\n\r\n return selectedAttributes;\r\n}\r\n\r\nexport function buildFacetNamesFromModel(attributes) {\r\n if (!attributes) {\r\n return [];\r\n }\r\n\r\n return attributes.filter(attribute => attribute.Name)\r\n .map(attribute => attribute.Name);\r\n}\r\n\r\nexport function buildStateFromModel({\r\n SearchString,\r\n FindClickTracking,\r\n Articles,\r\n View,\r\n Products\r\n}) {\r\n const state = {\r\n searchString: SearchString ? SearchString : SearchString,\r\n selectedAttributes: Articles && Articles.CategoryFacets && Articles.CategoryFacets && Articles.CategoryFacets.Attributes ? buildSelectedAttributesFromModel(Articles.CategoryFacets.Attributes) : [],\r\n attributes: Articles && Articles.CategoryFacets && Articles.CategoryFacets && Articles.CategoryFacets.Attributes ? Articles.CategoryFacets.Attributes : [],\r\n productAttributes: Products && Products.ProductFilters && Products.ProductFilters.Attributes ? Products.ProductFilters.Attributes : [],\r\n selectedProductAttributes: Products && Products.ProductFilters && Products.ProductFilters.Attributes ? buildSelectedAttributesFromModel(Products.ProductFilters.Attributes) : [],\r\n products: Products && Products.ProductItems ? Products.ProductItems : [],\r\n productPaginationViewModel: Products && Products.PaginationViewModel ? Products.PaginationViewModel : null,\r\n articlePaginationViewModel: Articles && Articles.PaginationViewModel ? Articles.PaginationViewModel : null,\r\n isLoading: false,\r\n view: View,\r\n articles: Articles && Articles.ArticleItemViewModels ? Articles.ArticleItemViewModels : [],\r\n findClickTrackingViewModel: FindClickTracking,\r\n showMobileFacets: false,\r\n expandedFacets: Articles && Articles.CategoryFacets && Articles.CategoryFacets.Attributes \r\n ? buildFacetNamesFromModel(Articles.CategoryFacets.Attributes) : [],\r\n expandedProductFacets: Products && Products.ProductFilters && Products.ProductFilters.Attributes \r\n ? buildFacetNamesFromModel(Products.ProductFilters.Attributes) : [],\r\n showMoreFacets: []\r\n };\r\n\r\n return state;\r\n}\r\n\r\nfunction getRecommendedProducts(recommendations) {\r\n return recommendations.slice(0, 3).map(({ RecommendationId, TileViewModel }) => {\r\n return {\r\n RecommendationId,\r\n Name: TileViewModel.Name,\r\n Url: TileViewModel.Url,\r\n Image: TileViewModel.Image,\r\n Description: TileViewModel.Description\r\n };\r\n });\r\n}\r\n","import React from 'react';\r\n\r\nconst ArticleSearchResultsNonFound = () =>\r\n
\r\n No Articles Found\r\n
;\r\n\r\nArticleSearchResultsNonFound.propType = {};\r\n\r\nexport default ArticleSearchResultsNonFound;","const windowZaius = \"zaius\" in window ? window.zaius : null;\r\n\r\nconst zaiusUtility = {\r\n event(event_type, args_object) {\r\n if (!windowZaius) {\r\n return;\r\n }\r\n windowZaius.event(event_type, args_object);\r\n }\r\n}\r\n\r\nexport default zaiusUtility;\r\n","import React from 'react';\r\nimport CombinedSearchResults from './Features/Combined/CombinedSearchResults';\r\nimport createHistory from 'history/createBrowserHistory';\r\nimport fetch from 'cross-fetch';\r\nimport {\r\n ARTICLES,\r\n PRODUCTS\r\n} from './constants/index.js';\r\nimport {\r\n buildAttributesQueryString,\r\n buildQueryString,\r\n serialize\r\n} from './Infrastructure/urlBuilder.js';\r\nimport {\r\n buildStateFromModel,\r\n buildSelectedAttributesFromModel,\r\n buildFacetNamesFromModel\r\n} from './Infrastructure/modelBuilder.js';\r\nimport { trackClick } from './Infrastructure/find.js';\r\nimport ProductSearchResults from './Features/Products/ProductSearchResults';\r\nimport WithLoading from './components/WithLoading';\r\nimport { addResourceStrings, translateResourceString } from '../util/translationUtility'\r\nimport ArticleSearchResults from './Features/Articles/ArticleSearchResults';\r\nimport ArticleSearchResultsNonFound from \"./Features/Articles/ArticleSearchResultsNonFound\";\r\nimport zaiusUtility from '../util/zaiusUtility';\r\n\r\nclass SearchApp extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = buildStateFromModel(props);\r\n\r\n this.onProductAttributeChange = this.onProductAttributeChange.bind(this);\r\n this.onClearAttributes = this.onClearAttributes.bind(this);\r\n this.onClearProductAttributes = this.onClearProductAttributes.bind(this);\r\n this.onArticleAttributeChange = this.onArticleAttributeChange.bind(this);\r\n this.onArticleCurrentItemsPerPageChange = this.onArticleCurrentItemsPerPageChange.bind(this);\r\n this.onArticleCurrentPageIndexChange = this.onArticleCurrentPageIndexChange.bind(this);\r\n this.onProductCurrentItemsPerPageChange = this.onProductCurrentItemsPerPageChange.bind(this);\r\n this.onProductCurrentSortByChange = this.onProductCurrentSortByChange.bind(this);\r\n this.onChangeView = this.onChangeView.bind(this);\r\n this.onArticleCurrentSortByChange = this.onArticleCurrentSortByChange.bind(this);\r\n this.onResultClick = this.onResultClick.bind(this);\r\n this.onShowMobileFacetsChange = this.onShowMobileFacetsChange.bind(this);\r\n this.onShowMobileFacetsToggle = this.onShowMobileFacetsToggle.bind(this);\r\n this.onToggleFacetExpanded = this.onToggleFacetExpanded.bind(this);\r\n this.onToggleProductFacetExpanded = this.onToggleProductFacetExpanded.bind(this);\r\n this.hasSearchString = this.hasSearchString.bind(this);\r\n this.isCategory = this.isCategory.bind(this);\r\n this.apiEndpoint = props.ApiEndpoint;\r\n this.clickTrackingApiEndpoint = props.ClickTrackingApiEndpoint;\r\n this.trackId = props.TrackId;\r\n this.twoLetterLanguageCode = props.TwoLetterLanguageCode;\r\n this.siteDefinitionId = props.SiteDefinitionId;\r\n this.onToggleShowMoreFacet = this.onToggleShowMoreFacet.bind(this);\r\n this.disableProducts = props.Products && props.Products.ProductItems && props.Products.ProductItems.length === 0;\r\n\r\n // Category - not in state\r\n this.categoryName = props.Name;\r\n this.contentLinkId = props.ContentLinkId;\r\n this.categoryImageUrl = props.ImageUrl;\r\n this.categoryImageAltText = props.ImageAltText;\r\n this.categoryDescription = props.Description;\r\n\r\n addResourceStrings(props.LocalizationItems);\r\n\r\n }\r\n\r\n componentDidMount() {\r\n require('./SearchApp.css');\r\n this.history = createHistory();\r\n this.history.listen((location, action) => {\r\n if (location.state && location.state.view) {\r\n this.setState({ view: location.state.view });\r\n }\r\n this.fetchProductsUsingUrl(location.search);\r\n });\r\n zaiusUtility.event(\"navigation\", {\r\n action: \"search\",\r\n search_term: this.state.searchString\r\n });\r\n }\r\n\r\n updateState(searchResults) {\r\n if(searchResults.Products){\r\n this.setState({\r\n isLoading: false,\r\n productAttributes: searchResults.Products && searchResults.Products.ProductFilters && searchResults.Products.ProductFilters.Attributes ? searchResults.Products.ProductFilters.Attributes : [],\r\n products: searchResults.Products.ProductItems ? searchResults.Products.ProductItems : [],\r\n productPaginationViewModel: searchResults.Products && searchResults.Products.PaginationViewModel ? searchResults.Products.PaginationViewModel : null,\r\n selectedProductAttributes: searchResults.Products && searchResults.Products.ProductFilters && searchResults.Products.ProductFilters.Attributes ? buildSelectedAttributesFromModel(searchResults.Products.ProductFilters.Attributes) : [],\r\n });\r\n }\r\n if(searchResults.Articles){\r\n this.setState({\r\n attributes: searchResults.Articles.CategoryFacets && searchResults.Articles.CategoryFacets.Attributes ? searchResults.Articles.CategoryFacets.Attributes : [],\r\n articlePaginationViewModel: searchResults.Articles && searchResults.Articles.PaginationViewModel ? searchResults.Articles.PaginationViewModel : null,\r\n selectedAttributes: searchResults.Articles.CategoryFacets && searchResults.Articles.CategoryFacets && searchResults.Articles.CategoryFacets.Attributes ? buildSelectedAttributesFromModel(searchResults.Articles.CategoryFacets.Attributes) : [],\r\n isLoading: false,\r\n articles: searchResults.Articles && searchResults.Articles.ArticleItemViewModels ? searchResults.Articles.ArticleItemViewModels : [],\r\n });\r\n }\r\n\r\n }\r\n\r\n updateUrl({ searchString, selectedAttributes, selectedProductAttributes, articlePaginationViewModel, view, productPaginationViewModel }) {\r\n const queryString = buildQueryString(searchString, selectedAttributes, selectedProductAttributes, articlePaginationViewModel, productPaginationViewModel, view );\r\n // Going to let history listener take care of it\r\n this.history.push({\r\n search: queryString,\r\n state: {\r\n view: view\r\n }\r\n });\r\n }\r\n\r\n fetchProductsUsingUrl(queryString) {\r\n if(this.contentLinkId)\r\n {\r\n if(queryString && queryString.indexOf(\"?\") > -1)\r\n {\r\n queryString = `${queryString}&contentLinkId=${this.contentLinkId}`;\r\n }\r\n else\r\n {\r\n queryString = `?contentLinkId=${this.contentLinkId}`;\r\n }\r\n }\r\n this.setState({ isLoading: true });\r\n const url = `${this.apiEndpoint}${queryString}`;\r\n fetch(url)\r\n .then(response => response.json())\r\n .then(result => this.updateState(result));\r\n }\r\n\r\n onProductAttributeChange(name, value) {\r\n let found = false;\r\n let selectedAttributes = this.state.selectedProductAttributes;\r\n selectedAttributes.forEach((selectedAttribute, i) => {\r\n if (selectedAttribute.name === name && selectedAttribute.value === value) {\r\n found = true;\r\n\r\n // Remove it\r\n selectedAttributes.splice(i, 1);\r\n }\r\n });\r\n\r\n if (!found) {\r\n // Add it\r\n selectedAttributes.push({\r\n name: name,\r\n value: value\r\n });\r\n }\r\n\r\n const changes = {\r\n ...this.state,\r\n selectedProductAttributes: selectedAttributes\r\n };\r\n\r\n const newOptions = { ...changes };\r\n this.updateUrl(newOptions);\r\n }\r\n\r\n onProductCurrentSortByChange(requestedSortBy) {\r\n let productPaginationViewModel = this.state.productPaginationViewModel;\r\n productPaginationViewModel.CurrentSortBy = requestedSortBy;\r\n const newOptions = { ...this.state, productPaginationViewModel };\r\n this.updateUrl(newOptions);\r\n }\r\n onArticleAttributeChange(name, value) {\r\n let found = false;\r\n const selectedAttributes = this.state.selectedAttributes;\r\n selectedAttributes.forEach((selectedAttribute, i) => {\r\n if (selectedAttribute.name === name && selectedAttribute.value === value) {\r\n found = true;\r\n\r\n // Remove it\r\n selectedAttributes.splice(i, 1);\r\n }\r\n });\r\n\r\n if (!found) {\r\n // Add it\r\n selectedAttributes.push({\r\n name: name,\r\n value: value\r\n });\r\n }\r\n\r\n const newOptions = {\r\n ...this.state,\r\n selectedAttributes: selectedAttributes\r\n };\r\n\r\n this.updateUrl(newOptions);\r\n zaiusUtility.event(\"navigation\", {\r\n action: \"filter\"\r\n });\r\n }\r\n onArticleCurrentSortByChange(requestedSortBy) {\r\n const articlePaginationViewModel = this.state.articlePaginationViewModel;\r\n articlePaginationViewModel.CurrentSortBy = requestedSortBy;\r\n this.updateUrl({\r\n ...this.state,\r\n articlePaginationViewModel\r\n });\r\n zaiusUtility.event(\"navigation\", {\r\n action: \"sort\"\r\n });\r\n }\r\n\r\n onClearAttributes() {\r\n const changes = { selectedAttributes: [] };\r\n const newOptions = { ...this.state, ...changes };\r\n this.updateUrl(newOptions);\r\n }\r\n\r\n onClearProductAttributes() {\r\n const changes = { selectedProductAttributes: [] };\r\n const newOptions = { ...this.state, ...changes };\r\n this.updateUrl(newOptions);\r\n }\r\n\r\n onProductCurrentItemsPerPageChange(requestedItemsPerPage) {\r\n // Need to possibly update the page request too\r\n const { productPaginationViewModel } = this.state;\r\n const firstProductNumberOnNewPage = productPaginationViewModel.CurrentPageIndex * requestedItemsPerPage + 1;\r\n const requestedPageIndex = firstProductNumberOnNewPage > productPaginationViewModel.ResultsTotal\r\n ? Math.floor(productPaginationViewModel.ResultsTotal / requestedItemsPerPage)\r\n : productPaginationViewModel.CurrentPageIndex;\r\n productPaginationViewModel.CurrentPageIndex = requestedPageIndex;\r\n productPaginationViewModel.CurrentItemsPerPage = requestedItemsPerPage;\r\n const newOptions = { ...this.state, productPaginationViewModel };\r\n this.updateUrl(newOptions);\r\n }\r\n\r\n onProductCurrentPageIndexChange(requestedPageIndex) {\r\n const { productPaginationViewModel } = this.state;\r\n productPaginationViewModel.CurrentPageIndex = requestedPageIndex;\r\n const newOptions = { ...this.state, productPaginationViewModel };\r\n this.updateUrl(newOptions);\r\n }\r\n\r\n onArticleCurrentItemsPerPageChange(requestedItemsPerPage) {\r\n // Need to possibly update the page request too\r\n const { articlePaginationViewModel } = this.state;\r\n const firstArticleNumberOnNewPage = articlePaginationViewModel.CurrentPageIndex * requestedItemsPerPage + 1;\r\n const requestedPageIndex = firstArticleNumberOnNewPage > articlePaginationViewModel.ResultsTotal\r\n ? Math.floor(articlePaginationViewModel.ResultsTotal / requestedItemsPerPage)\r\n : articlePaginationViewModel.CurrentPageIndex;\r\n articlePaginationViewModel.CurrentPageIndex = requestedPageIndex;\r\n articlePaginationViewModel.CurrentItemsPerPage = requestedItemsPerPage;\r\n const newOptions = { ...this.state, articlePaginationViewModel };\r\n this.updateUrl(newOptions);\r\n }\r\n\r\n onArticleCurrentPageIndexChange(requestedPageIndex) {\r\n const { articlePaginationViewModel } = this.state;\r\n articlePaginationViewModel.CurrentPageIndex = requestedPageIndex;\r\n const newOptions = { ...this.state, articlePaginationViewModel };\r\n this.updateUrl(newOptions);\r\n }\r\n\r\n /**\r\n * Updates current view (Products vs Articles)\r\n * @param {string} view Current View Name.\r\n * @returns {void}\r\n */\r\n onChangeView(view) {\r\n const changes = { view: view };\r\n const newOptions = { ...this.state, ...changes };\r\n this.updateUrl(newOptions);\r\n }\r\n\r\n /**\r\n * Tracking for Find\r\n * @param {string} hitId HitId for Find result.\r\n * @returns {void}\r\n */\r\n onResultClick(hitId) {\r\n // Call tracking api\r\n if (typeof this.state.findClickTrackingViewModel !== \"undefined\") {\r\n const { TrackId, TwoLetterLanguageCode, SiteDefinitionId, ClickTrackingApiEndpoint, SearchTerm } = this.state.findClickTrackingViewModel;\r\n trackClick(ClickTrackingApiEndpoint, hitId, TrackId, TwoLetterLanguageCode, SiteDefinitionId, SearchTerm);\r\n }\r\n }\r\n\r\n onShowMobileFacetsChange(showMobileFacets) {\r\n this.setState({ showMobileFacets });\r\n }\r\n\r\n onShowMobileFacetsToggle() {\r\n const { showMobileFacets } = this.state;\r\n this.setState({ showMobileFacets: !showMobileFacets });\r\n }\r\n\r\n onToggleFacetExpanded(facetName) {\r\n const { expandedFacets } = this.state;\r\n const index = expandedFacets.indexOf(facetName);\r\n if (index > -1) {\r\n expandedFacets.splice(index, 1);\r\n } else {\r\n expandedFacets.push(facetName);\r\n }\r\n this.setState({ expandedFacets });\r\n }\r\n\r\n onToggleProductFacetExpanded(facetName) {\r\n const { expandedProductFacets } = this.state;\r\n const index = expandedProductFacets.indexOf(facetName);\r\n if (index > -1) {\r\n expandedProductFacets.splice(index, 1);\r\n } else {\r\n expandedProductFacets.push(facetName);\r\n }\r\n this.setState({ expandedProductFacets });\r\n }\r\n\r\n onToggleShowMoreFacet(facetName) {\r\n const { showMoreFacets } = this.state;\r\n const index = showMoreFacets.indexOf(facetName);\r\n if (index > -1) {\r\n showMoreFacets.splice(index, 1);\r\n } else {\r\n showMoreFacets.push(facetName);\r\n }\r\n this.setState({ showMoreFacets });\r\n }\r\n\r\n hasSearchString() {\r\n const { searchString } = this.state;\r\n return searchString && searchString.length > 0;\r\n }\r\n\r\n isCategory() {\r\n return this.categoryName && this.categoryName.length > 0;\r\n }\r\n\r\n render() {\r\n const {\r\n searchString,\r\n attributes,\r\n productAttributes,\r\n isLoading,\r\n articles,\r\n articlePaginationViewModel,\r\n products,\r\n productPaginationViewModel,\r\n suggestions,\r\n showMobileFacets,\r\n expandedFacets,\r\n expandedProductFacets,\r\n showMoreFacets,\r\n categories,\r\n selectedCategory,\r\n openCategories,\r\n view\r\n } = this.state;\r\n\r\n return (\r\n
\r\n {/*
\r\n {showMobileFacets &&\r\n this.onShowMobileFacetsChange(false)}\r\n />\r\n }\r\n
*/}\r\n
\r\n {(!articles || articles.length <= 0) && (!products && products.length <= 0) && this.hasSearchString() &&\r\n
\r\n

\r\n {translateResourceString(\"/SearchApp/Pagination/Article/NoResultsLabel\", searchString)}\r\n

\r\n
\r\n }\r\n {suggestions && suggestions.length > 0 &&\r\n
\r\n
\r\n
\r\n

\r\n Did you mean {suggestions.map((suggestion, i) => {\r\n return (\r\n \r\n {suggestion.Text}\r\n {i + 1 < suggestions.length ? \", \" : \"\"}\r\n \r\n );\r\n })}\r\n

\r\n
\r\n
\r\n
\r\n }\r\n {this.isCategory() ?\r\n \r\n : (articles && articles.length > 0 || products && products.length > 0) ?\r\n \r\n :\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst ProductSearchResultsWithLoading = WithLoading(ProductSearchResults);\r\nconst ArticleSearchResultsWithLoading = WithLoading(ArticleSearchResults);\r\n\r\nexport default SearchApp;\r\n","import fetch from 'cross-fetch';\r\nimport {serialize} from './urlBuilder.js';\r\n\r\n/**\r\n * \r\n * @param {string} clickTrackingApiEndpoint Url for API Call.\r\n * @param {string} hitId HitId for Find Result.\r\n * @param {string} trackId TrackId for Find Search.\r\n * @param {string} twoLetterLanguageCode Two letter language code IE 'en' for Find search.\r\n * @param {string} siteDefinitionId GUID for site where search took place.\r\n * @param {string} searchTerm Term used in search.\r\n * @returns {void}\r\n */\r\nexport function trackClick(clickTrackingApiEndpoint, hitId, trackId, twoLetterLanguageCode, siteDefinitionId, searchTerm) {\r\n const queryParameters = {\r\n trackId: trackId,\r\n twoLetterLanguageCode: twoLetterLanguageCode,\r\n siteDefinitionId: siteDefinitionId,\r\n searchTerm: searchTerm,\r\n hitId: hitId\r\n };\r\n const queryString = serialize(queryParameters);\r\n const url = `${clickTrackingApiEndpoint}${queryString}`;\r\n fetch(url);\r\n}","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Button } from 'reactstrap'\r\n\r\nconst EditListModalLink = ({\r\n AdditionalClasses = \"\",\r\n Color = \"\",\r\n Size = \"\",\r\n ToggleEditListModal,\r\n Name\r\n}) => {\r\n\r\n return (\r\n\r\n \r\n );\r\n};\r\n\r\nEditListModalLink.propType = {\r\n AdditionalClasses: PropTypes.string,\r\n Color: PropTypes.string,\r\n Size: PropTypes.string,\r\n ToggleEditListModal: PropTypes.func.isRequired,\r\n Name: PropTypes.string.isRequired\r\n};\r\n\r\nexport default EditListModalLink;\r\n","import React from 'react'\r\nimport { Tab } from 'react-tabs'\r\nimport PropTypes from 'prop-types'\r\nimport EditListModalLink from './Features/EditList/EditListModalLink'\r\n\r\nconst WishlistsTab = ({ \r\n Name, \r\n IsActive, \r\n ToggleEditListModal \r\n}) => {\r\n return (\r\n \r\n

{Name}

\r\n \r\n
\r\n );\r\n};\r\n\r\nWishlistsTab.propType = {\r\n Name: PropTypes.string.isRequired,\r\n IsActive: PropTypes.bool,\r\n ToggleEditListModal: PropTypes.func\r\n};\r\n\r\nexport default WishlistsTab;\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\n\r\nconst NewListModalLink = ({\r\n ToggleNewListModal\r\n}) => {\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nNewListModalLink.propType = {\r\n ToggleNewListModal: PropTypes.func.isRequired\r\n};\r\n\r\nexport default NewListModalLink;\r\n","import React from 'react'\r\nimport { TabList } from 'react-tabs'\r\nimport PropTypes from 'prop-types'\r\nimport WishlistsTab from './WishlistsTab'\r\nimport NewListModalLink from './Features/NewList/NewListModalLink';\r\n\r\nconst WishlistsTabList = ({\r\n Lists = [],\r\n ToggleNewListModal,\r\n ToggleEditListModal,\r\n ActiveTabIndex\r\n}) => {\r\n return (\r\n
\r\n \r\n {\r\n Lists.map((list, i) =>\r\n \r\n )\r\n }\r\n \r\n\r\n \r\n
\r\n );\r\n};\r\n\r\nWishlistsTabList.propType = {\r\n Lists: PropTypes.array.isRequired,\r\n ToggleNewListModal: PropTypes.func.isRequired,\r\n ToggleEditListModal: PropTypes.func.isRequired,\r\n ActiveTabIndex: PropTypes.number.isRequired\r\n};\r\n\r\nexport default WishlistsTabList;\r\n","import React, { useRef } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Button } from 'reactstrap'\r\nimport { translateResourceString } from '../util/translationUtility'\r\n\r\nconst WishlistProduct = ({\r\n Id,\r\n Name,\r\n ImageUrl,\r\n SKU,\r\n Link,\r\n Price,\r\n ListPrice,\r\n Quantity,\r\n ListIndex,\r\n RemoveProduct,\r\n ToggleCopyModal,\r\n ProductCommand,\r\n ListId,\r\n PricesAreHidden,\r\n UpdateQty,\r\n AddToCart,\r\n TotalPrice,\r\n isUpdating\r\n}) => {\r\n\r\n const qty = useRef(Quantity)\r\n\r\n const prepareCopyData = (e, removeAfter = false) => {\r\n e.preventDefault()\r\n ProductCommand({\r\n ListId: ListId,\r\n ProductId: Id,\r\n RemoveAfter: removeAfter\r\n })\r\n ToggleCopyModal(true)\r\n }\r\n\r\n const onQuantityChange = () => {\r\n if (parseInt(qty.current.value) === 0) {\r\n RemoveProduct(SKU, ListIndex)\r\n qty.current.value = 1\r\n } else {\r\n UpdateQty(SKU, ListId, qty.current.value)\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {`${Name}\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n {SKU}\r\n
\r\n {translateResourceString(\"/Wishlists/Items/QuantityLabel\")}:\r\n { onQuantityChange(); }}\r\n />\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {ListPrice && \r\n
\r\n \r\n \r\n {translateResourceString(\"/Wishlists/ViewAndAddListsButton\")}: {ListPrice}\r\n \r\n \r\n
}\r\n \r\n {translateResourceString(\"/Wishlists/Items/UnitPriceLabel\")}: {Price}\r\n \r\n
{translateResourceString(\"/Wishlists/Items/TotalPriceLabel\")}: {TotalPrice}
\r\n \r\n\r\n
\r\n \r\n
    \r\n
  • \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nWishlistProduct.propType = {\r\n AddToCartEndpoint: PropTypes.string.isRequired,\r\n Id: PropTypes.number,\r\n ImageUrl: PropTypes.string,\r\n Link: PropTypes.string,\r\n ListId: PropTypes.string.isRequired,\r\n ListIndex: PropTypes.number,\r\n ListPrice: PropTypes.string,\r\n Name: PropTypes.string,\r\n Price: PropTypes.string,\r\n PricesAreHidden: PropTypes.bool.isRequired,\r\n ProductCommand: PropTypes.shape({\r\n ListId: PropTypes.string.isRequired,\r\n ProductId: PropTypes.number.isRequired,\r\n RemoveAfter: PropTypes.bool.isRequired\r\n }).isRequired,\r\n Quantity: PropTypes.number,\r\n RemoveProduct: PropTypes.func,\r\n SKU: PropTypes.string,\r\n ToggleCopyModal: PropTypes.func\r\n};\r\n\r\nexport default WishlistProduct;","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Button } from 'reactstrap'\r\n\r\nconst ListsModalLink = ({\r\n AdditionalClasses = \"\",\r\n Color = \"\",\r\n Size = \"\",\r\n LinkText,\r\n ToggleListsModal\r\n}) => {\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nListsModalLink.propType = {\r\n AdditionalClasses: PropTypes.string,\r\n Color: PropTypes.string,\r\n Size: PropTypes.string,\r\n LinkText: PropTypes.string.isRequired,\r\n ToggleListsModal: PropTypes.func.isRequired\r\n};\r\n\r\nexport default ListsModalLink;\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Button } from 'reactstrap'\r\n\r\nconst PrintModalLink = ({\r\n TogglePrintModal\r\n}) => {\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nPrintModalLink.propType = {\r\n TogglePrintModal: PropTypes.func.isRequired\r\n};\r\n\r\nexport default PrintModalLink;","const miniCart = window && window.MiniCart || {}\r\nconst client = {\r\n refresh() {\r\n return miniCart.refresh && miniCart.refresh();\r\n },\r\n show() {\r\n miniCart.show && miniCart.show();\r\n },\r\n hide() {\r\n miniCart.hide && miniCart.hide();\r\n },\r\n refreshAndShow() {\r\n miniCart.refreshAndShow && miniCart.refreshAndShow();\r\n }\r\n}\r\n\r\nexport default client;","import React, { useState, useEffect } from 'react'\r\nimport { TabPanel } from 'react-tabs'\r\nimport { Button } from 'reactstrap'\r\nimport axios from 'axios';\r\nimport PropTypes from 'prop-types'\r\nimport WishlistProduct from './WishlistProduct'\r\nimport ListsModalLink from './Features/ListsModal/ListsModalLink'\r\nimport PrintModalLink from './Features/PrintModal/PrintModalLink'\r\nimport EditListModalLink from './Features/EditList/EditListModalLink'\r\nimport miniCartClient from '../util/miniCartClient'\r\nimport { translateResourceString } from '../util/translationUtility';\r\nimport { defaultAxiosCatalystPostConfig, makeAxiosCatalystPostData } from \"../util/axiosUtility\";\r\n\r\nconst WishlistsTabPanels = ({\r\n Lists = [],\r\n ToggleEditListModal,\r\n ToggleListsModal,\r\n UpdateLists,\r\n ToggleCopyModal,\r\n ProductCommand,\r\n TogglePrintModal,\r\n PricesAreHidden = false,\r\n AddToCartEndpoint,\r\n AddListToCartEndpoint,\r\n UpdateProductEndpoint,\r\n RemoveItemEndpoint\r\n}) => {\r\n const [itemsUpdating, setItemsUpdating] = useState([]);\r\n const [quantityUpdateRequests, setQuantityUpdateRequests] = useState([]);\r\n\r\n useEffect(() => {\r\n handleUpdateQtyRequest();\r\n });\r\n\r\n const removeProduct = (sku, listIndex) => {\r\n if (Lists[listIndex].Items && Lists[listIndex].Items.length > 0) {\r\n if (window.confirm('Are you sure you wish to delete this product?')) {\r\n Remove(RemoveItemEndpoint, sku, listIndex)\r\n }\r\n }\r\n }\r\n\r\n const updateProducts = (sku, listIndex) => {\r\n let newItems = Lists[listIndex].Items.filter(product => product.SKU !== sku)\r\n let newList = [...Lists.slice(0, listIndex), { Name: Lists[listIndex].Name, Items: newItems }, ...Lists.slice(listIndex + 1, Lists.length)]\r\n UpdateLists(newList)\r\n }\r\n\r\n const Remove = (endpoint, sku, listIndex) => {\r\n axios.post(endpoint, makeAxiosCatalystPostData({\r\n listName: Lists[listIndex].Name,\r\n sku: sku\r\n }), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n switch (response.data) {\r\n case 'OK':\r\n case 200:\r\n updateProducts(sku, listIndex)\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n alert('Invalid parameters')\r\n break\r\n case 'InternalServerError':\r\n case 500:\r\n alert('Something went wrong')\r\n break\r\n default:\r\n console.error('Unhandled Response.')\r\n break\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error)\r\n });\r\n }\r\n\r\n const AddToCart = (sku, quantity) => {\r\n axios.post(AddToCartEndpoint, makeAxiosCatalystPostData({\r\n code: sku,\r\n quantity: quantity\r\n }), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n //console.log(response.data);\r\n if (response.status === 200) {\r\n if (response.data && response.data.hasError) {\r\n const message = response.data[\"errorMessage\"];\r\n if (message)\r\n alert(message)\r\n else\r\n alert('Unable to add product to cart')\r\n } else {\r\n miniCartClient.refreshAndShow();\r\n }\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error)\r\n })\r\n }\r\n\r\n const setItemUpdating = (itemSku, isUpdating) => {\r\n if (isUpdating && !itemsUpdating.includes(itemSku)) {\r\n setItemsUpdating([...itemsUpdating, itemSku]);\r\n }\r\n if (!isUpdating && itemsUpdating.includes(itemSku)) {\r\n setItemsUpdating(itemsUpdating.filter(x => { return x !== itemSku; }));\r\n }\r\n }\r\n\r\n const UpdateQty = (sku, listName, quantity) => {\r\n setItemUpdating(sku, true);\r\n setQuantityUpdateRequests([...quantityUpdateRequests, { sku, listName, quantity: parseInt(quantity) }]);\r\n }\r\n\r\n const handleUpdateQtyRequest = async () => {\r\n if (quantityUpdateRequests.length > 0) {\r\n let request = quantityUpdateRequests.shift();\r\n\r\n let response = await axios.post(UpdateProductEndpoint, makeAxiosCatalystPostData({\r\n listName: request.listName,\r\n sku: request.sku,\r\n newQuantity: request.quantity\r\n }),defaultAxiosCatalystPostConfig);\r\n\r\n handleUpdateQtyResponse(response, request.sku, request.listName, request.quantity);\r\n }\r\n }\r\n\r\n const handleUpdateQtyResponse = (response, sku, listName, quantity) => {\r\n switch (response.data) {\r\n case 'OK':\r\n case 200:\r\n updateProductQty(listName, sku, quantity)\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n alert('Invalid parameters')\r\n break\r\n case 'InternalServerError':\r\n case 500:\r\n alert('Something went wrong')\r\n break\r\n default:\r\n console.error('Unhandled Response.')\r\n break\r\n }\r\n\r\n setItemUpdating(sku, false);\r\n }\r\n\r\n const updateProductQty = (listName, sku, quantity) => {\r\n let listIndex = Lists.findIndex(x => x.Name === listName)\r\n let productIndex = Lists[listIndex].Items.findIndex(x => x.SKU === sku)\r\n let product = Lists[listIndex].Items[productIndex]\r\n product.Quantity = quantity\r\n const replace = Number(product.Price.replace(/[^0-9.]/g, ''));\r\n if (!isNaN(replace)) {\r\n product.TotalPrice = (replace * quantity).toLocaleString('en-us', { style: 'currency', currency: 'USD' })\r\n } else {\r\n product.TotalPrice = \"Nan\";\r\n }\r\n\r\n let newItems = [\r\n ...Lists[listIndex].Items.slice(0, productIndex),\r\n product,\r\n ...Lists[listIndex].Items.slice(productIndex + 1, Lists[listIndex].Items.length)\r\n ]\r\n\r\n let newList = [\r\n ...Lists.slice(0, listIndex),\r\n {\r\n Name: Lists[listIndex].Name,\r\n Items: newItems\r\n },\r\n ...Lists.slice(listIndex + 1, Lists.length)\r\n ]\r\n\r\n UpdateLists(newList)\r\n }\r\n\r\n const addListToCart = (listName) => {\r\n axios.post(AddListToCartEndpoint, makeAxiosCatalystPostData({\r\n listName: listName\r\n }), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n //console.log(response.data);\r\n if (response.status === 200) {\r\n if (response.data && response.data.hasError) {\r\n const message = response.data[\"errorMessages\"];\r\n if (message)\r\n alert(message)\r\n else\r\n alert('Unable to add list to cart')\r\n } else {\r\n miniCartClient.refreshAndShow();\r\n }\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error)\r\n })\r\n }\r\n\r\n return (\r\n
\r\n {\r\n Lists.map((list, i) =>\r\n \r\n
\r\n

{list.Name}

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
    \r\n
  • \r\n {\r\n list.Items.map((item, j) =>\r\n \r\n )\r\n }\r\n
  • \r\n
\r\n
\r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\nWishlistsTabPanels.propType = {\r\n Lists: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Name: PropTypes.string,\r\n Items: PropTypes.array\r\n })\r\n ),\r\n ToggleEditListModal: PropTypes.func.isRequired,\r\n ToggleListsModal: PropTypes.func.isRequired,\r\n UpdateLists: PropTypes.func.isRequired,\r\n ToggleCopyModal: PropTypes.func.isRequired,\r\n ProductCommand: PropTypes.shape({\r\n ListId: PropTypes.string.isRequired,\r\n ProductId: PropTypes.number.isRequired,\r\n RemoveAfter: PropTypes.bool.isRequired\r\n }).isRequired,\r\n TogglePrintModal: PropTypes.func.isRequired,\r\n PricesAreHidden: PropTypes.bool,\r\n AddToCartEndpoint: PropTypes.string.isRequired,\r\n AddListToCartEndpoint: PropTypes.string.isRequired,\r\n UpdateProductEndpoint: PropTypes.string.isRequired,\r\n RemoveItemEndpoint: PropTypes.string.isRequired\r\n};\r\n\r\nexport default WishlistsTabPanels;\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap'\r\nimport NewListInput from '../../Components/NewListInput';\r\n\r\nconst NewListModal = ({\r\n Lists,\r\n UpdateLists,\r\n IsOpen,\r\n ToggleNewListModal,\r\n SelectActiveTab = null,\r\n CreateListEndpoint\r\n}) => {\r\n return (\r\n ToggleNewListModal(false)} centered={true} contentClassName=\"list-modal new-list-modal form-gray p-0\" role=\"document\">\r\n ToggleNewListModal(false)} wrapTag=\"div\" tag=\"span\" className=\"headline headline-sm\">\r\n Create a List\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nNewListModal.propType = {\r\n Lists: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Name: PropTypes.string\r\n })\r\n ).isRequired,\r\n UpdateLists: PropTypes.func.isRequired,\r\n IsOpen: PropTypes.bool.isRequired,\r\n ToggleNewListModal: PropTypes.func.isRequired,\r\n SelectActiveTab: PropTypes.func,\r\n CreateListEndpoint: PropTypes.string.isRequired\r\n};\r\n\r\nexport default NewListModal;\r\n","import React from 'react'\r\nimport { Tab } from 'react-tabs'\r\nimport PropTypes from 'prop-types'\r\n\r\nconst ModalTab = ({ \r\n Name, \r\n IsActive \r\n}) => {\r\n return (\r\n \r\n

{Name}

\r\n
\r\n );\r\n};\r\n\r\nModalTab.propType = {\r\n Name: PropTypes.string.isRequired,\r\n IsActive: PropTypes.bool\r\n};\r\n\r\nexport default ModalTab;","import React from 'react'\r\nimport { TabList } from 'react-tabs'\r\nimport PropTypes from 'prop-types'\r\nimport ModalTab from './ModalTab'\r\nimport NewListInput from '../../Components/NewListInput'\r\nimport { translateResourceString } from '../../../util/translationUtility'\r\n\r\nconst ModalTabList = ({\r\n Lists = [],\r\n UpdateLists,\r\n ActiveTabIndex,\r\n SelectActiveTab = null,\r\n CreateListEndpoint\r\n}) => {\r\n return (\r\n \r\n
    \r\n {\r\n Lists.map((list, i) =>\r\n \r\n )\r\n }\r\n
\r\n
\r\n

{translateResourceString(\"/Wishlists/ViewAndAddModal/CreateListLabel\")}

\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nModalTabList.propType = {\r\n Lists: PropTypes.array.isRequired,\r\n UpdateLists: PropTypes.func.isRequired,\r\n ActiveTabIndex: PropTypes.number.isRequired,\r\n SelectActiveTab: PropTypes.func,\r\n CreateListEndpoint: PropTypes.string.isRequired\r\n};\r\n\r\nexport default ModalTabList;\r\n","import React from 'react'\r\nimport { TabPanel } from 'react-tabs'\r\nimport PropTypes from 'prop-types'\r\nimport ProductItem from '../../Components/ProductItem'\r\n\r\nconst ModalTabPanels = ({\r\n Lists = []\r\n}) => {\r\n return (\r\n
\r\n {\r\n Lists.map((list, i) =>\r\n \r\n {\r\n list.Items.map((item, j) =>\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\nModalTabPanels.propType = {\r\n Lists: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Name: PropTypes.string,\r\n Items: PropTypes.array\r\n })\r\n ).isRequired\r\n};\r\n\r\nexport default ModalTabPanels;","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Tabs } from 'react-tabs'\r\nimport ModalTab from './ModalTab'\r\nimport ModalTabList from './ModalTabList'\r\nimport ModalTabPanels from './ModalTabPanels'\r\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap'\r\nimport { translateResourceString } from '../../../util/translationUtility'\r\n\r\nconst ListsModal = ({\r\n Lists = [],\r\n UpdateLists,\r\n ListsModalIsOpen,\r\n ToggleListsModal,\r\n ActiveTabIndex = 0,\r\n SelectActiveTab = null,\r\n CreateListEndpoint\r\n}) => {\r\n return (\r\n ToggleListsModal(false)}\r\n centered={true}\r\n className=\"modal-lg\"\r\n contentClassName=\"list-modal\"\r\n role=\"document\">\r\n ToggleListsModal(false)} wrapTag=\"div\" tag=\"span\" className=\"headline headline-sm\">{translateResourceString(\"/Wishlists/ViewAndAddModal/Header\")}\r\n \r\n
\r\n
\r\n { SelectActiveTab(index); ToggleListsModal(false); }}>\r\n {ModalTabPanels({ Lists: Lists })}\r\n {ModalTabList({ \r\n Lists: Lists, \r\n UpdateLists: UpdateLists,\r\n ActiveTabIndex: ActiveTabIndex,\r\n SelectActiveTab: SelectActiveTab,\r\n CreateListEndpoint: CreateListEndpoint\r\n })}\r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nModalTab.tabsRole = 'Tab';\r\nModalTabList.tabsRole = 'TabList';\r\nModalTabPanels.tabsRole = 'TabPanel';\r\n\r\nListsModal.propType = {\r\n Lists: PropTypes.array.isRequired,\r\n UpdateLists: PropTypes.func.isRequired,\r\n ListsModalIsOpen: PropTypes.bool.isRequired,\r\n ToggleListsModal: PropTypes.func.isRequired,\r\n ActiveTabIndex: PropTypes.number,\r\n SelectActiveTab: PropTypes.func,\r\n CreateListEndpoint: PropTypes.string.isRequired\r\n};\r\n\r\nexport default ListsModal;","import React, { useState, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport axios from 'axios';\r\nimport { translateResourceString } from \"../../../util/translationUtility\";\r\nimport { defaultAxiosCatalystPostConfig, makeAxiosCatalystPostData } from \"../../../util/axiosUtility\";\r\n\r\nconst EditListModal = ({\r\n Lists,\r\n ListName,\r\n UpdateLists,\r\n EditListModalIsOpen,\r\n ToggleEditListModal,\r\n CreateListEndpoint,\r\n RenameListEndpoint,\r\n DeleteListEndpoint,\r\n AddItemEndpoint\r\n}) => {\r\n const newListName = useRef(null)\r\n const [copyListNumber, increaseCopyListNumber] = useState(1)\r\n\r\n const copyName = \" - Copy\"\r\n\r\n const updateAndClose = (list = null) => {\r\n if (list)\r\n UpdateLists(list)\r\n\r\n ToggleEditListModal({\r\n EditListModalIsOpen: false\r\n })\r\n }\r\n\r\n const deleteList = (listName) => {\r\n if (window.confirm('Are you sure you wish to delete this list?')) {\r\n let newList = Lists.filter(x => x.Name !== listName)\r\n updateAndClose(newList)\r\n }\r\n }\r\n\r\n const saveList = (newListName) => {\r\n if (newListName.length !== 0) {\r\n let index = Lists.findIndex(x => x.Name === ListName)\r\n let newList = [...Lists.slice(0, index), { Name: newListName, Items: Lists[index].Items }, ...Lists.slice(index + 1, Lists.length)]\r\n updateAndClose(newList)\r\n }\r\n }\r\n\r\n const Save = (endpoint, oldListName, newListName) => {\r\n axios.post(endpoint, makeAxiosCatalystPostData({\r\n oldListName: oldListName,\r\n newListName: newListName\r\n }), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n switch (response.data) {\r\n case 'OK':\r\n case 200:\r\n saveList(newListName)\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n alert('There is the list with the same name')\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n alert('Please check list name')\r\n break\r\n default:\r\n console.error('Unhandled Response.')\r\n break\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error)\r\n });\r\n }\r\n\r\n const Delete = (endpoint, listName) => {\r\n axios.post(endpoint, makeAxiosCatalystPostData({\r\n listName: listName\r\n }), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n switch (response.data) {\r\n case 'OK':\r\n case 200:\r\n deleteList(listName)\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n alert('Invalid parameters')\r\n break\r\n case 'InternalServerError':\r\n case 500:\r\n alert('Something went wrong')\r\n break\r\n default:\r\n console.error('Unhandled Response.')\r\n break\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error)\r\n });\r\n }\r\n\r\n const Copy = (endpoint, listName) => {\r\n\r\n let name = listName + copyName\r\n if (Lists.some(list => list.Name === name)) {\r\n name += ' ' + copyListNumber\r\n increaseCopyListNumber(copyListNumber + 1)\r\n }\r\n let newItems = JSON.parse(JSON.stringify(Lists.filter(list => list.Name === listName)[0].Items))\r\n\r\n axios.post(endpoint, makeAxiosCatalystPostData({\r\n listName: name\r\n }), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n switch (response.data) {\r\n case 'OK':\r\n case 200:\r\n let skus = {}\r\n newItems.forEach(product => skus[product.SKU] = product.Quantity)\r\n\r\n axios.post(AddItemEndpoint, makeAxiosCatalystPostData({\r\n listName: name,\r\n skus: skus\r\n }), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n switch (response.data) {\r\n case 'OK':\r\n case 200:\r\n let newList = [{ Name: name, Items: newItems }, ...Lists]\r\n updateAndClose(newList)\r\n break\r\n case 'InternalServerError':\r\n case 500:\r\n alert('Something went wrong')\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n alert('Please check list name')\r\n break\r\n default:\r\n console.error('Unhandled Response.')\r\n break\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error)\r\n });\r\n case 'Conflict':\r\n case 409:\r\n alert('There is the list with the same name')\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n alert('Please check list name')\r\n break\r\n default:\r\n console.error('Unhandled Response.')\r\n break\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error)\r\n });\r\n }\r\n\r\n return (\r\n updateAndClose()} centered={true} contentClassName=\"edit-modal\" role=\"document\">\r\n updateAndClose()} wrapTag=\"div\" tag=\"span\" className=\"headline headline-sm\">\r\n {translateResourceString(\"/Wishlists/EditModal/Header\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nEditListModal.propType = {\r\n Lists: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Name: PropTypes.string\r\n })\r\n ).isRequired,\r\n ListName: PropTypes.string.isRequired,\r\n UpdateLists: PropTypes.func.isRequired,\r\n EditListModalIsOpen: PropTypes.bool.isRequired,\r\n ToggleEditListModal: PropTypes.func.isRequired,\r\n CreateListEndpoint: PropTypes.string.isRequired,\r\n RenameListEndpoint: PropTypes.string.isRequired,\r\n DeleteListEndpoint: PropTypes.string.isRequired,\r\n AddItemEndpoint: PropTypes.string.isRequired\r\n};\r\n\r\nexport default EditListModal;\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nconst CopyModalTab = ({ \r\n Name,\r\n CopyProduct\r\n }) => {\r\n return (\r\n
  • CopyProduct(Name)}>\r\n

    {Name}

    \r\n
  • \r\n );\r\n};\r\n\r\nCopyModalTab.propType = {\r\n Name: PropTypes.string.isRequired,\r\n CopyProduct: PropTypes.func\r\n};\r\n\r\nexport default CopyModalTab;","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport CopyModalTab from './CopyModalTab'\r\nimport NewListInput from '../../Components/NewListInput'\r\nimport ProductItem from '../../Components/ProductItem'\r\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap'\r\nimport axios from 'axios';\r\nimport { translateResourceString } from '../../../util/translationUtility';\r\nimport { defaultAxiosCatalystPostConfig, makeAxiosCatalystPostData } from \"../../../util/axiosUtility\";\r\n\r\nconst CopyModal = ({\r\n Lists = [],\r\n UpdateLists,\r\n CopyModalIsOpen,\r\n ToggleCopyModal,\r\n ProductCommand,\r\n ToggleNotification,\r\n CopyItemNotificationText,\r\n MoveItemNotificationText,\r\n AddItemEndpoint,\r\n RemoveItemEndpoint,\r\n CreateListEndpoint\r\n}) => {\r\n\r\n let product = null\r\n const originalListIndex = Lists.findIndex(x => x.Name === ProductCommand.ListId)\r\n if (originalListIndex !== -1) product = Lists[originalListIndex].Items.find(x => x.Id === ProductCommand.ProductId)\r\n\r\n const copyProduct = (targetListName) => {\r\n axios.post(AddItemEndpoint, makeAxiosCatalystPostData({\r\n listName: targetListName,\r\n skus: { [product.SKU]: product.Quantity }\r\n }), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n switch (response.data) {\r\n case 'OK':\r\n case 200:\r\n const index = Lists.findIndex(x => x.Name === targetListName)\r\n let newItems = []\r\n\r\n if (Lists[index].Items.some(x => x.SKU === product.SKU)) {\r\n let productIndex = Lists[index].Items.findIndex(x => x.SKU === product.SKU)\r\n let existingProduct = Lists[index].Items[productIndex]\r\n existingProduct.Quantity += product.Quantity\r\n newItems = Lists[index].Items;\r\n } else {\r\n // Create a copy of the product so changes don't affect each other.\r\n newItems = [JSON.parse(JSON.stringify(product)), ...Lists[index].Items];\r\n }\r\n\r\n const newList = [\r\n ...Lists.slice(0, index),\r\n {\r\n Name: targetListName,\r\n Items: newItems\r\n },\r\n ...Lists.slice(index + 1, Lists.length)\r\n ]\r\n\r\n closeModal(newList, ProductCommand.RemoveAfter, targetListName)\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n alert('Invalid parameters')\r\n break\r\n case 'InternalServerError':\r\n case 500:\r\n alert('Something went wrong')\r\n break\r\n default:\r\n console.error('Unhandled Response.')\r\n break\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error)\r\n });\r\n }\r\n\r\n const addProduct = (targetListName) => {\r\n axios.post(AddItemEndpoint, makeAxiosCatalystPostData({\r\n listName: targetListName,\r\n skus: { [product.SKU]: product.Quantity }\r\n }), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n switch (response.data) {\r\n case 'OK':\r\n case 200:\r\n const newList = [{\r\n Name: targetListName,\r\n Items: [product]\r\n }, ...Lists]\r\n closeModal(newList, ProductCommand.RemoveAfter, targetListName)\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n alert('Invalid parameters')\r\n break\r\n case 'InternalServerError':\r\n case 500:\r\n alert('Something went wrong')\r\n break\r\n default:\r\n console.error('Unhandled Response.')\r\n break\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error)\r\n });\r\n }\r\n\r\n const closeModal = (newList, removeAfter, targetListName) => {\r\n if (removeAfter) {\r\n removeProduct(newList, ProductCommand.ListId)\r\n } else {\r\n UpdateLists(newList)\r\n ToggleCopyModal(false)\r\n }\r\n\r\n ToggleNotification({\r\n IsOpen: true,\r\n Message: removeAfter ? MoveItemNotificationText : CopyItemNotificationText,\r\n TargetListName: targetListName\r\n })\r\n }\r\n\r\n const removeProduct = (newList, listName) => {\r\n axios.post(RemoveItemEndpoint, makeAxiosCatalystPostData({\r\n listName: listName,\r\n sku: product.SKU\r\n }), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n switch (response.data) {\r\n case 'OK':\r\n case 200:\r\n const listIndex = newList.findIndex(x => x.Name === ProductCommand.ListId)\r\n const list = [\r\n ...newList.slice(0, listIndex),\r\n {\r\n Name: ProductCommand.ListId,\r\n Items: newList[listIndex].Items.filter(x => x.SKU !== product.SKU)\r\n },\r\n ...newList.slice(listIndex + 1, newList.length)\r\n ]\r\n UpdateLists(list)\r\n ToggleCopyModal(false)\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n alert('Invalid parameters')\r\n break\r\n case 'InternalServerError':\r\n case 500:\r\n alert('Something went wrong')\r\n break\r\n default:\r\n console.error('Unhandled Response.')\r\n break\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error)\r\n });\r\n }\r\n\r\n return (\r\n ToggleCopyModal(false)}\r\n centered={true}\r\n className=\"modal-lg\"\r\n contentClassName=\"list-modal\"\r\n role=\"document\">\r\n ToggleCopyModal(false)} wrapTag=\"div\" tag=\"span\" className=\"headline headline-sm\">Select a List\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
      \r\n {\r\n Lists.map((list, i) =>\r\n \r\n )\r\n }\r\n
    \r\n
    \r\n
    {translateResourceString('/Wishlists/ViewAndAddModal/CreateListLabel')}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nCopyModal.propType = {\r\n Lists: PropTypes.array.isRequired,\r\n UpdateLists: PropTypes.func.isRequired,\r\n CopyModalIsOpen: PropTypes.bool.isRequired,\r\n ToggleCopyModal: PropTypes.func.isRequired,\r\n ProductCommand: PropTypes.shape({\r\n ListId: PropTypes.string.isRequired,\r\n ProductId: PropTypes.number.isRequired,\r\n RemoveAfter: PropTypes.bool.isRequired\r\n }).isRequired,\r\n ToggleNotification: PropTypes.func.isRequired,\r\n CopyItemNotificationText: PropTypes.string.isRequired,\r\n MoveItemNotificationText: PropTypes.string.isRequired,\r\n AddItemEndpoint: PropTypes.string.isRequired,\r\n RemoveItemEndpoint: PropTypes.string.isRequired,\r\n CreateListEndpoint: PropTypes.string.isRequired\r\n};\r\n\r\nexport default CopyModal;\r\n","import React, { useRef } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap'\r\nimport { translateResourceString } from '../../../util/translationUtility'\r\n\r\nconst PrintModal = ({\r\n PrintModalIsOpen,\r\n TogglePrintModal,\r\n HidePrices\r\n}) => {\r\n\r\n const printSetting = useRef(null)\r\n const showPriceValue = \"ShowPrice\"\r\n const hidePriceValue = \"HidePrice\"\r\n\r\n const printAndClose = () => {\r\n if (printSetting.current.value === hidePriceValue) {\r\n HidePrices(true)\r\n setTimeout(() => {\r\n window.print()\r\n HidePrices(false)\r\n }, 10)\r\n } else {\r\n window.print()\r\n }\r\n\r\n TogglePrintModal(false)\r\n }\r\n\r\n return (\r\n TogglePrintModal(false)} centered={true} wrapClassName=\"test\" contentClassName=\"edit-modal\" role=\"document\">\r\n TogglePrintModal(false)} wrapTag=\"div\" tag=\"span\" className=\"headline headline-sm\">\r\n {translateResourceString(\"/Wishlists/PrintModal/Header\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nPrintModal.propType = {\r\n PrintModalIsOpen: PropTypes.bool.isRequired,\r\n TogglePrintModal: PropTypes.func.isRequired,\r\n HidePrices: PropTypes.func.isRequired\r\n};\r\n\r\nexport default PrintModal;","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Alert } from 'reactstrap'\r\n\r\nconst Notification = ({\r\n ToggleNotification,\r\n IsOpen,\r\n ListName,\r\n Text\r\n}) => {\r\n const message = `${Text} ${ListName} wishlist.`\r\n\r\n return (\r\n ToggleNotification({ IsOpen: false })}>\r\n

    {message}

    \r\n
    \r\n );\r\n};\r\n\r\nNotification.propType = {\r\n ToggleNotification: PropTypes.func.isRequired,\r\n IsHidden: PropTypes.bool.isRequired,\r\n ListName: PropTypes.string.isRequired,\r\n Text: PropTypes.string.isRequired\r\n};\r\n\r\nexport default Notification;","import React, { Fragment, useState } from 'react'\r\nimport { Tabs } from 'react-tabs'\r\nimport PropTypes from 'prop-types'\r\nimport WishlistsTabList from './WishlistsTabList'\r\nimport WishlistsTabPanels from './WishlistsTabPanels'\r\nimport WishlistsTab from './WishlistsTab'\r\nimport NewListModal from './Features/NewList/NewListModal'\r\nimport ListsModal from './Features/ListsModal/ListsModal'\r\nimport EditListModal from './Features/EditList/EditListModal'\r\nimport CopyModal from './Features/CopyModal/CopyModal'\r\nimport PrintModal from './Features/PrintModal/PrintModal'\r\nimport Notification from './Components/Notification'\r\nimport { addResourceStrings, translateResourceString } from '../util/translationUtility'\r\n\r\nconst WishlistsApp = ({\r\n Wishlists,\r\n AddToCartEndpoint,\r\n AddListToCartEndpoint,\r\n UpdateProductEndpoint,\r\n AddItemEndpoint,\r\n RemoveItemEndpoint,\r\n CreateListEndpoint,\r\n RenameListEndpoint,\r\n DeleteListEndpoint,\r\n LocalizationItems\r\n}) => {\r\n const [Lists, updateLists] = useState(Wishlists)\r\n const [NewListModalIsOpen, toggleNewListModal] = useState(false)\r\n const [ListsModalIsOpen, toggleListsModal] = useState(false)\r\n const [CopyModalIsOpen, toggleCopyModal] = useState(false)\r\n const [PrintModalIsOpen, togglePrintModal] = useState(false)\r\n const [PricesAreHidden, hidePrices] = useState(false)\r\n const [{ EditListModalIsOpen, ListName }, toggleEditListModal] = useState({ EditListModalIsOpen: false, ListName: \"\" })\r\n const [ActiveTabIndex, selectActiveTab] = useState(0)\r\n const [{ ListId, ProductId, RemoveAfter }, ProductCommand] = useState({ ListId: 0, ProductId: 0, RemoveAfter: false })\r\n const [{ IsOpen, Message, TargetListName }, toggleNotification] = useState({ IsOpen: false, Message: \"\", TargetListName: \"\" })\r\n \r\n addResourceStrings(LocalizationItems);\r\n\r\n return (\r\n \r\n \r\n\r\n selectActiveTab(index)}>\r\n {WishlistsTabList({\r\n Lists: Lists,\r\n ToggleNewListModal: toggleNewListModal,\r\n ToggleEditListModal: toggleEditListModal,\r\n ActiveTabIndex: ActiveTabIndex\r\n })}\r\n {WishlistsTabPanels({\r\n Lists: Lists,\r\n ToggleEditListModal: toggleEditListModal,\r\n ToggleListsModal: toggleListsModal,\r\n UpdateLists: updateLists,\r\n ToggleCopyModal: toggleCopyModal,\r\n ProductCommand: ProductCommand,\r\n TogglePrintModal: togglePrintModal,\r\n PricesAreHidden: PricesAreHidden,\r\n AddToCartEndpoint: AddToCartEndpoint,\r\n AddListToCartEndpoint: AddListToCartEndpoint,\r\n UpdateProductEndpoint: UpdateProductEndpoint,\r\n RemoveItemEndpoint: RemoveItemEndpoint\r\n })}\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n );\r\n};\r\n\r\nWishlistsTab.tabsRole = 'Tab';\r\nWishlistsTabList.tabsRole = 'TabList';\r\nWishlistsTabPanels.tabsRole = 'TabPanel';\r\n\r\nWishlistsApp.propType = {\r\n Wishlists: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Name: PropTypes.string,\r\n Items: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n SKU: PropTypes.string,\r\n Name: PropTypes.string,\r\n ImageUrl: PropTypes.string,\r\n Link: PropTypes.string,\r\n StockAvailability: PropTypes.string,\r\n Price: PropTypes.string,\r\n ListPrice: PropTypes.string,\r\n Quantity: PropTypes.number,\r\n TotalPrice: PropTypes.string,\r\n Id: PropTypes.number\r\n })\r\n )\r\n })\r\n ).isRequired,\r\n AddToCartEndpoint: PropTypes.string.isRequired,\r\n AddListToCartEndpoint: PropTypes.string.isRequired,\r\n UpdateProductEndpoint: PropTypes.string.isRequired,\r\n AddItemEndpoint: PropTypes.string.isRequired,\r\n RemoveItemEndpoint: PropTypes.string.isRequired,\r\n CreateListEndpoint: PropTypes.string.isRequired,\r\n RenameListEndpoint: PropTypes.string.isRequired,\r\n DeleteListEndpoint: PropTypes.string.isRequired\r\n};\r\n\r\nexport default WishlistsApp;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nclass QuickOrderEntry extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n onSelectSuggestedItem(sku) {\r\n this.props.onSkuSet(sku);\r\n }\r\n\r\n render() {\r\n const {\r\n translationUtility\r\n } = this.props;\r\n\r\n let quantityValue = this.props.quantity === -1 ? \"\" : this.props.quantity;\r\n\r\n let isSkuValidated = !!this.props.selectedSku && this.props.selectedSku === this.props.query;\r\n let showAutocomplete = this.props.hasFocus\r\n && this.props.searchCompleted\r\n && !!this.props.autocompleteItems\r\n && this.props.autocompleteItems.length > 0\r\n && !isSkuValidated;\r\n\r\n let itemLabel = translationUtility.translateResourceString(\"/QuickOrder/ItemNumberLabel\");\r\n if (!!this.props.query) {\r\n if (!this.props.searchCompleted || showAutocomplete)\r\n itemLabel = translationUtility.translateResourceString(\"/QuickOrder/Searching\");\r\n else if (isSkuValidated)\r\n itemLabel = this.props.itemName;\r\n else\r\n itemLabel = translationUtility.translateResourceString(\"/QuickOrder/ItemNotFound\");\r\n }\r\n\r\n let searchedQueryLength = this.props.searchedQuery.length;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n this.props.onFocusChanged(true)}\r\n onBlur={(e) => this.props.onFocusChanged(false)}\r\n value={this.props.query}\r\n onChange={(e) => this.props.onQueryChange(e.target.value)}\r\n />\r\n
    \r\n
      \r\n {this.props.autocompleteItems.map((item, index) => {\r\n return
    • this.onSelectSuggestedItem(item.Sku)} >\r\n {item.VariationName}\r\n {this.props.searchedQuery}\r\n {item.MatchedField === \"name\"\r\n ? (item.VariationName.length > searchedQueryLength ? item.VariationName.substring(searchedQueryLength) : \"\")\r\n : (item.Sku.length > searchedQueryLength ? item.Sku.substring(searchedQueryLength) : \"\")\r\n }\r\n
    • \r\n })}\r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.props.onQuantityChange(e.target.value); }}\r\n onBlur={(e) => { this.props.onQuantityBlur(e.target.value); }} />\r\n
    \r\n
    \r\n {!this.props.hideCloseButton &&\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n {itemLabel}\r\n
    \r\n
    \r\n {translationUtility.translateResourceString(\"/QuickOrder/QuantityLabel\")}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nQuickOrderEntry.propTypes = {\r\n deleteRow: PropTypes.func,\r\n onQueryChange: PropTypes.func,\r\n onSkuSet: PropTypes.func,\r\n onQuantityChange: PropTypes.func,\r\n onQuantityBlur: PropTypes.func,\r\n onRef: PropTypes.func,\r\n onFocusChanged: PropTypes.func,\r\n query: PropTypes.string,\r\n selectedSku: PropTypes.string,\r\n quantity: PropTypes.number,\r\n minQuantity: PropTypes.number,\r\n maxQuantity: PropTypes.number,\r\n Name: PropTypes.string,\r\n isSearching: PropTypes.bool,\r\n translationUtility: PropTypes.object,\r\n autocompleteItems: PropTypes.arrayOf(PropTypes.object),\r\n hideCloseButton: PropTypes.bool,\r\n};\r\n\r\nexport default QuickOrderEntry;","import React from 'react'\r\nimport { Transition } from 'react-transition-group'\r\n\r\nconst duration = 200;\r\n\r\nconst defaultStyle = {\r\n transition: `opacity ${duration}ms ease-in-out`,\r\n opacity: 0\r\n}\r\n\r\nconst transitionStyles = {\r\n entering: { opacity: 0 },\r\n entered: { opacity: 1 }\r\n};\r\n\r\n// BBS DDD 2017-11-28 VS reports an error between the \"Transition\" \r\n// element name and the \"in\" attribute in the openting tag b/ c \"in\"\r\n// is an ES6 reserved word, but it appears to \"just work\" despite the error\r\nexport const Fade = ({ inProp, children, disableAnimation }) => (\r\n (disableAnimation)\r\n ? (
    {children}
    )\r\n : (\r\n {(state) => (\r\n
    \r\n {children}\r\n
    \r\n )}\r\n
    )\r\n );","import React from 'react'\r\nimport { findDOMNode } from 'react-dom'\r\nimport PropTypes from 'prop-types'\r\n\r\nimport { ERROR_USER_ALERT, UNKNOWN_USER_ALERT, INFO_USER_ALERT } from './userAlertTypes'\r\n\r\nimport { Fade } from '../componentAnimations'\r\n\r\nconst hasNewMessage = (oldMessages, newMessages) => {\r\n return !newMessages.every((cur) => oldMessages.some(msg => msg.id === cur.id))\r\n}\r\n\r\n// BBS DDD from https://stackoverflow.com/questions/487073/check-if-element-is-visible-after-scrolling?noredirect=1&lq=1\r\n// answer by bravedick\r\nconst isScrolledIntoView = (el) => {\r\n if (typeof window === 'undefined' || window.innerWidth === 'undefined')\r\n return false;\r\n var elemTop = el.getBoundingClientRect().top;\r\n var elemBottom = el.getBoundingClientRect().bottom;\r\n\r\n // Only completely visible elements return true:\r\n var isVisible = (elemTop >= 0) && (elemBottom <= window.innerHeight);\r\n // Partially visible elements return true:\r\n // isVisible = elemTop < window.innerHeight && elemBottom >= 0;\r\n return isVisible;\r\n}\r\n\r\nclass MessagesList extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = { visibleMessages: 0 }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (hasNewMessage(this.props.messages, nextProps.messages)) {\r\n this.setState({ scrollToLast: true })\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.state.scrollToLast) {\r\n const highestMessageId = this.props.messages.reduce((max, cur) => cur.id > max ? cur.id : max, 0)\r\n const messageWithHighestId = findDOMNode(this.refs[highestMessageId.toString(10)])\r\n isScrolledIntoView(messageWithHighestId) || messageWithHighestId.scrollIntoView({behavior: \"smooth\"})\r\n this.setState({scrollToLast: false})\r\n }\r\n }\r\n\r\n render() {\r\n const children = this.props.messages.map(message => {\r\n if (message.dismissed)\r\n return \"\";\r\n return (\r\n \r\n \r\n e.preventDefault() || this.props.onDismiss(message.Id)}>\r\n ×\r\n \r\n {message.text.split('\\n').map((line, i) =>\r\n (

    {line}

    ))}\r\n
    \r\n \r\n )\r\n }).filter(x => x);\r\n\r\n return (\r\n
    \r\n {children}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nMessagesList.propTypes = {\r\n messages: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n text: PropTypes.string.isRequired,\r\n type: PropTypes.string.isRequired\r\n })),\r\n onDismiss: PropTypes.func\r\n}\r\n\r\nexport default MessagesList\r\n","export const UNKNOWN_USER_ALERT = \"UNKNOWN_USER_ALERT_TYPE\";\r\nexport const ERROR_USER_ALERT = \"ERROR_USER_ALERT_TYPE\";\r\nexport const INFO_USER_ALERT = \"INFO_USER_ALERT_TYPE\";","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport fetch from 'cross-fetch';\r\n\r\nimport QuickOrderEntry from \"./Features/QuickOrderEntry\";\r\n\r\nimport { createGuid } from '../util/guidUtility';\r\nimport { TranslationUtility } from '../util/translationUtility';\r\n\r\nimport { MessagesList, ERROR_USER_ALERT, INFO_USER_ALERT } from '../SharedComponents/UserMessaging/';\r\nimport { makeCatalystFetchPostInit } from \"../util/fetchUtility\";\r\n\r\nlet messageId = 0;\r\n\r\nconst createUserMessage = ({ text, type }) => ({ id: messageId++, text, type });\r\n\r\nclass QuickOrderApp extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.translationUtility = new TranslationUtility(props.LocalizationItems);\r\n\r\n this.state = {\r\n entries: [\r\n this.createEntry()\r\n ],\r\n isAddingToCart: false,\r\n userMessages: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n require('./QuickOrderApp.css');\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n const entries = this.state.entries;\r\n for (let i = 0; i < entries.length; i++) {\r\n if (entries[i].hasFocus && entries[i].query !== prevState.entries[i].query) {\r\n this.handleQueryChanged(i);\r\n }\r\n }\r\n }\r\n\r\n createEntry() {\r\n return {\r\n key: createGuid(),\r\n query: \"\",\r\n searchedQuery: \"\",\r\n selectedSku: \"\",\r\n quantity: -1,\r\n itemName: \"\",\r\n itemMinQty: 1,\r\n itemMaxQty: 999999,\r\n searchCompleted: false,\r\n isValid: false,\r\n isEmpty: true,\r\n hasFocus: false,\r\n autocompleteItems: []\r\n };\r\n }\r\n\r\n onFocusChanged(index, hasFocus) {\r\n this.setState(prevState => {\r\n const entries = prevState.entries;\r\n entries[index].hasFocus = hasFocus;\r\n return { entries };\r\n });\r\n let entry = this.state.entries[index];\r\n if (!hasFocus && entry.autocompleteItems.length === 1 && entry.autocompleteItems[0].Sku === entry.query) {\r\n this.onEntrySkuSet(index, entry.query);\r\n }\r\n }\r\n\r\n deleteRow = (index) => {\r\n const rows = [...this.state.entries];\r\n\r\n if (rows.length === (index + 1)) {\r\n return;\r\n }\r\n\r\n rows.splice(index, 1);\r\n this.setState({ entries: rows });\r\n }\r\n\r\n onEntryQueryChange = (index, query) => {\r\n if (this.state.entries[index].ignoreChange) return;\r\n\r\n let entries = JSON.parse(JSON.stringify(this.state.entries));\r\n entries[index].isEmpty = query === \"\";\r\n entries[index].query = query;\r\n entries[index].searchCompleted = false;\r\n if (!!entries[index].selectedSku && entries[index].selectedSku !== query) {\r\n entries[index].selectedSku = \"\";\r\n entries[index].isValid = false;\r\n }\r\n\r\n this.setState({ entries });\r\n }\r\n\r\n handleQueryChanged = (index) => {\r\n clearTimeout(this.timer);\r\n this.timer = setTimeout(() => {\r\n this.getAutocompleteItems(index);\r\n }, 500);\r\n }\r\n\r\n onEntrySkuSet = (index, sku) => {\r\n var item = this.state.entries[index].autocompleteItems.find((e) => { return e.Sku === sku; });\r\n var updatedEntries = JSON.parse(JSON.stringify(this.state.entries));\r\n\r\n if (!!item) {\r\n updatedEntries[index].query = item.Sku;\r\n updatedEntries[index].selectedSku = item.Sku;\r\n updatedEntries[index].itemName = item.VariationName;\r\n updatedEntries[index].quantity = item.MinQty || 0;\r\n updatedEntries[index].itemMinQty = item.MinQty;\r\n updatedEntries[index].itemMaxQty = item.MaxQty;\r\n updatedEntries[index].autocompleteItems = [];\r\n updatedEntries[index].isValid = true;\r\n\r\n if (!!updatedEntries[updatedEntries.length - 1].selectedSku) {\r\n updatedEntries.push(this.createEntry());\r\n }\r\n } else {\r\n updatedEntries[index].selectedSku = \"\";\r\n updatedEntries[index].itemName = \"\";\r\n updatedEntries[index].quantity = 0;\r\n updatedEntries[index].isValid = false;\r\n }\r\n\r\n this.setState({ entries: updatedEntries })\r\n }\r\n\r\n addRow = () => {\r\n this.setState((prevState) => {\r\n return { entries: [...prevState.entries, this.createEntry()] }\r\n });\r\n }\r\n\r\n onQuantityChange = (index, qty) => {\r\n this.setState((prevState) => {\r\n var entriesCopy = [...prevState.entries];\r\n var currentEntry = entriesCopy[index];\r\n\r\n var quantity = Number(qty) || -1;\r\n\r\n currentEntry.quantity = quantity;\r\n return { entries: entriesCopy };\r\n });\r\n }\r\n\r\n onQuantityBlur = (index, qty) => {\r\n this.setState((prevState) => {\r\n var entriesCopy = [...prevState.entries];\r\n var currentEntry = entriesCopy[index];\r\n\r\n var quantity = Number(qty) || -1;\r\n\r\n if (quantity < currentEntry.itemMinQty) {\r\n quantity = currentEntry.itemMinQty;\r\n } else if (quantity > currentEntry.itemMaxQty) {\r\n quantity = currentEntry.itemMaxQty;\r\n }\r\n\r\n currentEntry.quantity = quantity;\r\n return { entries: entriesCopy };\r\n });\r\n }\r\n\r\n onAddItemsToCart = () => {\r\n this.setState({ isAddingToCart: true });\r\n\r\n var addToCartPromises = [];\r\n var entriesCopy = [...this.state.entries];\r\n var entriesAdded = 0;\r\n\r\n for (let i = 0; i < this.state.entries.length - 1; i++) {// There should always be one extra entry\r\n addToCartPromises.push(this.addItemToCart(this.state.entries[i].selectedSku, this.state.entries[i].quantity));\r\n entriesCopy.splice(i - entriesAdded, 1);\r\n entriesAdded++;\r\n }\r\n\r\n //this.state.entries.forEach((entry, i) => {\r\n // addToCartPromises.push(this.addItemToCart(entry.selectedSku, entry.quantity));\r\n // entriesCopy.splice(i - entriesAdded, 1);\r\n // entriesAdded++;\r\n //});\r\n\r\n var messages = [];\r\n Promise\r\n .all(addToCartPromises)\r\n .then((values) => {\r\n values.forEach(value => {\r\n messages.push(value);\r\n });\r\n })\r\n .finally(() => {\r\n this.setState({\r\n entries: entriesCopy,\r\n isAddingToCart: false,\r\n userMessages: messages\r\n });\r\n this.updateMiniCart();\r\n });\r\n }\r\n\r\n addItemToCart = (code, quantity) => {\r\n const submitMethod = 'POST';\r\n return new Promise((resolve) => {\r\n fetch(this.props.AddToCartEndpoint, makeCatalystFetchPostInit({ code: code, quantity: quantity }))\r\n .then((response) => {\r\n if (response.ok) {\r\n resolve(createUserMessage({\r\n text: this.translationUtility.translateResourceString(\"/QuickOrder/ItemWithSkuAddedFormatted\", code),\r\n type: INFO_USER_ALERT\r\n }));\r\n } else {\r\n if (typeof console !== 'undefined' && console.log) {\r\n console.error(`Error sending ${submitMethod} to ${this.props.AddToCartEndpoint}: (${response.statusCode}) ${response.statusText}`);\r\n }\r\n var errorMessage = response.statusText;\r\n resolve(createUserMessage({\r\n text: this.translationUtility.translateResourceString(\"/QuickOrder/ErrorFormatted\", code, errorMessage, errorMessage && errorMessage[errorMessage.length] === '.' || '.')``,\r\n type: ERROR_USER_ALERT\r\n }));\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Updates mini cart - could be moved to another file if we need to call it elsewhere\r\n updateMiniCart = () => {\r\n if (window && window.MiniCart && window.MiniCart.refresh) {\r\n window.MiniCart.refresh();\r\n }\r\n }\r\n\r\n onDismissMessage = (id) => {\r\n this.setState({\r\n userMessages: (this.state.userMessages\r\n ? this.state.userMessages.filter((message) => message.Id !== id)\r\n : [])\r\n });\r\n }\r\n\r\n renderLoginMessage = () => {\r\n const {\r\n LoginPageLink,\r\n RegistrationPageLink\r\n } = this.props;\r\n\r\n\r\n return (\r\n \r\n {this.translationUtility.translateResourceString('/QuickOrder/LoginLinkText')} {this.translationUtility.translateResourceString('/QuickOrder/TextAfterLoginLink')} {this.translationUtility.translateResourceString('/QuickOrder/RegisterLinkText')} {this.translationUtility.translateResourceString('/QuickOrder/TextAfterRegisterLink')}\r\n \r\n );\r\n\r\n }\r\n\r\n getAutocompleteItems = (index) => {\r\n fetch(this.props.AutocompleteEndpoint + '?query=' + this.state.entries[index].query)\r\n .then(response => response.json())\r\n .then(data => {\r\n let entries = JSON.parse(JSON.stringify(this.state.entries));\r\n entries[index].searchCompleted = true;\r\n entries[index].searchedQuery = entries[index].query\r\n entries[index].autocompleteItems = data;\r\n this.setState({ entries });\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n entries\r\n } = this.state;\r\n const isSubmitting = this.state.isAddingToCart;\r\n const addToCartLabel = isSubmitting ? this.translationUtility.translateResourceString(\"/QuickOrder/AddingItemsButton\") : this.translationUtility.translateResourceString(\"/QuickOrder/AddToCartButton\");\r\n const entriesLength = entries.length;\r\n const invalidEntries = !entries || entries.length === 0 || entries.filter(ent => !ent.isValid && !ent.isEmpty).length > 0 || entries.filter(ent => ent.isValid).length === 0;\r\n if (!this.props.UserIsAuthorized) {\r\n return (\r\n
    \r\n
    \r\n {this.renderLoginMessage()}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n {entries.map((entry, index) =>\r\n this.deleteRow(index)}\r\n onQueryChange={(value) => this.onEntryQueryChange(index, value)}\r\n onSkuSet={(value) => this.onEntrySkuSet(index, value)}\r\n onQuantityChange={(value) => this.onQuantityChange(index, value)}\r\n onQuantityBlur={(value) => this.onQuantityBlur(index, value)}\r\n onFocusChanged={(hasFocus) => this.onFocusChanged(index, hasFocus)}\r\n //onRef={ref => (entry.getVariationCode = ref.getVariationCode)}\r\n hideCloseButton={index === (entriesLength - 1)}\r\n translationUtility={this.translationUtility}\r\n autocompleteItems={entry.autocompleteItems}\r\n {...entry}\r\n />\r\n )}\r\n\r\n\r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nQuickOrderApp.propTypes = {\r\n ApiEndPoint: PropTypes.string,\r\n AddToCartEndpoint: PropTypes.string,\r\n UserIsAuthorized: PropTypes.bool,\r\n LoginPageLink: PropTypes.string,\r\n RegistrationPageLink: PropTypes.string,\r\n LocalizationItems: PropTypes.array,\r\n BulkUploadUrl: PropTypes.string\r\n};\r\n\r\nexport default QuickOrderApp;","import quickOrderApp from './QuickOrderApp'\r\nexport default quickOrderApp","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\n\r\nconst TypeaheadEntry = ({ href, name, selected, imageUrl }) => {\r\n const typeaheadEntryClass = classNames(\r\n 'typeahead-result-wrapper',\r\n { 'selected': selected },\r\n );\r\n return \r\n}\r\n\r\nTypeaheadEntry.propTypes = {\r\n href: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n selected: PropTypes.bool,\r\n imageUrl: PropTypes.string\r\n};\r\n\r\nexport default TypeaheadEntry;","export function buildSearchTermUrl({ searchSubmitLink, searchTerm }) {\r\n return `${searchSubmitLink}?searchString=${encodeURIComponent(searchTerm)}`;\r\n}","import React from 'react';\r\nimport TypeaheadEntry from './TypeaheadEntry';\r\nimport { buildSearchTermUrl } from './urlBuilder.js';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst TypeaheadResults = ({\r\n searchTerms,\r\n categories,\r\n products,\r\n articles,\r\n currentSearchTerm,\r\n searchSubmitLink,\r\n selected,\r\n translationUtility\r\n}) => {\r\n return (\r\n
    \r\n {searchTerms.length > 0 &&\r\n \r\n {searchTerms.map((searchTerm, key) => {\r\n const href = buildSearchTermUrl({ searchSubmitLink, searchTerm });\r\n return (\r\n \r\n )\r\n })}\r\n
    \r\n }\r\n {/* Not currently displaying categories */}\r\n {/* {categories.length > 0 &&\r\n \r\n
    {translationUtility.translateResourceString(\"/Typeahead/Index/SearchTermResultseading\")}
    \r\n {categories.map((category, key) => {\r\n return (\r\n \r\n )\r\n })}\r\n \r\n } */}\r\n {products.length > 0 &&\r\n \r\n {products.map((product, key) => {\r\n return (\r\n \r\n )\r\n })}\r\n \r\n }\r\n { articles.length > 0 &&\r\n \r\n {articles.map((article, key) => {\r\n return (\r\n \r\n )\r\n })}\r\n \r\n }\r\n {currentSearchTerm &&\r\n
    \r\n \r\n {translationUtility.translateResourceString(\"/Typeahead/Index/SeeAllResultsLink\")} \r\n \r\n
    \r\n }\r\n \r\n )\r\n}\r\n\r\nTypeaheadResults.propTypes = {\r\n searchTerms: PropTypes.arrayOf(PropTypes.string),\r\n categories: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Url: PropTypes.string\r\n })),\r\n products: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Url: PropTypes.string,\r\n ImageUrl: PropTypes.string\r\n })),\r\n articles: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string,\r\n Url: PropTypes.string\r\n })),\r\n currentSearchTerm: PropTypes.string,\r\n searchSubmitLink: PropTypes.string,\r\n selected: PropTypes.any\r\n};\r\n\r\nexport default TypeaheadResults;\r\n","export function closeKeyboardOnScroll(e) {\r\n document.activeElement.blur();\r\n scrollUp();\r\n document.addEventListener(\"touchend\", scrollUp);\r\n}\r\nexport function scrollUp() {\r\n //window.ontouchmove = \"preventDefault\"; // mobile\r\n window.scrollTo(0, 0);\r\n document.removeEventListener(\"touchend\", scrollUp);\r\n\r\n}","import fetch from 'cross-fetch';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport TypeaheadResults from './TypeaheadResults';\r\nimport { buildSearchTermUrl } from './urlBuilder.js';\r\nimport { TranslationUtility } from '../util/translationUtility';\r\nimport { closeKeyboardOnScroll } from './closeKeyboardOnScroll';\r\nimport $ from 'jquery';\r\nimport { scrollUp } from './closeKeyboardOnScroll';\r\nimport {Nav} from \"reactstrap\";\r\n\r\nconst MIN_LENGTH = 0;\r\n\r\nconst TYPE_INTERVAL_IN_MS = 300;\r\n\r\nclass TypeaheadApp extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n results: [],\r\n searchTerm: '',\r\n searchKey: null,\r\n showSuggestions: false,\r\n showMobileSearch: false,\r\n requests: [],\r\n };\r\n\r\n this.onSearchChange = this.onSearchChange.bind(this);\r\n this.needsToSearch = this.needsToSearch.bind(this);\r\n this.fetchResults = this.fetchResults.bind(this);\r\n this.onFocus = this.onFocus.bind(this);\r\n this.onFocusMobile = this.onFocusMobile.bind(this);\r\n this.setWrapperRef = this.setWrapperRef.bind(this);\r\n this.handleClickOutside = this.handleClickOutside.bind(this);\r\n this.fetchIntervalId = null;\r\n this.onMobileSearchClick = this.onMobileSearchClick.bind(this);\r\n this.onDesktopSearchClick = this.onDesktopSearchClick.bind(this);\r\n this.onCancelMobileSearchClick = this.onCancelMobileSearchClick.bind(this);\r\n this.hideDocumentOverflow = this.hideDocumentOverflow.bind(this);\r\n this.onKeyPress = this.onKeyPress.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside);\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside);\r\n }\r\n\r\n setWrapperRef(node) {\r\n this.wrapperRef = node;\r\n }\r\n\r\n handleClickOutside(event) {\r\n if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\r\n this.setState({ showSuggestions: false });\r\n document.removeEventListener(\"scroll\", closeKeyboardOnScroll);\r\n }\r\n }\r\n\r\n setResults(searchTerm, result) {\r\n this.setState(prevState => {\r\n const {\r\n results,\r\n } = prevState;\r\n\r\n results[searchTerm] = {\r\n searchTerms: (\r\n result &&\r\n result.SearchTerms\r\n ) || [],\r\n articles: (\r\n result &&\r\n result.Articles\r\n ) || [],\r\n categories: (\r\n result &&\r\n result.Categories\r\n ) || [],\r\n products: (\r\n result &&\r\n result.Products\r\n ) || []\r\n };\r\n\r\n return ({\r\n results\r\n });\r\n })\r\n }\r\n\r\n fetchResults(searchTerm) {\r\n const { ApiEndPoint } = this.props;\r\n fetch(buildSearchTermUrl({ searchSubmitLink: ApiEndPoint, searchTerm }))\r\n .then(response => response.json())\r\n .then(result => this.setResults(searchTerm, result));\r\n }\r\n\r\n needsToSearch(searchKey) {\r\n return searchKey && searchKey.length > MIN_LENGTH && (!this.state.results || !this.state.results[searchKey]);\r\n }\r\n\r\n onKeyPress(event) {\r\n if (event.key === 'Enter') {\r\n event.target.form.submit();\r\n }\r\n }\r\n \r\n onSearchChange(event) { \r\n let searchKey = event.target.value;\r\n\r\n // Remove <, >, and = characters from searchKey and searchTerm\r\n searchKey = searchKey.replace(/[<>==]/g, '');\r\n\r\n const searchTerm = searchKey; // Updated to use sanitized searchKey\r\n this.setState(prevState => {\r\n let { requests } = prevState;\r\n if (searchKey.trim() === \"\") {\r\n requests = [];\r\n } else {\r\n requests.push(searchTerm);\r\n }\r\n return ({ searchKey, searchTerm, requests });\r\n });\r\n\r\n if (this.needsToSearch(searchKey)) {\r\n // console.log(`needs to search for ${searchKey}`);\r\n clearTimeout(this.fetchIntervalId);\r\n this.fetchIntervalId = setTimeout(() => this.fetchResults(searchKey), TYPE_INTERVAL_IN_MS);\r\n }\r\n }\r\n\r\n flattenResults() {\r\n const {\r\n results,\r\n searchKey\r\n } = this.state;\r\n\r\n if (!results || !searchKey || searchKey.length === 0 || !results[searchKey]) {\r\n return [];\r\n }\r\n\r\n const currentResults = results[searchKey];\r\n return [\r\n ...currentResults.searchTerms,\r\n ...currentResults.categories,\r\n ...currentResults.products,\r\n ...currentResults.articles\r\n ];\r\n }\r\n\r\n onFocus() {\r\n this.setState({ showSuggestions: true });\r\n }\r\n\r\n onFocusMobile() {\r\n this.setState({ showSuggestions: true });\r\n }\r\n\r\n hideDocumentOverflow(hide) {\r\n //prevents body scroll when search is open so that scrolling is only possible within search\r\n document.body.style.overflow = hide ? \"hidden\" : \"\"\r\n }\r\n onDesktopSearchClick() {\r\n this.setState({ showDesktopSearch: !this.state.showDesktopSearch });\r\n }\r\n\r\n onMobileSearchClick() {\r\n this.setState({ showMobileSearch: true });\r\n this.hideDocumentOverflow(true);\r\n }\r\n\r\n onCancelMobileSearchClick() {\r\n this.setState({ showMobileSearch: false, searchTerm: '', results: []});\r\n this.hideDocumentOverflow(false);\r\n }\r\n\r\n render() {\r\n const {\r\n SearchSubmitLink,\r\n LocalizationItems\r\n } = this.props;\r\n const translationUtility = new TranslationUtility(LocalizationItems);\r\n const {\r\n results,\r\n searchTerm,\r\n selected,\r\n searchKey,\r\n showSuggestions,\r\n showMobileSearch,\r\n showDesktopSearch,\r\n requests\r\n } = this.state;\r\n\r\n let searchResultsToShow = null;\r\n if (searchTerm.trim() !== \"\") {\r\n searchResultsToShow = results[searchKey]; // Check for results\r\n\r\n // if there are none, let's look at most recent requests\r\n if (!searchResultsToShow) {\r\n for (var i = requests.length - 1; i >= 0; i--) {\r\n const resultsKey = requests[i];\r\n if (results[resultsKey]) {\r\n searchResultsToShow = results[resultsKey];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const searchTerms = (\r\n searchResultsToShow &&\r\n searchResultsToShow.searchTerms\r\n ) || [];\r\n\r\n const articles = (\r\n searchResultsToShow &&\r\n searchResultsToShow.articles\r\n ) || [];\r\n\r\n const categories = (\r\n searchResultsToShow &&\r\n searchResultsToShow.categories\r\n ) || [];\r\n\r\n const products = (\r\n searchResultsToShow &&\r\n searchResultsToShow.products\r\n ) || [];\r\n\r\n const anyResults = (\r\n searchTerms.length > 0 ||\r\n articles.length > 0 ||\r\n categories.length > 0 ||\r\n products.length > 0\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {showDesktopSearch &&\r\n
    \r\n \r\n
    \r\n \r\n\r\n
    \r\n \r\n \r\n
    \r\n {anyResults && showSuggestions &&\r\n \r\n }\r\n
    \r\n \r\n
    \r\n }\r\n\r\n
    \r\n {anyResults &&\r\n \r\n \r\n \r\n }\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n\r\n \r\n \r\n
    \r\n \r\n {anyResults &&\r\n \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nTypeaheadApp.propTypes = {\r\n SearchSubmitLink: PropTypes.string,\r\n ApiEndPoint: PropTypes.string,\r\n LocalizationItems: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Key: PropTypes.string,\r\n Value: PropTypes.string\r\n })\r\n )\r\n};\r\n\r\nexport default TypeaheadApp;\r\n","import React from 'react';\r\nimport { makeCatalystFetchPostInit } from \"../util/fetchUtility\";\r\n\r\nclass AddToCartButton extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n addingToCart: false,\r\n error: false,\r\n };\r\n\r\n this.handleAddToCart = this.handleAddToCart.bind(this);\r\n this.handleAddToCartError = this.handleAddToCartError.bind(this);\r\n this.handleAddToCartSuccess = this.handleAddToCartSuccess.bind(this);\r\n }\r\n\r\n handleAddToCart() {\r\n const {\r\n code,\r\n addToCartEndpoint,\r\n quantity,\r\n } = this.props;\r\n\r\n this.setState({\r\n addingToCart: true\r\n });\r\n\r\n fetch(addToCartEndpoint, makeCatalystFetchPostInit({code, quantity}))\r\n .then(response => {\r\n this.setState({addingToCart: false});\r\n return response.json();\r\n })\r\n .then(json => {\r\n if(json && json.hasError === false) {\r\n this.handleAddToCartSuccess();\r\n } else {\r\n if(json && json.errorMessage) {\r\n console.log(json.errorMessage);\r\n }\r\n this.handleAddToCartError();\r\n }\r\n })\r\n .catch(\r\n (error) => {\r\n console.log(error);\r\n this.handleAddToCartError();\r\n return;\r\n }\r\n )\r\n }\r\n\r\n handleAddToCartError() {\r\n this.setState({\r\n error: true,\r\n addingToCart: false\r\n });\r\n }\r\n\r\n handleAddToCartSuccess() {\r\n this.setState({\r\n error: false,\r\n addingToCart: false\r\n });\r\n\r\n if(window.MiniCart && window.MiniCart.refreshAndShow) {\r\n window.MiniCart.refreshAndShow();\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n text\r\n } = this.props;\r\n const {\r\n addingToCart,\r\n } = this.state;\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AddToCartButton;\r\n","import React from 'react';\r\nimport AddToCartButton from '../shared/AddToCartButton';\r\n\r\nconst Product = ({ Name, Price, Quantity, ImageUrl, Url, Code, addToCartEndpoint, translationUtility, IsStopWorkshop }) => {\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {Name}\r\n \r\n
    \r\n
    \r\n

    {Name}

    \r\n
    {Price}
    \r\n {!IsStopWorkshop && (\r\n
    {translationUtility.translateResourceString('/Reorder/QuantityLabel')}: {Quantity}
    \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default Product;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Product from './Product';\r\nimport { hiddenAnchorStyle } from \"../checkout/components\";\r\nimport { makeCatalystFetchPostInit } from \"../util/fetchUtility\";\r\n\r\nclass Order extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n productsToShowCount: props.startOpen ?\r\n Math.min(4, props.LineItemCount)\r\n : 0,\r\n products: [],\r\n reordering: false,\r\n fetchedAll: false,\r\n fetching: false\r\n };\r\n\r\n this.fetchProducts = this.fetchProducts.bind(this)\r\n this.handleViewAllItemsInOrder = this.handleViewAllItemsInOrder.bind(this)\r\n this.handleReorder = this.handleReorder.bind(this);\r\n this.handleReorderError = this.handleReorderError.bind(this);\r\n this.handleReorderSuccess = this.handleReorderSuccess.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const {\r\n productsToShowCount,\r\n products\r\n } = this.state;\r\n if(productsToShowCount > 0 && products.length === 0) {\r\n if(productsToShowCount >= this.props.LineItemCount) {\r\n this.setState({\r\n fetchedAll: true\r\n });\r\n }\r\n this.fetchProducts(productsToShowCount);\r\n }\r\n }\r\n\r\n fetchProducts(productToFetchCount) {\r\n const {\r\n ProductsApiEndpoint,\r\n OrderNumber\r\n } = this.props;\r\n this.setState({\r\n fetching: true\r\n });\r\n fetch(`${ProductsApiEndpoint}?orderNumber=${OrderNumber}&skip=0&take=${productToFetchCount}`)\r\n .then(response => response.json())\r\n .then(json => this.setState({\r\n products: json,\r\n fetching: false\r\n }));\r\n }\r\n\r\n handleViewAllItemsInOrder() {\r\n if(!this.state.fetchedAll) {\r\n this.fetchProducts(this.props.LineItemCount);\r\n }\r\n\r\n this.setState({\r\n productsToShowCount: this.props.LineItemCount,\r\n fetchedAll: true\r\n });\r\n }\r\n\r\n handleReorder() {\r\n const {\r\n ReorderCartEndpoint,\r\n OrderNumber\r\n } = this.props;\r\n\r\n this.setState({\r\n reordering: true\r\n });\r\n\r\n fetch(ReorderCartEndpoint, makeCatalystFetchPostInit({orderNumber: OrderNumber }))\r\n .then(response => {\r\n this.setState({reOrdering: false});\r\n return response.json();\r\n })\r\n .then(json => {\r\n if(json && json.hasError === false) {\r\n this.handleReorderSuccess();\r\n } else {\r\n if(json && json.message) {\r\n console.log(json.message);\r\n }\r\n this.handleReorderError();\r\n }\r\n })\r\n .catch(\r\n error => {\r\n console.log(error);\r\n this.handleReorderError();\r\n }\r\n )\r\n }\r\n\r\n handleReorderError() {\r\n this.setState({\r\n error: true,\r\n reordering: false\r\n });\r\n }\r\n\r\n handleReorderSuccess() {\r\n this.setState({\r\n error: false,\r\n reordering: false\r\n });\r\n\r\n if(window.MiniCart && window.MiniCart.refreshAndShow) {\r\n window.MiniCart.refreshAndShow();\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n OrderNumber,\r\n LineItemCount,\r\n OrderDate,\r\n Total,\r\n AddToCartEndpoint,\r\n translationUtility\r\n } = this.props;\r\n const {\r\n products,\r\n productsToShowCount,\r\n reordering,\r\n fetching\r\n } = this.state;\r\n return (\r\n
    \r\n
    \r\n
    {translationUtility.translateResourceString('/Reorder/OrderNumber')}: {OrderNumber}
    \r\n
    {OrderDate}
    \r\n
    \r\n
    \r\n {productsToShowCount > 0\r\n ?
    \r\n
    \r\n
    \r\n {translationUtility.translateResourceString(\"/Reorder/Showing\")} {products.length} {translationUtility.translateResourceString(\"/Reorder/Of\")} {LineItemCount} {translationUtility.translateResourceString(\"/Reorder/Items\")} {productsToShowCount < LineItemCount ? : \"\"}\r\n \r\n
    \r\n
    \r\n
    \r\n {products.map((product, i) => )}\r\n
    \r\n {productsToShowCount > 0 && productsToShowCount === LineItemCount && products.length !== LineItemCount && !fetching &&\r\n
    \r\n
    \r\n {translationUtility.translateResourceString(\"/Reorder/UnableToLoadAllItems\")}\r\n
    \r\n
    \r\n }\r\n
    \r\n : {translationUtility.translateResourceString(\"/Reorder/ViewAllItemsInOrderButton\")}\r\n }\r\n
    \r\n
    \r\n
    {translationUtility.translateResourceString(\"/Reorder/TotalLabel\")}: {Total}
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nOrder.propTypes = {\r\n OrderNumber: PropTypes.string,\r\n LineItemCount: PropTypes.number,\r\n OrderDate: PropTypes.string,\r\n Total: PropTypes.string,\r\n ProductsApiEndpoint: PropTypes.string,\r\n AddToCartEndpoint: PropTypes.string\r\n};\r\n\r\nexport default Order;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Order from './Order';\r\nimport { translateResourceString, TranslationUtility } from '../util/translationUtility';\r\n\r\n\r\nclass Reorder extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n orderCount: props.OrderCount,\r\n orders: []\r\n };\r\n this.translationUtility = new TranslationUtility(props.LocalizationItems);\r\n }\r\n\r\n componentDidMount() {\r\n require('./reorderApp.css');\r\n fetch(`${this.props.OrdersApiEndpoint}?skip=0&take=20`)\r\n .then(response => response.json())\r\n .then(json => this.setState({\r\n orders: json\r\n }));\r\n }\r\n\r\n render() {\r\n const { orders } = this.state;\r\n if (orders.length === 0) {\r\n return (\r\n
    \r\n {this.translationUtility.translateResourceString(\"/Reorder/NoOrders\")}\r\n
    \r\n\r\n )\r\n }\r\n return (\r\n
    \r\n {orders.map((order, i) =>\r\n \r\n )}\r\n
    \r\n\r\n );\r\n }\r\n}\r\n\r\nReorder.propTypes = {\r\n OrdersApiEndpoint: PropTypes.string,\r\n ProductsApiEndpoint: PropTypes.string,\r\n AddToCartEndpoint: PropTypes.string,\r\n OrderCount: PropTypes.number\r\n};\r\n\r\nexport default Reorder;\r\n","import reorder from './ReorderApp'\r\nexport default reorder","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nconst ModalLink = ({\r\n ClassName,\r\n LinkText,\r\n SrText,\r\n ToggleModal\r\n}) => {\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nModalLink.propType = {\r\n ClassName: PropTypes.string,\r\n LinkText: PropTypes.string.isRequired,\r\n ToggleModal: PropTypes.func.isRequired\r\n};\r\n\r\nexport default ModalLink;","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nconst ModalTab = ({ \r\n Name,\r\n AddProduct\r\n }) => {\r\n return (\r\n
  • AddProduct(Name)}>\r\n

    {Name}

    \r\n
  • \r\n );\r\n};\r\n\r\nModalTab.propType = {\r\n Name: PropTypes.string.isRequired,\r\n AddProduct: PropTypes.func\r\n};\r\n\r\nexport default ModalTab;","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport ModalTab from './ModalTab'\r\nimport NewListInput from '../wishlists/Components/NewListInput'\r\nimport ProductItem from '../wishlists/Components/ProductItem'\r\nimport { Modal, ModalBody, ModalHeader } from 'reactstrap'\r\nimport axios from 'axios';\r\nimport { translateResourceString } from '../util/translationUtility'\r\nimport { makeAxiosCatalystPostData, defaultAxiosCatalystPostConfig } from \"../util/axiosUtility\";\r\n\r\nconst AddToModal = ({\r\n Lists = [],\r\n UpdateLists,\r\n Name,\r\n SKU,\r\n ImageUrl,\r\n ModalIsOpen,\r\n ToggleModal,\r\n AddItemEndpoint,\r\n CreateListEndpoint,\r\n SetLinkClass,\r\n SetSrText,\r\n SetLinkText,\r\n UserIsAuthorized,\r\n LoginLink\r\n}) => {\r\n\r\n const spinnerClass = 'fa fa-circle-notch fa-spin';\r\n const successClass = 'fa fa-check-circle';\r\n const errorClass = 'fa fa-times-circle error';\r\n const addToListText = translateResourceString(\"/Wishlists/AddToModal/AddToListButton\");\r\n const addedToListText = translateResourceString(\"/Wishlists/AddToModal/AddedToListMessage\");\r\n const retryMessage = translateResourceString(\"/Wishlists/AddToModal/AddedToListMessage\");\r\n\r\n const addProduct = (targetListName) => {\r\n\r\n let element = document.getElementsByClassName('qty-option')\r\n let quantity = element.length ? element[0].value : 1\r\n quantity = Number.isInteger(+quantity) ? quantity : 1\r\n\r\n SetLinkClass(spinnerClass)\r\n\r\n const requestData = {\r\n listName: targetListName,\r\n skus: { [SKU]: quantity }\r\n };\r\n axios.post(AddItemEndpoint, makeAxiosCatalystPostData(requestData), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n switch (response.data) {\r\n case 'OK':\r\n case 200:\r\n ToggleModal(false)\r\n SetLinkClass(successClass)\r\n SetSrText(addedToListText)\r\n SetLinkText(addedToListText)\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n SetLinkClass(errorClass)\r\n SetLinkText(addToListText)\r\n alert(retryMessage)\r\n console.error(\"Invalid parameters: \" + JSON.stringify(requestData) + \". Got response: \" + response.data)\r\n break\r\n case 'InternalServerError':\r\n case 500:\r\n SetLinkClass(errorClass)\r\n SetLinkText(addToListText)\r\n alert(retryMessage)\r\n console.error(response.data)\r\n break\r\n case 'Unauthorized':\r\n case 401:\r\n SetLinkClass(errorClass)\r\n SetLinkText(addToListText)\r\n alert(translateResourceString(\"/Wishlists/AddToModal/PleaseLoginMessage\"))\r\n break\r\n default:\r\n console.error('Unhandled Response.')\r\n break\r\n }\r\n })\r\n .catch(function (error) {\r\n SetLinkClass(errorClass)\r\n SetLinkText(addToListText)\r\n console.log(error)\r\n });\r\n }\r\n\r\n const modalBody = UserIsAuthorized ? (\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
      \r\n {\r\n Lists.map((list, i) =>\r\n \r\n )\r\n }\r\n
    \r\n
    \r\n
    {translateResourceString('/Wishlists/ViewAndAddModal/CreateListLabel')}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n ) : (\r\n \r\n \r\n \r\n )\r\n\r\n return (\r\n ToggleModal(false)}\r\n centered={true}\r\n className=\"modal-lg\"\r\n contentClassName=\"list-modal\"\r\n role=\"document\">\r\n ToggleModal(false)} wrapTag=\"div\" tag=\"span\" className=\"headline headline-sm\">\r\n {UserIsAuthorized ? translateResourceString(\"/Wishlists/AddToModal/Header\") : translateResourceString(\"/Wishlists/AddToModal/HeaderUnauthorized\")}\r\n \r\n {modalBody}\r\n \r\n );\r\n};\r\n\r\nAddToModal.propType = {\r\n Lists: PropTypes.array.isRequired,\r\n UpdateLists: PropTypes.func.isRequired,\r\n ModalIsOpen: PropTypes.bool.isRequired,\r\n ToggleModal: PropTypes.func.isRequired,\r\n AddItemEndpoint: PropTypes.string.isRequired,\r\n CreateListEndpoint: PropTypes.string.isRequired,\r\n UserIsAuthorized: PropTypes.bool.isRequired,\r\n LoginLink: PropTypes.string.isRequired\r\n};\r\n\r\nexport default AddToModal;\r\n","import React, { Fragment, useState } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport ModalLink from './ModalLink'\r\nimport AddToModal from './AddToModal'\r\nimport { addResourceStrings, translateResourceString } from '../util/translationUtility'\r\n\r\nconst AddToWishlistApp = ({\r\n Name,\r\n SKU,\r\n ImageUrl,\r\n Wishlists,\r\n AddItemEndpoint,\r\n AddListEndpoint,\r\n UserIsAuthorized,\r\n LoginLink,\r\n LocalizationItems\r\n}) => {\r\n addResourceStrings(LocalizationItems);\r\n\r\n const [Lists, updateLists] = useState(Wishlists)\r\n const [ModalIsOpen, toggleModal] = useState(false)\r\n const [linkClass, setLinkClass] = useState('fa fa-bookmark')\r\n const [srText, setSrText] = useState('')\r\n const [linkText, setLinkText] = useState(translateResourceString(\"/Product/AddToListButton\"))\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n );\r\n};\r\n\r\nAddToWishlistApp.propType = {\r\n Wishlists: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Name: PropTypes.string\r\n })\r\n ).isRequired,\r\n AddItemEndpoint: PropTypes.string.isRequired,\r\n AddListEndpoint: PropTypes.string.isRequired,\r\n UserIsAuthorized: PropTypes.bool.isRequired,\r\n LoginLink: PropTypes.string.isRequired\r\n};\r\n\r\nexport default AddToWishlistApp;","import { makeFormData } from \"./catalystFormDataBuilder\";\r\n\r\nconst makeAxiosCatalystPostData = data => makeFormData(data);\r\n\r\nconst defaultAxiosCatalystPostConfig = {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/x-www-form-urlencoded',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n }\r\n}\r\n\r\nexport { makeAxiosCatalystPostData, defaultAxiosCatalystPostConfig }\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport ReactDOMServer from 'react-dom/server';\r\n\r\n// Uncomment to package css transpiled from index.scss into index.css\r\n//import './index.css';\r\nimport './shims/polyfills';\r\n\r\nimport checkoutApp from './Components/checkout';\r\nimport SearchApp from './Components/search/SearchApp';\r\nimport TypeaheadApp from './Components/typeahead/TypeaheadApp';\r\nimport reorderApp from './Components/reorder';\r\nimport WishlistsApp from './Components/wishlists/WishlistsApp';\r\nimport AddToWishlistApp from './Components/addtowishlist/AddToWishlistApp';\r\nimport quickOrderApp from './Components/quickorder';\r\n\r\nimport * as CustomersApp from './Components/customers/CustomersApp';\r\n\r\nglobal.React = React;\r\nglobal.ReactDOM = ReactDOM;\r\nglobal.ReactDOMServer = ReactDOMServer;\r\n\r\nglobal.Checkout = checkoutApp;\r\nglobal.Search = SearchApp;\r\nglobal.Typeahead = TypeaheadApp\r\nglobal.Reorder = reorderApp;\r\nglobal.Wishlists = WishlistsApp;\r\nglobal.AddToWishlist = AddToWishlistApp;\r\nglobal.QuickOrder = quickOrderApp\r\n\r\nglobal.Contacts = CustomersApp.Contacts\r\nglobal.Organizations = CustomersApp.Organizations;\r\nglobal.Users = CustomersApp.Users\r\nglobal.Accounts = CustomersApp.Accounts;","/***\r\n * BEGIN Null Shims\r\n *\r\n * DDD 2018-08-09\r\n * these globally-defined objects have no value (functions do nothing), but\r\n * are used to fix reference errors server-side in libraries that must be\r\n * included in the project.\r\n *\r\n *\r\n * No names that are defined in Null Shims should be used in\r\n * 1) code that could run server side,\r\n * or\r\n * 2) code that fails to test these values\r\n * for null.\r\n *\r\n * ok:\r\n * componentDidMount() {\r\n * // we're in the browser here\r\n * window.location = \"example.com\";\r\n * }\r\n *\r\n * ok:\r\n * if (window.location){\r\n * // we're sure location is something\r\n * window.location = \"example.com\";\r\n * }\r\n *\r\n * not ok: *\r\n * window.location = \"example.com\"\r\n * \r\n */\r\n\r\n/***\r\n * END Null Shims\r\n */\r\n\r\n/***\r\n * Begin replacement shims\r\n * These shims should work like the native browser when\r\n * used server-side.\r\n */\r\n\r\n// IE 11 compatibility\r\n// https://github.com/uxitten/polyfill/blob/master/string.polyfill.js\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart\r\nif (!String.prototype.padStart) {\r\n // eslint-disable-next-line no-extend-native\r\n String.prototype.padStart = function padStart(targetLength,padString) {\r\n targetLength = targetLength>>0; //truncate if number or convert non-number to 0;\r\n padString = String((typeof padString !== 'undefined' ? padString : ' '));\r\n if (this.length > targetLength) {\r\n return String(this);\r\n }\r\n else {\r\n targetLength = targetLength-this.length;\r\n if (targetLength > padString.length) {\r\n padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed\r\n }\r\n return padString.slice(0,targetLength) + String(this);\r\n }\r\n };\r\n}\r\n\r\n// IE 11 compatibility\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\r\nif (!String.prototype.includes) {\r\n // eslint-disable-next-line no-extend-native\r\n String.prototype.includes = function(search, start) {\r\n if (typeof start !== 'number') {\r\n start = 0;\r\n }\r\n \r\n if (start + search.length > this.length) {\r\n return false;\r\n } else {\r\n return this.indexOf(search, start) !== -1;\r\n }\r\n };\r\n}\r\n\r\n// IE 11 compatibility\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes\r\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\r\nif (!Array.prototype.includes) {\r\n // eslint-disable-next-line no-extend-native\r\n Object.defineProperty(Array.prototype, 'includes', {\r\n value: function(searchElement, fromIndex) {\r\n\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n\r\n // 1. Let O be ? ToObject(this value).\r\n var o = Object(this);\r\n\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n\r\n // 3. If len is 0, return false.\r\n if (len === 0) {\r\n return false;\r\n }\r\n\r\n // 4. Let n be ? ToInteger(fromIndex).\r\n // (If fromIndex is undefined, this step produces the value 0.)\r\n var n = fromIndex | 0;\r\n\r\n // 5. If n ≥ 0, then\r\n // a. Let k be n.\r\n // 6. Else n < 0,\r\n // a. Let k be len + n.\r\n // b. If k < 0, let k be 0.\r\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\r\n\r\n function sameValueZero(x, y) {\r\n return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));\r\n }\r\n\r\n // 7. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let elementK be the result of ? Get(O, ! ToString(k)).\r\n // b. If SameValueZero(searchElement, elementK) is true, return true.\r\n if (sameValueZero(o[k], searchElement)) {\r\n return true;\r\n }\r\n // c. Increase k by 1. \r\n k++;\r\n }\r\n\r\n // 8. Return false\r\n return false;\r\n }\r\n });\r\n}\r\n\r\n// IE 11 compatibility\r\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\r\n// by way of MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\r\nif (!Array.prototype.find) {\r\n // eslint-disable-next-line no-extend-native\r\n Object.defineProperty(Array.prototype, 'find', {\r\n value: function(predicate) {\r\n // 1. Let O be ? ToObject(this value).\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n\r\n var o = Object(this);\r\n\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n\r\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n\r\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n var thisArg = arguments[1];\r\n\r\n // 5. Let k be 0.\r\n var k = 0;\r\n\r\n // 6. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let Pk be ! ToString(k).\r\n // b. Let kValue be ? Get(O, Pk).\r\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\r\n // d. If testResult is true, return kValue.\r\n var kValue = o[k];\r\n if (predicate.call(thisArg, kValue, k, o)) {\r\n return kValue;\r\n }\r\n // e. Increase k by 1.\r\n k++;\r\n }\r\n\r\n // 7. Return undefined.\r\n return undefined;\r\n },\r\n configurable: true,\r\n writable: true\r\n });\r\n}\r\n","export class TranslationUtility {\r\n constructor(localizationItems) {\r\n this.localizationItems = localizationItems;\r\n }\r\n\r\n translateResourceString(itemKey) {\r\n const translation = this.localizationItems.find(item => {\r\n return item.Key === itemKey;\r\n });\r\n if (translation !== undefined) {\r\n return translation.Value;\r\n }\r\n return itemKey;\r\n }\r\n\r\n translateResourceString(itemKey, ...formatChars) {\r\n const translation = this.localizationItems.find(item => {\r\n return item.Key === itemKey;\r\n });\r\n if (translation !== undefined) {\r\n return translation.Value.formatUnicorn(...formatChars);\r\n }\r\n return itemKey;\r\n }\r\n}\r\n\r\nexport const translateResourceString = (itemKey, ...formatChars) => {\r\n if (window.clientTranslationStrings) {\r\n var translation = window.clientTranslationStrings[itemKey];\r\n if (translation !== null && translation !== undefined) {\r\n return window.clientTranslationStrings[itemKey].formatUnicorn(...formatChars);\r\n }\r\n }\r\n return itemKey;\r\n}\r\n\r\nexport const addResourceStrings = (resourceStrings) => {\r\n if (!window.clientTranslationStrings) {\r\n window.clientTranslationStrings = resourceStrings\r\n } else {\r\n window.clientTranslationStrings = { ...window.clientTranslationStrings, ...resourceStrings };\r\n }\r\n}\r\n\r\n// String.format implementation literally from Stack Overflow: https://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format/18234317#18234317\r\nString.prototype.formatUnicorn = String.prototype.formatUnicorn ||\r\nfunction () {\r\n \"use strict\";\r\n var str = this.toString();\r\n if (arguments.length) {\r\n var t = typeof arguments[0];\r\n var key;\r\n var args = (\"string\" === t || \"number\" === t) ?\r\n Array.prototype.slice.call(arguments)\r\n : arguments[0];\r\n\r\n for (key in args) {\r\n str = str.replace(new RegExp(\"\\\\{\" + key + \"\\\\}\", \"gi\"), args[key]);\r\n }\r\n }\r\n\r\n return str;\r\n};","import { formDataToBody, makeFormData } from \"./catalystFormDataBuilder\";\r\n\r\n// Make a fetch init object with data that will deserialize correctly when posted to catalyst's asp.net-core\r\n// form data model binder\r\nfunction makeCatalystFetchPostInit(data) {\r\n return {\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n \"X-Requested-With\": \"Fetch\"\r\n },\r\n credentials: \"same-origin\",\r\n method: 'post',\r\n body: formDataToBody(makeFormData(data))\r\n }\r\n}\r\n\r\nexport { makeCatalystFetchPostInit }\r\n","import React, { useRef } from 'react'\r\nimport axios from 'axios';\r\nimport PropTypes from 'prop-types'\r\nimport { Button } from 'reactstrap'\r\nimport { translateResourceString } from '../../util/translationUtility'\r\nimport { defaultAxiosCatalystPostConfig, makeAxiosCatalystPostData } from \"../../util/axiosUtility\";\r\n\r\nconst NewListInput = ({\r\n Lists,\r\n UpdateLists,\r\n ToggleNewListModal = null,\r\n SelectActiveTab = null,\r\n AddProduct = null,\r\n CreateListEndpoint\r\n}) => {\r\n \r\n const newListName = useRef(null)\r\n\r\n const createList = (listName) => {\r\n if (!Lists.some(list => list.Name === listName)) {\r\n UpdateLists([{ Name: listName, Items: [] }, ...Lists])\r\n\r\n if (SelectActiveTab) SelectActiveTab(0)\r\n newListName.current.value = \"\"\r\n\r\n if (ToggleNewListModal != null) {\r\n ToggleNewListModal(false)\r\n }\r\n \r\n if (AddProduct != null) {\r\n AddProduct(listName)\r\n }\r\n }\r\n }\r\n const Create = (endpoint, listName) => {\r\n axios.post(endpoint, makeAxiosCatalystPostData({\r\n listName: listName\r\n }), defaultAxiosCatalystPostConfig)\r\n .then(function (response) {\r\n switch (response.data) {\r\n case 'OK':\r\n case 200:\r\n createList(listName)\r\n break\r\n case 'Conflict':\r\n case 409:\r\n alert(translateResourceString(\"/Wishlists/ErrorMessages/CreateList/Conflict\"))\r\n break\r\n case 'BadRequest':\r\n case 400:\r\n alert(translateResourceString(\"/Wishlists/ErrorMessages/CreateList/BadRequest\"))\r\n break\r\n default:\r\n console.error('Unhandled Response.')\r\n break\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error)\r\n });\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nNewListInput.propType = {\r\n Lists: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Name: PropTypes.string\r\n })\r\n ).isRequired,\r\n UpdateLists: PropTypes.func.isRequired,\r\n ToggleNewListModal: PropTypes.func,\r\n SelectActiveTab: PropTypes.func,\r\n CreateListEndpoint: PropTypes.string.isRequired\r\n};\r\n\r\nexport default NewListInput;","// BBS DDD from https://stackoverflow.com/questions/7905929/how-to-test-valid-uuid-guid\r\nconst guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n\r\nexport const isValidGuid = (s) => guidRegex.test(s);\r\n\r\n// https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\r\nexport const createGuid = () => {\r\n try {\r\n if (typeof crypto === \"undefined\") {\r\n crypto = window.msCrypto || window.crypto;\r\n }\r\n return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => \r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));\r\n } catch(error) {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }\r\n};","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nconst ProductItem = ({ \r\n Name, \r\n ImageUrl,\r\n Link \r\n}) => {\r\n return (\r\n
    \r\n \r\n \"12345\"\r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nProductItem.propType = {\r\n Name: PropTypes.string,\r\n ImageUrl: PropTypes.string,\r\n Link: PropTypes.string\r\n};\r\n\r\nexport default ProductItem;","/** Create a URLSearchParams from a FormData object. Not suitable for Blob\r\n * @throws if data is Blob\r\n * */\r\nconst formDataToBody = (formData) => {\r\n if (formData instanceof FormData) {\r\n for (var value of formData.values()) {\r\n if (value instanceof Blob) {\r\n // to do this we should implement a multipart-form-data content-type\r\n // see https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data\r\n // see https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects\r\n throw new Error(\"cannot yet use Blobs in catalystFormDataBuilder\")\r\n }\r\n }\r\n }\r\n return new URLSearchParams(formData);\r\n};\r\n\r\nlet addArrayElement = (formData, prefix, datum, i) => {\r\n addData(formData, `${prefix}[${i}]`, datum)\r\n}\r\n\r\nlet addArray = (formData, prefix, data) => {\r\n let i = 0\r\n data.forEach(datum => addArrayElement(formData, prefix, datum, i++))\r\n}\r\n\r\nlet addObject = (formData, prefix, data) => {\r\n var keys = Object.getOwnPropertyNames(data);\r\n if (prefix !== \"\") {\r\n prefix += \".\"\r\n }\r\n for (const key of keys) {\r\n addData(formData, prefix + key, data[key])\r\n }\r\n}\r\n\r\nlet addData = (formData, prefix, data) => {\r\n if (data === null) return;\r\n if (Array.isArray(data)) {\r\n addArray(formData, prefix, data)\r\n } else if (typeof data === 'object') {\r\n addObject(formData, prefix, data);\r\n } else {\r\n formData.append(prefix, data);\r\n }\r\n}\r\n\r\n/** Build form data that will have keys that can be bound to a model using asp.net core form data model-binder */\r\nconst makeFormData = data => {\r\n const prefix = \"\";\r\n const formData = new FormData();\r\n if (typeof 'data' != 'undefined' && data !== null) {\r\n addData(formData, prefix, data);\r\n }\r\n return formData;\r\n}\r\n\r\nexport {formDataToBody, makeFormData}\r\n","import { Checkbox } from \"@episerver/ui-framework\";\r\nimport React from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\n\r\nconst CheckBoxBooleanField: React.FC> = (props) => {\r\n const { index, property, control } = props;\r\n \r\n return (\r\n <>\r\n \r\n <>\r\n onChange(!value)}\r\n >\r\n {property.validationData.label}\r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default CheckBoxBooleanField;\r\n","import React, { useEffect } from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport { CurrencyModel } from \"../../../businessFoundation/Primitives/CurrencyManage/CurrencyModel\";\r\nimport { TextField } from \"@episerver/ui-framework\";\r\nconst CurrencyField: React.FC> = (props) => {\r\n const { index, property, control, setValue, errors } = props;\r\n const validationData = property.validationData as CurrencyModel;\r\n\r\n useEffect(() => {\r\n if (property.value) {\r\n setValue(`extendedProperties[${index}].value`, Number(property.value).toFixed(2));\r\n }\r\n }, []);\r\n\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default CurrencyField;\r\n","import React, { useEffect } from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport { DateModel } from \"../../../businessFoundation/Primitives/DateManage/DateModel\";\r\nimport { TextField } from \"@episerver/ui-framework\";\r\n\r\nconst DateField: React.FC> = (props) => {\r\n const { index, property, control, setValue, errors } = props;\r\n const validationData = property.validationData as DateModel;\r\n\r\n useEffect(() => {\r\n if (property.value) {\r\n setValue(`extendedProperties[${index}].value`, property.value.slice(0, 10));\r\n } else {\r\n setValue(`extendedProperties[${index}].value`, \"\");\r\n }\r\n }, [property.value]);\r\n\r\n const checkValue = (str: string | null) => {\r\n if (str) {\r\n const minValue = parseFloat(validationData.minValue.replace(/-/g, \"\"));\r\n const maxValue = parseFloat(validationData.maxValue.replace(/-/g, \"\"));\r\n const value = parseFloat(str.replace(/-/g, \"\"));\r\n if (value < minValue) {\r\n return `${property.friendlyName} must not be before ${validationData.minValue}.`;\r\n } else if (value > maxValue) {\r\n return `${property.friendlyName} must not be after ${validationData.maxValue}.`;\r\n } else {\r\n return \"\";\r\n }\r\n } else if (property.isNullable) {\r\n return \"\";\r\n } else {\r\n return `${property.friendlyName} is invalid`;\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n {\r\n const result = checkValue(v);\r\n if (result) {\r\n return result;\r\n } else {\r\n return true;\r\n }\r\n },\r\n },\r\n }}\r\n render={({ field: { value, onChange } }) => (\r\n \r\n )}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default DateField;\r\n","import React, { useEffect } from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport { DateTimeModel } from \"../../../businessFoundation/Primitives/DateTimeManage/DateTimeModel\";\r\nimport { TextField } from \"@episerver/ui-framework\";\r\n\r\nconst DateTimeField: React.FC> = (props) => {\r\n const { index, property, control, errors, setValue } = props;\r\n const validationData = property.validationData as DateTimeModel;\r\n\r\n useEffect(() => {\r\n if (property.value) {\r\n setValue(`extendedProperties[${index}].value`, property.value.slice(0, 16));\r\n } else {\r\n setValue(`extendedProperties[${index}].value`, \"\");\r\n }\r\n }, [property.value]);\r\n\r\n const checkValue = (str: string | null) => {\r\n if (str) {\r\n const minValue = parseFloat(validationData.minValue.replace(/-/g, \"\"));\r\n const maxValue = parseFloat(validationData.maxValue.replace(/-/g, \"\"));\r\n const value = parseFloat(str.replace(/-/g, \"\"));\r\n const timeValue = str.replace(/-/g, \"\").slice(9);\r\n if (value < minValue) {\r\n return `${property.friendlyName} must not be before ${validationData.minValue}.`;\r\n } else if (value > maxValue) {\r\n return `${property.friendlyName} must not be after ${validationData.maxValue}.`;\r\n } else if (value === maxValue && timeValue > \"00:00\") {\r\n return `${property.friendlyName} was out of the range of valid values [${validationData.minValue} 00:00:00, ${validationData.maxValue} 00:00:00]`;\r\n } else {\r\n return \"\";\r\n }\r\n } else if (property.isNullable) {\r\n return \"\";\r\n } else {\r\n return `${property.friendlyName} is invalid`;\r\n }\r\n };\r\n\r\n return (\r\n {\r\n const result = checkValue(v);\r\n if (result) {\r\n return result;\r\n } else {\r\n return true;\r\n }\r\n },\r\n },\r\n }}\r\n render={({ field: { value, onChange } }) => (\r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default DateTimeField;\r\n","import React from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport { TextField } from \"@episerver/ui-framework\";\r\n\r\nconst DecimalField: React.FC> = (props) => {\r\n const { index, property, control, errors } = props;\r\n\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default DecimalField;\r\n","import React from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport { DropdownBooleanModel } from \"../../../businessFoundation/Primitives/DropdownBooleanManage/DropdownBooleanModel\";\r\nimport { ExposedDropdownMenu } from \"@episerver/ui-framework\";\r\n\r\nconst DropdownBooleanField: React.FC> = (props) => {\r\n const { index, property, control, setValue } = props;\r\n const validationData = property.validationData as DropdownBooleanModel;\r\n\r\n return (\r\n (\r\n {\r\n setValue(`extendedProperties[${index}].value`, val);\r\n }}\r\n />\r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default DropdownBooleanField;\r\n","import React, { useEffect } from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport { TextField } from \"@episerver/ui-framework\";\r\n\r\nconst DurationField: React.FC> = (props) => {\r\n const { index, property, control, setValue, errors } = props;\r\n\r\n const convertToString = (val: any) => {\r\n if (val) {\r\n const _val = parseInt(val);\r\n const hours = _val / 60 < 10 ? `0${Math.round(_val / 60)}` : Math.round(_val / 60);\r\n const minutes = _val % 60 < 10 ? `0${_val % 60}` : _val % 60;\r\n return `${hours}:${minutes}`;\r\n } else {\r\n return \"00:00\";\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setValue(`extendedProperties[${index}].value`, convertToString(property.value));\r\n }, []);\r\n\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default DurationField;\r\n","import React from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport { UrlModel } from \"../../../businessFoundation/Primitives/UrlManage/UrlModel\";\r\nimport { TextField } from \"@episerver/ui-framework\";\r\n\r\nconst EmailField: React.FC> = (props) => {\r\n const { index, property, control, errors } = props;\r\n const validationData = property.validationData as UrlModel;\r\n\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default EmailField;\r\n","import React from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport { TextField } from \"@episerver/ui-framework\";\r\n\r\nconst GuidField: React.FC> = (props) => {\r\n const { index, property, control, errors } = props;\r\n\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default GuidField;\r\n","import React from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport { IntegerModel } from \"../../../businessFoundation/Primitives/IntegerManage/IntegerModel\";\r\nimport { TextField } from \"@episerver/ui-framework\";\r\n\r\nconst IntegerField: React.FC> = (props) => {\r\n const { index, property, control, errors } = props;\r\n const validationData = property.validationData as IntegerModel;\r\n\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default IntegerField;\r\n","import { TextField } from \"@episerver/ui-framework\";\r\nimport React from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\n\r\nconst LongTextField: React.FC> = (props) => {\r\n const { index, property, control, errors } = props;\r\n\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default LongTextField;\r\n","import PropTypes from \"prop-types\";\r\nimport React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\nvar Item = function Item(_ref) {\r\n var children = _ref.children,\r\n className = _ref.className,\r\n testSection = _ref.testSection,\r\n props = _objectWithoutProperties(_ref, [\"children\", \"className\", \"testSection\"]);\r\n\r\n return React.createElement(\"div\", _extends({\r\n \"data-test-section\": testSection,\r\n className: classNames(\"oui-form-field__item\", className)\r\n }, props), children);\r\n};\r\n\r\nItem.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n\r\n /** CSS class names. */\r\n className: PropTypes.string,\r\n testSection: PropTypes.string\r\n};\r\nexport default Item;","export var icons = [\"360-degrees\", \"360-degrees-thin\", \"align-center\", \"align-center-thin\", \"align-justify\", \"align-left\", \"align-left-thin\", \"align-right\", \"align-right-thin\", \"angle-down\", \"angle-right\", \"arrow-down-a-z\", \"arrow-down-z-a\", \"arrow-down-short-wide\", \"arrow-down-wide-short\", \"arrow-left\", \"arrow-left-to-line\", \"arrow-right\", \"arrow-right-from-bracket\", \"arrow-right-long\", \"arrow-right-to-bracket\", \"arrow-right-to-line\", \"arrow-rotate-left\", \"arrow-rotate-right\", \"arrow-turn-down-left\", \"arrow-turn-up\", \"arrow-up\", \"arrow-up-right-from-square\", \"arrow-up-thin\", \"arrows-from-dotted-line\", \"arrows-from-dotted-line-thin\", \"arrows-maximize\", \"arrows-minimize\", \"arrows-rotate\", \"arrows-up-down-left-right\", \"badge-percent\", \"ball-pile\", \"ball-pile-thin\", \"ban\", \"barcode\", \"bars\", \"bars-staggered\", \"bell\", \"bell-slash\", \"bell-slash-thin\", \"bell-thin\", \"bold\", \"bolt\", \"book\", \"book-open\", \"book-open-thin\", \"border-all\", \"border-all-thin\", \"border-none\", \"border-none-thin\", \"box\", \"box-archive\", \"box-archive-thin\", \"box-open\", \"boxes-stacked\", \"briefcase\", \"browser\", \"browser-thin\", \"bug\", \"bullseye-pointer\", \"calendar\", \"calendar-clock\", \"calendar-clock-thin\", \"calendar-thin\", \"caret-down-solid\", \"caret-up-solid\", \"cart-circle-check\", \"cart-minus\", \"cart-plus\", \"cart-shopping\", \"cart-shopping-fast\", \"chart-column\", \"chart-column-thin\", \"chart-line\", \"chart-mixed\", \"chart-mixed-thin\", \"check\", \"check-double\", \"chevron-down\", \"chevron-right\", \"circle\", \"circle-arrow-down\", \"circle-arrow-up\", \"circle-check\", \"circle-check-solid\", \"circle-check-thin\", \"circle-dot\", \"circle-dot-thin\", \"circle-exclamation\", \"circle-exclamation-thin\", \"circle-half-stroke-solid\", \"circle-info\", \"circle-info-thin\", \"circle-minus\", \"circle-question\", \"circle-question-thin\", \"circle-pause\", \"circle-play\", \"circle-plus\", \"circle-small-solid\", \"circle-solid\", \"circle-xmark\", \"clipboard\", \"clock\", \"clock-rotate-left\", \"clock-thin\", \"code\", \"code-thin\", \"columns-3\", \"columns-3-thin\", \"comment\", \"comment-thin\", \"comments\", \"copy\", \"cube\", \"cubes\", \"database\", \"diamond\", \"display\", \"display-thin\", \"download\", \"ellipsis-solid\", \"ellipsis-stroke\", \"ellipsis-stroke-thin\", \"ellipsis-stroke-vertical\", \"ellipsis-stroke-vertical-thin\", \"envelope\", \"envelope-open\", \"envelope-thin\", \"eraser\", \"expand\", \"eye\", \"eye-slash\", \"eye-thin\", \"file\", \"file-chart-pie\", \"file-chart-pie-thin\", \"file-exclamation\", \"file-exclamation-thin\", \"file-export\", \"file-image\", \"file-image-thin\", \"file-import\", \"file-pdf\", \"file-pdf-thin\", \"file-pen\", \"file-plus\", \"file-spreadsheet\", \"file-spreadsheet-thin\", \"file-video\", \"file-video-thin\", \"file-word\", \"file-word-thin\", \"file-zipper\", \"file-zipper-thin\", \"filter\", \"filter-slash\", \"filter-thin\", \"flag\", \"flag-pennant\", \"flag-thin\", \"flask\", \"flask-thin\", \"floppy-disk\", \"folder\", \"folder-arrow-down\", \"folder-blank\", \"folder-bookmark\", \"folder-bookmark-thin\", \"folder-image\", \"folder-open\", \"folder-plus\", \"folder-tree\", \"folders\", \"folders-thin\", \"gallery-thumbnails\", \"gauge\", \"gear\", \"gear-thin\", \"gift\", \"glasses-round\", \"globe\", \"globe-thin\", \"grid\", \"grid-2-plus\", \"grid-thin\", \"grip\", \"grip-vertical\", \"hand-pointer\", \"hashtag\", \"heading\", \"heading-thin\", \"highlighter\", \"history-thin\", \"horizontal-rule\", \"horizontal-rule-thin\", \"house\", \"house-blank\", \"house-thin\", \"image\", \"image-landscape\", \"image-slash\", \"image-slash-thin\", \"image-thin\", \"inbox-full\", \"input-numeric\", \"input-numeric-thin\", \"input-pipe\", \"input-text\", \"input-text-thin\", \"italic\", \"key\", \"key-skeleton-left-right\", \"language\", \"laptop-mobile\", \"layer-group\", \"left-to-line\", \"lightbulb\", \"line-height\", \"link\", \"link-horizontal\", \"link-horizontal-thin\", \"link-horizontal-slash\", \"link-horizontal-slash-thin\", \"link-simple-thin\", \"link-slash\", \"list\", \"list-check\", \"list-dropdown\", \"list-dropdown-thin\", \"list-ol\", \"list-thin\", \"list-tree\", \"list-tree-thin\", \"list-ul\", \"location-dot\", \"lock\", \"lock-open\", \"magnifying-glass-minus\", \"magnifying-glass-plus\", \"megaphone\", \"megaphone-thin\", \"message-lines\", \"message-lines-thin\", \"mobile\", \"mobile-thin\", \"money-bill\", \"money-check-pen\", \"monitor-waveform\", \"monitor-waveform-thin\", \"mug-hot\", \"objects-align-bottom\", \"objects-align-bottom-thin\", \"objects-align-center-vertical\", \"objects-align-center-vertical-thin\", \"objects-align-top\", \"objects-align-top-thin\", \"octagon-minus\", \"paper-plane-top\", \"paste\", \"pause\", \"pen\", \"pen-field\", \"pen-line\", \"pen-slash\", \"pen-thin\", \"pen-to-square\", \"pennant-thin\", \"people-simple\", \"phone\", \"pipe-section\", \"pipe-section-thin\", \"play\", \"play-thin\", \"plus\", \"plus-thin\", \"presentation-screen\", \"puzzle-piece\", \"quote-right\", \"rectangle-list\", \"rectangle-wide\", \"rectangle-wide-thin\", \"reply\", \"right-from-line\", \"rocket\", \"scissors\", \"search\", \"search-thin\", \"shapes\", \"shapes-thin\", \"share-nodes\", \"shield-check\", \"sitemap\", \"sitemap-thin\", \"slider\", \"sliders\", \"sliders-thin\", \"sort-solid\", \"spinner\", \"split\", \"square-check\", \"square-check-thin\", \"square-plus\", \"square-poll-horizontal\", \"square-user\", \"store\", \"strikethrough\", \"table-layout\", \"table-layout-thin\", \"tablet\", \"tag\", \"tag-thin\", \"terminal\", \"text\", \"text-thin\", \"thumbs-up\", \"thumbs-up-thin\", \"thumbtack\", \"thumbtack-solid\", \"thumbtack-thin\", \"timeline-arrow\", \"timeline-arrow-thin\", \"toggle-off\", \"toggle-off-thin\", \"toolbox\", \"trash-can\", \"trash-can-thin\", \"triangle-exclamation\", \"triangle-exclamation-thin\", \"truck\", \"underline\", \"upload\", \"upload-thin\", \"user\", \"user-check\", \"user-group\", \"user-group-thin\", \"user-lock\", \"user-pen\", \"user-plus\", \"user-robot-thin\", \"user-slash\", \"user-thin\", \"user-xmark\", \"users\", \"vials\", \"vials-thin\", \"video\", \"wave-pulse\", \"window-restore\", \"window-restore-thin\", \"xmark\", \"xmark-thin\"];\r\nexport var iconsForLayering = [\"1-thin\", \"arrow-down-arrow-up-thin\", \"arrow-left-long\", \"arrow-left-long-regular\", \"arrow-right-solid\", \"arrows-from-line\", \"arrows-from-line-thin\", \"arrows-left-right-regular\", \"badge-percent-thin\", \"browsers-thin\", \"cart-shopping-thin\", \"cubes-thin\", \"d-solid\", \"droplet-regular\", \"earth-americas-thin\", \"file-pen-thin\", \"money-bill-thin\", \"pipe\", \"rectangle-thin\", \"square-check-regular\", \"t-solid\", \"users-thin\"];\r\nexport var customIcons = [\"ax-app-push\", \"ax-app-push-thin\", \"ax-web-push\", \"ax-web-push-thin\"];\r\nexport var brandIcons = [\"facebook-f\", \"google\", \"houzz\", \"instagram\", \"linkedin-in\", \"pinterest-p\", \"snapchat\", \"strava\", \"tiktok\", \"tumblr\", \"twitter\", \"weibo\", \"weixin\", \"youtube\"];","import _pt from \"prop-types\";\r\nimport React from \"react\";\r\nimport { Icon, OutlinedIcon, LayeredIcons } from \"./icon\";\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\n\r\nexport var AppPushIcon = function AppPushIcon(_ref) {\r\n var className = _ref.className,\r\n color = _ref.color,\r\n size = _ref.size,\r\n title = _ref.title,\r\n _ref$weight = _ref.weight,\r\n weight = _ref$weight === void 0 ? \"\" : _ref$weight,\r\n props = _objectWithoutProperties(_ref, [\"className\", \"color\", \"size\", \"title\", \"weight\"]);\r\n\r\n var mobileIcon = \"mobile\";\r\n var arrowLeftLongIcon = \"arrow-left-long-regular\";\r\n\r\n if (weight === \"thin\") {\r\n mobileIcon = \"mobile-thin\";\r\n arrowLeftLongIcon = \"arrow-left-long\";\r\n }\r\n\r\n return React.createElement(LayeredIcons, _extends({\r\n className: className,\r\n size: size,\r\n title: title\r\n }, props), React.createElement(Icon, {\r\n color: color,\r\n name: mobileIcon,\r\n size: size\r\n }), React.createElement(OutlinedIcon, {\r\n color: color,\r\n name: arrowLeftLongIcon,\r\n size: size,\r\n transform: \"shrink-4 right-4 up-2\"\r\n }));\r\n};\r\nAppPushIcon.propTypes = {\r\n className: _pt.string,\r\n color: _pt.string,\r\n size: _pt.oneOf([\"small\", \"medium\", \"large\"]).isRequired,\r\n title: _pt.string,\r\n weight: _pt.oneOf([\"thin\"])\r\n};\r\nexport var WebPushIcon = function WebPushIcon(_ref2) {\r\n var className = _ref2.className,\r\n color = _ref2.color,\r\n size = _ref2.size,\r\n title = _ref2.title,\r\n weight = _ref2.weight,\r\n props = _objectWithoutProperties(_ref2, [\"className\", \"color\", \"size\", \"title\", \"weight\"]);\r\n\r\n var displayIcon = \"display\";\r\n var arrowLeftLongIcon = \"arrow-left-long-regular\";\r\n\r\n if (weight === \"thin\") {\r\n displayIcon = \"display-thin\";\r\n arrowLeftLongIcon = \"arrow-left-long\";\r\n }\r\n\r\n return React.createElement(LayeredIcons, _extends({\r\n className: className,\r\n size: size,\r\n title: title\r\n }, props), React.createElement(Icon, {\r\n color: color,\r\n name: displayIcon,\r\n size: size\r\n }), React.createElement(OutlinedIcon, {\r\n color: color,\r\n name: arrowLeftLongIcon,\r\n size: size,\r\n transform: \"shrink-5.5 right-5 up-1.5\"\r\n }));\r\n};\r\nWebPushIcon.propTypes = {\r\n className: _pt.string,\r\n color: _pt.string,\r\n size: _pt.oneOf([\"small\", \"medium\", \"large\"]).isRequired,\r\n title: _pt.string,\r\n weight: _pt.oneOf([\"thin\"])\r\n};","import _pt from \"prop-types\";\r\nimport React, { memo } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { brandBackgroundPrimaryColor, iconBaseColor } from \"@optimizely/design-tokens/dist/json/colors.json\";\r\nimport { brandIcons } from \"./icon-types\";\r\n//import * as fa from \"./icon-imports\";\r\nimport { AppPushIcon, WebPushIcon } from \"./custom-icons\"; // @ts-ignore: The beta package has changed the type definitions\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\n//library.add(fa);\r\nvar Icon = memo(function (_ref) {\r\n var className = _ref.className,\r\n _ref$color = _ref.color,\r\n color = _ref$color === void 0 ? iconBaseColor : _ref$color,\r\n name = _ref.name,\r\n size = _ref.size,\r\n title = _ref.title,\r\n transform = _ref.transform,\r\n props = _objectWithoutProperties(_ref, [\"className\", \"color\", \"name\", \"size\", \"title\", \"transform\"]);\r\n\r\n // Check for custom icons first. If this starts getting long we can separate it out.\r\n var customIcon;\r\n\r\n switch (name) {\r\n case \"ax-app-push\":\r\n customIcon = React.createElement(AppPushIcon, {\r\n className: className,\r\n color: color,\r\n size: size,\r\n title: title\r\n });\r\n break;\r\n\r\n case \"ax-app-push-thin\":\r\n customIcon = React.createElement(AppPushIcon, {\r\n className: className,\r\n color: color,\r\n size: size,\r\n title: title,\r\n weight: \"thin\"\r\n });\r\n break;\r\n\r\n case \"ax-web-push\":\r\n customIcon = React.createElement(WebPushIcon, {\r\n className: className,\r\n color: color,\r\n size: size,\r\n title: title\r\n });\r\n break;\r\n\r\n case \"ax-web-push-thin\":\r\n customIcon = React.createElement(WebPushIcon, {\r\n className: className,\r\n color: color,\r\n size: size,\r\n title: title,\r\n weight: \"thin\"\r\n });\r\n break;\r\n }\r\n\r\n if (customIcon) {\r\n return customIcon;\r\n } // FontAwesome uses the same icon name no matter the weight, so we strip off\r\n // our weight indicator and then change the icon weight prefix if necessary\r\n\r\n\r\n var strippedName = name;\r\n var weight = brandIcons.includes(name) ? \"fab\" : \"fal\";\r\n\r\n if (name.endsWith(\"-regular\")) {\r\n weight = \"far\";\r\n strippedName = name.replace(\"-regular\", \"\");\r\n } else if (name.endsWith(\"-solid\")) {\r\n weight = \"fas\";\r\n strippedName = name.replace(\"-solid\", \"\");\r\n } else if (name.endsWith(\"-thin\")) {\r\n weight = \"fat\";\r\n strippedName = name.replace(\"-thin\", \"\");\r\n }\r\n\r\n return React.createElement(FontAwesomeIcon, _extends({\r\n className: classNames(\"axiom-icon\", \"axiom-icon--\".concat(size), \"fa-fw\", className),\r\n color: color,\r\n icon: [weight, strippedName],\r\n title: title,\r\n transform: transform\r\n }, props));\r\n});\r\nIcon.propTypes = {\r\n className: _pt.string,\r\n color: _pt.string,\r\n name: _pt.any.isRequired,\r\n size: _pt.oneOf([\"small\", \"medium\", \"large\"]).isRequired,\r\n title: _pt.string,\r\n transform: _pt.string\r\n};\r\n\r\nvar OutlinedIcon = function OutlinedIcon(_ref2) {\r\n var className = _ref2.className,\r\n color = _ref2.color,\r\n name = _ref2.name,\r\n _ref2$outlineColor = _ref2.outlineColor,\r\n outlineColor = _ref2$outlineColor === void 0 ? brandBackgroundPrimaryColor : _ref2$outlineColor,\r\n size = _ref2.size,\r\n title = _ref2.title,\r\n transform = _ref2.transform,\r\n props = _objectWithoutProperties(_ref2, [\"className\", \"color\", \"name\", \"outlineColor\", \"size\", \"title\", \"transform\"]);\r\n\r\n return React.createElement(React.Fragment, null, React.createElement(Icon, {\r\n className: \"axiom-icon-outline\",\r\n color: outlineColor,\r\n name: name // @ts-ignore\r\n ,\r\n style: {\r\n stroke: \"\".concat(outlineColor)\r\n },\r\n transform: transform\r\n }), React.createElement(Icon, _extends({\r\n className: className,\r\n color: color,\r\n name: name,\r\n size: size,\r\n title: title,\r\n transform: transform\r\n }, props)));\r\n};\r\n\r\nOutlinedIcon.propTypes = {\r\n className: _pt.string,\r\n color: _pt.string,\r\n name: _pt.any.isRequired,\r\n size: _pt.oneOf([\"small\", \"medium\", \"large\"]).isRequired,\r\n title: _pt.string,\r\n transform: _pt.string,\r\n outlineColor: _pt.string\r\n};\r\n\r\nvar LayeredIcons = function LayeredIcons(_ref3) {\r\n var children = _ref3.children,\r\n className = _ref3.className,\r\n size = _ref3.size,\r\n props = _objectWithoutProperties(_ref3, [\"children\", \"className\", \"size\"]);\r\n\r\n return React.createElement(\"span\", _extends({\r\n className: classNames(\"axiom-layered-icons\", \"axiom-icon--\".concat(size), \"fa-layers fa-fw\", className)\r\n }, props), children);\r\n};\r\n\r\nLayeredIcons.propTypes = {\r\n children: _pt.any,\r\n className: _pt.string,\r\n size: _pt.oneOf([\"small\", \"medium\", \"large\"]).isRequired,\r\n title: _pt.string\r\n};\r\nIcon.displayName = \"Icon\";\r\nOutlinedIcon.displayName = \"OutlinedIcon\";\r\nLayeredIcons.displayName = \"LayeredIcons\";\r\nexport { Icon, OutlinedIcon, LayeredIcons };","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\nimport { Icon } from \"../Icon/icon\";\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\n\r\n/**\r\n * @param {Object} props - Properties passed to component\r\n * @returns {ReactElement}\r\n */\r\n\r\nvar Link = function Link(_ref) {\r\n var _classNames;\r\n\r\n var ariaLabel = _ref.ariaLabel,\r\n children = _ref.children,\r\n className = _ref.className,\r\n href = _ref.href,\r\n leftIcon = _ref.leftIcon,\r\n onClick = _ref.onClick,\r\n _ref$isDisabled = _ref.isDisabled,\r\n isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,\r\n _ref$isFullWidth = _ref.isFullWidth,\r\n isFullWidth = _ref$isFullWidth === void 0 ? false : _ref$isFullWidth,\r\n _ref$newWindow = _ref.newWindow,\r\n newWindow = _ref$newWindow === void 0 ? false : _ref$newWindow,\r\n rightIcon = _ref.rightIcon,\r\n style = _ref.style,\r\n testSection = _ref.testSection,\r\n props = _objectWithoutProperties(_ref, [\"ariaLabel\", \"children\", \"className\", \"href\", \"leftIcon\", \"onClick\", \"isDisabled\", \"isFullWidth\", \"newWindow\", \"rightIcon\", \"style\", \"testSection\"]);\r\n\r\n var classes = classNames((_classNames = {}, _defineProperty(_classNames, \"link\", true), _defineProperty(_classNames, \"link--\".concat(style), style), _defineProperty(_classNames, \"link--disabled\", isDisabled), _defineProperty(_classNames, \"pointer-events--none\", isDisabled), _defineProperty(_classNames, \"width--1-1\", isFullWidth), _defineProperty(_classNames, \"display--inline-block \", isFullWidth), _defineProperty(_classNames, \"flex--inline flex-justified--center flex-align--center\", leftIcon || rightIcon), _classNames), className);\r\n var leftIconComp = leftIcon ? React.createElement(\"div\", {\r\n className: \"flex flex-self--center push-half--right\"\r\n }, React.createElement(Icon, {\r\n className: \"axiom-link__left-icon\",\r\n name: leftIcon,\r\n size: \"small\"\r\n })) : \"\";\r\n var rightIconComp = rightIcon ? React.createElement(\"div\", {\r\n className: \"flex flex-self--center push-half--left\"\r\n }, React.createElement(Icon, {\r\n className: \"axiom-link__right-icon\",\r\n name: rightIcon,\r\n size: \"small\"\r\n })) : \"\";\r\n\r\n if (!href && !onClick) {\r\n return React.createElement(\"span\", _extends({\r\n \"data-oui-component\": true,\r\n className: classes,\r\n \"data-test-section\": testSection,\r\n \"data-track-id\": testSection,\r\n disabled: isDisabled\r\n }, props), leftIcon && leftIconComp, children, rightIcon && rightIconComp);\r\n }\r\n\r\n return React.createElement(\"a\", _extends({\r\n \"aria-label\": ariaLabel,\r\n \"data-oui-component\": true,\r\n href: href,\r\n className: classes,\r\n \"data-test-section\": testSection,\r\n \"data-track-id\": testSection,\r\n onClick: onClick\r\n }, newWindow ? {\r\n target: \"_blank\",\r\n rel: \"noopener noreferrer\"\r\n } : {}, {\r\n disabled: isDisabled\r\n }, props), leftIcon && leftIconComp, children, rightIcon && rightIconComp);\r\n};\r\n\r\nLink.propTypes = {\r\n /** Label to use for screen readers */\r\n ariaLabel: PropTypes.string,\r\n\r\n /** Text/node that is linked */\r\n children: PropTypes.node.isRequired,\r\n\r\n /** CSS class names. */\r\n className: PropTypes.string,\r\n\r\n /** Href for the anchor element */\r\n href: PropTypes.string,\r\n\r\n /** Disable link and interactivity */\r\n isDisabled: PropTypes.bool,\r\n\r\n /** Whether or not this link is full width */\r\n isFullWidth: PropTypes.bool,\r\n\r\n /** Icon to display on the left */\r\n leftIcon: PropTypes.node,\r\n\r\n /** Open link in new window */\r\n newWindow: PropTypes.bool,\r\n\r\n /** Click handler function */\r\n onClick: PropTypes.func,\r\n\r\n /** Icon to display on the right */\r\n rightIcon: PropTypes.node,\r\n\r\n /** Link style options */\r\n style: PropTypes.oneOf([\"default\", \"dark\", \"muted\", \"bad-news\", \"reverse\"]),\r\n\r\n /** Hook for automated JavaScript tests */\r\n testSection: PropTypes.string\r\n};\r\nexport default Link;","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\nimport { Icon } from \"../Icon/icon\";\r\nimport { brandPrimaryColor } from \"@optimizely/design-tokens/dist/json/colors.json\";\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\n\r\n/**\r\n * Generates a `spinner` element with/without overlay and optionally\r\n * using props for sizes small or medium for smaller sizes.\r\n * @param {Object} props - Properties passed to component\r\n * @returns {ReactElement}\r\n */\r\n\r\nvar Spinner = function Spinner(_ref) {\r\n var className = _ref.className,\r\n hasOverlay = _ref.hasOverlay,\r\n _ref$size = _ref.size,\r\n size = _ref$size === void 0 ? \"large\" : _ref$size,\r\n testSection = _ref.testSection,\r\n props = _objectWithoutProperties(_ref, [\"className\", \"hasOverlay\", \"size\", \"testSection\"]);\r\n\r\n var spinner = React.createElement(Icon, _extends({\r\n className: classNames(\"axiom-spinner fa-spin-pulse\", className),\r\n color: brandPrimaryColor,\r\n name: \"spinner\",\r\n size: size,\r\n \"data-test-section\": testSection\r\n }, props));\r\n\r\n if (hasOverlay) {\r\n return React.createElement(\"div\", {\r\n \"data-oui-component\": true,\r\n \"data-test-section\": testSection,\r\n className: \"oui-overlay\"\r\n }, spinner);\r\n }\r\n\r\n return spinner;\r\n};\r\n\r\nSpinner.propTypes = {\r\n /** CSS class names. */\r\n className: PropTypes.string,\r\n\r\n /** boolean class for establish overlay */\r\n hasOverlay: PropTypes.bool,\r\n\r\n /** Various sizes. Defaults to large. */\r\n size: PropTypes.oneOf([\"small\", \"medium\", \"large\"]),\r\n\r\n /** Hook for automated JavaScript tests */\r\n testSection: PropTypes.string\r\n};\r\nSpinner.displayName = \"Spinner\";\r\nexport default Spinner;","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\nimport Spinner from \"../Spinner\";\r\nimport { Icon } from \"../Icon/icon\";\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\n/**\r\n * @param {Object} props - Properties passed to component\r\n * @returns {ReactElement}\r\n */\r\n\r\nvar Button = function Button(_ref) {\r\n var _classNames;\r\n\r\n var ariaLabel = _ref.ariaLabel,\r\n ariaHasPopup = _ref.ariaHasPopup,\r\n buttonRef = _ref.buttonRef,\r\n children = _ref.children,\r\n className = _ref.className,\r\n isActive = _ref.isActive,\r\n isDisabled = _ref.isDisabled,\r\n isLink = _ref.isLink,\r\n isLoading = _ref.isLoading,\r\n isSubmit = _ref.isSubmit,\r\n leftIcon = _ref.leftIcon,\r\n loadingText = _ref.loadingText,\r\n onBlur = _ref.onBlur,\r\n onClick = _ref.onClick,\r\n onMouseDown = _ref.onMouseDown,\r\n rightIcon = _ref.rightIcon,\r\n size = _ref.size,\r\n style = _ref.style,\r\n testSection = _ref.testSection,\r\n title = _ref.title,\r\n _ref$width = _ref.width,\r\n width = _ref$width === void 0 ? \"default\" : _ref$width,\r\n props = _objectWithoutProperties(_ref, [\"ariaLabel\", \"ariaHasPopup\", \"buttonRef\", \"children\", \"className\", \"isActive\", \"isDisabled\", \"isLink\", \"isLoading\", \"isSubmit\", \"leftIcon\", \"loadingText\", \"onBlur\", \"onClick\", \"onMouseDown\", \"rightIcon\", \"size\", \"style\", \"testSection\", \"title\", \"width\"]);\r\n\r\n var buttonClassNames = classNames(\"oui-button\", (_classNames = {}, _defineProperty(_classNames, \"oui-button--\".concat(style), style), _defineProperty(_classNames, \"oui-button--\".concat(size), size), _defineProperty(_classNames, \"oui-button--\".concat(width), width), _defineProperty(_classNames, \"is-active\", isActive), _defineProperty(_classNames, \"oui-button--loading\", isLoading), _defineProperty(_classNames, \"flex--inline flex-justified--center flex-align--center\", leftIcon || rightIcon), _classNames), className);\r\n var type = isSubmit ? \"submit\" : \"button\";\r\n\r\n function handleOnClick(event) {\r\n if (isDisabled || isLoading) {\r\n return;\r\n }\r\n\r\n onClick(event);\r\n }\r\n\r\n var leftIconClasses = classNames(\"flex\", \"flex-self--center\", {\r\n \"push--right\": size !== \"small\",\r\n \"push-half--right\": size === \"small\"\r\n });\r\n var leftIconComp = leftIcon ? React.createElement(\"div\", {\r\n className: leftIconClasses\r\n }, React.createElement(Icon, {\r\n name: leftIcon,\r\n size: size === \"large\" ? \"medium\" : \"small\"\r\n })) : \"\";\r\n var rightIconClasses = classNames(\"flex\", \"flex-self--center\", {\r\n \"push--left\": size !== \"small\",\r\n \"push-half--left\": size === \"small\"\r\n });\r\n var rightIconComp = rightIcon ? React.createElement(\"div\", {\r\n className: rightIconClasses\r\n }, React.createElement(Icon, {\r\n name: rightIcon,\r\n size: size === \"large\" ? \"medium\" : \"small\"\r\n })) : \"\";\r\n\r\n if (isLink) {\r\n return React.createElement(\"div\", _extends({\r\n \"data-oui-component\": true,\r\n className: buttonClassNames,\r\n disabled: isDisabled,\r\n onBlur: onBlur,\r\n \"data-test-section\": testSection,\r\n ref: buttonRef\r\n }, props), leftIcon && leftIconComp, children, rightIcon && rightIconComp);\r\n }\r\n\r\n return React.createElement(\"button\", _extends({\r\n \"data-oui-component\": true,\r\n className: buttonClassNames,\r\n disabled: isDisabled || isLoading,\r\n type: type,\r\n onBlur: onBlur,\r\n onClick: handleOnClick,\r\n onMouseDown: onMouseDown,\r\n \"data-test-section\": testSection,\r\n \"aria-label\": ariaLabel,\r\n \"aria-haspopup\": ariaHasPopup,\r\n \"aria-live\": \"polite\",\r\n title: title,\r\n ref: buttonRef\r\n }, props), isLoading ? React.createElement(Spinner, {\r\n \"data-test-section\": \"button-spinner\",\r\n size: \"small\"\r\n }) : leftIcon && leftIconComp, isLoading ? loadingText || \"Processing\" : children, !isLoading && rightIcon && rightIconComp);\r\n};\r\n\r\nButton.propTypes = {\r\n /** Should be true if this button displays a menu or tooltip */\r\n ariaHasPopup: PropTypes.bool,\r\n\r\n /** Describes buttons that have an icon but no text */\r\n ariaLabel: PropTypes.string,\r\n\r\n /** React ref to the underlying button component */\r\n buttonRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\r\n current: PropTypes.object\r\n })]),\r\n\r\n /** Text within the button */\r\n children: PropTypes.node.isRequired,\r\n\r\n /** CSS class names. */\r\n className: PropTypes.string,\r\n\r\n /** Render button with active state */\r\n isActive: PropTypes.bool,\r\n\r\n /** Prevent users from interacting with the button */\r\n isDisabled: PropTypes.bool,\r\n\r\n /** Changes the button to a div for insertion within a Link component */\r\n isLink: PropTypes.bool,\r\n\r\n /** When true, adds a spinner to the button and disables the button */\r\n isLoading: PropTypes.bool,\r\n\r\n /** Make the button act as a submit button */\r\n isSubmit: PropTypes.bool,\r\n\r\n /** Icon to display on the left */\r\n leftIcon: PropTypes.node,\r\n\r\n /** When the button adds a spinner, it displays this text */\r\n loadingText: PropTypes.string,\r\n\r\n /** Function that fires when the button loses focus */\r\n onBlur: PropTypes.func,\r\n\r\n /** Function that fires when the button is clicked on */\r\n onClick: PropTypes.func,\r\n\r\n /** Function that fires when the button is mouse downed */\r\n onMouseDown: PropTypes.func,\r\n\r\n /** Icon to display on the right */\r\n rightIcon: PropTypes.node,\r\n\r\n /** Various height and width options */\r\n size: PropTypes.oneOf([\"tiny\", \"small\", \"large\", \"narrow\", \"tight\"]),\r\n\r\n /** Various color options */\r\n style: PropTypes.oneOf([\"highlight\", \"danger\", \"danger-outline\", \"outline\", \"outline-reverse\", \"plain\", \"toggle\", \"underline\", \"unstyled\"]),\r\n\r\n /** Hook for automated JavaScript tests */\r\n testSection: PropTypes.string,\r\n\r\n /** Title of the button shown as tooltip text when the button is hovered */\r\n title: PropTypes.string,\r\n\r\n /** Various height and width options */\r\n width: PropTypes.oneOf([\"default\", \"full\"])\r\n};\r\nButton.defaultProps = {\r\n isLink: false,\r\n isLoading: false,\r\n isDisabled: false,\r\n isSubmit: false,\r\n loadingText: \"\",\r\n onBlur: function onBlur() {\r\n return null;\r\n },\r\n onClick: function onClick() {\r\n return null;\r\n },\r\n onMouseDown: function onMouseDown() {\r\n return null;\r\n },\r\n width: \"default\"\r\n};\r\nButton.displayName = \"Button\";\r\nexport default Button;","/* eslint-disable no-script-url */\r\nimport React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\nimport { checkPropIsGreaterThanOrEqualTo } from \"../../utils/custom-prop-types\";\r\nimport Spinner from \"../Spinner\";\r\nimport Link from \"../Link\";\r\nimport _ from \"lodash\";\r\nimport flatten from \"lodash/flatten\";\r\nimport Button from \"../Button\";\r\n\r\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\r\n\r\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\r\n\r\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\r\n\r\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\r\n\r\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\r\n\r\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\r\n\r\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\r\n\r\n\r\nvar ELLIPSES_PLACEHOLDER = null;\r\nvar PAGE_NUMBER_PLACEHOLDER = \"[pageNumber]\";\r\n\r\nvar PaginationControls =\r\n/*#__PURE__*/\r\nfunction (_Component) {\r\n _inherits(PaginationControls, _Component);\r\n\r\n function PaginationControls() {\r\n var _getPrototypeOf2;\r\n\r\n var _this;\r\n\r\n _classCallCheck(this, PaginationControls);\r\n\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key];\r\n }\r\n\r\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PaginationControls)).call.apply(_getPrototypeOf2, [this].concat(args)));\r\n\r\n _defineProperty(_assertThisInitialized(_this), \"handlePageChange\", function (newPage) {\r\n return function () {\r\n var _this$props = _this.props,\r\n goToPage = _this$props.goToPage,\r\n isLoading = _this$props.isLoading;\r\n\r\n if (!isLoading) {\r\n goToPage(newPage);\r\n }\r\n };\r\n });\r\n\r\n return _this;\r\n }\r\n\r\n _createClass(PaginationControls, [{\r\n key: \"getCoercedInputs\",\r\n value: function getCoercedInputs() {\r\n var _this$props2 = this.props,\r\n currentPage = _this$props2.currentPage,\r\n totalSlots = _this$props2.totalSlots,\r\n totalPages = _this$props2.totalPages; // Ensure total pages is at least 2\r\n\r\n var sanitizedTotalPages = Math.max(totalPages, 2); // Ensure at least 7 slots\r\n\r\n var sanitizedTotalSlots = Math.min(Math.max(totalSlots, 7), sanitizedTotalPages); // Calculate number of numbers on either side of currentPage number\r\n // 5 represents the 5 guaranteed slots\r\n // (firstPage, beginning dots, currentPage, endingDots, lastPage)\r\n\r\n var buffer = Math.floor((sanitizedTotalSlots - 5) / 2); // Calculate max consecutive numbers (besides 1, lastPage, and ellipses)\r\n // 3 represents the 3 guaranteed slots when not in the middle state\r\n // (firstPage, endingDots, lastPage)\r\n\r\n var remainingSlotsToFill = sanitizedTotalSlots - 3; // Adjust current page to stay in range\r\n\r\n var sanitizedCurrentPage = Math.max(Math.min(currentPage, sanitizedTotalPages), 1);\r\n return {\r\n totalPages: sanitizedTotalPages,\r\n totalSlots: sanitizedTotalSlots,\r\n buffer: buffer,\r\n remainingSlotsToFill: remainingSlotsToFill,\r\n currentPage: sanitizedCurrentPage\r\n };\r\n }\r\n }, {\r\n key: \"fillPageSlots\",\r\n value: function fillPageSlots() {\r\n var _this$getCoercedInput = this.getCoercedInputs(),\r\n totalPages = _this$getCoercedInput.totalPages,\r\n totalSlots = _this$getCoercedInput.totalSlots,\r\n buffer = _this$getCoercedInput.buffer,\r\n remainingSlotsToFill = _this$getCoercedInput.remainingSlotsToFill,\r\n currentPage = _this$getCoercedInput.currentPage;\r\n\r\n var distanceFromCurrentPageToFront = currentPage - 1;\r\n var distanceFromCurrentPageToBack = totalPages - currentPage;\r\n var currentPageIsCloseToBack = distanceFromCurrentPageToBack + buffer <= remainingSlotsToFill;\r\n var currentPageIsCloseToFront = distanceFromCurrentPageToFront + buffer <= remainingSlotsToFill;\r\n var ellipsesRequired = totalPages > totalSlots;\r\n\r\n var pageNumbers = _ // Generate entire array of page numbers\r\n .times(totalPages, function (i) {\r\n return i + 1;\r\n }) // Filter down numbers to only the ones we want to show\r\n .filter(function (activePage) {\r\n var distanceBetweenCurrentAndActivePages = Math.abs(currentPage - activePage);\r\n var distanceBetweenActivePageAndFront = activePage - 1;\r\n var distanceBetweenActivePageAndBack = totalPages - activePage;\r\n\r\n if (activePage === 1 || activePage === currentPage || activePage === totalPages || !ellipsesRequired) {\r\n return true;\r\n }\r\n\r\n if (distanceBetweenCurrentAndActivePages <= buffer) {\r\n return true;\r\n }\r\n\r\n if (currentPageIsCloseToFront && distanceBetweenActivePageAndFront <= remainingSlotsToFill) {\r\n return true;\r\n }\r\n\r\n if (currentPageIsCloseToBack && distanceBetweenActivePageAndBack <= remainingSlotsToFill) {\r\n return true;\r\n }\r\n }) // Map over the number array and find spots to insert ellipses\r\n .map(function (val, idx, arr) {\r\n var frontEllipsesEligible = !currentPageIsCloseToFront && idx === 0;\r\n var backEllipsesEligible = !currentPageIsCloseToBack && idx === arr.length - 2;\r\n\r\n if (ellipsesRequired && (frontEllipsesEligible || backEllipsesEligible)) {\r\n return [val, ELLIPSES_PLACEHOLDER];\r\n }\r\n\r\n return val;\r\n });\r\n\r\n return flatten(pageNumbers);\r\n }\r\n }, {\r\n key: \"getHrefUrl\",\r\n value: function getHrefUrl(pageNumber) {\r\n var hrefBaseUrl = this.props.hrefBaseUrl;\r\n return hrefBaseUrl ? hrefBaseUrl.replace(PAGE_NUMBER_PLACEHOLDER, pageNumber) : undefined;\r\n }\r\n }, {\r\n key: \"renderPageNumbers\",\r\n value: function renderPageNumbers() {\r\n var _this2 = this;\r\n\r\n var _this$props3 = this.props,\r\n goToPage = _this$props3.goToPage,\r\n hrefBaseUrl = _this$props3.hrefBaseUrl,\r\n isLoading = _this$props3.isLoading;\r\n\r\n var _this$getCoercedInput2 = this.getCoercedInputs(),\r\n totalPages = _this$getCoercedInput2.totalPages,\r\n currentPage = _this$getCoercedInput2.currentPage;\r\n\r\n var controlSlots = this.fillPageSlots();\r\n return controlSlots.map(function (val, idx) {\r\n var ariaLabelString = \"Page \" + val;\r\n var ariaLabelSuffix = \"\";\r\n var isCurrent = val === currentPage;\r\n\r\n if (isCurrent) {\r\n ariaLabelSuffix = \", current page\";\r\n } else if (val === totalPages) {\r\n ariaLabelSuffix = \", last page\";\r\n }\r\n\r\n var content;\r\n\r\n if (val === ELLIPSES_PLACEHOLDER) {\r\n content = React.createElement(\"span\", null, \"...\");\r\n } else if (hrefBaseUrl) {\r\n content = React.createElement(Link, {\r\n ariaLabel: ariaLabelString + ariaLabelSuffix,\r\n style: isCurrent ? \"dark\" : \"default\",\r\n href: _this2.getHrefUrl(val),\r\n onClick: !isCurrent && goToPage ? _this2.handlePageChange(val) : undefined,\r\n isDisabled: isLoading\r\n }, isCurrent ? React.createElement(\"strong\", null, val) : val);\r\n } else {\r\n content = React.createElement(Button, {\r\n ariaLabel: ariaLabelString + ariaLabelSuffix,\r\n isDisabled: isLoading,\r\n style: \"unstyled\",\r\n onClick: !isCurrent && goToPage ? _this2.handlePageChange(val) : undefined\r\n }, React.createElement(Link, {\r\n style: isCurrent ? \"dark\" : \"default\",\r\n isDisabled: isLoading\r\n }, isCurrent ? React.createElement(\"strong\", null, val) : val));\r\n }\r\n\r\n return React.createElement(\"li\", {\r\n className: \"push--sides\",\r\n key: \"link-\".concat(idx)\r\n }, content);\r\n });\r\n }\r\n }, {\r\n key: \"render\",\r\n value: function render() {\r\n var _this$props4 = this.props,\r\n className = _this$props4.className,\r\n currentPage = _this$props4.currentPage,\r\n goToPage = _this$props4.goToPage,\r\n hrefBaseUrl = _this$props4.hrefBaseUrl,\r\n isLoading = _this$props4.isLoading,\r\n testSection = _this$props4.testSection,\r\n totalPages = _this$props4.totalPages,\r\n totalSlots = _this$props4.totalSlots,\r\n props = _objectWithoutProperties(_this$props4, [\"className\", \"currentPage\", \"goToPage\", \"hrefBaseUrl\", \"isLoading\", \"testSection\", \"totalPages\", \"totalSlots\"]);\r\n\r\n var sanitizedTotalPages = Math.max(totalPages, 2);\r\n var previousButton;\r\n var nextButton;\r\n\r\n if (hrefBaseUrl) {\r\n previousButton = React.createElement(Link, {\r\n href: this.getHrefUrl(currentPage - 1),\r\n onClick: this.handlePageChange(Math.max(1, currentPage - 1)),\r\n isDisabled: currentPage <= 1 || isLoading,\r\n ariaLabel: \"Previous Page\"\r\n }, \"Previous\");\r\n nextButton = React.createElement(Link, {\r\n ariaLabel: \"Next Page\",\r\n href: this.getHrefUrl(currentPage + 1),\r\n onClick: this.handlePageChange(Math.min(sanitizedTotalPages, currentPage + 1)),\r\n isDisabled: currentPage >= sanitizedTotalPages || isLoading\r\n }, \"Next\");\r\n } else {\r\n previousButton = React.createElement(Button, {\r\n ariaLabel: \"Previous Page\",\r\n isDisabled: currentPage <= 1 || isLoading,\r\n style: \"unstyled\",\r\n onClick: this.handlePageChange(Math.max(1, currentPage - 1))\r\n }, React.createElement(Link, {\r\n isDisabled: currentPage <= 1 || isLoading\r\n }, \"Previous\"));\r\n nextButton = React.createElement(Button, {\r\n ariaLabel: \"Next Page\",\r\n isDisabled: currentPage >= sanitizedTotalPages || isLoading,\r\n style: \"unstyled\",\r\n onClick: this.handlePageChange(Math.min(sanitizedTotalPages, currentPage + 1))\r\n }, React.createElement(Link, {\r\n isDisabled: currentPage >= sanitizedTotalPages || isLoading\r\n }, \"Next\"));\r\n }\r\n\r\n return React.createElement(\"nav\", _extends({\r\n className: classNames(\"oui-pagination-controls\", className),\r\n \"data-test-section\": testSection\r\n }, props), isLoading && React.createElement(Spinner, {\r\n size: \"small\"\r\n }), React.createElement(\"ul\", {\r\n className: \"flex flex-justified--center flex-align--center\"\r\n }, React.createElement(\"li\", {\r\n className: \"push--sides\"\r\n }, previousButton), this.renderPageNumbers(), React.createElement(\"li\", {\r\n className: \"push--sides\"\r\n }, nextButton)));\r\n }\r\n }]);\r\n\r\n return PaginationControls;\r\n}(Component);\r\n\r\nPaginationControls.propTypes = {\r\n /** CSS class names. */\r\n className: PropTypes.string,\r\n\r\n /** Sets the current page number */\r\n currentPage: PropTypes.number.isRequired,\r\n\r\n /** Function that is called when a pagination link is clicked */\r\n goToPage: PropTypes.func,\r\n // eslint-disable-next-line valid-jsdoc\r\n\r\n /**\r\n * Base URL to use for the Link's href.\r\n * Must include the string \"[pageNumber]\"\r\n */\r\n hrefBaseUrl: function hrefBaseUrl(props, propName, componentName) {\r\n if (props[propName] && typeof props[propName] !== \"string\") {\r\n return new Error(\"Invalid prop `\" + propName + \"` supplied to\" + \" `\" + componentName + \"`. Must be of type string.\");\r\n } else if (props[propName] && !props[propName].includes(PAGE_NUMBER_PLACEHOLDER)) {\r\n return new Error(\"Invalid prop '\" + propName + \"' supplied to\" + \" '\" + componentName + \"'. Must contain the string '\".concat(PAGE_NUMBER_PLACEHOLDER, \"'.\"));\r\n }\r\n },\r\n\r\n /** Sets the total number of pages */\r\n isLoading: PropTypes.bool,\r\n\r\n /** Hook for automated JavaScript tests */\r\n testSection: PropTypes.string,\r\n\r\n /** Sets the total number of pages. Must be >=2 */\r\n totalPages: checkPropIsGreaterThanOrEqualTo(2, true),\r\n\r\n /**\r\n * Sets the total number of spots allowed\r\n * between the Previous and Next buttons.\r\n * Must be >= 7, default is 9\r\n */\r\n totalSlots: checkPropIsGreaterThanOrEqualTo(7, false)\r\n};\r\nPaginationControls.defaultProps = {\r\n testSection: \"\",\r\n totalSlots: 9\r\n};\r\nexport default PaginationControls;","import _pt from \"prop-types\";\r\n\r\nimport React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\nexport var Typography = function Typography(_ref) {\r\n var children = _ref.children,\r\n className = _ref.className,\r\n _ref$tag = _ref.tag,\r\n Tag = _ref$tag === void 0 ? \"span\" : _ref$tag,\r\n type = _ref.type,\r\n props = _objectWithoutProperties(_ref, [\"children\", \"className\", \"tag\", \"type\"]);\r\n\r\n return React.createElement(Tag, _extends({\r\n className: classNames(\"axiom-typography--\".concat(type), className)\r\n }, props), children);\r\n};\r\nTypography.propTypes = {\r\n children: _pt.any,\r\n className: _pt.string,\r\n tag: _pt.any,\r\n type: _pt.oneOf([\"body\", \"caption\", \"code\", \"header1\", \"header2\", \"header3\", \"header4\", \"header5\", \"subhead\", \"xs\", \"xxs\"]).isRequired\r\n};\r\nTypography.displayName = \"Typography\";","import React, { useCallback, useState } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { noop } from \"lodash\";\r\nimport { yellowDark, yellowXLight, aquaDark, aquaXLight, brandBlueDark, greenDark, greenXLight, orangeDark, orangeXLight, pinkDark, pinkXLight, redDark, redXLight, magentaDark, magentaXLight, greyDark, blueXLight, purpleDark, black, purpleXLight } from \"../tokens/forimport/index.es\";\r\n\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\r\n\r\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\r\n\r\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\r\n\r\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\n/**\r\n * Map a color class to a human readable word that explains the context of when\r\n * the class is used. This is helpful for screen readers.\r\n * @param {String} className - an OUI class\r\n * @returns {String} English word describing the class provided\r\n */\r\n\r\nexport var getAssistiveTextFromColorClass = function getAssistiveTextFromColorClass(className) {\r\n var classMapping = {\r\n \"bad-news\": \"Error\",\r\n brand: \"Info\",\r\n \"good-news\": \"Success\",\r\n warning: \"Alert\"\r\n };\r\n var text = classMapping[className];\r\n\r\n if (!text) {\r\n throw new Error(\"Provided class name does not map to a word.\");\r\n }\r\n\r\n return text;\r\n};\r\n/**\r\n * HOC that provides support for tracking keyboard actions inside an\r\n * element with an input. Tracks up & down arrow keys and invokes\r\n * a callback when enter is pressed.\r\n * @param {React.Component} Component - The component to wrap.\r\n * @returns {React.Component}\r\n */\r\n\r\n// export var keyboardTracker = function keyboardTracker(Component) {\r\n// var wrappedComponent = function wrappedComponent(props) {\r\n// var additionalItems = props.additionalItems,\r\n// rest = _objectWithoutProperties(props, [\"additionalItems\"]);\r\n\r\n// var _useState = useState(0),\r\n// _useState2 = _slicedToArray(_useState, 2),\r\n// currentFauxFocusIndex = _useState2[0],\r\n// setIndex = _useState2[1];\r\n\r\n// var _useState3 = useState(0),\r\n// _useState4 = _slicedToArray(_useState3, 2),\r\n// currentItemCount = _useState4[0],\r\n// setItemCount = _useState4[1];\r\n\r\n// var _useState5 = useState(function () {\r\n// return noop;\r\n// }),\r\n// _useState6 = _slicedToArray(_useState5, 2),\r\n// onItemSelect = _useState6[0],\r\n// setOnItemSelect = _useState6[1];\r\n// /**\r\n// * Event handler for keyboard activity.\r\n// * Increments/decrements the current index on up/down arrow keys\r\n// * -or-\r\n// * Invokes the onItemSelect callback on enter\r\n// */\r\n\r\n\r\n// var handleKeyDown = useCallback(function (event) {\r\n// var newIndex;\r\n\r\n// switch (event.key) {\r\n// case \"ArrowUp\":\r\n// newIndex = Math.max(currentFauxFocusIndex - 1, 0);\r\n// setIndex(newIndex);\r\n// event.preventDefault();\r\n// break;\r\n\r\n// case \"ArrowDown\":\r\n// var totalItemCount = currentItemCount + additionalItems;\r\n// newIndex = Math.max(Math.min(currentFauxFocusIndex + 1, totalItemCount - 1), 0);\r\n// setIndex(newIndex);\r\n// event.preventDefault();\r\n// break;\r\n\r\n// case \"Enter\":\r\n// // Select the item for currentFauxFocusIndex\r\n// onItemSelect(currentFauxFocusIndex);\r\n// event.preventDefault();\r\n// break;\r\n\r\n// default:\r\n// // No op\r\n// break;\r\n// }\r\n// }, [currentFauxFocusIndex, currentItemCount, onItemSelect, additionalItems]);\r\n// /**\r\n// * Handler to update the item count, which should reset the\r\n// * current index to 0 if the number has changed.\r\n// */\r\n\r\n// var handleSetItemCount = useCallback(function (count) {\r\n// setItemCount(count);\r\n\r\n// if (count !== currentItemCount) {\r\n// setIndex(0);\r\n// }\r\n// }, [currentItemCount]);\r\n// return React.createElement(Component, _extends({}, rest, {\r\n// currentFauxFocusIndex: currentFauxFocusIndex,\r\n// handleKeyDown: handleKeyDown,\r\n// setItemCount: handleSetItemCount,\r\n// setOnItemSelect: setOnItemSelect\r\n// }));\r\n// };\r\n\r\n// wrappedComponent.displayName = \"withkeyboardTracker(\".concat(Component.displayName, \")\");\r\n// wrappedComponent.propTypes = {\r\n// additionalItems: PropTypes.number\r\n// };\r\n// wrappedComponent.defaultProps = {\r\n// additionalItems: 0\r\n// };\r\n// return wrappedComponent;\r\n// }; // map fillColorName prop values to OUI color tokens\r\n\r\nexport var FILL_COLOR_MAP = {\r\n aqua: aquaDark,\r\n yellow: yellowDark,\r\n \"default\": brandBlueDark,\r\n green: greenDark,\r\n orange: orangeDark,\r\n pink: pinkDark,\r\n red: redDark,\r\n magenta: magentaDark,\r\n grey: greyDark,\r\n purple: purpleDark,\r\n black: black\r\n}; // map fillColorName prop values to OUI color tokens\r\n\r\nexport var FILL_COLOR_MAP_LIGHT = {\r\n aqua: aquaXLight,\r\n yellow: yellowXLight,\r\n blue: blueXLight,\r\n green: greenXLight,\r\n orange: orangeXLight,\r\n pink: pinkXLight,\r\n red: redXLight,\r\n magenta: magentaXLight,\r\n purple: purpleXLight\r\n};\r\nexport default {\r\n FILL_COLOR_MAP: FILL_COLOR_MAP,\r\n FILL_COLOR_MAP_LIGHT: FILL_COLOR_MAP_LIGHT\r\n};","// These tokens have been deprecated. Use @optimizely/design-tokens instead.\r\nexport var brandBlueXLight = \"hsla(226, 100%, 97%, 1)\";\r\nexport var brandBlueLight = \"hsla(227, 100%, 95%, 1)\";\r\nexport var brandBlueBase = \"hsla(227, 100%, 85%, 1)\";\r\nexport var brandBlueDark = \"hsla(227, 100%, 50%, 1)\";\r\nexport var brandPurpleXLight = \"hsla(240, 9%, 96%, 1)\";\r\nexport var brandPurpleLight = \"hsla(246, 11%, 82%, 1)\";\r\nexport var brandPurpleBase = \"hsla(240, 11%, 65%, 1)\";\r\nexport var brandPurpleDark = \"hsla(241, 77%, 12%, 1)\";\r\nexport var smokeXLight = \"hsla(0, 0%, 98%, 1)\";\r\nexport var smokeLight = \"hsla(0, 0%, 96%, 1)\";\r\nexport var smokeBase = \"hsla(0, 0%, 93%, 1)\";\r\nexport var smokeDark = \"hsla(0, 0%, 84%, 1)\";\r\nexport var greyXLight = \"hsla(0, 0%, 96%, 1)\";\r\nexport var greyLight = \"hsla(0, 0%, 85%, 1)\";\r\nexport var greyBase = \"hsla(0, 0%, 62%, 1)\";\r\nexport var greyDark = \"hsla(0, 0%, 44%, 1)\";\r\nexport var purpleXLight = \"hsla(263, 48%, 95%, 1)\";\r\nexport var purpleLight = \"hsla(263, 46%, 79%, 1)\";\r\nexport var purpleBase = \"hsla(263, 52%, 47%, 1)\";\r\nexport var purpleDark = \"hsla(263, 51%, 33%, 1)\";\r\nexport var magentaXLight = \"hsla(310, 56%, 94%, 1)\";\r\nexport var magentaLight = \"hsla(311, 56%, 75%, 1)\";\r\nexport var magentaBase = \"hsla(311, 95%, 37%, 1)\";\r\nexport var magentaDark = \"hsla(311, 94%, 26%, 1)\";\r\nexport var pinkXLight = \"hsla(340, 86%, 95%, 1)\";\r\nexport var pinkLight = \"hsla(341, 87%, 85%, 1)\";\r\nexport var pinkBase = \"hsla(340, 82%, 52%, 1)\";\r\nexport var pinkDark = \"hsla(341, 55%, 48%, 1)\";\r\nexport var redXLight = \"hsla(0, 91%, 96%, 1)\";\r\nexport var redLight = \"hsla(0, 89%, 83%, 1)\";\r\nexport var redBase = \"hsla(0, 89%, 57%, 1)\";\r\nexport var redDark = \"hsla(0, 67%, 45%, 1)\";\r\nexport var orangeXLight = \"hsla(36, 100%, 95%, 1)\";\r\nexport var orangeLight = \"hsla(36, 100%, 80%, 1)\";\r\nexport var orangeBase = \"hsla(36, 100%, 50%, 1)\";\r\nexport var orangeDark = \"hsla(36, 100%, 32%, 1)\";\r\nexport var yellowXLight = \"hsla(46, 100%, 95%, 1)\";\r\nexport var yellowLight = \"hsla(45, 100%, 80%, 1)\";\r\nexport var yellowBase = \"hsla(45, 100%, 51%, 1)\";\r\nexport var yellowDark = \"hsla(45, 96%, 43%, 1)\";\r\nexport var greenXLight = \"hsla(120, 38%, 95%, 1)\";\r\nexport var greenLight = \"hsla(123, 38%, 80%, 1)\";\r\nexport var greenBase = \"hsla(122, 39%, 49%, 1)\";\r\nexport var greenDark = \"hsla(122, 39%, 34%, 1)\";\r\nexport var aquaXLight = \"hsla(189, 72%, 94%, 1)\";\r\nexport var aquaLight = \"hsla(187, 73%, 77%, 1)\";\r\nexport var aquaBase = \"hsla(187, 100%, 42%, 1)\";\r\nexport var aquaDark = \"hsla(187, 100%, 27%, 1)\";\r\nexport var blueXLight = \"hsla(209, 91%, 95%, 1)\";\r\nexport var blueLight = \"hsla(207, 89%, 82%, 1)\";\r\nexport var blueBase = \"hsla(207, 90%, 54%, 1)\";\r\nexport var blueDark = \"hsla(207, 77%, 38%, 1)\";\r\nexport var white = \"hsla(0, 0%, 100%, 1)\";\r\nexport var black = \"hsla(0, 0%, 0%, 1)\";\r\nexport var iconSmall = \"12px\";\r\nexport var iconLarge = \"16px\";\r\nexport var nubbinSize = \"24px\";","import _pt from \"prop-types\";\r\nimport React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { FILL_COLOR_MAP } from \"../../utils/accessibility\";\r\nimport { Icon } from \"../Icon/icon\";\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\nvar ButtonIcon = function ButtonIcon(_ref) {\r\n var buttonRef = _ref.buttonRef,\r\n className = _ref.className,\r\n iconFill = _ref.iconFill,\r\n iconName = _ref.iconName,\r\n isDisabled = _ref.isDisabled,\r\n onClick = _ref.onClick,\r\n _ref$size = _ref.size,\r\n size = _ref$size === void 0 ? \"medium\" : _ref$size,\r\n style = _ref.style,\r\n testSection = _ref.testSection,\r\n title = _ref.title,\r\n props = _objectWithoutProperties(_ref, [\"buttonRef\", \"className\", \"iconFill\", \"iconName\", \"isDisabled\", \"onClick\", \"size\", \"style\", \"testSection\", \"title\"]);\r\n\r\n // ensure valid fillColor name (in the case that propType errors are ignored)\r\n var fillColor = iconFill && Object.keys(FILL_COLOR_MAP).includes(iconFill) ? FILL_COLOR_MAP[iconFill] : undefined;\r\n\r\n function handleOnClick(event) {\r\n if (isDisabled) {\r\n return;\r\n }\r\n\r\n onClick && onClick(event);\r\n } // This component is a bit of a mess and has no Figma component, so this is a stopgap to somewhat fix the sizing\r\n // Small and medium button sizes are larger than their icons, but the large size button is the same size as the\r\n // large icon, so we'll use medium sized icons for large size buttons until this is better defined.\r\n\r\n\r\n var iconSize = size === \"small\" ? \"small\" : \"medium\";\r\n return React.createElement(\"button\", _extends({\r\n className: classNames(\"oui-button oui-button-icon oui-button-icon__\".concat(size, \" oui-button--\").concat(style), fillColor ? \"\" : \"axiom-button-icon--no-fill\", className),\r\n \"data-oui-component\": true,\r\n \"data-test-section\": testSection,\r\n disabled: isDisabled,\r\n onClick: handleOnClick,\r\n ref: buttonRef,\r\n title: title,\r\n type: \"button\"\r\n }, props), React.createElement(\"div\", {\r\n className: \"flex flex--dead-center \"\r\n }, React.createElement(Icon, {\r\n color: fillColor,\r\n name: iconName,\r\n size: iconSize,\r\n title: title\r\n })));\r\n};\r\n\r\nButtonIcon.propTypes = {\r\n buttonRef: _pt.any,\r\n className: _pt.string,\r\n iconFill: _pt.oneOf([\"aqua\", \"yellow\", \"default\", \"green\", \"orange\", \"pink\", \"red\", \"magenta\", \"grey\", \"purple\", \"black\"]),\r\n iconName: _pt.any,\r\n isDisabled: _pt.bool,\r\n onClick: _pt.func,\r\n size: _pt.oneOf([\"small\", \"medium\", \"large\"]),\r\n style: _pt.oneOf([\"highlight\", \"danger\", \"danger-outline\", \"outline\", \"plain\", \"unstyled\"]),\r\n testSection: _pt.string,\r\n title: _pt.string\r\n};\r\nButtonIcon.defaultProps = {\r\n iconName: \"add\",\r\n onClick: function onClick() {\r\n return null;\r\n },\r\n size: \"medium\",\r\n title: \"\"\r\n};\r\nexport default React.memo(ButtonIcon);","import _pt from \"prop-types\";\r\nimport React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport ButtonIcon from \"../ButtonIcon/index\";\r\nimport { getAssistiveTextFromColorClass } from \"../../utils/accessibility\";\r\n\r\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nvar renderDismissButton = function renderDismissButton(testSection) {\r\n var additionalProps = {\r\n ariaLabel: \"Close alert\"\r\n };\r\n return React.createElement(\"div\", {\r\n className: \"oui-attention__close\"\r\n }, React.createElement(ButtonIcon, _extends({\r\n iconName: \"xmark\",\r\n style: \"plain\",\r\n size: \"small\",\r\n testSection: \"\".concat(testSection, \"-dismiss\")\r\n }, additionalProps)));\r\n};\r\n\r\nvar Attention = function Attention(_ref) {\r\n var _ref$alignment = _ref.alignment,\r\n alignment = _ref$alignment === void 0 ? \"left\" : _ref$alignment,\r\n children = _ref.children,\r\n className = _ref.className,\r\n isDismissible = _ref.isDismissible,\r\n testSection = _ref.testSection,\r\n _ref$type = _ref.type,\r\n type = _ref$type === void 0 ? \"brand\" : _ref$type,\r\n props = _objectWithoutProperties(_ref, [\"alignment\", \"children\", \"className\", \"isDismissible\", \"testSection\", \"type\"]);\r\n\r\n var colorClassName = \"oui-attention--\".concat(type);\r\n var alignmentClassName = \"oui-text--\".concat(alignment);\r\n var attentionAriaLabel = getAssistiveTextFromColorClass(type);\r\n var alignClass = \"oui-attention \".concat(colorClassName, \" \").concat(alignmentClassName).trim();\r\n var classes = classNames(_defineProperty({}, \"\".concat(alignClass), true), className);\r\n var dismissBtn = isDismissible ? renderDismissButton(testSection) : null;\r\n return React.createElement(\"div\", _extends({\r\n \"data-oui-component\": true,\r\n className: classes,\r\n \"data-test-section\": testSection,\r\n \"aria-label\": attentionAriaLabel,\r\n role: \"alert\"\r\n }, props), children, dismissBtn);\r\n};\r\n\r\nAttention.propTypes = {\r\n alignment: _pt.oneOf([\"left\", \"center\"]),\r\n children: _pt.any,\r\n className: _pt.string,\r\n isDismissible: _pt.bool,\r\n testSection: _pt.string,\r\n type: _pt.oneOf([\"bad-news\", \"brand\", \"good-news\", \"warning\"])\r\n};\r\nexport default Attention;","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\r\n\r\nvar areAnyButtonsFullWidth = function areAnyButtonsFullWidth(buttons) {\r\n var includesFullWidth = false;\r\n buttons.map(function (button) {\r\n if (button.props && button.props.width === \"full\") {\r\n includesFullWidth = true;\r\n }\r\n });\r\n return includesFullWidth;\r\n};\r\n\r\nvar ButtonRowSide = function ButtonRowSide(side, buttons, testSection) {\r\n var includesFullWidthButton = areAnyButtonsFullWidth(buttons);\r\n var wrapperClassNames = classNames(_defineProperty({\r\n flex: includesFullWidthButton,\r\n \"flex--1\": true\r\n }, \"oui-button-row--\".concat(side), side));\r\n return React.createElement(\"div\", {\r\n \"data-oui-component\": true,\r\n className: wrapperClassNames,\r\n \"data-test-section\": testSection ? testSection + \"-\" + side : null\r\n }, buttons.map(function (button, index) {\r\n if (includesFullWidthButton) {\r\n // `ButtonRow` groups that contain a full width `Button` must wrap\r\n // the buttons in `div`'s of equal spacing.\r\n var containerClasses = classNames({\r\n \"push-half--right\": index !== buttons.length - 1,\r\n \"push-half--left\": index !== 0,\r\n \"flex--1\": true\r\n });\r\n return React.createElement(\"div\", {\r\n className: containerClasses,\r\n key: index\r\n }, button);\r\n }\r\n\r\n return button;\r\n }));\r\n};\r\n/**\r\n * A horizontal list of buttons with space between them.\r\n * @param {Object} props - Properties passed to component\r\n * @returns {ReactElement}\r\n */\r\n\r\n\r\nvar ButtonRow = function ButtonRow(_ref) {\r\n var centerGroup = _ref.centerGroup,\r\n className = _ref.className,\r\n leftGroup = _ref.leftGroup,\r\n rightGroup = _ref.rightGroup,\r\n testSection = _ref.testSection,\r\n props = _objectWithoutProperties(_ref, [\"centerGroup\", \"className\", \"leftGroup\", \"rightGroup\", \"testSection\"]);\r\n\r\n return React.createElement(\"div\", _extends({\r\n \"data-oui-component\": true,\r\n className: classNames(\"oui-button-row flex\", className),\r\n \"data-test-section\": testSection\r\n }, props), leftGroup ? ButtonRowSide(\"left\", leftGroup, testSection) : null, centerGroup ? ButtonRowSide(\"center\", centerGroup, testSection) : null, rightGroup ? ButtonRowSide(\"right\", rightGroup, testSection) : null);\r\n};\r\n\r\nButtonRow.propTypes = {\r\n /** Array of buttons for the center */\r\n centerGroup: PropTypes.arrayOf(PropTypes.element),\r\n\r\n /** CSS class names. */\r\n className: PropTypes.string,\r\n\r\n /** Array of buttons for left side */\r\n leftGroup: PropTypes.arrayOf(PropTypes.element),\r\n\r\n /** Array of buttons for right side */\r\n rightGroup: PropTypes.arrayOf(PropTypes.element),\r\n\r\n /** Hook for automated JavaScript tests */\r\n testSection: PropTypes.string\r\n};\r\nexport default ButtonRow;","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\nimport { Icon } from \"../Icon/icon\";\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\n\r\n/**\r\n *\r\n * @param {Object} props - Properties passed to component\r\n * @returns {ReactElement}\r\n */\r\n\r\nvar CloseButton = function CloseButton(_ref) {\r\n var className = _ref.className,\r\n onClick = _ref.onClick,\r\n size = _ref.size,\r\n props = _objectWithoutProperties(_ref, [\"className\", \"onClick\", \"size\"]);\r\n\r\n var closeIcon = size === \"small\" ? \"xmark\" : \"xmark-thin\";\r\n return React.createElement(\"button\", _extends({\r\n className: classNames(\"oui-close-button\", className),\r\n onClick: onClick\r\n }, props), React.createElement(Icon, {\r\n name: closeIcon,\r\n size: size\r\n }));\r\n};\r\n\r\nCloseButton.propTypes = {\r\n /** CSS class names. */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * Function to perform when the close button is clicked.\r\n */\r\n onClick: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Size of the close button.\r\n */\r\n size: PropTypes.oneOf([\"small\", \"medium\", \"large\"])\r\n};\r\nCloseButton.defaultProps = {\r\n size: \"medium\"\r\n};\r\nexport default CloseButton;","import PropTypes from \"prop-types\";\r\nimport React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport Attention from \"../Attention\";\r\nimport ButtonRow from \"../ButtonRow\";\r\nimport CloseButton from \"../CloseButton\";\r\n\r\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\r\n\r\n/**\r\n *\r\n * @param {Object} props - Properties passed to component\r\n * @returns {ReactElement}\r\n */\r\n\r\nvar Sheet = function Sheet(_ref) {\r\n var centerHeader = _ref.centerHeader,\r\n children = _ref.children,\r\n className = _ref.className,\r\n footerButtonList = _ref.footerButtonList,\r\n hasCloseButton = _ref.hasCloseButton,\r\n hasFooter = _ref.hasFooter,\r\n hasRequiredFieldsIndicator = _ref.hasRequiredFieldsIndicator,\r\n onClose = _ref.onClose,\r\n subtitle = _ref.subtitle,\r\n testSection = _ref.testSection,\r\n title = _ref.title,\r\n warningContent = _ref.warningContent,\r\n warningTestSection = _ref.warningTestSection,\r\n props = _objectWithoutProperties(_ref, [\"centerHeader\", \"children\", \"className\", \"footerButtonList\", \"hasCloseButton\", \"hasFooter\", \"hasRequiredFieldsIndicator\", \"onClose\", \"subtitle\", \"testSection\", \"title\", \"warningContent\", \"warningTestSection\"]);\r\n\r\n var subtitleContent;\r\n\r\n if (subtitle && typeof subtitle === \"string\") {\r\n subtitleContent = React.createElement(\"p\", {\r\n className: \"push--top flush--bottom\"\r\n }, subtitle);\r\n } else {\r\n subtitleContent = React.createElement(\"div\", {\r\n className: \"push--top flush--bottom\"\r\n }, subtitle);\r\n }\r\n\r\n var headerClasses = classNames({\r\n \"oui-sheet__header\": true,\r\n \"text--center\": centerHeader\r\n });\r\n return React.createElement(\"div\", _extends({\r\n className: classNames(\"oui-sheet__wrapper\", className)\r\n }, props), React.createElement(\"div\", {\r\n className: \"oui-sheet__overlay\"\r\n }), React.createElement(\"div\", {\r\n \"data-oui-component\": true,\r\n className: \"oui-sheet overflow-y--auto\",\r\n \"data-test-section\": testSection\r\n }, hasCloseButton && React.createElement(CloseButton, {\r\n onClick: onClose,\r\n size: \"large\"\r\n }), warningContent && React.createElement(\"div\", {\r\n className: \"oui-sheet__warning\"\r\n }, React.createElement(Attention, {\r\n alignment: \"center\",\r\n type: \"warning\",\r\n testSection: warningTestSection\r\n }, warningContent)), React.createElement(\"header\", {\r\n className: headerClasses\r\n }, React.createElement(\"h2\", {\r\n className: \"flush--bottom\"\r\n }, title), subtitleContent), React.createElement(\"div\", {\r\n className: \"oui-sheet__body\"\r\n }, children), hasFooter && React.createElement(\"footer\", {\r\n className: \"oui-sheet__footer\"\r\n }, React.createElement(\"div\", {\r\n className: \"flex flex-align--center\"\r\n }, hasRequiredFieldsIndicator && React.createElement(\"div\", {\r\n className: \"oui-sheet__required-indicator cursor--default color--red\"\r\n }, React.createElement(\"span\", null, \"* Required field\")), React.createElement(\"div\", {\r\n className: \"flex--1\"\r\n }, React.createElement(ButtonRow, {\r\n rightGroup: footerButtonList\r\n }))))));\r\n};\r\n\r\nSheet.propTypes = {\r\n /**\r\n * Used to determine if the title & subtitle of the sheet should be centered.\r\n */\r\n centerHeader: PropTypes.bool,\r\n\r\n /**\r\n * The body of the sheet to request information and data from the user.\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /** CSS class names. */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * Array of buttons used in the footer of the sheet.\r\n */\r\n footerButtonList: PropTypes.array,\r\n\r\n /**\r\n * Used to determine if the sheet should have a close button.\r\n */\r\n hasCloseButton: PropTypes.bool,\r\n\r\n /**\r\n * Determines if the sheet should have a footer.\r\n */\r\n hasFooter: PropTypes.bool,\r\n\r\n /**\r\n * Determines if the sheet should have a message in the footer\r\n * indicating required fields are marked with an asterisk (*).\r\n */\r\n hasRequiredFieldsIndicator: PropTypes.bool,\r\n\r\n /**\r\n * Function to perform when the sheet is closed.\r\n */\r\n onClose: PropTypes.func,\r\n\r\n /**\r\n * A subtitle for the sheet.\r\n */\r\n subtitle: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\r\n\r\n /**\r\n * Identifier used to create data-test-section attributes for testing.\r\n */\r\n testSection: PropTypes.string,\r\n\r\n /**\r\n * Main title of the sheet.\r\n */\r\n title: PropTypes.string.isRequired,\r\n\r\n /**\r\n * Content of the warning Attention bar.\r\n */\r\n warningContent: PropTypes.string,\r\n\r\n /**\r\n * Identifier used to create data-test-section\r\n * attribute for the Attention bar.\r\n */\r\n warningTestSection: PropTypes.string\r\n};\r\nSheet.defaultProps = {\r\n centerHeader: false,\r\n footerButtonList: [],\r\n hasCloseButton: true,\r\n hasFooter: true,\r\n hasRequiredFieldsIndicator: false,\r\n onClose: function onClose() {\r\n return null;\r\n },\r\n subtitle: \"\",\r\n testSection: \"\",\r\n warningTestSection: \"\"\r\n};\r\nexport default Sheet;","export interface MetaClassDataModel {\r\n className: string;\r\n primaryKeyId: string;\r\n properties: Property[];\r\n}\r\n\r\nexport interface Property {\r\n name: string;\r\n friendlyName: string;\r\n description: string;\r\n metaFieldType: string;\r\n value: any;\r\n isNullable: boolean;\r\n validationData: any;\r\n otherData: any;\r\n}\r\n\r\nexport interface SearchParams {\r\n className: string;\r\n pageIndex: number;\r\n pageSize: number;\r\n keyword: string;\r\n sortField: string;\r\n sortType: SortType;\r\n}\r\n\r\nexport interface Column {\r\n fieldName: string;\r\n friendlyName: string;\r\n isSystem: boolean;\r\n}\r\n\r\nexport enum SortType {\r\n Asc,\r\n Desc,\r\n}\r\n","import React, { useCallback, useEffect, useState } from \"react\";\r\nimport PaginationControls from \"../../../businessFoundation/axiom/module/js/components/PaginationControls\";\r\nimport { Typography } from \"../../../businessFoundation/axiom/module/js/components/Typography/typography\";\r\nimport Button from \"../../../businessFoundation/axiom/module/js/components/Button\";\r\nimport Sheet from \"../../../businessFoundation/axiom/module/js/components/Sheet\";\r\nimport axios from \"axios\";\r\nimport { Column, MetaClassDataModel as Record, Property, SearchParams, SortType } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\nimport { DataTable, DataTableBody, DataTableCell, DataTableColumnHeaderCell, DataTableContent, DataTableHeaderRow, DataTableRow, DataTableToolbar, Search } from \"@episerver/ui-framework\";\r\nimport { debounce } from \"lodash-es\";\r\n\r\ninterface ReferenceDataDialogProps {\r\n className: string;\r\n object: Record | null;\r\n setObject: (record: Record | null) => void;\r\n closeDialog: () => void\r\n}\r\n\r\nconst ReferenceDataDialog: React.FC = (props) => {\r\n const { className, object, setObject, closeDialog } = props\r\n const [columns, setColumns] = useState([]);\r\n const [data, setData] = useState([]);\r\n const [selectedObject, setSelectedObject] = useState(object);\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [searchParams, setSearchParams] = useState({\r\n className: className,\r\n pageIndex: 1,\r\n pageSize: 10,\r\n keyword: \"\",\r\n sortField: \"\",\r\n sortType: SortType.Asc,\r\n });\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const fetchColumns = () => {\r\n if (className) {\r\n axios\r\n .get(url + `BusinessFoundationData/GetBusinessFoundationImportantColumns?className=${className}`)\r\n .then((result) => {\r\n setColumns(result.data);\r\n });\r\n }\r\n };\r\n\r\n const search = () => {\r\n axios.post(url + \"BusinessFoundationData/Search\", searchParams).then((result) => {\r\n const { totalPages, data } = result.data;\r\n setTotalPages(totalPages);\r\n setData(data);\r\n });\r\n };\r\n\r\n const handleSearch = useCallback(\r\n debounce((params: SearchParams, value: string) => setSearchParams({ ...params, keyword: value.trim() }), 1000),\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n fetchColumns();\r\n }, [])\r\n\r\n useEffect(() => {\r\n search();\r\n }, [searchParams])\r\n\r\n return (\r\n \r\n Cancel\r\n ,\r\n ,\r\n ]}>\r\n \r\n \r\n \r\n \r\n handleSearch(searchParams, value)\r\n }\r\n onSearch={(value: string) =>\r\n handleSearch(searchParams, value)\r\n } />\r\n \r\n \r\n \r\n \r\n {columns?.map((column: Column) => (\r\n {column.friendlyName}\r\n ))}\r\n \r\n \r\n <>\r\n {columns &&\r\n columns.length > 0 &&\r\n data?.map((record: Record, rowIndex: number) => (\r\n {\r\n if (!selectedObject) {\r\n setSelectedObject(record)\r\n } else {\r\n setSelectedObject(null)\r\n }\r\n }}\r\n >\r\n {columns?.map((column: Column) => (\r\n \r\n {record.properties.find(p => p.name === column.fieldName)?.value}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n {totalPages > 1 && (\r\n setSearchParams({ ...searchParams, pageIndex: page })}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ReferenceDataDialog;\r\n","import React, { useState } from \"react\";\r\nimport Item from \"../../../businessFoundation/axiom/module/js/components/Form/Item\";\r\nimport { Icon } from \"../../../businessFoundation/axiom/module/js/components/Icon/icon\";\r\nimport Link from \"../../../businessFoundation/axiom/module/js/components/Link\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport ReferenceDataDialog from \"./ReferenceDataDialog\";\r\nimport { MetaClassDataModel as Record } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\nimport { Controller } from \"react-hook-form\";\r\n\r\nconst ReferenceField: React.FC> = (props) => {\r\n const { index, property: { isNullable, friendlyName, otherData }, setValue, control, errors } = props;\r\n const [selectedObject, setSelectedObject] = useState(otherData.selectedObject)\r\n const [openDialog, setOpenDialog] = useState(false)\r\n\r\n return (\r\n <>\r\n (\r\n \r\n \r\n setOpenDialog(true)}\r\n >\r\n {selectedObject ? selectedObject.properties.filter(prop => prop.name == otherData.refTitleFieldName)[0].value : \"Not Set\"} \r\n \r\n {errors.extendedProperties && errors.extendedProperties[index]?.value &&
    \r\n

    \r\n {errors.extendedProperties ? errors.extendedProperties[index]?.value?.message ?? \"\" : \"\"}\r\n

    \r\n
    }\r\n
    \r\n )}\r\n />\r\n {openDialog && setOpenDialog(false)}\r\n object={selectedObject}\r\n setObject={(record: Record | null) => {\r\n if (record) {\r\n setValue(`extendedProperties[${index}].value`, record.primaryKeyId, { shouldDirty: true, shouldValidate: true })\r\n } else {\r\n setValue(`extendedProperties[${index}].value`, null, { shouldDirty: true, shouldValidate: true })\r\n }\r\n setSelectedObject(record)\r\n }}\r\n />}\r\n \r\n );\r\n};\r\n\r\nexport default ReferenceField;\r\n","import React from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport { TextModel } from \"../../../businessFoundation/Primitives/TextManage/TextModel\";\r\nimport { TextField as TextFieldEP } from \"@episerver/ui-framework\";\r\n\r\nconst TextField: React.FC> = (props) => {\r\n const { index, property, control, errors } = props;\r\n const validationData = property.validationData as TextModel;\r\n\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default TextField;\r\n","import React from \"react\";\r\nimport { Controller } from \"react-hook-form\";\r\nimport { FieldProp } from \"../model/FieldProp\";\r\nimport { UrlModel } from \"../../../businessFoundation/Primitives/UrlManage/UrlModel\";\r\nimport { TextField } from \"@episerver/ui-framework\";\r\n\r\nconst UrlField: React.FC> = (props) => {\r\n const { index, property, control, errors } = props;\r\n const validationData = property.validationData as UrlModel;\r\n\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default UrlField;\r\n","import { FieldProp } from \"./model/FieldProp\";\r\nimport React from \"react\";\r\nimport \"./ExtendedProperty.scss\";\r\nimport CheckBoxBooleanField from \"./Fields/CheckBoxBooleanField\";\r\nimport CurrencyField from \"./Fields/CurrencyField\";\r\nimport DateField from \"./Fields/DateField\";\r\nimport DateTimeField from \"./Fields/DateTimeField\";\r\nimport DecimalField from \"./Fields/DecimalField\";\r\nimport DropdownBooleanField from \"./Fields/DropdownBooleanField\";\r\nimport DurationField from \"./Fields/DurationField\";\r\nimport EmailField from \"./Fields/EmailField\";\r\nimport EnumField from \"./Fields/EnumField\";\r\nimport EnumMultiValueField from \"./Fields/EnumMultiValueField\";\r\nimport GuidField from \"./Fields/GuidField\";\r\nimport IntegerField from \"./Fields/IntegerField\";\r\nimport LongTextField from \"./Fields/LongTextField\";\r\nimport ReferenceField from \"./Fields/ReferenceField\";\r\nimport TextField from \"./Fields/TextField\";\r\nimport UrlField from \"./Fields/UrlField\";\r\n\r\nexport enum FormatType {\r\n Integer,\r\n IntegerPercent,\r\n Duration,\r\n DateTime,\r\n Date,\r\n Guid,\r\n Currency,\r\n Boolean,\r\n Text,\r\n LongText,\r\n EMail,\r\n Url,\r\n Decimal,\r\n Enum,\r\n EnumMultiValue,\r\n CheckboxBoolean,\r\n DropDownBoolean,\r\n ReferencedField,\r\n Reference,\r\n}\r\n\r\ninterface ExtendedPropertyProps extends FieldProp {\r\n className: string;\r\n}\r\n\r\nexport const limitString = (val: string, num: number = 40) => {\r\n if (val && val.length > num) {\r\n return val.substring(0, num) + \"...\";\r\n } else {\r\n return val;\r\n }\r\n};\r\n\r\nconst ExtendedProperty = (props: ExtendedPropertyProps) => {\r\n const renderField = (): React.ReactNode => {\r\n switch (FormatType[props.property.metaFieldType]) {\r\n case FormatType.Text:\r\n return ;\r\n case FormatType.Url:\r\n return ;\r\n case FormatType.EMail:\r\n return ;\r\n case FormatType.LongText:\r\n return ;\r\n case FormatType.Integer:\r\n case FormatType.IntegerPercent:\r\n return ;\r\n case FormatType.Duration:\r\n return ;\r\n case FormatType.Guid:\r\n return ;\r\n case FormatType.Currency:\r\n return ;\r\n case FormatType.Decimal:\r\n return ;\r\n //This is currently breaking server side rendering needs to be fixed when we will have enum extended property (currently we dont have any)\r\n /* case FormatType.Enum:\r\n return ;\r\n case FormatType.EnumMultiValue:\r\n return ; */\r\n case FormatType.CheckboxBoolean:\r\n return ;\r\n case FormatType.DropDownBoolean:\r\n return ;\r\n case FormatType.Date:\r\n return ;\r\n case FormatType.DateTime:\r\n return ;\r\n case FormatType.Reference:\r\n return ;\r\n default:\r\n return <>;\r\n }\r\n };\r\n\r\n return <>{renderField()};\r\n};\r\n\r\nexport default ExtendedProperty;\r\n","import { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\n\r\nexport interface UpdateParams {\r\n address: Address;\r\n inView: InView;\r\n}\r\n\r\nexport interface DeleteParams {\r\n address: Address;\r\n inView: InView;\r\n}\r\n\r\nexport interface Address {\r\n primaryKeyId: string | null;\r\n contactId: string | null;\r\n organizationId: string | null;\r\n addressType: AddressType[];\r\n name: string;\r\n lastName: string;\r\n firstName: string;\r\n daytimePhoneNumber: string;\r\n eveningPhoneNumber: string;\r\n email: string;\r\n line1: string;\r\n line2: string;\r\n city: string;\r\n state: string;\r\n countryCode: string;\r\n countryName: string;\r\n postalCode: string;\r\n regionCode: string;\r\n extendedProperties: Property[];\r\n isFetched: boolean;\r\n isNew: boolean,\r\n idx: number\r\n}\r\n\r\nexport interface AddressForm {\r\n open: boolean;\r\n address: Address;\r\n extendedPropertyErrors: Error[];\r\n}\r\n\r\nexport interface ConfirmDialog {\r\n open: boolean;\r\n title: string;\r\n message: string;\r\n address: Address;\r\n}\r\n\r\nexport enum AddressType {\r\n Public = 1,\r\n Shipping = 2,\r\n Billing = 4,\r\n}\r\n\r\nexport enum InView {\r\n None,\r\n Contact,\r\n Organization,\r\n}\r\n","import { Address } from \"../model/address\";\r\nimport axios from \"axios\";\r\nimport { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\n\r\nexport const fetchAddressesInContact = async (contactId: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"Addresses/GetByContactId?contactId=\" + contactId);\r\n return res.data;\r\n};\r\n\r\nexport const fetchAddressesInOrganization = async (orgId: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"Addresses/GetByOrganizationId?orgId=\" + orgId);\r\n return res.data;\r\n};\r\n\r\nexport const fetchAddressById = async (addressId: string): Promise
    => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get
    (url + \"Addresses/Get?addressId=\" + addressId);\r\n return res.data;\r\n};\r\n\r\nexport const updateAddress = async (address: Address): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n await axios.post(url + \"Addresses/AddOrUpdate\", address);\r\n};\r\n\r\nexport const deleteAddress = async (addressIds: string[]): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n await axios.delete(url + \"Addresses/Delete/\", { data: addressIds });\r\n};\r\n\r\nexport const fetchExtendedProperties = async (className: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(\r\n url + \"Common/GetExtendedPropertiesByClassName?className=\" + className\r\n );\r\n return res.data;\r\n};\r\n","import { InView, UpdateParams } from \"./../model/address\";\r\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\r\nimport { Address } from \"../model/address\";\r\nimport * as services from \"../services/addressService\";\r\n\r\nexport const fetchAddressesInContact = createAsyncThunk(\"addressManager/fetchAddressesInContact\", (contactId: string) =>\r\n services.fetchAddressesInContact(contactId)\r\n);\r\n\r\nexport const fetchAddressesInOrganization = createAsyncThunk(\r\n \"addressManager/fetchAddressesInOrganization\",\r\n (orgId: string) => services.fetchAddressesInOrganization(orgId)\r\n);\r\n\r\nexport const fetchAddressById = createAsyncThunk(\"addressForm/fetchAddressById\", (id: string) =>\r\n services.fetchAddressById(id)\r\n);\r\n\r\nexport const updateAddress = createAsyncThunk(\r\n \"addressManager/updateAddress\",\r\n async (params: UpdateParams): Promise => {\r\n await services.updateAddress(params.address);\r\n let addresses = [] as Address[];\r\n if (params.inView === InView.Contact && params.address.contactId != null) {\r\n addresses = await services.fetchAddressesInContact(params.address.contactId);\r\n } else if (params.inView === InView.Organization && params.address.organizationId != null) {\r\n addresses = await services.fetchAddressesInOrganization(params.address.organizationId);\r\n }\r\n return addresses;\r\n }\r\n);","import { createSelector, createSlice } from \"@reduxjs/toolkit\";\r\nimport { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\nimport { RootState } from \"../../store\";\r\nimport { FormatType } from \"../../ExtendedProperty/ExtendedProperty\";\r\nimport { Address, AddressForm, AddressType } from \"../model/address\";\r\nimport { fetchAddressById } from \"./asyncThunks\";\r\n\r\nexport const initialAddressFormState = {\r\n form: {\r\n open: false,\r\n title: \"\",\r\n address: {\r\n primaryKeyId: \"00000000-0000-0000-0000-000000000000\",\r\n contactId: null,\r\n organizationId: null,\r\n addressType: [] as AddressType[],\r\n name: \"\",\r\n lastName: \"\",\r\n firstName: \"\",\r\n daytimePhoneNumber: \"\",\r\n eveningPhoneNumber: \"\",\r\n email: \"\",\r\n line1: \"\",\r\n line2: \"\",\r\n city: \"\",\r\n state: \"\",\r\n countryCode: \"\",\r\n countryName: \"\",\r\n postalCode: \"\",\r\n regionCode: \"\",\r\n extendedProperties: [] as Property[],\r\n } as Address,\r\n extendedPropertyErrors: [] as Error[],\r\n },\r\n};\r\n\r\nexport const addressFormSlice = createSlice({\r\n name: \"addressForm\",\r\n initialState: initialAddressFormState,\r\n reducers: {\r\n onOpenDialog: (state, action): void => {\r\n state.form = {\r\n ...action.payload.form,\r\n address: {\r\n ...action.payload.form.address,\r\n extendedProperties: action.payload.form.address.extendedProperties?.map((property: Property) => {\r\n return FormatType[property.metaFieldType] !== FormatType.DateTime\r\n ? property\r\n : {\r\n ...property,\r\n value: property.value ? new Date(property.value).toISOString().slice(0, 16) : \"\",\r\n };\r\n }),\r\n },\r\n };\r\n },\r\n changeExtendedPropertyErrors: (state, action): void => {\r\n let { name, message } = action.payload;\r\n let error = state.form.extendedPropertyErrors.find((error: Error) => error.name === name);\r\n if (error) {\r\n state.form.extendedPropertyErrors = state.form.extendedPropertyErrors\r\n .filter((error: Error) => {\r\n if (error.name === name && message === \"\") return false;\r\n return true;\r\n })\r\n .map((error: Error) => {\r\n if (error.name === name) return { ...error, message: message };\r\n return error;\r\n });\r\n } else {\r\n if (message) {\r\n state.form.extendedPropertyErrors.push({ name: name, message: message });\r\n }\r\n }\r\n },\r\n resetForm: (state): void => {\r\n state.form = initialAddressFormState.form;\r\n },\r\n },\r\n extraReducers: {\r\n [`${fetchAddressById.fulfilled}`]: (state, action): void => {\r\n state.form.address = {\r\n ...action.payload,\r\n contactId: action.payload?.contactId ?? state.form?.address?.contactId,\r\n organizationId: action.payload?.organizationId ?? state.form?.address?.organizationId,\r\n extendedProperties: action.payload.extendedProperties?.map((property: Property) => {\r\n return FormatType[property.metaFieldType] !== FormatType.DateTime\r\n ? property\r\n : {\r\n ...property,\r\n value: property.value ? new Date(property.value).toISOString().slice(0, 16) : \"\",\r\n };\r\n }),\r\n isFetched: true,\r\n isNew: state.form.address.isNew,\r\n idx: state.form.address.idx\r\n };\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const { onOpenDialog, changeExtendedPropertyErrors, resetForm } = addressFormSlice.actions;\r\n\r\n// Selectors\r\nexport const formSelector = createSelector(\r\n (state: RootState): AddressForm => state.addressForm.form,\r\n (form: AddressForm): AddressForm => form\r\n);\r\n","import { createSelector, createSlice } from \"@reduxjs/toolkit\";\r\nimport { RootState } from \"../../store\";\r\nimport { PaginationModel } from \"../../OrganizationManager/model/organization\";\r\nimport { Address, ConfirmDialog } from \"../model/address\";\r\nimport { fetchAddressesInContact, fetchAddressesInOrganization, updateAddress } from \"./asyncThunks\";\r\n\r\nexport const initialAddressState = {\r\n data: [] as Address[],\r\n pagination: {\r\n startRow: 0,\r\n rowsPerPage: 10,\r\n rowsPerPageOptions: [10, 20, 50, 100],\r\n totalRowCount: 0,\r\n } as PaginationModel,\r\n confirmDialog: {\r\n open: false,\r\n title: \"Delete\",\r\n message: \"\",\r\n } as ConfirmDialog,\r\n};\r\n\r\nexport const addressListSlice = createSlice({\r\n name: \"addressList\",\r\n initialState: initialAddressState,\r\n reducers: {\r\n onChangeAddressPage: (state, action): void => {\r\n state.pagination.startRow = action.payload;\r\n },\r\n onChangeAddressRowPerPage: (state, action): void => {\r\n state.pagination.rowsPerPage = action.payload;\r\n },\r\n onChangeConfirmDialog: (state, action): void => {\r\n state.confirmDialog = action.payload;\r\n },\r\n },\r\n extraReducers: {\r\n [`${fetchAddressesInContact.fulfilled}`]: (state, action): void => {\r\n state.data = action.payload;\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.data.length;\r\n },\r\n [`${fetchAddressesInOrganization.fulfilled}`]: (state, action): void => {\r\n state.data = action.payload;\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.data.length;\r\n },\r\n [`${updateAddress.fulfilled}`]: (state, action): void => {\r\n state.data = action.payload;\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.data.length;\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const { onChangeAddressPage, onChangeAddressRowPerPage, onChangeConfirmDialog } = addressListSlice.actions;\r\n\r\n// Selectors\r\nexport const addressesSelector = createSelector(\r\n (state: RootState): Address[] => state.addressList.data,\r\n (data: Address[]): Address[] => data\r\n);\r\n\r\nexport const paginationSelector = createSelector(\r\n (state: RootState): PaginationModel => state.addressList.pagination,\r\n (pagination: PaginationModel): PaginationModel => pagination\r\n);\r\n\r\nexport const confirmDialogSelector = createSelector(\r\n (state: RootState): ConfirmDialog => state.addressList.confirmDialog,\r\n (confirmDialog: ConfirmDialog): ConfirmDialog => confirmDialog\r\n);\r\n","import { DeleteParams, EnumData } from \"../model/Enum\";\r\nimport axios from \"axios\";\r\n\r\nexport const fetchEnumsByType = async (type: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"Enums/GetByType?type=\" + type);\r\n return res.data;\r\n};\r\n\r\nexport const updateEnum = async (enumData: EnumData): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n await axios.post(url + \"Enums/AddOrUpdate\", enumData);\r\n};\r\n\r\nexport const deleteEnum = async (params: DeleteParams): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n await axios.delete(url + \"Enums/Delete\", { data: params });\r\n};\r\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\r\nimport { EnumData, EnumResponse } from \"../model/Enum\";\r\nimport * as services from \"../services/enumService\";\r\n\r\nexport const fetchEnumsByType = createAsyncThunk(\r\n \"enumManager/fetchEnumsByType\",\r\n async (type: string): Promise => {\r\n const enums = await services.fetchEnumsByType(type);\r\n return { enums: enums, type: type };\r\n }\r\n);\r\n\r\nexport const deleteEnum = createAsyncThunk(\r\n \"enumManager/deleteEnum\",\r\n async (enumData: EnumData): Promise => {\r\n await services.deleteEnum({ id: enumData.id, type: enumData.type });\r\n const enums = await services.fetchEnumsByType(enumData.type);\r\n return enums;\r\n }\r\n);\r\n\r\nexport const updateEnum = createAsyncThunk(\r\n \"enumManager/updateEnum\",\r\n async (enumData: EnumData): Promise => {\r\n await services.updateEnum(enumData);\r\n const enums = await services.fetchEnumsByType(enumData.type);\r\n return enums;\r\n }\r\n);\r\n","import { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\nimport { Address } from \"../../AddressManager/model/address\";\r\nimport { ContactNote } from \"../../ContactNoteManager/model/ContactNote\";\r\nimport { SortDirection } from \"@episerver/ui-framework\";\r\n\r\nexport interface ContactListViewModel {\r\n Contacts: Contact[];\r\n PagingInfo: PagingInfo;\r\n}\r\n\r\nexport interface Contact {\r\n primaryKeyId: string | null;\r\n fullName: string;\r\n firstName: string;\r\n middleName: string;\r\n lastName: string;\r\n email: string;\r\n ownerId: string | null;\r\n customerGroup: string;\r\n customerGroupId: string | null;\r\n lastOrder: string;\r\n preferredCurrencyId: string | null;\r\n preferredLanguageId: string | null;\r\n preferredShippingAddressId: string | null;\r\n preferredBillingAddressId: string | null;\r\n registrationSource: string;\r\n userId: string;\r\n extendedProperties: Property[];\r\n contactNotes: ContactNote[];\r\n addresses: Address[];\r\n created: string;\r\n modified: string;\r\n acceptMarketingEmail: boolean;\r\n}\r\n\r\nexport interface PagingInfo {\r\n StartRow: string;\r\n RowsPerPage: string;\r\n TotalRowCount: string;\r\n}\r\n\r\nexport interface EnumData {\r\n id: number;\r\n name: string;\r\n type: string;\r\n orderId: number;\r\n}\r\n\r\nexport interface EnumForm {\r\n open: boolean;\r\n title: string;\r\n data: EnumData;\r\n}\r\n\r\nexport interface ConfirmDialog {\r\n open: boolean;\r\n title: string;\r\n message: string;\r\n contactIds: string[];\r\n}\r\n\r\nexport interface KeyValueOption {\r\n key: string;\r\n value: string;\r\n}\r\n\r\nexport enum ServerSortType {\r\n Asc,\r\n Desc,\r\n}\r\n\r\nexport interface ListParams {\r\n sortField: string;\r\n sortType: ServerSortType;\r\n startIndex: number;\r\n recordsToRetrieve: number;\r\n type: ContactsType;\r\n}\r\n\r\nexport interface SearchParams {\r\n query: string;\r\n sortField: string;\r\n sortType: ServerSortType;\r\n startIndex: number;\r\n recordsToRetrieve: number;\r\n type: ContactsType;\r\n}\r\n\r\nexport interface SearchAssignmentsParams {\r\n query: string;\r\n sortField: string;\r\n sortType: ServerSortType;\r\n startIndex: number;\r\n recordsToRetrieve: number;\r\n contactId: string;\r\n}\r\n\r\nexport interface DeleteParams {\r\n contactIds: string[];\r\n query: string;\r\n sortField: string;\r\n sortType: ServerSortType;\r\n startIndex: number;\r\n recordsToRetrieve: number;\r\n type: ContactsType;\r\n}\r\n\r\nexport enum ContactTab {\r\n Details,\r\n Addresses,\r\n ContactNote,\r\n AccountAssignments\r\n}\r\n\r\nexport interface CustomerAccount {\r\n open: boolean;\r\n userId: number;\r\n username: string;\r\n password: string;\r\n email: string;\r\n description: string;\r\n approved: boolean;\r\n contactId: string;\r\n}\r\n\r\nexport enum ContactsType {\r\n Users = 5, \r\n Accounts = 4,\r\n Contacts = 1\r\n}\r\n\r\nexport enum ContactType {\r\n User = 5, \r\n Account = 4,\r\n AccountAdmin = 6,\r\n Contact = 1\r\n}\r\n\r\nexport interface UpdateContactsParams {\r\n contactIds: string[];\r\n contactId: string;\r\n}\r\n\r\nexport interface PaginationModel {\r\n startRow: number;\r\n totalRowCount: number;\r\n rowsPerPage: number;\r\n rowsPerPageOptions: number[];\r\n searchInput: string;\r\n}\r\n\r\nexport interface SortModel {\r\n sortedColumn: string;\r\n sortDirection: SortDirection;\r\n}\r\n\r\nexport const UserExtendedProps : string[] = [ \"Active\", \"PasswordIsTemporary\", \"Deleted\", \"Code\", \"Password\" ]\r\n\r\nexport const AccountExtendedProps : string[] = [\"Code\" ]","import {\r\n ContactListViewModel,\r\n Contact,\r\n KeyValueOption,\r\n ListParams,\r\n SearchParams,\r\n CustomerAccount,\r\n SearchAssignmentsParams,\r\n UpdateContactsParams\r\n} from \"../model/contact\";\r\nimport axios from \"axios\";\r\nimport { Organization } from \"../../OrganizationManager/model/organization\";\r\nimport { Address } from \"../../AddressManager/model/address\";\r\n\r\nexport const fetchContacts = async (params: ListParams): Promise => {\r\n const res = await axios.get(\"Contacts/List\", { params: params });\r\n return res.data;\r\n};\r\n\r\nexport const fetchContactById = async (contactId?: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + `Contacts/Get${contactId ? \"?contactId=\" + contactId : \"\"}`);\r\n return res.data;\r\n};\r\n\r\nexport const searchContacts = async (params: SearchParams): Promise => {\r\n if (params.query === null || params.query === \"\") {\r\n const res = await axios.get(\"Contacts/List\", {\r\n params: {\r\n sortField: params.sortField,\r\n sortType: params.sortType,\r\n startIndex: params.startIndex,\r\n recordsToRetrieve: params.recordsToRetrieve,\r\n type: params.type\r\n },\r\n });\r\n return res.data;\r\n }\r\n const res = await axios.get(`Contacts/Search`, { params });\r\n return res.data;\r\n};\r\n\r\nexport const deleteContacts = async (contactIds: string[]): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.delete(url + \"Contacts/Delete\", { data: contactIds });\r\n return res.data;\r\n};\r\n\r\nexport const updateContact = async (contact: Contact): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.post(url + \"Contacts/AddOrUpdate\", contact);\r\n return res.data;\r\n};\r\n\r\nexport const fetchCurrencies = async (): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"Common/GetCurrencies\");\r\n return res.data;\r\n};\r\n\r\nexport const fetchLanguages = async (): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"Common/GetLanguages\");\r\n return res.data;\r\n};\r\n\r\nexport const fetchAddressesByContactId = async (contactId: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"Addresses/GetByContactId?contactId=\" + contactId);\r\n return res.data;\r\n};\r\n\r\nexport const fetchOrganizations = async (): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"Organizations/List\");\r\n return res.data;\r\n};\r\n\r\nexport const fetchUserByContactId = async (contactId: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"Contacts/GetCustomerAccountByContactId?contactId=\" + contactId);\r\n return res.data;\r\n};\r\n\r\nexport const createCustomerAccount = async (account: CustomerAccount): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.post(url + \"Contacts/CreateCustomerAccount\", account);\r\n return res.data;\r\n};\r\n\r\n\r\nexport const fetchUserAccountAssignments = async (contactId: string): Promise => {\r\n const res = await axios.get(\"Contacts/UserAccountAssignments?contactId=\" + contactId);\r\n return res.data;\r\n};\r\n\r\nexport const searchAvailableUserAccountAssignments = async (params: SearchAssignmentsParams): Promise => {\r\n const res = await axios.get(\"Contacts/AvailableUserAccountAssignments\", { params: params });\r\n return res.data;\r\n};\r\n\r\nexport const UpdateUserAccountAssignments = async (params: UpdateContactsParams): Promise => {\r\n await axios.post(\"Contacts/UpdateUserAccountAssignments\", params);\r\n};\r\n\r\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\r\nimport { SearchParams, ListParams, DeleteParams, CustomerAccount, UpdateContactsParams, SearchAssignmentsParams } from \"../model/contact\";\r\nimport * as services from \"../services/contactService\";\r\nimport { AxiosError } from \"axios\";\r\n\r\n\r\nexport const fetchContacts = createAsyncThunk(\"contactManager/fetchContacts\", (params: ListParams) =>\r\n services.fetchContacts(params)\r\n);\r\n\r\nexport const fetchContactById = createAsyncThunk(\"contactDetail/fetchContactById\", (id?: string) =>\r\n services.fetchContactById(id)\r\n);\r\n\r\nexport const searchContacts = createAsyncThunk(\"contactManager/searchContacts\", (params: SearchParams) =>\r\n services.searchContacts(params)\r\n);\r\n\r\nexport const updateContact = createAsyncThunk(\r\n \"contactDetail/updateContact\",\r\n async (contact: any, { rejectWithValue }) => {\r\n try {\r\n const response = await services.updateContact(contact);\r\n return response;\r\n } catch (error) {\r\n return rejectWithValue(error.response.data);\r\n }\r\n }\r\n);\r\n\r\nexport const deleteContacts = createAsyncThunk(\r\n \"contactManager/deleteContact\",\r\n async (deleteParams: DeleteParams): Promise => {\r\n await services.deleteContacts(deleteParams.contactIds);\r\n if (deleteParams.query === \"\" || deleteParams.query === undefined) {\r\n return services.fetchContacts({\r\n sortField: deleteParams.sortField,\r\n sortType: deleteParams.sortType,\r\n startIndex: deleteParams.startIndex,\r\n recordsToRetrieve: deleteParams.recordsToRetrieve,\r\n type: deleteParams.type\r\n });\r\n } else {\r\n return services.searchContacts({\r\n query: deleteParams.query,\r\n sortField: deleteParams.sortField,\r\n sortType: deleteParams.sortType,\r\n startIndex: deleteParams.startIndex,\r\n recordsToRetrieve: deleteParams.recordsToRetrieve,\r\n type: deleteParams.type\r\n });\r\n }\r\n }\r\n);\r\n\r\nexport const fetchCurrencies = createAsyncThunk(\"contactDetail/fetchCurrencies\", () => services.fetchCurrencies());\r\n\r\nexport const fetchLanguages = createAsyncThunk(\"contactDetail/fetchLanguages\", () => services.fetchLanguages());\r\n\r\nexport const fetchAddressesByContactId = createAsyncThunk(\r\n \"contactDetail/fetchAddressesByContactId\",\r\n (contactId: string) => services.fetchAddressesByContactId(contactId)\r\n);\r\n\r\nexport const fetchOrganizations = createAsyncThunk(\"contactDetail/fetchOrganizations\", () =>\r\n services.fetchOrganizations()\r\n);\r\n\r\nexport const fetchUserByContactId = createAsyncThunk(\"contactDetail/fetchUserByContactId\", (contactId: string) =>\r\n services.fetchUserByContactId(contactId)\r\n);\r\n\r\nexport const createCustomerAccount = createAsyncThunk(\r\n \"contactDetail/createCustomerAccount\",\r\n async (account: CustomerAccount) => {\r\n let result = await services.createCustomerAccount(account);\r\n let user = await services.fetchUserByContactId(account.contactId);\r\n return { errors: result.errors, account: user };\r\n }\r\n);\r\n\r\nexport const fetchUserAccountAssignments = createAsyncThunk(\r\n \"contactManager/fetchUserAccountAssignments\",\r\n (contactId: string) => services.fetchUserAccountAssignments(contactId)\r\n);\r\n\r\nexport const searchAvailableUserAccountAssignments = createAsyncThunk(\r\n \"contactManager/searchAvailableUserAccountAssignments\",\r\n (searchParams: SearchAssignmentsParams) => services.searchAvailableUserAccountAssignments(searchParams)\r\n);\r\n\r\nexport const updateUserAccountAssignments = createAsyncThunk(\r\n \"contactManager/addUserAccountAssignments\",\r\n async (params: UpdateContactsParams) => {\r\n await services.UpdateUserAccountAssignments(params);\r\n const contacts = services.fetchUserAccountAssignments(params.contactId);\r\n return contacts;\r\n }\r\n);\r\n\r\n","import { BreadcrumbItem } from \"@episerver/ui-framework\";\r\nimport { createSelector, createSlice } from \"@reduxjs/toolkit\";\r\nimport { RootState } from \"../../store\";\r\nimport { fetchEnumsByType } from \"../../EnumManager/reducers/asyncThunks\";\r\nimport { Organization } from \"../../OrganizationManager/model/organization\";\r\nimport { Contact, ContactTab, EnumData, KeyValueOption, CustomerAccount } from \"../model/contact\";\r\nimport {\r\n createCustomerAccount,\r\n fetchAddressesByContactId,\r\n fetchContactById,\r\n fetchCurrencies,\r\n fetchLanguages,\r\n fetchOrganizations,\r\n fetchUserByContactId,\r\n updateContact,\r\n} from \"./asyncThunks\";\r\nimport { Address } from \"../../AddressManager/model/address\";\r\nimport { ContactNote } from \"../../ContactNoteManager/model/ContactNote\";\r\nimport { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\n\r\nexport const contactTitle = { Add: \"Create \", Edit: \"Edit \" };\r\n\r\nexport const initialContactDetailState = {\r\n title: \"\",\r\n contact: {\r\n primaryKeyId: null,\r\n fullName: \"\",\r\n firstName: \"\",\r\n middleName: \"\",\r\n lastName: \"\",\r\n email: \"\",\r\n ownerId: \"0\",\r\n customerGroupId: \"0\",\r\n customerGroup: \"\",\r\n preferredCurrencyId: \"0\",\r\n preferredLanguageId: \"0\",\r\n preferredShippingAddressId: \"0\",\r\n preferredBillingAddressId: \"0\",\r\n registrationSource: \"\",\r\n userId: \"\",\r\n extendedProperties: [] as Property[],\r\n contactNotes: [] as ContactNote[],\r\n addresses: [] as Address[],\r\n acceptMarketingEmail: false,\r\n } as Contact,\r\n extendedPropertyErrors: [] as Error[],\r\n customerGroups: [] as EnumData[],\r\n currencies: [{ value: \"[ No value ]\", key: \"0\" }] as KeyValueOption[],\r\n languages: [{ value: \"[ No value ]\", key: \"0\" }] as KeyValueOption[],\r\n addresses: [{ name: \"[ No value ]\", primaryKeyId: \"0\" }] as Address[],\r\n organizations: [{ name: \"[ No value ]\", primaryKeyId: \"0\" }] as Organization[],\r\n breadCrumbItems: [\r\n {\r\n title: \"Contacts\",\r\n level: 1,\r\n link: \"#/Contacts\",\r\n },\r\n ] as BreadcrumbItem[],\r\n activeTab: ContactTab.Details,\r\n customerAccount: {\r\n open: false,\r\n userId: 0,\r\n username: \"\",\r\n password: \"\",\r\n description: \"\",\r\n email: \"\",\r\n approved: true,\r\n } as CustomerAccount,\r\n\r\n error: null,\r\n errorOpen: false,\r\n};\r\n\r\nexport const contactDetailSlice = createSlice({\r\n name: \"contactDetail\",\r\n initialState: initialContactDetailState,\r\n reducers: {\r\n changeTitle: (state, action): void => {\r\n state.title = action.payload;\r\n },\r\n setParentId: (state, action): void => {\r\n state.contact.ownerId = action.payload;\r\n },\r\n setCustomerGroupId: (state, action): void => {\r\n state.contact.customerGroupId = action.payload;\r\n },\r\n updateBreadcrumb: (state, action: { payload: BreadcrumbItem }): void => {\r\n state.breadCrumbItems = [\r\n ...state.breadCrumbItems.filter((item: BreadcrumbItem) => item.level !== action.payload.level),\r\n action.payload,\r\n ];\r\n },\r\n onChangeProperty: (state, action): void => {\r\n state.contact = action.payload;\r\n },\r\n changeExtendedPropertyErrors: (state, action): void => {\r\n let { name, message } = action.payload;\r\n let error = state.extendedPropertyErrors.find((error: Error) => error.name === name);\r\n if (error) {\r\n state.extendedPropertyErrors = state.extendedPropertyErrors\r\n .filter((error: Error) => {\r\n if (error.name === name && message === \"\") return false;\r\n return true;\r\n })\r\n .map((error: Error) => {\r\n if (error.name === name) return { ...error, message: message };\r\n return error;\r\n });\r\n } else {\r\n if (message) {\r\n state.extendedPropertyErrors.push({ name: name, message: message });\r\n }\r\n }\r\n },\r\n changeActiveTab: (state, action): void => {\r\n state.activeTab = action.payload;\r\n },\r\n reset: (state): void => {\r\n state.contact = initialContactDetailState.contact;\r\n },\r\n onAddAcountDialog: (state, action): void => {\r\n state.customerAccount = action.payload;\r\n },\r\n\r\n onChangeAccount: (state, action): void => {\r\n let { name, value } = action.payload;\r\n state.customerAccount = {\r\n ...state.customerAccount,\r\n [name]: value,\r\n };\r\n },\r\n setError: (state, action): void => {\r\n state.error = action.payload;\r\n },\r\n onAddOrUpdateContactNote: (state, action): void => {\r\n const {idx, isNew, ...contactNote} = action.payload\r\n if (isNew) {\r\n state.contact.contactNotes.push(contactNote);\r\n } else {\r\n state.contact.contactNotes = state.contact.contactNotes.map((t, index) => {\r\n if (index == idx) return contactNote;\r\n return t;\r\n });\r\n }\r\n },\r\n onDeleteContactNote: (state, action): void => {\r\n let contactNotes = [...state.contact.contactNotes];\r\n state.contact.contactNotes = contactNotes.filter(\r\n (v) => action.payload.contactNoteIds.indexOf(v.contactNoteId) == -1\r\n );\r\n },\r\n\r\n onAddOrUpdateContactAddress: (state, action): void => {\r\n const {idx, isNew, ...address} = action.payload\r\n if (isNew) {\r\n state.contact.addresses.push(address);\r\n } else {\r\n state.contact.addresses = state.contact.addresses.map((t, index) => {\r\n if (index == idx) return address;\r\n return t;\r\n });\r\n }\r\n },\r\n onDeleteContactAddress: (state, action): void => {\r\n let addresses = [...state.contact.addresses];\r\n state.contact.addresses = addresses.filter((v) => action.payload.primaryKeyId != v.primaryKeyId);\r\n },\r\n },\r\n extraReducers: {\r\n [`${fetchContactById.fulfilled}`]: (state, action): void => {\r\n state.error = null;\r\n state.contact = action.payload;\r\n },\r\n [`${fetchCurrencies.fulfilled}`]: (state, action): void => {\r\n state.currencies = [...initialContactDetailState.currencies, ...action.payload];\r\n },\r\n [`${fetchLanguages.fulfilled}`]: (state, action): void => {\r\n state.languages = [...initialContactDetailState.languages, ...action.payload];\r\n },\r\n [`${fetchEnumsByType.fulfilled}`]: (state, action): void => {\r\n state.customerGroups = [...initialContactDetailState.customerGroups, ...action.payload.enums];\r\n },\r\n [`${fetchAddressesByContactId.fulfilled}`]: (state, action): void => {\r\n state.addresses = [...initialContactDetailState.addresses, ...action.payload];\r\n },\r\n [`${fetchOrganizations.fulfilled}`]: (state, action): void => {\r\n state.organizations = [...initialContactDetailState.organizations, ...action.payload];\r\n },\r\n [`${fetchUserByContactId.fulfilled}`]: (state, action): void => {\r\n state.customerAccount = action.payload;\r\n },\r\n [`${updateContact.rejected}`]: (state, action): void => {\r\n state.error = action.payload;\r\n },\r\n [`${createCustomerAccount.fulfilled}`]: (state, action): void => {\r\n state.error = action.payload.errors.join(\" \");\r\n state.customerAccount = action.payload.account;\r\n state.contact.userId = action.payload.account.username; \r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const {\r\n changeTitle,\r\n setParentId,\r\n setCustomerGroupId,\r\n onChangeProperty,\r\n updateBreadcrumb,\r\n changeExtendedPropertyErrors,\r\n changeActiveTab,\r\n reset,\r\n onAddAcountDialog,\r\n onChangeAccount,\r\n setError,\r\n onAddOrUpdateContactNote,\r\n onDeleteContactNote,\r\n onAddOrUpdateContactAddress,\r\n onDeleteContactAddress,\r\n} = contactDetailSlice.actions;\r\n\r\n// Selectors\r\nexport const titleSelector = createSelector(\r\n (state: RootState): string => state.contactDetail.title,\r\n (title: string): string => title\r\n);\r\n\r\nexport const contactSelector = createSelector(\r\n (state: RootState): Contact => state.contactDetail.contact,\r\n (contact: Contact): Contact => contact\r\n);\r\n\r\nexport const currenciesSelector = createSelector(\r\n (state: RootState): KeyValueOption[] => state.contactDetail.currencies,\r\n (currencies: KeyValueOption[]): KeyValueOption[] => currencies\r\n);\r\n\r\nexport const languagesSelector = createSelector(\r\n (state: RootState): KeyValueOption[] => state.contactDetail.languages,\r\n (languages: KeyValueOption[]): KeyValueOption[] => languages\r\n);\r\n\r\nexport const customerGroupsSelector = createSelector(\r\n (state: RootState): EnumData[] => state.contactDetail.customerGroups,\r\n (customerGroups: EnumData[]): EnumData[] => customerGroups\r\n);\r\n\r\nexport const addressesSelector = createSelector(\r\n (state: RootState): Address[] => state.contactDetail.addresses,\r\n (addresses: Address[]): Address[] => addresses\r\n);\r\n\r\nexport const organizationsSelector = createSelector(\r\n (state: RootState): Organization[] => state.contactDetail.organizations,\r\n (organizations: Organization[]): Organization[] => organizations\r\n);\r\n\r\nexport const breadcrumbItemsSelector = createSelector(\r\n (state: RootState): BreadcrumbItem[] => state.contactDetail.breadCrumbItems,\r\n (breadCrumbItems: BreadcrumbItem[]): BreadcrumbItem[] => breadCrumbItems\r\n);\r\n\r\nexport const extendedPropertyErrorsSelector = createSelector(\r\n (state: RootState): Error[] => state.contactDetail.extendedPropertyErrors,\r\n (extendedPropertyErrors: Error[]): Error[] => extendedPropertyErrors\r\n);\r\n\r\nexport const activeTabSelector = createSelector(\r\n (state: RootState): ContactTab => state.contactDetail.activeTab,\r\n (activeTab: ContactTab): ContactTab => activeTab\r\n);\r\n\r\nexport const customerAccountSelector = createSelector(\r\n (state: RootState): CustomerAccount => state.contactDetail.customerAccount,\r\n (customerAccount: CustomerAccount): CustomerAccount => customerAccount\r\n);\r\n\r\nexport const errorSelector = createSelector(\r\n (state: RootState): any => state.contactDetail.error,\r\n (error: any) => error\r\n);\r\n\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { SortDirection } from \"@episerver/ui-framework\";\r\nimport { ConfirmDialog, Contact, ContactsType } from \"../model/contact\";\r\nimport { fetchContacts, searchContacts, deleteContacts } from \"./asyncThunks\";\r\n\r\ninterface SortModel {\r\n sortedColumn: string;\r\n sortDirection: SortDirection;\r\n}\r\n\r\ninterface PaginationModel {\r\n startRow: number;\r\n totalRowCount: number;\r\n rowsPerPage: number;\r\n rowsPerPageOptions: number[];\r\n searchInput: string;\r\n}\r\n\r\nexport interface ContactManagerState {\r\n contacts: Contact[];\r\n totalContacts: number;\r\n selectedContacts: string[];\r\n sort: SortModel;\r\n contactListPagination: PaginationModel;\r\n confirmDialog: ConfirmDialog;\r\n}\r\n\r\nexport const initialContactState: ContactManagerState = {\r\n contacts: [] as Contact[],\r\n totalContacts: 0,\r\n selectedContacts: [] as string[],\r\n sort: {\r\n sortedColumn: \"FullName\",\r\n sortDirection: SortDirection.Ascending,\r\n },\r\n contactListPagination: {\r\n startRow: 0,\r\n rowsPerPage: 10,\r\n rowsPerPageOptions: [10, 20, 50, 100],\r\n totalRowCount: 0,\r\n searchInput: \"\",\r\n },\r\n confirmDialog: {\r\n open: false,\r\n title: \"Delete\",\r\n message: \"\",\r\n } as ConfirmDialog\r\n};\r\n\r\nexport const contactListSlice = createSlice({\r\n name: \"contactList\",\r\n initialState: initialContactState,\r\n reducers: {\r\n selectContact: (state, action) => {\r\n state.selectedContacts.push(action.payload);\r\n },\r\n deselectContact: (state, action) => {\r\n state.selectedContacts = state.selectedContacts.filter(\r\n (PrimaryKeyId: string) => PrimaryKeyId !== action.payload\r\n );\r\n },\r\n selectAllContacts: (state) => {\r\n state.selectedContacts = state.selectedContacts\r\n .concat(state.contacts.map((contact: Contact) => contact.primaryKeyId!))\r\n .filter(function (elem, index, self) {\r\n return index === self.indexOf(elem);\r\n });\r\n },\r\n deselectAllContacts: (state) => {\r\n state.selectedContacts = state.selectedContacts.filter(function (el) {\r\n return !state.contacts.map((contact: Contact) => contact.primaryKeyId!).includes(el);\r\n });\r\n },\r\n sort: (state, action): void => {\r\n const { column, direction } = action.payload;\r\n state.sort = { sortDirection: direction, sortedColumn: column };\r\n },\r\n onChangeConfirmDialog: (state, action): void => {\r\n state.confirmDialog = action.payload;\r\n },\r\n reset: (state): void => {\r\n state.selectedContacts = initialContactState.selectedContacts;\r\n },\r\n },\r\n extraReducers: {\r\n [`${fetchContacts.fulfilled}`]: (state, action): void => {\r\n state.contacts = action.payload.contacts;\r\n state.contactListPagination = {\r\n ...state.contactListPagination,\r\n ...action.payload.pagingInfo,\r\n };\r\n },\r\n [`${searchContacts.fulfilled}`]: (state, action): void => {\r\n state.contacts = action.payload.contacts;\r\n state.contactListPagination = {\r\n ...state.contactListPagination,\r\n ...action.payload.pagingInfo,\r\n };\r\n },\r\n [`${deleteContacts.fulfilled}`]: (state, action): void => {\r\n state.contacts = action.payload.contacts;\r\n state.contactListPagination = {\r\n ...state.contactListPagination,\r\n ...action.payload.pagingInfo,\r\n };\r\n state.selectedContacts = [];\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const {\r\n onChangeConfirmDialog,\r\n selectContact,\r\n deselectContact,\r\n selectAllContacts,\r\n deselectAllContacts,\r\n sort,\r\n reset\r\n} = contactListSlice.actions;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { RootState } from \"../../store\";\r\nimport { Contact, PaginationModel } from \"../../ContactManager/model/contact\";\r\nimport { updateUserAccountAssignments, fetchUserAccountAssignments } from \"./asyncThunks\";\r\n\r\n\r\n\r\nexport const initialAccountAssignmentsState = {\r\n contacts: [] as Contact[],\r\n pagination: {\r\n startRow: 0,\r\n rowsPerPage: 10,\r\n rowsPerPageOptions: [10, 20, 50, 100],\r\n totalRowCount: 0,\r\n } as PaginationModel,\r\n};\r\n\r\nexport const userAccountAssignmentsSlice = createSlice({\r\n name: \"userAccountAssignments\",\r\n initialState: initialAccountAssignmentsState,\r\n reducers: {\r\n onChangeContactPage: (state, action): void => {\r\n state.pagination.startRow = action.payload;\r\n },\r\n onChangeContactRowPerPage: (state, action): void => {\r\n state.pagination.rowsPerPage = action.payload;\r\n },\r\n },\r\n extraReducers: {\r\n [`${fetchUserAccountAssignments.fulfilled}`]: (state, action): void => {\r\n state.contacts = action.payload;\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.contacts.length;\r\n },\r\n [`${updateUserAccountAssignments.fulfilled}`]: (state, action): void => {\r\n state.contacts = action.payload;\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.contacts.length;\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const { onChangeContactPage, onChangeContactRowPerPage } = userAccountAssignmentsSlice.actions;\r\n\r\n// Selectors\r\nexport const userAccountAssignmentsSelector = (state: RootState) => state.userAccountAssignments.contacts;\r\n\r\nexport const userAccountAssignmentsPaginationSelector = (state: RootState): PaginationModel =>\r\n state.userAccountAssignments.pagination;\r\n\r\n","import { SortDirection } from \"@episerver/ui-framework\";\r\nimport { createSlice } from \"@reduxjs/toolkit\";\r\nimport { RootState } from \"../../store\";\r\nimport { Contact } from \"../../ContactManager/model/contact\";\r\nimport { searchAvailableUserAccountAssignments, fetchUserAccountAssignments } from \"../../ContactManager/reducers/asyncThunks\";\r\nimport { PaginationModel, SortModel } from \"../model/contact\";\r\n\r\nexport const initialAddAssignmentsToUserState = {\r\n userId: \"\",\r\n title: \"Add accounts to user\",\r\n open: false,\r\n keyword: \"\",\r\n contacts: [] as Contact[],\r\n selectedContacts: [] as Contact[],\r\n sort: {\r\n sortedColumn: \"FullName\",\r\n sortDirection: SortDirection.Ascending,\r\n } as SortModel,\r\n contactListPagination: {\r\n startRow: 0,\r\n rowsPerPage: 10,\r\n rowsPerPageOptions: [10, 15, 20],\r\n totalRowCount: 0,\r\n } as PaginationModel,\r\n};\r\n\r\nexport const addAssignmentsToUserSlice = createSlice({\r\n name: \"addAssignmentsToUser\",\r\n initialState: initialAddAssignmentsToUserState,\r\n reducers: {\r\n onChangeDialog: (state, action): void => {\r\n state.open = action.payload.open;\r\n state.contactListPagination.startRow = initialAddAssignmentsToUserState.contactListPagination.startRow;\r\n },\r\n selectContact: (state, action) => {\r\n state.selectedContacts.push(action.payload);\r\n },\r\n deselectContact: (state, action) => {\r\n state.selectedContacts = state.selectedContacts.filter(\r\n (contact: Contact) => contact.primaryKeyId !== action.payload.primaryKeyId\r\n );\r\n },\r\n selectAllContacts: (state) => {\r\n state.selectedContacts = state.contacts;\r\n },\r\n deselectAllContacts: (state) => {\r\n state.selectedContacts = [];\r\n },\r\n sort: (state, action): void => {\r\n const { column, direction } = action.payload;\r\n state.sort = { sortDirection: direction, sortedColumn: column };\r\n },\r\n\r\n changeKeyword: (state, action): void => {\r\n state.keyword = action.payload;\r\n },\r\n },\r\n extraReducers: {\r\n [`${searchAvailableUserAccountAssignments.fulfilled}`]: (state, action): void => {\r\n state.contacts = action.payload.contacts;\r\n state.contactListPagination.startRow = action.payload.pagingInfo.startRow;\r\n state.contactListPagination.rowsPerPage = action.payload.pagingInfo.rowsPerPage;\r\n state.contactListPagination.totalRowCount = action.payload.pagingInfo.totalRowCount; \r\n },\r\n [`${fetchUserAccountAssignments.fulfilled}`]: (state, action): void => {\r\n state.selectedContacts = action.payload;\r\n \r\n }\r\n },\r\n});\r\n\r\n// Actions\r\nexport const {\r\n onChangeDialog,\r\n selectContact,\r\n deselectContact,\r\n selectAllContacts,\r\n deselectAllContacts,\r\n sort,\r\n changeKeyword,\r\n} = addAssignmentsToUserSlice.actions;\r\n\r\n// Selectors\r\nexport const contactsSelector = (state: RootState) => state.addAssignmentsToUser.contacts;\r\n\r\nexport const sortSelector = (state: RootState) => state.addAssignmentsToUser.sort;\r\n\r\nexport const contactListPaginationSelector = (state: RootState): PaginationModel =>\r\n state.addAssignmentsToUser.contactListPagination;\r\n\r\nexport const selectedContactsSelector = (state: RootState): Contact[] =>\r\n state.addAssignmentsToUser.selectedContacts;\r\n\r\nexport const isOpenDialogSelector = (state: RootState): boolean => state.addAssignmentsToUser.open;\r\n\r\nexport const addContactsTitleSelector = (state: RootState): string => state.addAssignmentsToUser.title;\r\n\r\nexport const userIdSelector = (state: RootState): string => state.addAssignmentsToUser.userId;\r\n\r\nexport const keywordSelector = (state: RootState): string => state.addAssignmentsToUser.keyword;\r\n","import { ContactNote } from \"../model/ContactNote\";\r\nimport axios from \"axios\";\r\n\r\nexport const fetchContactNotes = async (contactId: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"ContactNotes/List?contactId=\" + contactId);\r\n return res.data;\r\n};\r\n\r\nexport const fetchContactNoteById = async (contactNoteId: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"ContactNotes/Get?contactNoteId=\" + contactNoteId);\r\n return res.data;\r\n};\r\n\r\nexport const addOrUpdateContactNotes = async (contactNote: ContactNote): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n await axios.post(url + \"ContactNotes/AddOrUpdate\", contactNote);\r\n};\r\n\r\nexport const deleteContactNotes = async (contactNoteIds: string[]): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n await axios.delete(url + \"ContactNotes/Delete\", { data: contactNoteIds });\r\n};\r\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\r\nimport { ContactNote, DeleteParams } from \"../model/ContactNote\";\r\nimport * as services from \"../services/contactNoteService\";\r\n\r\nexport const fetchContactNotes = createAsyncThunk(\"contactNoteList/fetchContactNotes\", (contactId: string) =>\r\n services.fetchContactNotes(contactId)\r\n);\r\n\r\nexport const fetchContactNoteById = createAsyncThunk(\"contactNoteList/fetchContactNoteById\", (contactNoteId: string) =>\r\n services.fetchContactNoteById(contactNoteId)\r\n);\r\n\r\nexport const addOrUpdateContactNote = createAsyncThunk(\r\n \"contactNoteForm/addOrUpdateContactNote\",\r\n (contactNote: ContactNote) => services.addOrUpdateContactNotes(contactNote)\r\n);\r\n\r\nexport const deleteContactNotes = createAsyncThunk(\r\n \"contactNoteList/deleteContactNotes\",\r\n async (params: DeleteParams): Promise => {\r\n await services.deleteContactNotes(params.contactNoteIds);\r\n const contactNotes = services.fetchContactNotes(params.contactId);\r\n return contactNotes;\r\n }\r\n);\r\n","import { SortDirection } from \"@episerver/ui-framework\";\r\nimport { createSelector, createSlice } from \"@reduxjs/toolkit\";\r\nimport { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\nimport { RootState } from \"../../store\";\r\nimport { ContactNote, DeleteDialogParams, PaginationModel, SortModel } from \"../model/ContactNote\";\r\nimport { deleteContactNotes, fetchContactNoteById, fetchContactNotes } from \"./asyncThunks\";\r\n\r\nexport interface ContactNoteState {\r\n contactNotes: ContactNote[];\r\n contactNote: ContactNote;\r\n selectedContactNotes: string[];\r\n pagination: PaginationModel;\r\n sort: SortModel;\r\n dialogStatus: boolean;\r\n confirmDialogStatus: DeleteDialogParams;\r\n}\r\n\r\nexport const initialContactNoteState: ContactNoteState = {\r\n contactNotes: [],\r\n contactNote: {\r\n contactNoteId: null,\r\n created: null,\r\n modified: null,\r\n noteTitle: \"\",\r\n noteContent: \"\",\r\n contactId: null,\r\n contactName: null,\r\n extendedProperties: [] as Property[],\r\n isFetched: false,\r\n isNew: true,\r\n idx: 1\r\n },\r\n selectedContactNotes: [] as string[],\r\n pagination: {\r\n startRow: 0,\r\n rowsPerPage: 10,\r\n rowsPerPageOptions: [10, 20, 50, 100],\r\n totalRowCount: 0,\r\n },\r\n sort: {\r\n sortedColumn: \"\",\r\n sortDirection: SortDirection.Unsorted,\r\n } as SortModel,\r\n dialogStatus: false,\r\n confirmDialogStatus: {\r\n dialogOpen: false,\r\n contactNoteIds: [],\r\n },\r\n};\r\n\r\nexport const contactNoteManagerSlice = createSlice({\r\n name: \"contactNoteManager\",\r\n initialState: initialContactNoteState,\r\n reducers: {\r\n selectContactNote: (state, action) => {\r\n state.selectedContactNotes.push(action.payload);\r\n },\r\n deselectContactNote: (state, action) => {\r\n state.selectedContactNotes = state.selectedContactNotes.filter(\r\n (contactNoteId: string) => contactNoteId !== action.payload\r\n );\r\n },\r\n selectAllContactNotes: (state, action) => {\r\n state.selectedContactNotes = action.payload.map((contactNote: ContactNote) => contactNote.contactNoteId!);\r\n },\r\n deselectAllContactNotes: (state) => {\r\n state.selectedContactNotes = [];\r\n },\r\n sort: (state, action): void => {\r\n const { column, direction } = action.payload;\r\n state.sort = { sortDirection: direction, sortedColumn: column };\r\n state.contactNotes = state.contactNotes.sort((a: ContactNote, b: ContactNote) => {\r\n const aValue = (a[column as keyof typeof a] || \"\").toString();\r\n const bValue = (b[column as keyof typeof a] || \"\").toString();\r\n\r\n if (direction === SortDirection.Ascending) {\r\n return aValue.localeCompare(bValue, undefined, { numeric: true });\r\n }\r\n return bValue.localeCompare(aValue, undefined, { numeric: true });\r\n });\r\n },\r\n onChangeContactNotePage: (state, action): void => {\r\n state.pagination.startRow = action.payload;\r\n },\r\n onChangeContactNoteRowPerPage: (state, action): void => {\r\n state.pagination.rowsPerPage = action.payload;\r\n },\r\n onChangeDialogStatus: (state, action): void => {\r\n state.dialogStatus = action.payload.dialogStatus;\r\n state.contactNote = action.payload.contactNote;\r\n },\r\n onChangeConfirmDialogStatus: (state, action): void => {\r\n state.confirmDialogStatus.dialogOpen = action.payload.dialogOpen;\r\n state.confirmDialogStatus.contactNoteIds = action.payload.contactNoteIds;\r\n },\r\n onAddOrUpdate: (state, action): void => {\r\n if (action.payload.contactNoteId != null && action.payload.contactNoteId.trim().length > 0) {\r\n state.contactNotes = state.contactNotes.map((t) => {\r\n if (t.contactNoteId === action.payload.contactNoteId) return action.payload;\r\n return t;\r\n });\r\n } else {\r\n state.contactNotes.push(action.payload);\r\n }\r\n },\r\n onDelete: (state, action): void => {\r\n let contactNotes = [...state.contactNotes];\r\n contactNotes.splice(action.payload, 1);\r\n state.contactNotes = contactNotes;\r\n },\r\n },\r\n extraReducers: {\r\n [`${fetchContactNotes.fulfilled}`]: (state, action): void => {\r\n state.contactNotes = action.payload;\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.contactNotes.length;\r\n },\r\n [`${deleteContactNotes.fulfilled}`]: (state, action): void => {\r\n state.contactNotes = action.payload;\r\n state.selectedContactNotes = [];\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.contactNotes.length;\r\n },\r\n [`${fetchContactNoteById.fulfilled}`]: (state, action): void => {\r\n state.contactNote = { ...action.payload, isFetched: true, isNew: state.contactNote.isNew, idx: state.contactNote.idx};\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const {\r\n selectContactNote,\r\n deselectContactNote,\r\n selectAllContactNotes,\r\n deselectAllContactNotes,\r\n sort,\r\n onChangeContactNotePage,\r\n onChangeContactNoteRowPerPage,\r\n onChangeDialogStatus,\r\n onChangeConfirmDialogStatus,\r\n onAddOrUpdate,\r\n onDelete,\r\n} = contactNoteManagerSlice.actions;\r\n\r\n// Selectors\r\nexport const contactNotesSelector = createSelector(\r\n (state: RootState): ContactNote[] => state.contactNoteManager.contactNotes,\r\n (contactNotes: ContactNote[]): ContactNote[] => contactNotes\r\n);\r\n\r\nexport const selectedContactNotesSelector = createSelector(\r\n (state: RootState): string[] => state.contactNoteManager.selectedContactNotes,\r\n (selectedContactNotes: string[]): string[] => selectedContactNotes\r\n);\r\n\r\nexport const contactNoteSelector = createSelector(\r\n (state: RootState): ContactNote => state.contactNoteManager.contactNote,\r\n (contactNote: ContactNote): ContactNote => contactNote\r\n);\r\n\r\nexport const dialogStatusSelector = createSelector(\r\n (state: RootState): boolean => state.contactNoteManager.dialogStatus,\r\n (dialogStatus: boolean): boolean => dialogStatus\r\n);\r\n\r\nexport const confirmDialogStatusSelector = createSelector(\r\n (state: RootState): DeleteDialogParams => state.contactNoteManager.confirmDialogStatus,\r\n (confirmDialogStatus: DeleteDialogParams): DeleteDialogParams => confirmDialogStatus\r\n);\r\n\r\nexport const paginationSelector = createSelector(\r\n (state: RootState): PaginationModel => state.contactNoteManager.pagination,\r\n (pagination: PaginationModel): PaginationModel => pagination\r\n);\r\n","import { createSelector, createSlice } from \"@reduxjs/toolkit\";\r\nimport { RootState } from \"../../store\";\r\nimport { EnumData, EnumForm } from \"../model/Enum\";\r\n\r\nexport const enumFormTitle = {\r\n OrganizationType: \"Organization Type\",\r\n ContactGroup: \"Contact Group\",\r\n BusinessCategory: \"Business Categorie\",\r\n};\r\n\r\nexport const enumFormType = {\r\n OrganizationType: \"OrganizationType\",\r\n ContactGroup: \"ContactGroup\",\r\n BusinessCategory: \"BusinessCategory\",\r\n};\r\n\r\nexport const initialEnumFormState = {\r\n form: {\r\n title: \"\",\r\n open: false,\r\n enumData: {\r\n id: 0,\r\n name: \"\",\r\n type: \"\",\r\n } as EnumData,\r\n } as EnumForm,\r\n};\r\nexport const enumFormSlice = createSlice({\r\n name: \"enumForm\",\r\n initialState: initialEnumFormState,\r\n reducers: {\r\n onChangeType: (state, action): void => {\r\n state.form.enumData.type = action.payload;\r\n },\r\n onChangeName: (state, action): void => {\r\n state.form.enumData.name = action.payload;\r\n },\r\n onOpenDialog: (state, action): void => {\r\n state.form = {\r\n ...action.payload.form,\r\n enumData: {\r\n ...action.payload.form.enumData,\r\n type: action.payload.form.enumData.type\r\n ? action.payload.form.enumData.type\r\n : state.form.enumData.type,\r\n },\r\n };\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const { onChangeType, onChangeName, onOpenDialog } = enumFormSlice.actions;\r\n\r\n// Selectors\r\nexport const formSelector = createSelector(\r\n (state: RootState): EnumForm => state.enumForm.form,\r\n (form: EnumForm): EnumForm => form\r\n);\r\n","import { createSelector, createSlice } from \"@reduxjs/toolkit\";\r\nimport { RootState } from \"../../store\";\r\nimport { PaginationModel } from \"../../OrganizationManager/model/organization\";\r\nimport { ConfirmDialog, EnumData } from \"../model/Enum\";\r\nimport { deleteEnum, fetchEnumsByType, updateEnum } from \"./asyncThunks\";\r\n\r\nexport const enumType = {\r\n OrganizationType: \"OrganizationType\",\r\n ContactGroup: \"ContactGroup\",\r\n BusinessCategory: \"BusinessCategory\",\r\n};\r\nexport const enumListTitle = {\r\n OrganizationType: \"Organization Types\",\r\n ContactGroup: \"Customer Groups\",\r\n BusinessCategory: \"Business Categories\",\r\n};\r\nexport const initialEnumState = {\r\n title: \"\",\r\n data: [] as EnumData[],\r\n pagination: {\r\n startRow: 0,\r\n rowsPerPage: 10,\r\n rowsPerPageOptions: [10, 20, 50, 100],\r\n totalRowCount: 0,\r\n } as PaginationModel,\r\n confirmDialog: {\r\n open: false,\r\n title: \"Deleting\",\r\n message: \"Are you sure to delete?\",\r\n } as ConfirmDialog,\r\n};\r\nexport const enumManagerSlice = createSlice({\r\n name: \"enumManager\",\r\n initialState: initialEnumState,\r\n reducers: {\r\n onChangeEnumPage: (state, action): void => {\r\n state.pagination.startRow = action.payload;\r\n },\r\n onChangeEnumRowPerPage: (state, action): void => {\r\n state.pagination.rowsPerPage = action.payload;\r\n },\r\n onChangeConfirmDialog: (state, action): void => {\r\n state.confirmDialog = action.payload;\r\n },\r\n },\r\n extraReducers: {\r\n [`${fetchEnumsByType.fulfilled}`]: (state, action): void => {\r\n state.data = action.payload.enums;\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.data.length;\r\n },\r\n [`${deleteEnum.fulfilled}`]: (state, action): void => {\r\n state.data = action.payload;\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.data.length;\r\n },\r\n [`${updateEnum.fulfilled}`]: (state, action): void => {\r\n state.data = action.payload;\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.data.length;\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const { onChangeEnumRowPerPage, onChangeEnumPage, onChangeConfirmDialog } = enumManagerSlice.actions;\r\n\r\n// Selectors\r\nexport const enumsSelector = createSelector(\r\n (state: RootState): EnumData[] => state.enumManager.data,\r\n (customerGroups: EnumData[]): EnumData[] => customerGroups\r\n);\r\n\r\nexport const paginationSelector = createSelector(\r\n (state: RootState): PaginationModel => state.enumManager.pagination,\r\n (pagination: PaginationModel): PaginationModel => pagination\r\n);\r\n\r\nexport const confirmDialogSelector = createSelector(\r\n (state: RootState): ConfirmDialog => state.enumManager.confirmDialog,\r\n (confirmDialog: ConfirmDialog): ConfirmDialog => confirmDialog\r\n);\r\n","import axios from \"axios\";\r\nimport { Contact } from \"../../ContactManager/model/contact\";\r\nimport { SearchParams } from \"../../OrganizationManager/model/organization\";\r\nimport { AddChildOrganizationsParams, AddContactsParams, DeleteMode, Organization } from \"../model/organization\";\r\n\r\nexport const fetchOrganizations = async (): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"Organizations/List\");\r\n return res.data;\r\n};\r\n\r\nexport const searchOrganizations = async (params: SearchParams): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"Organizations/Search\", { params });\r\n return {\r\n ...res.data,\r\n ...params,\r\n };\r\n};\r\n\r\nexport const updateOrganization = async (organization: Organization): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n await axios.post(url +\"Organizations/AddOrUpdate\", organization);\r\n};\r\n\r\nexport const deleteOrganizations = async (organizationIds: string[], mode: DeleteMode): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n await axios.delete(url + `Organizations/Delete?mode=${mode}`, { data: organizationIds });\r\n};\r\n\r\nexport const fetchOrganizationById = async (orgId?: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + `Organizations/Get${orgId ? \"?organizationId=\" + orgId : \"\"}`);\r\n return res.data;\r\n};\r\n\r\nexport const fetchContactsInOrganization = async (orgId: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(url + \"Organizations/GetContactsInOrganization?organizationId=\" + orgId);\r\n return res.data;\r\n};\r\n\r\nexport const AddContactsToOrganization = async (params: AddContactsParams): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n await axios.post(url + \"Organizations/AddContactsToOrganization\", params);\r\n};\r\n\r\nexport const fetchChildOrganizations = async (parentOrganizationId: string): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const res = await axios.get(\r\n url + \"Organizations/GetChildOrganizations?organizationId=\" + parentOrganizationId\r\n );\r\n return res.data;\r\n};\r\n\r\nexport const addChildOrganizationsToOrganization = async (params: AddChildOrganizationsParams): Promise => {\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n await axios.post(url + \"Organizations/AddChildOrganizationsToOrganization\", params);\r\n};\r\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\r\nimport { AddChildOrganizationsParams, AddContactsParams, DeleteParams, SearchParams } from \"../model/organization\";\r\nimport * as services from \"../services/organizationService\";\r\n\r\nexport const fetchOrganizations = createAsyncThunk(\"organizationManager/fetchOrganizations\", () => \r\n services.fetchOrganizations()\r\n);\r\n\r\nexport const searchOrganizations = createAsyncThunk(\r\n \"organizationManager/searchOrganizations\",\r\n async (params: SearchParams) => {\r\n const searchResult = await services.searchOrganizations(params);\r\n return {\r\n ...searchResult,\r\n ...params,\r\n };\r\n }\r\n);\r\n\r\nexport const fetchOrganizationById = createAsyncThunk(\"organizationManager/fetchOrganizationById\", (orgId?: string) =>\r\n services.fetchOrganizationById(orgId)\r\n);\r\n\r\nexport const updateOrganization = createAsyncThunk(\r\n \"organizationManager/updateOrganization\",\r\n async (org: any, { rejectWithValue }) => {\r\n try {\r\n const response = await services.updateOrganization(org);\r\n return response;\r\n } catch (error) {\r\n return rejectWithValue(error.response.data);\r\n }\r\n }\r\n);\r\n\r\nexport const deleteOrganizations = createAsyncThunk(\r\n \"organizationManager/deleteOrganizations\",\r\n async (params: DeleteParams): Promise => {\r\n await services.deleteOrganizations(params.organizationIds, params.mode);\r\n const searchParams = {\r\n query: params.query,\r\n sortField: params.sortField,\r\n sortType: params.sortType,\r\n startIndex: params.startIndex,\r\n recordsToRetrieve: params.recordsToRetrieve,\r\n };\r\n const searchResult = await services.searchOrganizations(searchParams);\r\n return {\r\n ...searchResult,\r\n ...searchParams,\r\n };\r\n }\r\n);\r\n\r\nexport const fetchContactsInOrganization = createAsyncThunk(\r\n \"organizationManager/fetchContactsInOrganization\",\r\n (orgId: string) => services.fetchContactsInOrganization(orgId)\r\n);\r\n\r\nexport const addContactsToOrganization = createAsyncThunk(\r\n \"organizationManager/AddCustomerContactsToOrganization\",\r\n async (params: AddContactsParams) => {\r\n await services.AddContactsToOrganization(params);\r\n const contacts = services.fetchContactsInOrganization(params.organizationId);\r\n return contacts;\r\n }\r\n);\r\n\r\nexport const fetchChildOrganizations = createAsyncThunk(\r\n \"childOrganizationList/fetchChildOrganizations\",\r\n (parentOrganizationId: string) => services.fetchChildOrganizations(parentOrganizationId)\r\n);\r\n\r\nexport const addChildOrganizationsToOrganization = createAsyncThunk(\r\n \"childOrganizationList/addChildOrganizationsToOrganization\",\r\n async (params: AddChildOrganizationsParams, { rejectWithValue }) => {\r\n try {\r\n await services.addChildOrganizationsToOrganization(params);\r\n const childOrganizations = services.fetchChildOrganizations(params.parentOrganizationId);\r\n return childOrganizations;\r\n } catch (error) {\r\n return rejectWithValue(error.response.data);\r\n }\r\n }\r\n);\r\n","import { createSlice, createSelector } from \"@reduxjs/toolkit\";\r\nimport { RootState } from \"../../store\";\r\nimport { Organization } from \"../model/organization\";\r\nimport { addChildOrganizationsToOrganization, deleteOrganizations, fetchOrganizations } from \"./asyncThunks\";\r\n\r\nexport const initialOrganizationState = {\r\n open: false,\r\n error: null\r\n};\r\n\r\nexport const addChildOrganizationsSlice = createSlice({\r\n name: \"addChildOrganizations\",\r\n initialState: initialOrganizationState,\r\n reducers: {\r\n onChangeDialog: (state, action): void => {\r\n state.open = action.payload.open;\r\n },\r\n clearAddChildError: (state): void => {\r\n state.error = null;\r\n },\r\n },\r\n extraReducers: {\r\n [`${addChildOrganizationsToOrganization.rejected}`]: (state, action): void => {\r\n state.error = action.payload\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const { onChangeDialog, clearAddChildError } = addChildOrganizationsSlice.actions;\r\n\r\n// Selectors\r\nexport const isOpenDialogSelector = (state: RootState): boolean => state.addChildOrganizations.open;\r\n\r\nexport const errorSelector = createSelector(\r\n (state: RootState): any => state.addChildOrganizations.error,\r\n (error: any) => error\r\n);","import { SortDirection } from \"@episerver/ui-framework\";\r\nimport { createSlice } from \"@reduxjs/toolkit\";\r\nimport { RootState } from \"../../store\";\r\nimport { Contact } from \"../../ContactManager/model/contact\";\r\nimport { fetchContacts, searchContacts } from \"../../ContactManager/reducers/asyncThunks\";\r\nimport { PaginationModel, SortModel } from \"../model/organization\";\r\n\r\nexport const initialAddContactsToOrganizationState = {\r\n organizationId: \"\",\r\n title: \"Add contacts\",\r\n open: false,\r\n keyword: \"\",\r\n contacts: [] as Contact[],\r\n selectedContacts: [] as Contact[],\r\n sort: {\r\n sortedColumn: \"FullName\",\r\n sortDirection: SortDirection.Ascending,\r\n } as SortModel,\r\n contactListPagination: {\r\n startRow: 0,\r\n rowsPerPage: 10,\r\n rowsPerPageOptions: [10, 15, 20],\r\n totalRowCount: 0,\r\n } as PaginationModel,\r\n};\r\n\r\nexport const addContactsToOrganizationSlice = createSlice({\r\n name: \"addContactsToOrganization\",\r\n initialState: initialAddContactsToOrganizationState,\r\n reducers: {\r\n onChangeDialog: (state, action): void => {\r\n state.open = action.payload.open;\r\n state.contactListPagination.startRow = initialAddContactsToOrganizationState.contactListPagination.startRow;\r\n state.selectedContacts = [];\r\n },\r\n selectContact: (state, action) => {\r\n state.selectedContacts.push(action.payload);\r\n },\r\n deselectContact: (state, action) => {\r\n state.selectedContacts = state.selectedContacts.filter(\r\n (contact: Contact) => contact.primaryKeyId !== action.payload.primaryKeyId\r\n );\r\n },\r\n selectAllContacts: (state) => {\r\n state.selectedContacts = state.contacts;\r\n },\r\n deselectAllContacts: (state) => {\r\n state.selectedContacts = [];\r\n },\r\n sort: (state, action): void => {\r\n const { column, direction } = action.payload;\r\n state.sort = { sortDirection: direction, sortedColumn: column };\r\n },\r\n\r\n changeKeyword: (state, action): void => {\r\n state.keyword = action.payload;\r\n },\r\n },\r\n extraReducers: {\r\n [`${fetchContacts.fulfilled}`]: (state, action): void => {\r\n state.contacts = action.payload.contacts;\r\n state.contactListPagination.startRow = action.payload.pagingInfo.startRow;\r\n state.contactListPagination.rowsPerPage = action.payload.pagingInfo.rowsPerPage;\r\n state.contactListPagination.totalRowCount = action.payload.pagingInfo.totalRowCount;\r\n state.selectedContacts = [];\r\n },\r\n [`${searchContacts.fulfilled}`]: (state, action): void => {\r\n state.contacts = action.payload.contacts;\r\n state.contactListPagination.startRow = action.payload.pagingInfo.startRow;\r\n state.contactListPagination.rowsPerPage = action.payload.pagingInfo.rowsPerPage;\r\n state.contactListPagination.totalRowCount = action.payload.pagingInfo.totalRowCount;\r\n state.selectedContacts = [];\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const {\r\n onChangeDialog,\r\n selectContact,\r\n deselectContact,\r\n selectAllContacts,\r\n deselectAllContacts,\r\n sort,\r\n changeKeyword,\r\n} = addContactsToOrganizationSlice.actions;\r\n\r\n// Selectors\r\nexport const contactsSelector = (state: RootState) => state.addContactsToOrganization.contacts;\r\n\r\nexport const sortSelector = (state: RootState) => state.addContactsToOrganization.sort;\r\n\r\nexport const contactListPaginationSelector = (state: RootState): PaginationModel =>\r\n state.addContactsToOrganization.contactListPagination;\r\n\r\nexport const selectedContactsSelector = (state: RootState): Contact[] =>\r\n state.addContactsToOrganization.selectedContacts;\r\n\r\nexport const isOpenDialogSelector = (state: RootState): boolean => state.addContactsToOrganization.open;\r\n\r\nexport const addContactsTitleSelector = (state: RootState): string => state.addContactsToOrganization.title;\r\n\r\nexport const oganizationIdSelector = (state: RootState): string => state.addContactsToOrganization.organizationId;\r\n\r\nexport const keywordSelector = (state: RootState): string => state.addContactsToOrganization.keyword;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { RootState } from \"../../store\";\r\nimport { Organization, PaginationModel } from \"../model/organization\";\r\nimport { addChildOrganizationsToOrganization, fetchChildOrganizations } from \"./asyncThunks\";\r\n\r\nexport const OrganizationTitle = { Add: \"Create Organization\", Edit: \"Edit Organization\" };\r\n\r\nexport const initialChildOrganizationState = {\r\n childOrganizations: [] as Organization[],\r\n childOrganizationListPagination: {\r\n startRow: 0,\r\n rowsPerPage: 25,\r\n rowsPerPageOptions: [25, 50, 100],\r\n totalRowCount: 0,\r\n } as PaginationModel,\r\n};\r\n\r\nexport const childOrganizationListSlice = createSlice({\r\n name: \"childOrganizationList\",\r\n initialState: initialChildOrganizationState,\r\n reducers: {\r\n onChangeChildOrganizationPage: (state, action): void => {\r\n state.childOrganizationListPagination.startRow = action.payload;\r\n },\r\n onChangeChildOrganizationRowPerPage: (state, action): void => {\r\n state.childOrganizationListPagination.rowsPerPage = action.payload;\r\n },\r\n onChangeTotalCount: (state, action): void => {\r\n state.childOrganizationListPagination.totalRowCount = action.payload;\r\n },\r\n },\r\n extraReducers: {\r\n [`${fetchChildOrganizations.fulfilled}`]: (state, action): void => {\r\n state.childOrganizations = action.payload;\r\n state.childOrganizationListPagination.startRow = 0;\r\n state.childOrganizationListPagination.totalRowCount = state.childOrganizations.length;\r\n },\r\n [`${addChildOrganizationsToOrganization.fulfilled}`]: (state, action): void => {\r\n state.childOrganizations = action.payload;\r\n state.childOrganizationListPagination.startRow = 0;\r\n state.childOrganizationListPagination.totalRowCount = state.childOrganizations.length;\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const {\r\n onChangeChildOrganizationPage,\r\n onChangeChildOrganizationRowPerPage,\r\n onChangeTotalCount\r\n} = childOrganizationListSlice.actions;\r\n\r\n// Selectors\r\nexport const childOrganizationsSelector = (state: RootState) => state.childOrganizationList.childOrganizations;\r\n\r\nexport const childOrganizationListPaginationSelector = (state: RootState): PaginationModel =>\r\n state.childOrganizationList.childOrganizationListPagination;","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { RootState } from \"../../store\";\r\nimport { Contact } from \"../../ContactManager/model/contact\";\r\nimport { PaginationModel } from \"../model/organization\";\r\nimport { addContactsToOrganization, fetchContactsInOrganization } from \"./asyncThunks\";\r\n\r\nexport const initialContactsListState = {\r\n contacts: [] as Contact[],\r\n pagination: {\r\n startRow: 0,\r\n rowsPerPage: 10,\r\n rowsPerPageOptions: [10, 20, 50, 100],\r\n totalRowCount: 0,\r\n } as PaginationModel,\r\n};\r\n\r\nexport const contactListInOrganizationSlice = createSlice({\r\n name: \"contactListInOrganization\",\r\n initialState: initialContactsListState,\r\n reducers: {\r\n onChangeContactPage: (state, action): void => {\r\n state.pagination.startRow = action.payload;\r\n },\r\n onChangeContactRowPerPage: (state, action): void => {\r\n state.pagination.rowsPerPage = action.payload;\r\n },\r\n },\r\n extraReducers: {\r\n [`${fetchContactsInOrganization.fulfilled}`]: (state, action): void => {\r\n state.contacts = action.payload;\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.contacts.length;\r\n },\r\n [`${addContactsToOrganization.fulfilled}`]: (state, action): void => {\r\n state.contacts = action.payload;\r\n state.pagination.startRow = 0;\r\n state.pagination.totalRowCount = state.contacts.length;\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const { onChangeContactPage, onChangeContactRowPerPage } = contactListInOrganizationSlice.actions;\r\n\r\n// Selectors\r\nexport const contactsInOrganizationSelector = (state: RootState) => state.contactListInOrganization.contacts;\r\n\r\nexport const contactsInOrganizationPaginationSelector = (state: RootState): PaginationModel =>\r\n state.contactListInOrganization.pagination;\r\n","import { BreadcrumbItem } from \"@episerver/ui-framework\";\r\nimport { createSelector, createSlice } from \"@reduxjs/toolkit\";\r\nimport { RootState } from \"../../store\";\r\nimport { EnumData } from \"../../EnumManager/model/Enum\";\r\nimport { fetchEnumsByType } from \"../../EnumManager/reducers/asyncThunks\";\r\nimport { enumType } from \"../../EnumManager/reducers/enumManagerReducer\";\r\nimport { Organization, OrganizationTab } from \"../model/organization\";\r\nimport { fetchOrganizationById, fetchOrganizations, updateOrganization } from \"./asyncThunks\";\r\nimport { Address } from \"../../AddressManager/model/address\";\r\nimport { Contact } from \"../../ContactManager/model/contact\";\r\nimport { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\n\r\nexport const organizationTitle = { Add: \"Create Organization\", Edit: \"Edit Organization\" };\r\n\r\nexport const initialOrganizationDetailState = {\r\n title: \"\",\r\n organization: {\r\n primaryKeyId: null,\r\n name: \"\",\r\n description: \"\",\r\n organizationTypeId: \"0\",\r\n organizationType: \"\",\r\n organizationCustomerGroupId: \"0\",\r\n organizationCustomerGroup: \"\",\r\n businessCategoryId: \"0\",\r\n businessCategory: \"\",\r\n parentId: null,\r\n extendedProperties: [] as Property[],\r\n contacts: [] as Contact[],\r\n children: [] as Organization[],\r\n addresses: [] as Address[],\r\n } as Organization,\r\n organizationId: \"\",\r\n organizationTypes: [] as EnumData[],\r\n organizationCustomerGroups: [] as EnumData[],\r\n businessCategories: [] as EnumData[],\r\n breadCrumbItems: [\r\n {\r\n title: \"Organizations\",\r\n level: 1,\r\n link: \"#/Organizations\",\r\n },\r\n ] as BreadcrumbItem[],\r\n extendedPropertyErrors: [] as Error[],\r\n activeTab: 0,\r\n error: null,\r\n};\r\n\r\nexport const organizationDetailSlice = createSlice({\r\n name: \"organizationDetail\",\r\n initialState: initialOrganizationDetailState,\r\n reducers: {\r\n changeTitle: (state, action): void => {\r\n state.title = action.payload;\r\n },\r\n setParentId: (state, action): void => {\r\n state.organization.parentId = action.payload;\r\n },\r\n onChangeProperty: (state, action): void => {\r\n state.organization = action.payload;\r\n },\r\n changeExtendedPropertyErrors: (state, action): void => {\r\n let { name, message } = action.payload;\r\n let error = state.extendedPropertyErrors.find((error: Error) => error.name === name);\r\n if (error) {\r\n state.extendedPropertyErrors = state.extendedPropertyErrors\r\n .filter((error: Error) => {\r\n if (error.name === name && message === \"\") return false;\r\n return true;\r\n })\r\n .map((error: Error) => {\r\n if (error.name === name) return { ...error, message: message };\r\n return error;\r\n });\r\n } else {\r\n if (message) {\r\n state.extendedPropertyErrors.push({ name: name, message: message });\r\n }\r\n }\r\n },\r\n updateBreadcrumb: (state, action: { payload: BreadcrumbItem }): void => {\r\n state.breadCrumbItems = [\r\n ...state.breadCrumbItems.filter((item: BreadcrumbItem) => item.level !== action.payload.level),\r\n action.payload,\r\n ];\r\n },\r\n updateOrganizationId: (state, action): void => {\r\n state.organizationId = action.payload;\r\n },\r\n changeActiveTab: (state, action): void => {\r\n state.activeTab = action.payload;\r\n },\r\n reset: (state): void => {\r\n state.organization = initialOrganizationDetailState.organization;\r\n },\r\n onAddOrUpdateOrganizationAddress: (state, action): void => {\r\n const { idx, isNew, ...address } = action.payload;\r\n if (isNew) {\r\n state.organization.addresses.push(address);\r\n } else {\r\n state.organization.addresses = state.organization.addresses.map((t, index) => {\r\n if (index == idx) return address;\r\n return t;\r\n });\r\n }\r\n },\r\n onDeleteOrganizationAddress: (state, action): void => {\r\n let addresses = [...state.organization.addresses];\r\n state.organization.addresses = addresses.filter((v) => action.payload.primaryKeyId != v.primaryKeyId);\r\n },\r\n onAddOrUpdateContact: (state, action): void => {\r\n action.payload.contacts.forEach((e: Contact) => {\r\n let isNew = state.organization.contacts.find((x) => x.primaryKeyId == e.primaryKeyId) == null;\r\n if (isNew) {\r\n e = { ...e, ownerId: action.payload.organizationId };\r\n state.organization.contacts.push(e);\r\n }\r\n });\r\n },\r\n onAddOrUpdateChildren: (state, action): void => {\r\n let newChildArray = [] as Organization[];\r\n Object.assign(newChildArray, state.organization.children);\r\n action.payload.children.forEach((e: Organization) => {\r\n let isNew = state.organization.children.find((x) => x.primaryKeyId == e.primaryKeyId) == null;\r\n if (isNew) {\r\n e = { ...e, parentId: action.payload.parentOrganizationId };\r\n newChildArray.push(e);\r\n }\r\n });\r\n state.organization.children = newChildArray;\r\n },\r\n },\r\n extraReducers: {\r\n [`${fetchOrganizationById.fulfilled}`]: (state, action): void => {\r\n state.organization = action.payload;\r\n },\r\n [`${fetchEnumsByType.fulfilled}`]: (state, action): void => {\r\n if (action.payload.type === enumType.OrganizationType)\r\n state.organizationTypes = [\r\n ...initialOrganizationDetailState.organizationTypes,\r\n ...action.payload.enums,\r\n ];\r\n else if (action.payload.type === enumType.ContactGroup)\r\n state.organizationCustomerGroups = [\r\n ...initialOrganizationDetailState.organizationCustomerGroups,\r\n ...action.payload.enums,\r\n ];\r\n else\r\n state.businessCategories = [\r\n ...initialOrganizationDetailState.businessCategories,\r\n ...action.payload.enums,\r\n ];\r\n },\r\n [`${updateOrganization.rejected}`]: (state, action): void => {\r\n state.error = action.payload;\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const {\r\n changeTitle,\r\n setParentId,\r\n onChangeProperty,\r\n changeExtendedPropertyErrors,\r\n updateBreadcrumb,\r\n changeActiveTab,\r\n updateOrganizationId,\r\n reset,\r\n onAddOrUpdateChildren,\r\n onAddOrUpdateOrganizationAddress,\r\n onDeleteOrganizationAddress,\r\n onAddOrUpdateContact,\r\n} = organizationDetailSlice.actions;\r\n\r\n// Selectors\r\nexport const titleSelector = createSelector(\r\n (state: RootState): string => state.organizationDetail.title,\r\n (title: string): string => title\r\n);\r\n\r\nexport const organizationSelector = createSelector(\r\n (state: RootState): Organization => state.organizationDetail.organization,\r\n (organization: Organization): Organization => organization\r\n);\r\n\r\nexport const organizationTypesSelector = createSelector(\r\n (state: RootState): EnumData[] => state.organizationDetail.organizationTypes,\r\n (organizationTypes: EnumData[]): EnumData[] => organizationTypes\r\n);\r\n\r\nexport const organizationCustomerGroupsSelector = createSelector(\r\n (state: RootState): EnumData[] => state.organizationDetail.organizationCustomerGroups,\r\n (customerGroups: EnumData[]): EnumData[] => customerGroups\r\n);\r\n\r\nexport const businessCategoriesSelector = createSelector(\r\n (state: RootState): EnumData[] => state.organizationDetail.businessCategories,\r\n (businessCategories: EnumData[]): EnumData[] => businessCategories\r\n);\r\n\r\nexport const breadcrumbItemsSelector = createSelector(\r\n (state: RootState): BreadcrumbItem[] => state.organizationDetail.breadCrumbItems,\r\n (breadCrumbItems: BreadcrumbItem[]): BreadcrumbItem[] => breadCrumbItems\r\n);\r\n\r\nexport const extendedPropertyErrorsSelector = createSelector(\r\n (state: RootState): Error[] => state.organizationDetail.extendedPropertyErrors,\r\n (extendedPropertyErrors: Error[]): Error[] => extendedPropertyErrors\r\n);\r\n\r\nexport const activeTabSelector = createSelector(\r\n (state: RootState): OrganizationTab => state.organizationDetail.activeTab,\r\n (activeTab: OrganizationTab): OrganizationTab => activeTab\r\n);\r\n\r\nexport const errorSelector = createSelector(\r\n (state: RootState): any => state.organizationDetail.error,\r\n (error: any) => error\r\n);\r\n","import { SortDirection } from \"@episerver/ui-framework\";\r\nimport { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\nimport { Address } from \"../../AddressManager/model/address\";\r\nimport { Contact } from \"../../ContactManager/model/contact\";\r\n\r\nexport interface Organization {\r\n primaryKeyId: string | null;\r\n name: string;\r\n description: string;\r\n organizationTypeId: string | null;\r\n organizationType: string;\r\n organizationCustomerGroupId: string | null;\r\n organizationCustomerGroup: string;\r\n businessCategoryId: string | null;\r\n businessCategory: string;\r\n parentId: string | null;\r\n extendedProperties: Property[];\r\n children: Organization[];\r\n addresses: Address[];\r\n contacts: Contact[];\r\n}\r\n\r\nexport interface OrganizationSearchResult {\r\n organizations: Organization[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface SearchParams {\r\n query: string;\r\n sortField: string;\r\n sortType: ServerSortType;\r\n startIndex: number;\r\n recordsToRetrieve: number;\r\n excludedOrgId?: string;\r\n}\r\n\r\nexport interface DeleteParams {\r\n organizationIds: string[];\r\n mode: DeleteMode;\r\n query: string;\r\n sortField: string;\r\n sortType: ServerSortType;\r\n startIndex: number;\r\n recordsToRetrieve: number;\r\n}\r\n\r\nexport interface SortModel {\r\n sortedColumn: string;\r\n sortDirection: SortDirection;\r\n}\r\n\r\nexport interface PaginationModel {\r\n startRow: number;\r\n totalRowCount: number;\r\n rowsPerPage: number;\r\n rowsPerPageOptions: number[];\r\n}\r\n\r\nexport interface AddContactsParams {\r\n contactIds: string[];\r\n organizationId: string;\r\n}\r\n\r\nexport interface ConfirmDialog {\r\n open: boolean;\r\n data: {\r\n mode: number;\r\n organizationIds: string[];\r\n };\r\n}\r\n\r\nexport interface AddChildOrganizationsParams {\r\n parentOrganizationId: string;\r\n organizationIds: string[];\r\n}\r\n\r\nexport enum ServerSortType {\r\n Asc,\r\n Desc,\r\n}\r\n\r\nexport enum OrganizationType {\r\n Organization = 1,\r\n OrganizationUnit = 2,\r\n}\r\n\r\nexport enum DeleteMode {\r\n None,\r\n Detach,\r\n Delete,\r\n}\r\n\r\nexport enum OrganizationTab {\r\n Details,\r\n Contacts,\r\n Organizations,\r\n Addresses,\r\n}\r\n","import { SortDirection } from \"@episerver/ui-framework\";\r\nimport { createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n ConfirmDialog,\r\n DeleteMode,\r\n Organization,\r\n PaginationModel,\r\n ServerSortType,\r\n SortModel,\r\n} from \"../model/organization\";\r\nimport { deleteOrganizations, searchOrganizations } from \"./asyncThunks\";\r\n\r\nconst getData = (data: any) => {\r\n const { organizations, totalRecords, query, sortField, sortType, startIndex, recordsToRetrieve } = data;\r\n return {\r\n organizations: organizations,\r\n keyword: query,\r\n pagination: {\r\n startRow: startIndex,\r\n rowsPerPage: recordsToRetrieve,\r\n totalRowCount: totalRecords,\r\n rowsPerPageOptions: initialOrganizationState.pagination.rowsPerPageOptions,\r\n },\r\n sort: {\r\n sortedColumn: sortField,\r\n sortDirection: sortType === ServerSortType.Asc ? SortDirection.Ascending : SortDirection.Descending,\r\n },\r\n };\r\n};\r\n\r\nexport const initialOrganizationState = {\r\n keyword: \"\",\r\n organizations: [] as Organization[],\r\n selectedOrganizations: [] as string[],\r\n sort: {\r\n sortedColumn: \"Name\",\r\n sortDirection: SortDirection.Ascending,\r\n } as SortModel,\r\n pagination: {\r\n startRow: 0,\r\n rowsPerPage: 25,\r\n rowsPerPageOptions: [25, 50, 100],\r\n totalRowCount: 0,\r\n } as PaginationModel,\r\n confirmDialog: {\r\n open: false,\r\n data: {\r\n mode: DeleteMode.Detach,\r\n organizationIds: [],\r\n },\r\n } as ConfirmDialog,\r\n};\r\n\r\nexport const organizationListSlice = createSlice({\r\n name: \"organizationList\",\r\n initialState: initialOrganizationState,\r\n reducers: {\r\n selectOrganization: (state, action) => {\r\n state.selectedOrganizations.push(action.payload);\r\n },\r\n deselectOrganization: (state, action) => {\r\n state.selectedOrganizations = state.selectedOrganizations.filter(\r\n (organizationId: string) => organizationId !== action.payload\r\n );\r\n },\r\n selectAllOrganizations: (state) => {\r\n state.selectedOrganizations = state.selectedOrganizations\r\n .concat(state.organizations.map((organization: Organization) => organization.primaryKeyId!))\r\n .filter(function (elem, index, self) {\r\n return index === self.indexOf(elem);\r\n });\r\n },\r\n deselectAllOrganizations: (state) => {\r\n state.selectedOrganizations = state.selectedOrganizations.filter(function (el) {\r\n return !state.organizations\r\n .map((organization: Organization) => organization.primaryKeyId!)\r\n .includes(el);\r\n });\r\n },\r\n sort: (state, action): void => {\r\n const { column, direction } = action.payload;\r\n state.sort = { sortDirection: direction, sortedColumn: column };\r\n },\r\n onChangeConfirmDialog: (state, action): void => {\r\n state.confirmDialog = action.payload;\r\n },\r\n reset: (state): void => {\r\n state.selectedOrganizations = initialOrganizationState.selectedOrganizations;\r\n },\r\n },\r\n extraReducers: {\r\n [`${searchOrganizations.fulfilled}`]: (state, action): void => {\r\n const data = getData(action.payload);\r\n Object.keys(data).forEach((key) => {\r\n state[key as keyof typeof state] = data[key as keyof typeof data];\r\n });\r\n },\r\n [`${deleteOrganizations.fulfilled}`]: (state, action): void => {\r\n const data = getData(action.payload);\r\n Object.keys(data).forEach((key) => {\r\n state[key as keyof typeof state] = data[key as keyof typeof data];\r\n });\r\n state.selectedOrganizations = [];\r\n },\r\n },\r\n});\r\n\r\n// Actions\r\nexport const {\r\n selectOrganization,\r\n deselectOrganization,\r\n selectAllOrganizations,\r\n deselectAllOrganizations,\r\n sort,\r\n onChangeConfirmDialog,\r\n reset,\r\n} = organizationListSlice.actions;\r\n","import { configureStore, combineReducers } from \"@reduxjs/toolkit\";\r\nimport { addressFormSlice } from \"./AddressManager/reducers/addressFormReducer\";\r\nimport { addressListSlice } from \"./AddressManager/reducers/addressListReducer\";\r\nimport { contactDetailSlice } from \"./ContactManager/reducers/contactDetailReducer\";\r\nimport { contactListSlice } from \"./ContactManager/reducers/contactListReducer\";\r\nimport { userAccountAssignmentsSlice } from \"./ContactManager/reducers/userAccountAssignmentsReducer\";\r\nimport { addAssignmentsToUserSlice } from \"./ContactManager/reducers/addAssignmentsToUserReducer\";\r\nimport { contactNoteManagerSlice } from \"./ContactNoteManager/reducers/contactNoteManagerReducer\";\r\nimport { enumFormSlice } from \"./EnumManager/reducers/enumFormReducer\";\r\nimport { enumManagerSlice } from \"./EnumManager/reducers/enumManagerReducer\";\r\nimport { addChildOrganizationsSlice } from \"./OrganizationManager/reducers/addChildOrganizationsReducer\";\r\nimport { addContactsToOrganizationSlice } from \"./OrganizationManager/reducers/addContactsToOrganizationReducer\";\r\nimport { childOrganizationListSlice } from \"./OrganizationManager/reducers/childOrganizationListReducer\";\r\nimport { contactListInOrganizationSlice } from \"./OrganizationManager/reducers/contactListInOrganizationReducer\";\r\nimport { organizationDetailSlice } from \"./OrganizationManager/reducers/organizationDetailReducer\";\r\nimport { organizationListSlice } from \"./OrganizationManager/reducers/organizationListReducer\";\r\n\r\n\r\nconst reducer = combineReducers({\r\n contactList: contactListSlice.reducer,\r\n contactDetail: contactDetailSlice.reducer,\r\n contactNoteManager: contactNoteManagerSlice.reducer,\r\n enumManager: enumManagerSlice.reducer,\r\n enumForm: enumFormSlice.reducer,\r\n addressList: addressListSlice.reducer,\r\n addressForm: addressFormSlice.reducer,\r\n organizationList: organizationListSlice.reducer,\r\n organizationDetail: organizationDetailSlice.reducer,\r\n childOrganizationList: childOrganizationListSlice.reducer,\r\n addChildOrganizations: addChildOrganizationsSlice.reducer,\r\n addContactsToOrganization: addContactsToOrganizationSlice.reducer,\r\n contactListInOrganization: contactListInOrganizationSlice.reducer,\r\n userAccountAssignments: userAccountAssignmentsSlice.reducer,\r\n addAssignmentsToUser: addAssignmentsToUserSlice.reducer,\r\n});\r\nconst store = configureStore({\r\n reducer,\r\n});\r\nexport type AppDispatch = typeof store.dispatch;\r\nexport type RootState = ReturnType;\r\nexport default store;\r\n","import { useDispatch, useSelector } from 'react-redux'\r\nimport type { TypedUseSelectorHook } from 'react-redux'\r\nimport type { RootState, AppDispatch } from './store'\r\n\r\n// https://redux-toolkit.js.org/tutorials/typescript Use throughout your app instead of plain `useDispatch` and `useSelector` \r\nexport const useAppDispatch: () => AppDispatch = useDispatch\r\nexport const useAppSelector: TypedUseSelectorHook = useSelector","import React, { Fragment, useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport {\r\n DataTable,\r\n DataTableBody,\r\n DataTableCell,\r\n DataTableColumnHeaderCell,\r\n DataTableContent,\r\n DataTableHeaderRow,\r\n DataTableOverflowMenuCell,\r\n DataTablePagination,\r\n DataTableRow,\r\n DataTableToolbar,\r\n Dialog,\r\n List,\r\n ListItem,\r\n TextButton,\r\n} from \"@episerver/ui-framework\";\r\nimport {\r\n confirmDialogSelector,\r\n initialAddressState,\r\n onChangeAddressPage,\r\n onChangeAddressRowPerPage,\r\n onChangeConfirmDialog,\r\n paginationSelector,\r\n} from \"../reducers/addressListReducer\";\r\nimport { contactSelector, onDeleteContactAddress } from \"../../ContactManager/reducers/contactDetailReducer\";\r\n\r\nimport { Address, InView } from \"../model/address\";\r\nimport { initialAddressFormState, onOpenDialog } from \"../reducers/addressFormReducer\";\r\nimport {\r\n organizationSelector,\r\n onDeleteOrganizationAddress,\r\n} from \"../../OrganizationManager/reducers/organizationDetailReducer\";\r\nimport {fetchAddressesInContact, fetchAddressesInOrganization} from \"../reducers/asyncThunks\";\r\n\r\ninterface AddressListProps {\r\n inTab?: boolean;\r\n inView?: InView;\r\n viewId: string;\r\n}\r\n\r\nconst AddressList = (props: AddressListProps) => {\r\n const dispatch = useAppDispatch();\r\n const history = useHistory();\r\n const { inTab = false, inView = InView.None, viewId } = props;\r\n const contact = useSelector(contactSelector);\r\n const organization = useSelector(organizationSelector);\r\n const addresses = inView === InView.Contact ? contact.addresses : organization.addresses; \r\n const { rowsPerPage, startRow, rowsPerPageOptions, totalRowCount } = useSelector(paginationSelector);\r\n const confirmDialog = useSelector(confirmDialogSelector);\r\n\r\n useEffect(() => {\r\n if (inView === InView.Contact) dispatch(fetchAddressesInContact(viewId));\r\n else dispatch(fetchAddressesInOrganization(viewId));\r\n }, []);\r\n\r\n const columns: Array<{ selector: string; title: string }> = [\r\n { selector: \"name\", title: \"Name\" },\r\n { selector: \"line1\", title: \"Line #1\" },\r\n { selector: \"city\", title: \"City\" },\r\n { selector: \"postal Code\", title: \"PostalCode\" },\r\n { selector: \"country Code\", title: \"CountryCode\" },\r\n { selector: \"\", title: \"\" },\r\n ];\r\n\r\n const onConfirmDialog = (address: Address, message: string): void => {\r\n dispatch(onChangeConfirmDialog({ ...confirmDialog, open: true, address: address, message: message }));\r\n };\r\n\r\n const onDelete = async (): Promise => {\r\n if (inView === InView.Contact) {\r\n await dispatch(onDeleteContactAddress(confirmDialog.address));\r\n } else if (inView === InView.Organization) {\r\n await dispatch(onDeleteOrganizationAddress(confirmDialog.address));\r\n }\r\n dispatch(onChangeConfirmDialog(initialAddressState.confirmDialog));\r\n };\r\n\r\n const onCancel = (): void => {\r\n dispatch(onChangeConfirmDialog(initialAddressState.confirmDialog));\r\n };\r\n\r\n const renderRow = (rowData: Address, idx: number): React.ReactElement => {\r\n return (\r\n \r\n {rowData.name ?? \"\"}\r\n {rowData.line1 ?? \"\"}\r\n {rowData.city ?? \"\"}\r\n {rowData.postalCode ?? \"\"}\r\n {rowData.countryCode ?? \"\"}\r\n \r\n \r\n \r\n dispatch(\r\n onOpenDialog({\r\n form: {\r\n open: true,\r\n title: \"Edit an address\",\r\n address: {\r\n ...rowData,\r\n isNew: false,\r\n idx: idx\r\n },\r\n extendedPropertyErrors: [],\r\n },\r\n })\r\n )\r\n }\r\n >\r\n Edit\r\n \r\n onConfirmDialog(rowData, `Are you sure to delete \"${rowData.name}\"?`)}>\r\n Delete\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n {!inTab && (\r\n \r\n

    Manage Addresses

    \r\n
    \r\n
    \r\n )}\r\n \r\n \r\n \r\n dispatch(\r\n onOpenDialog({\r\n form: {\r\n open: true,\r\n title: \"Add an address\",\r\n address: {\r\n ...initialAddressFormState.form.address,\r\n [inView === InView.Organization ? \"organizationId\" : \"contactId\"]: viewId,\r\n primaryKeyId: \"00000000-0000-0000-0000-000000000000\",\r\n isNew: true,\r\n idx: addresses.length\r\n },\r\n extendedPropertyErrors: [],\r\n },\r\n })\r\n )\r\n }\r\n >\r\n Create\r\n \r\n \r\n \r\n \r\n \r\n {columns.map((column, index) => {\r\n return (\r\n {column.title}\r\n );\r\n })}\r\n \r\n \r\n \r\n {addresses.map((row: Address, index: number) => {\r\n if (\r\n index < startRow ||\r\n index >= startRow + rowsPerPage ||\r\n row.primaryKeyId == \"00000000-0000-0000-0000-000000000000\"\r\n ) {\r\n return ;\r\n }\r\n return renderRow(row, index);\r\n })}\r\n \r\n \r\n dispatch(onChangeAddressPage(startRow))}\r\n onChangeRowsPerPage={(rowsPerPage) => dispatch(onChangeAddressRowPerPage(rowsPerPage))}\r\n />\r\n \r\n {!inTab && (\r\n \r\n
    \r\n
    \r\n
    \r\n history.goBack()}>Back\r\n
    \r\n
    \r\n )}\r\n\r\n {/* Delete dialog */}\r\n {\r\n if (e.detail.action === \"confirm\") onDelete();\r\n else onCancel();\r\n }}\r\n >\r\n \r\n

    {confirmDialog.message}

    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddressList;\r\n","import React, { Fragment, useEffect } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport {\r\n DataTable,\r\n DataTableBody,\r\n DataTableCell,\r\n DataTableCheckboxCell,\r\n DataTableColumnHeaderCell,\r\n DataTableContent,\r\n DataTableHeaderCheckboxCell,\r\n DataTableHeaderRow,\r\n DataTableOverflowMenuCell,\r\n DataTablePagination,\r\n DataTableRow,\r\n DataTableToolbar,\r\n Dialog,\r\n GridCell,\r\n GridRow,\r\n List,\r\n ListItem,\r\n TextButton,\r\n TextField,\r\n Typography,\r\n} from \"@episerver/ui-framework\";\r\nimport { ContactNote } from \"../model/ContactNote\";\r\nimport {\r\n selectedContactNotesSelector,\r\n contactNoteSelector,\r\n paginationSelector,\r\n onChangeContactNotePage,\r\n onChangeContactNoteRowPerPage,\r\n dialogStatusSelector,\r\n onChangeDialogStatus,\r\n confirmDialogStatusSelector,\r\n onChangeConfirmDialogStatus,\r\n selectAllContactNotes,\r\n deselectAllContactNotes,\r\n selectContactNote,\r\n deselectContactNote,\r\n} from \"../reducers/contactNoteManagerReducer\";\r\nimport {\r\n contactSelector,\r\n onAddOrUpdateContactNote,\r\n onDeleteContactNote,\r\n} from \"../../ContactManager/reducers/contactDetailReducer\";\r\nimport { Controller, useForm } from \"react-hook-form\";\r\nimport ExtendedProperty from \"../../ExtendedProperty/ExtendedProperty\";\r\nimport { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\nimport { fetchContactNoteById } from \"../reducers/asyncThunks\";\r\n\r\nconst ContactNoteManager = () => {\r\n const dispatch = useAppDispatch();\r\n const contact = useAppSelector(contactSelector);\r\n const selectedContactNotes = useAppSelector(selectedContactNotesSelector);\r\n const contactNote = useAppSelector(contactNoteSelector);\r\n const dialogStatus = useAppSelector(dialogStatusSelector);\r\n const confirmDialogStatus = useAppSelector(confirmDialogStatusSelector);\r\n const { rowsPerPage, startRow, rowsPerPageOptions, totalRowCount } = useAppSelector(paginationSelector);\r\n\r\n const columns: Array<{ selector: string; title: string; sortable: boolean }> = [\r\n { selector: \"noteTitle\", title: \"Title\", sortable: false },\r\n { selector: \"noteContent\", title: \"Note Text\", sortable: false },\r\n { selector: \"contactId\", title: \"Originated By\", sortable: false },\r\n { selector: \"created\", title: \"Created\", sortable: true },\r\n { selector: \"\", title: \"\", sortable: false },\r\n ];\r\n\r\n const {\r\n control,\r\n watch,\r\n setValue,\r\n setError,\r\n clearErrors,\r\n trigger,\r\n reset,\r\n formState: { errors, isValid, isDirty },\r\n } = useForm({\r\n reValidateMode: \"onChange\",\r\n mode: \"onChange\",\r\n defaultValues: contactNote,\r\n });\r\n\r\n const values = watch();\r\n\r\n const initComponent = async () => {\r\n if (!contactNote.isFetched) {\r\n dispatch(fetchContactNoteById(contactNote.contactNoteId ?? \"\"));\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (dialogStatus) {\r\n initComponent();\r\n }\r\n }, [contactNote?.contactNoteId, dialogStatus]);\r\n\r\n useEffect(() => {\r\n reset(contactNote);\r\n }, [contactNote]);\r\n\r\n const onToggleAllSelected = (checked: boolean): void => {\r\n if (checked) {\r\n dispatch(selectAllContactNotes(contact.contactNotes));\r\n } else {\r\n dispatch(deselectAllContactNotes());\r\n }\r\n };\r\n\r\n const isSelected = (row: ContactNote): boolean => {\r\n return selectedContactNotes.includes(row.contactNoteId!);\r\n };\r\n\r\n const onSelectedRowChanged = (row: ContactNote, checked: boolean): void => {\r\n if (checked) {\r\n dispatch(selectContactNote(row.contactNoteId));\r\n } else {\r\n dispatch(deselectContactNote(row.contactNoteId));\r\n }\r\n };\r\n\r\n const renderRow = (rowData: ContactNote, idx: number): React.ReactElement => {\r\n let created = rowData.created != null ? new Date(rowData.created.replace(\"Z\", \"\")).toLocaleString() : \"\";\r\n\r\n return (\r\n \r\n onSelectedRowChanged(rowData, e.target.checked)}\r\n />\r\n {rowData.noteTitle}\r\n {rowData.noteContent}\r\n {rowData.contactName ?? \"\"}\r\n {created}\r\n \r\n \r\n {\r\n dispatch(\r\n onChangeDialogStatus({\r\n dialogStatus: true,\r\n contactNote: {...rowData, idx, isNew: false},\r\n })\r\n );\r\n }}\r\n >\r\n Edit\r\n \r\n \r\n dispatch(\r\n onChangeConfirmDialogStatus({\r\n dialogOpen: true,\r\n contactNoteIds: [rowData.contactNoteId],\r\n })\r\n )\r\n }\r\n >\r\n Delete\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n dispatch(\r\n onChangeDialogStatus({\r\n dialogStatus: true,\r\n contactNote: {\r\n contactNoteId: null, isNew: true, idx: contact.contactNotes.length\r\n },\r\n })\r\n );\r\n }}\r\n >\r\n Create\r\n \r\n {selectedContactNotes.length > 0 && (\r\n {\r\n dispatch(\r\n onChangeConfirmDialogStatus({\r\n dialogOpen: true,\r\n contactNoteIds: selectedContactNotes,\r\n })\r\n );\r\n }}\r\n >\r\n Delete Selected ({selectedContactNotes.length})\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n onToggleAllSelected(e.target.checked)} />\r\n \r\n {columns.map((column, index) => {\r\n return (\r\n {column.title}\r\n );\r\n })}\r\n \r\n \r\n \r\n {contact.contactNotes.map((row: ContactNote, index: number) => {\r\n if (index < startRow || index >= startRow + rowsPerPage) {\r\n return ;\r\n }\r\n return renderRow(row, index);\r\n })}\r\n \r\n \r\n dispatch(onChangeContactNotePage(startRow))}\r\n onChangeRowsPerPage={(rowsPerPage) => dispatch(onChangeContactNoteRowPerPage(rowsPerPage))}\r\n />\r\n \r\n\r\n {/* Add/Edit dialog */}\r\n {\r\n if (e.detail.action === \"confirm\") {\r\n dispatch(onAddOrUpdateContactNote(values));\r\n dispatch(\r\n onChangeDialogStatus({\r\n dialogStatus: false,\r\n })\r\n );\r\n } else\r\n dispatch(\r\n onChangeDialogStatus({\r\n dialogStatus: false,\r\n })\r\n );\r\n }}\r\n >\r\n {\r\n e.preventDefault();\r\n }}\r\n >\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n <>\r\n {values.extendedProperties?.map((property: Property, index: number) => {\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n })}\r\n \r\n
    \r\n \r\n \r\n\r\n {/* Delete dialog */}\r\n {\r\n if (e.detail.action === \"confirm\") {\r\n await dispatch(\r\n onDeleteContactNote({\r\n contactNoteIds: confirmDialogStatus.contactNoteIds,\r\n })\r\n );\r\n await dispatch(deselectAllContactNotes());\r\n dispatch(onChangeConfirmDialogStatus(false));\r\n } else dispatch(onChangeConfirmDialogStatus(false));\r\n }}\r\n >\r\n Are you sure to delete?\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default ContactNoteManager;\r\n","import React, { Fragment, useCallback, useEffect, useRef, useState } from \"react\";\r\nimport {\r\n DataTable,\r\n DataTableBody,\r\n DataTableCell,\r\n DataTableColumnHeaderCell,\r\n DataTableContent,\r\n DataTableHeaderRow,\r\n DataTablePagination,\r\n DataTableRow,\r\n DataTableToolbar,\r\n Dialog,\r\n Search,\r\n SortDirection,\r\n TextButton,\r\n Typography,\r\n} from \"@episerver/ui-framework\";\r\n\r\nimport { Organization, OrganizationSearchResult, SearchParams, ServerSortType } from \"../../OrganizationManager/model/organization\";\r\nimport { Contact } from \"../model/contact\";\r\nimport { debounce } from \"lodash-es\";\r\nimport axios from \"axios\";\r\nimport { Snackbar, SnackbarAction } from \"@rmwc/snackbar\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\ninterface AddParentOrganizationProps {\r\n contactId: string | null;\r\n setParentId: ((parentId: string | null) => void) | undefined;\r\n}\r\n\r\nconst AddParentOrganization = (props: AddParentOrganizationProps) => {\r\n const history = useHistory();\r\n const [defaultSearchParams, setDefaultSearchParams] = useState({\r\n query: '',\r\n sortField: 'name',\r\n sortType: ServerSortType.Asc,\r\n startIndex: 0,\r\n recordsToRetrieve: 25,\r\n excludedOrgId: null\r\n } as SearchParams);\r\n const [organizations, setOrganizations] = useState([] as Organization[]);\r\n const [selectedOrganization, setSelectedOrganization] = useState(null);\r\n var { contactId } = props;\r\n const [totalCount, setTotalCount] = useState(0);\r\n const [parentName, setParentName] = useState(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [errorOpen, setErrorOpen] = useState(false);\r\n const [error, setError] = useState(null);\r\n const [organizationId, setOrganizationId] = useState(null);\r\n const mounted = useRef(false);\r\n const url = window && \"https://\" + window.location.host + \"/EPiServer/Commerce/\";\r\n const searchOrganizations = async (params: SearchParams): Promise => {\r\n const res = await axios.get(url + \"Organizations/Search\", { params });\r\n return res.data;\r\n };\r\n\r\n const getParentName = async (): Promise => {\r\n if (!contactId) {\r\n return '';\r\n }\r\n const contactResponse = await axios.get(url + `Contacts/Get?contactId=${contactId}`);\r\n if (!contactResponse.data || !contactResponse.data.ownerId) {\r\n return '';\r\n }\r\n const orgResponse = await axios.get(url + `Organizations/Get?organizationId=${contactResponse.data.ownerId}`);\r\n if (!orgResponse.data) {\r\n return '';\r\n }\r\n setOrganizationId(orgResponse.data.primaryKeyId);\r\n return orgResponse.data.name;\r\n };\r\n\r\n useEffect(() => {\r\n mounted.current = true;\r\n\r\n searchOrganizations(defaultSearchParams).then((data) => {\r\n setOrganizations(data.organizations);\r\n setTotalCount(data.totalRecords);\r\n });\r\n\r\n getParentName().then((name: string | null) => {setParentName(name)})\r\n return () => { mounted.current = true; };\r\n }, [contactId]);\r\n\r\n\r\n const columns: Array<{ selector: string; title: string; sortable: boolean }> = [\r\n { selector: \"Name\", title: \"Name\", sortable: true },\r\n { selector: \"OrganizationType\", title: \"Type\", sortable: true },\r\n ];\r\n\r\n const handleSearch = (value: string) => debouncedSearch(value);\r\n const debouncedSearch = useCallback(debounce((nextValue: string) => onSearch(nextValue), 500), [],);\r\n const onSearch = (value: string): void => {\r\n const params = defaultSearchParams;\r\n params.query = value;\r\n searchOrganizations(params).then((data) => {\r\n setDefaultSearchParams(params);\r\n setOrganizations(data.organizations);\r\n setTotalCount(data.totalRecords);\r\n });\r\n };\r\n\r\n const onSort = (column: string, direction: SortDirection): void => {\r\n const params = defaultSearchParams;\r\n params.sortField = column;\r\n params.sortType = direction === SortDirection.Ascending || SortDirection.Unsorted ? ServerSortType.Asc : ServerSortType.Desc;\r\n searchOrganizations(params).then((data) => {\r\n setDefaultSearchParams(params);\r\n setOrganizations(data.organizations);\r\n setTotalCount(data.totalRecords);\r\n });\r\n };\r\n\r\n const isSelected = (row: Organization): boolean => {\r\n return row.primaryKeyId === selectedOrganization;\r\n };\r\n\r\n const onSubmit = async (): Promise => {\r\n if (!selectedOrganization || selectedOrganization === '') {\r\n setErrorOpen(true);\r\n setError('Invalid organization was chosen as parent');\r\n }\r\n\r\n if (props.setParentId) {\r\n props.setParentId(selectedOrganization);\r\n }\r\n \r\n setIsOpen(false);\r\n };\r\n\r\n const renderRow = (rowData: Organization): React.ReactElement => {\r\n return (\r\n {\r\n setSelectedOrganization(rowData.primaryKeyId);\r\n setParentName(rowData.name);\r\n }}\r\n >\r\n {rowData.name}\r\n {rowData.organizationType ?? \"\"}\r\n \r\n );\r\n };\r\n\r\n const clearParent = () => {\r\n setParentName('');\r\n if (props.setParentId) {\r\n props.setParentId(null);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n
    \r\n {\r\n setIsOpen(true);\r\n }}>\r\n {\"Select parent organization\"}\r\n \r\n {\r\n clearParent();\r\n }}>\r\n {\"Clear parent\"}\r\n \r\n
    \r\n {\r\n if (evt.detail.action === \"confirm\") {\r\n onSubmit();\r\n } else {\r\n setIsOpen(false);\r\n }\r\n }}\r\n >\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {columns.map((column) => {\r\n if (column.sortable)\r\n return (\r\n \r\n onSort(column.selector, direction)\r\n }\r\n sortDirection={\r\n defaultSearchParams.sortField !== column.selector ? SortDirection.Ascending :\r\n defaultSearchParams.sortType === ServerSortType.Asc\r\n ? SortDirection.Ascending\r\n : SortDirection.Descending\r\n }\r\n >\r\n {column.title}\r\n \r\n );\r\n return (\r\n \r\n {column.title}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {organizations.map((row: Organization) => {\r\n return renderRow(row);\r\n })}\r\n \r\n \r\n {\r\n const params = defaultSearchParams;\r\n params.startIndex = startRow === 0 ? 0 : startRow;\r\n searchOrganizations(params).then((data) => {\r\n setDefaultSearchParams(params);\r\n setOrganizations(data.organizations);\r\n setTotalCount(data.totalRecords);\r\n });\r\n }}\r\n onChangeRowsPerPage={(rowsPerPage: number) => {\r\n const params = defaultSearchParams;\r\n params.startIndex = 0;\r\n params.recordsToRetrieve = rowsPerPage;\r\n searchOrganizations(params).then((data) => {\r\n setDefaultSearchParams(params);\r\n setOrganizations(data.organizations);\r\n setTotalCount(data.totalRecords);\r\n });\r\n }}\r\n />\r\n \r\n {errorOpen && \r\n \r\n {error ?? ''}\r\n \r\n }\r\n timeout={-1}\r\n dismissesOnAction\r\n onClose={() => { setErrorOpen(false); }}\r\n action={[\r\n \r\n ]}>\r\n }\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddParentOrganization;","import React, { Fragment, useCallback, useEffect, useRef } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport {\r\n DataTable,\r\n DataTableBody,\r\n DataTableCell,\r\n DataTableCheckboxCell,\r\n DataTableColumnHeaderCell,\r\n DataTableContent,\r\n DataTableHeaderCheckboxCell,\r\n DataTableHeaderRow,\r\n DataTablePagination,\r\n DataTableRow,\r\n DataTableToolbar,\r\n Dialog,\r\n Search,\r\n SortDirection,\r\n Checkbox\r\n} from \"@episerver/ui-framework\";\r\nimport {\r\n addContactsTitleSelector,\r\n contactListPaginationSelector,\r\n deselectAllContacts,\r\n deselectContact,\r\n isOpenDialogSelector,\r\n keywordSelector,\r\n onChangeDialog,\r\n selectAllContacts,\r\n selectContact,\r\n selectedContactsSelector,\r\n sort,\r\n sortSelector,\r\n changeKeyword,\r\n contactsSelector,\r\n} from \"../reducers/addAssignmentsToUserReducer\";\r\nimport {userAccountAssignmentsSelector} from \"../reducers/userAccountAssignmentsReducer\";\r\nimport { Contact, ContactType, ServerSortType } from \"../../ContactManager/model/contact\";\r\nimport { searchAvailableUserAccountAssignments, updateUserAccountAssignments} from \"../../ContactManager/reducers/asyncThunks\";\r\nimport { debounce } from \"lodash-es\";\r\n\r\ninterface AddAssignmentsToUsernProps {\r\n contactId: string;\r\n type: ContactType;\r\n}\r\n\r\nconst AddAssignmentsToUser = (props: AddAssignmentsToUsernProps) => {\r\n const dispatch = useAppDispatch();\r\n const contacts = useAppSelector(contactsSelector);\r\n const assignedContacts = useAppSelector(userAccountAssignmentsSelector);\r\n const { sortDirection, sortedColumn } = useAppSelector(sortSelector);\r\n const sortDirectionRef = useRef(sortDirection);\r\n const sortedColumnRef = useRef(sortedColumn);\r\n const { contactId } = props;\r\n const { rowsPerPage, startRow, rowsPerPageOptions, totalRowCount } = useAppSelector(contactListPaginationSelector);\r\n const keyword = useAppSelector(keywordSelector);\r\n const selectedContacts = useAppSelector(selectedContactsSelector);\r\n const open = useAppSelector(isOpenDialogSelector);\r\n const title = useAppSelector(addContactsTitleSelector);\r\n\r\n useEffect(() => { \r\n dispatch(\r\n searchAvailableUserAccountAssignments({\r\n query: keyword,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n contactId: contactId\r\n })\r\n );\r\n \r\n }, []);\r\n\r\n const columns: Array<{ selector: string; title: string; sortable: boolean }> = props.type !== ContactType.Account ? [\r\n { selector: \"FullName\", title: \"Full Name\", sortable: true },\r\n { selector: \"ContactCode\", title: \"ContactCode\", sortable: true },\r\n ] : [\r\n { selector: \"FullName\", title: \"Full Name\", sortable: true },\r\n { selector: \"Email\", title: \"Email\", sortable: true },\r\n ];\r\n\r\n const onSelectedRowChanged = (row: Contact, checked: boolean): void => {\r\n if (checked) dispatch(selectContact(row));\r\n else dispatch(deselectContact(row));\r\n };\r\n\r\n const onToggleAllSelected = (checked: boolean): void => {\r\n if (checked) dispatch(selectAllContacts());\r\n else dispatch(deselectAllContacts());\r\n };\r\n\r\n const onSort = (column: string, direction: SortDirection): void => {\r\n dispatch(sort({ column, direction }));\r\n dispatch(\r\n searchAvailableUserAccountAssignments({\r\n query: keyword,\r\n sortField: column,\r\n sortType: direction === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: 0,\r\n recordsToRetrieve: rowsPerPage,\r\n contactId: contactId\r\n })\r\n );\r\n \r\n };\r\n\r\n useEffect(() => {\r\n sortDirectionRef.current = sortDirection;\r\n }, [sortDirection]);\r\n\r\n useEffect(() => {\r\n sortedColumnRef.current = sortedColumn;\r\n }, [sortedColumn]);\r\n\r\n const isSelected = (row: Contact): boolean => {\r\n return selectedContacts.find((x) => x.primaryKeyId == row.primaryKeyId) != null;\r\n };\r\n\r\n const handleSearch = (value: string, recordsToRetrieve: number) => debouncedSearch(value, recordsToRetrieve);\r\n const debouncedSearch = useCallback(\r\n debounce((nextValue: string, recordsToRetrieve: number) => onSearch(nextValue, recordsToRetrieve), 1000),\r\n []\r\n );\r\n const onSearch = (value: string, recordsToRetrieve: number): void => {\r\n dispatch(\r\n searchAvailableUserAccountAssignments({\r\n query: value,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: recordsToRetrieve,\r\n contactId: contactId\r\n })\r\n );\r\n dispatch(changeKeyword(value));\r\n };\r\n\r\n const onChangePage = (startRow: number): void => {\r\n dispatch(\r\n searchAvailableUserAccountAssignments({\r\n query: keyword,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n contactId: contactId\r\n })\r\n );\r\n };\r\n\r\n const onChangeRowsPerPage = (rowsPerPage: number): void => {\r\n dispatch(\r\n searchAvailableUserAccountAssignments({\r\n query: keyword,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n contactId: contactId\r\n })\r\n );\r\n };\r\n\r\n const onSubmit = async (): Promise => {\r\n dispatch(updateUserAccountAssignments({contactIds: selectedContacts.map(contact => contact.primaryKeyId), contactId: contactId}));\r\n dispatch(changeKeyword(\"\"));\r\n dispatch(\r\n searchAvailableUserAccountAssignments({\r\n query: keyword,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n contactId: contactId\r\n })\r\n );\r\n dispatch(onChangeDialog({ open: false }));\r\n };\r\n\r\n const renderRow = (rowData: Contact): React.ReactElement => {\r\n var isSelectedProp = isSelected(rowData);\r\n return (\r\n \r\n \r\n onSelectedRowChanged(rowData, e.target.checked)}/>\r\n \r\n {rowData.fullName}\r\n {props.type !== ContactType.Account && {rowData.extendedProperties?.find(property => property.name ===\"ContactCode\")?.value ?? \"\"}}\r\n {props.type === ContactType.Account && {rowData.email ?? \"\"}}\r\n \r\n );\r\n };\r\n\r\n return (\r\n {\r\n if (evt.detail.action === \"confirm\") {\r\n onSubmit();\r\n } else {\r\n dispatch(onChangeDialog({ open: false }));\r\n\r\n dispatch(\r\n searchAvailableUserAccountAssignments({\r\n query: keyword,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n contactId: contactId\r\n })\r\n );\r\n }\r\n }}\r\n >\r\n
    \r\n \r\n \r\n {\r\n handleSearch(value, rowsPerPage);\r\n }}\r\n onSearch={(value: string) => {\r\n handleSearch(value, rowsPerPage);\r\n }}\r\n value={keyword}\r\n />\r\n \r\n \r\n \r\n \r\n {contacts.length > 0 && (\r\n onToggleAllSelected(e.target.checked)}\r\n />\r\n )}\r\n \r\n \r\n {columns.map((column) => {\r\n if (column.sortable)\r\n return (\r\n \r\n onSort(column.selector, direction)\r\n }\r\n sortDirection={\r\n sortedColumn === column.selector\r\n ? sortDirection\r\n : SortDirection.Unsorted\r\n }\r\n >\r\n {column.title}\r\n \r\n );\r\n return (\r\n \r\n {column.title}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {contacts.map((row: Contact) => {\r\n return renderRow(row);\r\n })}\r\n \r\n \r\n onChangePage(startRow)}\r\n onChangeRowsPerPage={(rowsPerPage) => onChangeRowsPerPage(rowsPerPage)}\r\n />\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default AddAssignmentsToUser;\r\n","import React, {useEffect} from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport {\r\n DataTable,\r\n DataTableBody,\r\n DataTableCell,\r\n DataTableColumnHeaderCell,\r\n DataTableContent,\r\n DataTableHeaderRow,\r\n DataTablePagination,\r\n DataTableRow,\r\n DataTableToolbar,\r\n TextButton,\r\n} from \"@episerver/ui-framework\";\r\nimport {\r\n userAccountAssignmentsPaginationSelector,\r\n onChangeContactPage,\r\n onChangeContactRowPerPage,\r\n} from \"../reducers/userAccountAssignmentsReducer\";\r\nimport { Contact, ContactType } from \"../../ContactManager/model/contact\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { onChangeDialog } from \"../reducers/addAssignmentsToUserReducer\";\r\nimport { userAccountAssignmentsSelector } from \"../reducers/userAccountAssignmentsReducer\";\r\nimport { fetchUserAccountAssignments } from \"../reducers/asyncThunks\";\r\n\r\ninterface UserAccountAssignmentsProps {\r\n contactId: string;\r\n type: ContactType;\r\n}\r\n\r\nconst UserAccountAssignments = (props: UserAccountAssignmentsProps) => {\r\n const dispatch = useAppDispatch();\r\n const history = useHistory();\r\n const Assignments = useSelector(userAccountAssignmentsSelector);\r\n const { rowsPerPage, startRow, rowsPerPageOptions, totalRowCount } = useSelector(\r\n userAccountAssignmentsPaginationSelector\r\n );\r\n\r\n useEffect(() => {\r\n dispatch(fetchUserAccountAssignments(props.contactId));\r\n }, []);\r\n\r\n const columns: Array<{ selector: string; title: string; sortable: boolean }> = props.type !== ContactType.Account ? [\r\n { selector: \"FullName\", title: \"Full Name\", sortable: true },\r\n { selector: \"ContactCode\", title: \"Contact Code\", sortable: true },\r\n { selector: \"LastOrderDate\", title: \"Last Order Date\", sortable: true },\r\n { selector: \"CustomerGroup\", title: \"Customer Group\", sortable: true },\r\n ] : [\r\n { selector: \"FullName\", title: \"Full Name\", sortable: true },\r\n { selector: \"Email\", title: \"Email\", sortable: true },\r\n { selector: \"LastOrderDate\", title: \"Last Order Date\", sortable: true },\r\n { selector: \"CustomerGroup\", title: \"Customer Group\", sortable: true },\r\n ];\r\n\r\n const renderRow = (rowData: Contact): React.ReactElement => {\r\n return (\r\n \r\n \r\n {\r\n e.preventDefault();\r\n if (rowData.customerGroup === \"Account\") {\r\n history.push({\r\n pathname: \"/Accounts/Edit/\" + rowData.primaryKeyId,\r\n });\r\n } else {\r\n history.push({\r\n pathname: \"/Users/Edit/\" + rowData.primaryKeyId,\r\n });\r\n }\r\n }}\r\n >\r\n {rowData.fullName}\r\n \r\n \r\n {props.type !== ContactType.Account && {rowData.extendedProperties?.find(property => property.name ===\"ContactCode\")?.value ?? \"\"}}\r\n {props.type === ContactType.Account && {rowData.email ?? \"\"}}\r\n \r\n {rowData.lastOrder != null ? new Date(rowData.lastOrder).toLocaleDateString() : \"\"}\r\n \r\n {rowData.customerGroup ?? \"\"}\r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n {\r\n console.log(Assignments)}\r\n \r\n \r\n
    \r\n \r\n dispatch(\r\n onChangeDialog({\r\n open: true,\r\n })\r\n )\r\n }\r\n >\r\n Update\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n {columns.map((column) => {\r\n return (\r\n \r\n {column.title}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {Assignments.map((row: Contact, index: number) => {\r\n if (index < startRow || index >= startRow + rowsPerPage) {\r\n return ;\r\n }\r\n return renderRow(row);\r\n })}\r\n \r\n \r\n dispatch(onChangeContactPage(startRow))}\r\n onChangeRowsPerPage={(rowsPerPage) => dispatch(onChangeContactRowPerPage(rowsPerPage))}\r\n />\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default UserAccountAssignments;\r\n","import {\r\n GridRow,\r\n GridCell,\r\n TextButton,\r\n Breadcrumb,\r\n List,\r\n ListItem,\r\n TabBar,\r\n Tab,\r\n Typography,\r\n TextField,\r\n ExposedDropdownMenu,\r\n OverflowMenu,\r\n Dialog,\r\n RadioButtonGroup,\r\n RadioButton,\r\n Checkbox\r\n} from \"@episerver/ui-framework\";\r\nimport React, { Fragment, useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory, useParams } from \"react-router-dom\";\r\nimport AddressList from \"../../AddressManager/components/AddressList\";\r\nimport { Address, InView } from \"../../AddressManager/model/address\";\r\nimport {\r\n initialAddressFormState,\r\n onOpenDialog as onOpenAddressDialog,\r\n} from \"../../AddressManager/reducers/addressFormReducer\";\r\nimport { fetchEnumsByType } from \"../../EnumManager/reducers/asyncThunks\";\r\nimport {\r\n enumFormTitle,\r\n initialEnumFormState,\r\n onOpenDialog as onOpenEnumDialog,\r\n} from \"../../EnumManager/reducers/enumFormReducer\";\r\nimport { enumType } from \"../../EnumManager/reducers/enumManagerReducer\";\r\nimport { Organization } from \"../../OrganizationManager/model/organization\";\r\nimport { Contact, ContactTab, EnumData, KeyValueOption, ContactType, ContactsType, UserExtendedProps, AccountExtendedProps} from \"../model/contact\";\r\nimport {\r\n fetchAddressesByContactId,\r\n fetchContactById,\r\n fetchCurrencies,\r\n fetchLanguages,\r\n fetchOrganizations,\r\n updateContact,\r\n fetchUserByContactId,\r\n createCustomerAccount\r\n} from \"../reducers/asyncThunks\";\r\nimport {\r\n changeTitle,\r\n setParentId,\r\n contactSelector,\r\n contactTitle,\r\n currenciesSelector,\r\n customerGroupsSelector,\r\n languagesSelector,\r\n organizationsSelector,\r\n breadcrumbItemsSelector,\r\n updateBreadcrumb,\r\n titleSelector,\r\n activeTabSelector,\r\n changeActiveTab,\r\n reset as resetData,\r\n onChangeProperty,\r\n onAddAcountDialog,\r\n customerAccountSelector,\r\n onChangeAccount,\r\n errorSelector,\r\n setCustomerGroupId\r\n} from \"../reducers/contactDetailReducer\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport ContactNoteManager from \"../../ContactNoteManager/components/ContactNoteManager\";\r\nimport { useState } from \"react\";\r\nimport { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\nimport { Controller, useForm } from \"react-hook-form\";\r\nimport { unwrapResult } from \"@reduxjs/toolkit\";\r\nimport ExtendedProperty from \"../../ExtendedProperty/ExtendedProperty\";\r\nimport { Snackbar, SnackbarAction } from \"@rmwc/snackbar\";\r\nimport AddParentOrganization from \"./AddParentOrganization\";\r\nimport AddAssignmentsToUser from \"./AddAssignmentsToUser\";\r\nimport UserAccountAssignments from \"./UserAccountAssignments\";\r\n\r\nexport const limitString = (val: string, num: number) => {\r\n if (val && val.length > num) {\r\n return val.substring(0, num) + \"...\";\r\n } else {\r\n return val;\r\n }\r\n};\r\n\r\ninterface ContactDetailProps {\r\n type: ContactType;\r\n}\r\n\r\nconst ContactDetail = (props: ContactDetailProps) => {\r\n const dispatch = useAppDispatch();\r\n const history = useHistory();\r\n const { contactId } = useParams<{ contactId: string }>();\r\n const title = useSelector(titleSelector);\r\n const initialContact = useSelector(contactSelector);\r\n const languages = useSelector(languagesSelector);\r\n const customerGroups = useSelector(customerGroupsSelector);\r\n const currencies = useSelector(currenciesSelector);\r\n const organizations = useSelector(organizationsSelector);\r\n const breadcrumbItems = useSelector(breadcrumbItemsSelector);\r\n const activeTab = useSelector(activeTabSelector);\r\n const customerAccount = useSelector(customerAccountSelector);\r\n const [invalidUsername, setInvalidUsername] = useState(false);\r\n const [invalidUsernameMessage, setInvalidUsernameMessage] = useState(\"\");\r\n const [invalidEmail, setInvalidEmail] = useState(false);\r\n const [invalidPassword, setInvalidPassword] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n const [errorOpen, setErrorOpen] = useState(false);\r\n const error = useSelector(errorSelector);\r\n let type = props.type;\r\n\r\n if (type === ContactType.Contact && initialContact.customerGroup !== null) {\r\n switch(initialContact.customerGroup) {\r\n case \"User\": \r\n case \"AccountAdmin\":\r\n type = ContactType.User;\r\n break;\r\n case \"Account\":\r\n type = ContactType.Account;\r\n break;\r\n default: break;\r\n }\r\n }\r\n\r\n const allowedExtendedPropsNames = type === ContactType.Account ? AccountExtendedProps : UserExtendedProps;\r\n\r\n const {\r\n control,\r\n handleSubmit,\r\n watch,\r\n setValue,\r\n setError,\r\n clearErrors,\r\n trigger,\r\n reset,\r\n formState: { errors },\r\n } = useForm({\r\n mode: \"onChange\",\r\n defaultValues: initialContact,\r\n });\r\n\r\n const values = watch();\r\n\r\n useEffect(() => {\r\n reset(initialContact);\r\n }, [initialContact]);\r\n\r\n const setCustomerGroupIdData = (contact) => {\r\n if (contact && (contact.customerGroupId === \"0\" || contact.customerGroupId === null))\r\n {\r\n switch(type) {\r\n case ContactType.Account: \r\n case ContactType.User:\r\n dispatch(setCustomerGroupId(type.toString()))\r\n break;\r\n case ContactType.Contact: \r\n default: \r\n }\r\n }\r\n }\r\n\r\n const initComponent = async () => {\r\n dispatch(fetchCurrencies());\r\n dispatch(fetchLanguages());\r\n dispatch(fetchEnumsByType(enumType.ContactGroup));\r\n dispatch(fetchOrganizations());\r\n dispatch(changeActiveTab(0));\r\n dispatch(fetchContactById(contactId))\r\n .then((data) => {\r\n data && setCustomerGroupIdData(data.payload);\r\n });\r\n dispatch(updateBreadcrumb( {\r\n title: ContactsType[type],\r\n level: 1,\r\n link: `#/${ContactsType[type]}`,\r\n }));\r\n if (contactId !== undefined) {\r\n dispatch(changeTitle(contactTitle.Edit + ContactType[type]));\r\n dispatch(fetchAddressesByContactId(contactId));\r\n } else {\r\n dispatch(changeTitle(contactTitle.Add + ContactType[type]));\r\n }\r\n dispatch(fetchUserByContactId(contactId)); \r\n };\r\n\r\n const onSubmit = async (contact: Contact) => {\r\n await dispatch(\r\n updateContact({\r\n ...contact,\r\n primaryKeyId: contactId ? contact.primaryKeyId : null,\r\n ownerId: contact.ownerId === \"0\" ? null : contact.ownerId,\r\n customerGroupId: contact.customerGroupId === \"0\" ? null : contact.customerGroupId,\r\n preferredShippingAddressId:\r\n contact.preferredShippingAddressId === \"0\" || !contactId\r\n ? null\r\n : contact.preferredShippingAddressId,\r\n preferredBillingAddressId:\r\n contact.preferredBillingAddressId === \"0\" || !contactId ? null : contact.preferredBillingAddressId,\r\n preferredCurrencyId: contact.preferredCurrencyId === \"0\" ? null : contact.preferredCurrencyId,\r\n preferredLanguageId: contact.preferredLanguageId === \"0\" ? null : contact.preferredLanguageId,\r\n extendedProperties:\r\n contact.extendedProperties?.map((prop: Property) => ({\r\n name: prop.name,\r\n value: prop.value,\r\n })) ?? [],\r\n addresses: contact.addresses?.map((address: Address) => {\r\n return {\r\n ...address,\r\n extendedProperties:\r\n address.extendedProperties?.map((prop: Property) => ({\r\n name: prop.name,\r\n value: prop.value,\r\n })) ?? [],\r\n };\r\n }),\r\n })\r\n )\r\n .then(unwrapResult)\r\n .then(() => {\r\n history.push(`/${ContactsType[type]}`);\r\n })\r\n .catch(() => {\r\n setErrorOpen(true);\r\n });\r\n };\r\n\r\n const onChangeAccountField = (e: any) => {\r\n e.persist();\r\n let { name, value } = e.target;\r\n const emailRegex =\r\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n switch (name) {\r\n case \"password\":\r\n let passRegexLength = new RegExp(\"^(?=.{6,})\");\r\n let passRegexLower = new RegExp(\"^(?=.*[a-z])\");\r\n let passRegexUpper = new RegExp(\"^(?=.*[A-Z])\");\r\n let passRegexNumber = new RegExp(\"^(?=.*[0-9])\");\r\n let passRegexSymbol = new RegExp(\"^(?=.*[!@#$%^&*])\");\r\n\r\n if (!passRegexLength.test(value)) {\r\n setInvalidPassword(true);\r\n setErrorMessage(\"Passwords must be at least 6 characters.\");\r\n } else if (!passRegexLower.test(value)) {\r\n setInvalidPassword(true);\r\n setErrorMessage(\"Passwords must have at least one lowercase ('a'-'z').\");\r\n } else if (!passRegexUpper.test(value)) {\r\n setInvalidPassword(true);\r\n setErrorMessage(\"Passwords must have at least one uppercase ('A'-'Z').\");\r\n } else if (!passRegexNumber.test(value)) {\r\n setInvalidPassword(true);\r\n setErrorMessage(\"Passwords must have at least one non alphanumeric character.\");\r\n } else if (!passRegexSymbol.test(value)) {\r\n setInvalidPassword(true);\r\n setErrorMessage(\"Passwords must use at least 1 different characters.\");\r\n } else {\r\n setInvalidPassword(false);\r\n setErrorMessage(\"\");\r\n }\r\n break;\r\n case \"username\":\r\n if (!emailRegex.test(value)) {\r\n setInvalidUsername(true);\r\n setInvalidUsernameMessage(\"Username should be an email address.\");\r\n } else {\r\n setInvalidUsername(false);\r\n setInvalidUsernameMessage(\"\");\r\n }\r\n break;\r\n case \"email\":\r\n if (value === \"\") {\r\n setInvalidEmail(true);\r\n } else {\r\n if (emailRegex.test(value)) {\r\n setInvalidEmail(false);\r\n } else {\r\n setInvalidEmail(true);\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n dispatch(onChangeAccount({ name: name, value: value }));\r\n };\r\n\r\n const onChangeRadioButton = (e: any) => {\r\n e.persist();\r\n let { name, value } = e.target;\r\n if (value === \"true\") {\r\n value = true;\r\n } else {\r\n value = false;\r\n }\r\n dispatch(onChangeAccount({ name: name, value: value }));\r\n };\r\n\r\n useEffect(() => {\r\n initComponent();\r\n }, [contactId]);\r\n\r\n useEffect(() => {\r\n dispatch(\r\n updateBreadcrumb({\r\n level: 2,\r\n active: true,\r\n title: initialContact.fullName,\r\n link: \"\",\r\n })\r\n );\r\n }, [initialContact.fullName]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n dispatch(resetData());\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n dispatch(onChangeProperty(values));\r\n }, [activeTab != ContactTab.Details]);\r\n\r\n const renderUserAccountAssignments = (): React.ReactNode => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const renderDetails = (): React.ReactNode => {\r\n return (\r\n \r\n {\r\n e.preventDefault();\r\n }}\r\n >\r\n \r\n \r\n \r\n
    \r\n (\r\n \r\n )}\r\n />\r\n
    \r\n
    \r\n {type !== ContactType.Account && \r\n \r\n
    \r\n (\r\n \r\n )}\r\n />\r\n
    \r\n
    }\r\n {type !== ContactType.Account && \r\n \r\n
    \r\n (\r\n \r\n )}\r\n />\r\n
    \r\n
    }\r\n {type !== ContactType.Account && \r\n \r\n
    \r\n (\r\n \r\n )}\r\n />\r\n
    \r\n
    }\r\n {type !== ContactType.Account && \r\n \r\n
    \r\n (\r\n \r\n )}\r\n />\r\n
    \r\n
    \r\n }\r\n {props.type !== ContactType.Account && \r\n
    \r\n (\r\n \r\n )}\r\n />\r\n
    \r\n
    }\r\n \r\n {\r\n dispatch(onChangeProperty(values));\r\n if (parentId !== values.ownerId) {\r\n dispatch(setParentId(parentId));\r\n }\r\n }}\r\n contactId={contactId} />\r\n \r\n \r\n \r\n
    \r\n ({\r\n label: limitString(customerGroup.name, 40),\r\n value: customerGroup.id.toString(),\r\n }))}\r\n value={\r\n values.customerGroupId !== null &&\r\n customerGroups.filter((x) => x.id.toString() == values.customerGroupId).length >\r\n 0\r\n ? values.customerGroupId.toString()\r\n : \"0\"\r\n }\r\n onValueChange={(val: string) => {\r\n setValue(\"customerGroupId\", val);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n {props.type !== ContactType.Account &&
    \r\n \r\n (\r\n \r\n )}\r\n />\r\n
    }\r\n \r\n
    \r\n\r\n \r\n \r\n {values.extendedProperties?.map((property: Property, index: number) => {\r\n return (allowedExtendedPropsNames.includes(property.name) &&\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n })}\r\n
    \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n if (evt.detail.action === \"confirm\") {\r\n dispatch(createCustomerAccount({ ...customerAccount, contactId: contactId }));\r\n }\r\n dispatch(\r\n onAddAcountDialog({\r\n open: false,\r\n username: \"\",\r\n password: \"\",\r\n description: \"\",\r\n email: \"\",\r\n approved: false,\r\n })\r\n );\r\n }}\r\n >\r\n \r\n \r\n {\r\n onChangeAccountField(e);\r\n }}\r\n />\r\n \r\n \r\n {\r\n onChangeAccountField(e);\r\n }}\r\n />\r\n \r\n \r\n
    \r\n {\r\n onChangeAccountField(e);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n onChangeAccountField(e);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {\r\n onChangeRadioButton(e);\r\n }}\r\n >\r\n Yes\r\n \r\n {\r\n onChangeRadioButton(e);\r\n }}\r\n >\r\n No\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n };\r\n\r\n const renderAddresses = (): React.ReactNode => {\r\n return ;\r\n };\r\n\r\n const renderContactNotes = (): React.ReactNode => {\r\n return ;\r\n };\r\n\r\n return (\r\n \r\n {!contactId && (\r\n \r\n {title}\r\n
    \r\n
    \r\n )}\r\n {contactId && (\r\n \r\n \r\n

    \r\n
    \r\n )}\r\n {\r\n dispatch(changeActiveTab(e.detail.index));\r\n }}\r\n >\r\n {contactId && (\r\n \r\n Details\r\n Addresses\r\n Contact notes\r\n {type === ContactType.User && Account Assignments}\r\n {type === ContactType.Account && User Assignments}\r\n \r\n )}\r\n \r\n
    \r\n {
    \r\n {renderDetails()}\r\n
    }\r\n {contactId && activeTab === ContactTab.Addresses && renderAddresses()}\r\n {contactId && activeTab === ContactTab.ContactNote && renderContactNotes()}\r\n {contactId && activeTab === ContactTab.AccountAssignments && renderUserAccountAssignments()}\r\n
    \r\n
    \r\n history.push(`/${ContactsType[type]}`)}>Cancel\r\n handleSubmit(onSubmit)()}>\r\n Save\r\n \r\n
    \r\n {errorOpen && \r\n \r\n {error}\r\n \r\n }\r\n timeout={-1}\r\n dismissesOnAction\r\n onClose={() => {\r\n setErrorOpen(false);\r\n }}\r\n action={[]}\r\n >\r\n }\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default ContactDetail;\r\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport { fetchContacts, searchContacts, deleteContacts } from \"../reducers/asyncThunks\";\r\nimport {\r\n DataTable,\r\n DataTableBody,\r\n DataTableCell,\r\n DataTableColumnHeaderCell,\r\n DataTableContent,\r\n DataTableHeaderRow,\r\n DataTableRow,\r\n TextButton,\r\n List,\r\n ListItem,\r\n SortDirection,\r\n DataTablePagination,\r\n DataTableHeaderCheckboxCell,\r\n DataTableCheckboxCell,\r\n Search,\r\n DataTableToolbar,\r\n Typography,\r\n Dialog,\r\n DataTableOverflowMenuCell,\r\n DataTableColumnManageButton,\r\n Checkbox,\r\n} from \"@episerver/ui-framework\";\r\nimport { Contact, ServerSortType, ContactsType } from \"../model/contact\";\r\nimport {\r\n selectContact,\r\n deselectContact,\r\n sort,\r\n selectAllContacts,\r\n deselectAllContacts,\r\n onChangeConfirmDialog,\r\n initialContactState,\r\n reset\r\n} from \"../reducers/contactListReducer\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { debounce } from \"lodash-es\";\r\nimport { RootState } from \"../../store\";\r\n\r\ninterface ContactListProps {\r\n type: ContactsType;\r\n}\r\n\r\nconst ContactList = (props: ContactListProps) => {\r\n const dispatch = useAppDispatch();\r\n const history = useHistory();\r\n const {\r\n contacts,\r\n selectedContacts,\r\n contactListPagination: { rowsPerPage, startRow, rowsPerPageOptions, totalRowCount, searchInput },\r\n sort: { sortDirection, sortedColumn },\r\n confirmDialog,\r\n } = useAppSelector((state: RootState) => state.contactList);\r\n\r\n const sortDirectionRef = useRef(sortDirection);\r\n const sortedColumnRef = useRef(sortedColumn);\r\n\r\n let columnsDefault = props.type === ContactsType.Accounts ? {\r\n fullName: { selector: \"FullName\", name: \"Full Name\", sortable: true, visible: true },\r\n contactCode: { selector: \"Code\", name: \"Contact Code\", sortable: true, visible: true },\r\n created: { selector: \"Created\", name: \"Created\", sortable: true, visible: true },\r\n modified: { selector: \"Modified\", name: \"Modified\", sortable: true, visible: true },\r\n id: { selector: \"ContactId\", name: \"Id\", sortable: true, visible: true },\r\n } : {\r\n fullName: { selector: \"FullName\", name: \"Full Name\", sortable: true, visible: true },\r\n firstName: { selector: \"FirstName\", name: \"First Name\", sortable: true, visible: true },\r\n lastName: { selector: \"LastName\", name: \"Last Name\", sortable: true, visible: true },\r\n customerGroup: { selector: \"CustomerGroup\", name: \"Customer Group\", sortable: true, visible: true },\r\n email: { selector: \"Email\", name: \"Email\", sortable: true, visible: true },\r\n id: { selector: \"ContactId\", name: \"Id\", sortable: true, visible: true },\r\n created: { selector: \"Created\", name: \"Created\", sortable: true, visible: true },\r\n active: { selector: \"Active\", name: \"Active\", sortable: true, visible: true },\r\n };\r\n\r\n const [columns, setColumns] = useState<\r\n Record\r\n >(columnsDefault);\r\n\r\n const onToggleAllSelected = (checked: boolean): void => {\r\n if (checked) dispatch(selectAllContacts());\r\n else dispatch(deselectAllContacts());\r\n };\r\n\r\n const isSelected = (row: Contact): boolean => {\r\n return selectedContacts.includes(row.primaryKeyId!);\r\n };\r\n\r\n const handleSearch = (value: string, recordsToRetrieve: number) => debouncedSearch(value, recordsToRetrieve);\r\n const debouncedSearch = useCallback(\r\n debounce((nextValue: string, recordsToRetrieve: number) => onSearch(nextValue, recordsToRetrieve), 1000),\r\n []\r\n );\r\n const onSearch = (value: string, recordsToRetrieve: number): void => {\r\n let keyWord = value.trim();\r\n dispatch(\r\n searchContacts({\r\n query: keyWord,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: 0,\r\n recordsToRetrieve: recordsToRetrieve,\r\n type: props.type\r\n })\r\n );\r\n };\r\n\r\n const onSort = (column: string, direction: SortDirection): void => {\r\n dispatch(sort({ column, direction }));\r\n if (searchInput) {\r\n dispatch(\r\n searchContacts({\r\n query: searchInput,\r\n sortField: column,\r\n sortType: direction === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: 0,\r\n recordsToRetrieve: rowsPerPage,\r\n type: props.type\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n fetchContacts({\r\n sortField: column,\r\n sortType: direction === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: 0,\r\n recordsToRetrieve: rowsPerPage,\r\n type: props.type\r\n })\r\n );\r\n }\r\n };\r\n\r\n const onCreateNew = (): void => {\r\n history.push({\r\n pathname: `/${ContactsType[props.type]}/Edit`,\r\n });\r\n };\r\n\r\n const onEdit = (row: Contact): void => {\r\n history.push({\r\n pathname: `/${ContactsType[props.type]}/Edit/` + row.primaryKeyId,\r\n });\r\n };\r\n\r\n const onConfirmDialog = (contactIds: string[]): void => {\r\n let message = `Are you sure to delete these contacts?`;\r\n dispatch(onChangeConfirmDialog({ ...confirmDialog, open: true, contactIds: contactIds, message: message }));\r\n };\r\n\r\n const onSelectAll = (e: any): void => {\r\n if (e != undefined && e.target != undefined) {\r\n onToggleAllSelected(e.target.checked);\r\n } else {\r\n onToggleAllSelected(selectedContacts.length < rowsPerPage);\r\n }\r\n };\r\n\r\n const onDelete = (): void => {\r\n dispatch(\r\n deleteContacts({\r\n contactIds: confirmDialog.contactIds,\r\n query: searchInput,\r\n sortField: sortedColumn,\r\n sortType: sortDirection === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: props.type\r\n })\r\n );\r\n\r\n dispatch(onChangeConfirmDialog(initialContactState.confirmDialog));\r\n };\r\n\r\n const onCancel = (): void => {\r\n dispatch(onChangeConfirmDialog(initialContactState.confirmDialog));\r\n };\r\n\r\n const onSelectedRowChanged = (row: Contact, checked: boolean): void => {\r\n if (checked) dispatch(selectContact(row.primaryKeyId));\r\n else dispatch(deselectContact(row.primaryKeyId));\r\n };\r\n\r\n const onChangePage = (startRow: number): void => {\r\n if (searchInput === \"\" || searchInput === undefined) {\r\n dispatch(\r\n fetchContacts({\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: props.type\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n searchContacts({\r\n query: searchInput,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: props.type\r\n })\r\n );\r\n }\r\n };\r\n\r\n const onChangeRowsPerPage = (rowsPerPage: number): void => {\r\n if (searchInput === \"\" || searchInput === undefined) {\r\n dispatch(\r\n fetchContacts({\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: 0,\r\n recordsToRetrieve: rowsPerPage,\r\n type: props.type\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n searchContacts({\r\n query: searchInput,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: 0,\r\n recordsToRetrieve: rowsPerPage,\r\n type: props.type\r\n })\r\n );\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n dispatch(\r\n fetchContacts({\r\n sortField: sortedColumn,\r\n sortType: sortDirection === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: props.type\r\n })\r\n );\r\n return () => {\r\n dispatch(reset());\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n sortDirectionRef.current = sortDirection;\r\n }, [sortDirection]);\r\n\r\n useEffect(() => {\r\n sortedColumnRef.current = sortedColumn;\r\n }, [sortedColumn]);\r\n\r\n const renderRow = (rowData: Contact): React.ReactElement => {\r\n return (\r\n \r\n onSelectedRowChanged(rowData, e.target.checked)}\r\n />\r\n <>\r\n {columns[\"fullName\"].visible && (\r\n \r\n {\r\n e.preventDefault();\r\n onEdit(rowData);\r\n }}\r\n >\r\n {rowData.fullName}\r\n \r\n \r\n )}\r\n \r\n {props.type !== ContactsType.Accounts && columns[\"firstName\"].visible && {rowData.firstName ?? \"\"}}\r\n {props.type !== ContactsType.Accounts && columns[\"lastName\"].visible && {rowData.lastName ?? \"\"}}\r\n {props.type !== ContactsType.Accounts && columns[\"customerGroup\"].visible && {rowData.customerGroup ?? \"\"}}\r\n {props.type !== ContactsType.Accounts && columns[\"email\"].visible && {rowData.email ?? \"\"}}\r\n {props.type !== ContactsType.Accounts && columns[\"id\"].visible && {rowData.primaryKeyId ?? \"\"}}\r\n {props.type !== ContactsType.Accounts && columns[\"created\"].visible && {new Date(rowData.created).toLocaleString()}}\r\n {props.type !== ContactsType.Accounts && columns[\"active\"].visible && {(rowData.extendedProperties?.find(property => property.name === columns[\"active\"].selector)?.value ?? false) ? \"Active\" : \"\" }}\r\n\r\n {props.type == ContactsType.Accounts && columns[\"contactCode\"].visible && {rowData.extendedProperties?.find(property => property.name === columns[\"contactCode\"].selector)?.value ?? \"\"}}\r\n {props.type === ContactsType.Accounts && columns[\"created\"].visible && {new Date(rowData.created).toLocaleString()}}\r\n {props.type === ContactsType.Accounts && columns[\"modified\"].visible && {new Date(rowData.modified).toLocaleString()}}\r\n {props.type === ContactsType.Accounts && columns[\"id\"].visible && {rowData.primaryKeyId ?? \"\"}}\r\n \r\n \r\n \r\n \r\n onEdit(rowData)}>Edit\r\n onConfirmDialog([rowData.primaryKeyId!])}>Delete\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n {ContactsType[props.type]}\r\n \r\n \r\n \r\n
    \r\n Create\r\n {selectedContacts.length > 0 && (\r\n onConfirmDialog(selectedContacts)}>\r\n Delete Selected ({selectedContacts.length})\r\n \r\n )}\r\n
    \r\n {\r\n handleSearch(value, rowsPerPage);\r\n }}\r\n onSearch={(value: string) => {\r\n handleSearch(value, rowsPerPage);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n onSelectAll(e)} />\r\n \r\n {Object.keys(columns).map((column) => {\r\n if (columns[column].sortable) {\r\n return (\r\n columns[column].visible && (\r\n \r\n onSort(columns[column].selector, direction)\r\n }\r\n sortDirection={\r\n sortedColumn === columns[column].selector\r\n ? sortDirection\r\n : SortDirection.Unsorted\r\n }\r\n >\r\n {columns[column].name}\r\n \r\n )\r\n );\r\n } else {\r\n return (\r\n columns[column].visible && (\r\n \r\n {columns[column].name}\r\n \r\n )\r\n );\r\n }\r\n })}\r\n {\r\n const changedColumn = Object.keys(columns).find(\r\n (column) => columns[column].name === columnName\r\n );\r\n if (changedColumn) {\r\n setColumns({\r\n ...columns,\r\n [changedColumn]: { ...columns[changedColumn], visible: checked },\r\n });\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n <>\r\n {contacts.length == 0 && (\r\n \r\n \r\n No Contacts found.\r\n \r\n \r\n )}\r\n {contacts.map((row: Contact) => renderRow(row))}\r\n \r\n \r\n \r\n \r\n
    \r\n {\r\n if (e.detail.action === \"confirm\") onDelete();\r\n else onCancel();\r\n }}\r\n >\r\n \r\n {confirmDialog.message}\r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default ContactList;\r\n","import { Dialog, TextField } from \"@episerver/ui-framework\";\r\nimport { useFormik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport React from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { fetchEnumsByType, updateEnum } from \"../reducers/asyncThunks\";\r\nimport {\r\n formSelector,\r\n initialEnumFormState,\r\n onChangeName,\r\n onChangeType,\r\n onOpenDialog,\r\n} from \"../reducers/enumFormReducer\";\r\nimport { EnumData } from \"../model/Enum\";\r\n\r\nconst EnumForm = () => {\r\n const dispatch = useAppDispatch();\r\n const { type } = useParams<{ type: string }>();\r\n const { open, title, enumData } = useAppSelector(formSelector);\r\n\r\n useEffect(() => {\r\n if (type) {\r\n dispatch(onChangeType(type));\r\n }\r\n }, [type]);\r\n\r\n const { values, isValid, errors, handleSubmit, setFieldValue, validateForm } = useFormik({\r\n enableReinitialize: true,\r\n initialValues: enumData,\r\n validationSchema: Yup.object({\r\n name: Yup.string().trim().required(\"*Required\"),\r\n }),\r\n onSubmit: async (enumData: EnumData) => {\r\n dispatch(onOpenDialog(initialEnumFormState));\r\n await dispatch(updateEnum(enumData));\r\n dispatch(fetchEnumsByType(enumData.type));\r\n },\r\n });\r\n\r\n const onChangeTextField = (e: any) => {\r\n e.persist();\r\n let { name, value } = e.target;\r\n setFieldValue(name, value);\r\n dispatch(onChangeName(value));\r\n };\r\n\r\n useEffect(() => {\r\n validateForm();\r\n }, [values]);\r\n\r\n return (\r\n {\r\n if (e.detail.action === \"confirm\") {\r\n handleSubmit();\r\n } else {\r\n dispatch(onOpenDialog(initialEnumFormState));\r\n }\r\n }}\r\n >\r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default EnumForm;\r\n","import React, { Fragment, useEffect } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport { useHistory, useParams } from \"react-router-dom\";\r\nimport {\r\n DataTable,\r\n DataTableBody,\r\n DataTableCell,\r\n DataTableColumnHeaderCell,\r\n DataTableContent,\r\n DataTableHeaderRow,\r\n DataTableOverflowMenuCell,\r\n DataTablePagination,\r\n DataTableRow,\r\n DataTableToolbar,\r\n Dialog,\r\n List,\r\n ListItem,\r\n TextButton,\r\n Typography,\r\n} from \"@episerver/ui-framework\";\r\nimport { EnumData } from \"../model/Enum\";\r\nimport {\r\n enumsSelector,\r\n enumListTitle,\r\n onChangeEnumPage,\r\n onChangeEnumRowPerPage,\r\n paginationSelector,\r\n confirmDialogSelector,\r\n onChangeConfirmDialog,\r\n initialEnumState,\r\n} from \"../reducers/enumManagerReducer\";\r\nimport { deleteEnum, fetchEnumsByType } from \"../reducers/asyncThunks\";\r\nimport { enumFormTitle, initialEnumFormState, onOpenDialog } from \"../reducers/enumFormReducer\";\r\n\r\nconst EnumList = () => {\r\n const history = useHistory();\r\n const dispatch = useAppDispatch();\r\n const { from, detail } = (history.location.state as any) || { from: \"\", detail: null };\r\n\r\n const { type } = useParams<{ type: string }>();\r\n const enums = useAppSelector(enumsSelector);\r\n const { rowsPerPage, startRow, rowsPerPageOptions, totalRowCount } = useAppSelector(paginationSelector);\r\n const confirmDialog = useAppSelector(confirmDialogSelector);\r\n useEffect(() => {\r\n dispatch(fetchEnumsByType(type));\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (history.location.state != null) {\r\n window.history.replaceState(history.location.state, \"\");\r\n }\r\n }, [history.location.state]);\r\n\r\n const columns: Array<{ selector: string; title: string }> = [\r\n { selector: \"\", title: \"No\" },\r\n { selector: \"name\", title: \"Item Value\" },\r\n { selector: \"name\", title: \"Display Value\" },\r\n { selector: \"\", title: \"\" },\r\n ];\r\n\r\n const onConfirmDialog = (enumData: EnumData, message: string): void => {\r\n dispatch(onChangeConfirmDialog({ ...confirmDialog, open: true, enum: enumData, message: message }));\r\n };\r\n\r\n const onDelete = (): void => {\r\n dispatch(deleteEnum(confirmDialog.enum));\r\n dispatch(onChangeConfirmDialog(initialEnumState.confirmDialog));\r\n };\r\n\r\n const onCancel = (): void => {\r\n dispatch(onChangeConfirmDialog(initialEnumState.confirmDialog));\r\n };\r\n\r\n const renderRow = (rowData: EnumData, index: number): React.ReactElement => {\r\n return (\r\n \r\n {index + 1}\r\n {rowData.name}\r\n {rowData.name}\r\n \r\n \r\n \r\n dispatch(\r\n onOpenDialog({\r\n form: {\r\n open: true,\r\n title: `Edit ${enumFormTitle[type]}`,\r\n enumData: rowData,\r\n },\r\n })\r\n )\r\n }\r\n >\r\n Edit\r\n \r\n onConfirmDialog(rowData, `Are you sure to delete \"${rowData.name}\"?`)}>\r\n Delete\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n Manage {enumListTitle[type]}\r\n
    \r\n \r\n \r\n \r\n dispatch(\r\n onOpenDialog({\r\n form: {\r\n open: true,\r\n title: `Create ${enumFormTitle[type]}`,\r\n enumData: initialEnumFormState.form.enumData,\r\n },\r\n })\r\n )\r\n }\r\n >\r\n Create\r\n \r\n \r\n \r\n \r\n \r\n {columns.map((column, index) => {\r\n return (\r\n {column.title}\r\n );\r\n })}\r\n \r\n \r\n \r\n {enums.map((row: EnumData, index: number) => {\r\n if (index < startRow || index >= startRow + rowsPerPage) {\r\n return ;\r\n }\r\n return renderRow(row, index);\r\n })}\r\n \r\n \r\n dispatch(onChangeEnumPage(startRow))}\r\n onChangeRowsPerPage={(rowsPerPage) => dispatch(onChangeEnumRowPerPage(rowsPerPage))}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n history.push({\r\n pathname: from === \"\" ? window.history.state.from : from,\r\n state: { from: history.location.pathname, detail: detail ?? window.history.state.detail },\r\n })\r\n }\r\n >\r\n Back\r\n \r\n
    \r\n {\r\n if (e.detail.action === \"confirm\") onDelete();\r\n else onCancel();\r\n }}\r\n >\r\n \r\n

    {confirmDialog.message}

    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default EnumList;\r\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport {\r\n DataTable,\r\n DataTableBody,\r\n DataTableCell,\r\n DataTableCheckboxCell,\r\n DataTableColumnHeaderCell,\r\n DataTableColumnManageButton,\r\n DataTableContent,\r\n DataTableHeaderCheckboxCell,\r\n DataTableHeaderRow,\r\n DataTableOverflowMenuCell,\r\n DataTablePagination,\r\n DataTableRow,\r\n DataTableToolbar,\r\n Dialog,\r\n List,\r\n ListItem,\r\n RadioButton,\r\n RadioButtonGroup,\r\n Search,\r\n SortDirection,\r\n TextButton,\r\n Typography,\r\n} from \"@episerver/ui-framework\";\r\nimport {\r\n deselectAllOrganizations,\r\n deselectOrganization,\r\n initialOrganizationState,\r\n onChangeConfirmDialog,\r\n selectAllOrganizations,\r\n selectOrganization,\r\n sort,\r\n reset,\r\n} from \"../reducers/organizationListReducer\";\r\nimport { searchOrganizations, deleteOrganizations } from \"../reducers/asyncThunks\";\r\nimport { DeleteMode, Organization, ServerSortType } from \"../model/organization\";\r\nimport { debounce } from \"lodash-es\";\r\nimport { RootState } from \"../../store\";\r\n\r\nconst OrganizationList = () => {\r\n const dispatch = useAppDispatch();\r\n const history = useHistory();\r\n const {\r\n keyword,\r\n organizations,\r\n selectedOrganizations,\r\n sort: { sortDirection, sortedColumn },\r\n pagination: { rowsPerPage, startRow, rowsPerPageOptions, totalRowCount },\r\n confirmDialog,\r\n } = useAppSelector((state: RootState) => state.organizationList);\r\n const sortDirectionRef = useRef(sortDirection);\r\n const sortedColumnRef = useRef(sortedColumn);\r\n\r\n useEffect(() => {\r\n sortDirectionRef.current = sortDirection;\r\n }, [sortDirection]);\r\n\r\n useEffect(() => {\r\n sortedColumnRef.current = sortedColumn;\r\n }, [sortedColumn]);\r\n\r\n useEffect(() => {\r\n dispatch(\r\n searchOrganizations({\r\n query: \"\",\r\n sortField: sortedColumn,\r\n sortType: sortDirection === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n })\r\n );\r\n\r\n return () => {\r\n dispatch(reset());\r\n };\r\n }, []);\r\n\r\n const [columns, setColumns] = useState<\r\n Record\r\n >({\r\n name: { selector: \"Name\", name: \"Name\", sortable: true, visible: true },\r\n description: { selector: \"Description\", name: \"Description\", sortable: true, visible: true },\r\n organizationType: { selector: \"OrganizationType\", name: \"OrganizationType\", sortable: true, visible: true }\r\n });\r\n\r\n const onChangeDeleteMode = (deleteMode: DeleteMode) => {\r\n dispatch(\r\n onChangeConfirmDialog({\r\n ...confirmDialog,\r\n data: { ...confirmDialog.data, mode: deleteMode },\r\n })\r\n );\r\n };\r\n\r\n const confirm = (organizationIds: string[]): void => {\r\n dispatch(\r\n onChangeConfirmDialog({\r\n open: true,\r\n data: {\r\n mode: DeleteMode.Detach,\r\n organizationIds: organizationIds,\r\n },\r\n })\r\n );\r\n };\r\n\r\n const onConfirm = (mode: DeleteMode) => {\r\n dispatch(\r\n deleteOrganizations({\r\n organizationIds: confirmDialog.data.organizationIds,\r\n mode: mode,\r\n query: keyword,\r\n sortField: sortedColumn,\r\n sortType: sortDirection === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n })\r\n );\r\n dispatch(onChangeConfirmDialog(initialOrganizationState.confirmDialog));\r\n };\r\n\r\n const onCancel = () => {\r\n dispatch(onChangeConfirmDialog(initialOrganizationState.confirmDialog));\r\n };\r\n\r\n const onDeleteSelected = (): void => {\r\n confirm(selectedOrganizations);\r\n };\r\n\r\n const onDelete = (organizationId: string): void => {\r\n confirm([organizationId]);\r\n };\r\n\r\n const onSelectedRowChanged = (row: Organization, checked: boolean): void => {\r\n if (checked) dispatch(selectOrganization(row.primaryKeyId));\r\n else dispatch(deselectOrganization(row.primaryKeyId));\r\n };\r\n\r\n const onToggleAllSelected = (checked: boolean): void => {\r\n if (checked) dispatch(selectAllOrganizations());\r\n else dispatch(deselectAllOrganizations());\r\n };\r\n\r\n const isSelected = (row: Organization): boolean => {\r\n return selectedOrganizations.includes(row.primaryKeyId!);\r\n };\r\n\r\n const handleSearch = (value: string, recordsToRetrieve: number) => debouncedSearch(value, recordsToRetrieve);\r\n const debouncedSearch = useCallback(\r\n debounce((nextValue: string, recordsToRetrieve: number) => onSearch(nextValue, recordsToRetrieve), 1000),\r\n []\r\n );\r\n const onSearch = (value: string, recordsToRetrieve: number): void => {\r\n let keyWord = value.trim();\r\n dispatch(\r\n searchOrganizations({\r\n query: keyWord,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: 0,\r\n recordsToRetrieve: recordsToRetrieve,\r\n })\r\n );\r\n };\r\n\r\n const onSort = (column: string, direction: SortDirection): void => {\r\n dispatch(sort({ column, direction }));\r\n dispatch(\r\n searchOrganizations({\r\n query: keyword,\r\n sortField: column,\r\n sortType: direction === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n })\r\n );\r\n };\r\n\r\n const onChangePage = (startRow: number): void => {\r\n dispatch(\r\n searchOrganizations({\r\n query: keyword,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n })\r\n );\r\n };\r\n\r\n const onChangeRowsPerPage = (rowsPerPage: number): void => {\r\n dispatch(\r\n searchOrganizations({\r\n query: keyword,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: 0,\r\n recordsToRetrieve: rowsPerPage,\r\n })\r\n );\r\n };\r\n\r\n const renderRow = (rowData: Organization): React.ReactElement => {\r\n return (\r\n \r\n onSelectedRowChanged(rowData, e.target.checked)}\r\n />\r\n <>\r\n {columns[\"name\"].visible && (\r\n \r\n {\r\n e.preventDefault();\r\n history.push(\"/Organizations/Edit/\" + rowData.primaryKeyId);\r\n }}\r\n >\r\n {rowData.name}\r\n \r\n \r\n )}\r\n \r\n <>\r\n {columns[\"description\"].visible && (\r\n {rowData.description ?? \"\"}\r\n )}\r\n \r\n <>\r\n {columns[\"organizationType\"].visible && (\r\n {rowData.organizationType ?? \"\"}\r\n )}\r\n \r\n \r\n \r\n history.push(\"/Organizations/Edit/\" + rowData.primaryKeyId)}>\r\n Edit\r\n \r\n onDelete(rowData.primaryKeyId!)}>Delete\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n Organizations\r\n \r\n \r\n \r\n
    \r\n history.push(\"/Organizations/Edit\")}>\r\n Create\r\n \r\n {selectedOrganizations.length > 0 && (\r\n onDeleteSelected()}>\r\n Delete Selected ({selectedOrganizations.length})\r\n \r\n )}\r\n
    \r\n {\r\n handleSearch(value, rowsPerPage);\r\n }}\r\n onSearch={(value: string) => {\r\n handleSearch(value, rowsPerPage);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n onToggleAllSelected(e.target.checked)}\r\n />\r\n \r\n {Object.keys(columns).map((column) => {\r\n if (columns[column].sortable)\r\n return (\r\n columns[column].visible && (\r\n \r\n onSort(columns[column].selector, direction)\r\n }\r\n sortDirection={\r\n sortedColumn === columns[column].selector\r\n ? sortDirection\r\n : SortDirection.Unsorted\r\n }\r\n >\r\n {columns[column].name}\r\n \r\n )\r\n );\r\n return (\r\n columns[column].visible && (\r\n \r\n {columns[column].name}\r\n \r\n )\r\n );\r\n })}\r\n \r\n {\r\n const changedColumn = Object.keys(columns).find(\r\n (column) => columns[column].name === columnName\r\n );\r\n if (changedColumn) {\r\n setColumns({\r\n ...columns,\r\n [changedColumn]: { ...columns[changedColumn], visible: checked },\r\n });\r\n }\r\n }}\r\n />\r\n \r\n \r\n <>\r\n {organizations.length == 0 && (\r\n \r\n \r\n No Organizations found.\r\n \r\n \r\n )}\r\n {organizations.map(renderRow)}\r\n \r\n \r\n \r\n \r\n
    \r\n {\r\n if (e.detail.action === \"confirm\") onConfirm(confirmDialog.data.mode);\r\n else onCancel();\r\n }}\r\n >\r\n \r\n

    \r\n Selected organizations can have related contacts and child organizations. What do you want to\r\n delete?\r\n

    \r\n \r\n onChangeDeleteMode(DeleteMode.Detach)}\r\n >\r\n Delete Organizations Only\r\n \r\n onChangeDeleteMode(DeleteMode.Delete)}\r\n >\r\n Delete Organizations, Child Organizations and Contacts.\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default OrganizationList;\r\n","import React, { Fragment, useCallback, useEffect, useRef } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport {\r\n DataTable,\r\n DataTableBody,\r\n DataTableCell,\r\n DataTableCheckboxCell,\r\n DataTableColumnHeaderCell,\r\n DataTableContent,\r\n DataTableHeaderCheckboxCell,\r\n DataTableHeaderRow,\r\n DataTablePagination,\r\n DataTableRow,\r\n DataTableToolbar,\r\n Dialog,\r\n Search,\r\n SortDirection,\r\n} from \"@episerver/ui-framework\";\r\nimport {\r\n addContactsTitleSelector,\r\n contactListPaginationSelector,\r\n deselectAllContacts,\r\n deselectContact,\r\n isOpenDialogSelector,\r\n keywordSelector,\r\n onChangeDialog,\r\n selectAllContacts,\r\n selectContact,\r\n selectedContactsSelector,\r\n sort,\r\n sortSelector,\r\n changeKeyword,\r\n contactsSelector,\r\n} from \"../reducers/addContactsToOrganizationReducer\";\r\nimport { Contact, ContactsType, ServerSortType } from \"../../ContactManager/model/contact\";\r\nimport { fetchContacts, searchContacts } from \"../../ContactManager/reducers/asyncThunks\";\r\nimport { debounce } from \"lodash-es\";\r\nimport { onAddOrUpdateContact, organizationSelector } from \"../reducers/organizationDetailReducer\";\r\n\r\ninterface AddContactsToOrganizationProps {\r\n organizationId: string;\r\n}\r\n\r\nconst AddContactsToOrganization = (props: AddContactsToOrganizationProps) => {\r\n const dispatch = useAppDispatch();\r\n const contacts = useAppSelector(contactsSelector);\r\n const organization = useAppSelector(organizationSelector);\r\n const { sortDirection, sortedColumn } = useAppSelector(sortSelector);\r\n const sortDirectionRef = useRef(sortDirection);\r\n const sortedColumnRef = useRef(sortedColumn);\r\n const { organizationId } = props;\r\n const { rowsPerPage, startRow, rowsPerPageOptions, totalRowCount } = useAppSelector(contactListPaginationSelector);\r\n const keyword = useAppSelector(keywordSelector);\r\n const selectedContacts = useAppSelector(selectedContactsSelector);\r\n const open = useAppSelector(isOpenDialogSelector);\r\n const title = useAppSelector(addContactsTitleSelector);\r\n\r\n useEffect(() => {\r\n if (keyword) {\r\n dispatch(\r\n searchContacts({\r\n query: keyword,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n fetchContacts({\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n }\r\n }, []);\r\n\r\n const columns: Array<{ selector: string; title: string; sortable: boolean }> = [\r\n { selector: \"FullName\", title: \"Full Name\", sortable: true },\r\n { selector: \"Email\", title: \"Email\", sortable: true },\r\n ];\r\n\r\n const onSelectedRowChanged = (row: Contact, checked: boolean): void => {\r\n if (checked) dispatch(selectContact(row));\r\n else dispatch(deselectContact(row));\r\n };\r\n\r\n const onToggleAllSelected = (checked: boolean): void => {\r\n if (checked) dispatch(selectAllContacts());\r\n else dispatch(deselectAllContacts());\r\n };\r\n\r\n const onSort = (column: string, direction: SortDirection): void => {\r\n dispatch(sort({ column, direction }));\r\n if (keyword) {\r\n dispatch(\r\n searchContacts({\r\n query: keyword,\r\n sortField: column,\r\n sortType: direction === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: 0,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n fetchContacts({\r\n sortField: column,\r\n sortType: direction === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: 0,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n sortDirectionRef.current = sortDirection;\r\n }, [sortDirection]);\r\n\r\n useEffect(() => {\r\n sortedColumnRef.current = sortedColumn;\r\n }, [sortedColumn]);\r\n\r\n const isSelected = (row: Contact): boolean => {\r\n return organization.contacts.find((x) => x.primaryKeyId == row.primaryKeyId) != null;\r\n };\r\n\r\n const handleSearch = (value: string, recordsToRetrieve: number) => debouncedSearch(value, recordsToRetrieve);\r\n const debouncedSearch = useCallback(\r\n debounce((nextValue: string, recordsToRetrieve: number) => onSearch(nextValue, recordsToRetrieve), 1000),\r\n []\r\n );\r\n const onSearch = (value: string, recordsToRetrieve: number): void => {\r\n if (value !== \"\") {\r\n dispatch(\r\n searchContacts({\r\n query: value,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: recordsToRetrieve,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n fetchContacts({\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n }\r\n dispatch(changeKeyword(value));\r\n };\r\n\r\n const onChangePage = (startRow: number): void => {\r\n if (keyword) {\r\n dispatch(\r\n searchContacts({\r\n query: keyword,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n fetchContacts({\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n }\r\n };\r\n\r\n const onChangeRowsPerPage = (rowsPerPage: number): void => {\r\n if (keyword) {\r\n dispatch(\r\n searchContacts({\r\n query: keyword,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n fetchContacts({\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n }\r\n };\r\n\r\n const onSubmit = async (): Promise => {\r\n await dispatch(\r\n onAddOrUpdateContact({\r\n organizationId: organizationId,\r\n contacts: selectedContacts,\r\n })\r\n );\r\n\r\n dispatch(deselectAllContacts());\r\n dispatch(changeKeyword(\"\"));\r\n dispatch(\r\n fetchContacts({\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending ? ServerSortType.Asc : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n dispatch(onChangeDialog({ open: false }));\r\n };\r\n\r\n const renderRow = (rowData: Contact): React.ReactElement => {\r\n return (\r\n \r\n onSelectedRowChanged(rowData, e.target.checked)}\r\n />\r\n {rowData.fullName}\r\n {rowData.email ?? \"\"}\r\n \r\n );\r\n };\r\n\r\n return (\r\n 0}\r\n onInteraction={(evt) => {\r\n if (evt.detail.action === \"confirm\") {\r\n onSubmit();\r\n } else {\r\n dispatch(onChangeDialog({ open: false }));\r\n\r\n if (keyword) {\r\n dispatch(\r\n searchContacts({\r\n query: keyword,\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending\r\n ? ServerSortType.Asc\r\n : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n fetchContacts({\r\n sortField: sortedColumnRef.current,\r\n sortType:\r\n sortDirectionRef.current === SortDirection.Ascending\r\n ? ServerSortType.Asc\r\n : ServerSortType.Desc,\r\n startIndex: startRow,\r\n recordsToRetrieve: rowsPerPage,\r\n type: ContactsType.Contacts\r\n })\r\n );\r\n }\r\n }\r\n }}\r\n >\r\n
    \r\n \r\n \r\n {\r\n handleSearch(value, rowsPerPage);\r\n }}\r\n onSearch={(value: string) => {\r\n handleSearch(value, rowsPerPage);\r\n }}\r\n value={keyword}\r\n />\r\n \r\n \r\n \r\n \r\n {contacts.length > 0 && (\r\n onToggleAllSelected(e.target.checked)}\r\n />\r\n )}\r\n \r\n \r\n {columns.map((column) => {\r\n if (column.sortable)\r\n return (\r\n \r\n onSort(column.selector, direction)\r\n }\r\n sortDirection={\r\n sortedColumn === column.selector\r\n ? sortDirection\r\n : SortDirection.Unsorted\r\n }\r\n >\r\n {column.title}\r\n \r\n );\r\n return (\r\n \r\n {column.title}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {contacts.map((row: Contact) => {\r\n return renderRow(row);\r\n })}\r\n \r\n \r\n onChangePage(startRow)}\r\n onChangeRowsPerPage={(rowsPerPage) => onChangeRowsPerPage(rowsPerPage)}\r\n />\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default AddContactsToOrganization;\r\n","import React, {useEffect} from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport {\r\n DataTable,\r\n DataTableBody,\r\n DataTableCell,\r\n DataTableColumnHeaderCell,\r\n DataTableContent,\r\n DataTableHeaderRow,\r\n DataTablePagination,\r\n DataTableRow,\r\n DataTableToolbar,\r\n TextButton,\r\n} from \"@episerver/ui-framework\";\r\nimport {\r\n contactsInOrganizationPaginationSelector,\r\n onChangeContactPage,\r\n onChangeContactRowPerPage,\r\n} from \"../reducers/contactListInOrganizationReducer\";\r\nimport { Contact, ContactsType, ContactType } from \"../../ContactManager/model/contact\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { onChangeDialog } from \"../reducers/addContactsToOrganizationReducer\";\r\nimport { organizationSelector } from \"../reducers/organizationDetailReducer\";\r\nimport { fetchContactsInOrganization } from \"../reducers/asyncThunks\";\r\n\r\ninterface ContactListInOrganizationProps {\r\n organizationId: string;\r\n}\r\n\r\nconst ContactListInOrganization = (props: ContactListInOrganizationProps) => {\r\n const dispatch = useAppDispatch();\r\n const history = useHistory();\r\n const organization = useSelector(organizationSelector);\r\n const { rowsPerPage, startRow, rowsPerPageOptions, totalRowCount } = useSelector(\r\n contactsInOrganizationPaginationSelector\r\n );\r\n\r\n useEffect(() => {\r\n dispatch(fetchContactsInOrganization(props.organizationId));\r\n }, []);\r\n\r\n const columns: Array<{ selector: string; title: string; sortable: boolean }> = [\r\n { selector: \"FullName\", title: \"Full Name\", sortable: true },\r\n { selector: \"Email\", title: \"Email\", sortable: true },\r\n { selector: \"LastOrderDate\", title: \"Last Order Date\", sortable: true },\r\n { selector: \"CustomerGroup\", title: \"Customer Group\", sortable: true },\r\n ];\r\n\r\n const renderRow = (rowData: Contact): React.ReactElement => {\r\n let pathContactType = ContactType[rowData.customerGroupId] === ContactType[ContactType.AccountAdmin]\r\n ? ContactsType[ContactsType.Users]\r\n : ContactsType[rowData.customerGroupId];\r\n\r\n return (\r\n \r\n \r\n {\r\n e.preventDefault();\r\n history.push({\r\n pathname: `/${pathContactType}/Edit/` + rowData.primaryKeyId,\r\n });\r\n }}\r\n >\r\n {rowData.fullName}\r\n \r\n \r\n {rowData.email ?? \"\"}\r\n \r\n {rowData.lastOrder != null ? new Date(rowData.lastOrder).toLocaleDateString() : \"\"}\r\n \r\n {rowData.customerGroup ?? \"\"}\r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n \r\n dispatch(\r\n onChangeDialog({\r\n open: true,\r\n })\r\n )\r\n }\r\n >\r\n Add\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n {columns.map((column) => {\r\n return (\r\n \r\n {column.title}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {organization.contacts.map((row: Contact, index: number) => {\r\n if (index < startRow || index >= startRow + rowsPerPage) {\r\n return ;\r\n }\r\n return renderRow(row);\r\n })}\r\n \r\n \r\n dispatch(onChangeContactPage(startRow))}\r\n onChangeRowsPerPage={(rowsPerPage) => dispatch(onChangeContactRowPerPage(rowsPerPage))}\r\n />\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ContactListInOrganization;\r\n","import {\r\n GridRow,\r\n GridCell,\r\n TextButton,\r\n Breadcrumb,\r\n List,\r\n ListItem,\r\n Tab,\r\n TabBar,\r\n Typography,\r\n TextField,\r\n ExposedDropdownMenu,\r\n OverflowMenu,\r\n} from \"@episerver/ui-framework\";\r\nimport React, { FunctionComponent, Fragment, useEffect } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport { useHistory, useParams } from \"react-router-dom\";\r\nimport AddressList from \"../../AddressManager/components/AddressList\";\r\nimport { Address, InView } from \"../../AddressManager/model/address\";\r\nimport { EnumData } from \"../../ContactManager/model/contact\";\r\nimport { fetchEnumsByType } from \"../../EnumManager/reducers/asyncThunks\";\r\nimport { enumFormTitle, initialEnumFormState, onOpenDialog } from \"../../EnumManager/reducers/enumFormReducer\";\r\nimport { onChangeTotalCount } from \"../reducers/childOrganizationListReducer\";\r\nimport { enumType } from \"../../EnumManager/reducers/enumManagerReducer\";\r\nimport { Organization, OrganizationTab } from \"../model/organization\";\r\nimport { fetchOrganizationById, updateOrganization } from \"../reducers/asyncThunks\";\r\nimport {\r\n changeTitle,\r\n setParentId,\r\n organizationCustomerGroupsSelector,\r\n titleSelector,\r\n organizationSelector,\r\n businessCategoriesSelector,\r\n organizationTypesSelector,\r\n organizationTitle,\r\n breadcrumbItemsSelector,\r\n updateBreadcrumb,\r\n activeTabSelector,\r\n changeActiveTab,\r\n updateOrganizationId,\r\n onChangeProperty,\r\n errorSelector,\r\n onAddOrUpdateChildren,\r\n reset as resetData,\r\n} from \"../reducers/organizationDetailReducer\";\r\nimport AddChildOrganizations from \"./AddChildOrganizations\";\r\nimport AddContactsToOrganization from \"./AddContactsToOrganization\";\r\nimport AddParentOrganization from \"./AddParentOrganization\";\r\nimport ChildOrganizationList from \"./ChildOrganizationList\";\r\nimport ContactListInOrganization from \"./ContactListInOrganization\";\r\nimport { useState } from \"react\";\r\nimport { unwrapResult } from \"@reduxjs/toolkit\";\r\nimport { Snackbar, SnackbarAction } from \"@rmwc/snackbar\";\r\nimport { errorSelector as addChildErrorSeletor, clearAddChildError } from \"../reducers/addChildOrganizationsReducer\";\r\nimport { Controller, useForm } from \"react-hook-form\";\r\nimport ExtendedProperty from \"../../ExtendedProperty/ExtendedProperty\";\r\nimport { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\n\r\nexport const limitString = (val: string, num: number) => {\r\n if (val && val.length > num) {\r\n return val.substring(0, num) + \"...\";\r\n } else {\r\n return val;\r\n }\r\n};\r\n\r\nconst OrganizationDetail: React.FC = () => {\r\n const dispatch = useAppDispatch();\r\n const history = useHistory();\r\n const { organizationId } = useParams<{ organizationId: string }>();\r\n const title = useAppSelector(titleSelector);\r\n const initialOrganization = useAppSelector(organizationSelector);\r\n const organizationTypes = useAppSelector(organizationTypesSelector);\r\n const organizationCustomerGroups = useAppSelector(organizationCustomerGroupsSelector);\r\n const businessCategories = useAppSelector(businessCategoriesSelector);\r\n const breadcrumbItems = useAppSelector(breadcrumbItemsSelector);\r\n const activeTab = useAppSelector(activeTabSelector);\r\n const [errorOpen, setErrorOpen] = useState(false);\r\n const error = useAppSelector(errorSelector);\r\n const addChildError = useAppSelector(addChildErrorSeletor);\r\n\r\n const {\r\n control,\r\n handleSubmit,\r\n watch,\r\n setValue,\r\n setError,\r\n clearErrors,\r\n trigger,\r\n reset,\r\n formState: { errors }, \r\n } = useForm({\r\n mode: \"onChange\",\r\n defaultValues: initialOrganization,\r\n });\r\n\r\n const values = watch();\r\n\r\n useEffect(() => {\r\n reset(initialOrganization);\r\n }, [initialOrganization]);\r\n\r\n const initComponent = async () => {\r\n dispatch(changeActiveTab(0));\r\n dispatch(fetchEnumsByType(enumType.OrganizationType));\r\n dispatch(fetchEnumsByType(enumType.ContactGroup));\r\n dispatch(fetchEnumsByType(enumType.BusinessCategory));\r\n dispatch(updateOrganizationId(organizationId));\r\n await dispatch(fetchOrganizationById(organizationId));\r\n if (organizationId) {\r\n dispatch(changeActiveTab(0));\r\n dispatch(changeTitle(organizationTitle.Edit));\r\n } else {\r\n dispatch(changeTitle(organizationTitle.Add));\r\n }\r\n };\r\n\r\n const onSubmit = async (organization: Organization) => {\r\n await dispatch(\r\n updateOrganization({\r\n ...organization,\r\n primaryKeyId: organizationId ? organization.primaryKeyId : null,\r\n businessCategoryId: organization.businessCategoryId === \"0\" ? null : organization.businessCategoryId,\r\n organizationCustomerGroupId:\r\n organization.organizationCustomerGroupId === \"0\" ? null : organization.organizationCustomerGroupId,\r\n organizationTypeId: organization.organizationTypeId === \"0\" ? null : organization.organizationTypeId,\r\n parentId: organization.parentId === \"\" ? null : organization.parentId,\r\n extendedProperties:\r\n organization.extendedProperties?.map((prop: Property) => ({\r\n name: prop.name,\r\n value: prop.value,\r\n })) ?? [],\r\n addresses: organization.addresses?.map((address: Address) => {\r\n return {\r\n ...address,\r\n extendedProperties:\r\n address.extendedProperties?.map((prop: Property) => ({\r\n name: prop.name,\r\n value: prop.value,\r\n })) ?? [],\r\n };\r\n }),\r\n children: organization.children.map(c => c.primaryKeyId)\r\n })\r\n )\r\n .then(unwrapResult)\r\n .then(() => {\r\n history.push(\"/Organizations\");\r\n })\r\n .catch(() => {\r\n setErrorOpen(true);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n initComponent();\r\n }, [organizationId]);\r\n\r\n useEffect(() => {\r\n dispatch(\r\n updateBreadcrumb({\r\n level: 2,\r\n active: true,\r\n title: initialOrganization.name,\r\n link: \"\",\r\n })\r\n );\r\n }, [initialOrganization.name]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n dispatch(onChangeProperty(values));\r\n dispatch(resetData());\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n dispatch(onChangeProperty(values));\r\n }, [activeTab != OrganizationTab.Details]);\r\n\r\n const renderDetails = (): React.ReactNode => {\r\n return (\r\n {\r\n e.preventDefault();\r\n }}\r\n >\r\n \r\n \r\n
    \r\n (\r\n \r\n )}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n (\r\n \r\n )}\r\n />\r\n
    \r\n
    \r\n \r\n {values.extendedProperties?.map((property: Property, index: number) => {\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n })}\r\n
    \r\n
    \r\n \r\n );\r\n };\r\n\r\n const renderAddresses = (): React.ReactNode => {\r\n return ;\r\n };\r\n\r\n const renderContacts = (): React.ReactNode => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const renderOrganizations = (): React.ReactNode => {\r\n return (\r\n \r\n {\r\n if (children?.length ?? 0 > 0) {\r\n dispatch(onAddOrUpdateChildren({\r\n parentOrganizationId: organizationId,\r\n children: children,\r\n }));\r\n dispatch(onChangeTotalCount(initialOrganization.children.length + children.length));\r\n }\r\n }} />\r\n \r\n {errorOpen && \r\n {addChildError}\r\n \r\n }\r\n timeout={-1}\r\n dismissesOnAction\r\n onClose={() => {\r\n dispatch(clearAddChildError());\r\n }}\r\n action={[]}\r\n >}\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n {!organizationId && (\r\n \r\n {title}\r\n
    \r\n
    \r\n )}\r\n {organizationId && (\r\n \r\n \r\n

    \r\n {\r\n dispatch(changeActiveTab(e.detail.index));\r\n }}\r\n >\r\n Details\r\n Contacts\r\n \r\n
    \r\n )}\r\n
    \r\n {
    \r\n {renderDetails()}\r\n
    }\r\n {organizationId && activeTab === OrganizationTab.Contacts && renderContacts()}\r\n
    \r\n
    \r\n history.push(\"/Organizations\")}>Cancel\r\n handleSubmit(onSubmit)()}>\r\n Save\r\n \r\n
    \r\n {errorOpen && \r\n {error}\r\n \r\n }\r\n timeout={-1}\r\n dismissesOnAction\r\n onClose={() => {\r\n setErrorOpen(false);\r\n }}\r\n action={[]}\r\n >}\r\n
    \r\n );\r\n};\r\n\r\nexport default OrganizationDetail;\r\n","import { Checkbox, Dialog, GridRow, GridCell, TextField, Typography } from \"@episerver/ui-framework\";\r\nimport React, { useEffect } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../hooks\";\r\nimport { Address, AddressType, InView } from \"../model/address\";\r\nimport { formSelector, initialAddressFormState, onOpenDialog } from \"../reducers/addressFormReducer\";\r\nimport { fetchAddressById } from \"../reducers/asyncThunks\";\r\nimport { onAddOrUpdateContactAddress } from \"../../ContactManager/reducers/contactDetailReducer\";\r\nimport { onAddOrUpdateOrganizationAddress } from \"../../OrganizationManager/reducers/organizationDetailReducer\";\r\nimport { Controller, useForm } from \"react-hook-form\";\r\nimport { Property } from \"../../../businessFoundation/MetaClassData/MetaClassDataList/MetaClassDataModel\";\r\nimport ExtendedProperty from \"../../ExtendedProperty/ExtendedProperty\";\r\n\r\ninterface AddressProps {\r\n inView?: InView;\r\n}\r\n\r\nconst AddressForm = (props: AddressProps) => {\r\n const dispatch = useAppDispatch();\r\n const { inView = InView.None } = props;\r\n const form = useAppSelector(formSelector);\r\n const { address: initialAddress } = form;\r\n\r\n const initComponent = async () => {\r\n if (!initialAddress.isFetched) {\r\n dispatch(fetchAddressById(initialAddress.primaryKeyId ?? \"\"));\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (form.open) {\r\n initComponent();\r\n }\r\n }, [initialAddress.primaryKeyId, form.open]);\r\n\r\n const {\r\n control,\r\n handleSubmit,\r\n watch,\r\n setValue,\r\n setError,\r\n clearErrors,\r\n trigger,\r\n reset,\r\n formState: { errors, isValid, isDirty },\r\n } = useForm
    ({\r\n reValidateMode: \"onChange\",\r\n mode: \"onChange\",\r\n defaultValues: initialAddress,\r\n });\r\n\r\n const values = watch();\r\n\r\n useEffect(() => {\r\n reset(initialAddress);\r\n }, [initialAddress]);\r\n\r\n const onSubmit = async (address: Address) => {\r\n if (inView == InView.Contact) {\r\n dispatch(onAddOrUpdateContactAddress(address));\r\n } else if (inView == InView.Organization) {\r\n dispatch(onAddOrUpdateOrganizationAddress(address));\r\n }\r\n dispatch(onOpenDialog(initialAddressFormState));\r\n };\r\n\r\n const onChangeCheckbox = (e: any) => {\r\n e.persist();\r\n let { name, checked, value } = e.target;\r\n if (checked) {\r\n setValue(name, [...values.addressType, Number(value)], { shouldValidate: true });\r\n } else {\r\n setValue(\r\n name,\r\n values.addressType.filter((a: any) => a != Number(value)),\r\n { shouldValidate: true }\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n if (e.detail.action === \"confirm\") {\r\n handleSubmit(onSubmit)();\r\n } else {\r\n dispatch(onOpenDialog(initialAddressFormState));\r\n }\r\n }}\r\n >\r\n {\r\n e.preventDefault();\r\n }}\r\n >\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n <>\r\n {values.extendedProperties?.map((property: Property, index: number) => {\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n })}\r\n \r\n
    \r\n \r\n
    \r\n Type (*)\r\n (v && v.length > 0) || \"You have to choose at least one type\",\r\n },\r\n }}\r\n render={({}) => (\r\n <>\r\n
    \r\n = 0}\r\n onChange={(e: any) => {\r\n onChangeCheckbox(e);\r\n }}\r\n >\r\n Public\r\n \r\n = 0}\r\n value={AddressType.Shipping}\r\n onChange={(e: any) => {\r\n onChangeCheckbox(e);\r\n }}\r\n >\r\n Shipping\r\n \r\n = 0}\r\n value={AddressType.Billing}\r\n onChange={(e: any) => {\r\n onChangeCheckbox(e);\r\n }}\r\n >\r\n Billing\r\n \r\n
    \r\n
    \r\n {errors.addressType?.message}\r\n
    \r\n \r\n )}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddressForm;\r\n","import \"./main.scss\";\r\nimport React, { FunctionComponent } from \"react\";\r\nimport { Provider } from \"react-redux\";\r\nimport store from \"./store\";\r\nimport { ContentArea, Workspace } from \"@episerver/ui-framework\";\r\nimport { Switch, Route, HashRouter as Router, Redirect } from \"react-router-dom\";\r\nimport ContactDetail from \"./ContactManager/components/ContactDetail\";\r\nimport ContactList from \"./ContactManager/components/ContactList\";\r\nimport {ContactsType, ContactType} from \"./ContactManager/model/contact\"\r\nimport EnumForm from \"./EnumManager/components/EnumForm\";\r\nimport EnumList from \"./EnumManager/components/EnumList\";\r\nimport OrganizationList from \"./OrganizationManager/components/OrganizationList\";\r\nimport OrganizationDetail from \"./OrganizationManager/components/OrganizationDetail\";\r\nimport AddressForm from \"./AddressManager/components/AddressForm\";\r\nimport { InView } from \"./AddressManager/model/address\";\r\nimport \"./global.scss\";\r\nimport \"../businessFoundation/axiom/dist/styles.scss\";\r\n\r\n\r\nexport enum CustomersType {\r\n Users, \r\n Accounts,\r\n Contacts,\r\n Organizations\r\n}\r\n\r\nfunction getCustomersApp(type: CustomersType) {\r\n const CustomersApp: FunctionComponent = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n return CustomersApp;\r\n} \r\n\r\n\r\nexport const Contacts = getCustomersApp(CustomersType.Contacts);\r\nexport const Organizations = getCustomersApp(CustomersType.Organizations);\r\nexport const Users = getCustomersApp(CustomersType.Users);\r\nexport const Accounts = getCustomersApp(CustomersType.Accounts);\r\n"],"sourceRoot":""}