{"version":3,"file":"static/js/48ac5a5d479e380f3b45.bundle.js","mappings":"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","sources":["webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/alert/Alert.tsx?44c5","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/back-to-top/BackToTop.tsx?0cf6","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/button/Button.tsx?457f","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/collapse/Collapse.tsx?27f6","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/common/KeyCodes.ts?0c24","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/common/stringExtensions.ts?f421","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/common/telemetryHelper.ts?068b","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/common/utilities.ts?93e6","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/drawer/ControlledDrawer.tsx?9a39","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/drawer/Drawer.tsx?da2c","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/fade/Fade.tsx?31ba","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/flipper/Flipper.tsx?36cd","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/form-builder/form-builder.tsx?c7f3","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/heading/Heading.tsx?c36b","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/incremental-quantity/IncrementalQuantity.tsx?1af1","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/isMobile/isMobile.tsx?1fd3","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/isMobile/isMobile.props.ts?d9d2","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/labeled-dropdown/LabeledDropdown.tsx?ab7c","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/Portal.tsx?c937","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/Modal.tsx?7d4b","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalBody.tsx?c097","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalFooter.tsx?8e31","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalHeader.tsx?627d","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/Pagination.tsx?ebf9","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/PaginationItem.tsx?6f25","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/PaginationLink.tsx?b97e","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/UncontrolledPagination.tsx?4877","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/popover/Popover.tsx?3cf4","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/popper-content/PopperContent.tsx?1148","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/popup-products/Popup-products.tsx?2288","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/popup/Popup.tsx?0173","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/price/price-editor-mode-selection.tsx?3c70","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/price/price-editor.tsx?ca15","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/progress/Progress.tsx?fbb5","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/quantity/Quantity.tsx?b66b","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/single-slide-carousel/SingleSlideCarousel.tsx?b47d","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/slider/SliderThumb.tsx?5d3f","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/slider/Slider.tsx?bb4c","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/table/Table.tsx?8faf","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/table/checkbox.tsx?36f8","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/tooltip/Tooltip.tsx?8355","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/tooltip/UncontrolledTooltip.tsx?30ec","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/waiting/Waiting.tsx?ba13","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/wrapper/module.tsx?dadb","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/wrapper/node.tsx?cdf8","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/zoom-image/ImagefullView.tsx?adc9","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce-modules/utilities/src/zoom-image/ZoomImage.tsx?3088","webpack://msdyn365.commerce.online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.number.parse-float.js?9d30"],"sourcesContent":["/*!\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\nimport { mapToCssModules } from '../common/utilities';\nimport Fade from '../fade/Fade';\nimport UncontrolledTooltip from '../tooltip/UncontrolledTooltip';\nimport { IAlertProps } from './Alert.props';\n\n/**\n * Alert component.\n */\nexport default class Alert extends React.PureComponent {\n public static defaultProps: Partial = {\n color: 'success',\n isOpen: true,\n tag: 'div',\n closeAriaLabel: 'Close',\n fade: true,\n assertive: false,\n includeAlertClass: true,\n transition: {\n ...Fade.defaultProps,\n unmountOnExit: true\n }\n };\n\n public render(): JSX.Element {\n const {\n id,\n className,\n closeClassName,\n cssModule,\n tag,\n toggle,\n color,\n isOpen,\n children,\n transition,\n fade,\n assertive,\n includeAlertClass,\n 'aria-label': ariaLabel\n } = this.props;\n\n const classes = includeAlertClass\n ? mapToCssModules(classNames(className, 'msc-alert', `msc-alert-${color}`), cssModule)\n : className;\n\n const closeClasses = mapToCssModules(classNames('close', closeClassName), cssModule);\n\n const alertTransition = {\n ...Fade.defaultProps,\n ...transition,\n baseClass: fade ? 'fade' : '',\n timeout: fade ? (transition ? transition.timeout : 0) : 0,\n appear: !!fade,\n enter: !!fade,\n exit: !!fade\n };\n\n const Tag = tag || 'div';\n const buttonId = fade ? 'buttonDismiss' : 'buttonFadeless';\n\n const innerContent = (\n <>\n {toggle ? (\n
\n \n \n close\n \n
\n ) : null}\n {children}\n \n );\n\n const style = isOpen ? undefined : { display: 'none' };\n\n // When using assertive alerts, you need to have the assertive region rendered on the page from\n // the start. When using fade, the entire fade region doesn't render. So you gotta first wrap the\n // fade region in a tag, keep that tag hidden if the alert is closed.\n //\n // Note that this current approach will have some issues if tag is something like li. But that is a bridge\n // that can be crossed when/if we need to cross it this works for divs/spans so it should be good enough for now\n if (fade && assertive) {\n return (\n \n \n {innerContent}\n \n \n );\n } else if (fade) {\n return (\n \n {innerContent}\n \n );\n }\n return (\n \n {innerContent}\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 * as React from 'react';\n\nimport { getPayloadObject, getTelemetryAttributes, TelemetryConstant } from '..';\nimport { IBackToTopProps } from './BackToTop.props';\n\nexport interface IBackToTopStateAttributes {\n 'aria-hidden': boolean;\n tabIndex: number;\n}\n\nexport interface IBackToTopState extends React.ComponentState {\n attributes: IBackToTopStateAttributes;\n}\n\n/**\n * Back To Top - This component is used to scroll to the top of the page.\n */\nexport default class BackToTop extends React.PureComponent {\n public static defaultProps: Partial = {\n className: 'btn btn-lg btn-secondary',\n delayInMs: 0,\n scrollStepInPx: 25\n };\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: IBackToTopProps) {\n super(props);\n this.state = { attributes: { 'aria-hidden': true, tabIndex: -1 } };\n this._reevaluatePosition = this._reevaluatePosition.bind(this);\n this._scrollToTop = this._scrollToTop.bind(this);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.BackToTop);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public componentDidMount(): void {\n window.addEventListener('resize', this._reevaluatePosition);\n window.addEventListener('scroll', this._reevaluatePosition);\n this._reevaluatePosition();\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this._reevaluatePosition);\n window.removeEventListener('scroll', this._reevaluatePosition);\n }\n\n public render(): JSX.Element {\n const { className, threshold, delayInMs, scrollStepInPx, ...props } = this.props;\n const children = this.props.children || ;\n if (this.props.text) {\n return (\n \n {this._renderHeading(this.props.text)}\n \n );\n }\n return (\n \n {children}\n \n );\n }\n\n private readonly _renderHeading = (text: string): JSX.Element | undefined => {\n return ;\n };\n\n private _scrollStep(): void {\n if ((document.documentElement.scrollTop || document.body.scrollTop) === 0) {\n clearInterval(this.state.intervalId);\n this.setState({ intervalId: 0 });\n this._reevaluatePosition();\n }\n\n if (this.state.intervalId !== 0) {\n window.scrollTo(0, document.body.scrollTop - this.props.scrollStepInPx);\n document.body.scrollTop = document.body.scrollTop > 0 ? document.body.scrollTop - this.props.scrollStepInPx : 0;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _scrollToTop(e: any): void {\n e.preventDefault();\n const intervalId = setInterval(this._scrollStep.bind(this), this.props.delayInMs);\n this.setState({ intervalId });\n }\n\n private _reevaluatePosition(): void {\n // TODO:\n // change the threshold minimum to zero\n // add a prop for specifying multiplier of page height instead of absolute threshold\n // add clientWidth check to hide at < 768\n const scrollTop = window.pageYOffset || document.body.scrollTop;\n const height = Math.min(window.innerHeight, document.documentElement.clientHeight);\n const threshold = Math.min(this.props.threshold !== undefined ? this.props.threshold : -1, 100);\n const hide =\n scrollTop > 0 && threshold >= 0\n ? scrollTop < ((document.documentElement.scrollHeight - height) * threshold) / 100\n : scrollTop < height * 2;\n const tabIndexValue = hide ? -1 : 0;\n this.setState({ attributes: { 'aria-hidden': hide, tabIndex: tabIndexValue } });\n }\n}\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\nimport { mapToCssModules } from '../common/utilities';\nimport { IButtonProps } from './Button.props';\n\n/**\n * Button component.\n */\nexport default class Button extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'button',\n outline: false\n };\n\n public props: IButtonProps;\n\n constructor(props: IButtonProps) {\n super(props);\n this.props = props;\n this.onClick = this.onClick.bind(this); // Put this in componentDidMount\n }\n\n public render(): JSX.Element {\n const { active, block, className, cssModule, color, outline, size, tag, innerRef, ...attributes } = this.props;\n const classes = mapToCssModules(\n classNames(\n className,\n 'msc-btn',\n outline && color\n ? `btn-outline-${color}`\n : color && outline === false\n ? `btn-${color}`\n : color === undefined && outline === true\n ? 'btn-outline'\n : '',\n size ? `btn-${size}` : false,\n block ? 'btn-block' : false,\n { active, disabled: this.props.disabled }\n ),\n cssModule\n );\n\n let Tag = tag || 'button';\n\n if (attributes.href && Tag === 'button') {\n Tag = 'a';\n }\n\n return (\n \n );\n }\n\n private readonly onClick = (e: React.MouseEvent) => {\n if (this.props.disabled) {\n e.preventDefault();\n\n return;\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\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 classNames from 'classnames';\nimport * as React from 'react';\nimport Transition from 'react-transition-group/Transition';\n\nimport { mapToCssModules, TransitionStatuses, TransitionTimeouts } from '../common/utilities';\nimport { ICollapseProps } from './Collapse.props';\n\nexport interface ICollapseState {\n height: number | null;\n}\n\ntype IHash = {\n [key in TransitionStatuses]: string;\n};\n\n/**\n * This is the controlled version of a Collapse component, and as such the toggle behavior is expected to be handled in a parent component.\n * @see See [Uncontrolled Components - React](https://reactjs.org/docs/uncontrolled-components.html) to learn more.\n * @visibleName Collapse (controlled)\n */\nexport default class Collapse extends React.Component {\n public static defaultProps: Partial = {\n isOpen: false,\n tag: 'div',\n timeout: TransitionTimeouts.Collapse\n };\n\n public props: ICollapseProps;\n\n public state: ICollapseState;\n\n private readonly _transitionStatusToClassHash: IHash = {\n entering: 'collapsing',\n entered: 'collapse show',\n exiting: 'collapsing',\n exited: 'collapse'\n };\n\n private readonly _tagRef: React.RefObject = React.createRef();\n\n constructor(props: ICollapseProps) {\n super(props);\n this.props = props;\n\n this.state = {\n height: 0\n };\n\n this._onEntering = this._onEntering.bind(this);\n this._onExit = this._onExit.bind(this);\n this._onExited = this._onExited.bind(this);\n this._onExiting = this._onExiting.bind(this);\n this._reevaluateHeight = this._reevaluateHeight.bind(this);\n }\n\n public componentDidMount(): void {\n window && window.addEventListener('resize', this._reevaluateHeight);\n }\n\n public componentDidUpdate(nextProps: ICollapseProps): void {\n if (nextProps.children !== this.props.children) {\n this._reevaluateHeight();\n }\n }\n\n public componentWillUnmount(): void {\n window && window.removeEventListener('resize', this._reevaluateHeight);\n }\n\n public shouldComponentUpdate(nextProps: ICollapseProps, nextState: ICollapseState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n tag,\n isOpen,\n className,\n children,\n navbar,\n cssModule,\n\n in: collapseIn,\n mountOnEnter,\n unmountOnExit,\n appear,\n enter,\n exit,\n timeout,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n\n ...otherProps\n } = this.props;\n\n const Tag = tag || 'div';\n const transitionProps = {\n in: collapseIn,\n mountOnEnter,\n unmountOnExit,\n appear,\n enter,\n exit,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited\n };\n\n const { height } = this.state;\n const style = height === null || height === 0 ? null : { minHeight: height };\n\n return (\n \n {(status: TransitionStatuses) => {\n const collapseClass = this._getTransitionClass(status);\n const classes = mapToCssModules(classNames(className, collapseClass, navbar && 'navbar-collapse'), cssModule);\n\n return (\n \n {children}\n \n );\n }}\n \n );\n }\n\n private _reevaluateHeight(): void {\n const node = this._tagRef.current;\n if (node !== null && node.firstElementChild && node.firstElementChild.scrollHeight > 0) {\n this.setState({ height: node.firstElementChild.scrollHeight });\n }\n }\n\n private _getTransitionClass(status: TransitionStatuses): string {\n return this._transitionStatusToClassHash[status] || 'collapse';\n }\n\n private _onEntering(node: HTMLElement, isAppearing: boolean): void {\n this.setState({ height: node.scrollHeight });\n\n if (this.props.onEntering) {\n this.props.onEntering(node, isAppearing);\n }\n }\n\n private _onExit(node: HTMLElement): void {\n this.setState({ height: node.scrollHeight });\n\n if (this.props.onExit) {\n this.props.onExit(node);\n }\n }\n\n private _onExiting(node: HTMLElement): void {\n this.setState({ height: 0 });\n\n if (this.props.onExiting) {\n this.props.onExiting(node);\n }\n }\n\n /**\n * Get Parent element.\n * @param node - HTML Element.\n */\n private readonly _updateParentElement = (node: HTMLElement): void => {\n const parentElement = node.parentElement;\n if (parentElement) {\n if (parentElement.classList.contains('collapse') && parentElement.classList.contains('show')) {\n parentElement.style.minHeight = 'auto';\n }\n this._updateParentElement(parentElement);\n }\n };\n\n private _onExited(node: HTMLElement): void {\n this.setState({ height: null });\n this._updateParentElement(node);\n\n if (this.props.onExited) {\n this.props.onExited(node);\n }\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport enum KeyCodes {\n Back = 8,\n Tab = 9,\n Enter = 13,\n Shift = 16,\n Ctrl = 17,\n Alt = 18,\n Break = 19,\n CapsLock = 20,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40,\n Print = 44,\n Insert = 45,\n Delete = 46,\n Colon2 = 59, // Opera and Firefox\n Equals2 = 61, // Opera\n Equals3 = 107, // Firefox\n Minus2 = 109, // Opera and Firefox\n Period = 190,\n WindowsLeft = 91,\n WindowsRight = 92,\n WindowsOpera = 219, // Opera\n Menu = 93,\n NumPad0 = 96,\n NumPad1 = 97,\n NumPad2 = 98,\n NumPad3 = 99,\n NumPad4 = 100,\n NumPad5 = 101,\n NumPad6 = 102,\n NumPad7 = 103,\n NumPad8 = 104,\n NumPad9 = 105,\n NumPadMultiply = 106,\n NumPadPlus = 107,\n NumPadMinus = 109,\n NumPadDot = 110,\n NumPadDivide = 111,\n Function1 = 112,\n Function2 = 113,\n Function3 = 114,\n Function4 = 115,\n Function5 = 116,\n Function6 = 117,\n Function7 = 118,\n Function8 = 119,\n Function9 = 120,\n Function10 = 121,\n Function11 = 122,\n Function12 = 123,\n NavigationUp = 138,\n NavigationDown = 139,\n NavigationLeft = 140,\n NavigationRight = 141,\n NavigationAccept = 142,\n NumLock = 144,\n ScrollLock = 145,\n Colon = 186,\n Equals = 187,\n Comma = 188,\n Minus = 189,\n ForwardSlash = 191,\n Tilde = 192,\n GamepadA = 195,\n GamepadB = 196,\n GamepadX = 197,\n GamepadY = 198,\n GamepadRightButton = 199,\n GamepadLeftButton = 200,\n GamepadLeftTrigger = 201,\n GamepadRightTrigger = 202,\n GamepadDPadUp = 203,\n GamepadDPadDown = 204,\n GamepadDPadLeft = 205,\n GamepadDPadRight = 206,\n GamepadSelect = 207,\n GamepadStart = 208,\n GamepadLeftThumbstick = 209,\n GamepadRightThumbstick = 210,\n GamepadLeftThumbstickUp = 211,\n GamepadLeftThumbstickDown = 212,\n GamepadLeftThumbstickRight = 213,\n GamepadLeftThumbstickLeft = 214,\n GamepadRightThumbstickUp = 215,\n GamepadRightThumbstickDown = 216,\n GamepadRightThumbstickRight = 217,\n GamepadRightThumbstickLeft = 218,\n OpenBracket = 219,\n BackSlash = 220,\n CloseBracket = 221,\n Quote = 222\n}\n\n/**\n * Here for test coverage.\n */\nexport class KeycodesClass {\n public testCoverage(): string {\n return ':(';\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function format(formatSpecifier: string, ...parameters: any[]): string {\n if (!formatSpecifier) {\n return '';\n }\n\n return formatSpecifier.replace(/{(\\d+)}/g, (match: string, index: number) => {\n if (index >= parameters.length) {\n return match;\n }\n\n const value = parameters[index];\n\n if (typeof value !== 'number' && !value) {\n return '';\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n return value.toString();\n });\n}\n\n/**\n * @name - isNullOrWhiteSpace\n * @description - Determines if the specified string is undefined, null, empty, or whitespace.\n * @export\n * @public\n * @param {string} value - The string to examine.\n * @returns {boolean} - True if the value is undefined, null, empty, or whitespace, otherwise false.\n */\nexport function isNullOrWhiteSpace(value: string): boolean {\n return !value || typeof value !== 'string' || !trim(value);\n}\n\n/**\n * @name - trim\n * @description - Trims leading and trailing whitespace from the string.\n * @export\n * @public\n * @param {string} value - The string to examine.\n * @returns {string} - The trimmed string.\n */\nexport function trim(value: string): string {\n // Any flavor of !value (ie. null/undefined/'') should return itself.\n if (!value || typeof value !== 'string') {\n return value;\n }\n\n if (value.trim) {\n return value.trim();\n }\n\n return value.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * @name - startsWith\n * @description - Determines if the specified string starts with the specified value.\n * @param ignoreCase\n * @export\n * @public\n * @param {string} value - The string to look in.\n * @param {string} prefix - The prefix to look for.\n * @returns {boolean} - True if the string starts with the prefix, otherwise false.\n */\nexport function startsWith(value: string, prefix: string, ignoreCase: boolean = true): boolean {\n if (!value || !prefix) {\n return false;\n }\n\n if (ignoreCase) {\n value = value.toLocaleLowerCase();\n prefix = prefix.toLocaleLowerCase();\n }\n\n if (value.startsWith) {\n return value.startsWith(prefix);\n }\n\n return value.startsWith(prefix);\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IDictionary, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\n\nexport interface IContentAction {\n pgname: string;\n mname: string;\n etext?: string;\n recid?: string;\n etype?: string;\n}\n\nexport interface IPayLoad {\n contentCategory: string;\n contentAction: IContentAction;\n}\n\nexport interface ITelemetryContent {\n pageName: string;\n moduleName: string;\n telemetry?: ITelemetry;\n}\n\nexport enum TelemetryConstant {\n ShopSimliarLooks = 'shop similar looks',\n ShopSimliarDescription = 'shop similar description',\n PickupInStore = 'pick up in store',\n PreferredStore = 'set as preferred store',\n RemovePreferredStore = 'remove preferred store',\n IncrementQuantity = 'Increment quantity',\n DecrementQuantity = 'Decrement quantity',\n Checkout = 'Checkout',\n GuestCheckout = 'Guest checkout',\n BackToShopping = 'Back to shopping',\n ApplyPromoCode = 'Apply promo code',\n ViewMore = 'View more',\n OrderDetails = 'Order details',\n AvailablePoints = 'Available points',\n ExpiringPoints = 'Expiring points',\n AddUser = 'Add user',\n BuyItAgain = 'Buy it again',\n ContactNumber = 'ContactNumber',\n CheckoutChange = 'Change',\n Save = 'Save',\n SaveContinue = 'Save and Continue',\n Cancel = 'Cancel',\n DeliveryOptions = 'Delivery options',\n CheckoutTermsAndConditions = 'Checkout terms and conditions',\n ExpandAll = 'Expand all',\n CollapseAll = 'Collapse all',\n Expand = 'Expand',\n Collapse = 'Collapse',\n SignIn = 'Sign in',\n SignUp = 'Sign up',\n SignOut = 'Sign out',\n SwitchCustomer = 'Switch Customer',\n LoyaltyDetailLink = 'Loyalty detail ink',\n LoyaltyTermsLink = 'Loyalty terms link',\n LoyaltyTermsCancel = 'Loyalty terms cancel',\n LoyaltyTermsSubmit = 'Loyalty terms submit',\n LoyaltyTermsAgree = 'Loyalty terms agree',\n RemoveCartItem = 'Remove cart item',\n EditCart = 'Edit cart',\n BackToTop = 'Back to top',\n Logo = 'Logo',\n NavIcon = 'Navigation icon',\n ViewBagAndCheckout = 'View bag and checkout',\n ContinueShopping = 'Continue shopping',\n AddOrderTemplateToCart = 'Add order template to cart',\n PromoBannerClose = 'Close promo banner',\n WriteReview = 'Write Review',\n Next = 'Next',\n Previous = 'Previous',\n SubmitReview = 'Submit review',\n SuccessButton = 'Success',\n SearchStore = 'Search store',\n ShowAllStore = 'Show all store',\n ToggleMapView = 'Toggle map view',\n PrivacyPolicy = 'Privacy policy',\n ViewShoppingBag = 'View shopping bag',\n MyProfile = 'My profile',\n seeDetails = 'See Details'\n}\n\n/**\n * Returns the payload Object.\n * @param {string} contentCategory - Content Category.\n * @param {IModule} props - Module props.\n * @param pageName\n * @param {string} moduleName - Module Name.\n * @param {string} etext - Etext Name.\n * @param {string} recid - Recid Name.\n * @param telemetry\n */\nexport function getTelemetryObject(pageName: string, moduleName: string, telemetry: ITelemetry): ITelemetryContent {\n const telemetryContent: ITelemetryContent = { pageName, moduleName, telemetry };\n return telemetryContent;\n}\n\n/**\n * Returns the payload Object.\n * @param {string} contentCategory - Content Category.\n * @param {IModule} props - Module props.\n * @param {string} moduleName - Module Name.\n * @param eventType\n * @param telemetryContent\n * @param {string} etext - Etext Name.\n * @param {string} recid - Recid Name.\n */\nexport function getPayloadObject(eventType: string, telemetryContent: ITelemetryContent, etext: string, recid?: string): IPayLoad {\n const pageName = telemetryContent && telemetryContent.pageName ? telemetryContent.pageName : '';\n const moduleName = telemetryContent && telemetryContent.moduleName ? telemetryContent.moduleName : '';\n const payload: IPayLoad = {\n contentCategory: eventType,\n contentAction: {\n pgname: pageName,\n mname: moduleName,\n etext,\n recid,\n etype: eventType\n }\n };\n return payload;\n}\n\n/**\n * Returns the telemetry Attributes.\n * @param {IModule} props - Module Props.\n * @param telemetryContent\n * @param {IPayLoad} payLoad - Pay Load.\n */\nexport function getTelemetryAttributes(telemetryContent: ITelemetryContent, payLoad: IPayLoad): IDictionary | undefined {\n const contentData = payLoad.contentAction.recid ? payLoad.contentAction.recid : payLoad.contentAction.etext;\n const attributes: IDictionary | undefined =\n telemetryContent &&\n telemetryContent.telemetry &&\n telemetryContent.telemetry.setTelemetryAttribute &&\n telemetryContent.telemetry.setTelemetryAttribute(contentData!, payLoad.contentAction);\n return attributes;\n}\n\n/**\n * Returns the telemetry Attributes.\n * @param {IModule} props - Module Props.\n * @param {IPayLoad} payLoad - Pay Load.\n */\n\nexport const onTelemetryClick = (telemetryContent: ITelemetryContent, payLoad: IPayLoad, linkText: string) => () => {\n payLoad.contentAction.etext = linkText;\n if (telemetryContent && telemetryContent.telemetry) {\n telemetryContent.telemetry.logEvent(TelemetryEvent.Custom, payLoad);\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport interface IClientDimension {\n width: number;\n height: number;\n}\n\n/* A type safe Dictionary */\nexport interface IDictionaryStringString {\n [key: string]: string;\n}\n\n/**\n * @interface IGrid\n * @classdesc - The IGrid interface contract.\n * @export\n */\nexport interface IGrid {\n rows: number;\n columns: number;\n}\n\n/**\n * Clamp position between a range.\n * @param {number} value - Value to be clamped.\n * @param {number} min - Minimum value in range.\n * @param {number} max - Maximum value in range.\n * @returns The clap value if min passed is less than max else returns 0.\n */\nexport function clamp(value: number, min: number, max: number): number {\n if (min <= max) {\n return Math.min(Math.max(value, min), max);\n }\n return 0;\n}\n\n/**\n * Upper case the first letter of the string, if only one char exists on the string, uppercase it.\n * @param {string} value - Value to be upper cased.\n * @returns The upper cased string of the passed value, if it has just one char uppercase it.\n */\nexport function toUpperCaseFirstChar(value: string): string {\n if (value.length > 1) {\n return value.charAt(0).toUpperCase() + value.substr(1);\n }\n if (value.length === 1) {\n return value.charAt(0).toUpperCase();\n }\n return '';\n}\n\nexport function htmlCollectionToArray(nodeList: HTMLCollection): HTMLElement[] {\n return Array.prototype.slice.call(nodeList);\n}\n\nexport function getCSS(element: HTMLElement, property: string): string {\n let style = element.style[property];\n\n if (!style) {\n style = getComputedStyle(element)[property];\n }\n\n return style;\n}\n\nexport function createThrottledEvent(listener: EventListener, threshold: number): (event: Event) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let timer: any;\n let last = 0;\n\n return (event: Event) => {\n const now = Date.now();\n\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n\n if (last && now < last + threshold) {\n timer = setTimeout(() => {\n last = Date.now();\n listener(event);\n }, threshold - (now - last));\n } else {\n last = now;\n listener(event);\n }\n };\n}\n\nexport function addThrottledEvent(\n target: EventTarget,\n name: string,\n listener: EventListener,\n threshold: number = 150\n): (event: Event) => void {\n const throttledEventHandler = createThrottledEvent(listener, threshold);\n target.addEventListener(name, throttledEventHandler, false);\n\n return throttledEventHandler;\n}\n\n/* RTS utilities */\n/* TODO: Using any here for now, need to convert cssmodules into a dictionary in all modules */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function mapToCssModules(className: string = '', cssModule: any): string {\n if (!cssModule) {\n return className;\n }\n\n return className\n .split(' ')\n .map((c: string) => cssModule[c] || c)\n .join(' ');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isRef(target: any): boolean {\n if (!target) {\n return false;\n }\n\n return (>target).current !== undefined;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isElement(target: any): boolean {\n if (!target) {\n return false;\n }\n\n return (target).addEventListener !== undefined;\n}\n\nexport const keyCodes = {\n esc: 27,\n space: 32,\n tab: 9,\n up: 38,\n down: 40,\n enter: 13\n};\n\ninterface IMap {\n [key: string]: T;\n}\nconst warned: IMap = {};\n\nexport function warnOnce(message: string): void {\n if (!warned[message]) {\n if (typeof console !== 'undefined') {\n throw new Error(message);\n }\n warned[message] = true;\n }\n}\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport function findDOMElements(target: string): NodeListOf | string | null {\n try {\n if (typeof target === 'string' && canUseDOM) {\n let selection = document.querySelectorAll(target);\n\n if (selection.length === 0) {\n selection = document.querySelectorAll(`#${target}`);\n }\n\n if (selection.length === 0) {\n throw new Error();\n }\n return selection;\n }\n\n return target;\n } catch {\n console.error(`The target '${target}' could not be identified in the dom, tip: check spelling`);\n return null;\n }\n}\n\nexport function getTarget(target: string | HTMLElement | React.Ref): HTMLElement | React.Ref | null | string {\n const selection = findDOMElements(target);\n if (selection && selection.length > 0) {\n return selection[0];\n }\n\n return target;\n}\n\nexport function getTargetElement(target: string | HTMLElement | React.Ref): HTMLElement | null {\n const targetElement = getTarget(target);\n if (isRef(targetElement)) {\n return (>targetElement).current;\n }\n if (isElement(targetElement)) {\n return targetElement;\n }\n\n return null;\n}\n\nexport const TransitionTimeouts = {\n Fade: 150,\n Collapse: 350,\n Modal: 300,\n Carousel: 600\n};\n\nexport type TransitionStatuses = 'entering' | 'entered' | 'exiting' | 'exited';\n\nexport const focusableElements = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '[tabindex]:not(.modal)',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])'\n];\n\n/**\n * @name - extend\n * @description - extends an object with properties/values from one or more others.\n * @export\n * @public\n * @param {any[]} parameters - The objects to merge together.\n * @returns {any} - The extended object.\n */\n\n// eslint-disable-next-line complexity, @typescript-eslint/no-explicit-any\nexport function extend(...parameters: any[]): any {\n if (!parameters || parameters.length === 0) {\n return null;\n }\n\n const recursive = typeof parameters[0] === 'boolean' && parameters[0];\n\n if (parameters.length < 2) {\n return recursive ? null : parameters[0];\n }\n\n if (recursive && parameters.length < 3) {\n return parameters[1];\n }\n\n const target = recursive ? parameters[1] : parameters[0];\n\n for (let paramIndex = recursive ? 2 : 1; paramIndex < parameters.length; paramIndex++) {\n if (parameters[paramIndex] !== undefined) {\n for (const key of Object.keys(parameters[paramIndex])) {\n if (parameters[paramIndex].hasOwnProperty(key)) {\n const source = parameters[paramIndex][key];\n\n if (recursive) {\n let isSourceArray = Array.isArray ? Array.isArray(source) : {}.toString.call(source) === '[object Array]';\n let isTargetArray =\n !!target[key] &&\n (Array.isArray ? Array.isArray(target[key]) : {}.toString.call(target[key]) === '[object Array]');\n let isSourceObject = !isSourceArray && typeof source === 'object';\n let isTargetObject = !isTargetArray && !!target[key] && typeof target[key] === 'object';\n\n if (isSourceArray && isTargetArray) {\n for (const [arrayIndex, element] of source.entries()) {\n isSourceArray = Array.isArray ? Array.isArray(element) : {}.toString.call(element) === '[object Array]';\n isTargetArray =\n !!target[key][arrayIndex] &&\n (Array.isArray\n ? Array.isArray(target[key][arrayIndex])\n : {}.toString.call(target[key][arrayIndex]) === '[object Array]');\n isSourceObject = !isSourceArray && typeof element === 'object';\n isTargetObject = !isTargetArray && !!target[key][arrayIndex] && typeof target[key][arrayIndex] === 'object';\n\n if (isSourceArray) {\n target[key][arrayIndex] = extend(true, isTargetArray ? target[key][arrayIndex] : [], element);\n } else if (isSourceObject) {\n target[key][arrayIndex] = extend(true, isTargetObject ? target[key][arrayIndex] : {}, element);\n } else {\n target[key][arrayIndex] = element;\n }\n }\n continue;\n } else if (isSourceArray) {\n target[key] = extend(true, [], source);\n continue;\n } else if (isSourceObject) {\n target[key] = extend(true, isTargetObject ? target[key] : {}, source);\n continue;\n }\n }\n\n target[key] = source;\n }\n }\n }\n }\n\n return target;\n}\n\n/**\n * @name - getDimensions\n * @description - Gets the dimension of an element.\n * @export\n * @param {HTMLElement} containerElement - The container element.\n * @returns {IClientDimension} - The client dimension.\n * {IClientDimension.width} - The client width\n * {IClientDimension.height} - The client height.\n */\nexport function getDimensions(containerElement: HTMLElement): IClientDimension | null {\n if (containerElement === null) {\n return null;\n }\n return {\n width: containerElement.clientWidth,\n height: containerElement.clientHeight\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button, getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '..';\nimport Collapse from '../collapse/Collapse';\nimport { ICollapseProps } from '../collapse/Collapse.props';\nimport { IDrawerProps } from './Drawer.props';\n\nexport interface IControlledDrawerState {\n isOpen: boolean;\n}\n\nexport type GlyphPlacement = 'start' | 'end';\n\n/**\n * ControlledDrawer - This is a full width controlled collapse where the button glyph changes\n * when the drawer is open and closed. The toggle function can be managed by the parent.\n */\n\nexport default class ControlledDrawer extends React.PureComponent {\n private readonly drawerOpenGlyph: string;\n\n private readonly drawerCloseGlyph: string;\n\n private readonly drawerGlyphClass: string;\n\n private isManuallyToggled: boolean;\n\n private isExpanded: boolean;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IDrawerProps) {\n super(props);\n const { openGlyph, closeGlyph } = this.props;\n this._toggle = this._toggle.bind(this);\n this.isManuallyToggled = false;\n this.state = { isOpen: (props.collapseProps && props.collapseProps.isOpen) || false };\n this.isExpanded = this.state.isOpen;\n this.drawerGlyphClass = classnames('drawer__glyph', this.props.toggleGlyphClassName || '');\n this.payLoad = getPayloadObject('click', props.telemetryContent!, '');\n\n if (this.props.animateGlyph) {\n this.drawerOpenGlyph = classnames([this.drawerGlyphClass, openGlyph || closeGlyph || '']);\n this.drawerCloseGlyph = this.drawerOpenGlyph;\n } else {\n this.drawerOpenGlyph = classnames([this.drawerGlyphClass, openGlyph || '']);\n this.drawerCloseGlyph = classnames([this.drawerGlyphClass, closeGlyph || '']);\n }\n }\n\n public render(): JSX.Element {\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\n collapseProps.isOpen = this.isManuallyToggled ? this.state.isOpen : collapseProps.isOpen || false;\n collapseProps.children = this.props.children;\n const drawerClass = classnames('drawer', this.props.className || '');\n this.isManuallyToggled = false;\n this.isExpanded = collapseProps.isOpen;\n this.setState({ isOpen: collapseProps.isOpen });\n this.payLoad.contentAction.etext = collapseProps.isOpen ? TelemetryConstant.Collapse : TelemetryConstant.Expand;\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n return (\n
\n \n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\n \n \n
\n );\n }\n\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\n const { toggleButtonText } = this.props;\n const drawerButtonTextClass = classnames('drawer__buttontext', this.props.toggleButtonClassName || '');\n if (this.props.glyphPlacement === 'end') {\n return (\n <>\n {this._generateTitle(classnames(drawerButtonTextClass, '__start'), toggleButtonText.toString())}\n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\n \n );\n }\n\n const isStart = this.props.glyphPlacement === 'start';\n const additionalClassName = `__${isStart ? 'end' : 'start'}`;\n return (\n <>\n {isStart && this._generateGlyphMarkup('drawer__glyph__start', collapseState)}\n {this._generateTitle(classnames(drawerButtonTextClass, additionalClassName), this.props.toggleButtonText.toString())}\n \n );\n }\n\n private _generateTitle(titleLClassName: string, title: string): JSX.Element {\n if (this.props.onTextChange && this.props.requestContext) {\n return (\n \n );\n }\n return {title};\n }\n\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\n const glyphClass = `${collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph} ${location}`;\n return ;\n }\n\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n this.isExpanded = !this.isExpanded;\n this.setState({ isOpen: this.isExpanded });\n this.isManuallyToggled = true;\n if (this.props.onToggle) {\n this.props.onToggle(this.state);\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button } from '..';\nimport Collapse from '../collapse/Collapse';\nimport { ICollapseProps } from '../collapse/Collapse.props';\nimport { IDrawerProps } from './Drawer.props';\n\n/**\n * Drawer State Interface\n */\nexport interface IDrawerState {\n isOpen: boolean;\n buttonText?: string;\n}\n\n/**\n * Glyph placement type.\n */\nexport type GlyphPlacement = 'start' | 'end';\n\n/**\n * Drawer - This is a full width uncontrolled collapse where the button glyph changes\n * when the drawer is open and closed.\n */\n\nexport default class Drawer extends React.PureComponent {\n public state: IDrawerState;\n\n private readonly drawerOpenGlyph: string;\n\n private readonly drawerCloseGlyph: string;\n\n private readonly drawerGlyphClass: string;\n\n private isManuallyToggled: boolean;\n\n constructor(props: IDrawerProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this.isManuallyToggled = false;\n this.state = { isOpen: props.collapseProps?.isOpen ?? false, buttonText: '' };\n this.drawerGlyphClass = classnames(\n 'drawer__glyph',\n\n this.props.toggleGlyphClassName ? this.props.toggleGlyphClassName : ''\n );\n\n if (this.props.animateGlyph) {\n this.drawerOpenGlyph = classnames(\n this.drawerGlyphClass,\n\n this.props.openGlyph ? this.props.openGlyph : this.props.closeGlyph ? this.props.closeGlyph : ''\n );\n this.drawerCloseGlyph = this.drawerOpenGlyph;\n } else {\n this.drawerOpenGlyph = classnames(\n this.drawerGlyphClass,\n\n this.props.openGlyph ? this.props.openGlyph : ''\n );\n this.drawerCloseGlyph = classnames(\n this.drawerGlyphClass,\n\n this.props.closeGlyph ? this.props.closeGlyph : ''\n );\n }\n }\n\n public render(): JSX.Element {\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\n\n // If the drawer is manually toggled by pressing the button, then we use the internal state\n if (collapseProps.isOpen === undefined || this.isManuallyToggled) {\n collapseProps.isOpen = this.state.isOpen;\n } else {\n this.setState({\n isOpen: collapseProps.isOpen\n });\n }\n collapseProps.children = this.props.children;\n const drawerClass = classnames(\n 'drawer',\n\n this.props.className ? this.props.className : ''\n );\n this.isManuallyToggled = false;\n return (\n
\n \n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\n \n \n
\n );\n }\n\n /**\n * Method generate drawer inner markup.\n * @param collapseState -Drawer button collapse state.\n * @returns Jsx element.\n */\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\n const drawerButtonTextClass = classnames(\n 'drawer__buttontext',\n\n this.props.toggleButtonClassName ? this.props.toggleButtonClassName : ''\n );\n if (this.props.glyphPlacement === 'end') {\n return (\n <>\n {this.props.toggleButtonText}\n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\n \n );\n }\n\n if (this.props.glyphPlacement === 'start') {\n return (\n <>\n {this._generateGlyphMarkup('drawer__glyph__start', collapseState)}\n {this.props.toggleButtonText}\n \n );\n }\n return {this.props.toggleButtonText};\n }\n\n /**\n * Method generate glyph markup.\n * @param location -Glyph icon location.\n * @param collapseState -Drawer button collapse state.\n * @returns Jsx element.\n */\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\n let glyphClass = collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph;\n glyphClass = `${glyphClass} ${location}`;\n return ;\n }\n\n /**\n * Method on click of drawer button.\n * @param e -Mouse event for drawer button.\n */\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n this.isManuallyToggled = true;\n\n if (this.props.onToggle) {\n this.setState(\n { isOpen: !this.state.isOpen, buttonText: e.currentTarget.innerText },\n () => this.props.onToggle && this.props.onToggle(this.state)\n );\n } else {\n this.setState({ isOpen: !this.state.isOpen });\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 classNames from 'classnames';\nimport * as React from 'react';\nimport Transition, { ENTERED, ENTERING, EXITED, EXITING, UNMOUNTED } from 'react-transition-group/Transition';\n\nimport { mapToCssModules, TransitionTimeouts } from '../common/utilities';\nimport { IFadeProps } from './Fade.props';\n\nexport interface IFadeState {\n fadeIn: boolean;\n}\n\ntype TransitionStatus = typeof ENTERING | typeof ENTERED | typeof EXITING | typeof EXITED | typeof UNMOUNTED;\n\n/**\n * Fade component.\n */\nexport default class Fade extends React.Component {\n public static defaultProps: Partial = {\n tag: 'div',\n baseClass: 'fade',\n baseClassActive: 'show',\n timeout: TransitionTimeouts.Fade,\n in: true,\n appear: true,\n enter: true,\n exit: true\n };\n\n public shouldComponentUpdate(nextProps: IFadeProps): boolean {\n if (nextProps.in || this.props.in !== nextProps.in) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const {\n tag,\n className,\n cssModule,\n baseClass,\n baseClassActive,\n\n appear,\n enter,\n exit,\n in: fadeIn,\n mountOnEnter,\n unmountOnExit,\n timeout: timeoutOrUndefined,\n addEndListener,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n children,\n\n ...otherProps\n } = this.props;\n const timeout = timeoutOrUndefined !== undefined ? timeoutOrUndefined : TransitionTimeouts.Fade;\n\n const transitionProps = {\n appear,\n enter,\n exit,\n in: fadeIn,\n mountOnEnter,\n unmountOnExit,\n timeout,\n addEndListener,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n children\n };\n\n const Tag = this.props.tag ? this.props.tag : 'div';\n const baseClassAlways = baseClass || 'fade';\n const baseClassActiveAlways = baseClassActive || 'show';\n\n return (\n \n {(status: TransitionStatus) => {\n const isActive = status === 'entered';\n const classes = mapToCssModules(classNames([className, baseClassAlways, isActive && baseClassActiveAlways]), cssModule);\n\n return (\n \n {children}\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\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, UncontrolledTooltip } from '..';\nimport { IFlipperProps } from './Flipper.props';\n\nexport type FlipperSize = 'small' | 'medium' | 'large';\n\n/**\n * Flipper Component - This component is used to add\n * flippers to a carousel/jumbotron.\n */\nexport default class Flipper extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n constructor(props: IFlipperProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, this.props.telemetryLabel!);\n }\n\n public render(): JSX.Element {\n const { className, glyphProps, size, displayTooltip, disabled, telemetryContent, telemetryLabel, ...props } = this.props;\n const sizeClass = size === 'small' ? 'msc-flipper__small' : size === 'large' ? 'msc-flipper__large' : '';\n const classNames = className ? `msc-flipper ${sizeClass} ${className}` : `msc-flipper ${sizeClass}`;\n const attribute = getTelemetryAttributes(telemetryContent!, this.payLoad);\n\n // Do not flip next/previous glyphs in RTL (commonly chevron-left and chevron-right)\n glyphProps.className = `${glyphProps.className} msc-no-rtl-flip-required`;\n\n return (\n <>\n \n {displayTooltip && !disabled && (\n \n {' '}\n {props['aria-label']}\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 { ArrayExtensions, Dictionary, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport Button from '../button/Button';\nimport { IFormKeyProps } from './form-builder.props';\n\n/**\n * The state of the form builder.\n */\nexport interface IFormBuilderState {\n /**\n * The captured values.\n */\n values: string[];\n\n /**\n * If the form has been submitted.\n */\n isSubmitted: boolean;\n}\n\n/**\n * The properties of the form builder.\n */\nexport interface IFormBuilderProps {\n /**\n * The component showing confirmation after form submitted successfully.\n */\n confirmationComponent: React.ReactNode;\n\n /**\n * The heading for the component shown above the input boxes.\n */\n heading: string;\n\n /**\n * The text shown on the submit button.\n */\n submitButtonText: string;\n\n /**\n * The keys of the form values to capture, which will be shown as labels for the inputs.\n */\n keys: IFormKeyProps[];\n\n /**\n * The error message shown when submitting the form and required value is missing.\n */\n requiredValueMissingErrorMessage: string;\n\n /**\n * The action to perform when the form is submitted.\n * @param { formKey: IFormKeyProps, value: string[] } entry - The form data as key-value pairs to submit.\n */\n onSubmit(entry?: { formKey: IFormKeyProps; value: string }[]): Promise;\n}\n\n/**\n * The interface for properties of form builder error.\n */\nexport interface IFormBuilderErrorProps {\n errorMessage?: string;\n}\n\n/**\n * The error component in form builder.\n * @param errorProperties - The error properties.\n * @param errorProperties.errorMessage - The error message to show.\n * @returns The error component.\n */\nexport const FormBuilderErrorComponent: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n {errorMessage}\n \n );\n};\n\n/**\n * The component to capture form data.\n */\nexport class FormBuilder extends React.Component {\n private readonly requiredValueMissing: Dictionary;\n\n public constructor(props: IFormBuilderProps) {\n super(props);\n this.state = { values: this.props.keys.map(() => ''), isSubmitted: false };\n\n // Setup a boolean dictionary to keep track if required value is missing for every field to submit.\n this.requiredValueMissing = new Dictionary();\n for (const formKey of this.props.keys) {\n if (formKey.resourceId) {\n this.requiredValueMissing.setValue(formKey.resourceId, formKey.isRequired ?? false);\n }\n }\n }\n\n public shouldComponentUpdate(nextProps: IFormBuilderProps, nextState: IFormBuilderState): boolean {\n if (\n this.props.heading !== nextProps.heading ||\n this.props.confirmationComponent !== nextProps.confirmationComponent ||\n this.props.submitButtonText !== nextProps.submitButtonText ||\n this.props.requiredValueMissingErrorMessage !== nextProps.requiredValueMissingErrorMessage\n ) {\n return true;\n }\n\n // If any form key has changed, the component should update.\n if (\n !this.props.keys.every((formKey: IFormKeyProps, index: number) => {\n return (\n nextProps.keys[Number(index)].isRequired === formKey.isRequired &&\n nextProps.keys[Number(index)].resourceId === formKey.resourceId &&\n nextProps.keys[Number(index)].resourceValue === formKey.resourceValue\n );\n })\n ) {\n return true;\n }\n\n // If any value has changed, the component should update.\n if (\n this.state.isSubmitted !== nextState.isSubmitted ||\n !this.state.values.every((value: string, index: number) => {\n return value === nextState[Number(index)];\n })\n ) {\n return true;\n }\n\n return false;\n }\n\n public render(): JSX.Element {\n return (\n <>\n {!this.state.isSubmitted && ArrayExtensions.hasElements(this.props.keys) && (\n
\n

{this.props.heading}

\n
\n \n {this.props.keys\n .filter((formKey: IFormKeyProps) => {\n return (\n !ObjectExtensions.isNullOrUndefined(formKey.resourceId) &&\n !ObjectExtensions.isNullOrUndefined(formKey.resourceValue)\n );\n })\n .map((formKey: IFormKeyProps, index: number) => {\n const currentValue: string = this.state.values[Number(index)];\n return (\n
\n \n {`${formKey.resourceValue!}${formKey.isRequired ? ' *' : ''}`}\n {this.requiredValueMissing.getValue(formKey.resourceId!) && (\n \n )}\n \n \n
\n );\n })}\n
\n \n {this.props.submitButtonText}\n \n
\n \n
\n
\n )}\n {this.state.isSubmitted && this.props.confirmationComponent}\n \n );\n }\n\n private get isAnyRequiredValueMissing(): boolean {\n const notFound: number = -1;\n return this.requiredValueMissing.getValues().findIndex((isMissing: boolean) => isMissing) !== notFound;\n }\n\n /**\n * The action to perform when the submit button is clicked.\n * @param event - The click event.\n * @returns The async result.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n const formData: { formKey: IFormKeyProps; value: string }[] = this.props.keys.map((formKey: IFormKeyProps, index: number) => {\n const currentValue: string = this.state.values[Number(index)];\n return {\n formKey: { resourceId: formKey.resourceId!, resourceValue: formKey.resourceValue },\n value: currentValue\n };\n });\n await this.props.onSubmit(formData);\n this.setState((previousState: Readonly) => {\n return { values: previousState.values, isSubmitted: true };\n });\n };\n\n /**\n * The action to perform when any input in the form has changed.\n * @param event - The input change event.\n * @returns The async result.\n */\n private readonly _onInputChange = async (event: React.ChangeEvent): Promise => {\n event.preventDefault();\n const changedValueIndex: number = Number.parseInt(event.target.getAttribute('data-index') ?? '', 10);\n if (ObjectExtensions.isNullOrUndefined(changedValueIndex)) {\n return Promise.reject(new Error('form-builder: invalid value index.'));\n }\n const newState = {\n values: this.state.values.map((value: string, index: number) => {\n const currentKey: IFormKeyProps = this.props.keys[Number(index)];\n if (index === changedValueIndex && currentKey.resourceId) {\n this.requiredValueMissing.setValue(\n currentKey.resourceId,\n (currentKey.isRequired ?? false) && event.target.value === ''\n );\n return event.target.value;\n }\n return value;\n })\n };\n this.setState(newState);\n return Promise.resolve();\n };\n}\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\nimport { IHeadingProps } from './Heading.props';\n\n/**\n * Heading component.\n * @extends {React.PureComponent}\n */\n\nconst Heading = ({ headingTag: HTag = 'h1', tag: Tag, className, text }: IHeadingProps) =>\n Tag ? {text} : {text};\n\nexport default Heading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IRequestContext } from '@msdyn365-commerce/core';\nimport { debounce } from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { isMobile, VariantType } from '..';\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '../common/telemetryHelper';\nimport { IIncrementalQuantityProps } from './IncrementalQuantity.props';\n\n/**\n * IIncrementalQuantityState interface.\n */\ninterface IIncrementalQuantityState {\n currentInput: number;\n isUpdating: boolean;\n}\n\n/**\n * Quantity Component - This component is used to add or remove quantity.\n */\n@observer\nexport default class IncrementalQuantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1,\n decrementGlyphClass: 'fas fa-minus',\n incrementGlyphClass: 'fas fa-plus'\n };\n\n private readonly _minValue: number;\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly payLoad: IPayLoad;\n\n public static getDerivedStateFromProps(\n props: Readonly,\n state: IIncrementalQuantityState\n ): IIncrementalQuantityState {\n const nextState = { ...state };\n\n if (props.disabled && !state.isUpdating) {\n nextState.isUpdating = true;\n }\n\n if (!props.disabled && state.isUpdating) {\n nextState.currentInput = props.currentCount ?? 1;\n nextState.isUpdating = false;\n }\n return nextState;\n }\n\n constructor(props: IIncrementalQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount ?? 1, isUpdating: false };\n this._onIncrement = this._onIncrement.bind(this);\n this._onDecrement = this._onDecrement.bind(this);\n this._handleChange = this._handleChange.bind(this);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\n this._minValue = this.props.min ?? IncrementalQuantity.defaultProps.min!;\n }\n\n public render(): JSX.Element {\n const { min, max } = this.props;\n\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\n const decrementDisabled = this.state.currentInput <= (min ?? 1) || this.props.isGiftCard;\n const incrementDisabled = this.state.currentInput >= max || this.props.isGiftCard;\n const currentValue = this.state.currentInput;\n this.payLoad.contentAction.etext = TelemetryConstant.DecrementQuantity;\n const decrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.IncrementQuantity;\n const incrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n const ariaLablelText = `${this.props.inputQuantityAriaLabel ?? ''} ${this.state.currentInput}`;\n\n let extraClassDecrement = '';\n if (decrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassDecrement = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClassDecrement = 'transition';\n }\n let extraClassIncrement = '';\n if (incrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassIncrement = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClassIncrement = 'transition';\n }\n\n return (\n <>\n
\n \n \n \n \n \n \n \n
\n \n );\n }\n\n /**\n * It checks if its in mobile view or not.\n * @returns Boolean.\n */\n private readonly isMobileView = (): boolean => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Added gridsetting values.\n const context = {\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as IRequestContext;\n\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n return isMobileCheck === 'xs' || isMobileCheck === 'sm';\n };\n\n private _onIncrement(): void {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n\n if (currQuantity < this.props.max) {\n invokeCallback = true;\n updatedQuantity = currQuantity + 1;\n } else {\n invokeCallback = false;\n updatedQuantity = this.props.max;\n }\n\n if (invokeCallback && this.props.onChange) {\n if (this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _onDecrement(): void {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n\n if (currQuantity >= this._minValue) {\n invokeCallback = true;\n updatedQuantity = currQuantity - 1;\n } else {\n invokeCallback = false;\n updatedQuantity = this._minValue;\n }\n\n if (invokeCallback && this.props.onChange) {\n if (this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n let currentValue = Number.parseInt(e.target.value, 10);\n if (Number.isNaN(currentValue)) {\n this.setState({ currentInput: currentValue });\n return;\n }\n currentValue = Math.min(this.props.max, Math.max(this._minValue, currentValue));\n this.setState({ currentInput: currentValue });\n debounce(() => {\n // Due of usage debouncer, we may ignore onChange return value\n this.props.onChange && this.props.onChange(this.state.currentInput);\n\n const inputElement =\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n if (inputElement) {\n inputElement.setAttribute('aria-valuenow', this.state.currentInput.toString());\n inputElement.setAttribute('value', this.state.currentInput.toString());\n }\n }, 1000)();\n }\n\n /**\n * Validates min and updates.\n */\n private readonly _validateMin = (): void => {\n if (Number.isNaN(this.state.currentInput)) {\n this.setState({ currentInput: this._minValue });\n } else {\n const currentValue = Math.min(this.props.max, Math.max(this._minValue, this.state.currentInput));\n if (currentValue !== this.state.currentInput) {\n this.setState({ currentInput: currentValue });\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 MsDyn365 from '@msdyn365-commerce/core';\n\nimport { IMobileProps, VariantType } from './isMobile.props';\n\n/**\n * IsMobile component.\n * @param props\n */\nexport const isMobile = (props: IMobileProps) => {\n const { variant, context } = props;\n switch (variant) {\n case VariantType.Browser:\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context?.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'lg';\n case VariantType.Viewport:\n const viewport = context?.device?.Type === 'Mobile' ? 'xs' : 'lg';\n return viewport;\n default:\n return 'lg';\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';\n\nexport enum VariantType {\n Browser,\n Viewport\n}\n\n/**\n * IsMobile properties.\n */\nexport interface IMobileProps {\n /**\n * Contains variant i.e browser | viewport.\n */\n variant?: VariantType;\n context?: Msdyn365.IRequestContext;\n}\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\nimport { ILabeledDropdownProps } from './LabeledDropdown.props';\n\nexport interface ILabeledDropdownState {\n selectedIndex: number;\n}\n\n/**\n * Labeled Dropdown component.\n */\nexport default class LabeledDropdown extends React.PureComponent {\n public static defaultProps: Partial = {\n toggleColor: 'link'\n };\n\n constructor(props: ILabeledDropdownProps) {\n super(props);\n this._onSelectOption = this._onSelectOption.bind(this);\n const selectedKey = this.props.selectedOption.key;\n const keys = this.props.dropdownOptions.map(option => option.key);\n this.state = { selectedIndex: keys.indexOf(selectedKey) };\n }\n\n public render(): JSX.Element {\n const { labelText, labelClassname, dropdownId, dropdownOptions, dropdownClassname } = this.props;\n\n const labelClassNames = classNames('msc-l-dropdown__label', labelClassname);\n const dropdownClassNames = classNames('msc-l-dropdown', dropdownClassname);\n const selectedIndex = this._getSelectedIndex();\n\n return (\n <>\n \n \n \n );\n }\n\n private _getSelectedIndex(): number {\n if (this.props.controlledByParent) {\n let selectedIndex = -1;\n const selectedKey = this.props.selectedOption.key;\n for (let i = 0; i < this.props.dropdownOptions.length; i++) {\n if (this.props.dropdownOptions[i].key === selectedKey) {\n selectedIndex = i;\n break;\n }\n }\n\n return selectedIndex;\n }\n\n return this.state.selectedIndex;\n }\n\n private _onSelectOption(event: React.ChangeEvent): void {\n const { dropdownOptions, onSelectOption } = this.props;\n const index = event.currentTarget.selectedOptions[0].index;\n const selectedOption = dropdownOptions[index];\n this.setState({ selectedIndex: index });\n onSelectOption({ selectedOption });\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';\nimport { createPortal } from 'react-dom';\n\nimport { canUseDOM } from '../common/utilities';\nimport { IPortalProps } from './Portal.props';\n\nexport interface IPortalState {\n defaultNode: Element | null;\n}\n\n/**\n * Portal component.\n */\nexport default class Portal extends React.PureComponent {\n constructor(props: IPortalProps) {\n super(props);\n\n this.state = {\n defaultNode: null\n };\n }\n\n public componentWillUnmount(): void {\n if (this.state.defaultNode) {\n this.state.defaultNode.remove();\n }\n }\n\n public render(): React.ReactPortal | null {\n let node = null;\n if (!canUseDOM) {\n return null;\n }\n\n if (!this.props.node && !this.state.defaultNode) {\n node = document.createElement('div');\n document.body.appendChild(node);\n this.setState({ defaultNode: node });\n }\n return createPortal(this.props.children, this.props.node || node);\n }\n}\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\nimport { focusableElements, TransitionTimeouts } from '../common/utilities';\nimport Fade from '../fade/Fade';\nimport IModalProps from './Modal.props';\nimport Portal from './Portal';\n\nexport interface IModalState {\n wasOpen: boolean;\n isOpen: boolean;\n mouseDownElement: EventTarget | null;\n}\n\nexport type ModalVerticalPosition = 'top' | 'center' | 'bottom';\nexport type ModalHorizontalPosition = 'left' | 'center' | 'right';\n\n/**\n * Modal component.\n */\nexport default class Modal extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n autoFocus: true,\n verticalPosition: 'top', // Needs to be non-null since we use non-null assertion in getVerticalPositionClass\n horizontalPosition: 'center', // Needs to be non-null since we use non-null assertion in getHorizontalPositionClass\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n zIndex: 1000,\n tabIndex: 0,\n fade: true,\n modalTransition: {\n timeout: TransitionTimeouts.Modal\n },\n backdropTransition: {\n mountOnEnter: true,\n timeout: TransitionTimeouts.Fade // Uses standard fade transition\n }\n };\n\n private static openCount: number = 0;\n\n private element: HTMLElement | null;\n\n private mounted: boolean;\n\n private readonly ref: React.RefObject;\n\n /**\n * This property is initialized in componentDidMount rather than constructor in case the dialog needs to be pre-rendered.\n */\n private applicationNode!: HTMLElement | null;\n\n constructor(props: IModalProps) {\n super(props);\n this.element = null;\n this.ref = React.createRef();\n this.mounted = false;\n\n this._getFocusableChildren = this._getFocusableChildren.bind(this);\n this._handleBackdropClick = this._handleBackdropClick.bind(this);\n this._handleBackdropMouseDown = this._handleBackdropMouseDown.bind(this);\n this._handleEscape = this._handleEscape.bind(this);\n this._handleTab = this._handleTab.bind(this);\n this._onOpened = this._onOpened.bind(this);\n this._onClosed = this._onClosed.bind(this);\n\n this.state = {\n wasOpen: false,\n isOpen: props.isOpen || false,\n mouseDownElement: null\n };\n\n if (props.isOpen) {\n this._open();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.onEnter) {\n this.props.onEnter();\n }\n this.mounted = true;\n\n const element = document.createElement('div');\n element.setAttribute('tabindex', '-1');\n element.style.visibility = 'hidden';\n element.style.position = 'position';\n this.element = element;\n document.body.appendChild(element);\n\n this.applicationNode =\n this.props.applicationNode instanceof HTMLElement\n ? this.props.applicationNode\n : document.querySelector(`#${this.props.applicationNode}`);\n\n if (this.state.isOpen && !this.state.wasOpen) {\n this._open();\n }\n }\n\n public componentWillUnmount(): void {\n if (this.props.onExit) {\n this.props.onExit();\n }\n if (this.state.isOpen) {\n this._close();\n }\n this.mounted = false;\n\n if (this.element) {\n this.element.remove();\n }\n }\n\n public componentDidUpdate(_prevProps: IModalProps, prevState: IModalState): void {\n if (\n (this.state.isOpen && !prevState.isOpen) ||\n (this.props.shouldUpdateFocusToFirstElement && !_prevProps.shouldUpdateFocusToFirstElement)\n ) {\n setTimeout(() => {\n const focusableElementArr = this._getFocusableChildren();\n if (focusableElementArr && focusableElementArr.length > 0 && focusableElementArr[0]) {\n const firstFocusableElement = focusableElementArr[0] as HTMLElement;\n firstFocusableElement.focus();\n }\n }, 100);\n }\n }\n // eslint-disable-next-line react/no-deprecated\n public componentWillReceiveProps(nextProps: IModalProps): void {\n if (nextProps.isOpen && !this.props.isOpen) {\n this.setState({ isOpen: nextProps.isOpen });\n }\n }\n\n public render(): JSX.Element | null {\n if (this.state.isOpen && !this.state.wasOpen) {\n this._open();\n }\n if (this.element !== null) {\n const {\n wrapClassName,\n modalClassName,\n backdropClassName,\n contentClassName,\n className,\n cssModule,\n modalTransition,\n backdropTransition,\n backdrop,\n isOpen,\n onOpened,\n onClosed,\n role,\n size,\n tabIndex,\n external,\n verticalPosition,\n horizontalPosition,\n keyboard,\n zIndex,\n fade,\n toggle,\n children,\n applicationNode,\n returnFocusRef,\n 'aria-labelledby': ariaLabelledbyId,\n ...dialogAttributes\n } = this.props;\n\n const modalAttributes = {\n onClick: this._handleBackdropClick,\n onMouseDown: this._handleBackdropMouseDown,\n onKeyUp: this._handleEscape,\n onKeyDown: this._handleTab,\n style: { display: 'block' }\n };\n\n const modalTransitions = {\n ...Fade.defaultProps,\n ...modalTransition,\n baseClass: fade && modalTransition ? modalTransition.baseClass : '',\n timeout: fade && modalTransition ? modalTransition.timeout : 0\n };\n const backdropTransitions = {\n ...Fade.defaultProps,\n ...backdropTransition,\n baseClass: fade && backdropTransition ? backdropTransition.baseClass : '',\n timeout: fade && backdropTransition ? backdropTransition.timeout : 0\n };\n\n const Backdrop = fade ? (\n \n ) : (\n
\n );\n\n const dialogBaseClass = 'msc-modal__dialog';\n const dialogClasses = classNames([dialogBaseClass, className, size ? `msc-modal__${size}` : null]);\n\n const dialog = (\n \n
\n {children}\n
\n
\n );\n\n return (\n \n
\n \n {external}\n {dialog}\n \n {Backdrop}\n
\n
\n );\n }\n\n return null;\n }\n\n private _open(): void {\n if (this.element) {\n this.element.style.zIndex = `${this.props.zIndex || 1000}`;\n this.element.style.display = 'block';\n this.element.style.visibility = 'visible';\n if (Modal.openCount === 0) {\n if (window) {\n const scrollY = window.scrollY;\n const scrollbarWidth = window.innerWidth - document.body.clientWidth;\n document.body.style.position = 'fixed';\n document.body.style.top = `-${scrollY}px`;\n document.body.style.right = `${scrollbarWidth}px`;\n document.body.style.left = '0px';\n }\n\n document.body.className = classNames(document.body.className, 'modal-open');\n }\n Modal.openCount += 1;\n document.body.firstElementChild?.setAttribute('aria-hidden', 'true');\n if (this.applicationNode) {\n this.applicationNode.setAttribute('aria-hidden', 'true');\n }\n\n this.setState({ ...this.state, wasOpen: true });\n }\n }\n\n private _close(): void {\n if (!this.state.isOpen) {\n return;\n }\n\n if (this.element) {\n this.element.style.display = 'none';\n setTimeout(() => {\n if (this.element) {\n this.element.style.visibility = 'hidden';\n this.element.style.removeProperty('display');\n }\n }, 0);\n }\n\n if (Modal.openCount <= 1) {\n const modalOpenClassName = 'modal-open';\n document.body.firstElementChild?.setAttribute('aria-hidden', 'false');\n\n // Use regex to prevent matching `modal-open` as part of a different class, e.g. `my-modal-opened`\n const modalOpenClassNameRegex = new RegExp(`(^| )${modalOpenClassName}( |$)`);\n document.body.className = document.body.className.replace(modalOpenClassNameRegex, ' ').trim();\n\n if (window) {\n const scrollY = document.body.style.top;\n document.body.style.position = '';\n document.body.style.top = '';\n document.body.style.right = '';\n document.body.style.left = '';\n window.scrollTo(0, -Number.parseInt(scrollY || '0', 10));\n }\n }\n Modal.openCount -= 1;\n\n if (this.applicationNode) {\n this.applicationNode.setAttribute('aria-hidden', 'false');\n }\n\n if (this.props.returnFocusRef && this.props.returnFocusRef.current) {\n this.props.returnFocusRef.current.focus();\n }\n\n this.setState({ ...this.state, wasOpen: false });\n }\n\n private _getFocusableChildren(): NodeListOf | null {\n if (this.element === null) {\n return null;\n }\n\n return this.element.querySelectorAll(focusableElements.join(', '));\n }\n\n private _getFocusedChild(): Element | null {\n const focusableChildren = this._getFocusableChildren();\n\n try {\n return document.activeElement;\n } catch {\n return focusableChildren === null ? null : focusableChildren[0];\n }\n }\n\n private _handleBackdropClick(e: React.MouseEvent): void {\n if (e.target === this.state.mouseDownElement) {\n e.stopPropagation();\n if (!this.props.isOpen || this.props.backdrop !== true) {\n return;\n }\n\n const container = this.ref.current;\n\n if (e.target && container && !container.contains(e.target as Node) && this.props.toggle) {\n this.props.toggle();\n }\n }\n }\n\n private _handleTab(e: React.KeyboardEvent): void {\n if (e.which !== 9) {\n return;\n }\n\n const focusableChildren = this._getFocusableChildren();\n if (focusableChildren === null) {\n return;\n }\n\n const totalFocusable = focusableChildren.length;\n const currentFocus = this._getFocusedChild();\n\n let focusedIndex = 0;\n\n for (let i = 0; i < totalFocusable; i += 1) {\n if (focusableChildren[i] === currentFocus) {\n focusedIndex = i;\n break;\n }\n }\n\n let el: HTMLElement | null = null;\n if (e.shiftKey && focusedIndex === 0) {\n e.preventDefault();\n el = focusableChildren[totalFocusable - 1] as HTMLElement;\n } else if (!e.shiftKey && focusedIndex === totalFocusable - 1) {\n e.preventDefault();\n el = focusableChildren[0] as HTMLElement;\n }\n if (el) {\n el.focus();\n }\n }\n\n private _handleBackdropMouseDown(e: React.MouseEvent): void {\n this.setState({\n mouseDownElement: e.target\n });\n }\n\n private _handleEscape(e: React.KeyboardEvent): void {\n if (this.props.isOpen && this.props.keyboard && e.keyCode === 27 && this.props.toggle) {\n this.props.toggle();\n }\n }\n\n private _onOpened(node: HTMLElement, isAppearing: boolean): void {\n if (this.props.onOpened !== undefined) {\n this.props.onOpened();\n }\n if (this.props.modalTransition !== undefined && this.props.modalTransition.onEntered !== undefined) {\n this.props.modalTransition.onEntered(node, isAppearing);\n }\n }\n\n private _onClosed(node: HTMLElement): void {\n if (this.props.onClosed !== undefined) {\n this.props.onClosed();\n }\n this._close();\n if (this.props.modalTransition !== undefined && this.props.modalTransition.onExited !== undefined) {\n this.props.modalTransition.onExited(node);\n }\n if (this.mounted) {\n this.setState({ isOpen: false });\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 classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport IModalBodyProps from './ModalBody.props';\n\n/**\n * ModalBody component.\n */\nexport default class ModalBody extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'div'\n };\n\n public render(): JSX.Element {\n const { className, cssModule, tag, id, ...attributes } = this.props;\n const Tag = tag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__body'), cssModule);\n return ;\n }\n}\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\nimport { mapToCssModules } from '../common/utilities';\nimport IModalFooterProps from './ModalFooter.props';\n\n/**\n * ModalFooter component.\n */\nexport default class ModalFooter extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'div'\n };\n\n public render(): JSX.Element {\n const { className, cssModule, tag, ...attributes } = this.props;\n const Tag = tag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__footer'), cssModule);\n return ;\n }\n}\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\nimport { mapToCssModules } from '../common/utilities';\nimport IModalHeaderProps from './ModalHeader.props';\n\n/**\n * ModalHeader component.\n */\nexport default class ModalHeader extends React.PureComponent {\n public render(): JSX.Element {\n let closeButton;\n const { className, cssModule, children, toggle, tag, wrapTag, closeAriaLabel, closeButtonLabel, id, ...attributes } = this.props;\n\n const Tag = tag || 'h5';\n const WrapTag = wrapTag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__header'), cssModule);\n\n if (toggle) {\n closeButton = (\n \n );\n }\n\n return (\n \n {children && {children}}\n {closeButton}\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 classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationProps } from './Pagination.props';\n\n/**\n * Pagination component.\n */\nexport default class Pagination extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'nav',\n listTag: 'ul',\n 'aria-label': 'pagination'\n };\n\n public render(): JSX.Element {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const {\n className,\n listClassName,\n cssModule,\n size,\n tag: Tag,\n listTag: ListTag,\n 'aria-label': label,\n role,\n ...props\n }: any = this.props;\n\n const paginationClasses = mapToCssModules(classNames(className), cssModule);\n\n const listpaginationClasses = mapToCssModules(\n classNames(listClassName, 'msc-pagination', {\n [`msc-pagination-${size}`]: !!size\n }),\n cssModule\n );\n\n return (\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 classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationItemProps } from './PaginationItem.props';\n\n/**\n * PaginationItem component.\n */\nexport default class PaginationItem extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'li'\n };\n\n public render(): JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { active, className, cssModule, disabled, tag: Tag, ...props }: any = this.props;\n\n const paginationItemClasses = mapToCssModules(\n classNames(className, 'msc-page-item', {\n active,\n disabled\n }),\n cssModule\n );\n\n return ;\n }\n}\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\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad } from '../common/telemetryHelper';\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationLinkProps } from './PaginationLink.props';\n\n/**\n * PaginationLink component.\n */\nexport default class PaginationLink extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'a',\n role: 'link'\n };\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IPaginationLinkProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\n }\n\n public render(): JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let { className, cssModule, next, previous, tag: Tag, children, telemetryContent, ...props }: any = this.props;\n let etext: string = children;\n const paginationLinkclasses = mapToCssModules(classNames(className, 'msc-page-link'), cssModule);\n\n let defaultCaret;\n if (previous) {\n defaultCaret = '\\u00AB';\n etext = 'previous';\n } else if (next) {\n defaultCaret = '\\u00BB';\n etext = 'next';\n }\n\n if (children && Array.isArray(children) && children.length === 0) {\n children = null;\n }\n if (!props.href && Tag === 'a') {\n Tag = 'span';\n }\n\n if (previous || next) {\n children = [{children || defaultCaret}];\n }\n\n this.payLoad.contentAction.etext = etext;\n const attribute = getTelemetryAttributes(telemetryContent, this.payLoad);\n\n return (\n \n {children}\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 classNames from 'classnames';\nimport * as React from 'react';\n\nimport { UncontrolledTooltip } from '..';\nimport { mapToCssModules } from '../common/utilities';\nimport PaginationItem from './PaginationItem';\nimport PaginationLink from './PaginationLink';\nimport { IUncontrolledPaginationProps } from './UncontrolledPagination.props';\n\n/**\n * Uncontrolled Pagination component.\n */\nexport default class UncontrolledPagination extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'nav',\n listTag: 'ul',\n 'aria-label': 'pagination',\n items: 0,\n itemsPerPage: 25,\n startingItem: 0\n };\n\n private static readonly pagesDisplayed: number = 7;\n\n private maxPages: number;\n\n private activePage: number = 0;\n\n private qsps: { [param: string]: string };\n\n private url: string;\n\n private hash: string;\n\n constructor(props: IUncontrolledPaginationProps) {\n super(props);\n this.maxPages = this.props.items ? Math.ceil(this.props.items / this.props.itemsPerPage!) : 0;\n this.activePage = Math.floor((this.props.startingItem || 0) / this.props.itemsPerPage!);\n this.qsps = {};\n const splitUrl = this.props.url.split('?');\n\n if (splitUrl[1]) {\n this.url = splitUrl[0];\n const secondSplit = splitUrl[1].split('#');\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n const parsedQsps = secondSplit[0].split('&');\n\n for (const qsp of parsedQsps) {\n const qspPair = qsp.split('=');\n\n if (this.props.qsp !== qspPair[0]) {\n this.qsps[qspPair[0]] = qspPair[1];\n }\n }\n } else {\n const secondSplit = splitUrl[0].split('#');\n this.url = secondSplit[0];\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n }\n }\n\n public render(): JSX.Element {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const {\n className,\n baseUrl,\n qsp,\n items,\n itemsPerPage,\n startingItem,\n previousText,\n nextText,\n previousAriaLabel,\n nextAriaLabel,\n listClassName,\n cssModule,\n children,\n size,\n tag: Tag,\n listTag: ListTag,\n 'aria-label': label,\n role,\n ...props\n }: any = this.props;\n\n this.maxPages = this.props.items ? Math.ceil(this.props.items / this.props.itemsPerPage!) : 0;\n this.activePage = Math.floor((this.props.startingItem || 0) / this.props.itemsPerPage!);\n this.qsps = {};\n const splitUrl = this.props.url.split('?');\n\n if (splitUrl[1]) {\n this.url = splitUrl[0];\n const secondSplit = splitUrl[1].split('#');\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n const parsedQsps = secondSplit[0].split('&');\n\n for (const activeQsp of parsedQsps) {\n const qspPair = activeQsp.split('=');\n\n if (this.props.qsp !== qspPair[0]) {\n this.qsps[qspPair[0]] = qspPair[1];\n }\n }\n } else {\n const secondSplit = splitUrl[0].split('#');\n this.url = secondSplit[0];\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n }\n\n const paginationClasses = mapToCssModules(classNames(className), cssModule);\n\n const listpaginationClasses = mapToCssModules(\n classNames(listClassName, 'msc-pagination', {\n [`msc-pagination-${size}`]: !!size\n }),\n cssModule\n );\n\n return (\n \n \n {this._generatePageLinks()}\n \n \n );\n }\n\n private _generateUrl(page: number): string {\n const items = this.props.itemsPerPage! * page;\n const keys = Object.keys(this.qsps);\n let qspUrl = page > 0 ? `?${this.props.qsp}=${items}` : '';\n\n keys.forEach((key: string) => {\n qspUrl = qspUrl ? `${qspUrl}&${key}=${this.qsps[key]}` : `?${key}=${this.qsps[key]}`;\n });\n\n return this.url + qspUrl + this.hash;\n }\n\n private _generatePaginationArrow(next: boolean, disable: boolean, className: string): React.ReactElement {\n const url = disable ? undefined : this._generateUrl(this.activePage + (next ? 1 : -1));\n const tooltipId = next ? this.props.nextId : this.props.prevId;\n const ariaDescribedBy = next ? this.props.nextAreaDescribed : this.props.prevAreaDescribed;\n const placement = next ? 'right' : 'left';\n const tag = disable ? 'span' : 'a';\n\n return (\n \n \n {next ? this.props.nextText : this.props.previousText}\n \n {tooltipId && (\n \n {next ? 'next' : 'previous'}\n \n )}\n \n );\n }\n\n private _generatePaginationItem(page: number): React.ReactElement {\n const active = this.activePage === page;\n const url = this._generateUrl(page);\n page += 1;\n\n return (\n \n \n {page}\n \n \n );\n }\n\n private _generateEllipse(): React.ReactElement {\n return (\n \n ...\n \n );\n }\n\n private _generatePageLinks(): React.ReactFragment {\n const displayCountSide = 3;\n let leftDistance = this.activePage;\n let rightDistance = this.maxPages - this.activePage - 1;\n const leftEllipse = this.maxPages > UncontrolledPagination.pagesDisplayed && leftDistance > 3;\n const rightEllipse = this.maxPages > UncontrolledPagination.pagesDisplayed && rightDistance > 3;\n\n leftDistance = Math.min(leftDistance, displayCountSide);\n rightDistance = Math.min(rightDistance, displayCountSide);\n const pages = [];\n const ellipseOffset = leftEllipse ? -1 : 0;\n const displayedPagesOnLeft = leftDistance + (displayCountSide - rightDistance) + ellipseOffset;\n const startingIndex = Math.max(this.activePage - displayedPagesOnLeft, 0);\n const endIndex = Math.min(\n startingIndex + 5 + (rightEllipse ? 0 : 1) + (leftEllipse ? 0 : 1),\n rightEllipse ? this.maxPages - 1 : this.maxPages\n );\n\n if (leftEllipse) {\n pages.push(this._generatePaginationItem(0));\n pages.push(this._generateEllipse());\n }\n\n for (let i = startingIndex; i < endIndex; i++) {\n pages.push(this._generatePaginationItem(i));\n }\n\n if (rightEllipse) {\n pages.push(this._generateEllipse());\n pages.push(this._generatePaginationItem(this.maxPages - 1));\n }\n\n return (\n <>\n {this._generatePaginationArrow(false, this.activePage === 0, 'previous')}\n {pages}\n {this._generatePaginationArrow(true, this.activePage === this.maxPages - 1, 'next')}\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 classNames from 'classnames';\nimport * as React from 'react';\n\nimport { canUseDOM, getTargetElement, mapToCssModules } from '../common/utilities';\nimport PopperContent from '../popper-content/PopperContent';\nimport { IPopoverProps } from './Popover.props';\n\n/**\n * Popover component.\n */\nexport default class Popover extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n placement: 'right',\n toggle: () => {\n return;\n }\n };\n\n public props: IPopoverProps;\n\n private target: HTMLElement | null;\n\n private popover: HTMLDivElement | null;\n\n private tabPressed: boolean = false;\n\n constructor(props: IPopoverProps) {\n super(props);\n this.props = props;\n\n this.popover = null;\n this._addTargetEvents = this._addTargetEvents.bind(this);\n this._handleDocumentClick = this._handleDocumentClick.bind(this);\n this._removeTargetEvents = this._removeTargetEvents.bind(this);\n this.getRef = this.getRef.bind(this);\n this._toggle = this._toggle.bind(this);\n this._focusOutTarget = this._focusOutTarget.bind(this);\n this._focusOutPopover = this._focusOutPopover.bind(this);\n this._keyDown = this._keyDown.bind(this);\n this._show = this._show.bind(this);\n this._hide = this._hide.bind(this);\n this.target = null;\n }\n\n public componentDidMount(): void {\n this.target = getTargetElement(this.props.target);\n this._handleProps();\n }\n\n public componentDidUpdate(): void {\n this._handleProps();\n }\n\n public componentWillUnmount(): void {\n this._removeTargetEvents();\n }\n\n public getRef(ref: HTMLDivElement | null): void {\n this.popover = ref;\n }\n\n public render(): JSX.Element | null {\n if (!this.props.isOpen) {\n return null;\n }\n\n const {\n cssModule,\n isOpen,\n target,\n placementPrefix,\n hideArrow,\n className,\n innerClassName,\n modifiers,\n placement,\n container,\n offset,\n toggle,\n boundariesElement,\n role,\n ...attributes\n } = this.props;\n\n const classes = mapToCssModules(classNames('msc-popover-inner', this.props.innerClassName), this.props.cssModule);\n\n const popperClasses = mapToCssModules(classNames('msc-popover', 'show', this.props.className), this.props.cssModule);\n\n return (\n \n
\n \n );\n }\n\n private _handleProps(): void {\n if (this.props.isOpen) {\n this._show();\n } else {\n this._hide();\n }\n }\n\n private _show(): void {\n this.tabPressed = false;\n this._addTargetEvents();\n if (!this.props.isOpen) {\n this._toggle();\n }\n }\n\n private _hide(): void {\n this._removeTargetEvents();\n if (this.props.isOpen) {\n this._toggle();\n }\n }\n\n private _handleDocumentClick(e: Event): void {\n if (!this.target) {\n return;\n }\n\n const target = e.target as HTMLElement;\n\n if (\n e.target !== this.target &&\n !this.target.contains(target) &&\n e.target !== this.popover &&\n !(this.popover && this.popover.contains(target))\n ) {\n if (this.props.isOpen) {\n this._toggle();\n }\n }\n }\n\n private _addTargetEvents(): void {\n if (!this.target) {\n return;\n }\n if (canUseDOM) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this._handleDocumentClick, true);\n });\n this.target.addEventListener('focusout', this._focusOutTarget, true);\n this.target.addEventListener('keydown', this._keyDown, true);\n }\n }\n\n private _removeTargetEvents(): void {\n if (!this.target) {\n return;\n }\n if (canUseDOM) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.removeEventListener(event, this._handleDocumentClick, true);\n });\n this.target.removeEventListener('focusout', this._focusOutTarget, true);\n this.target.removeEventListener('keydown', this._keyDown, true);\n }\n }\n\n private _focusOutPopover(): void {\n setTimeout(() => {\n const nextFocus = document.activeElement;\n if (this.popover && !this.popover.contains(nextFocus)) {\n this._hide();\n }\n }, 1);\n }\n\n private _focusOutTarget(): void {\n if (this.tabPressed) {\n this.tabPressed = false;\n setTimeout(() => {\n const nextFocus = document.activeElement;\n if (this.popover && !this.popover.contains(nextFocus)) {\n this._hide();\n }\n }, 1);\n }\n }\n\n private _keyDown(e: KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (this.props.isOpen && e.keyCode === 27 && this.props.toggle) {\n this.props.toggle();\n }\n }\n\n private _toggle(): void {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.toggle) {\n this.props.toggle();\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 classNames from 'classnames';\nimport { Data } from 'popper.js';\nimport * as React from 'react';\nimport { Arrow, Popper as ReactPopper } from 'react-popper';\n\nimport { getTargetElement, mapToCssModules } from '../common/utilities';\nimport { IPopperContentProps } from './PopperContent.props';\n\nexport interface IPopperContentState {\n placement?: string;\n isOpen: boolean;\n}\n\n/**\n * Renders popper content. This is an internal helper class shared between components.\n */\nexport default class PopperContent extends React.Component {\n public static defaultProps: Partial = {\n boundariesElement: 'scrollParent',\n placement: 'auto',\n hideArrow: false,\n isOpen: false,\n offset: 0,\n fallbackPlacement: 'flip',\n flip: true,\n container: 'body',\n modifiers: {}\n };\n\n constructor(props: IPopperContentProps) {\n super(props);\n\n this._handlePlacementChange = this._handlePlacementChange.bind(this);\n this.state = { isOpen: props.isOpen };\n }\n\n public componentDidMount(): void {\n this._handleProps();\n }\n\n public componentDidUpdate(prevProps: IPopperContentProps): void {\n if (this.props.isOpen !== prevProps.isOpen) {\n this._handleProps();\n }\n }\n\n public shouldComponentUpdate(nextProps: IPopperContentProps, nextState: IPopperContentState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n return this.props.isOpen ? this._renderChildren() : null;\n }\n\n private _handlePlacementChange(data: Data): Data {\n if (this.state.placement !== data.placement) {\n this.setState({ placement: data.placement });\n }\n\n return data;\n }\n\n private _handleProps(): void {\n if (this.props.container !== 'inline') {\n if (this.props.isOpen) {\n this._show();\n } else {\n this._hide();\n }\n }\n }\n\n private _hide(): void {\n this.setState({ isOpen: false });\n }\n\n private _show(): void {\n this.setState({ isOpen: true });\n }\n\n private _renderChildren(): JSX.Element | null {\n const {\n cssModule,\n children,\n isOpen,\n flip,\n offset,\n target,\n fallbackPlacement,\n focusOut,\n placementPrefix,\n arrowClassName: arrowClassNameOrUndefined,\n hideArrow,\n className,\n tag,\n modifiers,\n boundariesElement,\n ...attrs\n } = this.props;\n\n const arrowClassName = mapToCssModules(classNames('msc-arrow', arrowClassNameOrUndefined), cssModule);\n\n const placement = (this.state.placement || attrs.placement || 'auto').split('-')[0];\n const popperClassName = mapToCssModules(\n classNames(className, placementPrefix ? `${placementPrefix}-${placement}` : placement),\n this.props.cssModule\n );\n\n const extendedModifiers = {\n offset: { offset },\n flip: { enabled: flip, behavior: fallbackPlacement },\n preventOverflow: { boundariesElement },\n update: {\n enabled: true,\n order: 950,\n fn: this._handlePlacementChange\n },\n ...modifiers\n };\n\n const targetElement = getTargetElement(target);\n if (targetElement === null) {\n return null;\n }\n\n return (\n \n {children}\n {!hideArrow && }\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button } from '..';\nimport { Modal, ModalBody, ModalHeader } from '../modal';\n\nexport interface IPopupProductsProps {\n dialogStrings?: {\n closeWindowButtonText: string;\n };\n\n className: string;\n processStatusClass: string;\n text: string;\n\n modalOpen: boolean | undefined;\n setModalOpen(newValue: boolean): void;\n}\n\nexport const PopupProducts = (popupProps: IPopupProductsProps) => {\n const { processStatusClass, dialogStrings, className, text, modalOpen, setModalOpen } = popupProps;\n\n const closeModal = React.useCallback(() => {\n setModalOpen(false);\n }, [setModalOpen]);\n\n if (!dialogStrings || !text) {\n return null;\n }\n\n return (\n \n \n \n
\n
{text}
\n \n {dialogStrings.closeWindowButtonText}\n \n \n \n );\n};\n\nexport default PopupProducts;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '..';\nimport { Modal, ModalBody, ModalHeader } from '../modal';\n\nexport interface IPopupProps extends IComponentProps<{ product: SimpleProduct | undefined; price: ProductPrice | undefined }> {\n dialogStrings?: {\n goToCartText: string;\n continueShoppingText: string;\n headerItemOneText: string;\n headerItemFormatText: string;\n headerMessageText: string;\n freePriceText: string;\n originalPriceText: string;\n currentPriceText: string;\n };\n\n className: string;\n imageSettings?: IImageSettings;\n gridSettings: IGridSettings | undefined;\n productQuantity: number;\n priceComponent: React.ReactNode;\n navigationUrl?: string;\n modalOpen: boolean | undefined;\n telemetryContent?: ITelemetryContent;\n setModalOpen(newValue: boolean): void;\n}\n\nexport const Popup = (popupProps: IPopupProps) => {\n const {\n dialogStrings,\n className,\n imageSettings,\n gridSettings,\n data: { product, price },\n productQuantity,\n priceComponent,\n navigationUrl,\n modalOpen,\n telemetryContent,\n setModalOpen,\n context\n } = popupProps;\n const closeModal = React.useCallback(() => {\n setModalOpen(false);\n }, [setModalOpen]);\n if (!dialogStrings || !product) {\n return null;\n }\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.ContinueShopping);\n const continueShoppingAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ViewBagAndCheckout;\n const viewBagAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n const fallbackImageUrl = getFallbackImageUrl(product.ItemId, context.actionContext.requestContext.apiSettings);\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n const quantity = productQuantity !== undefined ? productQuantity : 1;\n const itemsString =\n quantity === 1 ? dialogStrings.headerItemOneText : dialogStrings.headerItemFormatText.replace('{0}', quantity.toString());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\n const shouldDisplayUnitOfMeasure =\n context.app.config?.unitOfMeasureDisplayType && context.app.config.unitOfMeasureDisplayType !== 'none';\n\n const reducedDimensions: string = product.Dimensions\n ? product.Dimensions.reduce((str, productDimension) => {\n if (productDimension.DimensionValue && productDimension.DimensionValue.Value) {\n if (str) {\n return `${str}, ${productDimension.DimensionValue.Value}`;\n }\n\n return `${productDimension.DimensionValue.Value}`;\n }\n\n return str;\n }, '')\n : '';\n\n return (\n \n \n {itemsString}\n {dialogStrings.headerMessageText}\n \n \n \n {product.Name}\n {reducedDimensions !== '' ?
{reducedDimensions}
: ''}\n {price ?
{priceComponent}
: ''}\n {product.DefaultUnitOfMeasure && shouldDisplayUnitOfMeasure ? (\n
\n {product.DefaultUnitOfMeasure}\n
\n ) : (\n ''\n )}\n \n {dialogStrings.goToCartText}\n \n \n {dialogStrings.continueShoppingText}\n \n
\n
\n );\n};\n\nexport default Popup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { EnumExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport Button from '../button/Button';\nimport { Popover } from '../popover';\n\n/**\n * Resources for the price editor mode selection.\n */\nexport interface IPriceEditorModeSelectionResources {\n specifyAmountButtonText: string;\n payFullAmountButtonText: string;\n}\n\n/**\n * Props for the price editor mode selection.\n */\nexport interface IPriceEditorModeSelectionProps {\n className: string;\n\n resources: IPriceEditorModeSelectionResources;\n\n currentState: PriceEditorModeSelectionState;\n onStateChanged(state: PriceEditorModeSelectionState): void;\n}\n\n/**\n * Defines editor modes for the amount.\n */\nexport enum PriceEditorModeSelectionState {\n full = 0,\n partial = 1\n}\n\n/**\n * Retrieves resource value based by the given mode state.\n * @param modeState - Given state.\n * @param resources - All resources.\n * @returns Resource value for the given state.\n */\nconst getPriceEditorModeSelectionStateResources = (\n modeState: PriceEditorModeSelectionState,\n resources: IPriceEditorModeSelectionResources\n): string => {\n switch (modeState) {\n case PriceEditorModeSelectionState.full:\n return resources.payFullAmountButtonText;\n case PriceEditorModeSelectionState.partial:\n return resources.specifyAmountButtonText;\n default:\n throw new Error('Failed to retrieve resource description for unknown price editor selection state.');\n }\n};\n\n/**\n * On click functionality.\n * @param handleStateChange - Handle change state function.\n * @param modeState - New state.\n * @returns Event handler.\n */\nconst onClickHandler = (\n handleStateChange: (modeState: PriceEditorModeSelectionState) => void,\n modeState: PriceEditorModeSelectionState\n) => () => {\n handleStateChange(modeState);\n};\n\n/**\n * Renders a button that allows to update the mode to the given state.\n * @param modeState - The state to render.\n * @param resources - Resource values.\n * @param className - Element class name.\n * @param handleStateChange - Event handler to update the state.\n * @returns React node.\n */\nconst renderModeStateItem = (\n modeState: PriceEditorModeSelectionState,\n resources: IPriceEditorModeSelectionResources,\n className: string,\n handleStateChange: (modeState: PriceEditorModeSelectionState) => void\n): React.ReactNode => {\n const stateStringRepresentation = PriceEditorModeSelectionState[modeState];\n\n return (\n \n );\n};\n\n/**\n * On Toggle Popover functionality.\n * @param setPopoverState -Set popover state function.\n * @param isPopoverState -Boolean value.\n * @returns Set toggle popover state functionality.\n */\nconst togglePopoverHandler = (setPopoverState: React.Dispatch>, isPopoverState: boolean) => () => {\n setPopoverState(!isPopoverState);\n};\n\n/**\n * Price editor component which handles selection modes (for instance, full or partial amount).\n * @param props - Configuration of the component.\n * @returns React element.\n */\nexport const PriceEditorModeSelectionComponent: React.FC = (props: IPriceEditorModeSelectionProps) => {\n const popoverReference = React.createRef();\n const [isPopoverShown, setIsPopoverShown] = React.useState(false);\n\n const [modeState, setModeState] = React.useState(props.currentState);\n\n /**\n * Updates component state when a selection is changed.\n * @param clickedState - New mode state.\n */\n const onChangeMode = (clickedState: PriceEditorModeSelectionState) => {\n setModeState(clickedState);\n setIsPopoverShown(false);\n props.onStateChanged(clickedState);\n };\n\n return (\n
\n \n {getPriceEditorModeSelectionStateResources(modeState, props.resources)}\n \n \n {EnumExtensions.getEnumValues(PriceEditorModeSelectionState).map(state => {\n return renderModeStateItem(state, props.resources, props.className, onChangeMode);\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 { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport {\n IPriceEditorModeSelectionResources,\n PriceEditorModeSelectionComponent,\n PriceEditorModeSelectionState\n} from './price-editor-mode-selection';\n\n/**\n * Resources for price editor.\n */\nexport interface IPriceEditorResources extends IPriceEditorModeSelectionResources {\n priceEditorInputAriaLabel: string;\n}\n\n/**\n * The props required to render the component.\n */\nexport interface IPriceEditorProps {\n className: string;\n\n defaultAmount: number;\n\n resources: IPriceEditorResources;\n\n minimumValue?: number;\n maximumValue?: number;\n\n handleChange?(newValue: number): void;\n}\n\n/**\n * The state of the component.\n */\nexport interface IPriceEditorState {\n currentValue?: number;\n isInputFocused: boolean;\n}\n\n/**\n * Provides an input field which allows entering a price amount.\n */\nexport class PriceEditor extends React.PureComponent {\n private static readonly _precision = 2;\n\n private readonly _inputRef: React.RefObject;\n\n public constructor(props: IPriceEditorProps) {\n super(props);\n\n this._inputRef = React.createRef();\n\n let defaultValue = props.defaultAmount;\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.minimumValue) && defaultValue < this.props.minimumValue) {\n defaultValue = this.props.minimumValue;\n } else if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && defaultValue > this.props.maximumValue) {\n defaultValue = this.props.maximumValue;\n }\n\n this.state = {\n currentValue: defaultValue,\n isInputFocused: false\n };\n }\n\n public render(): JSX.Element {\n const containerClassName = 'msc-price-editor';\n\n const hasMultipleModes = !ObjectExtensions.isNullOrUndefined(this.props.maximumValue);\n\n let mode = PriceEditorModeSelectionState.partial;\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && this.state.currentValue === this.props.maximumValue) {\n mode = PriceEditorModeSelectionState.full;\n }\n\n const formattedValue = this.state.currentValue?.toFixed(PriceEditor._precision) ?? '';\n const editedValue = this.state.currentValue ?? '';\n\n return (\n
\n \n {hasMultipleModes && (\n
\n \n
\n )}\n
\n );\n }\n\n /**\n * Handles input focus.\n */\n private readonly _handleInputFocus = () => {\n this.setState({ isInputFocused: true });\n };\n\n /**\n * Handles input blur.\n */\n private readonly _handleInputBlur = () => {\n this.setState({ isInputFocused: false });\n };\n\n /**\n * Handles editor mode state change.\n * @param newState - New selection mode state.\n */\n private readonly _handleEditorModeStateChange = (newState: PriceEditorModeSelectionState) => {\n if (newState === PriceEditorModeSelectionState.full) {\n this._updateAmount(this.props.maximumValue!);\n } else {\n this.setState({ currentValue: undefined });\n this._inputRef.current?.focus();\n }\n };\n\n /**\n * Update the price and calls corresponding callbacks.\n * @param newAmount - New price amount.\n */\n private readonly _updateAmount = (newAmount: number) => {\n this.setState({ currentValue: newAmount });\n\n if (this.props.handleChange) {\n this.props.handleChange(newAmount);\n }\n };\n\n /**\n * Handles value change.\n * @param event - React change event.\n */\n private readonly _handleChange = (event: React.ChangeEvent) => {\n let currentValue = Number.parseFloat(event.target.value);\n\n if (Number.isNaN(currentValue)) {\n this.setState({ currentValue: undefined });\n return;\n }\n\n currentValue = +currentValue.toFixed(PriceEditor._precision);\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.minimumValue) && currentValue < this.props.minimumValue) {\n this._updateAmount(this.props.minimumValue);\n } else if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && currentValue > this.props.maximumValue) {\n this._updateAmount(this.props.maximumValue);\n } else {\n this._updateAmount(currentValue);\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 classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IProgressProps {\n id?: string;\n className?: string;\n max: number;\n min?: number;\n value: number;\n ariaLabel?: string;\n}\n\nexport const Progress: React.FC = (props: IProgressProps) => {\n const { id, className, max, min, value, ariaLabel } = props;\n const percent = Math.max(0, Math.min((value * 100) / max, 100));\n const style = { width: `${percent}%` };\n\n return (\n
\n \n
\n );\n};\n\n// Set default props\nProgress.defaultProps = {\n 'aria-valuemax': 100,\n 'aria-valuenow': 0\n} as Partial;\n\nexport default Progress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport debounce from 'lodash/debounce';\nimport * as React from 'react';\n\nimport { IQuantityProps } from './Quantity.props';\n\ninterface IQuantityState {\n currentInput: number;\n}\n\n/**\n * Quantity Component - This component is used to allow input of quantity between a\n * range of values.\n */\n\nexport default class Quantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n constructor(props: IQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount ?? 1 };\n this._handleChange = this._handleChange.bind(this);\n }\n\n public render(): JSX.Element {\n const currentValue = this.state.currentInput;\n\n return (\n \n );\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n const currentValue = Number.parseInt(e.target.value, 10);\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n const inputElement =\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n\n if (currentValue > this.props.max) {\n this.setState({ currentInput: this.props.max }, () => {\n debounce(() => {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n }, 200)();\n });\n } else {\n this.setState({ currentInput: currentValue }, () => {\n debounce(() => {\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue)) {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n\n if (inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.setAttribute('value', currentValue.toString());\n }\n }\n }, 200)();\n });\n }\n }\n\n private readonly _validateMin = (): void => {\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\n this.setState({ currentInput: minValue }, () => {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n });\n } else {\n this.props.onChange && this.props.onChange(this.state.currentInput);\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\nimport { addThrottledEvent, getCSS } from '../common/utilities';\nimport Flipper from '../flipper/Flipper';\nimport { ISingleSlideCarouselProps } from './SingleSlideCarousel.props';\n\ninterface ISingleSlideCarouselState {\n showPrevious: boolean;\n showNext: boolean;\n offset: number;\n}\n\n/**\n * SingleSlideCarousel - yup.\n */\nexport default class SingleSlideCarousel extends React.PureComponent {\n private static readonly itemsSelector: string = 'msc-ss-carousel-item';\n\n private static readonly verticalItemsSelector: string = 'msc-ss-carousel-vert-item';\n\n private direction: string;\n\n private item: HTMLElement | undefined;\n\n private slide: HTMLElement | undefined;\n\n private carousel: HTMLElement | undefined;\n\n private carouselSize: number = 0;\n\n private slideSize: number = 0;\n\n private itemSize: number = 0;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private readonly ref: React.RefObject;\n\n private readonly slideRef: React.RefObject;\n\n private readonly itemRef: React.RefObject;\n\n private readonly id: string;\n\n private scrollStart: number | undefined;\n\n private readonly scrollThreshold: number;\n\n private readonly flipperNextLabel: string = 'next';\n\n private readonly flipperPrevLabel: string = 'prev';\n\n constructor(props: ISingleSlideCarouselProps) {\n super(props);\n this._nextSlide = this._nextSlide.bind(this);\n this._previousSlide = this._previousSlide.bind(this);\n this._handleTouchStart = this._handleTouchStart.bind(this);\n this._handleTouchEnd = this._handleTouchEnd.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onResized = this._onResized.bind(this);\n this.state = { showPrevious: false, showNext: false, offset: 0 };\n this.ref = React.createRef();\n this.slideRef = React.createRef();\n this.itemRef = React.createRef();\n this.direction = 'left';\n this.id = props.parentId || '';\n this.scrollThreshold = this.props.touchScrollThreshold !== undefined ? this.props.touchScrollThreshold : 100;\n }\n\n public componentDidUpdate(): void {\n this.carousel = this.ref.current!;\n this.slide = this.slideRef.current!;\n this.item = this.itemRef.current!;\n this._setSizes();\n this._updateFlippers(this.state.offset);\n }\n\n public componentDidMount(): void {\n this.direction = this.props.vertical ? 'top' : 'left';\n this.carousel = this.ref.current!;\n this.slide = this.slideRef.current!;\n this.item = this.itemRef.current!;\n this._setSizes();\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._onResized as EventListener);\n this._updateFlippers(0);\n }\n\n public componentWillUnmount(): void {\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n\n public render(): JSX.Element {\n const isVert: boolean = this.props.vertical === true;\n const slidePositionStyle = {} as React.CSSProperties;\n const modifiedChildren = this._getClonedChildren(isVert);\n slidePositionStyle[this.direction] = `${this.state.offset}px`;\n const carouselClass = isVert ? 'msc-ss-carousel-vert' : 'msc-ss-carousel';\n const carouselSlideClass = isVert ? 'msc-ss-carousel-vert-slide' : 'msc-ss-carousel-slide';\n const overflowClass = isVert ? 'msc-ss-carousel-vert-strip' : 'msc-ss-carousel-strip';\n const previousFlipperGlyph = isVert ? 'msi-chevron-up' : 'msi-chevron-left';\n const nextFlipperGlyph = isVert ? 'msi-chevron-down' : 'msi-chevron-right';\n const previousFlipperClassName = isVert ? 'msc-ss-carousel-vert__flipper' : 'msc-ss-carousel__flipper';\n const nextFlipperClassName = isVert\n ? 'msc-ss-carousel-vert__flipper msc-ss-carousel-vert__flipper--next'\n : 'msc-ss-carousel__flipper msc-ss-carousel__flipper--next';\n const disableClassName = !this.state.showPrevious || !this.state.showNext ? 'disabled' : null;\n return (\n
\n 0)}\n telemetryContent={this.props.telemetryContent}\n telemetryLabel={this.flipperPrevLabel}\n />\n 0)}\n telemetryContent={this.props.telemetryContent}\n telemetryLabel={this.flipperNextLabel}\n />\n
\n \n {modifiedChildren}\n \n
\n
\n );\n }\n\n private _getClonedChildren(isVert: boolean): React.DetailedReactHTMLElement, HTMLElement>[] {\n return React.Children.map(this.props.children, (child: React.ReactNode, index: number) => {\n const castChild = (child as React.ReactChild) as React.ReactElement;\n if (index === 1) {\n return React.cloneElement(castChild, {\n className: `${isVert ? SingleSlideCarousel.verticalItemsSelector : SingleSlideCarousel.itemsSelector} ${\n castChild.props.className\n }`,\n\n // @ts-expect-error\n ref: this.itemRef,\n onFocus: this._onFocus\n });\n }\n return React.cloneElement(castChild, {\n className: `${isVert ? SingleSlideCarousel.verticalItemsSelector : SingleSlideCarousel.itemsSelector} ${\n castChild.props.className\n }`,\n\n // @ts-expect-error\n onFocus: this._onFocus\n });\n });\n }\n\n private _nextSlide(): void {\n this._moveSingleSlide(true);\n }\n\n private _previousSlide(): void {\n this._moveSingleSlide(false);\n }\n\n private _handleTouchStart(evt: React.TouchEvent): void {\n if (evt.touches.length === 0) {\n this.scrollStart = undefined;\n } else {\n this.scrollStart = this.props.vertical === true ? evt.touches[0].screenY : evt.touches[0].screenX;\n }\n }\n\n private _handleTouchEnd(evt: React.TouchEvent): void {\n if (evt.changedTouches.length > 0 && this.scrollStart !== undefined) {\n const newTarget: number = this.props.vertical === true ? evt.changedTouches[0].screenY : evt.changedTouches[0].screenX;\n\n const delta = newTarget - this.scrollStart;\n\n if (delta > this.scrollThreshold) {\n this._previousSlide();\n }\n\n if (delta < -this.scrollThreshold) {\n this._nextSlide();\n }\n }\n\n this.scrollStart = undefined;\n\n return;\n }\n\n private _moveSingleSlide(next: boolean): void {\n let currentOffset = Number.parseInt(getCSS(this.slide!, this.direction), 10);\n const carouselSize = this.carouselSize;\n let maxScrollCount = Math.floor(carouselSize / this.itemSize);\n const directionModifier = next ? -1 : 1;\n currentOffset = !isNaN(currentOffset) && typeof currentOffset === 'number' ? currentOffset : 0;\n\n if (maxScrollCount === 0) {\n maxScrollCount = 1;\n }\n\n maxScrollCount = carouselSize % this.itemSize === 0 ? maxScrollCount - 1 : maxScrollCount;\n maxScrollCount = Math.max(maxScrollCount, 1);\n const maxScrollDistance = maxScrollCount * this.itemSize;\n let distanceToEdge = next ? this.slideSize - carouselSize + currentOffset : Math.abs(currentOffset);\n distanceToEdge = Math.max(0, distanceToEdge);\n\n const offset =\n maxScrollDistance <= distanceToEdge\n ? maxScrollDistance * directionModifier + currentOffset\n : distanceToEdge * directionModifier + currentOffset;\n\n this._updateFlippers(offset);\n }\n\n private _setSizes(): void {\n const item = this.item;\n if (item) {\n this.itemSize = this.props.vertical ? item.scrollHeight : item.scrollWidth;\n } else {\n this.itemSize = 0;\n }\n\n this.carouselSize = this._calculateCarouselSize();\n this.slideSize = this.slide ? (this.props.vertical ? this.slide.scrollHeight : this.slide.scrollWidth) : 0;\n }\n\n private _calculateCarouselSize(): number {\n if (!this.carousel) {\n return 0;\n }\n\n const carouselStyle = getComputedStyle(this.carousel);\n\n const padding = this.props.vertical\n ? Number.parseFloat(carouselStyle.paddingTop || '') + Number.parseFloat(carouselStyle.paddingBottom || '')\n : Number.parseFloat(carouselStyle.paddingLeft || '') + Number.parseFloat(carouselStyle.paddingRight || '');\n\n return this.props.vertical ? this.carousel.clientHeight - padding : this.carousel.clientWidth - padding;\n }\n\n private _canScrollPrevious(offset: number): boolean {\n return !isNaN(offset) && offset !== 0;\n }\n\n private _canScrollNext(offset: number): boolean {\n if (this.carouselSize + Math.abs(offset) >= this.slideSize) {\n return false;\n }\n\n return true;\n }\n\n private _updateFlippers(offset: number): void {\n this.setState({\n showPrevious: this._canScrollPrevious(offset),\n showNext: this._canScrollNext(offset),\n offset\n });\n }\n\n private _scrollItemIntoView(item: HTMLElement): void {\n const carouselSize = this.carouselSize;\n let offset = this.props.vertical ? item.offsetTop : item.offsetLeft;\n let updateOffset = false;\n\n const left = Number.parseInt(getCSS(this.slide!, 'left'), 10) || 0;\n const top = Number.parseInt(getCSS(this.slide!, 'top'), 10) || 0;\n\n if (this.props.vertical) {\n if (top < 0 && -top > offset) {\n if (offset !== 0) {\n offset = -offset + 1;\n }\n updateOffset = true;\n } else if (top + offset > carouselSize - this.itemSize) {\n offset = carouselSize - this.itemSize - offset - 1;\n updateOffset = true;\n }\n } else if (this.direction === 'left') {\n if (left < 0 && -left > offset) {\n if (offset !== 0) {\n offset = -offset + 1;\n }\n updateOffset = true;\n } else if (left + offset > carouselSize - this.itemSize) {\n offset = carouselSize - this.itemSize - offset + 19;\n updateOffset = true;\n }\n }\n\n if (updateOffset) {\n this._updateFlippers(offset);\n\n if (this.props.vertical) {\n setTimeout(() => {\n (this.slide as Node).parentElement!.scrollTop = 0;\n }, 0);\n } else {\n setTimeout(() => {\n (this.slide as Node).parentElement!.scrollLeft = 0;\n }, 0);\n }\n }\n }\n\n private _onFocus(event: React.FocusEvent): void {\n const target = event.currentTarget as HTMLElement;\n this._scrollItemIntoView(target);\n }\n\n private _onCarouselResized(): void {\n this._setSizes();\n let offset = Number.parseInt(getCSS(this.slide!, this.direction), 10);\n\n // Ensure the carousel slide fits across the entire alotted space\n if (!isNaN(offset) && offset < 0 && this.slideSize + offset < this.carouselSize) {\n offset = Math.min(0, this.carouselSize - this.slideSize);\n }\n\n this._updateFlippers(offset);\n }\n\n private readonly _onResized = (): void => {\n this._onCarouselResized();\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\nimport { UncontrolledTooltip } from '..';\nimport { ISliderThumbProps } from './SliderThumb.props';\n\n/**\n * Sliderthumb - This is a sliderthumb component this component which is\n * used to control the slider thumb.\n */\nexport default class SliderThumb extends React.PureComponent {\n public static defaultProps: Partial = {\n showTooltip: true,\n showToolTipOnTab: false,\n tooltip: {\n placement: 'top'\n }\n };\n\n public sliderButtonRef: React.RefObject = React.createRef();\n\n public render(): JSX.Element {\n const sliderThumbBaseClass = 'slider__thumb ';\n const sliderThumbClass = this.props.trackThumbClass\n ? `${sliderThumbBaseClass} ${this.props.trackThumbClass}`\n : sliderThumbBaseClass;\n\n return (\n <>\n \n {this.props.showTooltip && (\n \n {this.props.handleTooltipText\n ? this.props.handleTooltipText(this.props.sliderValue!)\n : this.props.sliderValue!.toString()}\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 MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { format, isMobile, Progress, VariantType } from '..';\nimport { clamp, toUpperCaseFirstChar } from '../common/utilities';\nimport { ISliderChangeNotification, ISliderLabel, ISliderProps, ISliderThumbProps } from './Slider.props';\nimport SliderThumb from './SliderThumb';\n\n// This maintains the min and max values for the 2 thumbs\nexport interface ISliderState {\n sliderThumbs: ISliderThumbProps[];\n limit: number;\n grab: number;\n active: boolean;\n id: string;\n showToolTipOnTab?: boolean;\n}\n\nconst orientations = {\n horizontal: {\n dimension: 'width',\n direction: 'left',\n coordinate: 'x'\n },\n vertical: {\n dimension: 'height',\n direction: 'top',\n coordinate: 'y'\n }\n};\n\ninterface IFillCoordinates {\n fill: number;\n handle: number;\n label: number;\n}\n\nenum EventType {\n Start,\n End,\n Change\n}\n\nconst rangeDefaultChkValue = 0;\n\n/**\n * Slider - This is a slider component this component morphs into a range slider\n * based on flags.\n */\n\nexport default class Slider extends React.Component {\n public static defaultProps: Partial = {\n showTooltip: true,\n inForm: false,\n orientation: 'horizontal',\n min: 0,\n max: 100,\n step: 1,\n sliderThumbs: [{ id: 'slider_thumb_id', value: 50 }]\n };\n\n private static readonly sliderBaseClass: string = 'slider';\n\n public isRangeSlider: boolean;\n\n private readonly ref: React.RefObject = React.createRef();\n\n private readonly thumb1Ref: React.RefObject = React.createRef();\n\n private readonly thumb2Ref: React.RefObject = React.createRef();\n\n public static getDerivedStateFromProps(props: ISliderProps, state: ISliderState): ISliderState | null {\n if (\n (props.sliderThumbs.length > 0 && props.sliderThumbs[0].value !== state.sliderThumbs[0].value) ||\n (props.sliderThumbs.length > 1 && props.sliderThumbs[1].value !== state.sliderThumbs[1].value)\n ) {\n const nextState = { ...state };\n nextState.sliderThumbs[0].value = props.sliderThumbs[0].value;\n if (props.sliderThumbs.length > 1) {\n nextState.sliderThumbs[1].value = props.sliderThumbs[1].value;\n }\n return nextState;\n }\n return null;\n }\n\n constructor(props: ISliderProps) {\n super(props);\n this.isRangeSlider = this.props.sliderThumbs.length === 2;\n this.state = {\n sliderThumbs: this.props.sliderThumbs,\n grab: 0,\n limit: 0,\n active: false,\n id: '',\n showToolTipOnTab: false\n };\n this._handleUpdate = this._handleUpdate.bind(this);\n this._handleDrag = this._handleDrag.bind(this);\n this._handleEnd = this._handleEnd.bind(this);\n this._handleStart = this._handleStart.bind(this);\n this.toggle = this.toggle.bind(this);\n this._handleOnChange = this._handleOnChange.bind(this);\n this._setSliderValue = this._setSliderValue.bind(this);\n this._getThumbFromProps = this._getThumbFromProps.bind(this);\n this._publishNotification = this._publishNotification.bind(this);\n this._getThumbAndPublishEvent = this._getThumbAndPublishEvent.bind(this);\n this._willThumbsCrossOver = this._willThumbsCrossOver.bind(this);\n this._handleOnClick = this._handleOnClick.bind(this);\n if (\n MsDyn365.isBrowser &&\n document.body.parentElement &&\n document.body.parentElement.getAttribute('dir') === 'rtl' &&\n (this.props.shouldSliderAdjustToRTL === undefined || this.props.shouldSliderAdjustToRTL)\n ) {\n orientations.horizontal.direction = 'right';\n }\n }\n\n public componentDidMount(): void {\n this._handleUpdate();\n MsDyn365.isBrowser && window.addEventListener('resize', this._handleUpdate);\n }\n\n public componentDidUpdate(): void {\n if (this.ref.current && this.ref.current.offsetWidth > rangeDefaultChkValue && this.state.limit === rangeDefaultChkValue) {\n this._handleUpdate();\n }\n }\n\n public toggle = (): void => {\n this.setState((_prevState: ISliderState) => {\n return { showToolTipOnTab: !_prevState.showToolTipOnTab };\n });\n };\n\n public shouldComponentUpdate(nextProps: ISliderProps, _nextState: ISliderState): boolean {\n let shouldRender = true;\n if (this.isRangeSlider) {\n const thumb1Position = this._getPositionFromValue(nextProps.sliderThumbs[0].value);\n const thumb2Position = this._getPositionFromValue(nextProps.sliderThumbs[1].value);\n\n /**\n * During first render the second thumb isn't positioned since handleUpdate positions it after it's mounted\n * in the componentDidMount method. This check is to make sure that the first render happens correctly and then\n * for all subsequent renders and updates, the thumb2 position cannot be 0 thanks to this condition.\n */\n shouldRender = thumb2Position > 0 ? thumb2Position >= thumb1Position + nextProps.step : true;\n }\n return shouldRender;\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this._handleUpdate);\n }\n\n public render(): JSX.Element {\n const { orientation } = this.props;\n const sliderClass = this.props.className\n ? `${Slider.sliderBaseClass} slider-${orientation} ${this.props.className}`\n : `${Slider.sliderBaseClass} slider-${orientation}`;\n\n const sliderId = this.props.id;\n const dimension = orientations[orientation].dimension;\n const direction = orientations[orientation].direction;\n const camelCasedDirection = toUpperCaseFirstChar(direction);\n const positionThumb1 = this._getPositionFromValue(this.props.sliderThumbs[0].value);\n const coordsThumb1 = this._coordinates(positionThumb1);\n let fillStyle = { [dimension]: `${coordsThumb1.fill}px` };\n const handleStyle: React.CSSProperties[] = [];\n handleStyle.push({ [direction]: `${coordsThumb1.handle}px` });\n const trackProgressClass = classnames('progress-bar', this.props.trackProgressClass ? this.props.trackProgressClass : '');\n const sliderKey = this.props.sliderKey ? `_${String(this.props.sliderKey)}` : '';\n\n if (this.isRangeSlider) {\n const positionThumb2 = this._getPositionFromValue(this.props.sliderThumbs[1].value);\n const coordsThumb2 = this._coordinates(positionThumb2);\n handleStyle.push({ [direction]: `${coordsThumb2.handle}px` });\n if (orientation === 'vertical') {\n fillStyle = {\n marginBottom: `${coordsThumb1.fill}px`,\n [dimension]: `${coordsThumb2.fill - coordsThumb1.fill}px`\n };\n } else {\n fillStyle = {\n [`margin${camelCasedDirection}`]: `${\n orientations.horizontal.direction === 'right' ? coordsThumb1.fill - this.state.grab : coordsThumb1.fill\n }px`,\n [dimension]: `${coordsThumb2.handle - coordsThumb1.handle}px`\n };\n }\n }\n\n return (\n
\n
\n {this.props.showProgressBar && (\n \n )}\n
\n {this._renderSliderThumbs(handleStyle)}\n
\n {this.props.showLabels ? this._renderLabels(this.props.labels!) : null}\n
\n );\n }\n\n private readonly _renderLabels = (labels: ISliderLabel[]): JSX.Element => {\n return (\n
\n {labels.map((label: ISliderLabel) => {\n return (\n
\n {label.labelString}\n
\n );\n })}\n
\n );\n };\n\n private readonly _renderSliderThumbs = (thumbStyles: React.CSSProperties[]): React.ReactFragment | JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Added gridsetting values.\n const context = {\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as IRequestContext;\n\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n const sliderAriaLabelMin = format('{0} {1}', this.props.sliderThumbs[0].ariaLabel, this.state.sliderThumbs[0].value);\n\n const sliderAriaLabelMax = this.isRangeSlider\n ? format('{0} {1}', this.props.sliderThumbs[1].ariaLabel, this.state.sliderThumbs[1].value)\n : '';\n return (\n <>\n {\n this.setState({\n showToolTipOnTab: false\n });\n this.props.onBlur && this.props.onBlur();\n }}\n onKeyDown={() => {\n this.setState({\n showToolTipOnTab: true\n });\n }}\n onFocus={() => {\n this.setState({\n showToolTipOnTab: true\n });\n }}\n tabIndex={0}\n style={thumbStyles[0]}\n aria-valuenow={isMobileView ? undefined : this.state.sliderThumbs[0].value}\n />\n {' '}\n {this.isRangeSlider && (\n <>\n \n \n \n )}\n \n );\n };\n\n private readonly _handleUpdate = (): void => {\n const { orientation } = this.props;\n const dimensionStr = toUpperCaseFirstChar(orientations[orientation].dimension);\n\n // To get the offsetWidth and offsetHeight of the slider element\n const sliderPos = this.ref.current![`offset${dimensionStr}`];\n const handlePos = this.thumb1Ref.current!.sliderButtonRef.current![`offset${dimensionStr}`];\n\n if (handlePos !== 0) {\n this.setState({\n limit: sliderPos - handlePos,\n grab: orientations.horizontal.direction === 'right' ? -handlePos / 2 : handlePos / 2\n });\n }\n };\n\n private readonly _handleStart = (e: React.TouchEvent | React.KeyboardEvent | React.MouseEvent): void => {\n e.stopPropagation();\n const eventType = e.type;\n document.addEventListener('mousemove', (this._handleDrag as unknown) as EventListener);\n document.addEventListener('mouseup', (this._handleEnd as unknown) as EventListener);\n const castTarget = e.target as HTMLElement;\n const thumbid = castTarget && castTarget.id;\n this.setState(\n (_prevState: ISliderState) => {\n return { active: true, id: thumbid };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Start, eventType);\n }\n );\n };\n\n private _handleEnd(e: React.KeyboardEvent | React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const eventType = e.type;\n const castTarget = e.target as HTMLElement;\n this.setState(\n (_prevState: ISliderState) => {\n return { active: false, id: '' };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.End, eventType);\n }\n );\n document.removeEventListener('mousemove', (this._handleDrag as unknown) as EventListener);\n document.removeEventListener('mouseup', (this._handleEnd as unknown) as EventListener);\n }\n\n private _handleDrag(e: React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const value = this._position(e);\n const eventType = e.type;\n const castThumb = e.target as HTMLElement;\n const thumbId = this.state.id || (castThumb && castThumb.id);\n const thumbPressed = this._getThumbFromProps(thumbId);\n\n if (thumbPressed && !this._willThumbsCrossOver(thumbPressed[0], e)) {\n thumbPressed[0].value = value;\n this._setSliderValue(thumbPressed, castThumb, eventType);\n }\n }\n\n private _handleOnClick(e: React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const position = this._position(e);\n const castThumb = e.target as HTMLElement;\n const eventType = e.type;\n const thumb1 = this._getThumbFromProps(this.props.sliderThumbs[0].id);\n\n if (this.isRangeSlider) {\n const thumb2 = this._getThumbFromProps(this.props.sliderThumbs[1].id);\n\n if (thumb1 && thumb2) {\n const currentMinValue = thumb1[0].value;\n const currentMaxValue = thumb2[0].value;\n const lengthToMinValue = position - currentMinValue;\n const lengthToMaxValue = currentMaxValue - position;\n\n if (lengthToMinValue < lengthToMaxValue) {\n thumb1[0].value = position;\n } else {\n thumb2[0].value = position;\n }\n\n this.setState(\n (_prevState: ISliderState) => {\n return { sliderThumbs: [thumb1[0], thumb2[0]] };\n },\n () => {\n this._getThumbAndPublishEvent(castThumb, EventType.Change, eventType);\n }\n );\n }\n } else if (thumb1) {\n thumb1[0].value = position;\n this.setState(\n (_prevState: ISliderState) => {\n return { sliderThumbs: thumb1 };\n },\n () => {\n this._getThumbAndPublishEvent(castThumb, EventType.Change, eventType);\n }\n );\n }\n }\n\n private readonly _position = (e: React.KeyboardEvent | React.MouseEvent | React.TouchEvent): number => {\n const { grab } = this.state;\n const { orientation } = this.props;\n const castEvent = (e as unknown) as TouchEvent;\n const node = this.ref;\n const coordinateStyle = toUpperCaseFirstChar(orientations[orientation].coordinate);\n const directionStyle = orientations[orientation].direction;\n\n // String conversion to the right property value\n const clientCoordinateStyle = `client${coordinateStyle}`;\n const coordinate = !castEvent.touches ? e[clientCoordinateStyle] : castEvent.touches[0][clientCoordinateStyle];\n const direction = node.current!.getBoundingClientRect()[directionStyle];\n const pos = orientations.horizontal.direction === 'right' ? direction - coordinate - grab : coordinate - direction - grab;\n return this._getValueFromPosition(pos);\n };\n\n private readonly _getPositionFromValue = (value: number): number => {\n const { limit } = this.state;\n const { min, max } = this.props;\n const diffMaxMin = max - min;\n const diffValMin = value - min;\n const percentage = diffValMin / diffMaxMin;\n return Math.round(percentage * limit);\n };\n\n /**\n * Translate position of slider to slider value.\n * @param {number} pos - Current position/coordinates of slider.\n * @returns {number} Value - Slider value.\n */\n private readonly _getValueFromPosition = (pos: number): number => {\n const { limit } = this.state;\n const { orientation, min, max, step } = this.props;\n\n const percentage = clamp(pos, 0, limit) / (limit || 1);\n const baseVal = step * Math.round((percentage * (max - min)) / step);\n const value = orientation === 'horizontal' ? baseVal + min : max - baseVal;\n\n return clamp(value, min, max);\n };\n\n /**\n * Grab coordinates of slider.\n * @param {Object} pos - Position object.\n * @returns {Object} - Slider fill/handle coordinates.\n */\n private readonly _coordinates = (pos: number): IFillCoordinates => {\n const { limit, grab } = this.state;\n const { orientation } = this.props;\n const value = this._getValueFromPosition(pos);\n const position = this._getPositionFromValue(value);\n const handlePos = orientation === 'horizontal' ? position + grab : position;\n const fillPos = orientation === 'horizontal' ? handlePos : limit - handlePos;\n\n return {\n fill: fillPos,\n handle: handlePos,\n label: handlePos\n };\n };\n\n private _handleOnChange(e: React.ChangeEvent): void {\n e.stopPropagation();\n const castTarget = e.target as HTMLInputElement;\n const thumbInteractedWith = castTarget && this._getThumbFromProps(castTarget.id.replace('range', ''));\n const eventType = e.type;\n thumbInteractedWith![0].value = Number.parseInt(e.target.value, 10);\n this._setSliderValue(thumbInteractedWith!, castTarget, eventType);\n }\n\n private readonly _setSliderValue = (sliderThumb: ISliderThumbProps[], castTarget: HTMLElement, eventType: string): void => {\n if (this.isRangeSlider) {\n if (this.props.sliderThumbs[0].value > this.props.sliderThumbs[1].value) {\n this.props.sliderThumbs[0].value = this.props.sliderThumbs[1].value;\n }\n this.setState(\n (_prevState: ISliderState) => {\n return {\n sliderThumbs: { ...this.props.sliderThumbs }\n };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Change, eventType);\n }\n );\n } else {\n this.setState(\n (_prevState: ISliderState) => {\n return {\n sliderThumbs: sliderThumb\n };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Change, eventType);\n }\n );\n }\n };\n\n private _getThumbFromProps(thumbId: string): ISliderThumbProps[] | null {\n let thumbFound;\n\n thumbFound = this.props.sliderThumbs.filter((thumb: ISliderThumbProps) => {\n return thumb.id === thumbId;\n });\n\n return thumbFound.length > 0 ? thumbFound : null;\n }\n\n private readonly _publishNotification = (\n thumb: ISliderThumbProps | null,\n delegate: (sliderNotification: Readonly) => void,\n eventType: string\n ): void => {\n delegate({\n id: (thumb && thumb.id) || '',\n slider: this,\n firstThumbValue: this.state.sliderThumbs[0].value,\n secondThumbValue: (this.state.sliderThumbs[1] && this.state.sliderThumbs[1].value) || Number.NaN,\n eventType\n });\n };\n\n private readonly _getThumbAndPublishEvent = (element: HTMLElement, eventType: EventType, nativeEventType: string): void => {\n let elmenentId = '';\n if (element && element.id && eventType === EventType.Change) {\n elmenentId = element.id.replace('range', '');\n }\n const thumb = element && this._getThumbFromProps(elmenentId);\n\n if (eventType === EventType.End) {\n if (this.props.onChangeEnd) {\n this._publishNotification(thumb && thumb[0], this.props.onChangeEnd, nativeEventType);\n }\n }\n if (eventType === EventType.Start) {\n if (this.props.onChangeStart) {\n this._publishNotification(thumb && thumb[0], this.props.onChangeStart, nativeEventType);\n }\n }\n if (eventType === EventType.Change) {\n if (this.props.onChange) {\n this._publishNotification(thumb && thumb[0], this.props.onChange, nativeEventType);\n }\n }\n };\n\n private _willThumbsCrossOver(\n thumbPressed: ISliderThumbProps,\n event: React.KeyboardEvent | React.MouseEvent | React.TouchEvent\n ): boolean {\n if (!this.isRangeSlider) {\n return false;\n }\n let keycode = 0;\n let checkCondition = false;\n\n if (event.type === 'keydown') {\n const castEvent = (event as unknown) as KeyboardEvent;\n keycode = castEvent.keyCode;\n if (\n (thumbPressed === this.props.sliderThumbs[1] && (keycode === 38 || keycode === 39)) ||\n (thumbPressed === this.props.sliderThumbs[0] && (keycode === 37 || keycode === 40))\n ) {\n return false;\n }\n checkCondition = true;\n }\n if (event.type === 'touchmove' || event.type === 'mousemove' || event.type === 'click') {\n const value = this._position(event);\n if (\n (this.state.sliderThumbs[1].value < value && thumbPressed.id === this.props.sliderThumbs[1].id) ||\n (this.state.sliderThumbs[0].value > value && thumbPressed.id === this.props.sliderThumbs[0].id)\n ) {\n return false;\n }\n checkCondition = true;\n }\n\n return !(checkCondition && this.props.sliderThumbs[1].value - this.props.step * 2 >= this.props.sliderThumbs[0].value);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { Button, format, KeyCodes, Node, UncontrolledPagination } from '..';\nimport CheckBoxButton from './checkbox';\n\n/**\n * Table Resources.\n */\nexport interface ITableResources {}\n\n/**\n * Table props.\n */\nexport interface IDataTableProps {\n resources: ITableResources;\n headings: (IHeadingsProperty | undefined)[];\n rows: ITableRowProps[];\n className?: string;\n editLinkText?: string;\n actionLinkText?: string;\n deleteLinkText?: string;\n viewLinkText?: string;\n editLinkTooltip?: string;\n actionLinkTooltip?: string;\n deleteLinkTooltip?: string;\n viewLinkTooltip?: string;\n enableToModify: boolean;\n showCheckBoxes?: boolean;\n isSortable?: boolean;\n showPagination?: boolean;\n paginationProperty: IPaginationProperty;\n minifyActions?: boolean;\n minifiedButtonText?: string;\n excludedColumns?: string[]; // Filled with ITableItemProps.id of columns not to show\n isSingleSelectOnly: boolean;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n resourcePrefix?: string;\n actions: {\n onDelete?(userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null): void | undefined;\n onEdit?(userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null): void | undefined;\n onView?(userData: ITableItemProps[]): void | undefined;\n };\n checkBoxCallback?(records: ITableRowProps[]): void;\n formatPrice?(price: number): string;\n tableAriaLabel?: string;\n tableTabIndex?: number;\n}\n\n/**\n * Table IPaginationProperty props.\n */\nexport interface IPaginationProperty {\n itemPerPage: number;\n skipCount: number;\n prevText: string;\n nextText: string;\n paginationText: string;\n url: string;\n}\n\n/**\n * Table ITableItemProps props.\n */\nexport interface ITableItemProps {\n id: string;\n type: TableDataType;\n value: boolean | number | string;\n className?: string;\n}\n\n/**\n * Table IButtonReferences props.\n */\nexport interface IButtonReferences {\n edit?: React.RefObject;\n delete?: React.RefObject;\n}\n\n/**\n * Table ITableRowProps props.\n */\nexport interface ITableRowProps {\n row: ITableItemProps[];\n isSelected: boolean;\n buttonReferences?: IButtonReferences;\n}\n\n/**\n * Table IDataTableCells props.\n */\ninterface IDataTableCells {\n header: boolean;\n className: string;\n content: string | number | React.ReactNode;\n cellIndex: number;\n scope: 'col' | 'row';\n colSpan?: number;\n records?: ITableRowProps;\n}\n\n/**\n * Table IHeadingsProperty props.\n */\nexport interface IHeadingsProperty {\n name: string;\n sortable: boolean;\n ariaLabel?: string;\n}\n\n/**\n * Table ITableState props.\n */\nexport interface ITableState {\n sortingKey: string;\n ascendingOrder: boolean;\n showActions: boolean;\n selectedIndex: string;\n}\n\n/**\n * Table TableDataType props.\n */\nexport enum TableDataType {\n Number = 'Number',\n Text = 'Text',\n Price = 'Price'\n}\n\nexport default class Table extends React.PureComponent {\n public componentClassName: string = 'ms-table';\n\n private readonly headingPrefix: string = 'table';\n\n private readonly capitalizeHeadingPrefix: string = 'Table';\n\n constructor(props: IDataTableProps) {\n super(props);\n this.state = {\n ascendingOrder: true,\n sortingKey: (props.headings[0] && props.headings[0].name) || '',\n showActions: props.minifyActions !== undefined ? !props.minifyActions : true,\n selectedIndex: ''\n };\n }\n\n public render(): JSX.Element {\n const { className, headings, rows, isSortable, showPagination, paginationProperty, tableAriaLabel, tableTabIndex } = this.props;\n const { sortingKey, ascendingOrder } = this.state;\n\n const classname = classnames(this.componentClassName, className);\n let tableRows = isSortable && sortingKey ? this._sortTableRow(rows, sortingKey, ascendingOrder) : rows;\n let paginationLinks = null;\n\n if (showPagination) {\n const { skipCount, itemPerPage, nextText, prevText, paginationText, url } = paginationProperty;\n\n paginationLinks = (\n \n );\n\n tableRows = this._getCurrentPageData(tableRows, skipCount, skipCount + itemPerPage);\n }\n\n const tableBody = this._renderRow(tableRows);\n const tableHead = this._renderHeadingRow(headings);\n\n return (\n
\n \n {tableHead}\n {tableBody}\n
\n {paginationLinks}\n
\n );\n }\n\n /**\n * Set sorting key.\n * @param event -The mouse event.\n */\n private readonly _selectSortingKey = (event: React.MouseEvent | React.KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const columnName = target.getAttribute('data-sort-name') ? (target.getAttribute('data-sort-name') as string) : '';\n const { sortingKey, ascendingOrder } = this.state;\n let newOrder = true;\n\n if (sortingKey === columnName) {\n newOrder = !ascendingOrder;\n }\n\n this.setState({\n sortingKey: columnName,\n ascendingOrder: newOrder,\n showActions: false\n });\n };\n\n /**\n * Checkbox change.\n * @param rows -Table rows.\n * @param checkBoxCallback -Checkboxcallback function.\n * @param index -Index value for row.\n * @returns Checkbox rows.\n */\n private readonly _onCheckBoxChangeHandler = (\n rows: ITableRowProps[],\n checkBoxCallback: (records: ITableRowProps[]) => void,\n index?: number\n ) => () => {\n if (ObjectExtensions.isNumber(index)) {\n rows[index].isSelected = !rows[index].isSelected;\n }\n checkBoxCallback(rows);\n };\n\n private readonly _renderHeadingRow = (columnData: (IHeadingsProperty | undefined)[]) => {\n const {\n resources,\n showCheckBoxes,\n enableToModify,\n minifyActions,\n rows,\n actionLinkText,\n isSortable,\n checkBoxCallback,\n resourcePrefix,\n isSingleSelectOnly,\n businessUserSelectCheckBoxAriaLabelText,\n sortByAscending,\n sortByDescending\n } = this.props;\n const { sortingKey, ascendingOrder } = this.state;\n\n const sortingClassName = ascendingOrder ? 'asc' : 'dsc';\n\n const sortingValue = ascendingOrder ? sortByAscending : sortByDescending;\n\n const columns = columnData.map((data, cellIndex) => {\n if (!data) {\n return;\n }\n const counterAddition = 1;\n const updatedCellIndex = cellIndex + counterAddition;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- unsafe assignment.\n const heading =\n resources[`${this.headingPrefix}${data.name}HeadingText`] ||\n resources[`${resourcePrefix!}${this.capitalizeHeadingPrefix}${data.name}HeadingText`] ||\n resources[`${data.name}HeadingText`] ||\n data.name;\n\n const columnSortValue = sortingKey === data.name && sortingValue !== undefined ? sortingValue : '';\n\n const columnAriaLabel = data.ariaLabel ? `${format(data.ariaLabel, heading)} ${columnSortValue}` : '';\n\n const content = (isSortable && data.sortable && (\n \n \n {heading}\n
\n \n )) || (\n \n {heading}\n \n );\n\n return content;\n });\n\n const radioCheckBox = showCheckBoxes && checkBoxCallback && !isSingleSelectOnly && (\n \n );\n\n const actionContent = (\n \n {minifyActions ? '' : actionLinkText}\n
\n );\n\n return (\n \n {showCheckBoxes &&\n this.tableCell({\n header: true,\n className: `${this.componentClassName}__heading-row-data__checkbox checkbox`,\n content: radioCheckBox,\n cellIndex: -1,\n scope: 'col'\n })}\n {columns}\n {enableToModify &&\n this.tableCell({\n header: true,\n className: `${this.componentClassName}__heading-row-data action-links`,\n content: actionContent,\n cellIndex: 1,\n scope: 'col'\n })}\n \n );\n };\n\n private readonly _renderRow = (rows: ITableRowProps[]) => {\n const {\n enableToModify,\n showCheckBoxes,\n excludedColumns,\n actions,\n checkBoxCallback,\n formatPrice,\n isSingleSelectOnly,\n businessUserSelectCheckBoxAriaLabelText\n } = this.props;\n\n const tableRows = rows.map((rowsData, index) => {\n let className = index % 2 ? `${this.componentClassName}__row even-row` : `${this.componentClassName}__row odd-row`;\n let showActions = false;\n\n const additionalNameAriaLabel = rowsData.row[0].value.toString();\n const columnData = rowsData.row.map(cell => {\n if (excludedColumns && excludedColumns.includes(cell.id)) {\n return;\n }\n\n // Numbers/price data types will always be right-aligned per design standards\n const extraClass = cell.type === TableDataType.Number || cell.type === TableDataType.Price ? 'num-type' : '';\n const cellContent = cell.type === TableDataType.Price && formatPrice ? formatPrice(cell.value as number) : cell.value;\n const columnSpecificClass = cell.className || '';\n return this.tableCell({\n header: false,\n className: classnames(`${this.componentClassName}__row-data`, extraClass, columnSpecificClass),\n content: cellContent,\n cellIndex: index,\n scope: 'row'\n });\n });\n\n const radioCheckBox = showCheckBoxes && checkBoxCallback && (\n \n );\n const rowKey = `row-${index}`;\n\n if (rowKey === this.state.selectedIndex && this.state.showActions) {\n className += ' selected';\n showActions = true;\n }\n\n const actionButtons = actions && this._renderActions(rowsData.row, showActions, rowKey, rowsData.buttonReferences);\n\n return (\n \n {showCheckBoxes &&\n this.tableCell({\n header: false,\n className: `${this.componentClassName}__row-data`,\n content: radioCheckBox,\n cellIndex: index,\n scope: 'row',\n records: rowsData\n })}\n {columnData}\n {enableToModify &&\n this.tableCell({\n header: false,\n className: `${this.componentClassName}__row-data`,\n content: actionButtons,\n cellIndex: index,\n scope: 'row',\n records: rowsData\n })}\n \n );\n });\n\n return tableRows;\n };\n\n private readonly _renderActions = (\n data: ITableItemProps[],\n showActions: boolean,\n key: string,\n buttonReference?: IButtonReferences\n ): React.ReactNode => {\n const {\n editLinkText,\n deleteLinkText,\n viewLinkText,\n editLinkTooltip,\n deleteLinkTooltip,\n viewLinkTooltip,\n actionLinkTooltip,\n minifyActions,\n minifiedButtonText,\n actionLinkText,\n actions: { onEdit, onDelete, onView }\n } = this.props;\n const handleClickEdit =\n onEdit !== undefined\n ? () => {\n onEdit(data, buttonReference?.edit?.current);\n }\n : undefined;\n const handleClickDelete =\n onDelete !== undefined\n ? () => {\n onDelete(data, buttonReference?.delete?.current);\n }\n : undefined;\n const handleClickView =\n onView !== undefined\n ? () => {\n onView(data);\n }\n : undefined;\n\n const actionButtons = (\n \n {handleClickView && (\n \n )}\n {handleClickEdit && (\n \n {editLinkText}\n \n )}\n {handleClickDelete && (\n \n {deleteLinkText}\n \n )}\n \n );\n\n if (minifyActions) {\n return (\n \n \n {minifiedButtonText ? minifiedButtonText : ''}\n \n {showActions && actionButtons}\n \n );\n }\n return actionButtons;\n };\n\n private readonly _toggleActions = (event: React.MouseEvent) => {\n const target = event && (event.target as HTMLElement);\n const newKey = target && target.getAttribute('data-type') ? (target.getAttribute('data-type') as string) : '';\n this.setState({\n showActions: !this.state.showActions,\n selectedIndex: newKey\n });\n };\n\n private readonly _sortTableRow = (table: ITableRowProps[], sortingkey: string, ascendingOrder: boolean): ITableRowProps[] => {\n return table.sort((userOne: ITableRowProps, userTwo: ITableRowProps) => {\n const userOneData = userOne.row.find(cell => {\n return cell.id === sortingkey;\n });\n const userTwoData = userTwo.row.find(cell => {\n return cell.id === sortingkey;\n });\n\n if (!userOneData || !userTwoData) {\n return -1;\n }\n\n if (typeof userOneData.value === 'number' && typeof userTwoData.value === 'number') {\n return ascendingOrder ? userOneData.value - userTwoData.value : userTwoData.value - userOneData.value;\n }\n\n const cleanFirst =\n (userOneData.value as string) &&\n userOneData.value\n .toString()\n .toLowerCase()\n .trim();\n const cleanSecond =\n (userOneData.value as string) &&\n userTwoData.value\n .toString()\n .toLowerCase()\n .trim();\n\n if (!cleanFirst || !cleanSecond) {\n return -1;\n }\n if (ascendingOrder) {\n return cleanFirst < cleanSecond ? -1 : 1;\n }\n return cleanFirst > cleanSecond ? -1 : 1;\n });\n };\n\n private readonly _getCurrentPageData = (tableRows: ITableRowProps[], start: number, end: number): ITableRowProps[] => {\n if (start >= end) {\n return tableRows;\n }\n\n const result = [];\n for (let i = start; i < end; i++) {\n tableRows[i] && result.push(tableRows[i]);\n }\n\n return result;\n };\n\n private readonly tableCell = (props: IDataTableCells) => {\n const { className, header, cellIndex, scope, colSpan, content } = props;\n const hiddenTabIndex = -1;\n const initialTabIndex = 0;\n return header ? (\n initialTabIndex ? initialTabIndex : hiddenTabIndex}\n >\n {content}\n \n ) : (\n \n {content}\n \n );\n };\n\n /**\n * Renders a Pagination previous text.\n * @param paginationPreviousText - Pagination previous text from resources.\n * @returns Previous text and flipper icon.\n */\n private readonly _renderPrev = (paginationPreviousText: string) => {\n return (\n
\n \n {paginationPreviousText}\n
\n );\n };\n\n /**\n * Renders a Pagination next text.\n * @param paginationNextText - Pagination next text from resources.\n * @returns Next text and flipper icon.\n */\n private readonly _renderNext = (paginationNextText: string) => {\n return (\n
\n {paginationNextText}\n \n
\n );\n };\n\n /**\n * Calls method display result.\n * @param event - Keyboard event.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this._selectSortingKey(event);\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 classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IRadioButtonProps {\n isChecked?: boolean;\n value?: string;\n ariaSetSize?: number;\n ariaPosInSet?: number;\n ariaLabel?: string;\n name: string;\n className?: string;\n isSingleSelectOnly?: boolean;\n onChange(reacords: object): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaLabel\n * @param root0.name\n * @param root0.className\n * @param root0.onChange\n * @param root0.isSingleSelectOnly\n * @extends {React.FC}\n */\nconst CheckBoxButton: React.FC = ({ isChecked, value, ariaLabel, name, className, onChange, isSingleSelectOnly }) => {\n const cssClass = classnames('ms-input-radio', className ? className : '');\n return (\n \n );\n};\n\nexport default CheckBoxButton;\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\nimport { getTargetElement, mapToCssModules } from '../common/utilities';\nimport PopperContent from '../popper-content/PopperContent';\nimport { ITooltipProps } from './Tooltip.props';\n\nconst DEFAULT_DELAYS = {\n show: 0,\n hide: 250\n};\n\n/**\n * Tooltip component.\n */\nexport default class Tooltip extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n shouldShowMiniCart: false,\n shouldShowCloseButton: false,\n hideArrow: false,\n hideAriaHidden: false,\n placement: 'top',\n placementPrefix: 'msc-bs-tooltip',\n delay: DEFAULT_DELAYS,\n toggle: () => {\n return;\n }\n };\n\n public ref: React.RefObject;\n\n public hideTimeout?: number;\n\n public showTimeout?: number;\n\n public target: HTMLElement | null;\n\n public isMobile: boolean;\n\n public tabPressed: boolean;\n\n constructor(props: ITooltipProps) {\n super(props);\n\n this.ref = React.createRef();\n this.addTargetEvents = this.addTargetEvents.bind(this);\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n this.removeTargetEvents = this.removeTargetEvents.bind(this);\n this.toggle = this.toggle.bind(this);\n this.onMouseOverTooltip = this.onMouseOverTooltip.bind(this);\n this.onMouseLeaveTooltip = this.onMouseLeaveTooltip.bind(this);\n this.onMouseOverTooltipContent = this.onMouseOverTooltipContent.bind(this);\n this.onMouseLeaveTooltipContent = this.onMouseLeaveTooltipContent.bind(this);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this);\n this.onFocusOutTarget = this.onFocusOutTarget.bind(this);\n this.onEscKeyDown = this.onEscKeyDown.bind(this);\n this.onEscKeyDownNative = this.onEscKeyDownNative.bind(this);\n this.target = null;\n this.isMobile = false;\n this.tabPressed = false;\n }\n\n public componentDidMount(): void {\n this.target = getTargetElement(this.props.target);\n this.addTargetEvents();\n\n // Remove the attr from parent obj when tooltip is hidden\n\n const body = document.getElementsByTagName('body').item(0);\n if (body) {\n const bodyClasses = body.getAttribute('class');\n if (bodyClasses && bodyClasses.includes('mobile')) {\n this.isMobile = true;\n }\n }\n\n if (this.target !== null && this.target.attributes.getNamedItem('aria-describedby') !== null) {\n this.target.attributes.removeNamedItem('aria-describedby');\n }\n }\n\n public componentWillUnmount(): void {\n this.clearHideTimeout();\n this.clearShowTimeout();\n this.removeTargetEvents();\n }\n\n public onMouseOverTooltip(e: MouseEvent): void {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n this.showTimeout = window.setTimeout(this.show.bind(this, e), this.getDelay('show'));\n }\n\n public onMouseLeaveTooltip(e: MouseEvent): void {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n\n public onMouseOverTooltipContent(): void {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n }\n\n public onMouseLeaveTooltipContent(e: React.MouseEvent): void {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e.nativeEvent), this.getDelay('hide'));\n }\n\n public onFocusOutTarget(e: Event): void {\n if (!this.props.isOpen) {\n return;\n }\n\n if (this.tabPressed) {\n this.tabPressed = false;\n setTimeout(() => {\n const nextFocus = document.activeElement;\n\n if (!this.ref || !this.ref.current || !this.ref.current.contains(nextFocus)) {\n this.hide(e);\n }\n }, 1);\n } else {\n this.hide(e);\n }\n }\n\n public onEscKeyDown(e: React.KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (e.key === 'Escape') {\n this.hide(e.nativeEvent);\n }\n }\n\n public onEscKeyDownNative(e: KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (e.key === 'Escape') {\n this.hide(e);\n }\n }\n\n public getDelay(key: 'show' | 'hide'): number {\n const { delay } = this.props;\n if (typeof delay === 'object') {\n return isNaN(delay[key]) ? DEFAULT_DELAYS[key] : delay[key];\n }\n\n return delay || 0;\n }\n\n public show(e: Event): void {\n if (!this.props.isOpen) {\n this.clearShowTimeout();\n this.toggle(e);\n\n // Create a new attr for parent obj when tooltip shown\n if (this.target !== null) {\n const ariaAttr = document.createAttribute('aria-describedby');\n ariaAttr.value = this.props.id as string;\n this.target.attributes.setNamedItem(ariaAttr);\n }\n }\n }\n\n public hide(e: Event): void {\n if (this.props.isOpen) {\n this.clearHideTimeout();\n this.toggle(e);\n\n // Remove the attr from parent obj when tooltip is hidden\n if (this.target !== null && this.target.attributes.getNamedItem('aria-describedby') !== null) {\n this.target.attributes.removeNamedItem('aria-describedby');\n }\n }\n }\n\n public clearShowTimeout(): void {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n\n public clearHideTimeout(): void {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n\n public handleDocumentClick(e: Event): void {\n if (!this.target) {\n return;\n }\n\n const target = e.target as HTMLElement;\n if (e.target === this.target || this.target.contains(target)) {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (!this.props.isOpen) {\n this.toggle(e);\n }\n } else if (this.props.isOpen && target.getAttribute('role') !== 'tooltip') {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n }\n\n public addTargetEvents(): void {\n if (!this.target) {\n return;\n }\n\n if (this.props.trigger) {\n const triggers = this.props.trigger.split(' ');\n if (!triggers.includes('manual')) {\n if (triggers.includes('click')) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this.handleDocumentClick, true);\n });\n }\n if (triggers.includes('hover')) {\n this.target.addEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.addEventListener('mouseout', this.onMouseLeaveTooltip, true);\n }\n if (triggers.includes('focus')) {\n this.target.addEventListener('focusin', this.show, true);\n if (this.props.displayMode === 'FLYOUT') {\n this.target.addEventListener('focusout', this.onFocusOutTarget, true);\n } else {\n this.target.addEventListener('focusout', this.hide, true);\n }\n }\n this.target.addEventListener('keydown', this.onEscKeyDownNative, true);\n }\n } else {\n this.target.addEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.addEventListener('mouseout', this.onMouseLeaveTooltip, true);\n this.target.addEventListener('keydown', this.onEscKeyDownNative, true);\n this.target.addEventListener('focusin', this.show, true);\n if (this.props.displayMode === 'FLYOUT') {\n this.target.addEventListener('focusout', this.onFocusOutTarget, true);\n } else {\n this.target.addEventListener('focusout', this.hide, true);\n }\n\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this.handleDocumentClick, true);\n });\n }\n }\n\n public removeTargetEvents(): void {\n if (!this.target) {\n return;\n }\n\n this.target.removeEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.removeEventListener('mouseout', this.onMouseLeaveTooltip, true);\n this.target.removeEventListener('keydown', this.onEscKeyDownNative, true);\n this.target.removeEventListener('focusin', this.show, true);\n this.target.removeEventListener('focusout', this.onFocusOutTarget, true);\n this.target.removeEventListener('focusout', this.hide, true);\n\n ['click', 'touchstart'].forEach((event: string) => {\n document.removeEventListener(event, this.handleDocumentClick, true);\n });\n }\n\n public toggle(e?: Event): void {\n if (e && this.props.disabled) {\n e.preventDefault();\n }\n\n if (this.props.toggle) {\n this.props.toggle();\n }\n }\n\n public render(): JSX.Element | null {\n if (!this.props.isOpen || this.isMobile) {\n return null;\n }\n\n const {\n cssModule,\n isOpen,\n target,\n placementPrefix,\n hideArrow,\n hideAriaHidden,\n className,\n innerClassName,\n innerRef,\n modifiers,\n toggle,\n delay,\n placement,\n disabled,\n trigger,\n boundariesElement,\n offset,\n arrowClassName,\n displayMode,\n id,\n ...attributes\n } = this.props;\n\n const classes = mapToCssModules(\n classNames(displayMode === 'FLYOUT' ? 'msc-flyout-inner' : 'msc-tooltip-inner', this.props.innerClassName),\n this.props.cssModule\n );\n\n const popperClasses = mapToCssModules(\n classNames(displayMode === 'FLYOUT' ? 'msc-flyout' : 'msc-tooltip', 'show', this.props.className),\n this.props.cssModule\n );\n\n return (\n
\n \n {this.props.toggle && this.props.shouldShowCloseButton ? (\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 * as React from 'react';\n\nimport Tooltip from './Tooltip';\nimport { IUncontrolledTooltipProps } from './Tooltip.props';\n\nexport interface IUncontrolledTooltipState {\n isOpen: boolean;\n}\n\n/**\n * UncontrolledTooltip examples.\n */\nexport default class UncontrolledTooltip extends React.PureComponent {\n private _isAutoDisplayTriggered: boolean;\n\n constructor(props: IUncontrolledTooltipProps) {\n super(props);\n this.state = { isOpen: false };\n this._toggle = this._toggle.bind(this);\n this._isAutoDisplayTriggered = false;\n }\n\n public render(): JSX.Element {\n const isCartPage =\n !StringExtensions.isNullOrWhitespace(this.props.cartPageUrl) && window.location.toString().includes(this.props.cartPageUrl!);\n\n if (this.props.shouldShowMiniCart && !isCartPage) {\n if (!this._isAutoDisplayTriggered) {\n // First time trigger auto mini cart.\n this.setState({ isOpen: true });\n this._isAutoDisplayTriggered = true;\n } else if (!this.state.isOpen) {\n // If tooptip is closed, reset the flag.\n this._isAutoDisplayTriggered = false;\n }\n }\n\n return (\n {\n this.props._toggle ? this.props._toggle() : this._toggle();\n }}\n {...this.props}\n />\n );\n }\n\n private _toggle(): void {\n this.setState(previousState => ({ isOpen: !previousState.isOpen }));\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\nimport { IWaitingProps } from './Waiting.props';\n\n/**\n * Waiting - this component is a visual indication of a pre-loader.\n */\nexport default class Waiting extends React.PureComponent {\n public static defaultProps: Partial = {\n className: 'msc-waiting-circular'\n };\n\n public render(): JSX.Element {\n const { className, ...props } = this.props;\n const watingClassName = `msc-waiting ${className}`;\n\n return
;\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 * as React from 'react';\n\nimport { INodeProps } from './node';\n\nexport interface IModuleProps extends INodeProps {\n moduleProps: Msdyn365.IModule;\n}\n\nexport const Module: React.FC = React.forwardRef(\n ({ className = '', id = '', tag: Tag = 'div', moduleProps, ...restAttribute }, ref) => {\n return ;\n }\n);\n\nexport default Module;\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 type NodeTag = React.ReactType;\n\nexport interface INodeProps {\n /* Wrapper class */\n className: string;\n\n /* Children node */\n children?: React.ReactNode;\n\n /* Wrapper Tag */\n tag?: NodeTag;\n\n /* Other attrributes */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any;\n}\n\nexport type IComponentNodeProps = INodeProps &\n T & {\n /* Wrapper Tag */\n tag?: React.ReactType;\n };\n\nexport const Node: React.FC = React.forwardRef(\n ({ className = '', tag: Tag = 'div', element: Element, ...restAttribute }, ref) => {\n return ;\n }\n);\n\nexport default Node;\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 React from 'react';\n\nimport { Modal, ModalBody, ModalHeader, Node } from '..';\n\nexport interface IModalViewProps {\n classNames?: string;\n galleryCarousel: React.ReactElement;\n modalIsOpen: boolean;\n ontoggle(): void;\n}\n\nexport const ImagefullView: React.FC = (props: IModalViewProps): React.ReactElement => {\n const body = (\n \n {props.galleryCarousel}\n \n );\n\n const modalWindow = (\n \n );\n\n const modalHeader = ;\n\n return React.cloneElement(modalWindow, {}, modalHeader, body);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport function removeInlineZoomStyle(): void {\n const zoomedImages: HTMLCollectionOf = document.body.getElementsByClassName('ms-inline-zoom__zoomedImg');\n\n const zoomedImagesArray = Array.from(zoomedImages) as HTMLImageElement[];\n for (const item of zoomedImagesArray) {\n item.style.width = '0';\n item.style.height = '0';\n }\n}\n\n/**\n * Represents default data scale value which should be used in case improper value specified in module config.\n */\nexport const defaultDataScale = 2;\n\n/**\n * Clears zooming state and reverts to initial image.\n * @param event - Event of moving the mouse out of the image.\n */\nexport function onMouseOutLensContainer(event: React.MouseEvent): void {\n const zoomLens = event.currentTarget;\n zoomLens.style.visibility = 'hidden';\n zoomLens.classList.remove('ms-containerZoom__zoom-lens__opacity');\n\n const zoomedImageContainer = document.body.querySelector('.ms-containerZoom__result');\n if (zoomedImageContainer) {\n zoomedImageContainer.style.visibility = 'hidden';\n }\n}\n\n/**\n * Represents size dimensions.\n */\ninterface ISize {\n width: number;\n height: number;\n}\n\n/**\n * Represents two-dimensional position.\n */\ninterface ILocation {\n /**\n * Left offset.\n */\n x: number; // eslint-disable-line @typescript-eslint/naming-convention -- To align with html standards.\n\n /**\n * Top offset.\n */\n y: number; // eslint-disable-line @typescript-eslint/naming-convention -- To align with html standards.\n}\n\n/**\n * Retrieves the displayed image size preserving image proportions.\n * @param imageElement - The html image element which is displayed.\n * @returns The dimensions of the displayed image ignoring all the offsets and paddings.\n */\nfunction getDisplayedImageSize(imageElement: HTMLImageElement): ISize {\n const imageInitialHeight = imageElement.naturalHeight;\n const imageInitialWidth = imageElement.naturalWidth;\n const imageContainerHeight = imageElement.height;\n const imageContainerWidth = imageElement.width;\n\n const widthScaleRatio = imageContainerWidth / imageInitialWidth;\n const heightScaleRatio = imageContainerHeight / imageInitialHeight;\n\n const scaleRatio = Math.min(widthScaleRatio, heightScaleRatio);\n\n return {\n width: imageInitialWidth * scaleRatio,\n height: imageInitialHeight * scaleRatio\n };\n}\n\n/**\n * Retrieves the center point based on the given dimensions.\n * @param size - Dimensions of an element.\n * @returns The point of the center.\n */\nfunction getCenter(size: ISize): ILocation {\n const centerDivider = 2;\n return {\n x: size.width / centerDivider,\n y: size.height / centerDivider\n };\n}\n\n/**\n * Retrieves the position where the lens must be placed based by the mouse position, lens size, and container size.\n * @param cursorPosition - The location of the mouse.\n * @param lensSize - The size of the lens.\n * @param originalSize - The container in which the lens should be placed.\n * @returns The location where the lens must be placed.\n */\nfunction getLensPosition(cursorPosition: ILocation, lensSize: ISize, originalSize: ISize) {\n const lensCenter = getCenter(lensSize);\n\n const position: ILocation = {\n x: cursorPosition.x - lensCenter.x,\n y: cursorPosition.y - lensCenter.y\n };\n\n // Limit lens to be inside the image element.\n const minPositionX = 0;\n const maxPositionX = originalSize.width - lensSize.width;\n position.x = Math.min(Math.max(position.x, minPositionX), maxPositionX);\n\n const minPositionY = 0;\n const maxPositionY = originalSize.height - lensSize.height;\n position.y = Math.min(Math.max(position.y, minPositionY), maxPositionY);\n\n return position;\n}\n\n/**\n * Retrieves mouse position.\n * @param event - Mouse event.\n * @param element - Element in which the event happened.\n * @returns Mouse position inside the given element.\n */\nfunction getCursorPosition(event: React.MouseEvent, element: HTMLElement): ILocation {\n const containerBoundingRect = element.getBoundingClientRect();\n return {\n x: event.pageX - containerBoundingRect.left - window.pageXOffset,\n y: event.pageY - containerBoundingRect.top - window.pageYOffset\n };\n}\n\n/**\n * Formats number to represent pixels, e.g. 42px.\n * @param numericValue - The numeric value of pixels.\n * @returns String in pixel format.\n */\nfunction formatPixelsValue(numericValue: number): string {\n return `${numericValue}px`;\n}\n\n/**\n * Formats the given url to be a background image style value.\n * @param sourceUrl - The image source.\n * @returns Background image style value.\n */\nfunction formatBackgroundImageUrl(sourceUrl: string): string {\n return `url('${sourceUrl}')`;\n}\n\n/**\n * Get the cursor position on image click.\n * @param zoomedImage - The target image.\n * @param dataScaleText - Zoom factor for image.\n * @param event - Mouse event action.\n */\nfunction handleInlineStyles(\n zoomedImage: EventTarget & HTMLImageElement,\n dataScaleText: string,\n event: React.MouseEvent\n): void {\n zoomedImage.removeAttribute('style');\n const imageElement = zoomedImage.parentElement!.previousElementSibling!.querySelector('img')!;\n\n const dataScale = Number(dataScaleText);\n\n const imageContainerSize: ISize = {\n width: imageElement.offsetWidth,\n height: imageElement.offsetHeight\n };\n\n const zoomedImageSize: ISize = {\n width: imageContainerSize.width * dataScale,\n height: imageContainerSize.height * dataScale\n };\n\n zoomedImage.style.width = formatPixelsValue(zoomedImageSize.width);\n zoomedImage.style.height = formatPixelsValue(zoomedImageSize.height);\n zoomedImage.style.opacity = '1';\n\n const cursorPosition = getCursorPosition(event, imageElement);\n const imageCenter = getCenter(imageContainerSize);\n const offset: ILocation = {\n x: cursorPosition.x - imageCenter.x,\n y: cursorPosition.y - imageCenter.y\n };\n\n const scaledCursorPosition: ILocation = {\n x: cursorPosition.x * dataScale,\n y: cursorPosition.y * dataScale\n };\n scaledCursorPosition.x -= offset.x;\n scaledCursorPosition.y -= offset.y;\n\n const zoomedImagePosition = getLensPosition(scaledCursorPosition, imageContainerSize, zoomedImageSize);\n\n zoomedImage.style.left = formatPixelsValue(-zoomedImagePosition.x);\n zoomedImage.style.top = formatPixelsValue(-zoomedImagePosition.y);\n}\n\n/**\n * ZoomIn functionality on image click.\n * @param event -The mouse event.\n * @param dataScale -The zoom factor.\n */\nexport function inlineZoomInitClick(event: React.MouseEvent, dataScale?: string): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomImg = event.currentTarget.parentElement?.nextElementSibling?.querySelector('img');\n if (!zoomImg) {\n return;\n }\n\n handleInlineStyles(zoomImg, dataScale ?? '2', event);\n}\n\n/**\n * Updates lens and zoomed image positions on the page.\n * @param event - Mouse movement event.\n * @param imageElement - Original image element.\n * @param lens - The element which shows the part of the image which is zoomed.\n */\nfunction handleMouseMovementInContainerZoom(\n event: React.MouseEvent,\n imageElement: HTMLImageElement,\n lens: EventTarget & HTMLDivElement\n): void {\n let zoomedContainer = document.body.querySelector('.ms-containerZoom__result');\n if (!zoomedContainer) {\n zoomedContainer = document.createElement('div');\n zoomedContainer.setAttribute('class', 'ms-containerZoom__result');\n document.body.appendChild(zoomedContainer);\n }\n\n const lensSize: ISize = {\n width: lens.offsetWidth,\n height: lens.offsetHeight\n };\n\n const dataScale = Number(lens.getAttribute('data-scale') ?? defaultDataScale);\n\n const cursorPosition = getCursorPosition(event, imageElement);\n const displayedImageSize = getDisplayedImageSize(imageElement);\n const imageContainerSize: ISize = {\n width: imageElement.offsetWidth,\n height: imageElement.offsetHeight\n };\n\n const lensPosition = getLensPosition(cursorPosition, lensSize, imageContainerSize);\n lens.style.visibility = 'unset';\n lens.style.left = formatPixelsValue(lensPosition.x);\n lens.style.top = formatPixelsValue(lensPosition.y);\n\n const mainImageSource = imageElement.getAttribute('src')!;\n\n zoomedContainer.style.visibility = 'unset';\n zoomedContainer.style.backgroundImage = formatBackgroundImageUrl(mainImageSource);\n zoomedContainer.style.width = formatPixelsValue(lensSize.width * dataScale);\n zoomedContainer.style.height = formatPixelsValue(lensSize.width * dataScale);\n\n const offsetSize: ISize = {\n width: imageContainerSize.width - displayedImageSize.width,\n height: imageContainerSize.height - displayedImageSize.height\n };\n const offsetCenter = getCenter(offsetSize);\n const lensScaledPositionX = (offsetCenter.x - lensPosition.x) * dataScale;\n const lensScaledPositionY = (offsetCenter.y - lensPosition.y) * dataScale;\n\n zoomedContainer.style.backgroundPositionX = formatPixelsValue(lensScaledPositionX);\n zoomedContainer.style.backgroundPositionY = formatPixelsValue(lensScaledPositionY);\n\n zoomedContainer.style.backgroundSize = `${formatPixelsValue(displayedImageSize.width * dataScale)} ${formatPixelsValue(\n displayedImageSize.height * dataScale\n )}`;\n\n const topPosition = imageElement.getBoundingClientRect().top;\n zoomedContainer.style.top = formatPixelsValue(topPosition);\n}\n\nexport function onMouseOverImageContainer(event: React.MouseEvent): void {\n const lens = event.currentTarget.parentElement!.previousElementSibling! as HTMLDivElement;\n lens.classList.add('ms-containerZoom__zoom-lens__opacity');\n\n const imageElement = event.currentTarget as HTMLImageElement;\n\n handleMouseMovementInContainerZoom(event, imageElement, lens);\n}\n\nexport function onMouseMoveLensContainer(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const imageElement = event.currentTarget.nextElementSibling!.querySelector('img')!;\n const lens = event.currentTarget;\n\n handleMouseMovementInContainerZoom(event, imageElement, lens);\n}\n\nexport function onContainerZoomInit(event: React.MouseEvent): void {\n if (!document.body.querySelector('.ms-containerZoom__result')) {\n const containerDiv = document.createElement('div');\n containerDiv.setAttribute('class', 'ms-containerZoom__result');\n document.body.appendChild(containerDiv);\n }\n\n onMouseOverImageContainer(event);\n}\n\nexport function inlineZoomImageOnMouseMove(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const parentElement = event.currentTarget.parentElement!.parentElement!;\n const zoomImg = event.currentTarget;\n\n const dataScale = parentElement.getAttribute('data-scale') ?? `${defaultDataScale}`;\n handleInlineStyles(zoomImg, dataScale, event);\n}\n\nexport function inlineZoomImageOnMouseOut(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n event.currentTarget.style.height = '0';\n event.currentTarget.style.width = '0';\n}\n\nexport function inlineZoomInit(event: React.MouseEvent, dataScale: string = '2'): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomedImage = event.currentTarget.parentElement?.nextElementSibling?.querySelector('img');\n if (!zoomedImage) {\n return;\n }\n\n handleInlineStyles(zoomedImage, dataScale, event);\n}\n\nexport function inlineZoomImageOnHover(event: React.MouseEvent, scale: string = '2'): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomedImg = event.currentTarget.parentElement!.nextElementSibling!.querySelector('img')!;\n handleInlineStyles(zoomedImg, scale, event);\n}\n\n/**\n * Remove container zoomed image.\n */\nexport function removeContainerZoomStyle(): void {\n const zoomLens = document.body.querySelector('.ms-containerZoom__zoom-lens');\n if (zoomLens) {\n zoomLens.style.visibility = 'hidden';\n zoomLens.classList.remove('ms-containerZoom__zoom-lens__opacity');\n }\n\n const zoomedImageContainer = document.body.querySelector('.ms-containerZoom__result');\n if (zoomedImageContainer) {\n zoomedImageContainer.style.visibility = 'hidden';\n }\n}\n","var $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {\n parseFloat: parseFloat\n});\n"],"names":["Alert","React","render","id","className","closeClassName","cssModule","tag","toggle","color","isOpen","children","transition","fade","assertive","includeAlertClass","ariaLabel","this","props","classes","mapToCssModules","classNames","closeClasses","alertTransition","Fade","defaultProps","baseClass","timeout","appear","enter","exit","Tag","buttonId","innerContent","type","closeAriaLabel","onClick","UncontrolledTooltip","target","placement","style","undefined","display","role","in","unmountOnExit","BackToTop","constructor","super","_renderHeading","text","Msdyn365","editProps","state","attributes","tabIndex","_reevaluatePosition","bind","_scrollToTop","payLoad","getPayloadObject","telemetryContent","TelemetryConstant","getTelemetryAttributes","componentDidMount","window","addEventListener","componentWillUnmount","removeEventListener","threshold","delayInMs","scrollStepInPx","_scrollStep","document","documentElement","scrollTop","body","clearInterval","intervalId","setState","scrollTo","e","preventDefault","setInterval","pageYOffset","height","Math","min","innerHeight","clientHeight","hide","scrollHeight","tabIndexValue","Button","disabled","active","block","outline","size","innerRef","href","ref","Collapse","_transitionStatusToClassHash","entering","entered","exiting","exited","_tagRef","_updateParentElement","node","parentElement","classList","contains","minHeight","_onEntering","_onExit","_onExited","_onExiting","_reevaluateHeight","componentDidUpdate","nextProps","shouldComponentUpdate","nextState","navbar","collapseIn","mountOnEnter","onEnter","onEntering","onEntered","onExit","onExiting","onExited","otherProps","transitionProps","Transition","TransitionTimeouts","status","collapseClass","_getTransitionClass","current","firstElementChild","isAppearing","KeyCodes","format","formatSpecifier","parameters","replace","match","index","length","value","toString","isNullOrWhiteSpace","trim","getTelemetryObject","pageName","moduleName","telemetry","eventType","etext","recid","contentCategory","contentAction","pgname","mname","etype","contentData","setTelemetryAttribute","onTelemetryClick","linkText","logEvent","TelemetryEvent","Custom","clamp","max","toUpperCaseFirstChar","charAt","toUpperCase","substr","getCSS","element","property","getComputedStyle","createThrottledEvent","listener","timer","last","event","now","Date","clearTimeout","setTimeout","addThrottledEvent","name","throttledEventHandler","split","map","c","join","canUseDOM","createElement","getTarget","selection","querySelectorAll","Error","console","error","findDOMElements","getTargetElement","targetElement","isRef","isElement","Modal","Carousel","focusableElements","ControlledDrawer","openGlyph","closeGlyph","_toggle","isManuallyToggled","collapseProps","isExpanded","drawerGlyphClass","classnames","toggleGlyphClassName","animateGlyph","drawerOpenGlyph","drawerCloseGlyph","drawerClass","Expand","toggleButtonProps","_generateDrawerButtonInnerMarkup","collapseState","toggleButtonText","drawerButtonTextClass","toggleButtonClassName","glyphPlacement","_generateTitle","_generateGlyphMarkup","isStart","additionalClassName","titleLClassName","title","onTextChange","requestContext","onEdit","location","glyphClass","onToggle","Drawer","buttonText","currentTarget","innerText","baseClassActive","fadeIn","timeoutOrUndefined","addEndListener","baseClassAlways","baseClassActiveAlways","isActive","Flipper","telemetryLabel","glyphProps","displayTooltip","sizeClass","attribute","trigger","FormBuilderErrorComponent","errorMessage","FormBuilder","_onSubmit","async","formData","keys","formKey","currentValue","values","Number","resourceId","resourceValue","onSubmit","previousState","isSubmitted","_onInputChange","changedValueIndex","parseInt","getAttribute","ObjectExtensions","isNullOrUndefined","Promise","reject","newState","currentKey","requiredValueMissing","setValue","isRequired","resolve","Dictionary","heading","confirmationComponent","submitButtonText","requiredValueMissingErrorMessage","every","ArrayExtensions","hasElements","autoComplete","filter","key","htmlFor","getValue","onChange","required","isAnyRequiredValueMissing","getValues","findIndex","isMissing","headingTag","HTag","IncrementalQuantity","inputRef","isMobileView","isMobileCheck","isMobile","variant","VariantType","Browser","context","gridSettings","xs","w","sm","md","lg","xl","_validateMin","isNaN","currentInput","_minValue","currentCount","isUpdating","_onIncrement","_onDecrement","_handleChange","IncrementalQuantity_1","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","decrementDisabled","isGiftCard","incrementDisabled","DecrementQuantity","decrementAttributes","IncrementQuantity","incrementAttributes","ariaLablelText","inputQuantityAriaLabel","extraClassDecrement","extraClassIncrement","decrementButtonAriaLabel","pattern","onBlur","incrementButtonAriaLabel","invokeCallback","currQuantity","updatedQuantity","inputElement","HTMLInputElement","setAttribute","observer","MsDyn365","isBrowser","innerWidth","Viewport","device","Type","LabeledDropdown","_onSelectOption","selectedKey","selectedOption","dropdownOptions","option","selectedIndex","indexOf","labelText","labelClassname","dropdownId","dropdownClassname","labelClassNames","dropdownClassNames","_getSelectedIndex","selected","controlledByParent","i","onSelectOption","selectedOptions","toggleColor","Portal","defaultNode","remove","appendChild","createPortal","mounted","_getFocusableChildren","_handleBackdropClick","_handleBackdropMouseDown","_handleEscape","_handleTab","_onOpened","_onClosed","wasOpen","mouseDownElement","_open","visibility","position","applicationNode","HTMLElement","querySelector","_close","_prevProps","prevState","shouldUpdateFocusToFirstElement","focusableElementArr","focus","componentWillReceiveProps","wrapClassName","modalClassName","backdropClassName","contentClassName","modalTransition","backdropTransition","backdrop","onOpened","onClosed","external","verticalPosition","horizontalPosition","keyboard","zIndex","returnFocusRef","ariaLabelledbyId","dialogAttributes","modalAttributes","onMouseDown","onKeyUp","onKeyDown","modalTransitions","backdropTransitions","Backdrop","dialogBaseClass","dialogClasses","dialog","openCount","scrollY","scrollbarWidth","clientWidth","top","right","left","removeProperty","modalOpenClassName","modalOpenClassNameRegex","RegExp","_getFocusedChild","focusableChildren","activeElement","stopPropagation","container","which","totalFocusable","currentFocus","focusedIndex","el","shiftKey","keyCode","autoFocus","ModalBody","ModalFooter","ModalHeader","closeButton","wrapTag","closeButtonLabel","WrapTag","closeButtonTabIndex","Pagination","listClassName","listTag","ListTag","label","paginationClasses","listpaginationClasses","PaginationItem","paginationItemClasses","PaginationLink","next","previous","paginationLinkclasses","defaultCaret","Array","isArray","UncontrolledPagination","activePage","maxPages","items","ceil","itemsPerPage","floor","startingItem","qsps","splitUrl","url","secondSplit","hash","parsedQsps","qsp","qspPair","baseUrl","previousText","nextText","previousAriaLabel","nextAriaLabel","activeQsp","_generatePageLinks","_generateUrl","page","Object","qspUrl","forEach","_generatePaginationArrow","disable","tooltipId","nextId","prevId","ariaDescribedBy","nextAreaDescribed","prevAreaDescribed","_generatePaginationItem","_generateEllipse","leftDistance","rightDistance","leftEllipse","pagesDisplayed","rightEllipse","pages","displayedPagesOnLeft","startingIndex","endIndex","push","Popover","tabPressed","popover","_addTargetEvents","_handleDocumentClick","_removeTargetEvents","getRef","_focusOutTarget","_focusOutPopover","_keyDown","_show","_hide","_handleProps","placementPrefix","hideArrow","innerClassName","modifiers","offset","boundariesElement","popperClasses","PopperContent","focusOut","nextFocus","_handlePlacementChange","prevProps","_renderChildren","data","flip","fallbackPlacement","arrowClassName","arrowClassNameOrUndefined","attrs","popperClassName","extendedModifiers","enabled","behavior","preventOverflow","update","order","fn","ReactPopper","component","Arrow","popupProps","processStatusClass","dialogStrings","modalOpen","setModalOpen","closeModal","closeWindowButtonText","imageSettings","product","price","productQuantity","priceComponent","navigationUrl","ContinueShopping","continueShoppingAttribute","ViewBagAndCheckout","viewBagAttribute","fallbackImageUrl","getFallbackImageUrl","ItemId","actionContext","apiSettings","cropFocalRegion","quantity","itemsString","headerItemOneText","headerItemFormatText","shouldDisplayUnitOfMeasure","app","config","unitOfMeasureDisplayType","reducedDimensions","Dimensions","reduce","str","productDimension","DimensionValue","Value","headerMessageText","Image","src","PrimaryImageUrl","fallBackSrc","altText","Name","loadFailureBehavior","DefaultUnitOfMeasure","goToCartText","continueShoppingText","PriceEditorModeSelectionState","getPriceEditorModeSelectionStateResources","modeState","resources","full","payFullAmountButtonText","partial","specifyAmountButtonText","onClickHandler","handleStateChange","togglePopoverHandler","setPopoverState","isPopoverState","PriceEditorModeSelectionComponent","popoverReference","isPopoverShown","setIsPopoverShown","setModeState","currentState","onChangeMode","clickedState","onStateChanged","EnumExtensions","getEnumValues","stateStringRepresentation","renderModeStateItem","PriceEditor","_handleInputFocus","isInputFocused","_handleInputBlur","_handleEditorModeStateChange","_updateAmount","maximumValue","_inputRef","newAmount","handleChange","parseFloat","toFixed","_precision","minimumValue","defaultValue","defaultAmount","containerClassName","hasMultipleModes","mode","formattedValue","editedValue","priceEditorInputAriaLabel","onFocus","Progress","percent","width","classname","Quantity","minValue","debounce","SingleSlideCarousel","carouselSize","slideSize","itemSize","flipperNextLabel","flipperPrevLabel","_onResized","_onCarouselResized","_nextSlide","_previousSlide","_handleTouchStart","_handleTouchEnd","_onFocus","showPrevious","showNext","slideRef","itemRef","direction","parentId","scrollThreshold","touchScrollThreshold","carousel","slide","item","_setSizes","_updateFlippers","vertical","resizeThrottledEventHandler","isVert","slidePositionStyle","modifiedChildren","_getClonedChildren","carouselClass","carouselSlideClass","overflowClass","previousFlipperGlyph","nextFlipperGlyph","previousFlipperClassName","nextFlipperClassName","disableClassName","onTouchStart","onTouchEnd","useTabList","child","castChild","verticalItemsSelector","itemsSelector","_moveSingleSlide","evt","touches","scrollStart","screenY","screenX","changedTouches","delta","currentOffset","maxScrollCount","directionModifier","maxScrollDistance","distanceToEdge","abs","scrollWidth","_calculateCarouselSize","carouselStyle","padding","paddingTop","paddingBottom","paddingLeft","paddingRight","_canScrollPrevious","_canScrollNext","_scrollItemIntoView","offsetTop","offsetLeft","updateOffset","scrollLeft","SliderThumb","sliderButtonRef","sliderThumbBaseClass","sliderThumbClass","trackThumbClass","handleStart","onMouseUp","handleEnd","onTouchMove","handleDrag","handleKeydown","handleFocus","handleBlur","showTooltip","tooltip","showToolTipOnTab","handleTooltipText","sliderValue","orientations","horizontal","dimension","coordinate","EventType","Slider","thumb1Ref","thumb2Ref","_prevState","_renderLabels","labels","labelId","labelPositioning","labelString","_renderSliderThumbs","thumbStyles","sliderAriaLabelMin","sliderThumbs","sliderAriaLabelMax","isRangeSlider","step","orientation","_handleOnChange","_handleStart","_handleDrag","_handleEnd","ariaValueText","_handleUpdate","dimensionStr","sliderPos","handlePos","limit","grab","castTarget","thumbid","_getThumbAndPublishEvent","Start","_position","castEvent","coordinateStyle","directionStyle","clientCoordinateStyle","getBoundingClientRect","pos","_getValueFromPosition","_getPositionFromValue","percentage","round","baseVal","_coordinates","fill","handle","_setSliderValue","sliderThumb","Change","_publishNotification","thumb","delegate","slider","firstThumbValue","secondThumbValue","NaN","nativeEventType","elmenentId","_getThumbFromProps","End","onChangeEnd","onChangeStart","_willThumbsCrossOver","_handleOnClick","shouldSliderAdjustToRTL","offsetWidth","_nextState","shouldRender","thumb1Position","thumb2Position","sliderClass","sliderBaseClass","sliderId","camelCasedDirection","positionThumb1","coordsThumb1","fillStyle","handleStyle","trackProgressClass","sliderKey","String","positionThumb2","coordsThumb2","marginBottom","showProgressBar","fillTrackValue","showLabels","castThumb","thumbId","thumbPressed","thumb1","thumb2","thumbInteractedWith","thumbFound","keycode","checkCondition","inForm","TableDataType","Table","componentClassName","headingPrefix","capitalizeHeadingPrefix","_selectSortingKey","columnName","sortingKey","ascendingOrder","newOrder","showActions","_onCheckBoxChangeHandler","rows","checkBoxCallback","isNumber","isSelected","_renderHeadingRow","columnData","showCheckBoxes","enableToModify","minifyActions","actionLinkText","isSortable","resourcePrefix","isSingleSelectOnly","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","sortingClassName","sortingValue","columns","cellIndex","updatedCellIndex","columnSortValue","columnAriaLabel","sortable","_handleKeyPressPrev","scope","radioCheckBox","CheckBoxButton","actionContent","tableCell","header","content","_renderRow","excludedColumns","actions","formatPrice","rowsData","additionalNameAriaLabel","row","cell","includes","extraClass","Price","cellContent","columnSpecificClass","rowKey","actionButtons","_renderActions","buttonReferences","records","buttonReference","editLinkText","deleteLinkText","viewLinkText","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","actionLinkTooltip","minifiedButtonText","onDelete","onView","handleClickEdit","edit","handleClickDelete","delete","handleClickView","Node","_toggleActions","newKey","_sortTableRow","table","sortingkey","sort","userOne","userTwo","userOneData","find","userTwoData","cleanFirst","toLowerCase","cleanSecond","_getCurrentPageData","tableRows","start","end","result","colSpan","_renderPrev","paginationPreviousText","_renderNext","paginationNextText","Enter","Space","headings","showPagination","paginationProperty","tableAriaLabel","tableTabIndex","paginationLinks","skipCount","itemPerPage","prevText","paginationText","tableBody","tableHead","isChecked","cssClass","checked","DEFAULT_DELAYS","show","Tooltip","addTargetEvents","handleDocumentClick","removeTargetEvents","onMouseOverTooltip","onMouseLeaveTooltip","onMouseOverTooltipContent","onMouseLeaveTooltipContent","onFocusOutTarget","onEscKeyDown","onEscKeyDownNative","getElementsByTagName","bodyClasses","getNamedItem","removeNamedItem","clearHideTimeout","clearShowTimeout","hideTimeout","showTimeout","getDelay","nativeEvent","delay","ariaAttr","createAttribute","setNamedItem","triggers","displayMode","hideAriaHidden","shouldShowCloseButton","onMouseOver","onMouseLeave","shouldShowMiniCart","_isAutoDisplayTriggered","isCartPage","StringExtensions","isNullOrWhitespace","cartPageUrl","Waiting","watingClassName","Module","moduleProps","restAttribute","renderModuleAttributes","Element","ImagefullView","galleryCarousel","modalWindow","modalIsOpen","ontoggle","modalHeader","removeInlineZoomStyle","zoomedImages","getElementsByClassName","zoomedImagesArray","from","defaultDataScale","onMouseOutLensContainer","zoomLens","zoomedImageContainer","getCenter","x","y","getLensPosition","cursorPosition","lensSize","originalSize","lensCenter","maxPositionX","maxPositionY","getCursorPosition","containerBoundingRect","pageX","pageXOffset","pageY","formatPixelsValue","numericValue","handleInlineStyles","zoomedImage","dataScaleText","removeAttribute","imageElement","previousElementSibling","dataScale","imageContainerSize","offsetHeight","zoomedImageSize","opacity","imageCenter","scaledCursorPosition","zoomedImagePosition","inlineZoomInitClick","zoomImg","nextElementSibling","handleMouseMovementInContainerZoom","lens","zoomedContainer","displayedImageSize","imageInitialHeight","naturalHeight","imageInitialWidth","naturalWidth","imageContainerHeight","widthScaleRatio","heightScaleRatio","scaleRatio","getDisplayedImageSize","lensPosition","mainImageSource","backgroundImage","offsetCenter","lensScaledPositionX","lensScaledPositionY","backgroundPositionX","backgroundPositionY","backgroundSize","topPosition","onMouseOverImageContainer","add","onMouseMoveLensContainer","onContainerZoomInit","containerDiv","inlineZoomImageOnMouseMove","inlineZoomImageOnMouseOut","inlineZoomImageOnHover","scale","zoomedImg","removeContainerZoomStyle","$","stat","forced"],"sourceRoot":""}