@itwin/components-react 4.3.0 → 4.4.0

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 (125) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts +23 -9
  3. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
  4. package/lib/cjs/components-react/filter-builder/FilterBuilder.js +19 -8
  5. package/lib/cjs/components-react/filter-builder/FilterBuilder.js.map +1 -1
  6. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts +8 -5
  7. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -1
  8. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js +40 -18
  9. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  10. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
  11. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js +7 -4
  12. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  13. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +8 -1
  14. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
  15. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js +3 -2
  16. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  17. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +1 -1
  18. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  19. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts +11 -2
  20. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
  21. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +2 -3
  22. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  23. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts +49 -10
  24. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  25. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js +106 -13
  26. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  27. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts +144 -0
  28. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -0
  29. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js +550 -0
  30. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js.map +1 -0
  31. package/lib/cjs/components-react/toolbar/ItemWrapper.js +3 -3
  32. package/lib/cjs/components-react/toolbar/ItemWrapper.js.map +1 -1
  33. package/lib/cjs/components-react/toolbar/Items.js +5 -5
  34. package/lib/cjs/components-react/toolbar/Items.js.map +1 -1
  35. package/lib/cjs/components-react/toolbar/Overflow.js +3 -3
  36. package/lib/cjs/components-react/toolbar/Overflow.js.map +1 -1
  37. package/lib/cjs/components-react/toolbar/OverflowPanel.js +5 -5
  38. package/lib/cjs/components-react/toolbar/OverflowPanel.js.map +1 -1
  39. package/lib/cjs/components-react/toolbar/PopupItem.js +4 -4
  40. package/lib/cjs/components-react/toolbar/PopupItem.js.map +1 -1
  41. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.d.ts +1 -1
  42. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  43. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js +4 -4
  44. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  45. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js +2 -2
  46. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  47. package/lib/cjs/components-react/toolbar/Toolbar.d.ts +2 -2
  48. package/lib/cjs/components-react/toolbar/Toolbar.d.ts.map +1 -1
  49. package/lib/cjs/components-react/toolbar/Toolbar.js +2 -69
  50. package/lib/cjs/components-react/toolbar/Toolbar.js.map +1 -1
  51. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts +5 -105
  52. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  53. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js +6 -481
  54. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  55. package/lib/cjs/components-react/toolbar/useConditionalSynchedItems.d.ts +14 -0
  56. package/lib/cjs/components-react/toolbar/useConditionalSynchedItems.d.ts.map +1 -0
  57. package/lib/cjs/components-react/toolbar/useConditionalSynchedItems.js +119 -0
  58. package/lib/cjs/components-react/toolbar/useConditionalSynchedItems.js.map +1 -0
  59. package/lib/cjs/components-react.d.ts +6 -2
  60. package/lib/cjs/components-react.d.ts.map +1 -1
  61. package/lib/cjs/components-react.js +6 -2
  62. package/lib/cjs/components-react.js.map +1 -1
  63. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts +23 -9
  64. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
  65. package/lib/esm/components-react/filter-builder/FilterBuilder.js +17 -7
  66. package/lib/esm/components-react/filter-builder/FilterBuilder.js.map +1 -1
  67. package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts +8 -5
  68. package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -1
  69. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js +40 -18
  70. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  71. package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
  72. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js +8 -5
  73. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  74. package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +8 -1
  75. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
  76. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js +3 -2
  77. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  78. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +1 -1
  79. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  80. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts +11 -2
  81. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
  82. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +2 -3
  83. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  84. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts +49 -10
  85. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  86. package/lib/esm/components-react/filter-builder/FilterBuilderState.js +99 -7
  87. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  88. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts +144 -0
  89. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -0
  90. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js +514 -0
  91. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js.map +1 -0
  92. package/lib/esm/components-react/toolbar/ItemWrapper.js +1 -1
  93. package/lib/esm/components-react/toolbar/ItemWrapper.js.map +1 -1
  94. package/lib/esm/components-react/toolbar/Items.js +1 -1
  95. package/lib/esm/components-react/toolbar/Items.js.map +1 -1
  96. package/lib/esm/components-react/toolbar/Overflow.js +1 -1
  97. package/lib/esm/components-react/toolbar/Overflow.js.map +1 -1
  98. package/lib/esm/components-react/toolbar/OverflowPanel.js +1 -1
  99. package/lib/esm/components-react/toolbar/OverflowPanel.js.map +1 -1
  100. package/lib/esm/components-react/toolbar/PopupItem.js +1 -1
  101. package/lib/esm/components-react/toolbar/PopupItem.js.map +1 -1
  102. package/lib/esm/components-react/toolbar/PopupItemWithDrag.d.ts +1 -1
  103. package/lib/esm/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  104. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js +1 -1
  105. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  106. package/lib/esm/components-react/toolbar/PopupItemsPanel.js +1 -1
  107. package/lib/esm/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  108. package/lib/esm/components-react/toolbar/Toolbar.d.ts +2 -2
  109. package/lib/esm/components-react/toolbar/Toolbar.d.ts.map +1 -1
  110. package/lib/esm/components-react/toolbar/Toolbar.js +2 -66
  111. package/lib/esm/components-react/toolbar/Toolbar.js.map +1 -1
  112. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts +5 -105
  113. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  114. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js +5 -471
  115. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  116. package/lib/esm/components-react/toolbar/useConditionalSynchedItems.d.ts +14 -0
  117. package/lib/esm/components-react/toolbar/useConditionalSynchedItems.d.ts.map +1 -0
  118. package/lib/esm/components-react/toolbar/useConditionalSynchedItems.js +92 -0
  119. package/lib/esm/components-react/toolbar/useConditionalSynchedItems.js.map +1 -0
  120. package/lib/esm/components-react.d.ts +6 -2
  121. package/lib/esm/components-react.d.ts.map +1 -1
  122. package/lib/esm/components-react.js +6 -2
  123. package/lib/esm/components-react.js.map +1 -1
  124. package/lib/public/locales/en/UiComponents.json +4 -1
  125. package/package.json +8 -9
