{"version":3,"sources":["webpack:///./src/modules/wine-club-signup/components/membership.tsx?ddfb","webpack:///./src/modules/wine-club-signup/wine-club-data.ts?aeec","webpack:///./src/modules/wine-club-signup/wine-club-signup.tsx?a7fb","webpack:///./src/modules/page-tos/components/tos-checkbox.tsx?4088","webpack:///./src/modules/page-tos/page-tos.view.tsx?5b0c","webpack:///./src/modules/cartmanager/cart-verified.ts?5da1","webpack:///./src/modules/wine-club-signup/components/club.tsx?554a","webpack:///./src/modules/wine-club-signup/wine-club-signup.view.tsx?4dd9","webpack:///./src/modules/wine-club-signup/components/shipping.tsx?5180","webpack:///./src/Utilities/event-bus.tsx?eb5b","webpack:///./src/modules/page-tos/page-tos.tsx?b437","webpack:///./src/modules/wine-club-signup/components/wine-preference.tsx?f2dd","webpack:///./src/themes/blend/views/wine-club-signup.view.tsx?ca0a","webpack:///./src/modules/wine-club-signup/components/signup.tsx?b2ba","webpack:///./src/modules/wine-club-signup/components/variant.tsx?0004"],"names":["MEMBER_TYPES","Membership","React","constructor","props","super","this","_onMemberTypeSelect","bind","_dataStore","WineClubDataStore","getInstance","render","wineClubSignup__stepThreeMembership","wineClubSignup__clubMemberGift","wineClubSignup__clubMemberSelf","resources","forMyself","get","className","config","chooseRecipient","title","subtitle","RichTextComponent","text","onClick","SELF","disabled","optionSelf","GIFT","optionGift","event","memberType","target","dataset","store","parseInt","edit","LOCAL_STORAGE_LOCATION","changeEvents","window","previousWineData","localStorage","getItem","reset","wineClubData","JSON","parse","onChange","instance","push","getDeliveryMapFromConfig","coreContext","app","wineClubShippingLabels","standard","pickup","premium","newData","forEach","_save","deleteKeys","keys","key","deliveryType","tosAgree","clubId","variantPreference","isInResetState","setItem","stringify","WineClubSignup","renderables","CHOOSE_CLUB","CHOOSE_PREFERENCE","SET_MEMBERSHIP","SET_SHIPPING","TERMS","SIGNUP","bus","subscribe","agreeState","_clubStore","_runClubValidation","_triggerRender","componentDidMount","_updateRenderables","renderView","clubInfo","wineClubSetup","clubImageSettings","variantImageSettings","moduleControl","debug","triggerRender","isOnlyClub","length","clubSignup","setState","__decorate","observable","LoadBus","observer","TosCheckbox","_modulePersist","location","doPersistance","_isChecked","_onAgreementChange","_applyPersistableTOS","type","checked","agreeText","publish","parentId","foundAPersist","find","module","startsWith","tosText","CartVerifier","isVerified","Club","_onWineClubSelect","state","additionalBenefitsState","_clubAdditionalBenefits","_clubDataStore","activeClass","id","benefitsCSS","_parseToCSS","club","Image","Object","clubImage","gridSettings","subHeader","priceRange","wineClubSignup__shipApproxCost","description","additionalBenefits","wineClubSignup__clubAdditionalBenefits","wineClubSignup__clubSelected","wineClubSignup__selectClub","parseString","toLowerCase","replace","ClubViewManager","chooseClub","wineClubSignup__stepOne","map","idx","context","request","imageSettings","Shipping","Signup","wineCheckout","signupText","WinePreference","Variant","termsConditions","wineClubSignup__stepFive","slots","tos","renderClubs","winePreference","variant","membershipSelector","shipping","termsAndConditions","renderSignup","_onDeliveryTypeChange","_onPickupLocationChange","wineClubSignup__shippingTitle","wineClubSignup__shippingDescription","pickupLocations","wineClubPickupLocations","locationLabels","shippingMethod","value","_displaySinglePickupLocation","_displayPickupLocations","disclaimer","_autoselectPickupLocation","pickupLocation","addressLabel","address","pickupLocationId","name","htmlFor","EventBusLoader","_buses","getBus","busNamespace","BusLoader","deleteBus","purge","_subscriptions","subName","onPublish","nextId","IdGenerator","_readyForDeletion","unsubscribe","_purgeById","args","idValue","Loader","eventNamespace","CHILD_COMP","Component","prototype","PageTos","_onVariantChangeByList","_onVariantChangeByButton","variants","_autoselectVariant","choosePreference","wineClubSignup__stepTwo","_renderAsButtons","_renderAsList","MEMBER_OPTION","BlendConfirmSMWEMember","isSmweMember","_onConfirmSelect","blendTitleSMWEMemberStatus","blendConfirmSMWEMemberStatus","wineClubSignup__blendTitle","wineClubProps","NOT_MEMBER","IS_MEMBER","selectType","_allowSignup","_cartVerified","_proceedToCheckout","_wineClubDataStore","change","_allowSignupLogic","reaction","wineClubSignup__signup","_addItem","catch","e","when","data","cart","result","CartLines","destinationUrl","href","itemId","_getClubItemId","CartUtilities","addItem","recordId","amount","wineClubs","cVariant","_toggleMobileState","buttonState","clubVariant","mobileButtonText","wineClubSignup__variantMembershipMobileClose","mobile","wineClubSignup__variantMembershipMobileOpen","reviewBenefits","wineClubSignup__stepThree","wineImage","wineClubSignup__variantMembershipSub"],"mappings":"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","file":"static/js/26.693ec305f984afd60512.chunk.js","sourcesContent":["import { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { WineClubDataStore } from '../wine-club-data';\r\nimport { IWineClubSignupConfig, IWineClubSignupResources } from '../wine-club-signup.props.autogenerated';\r\n\r\nexport interface IMembership {\r\n config: IWineClubSignupConfig;\r\n resources: IWineClubSignupResources;\r\n}\r\n\r\nenum MEMBER_TYPES {\r\n SELF,\r\n GIFT\r\n}\r\n\r\n/**\r\n * declaration of the membership type selector for the order\r\n */\r\nexport class Membership extends React.Component {\r\n\r\n private _dataStore: WineClubDataStore;\r\n\r\n constructor(props: IMembership) {\r\n super(props);\r\n\r\n this._onMemberTypeSelect = this._onMemberTypeSelect.bind(this);\r\n\r\n this._dataStore = WineClubDataStore.getInstance();\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n wineClubSignup__stepThreeMembership,\r\n wineClubSignup__clubMemberGift,\r\n wineClubSignup__clubMemberSelf\r\n } = this.props.resources;\r\n\r\n const { forMyself } = this._dataStore.get();\r\n\r\n return (\r\n
\r\n

{this.props.config.chooseRecipient?.title || wineClubSignup__stepThreeMembership}

\r\n {this.props.config.chooseRecipient?.subtitle && }\r\n
\r\n \r\n {this.props.config.chooseRecipient?.optionSelf || wineClubSignup__clubMemberSelf}\r\n \r\n \r\n {this.props.config.chooseRecipient?.optionGift || wineClubSignup__clubMemberGift}\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n private _onMemberTypeSelect(event: React.MouseEvent): void {\r\n const memberType = (event.target as HTMLButtonElement).dataset.memberType;\r\n const store = this._dataStore.get();\r\n\r\n if (parseInt(memberType || '', 10) === MEMBER_TYPES.SELF) {\r\n store.forMyself = true;\r\n }\r\n if (parseInt(memberType || '', 10) === MEMBER_TYPES.GIFT) {\r\n store.forMyself = false;\r\n }\r\n\r\n this._dataStore.edit(store);\r\n }\r\n}","import { ICoreContext } from '@msdyn365-commerce/core-internal';\r\nimport { wineClubShippingLabels } from '../../settings/app.settings';\r\n\r\nexport type WineClubDataRef = {\r\n variantPreference: string | null;\r\n forMyself: boolean | null;\r\n deliveryType: DeliveryType;\r\n clubId: number | null;\r\n tosAgree: boolean;\r\n pickupLocationId?: string;\r\n};\r\n\r\nexport type DeliveryType = 'STANDARD' | 'PREMIUM' | 'PICKUP';\r\nexport type DeletableKeys = 'variantPreference' | 'forMyself' | 'deliveryType' | 'clubId' | 'tosAgree' | 'pickupLocationId';\r\n\r\n/**\r\n * singleton class responsible for the users selections\r\n */\r\nexport class WineClubDataStore {\r\n private static instance: WineClubDataStore;\r\n\r\n private readonly LOCAL_STORAGE_LOCATION: string = 'WINE-CLUB-SELECTIONS';\r\n\r\n private wineClubData!: WineClubDataRef;\r\n\r\n private changeEvents: ((newData: WineClubDataRef) => void)[] = [];\r\n\r\n /**\r\n * get the current pages data\r\n * @returns singleton data of data store\r\n */\r\n public static getInstance(onChange?: (newData: WineClubDataRef) => void): WineClubDataStore {\r\n if (!WineClubDataStore.instance) {\r\n WineClubDataStore.instance = new WineClubDataStore();\r\n }\r\n\r\n if (onChange) {\r\n WineClubDataStore.instance.changeEvents.push(onChange);\r\n }\r\n\r\n return WineClubDataStore.instance;\r\n }\r\n\r\n // tslint:disable-next-line: no-any\r\n public getDeliveryMapFromConfig(coreContext: ICoreContext<{ [x: string]: any }>): {\r\n standard: string; premium: string; pickup: string;\r\n } {\r\n const config = coreContext.app.config.wineClubShippingLabels || {};\r\n return {\r\n standard: config.standard,\r\n pickup: config.pickup,\r\n premium: config.premium\r\n };\r\n }\r\n\r\n public edit(newData: WineClubDataRef): void {\r\n this.wineClubData = newData;\r\n this.changeEvents.forEach(event => event(newData));\r\n this._save();\r\n }\r\n\r\n public get(): WineClubDataRef {\r\n return { ...this.wineClubData };\r\n }\r\n\r\n public deleteKeys(...keys: DeletableKeys[]): void {\r\n keys.forEach(key => delete this.wineClubData[key]);\r\n this.changeEvents.forEach(event => event(this.wineClubData));\r\n this._save();\r\n }\r\n\r\n public reset(): WineClubDataStore {\r\n this.wineClubData = {\r\n deliveryType: 'STANDARD',\r\n tosAgree: false,\r\n forMyself: null,\r\n clubId: null,\r\n variantPreference: null\r\n };\r\n this.changeEvents.forEach(event => event(this.wineClubData));\r\n this._save();\r\n return this;\r\n }\r\n\r\n public isInResetState(): boolean {\r\n const {\r\n deliveryType,\r\n tosAgree,\r\n forMyself,\r\n clubId,\r\n variantPreference\r\n } = this.wineClubData;\r\n\r\n return deliveryType === 'STANDARD' &&\r\n tosAgree === false &&\r\n forMyself === null &&\r\n clubId === null &&\r\n variantPreference === null;\r\n }\r\n\r\n private constructor() {\r\n // tslint:disable-next-line: no-typeof-undefined\r\n if (typeof window !== 'undefined') {\r\n const previousWineData = window && window.localStorage.getItem(this.LOCAL_STORAGE_LOCATION);\r\n\r\n if (!previousWineData) {\r\n this.reset();\r\n return;\r\n }\r\n\r\n this.wineClubData = JSON.parse(previousWineData);\r\n }\r\n }\r\n\r\n private _save(): void {\r\n // tslint:disable-next-line: no-typeof-undefined\r\n if (typeof window !== 'undefined') {\r\n window.localStorage.setItem(this.LOCAL_STORAGE_LOCATION, JSON.stringify(this.wineClubData));\r\n }\r\n }\r\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { IImageSettings } from '@msdyn365-commerce/core';\r\n\r\nimport * as React from 'react';\r\nimport { WineClubDataStore } from './wine-club-data';\r\n\r\nimport { IWineClubSignupData } from './wine-club-signup.data';\r\nimport { IWineClubSignupProps } from './wine-club-signup.props.autogenerated';\r\n\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport { IWineClub, wineClubSetup } from '../../settings/app.settings';\r\nimport { BusLoader, LoadBus } from '../../Utilities/event-bus';\r\n\r\nexport interface IWineClubSignupViewProps extends IWineClubSignupProps {\r\n clubInfo: IWineClub[];\r\n clubImageSettings?: IImageSettings;\r\n variantImageSettings?: IImageSettings;\r\n moduleControl: renderables;\r\n debug: string;\r\n triggerRender(): void;\r\n}\r\n\r\n// !! TODO: ADD PICKUP WHEN MOCK IS READY\r\n\r\nexport type renderables = {\r\n CHOOSE_CLUB: boolean;\r\n CHOOSE_PREFERENCE: boolean;\r\n SET_MEMBERSHIP: boolean;\r\n SET_SHIPPING: boolean;\r\n TERMS: boolean;\r\n SIGNUP: boolean;\r\n};\r\n\r\n/**\r\n *\r\n * WineClubSignup component\r\n * @extends {React.Component>}\r\n */\r\n@LoadBus('tos')\r\n@observer\r\nclass WineClubSignup extends React.Component> {\r\n\r\n @observable private renderables: renderables = {\r\n CHOOSE_CLUB: false,\r\n CHOOSE_PREFERENCE: false,\r\n SET_MEMBERSHIP: false,\r\n SET_SHIPPING: false,\r\n TERMS: false,\r\n SIGNUP: false\r\n };\r\n\r\n private _clubStore: WineClubDataStore;\r\n private bus: BusLoader | undefined;\r\n\r\n public constructor(props: IWineClubSignupProps) {\r\n super(props);\r\n this.bus!.subscribe('tos-agreement-changed', (agreeState: boolean) => {\r\n const store = this._clubStore.get();\r\n store.tosAgree = agreeState;\r\n this._clubStore.edit(store);\r\n });\r\n\r\n this._clubStore = WineClubDataStore.getInstance();\r\n this._runClubValidation();\r\n this._triggerRender = this._triggerRender.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n WineClubDataStore.getInstance(() => {\r\n this._updateRenderables();\r\n });\r\n\r\n WineClubDataStore.getInstance().reset();\r\n\r\n // we need to set the renderables once\r\n this._updateRenderables();\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return this.props.renderView({\r\n clubInfo: this.props.app.config.wineClubSetup || [],\r\n clubImageSettings: this.props.config.clubImageSettings,\r\n variantImageSettings: this.props.config.variantImageSettings,\r\n moduleControl: this.renderables,\r\n debug: JSON.stringify(this._clubStore.get()),\r\n triggerRender: this._triggerRender,\r\n ...this.props\r\n });\r\n }\r\n\r\n private _updateRenderables(): void {\r\n const store = this._clubStore.get();\r\n\r\n // Detect if there is only one club set up.\r\n const wineClubs = this.props.app.config.wineClubSetup;\r\n const isOnlyClub = (wineClubs.length === 1);\r\n\r\n // If there is only one club and nothing is selected, select the club.\r\n if (isOnlyClub && store.clubId === null) {\r\n this._clubStore.edit({\r\n ...store,\r\n clubId: 0\r\n });\r\n }\r\n\r\n this.renderables = {\r\n CHOOSE_CLUB: !isOnlyClub, // If there is only one club, skip rendering the list of clubs.\r\n CHOOSE_PREFERENCE: store.clubId !== null,\r\n SET_MEMBERSHIP: store.clubId !== null && store.variantPreference !== null,\r\n SET_SHIPPING: store.clubId !== null && store.variantPreference !== null && store.forMyself !== null,\r\n TERMS: store.clubId !== null && store.variantPreference !== null && store.forMyself !== null,\r\n SIGNUP: store.clubId !== null && store.variantPreference !== null && store.forMyself !== null\r\n };\r\n }\r\n\r\n private _runClubValidation(): void {\r\n const store = this._clubStore.get();\r\n const clubSignup = this.props.app.config.wineClubSetup as wineClubSetup;\r\n\r\n // reset if out of bounds on club\r\n if (store.clubId && store.clubId > clubSignup.length - 1) {\r\n this._clubStore.reset();\r\n }\r\n\r\n // we don't need one for variant because thats done via a find, not direct\r\n // index lookup\r\n }\r\n\r\n /**\r\n * used within the view extension to retrigger a full component re-render\r\n *\r\n * preserves wine-club's code decoupling\r\n */\r\n private _triggerRender(): void {\r\n this.setState({});\r\n }\r\n}\r\n\r\nexport default WineClubSignup;\r\n","import * as React from 'react';\r\nimport { WineClubDataStore } from '../../wine-club-signup/wine-club-data';\r\nimport { IPageTosData } from '../page-tos.data';\r\nimport { IPageTosProps } from '../page-tos.props.autogenerated';\r\n\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport { BusLoader, LoadBus } from '../../../Utilities/event-bus';\r\n\r\nexport interface ITosCheckbox {\r\n props: IPageTosProps;\r\n}\r\n\r\n/**\r\n * renders the state of the TOS checkbox\r\n */\r\n@LoadBus('tos')\r\n@observer\r\nexport class TosCheckbox extends React.Component {\r\n\r\n private bus: BusLoader | undefined;\r\n\r\n // set of actions able to create persisted behaviour for the context of\r\n // where the module was placed\r\n private _modulePersist: { location: string; doPersistance(): void }[] = [\r\n {\r\n location: 'wine-club-signup',\r\n doPersistance: () => {\r\n const store = WineClubDataStore.getInstance().get();\r\n this._isChecked = store.tosAgree;\r\n }\r\n }\r\n ];\r\n\r\n @observable private _isChecked: boolean = false;\r\n\r\n constructor(props: ITosCheckbox) {\r\n super(props);\r\n\r\n this._onAgreementChange = this._onAgreementChange.bind(this);\r\n this._applyPersistableTOS();\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n \r\n
{this.props.props.resources.agreeText}
\r\n
\r\n );\r\n }\r\n\r\n private _onAgreementChange(): void {\r\n this._isChecked = !this._isChecked;\r\n this.bus!.publish('tos-agreement-changed', this._isChecked);\r\n }\r\n\r\n private _applyPersistableTOS(): void {\r\n // parent id is the parent that the module was slotted into, needs a bit\r\n // of cleanup, so we use startsWith as it ends with __XXXX\r\n const { parentId } = this.props.props;\r\n if (parentId) {\r\n const foundAPersist = this._modulePersist\r\n .find(module => parentId.startsWith(module.location));\r\n if (foundAPersist) {\r\n foundAPersist.doPersistance();\r\n }\r\n }\r\n }\r\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 { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { TosCheckbox } from './components/tos-checkbox';\r\nimport { IPageTosViewProps } from './page-tos';\r\n\r\nexport default (props: IPageTosViewProps) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n","\r\n/**\r\n * simple singleton just to know if the cart was verified\r\n */\r\nexport class CartVerifier {\r\n public static instance: CartVerifier = new CartVerifier();\r\n public isVerified: boolean = false;\r\n}","import { IGridSettings, IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { IWineClub } from '../../../settings/app.settings';\r\nimport { WineClubDataStore } from '../wine-club-data';\r\nimport { IWineClubSignupResources } from '../wine-club-signup.props.autogenerated';\r\nexport interface IClub {\r\n id: number;\r\n club: IWineClub;\r\n resources: IWineClubSignupResources;\r\n gridSettings: IGridSettings;\r\n imageSettings?: IImageSettings;\r\n}\r\n\r\nexport interface IClubState {\r\n additionalBenefitsState: boolean;\r\n}\r\n\r\n/**\r\n * responsible for rendering a single wine club item\r\n */\r\nexport class Club extends React.Component {\r\n\r\n private _clubDataStore: WineClubDataStore | undefined;\r\n\r\n public constructor(props: IClub) {\r\n super(props);\r\n\r\n this._onWineClubSelect = this._onWineClubSelect.bind(this);\r\n\r\n this.state = {\r\n additionalBenefitsState: false\r\n };\r\n\r\n this._clubAdditionalBenefits = this._clubAdditionalBenefits.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._clubDataStore = WineClubDataStore.getInstance();\r\n this.setState({});\r\n }\r\n\r\n public render(): JSX.Element {\r\n\r\n // SSR will never ready club so return empty\r\n if (!this._clubDataStore) { return
; }\r\n\r\n const store = this._clubDataStore.get();\r\n\r\n let activeClass = 'wine-club-signup-club-item';\r\n if (store.clubId === this.props.id) {\r\n activeClass = 'wine-club-signup-club-item active';\r\n }\r\n\r\n let benefitsCSS = 'closed';\r\n if (this.state.additionalBenefitsState) {\r\n benefitsCSS = 'open';\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {this.props.club.title}\r\n
\r\n
\r\n {this.props.club.subHeader}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {this.props.resources.wineClubSignup__shipApproxCost}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {this.props.resources.wineClubSignup__clubAdditionalBenefits}\r\n \r\n
\r\n {this.props.club.additionalBenefits &&
{this.props.resources.wineClubSignup__clubAdditionalBenefits}
}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _clubAdditionalBenefits(): void {\r\n this.setState({\r\n additionalBenefitsState: !this.state.additionalBenefitsState\r\n });\r\n }\r\n\r\n private _onWineClubSelect(): void {\r\n this._clubDataStore!.reset();\r\n const store = this._clubDataStore!.get();\r\n this._clubDataStore!.edit({\r\n ...store,\r\n clubId: this.props.id\r\n });\r\n }\r\n\r\n private _parseToCSS(parseString: string): string {\r\n // please no exotic characters thanks\r\n return parseString.toLowerCase().replace(/ /g, '-').replace(/\\+/g, '-plus');\r\n }\r\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 { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { Club } from './components/club';\r\nimport { Membership } from './components/membership';\r\nimport { Shipping } from './components/shipping';\r\nimport { Signup } from './components/signup';\r\nimport { Variant } from './components/variant';\r\nimport { WinePreference } from './components/wine-preference';\r\nimport { IWineClubSignupViewProps } from './wine-club-signup';\r\n\r\nexport namespace ClubViewManager {\r\n export const renderClubs = (props: IWineClubSignupViewProps) => {\r\n return (\r\n
\r\n {/* this is here and NOT in the club because each club is rendered seperately in an ordered list*/}\r\n

{props.config.chooseClub?.title || props.resources.wineClubSignup__stepOne}

\r\n {props.config.chooseClub?.subtitle && }\r\n
\r\n {props.clubInfo.map((club, idx) => {\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n
\r\n );\r\n };\r\n\r\n export const shipping = (props: IWineClubSignupViewProps) => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n export const renderSignup = (props: IWineClubSignupViewProps) => {\r\n return (\r\n \r\n \r\n {props.config.signupText && }\r\n \r\n );\r\n };\r\n\r\n export const winePreference = (props: IWineClubSignupViewProps) => {\r\n return ;\r\n };\r\n\r\n export const variant = (props: IWineClubSignupViewProps) => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n export const membershipSelector = (props: IWineClubSignupViewProps) => {\r\n return ;\r\n };\r\n\r\n export const termsAndConditions = (props: IWineClubSignupViewProps) => {\r\n return (\r\n
\r\n

{props.config.termsConditions?.title || props.resources.wineClubSignup__stepFive}

\r\n {props.config.termsConditions?.subtitle && }\r\n {props.slots.tos}\r\n
\r\n );\r\n };\r\n}\r\n\r\nexport default (props: IWineClubSignupViewProps) => {\r\n // enable props.debug to view localstorage data\r\n return (\r\n
\r\n {/* {props.debug} */}\r\n {props.moduleControl.CHOOSE_CLUB && ClubViewManager.renderClubs(props)}\r\n {props.moduleControl.CHOOSE_PREFERENCE && ClubViewManager.winePreference(props)}\r\n {props.moduleControl.SET_MEMBERSHIP && ClubViewManager.variant(props)}\r\n {props.moduleControl.SET_MEMBERSHIP && ClubViewManager.membershipSelector(props)}\r\n {props.moduleControl.SET_SHIPPING && ClubViewManager.shipping(props)}\r\n {props.moduleControl.TERMS && ClubViewManager.termsAndConditions(props)}\r\n {props.moduleControl.SIGNUP && ClubViewManager.renderSignup(props)}\r\n
\r\n );\r\n};","import { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { DeliveryType, WineClubDataStore } from '../wine-club-data';\r\nimport { IWineClubSignupData } from '../wine-club-signup.data';\r\nimport { IWineClubSignupProps } from '../wine-club-signup.props.autogenerated';\r\nimport { IWineClub, wineClubPickupLocation, wineClubPickupLocations } from './../../../settings/app.settings';\r\n\r\nexport interface IShipping {\r\n props: IWineClubSignupProps;\r\n clubInfo: IWineClub[];\r\n}\r\n\r\n/**\r\n * class definition for customer controlling their shipping info\r\n */\r\nexport class Shipping extends React.Component {\r\n\r\n private _dataStore: WineClubDataStore;\r\n\r\n constructor(props: IShipping) {\r\n super(props);\r\n\r\n this._onDeliveryTypeChange = this._onDeliveryTypeChange.bind(this);\r\n this._onPickupLocationChange = this._onPickupLocationChange.bind(this);\r\n\r\n this._dataStore = WineClubDataStore.getInstance(() => {\r\n this.setState({});\r\n });\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n wineClubSignup__shippingTitle,\r\n wineClubSignup__shippingDescription\r\n } = this.props.props.resources;\r\n\r\n const store = this._dataStore.get();\r\n\r\n const pickupLocations = this.props.props.context.app.config.wineClubPickupLocations as wineClubPickupLocations || [];\r\n const locationLabels = this._dataStore.getDeliveryMapFromConfig(this.props.props.context);\r\n\r\n return (\r\n
\r\n

{this.props.props.config.shippingMethod?.title || wineClubSignup__shippingTitle}

\r\n {this.props.props.config.shippingMethod?.subtitle && }\r\n \r\n {/* zero locations should NOT happen */}\r\n {store.deliveryType === 'PICKUP' && pickupLocations.length === 1 && this._displaySinglePickupLocation()}\r\n {store.deliveryType === 'PICKUP' && pickupLocations.length > 1 && this._displayPickupLocations()}\r\n {this.props.props.config.shippingMethod?.disclaimer && }\r\n
\r\n {wineClubSignup__shippingDescription}\r\n {this.props.props.slots.shipping}\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _displaySinglePickupLocation(): JSX.Element {\r\n this._autoselectPickupLocation();\r\n const pickupLocation = this.props.props.context.app.config.wineClubPickupLocations[0] as wineClubPickupLocation;\r\n\r\n return (\r\n
\r\n {this.props.props.config.shippingMethod?.addressLabel &&\r\n
{this.props.props.config.shippingMethod.addressLabel}
\r\n }\r\n
{pickupLocation.address}
\r\n
\r\n );\r\n }\r\n\r\n private _displayPickupLocations(): JSX.Element {\r\n this._autoselectPickupLocation();\r\n const pickupLocations = this.props.props.context.app.config.wineClubPickupLocations as wineClubPickupLocations || [];\r\n\r\n const store = this._dataStore.get();\r\n\r\n return (\r\n
\r\n {\r\n pickupLocations.map(location => (\r\n
\r\n \r\n \r\n
\r\n ))\r\n }\r\n
\r\n );\r\n }\r\n\r\n private _onPickupLocationChange(event: React.ChangeEvent): void {\r\n const store = this._dataStore.get();\r\n store.pickupLocationId = event.target.value;\r\n this._dataStore.edit(store);\r\n }\r\n\r\n private _autoselectPickupLocation(): void {\r\n const store = this._dataStore.get();\r\n // autoselect the first\r\n if (!store.pickupLocationId) {\r\n const pickupLocation = this.props.props.context.app.config.wineClubPickupLocations[0] as wineClubPickupLocation;\r\n store.pickupLocationId = pickupLocation.id;\r\n this._dataStore.edit(store);\r\n }\r\n }\r\n\r\n private _onDeliveryTypeChange(event: React.ChangeEvent): void {\r\n const store = this._dataStore.get();\r\n store.deliveryType = event.target.value as DeliveryType;\r\n this._dataStore.edit(store);\r\n\r\n if (event.target.value as DeliveryType !== 'PICKUP' && store.pickupLocationId) {\r\n this._dataStore.deleteKeys('pickupLocationId');\r\n }\r\n }\r\n}","/* tslint:disable */\r\nimport { IReactComponent } from 'mobx-react/index';\r\nimport React, { Component, ComponentType } from 'react';\r\n\r\ntype subscriptionCallback = (...args: T[]) => void;\r\n\r\ntype subscription = { [uniqueId: string]: subscriptionCallback };\r\n\r\n/**\r\n * A loader that maintains a list of current namespaces. Meant to be later\r\n * singleton'd\r\n */\r\nclass EventBusLoader {\r\n\r\n // list of current buses that are in action\r\n private _buses: { [namespace: string]: BusLoader } = {};\r\n\r\n /**\r\n * get's an existing bus or creating a new bus of that namespace\r\n *\r\n * @param busNamespace the namespace of the bus to retrieve\r\n */\r\n public getBus(busNamespace: string): BusLoader {\r\n // fast return if the bus already exists\r\n if (this._buses[busNamespace]) {\r\n return this._buses[busNamespace];\r\n }\r\n\r\n // create a new bus and do the internal subscription for deleting the entire bus when bus\r\n // is empty\r\n this._buses[busNamespace] = new BusLoader();\r\n this._buses[busNamespace].subscribe('_readyForDeletion', this.deleteBus.bind(this));\r\n return this._buses[busNamespace];\r\n }\r\n\r\n /**\r\n * deletes and purges all events\r\n *\r\n * @param busNamespace the namespace of the bus to delete\r\n */\r\n public deleteBus(busNamespace: string): void {\r\n if (this._buses[busNamespace]) {\r\n this._buses[busNamespace].purge();\r\n }\r\n delete this._buses[busNamespace];\r\n }\r\n}\r\n\r\n/**\r\n * Contains a single namespace of events of the event bus\r\n */\r\nexport class BusLoader {\r\n\r\n // list of all subscriptions within this bus's namespace\r\n private _subscriptions: { [subName: string]: subscription } = {};\r\n\r\n /**\r\n * subscribe to a subscription within this namespace\r\n *\r\n * @param subName event subscription name\r\n * @param onPublish callback that triggers when subscription gets published\r\n */\r\n public subscribe(subName: string, onPublish: subscriptionCallback): { unsubscribe(): void, id: number } {\r\n\r\n // generates an ever-counting up id generator\r\n const nextId = IdGenerator();\r\n\r\n // create a new list if the bus loader contains no subscription\r\n if (!this._subscriptions[subName]) {\r\n this._subscriptions[subName] = {\r\n _readyForDeletion: () => { /* event to notify loader that this is going to be deleted */ }\r\n };\r\n }\r\n\r\n // add the subscription to the list\r\n this._subscriptions[subName][nextId] = onPublish as subscriptionCallback;\r\n\r\n // return an unsubscribe method for deleting this specific subscription\r\n return {\r\n id: nextId,\r\n unsubscribe: () => {\r\n this._purgeById(subName, nextId);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * remove a subscription from anywhere within the namespace\r\n *\r\n * @param id subscription id\r\n */\r\n public unsubscribe(id: number): boolean {\r\n for (const subName in this._subscriptions) {\r\n if (this._subscriptions[subName][id]) {\r\n this._purgeById(subName, id);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * publish data to all subscriptions\r\n *\r\n * @param subName subscription name to publish to\r\n * @param args data to pass into the subscribed functions\r\n */\r\n public publish(subName: string, ...args: any): void {\r\n // don't do anything if it doesnt exist and fail\r\n // gracefully\r\n if (!this._subscriptions[subName]) {\r\n return;\r\n }\r\n\r\n Object.keys(this._subscriptions[subName])\r\n .forEach(id => {\r\n this._subscriptions[subName] && this._subscriptions[subName][id] && this._subscriptions[subName][id](...args);\r\n });\r\n }\r\n\r\n /**\r\n * purge all data in the bus loader\r\n */\r\n public purge(): void {\r\n this._subscriptions = {};\r\n }\r\n\r\n /**\r\n * purges a single subscription id endpoint from a subscription\r\n * name\r\n *\r\n * @param subName subscription name\r\n * @param id subscription id\r\n */\r\n private _purgeById(subName: string, id: number) {\r\n delete this._subscriptions[subName][id];\r\n\r\n // not zero because there will always be the internal _readyForDeletion event\r\n if (Object.keys(this._subscriptions[subName]).length === 1) {\r\n this.publish('_readyForDeletion');\r\n delete this._subscriptions[subName];\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * generates a singleton of ids\r\n */\r\nconst IdGenerator = (() => {\r\n let idValue = 0;\r\n\r\n return () => {\r\n idValue += 1;\r\n return idValue;\r\n };\r\n})();\r\n\r\n/**\r\n * generates a singleton of the bus loader\r\n */\r\nconst Loader = (() => {\r\n return new EventBusLoader();\r\n})();\r\n\r\nexport function LoadBus(eventNamespace: string): (newComponent: T) => void {\r\n return (CHILD_COMP: ComponentType) => {\r\n return class extends Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n // add to the component the bus\r\n CHILD_COMP.prototype.bus = this.bus;\r\n }\r\n\r\n // the bus's definition\r\n public get bus() { return Loader.getBus(eventNamespace); }\r\n\r\n // we arent decorating anything related to the UI so just return the child with\r\n // all it's props\r\n public render(): JSX.Element {\r\n return ;\r\n }\r\n };\r\n };\r\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IPageTosData } from './page-tos.data';\r\nimport { IPageTosProps } from './page-tos.props.autogenerated';\r\n\r\nexport interface IPageTosViewProps extends IPageTosProps {\r\n\r\n}\r\n\r\n/**\r\n *\r\n * PageTos component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass PageTos extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default PageTos;\r\n","import { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { IVariant, IWineClub } from '../../../settings/app.settings';\r\nimport { WineClubDataStore } from '../wine-club-data';\r\nimport { IWineClubSignupConfig, IWineClubSignupResources } from '../wine-club-signup.props.autogenerated';\r\n\r\nexport interface IWinePreference {\r\n clubInfo: IWineClub[];\r\n config: IWineClubSignupConfig;\r\n resources: IWineClubSignupResources;\r\n}\r\n\r\n/**\r\n * wine preference def\r\n */\r\nexport class WinePreference extends React.Component {\r\n private _clubStore: WineClubDataStore;\r\n\r\n public constructor(props: IWinePreference) {\r\n super(props);\r\n\r\n this._onVariantChangeByList = this._onVariantChangeByList.bind(this);\r\n this._onVariantChangeByButton = this._onVariantChangeByButton.bind(this);\r\n\r\n this._clubStore = WineClubDataStore.getInstance();\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { clubId } = this._clubStore.get();\r\n\r\n if (clubId === null) {\r\n return
; // insurance if not caught in view;\r\n }\r\n\r\n const club = this.props.clubInfo[clubId];\r\n\r\n if (!club) {\r\n return
; // more insurance\r\n }\r\n\r\n const variants = club.variants;\r\n\r\n if (variants.length === 1) {\r\n this._autoselectVariant(club.variants[0]);\r\n return
; // dont need to render when there are no variants\r\n }\r\n\r\n return (\r\n
\r\n

{this.props.config.choosePreference?.title || this.props.resources.wineClubSignup__stepTwo}

\r\n {this.props.config.choosePreference?.subtitle && }\r\n
\r\n {variants.length <= 3 && this._renderAsButtons(club)}\r\n {variants.length > 3 && this._renderAsList(club)}\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _autoselectVariant(variant: IVariant): void {\r\n const store = this._clubStore.get();\r\n\r\n // we dont want an infinite render loop, do we?\r\n if (store.variantPreference === variant.winePreference) { return; }\r\n store.variantPreference = variant.winePreference;\r\n this._clubStore.edit(store);\r\n }\r\n\r\n private _renderAsButtons(club: IWineClub): JSX.Element[] {\r\n const { variantPreference } = this._clubStore.get();\r\n return club.variants.map((variant, idx) => {\r\n return (\r\n \r\n {variant.winePreference}\r\n \r\n );\r\n });\r\n }\r\n\r\n private _renderAsList(club: IWineClub): JSX.Element {\r\n const store = this._clubStore.get();\r\n if (store.variantPreference === null) {\r\n this._autoselectVariant(club.variants[0]);\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _onVariantChangeByButton(event: React.MouseEvent): void {\r\n const store = this._clubStore.get();\r\n store.variantPreference = (event.target as HTMLButtonElement).value;\r\n this._clubStore.edit(store);\r\n }\r\n\r\n private _onVariantChangeByList(event: React.ChangeEvent): void {\r\n const store = this._clubStore.get();\r\n store.variantPreference = event.target.value;\r\n this._clubStore.edit(store);\r\n }\r\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 { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { Club } from '../../../modules/wine-club-signup/./components/club';\r\nimport { Membership } from '../../../modules/wine-club-signup/./components/membership';\r\nimport { Shipping } from '../../../modules/wine-club-signup/./components/shipping';\r\nimport { Signup } from '../../../modules/wine-club-signup/./components/signup';\r\nimport { Variant } from '../../../modules/wine-club-signup/./components/variant';\r\nimport { WinePreference } from '../../../modules/wine-club-signup/./components/wine-preference';\r\nimport { IWineClubSignupViewProps } from '../../../modules/wine-club-signup/./wine-club-signup';\r\nimport { WineClubDataStore } from '../../../modules/wine-club-signup/wine-club-data';\r\n\r\nimport { IWineClubSignupProps } from './../definition-extensions/wine-club-signup.ext.props.autogenerated';\r\n\r\nexport namespace ClubViewManager {\r\n export const renderClubs = (props: IWineClubSignupViewProps) => {\r\n return (\r\n
\r\n {/* this is here and NOT in the club because each club is rendered seperately in an ordered list*/}\r\n

{props.resources.wineClubSignup__stepOne}

\r\n \r\n {props.clubInfo.map((club, idx) => {\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n
\r\n );\r\n };\r\n\r\n export const shipping = (props: IWineClubSignupViewProps) => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n export const renderSignup = (props: IWineClubSignupViewProps) => {\r\n return (\r\n \r\n \r\n {props.config.signupText && }\r\n \r\n );\r\n };\r\n\r\n export const winePreference = (props: IWineClubSignupViewProps) => {\r\n return ;\r\n };\r\n\r\n export const variant = (props: IWineClubSignupViewProps) => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n export const membershipSelector = (props: IWineClubSignupViewProps) => {\r\n return ;\r\n };\r\n\r\n export const termsAndConditions = (props: IWineClubSignupViewProps) => {\r\n return (\r\n
\r\n

{props.config.termsConditions?.title || props.resources.wineClubSignup__stepFive}

\r\n {props.config.termsConditions?.subtitle && }\r\n {props.slots.tos}\r\n
\r\n );\r\n };\r\n}\r\n\r\ninterface IBlendConfirmSMWEMember {\r\n wineClubProps: IWineClubSignupViewProps & IWineClubSignupProps<{}>;\r\n}\r\n\r\nenum MEMBER_OPTION {\r\n IS_MEMBER,\r\n NOT_MEMBER\r\n}\r\n\r\n/**\r\n * component for asking customer about their club membership status blend only\r\n */\r\nclass BlendConfirmSMWEMember extends React.Component {\r\n\r\n public static isSmweMember: boolean | null = null;\r\n\r\n constructor(props: IBlendConfirmSMWEMember) {\r\n super(props);\r\n\r\n this._onConfirmSelect = this._onConfirmSelect.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n config: { blendTitleSMWEMemberStatus, blendConfirmSMWEMemberStatus },\r\n resources: { wineClubSignup__blendTitle }\r\n } = this.props.wineClubProps;\r\n\r\n return (\r\n
\r\n

{blendTitleSMWEMemberStatus || wineClubSignup__blendTitle}

\r\n {\r\n blendConfirmSMWEMemberStatus &&\r\n \r\n }\r\n
\r\n \r\n NO\r\n \r\n \r\n YES\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n private _onConfirmSelect(event: React.MouseEvent): void {\r\n const selectType = (event.target as HTMLButtonElement).dataset.memberType;\r\n if (parseInt(selectType || '', 10) === MEMBER_OPTION.IS_MEMBER) {\r\n BlendConfirmSMWEMember.isSmweMember = true;\r\n }\r\n if (parseInt(selectType || '', 10) === MEMBER_OPTION.NOT_MEMBER) {\r\n BlendConfirmSMWEMember.isSmweMember = false;\r\n }\r\n WineClubDataStore.getInstance().reset();\r\n this.props.wineClubProps.triggerRender();\r\n }\r\n}\r\n\r\nexport default (props: IWineClubSignupViewProps & IWineClubSignupProps<{}>) => {\r\n // enable props.debug to view localstorage data\r\n return (\r\n
\r\n {/* {props.debug} */}\r\n \r\n {BlendConfirmSMWEMember.isSmweMember !== null &&\r\n \r\n {props.moduleControl.CHOOSE_CLUB && ClubViewManager.renderClubs(props)}\r\n {props.moduleControl.CHOOSE_PREFERENCE && ClubViewManager.winePreference(props)}\r\n {props.moduleControl.SET_MEMBERSHIP && ClubViewManager.variant(props)}\r\n {props.moduleControl.SET_MEMBERSHIP && ClubViewManager.membershipSelector(props)}\r\n {props.moduleControl.SET_SHIPPING && ClubViewManager.shipping(props)}\r\n {props.moduleControl.TERMS && ClubViewManager.termsAndConditions(props)}\r\n {props.moduleControl.SIGNUP && ClubViewManager.renderSignup(props)}\r\n \r\n }\r\n
\r\n );\r\n};","import { ILinkData } from '@msdyn365-commerce/core';\r\nimport { observable, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IWineClub } from '../../../settings/app.settings';\r\nimport { CartUtilities } from '../../../Utilities/cart-utils';\r\n\r\nimport { CartVerifier } from '../../cartmanager/cart-verified';\r\nimport { WineClubDataRef, WineClubDataStore } from '../wine-club-data';\r\nimport { IWineClubSignupData } from '../wine-club-signup.data';\r\nimport { IWineClubSignupProps } from '../wine-club-signup.props.autogenerated';\r\n\r\nexport interface ISignup {\r\n wineCheckout?: ILinkData;\r\n props: IWineClubSignupProps;\r\n}\r\n\r\n/**\r\n * renders the sign up button with its appropriate conditions\r\n */\r\n@observer\r\nexport class Signup extends React.Component {\r\n\r\n private _wineClubDataStore: WineClubDataStore;\r\n\r\n @observable private _allowSignup: boolean = false;\r\n @observable private _cartVerified: boolean = false;\r\n public constructor(props: ISignup) {\r\n super(props);\r\n\r\n this._proceedToCheckout = this._proceedToCheckout.bind(this);\r\n\r\n this._wineClubDataStore = WineClubDataStore.getInstance((change) => {\r\n this._allowSignup = this._allowSignupLogic(change);\r\n });\r\n\r\n this._allowSignup = this._allowSignupLogic(this._wineClubDataStore.get());\r\n\r\n reaction(\r\n () => [CartVerifier.instance, CartVerifier.instance.isVerified],\r\n () => {\r\n this._cartVerified = CartVerifier.instance.isVerified;\r\n }\r\n );\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (CartVerifier.instance.isVerified !== this._cartVerified) {\r\n this._cartVerified = CartVerifier.instance.isVerified;\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n private async _proceedToCheckout(): Promise {\r\n this._allowSignup = false;\r\n // we might want to add error handling here at some point\r\n await this._addItem().catch(e => this._allowSignup = true); // attempt item add, only works with none in cart\r\n when(\r\n () => {\r\n const length = this.props.props.data.cart.result?.cart.CartLines?.length || 0;\r\n return length > 0;\r\n },\r\n () => {\r\n this._allowSignup = true;\r\n // tslint:disable-next-line: no-typeof-undefined\r\n if (this.props.wineCheckout?.destinationUrl && typeof window !== 'undefined') {\r\n window.location.href = this.props.wineCheckout.destinationUrl;\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * logic for signing up\r\n *\r\n * @param store contextual wine club info\r\n * @returns true if allow, false if no\r\n */\r\n private _allowSignupLogic(store: WineClubDataRef): boolean {\r\n return store.clubId !== null &&\r\n store.variantPreference !== null &&\r\n store.tosAgree;\r\n }\r\n\r\n private async _addItem(): Promise {\r\n const loadedCart = await this.props.props.data.cart;\r\n if (loadedCart.cart.CartLines?.length === 0) {\r\n const itemId = this._getClubItemId();\r\n await CartUtilities.addItem({\r\n recordId: +itemId,\r\n context: this.props.props.context,\r\n amount: 1\r\n }, true); // disable OOS because digital\r\n }\r\n }\r\n\r\n private _getClubItemId(): string {\r\n const wineClubs = this.props.props.app.config.wineClubSetup as IWineClub[] || [];\r\n const store = WineClubDataStore.getInstance().get();\r\n const club = wineClubs[store.clubId!];\r\n if (!club) {\r\n return '';\r\n }\r\n const variants = club.variants || [];\r\n const variant = variants.find(cVariant => cVariant.winePreference === store.variantPreference);\r\n\r\n if (!variant) { return ''; }\r\n return variant.itemId;\r\n }\r\n}","import { IGridSettings, IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { IWineClub } from '../../../settings/app.settings';\r\nimport { WineClubDataStore } from '../wine-club-data';\r\nimport { IWineClubSignupConfig, IWineClubSignupResources } from '../wine-club-signup.props.autogenerated';\r\n\r\nexport interface IVariant {\r\n clubInfo: IWineClub[];\r\n config: IWineClubSignupConfig;\r\n resources: IWineClubSignupResources;\r\n gridSettings: IGridSettings;\r\n imageSettings?: IImageSettings;\r\n}\r\n\r\nexport interface IVariantState {\r\n buttonState: boolean;\r\n}\r\n\r\n/**\r\n * renders the currently selected variant\r\n */\r\nexport class Variant extends React.Component {\r\n\r\n private _dataStore: WineClubDataStore;\r\n\r\n constructor(props: IVariant) {\r\n super(props);\r\n\r\n this._toggleMobileState = this._toggleMobileState.bind(this);\r\n\r\n this._dataStore = WineClubDataStore.getInstance();\r\n\r\n this.state = {\r\n buttonState: false\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const store = this._dataStore.get();\r\n\r\n if (store.clubId === null || store.variantPreference === null) {\r\n return
; // for safety\r\n }\r\n\r\n const club = this.props.clubInfo[store.clubId] || [];\r\n const variants = club.variants || [];\r\n const variant = variants.find(clubVariant => clubVariant.winePreference === store.variantPreference);\r\n\r\n if (!variant) { return
; }\r\n\r\n let mobileButtonText = this.props.resources.wineClubSignup__variantMembershipMobileClose;\r\n let mobile = 'closed';\r\n if (this.state.buttonState) {\r\n mobileButtonText = this.props.resources.wineClubSignup__variantMembershipMobileOpen;\r\n mobile = 'open';\r\n }\r\n\r\n return (\r\n
\r\n

{this.props.config.reviewBenefits?.title || this.props.resources.wineClubSignup__stepThree}

\r\n {this.props.config.reviewBenefits?.subtitle && }\r\n \r\n {mobileButtonText}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n

{this.props.resources.wineClubSignup__variantMembershipSub}

\r\n

{club.title}

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _toggleMobileState(): void {\r\n this.setState({\r\n buttonState: !this.state.buttonState\r\n });\r\n }\r\n}"],"sourceRoot":""}