{"version":3,"sources":["webpack:///src/modules/product-specification/components/product-specification-table-stucture.tsx?4b07","webpack:///src/modules/password-reset/password-reset.tsx?2fc7","webpack:///src/modules/fabrikam/views/reviews-list.view.tsx?39a2","webpack:///src/modules/password-reset/components/password-reset-error.tsx?5bd3","webpack:///src/modules/order-lookup/order-lookup.view.tsx?d1dd","webpack:///src/modules/product-specification/product-specification.tsx?f393","webpack:///./src/modules/advanced-notes/advanced-notes.tsx?0cd5","webpack:///src/modules/password-reset/password-reset.view.tsx?f872","webpack:///./src/themes/gardner-theme-b2c/views/cart.view.tsx?c8a4","webpack:///src/modules/adventureworks/views/order-history.view.tsx?16f3","webpack:///src/modules/adventureworks/views/checkout-customer-account-payment.view.tsx?fdf3","webpack:///src/modules/tile-list/tile-list.tsx?f539","webpack:///src/modules/product-specification/product-specification.view.tsx?bfbe","webpack:///src/modules/order-lookup/utilities/order-lookup-utility.tsx?9369","webpack:///src/modules/order-lookup/components/order-lookup-additional-fields.tsx?7c69","webpack:///src/modules/order-lookup/components/order-lookup-fields.tsx?c99c","webpack:///src/modules/order-lookup/order-lookup.tsx?a81e","webpack:///src/modules/password-reset/components/password-reset-loading-message.tsx?a735","webpack:///./src/modules/advanced-notes/advanced-notes.view.tsx?f5d4","webpack:///./src/themes/gardner-theme/views/cart.view.tsx?3fe6","webpack:///./src/themes/gardner-theme/views/footer-item.view.tsx?7453","webpack:///src/modules/tile-list/tile-list.view.tsx?d2bd","webpack:///src/index.ts?c6ae","webpack:///./src/themes/gardner-theme-b2c/views/checkout-shipping-address.view.tsx?909d","webpack:///src/modules/adventureworks/views/b2b-requests-status.view.tsx?b8db","webpack:///src/modules/fabrikam/views/order-history.view.tsx?46de","webpack:///src/modules/adventureworks/views/components/search.categorysuggest.tsx?5c98","webpack:///src/modules/adventureworks/views/components/search.mobile.empty.tsx?16ff","webpack:///src/modules/adventureworks/views/components/search.form.tsx?f934","webpack:///src/modules/adventureworks/views/components/search.keywordsuggest.tsx?34ae","webpack:///src/modules/adventureworks/views/components/search.productsuggest.tsx?1992","webpack:///src/modules/adventureworks/views/search.view.tsx?4e21","webpack:///./src/themes/gardner-theme/views/components/line-pagination.tsx?b2dd","webpack:///src/modules/check-in-for-pickup/check-in-confirmation.tsx?9d47","webpack:///src/modules/check-in-for-pickup/check-in-error.tsx?9f7f","webpack:///src/modules/check-in-for-pickup/check-in-for-pickup.tsx?404b","webpack:///src/modules/password-reset/components/password-reset-input.tsx?7f32","webpack:///./src/themes/gardner-theme-b2c/views/footer-item.view.tsx?3f11","webpack:///src/modules/adventureworks/views/sign-in.view.tsx?94bb","webpack:///src/modules/password-reset/components/password-reset-button.tsx?7c39","webpack:///src/modules/check-in-for-pickup/check-in-for-pickup.view.tsx?26b3","webpack:///./src/themes/gardner-theme/views/checkout-shipping-address.view.tsx?2ec0","webpack:///src/modules/password-reset/components/password-reset-label.tsx?2eed","webpack:///src/modules/password-reset/components/password-reset-loading-icon.tsx?29cc"],"names":["ProductSpecificationTableRow","_ref","productName","cellData","className","React","scope","dangerouslySetInnerHTML","getRichTextHtml","PasswordReset","constructor","props","super","moduleClassName","handleHeadingChange","event","this","config","heading","text","target","value","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","window","isInitialized","map","obj","ID","toLowerCase","newPasswordRegex","PAT","reenterPasswordRegex","resources","message","verifying_blurb","loadingMessage","Object","assign","PasswordRegex","defaultRegex","source","telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","componentDidMount","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","state","data","render","viewProps","_objectSpread","viewState","isShowLoading","passwordReset","moduleProps","classnames","loading","modal","tag","Modal","isOpen","modalBody","ModalBody","icon","PasswordResetLoadingIconComponent","PasswordResetLoadingMessageComponent","defaultAADConainer","id","style","display","aadConainer","Msdyn365","editProps","onEdit","requestContext","passwordResetLocalAccount","_renderLocalAccount","renderView","localAccount","items","_renderInput","newPasswordLabelText","confirmPasswordLabelText","errorMessage","PasswordResetErrorComponent","key","passwordEntryMismatchError","requiredFieldMissingError","fieldIncorrectError","buttonsWrapper","buttons","PasswordResetButtonComponent","ariaLabel","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","type","labelText","pattern","wrapper","label","PasswordResetLabelComponent","forId","input","PasswordResetInputComponent","__decorate","observable","observer","buildReviewCard","Node","cardProps","headerProps","rating","name","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","Module","modalHeader","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","error","modalFooter","submitButton","cancelButton","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","ReviewsListview","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","length","isFilterApplied","review","PasswordResetError","errorClassName","role","OrderLookupViewComponent","_orderLookupForm$clas","_submitButton$classNa","orderLookup","orderLookupContainer","orderLookupAdditionalFieldContainer","paragraph","orderLookupForm","renderOrderLookupInputField","orderNumberInput","additionalProperties","registeredUserMessage","fieldErrorMessage","ArrayExtensions","hasElements","item","submitButtonLabelText","ProductSpecification","_toggle","drawerListId","setState","isDrawerOpen","undefined","isAdditionalMediaDrawerOpen","catalogId","validateCatalogId","reaction","product","result","RecordId","actionInput","AttributesForSelectedVariantInput","actionContext","apiSettings","channelId","getAttributesForSelectedVariant","catch","debug","_heading$tag","productSpecificationData","isAccrodion","displayStyle","handleText","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","title","productSpecificationResult","_createDrawerBody","_createTableBody","content","_this$props$context$r","_this$props$data$addi","tableRows","index","_renderProductCell","Name","app","OmniChannelMedia","additionalMediaLocations","push","_createAdditionalMediaDrawer","_this$props$context$r2","_this$props$data$addi2","accordionItemContainer","drawers","_product$Name","Drawer","collapseProps","timeout","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","additionalDownloadsText","prevState","mediaLocation","Uri","href","download","AltText","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","BooleanValue","trueValueText","falseValueText","AdvancedNotes","_className","_renderNote","_renderNotes","notes","note","ItemId","_renderStaticNotesDisplay","isNoteAreaActive","staticDisplay","children","advancedNotesModuleProps","PasswordResetItem","PasswordResetLoading","_ref3","PasswordResetView","_ref2","button","LocalAccount","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLineComment","cartLineComment","comment","cartLineId","cartProductTitle","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","_cartLine$data3","_cartLine$data4","cartline","Comment","cartLineProductTitle","outOfStockErrorMessage","cartlineId","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","puckUpinStoreAttribute","getTelemetryAttributes","Button","onClick","addToOrderTemplate","renderCartlinesInternal","isPrintView","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","slots","orderLevelComment","multiplePickUpEnabled","CartlinesWrapper","renderOrderLevelComment","emptyCart","renderCartLinesGroupHeader","count","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","groupTitle","replace","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","deliveryOption","CartView","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","setIsPrintView","printViewToggle","_renderPrintView","handlePrintViewChange","printViewLabel","updatedTitle","cartTitle","Number","cart","totalItemsInCart","renderModuleAttributes","orderSummaryLineitems","orderTotal","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","channel","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","subtotal","shipping","otherCharge","tax","errorData","OrderSummaryErrors","errors","Wrapper","_props$cart","promoCode","createTemplateFromCartButton","renderOrderSummaryCheckout","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","_ref4","groupsProps","groups","group","OrderHistoryHeader","_ref5","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","placedBy","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","OrderHistoryView","_ref8","orderHistoryProps","alert","emptyMessage","backToShoppingLink","list","table","moreButton","SummaryForm","formProps","addPaymentButton","appliedLine","bottomBorder","paymentAmountInput","EditForm","inputLabel","inputAmount","customerName","customerAccountNumber","customerSince","accountCredit","accountDetails","CheckoutCustomerAccountView","checkoutCustomerAccount","checkoutErrorRef","summaryView","editView","moduleState","ref","isReady","TileList","_telemetryContent","StringExtensions","isNullOrWhitespace","Heading","headingTag","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","_createHeading","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","ProductSpecificationView","rowdata","filter","row","ObjectExtensions","isNullOrUndefined","labelGroup","renderErrorLabel","responseErrorMessage","errorMessageClassName","renderRegisteredUserMessage","signInUrl","signInLinkClassName","registeredUserClassName","orderLookupRegisteredUserText","orderLookupViewAccountText","orderLookupSignInLinkText","infoMessage","signInText","renderFieldErrors","orderLookupFieldValidationErrorMessage","RenderOrderLookupAdditionalFieldInput","_getOrderLookupAdditionalFields","additionalFieldLabel","additionalFieldError","additionalFieldInput","additionalFieldLabelClassName","inputType","onChange","isValidAdditionalFieldName","additionalFieldValidationMessage","RenderOrderLookupFormFields","_getOrderLookupFields","orderLookupLabelClassName","orderLookupLabel","inputReference","fieldErrorClassName","isInputTypeError","renderAlert","isValidInputField","OrderLookupSearchValues","OrderLookup","isEmailValue","isOrderNumberValue","orderLookupExtensibleEnum","handleTextChange","handleParagraphChange","handleSubmit","orderNumber","email","orderLookupValue","orderStatusLookUpParametersType","orderLookupName","_validateOrderLookupForm","_Msdyn365$getUrlSync","actionContextValue","orderDetailsPath","baseUrl","URL","location","origin","redirectUrl","searchParameters","searchParams","set","fieldName","toLocaleLowerCase","fieldValue","toString","_this$orderNumberInpu","_this$emailInputRef$c","orderNumberInputRef","current","emailInputRef","additionalPropertyStates","isAdditionalFieldError","isKeyExistInAdditionalFieldArray","labelName","isValidFieldName","additionalfieldErrorMessage","ordernumber","isOrdNumberError","isReqError","isEmailError","isValidEmailError","isValidLookupField","isValidAdditionalLookupField","isDisabled","_renderAlert","orderLookupEmailValidationErrorMessage","orderLookupRequiredTextErrorMessage","requiredErrorMessage","isNullOrEmpty","emailValidationErrorMessage","isRequireError","isEmailValidError","isValidEmailInput","_renderOrderNumberAlert","orderLookupOrderNumberValidationErrorMessage","_renderOrderLookupInput","orderLookupEmailLabel","orderLookupEmailAriaLabel","_additionalFieldValidation","isFieldValid","RegExp","test","isValid","isDisable","trim","EmailRegex","isEmailValid","orderLookupSearchAdditionalFields","_item$labelName","_item$ariaLabel","_item$validationMessa","validationMessage","_context$request$user","orderLookupDefaultHeadingText","orderLookupButtonLabel","orderLookupFormAriaLabel","orderLookupOrderNumberLabel","orderLookupOrderNumberAriaLabel","orderLookupSubmitAriaLabel","headingText","orderLookupHeading","_createParagraph","autoComplete","onSubmit","disabled","user","submit","_renderAdditionalFields","_getExtensibleEnumera","_getExtensibleEnumera2","isOrderLookupAdditionalFieldValid","isOrderLookupFieldValid","getExtensibleEnumerations","StoreOperationsDataActions","getExtensibleEnumerationsAsync","callerContext","find","TypeName","ExtensibleEnumerations","orderLookupAdditionalParameter","validateOrderLookupField","orderStatusLookUpParameter","isValidField","validateOrderLookupAdditionalField","orderStatusLookUpAdditionalParameters","isValidAdditionalField","_item$fieldKey","fieldKey","validateAdditionalFieldWithProxy","some","setLookupFieldState","additionalFieldsInput","PasswordResetLoadingMessage","advancedNotes","_cartLine$data5","itemId","renderAdvancedNotes","n","pagination","paginatedView","_props$cart6","setAdvancedNotes","pageLength","setPaginatedView","slice","paginationPage","setPaginationPage","clearCartModalActive","setClearCartModalActive","changePage","page","skip","_props$cartlines","async","itemIds","CartLines","cl","getAdvancedNotesAsync","then","getAdvancedNotes","renderClearCart","_renderClearCart","clearCartButtonText","LinePagination","nextPage","prevPage","currentPage","numPages","Math","ceil","prev","paginationPrev","next","paginationNext","checkoutAsSignInUserButton","_renderClearCartModal","handleClearCart","toggle","ModalHeader","clearCartHeader","clearConfirmBody","ModalFooter","clearCancelButtonText","ids","cartLineIds","Array","c","removeCartLines","refreshCart","FooterItemView","FooterItem","_renderElement","HeadingContainer","Link","linkText","image","EditableLink","tileListView","createElement","tileItem","keyIndex","AddressShow","AddressDetail","description","AddressSelect","SelectAddress","addButton","isShowSaveButton","saveButton","isShowCancelButton","SelectItem","showItems","AddressAddUpdate","AddressForm","hasError","shipUsaOnlyMessageText","renderDeliveryLimitationMessage","AddressItem","AddressError","CheckoutShippingAddressView","CheckoutShippingAddress","showAddress","showAddressSelect","showAddOrUpdateAddress","cartLineImages","isShowAddress","isShowAddresList","isShowAddOrUpdateAddress","B2bRequestsStatusView","_props$data$operation","b2bRequestsStatus","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","getUrlSync","renderCategorySuggestionsTitle","inCategoriesHeading","categoryAutoSuggestionHeading","CategorySuggestionsComponent","noResultText","isLoadingAutoSuggest","isLoadingNode","autosuggestCategory","CategorySuggest","UlCategory","MobileAutoSuggestEmptyComponent","noSearchResultImage","src","Image","altText","gridSettings","imageSettings","lazyload","viewports","xs","w","h","q","renderProductNotFoundResultsImage","emptyMobileSearchTextHeading","emptyMobileSearchText","FormComponent","searchForm","formWrapper","isMobile","clearSearchButtonText","isSearchText","clearSearch","cancelButtonNode","cancelBtnAriaLabel","cancelBtn","renderClearButton","submitBtn","renderKeywordSuggestionsTitle","keywordsHeading","KeywordSuggestionsComponent","keywordSuggest","ulKeyword","keywordSuggestions","renderProductSuggestionsTitle","productSuggestionsHeading","productAutoSuggestionHeading","renderProductNotFoundResults","noResultContentHeadingText","noResultContentParagraphText","ProductSuggestionsComponent","productSuggest","ulProduct","productSuggestions","productSuggestionHeading","_item$id","LiProduct","AProduct","thumbnail","price","renderTitle","searchSuggestionHeading","searchText","searchTextString","concat","searchAutoSuggestionHeading","format","SearchView","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","UlKeyword","UlProduct","autosuggestKeyword","autosuggestProduct","SearchForm","FormWrapper","handleCancelSearchFocused","categorySuggestionHeading","setSearchTextString","useState","isMobilePort","setIsMobile","useEffect","propsFormInput","propsFormInputCurrent","action","isMobileViewport","useCallback","isMobileView","variant","VariantType","Browser","addEventListener","viewport","Fragment","onBlur","isSearchFormExpanded","CheckInConfirmationComponent","confirmationText","shouldShowQrCode","channelReferenceIdLabel","QRCode","size","CheckInErrorComponent","CheckInForPickup","checkInForOrderPickup","parseInt","query","packingSlipId","additionalInformationToSubmit","additionalInformationList","additionalInformationKeyValuePair","_additionalInformatio","formKey","resourceId","extensionPropertyList","additionalInformation","Key","Value","StringValue","SalesOrdersDataActions","checkInForOrderPickupAsync","queryResultSettings","headerErrorMessage","genericErrorMessage","isCheckedIn","Promise","resolve","_this$props$context$r3","_this$props$context$r4","isNaN","params","isEditor","isPreview","requiredParameterMissingErrorMessage","additionalInformationKeys","_this$props$context$r5","isHeaderError","headerError","confirmationComponent","defaultConfirmationText","confirmationIdLabel","additionalInformationValues","additionalInformationHeading","GetMaxLength","maxLength","parsedMaxLength","PasswordResetInput","SignInLoading","SignInButton","attributes","SignInView","signIn","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signInB2BAccount","signUpDescription","forgetPassword","disclaimer","signInButton","socialAccounts","SocialAccount","b2bSignUpButtonAriaLabel","b2bSignUpButtonText","signUpButton","B2BAccount","PasswordResetButton","CheckInViewComponent","_props$config$additio","FormBuilder","additionalInformationDefaultHeading","submitButtonText","additionalInformationSubmitButtonText","keys","requiredValueMissingErrorMessage","_props$data$checkout$","checkout","shippingAddress","nonEligibleItems","setnonEligibleItems","checkEligibilityForShippingAddress","setHasError","_props$data$checkout$2","notEligibleList","checkoutCart","_cart$CartLines","addressCountry","ThreeLetterISORegionName","addressState","State","addressRegion","County","GetProductEligibilityInput","Id","eligibilityData","GetProductEligibilityAction","forEach","i","_getExtensionPropertyValueByKey","properties","valueType","_properties$find","property","p","ExtensionProperties","CommercePropertyValueEnum","string","IsEligible","removeIneligibleItems","cartState","checkoutState","badCartLines","includes","reload","getCartLineFromItemId","_props$data$checkout$3","Description","PasswordResetLabel","htmlFor","PasswordResetLoadingIcon"],"mappings":"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","file":"static/js/12.5d40fbf95f87e665b474.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\n \n \n {/* eslint-disable-next-line react/no-danger */}\n \n \n {cellData}\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { PasswordRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport PasswordResetButtonComponent from './components/password-reset-button';\nimport PasswordResetErrorComponent from './components/password-reset-error';\nimport PasswordResetInputComponent from './components/password-reset-input';\nimport PasswordResetLabelComponent from './components/password-reset-label';\nimport PasswordResetLoadingIconComponent from './components/password-reset-loading-icon';\nimport PasswordResetLoadingMessageComponent from './components/password-reset-loading-message';\nimport { IPasswordResetConfig, IPasswordResetProps } from './password-reset.props.autogenerated';\n\nexport interface IPasswordResetViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetLocalAccount {\n localAccount: INodeProps;\n items: IPasswordResetItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetViewProps {\n className: string;\n viewState: IPasswordResetViewState;\n loading: IPasswordResetLoading;\n passwordReset: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetLocalAccount: IPasswordResetLocalAccount;\n}\n\n/**\n *\n * PasswordReset component.\n * @extends {React.Component>}\n */\n@observer\nclass PasswordReset extends React.Component> {\n private readonly moduleClassName: string = 'ms-password-reset';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable private newPasswordRegex: string;\n\n @observable private reenterPasswordRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IPasswordResetProps) {\n super(props);\n\n this.newPasswordRegex = PasswordRegex.defaultRegex.source;\n this.reenterPasswordRegex = PasswordRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: IPasswordResetProps, nextState: IPasswordResetViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n passwordReset: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && (\n \n ),\n passwordResetLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PAT: string }) => {\n switch (obj.ID.toLowerCase()) {\n case 'newpassword': {\n this.newPasswordRegex = obj.PAT;\n break;\n }\n case 'reenterpassword': {\n this.reenterPasswordRegex = obj.PAT;\n break;\n }\n default:\n }\n });\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IPasswordResetLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('newPassword', 'password', resources.newPasswordLabelText, this.newPasswordRegex),\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, this.reenterPasswordRegex)\n ],\n errorMessage: [\n ,\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n }\n\n private _renderInput(id: string, type: string, labelText: string, pattern?: string): IPasswordResetItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default PasswordReset;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {averageRating}\n {reviewCount}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n {props.date}\n \n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\nexport default ReviewsListview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IPasswordResetErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default PasswordResetError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderLookupViewProps } from './order-lookup';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns JSX Element.\n */\nexport const OrderLookupViewComponent: React.FC = props => {\n const {\n orderLookup,\n orderLookupContainer,\n orderLookupAdditionalFieldContainer,\n heading,\n paragraph,\n orderLookupForm,\n renderOrderLookupInputField,\n orderNumberInput,\n errorMessage,\n submitButton,\n additionalProperties,\n registeredUserMessage,\n fieldErrorMessage\n } = props;\n return (\n \n \n {heading}\n {paragraph}\n \n {orderNumberInput}\n {renderOrderLookupInputField}\n {ArrayExtensions.hasElements(additionalProperties) && (\n \n {additionalProperties.map((item: JSX.Element) => (\n {item}\n ))}\n \n )}\n {fieldErrorMessage}\n \n {props.submitButtonLabelText}\n \n {errorMessage}\n \n {registeredUserMessage}\n \n \n );\n};\n\nexport default OrderLookupViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '../..';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n\n/**\n * Maintain Drawer State.\n */\nexport interface IProductSpecificationState {\n isDrawerOpen: boolean;\n isAdditionalMediaDrawerOpen: boolean;\n drawerListId: number | undefined;\n}\n\n/**\n * Product specification view props.\n */\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n\n title?: React.ReactNode;\n isAccrodion?: boolean;\n handleText?(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * Check for display style either accordion or table.\n */\nexport interface IProductSpecificationExtentedProps extends IProductSpecificationProps {\n displayStyle?: displayStyle;\n}\n\n/**\n *\n * ProductSpecification component.\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component {\n public constructor(props: IProductSpecificationExtentedProps) {\n super(props);\n this.state = {\n isDrawerOpen: false,\n isAdditionalMediaDrawerOpen: false,\n drawerListId: undefined\n };\n }\n\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result,\n catalogId\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\n telemetry.error(error.message);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error.message);\n });\n }\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n productSpecificationResult:\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data))\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle Heading Text Change.\n * @param event - Current event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const tableRows = content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n <>\n \n \n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n tableRows.push(this._createAdditionalMediaDrawer());\n }\n\n return tableRows;\n }\n\n private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n const drawers = content.productSpecificationData.result!.map(product => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n if (!cellData) {\n return null;\n }\n return (\n \n \n
{cellData}
\n \n
\n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n drawers.push(this._createAdditionalMediaDrawer());\n }\n\n return drawers;\n }\n private _createAdditionalMediaDrawer(): JSX.Element {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n return (\n \n {\n this.setState(prevState => ({\n ...prevState,\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\n }));\n }}\n >\n
\n \n
\n \n
\n );\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IAdvancedNotesData } from './advanced-notes.data';\r\nimport { IAdvancedNotesProps } from './advanced-notes.props.autogenerated';\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IAdvancedNoteEntity } from '../../actions/DataServiceEntities.g';\r\n\r\nexport interface IAdvancedNotesViewProps extends IAdvancedNotesProps {\r\n staticDisplay: INodeProps;\r\n advancedNotesModuleProps: IModuleProps;\r\n}\r\n\r\ninterface IAdvancedNotesExtendedProps extends IAdvancedNotesProps {\r\n notes: IAdvancedNoteEntity[];\r\n}\r\n\r\ninterface IAdvancedNotesState {\r\n notes: IAdvancedNoteEntity[];\r\n isNoteAreaActive: boolean;\r\n}\r\n/**\r\n *\r\n * AdvancedNotes component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass AdvancedNotes extends React.PureComponent {\r\n private _className = 'advanced-notes';\r\n constructor(props: IAdvancedNotesExtendedProps) {\r\n super(props);\r\n this.state = {\r\n notes: props.notes,\r\n isNoteAreaActive: false\r\n };\r\n }\r\n private _renderNote = (key: string, message: string): React.ReactNode => {\r\n return (\r\n
\r\n

{message}

\r\n
\r\n );\r\n };\r\n\r\n private _renderNotes = (): React.ReactNode => {\r\n return (\r\n
\r\n {this.props.notes.map((note, index) => {\r\n return this._renderNote(`${index}${note.ItemId}`, note.TextValue || '');\r\n })}\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Renders the static comment display for when the isCommentAreaActive state param is false\r\n * @return React.ReactNode\r\n */\r\n private _renderStaticNotesDisplay = () => {\r\n const notes = this._renderNotes();\r\n return
{notes}
;\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: IAdvancedNotesViewProps = {\r\n ...this.props,\r\n staticDisplay: {\r\n tag: 'div',\r\n className: `${this._className}__static-display`,\r\n children: this._renderStaticNotesDisplay()\r\n },\r\n advancedNotesModuleProps: {\r\n tag: 'div',\r\n className: `${this._className}`,\r\n moduleProps: { ...this.props }\r\n }\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default AdvancedNotes;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IPasswordResetItem, IPasswordResetLoading, IPasswordResetLocalAccount, IPasswordResetViewProps } from './password-reset';\n\nconst PasswordResetItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IPasswordResetItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst PasswordResetLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst PasswordResetView: React.FC = props => {\n const { passwordReset, viewState, loading, defaultAADConainer, aadConainer, heading, passwordResetLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n// @ts-ignore\r\nimport {ICartLineItemViewProps, ICartlinesViewProps, ICartResources, ICartViewProps, IOrderSummaryErrors} from \"@msdyn365-commerce-modules/cart\";\r\nimport { IInvoiceSummaryLines } from \"@msdyn365-commerce-modules/invoice-payment-summary\";\r\nimport { IOrderSummaryLines } from \"@msdyn365-commerce-modules/order-summary-utilities\";\r\nimport { ArrayExtensions } from \"@msdyn365-commerce-modules/retail-actions\";\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n INodeProps,\r\n ITelemetryContent,\r\n Node,\r\n TelemetryConstant\r\n} from \"@msdyn365-commerce-modules/utilities\";\r\nimport * as React from \"react\";\r\n\r\nimport { ICartProps as ICartExtensionProps } from \"../definition-extensions/cart.ext.props.autogenerated\";\r\n\r\n/**\r\n * Toggle Bopis Function.\r\n * @param cartLine -CartLine.\r\n * @param isBopisSelected -Boolean.\r\n * @returns Toggle Bopis.\r\n */\r\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\r\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\r\n};\r\n\r\n/**\r\n * Change Store Function.\r\n * @param cartLine -CartLine.\r\n * @returns Toggle Bopis.\r\n */\r\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\r\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\r\n};\r\n\r\n/**\r\n * Render Bopis block.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param telemetryContent - The telemetry object.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderBopisBlock = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent, emailDeliveryModeCode?: string): JSX.Element | null => {\r\n // If it is electronic item cart line, then return null for BOPISBlock.\r\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\r\n return null;\r\n }\r\n\r\n const {\r\n shipInsteadDisplayText,\r\n shipToAddressDisplayText,\r\n pickItUpDisplayText,\r\n pickUpAtStoreWithLocationText,\r\n changeStoreDisplayText\r\n } = resources;\r\n\r\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\r\n\r\n const payLoad = getPayloadObject(\"click\", telemetryContent!, TelemetryConstant.PickupInStore);\r\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n
\r\n {isBopisSelected ? \r\n {pickUpAtStoreWithLocationText}\r\n : \r\n {shipToAddressDisplayText}\r\n }\r\n
\r\n {\r\n isBopisSelected &&\r\n
\r\n \r\n {cartLine.pickUpInStore.orgUnitName}\r\n \r\n \r\n {changeStoreDisplayText}\r\n \r\n
\r\n }\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Bopis block.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param telemetryContent - The telemetry object.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderGroupBopisBlock = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent, emailDeliveryModeCode?: string): JSX.Element | null => {\r\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\r\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\r\n return null;\r\n }\r\n\r\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\r\n\r\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\r\n\r\n const payLoad = getPayloadObject(\"click\", telemetryContent!, TelemetryConstant.PickupInStore);\r\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n <>\r\n {isBopisSelected ?\r\n : null}\r\n \r\n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst renderCartLineComment = (cartLineComment: React.ReactNode, comment: string, cartLineId: string, cartProductTitle?: string) => {\r\n if (!cartLineComment) {\r\n return null;\r\n }\r\n return React.cloneElement(cartLineComment[0] as React.ReactElement, { comment, cartLineId, cartProductTitle})\r\n}\r\n\r\n\r\n/**\r\n * Render Cart Lines.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param cartLineComment - Cart line comment element\r\n * @param telemetryContent - The telemetry object.\r\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartLine = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined,\r\n cartLineComment: React.ReactNode | undefined, telemetryContent?: ITelemetryContent,\r\n isMultiplePickUp?: boolean, emailDeliveryModeCode?: string): JSX.Element => {\r\n const comment = cartLine.data?.cartline.Comment || '';\r\n const cartLineProductTitle = cartLine.data?.product?.Name;\r\n if (cartLine.error === resources.outOfStockErrorMessage) {\r\n return (\r\n \r\n {renderCartLineComment(cartLineComment, comment, cartLine.cartlineId!, cartLineProductTitle)}\r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n }\r\n\r\n if (isMultiplePickUp) {\r\n return (\r\n \r\n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {renderCartLineComment(cartLineComment, comment, cartLine.cartlineId!, cartLineProductTitle)}\r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n }\r\n\r\n if (cartLine.addToOrderTemplate) {\r\n return (\r\n \r\n {renderCartLineComment(cartLineComment, comment, cartLine.cartlineId!, cartLineProductTitle)}\r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {renderCartLineComment(cartLineComment, comment, cartLine.cartlineId!, cartLineProductTitle)}\r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Cart Lines.\r\n * @param cartLines - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param telemetryContent - The telemetry object.\r\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartlinesInternal = (isPrintView: boolean, cartLines: ICartlinesViewProps[], resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined, cartLineComment: React.ReactNode | undefined, telemetryContent?: ITelemetryContent, isMultiplePickUp?: boolean,\r\n emailDeliveryModeCode?: string): JSX.Element[] | JSX.Element => {\r\n return (\r\n cartLines.map((cartLine, index) => {\r\n const itemIndex = index;\r\n return (\r\n
\r\n {cartLine.cartline}\r\n \r\n {isMultiplePickUp ? null : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {\r\n renderCartLine(cartLine, resources, storeSelector, cartLineComment, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\r\n }\r\n \r\n
\r\n );\r\n }));\r\n};\r\n\r\n/**\r\n * Render Cart Lines.\r\n * @param props - The cart line props.\r\n * @param cartLines - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param waitingComponent - Waiting component element.\r\n * @param cartLoadingStatus - Cart loading status string.\r\n * @param isCartDataResult - Flag to check if there is cart data.\r\n * @param telemetryContent - The telemetry object.\r\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartlines = (isPrintView: boolean, props: ICartViewProps & ICartExtensionProps<{}>, cartLines: ICartlinesViewProps[] | undefined, resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined, waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string, isCartDataResult: boolean, telemetryContent?: ITelemetryContent, isMultiplePickUp?: boolean,\r\n emailDeliveryModeCode?: string): JSX.Element[] | JSX.Element => {\r\n const { slots: { cartLineComment, orderLevelComment } } = props;\r\n if (cartLoadingStatus) {\r\n return (<>\r\n {cartLoadingStatus}\r\n );\r\n }\r\n\r\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\r\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\r\n if (cartLines) {\r\n return props.multiplePickUpEnabled ? (\r\n renderCartlinesInternal(isPrintView, cartLines, resources, storeSelector, cartLineComment, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\r\n ) : (\r\n \r\n {renderCartlinesInternal(isPrintView, cartLines, resources, storeSelector, cartLineComment, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\r\n {renderOrderLevelComment(isPrintView, orderLevelComment)}\r\n \r\n );\r\n }\r\n\r\n return (isCartDataResult ? (\r\n
\r\n
\r\n {props.slots.emptyCart}\r\n
\r\n
\r\n ) : <>\r\n {waitingComponent}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Cart Lines group title.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param count - Count of products.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\r\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\r\n const { itemLabel, itemsLabel } = resources;\r\n const itemCountOne: number = 1;\r\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\r\n const countTitle = `(${count} ${suffix})`;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ?

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {\", \"}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

: null}\r\n

\r\n {countTitle}\r\n

\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Cart Lines group title.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param count - Count of products.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartLinesGroupHeader = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number, emailDeliveryModeCode?: string) => {\r\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\r\n const { pickUpText, shippingText, emailshippingText } = resources;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n \r\n

\r\n {groupTitle}\r\n

\r\n {renderCartLinesGroupTitle(cartLine, resources, count)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Returns count of products.\r\n * @param cartLine - The cart line view props.\r\n * @returns Number of products.\r\n */\r\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\r\n let countItem = 0;\r\n const defaultItemCount = 0;\r\n countItem = cartLine.reduce((count, item) => {\r\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\r\n\r\n }, defaultItemCount);\r\n return countItem;\r\n};\r\n\r\n/**\r\n * Render Cart Lines group.\r\n * @param props - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartLinesGroup = (isPrintView: boolean, props: ICartViewProps & ICartExtensionProps<{}>, resources: ICartResources): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n {props.cartLinesGroup.map(cartlines => {\r\n return (
\r\n {renderCartLinesGroupHeader(cartlines[0], resources, countItems(cartlines),\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\r\n {renderCartlines(isPrintView, props, cartlines, props.resources, props.storeSelector,\r\n props.waitingComponent, props.cartLoadingStatus, props.cartDataResult,\r\n props.telemetryContent, props.multiplePickUpEnabled, props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\r\n
);\r\n })}\r\n
\r\n );\r\n }\r\n return (props.cartDataResult ? (\r\n
\r\n
\r\n {props.slots.emptyCart}\r\n
\r\n
\r\n ) : <>\r\n {props.waitingComponent}\r\n \r\n );\r\n\r\n};\r\n\r\n/**\r\n * Render error block.\r\n * @param errorData - Error component.\r\n * @returns JSX Element.\r\n */\r\nconst renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render invoice summary.\r\n * @param invoiceSummaryLines - Invoice summary component.\r\n * @param orderSummaryItems - Order summary component.\r\n * @param props - The module props.\r\n * @returns JSX Element.\r\n */\r\nconst renderInvoiceSummarylines = (invoiceSummaryLines: IInvoiceSummaryLines | undefined, orderSummaryItems: INodeProps,\r\n props: ICartViewProps): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error(\"InvoiceSummary content is empty, module wont render\");\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render order summary.\r\n * @param orderSummaryLines - Order summary component.\r\n * @param orderSummaryItems - Order summary items component.\r\n * @param props - The module props.\r\n * @returns JSX Element.\r\n */\r\nconst renderOrderSummarylines = (orderSummaryLines: IOrderSummaryLines | undefined, orderSummaryItems: INodeProps,\r\n props: ICartViewProps): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error(\"OrderSummary content is empty, module wont render\");\r\n return null;\r\n }\r\n return (\r\n \r\n {orderSummaryLines.subtotal}\r\n {/* {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null} */}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render error block.\r\n * @param promotions - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n \r\n {promotions.promotionSeeAllLink}\r\n \r\n {promotions.promotionDialog}\r\n \r\n\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render order summary checkout.\r\n * @param props - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderOrderSummaryCheckout = (props: ICartViewProps): JSX.Element | undefined => {\r\n return (\r\n \r\n {props.cart?.hasInvoiceLine ? null : props.promoCode}\r\n \r\n {/* {props.checkoutAsSignInUserButton} */}\r\n {props.checkoutAsGuestButton}\r\n \r\n {props.createTemplateFromCartButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render order summary checkout button.\r\n * @param props - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\r\n return (\r\n \r\n {/* {props.checkoutAsSignInUserButton} */}\r\n {props.checkoutAsGuestButton}\r\n \r\n );\r\n};\r\n\r\nconst _renderPrintView = (isPrintView: boolean,\r\n handlePrintViewChange: (e: React.MouseEventHandler) => void,\r\n printViewLabel: string\r\n): React.ReactNode => (\r\n
\r\n \r\n\r\n\r\n
\r\n);\r\n\r\n/**\r\n * Renders the order-level-comment that displays a comment at the bottom of the cart.\r\n */\r\n\r\nconst renderOrderLevelComment = (isPrintView: boolean, orderLevelComment: React.ReactNode | undefined): React.ReactNode => {\r\n if (!orderLevelComment) {\r\n return null;\r\n }\r\n return(\r\n
\r\n {orderLevelComment}\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render cart view.\r\n * @param props - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps<{}>) => {\r\n\r\n const handlePrintViewChange = () => setIsPrintView(!isPrintView);\r\n const [isPrintView, setIsPrintView] = React.useState(false);\r\n const printViewToggle = _renderPrintView(isPrintView, handlePrintViewChange, \"Print View\");\r\n const totalItemCountOne: number = 1;\r\n const updatedTitle = (\r\n

\r\n {props.resources.cartTitle}\r\n \r\n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? \"items\" : \"item\"})`}\r\n \r\n

\r\n );\r\n return (\r\n
\r\n {updatedTitle}\r\n
\r\n {props.orderSummaryLineitems?.orderTotal}\r\n
\r\n {renderOrderSummaryCheckoutButton(props)}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? renderCartLinesGroup(isPrintView, props, props.resources) : renderCartlines(isPrintView, props, props.cartlines,\r\n props.resources, props.storeSelector, props.waitingComponent, props.cartLoadingStatus, props.cartDataResult)}\r\n {props.orderSummaryHeading &&\r\n \r\n {printViewToggle}\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine ? renderInvoiceSummarylines(\r\n props.invoiceSummaryLineitems, props.OrderSummaryItems, props) : renderOrderSummarylines(\r\n props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {renderErrorBlock(props.OrderSummaryErrors)}\r\n \r\n {renderOrderSummaryCheckout(props)}\r\n }\r\n {props.storeSelector}\r\n
\r\n );\r\n};\r\n\r\nexport default CartView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n
\n {orderInfomation.placedBy && {orderInfomation.placedBy}}\n
{orderInfomation && }
\n
\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n
\n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/checkout-customer-account-payment';\nimport { IAccountPaymentEditViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-edit-mode';\nimport { IAccountPaymentSummaryViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-summary-mode';\n\nexport const SummaryForm: React.FC = ({\n formProps,\n label,\n addPaymentButton,\n appliedLine,\n bottomBorder,\n paymentAmountInput\n}) => (\n \n <>\n {label}\n {paymentAmountInput}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nexport const EditForm: React.FC = ({\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n}) => (\n \n <>\n {customerName}\n {customerAccountNumber}\n {customerSince}\n {accountCredit}\n {accountDetails}\n {inputLabel}\n {alert}\n {inputAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nconst CheckoutCustomerAccountView: React.FC = props => {\n const { checkoutCustomerAccount, checkoutErrorRef, summaryView, editView, moduleState, alert } = props;\n return (\n \n {alert}\n {moduleState.isReady && summaryView && }\n {!moduleState.isReady && editView && }\n \n );\n};\n\nexport default CheckoutCustomerAccountView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ExtensibleEnumeration } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { IOrderLookupResources, IOrderLookupSearchAdditionalFieldsData } from '../order-lookup.props.autogenerated';\n\n/**\n * Render label.\n * @param className - Classname for label.\n * @param value - Text for label.\n * @returns -The JSX Element.\n */\nexport const labelGroup = (className: string, value: string): JSX.Element => {\n return
{value}
;\n};\n\n/**\n * Error label.\n * @param responseErrorMessage - Error message for label.\n * @param errorMessageClassName - Error message for class name.\n * @returns - Error ReactNode.\n */\nexport const renderErrorLabel = (responseErrorMessage: string, errorMessageClassName: string): React.ReactNode => {\n return responseErrorMessage &&
{responseErrorMessage}
;\n};\n\n/**\n * Registered user message.\n * @param resources - Resource values.\n * @param signInUrl - Signin url.\n * @param signInLinkClassName - Signin link classname.\n * @param registeredUserClassName - Registered user message classname.\n * @returns - ReactNode.\n */\nexport const renderRegisteredUserMessage = (\n resources: IOrderLookupResources,\n signInUrl: string,\n signInLinkClassName: string,\n registeredUserClassName: string\n): React.ReactNode => {\n const { orderLookupRegisteredUserText, orderLookupViewAccountText, orderLookupSignInLinkText } = resources;\n const message: string = orderLookupRegisteredUserText;\n const infoMessage: string = orderLookupViewAccountText;\n const signInText: string = orderLookupSignInLinkText;\n return (\n
\n {message}\n \n {signInText}\n \n {infoMessage}\n
\n );\n};\n\n/**\n * EmailValid submit.\n * @param email - Onsubmit of form and button click.\n * @returns - Boolean.\n */\nexport const isEmailValid = (email: string): boolean => {\n return EmailRegex.defaultRegex.test(email);\n};\n\n/**\n * Additional field validation for on submit.\n * @param name - Onsubmit of form and button click.\n * @returns - Boolean.\n */\nexport const isAdditionalFieldValid = (name: string): boolean => {\n const regEx = new RegExp('^(?!\\\\s)[A-Za-z0-9\\\\s]+$', 'u');\n return regEx.test(name);\n};\n\n/**\n * Validate order lookup field against extensible enum.\n * @param orderStatusLookUpParameter - Order lookup parameter.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateOrderLookupField = (\n orderStatusLookUpParameter: string,\n orderLookupExtensibleEnum: ExtensibleEnumeration[]\n): boolean => {\n let isValidField: boolean = false;\n for (const item of orderLookupExtensibleEnum) {\n if (item.Name.toLocaleLowerCase() === orderStatusLookUpParameter.toLocaleLowerCase()) {\n isValidField = true;\n return isValidField;\n }\n }\n return isValidField;\n};\n\n/**\n * Validate order lookup additional fields with proxy values.\n * @param value - Value to be validated.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateAdditionalFieldWithProxy = (value: string, orderLookupExtensibleEnum: ExtensibleEnumeration[]): boolean => {\n return !orderLookupExtensibleEnum.some(item => item.Name.toLocaleLowerCase() === value.toLocaleLowerCase());\n};\n\n/**\n * Validate order lookup additional fields against extensible enum.\n * @param orderStatusLookUpAdditionalParameters - Order lookup parameter.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateOrderLookupAdditionalField = (\n orderStatusLookUpAdditionalParameters: IOrderLookupSearchAdditionalFieldsData[],\n orderLookupExtensibleEnum: ExtensibleEnumeration[]\n): boolean => {\n let isValidAdditionalField: boolean = false;\n if (ArrayExtensions.hasElements(orderStatusLookUpAdditionalParameters)) {\n orderStatusLookUpAdditionalParameters.map(item => {\n const fieldKey: string = item.fieldKey ?? '';\n if (!isValidAdditionalField) {\n isValidAdditionalField = validateAdditionalFieldWithProxy(fieldKey, orderLookupExtensibleEnum);\n }\n return isValidAdditionalField;\n });\n } else {\n isValidAdditionalField = false;\n }\n return isValidAdditionalField;\n};\n\n/**\n * Render validation message if field does not matches with extensible enum.\n * @param orderLookupFieldValidationErrorMessage - Order lookup validation message.\n * @returns - ReactNode.\n */\nexport const renderFieldErrors = (orderLookupFieldValidationErrorMessage: string): React.ReactNode => {\n return
{orderLookupFieldValidationErrorMessage}
;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { labelGroup } from '../utilities/order-lookup-utility';\n\n/**\n * Additional input field props.\n */\nexport interface IOrderLookupAdditionalFieldInfoInput {\n className: string;\n ariaLabel: string;\n inputType: string;\n value: string;\n name: string;\n additionalFieldLabel: string;\n additionalFieldLabelClassName: string;\n isValidAdditionalFieldName: boolean;\n additionalFieldValidationMessage: string;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Order lookup additional field props.\n */\nexport interface IOrderLookupAdditionalFieldInfo {\n additionalFieldLabel: React.ReactNode;\n additionalFieldInput: React.ReactNode;\n additionalFieldError: React.ReactNode;\n}\n\n/**\n * RenderOrderLookupAdditionalFieldInput component.\n */\n@observer\nexport default class RenderOrderLookupAdditionalFieldInput extends React.Component {\n public constructor(props: IOrderLookupAdditionalFieldInfoInput) {\n super(props);\n }\n\n public shouldComponentUpdate(nextProps: IOrderLookupAdditionalFieldInfoInput): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | undefined {\n return (\n
\n {this._getOrderLookupAdditionalFields().additionalFieldLabel}\n {this._getOrderLookupAdditionalFields().additionalFieldError}\n {this._getOrderLookupAdditionalFields().additionalFieldInput}\n
\n );\n }\n\n /**\n * Function to create the order lookup additional fields.\n * @returns IOrderLookupFieldInfo.\n */\n private _getOrderLookupAdditionalFields(): IOrderLookupAdditionalFieldInfo {\n return {\n additionalFieldLabel: labelGroup(this.props.additionalFieldLabelClassName, this.props.additionalFieldLabel),\n additionalFieldInput: (\n
\n \n
\n ),\n additionalFieldError: (\n
\n {!this.props.isValidAdditionalFieldName ? this.props.additionalFieldValidationMessage : ''}\n
\n )\n };\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { labelGroup } from '../utilities/order-lookup-utility';\n\n/**\n * Input field props.\n */\nexport interface IOrderLookupFieldInfoInput {\n inputReference?: React.RefObject;\n className: string;\n ariaLabel: string;\n inputType: string;\n value: string;\n name: string;\n orderLookupLabel: string;\n orderLookupLabelClassName: string;\n fieldErrorClassName: string;\n isInputTypeError: boolean;\n isValidInputField: boolean;\n renderAlert(className: string): JSX.Element;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Order lookup field props.\n */\nexport interface IOrderLookupFieldInfo {\n label: React.ReactNode;\n input: React.ReactNode;\n error: React.ReactNode;\n}\n\n/**\n * RenderOrderLookupInputs component.\n */\n@observer\nexport default class RenderOrderLookupFormFields extends React.Component {\n public constructor(props: IOrderLookupFieldInfoInput) {\n super(props);\n }\n\n public shouldComponentUpdate(nextProps: IOrderLookupFieldInfoInput): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | undefined {\n return (\n
\n {this._getOrderLookupFields().label}\n {this._getOrderLookupFields().error}\n {this._getOrderLookupFields().input}\n
\n );\n }\n\n /**\n * Function to create the order lookup fields.\n * @returns IOrderLookupFieldInfo.\n */\n private _getOrderLookupFields(): IOrderLookupFieldInfo {\n return {\n label: labelGroup(this.props.orderLookupLabelClassName, this.props.orderLookupLabel),\n input: (\n
\n \n
\n ),\n error: (\n
\n {this.props.isInputTypeError ? this.props.renderAlert(this.props.name) : ''}\n {this.props.isValidInputField ? this.props.renderAlert(this.props.name) : ''}\n
\n )\n };\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IActionContext } from '@msdyn365-commerce/core-internal';\nimport { ExtensibleEnumeration, StoreOperationsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport RenderOrderLookupAdditionalFieldInput from './components/order-lookup-additional-fields';\nimport RenderOrderLookupFormFields from './components/order-lookup-fields';\nimport {\n IOrderLookupProps,\n IOrderLookupSearchAdditionalFieldsData,\n orderStatusLookUpParametersType as orderStatusLookUpParametersTypes\n} from './order-lookup.props.autogenerated';\nimport {\n isAdditionalFieldValid,\n isEmailValid,\n renderErrorLabel,\n renderFieldErrors,\n renderRegisteredUserMessage,\n validateOrderLookupAdditionalField,\n validateOrderLookupField\n} from './utilities/order-lookup-utility';\n\n/**\n * OrderLookup view props.\n */\nexport interface IOrderLookupViewProps extends IOrderLookupProps<{}> {\n additionalProperties: JSX.Element[] | undefined;\n orderLookup: IModuleProps;\n orderLookupContainer: INodeProps;\n orderLookupAdditionalFieldContainer: INodeProps;\n paragraph?: React.ReactNode;\n heading?: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n orderLookupForm?: INodeProps;\n renderOrderLookupInputField: JSX.Element | undefined;\n orderNumberInput?: JSX.Element | undefined;\n errorMessage?: React.ReactNode;\n fieldErrorMessage?: React.ReactNode;\n registeredUserMessage?: React.ReactNode;\n onChange?(event: React.ChangeEvent): void;\n submit?(): void;\n}\n\n/**\n * OrderLookupSearchValues -- supported values.\n */\nenum OrderLookupSearchValues {\n email = 'email',\n ordernumber = 'ordernumber'\n}\n\n/**\n * To render and handle state for additional order lookup fields.\n */\nexport interface IOrderLookupAdditionalFields {\n labelName: string;\n isValidFieldName: boolean;\n fieldValue: string;\n ariaLabel: string;\n additionalfieldErrorMessage: string;\n}\n\n/**\n * OrderLookup view props.\n */\nexport interface IOrderLookupFormState {\n orderNumber: string;\n email: string;\n isOrdNumberError: boolean;\n isEmailError: boolean;\n isValidEmailError: boolean;\n isReqError: boolean;\n isDisabled: boolean;\n isValidLookupField: boolean;\n isValidAdditionalLookupField: boolean;\n responseErrorMessage: string;\n additionalProperties: IOrderLookupAdditionalFields[];\n}\n\n/**\n *\n * OrderLookup component.\n * @extends {React.PureComponent>}\n */\nclass OrderLookup extends React.PureComponent, IOrderLookupFormState> {\n public orderNumberInputRef: React.RefObject;\n\n public emailInputRef: React.RefObject;\n\n public isEmailValue: boolean = false;\n\n private requiredErrorMessage: string | undefined;\n\n private emailValidationErrorMessage: string | undefined;\n\n private isOrderNumberValue: boolean = false;\n\n private orderLookupExtensibleEnum: ExtensibleEnumeration[] = [];\n\n public constructor(props: IOrderLookupProps<{}>) {\n super(props);\n this.orderNumberInputRef = React.createRef();\n this.emailInputRef = React.createRef();\n const { config } = this.props;\n const { orderLookupSearchAdditionalFields } = config;\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n\n if (orderLookupSearchAdditionalFields) {\n for (const item of orderLookupSearchAdditionalFields) {\n additionalPropertyStates.push({\n labelName: item.labelName ?? '',\n isValidFieldName: true,\n fieldValue: '',\n ariaLabel: item.ariaLabel ?? '',\n additionalfieldErrorMessage: item.validationMessage ?? ''\n });\n }\n }\n\n this.state = {\n orderNumber: '',\n email: '',\n isOrdNumberError: false,\n isEmailError: false,\n isValidEmailError: false,\n isReqError: false,\n isDisabled: true,\n isValidLookupField: true,\n isValidAdditionalLookupField: false,\n responseErrorMessage: '',\n additionalProperties: additionalPropertyStates\n };\n }\n\n public render(): JSX.Element | null {\n const {\n config: { paragraph, heading },\n resources,\n context\n } = this.props;\n\n const {\n orderLookupDefaultHeadingText,\n orderLookupButtonLabel,\n orderLookupFormAriaLabel,\n orderLookupOrderNumberLabel,\n orderLookupOrderNumberAriaLabel,\n orderLookupSubmitAriaLabel,\n orderLookupFieldValidationErrorMessage\n } = resources;\n\n const { responseErrorMessage, isDisabled, orderNumber, isOrdNumberError } = this.state;\n\n const headingText = StringExtensions.isNullOrEmpty(heading?.text) ? orderLookupDefaultHeadingText : heading?.text;\n const headingTag = heading?.tag ?? 'h1';\n\n const moduleClassName = 'ms-order-lookup';\n const orderLookupContainerClassName = `${moduleClassName}__details`;\n const orderLookupHeadingClassName = `${orderLookupContainerClassName}__heading`;\n const orderLookupFormClassName = `${orderLookupContainerClassName}__form`;\n const orderLookupAdditionalFiledContainerClassName = `${orderLookupFormClassName}__additional-fields-container`;\n const orderLookupFormFieldsClassName = `${orderLookupFormClassName}__fields`;\n const orderNumberLabelClassName = `${orderLookupFormFieldsClassName}__order-number-label`;\n const orderNumberInputErrorClassName = `${orderLookupFormFieldsClassName}__order-number-input-error`;\n const submitButtonClassName = `${orderLookupFormClassName}__submit`;\n const labelErrorMessageClassName = `${moduleClassName}__error-message`;\n const registeredUserClassName = `${moduleClassName}__registered-user`;\n const signinLinkClassName = `${registeredUserClassName}__sign-in-link msc-btn`;\n\n const orderLookupHeading = (\n \n );\n\n const viewProps: IOrderLookupViewProps = {\n ...this.props,\n orderLookup: {\n moduleProps: this.props,\n className: moduleClassName\n },\n\n orderLookupContainer: {\n className: orderLookupContainerClassName\n },\n orderLookupAdditionalFieldContainer: {\n className: orderLookupAdditionalFiledContainerClassName\n },\n paragraph: paragraph && this._createParagraph(paragraph),\n heading: orderLookupHeading,\n\n renderOrderLookupInputField: this._renderOrderLookupInput(),\n orderLookupForm: {\n className: orderLookupFormClassName,\n tag: 'form',\n 'aria-label': orderLookupFormAriaLabel,\n name: 'orderLookupForm',\n role: 'form',\n autoComplete: 'off',\n onSubmit: this.handleSubmit\n },\n orderNumberInput: (\n \n ),\n\n submitButton: {\n className: submitButtonClassName,\n tag: Button,\n 'aria-label': orderLookupSubmitAriaLabel,\n type: 'submit',\n role: 'button',\n title: orderLookupButtonLabel,\n onClick: this.handleSubmit,\n disabled: isDisabled\n },\n\n submitButtonLabelText: orderLookupButtonLabel,\n errorMessage: renderErrorLabel(responseErrorMessage, labelErrorMessageClassName),\n fieldErrorMessage:\n (!this.state.isValidLookupField || this.state.isValidAdditionalLookupField) &&\n renderFieldErrors(orderLookupFieldValidationErrorMessage),\n registeredUserMessage: renderRegisteredUserMessage(\n resources,\n context.request.user.signInUrl ?? '',\n signinLinkClassName,\n registeredUserClassName\n ),\n onChange: this.onChange,\n submit: this.handleSubmit,\n additionalProperties: this._renderAdditionalFields()\n };\n return this.props.renderView(viewProps);\n }\n\n public async componentDidMount(): Promise {\n const { config, context } = this.props;\n const { actionContext } = context;\n const { orderStatusLookUpParametersType, orderLookupSearchAdditionalFields } = config;\n let isOrderLookupAdditionalFieldValid: boolean = false;\n let isOrderLookupFieldValid: boolean = false;\n\n const getExtensibleEnumerations = await StoreOperationsDataActions.getExtensibleEnumerationsAsync({ callerContext: actionContext });\n this.orderLookupExtensibleEnum =\n getExtensibleEnumerations.find(item => item.TypeName === 'OrderLookupAdditionalCriteriaType')?.ExtensibleEnumerations ?? [];\n\n const orderLookupParameter: string = orderStatusLookUpParametersType ?? '';\n const orderLookupAdditionalParameter: IOrderLookupSearchAdditionalFieldsData[] = orderLookupSearchAdditionalFields ?? [];\n\n isOrderLookupFieldValid = validateOrderLookupField(orderLookupParameter, this.orderLookupExtensibleEnum);\n isOrderLookupAdditionalFieldValid = validateOrderLookupAdditionalField(\n orderLookupAdditionalParameter,\n this.orderLookupExtensibleEnum\n );\n this.setLookupFieldState(isOrderLookupFieldValid, isOrderLookupAdditionalFieldValid);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n const { config } = this.props;\n config.paragraph = event.target.value;\n };\n\n /**\n * Sets isValidLookupField after validating with extensible emun.\n * @param isValidField - Sets the property.\n * @param isValidAdditionalField - Sets the additional field property.\n */\n public setLookupFieldState(isValidField: boolean, isValidAdditionalField: boolean): void {\n this.setState({ isValidLookupField: isValidField, isValidAdditionalLookupField: isValidAdditionalField });\n }\n\n /**\n * HandleSubmit submit.\n */\n public readonly handleSubmit = (): void => {\n const { config, context } = this.props;\n const { actionContext } = context;\n const { additionalProperties, orderNumber, email } = this.state;\n const orderLookupValue = email;\n const { orderStatusLookUpParametersType } = config;\n const orderLookupName = orderStatusLookUpParametersType !== undefined ? orderStatusLookUpParametersType : '';\n const isValid: boolean = this._validateOrderLookupForm();\n if (isValid) {\n const actionContextValue: IActionContext = actionContext;\n const orderDetailsPath = Msdyn365.getUrlSync('orderDetails', actionContextValue) ?? '';\n if (orderDetailsPath) {\n const baseUrl = new URL(window.location.origin);\n const redirectUrl = new URL(orderDetailsPath, baseUrl);\n const searchParameters = redirectUrl.searchParams;\n\n searchParameters.set('confirmationId', orderNumber);\n searchParameters.set('propertyName', orderLookupName);\n searchParameters.set('propertyValue', orderLookupValue);\n\n if (ArrayExtensions.hasElements(additionalProperties)) {\n additionalProperties.map((item, index) => {\n const fieldName = !StringExtensions.isNullOrWhitespace(item.ariaLabel)\n ? item.ariaLabel.replace(' ', '').toLocaleLowerCase()\n : '';\n const fieldValue = !StringExtensions.isNullOrWhitespace(item.fieldValue) ? item.fieldValue : '';\n searchParameters.set(`field${index + 1}Name`, fieldName);\n searchParameters.set(`field${index + 1}Value`, fieldValue);\n return item;\n });\n }\n\n window.location.assign(redirectUrl.toString());\n }\n }\n };\n\n /**\n * OnChange event.\n * @param event - Value of input field.\n */\n public readonly onChange = (event: React.ChangeEvent): void => {\n const { additionalProperties } = this.state;\n const { config } = this.props;\n const { orderStatusLookUpParametersType } = config;\n const name = event.target.name || '';\n const value = event.target.value || '';\n this.isOrderNumberValue = !StringExtensions.isNullOrWhitespace(this.orderNumberInputRef.current?.value);\n this.isEmailValue = !StringExtensions.isNullOrWhitespace(this.emailInputRef.current?.value);\n\n if (orderStatusLookUpParametersType?.toLocaleLowerCase() === 'none') {\n this.isEmailValue = true;\n }\n\n this.setState({ responseErrorMessage: '' });\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n let isAdditionalFieldError: boolean = true as boolean;\n let isKeyExistInAdditionalFieldArray: boolean = false as boolean;\n\n for (const item of additionalProperties) {\n const fieldName: string = item.ariaLabel.replace(' ', '');\n if (fieldName.toLocaleLowerCase() === name.toLocaleLowerCase()) {\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: true,\n fieldValue: value,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n } else {\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: item.isValidFieldName,\n fieldValue: item.fieldValue,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n }\n if (fieldName.toLocaleLowerCase() === orderStatusLookUpParametersType?.toLocaleLowerCase()) {\n isKeyExistInAdditionalFieldArray = true;\n }\n }\n\n for (const items of additionalPropertyStates) {\n if (StringExtensions.isNullOrWhitespace(items.fieldValue)) {\n isAdditionalFieldError = false;\n }\n }\n\n this.setState({ additionalProperties: additionalPropertyStates });\n\n if (!isKeyExistInAdditionalFieldArray) {\n switch (name.toLocaleLowerCase()) {\n case OrderLookupSearchValues.ordernumber: {\n this.setState({\n orderNumber: value,\n isOrdNumberError: false,\n isReqError: false\n });\n break;\n }\n case OrderLookupSearchValues.email: {\n this.setState({\n email: value,\n isEmailError: false,\n isValidEmailError: false,\n isReqError: false\n });\n break;\n }\n default: {\n this.setState({ isReqError: false });\n }\n }\n }\n\n if (\n this.isOrderNumberValue &&\n this.isEmailValue &&\n isAdditionalFieldError &&\n this.state.isValidLookupField &&\n !this.state.isValidAdditionalLookupField\n ) {\n this.setState({ isDisabled: false });\n } else {\n this.setState({ isDisabled: true });\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n const { context } = this.props;\n const { request } = context;\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n /**\n * Render order lookup validation message.\n * @param className - Class name for error field.\n * @returns - JSX.Element.\n */\n private readonly _renderAlert = (className: string): JSX.Element => {\n const {\n resources: { orderLookupEmailValidationErrorMessage, orderLookupRequiredTextErrorMessage }\n } = this.props;\n\n const { isEmailError, email, isValidEmailError, isReqError } = this.state;\n if (isEmailError) {\n this.requiredErrorMessage = orderLookupRequiredTextErrorMessage;\n }\n\n if (!StringExtensions.isNullOrEmpty(email) && isValidEmailError) {\n this.emailValidationErrorMessage = orderLookupEmailValidationErrorMessage;\n }\n\n const isRequireError = isReqError;\n const isEmailValidError = isValidEmailError;\n const isValidEmailInput = className.toLocaleLowerCase() === OrderLookupSearchValues.email;\n return (\n <>\n {isRequireError && (\n \n {this.requiredErrorMessage}\n \n )}\n {isEmailValidError && isValidEmailInput && (\n \n {this.emailValidationErrorMessage}\n \n )}\n \n );\n };\n\n /**\n * Render order number validation message.\n * @param className - Class name for error field.\n * @returns - JSX.Element.\n */\n private readonly _renderOrderNumberAlert = (className: string): JSX.Element => {\n const {\n resources: { orderLookupOrderNumberValidationErrorMessage, orderLookupRequiredTextErrorMessage }\n } = this.props;\n\n const { isOrdNumberError, isReqError } = this.state;\n return (\n <>\n {isReqError && (\n \n {orderLookupRequiredTextErrorMessage}\n \n )}\n {isOrdNumberError && (\n \n {orderLookupOrderNumberValidationErrorMessage}\n \n )}\n \n );\n };\n\n private _renderAdditionalFields(): JSX.Element[] | undefined {\n const { additionalProperties } = this.state;\n const additionalFieldsInput: JSX.Element[] = [];\n for (const item of additionalProperties) {\n const name: string = item.ariaLabel.replace(' ', '');\n additionalFieldsInput.push(\n \n );\n }\n return additionalFieldsInput;\n }\n\n /**\n * Render Input field for order lookup.\n * @returns - IOrderLookupFieldInfo.\n */\n private readonly _renderOrderLookupInput = (): JSX.Element | undefined => {\n const { email, isEmailError, isValidEmailError } = this.state;\n const {\n config: { orderStatusLookUpParametersType },\n resources: { orderLookupEmailLabel, orderLookupEmailAriaLabel }\n } = this.props;\n\n switch (orderStatusLookUpParametersType) {\n case orderStatusLookUpParametersTypes.none:\n return undefined;\n case orderStatusLookUpParametersTypes.email:\n default:\n return (\n \n );\n }\n };\n\n /**\n * _validation for additional fields.\n * @returns - Returns IOrderLookupAdditionalFields[].\n */\n private readonly _additionalFieldValidation = (): IOrderLookupAdditionalFields[] => {\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n for (const item of this.state.additionalProperties) {\n const isFieldValid: boolean = !StringExtensions.isNullOrWhitespace(item.fieldValue) && isAdditionalFieldValid(item.fieldValue);\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: isFieldValid,\n fieldValue: item.fieldValue,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n }\n return additionalPropertyStates;\n };\n\n /**\n * _validateOrderLookupForm submit.\n * @returns - Returns boolean.\n */\n private readonly _validateOrderLookupForm = (): boolean => {\n const { config } = this.props;\n const { orderNumber, email } = this.state;\n const { orderStatusLookUpParametersType } = config;\n let additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n let isValid = false;\n let isDisable = false;\n\n if (ArrayExtensions.hasElements(this.state.additionalProperties)) {\n additionalPropertyStates = this._additionalFieldValidation();\n for (const item of additionalPropertyStates) {\n if (!item.isValidFieldName) {\n isDisable = true;\n }\n }\n\n if (isDisable) {\n this.setState({\n additionalProperties: additionalPropertyStates,\n isDisabled: true\n });\n }\n }\n\n if (StringExtensions.isNullOrWhitespace(orderNumber)) {\n this.setState({\n isOrdNumberError: true,\n isReqError: true,\n isDisabled: true\n });\n } else if (orderNumber.trim() !== orderNumber) {\n this.setState({\n isOrdNumberError: true,\n isReqError: false,\n isDisabled: true\n });\n } else if (\n orderStatusLookUpParametersType === orderStatusLookUpParametersTypes.email &&\n StringExtensions.isNullOrWhitespace(email)\n ) {\n this.setState({\n isEmailError: true,\n isReqError: true,\n isDisabled: true\n });\n } else if (orderStatusLookUpParametersType === orderStatusLookUpParametersTypes.email && !isEmailValid(email)) {\n this.setState({\n isValidEmailError: true,\n isDisabled: true\n });\n } else if (isDisable || !this.state.isValidLookupField || this.state.isValidAdditionalLookupField) {\n this.setState({\n isDisabled: true\n });\n } else {\n this.setState({\n isDisabled: false\n });\n isValid = true;\n }\n return isValid;\n };\n}\n\nexport default OrderLookup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default PasswordResetLoadingMessage;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IAdvancedNotesViewProps } from './advanced-notes';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport default (props: IAdvancedNotesViewProps) => {\r\n const { staticDisplay, advancedNotesModuleProps } = props;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n// @ts-ignore\r\nimport {ICartLineItemViewProps, ICartlinesViewProps, ICartViewProps, IOrderSummaryErrors} from \"@msdyn365-commerce-modules/cart\";\r\nimport { IInvoiceSummaryLines } from \"@msdyn365-commerce-modules/invoice-payment-summary\";\r\nimport { IOrderSummaryLines } from \"@msdyn365-commerce-modules/order-summary-utilities\";\r\nimport { ArrayExtensions } from \"@msdyn365-commerce-modules/retail-actions\";\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n INodeProps,\r\n ITelemetryContent,\r\n Node,\r\n Modal,\r\n ModalBody,\r\n ModalFooter,\r\n ModalHeader,\r\n TelemetryConstant\r\n} from \"@msdyn365-commerce-modules/utilities\";\r\nimport * as React from \"react\";\r\n\r\nimport { ICartProps as ICartExtensionProps, ICartResources } from \"../definition-extensions/cart.ext.props.autogenerated\";\r\nimport { getAdvancedNotesAsync } from \"../../../actions/DataActionExtension.g\";\r\nimport { IAdvancedNoteEntity } from \"../../../actions/DataServiceEntities.g\";\r\nimport { LinePagination } from './components/line-pagination';\r\n\r\n/**\r\n * Toggle Bopis Function.\r\n * @param cartLine -CartLine.\r\n * @param isBopisSelected -Boolean.\r\n * @returns Toggle Bopis.\r\n */\r\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\r\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\r\n};\r\n\r\n/**\r\n * Change Store Function.\r\n * @param cartLine -CartLine.\r\n * @returns Toggle Bopis.\r\n */\r\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\r\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\r\n};\r\n\r\n/**\r\n * Render Bopis block.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param telemetryContent - The telemetry object.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderBopisBlock = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent, emailDeliveryModeCode?: string): JSX.Element | null => {\r\n // If it is electronic item cart line, then return null for BOPISBlock.\r\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\r\n return null;\r\n }\r\n\r\n const {\r\n shipInsteadDisplayText,\r\n shipToAddressDisplayText,\r\n pickItUpDisplayText,\r\n pickUpAtStoreWithLocationText,\r\n changeStoreDisplayText\r\n } = resources;\r\n\r\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\r\n\r\n const payLoad = getPayloadObject(\"click\", telemetryContent!, TelemetryConstant.PickupInStore);\r\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n
\r\n {isBopisSelected ? \r\n {pickUpAtStoreWithLocationText}\r\n : \r\n {shipToAddressDisplayText}\r\n }\r\n
\r\n {\r\n isBopisSelected &&\r\n
\r\n \r\n {cartLine.pickUpInStore.orgUnitName}\r\n \r\n \r\n {changeStoreDisplayText}\r\n \r\n
\r\n }\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Bopis block.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param telemetryContent - The telemetry object.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderGroupBopisBlock = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent, emailDeliveryModeCode?: string): JSX.Element | null => {\r\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\r\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\r\n return null;\r\n }\r\n\r\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\r\n\r\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\r\n\r\n const payLoad = getPayloadObject(\"click\", telemetryContent!, TelemetryConstant.PickupInStore);\r\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n <>\r\n {isBopisSelected ?\r\n : null}\r\n \r\n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst renderCartLineComment = (cartLineComment: React.ReactNode, comment: string, cartLineId: string, cartProductTitle?: string) => {\r\n if (!cartLineComment) {\r\n return null;\r\n }\r\n return React.cloneElement(cartLineComment[0] as React.ReactElement, { comment, cartLineId, cartProductTitle})\r\n}\r\n\r\n\r\n/**\r\n * Render Cart Lines.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param cartLineComment - Cart line comment element\r\n * @param telemetryContent - The telemetry object.\r\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartLine = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined,\r\n cartLineComment: React.ReactNode | undefined, advancedNotes: React.ReactNode | undefined, telemetryContent?: ITelemetryContent,\r\n isMultiplePickUp?: boolean, emailDeliveryModeCode?: string): JSX.Element => {\r\n const comment = cartLine.data?.cartline.Comment || '';\r\n const cartLineProductTitle = cartLine.data?.product?.Name;\r\n if (cartLine.error === resources.outOfStockErrorMessage) {\r\n return (\r\n \r\n {renderCartLineComment(cartLineComment, comment, cartLine.cartlineId!, cartLineProductTitle)}\r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n }\r\n\r\n if (isMultiplePickUp) {\r\n return (\r\n \r\n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {renderCartLineComment(cartLineComment, comment, cartLine.cartlineId!, cartLineProductTitle)}\r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n }\r\n\r\n if (cartLine.addToOrderTemplate) {\r\n return (\r\n \r\n {renderCartLineComment(cartLineComment, comment, cartLine.cartlineId!, cartLineProductTitle)}\r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {renderCartLineComment(cartLineComment, comment, cartLine.cartlineId!, cartLineProductTitle)}\r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Cart Lines.\r\n * @param cartLines - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param telemetryContent - The telemetry object.\r\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartlinesInternal = (notes: IAdvancedNoteEntity[], isPrintView: boolean, cartLines: ICartlinesViewProps[], resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined, cartLineComment: React.ReactNode | undefined, advancedNotes: React.ReactNode | undefined, telemetryContent?: ITelemetryContent, isMultiplePickUp?: boolean,\r\n emailDeliveryModeCode?: string): JSX.Element[] | JSX.Element => {\r\n return (\r\n cartLines.map((cartLine, index) => {\r\n const itemIndex = index;\r\n const itemId = cartLine.data?.product?.ItemId || '';\r\n return (\r\n
\r\n {cartLine.cartline}\r\n \r\n {isMultiplePickUp ? null : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {\r\n renderCartLine(cartLine, resources, storeSelector, cartLineComment, advancedNotes, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\r\n }\r\n \r\n {renderAdvancedNotes(isPrintView, advancedNotes, notes.filter(n => n.ItemId === itemId))}\r\n
\r\n );\r\n }));\r\n};\r\n\r\n/**\r\n * Render Cart Lines.\r\n * @param props - The cart line props.\r\n * @param cartLines - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param waitingComponent - Waiting component element.\r\n * @param cartLoadingStatus - Cart loading status string.\r\n * @param isCartDataResult - Flag to check if there is cart data.\r\n * @param telemetryContent - The telemetry object.\r\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartlines = (notes: IAdvancedNoteEntity[], isPrintView: boolean, props: ICartViewProps & ICartExtensionProps<{}>, cartLines: ICartlinesViewProps[] | undefined, resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined, waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string, isCartDataResult: boolean, pagination: React.ReactNode,\r\n paginatedView: ICartlinesViewProps[] | undefined,telemetryContent?: ITelemetryContent, isMultiplePickUp?: boolean,\r\n emailDeliveryModeCode?: string): JSX.Element[] | JSX.Element => {\r\n const { slots: { cartLineComment, orderLevelComment, advancedNotes } } = props;\r\n if (cartLoadingStatus) {\r\n return (<>\r\n {cartLoadingStatus}\r\n );\r\n }\r\n\r\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\r\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\r\n // if (cartLines) {\r\n if (paginatedView) {\r\n return props.multiplePickUpEnabled ? (\r\n <>\r\n {pagination}\r\n {renderCartlinesInternal(notes, isPrintView, /*cartLines*/ paginatedView, resources, storeSelector, cartLineComment, advancedNotes, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\r\n {pagination}\r\n {renderOrderLevelComment(isPrintView, orderLevelComment)}\r\n \r\n ) : (\r\n <>\r\n \r\n {/*
*/}\r\n {/* {renderCartlinesInternal(notes, isPrintView, cartLines, resources, storeSelector, cartLineComment, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}*/}\r\n {/*
*/}\r\n {pagination}\r\n {renderCartlinesInternal(notes, isPrintView, /*cartLines*/ paginatedView, resources, storeSelector, cartLineComment, advancedNotes, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\r\n {pagination}\r\n {renderOrderLevelComment(isPrintView, orderLevelComment)}\r\n
\r\n \r\n );\r\n }\r\n\r\n return (isCartDataResult ? (\r\n
\r\n
\r\n {props.slots.emptyCart}\r\n
\r\n
\r\n ) : <>\r\n {waitingComponent}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Cart Lines group title.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param count - Count of products.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\r\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\r\n const { itemLabel, itemsLabel } = resources;\r\n const itemCountOne: number = 1;\r\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\r\n const countTitle = `(${count} ${suffix})`;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ?

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {\", \"}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

: null}\r\n

\r\n {countTitle}\r\n

\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Cart Lines group title.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param count - Count of products.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartLinesGroupHeader = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number, emailDeliveryModeCode?: string) => {\r\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\r\n const { pickUpText, shippingText, emailshippingText } = resources;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n \r\n

\r\n {groupTitle}\r\n

\r\n {renderCartLinesGroupTitle(cartLine, resources, count)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Returns count of products.\r\n * @param cartLine - The cart line view props.\r\n * @returns Number of products.\r\n */\r\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\r\n let countItem = 0;\r\n const defaultItemCount = 0;\r\n countItem = cartLine.reduce((count, item) => {\r\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\r\n\r\n }, defaultItemCount);\r\n return countItem;\r\n};\r\n\r\n/**\r\n * Render Cart Lines group.\r\n * @param props - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartLinesGroup = (advancedNotes: IAdvancedNoteEntity[], isPrintView: boolean, props: ICartViewProps & ICartExtensionProps<{}>, resources: ICartResources,\r\n pagination: React.ReactNode,\r\n paginatedView: ICartlinesViewProps[] | undefined): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n {props.cartLinesGroup.map(cartlines => {\r\n return (
\r\n {renderCartLinesGroupHeader(cartlines[0], resources, countItems(cartlines),\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\r\n {renderCartlines(advancedNotes, isPrintView, props, cartlines, props.resources, props.storeSelector,\r\n props.waitingComponent, props.cartLoadingStatus, props.cartDataResult,\r\n pagination,\r\n paginatedView,props.telemetryContent, props.multiplePickUpEnabled, props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\r\n
);\r\n })}\r\n
\r\n );\r\n }\r\n return (props.cartDataResult ? (\r\n
\r\n
\r\n {props.slots.emptyCart}\r\n
\r\n
\r\n ) : <>\r\n {props.waitingComponent}\r\n \r\n );\r\n\r\n};\r\n\r\n/**\r\n * Render error block.\r\n * @param errorData - Error component.\r\n * @returns JSX Element.\r\n */\r\nconst renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render invoice summary.\r\n * @param invoiceSummaryLines - Invoice summary component.\r\n * @param orderSummaryItems - Order summary component.\r\n * @param props - The module props.\r\n * @returns JSX Element.\r\n */\r\nconst renderInvoiceSummarylines = (invoiceSummaryLines: IInvoiceSummaryLines | undefined, orderSummaryItems: INodeProps,\r\n props: ICartViewProps): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error(\"InvoiceSummary content is empty, module wont render\");\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render order summary.\r\n * @param orderSummaryLines - Order summary component.\r\n * @param orderSummaryItems - Order summary items component.\r\n * @param props - The module props.\r\n * @returns JSX Element.\r\n */\r\nconst renderOrderSummarylines = (orderSummaryLines: IOrderSummaryLines | undefined, orderSummaryItems: INodeProps,\r\n props: ICartViewProps): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error(\"OrderSummary content is empty, module wont render\");\r\n return null;\r\n }\r\n return (\r\n \r\n {orderSummaryLines.subtotal}\r\n {/* {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null} */}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render error block.\r\n * @param promotions - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n \r\n {promotions.promotionSeeAllLink}\r\n \r\n {promotions.promotionDialog}\r\n \r\n\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render order summary checkout.\r\n * @param props - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderOrderSummaryCheckout = (props: ICartViewProps, renderClearCart: React.ReactNode): JSX.Element | undefined => {\r\n return (\r\n \r\n {props.cart?.hasInvoiceLine ? null : props.promoCode}\r\n \r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n \r\n {props.createTemplateFromCartButton}\r\n {renderClearCart}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Renders the clear cart button on the page. Clicking the button triggers the modal to confirm the action.\r\n *\r\n * @param {(e: React.SetStateAction) => void} setClearCartModalActive\r\n * @param {ICartResources} resources\r\n * @return {*} {React.ReactNode}\r\n */\r\nconst _renderClearCart = (\r\n setClearCartModalActive: (e: React.SetStateAction) => void,\r\n resources: ICartResources\r\n): React.ReactNode => (\r\n
\r\n setClearCartModalActive(true)}\r\n >\r\n {resources.clearCartButtonText}\r\n \r\n
\r\n);\r\n\r\n/**\r\n* Modal which is responsible for verifying the clear cart intention. Can either be dismissed or confirmed. If confirmed, will clear the cart.\r\n*\r\n* @param {(e: React.MouseEvent) => void} handleClearCart\r\n* @param {(e: React.SetStateAction) => void} setClearCartModalActive\r\n* @param {() => void} toggle\r\n* @param {boolean} clearCartModalActive\r\n* @param {ICartResources} resources\r\n* @return {*}\r\n*/\r\nconst _renderClearCartModal = (\r\n handleClearCart: (e: React.MouseEvent) => void,\r\n setClearCartModalActive: (e: React.SetStateAction) => void,\r\n toggle: () => void,\r\n clearCartModalActive: boolean,\r\n resources: ICartResources\r\n) => {\r\n const clearCartClassName = 'clearcart';\r\n\r\n /**\r\n * Renders the button area\r\n */\r\n const _renderButtonArea = (): React.ReactNode => (\r\n
\r\n \r\n \r\n
\r\n );\r\n\r\n return (\r\n \r\n {resources.clearCartHeader}\r\n {resources.clearConfirmBody}\r\n {_renderButtonArea()}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render order summary checkout button.\r\n * @param props - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\r\n return (\r\n \r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n \r\n );\r\n};\r\n\r\nconst _renderPrintView = (isPrintView: boolean,\r\n handlePrintViewChange: (e: React.MouseEventHandler) => void,\r\n printViewLabel: string\r\n): React.ReactNode => (\r\n
\r\n \r\n\r\n\r\n
\r\n);\r\n\r\n/**\r\n * Renders the advanced-notes that display all of the associated notes for each cart line item at the bottom of the item in the cart.\r\n */\r\n\r\nconst renderAdvancedNotes = (isPrintView: boolean, advancedNotes: React.ReactNode, notes: IAdvancedNoteEntity[]): React.ReactNode => {\r\n\r\n if (!advancedNotes) {\r\n return null;\r\n }\r\n\r\n return(\r\n
\r\n {React.cloneElement(advancedNotes[0] as React.ReactElement, { notes })}\r\n
\r\n )\r\n}\r\n\r\n/**\r\n * Renders the order-level-comment that displays a comment at the bottom of the cart.\r\n */\r\n\r\nconst renderOrderLevelComment = (isPrintView: boolean, orderLevelComment: React.ReactNode | undefined): React.ReactNode => {\r\n if (!orderLevelComment) {\r\n return null;\r\n }\r\n\r\n return(\r\n
\r\n {orderLevelComment}\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render cart view.\r\n * @param props - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps<{}>) => {\r\n\r\n const handlePrintViewChange = () => setIsPrintView(!isPrintView);\r\n const [isPrintView, setIsPrintView] = React.useState(false);\r\n const [advancedNotes, setAdvancedNotes] = React.useState(undefined);\r\n const printViewToggle = _renderPrintView(isPrintView, handlePrintViewChange, \"Print View\");\r\n const totalItemCountOne: number = 1;\r\n const defaultPageLength: number = 5;\r\n const updatedTitle = (\r\n

\r\n {props.resources.cartTitle}\r\n \r\n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? \"items\" : \"item\"})`}\r\n \r\n

\r\n );\r\n const getAdvancedNotes = async (): Promise => {\r\n const itemIds = props.cart?.cart.CartLines?.map(cl => cl.ItemId!) || [];\r\n if (!itemIds.length) {\r\n return;\r\n }\r\n getAdvancedNotesAsync({ callerContext: props.context.actionContext }, itemIds)\r\n .then(notes => {\r\n setAdvancedNotes(notes || []);\r\n })\r\n }\r\n\r\n const pageLength = props.config.pageLength || defaultPageLength;\r\n\r\n const [paginatedView, setPaginatedView] = React.useState(\r\n props.cartlines && props.cartlines.length >= pageLength ? props.cartlines.slice(0, pageLength) : props.cartlines\r\n );\r\n const [paginationPage, setPaginationPage] = React.useState(0);\r\n const [clearCartModalActive, setClearCartModalActive] = React.useState(false);\r\n\r\n const handleClearCart = () => {\r\n const cart = props.cart;\r\n const cartlines = cart?.cart.CartLines;\r\n\r\n if (cart && cartlines) {\r\n let ids = { cartLineIds: Array() };\r\n cartlines.map(c => (c.LineId ? ids.cartLineIds.push(c.LineId) : null));\r\n cart.removeCartLines(ids);\r\n setClearCartModalActive(false);\r\n cart.refreshCart({});\r\n }\r\n };\r\n\r\n /**\r\n * Utility class to easily go up one page\r\n */\r\n const nextPage = () => {\r\n changePage(paginationPage + 1);\r\n};\r\n\r\n/**\r\n * Utility class to easily go down one page\r\n */\r\nconst prevPage = () => {\r\n changePage(paginationPage - 1);\r\n};\r\n\r\n/**\r\n * Update the state of @const paginationPage and @const paginatedView to the given page, folliowing some logic\r\n * to prevent the page from going into the negatives or beyond the maximum page length.\r\n *\r\n * @param {number} page\r\n * @return {*}\r\n */\r\nconst changePage = (page: number) => {\r\n if (page < 0) {\r\n return;\r\n }\r\n\r\n if (props.cartlines && page >= props.cartlines.length / pageLength) {\r\n page = props.cartlines.length / pageLength - 1;\r\n }\r\n\r\n let skip = page * pageLength;\r\n if (props.cartlines && props.cartlines.length >= skip) {\r\n setPaginationPage(page);\r\n let slice = props.cartlines?.slice(skip);\r\n setPaginatedView(slice.length >= pageLength ? slice.slice(0, pageLength) : slice);\r\n }\r\n};\r\n\r\n React.useEffect(() => {\r\n if (!advancedNotes)\r\n void getAdvancedNotes();\r\n }, [props.data])\r\n\r\n React.useEffect(() => {\r\n changePage(paginationPage);\r\n }, props.cartlines);\r\n\r\n const toggle = () => setClearCartModalActive(!clearCartModalActive);\r\n const renderClearCart = _renderClearCart(setClearCartModalActive, props.resources);\r\n\r\n let pagination = (\r\n \r\n );\r\n\r\n return (\r\n
\r\n {updatedTitle}\r\n
\r\n {props.orderSummaryLineitems?.orderTotal}\r\n
\r\n {renderOrderSummaryCheckoutButton(props)}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? renderCartLinesGroup(advancedNotes || [], isPrintView, props, props.resources, pagination, paginatedView) : renderCartlines(advancedNotes || [], isPrintView, props, props.cartlines,\r\n props.resources, props.storeSelector, props.waitingComponent, props.cartLoadingStatus, props.cartDataResult, pagination, paginatedView)}\r\n {props.orderSummaryHeading &&\r\n \r\n {printViewToggle}\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine ? renderInvoiceSummarylines(\r\n props.invoiceSummaryLineitems, props.OrderSummaryItems, props) : renderOrderSummarylines(\r\n props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {renderErrorBlock(props.OrderSummaryErrors)}\r\n \r\n {renderOrderSummaryCheckout(props, renderClearCart)}\r\n }\r\n {props.storeSelector}\r\n {_renderClearCartModal(handleClearCart, setClearCartModalActive, toggle, clearCartModalActive, props.resources)}\r\n
\r\n );\r\n};\r\n\r\nexport default CartView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { FooterItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n );\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return (EditableLink);\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FooterItemView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport getAttributesForSelectedVariant, { AttributesForSelectedVariantInput } from './dataActions/get-attributes-for-selected-variant';\nimport ProductSpecification from './modules/product-specification/product-specification';\nimport ProductSpecificationView from './modules/product-specification/product-specification.view';\n\nexport * from './modules/product-specification/components/product-specification-table-stucture';\nexport * from './modules/product-specification/product-specification';\nexport * from './modules/product-specification/product-specification.data';\nexport * from './modules/product-specification/product-specification.props.autogenerated';\nexport * from './modules/product-specification/product-specification.view';\nexport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant, ProductSpecification, ProductSpecificationView };\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressViewProps } from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressConfig, ICheckoutShippingAddressProps } from '../definition-extensions/checkout-shipping-address.ext.props.autogenerated';\r\n\r\ninterface IAddressAddUpdateExtProps extends IAddressAddUpdateProps {\r\n shipUsaOnlyMessageText: string;\r\n}\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Select Component.\r\n * @param param0 - Root param.\r\n * @param param0.SelectAddress - Select address.\r\n * @param param0.addButton - Add button.\r\n * @param param0.items - IAddressSelectItem[].\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - SelectAddress Node.\r\n */\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {addButton}\r\n {items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n \r\n {item.input}\r\n \r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n shipUsaOnlyMessageText\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {renderDeliveryLimitationMessage(shipUsaOnlyMessageText)}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst renderDeliveryLimitationMessage = (shipUsaOnlyMessageText: string) => (\r\n
\r\n
\r\n \r\n {shipUsaOnlyMessageText}\r\n
\r\n
\r\n);\r\n\r\n/**\r\n * Checkout Shipping Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutShippingAddress Module.\r\n */\r\nconst CheckoutShippingAddressView: React.FC> = props => {\r\n const {\r\n CheckoutShippingAddress,\r\n checkoutErrorRef,\r\n alert,\r\n viewState,\r\n showAddress,\r\n showAddressSelect,\r\n showAddOrUpdateAddress,\r\n cartLineImages,\r\n resources\r\n } = props;\r\n\r\n return (\r\n \r\n {alert}\r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
\n

{props.resources.headingForEmptyRequestStatus}

\n

{props.resources.textForEmptyRequestStatus}

\n \n \n {continueShoppingButtonTitle}\n \n \n
\n
\n
\n );\n }\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n {orderInfomation && }\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Categories heading.\n * @param inCategoriesHeading - The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderCategorySuggestionsTitle = (inCategoriesHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = inCategoriesHeading ? inCategoriesHeading : 'In categories';\n\n return
{categoryAutoSuggestionHeading}
;\n};\n\n/**\n * Render Categories suggestion result.\n * @param inCategoriesHeading - The Categories result heading.\n * @param noResultText - The \"No Result\" text.\n * @param props - The Categories suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const CategorySuggestionsComponent = (\n inCategoriesHeading: string,\n noResultText: string,\n props: ISearchViewProps & ISearchProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return props.autosuggestCategory ? (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n props.autosuggestCategory.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n
  • {noResultText}
  • \n
    \n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n const imageSettings = {\n lazyload: true,\n viewports: {\n xs: { w: 100, h: 100, q: 'w=100&h=100&q=60&m=6' }\n }\n };\n return (\n \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param props -The props.\n * @returns The JSX Element.\n */\nexport const MobileAutoSuggestEmptyComponent = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    \n
    {props.resources.emptyMobileSearchTextHeading}
    \n
    {props.resources.emptyMobileSearchText}
    \n
    \n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchData, ISearchFormViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\nimport { MobileAutoSuggestEmptyComponent } from './search.mobile.empty';\n\n/**\n * Render Clear button for mobile viewport.\n * @param clearSearchButtonText -The Clear button text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nconst renderClearButton = (clearSearchButtonText: string, clearSearch: () => void): JSX.Element => {\n return (\n \n );\n};\n\n/**\n * Render Search form.\n * @param form -Form view props.\n * @param searchForm -Search Form props.\n * @param formWrapper -Form Wrapper props.\n * @param isMobile -Is mobile viewport flag.\n * @param clearSearchButtonText -The Clear button text.\n * @param props -The props for resource.\n * @param isSearchText -Is SearchText flag for input text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nexport const FormComponent = (\n form: ISearchFormViewProps,\n searchForm: INodeProps,\n formWrapper: INodeProps,\n isMobile: boolean,\n clearSearchButtonText: string,\n props: ISearchProps,\n isSearchText: boolean,\n clearSearch: () => void\n): JSX.Element => {\n const cancelButtonNode = (\n \n );\n\n return isMobile ? (\n \n {form.cancelBtn}\n \n {form.input}\n {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\n {!isSearchText ? MobileAutoSuggestEmptyComponent(props) : null}\n \n \n ) : (\n \n \n {form.submitBtn}\n {form.input}\n {isSearchText && cancelButtonNode}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchKeywordViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Render keywords heading.\n * @param keywordsHeading -The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderKeywordSuggestionsTitle = (keywordsHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = keywordsHeading ? keywordsHeading : 'Keywords';\n\n return
    {categoryAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render keywords reults.\n * @param keywordSuggest -The Keywords suggest Node props.\n * @param ulKeyword -The List Node props.\n * @param keywordsHeading -The Keywords result heading.\n * @param noResultText -The \"No Result\" text.\n * @param keywordSuggestions -The Keywords suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns -The JSX Element.\n */\nexport const KeywordSuggestionsComponent = (\n keywordSuggest: INodeProps,\n ulKeyword: INodeProps,\n keywordsHeading: string,\n noResultText: string,\n keywordSuggestions?: ISearchKeywordViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return keywordSuggestions ? (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n keywordSuggestions.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n
  • {noResultText}
  • \n
    \n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData, ISearchProductViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param productSuggestionsHeading -The products suggestion result heading.\n * @returns The JSX Element.\n */\nconst renderProductSuggestionsTitle = (productSuggestionsHeading: string): JSX.Element => {\n const productAutoSuggestionHeading = productSuggestionsHeading ? productSuggestionsHeading : 'Products';\n\n return
    {productAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n return (\n \n );\n};\n\n/**\n * Render Products No result section.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResults = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    {props.resources.noResultContentHeadingText}
    \n
    \n {props.resources.noResultContentParagraphText}\n
    \n
    \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param productSuggest -The product suggest Node props.\n * @param ulProduct -The List Node props.\n * @param props -The props.\n * @param productSuggestions -The Product suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const ProductSuggestionsComponent = (\n productSuggest: INodeProps,\n ulProduct: INodeProps,\n props: ISearchProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n const liProduct: INodeProps = {\n tag: 'li',\n className: 'msc-no-result-content'\n };\n return productSuggestions ? (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {item.price}\n \n \n );\n })}\n \n \n ) : (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {renderProductNotFoundResults(props)}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ISearchData, ISearchFormViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, format, isMobile, Module, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { ISearchProps } from '../definition-extensions/search.ext.props.autogenerated';\nimport { CategorySuggestionsComponent } from './components/search.categorysuggest';\nimport { FormComponent } from './components/search.form';\nimport { KeywordSuggestionsComponent } from './components/search.keywordsuggest';\nimport { ProductSuggestionsComponent } from './components/search.productsuggest';\n\n/**\n * Render Title for AutoSuggest.\n * @param searchSuggestionHeading -The heading resource string.\n * @param searchText -The search string.\n * @returns -The JSX Element.\n */\nconst renderTitle = (searchSuggestionHeading: string, searchText: string): JSX.Element => {\n const searchTextString = '\"'.concat(searchText.concat('\"'));\n const searchAutoSuggestionHeading = searchSuggestionHeading\n ? format(searchSuggestionHeading, searchTextString)\n : `Search for ${searchTextString}`;\n\n return {searchAutoSuggestionHeading};\n};\n\n/**\n * Search View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst SearchView: React.FC> = (\n props: ISearchViewProps & ISearchProps\n): JSX.Element => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n KeywordSuggest,\n ProductSuggest,\n UlKeyword,\n UlProduct,\n form,\n autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n label,\n context,\n isLoadingAutoSuggest,\n isLoadingNode,\n callbacks: { handleCancelSearchFocused }\n } = props;\n\n const { searchSuggestionHeading, categorySuggestionHeading, keywordsHeading, noResultText, clearSearchButtonText } = props.resources;\n\n const [searchTextString, setSearchTextString] = useState();\n const [isMobilePort, setIsMobile] = useState(false);\n\n useEffect(() => {\n setSearchTextString(searchText);\n }, [searchText]);\n\n /**\n * ClearSearch callback method to clear search string.\n */\n const clearSearch = (): void => {\n setSearchTextString('');\n\n const propsForm = props.form as ISearchFormViewProps;\n const propsFormInput = propsForm.input as React.DetailedHTMLProps, HTMLInputElement>;\n const propsFormInputCurrent = (propsFormInput.ref as React.RefObject).current;\n\n if (propsFormInputCurrent) {\n propsFormInputCurrent.value = '';\n }\n\n propsFormInput.value = '';\n props.searchText = '';\n props.FormWrapper.action = '';\n };\n\n const isMobileViewport = useCallback(() => {\n const isMobileView = isMobile({ variant: VariantType.Browser, context: context.request }) === 'xs';\n setIsMobile(isMobileView);\n }, [context]);\n\n useEffect(() => {\n window.addEventListener('resize', isMobileViewport);\n isMobileViewport();\n }, [isMobileViewport]);\n\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isMobileView = viewport === 'sm' || viewport === 'xs';\n\n AutoSuggest.className = !StringExtensions.isNullOrEmpty(searchTextString)\n ? `${AutoSuggest.className} show`\n : `${AutoSuggest.className} hide`;\n const isSearchText: boolean = !StringExtensions.isNullOrEmpty(searchTextString);\n\n return (\n \n {label}\n {FormComponent(\n form as ISearchFormViewProps,\n SearchForm,\n FormWrapper,\n isMobilePort,\n clearSearchButtonText,\n props,\n isSearchText,\n clearSearch\n )}\n {!isMobileView && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n \n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n {isMobileView && props.isSearchFormExpanded && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n {(form as ISearchFormViewProps).cancelBtn}\n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n \n );\n};\nexport default SearchView;\n","import React from 'react';\r\n// import { ICartResources } from '../../definition-extensions/cart.ext.props.autogenerated';\r\n// import { ICheckoutResources } from '../../definition-extensions/checkout.ext.props.autogenerated';\r\n\r\n\r\ninterface ILinePaginationProps {\r\n nextPage: (e: React.MouseEvent) => void,\r\n prevPage: (e: React.MouseEvent) => void,\r\n changePage: (page: number) => void,\r\n currentPage: number,\r\n numPages: number,\r\n prev: string,\r\n next: string\r\n}\r\n\r\n/**\r\n * Renders pagination navigation on the page, which displays 4 buttons that allow\r\n * user to navigate to the first, last, next or previous pages. Also displays \r\n * the current page out of the total number of pages. ( ie. 5/7 )\r\n *\r\n * @param {(e: React.MouseEvent) => void} nextPage\r\n * @param {(e: React.MouseEvent) => void} prevPage\r\n * @param {(page: number) => void} changePage\r\n * @param {number} currentPage\r\n * @param {number} numPages\r\n * @param {ICartResources} resources\r\n * @return {*} {React.ReactNode}\r\n */\r\nexport const LinePagination : React.FC = ({\r\n nextPage,\r\n prevPage,\r\n changePage,\r\n currentPage,\r\n numPages,\r\n prev,\r\n next}) => {\r\n const firstPage: number = 1;\r\n \r\n return (\r\n \r\n
    \r\n {numPages > 0 &&\r\n <>\r\n {/* {currentPage !== 0 && */}\r\n <>\r\n \r\n \r\n \r\n {/* } */}\r\n
    \r\n \r\n {currentPage + 1} / {numPages}\r\n \r\n
    \r\n {/* {currentPage !== numPages && */}\r\n <>\r\n \r\n \r\n \r\n {/* } */}\r\n \r\n }\r\n
    \r\n )};\r\n \r\n ","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport QRCode from 'qrcode.react';\nimport * as React from 'react';\n\n/**\n * CheckInConfirmation component Properties.\n */\nexport interface ICheckInConfirmationProps {\n /**\n * The confirmation text to show.\n */\n confirmationText: string;\n\n /**\n * Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n */\n shouldShowQrCode: boolean;\n\n /**\n * The label shows for channel reference ID.\n */\n channelReferenceIdLabel: string;\n\n /**\n * The channel reference ID to show. When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n */\n channelReferenceId?: string;\n}\n\n/**\n * CheckInConfirmation component for showing confirmation information after check-in succeed.\n * @param confirmationProps - The confirmation properties.\n * @param confirmationProps.confirmationText - The confirmation text.\n * @param confirmationProps.shouldShowQrCode - Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n * @param confirmationProps.channelReferenceIdLabel - The label shows for channel reference ID.\n * @param confirmationProps.channelReferenceId - The channel reference ID to show.\n * When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n * @returns The check-in confirmation component.\n */\nexport const CheckInConfirmationComponent: React.FC = ({\n confirmationText,\n shouldShowQrCode,\n channelReferenceIdLabel,\n channelReferenceId\n}) => {\n return (\n
    \n

    {confirmationText}

    \n {channelReferenceId && (\n

    \n {`${channelReferenceIdLabel} ${channelReferenceId}`}\n

    \n )}\n {channelReferenceId && shouldShowQrCode && (\n \n \n \n )}\n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * Check-in error properties.\n */\nexport interface ICheckInErrorProps {\n errorMessage?: string;\n}\n\n/**\n * Check-in error.\n * @param errorProps - The error properties.\n * @param errorProps.errorMessage - The error message to show.\n * @returns The alert element showing check-in errors.\n */\nexport const CheckInErrorComponent: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IDictionary } from '@msdyn365-commerce/core';\nimport { CommerceProperty, SalesOrdersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { CheckInConfirmationComponent } from './check-in-confirmation';\nimport { CheckInErrorComponent } from './check-in-error';\nimport { IAdditionalInformationKeysData, ICheckInForPickupConfig, ICheckInForPickupProps } from './check-in-for-pickup.props.autogenerated';\n\n/**\n * The interface representing a piece of additional information data.\n */\ninterface IAdditionalInformation {\n formKey: IAdditionalInformationKeysData;\n value: string;\n}\n\n/**\n * The state for check-in view.\n */\nexport interface ICheckInViewState {\n /**\n * If the module has header error to show.\n */\n isHeaderError: boolean;\n\n /**\n * If the customer has checked in.\n */\n isCheckedIn: boolean;\n\n /**\n * Additional information to capture.\n */\n additionalInformation: IDictionary[];\n}\n\n/**\n * The properties for check-in view.\n */\nexport interface ICheckInViewProps extends ICheckInForPickupProps {\n headerError: React.ReactNode;\n confirmationComponent: React.ReactNode;\n viewState: ICheckInViewState;\n additionalInformationValues: string[];\n checkInForOrderPickup(additionalInformation?: IAdditionalInformation[]): Promise;\n}\n\n/**\n * The state of the CheckInForPickup module.\n */\nexport interface ICheckInForPickupState {\n /**\n * The header error message.\n */\n headerErrorMessage: string;\n\n /**\n * If the customer has checked in successfully.\n */\n isCheckedIn: boolean;\n}\n\n/**\n *\n * CheckIn component.\n * @extends {React.Component, ICheckInForPickupState>}\n */\nclass CheckInForPickup extends React.Component, ICheckInForPickupState> {\n public constructor(props: ICheckInForPickupProps) {\n super(props);\n this.state = {\n headerErrorMessage: '',\n isCheckedIn: false\n };\n }\n\n public render(): JSX.Element | null {\n const isHeaderError: boolean = this.state.headerErrorMessage !== '';\n\n const viewProps = {\n ...this.props,\n headerError: ,\n confirmationComponent: (\n \n ),\n checkInForOrderPickup: this.checkInForOrderPickup,\n additionalInformationValues: this.props.config.additionalInformationKeys\n ? this.props.config.additionalInformationKeys.map(() => {\n return {};\n })\n : undefined,\n viewState: {\n isHeaderError,\n isCheckedIn: this.state.isCheckedIn\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public shouldComponentUpdate(nextProps: ICheckInForPickupProps, nextState: ICheckInForPickupState): boolean {\n if (\n this.props.config.additionalInformationHeading !== nextProps.config.additionalInformationHeading ||\n this.props.config.confirmationText !== nextProps.config.confirmationText\n ) {\n return true;\n }\n if (this.state.headerErrorMessage !== nextState.headerErrorMessage || this.state.isCheckedIn !== nextState.isCheckedIn) {\n return true;\n }\n return false;\n }\n\n public async componentDidMount(): Promise {\n await this._onInit();\n }\n\n /**\n * The async callback for submitting check-in.\n * @param additionalInformationList - The optional additional information captured.\n * @returns The async result.\n */\n public checkInForOrderPickup = async (additionalInformationList?: IAdditionalInformation[]): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query!.channelId, 10);\n const channelReferenceId: string = this.props.context.request.query!.channelReferenceId;\n const packingSlipId: string = this.props.context.request.query!.packingSlipId;\n\n const additionalInformationToSubmit: { formKey: string; value: string }[] | undefined = additionalInformationList?.map(\n additionalInformationKeyValuePair => {\n return {\n formKey: additionalInformationKeyValuePair.formKey.resourceId ?? '',\n value: additionalInformationKeyValuePair.value\n };\n }\n );\n const extensionPropertyList: CommerceProperty[] = [];\n if (!ObjectExtensions.isNullOrUndefined(additionalInformationToSubmit)) {\n for (const additionalInformation of additionalInformationToSubmit) {\n extensionPropertyList.push({\n Key: additionalInformation.formKey,\n Value: {\n StringValue: additionalInformation.value\n }\n });\n }\n }\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId,\n extensionPropertyList\n );\n } catch (error) {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false });\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n return Promise.resolve();\n };\n\n /**\n * The action performed on module initialization.\n * @returns The async result.\n */\n private readonly _onInit = async (): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query?.channelId ?? '', 10);\n const channelReferenceId: string | undefined = this.props.context.request.query?.channelReferenceId;\n const packingSlipId: string | undefined = this.props.context.request.query?.packingSlipId;\n if (Number.isNaN(channelId) || !channelReferenceId || !packingSlipId) {\n // No error message shown in editor mode.\n if (this.props.context.request.params.isEditor) {\n return Promise.resolve();\n } else if (this.props.context.request.params.isPreview) {\n this.setState({ headerErrorMessage: this.props.resources.requiredParameterMissingErrorMessage });\n } else {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage });\n }\n this.props.context.telemetry.error(\n 'One or more required URL parameters are missing. ' +\n 'Please make sure you have pass in channelId, channelReferenceId and packingSlipId through URL parameter.'\n );\n return Promise.resolve();\n }\n\n const { additionalInformationKeys } = this.props.config;\n\n const hasAdditionalInformation: boolean = ArrayExtensions.hasElements(additionalInformationKeys);\n\n // Call check-in-for-pickup directly if no additional information to capture.\n if (!hasAdditionalInformation) {\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId\n );\n } catch (error) {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false });\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n }\n return Promise.resolve();\n };\n}\n\nexport default CheckInForPickup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IPasswordResetInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst PasswordResetInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default PasswordResetInput;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { FooterItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n );\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return (EditableLink);\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FooterItemView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps,\n ISignInButton\n} from '@msdyn365-commerce-modules/account-management';\n\nimport { ISignInProps, ISignInResources } from '../definition-extensions/sign-in.ext.props.autogenerated';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nconst signUpButton: React.FC> = (\n props: ISignInViewProps & ISignInProps\n) => {\n const {\n resources,\n telemetry,\n friendlyName,\n context: {\n request: { telemetryPageName }\n }\n } = props;\n const telemetryContent = getTelemetryObject(telemetryPageName!, friendlyName, telemetry);\n const attributes = {\n href: '#'\n };\n\n return (\n \n );\n};\n\nconst SignInView: React.FC> = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpButton(props)}\n \n
    \n
    \n or\n
    \n {B2BAccount(signInB2BAccount)}\n
    \n
    \n
    \n );\n};\n\nexport default SignInView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst PasswordResetButton: React.FC = ({ id, className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default PasswordResetButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { FormBuilder } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckInViewProps } from './check-in-for-pickup';\n\n/**\n * The check-in view for submitting check-in, capturing additional information, and showing check-in confirmation.\n * @param props - The check-in view properties.\n * @returns The check-in view as a react component.\n */\nconst CheckInViewComponent: React.FC = (props: ICheckInViewProps) => {\n const { headerError, checkInForOrderPickup, confirmationComponent, viewState } = props;\n return (\n <>\n {viewState.isHeaderError && headerError}\n {!viewState.isHeaderError && ArrayExtensions.hasElements(props.config.additionalInformationKeys) && (\n \n )}\n {!viewState.isHeaderError &&\n !ArrayExtensions.hasElements(props.config.additionalInformationKeys) &&\n viewState.isCheckedIn &&\n confirmationComponent}\n \n );\n};\n\nexport default CheckInViewComponent;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-add';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-select';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-show';\r\nimport { ICheckoutShippingAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/./checkout-shipping-address';\r\nimport GetProductEligibilityAction, {\r\n GetProductEligibilityInput\r\n} from \"../../../actions/get-product-eligibility.action\";\r\nimport { CommercePropertyValueEnum } from \"../../../modules/allowable-freight/utils/CommercePropertyValueEnum\";\r\nimport { CommerceProperty } from \"@msdyn365-commerce/retail-proxy\";\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Select Component.\r\n * @param param0 - Root param.\r\n * @param param0.SelectAddress - Select address.\r\n * @param param0.addButton - Add button.\r\n * @param param0.items - IAddressSelectItem[].\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - SelectAddress Node.\r\n */\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n\r\n return (\r\n \r\n {addButton}\r\n {items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n {item.input}\r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Checkout Shipping Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutShippingAddress Module.\r\n */\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress, cartLineImages } = props;\r\n const address = props.data.checkout.result?.shippingAddress;\r\n const [ nonEligibleItems, setnonEligibleItems ] = React.useState([]);\r\n React.useEffect(() => {\r\n void checkEligibilityForShippingAddress();\r\n }, [address])\r\n React.useEffect(() => {\r\n props.moduleState.setHasError(true);\r\n }, [])\r\n\r\n const _getExtensionPropertyValueByKey = (\r\n properties: CommerceProperty[] | undefined,\r\n key: string,\r\n valueType: CommercePropertyValueEnum\r\n ) => {\r\n const property = properties?.find(p => p.Key === key)?.Value;\r\n\r\n // eslint-disable-next-line security/detect-object-injection\r\n const val = property ? property[valueType] : null;\r\n return val;\r\n };\r\n\r\n\r\n const checkEligibilityForShippingAddress = async () => {\r\n const notEligibleList: string[] = [];\r\n const cart = props.data.checkout.result?.checkoutCart?.cart;\r\n if (cart && address) {\r\n const itemIds = cart.CartLines?.map(cl => cl.ItemId!) || [];\r\n const addressCountry = address.ThreeLetterISORegionName || null;\r\n const addressState = address.State || null;\r\n const addressRegion = address.County || null;\r\n const input = new GetProductEligibilityInput(itemIds, true, cart.Id || '', addressCountry, addressState, addressRegion);\r\n const eligibilityData = await GetProductEligibilityAction(input, props.context.actionContext);\r\n if (eligibilityData.length) {\r\n eligibilityData.forEach((i: any) => {\r\n const id = _getExtensionPropertyValueByKey(i.ExtensionProperties, 'ItemId', CommercePropertyValueEnum.string);\r\n if (!i.IsEligible) {\r\n notEligibleList.push(id as string);\r\n }\r\n });\r\n }\r\n }\r\n setnonEligibleItems(notEligibleList);\r\n props.moduleState.setHasError(notEligibleList.length > 0);\r\n }\r\n\r\n const renderCartError = () => {\r\n if (!nonEligibleItems.length) {\r\n return null;\r\n }\r\n return (\r\n
    \r\n

    \r\n The following items are not eligible for your current shipping address. Please remove them from the cart or change your address:\r\n

    \r\n {nonEligibleItems.map(i => {\r\n const item = getCartLineFromItemId(i);\r\n return

    {item?.ItemId} - {item?.Description}

    \r\n })}\r\n \r\n
    \r\n )\r\n }\r\n\r\n const removeIneligibleItems = async () => {\r\n const cartState = props.data.cart.result;\r\n const checkoutState = props.data.checkout.result;\r\n const badCartLines: string[] = [];\r\n cartState!.cart.CartLines!.forEach(cl => {\r\n if (nonEligibleItems.includes(cl.ItemId!)) {\r\n badCartLines.push(cl.LineId!);\r\n }\r\n })\r\n await checkoutState!.checkoutCart.removeCartLines({cartLineIds: badCartLines});\r\n await cartState!.removeCartLines({cartLineIds: badCartLines});\r\n window.location.reload();\r\n }\r\n\r\n const getCartLineFromItemId = (itemId: string) => props.data.checkout.result?.checkoutCart.cart.CartLines?.find(i => i.ItemId === itemId)\r\n return (\r\n \r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n {renderCartError()}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default PasswordResetLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingIcon {\n className: string;\n}\n\nconst PasswordResetLoadingIcon: React.FC = ({ className }) =>
    ;\n\nexport default PasswordResetLoadingIcon;\n"],"sourceRoot":""}