@@ -29,85 +29,18 @@ var __importStar = (this && this.__importStar) || function (mod) {
29
29
  __setModuleDefault(result, mod);
30
30
  return result;
31
31
  };
32
- var __importDefault = (this && this.__importDefault) || function (mod) {
33
- return (mod && mod.__esModule) ? mod : { "default": mod };
34
- };
35
32
  Object.defineProperty(exports, "__esModule", { value: true });
36
33
  exports.Toolbar = void 0;
37
34
  require("./Toolbar.scss");
38
- const classnames_1 = __importDefault(require("classnames"));
39
35
  const React = __importStar(require("react"));
40
- const Items_1 = require("./Items");
41
- const Direction_1 = require("./utilities/Direction");
42
- const ToolbarWithOverflow_1 = require("./ToolbarWithOverflow");
43
- function getItemWrapperClass(child) {
44
- // istanbul ignore else
45
- if (React.isValidElement(child)) {
46
- if (child.props && child.props.addGroupSeparator)
47
- return "components-toolbar-button-add-gap-before";
48
- }
49
- return "";
50
- }
36
+ const InternalToolbarComponent_1 = require("./InternalToolbarComponent");
51
37
  /** Component that displays toolbar items.
52
38
  * @public
53
39
  * @deprecated in 4.0. Use [Toolbar]($appui-react) instead.
54
40
  */
55
41
  // eslint-disable-next-line deprecation/deprecation
