@itwin/appui-react 3.2.0-dev.13 → 3.2.0-dev.14

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.
Files changed (23) hide show
  1. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js +1 -1
  2. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  3. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  4. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +1 -2
  5. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  6. package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js +1 -1
  7. package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  8. package/lib/cjs/appui-react/theme/ThemeManager.js +1 -1
  9. package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
  10. package/lib/cjs/appui-react/toolbar/Toolbar.js +1 -1
  11. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  12. package/lib/esm/appui-react/childwindow/ChildWindowManager.js +1 -1
  13. package/lib/esm/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  14. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  15. package/lib/esm/appui-react/frontstage/FrontstageDef.js +1 -2
  16. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  17. package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js +1 -1
  18. package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  19. package/lib/esm/appui-react/theme/ThemeManager.js +1 -1
  20. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  21. package/lib/esm/appui-react/toolbar/Toolbar.js +1 -1
  22. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  23. package/package.json +32 -32
@@ -1 +1 @@
1
- {"version":3,"file":"TileLoadingIndicator.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/tileloading/TileLoadingIndicator.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,6BAA6B,CAAC;AACrC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAA4B,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAahD;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK,CAAC,aAA0D;IAIxG,YAAY,KAAuB;QACjC,KAAK,CAAC,KAAK,CAAC,CAAC;QAIP,kBAAa,GAAG,CAAC,EAAY,EAAE,EAAE;YACvC,MAAM,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC;YACvC,MAAM,KAAK,GAAG,EAAE,CAAC,aAAa,CAAC;YAC/B,MAAM,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;YAChC,MAAM,WAAW,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC;YACzF,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAEnC,uBAAuB;YACvB,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,IAAI,WAAW,KAAK,GAAG;gBAChD,OAAO,GAAG,IAAI,CAAC;YAEjB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,WAAW,KAAK,GAAG,CAAC;gBACjD,OAAO,GAAG,KAAK,CAAC;YAElB,IAAI,WAAW,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;gBACpC,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,wBAAwB,CAAC,CAAC;gBAC5E,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,0DAA0D,KAAK,MAAM,KAAK,EAAE,CAAC,CAAC;aACjI;YAED,uBAAuB;YACvB,IAAI,WAAW,KAAK,GAAG,IAAI,QAAQ;gBACjC,QAAQ,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5F,CAAC,CAAC;QAEM,YAAO,GAAG,CAAC,EAAY,EAAE,EAAE;YACjC,kDAAkD;YAClD,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC;QAEM,gBAAW,GAAG,CAAC,EAAkB,EAAE,EAAE;YAC3C,uBAAuB;YACvB,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/D,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvE,CAAC,CAAC;QAxCA,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1E,CAAC;IAyCe,iBAAiB;QAC/B,uBAAuB;QACvB,IAAI,CAAC,SAAS,CAAC,WAAW;YACxB,OAAO;QAET,wBAAwB;QACxB,MAAM,EAAE,GAAG,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC;QAE9C,sGAAsG;QACtG,uBAAuB;QACvB,IAAI,EAAE,EAAE;YACN,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC/F;IACH,CAAC;IAEe,oBAAoB;QAClC,uBAAuB;QACvB,IAAI,CAAC,SAAS,CAAC,WAAW;YACxB,OAAO;QAET,uBAAuB;QACvB,IAAI,IAAI,CAAC,uBAAuB;YAC9B,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAEjC,uBAAuB;QACvB,IAAI,IAAI,CAAC,uBAAuB;YAC9B,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACnC,CAAC;IAED,mCAAmC;IACnB,MAAM;QACpB,MAAM,OAAO,GAAG,UAAU,CACxB,uBAAuB,EACvB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,+BAA+B,EACrD,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,gBAAgB,EAC7C,IAAI,CAAC,KAAK,CAAC,SAAS,CACrB,CAAC;QACF,OAAO,CACL,6BAAK,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YAC9C,kCAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAQ;YAC/B,oBAAC,cAAc,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAI,CAC1C,CACP,CAAC;IACJ,CAAC;CACF","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 StatusBar\r\n */\r\n\r\nimport \"./TileLoadingIndicator.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp, ScreenViewport, Viewport } from \"@itwin/core-frontend\";\r\nimport { ProgressLinear } from \"@itwin/itwinui-react\";\r\nimport { UiFramework } from \"../../UiFramework\";\r\nimport { StatusFieldProps } from \"../StatusFieldProps\";\r\n\r\n/** State for the [[TileLoadingIndicator]] component\r\n * @internal\r\n */\r\ninterface TileLoadingIndicatorState {\r\n label: string;\r\n progress: number;\r\n enabled: boolean;\r\n finished: boolean;\r\n}\r\n\r\n/** TileLoadingIndicator React component\r\n * @public\r\n */\r\nexport class TileLoadingIndicator extends React.PureComponent<StatusFieldProps, TileLoadingIndicatorState> {\r\n private _removeViewOpenListener?: () => void;\r\n private _removeOnRenderListener?: () => void;\r\n\r\n constructor(props: StatusFieldProps) {\r\n super(props);\r\n this.state = { label: \"\", progress: 0, enabled: false, finished: true };\r\n }\r\n\r\n private _refreshState = (vp: Viewport) => {\r\n const requested = vp.numRequestedTiles;\r\n const ready = vp.numReadyTiles;\r\n const total = ready + requested;\r\n const pctComplete = (total > 0) ? (ready / total) * 100 : /* istanbul ignore next */ 100;\r\n let enabled = this.state.enabled;\r\n let finished = this.state.finished;\r\n\r\n // istanbul ignore else\r\n if (!enabled && total !== 0 && pctComplete !== 100)\r\n enabled = true;\r\n\r\n if (enabled && (total === 0 || pctComplete === 100))\r\n enabled = false;\r\n\r\n if (pctComplete === 100 && !finished) {\r\n finished = true;\r\n Logger.logTrace(UiFramework.loggerCategory(this), `Tiles Finished Loading`);\r\n Logger.logTrace(UiFramework.loggerCategory(this), `Tiles Load Report (tiles finished / tiles requested): ${ready} / ${total}`);\r\n }\r\n\r\n // istanbul ignore else\r\n if (pctComplete !== 100 && finished)\r\n finished = false;\r\n\r\n this.setState({ label: `${ready} / ${total}`, progress: pctComplete, enabled, finished });\r\n };\r\n\r\n private _update = (vp: Viewport) => {\r\n // set progress animation before the next repaint.\r\n setImmediate(() => this._refreshState(vp));\r\n };\r\n\r\n private _onViewOpen = (vp: ScreenViewport) => {\r\n // istanbul ignore next\r\n this._removeOnRenderListener && this._removeOnRenderListener();\r\n this._removeOnRenderListener = vp.onRender.addListener(this._update);\r\n };\r\n\r\n public override componentDidMount() {\r\n // istanbul ignore next\r\n if (!IModelApp.viewManager)\r\n return;\r\n\r\n // get selected viewport\r\n const vp = IModelApp.viewManager.selectedView;\r\n\r\n // if view exists bind update routine to onRender loop, otherwise do so once the onViewOpen event runs\r\n // istanbul ignore else\r\n if (vp) {\r\n this._onViewOpen(vp);\r\n } else {\r\n this._removeViewOpenListener = IModelApp.viewManager.onViewOpen.addListener(this._onViewOpen);\r\n }\r\n }\r\n\r\n public override componentWillUnmount() {\r\n // istanbul ignore next\r\n if (!IModelApp.viewManager)\r\n return;\r\n\r\n // istanbul ignore next\r\n if (this._removeViewOpenListener)\r\n this._removeViewOpenListener();\r\n\r\n // istanbul ignore else\r\n if (this._removeOnRenderListener)\r\n this._removeOnRenderListener();\r\n }\r\n\r\n /** Renders TileLoadingIndicator */\r\n public override render() {\r\n const classes = classnames(\r\n \"uifw-tile-loading-bar\",\r\n this.state.enabled && \"uifw-tile-loading-bar-visible\",\r\n this.props.isInFooterMode && \"nz-footer-mode\",\r\n this.props.className,\r\n );\r\n return (\r\n <div className={classes} style={this.props.style}>\r\n <span>{this.state.label}</span>\r\n <ProgressLinear value={this.state.progress} />\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TileLoadingIndicator.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/tileloading/TileLoadingIndicator.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 StatusBar\r\n */\r\n\r\nimport \"./TileLoadingIndicator.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp, ScreenViewport, Viewport } from \"@itwin/core-frontend\";\r\nimport { ProgressLinear } from \"@itwin/itwinui-react\";\r\nimport { UiFramework } from \"../../UiFramework\";\r\nimport { StatusFieldProps } from \"../StatusFieldProps\";\r\n\r\n/** State for the [[TileLoadingIndicator]] component\r\n * @internal\r\n */\r\ninterface TileLoadingIndicatorState {\r\n label: string;\r\n progress: number;\r\n enabled: boolean;\r\n finished: boolean;\r\n}\r\n\r\n/** TileLoadingIndicator React component\r\n * @public\r\n */\r\nexport class TileLoadingIndicator extends React.PureComponent<StatusFieldProps, TileLoadingIndicatorState> {\r\n private _removeViewOpenListener?: () => void;\r\n private _removeOnRenderListener?: () => void;\r\n\r\n constructor(props: StatusFieldProps) {\r\n super(props);\r\n this.state = { label: \"\", progress: 0, enabled: false, finished: true };\r\n }\r\n\r\n private _refreshState = (vp: Viewport) => {\r\n const requested = vp.numRequestedTiles;\r\n const ready = vp.numReadyTiles;\r\n const total = ready + requested;\r\n const pctComplete = (total > 0) ? (ready / total) * 100 : /* istanbul ignore next */ 100;\r\n let enabled = this.state.enabled;\r\n let finished = this.state.finished;\r\n\r\n // istanbul ignore else\r\n if (!enabled && total !== 0 && pctComplete !== 100)\r\n enabled = true;\r\n\r\n if (enabled && (total === 0 || pctComplete === 100))\r\n enabled = false;\r\n\r\n if (pctComplete === 100 && !finished) {\r\n finished = true;\r\n Logger.logTrace(UiFramework.loggerCategory(this), `Tiles Finished Loading`);\r\n Logger.logTrace(UiFramework.loggerCategory(this), `Tiles Load Report (tiles finished / tiles requested): ${ready} / ${total}`);\r\n }\r\n\r\n // istanbul ignore else\r\n if (pctComplete !== 100 && finished)\r\n finished = false;\r\n\r\n this.setState({ label: `${ready} / ${total}`, progress: pctComplete, enabled, finished });\r\n };\r\n\r\n private _update = (vp: Viewport) => {\r\n // set progress animation before the next repaint.\r\n setTimeout(() => this._refreshState(vp));\r\n };\r\n\r\n private _onViewOpen = (vp: ScreenViewport) => {\r\n // istanbul ignore next\r\n this._removeOnRenderListener && this._removeOnRenderListener();\r\n this._removeOnRenderListener = vp.onRender.addListener(this._update);\r\n };\r\n\r\n public override componentDidMount() {\r\n // istanbul ignore next\r\n if (!IModelApp.viewManager)\r\n return;\r\n\r\n // get selected viewport\r\n const vp = IModelApp.viewManager.selectedView;\r\n\r\n // if view exists bind update routine to onRender loop, otherwise do so once the onViewOpen event runs\r\n // istanbul ignore else\r\n if (vp) {\r\n this._onViewOpen(vp);\r\n } else {\r\n this._removeViewOpenListener = IModelApp.viewManager.onViewOpen.addListener(this._onViewOpen);\r\n }\r\n }\r\n\r\n public override componentWillUnmount() {\r\n // istanbul ignore next\r\n if (!IModelApp.viewManager)\r\n return;\r\n\r\n // istanbul ignore next\r\n if (this._removeViewOpenListener)\r\n this._removeViewOpenListener();\r\n\r\n // istanbul ignore else\r\n if (this._removeOnRenderListener)\r\n this._removeOnRenderListener();\r\n }\r\n\r\n /** Renders TileLoadingIndicator */\r\n public override render() {\r\n const classes = classnames(\r\n \"uifw-tile-loading-bar\",\r\n this.state.enabled && \"uifw-tile-loading-bar-visible\",\r\n this.props.isInFooterMode && \"nz-footer-mode\",\r\n this.props.className,\r\n );\r\n return (\r\n <div className={classes} style={this.props.style}>\r\n <span>{this.state.label}</span>\r\n <ProgressLinear value={this.state.progress} />\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
@@ -49,7 +49,7 @@ class ThemeManagerComponent extends React.Component {
49
49
  window.setTimeout(() => document.documentElement.classList.remove("theme-transition"), 1000);
50
50
  };
51
51
  this._setWidgetOpacity = (opacity) => {
52
- setImmediate(() => document.documentElement.style.setProperty("--buic-widget-opacity", opacity.toString()));
52
+ setTimeout(() => document.documentElement.style.setProperty("--buic-widget-opacity", opacity.toString()));
53
53
  };
54
54
  this._handleRefSet = (popupDiv) => {
55
55
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,aAAa,EAAa,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,6BAAe,CAAA;IACf,2BAAa,CAAA;AACf,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,kBAAkB,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAY3C,SAAS,eAAe,CAAC,KAAU;IACjC,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAmB,CAAC,CAAE,8CAA8C;IAC9H,qBAAqB;IACrB,IAAI,CAAC,cAAc;QACjB,OAAO,SAAS,CAAC;IAEnB,OAAO;QACL,KAAK,EAAE,cAAc,CAAC,mBAAmB,CAAC,KAAK;QAC/C,aAAa,EAAE,cAAc,CAAC,mBAAmB,CAAC,aAAa;KAChE,CAAC;AACJ,CAAC;AAOD;GACG;AACH,MAAM,qBAAsB,SAAQ,KAAK,CAAC,SAA+C;IAAzF;;QAE2B,UAAK,GAAsB;YAClD,aAAa,EAAE,SAAS;SACzB,CAAC;QAcM,cAAS,GAAG,CAAC,KAAa,EAAE,EAAE;YACpC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC3D,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/F,CAAC,CAAC;QAEM,sBAAiB,GAAG,CAAC,OAAe,EAAE,EAAE;YAC9C,YAAY,CAAC,GAAG,EAAE,CAChB,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAC;QAEM,kBAAa,GAAG,CAAC,QAA4B,EAAE,EAAE;;YACvD,MAAM,aAAa,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,mCAAI,SAAS,CAAC;YAC3D,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;aAClC;QACH,CAAC,CAAC;IAaJ,CAAC;IAzCiB,iBAAiB;QAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEe,kBAAkB,CAAC,SAA4B;QAC7D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK;YACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;QAChG,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,cAAc;YACxD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;IAoBe,MAAM;QACpB,MAAM,KAAK,GAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,4BAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAkB,CAAC;QAEpH,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa;YACrD,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IACnF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACN,CACZ,CACP,CAAC;IACJ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,2DAA2D","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 State\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ThemeProvider, ThemeType } from \"@itwin/itwinui-react\";\r\nimport { FrameworkState } from \"../redux/FrameworkState\";\r\nimport { UiFramework } from \"../UiFramework\";\r\n\r\n/** Enum for the Color Theme string.\r\n * @public\r\n */\r\nexport enum ColorTheme {\r\n Light = \"light\",\r\n Dark = \"dark\",\r\n}\r\n\r\n/** System preferred color theme.\r\n * @public\r\n */\r\nexport const SYSTEM_PREFERRED_COLOR_THEME = \"SYSTEM_PREFERRED\";\r\n\r\n/** The default widget opacity.\r\n * @public\r\n */\r\nexport const WIDGET_OPACITY_DEFAULT = 0.90;\r\n\r\n/** Properties of [[ThemeManagerComponent]].\r\n */\r\ninterface ThemeManagerProps {\r\n /** theme (\"light\", \"dark\", etc.) */\r\n theme: string;\r\n /* Widget Opacity */\r\n widgetOpacity: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\nfunction mapStateToProps(state: any) {\r\n const frameworkState = state[UiFramework.frameworkStateKey] as FrameworkState; // since app sets up key, don't hard-code name\r\n // istanbul ignore if\r\n if (!frameworkState)\r\n return undefined;\r\n\r\n return {\r\n theme: frameworkState.configurableUiState.theme,\r\n widgetOpacity: frameworkState.configurableUiState.widgetOpacity,\r\n };\r\n}\r\n\r\n/** @internal */\r\ninterface ThemeManagerState {\r\n ownerDocument: Document | undefined;\r\n}\r\n\r\n/** ThemeManagerComponent handles setting themes.\r\n */\r\nclass ThemeManagerComponent extends React.Component<ThemeManagerProps, ThemeManagerState> {\r\n\r\n public override readonly state: ThemeManagerState = {\r\n ownerDocument: undefined,\r\n };\r\n\r\n public override componentDidMount() {\r\n this._setTheme(this.props.theme);\r\n }\r\n\r\n public override componentDidUpdate(prevProps: ThemeManagerProps) {\r\n if (this.props.theme !== prevProps.theme)\r\n this._setTheme(this.props.theme);\r\n const currentOpacity = document.documentElement.style.getPropertyValue(\"--buic-widget-opacity\");\r\n if (this.props.widgetOpacity.toString() !== currentOpacity)\r\n this._setWidgetOpacity(this.props.widgetOpacity);\r\n }\r\n\r\n private _setTheme = (theme: string) => {\r\n document.documentElement.classList.add(\"theme-transition\");\r\n document.documentElement.setAttribute(\"data-theme\", theme);\r\n window.setTimeout(() => document.documentElement.classList.remove(\"theme-transition\"), 1000);\r\n };\r\n\r\n private _setWidgetOpacity = (opacity: number) => {\r\n setImmediate(() =>\r\n document.documentElement.style.setProperty(\"--buic-widget-opacity\", opacity.toString()));\r\n };\r\n\r\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\r\n const ownerDocument = popupDiv?.ownerDocument ?? undefined;\r\n if (ownerDocument) {\r\n this.setState({ ownerDocument });\r\n }\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n const theme: ThemeType = (this.props.theme === SYSTEM_PREFERRED_COLOR_THEME) ? \"os\" : this.props.theme as ThemeType;\r\n\r\n return (\r\n <div style={{ height: \"100%\" }} ref={this._handleRefSet}>\r\n <ThemeProvider theme={theme} themeOptions={{ ownerDocument: this.state.ownerDocument }}>\r\n {this.props.children}\r\n </ThemeProvider>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * ThemeManager handles setting color themes.\r\n * This React component is Redux connected.\r\n * @public\r\n */\r\nexport const ThemeManager = connect(mapStateToProps)(ThemeManagerComponent); // eslint-disable-line @typescript-eslint/naming-convention\r\n"]}
1
+ {"version":3,"file":"ThemeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.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 State\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ThemeProvider, ThemeType } from \"@itwin/itwinui-react\";\r\nimport { FrameworkState } from \"../redux/FrameworkState\";\r\nimport { UiFramework } from \"../UiFramework\";\r\n\r\n/** Enum for the Color Theme string.\r\n * @public\r\n */\r\nexport enum ColorTheme {\r\n Light = \"light\",\r\n Dark = \"dark\",\r\n}\r\n\r\n/** System preferred color theme.\r\n * @public\r\n */\r\nexport const SYSTEM_PREFERRED_COLOR_THEME = \"SYSTEM_PREFERRED\";\r\n\r\n/** The default widget opacity.\r\n * @public\r\n */\r\nexport const WIDGET_OPACITY_DEFAULT = 0.90;\r\n\r\n/** Properties of [[ThemeManagerComponent]].\r\n */\r\ninterface ThemeManagerProps {\r\n /** theme (\"light\", \"dark\", etc.) */\r\n theme: string;\r\n /* Widget Opacity */\r\n widgetOpacity: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\nfunction mapStateToProps(state: any) {\r\n const frameworkState = state[UiFramework.frameworkStateKey] as FrameworkState; // since app sets up key, don't hard-code name\r\n // istanbul ignore if\r\n if (!frameworkState)\r\n return undefined;\r\n\r\n return {\r\n theme: frameworkState.configurableUiState.theme,\r\n widgetOpacity: frameworkState.configurableUiState.widgetOpacity,\r\n };\r\n}\r\n\r\n/** @internal */\r\ninterface ThemeManagerState {\r\n ownerDocument: Document | undefined;\r\n}\r\n\r\n/** ThemeManagerComponent handles setting themes.\r\n */\r\nclass ThemeManagerComponent extends React.Component<ThemeManagerProps, ThemeManagerState> {\r\n\r\n public override readonly state: ThemeManagerState = {\r\n ownerDocument: undefined,\r\n };\r\n\r\n public override componentDidMount() {\r\n this._setTheme(this.props.theme);\r\n }\r\n\r\n public override componentDidUpdate(prevProps: ThemeManagerProps) {\r\n if (this.props.theme !== prevProps.theme)\r\n this._setTheme(this.props.theme);\r\n const currentOpacity = document.documentElement.style.getPropertyValue(\"--buic-widget-opacity\");\r\n if (this.props.widgetOpacity.toString() !== currentOpacity)\r\n this._setWidgetOpacity(this.props.widgetOpacity);\r\n }\r\n\r\n private _setTheme = (theme: string) => {\r\n document.documentElement.classList.add(\"theme-transition\");\r\n document.documentElement.setAttribute(\"data-theme\", theme);\r\n window.setTimeout(() => document.documentElement.classList.remove(\"theme-transition\"), 1000);\r\n };\r\n\r\n private _setWidgetOpacity = (opacity: number) => {\r\n setTimeout(() =>\r\n document.documentElement.style.setProperty(\"--buic-widget-opacity\", opacity.toString()));\r\n };\r\n\r\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\r\n const ownerDocument = popupDiv?.ownerDocument ?? undefined;\r\n if (ownerDocument) {\r\n this.setState({ ownerDocument });\r\n }\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n const theme: ThemeType = (this.props.theme === SYSTEM_PREFERRED_COLOR_THEME) ? \"os\" : this.props.theme as ThemeType;\r\n\r\n return (\r\n <div style={{ height: \"100%\" }} ref={this._handleRefSet}>\r\n <ThemeProvider theme={theme} themeOptions={{ ownerDocument: this.state.ownerDocument }}>\r\n {this.props.children}\r\n </ThemeProvider>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * ThemeManager handles setting color themes.\r\n * This React component is Redux connected.\r\n * @public\r\n */\r\nexport const ThemeManager = connect(mapStateToProps)(ThemeManagerComponent); // eslint-disable-line @typescript-eslint/naming-convention\r\n"]}
@@ -24,7 +24,7 @@ export class Toolbar extends React.Component {
24
24
  this._minToolbarSize = (ActionButtonItemDef.defaultButtonSize + 2);
25
25
  this._handleSyncUiEvent = (args) => {
26
26
  if (this._processSyncUiEvent(this.props.items, args)) {
27
- setImmediate(() => {
27
+ setTimeout(() => {
28
28
  // if sync event changed number of displayable buttons layout the toolbar and re-render
29
29
  const items = this.generateToolbarItems(this.props.items, new Size(this.state.width, this.state.height));
30
30
  this.setState({ items });
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/Toolbar.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 Item\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { UiSyncEventArgs } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, NoChildrenProps, Orientation, ResizableContainerObserver, Size } from \"@itwin/core-react\";\r\nimport { Direction, Toolbar as NZ_Toolbar, ToolbarPanelAlignment } from \"@itwin/appui-layout-react\";\r\nimport { ActionButtonItemDef } from \"../shared/ActionButtonItemDef\";\r\nimport { AnyItemDef } from \"../shared/AnyItemDef\";\r\nimport { CustomItemDef } from \"../shared/CustomItemDef\";\r\nimport { ItemDefBase } from \"../shared/ItemDefBase\";\r\nimport { ItemList } from \"../shared/ItemMap\";\r\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { GroupItemDef } from \"./GroupItem\";\r\n\r\n/** Properties of [[Toolbar]] component. An ancestor of this toolbar must provide the WidgetOpacityContext.\r\n * @internal\r\n */\r\nexport interface ToolbarProps extends CommonProps, NoChildrenProps {\r\n /** Items of the toolbar. */\r\n items: ItemList;\r\n /** Orientation of the toolbar. */\r\n orientation: Orientation;\r\n /** Logging and debugging Id */\r\n toolbarId?: string;\r\n /** Describes to which direction the history/panel items are expanded. Defaults to: [[Direction.Bottom]] */\r\n expandsTo?: Direction; // eslint-disable-line deprecation/deprecation\r\n /** Describes how expanded panels are aligned. Defaults to: [[ToolbarPanelAlignment.Start]] */\r\n panelAlignment?: ToolbarPanelAlignment; // eslint-disable-line deprecation/deprecation\r\n /** initial size */\r\n initialSize?: Size;\r\n}\r\n\r\n/** State of [[Toolbar]] component.\r\n * @internal\r\n */\r\ninterface ToolbarState {\r\n width: number;\r\n height: number;\r\n items: React.ReactNode;\r\n}\r\n\r\n/** Toolbar React component.\r\n * @internal\r\n */\r\nexport class Toolbar extends React.Component<ToolbarProps, ToolbarState> {\r\n private _dimension: number = 0;\r\n private _minToolbarSize = (ActionButtonItemDef.defaultButtonSize + 2);\r\n\r\n public constructor(props: ToolbarProps) {\r\n super(props);\r\n\r\n const itemList = this.props.items;\r\n\r\n // Filter on GroupItemDef\r\n itemList.forEach((item: ItemDefBase) => {\r\n if (item instanceof GroupItemDef) {\r\n // istanbul ignore else\r\n if (!item.directionExplicit && this.props.expandsTo !== undefined)\r\n item.direction = this.props.expandsTo;\r\n }\r\n });\r\n\r\n // pick a reasonable initial size, when zone layout occurs a resize event will trigger to adjust this size.\r\n let width = (ActionButtonItemDef.defaultButtonSize + 2) * 3;\r\n let height = width;\r\n\r\n // istanbul ignore next\r\n if (props.initialSize) {\r\n width = props.initialSize.width;\r\n height = props.initialSize.height;\r\n }\r\n\r\n const items = this.generateToolbarItems(this.props.items, new Size(width, height));\r\n\r\n // let's set the default size big enough to hold a single button.\r\n this.state = {\r\n width,\r\n height,\r\n items,\r\n };\r\n }\r\n\r\n private get _toolbarId(): string {\r\n return this.props.toolbarId ? this.props.toolbarId : \"unknown\";\r\n }\r\n\r\n public override componentDidMount() {\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this._handleSyncUiEvent);\r\n }\r\n\r\n public override componentWillUnmount() {\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(this._handleSyncUiEvent);\r\n }\r\n\r\n public override componentDidUpdate(prevProps: ToolbarProps, _prevState: ToolbarState) {\r\n if (this.props.items !== prevProps.items) {\r\n // if sync event changed number of displayable buttons layout the toolbar and re-render\r\n const items = this.generateToolbarItems(this.props.items, new Size(this.state.width, this.state.height));\r\n this.setState({ items });\r\n }\r\n }\r\n\r\n private setCurrentStateValues(item: ItemDefBase): boolean {\r\n // if a stateFunc is specified call it to get current state values\r\n // istanbul ignore else\r\n if (item.stateFunc) { // eslint-disable-line deprecation/deprecation\r\n const itemState = item.stateFunc({ // eslint-disable-line deprecation/deprecation\r\n isVisible: item.isVisible, isEnabled: item.isEnabled, isPressed: item.isPressed, isActive: item.isActive, // eslint-disable-line deprecation/deprecation\r\n });\r\n item.isVisible = !!itemState.isVisible; // eslint-disable-line deprecation/deprecation\r\n item.isEnabled = !!itemState.isEnabled; // eslint-disable-line deprecation/deprecation\r\n item.isPressed = !!itemState.isPressed;\r\n item.isActive = !!itemState.isActive;\r\n return true;\r\n }\r\n // istanbul ignore next\r\n return false;\r\n }\r\n\r\n private _processSyncUiEvent(itemList: ItemList | ItemDefBase[] | AnyItemDef[] | undefined, args: UiSyncEventArgs): boolean {\r\n // istanbul ignore next\r\n if (!itemList || 0 === itemList.length)\r\n return false;\r\n\r\n let returnValue = false;\r\n\r\n // Review all the itemDefs to see if any are monitoring sync events in UiSyncEventArgs\r\n for (const item of itemList) {\r\n if (item.stateFunc && item.stateSyncIds && item.stateSyncIds.length > 0 && // eslint-disable-line deprecation/deprecation\r\n item.stateSyncIds.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) { // eslint-disable-line deprecation/deprecation\r\n if (item instanceof GroupItemDef) {\r\n this.setCurrentStateValues(item);\r\n this._processSyncUiEvent(item.items, args);\r\n } else {\r\n this.setCurrentStateValues(item);\r\n }\r\n returnValue = true;\r\n } else {\r\n // istanbul ignore next\r\n if (item instanceof GroupItemDef) {\r\n if (this._processSyncUiEvent(item.items, args))\r\n returnValue = true;\r\n }\r\n }\r\n }\r\n return returnValue;\r\n }\r\n\r\n private _handleSyncUiEvent = (args: UiSyncEventArgs): void => {\r\n if (this._processSyncUiEvent(this.props.items, args)) {\r\n setImmediate(() => {\r\n // if sync event changed number of displayable buttons layout the toolbar and re-render\r\n const items = this.generateToolbarItems(this.props.items, new Size(this.state.width, this.state.height));\r\n this.setState({ items });\r\n });\r\n }\r\n };\r\n\r\n private layoutToolbarItems(itemList: ItemList): React.ReactNode[] {\r\n // istanbul ignore next -\r\n if (0 === itemList.length)\r\n return [];\r\n\r\n Logger.logInfo(UiFramework.loggerCategory(this), `Available space for toolbar [${this._toolbarId}] = ${this._dimension}`);\r\n\r\n const actionItems = new Array<ActionButtonItemDef>();\r\n let itemDimensions = 0;\r\n\r\n // Filter on ActionButtonItemDef\r\n itemList.forEach((item: ItemDefBase) => {\r\n // istanbul ignore else\r\n if (item.isVisible) { // eslint-disable-line deprecation/deprecation\r\n // istanbul ignore else\r\n if (item instanceof ActionButtonItemDef) {\r\n actionItems.push(item);\r\n }\r\n }\r\n });\r\n\r\n // Populate the overflow button\r\n let overflowItemDef: GroupItemDef | undefined;\r\n if (actionItems.length > 1) {\r\n // Get the item dimensions\r\n actionItems.forEach((item: ActionButtonItemDef) => {\r\n const itemSize = item.getDimension(this.props.orientation) + 1;\r\n itemDimensions += itemSize;\r\n Logger.logTrace(UiFramework.loggerCategory(this), ` Item [${item.id ? item.id : /* istanbul ignore next */ item.label}] has a size of ${itemSize} cumulative size=${itemDimensions}.`);\r\n });\r\n\r\n Logger.logInfo(UiFramework.loggerCategory(this), ` Needed toolbar size [${this._toolbarId}] = ${itemDimensions}`);\r\n\r\n // istanbul ignore next - currently unable to set size in unit test\r\n const padding = 2; // used just to insure button will fall inside tool box\r\n if (itemDimensions > (this._dimension - padding)) {\r\n const overflowItems: AnyItemDef[] = [];\r\n const lastItemIndex = actionItems.length - 1;\r\n let singleItemSize = 0;\r\n for (let index = lastItemIndex; index >= 0; index--) {\r\n // istanbul ignore next\r\n if (actionItems[index] instanceof CustomItemDef)\r\n continue;\r\n if (0 === singleItemSize)\r\n singleItemSize = actionItems[index].getDimension(this.props.orientation);\r\n\r\n const deletedItems = actionItems.splice(index, 1);\r\n // istanbul ignore else\r\n if (deletedItems.length === 1) {\r\n const item = deletedItems[0];\r\n overflowItems.unshift(item);\r\n Logger.logTrace(UiFramework.loggerCategory(this), ` * Item [${item.id ? item.id : /* istanbul ignore next */ item.label}] put into overflow items.`);\r\n\r\n let currentWidth = 0;\r\n actionItems.forEach((itemDef) => currentWidth += (itemDef.getDimension(this.props.orientation) + 1));\r\n itemDimensions = (currentWidth + singleItemSize);\r\n if (itemDimensions < (this._dimension - padding))\r\n break;\r\n }\r\n }\r\n\r\n overflowItemDef = new GroupItemDef({\r\n groupId: `overflow-group-${itemDimensions}-${actionItems.length}-${overflowItems.length}`,\r\n labelKey: \"UiFramework:general.overflow\",\r\n items: overflowItems,\r\n direction: this.props.expandsTo,\r\n });\r\n overflowItemDef.overflow = true;\r\n }\r\n }\r\n\r\n // Populate the toolbar items\r\n const toolbarItems = actionItems.map((item: ActionButtonItemDef, index: number) => {\r\n return item.toolbarReactNode(index);\r\n });\r\n\r\n // istanbul ignore next - currently unsure how to trigger sizing/resizing so overflow is never populated\r\n if (overflowItemDef)\r\n toolbarItems.push(overflowItemDef.toolbarReactNode());\r\n\r\n return toolbarItems;\r\n }\r\n\r\n private generateToolbarItems(itemList: ItemList, size: Size): React.ReactNode {\r\n this._dimension = (this.props.orientation === Orientation.Horizontal ? size.width : size.height);\r\n // istanbul ignore next - since sizing is not working in unit test size and dimension always set to default of 42\r\n if (this._dimension < this._minToolbarSize)\r\n this._dimension = this._minToolbarSize;\r\n\r\n return this.layoutToolbarItems(itemList);\r\n }\r\n\r\n // istanbul ignore next - currently unable to replicate resizing in unit test\r\n private _onResize = (width: number | undefined, height: number | undefined) => {\r\n width = width ?? this._minToolbarSize;\r\n height = height ?? this._minToolbarSize;\r\n // do allow toolbar to go to a size that doesn't show at least one button;\r\n if (width < this._minToolbarSize) width = this._minToolbarSize;\r\n if (height < this._minToolbarSize) height = this._minToolbarSize;\r\n if (this.state.width !== width || this.state.height !== height) {\r\n const items = this.generateToolbarItems(this.props.items, new Size(width, height));\r\n this.setState({ width, height, items });\r\n }\r\n };\r\n\r\n private hasVisibleItems(items: ItemList) {\r\n for (const item of items) {\r\n // istanbul ignore else\r\n if (item && item.isVisible) // eslint-disable-line deprecation/deprecation\r\n return true;\r\n }\r\n // istanbul ignore next\r\n return false;\r\n }\r\n\r\n public override render() {\r\n // istanbul ignore next\r\n if (0 === this.props.items.length || !this.hasVisibleItems(this.props.items)) {\r\n Logger.logTrace(UiFramework.loggerCategory(this), `---> nothing to render for ${this._toolbarId} `);\r\n return null;\r\n }\r\n\r\n Logger.logTrace(UiFramework.loggerCategory(this), `---> render ${this._toolbarId} `);\r\n return (\r\n <ResizableContainerObserver onResize={this._onResize}>\r\n <NZ_Toolbar // eslint-disable-line deprecation/deprecation\r\n style={this.props.style}\r\n className={this.props.className}\r\n expandsTo={this.props.expandsTo}\r\n panelAlignment={this.props.panelAlignment}\r\n items={\r\n <>\r\n {this.state.items}\r\n </>\r\n }\r\n />\r\n </ResizableContainerObserver>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/Toolbar.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 Item\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { UiSyncEventArgs } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, NoChildrenProps, Orientation, ResizableContainerObserver, Size } from \"@itwin/core-react\";\r\nimport { Direction, Toolbar as NZ_Toolbar, ToolbarPanelAlignment } from \"@itwin/appui-layout-react\";\r\nimport { ActionButtonItemDef } from \"../shared/ActionButtonItemDef\";\r\nimport { AnyItemDef } from \"../shared/AnyItemDef\";\r\nimport { CustomItemDef } from \"../shared/CustomItemDef\";\r\nimport { ItemDefBase } from \"../shared/ItemDefBase\";\r\nimport { ItemList } from \"../shared/ItemMap\";\r\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { GroupItemDef } from \"./GroupItem\";\r\n\r\n/** Properties of [[Toolbar]] component. An ancestor of this toolbar must provide the WidgetOpacityContext.\r\n * @internal\r\n */\r\nexport interface ToolbarProps extends CommonProps, NoChildrenProps {\r\n /** Items of the toolbar. */\r\n items: ItemList;\r\n /** Orientation of the toolbar. */\r\n orientation: Orientation;\r\n /** Logging and debugging Id */\r\n toolbarId?: string;\r\n /** Describes to which direction the history/panel items are expanded. Defaults to: [[Direction.Bottom]] */\r\n expandsTo?: Direction; // eslint-disable-line deprecation/deprecation\r\n /** Describes how expanded panels are aligned. Defaults to: [[ToolbarPanelAlignment.Start]] */\r\n panelAlignment?: ToolbarPanelAlignment; // eslint-disable-line deprecation/deprecation\r\n /** initial size */\r\n initialSize?: Size;\r\n}\r\n\r\n/** State of [[Toolbar]] component.\r\n * @internal\r\n */\r\ninterface ToolbarState {\r\n width: number;\r\n height: number;\r\n items: React.ReactNode;\r\n}\r\n\r\n/** Toolbar React component.\r\n * @internal\r\n */\r\nexport class Toolbar extends React.Component<ToolbarProps, ToolbarState> {\r\n private _dimension: number = 0;\r\n private _minToolbarSize = (ActionButtonItemDef.defaultButtonSize + 2);\r\n\r\n public constructor(props: ToolbarProps) {\r\n super(props);\r\n\r\n const itemList = this.props.items;\r\n\r\n // Filter on GroupItemDef\r\n itemList.forEach((item: ItemDefBase) => {\r\n if (item instanceof GroupItemDef) {\r\n // istanbul ignore else\r\n if (!item.directionExplicit && this.props.expandsTo !== undefined)\r\n item.direction = this.props.expandsTo;\r\n }\r\n });\r\n\r\n // pick a reasonable initial size, when zone layout occurs a resize event will trigger to adjust this size.\r\n let width = (ActionButtonItemDef.defaultButtonSize + 2) * 3;\r\n let height = width;\r\n\r\n // istanbul ignore next\r\n if (props.initialSize) {\r\n width = props.initialSize.width;\r\n height = props.initialSize.height;\r\n }\r\n\r\n const items = this.generateToolbarItems(this.props.items, new Size(width, height));\r\n\r\n // let's set the default size big enough to hold a single button.\r\n this.state = {\r\n width,\r\n height,\r\n items,\r\n };\r\n }\r\n\r\n private get _toolbarId(): string {\r\n return this.props.toolbarId ? this.props.toolbarId : \"unknown\";\r\n }\r\n\r\n public override componentDidMount() {\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this._handleSyncUiEvent);\r\n }\r\n\r\n public override componentWillUnmount() {\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(this._handleSyncUiEvent);\r\n }\r\n\r\n public override componentDidUpdate(prevProps: ToolbarProps, _prevState: ToolbarState) {\r\n if (this.props.items !== prevProps.items) {\r\n // if sync event changed number of displayable buttons layout the toolbar and re-render\r\n const items = this.generateToolbarItems(this.props.items, new Size(this.state.width, this.state.height));\r\n this.setState({ items });\r\n }\r\n }\r\n\r\n private setCurrentStateValues(item: ItemDefBase): boolean {\r\n // if a stateFunc is specified call it to get current state values\r\n // istanbul ignore else\r\n if (item.stateFunc) { // eslint-disable-line deprecation/deprecation\r\n const itemState = item.stateFunc({ // eslint-disable-line deprecation/deprecation\r\n isVisible: item.isVisible, isEnabled: item.isEnabled, isPressed: item.isPressed, isActive: item.isActive, // eslint-disable-line deprecation/deprecation\r\n });\r\n item.isVisible = !!itemState.isVisible; // eslint-disable-line deprecation/deprecation\r\n item.isEnabled = !!itemState.isEnabled; // eslint-disable-line deprecation/deprecation\r\n item.isPressed = !!itemState.isPressed;\r\n item.isActive = !!itemState.isActive;\r\n return true;\r\n }\r\n // istanbul ignore next\r\n return false;\r\n }\r\n\r\n private _processSyncUiEvent(itemList: ItemList | ItemDefBase[] | AnyItemDef[] | undefined, args: UiSyncEventArgs): boolean {\r\n // istanbul ignore next\r\n if (!itemList || 0 === itemList.length)\r\n return false;\r\n\r\n let returnValue = false;\r\n\r\n // Review all the itemDefs to see if any are monitoring sync events in UiSyncEventArgs\r\n for (const item of itemList) {\r\n if (item.stateFunc && item.stateSyncIds && item.stateSyncIds.length > 0 && // eslint-disable-line deprecation/deprecation\r\n item.stateSyncIds.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) { // eslint-disable-line deprecation/deprecation\r\n if (item instanceof GroupItemDef) {\r\n this.setCurrentStateValues(item);\r\n this._processSyncUiEvent(item.items, args);\r\n } else {\r\n this.setCurrentStateValues(item);\r\n }\r\n returnValue = true;\r\n } else {\r\n // istanbul ignore next\r\n if (item instanceof GroupItemDef) {\r\n if (this._processSyncUiEvent(item.items, args))\r\n returnValue = true;\r\n }\r\n }\r\n }\r\n return returnValue;\r\n }\r\n\r\n private _handleSyncUiEvent = (args: UiSyncEventArgs): void => {\r\n if (this._processSyncUiEvent(this.props.items, args)) {\r\n setTimeout(() => {\r\n // if sync event changed number of displayable buttons layout the toolbar and re-render\r\n const items = this.generateToolbarItems(this.props.items, new Size(this.state.width, this.state.height));\r\n this.setState({ items });\r\n });\r\n }\r\n };\r\n\r\n private layoutToolbarItems(itemList: ItemList): React.ReactNode[] {\r\n // istanbul ignore next -\r\n if (0 === itemList.length)\r\n return [];\r\n\r\n Logger.logInfo(UiFramework.loggerCategory(this), `Available space for toolbar [${this._toolbarId}] = ${this._dimension}`);\r\n\r\n const actionItems = new Array<ActionButtonItemDef>();\r\n let itemDimensions = 0;\r\n\r\n // Filter on ActionButtonItemDef\r\n itemList.forEach((item: ItemDefBase) => {\r\n // istanbul ignore else\r\n if (item.isVisible) { // eslint-disable-line deprecation/deprecation\r\n // istanbul ignore else\r\n if (item instanceof ActionButtonItemDef) {\r\n actionItems.push(item);\r\n }\r\n }\r\n });\r\n\r\n // Populate the overflow button\r\n let overflowItemDef: GroupItemDef | undefined;\r\n if (actionItems.length > 1) {\r\n // Get the item dimensions\r\n actionItems.forEach((item: ActionButtonItemDef) => {\r\n const itemSize = item.getDimension(this.props.orientation) + 1;\r\n itemDimensions += itemSize;\r\n Logger.logTrace(UiFramework.loggerCategory(this), ` Item [${item.id ? item.id : /* istanbul ignore next */ item.label}] has a size of ${itemSize} cumulative size=${itemDimensions}.`);\r\n });\r\n\r\n Logger.logInfo(UiFramework.loggerCategory(this), ` Needed toolbar size [${this._toolbarId}] = ${itemDimensions}`);\r\n\r\n // istanbul ignore next - currently unable to set size in unit test\r\n const padding = 2; // used just to insure button will fall inside tool box\r\n if (itemDimensions > (this._dimension - padding)) {\r\n const overflowItems: AnyItemDef[] = [];\r\n const lastItemIndex = actionItems.length - 1;\r\n let singleItemSize = 0;\r\n for (let index = lastItemIndex; index >= 0; index--) {\r\n // istanbul ignore next\r\n if (actionItems[index] instanceof CustomItemDef)\r\n continue;\r\n if (0 === singleItemSize)\r\n singleItemSize = actionItems[index].getDimension(this.props.orientation);\r\n\r\n const deletedItems = actionItems.splice(index, 1);\r\n // istanbul ignore else\r\n if (deletedItems.length === 1) {\r\n const item = deletedItems[0];\r\n overflowItems.unshift(item);\r\n Logger.logTrace(UiFramework.loggerCategory(this), ` * Item [${item.id ? item.id : /* istanbul ignore next */ item.label}] put into overflow items.`);\r\n\r\n let currentWidth = 0;\r\n actionItems.forEach((itemDef) => currentWidth += (itemDef.getDimension(this.props.orientation) + 1));\r\n itemDimensions = (currentWidth + singleItemSize);\r\n if (itemDimensions < (this._dimension - padding))\r\n break;\r\n }\r\n }\r\n\r\n overflowItemDef = new GroupItemDef({\r\n groupId: `overflow-group-${itemDimensions}-${actionItems.length}-${overflowItems.length}`,\r\n labelKey: \"UiFramework:general.overflow\",\r\n items: overflowItems,\r\n direction: this.props.expandsTo,\r\n });\r\n overflowItemDef.overflow = true;\r\n }\r\n }\r\n\r\n // Populate the toolbar items\r\n const toolbarItems = actionItems.map((item: ActionButtonItemDef, index: number) => {\r\n return item.toolbarReactNode(index);\r\n });\r\n\r\n // istanbul ignore next - currently unsure how to trigger sizing/resizing so overflow is never populated\r\n if (overflowItemDef)\r\n toolbarItems.push(overflowItemDef.toolbarReactNode());\r\n\r\n return toolbarItems;\r\n }\r\n\r\n private generateToolbarItems(itemList: ItemList, size: Size): React.ReactNode {\r\n this._dimension = (this.props.orientation === Orientation.Horizontal ? size.width : size.height);\r\n // istanbul ignore next - since sizing is not working in unit test size and dimension always set to default of 42\r\n if (this._dimension < this._minToolbarSize)\r\n this._dimension = this._minToolbarSize;\r\n\r\n return this.layoutToolbarItems(itemList);\r\n }\r\n\r\n // istanbul ignore next - currently unable to replicate resizing in unit test\r\n private _onResize = (width: number | undefined, height: number | undefined) => {\r\n width = width ?? this._minToolbarSize;\r\n height = height ?? this._minToolbarSize;\r\n // do allow toolbar to go to a size that doesn't show at least one button;\r\n if (width < this._minToolbarSize) width = this._minToolbarSize;\r\n if (height < this._minToolbarSize) height = this._minToolbarSize;\r\n if (this.state.width !== width || this.state.height !== height) {\r\n const items = this.generateToolbarItems(this.props.items, new Size(width, height));\r\n this.setState({ width, height, items });\r\n }\r\n };\r\n\r\n private hasVisibleItems(items: ItemList) {\r\n for (const item of items) {\r\n // istanbul ignore else\r\n if (item && item.isVisible) // eslint-disable-line deprecation/deprecation\r\n return true;\r\n }\r\n // istanbul ignore next\r\n return false;\r\n }\r\n\r\n public override render() {\r\n // istanbul ignore next\r\n if (0 === this.props.items.length || !this.hasVisibleItems(this.props.items)) {\r\n Logger.logTrace(UiFramework.loggerCategory(this), `---> nothing to render for ${this._toolbarId} `);\r\n return null;\r\n }\r\n\r\n Logger.logTrace(UiFramework.loggerCategory(this), `---> render ${this._toolbarId} `);\r\n return (\r\n <ResizableContainerObserver onResize={this._onResize}>\r\n <NZ_Toolbar // eslint-disable-line deprecation/deprecation\r\n style={this.props.style}\r\n className={this.props.className}\r\n expandsTo={this.props.expandsTo}\r\n panelAlignment={this.props.panelAlignment}\r\n items={\r\n <>\r\n {this.state.items}\r\n </>\r\n }\r\n />\r\n </ResizableContainerObserver>\r\n );\r\n }\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/appui-react",
3
- "version": "3.2.0-dev.13",
3
+ "version": "3.2.0-dev.14",
4
4
  "description": "UI framework",
5
5
  "main": "lib/cjs/appui-react.js",
6
6
  "module": "lib/esm/appui-react.js",
@@ -21,19 +21,19 @@
21
21
  "url": "http://www.bentley.com"
22
22
  },
23
23
  "peerDependencies": {
24
- "@itwin/appui-abstract": "^3.2.0-dev.13",
25
- "@itwin/appui-layout-react": "^3.2.0-dev.13",
26
- "@itwin/components-react": "^3.2.0-dev.13",
27
- "@itwin/core-bentley": "^3.2.0-dev.13",
28
- "@itwin/core-common": "^3.2.0-dev.13",
29
- "@itwin/core-frontend": "^3.2.0-dev.13",
30
- "@itwin/core-geometry": "^3.2.0-dev.13",
31
- "@itwin/core-markup": "^3.2.0-dev.13",
32
- "@itwin/core-quantity": "^3.2.0-dev.13",
33
- "@itwin/core-react": "^3.2.0-dev.13",
34
- "@itwin/imodel-components-react": "^3.2.0-dev.13",
35
- "@itwin/presentation-common": "^3.2.0-dev.13",
36
- "@itwin/presentation-frontend": "^3.2.0-dev.13",
24
+ "@itwin/appui-abstract": "^3.2.0-dev.14",
25
+ "@itwin/appui-layout-react": "^3.2.0-dev.14",
26
+ "@itwin/components-react": "^3.2.0-dev.14",
27
+ "@itwin/core-bentley": "^3.2.0-dev.14",
28
+ "@itwin/core-common": "^3.2.0-dev.14",
29
+ "@itwin/core-frontend": "^3.2.0-dev.14",
30
+ "@itwin/core-geometry": "^3.2.0-dev.14",
31
+ "@itwin/core-markup": "^3.2.0-dev.14",
32
+ "@itwin/core-quantity": "^3.2.0-dev.14",
33
+ "@itwin/core-react": "^3.2.0-dev.14",
34
+ "@itwin/imodel-components-react": "^3.2.0-dev.14",
35
+ "@itwin/presentation-common": "^3.2.0-dev.14",
36
+ "@itwin/presentation-frontend": "^3.2.0-dev.14",
37
37
  "react": "^17.0.0",
38
38
  "react-dom": "^17.0.0",
39
39
  "react-redux": "^7.2.2",
@@ -44,22 +44,22 @@
44
44
  "NOTE: All tools used by scripts in this package must be listed as devDependencies"
45
45
  ],
46
46
  "devDependencies": {
47
- "@itwin/appui-abstract": "3.2.0-dev.13",
48
- "@itwin/appui-layout-react": "3.2.0-dev.13",
49
- "@itwin/build-tools": "3.2.0-dev.13",
50
- "@itwin/components-react": "3.2.0-dev.13",
51
- "@itwin/core-bentley": "3.2.0-dev.13",
52
- "@itwin/core-common": "3.2.0-dev.13",
53
- "@itwin/core-frontend": "3.2.0-dev.13",
54
- "@itwin/core-geometry": "3.2.0-dev.13",
55
- "@itwin/core-markup": "3.2.0-dev.13",
56
- "@itwin/core-quantity": "3.2.0-dev.13",
57
- "@itwin/core-react": "3.2.0-dev.13",
58
- "@itwin/eslint-plugin": "3.2.0-dev.13",
59
- "@itwin/imodel-components-react": "3.2.0-dev.13",
60
- "@itwin/presentation-common": "3.2.0-dev.13",
61
- "@itwin/presentation-frontend": "3.2.0-dev.13",
62
- "@itwin/presentation-testing": "3.2.0-dev.13",
47
+ "@itwin/appui-abstract": "3.2.0-dev.14",
48
+ "@itwin/appui-layout-react": "3.2.0-dev.14",
49
+ "@itwin/build-tools": "3.2.0-dev.14",
50
+ "@itwin/components-react": "3.2.0-dev.14",
51
+ "@itwin/core-bentley": "3.2.0-dev.14",
52
+ "@itwin/core-common": "3.2.0-dev.14",
53
+ "@itwin/core-frontend": "3.2.0-dev.14",
54
+ "@itwin/core-geometry": "3.2.0-dev.14",
55
+ "@itwin/core-markup": "3.2.0-dev.14",
56
+ "@itwin/core-quantity": "3.2.0-dev.14",
57
+ "@itwin/core-react": "3.2.0-dev.14",
58
+ "@itwin/eslint-plugin": "3.2.0-dev.14",
59
+ "@itwin/imodel-components-react": "3.2.0-dev.14",
60
+ "@itwin/presentation-common": "3.2.0-dev.14",
61
+ "@itwin/presentation-frontend": "3.2.0-dev.14",
62
+ "@itwin/presentation-testing": "3.2.0-dev.14",
63
63
  "@testing-library/react": "^12.0.0",
64
64
  "@testing-library/react-hooks": "^7.0.2",
65
65
  "@types/chai": "^4.1.4",
@@ -114,8 +114,8 @@
114
114
  "dependencies": {
115
115
  "@bentley/icons-generic": "^1.0.15",
116
116
  "@bentley/icons-generic-webfont": "^1.0.15",
117
- "@itwin/core-telemetry": "3.2.0-dev.13",
118
- "@itwin/presentation-components": "3.2.0-dev.13",
117
+ "@itwin/core-telemetry": "3.2.0-dev.14",
118
+ "@itwin/presentation-components": "3.2.0-dev.14",
119
119
  "@itwin/itwinui-css": "0.44.2",
120
120
  "@itwin/itwinui-react": "^1.32.0",
121
121
  "classnames": "^2.3.1",