{"version":3,"file":"static/js/d5abba9a76b01f88575f.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/base/base-notification-component.tsx?47ca","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/base/closable-notification-component.tsx?aac5","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/base/dismissible-notification-component.tsx?5826","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/base/notification-close-button-component.tsx?a90a","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/base/notification-content-component.tsx?6476","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/base/notification-description-component.tsx?fb91","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/base/notification-footer-component.tsx?e051","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/base/notification-header-component.tsx?6866","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/base/notification-instance-component.tsx?e395","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/base/notification-title-component.tsx?c4e8","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/notification-components-lists-manager.ts?8bd2","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/system-notifications/error-notification-component.tsx?96e4","webpack://Msdyn365.Commerce.Online/../src/components/Spinner/Spinner.types.ts?d830","webpack://Msdyn365.Commerce.Online/../src/components/Spinner/Spinner.base.tsx?dabc","webpack://Msdyn365.Commerce.Online/../src/components/Spinner/Spinner.styles.tsx?beac","webpack://Msdyn365.Commerce.Online/../src/components/Spinner/Spinner.tsx?3f11","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/system-notifications/loading-notification-component.tsx?bf13","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/system-notifications/success-notification-component.tsx?dfb0","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/system-notifications/system-notification-component.tsx?60e2","webpack://Msdyn365.Commerce.Online/./src/modules/notification-components/system-notifications/warning-notification-component.tsx?8b88","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-data-instances/base/base-notification.ts?d830","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-data-instances/base/dismissible-notification.ts?f9b7","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-data-instances/base/events/notification-events.ts?8fd5","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-data-instances/base/with-notification-component-decorator.ts?485e","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-data-instances/system-notifications/system-notification.ts?bd82","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-data-instances/system-notifications/error-notification.ts?5a19","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-data-instances/system-notifications/loading-notification.ts?4441","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-data-instances/system-notifications/success-notification.ts?d3e3","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-data-instances/system-notifications/warning-notification.ts?d9bf","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-manager/notification-feeds.ts?12a2","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-manager/notifications-manager.ts?3350"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nimport { BaseNotification } from '../../notifications-data-instances';\n\n/**\n * Default props for a component responsible for rendering the given notification.\n * @remark Modify carefully as it's initialized by the notifications manager to provide dynamic rendering.\n */\nexport interface INotificationProps {\n notification: NotificationType;\n}\n\n/**\n * Default props for a component responsible for rendering some part of notification, but not the whole notification (e.g. @see NotificationTitle).\n */\nexport interface INotificationElementProps extends INotificationProps {}\n\n/**\n * Represents a base class which renders a notification or a part of notification.\n */\nexport abstract class BaseNotificationComponent<\n NotificationType extends BaseNotification,\n PropsType extends INotificationProps = INotificationProps,\n StateType = {}\n> extends React.PureComponent {\n public constructor(props: PropsType) {\n super(props);\n }\n\n public abstract render(): React.ReactNode;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Random } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React, { ReactNode } from 'react';\n\nimport { BaseNotification, IClosableNotification } from '../../notifications-data-instances';\nimport { NotificationEvents } from '../../notifications-data-instances/base/events';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Represents state for closable wrapper.\n */\nexport interface IClosableNotificationWrapperState {\n isClosed: boolean;\n}\n\n/**\n * Wraps children into closable wrapper which hides the children (notification body) when the notification is closed.\n */\nexport class ClosableNotificationWrapper<\n NotificationType extends BaseNotification & IClosableNotification\n> extends BaseNotificationComponent, IClosableNotificationWrapperState> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-closable-notification';\n\n /**\n * Unique id of the component.\n */\n private readonly _instanceId: string;\n\n public constructor(props: INotificationElementProps) {\n super(props);\n\n this._instanceId = `ClosableNotificationWrapper-${Random.Guid.generateGuid()}`;\n\n this.state = {\n isClosed: false\n };\n\n this._close = this._close.bind(this);\n this._unsubscribeFromEvents = this._unsubscribeFromEvents.bind(this);\n }\n\n public componentDidMount(): void {\n this._subscribeToEvents(this.props.notification);\n }\n\n public componentDidUpdate(previousProps: INotificationElementProps): void {\n this._unsubscribeFromEvents(previousProps.notification);\n this._subscribeToEvents(this.props.notification);\n }\n\n public componentWillUnmount(): void {\n this._unsubscribeFromEvents(this.props.notification);\n }\n\n public render(): ReactNode {\n let className = ClosableNotificationWrapper.className;\n if (this.state.isClosed) {\n className = classnames(className, `${ClosableNotificationWrapper.className}__closed`);\n }\n\n return
{this.props.children}
;\n }\n\n private _subscribeToEvents(notification: NotificationType): void {\n notification.events.getValue(NotificationEvents.Close)!.subscribe({\n instanceId: this._instanceId,\n handler: this._close\n });\n notification.events.getValue(NotificationEvents.RemovedFromList)!.subscribe({\n instanceId: this._instanceId,\n handler: () => {\n this._unsubscribeFromEvents(notification);\n }\n });\n }\n\n private _unsubscribeFromEvents(notification: NotificationType): void {\n notification.unsubscribeFromEvents(this._instanceId);\n }\n\n private _close(): void {\n this._unsubscribeFromEvents(this.props.notification);\n\n this.setState({ isClosed: this.props.notification.isClosed });\n\n // Wait for the animation before removing completely.\n setTimeout(() => {\n this.props.notification.remove();\n }, 100);\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, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React, { ReactNode } from 'react';\n\nimport { DismissibleNotification, NotificationEvents } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\nexport interface IDismissibleNotificationWrapperState {\n isDismissing: boolean;\n isDismissed: boolean;\n}\n\n/**\n * Wrapper over notification body which allows dismissing of the notification.\n * It setups timeouts and hides the notification body when the notification should be dismissed.\n */\nexport class DismissibleNotificationWrapper extends BaseNotificationComponent<\n NotificationType,\n INotificationElementProps,\n IDismissibleNotificationWrapperState\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-dismissible-notification';\n\n /**\n * Waiting for dismissing timer.\n */\n private _timer?: NodeJS.Timeout;\n\n /**\n * Unique id of the component.\n */\n private readonly _instanceId: string;\n\n public constructor(props: INotificationElementProps) {\n super(props);\n\n this.state = {\n isDismissing: false,\n isDismissed: false\n };\n\n this._instanceId = `DismissibleNotificationWrapper-${Random.Guid.generateGuid()}`;\n\n this._setTimer = this._setTimer.bind(this);\n this._clearTimer = this._clearTimer.bind(this);\n this._startDismissing = this._startDismissing.bind(this);\n this._preventDismissing = this._preventDismissing.bind(this);\n this._preventDismissingHandler = this._preventDismissingHandler.bind(this);\n this._finishDismissing = this._finishDismissing.bind(this);\n this._updateState = this._updateState.bind(this);\n this._unsubscribeFromEvents = this._unsubscribeFromEvents.bind(this);\n }\n\n public componentDidMount(): void {\n if (this.props.notification.autoDismissTimeout !== null) {\n this._setTimer();\n }\n this._subscribeToEvents(this.props.notification);\n }\n\n public componentDidUpdate(previousProps: INotificationElementProps): void {\n this._unsubscribeFromEvents(previousProps.notification);\n this._subscribeToEvents(this.props.notification);\n }\n\n public componentWillUnmount(): void {\n this._unsubscribeFromEvents(this.props.notification);\n }\n\n public render(): ReactNode {\n let className = DismissibleNotificationWrapper.className;\n if (this.state.isDismissing) {\n className = classnames(className, `${DismissibleNotificationWrapper.className}__dismissing`);\n }\n if (this.state.isDismissed) {\n className = classnames(className, `${DismissibleNotificationWrapper.className}__dismissed`);\n }\n\n const onMouseEnter = this.props.notification.shouldResetOnHover ? this._preventDismissing : undefined;\n const onMouseLeave = this.props.notification.shouldResetOnHover ? this._setTimer : undefined;\n\n return (\n
\n {this.props.children}\n
\n );\n }\n\n private _subscribeToEvents(notification: NotificationType): void {\n notification.events.getValue(NotificationEvents.StartDismissing)!.subscribe({\n instanceId: this._instanceId,\n handler: this._updateState\n });\n notification.events.getValue(NotificationEvents.PreventDismissing)!.subscribe({\n instanceId: this._instanceId,\n handler: this._preventDismissingHandler\n });\n notification.events.getValue(NotificationEvents.FinishDismissing)!.subscribe({\n instanceId: this._instanceId,\n handler: () => this._updateState\n });\n notification.events.getValue(NotificationEvents.RemovedFromList)!.subscribe({\n instanceId: this._instanceId,\n handler: () => {\n this._unsubscribeFromEvents(notification);\n }\n });\n }\n\n private _unsubscribeFromEvents(notification: NotificationType): void {\n notification.unsubscribeFromEvents(this._instanceId);\n }\n\n private _setTimer(): void {\n this._timer = setTimeout(() => {\n this._startDismissing();\n }, this.props.notification.autoDismissTimeout!);\n }\n\n private _clearTimer(): void {\n if (!ObjectExtensions.isNullOrUndefined(this._timer)) {\n clearTimeout(this._timer);\n }\n }\n\n private _startDismissing(): void {\n this.props.notification.startDismissing();\n }\n\n private _preventDismissingHandler(): void {\n this._clearTimer();\n this._updateState();\n }\n\n private _preventDismissing(): void {\n this.props.notification.preventDismissing();\n }\n\n private _finishDismissing(): void {\n this.props.notification.finishDismissing();\n this._updateState();\n }\n\n private _updateState(): void {\n this.setState({ isDismissing: this.props.notification.isDismissing, isDismissed: this.props.notification.isDismissed });\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 { BaseNotification, IClosableNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\nexport interface INotificationCloseButtonState {\n isClosed: boolean;\n}\n\nexport interface INotificationCloseButtonProps\n extends INotificationElementProps {}\n\n/**\n * Represents a close button for the notification which triggers notification.close().\n */\nexport class NotificationCloseButton extends BaseNotificationComponent<\n NotificationType,\n INotificationCloseButtonProps,\n INotificationCloseButtonState\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-close';\n\n public constructor(props: INotificationCloseButtonProps) {\n // Disable jest test coverage due to the issue in jest processing super calls.\n /* istanbul ignore next */\n super(props);\n this.state = {\n isClosed: false\n };\n }\n\n public render(): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Sends a message to close the notification.\n */\n private readonly _close: () => void = () => {\n this.props.notification.close();\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 { BaseNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Represents the component which composes the body of a notification.\n */\nexport class NotificationContent extends BaseNotificationComponent<\n NotificationType,\n INotificationElementProps\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-content';\n\n public constructor(props: INotificationElementProps) {\n // Disable jest test coverage due to the issue in jest processing super calls.\n /* istanbul ignore next */\n super(props);\n }\n\n public render(): React.ReactNode {\n return
{this.props.children}
;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RichTextComponent } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { BaseNotification, IDescriptiveNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Displays notification description lines.\n */\nexport class NotificationDescription<\n NotificationType extends BaseNotification & IDescriptiveNotification\n> extends BaseNotificationComponent> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-description';\n\n public constructor(props: INotificationElementProps) {\n // Disable jest test coverage due to the issue in jest processing super calls.\n /* istanbul ignore next */\n super(props);\n }\n\n public render(): React.ReactNode {\n if (!ArrayExtensions.hasElements(this.props.notification.descriptionLines)) {\n return null;\n }\n\n return (\n
\n {this.props.notification.descriptionLines.map((line, index) => {\n if (StringExtensions.isNullOrWhitespace(line.toString())) {\n return null;\n }\n return ;\n })}\n {this.props.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 * as React from 'react';\n\nimport { BaseNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Displays footer of the notification.\n * Usually footer is used for extra actions.\n */\nexport class NotificationFooter extends BaseNotificationComponent<\n NotificationType,\n INotificationElementProps\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-footer';\n\n public constructor(props: INotificationElementProps) {\n // Disable jest test coverage due to the issue in jest processing super calls.\n /* istanbul ignore next */\n super(props);\n }\n\n public render(): React.ReactNode {\n return
{this.props.children}
;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React, { ReactNode } from 'react';\n\nimport { BaseNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Displays header of the notification.\n * Usually header is used for displaying the title and close X button.\n */\nexport class NotificationHeader extends BaseNotificationComponent<\n NotificationType,\n INotificationElementProps\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-header';\n\n public constructor(props: INotificationElementProps) {\n // Disable jest test coverage due to the issue in jest processing super calls.\n /* istanbul ignore next */\n super(props);\n }\n\n public render(): ReactNode {\n return
{this.props.children}
;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React, { ReactNode } from 'react';\n\nimport { BaseNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Represents the notification body which is displayed to the user.\n * It should include header, content, footer.\n */\nexport class NotificationInstance extends BaseNotificationComponent<\n NotificationType,\n INotificationElementProps\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-instance';\n\n public constructor(props: INotificationElementProps) {\n // Disable jest test coverage due to the issue in jest processing super calls.\n /* istanbul ignore next */\n super(props);\n }\n\n public render(): ReactNode {\n return
{this.props.children}
;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RichTextComponent } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { BaseNotification, ITitledNotification } from '../../notifications-data-instances';\nimport { BaseNotificationComponent, INotificationElementProps } from './base-notification-component';\n\n/**\n * Props for the notification title component.\n */\nexport interface INotificationTitleProps\n extends INotificationElementProps {\n /**\n * Represents a node which should be displayed before the title. Optional field.\n */\n preChildren?: React.ReactNode;\n\n /**\n * Represents a node which should be displayed after the title. Optional field.\n */\n postChildren?: React.ReactNode;\n}\n\n/**\n * Renders notification title.\n */\nexport class NotificationTitle extends BaseNotificationComponent<\n NotificationType,\n INotificationTitleProps\n> {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-title';\n\n public constructor(props: INotificationTitleProps) {\n // Disable jest test coverage due to the issue in jest processing super calls.\n /* istanbul ignore next */\n super(props);\n }\n\n public render(): React.ReactNode {\n return (\n
\n {this.props.preChildren}\n \n {this.props.postChildren}\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 { Dictionary } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { NotificationFeeds, NotificationFeedType } from '../notifications-manager/notification-feeds';\nimport { INotificationComponentsList } from './base-notification-component-list';\n\n/**\n * A notification list which is operated by notification manager.\n * It is responsible for rendering the received notifications.\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class NotificationComponentsListsManager {\n /**\n * Instances of the lists currently shown on the page.\n * Dictionary of lists by the feed.\n */\n private static readonly _instances: Dictionary = new Dictionary();\n\n /**\n * Retrieve the lists which are displayed currently on the page for the given feed.\n * @param {NotificationFeeds} [feed] The feed to filter the lists. Global feed by default.\n */\n public static getNotificationLists(feed: NotificationFeeds): INotificationComponentsList[] {\n return NotificationComponentsListsManager._instances.getValueWithDefaultValue(feed, []);\n }\n\n /**\n * Registers notification components list to listen to notification manager.\n * @param {INotificationComponentsList} notificationComponentsList The component which renders the notifications.\n */\n public static subscribe(notificationComponentsList: INotificationComponentsList): void {\n NotificationComponentsListsManager._instances\n .getValueWithDefaultValue(notificationComponentsList.feed, [])\n .push(notificationComponentsList);\n }\n\n /**\n * Removes the notification components list from the instances which listen to notification manager.\n * @param {INotificationComponentsList} notificationComponentsList The component which renders the notifications.\n */\n public static unsubscribe(notificationComponentsList: INotificationComponentsList): void {\n const instances = NotificationComponentsListsManager._instances.getValueWithDefaultValue(notificationComponentsList.feed, []);\n const newInstances = instances.filter(list => list !== notificationComponentsList);\n NotificationComponentsListsManager._instances.setValue(notificationComponentsList.feed, newInstances);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nimport { ErrorNotification } from '../../notifications-data-instances/system-notifications';\nimport { INotificationCloseButtonProps } from '../base';\nimport { BaseNotificationComponent, INotificationProps } from '../base/base-notification-component';\nimport { SystemNotificationComponent } from './system-notification-component';\n\n/**\n * Props for error notification.\n */\nexport interface IErrorNotificationProps extends INotificationProps, INotificationCloseButtonProps {}\n\n/**\n * Component responsible for rendering an error notification.\n */\nexport class ErrorNotificationComponent extends BaseNotificationComponent {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-error';\n\n /**\n * Initializes the component with the given configuration.\n * @param {IErrorNotificationProps} props Configuration of the component.\n */\n public constructor(props: IErrorNotificationProps) {\n // Disable jest test coverage due to the issue in jest processing super calls.\n /* istanbul ignore next */\n super(props);\n }\n\n /**\n * Renders the given error notification.\n */\n public render(): React.ReactNode {\n return ;\n }\n}\n","import * as React from 'react';\nimport { ITheme, IStyle } from '../../Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\n\n/**\n * {@docCategory Spinner}\n */\nexport interface ISpinner {}\n\n/**\n * Spinner component props.\n * {@docCategory Spinner}\n */\nexport interface ISpinnerProps extends React.HTMLAttributes {\n /**\n * Optional callback to access the ISpinner interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject;\n\n /**\n * Deprecated and will be removed at \\>= 2.0.0. Use `SpinnerSize` instead.\n * @deprecated Use `SpinnerSize` instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n type?: SpinnerType;\n\n /**\n * The size of Spinner to render. \\{ extraSmall, small, medium, large \\}\n * @defaultvalue SpinnerType.medium\n */\n size?: SpinnerSize;\n\n /**\n * The label to show next to the Spinner. Label updates will be announced to the screen readers.\n * Use ariaLive to control politeness level.\n */\n label?: string;\n\n /**\n * Additional CSS class(es) to apply to the Spinner.\n */\n className?: string;\n\n /**\n * Politeness setting for label update announcement.\n * @defaultvalue polite\n */\n ariaLive?: 'assertive' | 'polite' | 'off';\n\n /**\n * Alternative status label for screen reader\n */\n ariaLabel?: string;\n\n /**\n * Theme (provided through customization.)\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject;\n\n /**\n * The position of the label in regards of the spinner animation.\n * @defaultvalue SpinnerLabelPosition.bottom\n */\n labelPosition?: SpinnerLabelPosition;\n}\n\n/**\n * Possible variations of the spinner circle size.\n * {@docCategory Spinner}\n */\nexport enum SpinnerSize {\n /**\n * 12px Spinner diameter\n */\n xSmall = 0,\n\n /**\n * 16px Spinner diameter\n */\n small = 1,\n\n /**\n * 20px Spinner diameter\n */\n medium = 2,\n\n /**\n * 28px Spinner diameter\n */\n large = 3,\n}\n\n/**\n * Possible locations of the label in regards to the spinner\n * @defaultvalue bottom\n * {@docCategory Spinner}\n */\nexport type SpinnerLabelPosition = 'top' | 'right' | 'bottom' | 'left';\n\n/**\n * Deprecated at v2.0.0, use `SpinnerSize` instead.\n * @deprecated Use `SpinnerSize` instead.\n * {@docCategory Spinner}\n */\nexport enum SpinnerType {\n /**\n * Deprecated and will be removed at \\>= 2.0.0. Use `SpinnerSize.medium` instead.\n * @deprecated Use `SpinnerSize.medium` instead.\n */\n normal = 0,\n\n /**\n * Deprecated and will be removed at \\>= 2.0.0. Use `SpinnerSize.large` instead.\n * @deprecated Use `SpinnerSize.large` instead.\n */\n large = 1,\n}\n\n/**\n * The props needed to construct styles.\n * This represents the simplified set of immutable things which control the class names.\n * {@docCategory Spinner}\n */\nexport interface ISpinnerStyleProps {\n /** Theme provided by High-Order Component. */\n theme: ITheme;\n\n /** Size of the spinner animation. */\n size?: SpinnerSize;\n\n /** CSS class name for the component attached to the root stylable area. */\n className?: string;\n\n /** Position of the label in regards to the spinner animation. */\n labelPosition?: SpinnerLabelPosition;\n}\n\n/**\n * Represents the stylable areas of the control.\n * {@docCategory Spinner}\n */\nexport interface ISpinnerStyles {\n /** Styles for the root element. Refers to the wrapper containing both the circle and the label. */\n root?: IStyle;\n\n /** Styles for the spinner circle animation. */\n circle?: IStyle;\n\n /** Styles for the label accompanying the circle. */\n label?: IStyle;\n\n /** Styles for the hidden helper element to aid with screen readers. */\n screenReaderText?: IStyle;\n}\n","import * as React from 'react';\nimport { ISpinnerProps, ISpinnerStyleProps, ISpinnerStyles, SpinnerType, SpinnerSize } from './Spinner.types';\nimport { classNamesFunction, DelayedRender, getNativeProps, divProperties } from '../../Utilities';\n\nconst getClassNames = classNamesFunction();\n\nexport class SpinnerBase extends React.Component {\n public static defaultProps: ISpinnerProps = {\n size: SpinnerSize.medium,\n ariaLive: 'polite',\n labelPosition: 'bottom',\n };\n\n public render() {\n // eslint-disable-next-line deprecation/deprecation\n const { type, size, ariaLabel, ariaLive, styles, label, theme, className, labelPosition } = this.props;\n const statusMessage = ariaLabel;\n const nativeProps = getNativeProps>(this.props, divProperties, ['size']);\n\n // SpinnerType is deprecated. If someone is still using this property, rather than putting the SpinnerType into the\n // ISpinnerStyleProps, we'll map SpinnerType to its equivalent SpinnerSize and pass that in. Once SpinnerType\n // finally goes away we should delete this.\n let styleSize = size;\n if (styleSize === undefined && type !== undefined) {\n // eslint-disable-next-line deprecation/deprecation\n styleSize = type === SpinnerType.large ? SpinnerSize.large : SpinnerSize.medium;\n }\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n size: styleSize,\n className,\n labelPosition,\n });\n\n return (\n
\n
\n {label &&
{label}
}\n {statusMessage && (\n
\n \n
{statusMessage}
\n
\n
\n )}\n
\n );\n }\n}\n","import { ISpinnerStyleProps, ISpinnerStyles, SpinnerSize } from './Spinner.types';\nimport {\n hiddenContentStyle,\n keyframes,\n HighContrastSelector,\n getGlobalClassNames,\n getEdgeChromiumNoHighContrastAdjustSelector,\n} from '../../Styling';\nimport { memoizeFunction } from '../../Utilities';\n\nconst GlobalClassNames = {\n root: 'ms-Spinner',\n circle: 'ms-Spinner-circle',\n label: 'ms-Spinner-label',\n};\n\nconst spinAnimation = memoizeFunction(() =>\n keyframes({\n '0%': {\n transform: 'rotate(0deg)',\n },\n '100%': {\n transform: 'rotate(360deg)',\n },\n }),\n);\n\nexport const getStyles = (props: ISpinnerStyleProps): ISpinnerStyles => {\n const { theme, size, className, labelPosition } = props;\n\n const { palette } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n labelPosition === 'top' && {\n flexDirection: 'column-reverse',\n },\n labelPosition === 'right' && {\n flexDirection: 'row',\n },\n labelPosition === 'left' && {\n flexDirection: 'row-reverse',\n },\n className,\n ],\n circle: [\n classNames.circle,\n {\n boxSizing: 'border-box',\n borderRadius: '50%',\n border: '1.5px solid ' + palette.themeLight,\n borderTopColor: palette.themePrimary,\n animationName: spinAnimation(),\n animationDuration: '1.3s',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'cubic-bezier(.53,.21,.29,.67)',\n selectors: {\n [HighContrastSelector]: {\n borderTopColor: 'Highlight',\n },\n ...getEdgeChromiumNoHighContrastAdjustSelector(),\n },\n },\n size === SpinnerSize.xSmall && [\n 'ms-Spinner--xSmall',\n {\n width: 12,\n height: 12,\n },\n ],\n size === SpinnerSize.small && [\n 'ms-Spinner--small',\n {\n width: 16,\n height: 16,\n },\n ],\n size === SpinnerSize.medium && [\n 'ms-Spinner--medium',\n {\n width: 20,\n height: 20,\n },\n ],\n size === SpinnerSize.large && [\n 'ms-Spinner--large',\n {\n width: 28,\n height: 28,\n },\n ],\n ],\n label: [\n classNames.label,\n theme.fonts.small,\n {\n color: palette.themePrimary,\n margin: '8px 0 0',\n textAlign: 'center',\n },\n labelPosition === 'top' && {\n margin: '0 0 8px',\n },\n labelPosition === 'right' && {\n margin: '0 0 0 8px',\n },\n labelPosition === 'left' && {\n margin: '0 8px 0 0',\n },\n ],\n screenReaderText: hiddenContentStyle,\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { SpinnerBase } from './Spinner.base';\nimport { getStyles } from './Spinner.styles';\nimport { ISpinnerProps, ISpinnerStyles, ISpinnerStyleProps } from './Spinner.types';\n\nexport const Spinner: React.FunctionComponent = styled<\n ISpinnerProps,\n ISpinnerStyleProps,\n ISpinnerStyles\n>(SpinnerBase, getStyles, undefined, { scope: 'Spinner' });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Spinner } from 'office-ui-fabric-react';\nimport React from 'react';\n\nimport { LoadingNotification } from '../../notifications-data-instances/system-notifications';\nimport {\n DismissibleNotificationWrapper,\n NotificationContent,\n NotificationDescription,\n NotificationHeader,\n NotificationInstance,\n NotificationTitle\n} from '../base';\nimport { BaseNotificationComponent, INotificationProps } from '../base/base-notification-component';\n\n/**\n * Props for loading notification.\n */\nexport interface ILoadingNotificationProps extends INotificationProps {}\n\n/**\n * Component responsible for rendering a loading notification.\n */\nexport class LoadingNotificationComponent extends BaseNotificationComponent {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-loading';\n\n /**\n * Initializes the component with the given configuration.\n * @param {ILoadingNotificationProps} props Configuration of the component.\n */\n public constructor(props: ILoadingNotificationProps) {\n super(props);\n }\n\n /**\n * Renders the given notification.\n */\n public render(): React.ReactNode {\n return (\n
\n \n \n \n \n \n {ArrayExtensions.hasElements(this.props.notification.descriptionLines) ? (\n \n \n \n ) : null}\n \n \n
\n );\n }\n\n /**\n * Renders a loading spinner.\n * @returns Spinner.\n */\n private readonly _renderSpinner = () => {\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 React from 'react';\n\nimport { SuccessNotification } from '../../notifications-data-instances/system-notifications';\nimport { INotificationCloseButtonProps } from '../base';\nimport { BaseNotificationComponent, INotificationProps } from '../base/base-notification-component';\nimport { SystemNotificationComponent } from './system-notification-component';\n\n/**\n * Props for success notification.\n */\nexport interface ISuccessNotificationProps\n extends INotificationProps,\n INotificationCloseButtonProps {}\n\n/**\n * Component responsible for rendering a success notification.\n */\nexport class SuccessNotificationComponent extends BaseNotificationComponent {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-success';\n\n /**\n * Initializes the component with the given configuration.\n * @param {ISuccessNotificationProps} props Configuration of the component.\n */\n public constructor(props: ISuccessNotificationProps) {\n // Disable jest test coverage due to the issue in jest processing super calls.\n /* istanbul ignore next */\n super(props);\n }\n\n /**\n * Renders the given success notification.\n */\n public render(): React.ReactNode {\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { SystemNotification } from '../../notifications-data-instances/system-notifications';\nimport {\n ClosableNotificationWrapper,\n DismissibleNotificationWrapper,\n INotificationCloseButtonProps,\n NotificationCloseButton,\n NotificationContent,\n NotificationDescription,\n NotificationHeader,\n NotificationInstance,\n NotificationTitle\n} from '../base';\nimport { BaseNotificationComponent, INotificationElementProps } from '../base/base-notification-component';\n\n/**\n * Props for system notification.\n */\nexport interface ISystemNotificationProps\n extends INotificationElementProps,\n INotificationCloseButtonProps {\n /**\n * The class for the styles.\n */\n className: string;\n}\n\n/**\n * Component responsible for rendering a system notification.\n */\nexport class SystemNotificationComponent extends BaseNotificationComponent {\n /**\n * Initializes the component with the given configuration.\n * @param {ISuccessNotificationProps} props Configuration of the component.\n */\n public constructor(props: ISystemNotificationProps) {\n super(props);\n }\n\n /**\n * Renders the given success notification.\n */\n public render(): React.ReactNode {\n return (\n
\n \n \n \n \n \n \n \n {ArrayExtensions.hasElements(this.props.notification.descriptionLines) ? (\n \n \n \n ) : null}\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 React from 'react';\n\nimport { WarningNotification } from '../../notifications-data-instances/system-notifications/warning-notification';\nimport { INotificationCloseButtonProps } from '../base';\nimport { BaseNotificationComponent, INotificationProps } from '../base/base-notification-component';\nimport { SystemNotificationComponent } from './system-notification-component';\n\n/**\n * Component responsible for rendering a warning notification.\n */\nexport interface IWarningNotificationProps\n extends INotificationProps,\n INotificationCloseButtonProps {}\n\n/**\n * Component responsible for rendering a success notification.\n */\nexport class WarningNotificationComponent extends BaseNotificationComponent {\n /**\n * The class for the styles.\n */\n public static readonly className: string = 'msc-notification-warning';\n\n /**\n * Initializes the component with the given configuration.\n * @param {ISuccessNotificationProps} props Configuration of the component.\n */\n public constructor(props: IWarningNotificationProps) {\n // Disable jest test coverage due to the issue in jest processing super calls.\n /* istanbul ignore next */\n super(props);\n }\n\n /**\n * Renders the given success notification.\n */\n public render(): React.ReactNode {\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 { Dictionary, Event, Random } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { INotificationProps } from '../../notification-components/base/base-notification-component';\nimport { NotificationEvents } from './events';\n\n/**\n * Represents a react component class which renders a notification.\n */\nexport type NotificationComponentClass = React.ComponentClass, {}>;\n\n/**\n * Represents base functionality of a notification.\n */\nexport abstract class BaseNotification {\n /**\n * Notification events for the current notification.\n */\n public readonly events: Dictionary;\n\n /**\n * The local date set when the instance was created.\n */\n public readonly receivedDate: Date;\n\n /**\n * Unique identifier of the notification.\n * Represents a GUID that is automatically generated during the object initialization.\n */\n public readonly id: string;\n\n /**\n * The react class which is responsible for rendering the current instance of notification.\n * Should be set using @withNotificationComponent decorator.\n */\n public readonly notificationComponentConstructor!: NotificationComponentClass;\n\n /**\n * Specifies if the notification instance was removed from a notification list.\n */\n public get isRemoved(): boolean {\n return this._isRemoved;\n }\n\n /**\n * Specifies if the notification instance was removed from a notification list.\n */\n protected _isRemoved: boolean;\n\n /**\n * Initializes a notification with base information such as id, events, date when initialized.\n */\n public constructor() {\n this.receivedDate = new Date();\n this._isRemoved = false;\n this.events = new Dictionary({ key: NotificationEvents.RemovedFromList, value: new Event() });\n this.id = `Notification-${Random.Guid.generateGuid()}`;\n }\n\n /**\n * Updates the notification instance when it's removed from a notification list.\n * Should be called from a notification component once the notification can be disposed.\n */\n public remove(): void {\n this._isRemoved = true;\n this.events.getValue(NotificationEvents.RemovedFromList)?.trigger();\n this._dispose();\n }\n\n /**\n * Unsubscribes given instance from all the events for the notification.\n * @param {string} instanceId Unique id which represents the event handler.\n * @remarks Does nothing in case the instance was not subscribed to any event.\n */\n public unsubscribeFromEvents(instanceId: string): void {\n this.events.getValues().forEach(event => {\n event.unsubscribe(instanceId);\n });\n }\n\n /**\n * Disposes the events by unsubscribing all members.\n */\n protected _dispose(): void {\n this.events.getValues().forEach(event => {\n event.unsubscribeAll();\n });\n this.events.clear();\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Event } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { BaseNotification } from './base-notification';\nimport { NotificationEvents } from './events';\n\n/**\n * Specifies the timeouts in milliseconds used for the dismissing.\n */\nexport enum DismissTimeout {\n /**\n * Default timeout which should be used for most of the notification.\n */\n Default = 10_000\n}\n\n/**\n * Represents a notification which can be automatically dismissed.\n * @remark Dismissing means automatically hiding the notification after some specific delay.\n */\nexport abstract class DismissibleNotification extends BaseNotification {\n /**\n * Shows that the notification is in progress of dismissing when dismissing animation is in progress.\n * @remark The process can be prevented by hovering on a notification.\n */\n public get isDismissing(): boolean {\n return this._isDismissing;\n }\n\n /**\n * Shows that the notification is fully dismissed and is hidden to user now.\n * The notification can be removed from the list and disposed.\n */\n public get isDismissed(): boolean {\n return this._isDismissed;\n }\n\n /**\n * Specifies the delay in milliseconds for the notification.\n * @remarks Using `DismissTimeout` is preferable.\n */\n public readonly autoDismissTimeout: DismissTimeout | number | null;\n\n /**\n * Specifies if the dismissing should be delayed (the timer should be reset) when user hovers on the notification.\n * True by default. Use false when notification should be dismissed regardless if user wants to interact with it or not (e.g. For limited time offers).\n */\n public readonly shouldResetOnHover: boolean;\n\n /**\n * Shows that the notification is in progress of dismissing when dismissing animation is in progress.\n * @remark The process can be prevented by hovering on a notification.\n */\n protected _isDismissing: boolean;\n\n /**\n * Shows that the notification is fully dismissed and is hidden to user now.\n * The notification can be removed from the list and disposed.\n */\n protected _isDismissed: boolean;\n\n /**\n * Initializes events and sets the delays for the dismissing.\n * @param {DismissTimeout | number} autoDismissTimeout The delay in milliseconds after which the notification should start play the hiding animation.\n * By default refers to `DismissTimeout.Default`.\n * Prefer using `DismissTimeout` than specifying the number.\n * @param {boolean} shouldResetOnHover Flag which specifies if the dismissing should be delayed (the timer should be reset) when user hovers on the notification.\n * True by default. Use false when notification should be dismissed regardless if user wants to interact with it or not (e.g. for limited time offers).\n */\n public constructor(autoDismissTimeout: DismissTimeout | number | null = DismissTimeout.Default, shouldResetOnHover: boolean = true) {\n if (autoDismissTimeout === null && shouldResetOnHover) {\n throw new Error(\n 'Invalid parameters passed for dismissible notification. shouldResetOnHover = true is incompatible with autoDismissTimeout = null.'\n );\n }\n\n super();\n\n this.autoDismissTimeout = autoDismissTimeout;\n this.shouldResetOnHover = shouldResetOnHover;\n\n this._isDismissed = false;\n this._isDismissing = false;\n\n this.events.setValue(NotificationEvents.StartDismissing, new Event());\n this.events.setValue(NotificationEvents.PreventDismissing, new Event());\n this.events.setValue(NotificationEvents.FinishDismissing, new Event());\n }\n\n /**\n * Starts dismissing process by updating the `isDismissing` field and triggering the start dismissing event.\n */\n public startDismissing(): void {\n this._isDismissing = true;\n this.events.getValue(NotificationEvents.StartDismissing)?.trigger();\n }\n\n /**\n * Prevents dismissing process by updating the `isDismissing` field and triggering the prevent dismissing event.\n */\n public preventDismissing(): void {\n this._isDismissing = false;\n this.events.getValue(NotificationEvents.PreventDismissing)?.trigger();\n }\n\n /**\n * Finishes dismissing process by updating the `isDismissing` and `isDismissed` fields,\n * triggers the finish dismissing event,\n * removes the notification from the list as it should be hidden already.\n */\n public finishDismissing(): void {\n this._isDismissing = false;\n this._isDismissed = true;\n this.events.getValue(NotificationEvents.FinishDismissing)?.trigger();\n this.remove();\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Enum with the possible notification UI events.\n */\nexport enum NotificationEvents {\n Close = 'Close',\n StartDismissing = 'StartDismissing',\n FinishDismissing = 'FinishDismissing',\n PreventDismissing = 'PreventDismissing',\n RemovedFromList = 'RemovedFromList'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INotificationProps } from '../../notification-components';\nimport { BaseNotification } from './base-notification';\n\n/**\n * Decorator which should be used to specify the react component class for a notification data instances.\n * @param {React.ComponentClass} componentClass The component class responsible for rendering all the data instances of this notification class.\n */\nexport const withNotificationComponent = <\n NotificationType extends BaseNotification,\n PropsType extends INotificationProps,\n StateType extends {}\n>(\n componentClass: React.ComponentClass\n) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return {}>(constructor: T) => {\n return class extends constructor {\n public readonly notificationComponentConstructor: React.ComponentClass = componentClass;\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 { RichText } from '@msdyn365-commerce/core';\nimport { Event, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { DismissibleNotification, IClosableNotification, IDescriptiveNotification, ITitledNotification, NotificationEvents } from '../base';\n\n/**\n * Represents a system notification data instance.\n * By default, all system notification should have a title, be closable, auto-dismissible.\n * You can specify some optional description text for the main message.\n */\nexport abstract class SystemNotification extends DismissibleNotification\n implements ITitledNotification, IDescriptiveNotification, IClosableNotification {\n /**\n * Aria label which should be used for the close button. Should be localized.\n * @see IClosableNotification\n */\n public readonly closeAriaLabel: string;\n\n /**\n * Specifies if the notification is closed or not. True if it's closed, false otherwise.\n * @remark Use only to get information about the 'close' event, dismissible notifications do not use this field.\n * @see IClosableNotification\n */\n public isClosed: boolean;\n\n /**\n * The text with the title of notification. The text should be localized.\n * @see ITitledNotification\n */\n public readonly title: RichText;\n\n /**\n * The lines of text which are displayed to user. The text should be localized. Empty by default.\n * @see IDescriptiveNotification\n */\n public readonly descriptionLines: RichText[];\n\n /**\n * Initializes system notification with the given data.\n * @param {string} title The text with the title of notification. The text should be localized.\n * @param {string} closeAriaLabel Aria label which should be used for the close button. Should be localized.\n * @param {(string | undefined)[]} [descriptionLines] Description for the notification. Optional parameter.\n * The data will be filtered to include only non-null/non-whitespace text.\n */\n public constructor(title: RichText, closeAriaLabel: string, descriptionLines?: (RichText | undefined)[]) {\n super();\n\n this.title = title;\n this.closeAriaLabel = closeAriaLabel;\n this.descriptionLines = (\n (descriptionLines ?? []).filter(value => !StringExtensions.isNullOrWhitespace(value?.toString()))\n );\n this.isClosed = false;\n\n this.events.setValue(NotificationEvents.Close, new Event());\n }\n\n /**\n * Triggers close event and marks that the notification is closed now.\n * Implementation should modify the `isClosed` field first and then trigger the `NotificationEvents.Close` event.\n * @see IClosableNotification\n */\n public close(): void {\n this.isClosed = true;\n this.events.getValue(NotificationEvents.Close)?.trigger();\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ErrorNotificationComponent } from '../../notification-components/system-notifications/error-notification-component';\nimport { withNotificationComponent } from '../base';\nimport { SystemNotification } from './system-notification';\n\n/**\n * Represents an error notification.\n * Use this notification when some flow fails and you want to display a simple message to the user.\n * This is one of the types of system notifications.\n */\n@withNotificationComponent(ErrorNotificationComponent)\nexport class ErrorNotification extends SystemNotification {}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RichText } from '@msdyn365-commerce/core';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { LoadingNotificationComponent } from '../../notification-components/system-notifications/loading-notification-component';\nimport { DismissibleNotification, IDescriptiveNotification, ITitledNotification, withNotificationComponent } from '../base';\n\n/**\n * Represents a loading notification.\n * Use this notification when a process takes some time to be completed.\n * This type of notification should be used to show the user that the flow is in process.\n * @remark Do not use the notification for quick actions.\n */\n@withNotificationComponent(LoadingNotificationComponent)\nexport class LoadingNotification extends DismissibleNotification implements ITitledNotification, IDescriptiveNotification {\n /**\n * The text with the title of notification. The text should be localized.\n * @see ITitledNotification\n */\n public readonly title: RichText;\n\n /**\n * The lines of text which are displayed to user. The text should be localized. Empty by default.\n * @see IDescriptiveNotification\n */\n public readonly descriptionLines: RichText[];\n\n /**\n * Represents loading state when some flow is in progress.\n */\n public get isLoading(): boolean {\n return this._isLoading;\n }\n\n /**\n * Represents loading state when some flow is in progress.\n */\n private _isLoading: boolean;\n\n /**\n * Initializes system notification with the given data.\n * @param {string} title The text with the title of notification. The text should be localized.\n * @param {string} closeAriaLabel Aria label which should be used for the close button. Should be localized.\n * @param {(string | undefined)[]} [descriptionLines] Description for the notification. Optional parameter.\n * The data will be filtered to include only non-null/non-whitespace text.\n */\n public constructor(title: RichText, descriptionLines?: (RichText | undefined)[]) {\n super(null, false);\n\n this._isLoading = true;\n this.title = title;\n this.descriptionLines = (\n (descriptionLines ?? []).filter(value => !StringExtensions.isNullOrWhitespace(value?.toString()))\n );\n }\n\n /**\n * Tells notification instance that the loading is completed.\n */\n public finishLoading(): void {\n this._isLoading = false;\n this.startDismissing();\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { SuccessNotificationComponent } from '../../notification-components/system-notifications/success-notification-component';\nimport { withNotificationComponent } from '../base';\nimport { SystemNotification } from './system-notification';\n\n/**\n * Represents a success notification.\n * Use this notification for the successful scenarios when you want to display a simple message to the user.\n * This is one of the types of system notifications.\n */\n@withNotificationComponent(SuccessNotificationComponent)\nexport class SuccessNotification extends SystemNotification {}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { WarningNotificationComponent } from '../../notification-components/system-notifications/warning-notification-component';\nimport { withNotificationComponent } from '../base';\nimport { SystemNotification } from './system-notification';\n\n/**\n * Represents a warning notification.\n * Use this notification when you want to provide some additional information or hints to the user.\n * For the success or error scenarios, please use `SuccessNotification` or `ErrorNotification` instead.\n * This is one of the types of system notifications.\n */\n@withNotificationComponent(WarningNotificationComponent)\nexport class WarningNotification extends SystemNotification {}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Specifies different feeds for the notification lists.\n * Denotes the purpose of a notification list and what kind of notifications should be passed to the list.\n * By default is global (the global notification lists which is used to show most notifications).\n */\nexport enum NotificationFeeds {\n Global = 'global'\n}\n\n/**\n * Represents a type of each notification feed. Is used for notification lists components.\n * @see NotificationFeeds\n */\nexport type NotificationFeedType = string;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, Event } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { INotificationComponentType } from '../notification-components/notification-component-type';\nimport { NotificationComponentsListsManager } from '../notification-components/notification-components-lists-manager';\nimport { BaseNotification, NotificationComponentClass } from '../notifications-data-instances';\nimport { NotificationFeeds } from './notification-feeds';\n\n/**\n * Notification manager is a singleton.\n * It is responsible for receiving a notification,\n * retrieving notification component class,\n * and passing the component class to the notification components lists.\n * @see NotificationComponentsList which renders the list of notifications.\n */\nexport class NotificationsManager {\n /**\n * Singleton global instance of the notification manager.\n */\n private static _applicationNotificationManager?: NotificationsManager;\n\n /**\n * Event which is triggered after the notification was added to the lists.\n * @see addNotification method.\n * @remark is not triggered in case of any errors.\n */\n public readonly notificationAddedEvent: Event;\n\n /**\n * Retrieves global singleton instance of the notifications manager.\n * @returns {NotificationsManager} Instance of the manager which is used throughout the whole application.\n */\n public static instance(): NotificationsManager {\n if (!this._applicationNotificationManager) {\n this._applicationNotificationManager = new NotificationsManager();\n }\n\n return this._applicationNotificationManager;\n }\n\n /**\n * Adds given notifications to the notification component lists.\n * It receives a notification, retrieves notification component class,\n * and passes the component class to the notification components lists.\n * @see NotificationComponentsList which renders the list of notifications.\n * Then it triggers the notification added event.\n * @remark In case of any errors, suppress the error and write it in the console.\n * @param {NotificationType} notification Notification instance with the data.\n * @param {NotificationFeeds} feed The configuration of the notification component list. By default is global.\n */\n public addNotification(\n notification: NotificationType,\n feed: NotificationFeeds = NotificationFeeds.Global\n ): void {\n const component = this._getNotificationComponent(notification);\n\n try {\n const componentType: INotificationComponentType = {\n componentClass: component,\n props: {\n notification\n }\n };\n const lists = NotificationComponentsListsManager.getNotificationLists(feed);\n\n if (!ArrayExtensions.hasElements(lists)) {\n notification.remove();\n return;\n }\n\n lists.forEach(componentManager => {\n componentManager.addNotificationComponent(componentType);\n });\n\n this.notificationAddedEvent.trigger();\n } catch (error) {\n console.error('Error while adding a notification');\n console.error(notification);\n console.error(error);\n }\n }\n\n /**\n * Initializes the instance with the notification event.\n */\n private constructor() {\n this.notificationAddedEvent = new Event();\n }\n\n /**\n * Retrieves the component responsible for rendering the given notification.\n * @param {NotificationType} notification The data instance of the notification which should be added.\n * @returns {NotificationComponentClass} The react class which should render the given notification.\n */\n private _getNotificationComponent(\n notification: NotificationType\n ): NotificationComponentClass {\n const componentClass = notification.notificationComponentConstructor;\n if (!componentClass) {\n const notificationName = (notification).constructor.name;\n throw new Error(\n `No notification component found for the given notification ${notificationName}. ` +\n \"Please use 'withNotificationComponent' decorator on the notification and specify the type to use\"\n );\n }\n\n return componentClass;\n }\n}\n"],"names":["BaseNotificationComponent","_super","props","call","__extends","React","ClosableNotificationWrapper","_this","_instanceId","Random","Guid","generateGuid","state","isClosed","_close","bind","_unsubscribeFromEvents","prototype","componentDidMount","this","_subscribeToEvents","notification","componentDidUpdate","previousProps","componentWillUnmount","render","className","classnames","children","events","getValue","NotificationEvents","Close","subscribe","instanceId","handler","RemovedFromList","unsubscribeFromEvents","setState","setTimeout","remove","DismissibleNotificationWrapper","isDismissing","isDismissed","_setTimer","_clearTimer","_startDismissing","_preventDismissing","_preventDismissingHandler","_finishDismissing","_updateState","autoDismissTimeout","onMouseEnter","shouldResetOnHover","undefined","onMouseLeave","onAnimationEnd","StartDismissing","PreventDismissing","FinishDismissing","_timer","ObjectExtensions","isNullOrUndefined","clearTimeout","startDismissing","preventDismissing","finishDismissing","NotificationCloseButton","close","type","onClick","closeAriaLabel","NotificationContent","NotificationDescription","ArrayExtensions","hasElements","descriptionLines","map","line","index","StringExtensions","isNullOrWhitespace","toString","RichTextComponent","key","text","NotificationFooter","NotificationHeader","NotificationInstance","NotificationTitle","preChildren","title","postChildren","NotificationComponentsListsManager","getNotificationLists","feed","_instances","getValueWithDefaultValue","notificationComponentsList","push","unsubscribe","newInstances","filter","list","setValue","Dictionary","ErrorNotificationComponent","SystemNotificationComponent","SpinnerSize","SpinnerType","getClassNames","classNamesFunction","size","ariaLabel","ariaLive","styles","label","theme","labelPosition","statusMessage","nativeProps","styleSize","large","medium","classNames","root","circle","role","DelayedRender","screenReaderText","defaultProps","GlobalClassNames","spinAnimation","memoize","transform","Spinner","styled","SpinnerBase","palette","display","flexDirection","alignItems","justifyContent","boxSizing","borderRadius","border","themeLight","borderTopColor","themePrimary","animationName","animationDuration","animationIterationCount","animationTimingFunction","selectors","xSmall","width","height","small","fonts","color","margin","textAlign","scope","LoadingNotificationComponent","_renderSpinner","SuccessNotificationComponent","WarningNotificationComponent","BaseNotification","receivedDate","Date","_isRemoved","value","Event","id","Object","defineProperty","_a","trigger","_dispose","getValues","forEach","event","unsubscribeAll","clear","DismissTimeout","DismissibleNotification","Default","Error","_isDismissed","_isDismissing","withNotificationComponent","componentClass","constructor","class_1","apply","arguments","notificationComponentConstructor","SystemNotification","ErrorNotification","__decorate","LoadingNotification","_isLoading","finishLoading","SuccessNotification","WarningNotification","NotificationFeeds","NotificationsManager","notificationAddedEvent","instance","_applicationNotificationManager","addNotification","Global","component","_getNotificationComponent","componentType_1","lists","componentManager","addNotificationComponent","error","console","notificationName","name"],"sourceRoot":""}