56
42
  function Toolbar(props) {
57
- const expandsTo = props.expandsTo ? props.expandsTo : Direction_1.Direction.Bottom;
58
- const useDragInteraction = !!props.useDragInteraction;
59
- const panelAlignment = props.panelAlignment
60
- ? props.panelAlignment
61
- : ToolbarWithOverflow_1.ToolbarPanelAlignment.Start;
62
- const [popupPanelCount, setPopupPanelCount] = React.useState(0);
63
- const handlePopupPanelOpenClose = React.useCallback((isOpening) => {
64
- // use setTimeout to avoid warning about setting state in Toolbar from render method of PopupItem/PopupItemWithDrag
65
- setTimeout(() => {
66
- setPopupPanelCount((prev) => {
67
- const nextCount = isOpening ? prev + 1 : prev - 1;
68
- return nextCount < 0 ? /* istanbul ignore next */ 0 : nextCount;
69
- });
70
- });
71
- }, []);
72
- const availableNodes = React.useMemo(() => {
73
- return props.items.map((item, index) => {
74
- let addGroupSeparator = false;
75
- if (index > 0)
76
- addGroupSeparator =
77
- item.groupPriority !== props.items[index - 1].groupPriority;
78
- return (React.createElement(ToolbarWithOverflow_1.ToolbarItemComponent, { key: item.id, item: item, addGroupSeparator: !!addGroupSeparator }));
79
- });
80
- }, [props.items]);
81
- const direction = (0, ToolbarWithOverflow_1.getToolbarDirection)(expandsTo);
82
- const className = (0, classnames_1.default)("components-toolbar-overflow-sizer", Direction_1.OrthogonalDirectionHelpers.getCssClassName(direction), props.className);
83
- // needed to construct DOM structure identical to ToolbarWithOverflow so same css can be applied.
84
- const wrapperClassName = (0, classnames_1.default)("components-toolbar-item-container", Direction_1.OrthogonalDirectionHelpers.getCssClassName(direction));
85
- return (React.createElement(ToolbarWithOverflow_1.ToolbarWithOverflowDirectionContext.Provider, { value: {
86
- expandsTo,
87
- direction,
88
- overflowExpandsTo: Direction_1.Direction.Right,
89
- panelAlignment,
90
- useDragInteraction,
91
- toolbarOpacitySetting: props.toolbarOpacitySetting
92
- ? props.toolbarOpacitySetting
93
- : ToolbarWithOverflow_1.ToolbarOpacitySetting.Proximity,
94
- overflowDirection: Direction_1.OrthogonalDirection.Horizontal,
95
- openPopupCount: popupPanelCount,
96
- onPopupPanelOpenClose: handlePopupPanelOpenClose,
97
- overflowDisplayActive: false,
98
- onItemExecuted: props.onItemExecuted
99
- ? props.onItemExecuted
100
- : /* istanbul ignore next */ () => { },
101
- onKeyDown: props.onKeyDown
102
- ? props.onKeyDown
103
- : /* istanbul ignore next */ (_e) => { },
104
- } },
105
- React.createElement(ToolbarWithOverflow_1.ToolbarItemContext.Provider, { value: {
106
- hasOverflow: false,
107
- useHeight: false,
108
- onResize: /* istanbul ignore next */ () => { },
109
- } }, availableNodes.length > 0 && (React.createElement("div", { className: className, style: props.style, onKeyDown: props.onKeyDown, role: "presentation" },
110
- React.createElement(Items_1.ToolbarItems, { className: "components-items", direction: direction }, availableNodes.map((child, index) => (React.createElement("div", { key: index, className: `${wrapperClassName} ${getItemWrapperClass(child)}` }, child)))))))));
43
+ return React.createElement(InternalToolbarComponent_1.InternalToolbarComponent, { ...props });
111
44
  }
112
45
  exports.Toolbar = Toolbar;
