@itwin/appui-react 3.3.0-dev.71 → 3.3.0-dev.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/appui-react/messages/ActivityMessage.d.ts +26 -0
- package/lib/cjs/appui-react/messages/ActivityMessage.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/ActivityMessage.js +64 -5
- package/lib/cjs/appui-react/messages/ActivityMessage.js.map +1 -1
- package/lib/cjs/appui-react/messages/ActivityMessagePopup.d.ts +1 -1
- package/lib/cjs/appui-react/messages/ActivityMessagePopup.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/ActivityMessagePopup.js +3 -11
- package/lib/cjs/appui-react/messages/ActivityMessagePopup.js.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.d.ts +17 -0
- package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.js +44 -0
- package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/cjs/appui-react/messages/StatusMessageRenderer.d.ts +2 -1
- package/lib/cjs/appui-react/messages/StatusMessageRenderer.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/StatusMessageRenderer.js +33 -28
- package/lib/cjs/appui-react/messages/StatusMessageRenderer.js.map +1 -1
- package/lib/cjs/appui-react/messages/StatusMessagesContainer.d.ts +1 -0
- package/lib/cjs/appui-react/messages/StatusMessagesContainer.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/StatusMessagesContainer.js +1 -0
- package/lib/cjs/appui-react/messages/StatusMessagesContainer.js.map +1 -1
- package/lib/cjs/appui-react/messages/StickyMessage.d.ts +1 -0
- package/lib/cjs/appui-react/messages/StickyMessage.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/StickyMessage.js +8 -6
- package/lib/cjs/appui-react/messages/StickyMessage.js.map +1 -1
- package/lib/cjs/appui-react/messages/ToastMessage.d.ts +1 -0
- package/lib/cjs/appui-react/messages/ToastMessage.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/ToastMessage.js +7 -5
- package/lib/cjs/appui-react/messages/ToastMessage.js.map +1 -1
- package/lib/cjs/appui-react/messages/getToastCategory.d.ts +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBar.d.ts +2 -8
- package/lib/cjs/appui-react/statusbar/StatusBar.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBar.js +26 -24
- package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.js +1 -0
- package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
- package/lib/esm/appui-react/messages/ActivityMessage.d.ts +26 -0
- package/lib/esm/appui-react/messages/ActivityMessage.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/ActivityMessage.js +63 -7
- package/lib/esm/appui-react/messages/ActivityMessage.js.map +1 -1
- package/lib/esm/appui-react/messages/ActivityMessagePopup.d.ts +1 -1
- package/lib/esm/appui-react/messages/ActivityMessagePopup.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/ActivityMessagePopup.js +4 -12
- package/lib/esm/appui-react/messages/ActivityMessagePopup.js.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.d.ts +17 -0
- package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.js +44 -0
- package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/esm/appui-react/messages/StatusMessageRenderer.d.ts +2 -1
- package/lib/esm/appui-react/messages/StatusMessageRenderer.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/StatusMessageRenderer.js +33 -28
- package/lib/esm/appui-react/messages/StatusMessageRenderer.js.map +1 -1
- package/lib/esm/appui-react/messages/StatusMessagesContainer.d.ts +1 -0
- package/lib/esm/appui-react/messages/StatusMessagesContainer.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/StatusMessagesContainer.js +1 -0
- package/lib/esm/appui-react/messages/StatusMessagesContainer.js.map +1 -1
- package/lib/esm/appui-react/messages/StickyMessage.d.ts +1 -0
- package/lib/esm/appui-react/messages/StickyMessage.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/StickyMessage.js +9 -7
- package/lib/esm/appui-react/messages/StickyMessage.js.map +1 -1
- package/lib/esm/appui-react/messages/ToastMessage.d.ts +1 -0
- package/lib/esm/appui-react/messages/ToastMessage.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/ToastMessage.js +8 -6
- package/lib/esm/appui-react/messages/ToastMessage.js.map +1 -1
- package/lib/esm/appui-react/messages/getToastCategory.d.ts +1 -1
- package/lib/esm/appui-react/statusbar/StatusBar.d.ts +2 -8
- package/lib/esm/appui-react/statusbar/StatusBar.d.ts.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBar.js +26 -24
- package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.js +1 -0
- package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
- package/package.json +32 -32
|
@@ -82,6 +82,7 @@ class MessageCenterField extends React.Component {
|
|
|
82
82
|
componentDidMount() {
|
|
83
83
|
this._unloadMessagesUpdatedHandler = MessageManager_1.MessageManager.onMessagesUpdatedEvent.addListener(this._handleMessagesUpdatedEvent, this);
|
|
84
84
|
this._removeOpenMessagesCenterHandler = MessageManager_1.MessageManager.onOpenMessageCenterEvent.addListener(this._handleOpenMessageCenterEvent, this);
|
|
85
|
+
MessageManager_1.MessageManager.registerAnimateOutToElement(this._indicator.current);
|
|
85
86
|
}
|
|
86
87
|
/** @internal */
|
|
87
88
|
componentWillUnmount() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageCenter.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/MessageCenter.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { OutputMessagePriority } from \"@itwin/core-frontend\";\r\nimport { FooterPopup, MessageCenter, MessageCenterDialog, MessageCenterMessage, MessageCenterTab } from \"@itwin/appui-layout-react\";\r\nimport { MessageManager } from \"../messages/MessageManager\";\r\nimport { MessageSpan } from \"../messages/MessageSpan\";\r\nimport { NotifyMessageDetailsType } from \"../messages/ReactNotifyMessageDetails\";\r\nimport { StatusBarFieldId } from \"../statusbar/StatusBarWidgetControl\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { StatusFieldProps } from \"./StatusFieldProps\";\r\n\r\n/** Enum for the [[MessageCenterField]] active tab\r\n * @internal\r\n */\r\nenum MessageCenterActiveTab {\r\n AllMessages,\r\n Problems,\r\n}\r\n\r\n/** State for the [[MessageCenterField]] React component\r\n * @internal\r\n */\r\ninterface MessageCenterState {\r\n activeTab: MessageCenterActiveTab;\r\n target: HTMLDivElement | null;\r\n messageCount: number;\r\n openWidget: string | null;\r\n}\r\n\r\n/** Properties for withMessageCenterFieldProps HOC.\r\n * @public\r\n */\r\nexport interface MessageCenterFieldProps extends StatusFieldProps {\r\n /** Message center dialog target. */\r\n targetRef?: React.Ref<HTMLElement>;\r\n}\r\n\r\n/** Message Center Field React component.\r\n * @public\r\n */\r\nexport class MessageCenterField extends React.Component<MessageCenterFieldProps, MessageCenterState> {\r\n private _className: string;\r\n private _indicator = React.createRef<HTMLDivElement>();\r\n private _title = UiFramework.translate(\"messageCenter.messages\");\r\n private _unloadMessagesUpdatedHandler?: () => void;\r\n private _removeOpenMessagesCenterHandler?: () => void;\r\n\r\n constructor(p: MessageCenterFieldProps) {\r\n super(p);\r\n\r\n const instance = this.constructor;\r\n this._className = instance.name;\r\n\r\n this.state = {\r\n activeTab: MessageCenterActiveTab.AllMessages,\r\n target: null,\r\n messageCount: MessageManager.messages.length,\r\n // eslint-disable-next-line deprecation/deprecation\r\n openWidget: p.openWidget ?? null,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._unloadMessagesUpdatedHandler = MessageManager.onMessagesUpdatedEvent.addListener(this._handleMessagesUpdatedEvent, this);\r\n this._removeOpenMessagesCenterHandler = MessageManager.onOpenMessageCenterEvent.addListener(this._handleOpenMessageCenterEvent, this);\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n // istanbul ignore else\r\n if (this._unloadMessagesUpdatedHandler) {\r\n this._unloadMessagesUpdatedHandler();\r\n this._unloadMessagesUpdatedHandler = undefined;\r\n }\r\n // istanbul ignore else\r\n if (this._removeOpenMessagesCenterHandler) {\r\n this._removeOpenMessagesCenterHandler();\r\n this._removeOpenMessagesCenterHandler = undefined;\r\n }\r\n }\r\n\r\n private _handleMessagesUpdatedEvent = () => {\r\n // istanbul ignore else\r\n if (this._unloadMessagesUpdatedHandler)\r\n this.setState({ messageCount: MessageManager.messages.length });\r\n };\r\n\r\n private _handleOpenMessageCenterEvent = () => {\r\n this.setOpenWidget(this._className);\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n const tooltip = `${this.state.messageCount} ${this._title}`;\r\n const divStyle = { ...this.props.style, height: \"100%\" };\r\n const footerMessages = (\r\n <>\r\n <div\r\n className={this.props.className}\r\n style={divStyle}\r\n title={tooltip}\r\n ref={this._handleTargetRef}\r\n >\r\n <MessageCenter\r\n indicatorRef={this._indicator}\r\n isInFooterMode={this.props.isInFooterMode}\r\n label={this.props.isInFooterMode ? this._title : undefined}\r\n onClick={this._handleMessageIndicatorClick}\r\n >\r\n {this.state.messageCount.toString()}\r\n </MessageCenter>\r\n </div>\r\n <FooterPopup\r\n // eslint-disable-next-line deprecation/deprecation\r\n isOpen={(this.props.openWidget ?? this.state.openWidget) === this._className}\r\n onClose={this._handleClose}\r\n onOutsideClick={this._handleOutsideClick}\r\n target={this.state.target}\r\n >\r\n <MessageCenterDialog\r\n prompt={UiFramework.translate(\"messageCenter.prompt\")}\r\n tabs={\r\n <>\r\n <MessageCenterTab\r\n isActive={this.state.activeTab === MessageCenterActiveTab.AllMessages}\r\n onClick={() => this._changeActiveTab(MessageCenterActiveTab.AllMessages)}\r\n >\r\n {UiFramework.translate(\"messageCenter.all\")}\r\n </MessageCenterTab>\r\n <MessageCenterTab\r\n isActive={this.state.activeTab === MessageCenterActiveTab.Problems}\r\n onClick={() => this._changeActiveTab(MessageCenterActiveTab.Problems)}\r\n >\r\n {UiFramework.translate(\"messageCenter.errors\")}\r\n </MessageCenterTab>\r\n </>\r\n }\r\n title={this._title}\r\n >\r\n {this.getMessages()}\r\n </MessageCenterDialog>\r\n </FooterPopup>\r\n </>\r\n );\r\n\r\n return footerMessages;\r\n }\r\n\r\n private _handleTargetRef = (target: HTMLDivElement | null) => {\r\n if (typeof this.props.targetRef === \"function\")\r\n this.props.targetRef(target);\r\n else if (this.props.targetRef)\r\n (this.props.targetRef as React.MutableRefObject<HTMLElement | null>).current = target;\r\n this.setState({ target });\r\n };\r\n\r\n private _handleClose = () => {\r\n this.setOpenWidget(null);\r\n };\r\n\r\n private _handleOutsideClick = (e: MouseEvent) => {\r\n if (!this._indicator.current ||\r\n !(e.target instanceof Node) ||\r\n this._indicator.current.contains(e.target))\r\n return;\r\n\r\n this._handleClose();\r\n };\r\n\r\n private _handleMessageIndicatorClick = () => {\r\n // eslint-disable-next-line deprecation/deprecation\r\n const isOpen = (this.props.openWidget ?? this.state.openWidget) === this._className;\r\n if (isOpen)\r\n this.setOpenWidget(null);\r\n else\r\n this.setOpenWidget(this._className);\r\n };\r\n\r\n private _changeActiveTab = (tab: MessageCenterActiveTab) => {\r\n this.setState({ activeTab: tab });\r\n };\r\n\r\n private getMessages(): React.ReactChild[] {\r\n const messages = MessageManager.messages.slice(0).reverse();\r\n const tabRows: React.ReactChild[] = new Array<React.ReactChild>();\r\n\r\n messages.forEach((details: NotifyMessageDetailsType, index: number) => {\r\n /* istanbul ignore else */\r\n if (this.state.activeTab === MessageCenterActiveTab.AllMessages || this.isProblemStatus(details.priority)) {\r\n\r\n const iconClassName = MessageManager.getIconClassName(details);\r\n const message = details.briefMessage;\r\n\r\n tabRows.push(\r\n <MessageCenterMessage\r\n key={index.toString()}\r\n icon={<i className={iconClassName} />}\r\n >\r\n <MessageSpan message={message} />\r\n {details.detailedMessage &&\r\n <>\r\n <br />\r\n <MessageSpan className=\"uicore-text-small\" message={details.detailedMessage} />\r\n </>\r\n }\r\n </MessageCenterMessage>,\r\n );\r\n }\r\n });\r\n\r\n return tabRows;\r\n }\r\n\r\n private isProblemStatus(priority: OutputMessagePriority): boolean {\r\n // See priority values in DgnPlatform defined in NotificationManager\r\n\r\n if (priority === OutputMessagePriority.Error || priority === OutputMessagePriority.Fatal)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n private setOpenWidget(openWidget: StatusBarFieldId) {\r\n // eslint-disable-next-line deprecation/deprecation\r\n this.props.onOpenWidget?.(openWidget);\r\n this.setState({openWidget});\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"MessageCenter.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/MessageCenter.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAC/B,wDAA6D;AAC7D,kEAAoI;AACpI,+DAA4D;AAC5D,yDAAsD;AAGtD,gDAA6C;AAG7C;;GAEG;AACH,IAAK,sBAGJ;AAHD,WAAK,sBAAsB;IACzB,iFAAW,CAAA;IACX,2EAAQ,CAAA;AACV,CAAC,EAHI,sBAAsB,KAAtB,sBAAsB,QAG1B;AAoBD;;GAEG;AACH,MAAa,kBAAmB,SAAQ,KAAK,CAAC,SAAsD;IAOlG,YAAY,CAA0B;;QACpC,KAAK,CAAC,CAAC,CAAC,CAAC;QANH,eAAU,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QAC/C,WAAM,GAAG,yBAAW,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAwCzD,gCAA2B,GAAG,GAAG,EAAE;YACzC,uBAAuB;YACvB,IAAI,IAAI,CAAC,6BAA6B;gBACpC,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,+BAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC;QAEM,kCAA6B,GAAG,GAAG,EAAE;YAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC,CAAC;QA0DM,qBAAgB,GAAG,CAAC,MAA6B,EAAE,EAAE;YAC3D,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,UAAU;gBAC5C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;iBAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC1B,IAAI,CAAC,KAAK,CAAC,SAAwD,CAAC,OAAO,GAAG,MAAM,CAAC;YACxF,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEM,iBAAY,GAAG,GAAG,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEM,wBAAmB,GAAG,CAAC,CAAa,EAAE,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO;gBAC1B,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC;gBAC3B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC1C,OAAO;YAET,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC;QAEM,iCAA4B,GAAG,GAAG,EAAE;;YAC1C,mDAAmD;YACnD,MAAM,MAAM,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,UAAU,mCAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC;YACpF,IAAI,MAAM;gBACR,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;;gBAEzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC,CAAC;QAEM,qBAAgB,GAAG,CAAC,GAA2B,EAAE,EAAE;YACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC;QAnIA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,KAAK,GAAG;YACX,SAAS,EAAE,sBAAsB,CAAC,WAAW;YAC7C,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,+BAAc,CAAC,QAAQ,CAAC,MAAM;YAC5C,mDAAmD;YACnD,UAAU,EAAE,MAAA,CAAC,CAAC,UAAU,mCAAI,IAAI;SACjC,CAAC;IACJ,CAAC;IAED,gBAAgB;IACA,iBAAiB;QAC/B,IAAI,CAAC,6BAA6B,GAAG,+BAAc,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;QAC/H,IAAI,CAAC,gCAAgC,GAAG,+BAAc,CAAC,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;QACtI,+BAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,gBAAgB;IACA,oBAAoB;QAClC,uBAAuB;QACvB,IAAI,IAAI,CAAC,6BAA6B,EAAE;YACtC,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,IAAI,CAAC,6BAA6B,GAAG,SAAS,CAAC;SAChD;QACD,uBAAuB;QACvB,IAAI,IAAI,CAAC,gCAAgC,EAAE;YACzC,IAAI,CAAC,gCAAgC,EAAE,CAAC;YACxC,IAAI,CAAC,gCAAgC,GAAG,SAAS,CAAC;SACnD;IACH,CAAC;IAYe,MAAM;;QACpB,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACzD,MAAM,cAAc,GAAG,CACrB;YACE,6BACE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,IAAI,CAAC,gBAAgB;gBAE1B,oBAAC,kCAAa,IACZ,YAAY,EAAE,IAAI,CAAC,UAAU,EAC7B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC1D,OAAO,EAAE,IAAI,CAAC,4BAA4B,IAEzC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CACrB,CACZ;YACN,oBAAC,gCAAW;YACV,mDAAmD;;gBAAnD,mDAAmD;gBACnD,MAAM,EAAE,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,UAAU,mCAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,EAC5E,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,cAAc,EAAE,IAAI,CAAC,mBAAmB,EACxC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAEzB,oBAAC,wCAAmB,IAClB,MAAM,EAAE,yBAAW,CAAC,SAAS,CAAC,sBAAsB,CAAC,EACrD,IAAI,EACF;wBACE,oBAAC,qCAAgB,IACf,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,sBAAsB,CAAC,WAAW,EACrE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAEvE,yBAAW,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAC1B;wBACnB,oBAAC,qCAAgB,IACf,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,sBAAsB,CAAC,QAAQ,EAClE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAEpE,yBAAW,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAC7B,CAClB,EAEL,KAAK,EAAE,IAAI,CAAC,MAAM,IAEjB,IAAI,CAAC,WAAW,EAAE,CACC,CACV,CACb,CACJ,CAAC;QAEF,OAAO,cAAc,CAAC;IACxB,CAAC;IAoCO,WAAW;QACjB,MAAM,QAAQ,GAAG,+BAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAuB,IAAI,KAAK,EAAoB,CAAC;QAElE,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAiC,EAAE,KAAa,EAAE,EAAE;YACpE,0BAA0B;YAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,sBAAsB,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAEzG,MAAM,aAAa,GAAG,+BAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;gBAErC,OAAO,CAAC,IAAI,CACV,oBAAC,yCAAoB,IACnB,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,EACrB,IAAI,EAAE,2BAAG,SAAS,EAAE,aAAa,GAAI;oBAErC,oBAAC,yBAAW,IAAC,OAAO,EAAE,OAAO,GAAI;oBAChC,OAAO,CAAC,eAAe;wBACtB;4BACE,+BAAM;4BACN,oBAAC,yBAAW,IAAC,SAAS,EAAC,mBAAmB,EAAC,OAAO,EAAE,OAAO,CAAC,eAAe,GAAI,CAC9E,CAEgB,CACxB,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,eAAe,CAAC,QAA+B;QACrD,oEAAoE;QAEpE,IAAI,QAAQ,KAAK,qCAAqB,CAAC,KAAK,IAAI,QAAQ,KAAK,qCAAqB,CAAC,KAAK;YACtF,OAAO,IAAI,CAAC;QAEd,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,aAAa,CAAC,UAA4B;;QAChD,mDAAmD;QACnD,MAAA,MAAA,IAAI,CAAC,KAAK,EAAC,YAAY,mDAAG,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAC,CAAC,CAAC;IAC9B,CAAC;CACF;AA5LD,gDA4LC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { OutputMessagePriority } from \"@itwin/core-frontend\";\r\nimport { FooterPopup, MessageCenter, MessageCenterDialog, MessageCenterMessage, MessageCenterTab } from \"@itwin/appui-layout-react\";\r\nimport { MessageManager } from \"../messages/MessageManager\";\r\nimport { MessageSpan } from \"../messages/MessageSpan\";\r\nimport { NotifyMessageDetailsType } from \"../messages/ReactNotifyMessageDetails\";\r\nimport { StatusBarFieldId } from \"../statusbar/StatusBarWidgetControl\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { StatusFieldProps } from \"./StatusFieldProps\";\r\n\r\n/** Enum for the [[MessageCenterField]] active tab\r\n * @internal\r\n */\r\nenum MessageCenterActiveTab {\r\n AllMessages,\r\n Problems,\r\n}\r\n\r\n/** State for the [[MessageCenterField]] React component\r\n * @internal\r\n */\r\ninterface MessageCenterState {\r\n activeTab: MessageCenterActiveTab;\r\n target: HTMLDivElement | null;\r\n messageCount: number;\r\n openWidget: string | null;\r\n}\r\n\r\n/** Properties for withMessageCenterFieldProps HOC.\r\n * @public\r\n */\r\nexport interface MessageCenterFieldProps extends StatusFieldProps {\r\n /** Message center dialog target. */\r\n targetRef?: React.Ref<HTMLElement>;\r\n}\r\n\r\n/** Message Center Field React component.\r\n * @public\r\n */\r\nexport class MessageCenterField extends React.Component<MessageCenterFieldProps, MessageCenterState> {\r\n private _className: string;\r\n private _indicator = React.createRef<HTMLDivElement>();\r\n private _title = UiFramework.translate(\"messageCenter.messages\");\r\n private _unloadMessagesUpdatedHandler?: () => void;\r\n private _removeOpenMessagesCenterHandler?: () => void;\r\n\r\n constructor(p: MessageCenterFieldProps) {\r\n super(p);\r\n\r\n const instance = this.constructor;\r\n this._className = instance.name;\r\n\r\n this.state = {\r\n activeTab: MessageCenterActiveTab.AllMessages,\r\n target: null,\r\n messageCount: MessageManager.messages.length,\r\n // eslint-disable-next-line deprecation/deprecation\r\n openWidget: p.openWidget ?? null,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._unloadMessagesUpdatedHandler = MessageManager.onMessagesUpdatedEvent.addListener(this._handleMessagesUpdatedEvent, this);\r\n this._removeOpenMessagesCenterHandler = MessageManager.onOpenMessageCenterEvent.addListener(this._handleOpenMessageCenterEvent, this);\r\n MessageManager.registerAnimateOutToElement(this._indicator.current);\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n // istanbul ignore else\r\n if (this._unloadMessagesUpdatedHandler) {\r\n this._unloadMessagesUpdatedHandler();\r\n this._unloadMessagesUpdatedHandler = undefined;\r\n }\r\n // istanbul ignore else\r\n if (this._removeOpenMessagesCenterHandler) {\r\n this._removeOpenMessagesCenterHandler();\r\n this._removeOpenMessagesCenterHandler = undefined;\r\n }\r\n }\r\n\r\n private _handleMessagesUpdatedEvent = () => {\r\n // istanbul ignore else\r\n if (this._unloadMessagesUpdatedHandler)\r\n this.setState({ messageCount: MessageManager.messages.length });\r\n };\r\n\r\n private _handleOpenMessageCenterEvent = () => {\r\n this.setOpenWidget(this._className);\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n const tooltip = `${this.state.messageCount} ${this._title}`;\r\n const divStyle = { ...this.props.style, height: \"100%\" };\r\n const footerMessages = (\r\n <>\r\n <div\r\n className={this.props.className}\r\n style={divStyle}\r\n title={tooltip}\r\n ref={this._handleTargetRef}\r\n >\r\n <MessageCenter\r\n indicatorRef={this._indicator}\r\n isInFooterMode={this.props.isInFooterMode}\r\n label={this.props.isInFooterMode ? this._title : undefined}\r\n onClick={this._handleMessageIndicatorClick}\r\n >\r\n {this.state.messageCount.toString()}\r\n </MessageCenter>\r\n </div>\r\n <FooterPopup\r\n // eslint-disable-next-line deprecation/deprecation\r\n isOpen={(this.props.openWidget ?? this.state.openWidget) === this._className}\r\n onClose={this._handleClose}\r\n onOutsideClick={this._handleOutsideClick}\r\n target={this.state.target}\r\n >\r\n <MessageCenterDialog\r\n prompt={UiFramework.translate(\"messageCenter.prompt\")}\r\n tabs={\r\n <>\r\n <MessageCenterTab\r\n isActive={this.state.activeTab === MessageCenterActiveTab.AllMessages}\r\n onClick={() => this._changeActiveTab(MessageCenterActiveTab.AllMessages)}\r\n >\r\n {UiFramework.translate(\"messageCenter.all\")}\r\n </MessageCenterTab>\r\n <MessageCenterTab\r\n isActive={this.state.activeTab === MessageCenterActiveTab.Problems}\r\n onClick={() => this._changeActiveTab(MessageCenterActiveTab.Problems)}\r\n >\r\n {UiFramework.translate(\"messageCenter.errors\")}\r\n </MessageCenterTab>\r\n </>\r\n }\r\n title={this._title}\r\n >\r\n {this.getMessages()}\r\n </MessageCenterDialog>\r\n </FooterPopup>\r\n </>\r\n );\r\n\r\n return footerMessages;\r\n }\r\n\r\n private _handleTargetRef = (target: HTMLDivElement | null) => {\r\n if (typeof this.props.targetRef === \"function\")\r\n this.props.targetRef(target);\r\n else if (this.props.targetRef)\r\n (this.props.targetRef as React.MutableRefObject<HTMLElement | null>).current = target;\r\n this.setState({ target });\r\n };\r\n\r\n private _handleClose = () => {\r\n this.setOpenWidget(null);\r\n };\r\n\r\n private _handleOutsideClick = (e: MouseEvent) => {\r\n if (!this._indicator.current ||\r\n !(e.target instanceof Node) ||\r\n this._indicator.current.contains(e.target))\r\n return;\r\n\r\n this._handleClose();\r\n };\r\n\r\n private _handleMessageIndicatorClick = () => {\r\n // eslint-disable-next-line deprecation/deprecation\r\n const isOpen = (this.props.openWidget ?? this.state.openWidget) === this._className;\r\n if (isOpen)\r\n this.setOpenWidget(null);\r\n else\r\n this.setOpenWidget(this._className);\r\n };\r\n\r\n private _changeActiveTab = (tab: MessageCenterActiveTab) => {\r\n this.setState({ activeTab: tab });\r\n };\r\n\r\n private getMessages(): React.ReactChild[] {\r\n const messages = MessageManager.messages.slice(0).reverse();\r\n const tabRows: React.ReactChild[] = new Array<React.ReactChild>();\r\n\r\n messages.forEach((details: NotifyMessageDetailsType, index: number) => {\r\n /* istanbul ignore else */\r\n if (this.state.activeTab === MessageCenterActiveTab.AllMessages || this.isProblemStatus(details.priority)) {\r\n\r\n const iconClassName = MessageManager.getIconClassName(details);\r\n const message = details.briefMessage;\r\n\r\n tabRows.push(\r\n <MessageCenterMessage\r\n key={index.toString()}\r\n icon={<i className={iconClassName} />}\r\n >\r\n <MessageSpan message={message} />\r\n {details.detailedMessage &&\r\n <>\r\n <br />\r\n <MessageSpan className=\"uicore-text-small\" message={details.detailedMessage} />\r\n </>\r\n }\r\n </MessageCenterMessage>,\r\n );\r\n }\r\n });\r\n\r\n return tabRows;\r\n }\r\n\r\n private isProblemStatus(priority: OutputMessagePriority): boolean {\r\n // See priority values in DgnPlatform defined in NotificationManager\r\n\r\n if (priority === OutputMessagePriority.Error || priority === OutputMessagePriority.Fatal)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n private setOpenWidget(openWidget: StatusBarFieldId) {\r\n // eslint-disable-next-line deprecation/deprecation\r\n this.props.onOpenWidget?.(openWidget);\r\n this.setState({openWidget});\r\n }\r\n}\r\n"]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
/// <reference types="react" />
|
|
5
5
|
import { ActivityMessageEventArgs } from "../messages/MessageManager";
|
|
6
|
+
import { ToasterSettings } from "@itwin/itwinui-react/cjs/core/Toast/Toaster";
|
|
6
7
|
/** Properties for a [[ActivityMessage]]
|
|
7
8
|
* @public
|
|
8
9
|
*/
|
|
@@ -13,6 +14,31 @@ export interface ActivityMessageProps {
|
|
|
13
14
|
}
|
|
14
15
|
/** Activity Message React component
|
|
15
16
|
* @public
|
|
17
|
+
* @deprecated
|
|
16
18
|
*/
|
|
17
19
|
export declare function ActivityMessage(props: ActivityMessageProps): JSX.Element;
|
|
20
|
+
interface CustomActivityMessageProps {
|
|
21
|
+
cancelActivityMessage?: () => void;
|
|
22
|
+
dismissActivityMessage?: () => void;
|
|
23
|
+
activityMessageInfo?: ActivityMessageEventArgs;
|
|
24
|
+
settings?: ToasterSettings;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Hook to render an Activity message.
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
export declare function useActivityMessage({ activityMessageInfo, dismissActivityMessage, cancelActivityMessage, settings }: CustomActivityMessageProps): void;
|
|
31
|
+
/**
|
|
32
|
+
* Component wrapping the `useActivityMessage` hook to use in class components.
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export declare function CustomActivityMessageRenderer({ activityMessageInfo, dismissActivityMessage, cancelActivityMessage, settings }: CustomActivityMessageProps): JSX.Element;
|
|
36
|
+
/**
|
|
37
|
+
* Component used to show and update activity message content.
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
export declare function CustomActivityMessageContent({ initialActivityMessageInfo }: {
|
|
41
|
+
initialActivityMessageInfo: ActivityMessageEventArgs;
|
|
42
|
+
}): JSX.Element;
|
|
43
|
+
export {};
|
|
18
44
|
//# sourceMappingURL=ActivityMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityMessage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessage.tsx"],"names":[],"mappings":"AAIA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"ActivityMessage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessage.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAcH,OAAO,EAAE,wBAAwB,EAAkB,MAAM,4BAA4B,CAAC;AAGtF,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,wBAAwB,CAAC;IAC9C,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,sBAAsB,EAAE,MAAM,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,eA0C1D;AAED,UAAU,0BAA0B;IAClC,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,mBAAmB,CAAC,EAAE,wBAAwB,CAAC;IAC/C,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAC,mBAAmB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,QAAQ,EAAC,EAAE,0BAA0B,QAkB5I;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,EAAC,mBAAmB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,QAAQ,EAAC,EAAE,0BAA0B,eAIvJ;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,EAAC,0BAA0B,EAAC,EAAE;IAAC,0BAA0B,EAAE,wBAAwB,CAAA;CAAC,eAqBhI"}
|
|
@@ -6,25 +6,81 @@
|
|
|
6
6
|
* @module Notification
|
|
7
7
|
*/
|
|
8
8
|
import * as React from "react";
|
|
9
|
-
import { UiCore } from "@itwin/core-react";
|
|
10
|
-
import { MessageHyperlink, MessageLayout, MessageProgress, Status } from "@itwin/appui-layout-react";
|
|
11
|
-
import { Small } from "@itwin/itwinui-react";
|
|
12
|
-
import { ToastPresentation } from "@itwin/itwinui-react/cjs/core/Toast/Toast";
|
|
9
|
+
import { Icon, UiCore } from "@itwin/core-react";
|
|
10
|
+
import { Message, MessageButton, MessageHyperlink, MessageLayout, MessageProgress, Status, } from "@itwin/appui-layout-react";
|
|
11
|
+
import { ProgressLinear, Small, Text, toaster } from "@itwin/itwinui-react";
|
|
13
12
|
import { UiFramework } from "../UiFramework";
|
|
13
|
+
import { MessageManager } from "../messages/MessageManager";
|
|
14
14
|
import { MessageLabel } from "./MessageLabel";
|
|
15
|
+
import { HollowIcon } from "./HollowIcon";
|
|
15
16
|
/** Activity Message React component
|
|
16
17
|
* @public
|
|
18
|
+
* @deprecated
|
|
17
19
|
*/
|
|
18
20
|
export function ActivityMessage(props) {
|
|
19
21
|
const messageDetails = props.activityMessageInfo.details;
|
|
20
22
|
const [percentCompleteLabel] = React.useState(UiFramework.translate("activityCenter.percentComplete"));
|
|
21
23
|
const [cancelLabel] = React.useState(UiCore.translate("dialog.cancel"));
|
|
22
|
-
return (React.createElement(
|
|
23
|
-
|
|
24
|
+
return (React.createElement(Message // eslint-disable-line deprecation/deprecation
|
|
25
|
+
, { status: Status.Information, icon: React.createElement(HollowIcon, { iconSpec: "icon-info-hollow" }) },
|
|
26
|
+
React.createElement(MessageLayout, { buttons: (messageDetails && messageDetails.supportsCancellation) ? (React.createElement("div", null,
|
|
27
|
+
React.createElement(MessageHyperlink, { onClick: props.cancelActivityMessage }, cancelLabel),
|
|
28
|
+
React.createElement("span", null, "\u00A0"),
|
|
29
|
+
React.createElement(MessageButton, { onClick: props.dismissActivityMessage },
|
|
30
|
+
React.createElement(Icon, { iconSpec: "icon-close" })))) : (React.createElement(MessageButton, { onClick: props.dismissActivityMessage },
|
|
31
|
+
React.createElement(Icon, { iconSpec: "icon-close" }))), progress: (messageDetails && messageDetails.showProgressBar) &&
|
|
24
32
|
React.createElement(MessageProgress, { status: Status.Information, progress: props.activityMessageInfo.percentage }) },
|
|
25
33
|
React.createElement("div", null,
|
|
26
34
|
React.createElement(MessageLabel, { message: props.activityMessageInfo.message, className: "uifw-statusbar-message-brief" }),
|
|
27
35
|
(messageDetails && messageDetails.showPercentInMessage) &&
|
|
28
|
-
React.createElement(Small, null, props.activityMessageInfo.percentage + percentCompleteLabel)))
|
|
36
|
+
React.createElement(Small, null, props.activityMessageInfo.percentage + percentCompleteLabel)))));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Hook to render an Activity message.
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
export function useActivityMessage({ activityMessageInfo, dismissActivityMessage, cancelActivityMessage, settings }) {
|
|
43
|
+
const [cancelLabel] = React.useState(UiCore.translate("dialog.cancel"));
|
|
44
|
+
const recentToast = React.useRef();
|
|
45
|
+
React.useEffect(() => {
|
|
46
|
+
toaster.setSettings(settings !== null && settings !== void 0 ? settings : { placement: "top" });
|
|
47
|
+
}, [settings]);
|
|
48
|
+
React.useEffect(() => {
|
|
49
|
+
var _a, _b;
|
|
50
|
+
if (activityMessageInfo === null || activityMessageInfo === void 0 ? void 0 : activityMessageInfo.restored) {
|
|
51
|
+
recentToast.current = toaster.informational(React.createElement(CustomActivityMessageContent, { initialActivityMessageInfo: activityMessageInfo }), { onRemove: dismissActivityMessage, type: "persisting", link: ((_a = activityMessageInfo === null || activityMessageInfo === void 0 ? void 0 : activityMessageInfo.details) === null || _a === void 0 ? void 0 : _a.supportsCancellation) && cancelActivityMessage ? { title: cancelLabel, onClick: cancelActivityMessage } : undefined });
|
|
52
|
+
}
|
|
53
|
+
if (!activityMessageInfo) {
|
|
54
|
+
(_b = recentToast.current) === null || _b === void 0 ? void 0 : _b.close();
|
|
55
|
+
}
|
|
56
|
+
}, [activityMessageInfo, cancelActivityMessage, cancelLabel, dismissActivityMessage]);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Component wrapping the `useActivityMessage` hook to use in class components.
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
export function CustomActivityMessageRenderer({ activityMessageInfo, dismissActivityMessage, cancelActivityMessage, settings }) {
|
|
63
|
+
useActivityMessage({ activityMessageInfo, cancelActivityMessage, dismissActivityMessage, settings });
|
|
64
|
+
return React.createElement(React.Fragment, null);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Component used to show and update activity message content.
|
|
68
|
+
* @internal
|
|
69
|
+
*/
|
|
70
|
+
export function CustomActivityMessageContent({ initialActivityMessageInfo }) {
|
|
71
|
+
var _a, _b;
|
|
72
|
+
const [percentCompleteLabel] = React.useState(UiFramework.translate("activityCenter.percentComplete"));
|
|
73
|
+
const [activityMessageInfo, setActivityMessageInfo] = React.useState(initialActivityMessageInfo);
|
|
74
|
+
React.useEffect(() => {
|
|
75
|
+
const handleActivityMessageUpdatedEvent = (args) => {
|
|
76
|
+
setActivityMessageInfo(args);
|
|
77
|
+
};
|
|
78
|
+
return MessageManager.onActivityMessageUpdatedEvent.addListener(handleActivityMessageUpdatedEvent);
|
|
79
|
+
}, []);
|
|
80
|
+
return (React.createElement(React.Fragment, null,
|
|
81
|
+
activityMessageInfo.message && React.createElement(Text, null, activityMessageInfo.message),
|
|
82
|
+
!!((_a = activityMessageInfo.details) === null || _a === void 0 ? void 0 : _a.showPercentInMessage) &&
|
|
83
|
+
React.createElement(Small, null, `${activityMessageInfo.percentage} ${percentCompleteLabel}`),
|
|
84
|
+
((_b = activityMessageInfo.details) === null || _b === void 0 ? void 0 : _b.showProgressBar) && React.createElement(ProgressLinear, { value: activityMessageInfo === null || activityMessageInfo === void 0 ? void 0 : activityMessageInfo.percentage })));
|
|
29
85
|
}
|
|
30
86
|
//# sourceMappingURL=ActivityMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityMessage.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessage.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ActivityMessage.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessage.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,MAAM,GACP,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAA4B,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAY1C;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,cAAc,GAAG,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC;IACzD,MAAM,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,CAAC;IACvG,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IAExE,OAAO,CACL,oBAAC,OAAO,CAAC,8CAA8C;QACrD,MAAM,EAAE,MAAM,CAAC,WAAW,EAC1B,IAAI,EAAE,oBAAC,UAAU,IAAC,QAAQ,EAAC,kBAAkB,GAAG;QAEhD,oBAAC,aAAa,IACZ,OAAO,EAAE,CAAC,cAAc,IAAI,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CACjE;gBACE,oBAAC,gBAAgB,IAAC,OAAO,EAAE,KAAK,CAAC,qBAAqB,IACnD,WAAW,CACK;gBACnB,2CAAmB;gBACnB,oBAAC,aAAa,IAAC,OAAO,EAAE,KAAK,CAAC,sBAAsB;oBAClD,oBAAC,IAAI,IAAC,QAAQ,EAAC,YAAY,GAAG,CAChB,CACZ,CACP,CAAC,CAAC,CAAC,CACF,oBAAC,aAAa,IAAC,OAAO,EAAE,KAAK,CAAC,sBAAsB;gBAClD,oBAAC,IAAI,IAAC,QAAQ,EAAC,YAAY,GAAG,CAChB,CACjB,EACD,QAAQ,EAAE,CAAC,cAAc,IAAI,cAAc,CAAC,eAAe,CAAC;gBACxD,oBAAC,eAAe,IACd,MAAM,EAAE,MAAM,CAAC,WAAW,EAC1B,QAAQ,EAAE,KAAK,CAAC,mBAAmB,CAAC,UAAU,GAC9C;YAGN;gBACE,oBAAC,YAAY,IAAC,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAC,8BAA8B,GAAG;gBACpG,CAAC,cAAc,IAAI,cAAc,CAAC,oBAAoB,CAAC;oBACtD,oBAAC,KAAK,QAAE,KAAK,CAAC,mBAAmB,CAAC,UAAU,GAAG,oBAAoB,CAAS,CAE1E,CACQ,CACR,CACX,CAAC;AACJ,CAAC;AASD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAC,mBAAmB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,QAAQ,EAA6B;IAC3I,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAmC,CAAC;IACpE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,OAAO,CAAC,WAAW,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;IACtD,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;;QACnB,IAAI,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,EAAE;YACjC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,aAAa,CACzC,oBAAC,4BAA4B,IAAC,0BAA0B,EAAE,mBAAmB,GAAI,EACjF,EAAE,QAAQ,EAAE,sBAAsB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAA,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,OAAO,0CAAE,oBAAoB,KAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,SAAS,EAAC,CAChN,CAAC;SACH;QACD,IAAI,CAAC,mBAAmB,EAAE;YACxB,MAAA,WAAW,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;SAC9B;IACH,CAAC,EAAE,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC;AACxF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,EAAC,mBAAmB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,QAAQ,EAA6B;IACtJ,kBAAkB,CAAC,EAAC,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,QAAQ,EAAC,CAAC,CAAC;IAEnG,OAAO,yCAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,EAAC,0BAA0B,EAAyD;;IAC/H,MAAM,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,CAAC;IACvG,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IAEjG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,iCAAiC,GAAG,CAAC,IAA8B,EAAE,EAAE;YAC3E,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,OAAO,cAAc,CAAC,6BAA6B,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;IACrG,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL;QACG,mBAAmB,CAAC,OAAO,IAAI,oBAAC,IAAI,QAAE,mBAAmB,CAAC,OAAO,CAAQ;QACzE,CAAC,CAAC,CAAA,MAAA,mBAAmB,CAAC,OAAO,0CAAE,oBAAoB,CAAA;YAClD,oBAAC,KAAK,QAAE,GAAG,mBAAmB,CAAC,UAAU,IAAI,oBAAoB,EAAE,CAAS;QAE7E,CAAA,MAAA,mBAAmB,CAAC,OAAO,0CAAE,eAAe,KAAI,oBAAC,cAAc,IAAC,KAAK,EAAE,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,UAAU,GAAI,CAC1G,CACJ,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { Icon, UiCore } from \"@itwin/core-react\";\r\nimport {\r\n Message,\r\n MessageButton,\r\n MessageHyperlink,\r\n MessageLayout,\r\n MessageProgress,\r\n Status,\r\n} from \"@itwin/appui-layout-react\";\r\nimport { ProgressLinear, Small, Text, toaster } from \"@itwin/itwinui-react\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { ActivityMessageEventArgs, MessageManager } from \"../messages/MessageManager\";\r\nimport { MessageLabel } from \"./MessageLabel\";\r\nimport { HollowIcon } from \"./HollowIcon\";\r\nimport { ToasterSettings } from \"@itwin/itwinui-react/cjs/core/Toast/Toaster\";\r\n\r\n/** Properties for a [[ActivityMessage]]\r\n * @public\r\n */\r\nexport interface ActivityMessageProps {\r\n activityMessageInfo: ActivityMessageEventArgs;\r\n cancelActivityMessage: () => void;\r\n dismissActivityMessage: () => void;\r\n}\r\n\r\n/** Activity Message React component\r\n * @public\r\n * @deprecated\r\n */\r\nexport function ActivityMessage(props: ActivityMessageProps) {\r\n const messageDetails = props.activityMessageInfo.details;\r\n const [percentCompleteLabel] = React.useState(UiFramework.translate(\"activityCenter.percentComplete\"));\r\n const [cancelLabel] = React.useState(UiCore.translate(\"dialog.cancel\"));\r\n\r\n return (\r\n <Message // eslint-disable-line deprecation/deprecation\r\n status={Status.Information}\r\n icon={<HollowIcon iconSpec=\"icon-info-hollow\" />}\r\n >\r\n <MessageLayout\r\n buttons={(messageDetails && messageDetails.supportsCancellation) ? (\r\n <div>\r\n <MessageHyperlink onClick={props.cancelActivityMessage}>\r\n {cancelLabel}\r\n </MessageHyperlink>\r\n <span> </span>\r\n <MessageButton onClick={props.dismissActivityMessage}>\r\n <Icon iconSpec=\"icon-close\" />\r\n </MessageButton>\r\n </div>\r\n ) : (\r\n <MessageButton onClick={props.dismissActivityMessage}>\r\n <Icon iconSpec=\"icon-close\" />\r\n </MessageButton>\r\n )}\r\n progress={(messageDetails && messageDetails.showProgressBar) &&\r\n <MessageProgress\r\n status={Status.Information}\r\n progress={props.activityMessageInfo.percentage}\r\n />\r\n }\r\n >\r\n <div>\r\n <MessageLabel message={props.activityMessageInfo.message} className=\"uifw-statusbar-message-brief\" />\r\n {(messageDetails && messageDetails.showPercentInMessage) &&\r\n <Small>{props.activityMessageInfo.percentage + percentCompleteLabel}</Small>\r\n }\r\n </div>\r\n </MessageLayout>\r\n </Message>\r\n );\r\n}\r\n\r\ninterface CustomActivityMessageProps {\r\n cancelActivityMessage?: () => void;\r\n dismissActivityMessage?: () => void;\r\n activityMessageInfo?: ActivityMessageEventArgs;\r\n settings?: ToasterSettings;\r\n}\r\n\r\n/**\r\n * Hook to render an Activity message.\r\n * @internal\r\n */\r\nexport function useActivityMessage({activityMessageInfo, dismissActivityMessage, cancelActivityMessage, settings}: CustomActivityMessageProps) {\r\n const [cancelLabel] = React.useState(UiCore.translate(\"dialog.cancel\"));\r\n const recentToast = React.useRef<{close: () => void} | undefined>();\r\n React.useEffect(() => {\r\n toaster.setSettings(settings ?? {placement: \"top\"});\r\n }, [settings]);\r\n\r\n React.useEffect(() => {\r\n if (activityMessageInfo?.restored) {\r\n recentToast.current = toaster.informational(\r\n <CustomActivityMessageContent initialActivityMessageInfo={activityMessageInfo} />,\r\n { onRemove: dismissActivityMessage, type: \"persisting\", link: activityMessageInfo?.details?.supportsCancellation && cancelActivityMessage ? { title: cancelLabel, onClick: cancelActivityMessage } : undefined}\r\n );\r\n }\r\n if (!activityMessageInfo) {\r\n recentToast.current?.close();\r\n }\r\n }, [activityMessageInfo, cancelActivityMessage, cancelLabel, dismissActivityMessage]);\r\n}\r\n\r\n/**\r\n * Component wrapping the `useActivityMessage` hook to use in class components.\r\n * @internal\r\n */\r\nexport function CustomActivityMessageRenderer({activityMessageInfo, dismissActivityMessage, cancelActivityMessage, settings}: CustomActivityMessageProps) {\r\n useActivityMessage({activityMessageInfo, cancelActivityMessage, dismissActivityMessage, settings});\r\n\r\n return <></>;\r\n}\r\n\r\n/**\r\n * Component used to show and update activity message content.\r\n * @internal\r\n */\r\nexport function CustomActivityMessageContent({initialActivityMessageInfo}: {initialActivityMessageInfo: ActivityMessageEventArgs}) {\r\n const [percentCompleteLabel] = React.useState(UiFramework.translate(\"activityCenter.percentComplete\"));\r\n const [activityMessageInfo, setActivityMessageInfo] = React.useState(initialActivityMessageInfo);\r\n\r\n React.useEffect(() => {\r\n const handleActivityMessageUpdatedEvent = (args: ActivityMessageEventArgs) => {\r\n setActivityMessageInfo(args);\r\n };\r\n\r\n return MessageManager.onActivityMessageUpdatedEvent.addListener(handleActivityMessageUpdatedEvent);\r\n }, []);\r\n\r\n return (\r\n <>\r\n {activityMessageInfo.message && <Text>{activityMessageInfo.message}</Text>}\r\n {!!activityMessageInfo.details?.showPercentInMessage &&\r\n <Small>{`${activityMessageInfo.percentage} ${percentCompleteLabel}`}</Small>\r\n }\r\n {activityMessageInfo.details?.showProgressBar && <ProgressLinear value={activityMessageInfo?.percentage} />}\r\n </>\r\n );\r\n}\r\n"]}
|
|
@@ -14,5 +14,5 @@ export interface ActivityMessagePopupProps extends CommonProps {
|
|
|
14
14
|
/** Activity Message Popup React component
|
|
15
15
|
* @public
|
|
16
16
|
*/
|
|
17
|
-
export declare function ActivityMessagePopup(props: ActivityMessagePopupProps): JSX.Element
|
|
17
|
+
export declare function ActivityMessagePopup(props: ActivityMessagePopupProps): JSX.Element;
|
|
18
18
|
//# sourceMappingURL=ActivityMessagePopup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityMessagePopup.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessagePopup.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAEH,OAAO,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ActivityMessagePopup.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessagePopup.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAEH,OAAO,6BAA6B,CAAC;AAGrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,WAAW;IAC5D,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,eA+BpE"}
|
|
@@ -7,27 +7,22 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import "./ActivityMessagePopup.scss";
|
|
9
9
|
import * as React from "react";
|
|
10
|
-
import classnames from "classnames";
|
|
11
10
|
import { MessageManager } from "../messages/MessageManager";
|
|
12
|
-
import {
|
|
11
|
+
import { useActivityMessage } from "./ActivityMessage";
|
|
13
12
|
/** Activity Message Popup React component
|
|
14
13
|
* @public
|
|
15
14
|
*/
|
|
16
15
|
export function ActivityMessagePopup(props) {
|
|
17
16
|
const [activityMessageInfo, setActivityMessageInfo] = React.useState(undefined);
|
|
18
|
-
const [isActivityMessageVisible, setIsActivityMessageVisible] = React.useState(false);
|
|
19
17
|
React.useEffect(() => {
|
|
20
18
|
const handleActivityMessageUpdatedEvent = (args) => {
|
|
21
19
|
setActivityMessageInfo(args);
|
|
22
|
-
if (args.restored)
|
|
23
|
-
setIsActivityMessageVisible(true);
|
|
24
20
|
};
|
|
25
21
|
return MessageManager.onActivityMessageUpdatedEvent.addListener(handleActivityMessageUpdatedEvent);
|
|
26
|
-
}, [
|
|
22
|
+
}, []);
|
|
27
23
|
React.useEffect(() => {
|
|
28
24
|
const handleActivityMessageCancelledEvent = () => {
|
|
29
25
|
setActivityMessageInfo(undefined);
|
|
30
|
-
setIsActivityMessageVisible(false);
|
|
31
26
|
};
|
|
32
27
|
return MessageManager.onActivityMessageCancelledEvent.addListener(handleActivityMessageCancelledEvent);
|
|
33
28
|
}, []);
|
|
@@ -36,12 +31,9 @@ export function ActivityMessagePopup(props) {
|
|
|
36
31
|
props.cancelActivityMessage && props.cancelActivityMessage();
|
|
37
32
|
}, [props]);
|
|
38
33
|
const dismissActivityMessage = React.useCallback(() => {
|
|
39
|
-
setIsActivityMessageVisible(false);
|
|
40
34
|
props.dismissActivityMessage && props.dismissActivityMessage();
|
|
41
35
|
}, [props]);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return (React.createElement("div", { className: classnames("uifw-centered-popup", props.className), style: props.style },
|
|
45
|
-
React.createElement(ActivityMessage, { activityMessageInfo: activityMessageInfo, cancelActivityMessage: cancelActivityMessage, dismissActivityMessage: dismissActivityMessage })));
|
|
36
|
+
useActivityMessage({ activityMessageInfo, cancelActivityMessage, dismissActivityMessage });
|
|
37
|
+
return React.createElement(React.Fragment, null);
|
|
46
38
|
}
|
|
47
39
|
//# sourceMappingURL=ActivityMessagePopup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityMessagePopup.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessagePopup.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,6BAA6B,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"ActivityMessagePopup.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessagePopup.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,6BAA6B,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA4B,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAUvD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAgC;IACnE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAuC,SAAS,CAAC,CAAC;IAEtH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,iCAAiC,GAAG,CAAC,IAA8B,EAAE,EAAE;YAC3E,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,OAAO,cAAc,CAAC,6BAA6B,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;IACrG,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,mCAAmC,GAAG,GAAG,EAAE;YAC/C,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,OAAO,cAAc,CAAC,+BAA+B,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;IACzG,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,qBAAqB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACnD,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,CAAC,qBAAqB,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC;IAC/D,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpD,KAAK,CAAC,sBAAsB,IAAI,KAAK,CAAC,sBAAsB,EAAE,CAAC;IACjE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,kBAAkB,CAAC,EAAC,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAC,CAAC,CAAC;IAEzF,OAAO,yCAAK,CAAC;AACf,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport \"./ActivityMessagePopup.scss\";\r\nimport * as React from \"react\";\r\nimport { ActivityMessageEventArgs, MessageManager } from \"../messages/MessageManager\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\nimport { useActivityMessage } from \"./ActivityMessage\";\r\n\r\n/** Properties for [[ActivityMessagePopup]] component\r\n * @public\r\n */\r\nexport interface ActivityMessagePopupProps extends CommonProps {\r\n cancelActivityMessage?: () => void;\r\n dismissActivityMessage?: () => void;\r\n}\r\n\r\n/** Activity Message Popup React component\r\n * @public\r\n */\r\nexport function ActivityMessagePopup(props: ActivityMessagePopupProps) {\r\n const [activityMessageInfo, setActivityMessageInfo] = React.useState<ActivityMessageEventArgs | undefined>(undefined);\r\n\r\n React.useEffect(() => {\r\n const handleActivityMessageUpdatedEvent = (args: ActivityMessageEventArgs) => {\r\n setActivityMessageInfo(args);\r\n };\r\n\r\n return MessageManager.onActivityMessageUpdatedEvent.addListener(handleActivityMessageUpdatedEvent);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n const handleActivityMessageCancelledEvent = () => {\r\n setActivityMessageInfo(undefined);\r\n };\r\n\r\n return MessageManager.onActivityMessageCancelledEvent.addListener(handleActivityMessageCancelledEvent);\r\n }, []);\r\n\r\n const cancelActivityMessage = React.useCallback(() => {\r\n MessageManager.endActivityMessage(false);\r\n props.cancelActivityMessage && props.cancelActivityMessage();\r\n }, [props]);\r\n\r\n const dismissActivityMessage = React.useCallback(() => {\r\n props.dismissActivityMessage && props.dismissActivityMessage();\r\n }, [props]);\r\n\r\n useActivityMessage({activityMessageInfo, cancelActivityMessage, dismissActivityMessage});\r\n\r\n return <></>;\r\n}\r\n"]}
|
|
@@ -6,6 +6,8 @@ import { ActivityMessageDetails, MessageBoxIconType, MessageBoxType, MessageBoxV
|
|
|
6
6
|
import { MessageSeverity, UiEvent } from "@itwin/appui-abstract";
|
|
7
7
|
import { NotifyMessageDetailsType, NotifyMessageType } from "./ReactNotifyMessageDetails";
|
|
8
8
|
import { StatusMessageManager } from "./StatusMessageManager";
|
|
9
|
+
import { ToastOptions } from "@itwin/itwinui-react";
|
|
10
|
+
import { ToasterSettings } from "@itwin/itwinui-react/cjs/core/Toast/Toaster";
|
|
9
11
|
/** [[MessageAddedEvent]] arguments.
|
|
10
12
|
* @public
|
|
11
13
|
*/
|
|
@@ -96,6 +98,7 @@ export declare class MessageManager {
|
|
|
96
98
|
private static _ongoingActivityMessage;
|
|
97
99
|
private static _lastMessage?;
|
|
98
100
|
private static _activeMessageManager;
|
|
101
|
+
private static _animateOutToElement;
|
|
99
102
|
/** The MessageAddedEvent is fired when a message is added via outputMessage(). */
|
|
100
103
|
static readonly onMessageAddedEvent: MessageAddedEvent;
|
|
101
104
|
/** The MessagesUpdatedEvent is fired when a message is added or the messages are cleared. */
|
|
@@ -131,6 +134,20 @@ export declare class MessageManager {
|
|
|
131
134
|
* @param message Details about the message to output.
|
|
132
135
|
*/
|
|
133
136
|
static outputMessage(message: NotifyMessageDetailsType): void;
|
|
137
|
+
/** Set the element where messages should be animated out to on exit.
|
|
138
|
+
* @param element `HTMLElement` to animate out to.
|
|
139
|
+
*/
|
|
140
|
+
static registerAnimateOutToElement(element: HTMLElement | null): void;
|
|
141
|
+
/** Display a message.
|
|
142
|
+
* Works only with `Sticky` and `Toast` message types.
|
|
143
|
+
* @param message Details about the message to display.
|
|
144
|
+
* @param options Optionally override individual toast parameters.
|
|
145
|
+
* @param settings Optionally override all toasts settings (i.e. placement or order).
|
|
146
|
+
* @returns Object with reference to the message (i.e. to close it programmatically) if it was displayed.
|
|
147
|
+
*/
|
|
148
|
+
static displayMessage(message: NotifyMessageDetailsType, options?: ToastOptions, settings?: ToasterSettings): {
|
|
149
|
+
close: () => void;
|
|
150
|
+
} | undefined;
|
|
134
151
|
/** Output a message and/or alert to the user.
|
|
135
152
|
* @param message Details about the message to output.
|
|
136
153
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EACL,sBAAsB,EAAa,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAsB,qBAAqB,EAC9G,0BAA0B,EAAE,cAAc,EAC9D,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AASjE,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ import { UiFramework } from "../UiFramework";
|
|
|
19
19
|
import { MessageSpan } from "./MessageSpan";
|
|
20
20
|
import { PointerMessage } from "./Pointer";
|
|
21
21
|
import { StatusMessageManager } from "./StatusMessageManager";
|
|
22
|
+
import { Small, toaster } from "@itwin/itwinui-react";
|
|
22
23
|
class MessageBoxCallbacks {
|
|
23
24
|
constructor(onFulfilled, onRejected) {
|
|
24
25
|
this.onFulfilled = onFulfilled;
|
|
@@ -130,6 +131,49 @@ export class MessageManager {
|
|
|
130
131
|
}
|
|
131
132
|
MessageManager.addMessage(message);
|
|
132
133
|
}
|
|
134
|
+
/** Set the element where messages should be animated out to on exit.
|
|
135
|
+
* @param element `HTMLElement` to animate out to.
|
|
136
|
+
*/
|
|
137
|
+
static registerAnimateOutToElement(element) {
|
|
138
|
+
this._animateOutToElement = element;
|
|
139
|
+
}
|
|
140
|
+
/** Display a message.
|
|
141
|
+
* Works only with `Sticky` and `Toast` message types.
|
|
142
|
+
* @param message Details about the message to display.
|
|
143
|
+
* @param options Optionally override individual toast parameters.
|
|
144
|
+
* @param settings Optionally override all toasts settings (i.e. placement or order).
|
|
145
|
+
* @returns Object with reference to the message (i.e. to close it programmatically) if it was displayed.
|
|
146
|
+
*/
|
|
147
|
+
static displayMessage(message, options, settings) {
|
|
148
|
+
if (message.msgType !== OutputMessageType.Sticky && message.msgType !== OutputMessageType.Toast) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const toastOptions = {
|
|
152
|
+
hasCloseButton: true,
|
|
153
|
+
duration: message.displayTime.milliseconds,
|
|
154
|
+
type: message.msgType === OutputMessageType.Sticky
|
|
155
|
+
? "persisting"
|
|
156
|
+
: "temporary",
|
|
157
|
+
animateOutTo: this._animateOutToElement,
|
|
158
|
+
...options,
|
|
159
|
+
};
|
|
160
|
+
toaster.setSettings({ placement: "bottom", order: "ascending", ...settings });
|
|
161
|
+
const content = React.createElement(React.Fragment, null,
|
|
162
|
+
message.briefMessage,
|
|
163
|
+
message.detailedMessage &&
|
|
164
|
+
React.createElement(Small, null, message.detailedMessage.reactNode || message.detailedMessage));
|
|
165
|
+
switch (message.priority) {
|
|
166
|
+
case OutputMessagePriority.Warning:
|
|
167
|
+
return toaster.warning(content, toastOptions);
|
|
168
|
+
case OutputMessagePriority.Info:
|
|
169
|
+
return toaster.informational(content, toastOptions);
|
|
170
|
+
case OutputMessagePriority.Error:
|
|
171
|
+
case OutputMessagePriority.Fatal:
|
|
172
|
+
return toaster.negative(content, toastOptions);
|
|
173
|
+
default:
|
|
174
|
+
return toaster.positive(content, toastOptions);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
133
177
|
/** Output a message and/or alert to the user.
|
|
134
178
|
* @param message Details about the message to output.
|
|
135
179
|
*/
|