113
46
  //# sourceMappingURL=Toolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/Toolbar.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,0BAAwB;AACxB,4DAAoC;AACpC,6CAA+B;AAM/B,mCAAuC;AACvC,qDAI+B;AAC/B,+DAO+B;AAuB/B,SAAS,mBAAmB,CAAC,KAAsB;IACjD,uBAAuB;IACvB,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QAC/B,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,iBAAiB;YAC9C,OAAO,0CAA0C,CAAC;KACrD;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,mDAAmD;AACnD,SAAgB,OAAO,CAAC,KAAmB;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAS,CAAC,MAAM,CAAC;IACvE,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACtD,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc;QACzC,CAAC,CAAC,KAAK,CAAC,cAAc;QACtB,CAAC,CAAC,2CAAqB,CAAC,KAAK,CAAC;IAChC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,yBAAyB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,SAAkB,EAAE,EAAE;QACzE,mHAAmH;QACnH,UAAU,CAAC,GAAG,EAAE;YACd,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC1B,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBAClD,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAoB,GAAG,EAAE;QAC3D,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACrC,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAC9B,IAAI,KAAK,GAAG,CAAC;gBACX,iBAAiB;oBACf,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;YAChE,OAAO,CACL,oBAAC,0CAAoB,IACnB,GAAG,EAAE,IAAI,CAAC,EAAE,EACZ,IAAI,EAAE,IAAI,EACV,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,GACtC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAElB,MAAM,SAAS,GAAG,IAAA,yCAAmB,EAAC,SAAS,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAA,oBAAU,EAC1B,mCAAmC,EACnC,sCAA0B,CAAC,eAAe,CAAC,SAAS,CAAC,EACrD,KAAK,CAAC,SAAS,CAChB,CAAC;IAEF,iGAAiG;IACjG,MAAM,gBAAgB,GAAG,IAAA,oBAAU,EACjC,mCAAmC,EACnC,sCAA0B,CAAC,eAAe,CAAC,SAAS,CAAC,CACtD,CAAC;IAEF,OAAO,CACL,oBAAC,yDAAmC,CAAC,QAAQ,IAC3C,KAAK,EAAE;YACL,SAAS;YACT,SAAS;YACT,iBAAiB,EAAE,qBAAS,CAAC,KAAK;YAClC,cAAc;YACd,kBAAkB;YAClB,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;gBAChD,CAAC,CAAC,KAAK,CAAC,qBAAqB;gBAC7B,CAAC,CAAC,2CAAqB,CAAC,SAAS;YACnC,iBAAiB,EAAE,+BAAmB,CAAC,UAAU;YACjD,cAAc,EAAE,eAAe;YAC/B,qBAAqB,EAAE,yBAAyB;YAChD,qBAAqB,EAAE,KAAK;YAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;gBAClC,CAAC,CAAC,KAAK,CAAC,cAAc;gBACtB,CAAC,CAAC,0BAA0B,CAAC,GAAG,EAAE,GAAE,CAAC;YACvC,SAAS,EAAE,KAAK,CAAC,SAAS;gBACxB,CAAC,CAAC,KAAK,CAAC,SAAS;gBACjB,CAAC,CAAC,0BAA0B,CAAC,CAAC,EAAuB,EAAE,EAAE,GAAE,CAAC;SAC/D;QAED,oBAAC,wCAAkB,CAAC,QAAQ,IAC1B,KAAK,EAAE;gBACL,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,0BAA0B,CAAC,GAAG,EAAE,GAAE,CAAC;aAC9C,IAEA,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5B,6BACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,IAAI,EAAC,cAAc;YAEnB,oBAAC,oBAAY,IAAC,SAAS,EAAC,kBAAkB,EAAC,SAAS,EAAE,SAAS,IAC5D,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACpC,6BACE,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,GAAG,gBAAgB,IAAI,mBAAmB,CACnD,KAAK,CACN,EAAE,IAEF,KAAK,CACF,CACP,CAAC,CACW,CACX,CACP,CAC2B,CACe,CAChD,CAAC;AACJ,CAAC;AArGD,0BAqGC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport \"./Toolbar.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type {\n CommonToolbarItem,\n OnItemExecutedFunc,\n} from \"@itwin/appui-abstract\";\nimport type { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\nimport { ToolbarItems } from \"./Items\";\nimport {\n Direction,\n OrthogonalDirection,\n OrthogonalDirectionHelpers,\n} from \"./utilities/Direction\";\nimport {\n getToolbarDirection,\n ToolbarItemComponent,\n ToolbarItemContext,\n ToolbarOpacitySetting,\n ToolbarPanelAlignment,\n ToolbarWithOverflowDirectionContext,\n} from \"./ToolbarWithOverflow\";\n\n/** Properties of [[Toolbar]] component.\n * @public\n * @deprecated in 4.0. Use [ToolbarProps]($appui-react) instead.\n */\nexport interface ToolbarProps extends CommonProps, NoChildrenProps {\n /** Describes to which direction the popup panels are expanded. Defaults to: [[Direction.Bottom]] */\n expandsTo?: Direction;\n /** Definitions for items of the toolbar. Items are expected to be already sorted by group and item. */\n items: CommonToolbarItem[];\n /** Describes how expanded panels are aligned. Defaults to: [[ToolbarPanelAlignment.Start]] */\n panelAlignment?: ToolbarPanelAlignment;\n /** Use Drag Interaction to open popups with nest action buttons */\n useDragInteraction?: boolean;\n /** Determines whether to use mouse proximity to alter the opacity of the toolbar */\n toolbarOpacitySetting?: ToolbarOpacitySetting;\n /** Optional function to call on any item execution */\n onItemExecuted?: OnItemExecutedFunc;\n /** Optional function to call on any KeyDown events processed by toolbar */\n onKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nfunction getItemWrapperClass(child: React.ReactNode) {\n // istanbul ignore else\n if (React.isValidElement(child)) {\n if (child.props && child.props.addGroupSeparator)\n return \"components-toolbar-button-add-gap-before\";\n }\n return \"\";\n}\n\n/** Component that displays toolbar items.\n * @public\n * @deprecated in 4.0. Use [Toolbar]($appui-react) instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function Toolbar(props: ToolbarProps) {\n const expandsTo = props.expandsTo ? props.expandsTo : Direction.Bottom;\n const useDragInteraction = !!props.useDragInteraction;\n const panelAlignment = props.panelAlignment\n ? props.panelAlignment\n : ToolbarPanelAlignment.Start;\n const [popupPanelCount, setPopupPanelCount] = React.useState(0);\n\n const handlePopupPanelOpenClose = React.useCallback((isOpening: boolean) => {\n // use setTimeout to avoid warning about setting state in Toolbar from render method of PopupItem/PopupItemWithDrag\n setTimeout(() => {\n setPopupPanelCount((prev) => {\n const nextCount = isOpening ? prev + 1 : prev - 1;\n return nextCount < 0 ? /* istanbul ignore next */ 0 : nextCount;\n });\n });\n }, []);\n\n const availableNodes = React.useMemo<React.ReactNode[]>(() => {\n return props.items.map((item, index) => {\n let addGroupSeparator = false;\n if (index > 0)\n addGroupSeparator =\n item.groupPriority !== props.items[index - 1].groupPriority;\n return (\n <ToolbarItemComponent\n key={item.id}\n item={item}\n addGroupSeparator={!!addGroupSeparator}\n />\n );\n });\n }, [props.items]);\n\n const direction = getToolbarDirection(expandsTo);\n const className = classnames(\n \"components-toolbar-overflow-sizer\",\n OrthogonalDirectionHelpers.getCssClassName(direction),\n props.className\n );\n\n // needed to construct DOM structure identical to ToolbarWithOverflow so same css can be applied.\n const wrapperClassName = classnames(\n \"components-toolbar-item-container\",\n OrthogonalDirectionHelpers.getCssClassName(direction)\n );\n\n return (\n <ToolbarWithOverflowDirectionContext.Provider\n value={{\n expandsTo,\n direction,\n overflowExpandsTo: Direction.Right,\n panelAlignment,\n useDragInteraction,\n toolbarOpacitySetting: props.toolbarOpacitySetting\n ? props.toolbarOpacitySetting\n : ToolbarOpacitySetting.Proximity,\n overflowDirection: OrthogonalDirection.Horizontal,\n openPopupCount: popupPanelCount,\n onPopupPanelOpenClose: handlePopupPanelOpenClose,\n overflowDisplayActive: false,\n onItemExecuted: props.onItemExecuted\n ? props.onItemExecuted\n : /* istanbul ignore next */ () => {},\n onKeyDown: props.onKeyDown\n ? props.onKeyDown\n : /* istanbul ignore next */ (_e: React.KeyboardEvent) => {},\n }}\n >\n <ToolbarItemContext.Provider\n value={{\n hasOverflow: false,\n useHeight: false,\n onResize: /* istanbul ignore next */ () => {},\n }}\n >\n {availableNodes.length > 0 && (\n <div\n className={className}\n style={props.style}\n onKeyDown={props.onKeyDown}\n role=\"presentation\"\n >\n <ToolbarItems className=\"components-items\" direction={direction}>\n {availableNodes.map((child, index) => (\n <div\n key={index}\n className={`${wrapperClassName} ${getItemWrapperClass(\n child\n )}`}\n >\n {child}\n </div>\n ))}\n </ToolbarItems>\n </div>\n )}\n </ToolbarItemContext.Provider>\n </ToolbarWithOverflowDirectionContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/Toolbar.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,0BAAwB;AACxB,6CAA+B;AAW/B,yEAAsE;AAwBtE;;;GAGG;AACH,mDAAmD;AACnD,SAAgB,OAAO,CAAC,KAAmB;IACzC,OAAO,oBAAC,mDAAwB,OAAK,KAAK,GAAI,CAAC;AACjD,CAAC;AAFD,0BAEC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport \"./Toolbar.scss\";\nimport * as React from \"react\";\nimport type {\n CommonToolbarItem,\n OnItemExecutedFunc,\n} from \"@itwin/appui-abstract\";\nimport type { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\nimport type { Direction } from \"./utilities/Direction\";\nimport type {\n ToolbarOpacitySetting,\n ToolbarPanelAlignment,\n} from \"./InternalToolbarComponent\";\nimport { InternalToolbarComponent } from \"./InternalToolbarComponent\";\n\n/** Properties of [[Toolbar]] component.\n * @public\n * @deprecated in 4.0. Use [ToolbarProps]($appui-react) instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface ToolbarProps extends CommonProps, NoChildrenProps {\n /** Describes to which direction the popup panels are expanded. Defaults to: [[Direction.Bottom]] */\n expandsTo?: Direction;\n /** Definitions for items of the toolbar. Items are expected to be already sorted by group and item. */\n items: CommonToolbarItem[];\n /** Describes how expanded panels are aligned. Defaults to: [[ToolbarPanelAlignment.Start]] */\n panelAlignment?: ToolbarPanelAlignment;\n /** Use Drag Interaction to open popups with nest action buttons */\n useDragInteraction?: boolean;\n /** Determines whether to use mouse proximity to alter the opacity of the toolbar */\n toolbarOpacitySetting?: ToolbarOpacitySetting;\n /** Optional function to call on any item execution */\n onItemExecuted?: OnItemExecutedFunc;\n /** Optional function to call on any KeyDown events processed by toolbar */\n onKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\n/** Component that displays toolbar items.\n * @public\n * @deprecated in 4.0. Use [Toolbar]($appui-react) instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function Toolbar(props: ToolbarProps) {\n return <InternalToolbarComponent {...props} />;\n}\n"]}
@@ -3,97 +3,10 @@
3
3
  */
4
4
  import "./Toolbar.scss";
5
5
  import * as React from "react";
6
- import type { ActionButton, CommonToolbarItem, CustomButtonDefinition, GroupButton, OnItemExecutedFunc } from "@itwin/appui-abstract";
6
+ import type { CommonToolbarItem, OnItemExecutedFunc } from "@itwin/appui-abstract";
7
7
  import type { CommonProps, NoChildrenProps } from "@itwin/core-react";
8
- import { Direction, OrthogonalDirection } from "./utilities/Direction";
9
- /** Describes the data needed to insert a custom `React` button into an ToolbarWithOverflow.
10
- * @public
11
- * @deprecated in 4.0. Use [ToolbarCustomItem]($appui-react) instead.
12
- */
13
- export interface CustomToolbarItem extends CustomButtonDefinition {
14
- /** defines the content to display in popup panel */
15
- panelContentNode?: React.ReactNode;
16
- /** If true the popup panel is mounted once and unmounted when button is unmounted. If false the
17
- * content node is unmounted each time the popup is closed. */
18
- keepContentsLoaded?: boolean;
19
- }
20
- /**
21
- * Context used by Toolbar items to know if popup panel should be hidden - via AutoHide.
22
- * @public
23
- */
24
- export declare const ToolbarPopupAutoHideContext: React.Context<boolean>;
25
- /**
26
- * React hook used to retrieve the ToolbarPopupAutoHideContext.
27
- * @public
28
- */
29
- export declare function useToolbarPopupAutoHideContext(): boolean;
30
- /** Describes toolbar item.
31
- * @public
32
- * @deprecated in 4.0. Use [ToolbarItem]($appui-react) instead.
33
- */
34
- export type ToolbarItem = ActionButton | GroupButton | CustomToolbarItem;
35
- /** CustomToolbarItem type guard.
36
- * @internal
37
- */
38
- export declare function isCustomToolbarItem(item: ToolbarItem): item is CustomToolbarItem;
39
- /** @internal */
40
- export declare const getToolbarDirection: (expandsTo: Direction) => OrthogonalDirection;
41
- /** Available alignment modes of [[Toolbar]] panels.
42
- * @public
43
- */
44
- export declare enum ToolbarPanelAlignment {
45
- Start = 0,
46
- End = 1
47
- }
48
- /** Enumeration of Toolbar Opacity setting.
49
- * @public
50
- */
51
- export declare enum ToolbarOpacitySetting {
52
- /** Use the default background, box-shadow opacity and backdrop-filter blur */
53
- Defaults = 0,
54
- /** Alter the opacity from transparent to the defaults based on mouse proximity */
55
- Proximity = 1,
56
- /** Use a transparent background, box-shadow opacity and backdrop-filter blur */
57
- Transparent = 2
58
- }
59
- /** Helpers for [[ToolbarPanelAlignment]].
60
- * @internal
61
- */
62
- export declare class ToolbarPanelAlignmentHelpers {
63
- /** Class name of [[ToolbarPanelAlignment.Start]] */
64
- static readonly START_CLASS_NAME = "components-panel-alignment-start";
65
- /** Class name of [[ToolbarPanelAlignment.End]] */
66
- static readonly END_CLASS_NAME = "components-panel-alignment-end";
67
- /** @returns Class name of specified [[ToolbarPanelAlignment]] */
68
- static getCssClassName(panelAlignment: ToolbarPanelAlignment): string;
69
- }
70
- /** @internal */
71
- export interface ToolbarOverflowContextProps {
72
- readonly expandsTo: Direction;
73
- readonly direction: OrthogonalDirection;
74
- readonly overflowExpandsTo: Direction;
75
- readonly overflowDirection: OrthogonalDirection;
76
- readonly panelAlignment: ToolbarPanelAlignment;
77
- readonly useDragInteraction: boolean;
78
- readonly toolbarOpacitySetting: ToolbarOpacitySetting;
79
- readonly openPopupCount: number;
80
- readonly onPopupPanelOpenClose: (isOpening: boolean) => void;
81
- readonly overflowDisplayActive: boolean;
82
- readonly onItemExecuted: OnItemExecutedFunc;
83
- readonly onKeyDown: (e: React.KeyboardEvent) => void;
84
- }
85
- /**
86
- * Context used by Toolbar component to provide Direction to child components.
87
- * @internal
88
- */
89
- export declare const ToolbarWithOverflowDirectionContext: React.Context<ToolbarOverflowContextProps>;
90
- /** @internal */
91
- export declare function ToolbarItemComponent({ item, addGroupSeparator, }: {
92
- item: ToolbarItem;
93
- addGroupSeparator: boolean;
94
- }): JSX.Element | null;
95
- /** @internal */
96
- export declare function useToolbarWithOverflowDirectionContext(): ToolbarOverflowContextProps;
8
+ import type { Direction } from "./utilities/Direction";
9
+ import type { ToolbarOpacitySetting, ToolbarPanelAlignment } from "./InternalToolbarComponent";
97
10
  /** Properties of [[ToolbarWithOverflow]] component.
98
11
  * @public
99
12
  * @deprecated in 4.0. Use [ToolbarWithOverflowProps]($appui-react) instead.
@@ -116,23 +29,10 @@ export interface ToolbarWithOverflowProps extends CommonProps, NoChildrenProps {
116
29
  /** Optional function to call on any KeyDown events processed by toolbar */
117
30
  onKeyDown?: (e: React.KeyboardEvent) => void;
118
31
  }
119
- /** Component that displays tool settings as a bar across the top of the content view.
32
+ /** Component that displays toolbar items, displaying only the elements that can fit in the available space,
33
+ * and put the other items into a single panel.
120
34
  * @public
121
35
  * @deprecated in 4.0. Use [ToolbarWithOverflow]($appui-react) instead.
122
36
  */
123
37
  export declare function ToolbarWithOverflow(props: ToolbarWithOverflowProps): JSX.Element;
124
- /** Interface toolbars use to define context for its items.
125
- * @internal
126
- */
127
- export interface ToolbarItemContextArgs {
128
- readonly hasOverflow: boolean;
129
- readonly useHeight: boolean;
130
- readonly onResize: (w: number) => void;
131
- }
132
- /** Interface toolbars use to define context for its items.
133
- * @internal
134
- */
135
- export declare const ToolbarItemContext: React.Context<ToolbarItemContextArgs>;
136
- /** @internal */
137
- export declare function useToolItemEntryContext(): ToolbarItemContextArgs;
138
38
  //# sourceMappingURL=ToolbarWithOverflow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarWithOverflow.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/ToolbarWithOverflow.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolbarWithOverflow.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/ToolbarWithOverflow.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AAGpC;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,WAAW,EAAE,eAAe;IAC5E,oGAAoG;IACpG,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,4GAA4G;IAC5G,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,uGAAuG;IACvG,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,8FAA8F;IAC9F,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oFAAoF;IACpF,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,sDAAsD;IACtD,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;CAC9C;AAED;;;;GAIG;AAEH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,eAQlE"}