@itwin/components-react 4.11.0 → 4.12.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 (54) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/lib/cjs/components-react/UiComponents.d.ts +0 -4
  3. package/lib/cjs/components-react/UiComponents.d.ts.map +1 -1
  4. package/lib/cjs/components-react/UiComponents.js +2 -12
  5. package/lib/cjs/components-react/UiComponents.js.map +1 -1
  6. package/lib/cjs/components-react/UiComponents.json +153 -0
  7. package/lib/cjs/components-react/filter-builder/Operators.d.ts +1 -0
  8. package/lib/cjs/components-react/filter-builder/Operators.d.ts.map +1 -1
  9. package/lib/cjs/components-react/filter-builder/Operators.js +1 -0
  10. package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
  11. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  12. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js +4 -7
  13. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
  14. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  15. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js +1 -4
  16. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  17. package/lib/cjs/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  18. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js +2 -3
  19. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  20. package/lib/cjs/components-react/useTranslation.d.ts +4 -7
  21. package/lib/cjs/components-react/useTranslation.d.ts.map +1 -1
  22. package/lib/cjs/components-react/useTranslation.js +39 -7
  23. package/lib/cjs/components-react/useTranslation.js.map +1 -1
  24. package/lib/cjs/components-react.d.ts +1 -0
  25. package/lib/cjs/components-react.d.ts.map +1 -1
  26. package/lib/cjs/components-react.js +1 -0
  27. package/lib/cjs/components-react.js.map +1 -1
  28. package/lib/esm/components-react/UiComponents.d.ts +0 -4
  29. package/lib/esm/components-react/UiComponents.d.ts.map +1 -1
  30. package/lib/esm/components-react/UiComponents.js +2 -12
  31. package/lib/esm/components-react/UiComponents.js.map +1 -1
  32. package/lib/esm/components-react/UiComponents.json +153 -0
  33. package/lib/esm/components-react/filter-builder/Operators.d.ts +1 -0
  34. package/lib/esm/components-react/filter-builder/Operators.d.ts.map +1 -1
  35. package/lib/esm/components-react/filter-builder/Operators.js +1 -0
  36. package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
  37. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  38. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js +5 -8
  39. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
  40. package/lib/esm/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  41. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js +2 -5
  42. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  43. package/lib/esm/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  44. package/lib/esm/components-react/toolbar/PopupItemsPanel.js +3 -4
  45. package/lib/esm/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  46. package/lib/esm/components-react/useTranslation.d.ts +4 -7
  47. package/lib/esm/components-react/useTranslation.d.ts.map +1 -1
  48. package/lib/esm/components-react/useTranslation.js +14 -5
  49. package/lib/esm/components-react/useTranslation.js.map +1 -1
  50. package/lib/esm/components-react.d.ts +1 -0
  51. package/lib/esm/components-react.d.ts.map +1 -1
  52. package/lib/esm/components-react.js +1 -0
  53. package/lib/esm/components-react.js.map +1 -1
  54. package/package.json +4 -5
package/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Change Log - @itwin/components-react
2
2
 
3
- This log was last generated on Thu, 21 Mar 2024 16:38:04 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 05 Apr 2024 09:55:35 GMT and should not be manually modified.
4
+
5
+ ## 4.12.0
6
+ Fri, 05 Apr 2024 09:55:35 GMT
7
+
8
+ ### Updates
9
+
10
+ - Added note to `PropertyFilterRuleOperator` that `Like` operator should be handled as a contains operator.
4
11
 
5
12
  ## 4.11.0
6
13
  Thu, 21 Mar 2024 16:38:04 GMT
@@ -18,10 +18,6 @@ export declare class UiComponents {
18
18
  static terminate(): void;
19
19
  /** Determines if UiComponents has been initialized */
20
20
  static get initialized(): boolean;
21
- /** The internationalization service created by the host application.
22
- * @internal
23
- */
24
- static get localization(): Localization;
25
21
  /** The internationalization service namespace. */
26
22
  static get localizationNamespace(): string;
27
23
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components-react/UiComponents.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAS;IACpC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAe;IAE5C;;;OAGG;WACiB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBzE,0DAA0D;WAC5C,SAAS;IAWvB,sDAAsD;IACtD,WAAkB,WAAW,IAAI,OAAO,CAEvC;IAED;;OAEG;IACH,WAAkB,YAAY,IAAI,YAAY,CAQ7C;IAED,kDAAkD;IAClD,WAAkB,qBAAqB,IAAI,MAAM,CAEhD;IAED,gBAAgB;IAChB,WAAkB,WAAW,IAAI,MAAM,CAEtC;IAED;;OAEG;WACW,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM;IAavD,gBAAgB;WACF,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;CAM/C"}
1
+ {"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components-react/UiComponents.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAS;IACpC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAe;IAE5C;;;OAGG;WACiB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBzE,0DAA0D;WAC5C,SAAS;IAWvB,sDAAsD;IACtD,WAAkB,WAAW,IAAI,OAAO,CAEvC;IAED,kDAAkD;IAClD,WAAkB,qBAAqB,IAAI,MAAM,CAEhD;IAED,gBAAgB;IAChB,WAAkB,WAAW,IAAI,MAAM,CAEtC;IAED;;OAEG;WACW,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM;IAavD,gBAAgB;WACF,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;CAM/C"}
@@ -12,7 +12,6 @@ const immer_1 = require("immer");
12
12
  const core_bentley_1 = require("@itwin/core-bentley");
13
13
  const core_react_1 = require("@itwin/core-react");
14
14
  const core_react_2 = require("@itwin/core-react");
15
- const appui_abstract_1 = require("@itwin/appui-abstract");
16
15
  /**
17
16
  * Manages the localization service for the components-react package.
18
17
  * @public
@@ -45,15 +44,6 @@ class UiComponents {
45
44
  static get initialized() {
46
45
  return UiComponents._initialized;
47
46
  }
48
- /** The internationalization service created by the host application.
49
- * @internal
50
- */
51
- static get localization() {
52
- if (!UiComponents._localization)
53
- // eslint-disable-next-line deprecation/deprecation
54
- throw new appui_abstract_1.UiError(UiComponents.loggerCategory(this), "_localization: UiComponents.initialize has not been called. Unable to return Localization object.");
55
- return UiComponents._localization;
56
- }
57
47
  /** The internationalization service namespace. */
58
48
  static get localizationNamespace() {
59
49
  return "UiComponents";
@@ -66,11 +56,11 @@ class UiComponents {
66
56
  * @internal
67
57
  */
68
58
  static translate(key) {
69
- if (!UiComponents.initialized) {
59
+ if (!UiComponents._localization) {
70
60
  core_bentley_1.Logger.logError(UiComponents.loggerCategory(this), `translate: UiComponents.initialize has not been called. Returning blank string.`);
71
61
  return "";
72
62
  }
73
- return UiComponents.localization.getLocalizedString(`${UiComponents.localizationNamespace}:${key}`);
63
+ return UiComponents._localization.getLocalizedString(`${UiComponents.localizationNamespace}:${key}`);
74
64
  }
75
65
  /** @internal */
76
66
  static loggerCategory(obj) {
@@ -1 +1 @@
1
- {"version":3,"file":"UiComponents.js","sourceRoot":"","sources":["../../../src/components-react/UiComponents.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,iCAAsC;AACtC,sDAA6C;AAE7C,kDAA2C;AAC3C,kDAAuD;AACvD,0DAAgD;AAEhD;;;GAGG;AACH,MAAa,YAAY;IAIvB;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAA0B;QACvD,IAAI,YAAY,CAAC,YAAY,EAAE;YAC7B,qBAAM,CAAC,OAAO,CACZ,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,EACzC,wCAAwC,CACzC,CAAC;YACF,OAAO;SACR;QAED,IAAA,qBAAa,GAAE,CAAC;QAChB,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC;QAC1C,MAAM,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAChD,YAAY,CAAC,qBAAqB,CACnC,CAAC;QAEF,MAAM,mBAAM,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACpD,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,0DAA0D;IACnD,MAAM,CAAC,SAAS;QACrB,IAAI,YAAY,CAAC,aAAa;YAC5B,YAAY,CAAC,aAAa,CAAC,mBAAmB,CAC5C,YAAY,CAAC,qBAAqB,CACnC,CAAC;QACJ,YAAY,CAAC,aAAa,GAAG,SAAS,CAAC;QAEvC,mBAAM,CAAC,SAAS,EAAE,CAAC;QACnB,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,sDAAsD;IAC/C,MAAM,KAAK,WAAW;QAC3B,OAAO,YAAY,CAAC,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,YAAY;QAC5B,IAAI,CAAC,YAAY,CAAC,aAAa;YAC7B,mDAAmD;YACnD,MAAM,IAAI,wBAAO,CACf,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,EACjC,mGAAmG,CACpG,CAAC;QACJ,OAAO,YAAY,CAAC,aAAa,CAAC;IACpC,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,qBAAqB;QACrC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,gBAAgB;IACT,MAAM,KAAK,WAAW;QAC3B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,GAAsB;QAC5C,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YAC7B,qBAAM,CAAC,QAAQ,CACb,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,EACjC,iFAAiF,CAClF,CAAC;YACF,OAAO,EAAE,CAAC;SACX;QACD,OAAO,YAAY,CAAC,YAAY,CAAC,kBAAkB,CACjD,GAAG,YAAY,CAAC,qBAAqB,IAAI,GAAG,EAAE,CAC/C,CAAC;IACJ,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,cAAc,CAAC,GAAQ;QACnC,MAAM,SAAS,GAAG,IAAA,+BAAkB,EAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,QAAQ,GACZ,YAAY,CAAC,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,QAAQ,CAAC;IAClB,CAAC;;AAxFc,yBAAY,GAAG,KAAK,CAAC;AADzB,oCAAY","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 Common\n */\n\nimport { enablePatches } from \"immer\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { Localization } from \"@itwin/core-common\";\nimport { UiCore } from \"@itwin/core-react\";\nimport { getObjectClassName } from \"@itwin/core-react\";\nimport { UiError } from \"@itwin/appui-abstract\";\n\n/**\n * Manages the localization service for the components-react package.\n * @public\n */\nexport class UiComponents {\n private static _initialized = false;\n private static _localization?: Localization;\n\n /**\n * Registers the localization service namespace for UiComponents. Also initializes UiCore.\n * @param localization The internationalization service created by the host application.\n */\n public static async initialize(localization: Localization): Promise<void> {\n if (UiComponents._initialized) {\n Logger.logInfo(\n UiComponents.loggerCategory(UiComponents),\n `UiComponents.initialize already called`\n );\n return;\n }\n\n enablePatches();\n UiComponents._localization = localization;\n await UiComponents._localization.registerNamespace(\n UiComponents.localizationNamespace\n );\n\n await UiCore.initialize(UiComponents._localization);\n UiComponents._initialized = true;\n }\n\n /** Unregisters the UiComponents localization namespace */\n public static terminate() {\n if (UiComponents._localization)\n UiComponents._localization.unregisterNamespace(\n UiComponents.localizationNamespace\n );\n UiComponents._localization = undefined;\n\n UiCore.terminate();\n UiComponents._initialized = false;\n }\n\n /** Determines if UiComponents has been initialized */\n public static get initialized(): boolean {\n return UiComponents._initialized;\n }\n\n /** The internationalization service created by the host application.\n * @internal\n */\n public static get localization(): Localization {\n if (!UiComponents._localization)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(\n UiComponents.loggerCategory(this),\n \"_localization: UiComponents.initialize has not been called. Unable to return Localization object.\"\n );\n return UiComponents._localization;\n }\n\n /** The internationalization service namespace. */\n public static get localizationNamespace(): string {\n return \"UiComponents\";\n }\n\n /** @internal */\n public static get packageName(): string {\n return \"components-react\";\n }\n\n /** Calls localization.getLocalizedString with the \"UiComponents\" namespace. Do NOT include the namespace in the key.\n * @internal\n */\n public static translate(key: string | string[]): string {\n if (!UiComponents.initialized) {\n Logger.logError(\n UiComponents.loggerCategory(this),\n `translate: UiComponents.initialize has not been called. Returning blank string.`\n );\n return \"\";\n }\n return UiComponents.localization.getLocalizedString(\n `${UiComponents.localizationNamespace}:${key}`\n );\n }\n\n /** @internal */\n public static loggerCategory(obj: any): string {\n const className = getObjectClassName(obj);\n const category =\n UiComponents.packageName + (className ? `.${className}` : \"\");\n return category;\n }\n}\n"]}
1
+ {"version":3,"file":"UiComponents.js","sourceRoot":"","sources":["../../../src/components-react/UiComponents.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,iCAAsC;AACtC,sDAA6C;AAE7C,kDAA2C;AAC3C,kDAAuD;AAEvD;;;GAGG;AACH,MAAa,YAAY;IAIvB;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAA0B;QACvD,IAAI,YAAY,CAAC,YAAY,EAAE;YAC7B,qBAAM,CAAC,OAAO,CACZ,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,EACzC,wCAAwC,CACzC,CAAC;YACF,OAAO;SACR;QAED,IAAA,qBAAa,GAAE,CAAC;QAChB,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC;QAC1C,MAAM,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAChD,YAAY,CAAC,qBAAqB,CACnC,CAAC;QAEF,MAAM,mBAAM,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACpD,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,0DAA0D;IACnD,MAAM,CAAC,SAAS;QACrB,IAAI,YAAY,CAAC,aAAa;YAC5B,YAAY,CAAC,aAAa,CAAC,mBAAmB,CAC5C,YAAY,CAAC,qBAAqB,CACnC,CAAC;QACJ,YAAY,CAAC,aAAa,GAAG,SAAS,CAAC;QAEvC,mBAAM,CAAC,SAAS,EAAE,CAAC;QACnB,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,sDAAsD;IAC/C,MAAM,KAAK,WAAW;QAC3B,OAAO,YAAY,CAAC,YAAY,CAAC;IACnC,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,qBAAqB;QACrC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,gBAAgB;IACT,MAAM,KAAK,WAAW;QAC3B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,GAAsB;QAC5C,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YAC/B,qBAAM,CAAC,QAAQ,CACb,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,EACjC,iFAAiF,CAClF,CAAC;YACF,OAAO,EAAE,CAAC;SACX;QACD,OAAO,YAAY,CAAC,aAAa,CAAC,kBAAkB,CAClD,GAAG,YAAY,CAAC,qBAAqB,IAAI,GAAG,EAAE,CAC/C,CAAC;IACJ,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,cAAc,CAAC,GAAQ;QACnC,MAAM,SAAS,GAAG,IAAA,+BAAkB,EAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,QAAQ,GACZ,YAAY,CAAC,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,QAAQ,CAAC;IAClB,CAAC;;AA3Ec,yBAAY,GAAG,KAAK,CAAC;AADzB,oCAAY","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 Common\n */\n\nimport { enablePatches } from \"immer\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { Localization } from \"@itwin/core-common\";\nimport { UiCore } from \"@itwin/core-react\";\nimport { getObjectClassName } from \"@itwin/core-react\";\n\n/**\n * Manages the localization service for the components-react package.\n * @public\n */\nexport class UiComponents {\n private static _initialized = false;\n private static _localization?: Localization;\n\n /**\n * Registers the localization service namespace for UiComponents. Also initializes UiCore.\n * @param localization The internationalization service created by the host application.\n */\n public static async initialize(localization: Localization): Promise<void> {\n if (UiComponents._initialized) {\n Logger.logInfo(\n UiComponents.loggerCategory(UiComponents),\n `UiComponents.initialize already called`\n );\n return;\n }\n\n enablePatches();\n UiComponents._localization = localization;\n await UiComponents._localization.registerNamespace(\n UiComponents.localizationNamespace\n );\n\n await UiCore.initialize(UiComponents._localization);\n UiComponents._initialized = true;\n }\n\n /** Unregisters the UiComponents localization namespace */\n public static terminate() {\n if (UiComponents._localization)\n UiComponents._localization.unregisterNamespace(\n UiComponents.localizationNamespace\n );\n UiComponents._localization = undefined;\n\n UiCore.terminate();\n UiComponents._initialized = false;\n }\n\n /** Determines if UiComponents has been initialized */\n public static get initialized(): boolean {\n return UiComponents._initialized;\n }\n\n /** The internationalization service namespace. */\n public static get localizationNamespace(): string {\n return \"UiComponents\";\n }\n\n /** @internal */\n public static get packageName(): string {\n return \"components-react\";\n }\n\n /** Calls localization.getLocalizedString with the \"UiComponents\" namespace. Do NOT include the namespace in the key.\n * @internal\n */\n public static translate(key: string | string[]): string {\n if (!UiComponents._localization) {\n Logger.logError(\n UiComponents.loggerCategory(this),\n `translate: UiComponents.initialize has not been called. Returning blank string.`\n );\n return \"\";\n }\n return UiComponents._localization.getLocalizedString(\n `${UiComponents.localizationNamespace}:${key}`\n );\n }\n\n /** @internal */\n public static loggerCategory(obj: any): string {\n const className = getObjectClassName(obj);\n const category =\n UiComponents.packageName + (className ? `.${className}` : \"\");\n return category;\n }\n}\n"]}
@@ -0,0 +1,153 @@
1
+ {
2
+ "general": {
3
+ "true": "true",
4
+ "false": "false",
5
+ "loading": "loading",
6
+ "noData": "The data required for this tree layout is not available in this iModel.",
7
+ "length": "Length",
8
+ "label": "Label",
9
+ "of": "of",
10
+ "search": "Search",
11
+ "clear": "Clear"
12
+ },
13
+ "button": {
14
+ "label": {
15
+ "search": "Search",
16
+ "cancel": "Cancel",
17
+ "settings": "Settings",
18
+ "filter": "Filter",
19
+ "selectAll": "Select All"
20
+ }
21
+ },
22
+ "breadcrumb": {
23
+ "invalidBreadcrumbPath": "Path not found.",
24
+ "errorUnknownMode": "Error: Unknown Breadcrumb mode.",
25
+ "name": "Name",
26
+ "icon": "Icon",
27
+ "description": "Description"
28
+ },
29
+ "tree": {
30
+ "noResultsForFilter": "0 matches found for \"{{searchText}}\""
31
+ },
32
+ "table": {
33
+ "filter": {
34
+ "numericTooltip": "Input Methods: Range (x-y), Greater Then (>x), Less Then (<y)",
35
+ "numericPlaceholder": "e.g. 3,10-15,>20"
36
+ }
37
+ },
38
+ "showhide": {
39
+ "noLabel": "[unlabeled]",
40
+ "showAll": "Show all",
41
+ "list": "List...",
42
+ "title": "Show/Hide"
43
+ },
44
+ "property": {
45
+ "varies": "*** Varies ***",
46
+ "arrayLength": "Number of Items",
47
+ "expand": "See more",
48
+ "collapse": "See less"
49
+ },
50
+ "timepicker": {
51
+ "day-period-am": "AM",
52
+ "day-period-pm": "PM"
53
+ },
54
+ "datepicker": {
55
+ "selectDate": "Select Date",
56
+ "time": "Time",
57
+ "previousMonth": "Previous Month",
58
+ "nextMonth": "Next Month"
59
+ },
60
+ "month": {
61
+ "long": {
62
+ "january": "January",
63
+ "february": "February",
64
+ "march": "March",
65
+ "april": "April",
66
+ "may": "May",
67
+ "june": "June",
68
+ "july": "July",
69
+ "august": "August",
70
+ "september": "September",
71
+ "october": "October",
72
+ "november": "November",
73
+ "december": "December"
74
+ },
75
+ "short": {
76
+ "january": "Jan",
77
+ "february": "Feb",
78
+ "march": "Mar",
79
+ "april": "Apr",
80
+ "may": "May",
81
+ "june": "Jun",
82
+ "july": "Jul",
83
+ "august": "Aug",
84
+ "september": "Sep",
85
+ "october": "Oct",
86
+ "november": "Nov",
87
+ "december": "Dec"
88
+ }
89
+ },
90
+ "days": {
91
+ "long": {
92
+ "sunday": "Sunday",
93
+ "monday": "Monday",
94
+ "tuesday": "Tuesday",
95
+ "wednesday": "Wednesday",
96
+ "thursday": "Thursday",
97
+ "friday": "Friday",
98
+ "saturday": "Saturday"
99
+ },
100
+ "short": {
101
+ "sunday": "Su",
102
+ "monday": "Mo",
103
+ "tuesday": "Tu",
104
+ "wednesday": "We",
105
+ "thursday": "Th",
106
+ "friday": "Fr",
107
+ "saturday": "Sa"
108
+ }
109
+ },
110
+ "time": {
111
+ "am": "am",
112
+ "pm": "pm"
113
+ },
114
+ "filteringInput": {
115
+ "placeholder": "Search..."
116
+ },
117
+ "toolbar": {
118
+ "overflow": "More toolbar items"
119
+ },
120
+ "editor": {
121
+ "enum": "Enum Editor",
122
+ "text": "Text Editor",
123
+ "textarea": "Textarea Editor"
124
+ },
125
+ "filterBuilder": {
126
+ "rule": "Rule",
127
+ "ruleGroup": "Rule Group",
128
+ "add": "Add",
129
+ "delete": "Delete",
130
+ "operators": {
131
+ "isTrue": "Is true",
132
+ "isFalse": "Is false",
133
+ "equal": "Equal",
134
+ "notEqual": "Not equal",
135
+ "contains": "Contains",
136
+ "isNull": "Is null",
137
+ "isNotNull": "Is not null",
138
+ "and": "And",
139
+ "or": "Or",
140
+ "between": "Between",
141
+ "notBetween": "Not between"
142
+ },
143
+ "chooseProperty": "Choose property",
144
+ "errorMessages": {
145
+ "emptyValue": "Value is required",
146
+ "invalidRange": "Invalid range"
147
+ }
148
+ },
149
+ "dialog": {
150
+ "ok": "OK",
151
+ "cancel": "Cancel"
152
+ }
153
+ }
@@ -12,6 +12,7 @@ export declare enum PropertyFilterRuleGroupOperator {
12
12
  }
13
13
  /**
14
14
  * Operators for comparing property value in [[PropertyFilterRule]].
15
+ * @note `Like` operator should be handled as a contains operator - it matches all strings that contain a given string.
15
16
  * @beta
16
17
  */
17
18
  export declare enum PropertyFilterRuleOperator {
@@ -1 +1 @@
1
- {"version":3,"file":"Operators.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/Operators.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE;;;GAGG;AACH,oBAAY,+BAA+B;IACzC,GAAG,QAAQ;IACX,EAAE,OAAO;CACV;AAED;;;GAGG;AACH,oBAAY,0BAA0B;IACpC,MAAM,YAAY;IAClB,OAAO,aAAa;IACpB,OAAO,aAAa;IACpB,UAAU,iBAAiB;IAC3B,OAAO,YAAY;IACnB,cAAc,qBAAqB;IACnC,IAAI,SAAS;IACb,WAAW,kBAAkB;IAC7B,IAAI,SAAS;IACb,MAAM,YAAY;IAClB,SAAS,gBAAgB;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,iCAAiC,GACzC,GAAG,0BAA0B,EAAE,GAC/B,SAAS,GACT,aAAa,CAAC;AAElB;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,mBAAmB,GAC5B,iCAAiC,EAAE,CA+CrC;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,iCAAiC,WAO5C;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,GAAG,0BAA0B,EAAE,WAU1C"}
1
+ {"version":3,"file":"Operators.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/Operators.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE;;;GAGG;AACH,oBAAY,+BAA+B;IACzC,GAAG,QAAQ;IACX,EAAE,OAAO;CACV;AAED;;;;GAIG;AACH,oBAAY,0BAA0B;IACpC,MAAM,YAAY;IAClB,OAAO,aAAa;IACpB,OAAO,aAAa;IACpB,UAAU,iBAAiB;IAC3B,OAAO,YAAY;IACnB,cAAc,qBAAqB;IACnC,IAAI,SAAS;IACb,WAAW,kBAAkB;IAC7B,IAAI,SAAS;IACb,MAAM,YAAY;IAClB,SAAS,gBAAgB;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,iCAAiC,GACzC,GAAG,0BAA0B,EAAE,GAC/B,SAAS,GACT,aAAa,CAAC;AAElB;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,mBAAmB,GAC5B,iCAAiC,EAAE,CA+CrC;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,iCAAiC,WAO5C;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,GAAG,0BAA0B,EAAE,WAU1C"}
@@ -20,6 +20,7 @@ var PropertyFilterRuleGroupOperator;
20
20
  })(PropertyFilterRuleGroupOperator = exports.PropertyFilterRuleGroupOperator || (exports.PropertyFilterRuleGroupOperator = {}));
21
21
  /**
22
22
  * Operators for comparing property value in [[PropertyFilterRule]].
23
+ * @note `Like` operator should be handled as a contains operator - it matches all strings that contain a given string.
23
24
  * @beta
24
25
  */
25
26
  var PropertyFilterRuleOperator;
@@ -1 +1 @@
1
- {"version":3,"file":"Operators.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/Operators.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAGH,0DAA0D;AAE1D;;;GAGG;AACH,IAAY,+BAGX;AAHD,WAAY,+BAA+B;IACzC,8CAAW,CAAA;IACX,4CAAS,CAAA;AACX,CAAC,EAHW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAG1C;AAED;;;GAGG;AACH,IAAY,0BAYX;AAZD,WAAY,0BAA0B;IACpC,gDAAkB,CAAA;IAClB,kDAAoB,CAAA;IACpB,kDAAoB,CAAA;IACpB,yDAA2B,CAAA;IAC3B,iDAAmB,CAAA;IACnB,iEAAmC,CAAA;IACnC,2CAAa,CAAA;IACb,2DAA6B,CAAA;IAC7B,2CAAa,CAAA;IACb,gDAAkB,CAAA;IAClB,uDAAyB,CAAA;AAC3B,CAAC,EAZW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAYrC;AAWD;;;GAGG;AACH,SAAgB,iCAAiC,CAC/C,QAA6B;IAE7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAEnC,IACE,QAAQ,KAAK,kCAAiB,CAAC,IAAI,CAAC,OAAO,EAAE;QAC7C,QAAQ,KAAK,kCAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,EAChD;QACA,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;KAChC;IAED,MAAM,SAAS,GAAwC;QACrD,UAAU;QACV,cAAc;QACd,SAAS;QACT,aAAa;KACd,CAAC;IAEF,IACE,QAAQ,KAAK,kCAAiB,CAAC,MAAM,CAAC,OAAO,EAAE;QAC/C,QAAQ,KAAK,kCAAiB,CAAC,GAAG,CAAC,OAAO,EAAE;QAC5C,QAAQ,KAAK,kCAAiB,CAAC,OAAO,CAAC,OAAO,EAAE;QAChD,QAAQ,KAAK,kCAAiB,CAAC,MAAM,CAAC,OAAO,EAAE;QAC/C,QAAQ,KAAK,kCAAiB,CAAC,KAAK,CAAC,OAAO,EAAE;QAC9C,QAAQ,KAAK,kCAAiB,CAAC,GAAG,CAAC,OAAO,EAAE;QAC5C,QAAQ,KAAK,kCAAiB,CAAC,WAAW,CAAC,OAAO,EAAE;QACpD,QAAQ,KAAK,kCAAiB,CAAC,SAAS,CAAC,OAAO,EAAE;QAClD,QAAQ,KAAK,kCAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,EACjD;QACA,OAAO;YACL,GAAG,SAAS;YACZ,SAAS;YACT,kBAAkB;YAClB,MAAM;YACN,eAAe;YACf,SAAS;YACT,aAAa;SACd,CAAC;KACH;IAED,IACE,QAAQ,KAAK,kCAAiB,CAAC,MAAM,CAAC,OAAO,EAAE;QAC/C,QAAQ,KAAK,kCAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,EAC7C;QACA,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;KAC/B;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAjDD,8EAiDC;AAED;;;GAGG;AACH,SAAgB,oCAAoC,CAClD,QAA2C;IAE3C,OAAO,CACL,QAAQ,KAAK,SAAS;QACtB,QAAQ,KAAK,aAAa;QAC1B,6BAA6B,CAAC,QAAQ,CAAC,CACxC,CAAC;AACJ,CAAC;AARD,oFAQC;AAED;;;GAGG;AACH,SAAgB,6BAA6B,CAC3C,QAAyC;IAEzC,QAAQ,QAAQ,EAAE;QAChB,KAAK,SAAS,CAAC;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,sEAWC","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 PropertyFilterBuilder\n */\n\nimport type { PropertyDescription } from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\n\n/**\n * Logical operator for joining rules.\n * @beta\n */\nexport enum PropertyFilterRuleGroupOperator {\n And = \"and\",\n Or = \"or\",\n}\n\n/**\n * Operators for comparing property value in [[PropertyFilterRule]].\n * @beta\n */\nexport enum PropertyFilterRuleOperator {\n IsTrue = \"is-true\",\n IsFalse = \"is-false\",\n IsEqual = \"is-equal\",\n IsNotEqual = \"is-not-equal\",\n Greater = \"greater\",\n GreaterOrEqual = \"greater-or-equal\",\n Less = \"less\",\n LessOrEqual = \"less-or-equal\",\n Like = \"like\",\n IsNull = \"is-null\",\n IsNotNull = \"is-not-null\",\n}\n\n/**\n * Operators supported by [[usePropertyFilterBuilder]] when building filter rules.\n * @beta\n */\nexport type PropertyFilterBuilderRuleOperator =\n | `${PropertyFilterRuleOperator}`\n | \"between\"\n | \"not-between\";\n\n/**\n * Function that returns set of available operator based on property type.\n * @beta\n */\nexport function getPropertyFilterBuilderOperators(\n property: PropertyDescription\n): PropertyFilterBuilderRuleOperator[] {\n const typename = property.typename;\n\n if (\n typename === StandardTypeNames.Bool.valueOf() ||\n typename === StandardTypeNames.Boolean.valueOf()\n ) {\n return [\"is-true\", \"is-false\"];\n }\n\n const operators: PropertyFilterBuilderRuleOperator[] = [\n \"is-equal\",\n \"is-not-equal\",\n \"is-null\",\n \"is-not-null\",\n ];\n\n if (\n typename === StandardTypeNames.Number.valueOf() ||\n typename === StandardTypeNames.Int.valueOf() ||\n typename === StandardTypeNames.Integer.valueOf() ||\n typename === StandardTypeNames.Double.valueOf() ||\n typename === StandardTypeNames.Float.valueOf() ||\n typename === StandardTypeNames.Hex.valueOf() ||\n typename === StandardTypeNames.Hexadecimal.valueOf() ||\n typename === StandardTypeNames.ShortDate.valueOf() ||\n typename === StandardTypeNames.DateTime.valueOf()\n ) {\n return [\n ...operators,\n \"greater\",\n \"greater-or-equal\",\n \"less\",\n \"less-or-equal\",\n \"between\",\n \"not-between\",\n ];\n }\n\n if (\n typename === StandardTypeNames.String.valueOf() ||\n typename === StandardTypeNames.Text.valueOf()\n ) {\n return [\"like\", ...operators];\n }\n\n return operators;\n}\n\n/**\n * Function that checks if supplied [[PropertyFilterBuilderRuleOperator]] operator is unary.\n * @beta\n */\nexport function isUnaryPropertyFilterBuilderOperator(\n operator: PropertyFilterBuilderRuleOperator\n) {\n return (\n operator !== \"between\" &&\n operator !== \"not-between\" &&\n isUnaryPropertyFilterOperator(operator)\n );\n}\n\n/**\n * Function that checks if supplied [[PropertyFilterRuleOperator]] operator is unary.\n * @beta\n */\nexport function isUnaryPropertyFilterOperator(\n operator: `${PropertyFilterRuleOperator}`\n) {\n switch (operator) {\n case \"is-true\":\n case \"is-false\":\n case \"is-null\":\n case \"is-not-null\":\n return true;\n }\n return false;\n}\n"]}
1
+ {"version":3,"file":"Operators.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/Operators.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAGH,0DAA0D;AAE1D;;;GAGG;AACH,IAAY,+BAGX;AAHD,WAAY,+BAA+B;IACzC,8CAAW,CAAA;IACX,4CAAS,CAAA;AACX,CAAC,EAHW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAG1C;AAED;;;;GAIG;AACH,IAAY,0BAYX;AAZD,WAAY,0BAA0B;IACpC,gDAAkB,CAAA;IAClB,kDAAoB,CAAA;IACpB,kDAAoB,CAAA;IACpB,yDAA2B,CAAA;IAC3B,iDAAmB,CAAA;IACnB,iEAAmC,CAAA;IACnC,2CAAa,CAAA;IACb,2DAA6B,CAAA;IAC7B,2CAAa,CAAA;IACb,gDAAkB,CAAA;IAClB,uDAAyB,CAAA;AAC3B,CAAC,EAZW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAYrC;AAWD;;;GAGG;AACH,SAAgB,iCAAiC,CAC/C,QAA6B;IAE7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAEnC,IACE,QAAQ,KAAK,kCAAiB,CAAC,IAAI,CAAC,OAAO,EAAE;QAC7C,QAAQ,KAAK,kCAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,EAChD;QACA,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;KAChC;IAED,MAAM,SAAS,GAAwC;QACrD,UAAU;QACV,cAAc;QACd,SAAS;QACT,aAAa;KACd,CAAC;IAEF,IACE,QAAQ,KAAK,kCAAiB,CAAC,MAAM,CAAC,OAAO,EAAE;QAC/C,QAAQ,KAAK,kCAAiB,CAAC,GAAG,CAAC,OAAO,EAAE;QAC5C,QAAQ,KAAK,kCAAiB,CAAC,OAAO,CAAC,OAAO,EAAE;QAChD,QAAQ,KAAK,kCAAiB,CAAC,MAAM,CAAC,OAAO,EAAE;QAC/C,QAAQ,KAAK,kCAAiB,CAAC,KAAK,CAAC,OAAO,EAAE;QAC9C,QAAQ,KAAK,kCAAiB,CAAC,GAAG,CAAC,OAAO,EAAE;QAC5C,QAAQ,KAAK,kCAAiB,CAAC,WAAW,CAAC,OAAO,EAAE;QACpD,QAAQ,KAAK,kCAAiB,CAAC,SAAS,CAAC,OAAO,EAAE;QAClD,QAAQ,KAAK,kCAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,EACjD;QACA,OAAO;YACL,GAAG,SAAS;YACZ,SAAS;YACT,kBAAkB;YAClB,MAAM;YACN,eAAe;YACf,SAAS;YACT,aAAa;SACd,CAAC;KACH;IAED,IACE,QAAQ,KAAK,kCAAiB,CAAC,MAAM,CAAC,OAAO,EAAE;QAC/C,QAAQ,KAAK,kCAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,EAC7C;QACA,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;KAC/B;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAjDD,8EAiDC;AAED;;;GAGG;AACH,SAAgB,oCAAoC,CAClD,QAA2C;IAE3C,OAAO,CACL,QAAQ,KAAK,SAAS;QACtB,QAAQ,KAAK,aAAa;QAC1B,6BAA6B,CAAC,QAAQ,CAAC,CACxC,CAAC;AACJ,CAAC;AARD,oFAQC;AAED;;;GAGG;AACH,SAAgB,6BAA6B,CAC3C,QAAyC;IAEzC,QAAQ,QAAQ,EAAE;QAChB,KAAK,SAAS,CAAC;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,sEAWC","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 PropertyFilterBuilder\n */\n\nimport type { PropertyDescription } from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\n\n/**\n * Logical operator for joining rules.\n * @beta\n */\nexport enum PropertyFilterRuleGroupOperator {\n And = \"and\",\n Or = \"or\",\n}\n\n/**\n * Operators for comparing property value in [[PropertyFilterRule]].\n * @note `Like` operator should be handled as a contains operator - it matches all strings that contain a given string.\n * @beta\n */\nexport enum PropertyFilterRuleOperator {\n IsTrue = \"is-true\",\n IsFalse = \"is-false\",\n IsEqual = \"is-equal\",\n IsNotEqual = \"is-not-equal\",\n Greater = \"greater\",\n GreaterOrEqual = \"greater-or-equal\",\n Less = \"less\",\n LessOrEqual = \"less-or-equal\",\n Like = \"like\",\n IsNull = \"is-null\",\n IsNotNull = \"is-not-null\",\n}\n\n/**\n * Operators supported by [[usePropertyFilterBuilder]] when building filter rules.\n * @beta\n */\nexport type PropertyFilterBuilderRuleOperator =\n | `${PropertyFilterRuleOperator}`\n | \"between\"\n | \"not-between\";\n\n/**\n * Function that returns set of available operator based on property type.\n * @beta\n */\nexport function getPropertyFilterBuilderOperators(\n property: PropertyDescription\n): PropertyFilterBuilderRuleOperator[] {\n const typename = property.typename;\n\n if (\n typename === StandardTypeNames.Bool.valueOf() ||\n typename === StandardTypeNames.Boolean.valueOf()\n ) {\n return [\"is-true\", \"is-false\"];\n }\n\n const operators: PropertyFilterBuilderRuleOperator[] = [\n \"is-equal\",\n \"is-not-equal\",\n \"is-null\",\n \"is-not-null\",\n ];\n\n if (\n typename === StandardTypeNames.Number.valueOf() ||\n typename === StandardTypeNames.Int.valueOf() ||\n typename === StandardTypeNames.Integer.valueOf() ||\n typename === StandardTypeNames.Double.valueOf() ||\n typename === StandardTypeNames.Float.valueOf() ||\n typename === StandardTypeNames.Hex.valueOf() ||\n typename === StandardTypeNames.Hexadecimal.valueOf() ||\n typename === StandardTypeNames.ShortDate.valueOf() ||\n typename === StandardTypeNames.DateTime.valueOf()\n ) {\n return [\n ...operators,\n \"greater\",\n \"greater-or-equal\",\n \"less\",\n \"less-or-equal\",\n \"between\",\n \"not-between\",\n ];\n }\n\n if (\n typename === StandardTypeNames.String.valueOf() ||\n typename === StandardTypeNames.Text.valueOf()\n ) {\n return [\"like\", ...operators];\n }\n\n return operators;\n}\n\n/**\n * Function that checks if supplied [[PropertyFilterBuilderRuleOperator]] operator is unary.\n * @beta\n */\nexport function isUnaryPropertyFilterBuilderOperator(\n operator: PropertyFilterBuilderRuleOperator\n) {\n return (\n operator !== \"between\" &&\n operator !== \"not-between\" &&\n isUnaryPropertyFilterOperator(operator)\n );\n}\n\n/**\n * Function that checks if supplied [[PropertyFilterRuleOperator]] operator is unary.\n * @beta\n */\nexport function isUnaryPropertyFilterOperator(\n operator: `${PropertyFilterRuleOperator}`\n) {\n switch (operator) {\n case \"is-true\":\n case \"is-false\":\n case \"is-null\":\n case \"is-not-null\":\n return true;\n }\n return false;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"InternalToolbarComponent.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/InternalToolbarComponent.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InternalToolbarComponent.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/InternalToolbarComponent.tsx"],"names":[],"mappings":"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"}
@@ -150,26 +150,23 @@ function CustomItem({ item, addGroupSeparator, }) {
150
150
  var _a;
151
151
  /* istanbul ignore next */ return (_a = appui_abstract_1.ConditionalStringValue.getValue(item.label)) !== null && _a !== void 0 ? _a : item.id;
152
152
  }, [item.id, item.label]);
153
- const badge = React.useMemo(() => core_react_1.BadgeUtilities.getComponentForBadgeType(item.badgeType), [item.badgeType]);
154
- return (React.createElement(PopupItem_1.PopupItem, { key: item.id, itemId: item.id, icon: icon, isDisabled: isDisabled, title: title, panel: item.panelContentNode, hideIndicator: useDragInteraction, badge: badge, addGroupSeparator: addGroupSeparator, keepContentsMounted: item.keepContentsLoaded }));
153
+ return (React.createElement(PopupItem_1.PopupItem, { key: item.id, itemId: item.id, icon: icon, isDisabled: isDisabled, title: title, panel: item.panelContentNode, hideIndicator: useDragInteraction, badge: React.createElement(core_react_1.Badge, { type: item.badgeType }), addGroupSeparator: addGroupSeparator, keepContentsMounted: item.keepContentsLoaded }));
155
154
  }
156
155
  /** @internal */
157
156
  function GroupPopupItem({ item, addGroupSeparator, }) {
158
157
  const { useDragInteraction } = useToolbarWithOverflowDirectionContext();
159
158
  const title = appui_abstract_1.ConditionalStringValue.getValue(item.label);
160
- const badge = core_react_1.BadgeUtilities.getComponentForBadgeType(item.badgeType);
161
159
  const panel = React.useMemo(() => React.createElement(PopupItemsPanel_1.PopupItemsPanel, { groupItem: item, activateOnPointerUp: false }), [item]);
162
160
  // istanbul ignore next
163
161
  const providerId = "providerId" in item ? item.providerId : undefined;
164
162
  if (useDragInteraction) {
165
- return (React.createElement(PopupItemWithDrag_1.PopupItemWithDrag, { key: item.id, itemId: item.id, providerId: providerId, itemPriority: item.itemPriority, groupPriority: item.groupPriority, icon: core_react_1.IconHelper.getIconReactNode(item.icon, item.internalData), isDisabled: appui_abstract_1.ConditionalBooleanValue.getValue(item.isDisabled), title: title, groupItem: item, badge: badge, addGroupSeparator: addGroupSeparator }));
163
+ return (React.createElement(PopupItemWithDrag_1.PopupItemWithDrag, { key: item.id, itemId: item.id, providerId: providerId, itemPriority: item.itemPriority, groupPriority: item.groupPriority, icon: core_react_1.IconHelper.getIconReactNode(item.icon, item.internalData), isDisabled: appui_abstract_1.ConditionalBooleanValue.getValue(item.isDisabled), title: title, groupItem: item, badge: React.createElement(core_react_1.Badge, { type: item.badgeType }), addGroupSeparator: addGroupSeparator }));
166
164
  }
167
- return (React.createElement(PopupItem_1.PopupItem, { key: item.id, itemId: item.id, providerId: providerId, itemPriority: item.itemPriority, groupPriority: item.groupPriority, icon: core_react_1.IconHelper.getIconReactNode(item.icon, item.internalData), isDisabled: appui_abstract_1.ConditionalBooleanValue.getValue(item.isDisabled), title: title, panel: panel, badge: badge, hideIndicator: useDragInteraction, addGroupSeparator: addGroupSeparator }));
165
+ return (React.createElement(PopupItem_1.PopupItem, { key: item.id, itemId: item.id, providerId: providerId, itemPriority: item.itemPriority, groupPriority: item.groupPriority, icon: core_react_1.IconHelper.getIconReactNode(item.icon, item.internalData), isDisabled: appui_abstract_1.ConditionalBooleanValue.getValue(item.isDisabled), title: title, panel: panel, badge: React.createElement(core_react_1.Badge, { type: item.badgeType }), hideIndicator: useDragInteraction, addGroupSeparator: addGroupSeparator }));
168
166
  }
169
167
  /** @internal */
170
168
  function ActionItem({ item, addGroupSeparator, }) {
171
169
  const title = appui_abstract_1.ConditionalStringValue.getValue(item.label);
172
- const badge = core_react_1.BadgeUtilities.getComponentForBadgeType(item.badgeType);
173
170
  const { onItemExecuted } = useToolbarWithOverflowDirectionContext();
174
171
  const onExecute = React.useCallback(() => {
175
172
  item.execute();
@@ -177,7 +174,7 @@ function ActionItem({ item, addGroupSeparator, }) {
177
174
  }, [item, onItemExecuted]);
178
175
  // istanbul ignore next
179
176
  const providerId = "providerId" in item ? item.providerId : undefined;
180
- return (React.createElement(Item_1.ToolbarButtonItem, { itemId: item.id, providerId: providerId, itemPriority: item.itemPriority, groupPriority: item.groupPriority, key: item.id, isDisabled: appui_abstract_1.ConditionalBooleanValue.getValue(item.isDisabled), title: title, icon: core_react_1.IconHelper.getIconReactNode(item.icon, item.internalData), isActive: item.isActive, onClick: onExecute, badge: badge, addGroupSeparator: addGroupSeparator }));
177
+ return (React.createElement(Item_1.ToolbarButtonItem, { itemId: item.id, providerId: providerId, itemPriority: item.itemPriority, groupPriority: item.groupPriority, key: item.id, isDisabled: appui_abstract_1.ConditionalBooleanValue.getValue(item.isDisabled), title: title, icon: core_react_1.IconHelper.getIconReactNode(item.icon, item.internalData), isActive: item.isActive, onClick: onExecute, badge: React.createElement(core_react_1.Badge, { type: item.badgeType }), addGroupSeparator: addGroupSeparator }));
181
178
  }
182
179
  /** @internal */
183
180
  function ToolbarItemComponent({ item, addGroupSeparator, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"InternalToolbarComponent.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/InternalToolbarComponent.tsx"],"names":[],"mappings":"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","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 ActionButton,\n CommonToolbarItem,\n CustomButtonDefinition,\n GroupButton,\n OnItemExecutedFunc,\n} from \"@itwin/appui-abstract\";\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n ToolbarItemUtilities,\n} from \"@itwin/appui-abstract\";\nimport type { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\nimport { BadgeUtilities, Icon, IconHelper } from \"@itwin/core-react\";\nimport { ToolbarButtonItem } from \"./Item\";\nimport { ToolbarItems } from \"./Items\";\nimport { ItemWrapper, useResizeObserverSingleDimension } from \"./ItemWrapper\";\nimport { ToolbarOverflowButton } from \"./Overflow\";\nimport { ToolbarOverflowPanel } from \"./OverflowPanel\";\nimport { PopupItem } from \"./PopupItem\";\nimport { PopupItemsPanel } from \"./PopupItemsPanel\";\nimport { PopupItemWithDrag } from \"./PopupItemWithDrag\";\nimport {\n Direction,\n DirectionHelpers,\n OrthogonalDirection,\n OrthogonalDirectionHelpers,\n} from \"./utilities/Direction\";\nimport { SvgPlaceholder } from \"@itwin/itwinui-icons-react\";\nimport type { BeEvent } from \"@itwin/core-bentley\";\nimport { useConditionalSynchedItems } from \"./useConditionalSynchedItems\";\nimport { useTranslation } from \"../useTranslation\";\n\n/** Describes the data needed to insert a custom `React` button into an ToolbarWithOverflow.\n * @public\n * @deprecated in 4.0. Use [ToolbarCustomItem]($appui-react) instead.\n */\nexport interface CustomToolbarItem extends CustomButtonDefinition {\n /** defines the content to display in popup panel */\n panelContentNode?: React.ReactNode;\n /** If true the popup panel is mounted once and unmounted when button is unmounted. If false the\n * content node is unmounted each time the popup is closed. */\n keepContentsLoaded?: boolean;\n}\n\n/**\n * Context used by Toolbar items to know if popup panel should be hidden - via AutoHide.\n * @public\n */\nexport const ToolbarPopupAutoHideContext = React.createContext<boolean>(false);\n\n/**\n * React hook used to retrieve the ToolbarPopupAutoHideContext.\n * @public\n */\nexport function useToolbarPopupAutoHideContext() {\n return React.useContext(ToolbarPopupAutoHideContext);\n}\n\n/** Describes toolbar item.\n * @public\n * @deprecated in 4.0. Use [ToolbarItem]($appui-react) instead.\n */\nexport type ToolbarItem = ActionButton | GroupButton | CustomToolbarItem; // eslint-disable-line deprecation/deprecation\n\n/** CustomToolbarItem type guard.\n * @internal\n */\nexport function isCustomToolbarItem(\n // eslint-disable-next-line deprecation/deprecation\n item: ToolbarItem\n // eslint-disable-next-line deprecation/deprecation\n): item is CustomToolbarItem {\n return !!(item as CustomToolbarItem).isCustom && \"panelContentNode\" in item; // eslint-disable-line deprecation/deprecation\n}\n\n/** @internal */\nexport const getToolbarDirection = (\n expandsTo: Direction\n): OrthogonalDirection => {\n const orthogonalDirection =\n DirectionHelpers.getOrthogonalDirection(expandsTo);\n return OrthogonalDirectionHelpers.inverse(orthogonalDirection);\n};\n\n/** Available alignment modes of [[Toolbar]] panels.\n * @public\n */\nexport enum ToolbarPanelAlignment {\n Start,\n End,\n}\n\n/** Enumeration of Toolbar Opacity setting.\n * @public\n */\nexport enum ToolbarOpacitySetting {\n /** Use the default background, box-shadow opacity and backdrop-filter blur */\n Defaults,\n /** Alter the opacity from transparent to the defaults based on mouse proximity */\n Proximity,\n /** Use a transparent background, box-shadow opacity and backdrop-filter blur */\n Transparent,\n}\n\n/** Helpers for [[ToolbarPanelAlignment]].\n * @internal\n */\nexport class ToolbarPanelAlignmentHelpers {\n /** Class name of [[ToolbarPanelAlignment.Start]] */\n public static readonly START_CLASS_NAME = \"components-panel-alignment-start\";\n /** Class name of [[ToolbarPanelAlignment.End]] */\n public static readonly END_CLASS_NAME = \"components-panel-alignment-end\";\n\n /** @returns Class name of specified [[ToolbarPanelAlignment]] */\n public static getCssClassName(panelAlignment: ToolbarPanelAlignment): string {\n switch (panelAlignment) {\n case ToolbarPanelAlignment.Start:\n return ToolbarPanelAlignmentHelpers.START_CLASS_NAME;\n case ToolbarPanelAlignment.End:\n return ToolbarPanelAlignmentHelpers.END_CLASS_NAME;\n }\n }\n}\n\n/** @internal */\nexport interface ToolbarOverflowContextProps {\n readonly expandsTo: Direction;\n readonly direction: OrthogonalDirection;\n readonly overflowExpandsTo: Direction;\n readonly overflowDirection: OrthogonalDirection;\n readonly panelAlignment: ToolbarPanelAlignment;\n readonly useDragInteraction: boolean;\n readonly toolbarOpacitySetting: ToolbarOpacitySetting;\n readonly openPopupCount: number;\n readonly onPopupPanelOpenClose: (isOpening: boolean) => void;\n readonly overflowDisplayActive: boolean;\n readonly onItemExecuted: OnItemExecutedFunc;\n readonly onKeyDown: (e: React.KeyboardEvent) => void;\n}\n\n/**\n * Context used by Toolbar component to provide Direction to child components.\n * @internal\n */\nexport const ToolbarWithOverflowDirectionContext =\n React.createContext<ToolbarOverflowContextProps>({\n expandsTo: Direction.Bottom,\n direction: OrthogonalDirection.Horizontal,\n overflowExpandsTo: Direction.Right,\n overflowDirection: OrthogonalDirection.Vertical,\n panelAlignment: ToolbarPanelAlignment.Start,\n useDragInteraction: false,\n toolbarOpacitySetting: ToolbarOpacitySetting.Proximity,\n openPopupCount: 0,\n onPopupPanelOpenClose: /* istanbul ignore next */ (\n _isOpening: boolean\n ) => {},\n overflowDisplayActive: false,\n onItemExecuted: /* istanbul ignore next */ (_item: any) => void {},\n onKeyDown: /* istanbul ignore next */ (_e: React.KeyboardEvent) => void {},\n });\n\n/** @internal */\nfunction CustomItem({\n item,\n addGroupSeparator,\n}: {\n // eslint-disable-next-line deprecation/deprecation\n item: CustomToolbarItem;\n addGroupSeparator: boolean;\n}) {\n const { useDragInteraction } = useToolbarWithOverflowDirectionContext();\n const icon = React.useMemo(\n () =>\n (item.icon &&\n IconHelper.getIconReactNode(item.icon, item.internalData)) || (\n // istanbul ignore next\n <Icon className=\"icon\" iconSpec={<SvgPlaceholder />} />\n ),\n [item.icon, item.internalData]\n );\n const isDisabled = React.useMemo(\n () => ConditionalBooleanValue.getValue(item.isDisabled),\n [item.isDisabled]\n );\n const title = React.useMemo(\n () =>\n /* istanbul ignore next */ ConditionalStringValue.getValue(item.label) ??\n item.id,\n [item.id, item.label]\n );\n const badge = React.useMemo(\n () => BadgeUtilities.getComponentForBadgeType(item.badgeType),\n [item.badgeType]\n );\n\n return (\n <PopupItem\n key={item.id}\n itemId={item.id}\n icon={icon}\n isDisabled={isDisabled}\n title={title}\n panel={item.panelContentNode}\n hideIndicator={useDragInteraction}\n badge={badge}\n addGroupSeparator={addGroupSeparator}\n keepContentsMounted={item.keepContentsLoaded}\n />\n );\n}\n\n/** @internal */\nfunction GroupPopupItem({\n item,\n addGroupSeparator,\n}: {\n item: GroupButton;\n addGroupSeparator: boolean;\n}) {\n const { useDragInteraction } = useToolbarWithOverflowDirectionContext();\n const title = ConditionalStringValue.getValue(item.label)!;\n const badge = BadgeUtilities.getComponentForBadgeType(item.badgeType);\n const panel = React.useMemo(\n () => <PopupItemsPanel groupItem={item} activateOnPointerUp={false} />,\n [item]\n );\n // istanbul ignore next\n const providerId =\n \"providerId\" in item ? (item.providerId as string) : undefined;\n if (useDragInteraction) {\n return (\n <PopupItemWithDrag\n key={item.id}\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n groupItem={item}\n badge={badge}\n addGroupSeparator={addGroupSeparator}\n />\n );\n }\n return (\n <PopupItem\n key={item.id}\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n panel={panel}\n badge={badge}\n hideIndicator={useDragInteraction}\n addGroupSeparator={addGroupSeparator}\n />\n );\n}\n\n/** @internal */\nfunction ActionItem({\n item,\n addGroupSeparator,\n}: {\n item: ActionButton;\n addGroupSeparator: boolean;\n}) {\n const title = ConditionalStringValue.getValue(item.label)!;\n const badge = BadgeUtilities.getComponentForBadgeType(item.badgeType);\n const { onItemExecuted } = useToolbarWithOverflowDirectionContext();\n const onExecute = React.useCallback(() => {\n item.execute();\n onItemExecuted(item);\n }, [item, onItemExecuted]);\n\n // istanbul ignore next\n const providerId =\n \"providerId\" in item ? (item.providerId as string) : undefined;\n return (\n <ToolbarButtonItem\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n key={item.id}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isActive={item.isActive}\n onClick={onExecute}\n badge={badge}\n addGroupSeparator={addGroupSeparator}\n />\n );\n}\n\n/** @internal */\nexport function ToolbarItemComponent({\n item,\n addGroupSeparator,\n}: {\n // eslint-disable-next-line deprecation/deprecation\n item: ToolbarItem;\n addGroupSeparator: boolean;\n}) {\n if (ToolbarItemUtilities.isGroupButton(item)) {\n return <GroupPopupItem item={item} addGroupSeparator={addGroupSeparator} />;\n } else if (isCustomToolbarItem(item)) {\n return <CustomItem item={item} addGroupSeparator={addGroupSeparator} />;\n } else {\n // istanbul ignore else\n if (ToolbarItemUtilities.isActionButton(item)) {\n return <ActionItem item={item} addGroupSeparator={addGroupSeparator} />;\n }\n }\n // istanbul ignore next\n return null;\n}\n\n/** @internal */\nexport function useToolbarWithOverflowDirectionContext() {\n return React.useContext(ToolbarWithOverflowDirectionContext);\n}\n\nfunction OverflowItemsContainer(p: { children: React.ReactNode }) {\n return <>{p.children}</>;\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 undefined;\n}\n\n/**\n * Recursively looks through all items and groups and removes the hidden items\n * from the working object.\n * @param items List of object to analyse\n * @returns Copy of the provided items, minus the hidden ones.\n */\nfunction filterHiddenItems<T extends CommonToolbarItem>(\n items: ReadonlyArray<T>\n): T[] {\n return items\n .filter((item) => !ConditionalBooleanValue.getValue(item.isHidden))\n .map((i) => {\n if (\"items\" in i) {\n return { ...i, items: filterHiddenItems(i.items) };\n }\n return i;\n });\n}\n\n/** Properties of [[ToolbarComponent]] component.\n * @internal\n */\nexport interface InternalToolbarComponentProps\n extends CommonProps,\n NoChildrenProps {\n /** Describes to which direction the popup panels are expanded. Defaults to: [[Direction.Bottom]] */\n expandsTo?: Direction;\n /** Describes if items that do not fit available space should move to an expandable panel. Defaults to: false */\n enableOverflow?:\n | boolean\n | {\n /** Describes to which direction the overflow popup panels are expanded if overflow is enabled. Defaults to: [[Direction.Right]] */\n overflowExpandsTo?: Direction;\n };\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 /** SyncEvents on which the conditional should listen to */\n syncUiEvent?: BeEvent<(args: { eventIds: Set<string> }) => void>;\n}\n\n/** Component that displays toolbar items.\n * @internal\n */\nexport function InternalToolbarComponent(props: InternalToolbarComponentProps) {\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 useHeight =\n expandsTo === Direction.Right || expandsTo === Direction.Left;\n const { translate } = useTranslation();\n const [isOverflowPanelOpen, setIsOverflowPanelOpen] = React.useState(false);\n const [popupPanelCount, setPopupPanelCount] = React.useState(0);\n const isMounted = React.useRef(false);\n React.useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n });\n const handlePopupPanelOpenClose = React.useCallback((isOpening: boolean) => {\n // use setTimeout to avoid warning about setting state in ToolbarWithOverflow from render method of PopupItem/PopupItemWithDrag\n setTimeout(() => {\n // istanbul ignore next\n if (!isMounted.current) return;\n setPopupPanelCount((prev) => {\n /* istanbul ignore next */\n const nextCount = isOpening ? prev + 1 : prev - 1;\n return nextCount < 0 ? /* istanbul ignore next */ 0 : nextCount;\n });\n });\n }, []);\n\n const width = React.useRef<number | undefined>(undefined);\n\n const eventSynchedItems = useConditionalSynchedItems(\n props.items,\n props.syncUiEvent\n );\n\n const availableNodes = React.useMemo<React.ReactNode>(() => {\n const filteredItems = filterHiddenItems(eventSynchedItems);\n return filteredItems.map((item, index) => {\n let addGroupSeparator = false;\n if (index > 0)\n addGroupSeparator =\n item.groupPriority !== filteredItems[index - 1].groupPriority;\n return (\n <ToolbarItemComponent\n key={item.id}\n item={item}\n addGroupSeparator={!!addGroupSeparator}\n />\n );\n });\n }, [eventSynchedItems]);\n /* overflowItemKeys - keys of items to show in overflow panel\n * handleContainerResize - handler called when container <div> is resized.\n * handleOverflowResize - handler called when determining size of overflow indicator/button.\n * handleEntryResize - handler called when determining size of each item/button. */\n const [\n overflowItemKeys,\n handleContainerResize,\n handleOverflowResize,\n handleEntryResize,\n ] = useOverflow(availableNodes, panelAlignment === ToolbarPanelAlignment.End);\n // handler called by ResizeObserver\n const handleResize = React.useCallback(\n (w: number) => {\n width.current = w;\n width.current !== undefined && handleContainerResize(width.current);\n },\n [handleContainerResize]\n );\n const resizeObserverRef = useResizeObserverSingleDimension(\n handleResize,\n useHeight\n );\n const handleClick = React.useCallback(() => {\n setIsOverflowPanelOpen((prev) => !prev);\n }, []);\n // istanbul ignore next - NEEDSWORK add complete tests\n const handleClose = React.useCallback(() => {\n setIsOverflowPanelOpen(false);\n }, []);\n\n // Not setting the ref will disable overflow management, but will keep proper refresh of items.\n const ref = props.enableOverflow ? resizeObserverRef : undefined;\n const availableItems = React.Children.toArray(availableNodes);\n const displayedItems = availableItems.reduce<\n Array<[string, React.ReactNode]>\n >((acc, child, index) => {\n const key = getChildKey(child, index);\n if (!overflowItemKeys || overflowItemKeys.indexOf(key) < 0) {\n acc.push([key, child]);\n }\n return acc;\n }, []);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const overflowPanelItems = overflowItemKeys\n ? availableItems.reduce<Array<[string, React.ReactNode]>>(\n (acc, child, index) => {\n const key = getChildKey(child, index);\n if (overflowItemKeys.indexOf(key) >= 0) {\n acc.push([key, child]);\n }\n return acc;\n },\n []\n )\n : [];\n\n const direction = getToolbarDirection(expandsTo);\n const overflowExpandsTo =\n (typeof props.enableOverflow !== \"boolean\" &&\n props.enableOverflow?.overflowExpandsTo) ||\n Direction.Right;\n const addOverflowButton = React.useCallback(\n (atStart: boolean) => {\n const overflowItems = !!atStart\n ? overflowPanelItems.reverse()\n : overflowPanelItems;\n return (\n <ToolbarItemContext.Provider\n value={{\n hasOverflow: false,\n useHeight,\n onResize: handleOverflowResize,\n }}\n >\n <ToolbarOverflowButton\n expandsTo={expandsTo}\n onClick={handleClick}\n onClose={handleClose}\n open={overflowItems.length > 0 && isOverflowPanelOpen}\n panelNode={\n <ToolbarOverflowPanel>\n <OverflowItemsContainer>\n {overflowItems.map(([key, child]) => {\n return (\n <ToolbarItemContext.Provider\n key={key}\n value={{\n hasOverflow: true,\n useHeight,\n onResize: () => {},\n }}\n >\n {\n <ItemWrapper className={getItemWrapperClass(child)}>\n {child}\n </ItemWrapper>\n }\n </ToolbarItemContext.Provider>\n );\n })}\n </OverflowItemsContainer>\n </ToolbarOverflowPanel>\n }\n title={translate(\"toolbar.overflow\")}\n />\n </ToolbarItemContext.Provider>\n );\n },\n [\n overflowPanelItems,\n useHeight,\n handleOverflowResize,\n expandsTo,\n handleClick,\n handleClose,\n isOverflowPanelOpen,\n translate,\n ]\n );\n\n const className = classnames(\n \"components-toolbar-overflow-sizer\",\n OrthogonalDirectionHelpers.getCssClassName(direction),\n props.className\n );\n\n const showOverflowAtStart =\n direction === OrthogonalDirection.Horizontal &&\n panelAlignment === ToolbarPanelAlignment.End;\n /* The ItemWrapper is used to wrap the <Item> <ExpandableItem> with a <div> that specifies a ref that the sizing logic uses to determine the\n size of the item. */\n return (\n <ToolbarWithOverflowDirectionContext.Provider\n value={{\n expandsTo,\n direction,\n overflowExpandsTo,\n panelAlignment,\n useDragInteraction,\n toolbarOpacitySetting:\n props.toolbarOpacitySetting ?? ToolbarOpacitySetting.Proximity,\n overflowDirection:\n direction === OrthogonalDirection.Horizontal\n ? OrthogonalDirection.Vertical\n : OrthogonalDirection.Horizontal,\n openPopupCount: popupPanelCount,\n onPopupPanelOpenClose: handlePopupPanelOpenClose,\n overflowDisplayActive:\n overflowPanelItems.length > 0 && isOverflowPanelOpen,\n onItemExecuted: props.onItemExecuted ? props.onItemExecuted : () => {},\n onKeyDown: props.onKeyDown\n ? props.onKeyDown\n : /* istanbul ignore next */ (_e: React.KeyboardEvent) => {},\n }}\n >\n {availableItems.length > 0 && (\n <div\n className={className}\n ref={ref}\n style={props.style}\n onKeyDown={props.onKeyDown}\n role=\"presentation\"\n >\n <ToolbarItems className=\"components-items\" direction={direction}>\n {props.enableOverflow &&\n (!overflowItemKeys || overflowItemKeys.length > 0) &&\n showOverflowAtStart &&\n addOverflowButton(true)}\n {displayedItems.map(([key, child]) => {\n const onEntryResize = handleEntryResize(key);\n return (\n <ToolbarItemContext.Provider\n key={key}\n value={{\n hasOverflow: false,\n useHeight,\n onResize: onEntryResize,\n }}\n >\n <ItemWrapper className={getItemWrapperClass(child)}>\n {child}\n </ItemWrapper>\n </ToolbarItemContext.Provider>\n );\n })}\n {props.enableOverflow &&\n (!overflowItemKeys || overflowItemKeys.length > 0) &&\n !showOverflowAtStart &&\n addOverflowButton(false)}\n </ToolbarItems>\n </div>\n )}\n </ToolbarWithOverflowDirectionContext.Provider>\n );\n}\n\n/** Returns key of a child. Must be used along with React.Children.toArray to preserve the semantics of availableItems.\n * @internal\n */\nfunction getChildKey(child: React.ReactNode, index: number) {\n // istanbul ignore else\n if (React.isValidElement(child) && child.key !== null) {\n return child.key.toString();\n }\n // istanbul ignore next\n return index.toString();\n}\n\n/** Returns a subset of toolbar item entry keys that exceed given width and should be overflowItemKeys.\n * @internal\n */\nfunction determineOverflowItems(\n size: number,\n entries: ReadonlyArray<readonly [string, number]>,\n overflowButtonSize: number,\n overflowButtonAtStart: boolean\n): string[] {\n let toolbarSize = 0;\n const buttonPadding = 2;\n if (overflowButtonAtStart && entries.length > 0) {\n let i = entries.length - 1;\n for (; i >= 0; i--) {\n const w = entries[i][1] + buttonPadding;\n const newSettingsWidth = toolbarSize + w;\n if (newSettingsWidth > size) {\n toolbarSize += overflowButtonSize + buttonPadding;\n break;\n }\n toolbarSize = newSettingsWidth;\n }\n if (i >= 0) {\n let j = i + 1;\n for (; j < entries.length; j++) {\n if (toolbarSize <= size) break;\n const w = entries[j][1] + buttonPadding;\n toolbarSize -= w;\n }\n\n return entries.slice(0, j).map((e) => e[0]);\n } else {\n return [];\n }\n } else {\n let i = 0;\n for (; i < entries.length; i++) {\n const w = entries[i][1] + buttonPadding;\n const newSettingsWidth = toolbarSize + w;\n if (newSettingsWidth > size) {\n toolbarSize += overflowButtonSize + buttonPadding;\n break;\n }\n toolbarSize = newSettingsWidth;\n }\n let j = i;\n for (; j > 0; j--) {\n if (toolbarSize <= size) break;\n const w = entries[j][1] + buttonPadding;\n toolbarSize -= w;\n }\n\n return entries.slice(j).map((e) => e[0]);\n }\n}\n\n/** Hook that returns a list of overflowItemKeys availableItems.\n * @internal\n */\nfunction useOverflow(\n availableItems: React.ReactNode,\n overflowButtonAtStart: boolean\n): [\n ReadonlyArray<string> | undefined,\n (size: number) => void,\n (size: number) => void,\n (key: string) => (size: number) => void\n] {\n const [overflowItemKeys, setOverflown] =\n React.useState<ReadonlyArray<string>>();\n const itemSizes = React.useRef(new Map<string, number | undefined>());\n const size = React.useRef<number | undefined>(undefined);\n const overflowButtonSize = React.useRef<number | undefined>(undefined);\n\n const calculateOverflow = React.useCallback(() => {\n const sizes = verifiedMapEntries(itemSizes.current);\n if (\n size.current === undefined ||\n sizes === undefined ||\n overflowButtonSize.current === undefined\n ) {\n setOverflown(undefined);\n return;\n }\n\n // Calculate overflow.\n const newOverflown = determineOverflowItems(\n size.current,\n [...sizes.entries()],\n overflowButtonSize.current,\n overflowButtonAtStart\n );\n setOverflown((prevOverflown) => {\n return eql(prevOverflown, newOverflown) ? prevOverflown : newOverflown;\n });\n }, [overflowButtonAtStart]);\n\n React.useLayoutEffect(() => {\n const newEntryWidths = new Map<string, number | undefined>();\n const array = React.Children.toArray(availableItems);\n for (let i = 0; i < array.length; i++) {\n const child = array[i];\n const key = getChildKey(child, i);\n const lastW = itemSizes.current.get(key);\n newEntryWidths.set(key, lastW);\n }\n itemSizes.current = newEntryWidths;\n calculateOverflow();\n }, [availableItems, calculateOverflow]);\n\n const handleContainerResize = React.useCallback(\n (w: number) => {\n const calculate = size.current !== w;\n size.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleOverflowResize = React.useCallback(\n (w: number) => {\n const calculate = overflowButtonSize.current !== w;\n overflowButtonSize.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleEntryResize = React.useCallback(\n (key: string) => (w: number) => {\n const oldW = itemSizes.current.get(key);\n if (oldW !== w) {\n itemSizes.current.set(key, w);\n calculateOverflow();\n }\n },\n [calculateOverflow]\n );\n\n return [\n overflowItemKeys,\n handleContainerResize,\n handleOverflowResize,\n handleEntryResize,\n ];\n}\n\n/** Interface toolbars use to define context for its items.\n * @internal\n */\nexport interface ToolbarItemContextArgs {\n readonly hasOverflow: boolean;\n readonly useHeight: boolean;\n readonly onResize: (w: number) => void;\n}\n\n/** Interface toolbars use to define context for its items.\n * @internal\n */\nexport const ToolbarItemContext = React.createContext<ToolbarItemContextArgs>({\n hasOverflow: false,\n useHeight: false,\n onResize: () => {\n // intentionally do nothing by default.\n },\n});\n\n/** @internal */\nexport function useToolItemEntryContext() {\n return React.useContext(ToolbarItemContext);\n}\n\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\n for (const [, val] of map) {\n // istanbul ignore next during unit testing\n if (val === undefined) return undefined;\n }\n return map as Map<string, T>;\n}\n\nfunction eql(prev: readonly string[] | undefined, value: readonly string[]) {\n if (!prev) return false;\n // istanbul ignore next\n if (prev.length !== value.length) return false;\n for (let i = 0; i < prev.length; i++) {\n const p = prev[i];\n const v = value[i];\n // istanbul ignore next\n if (p !== v) return false;\n }\n return true;\n}\n"]}
1
+ {"version":3,"file":"InternalToolbarComponent.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/InternalToolbarComponent.tsx"],"names":[],"mappings":"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","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 ActionButton,\n CommonToolbarItem,\n CustomButtonDefinition,\n GroupButton,\n OnItemExecutedFunc,\n} from \"@itwin/appui-abstract\";\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n ToolbarItemUtilities,\n} from \"@itwin/appui-abstract\";\nimport type { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\nimport { Badge, Icon, IconHelper } from \"@itwin/core-react\";\nimport { ToolbarButtonItem } from \"./Item\";\nimport { ToolbarItems } from \"./Items\";\nimport { ItemWrapper, useResizeObserverSingleDimension } from \"./ItemWrapper\";\nimport { ToolbarOverflowButton } from \"./Overflow\";\nimport { ToolbarOverflowPanel } from \"./OverflowPanel\";\nimport { PopupItem } from \"./PopupItem\";\nimport { PopupItemsPanel } from \"./PopupItemsPanel\";\nimport { PopupItemWithDrag } from \"./PopupItemWithDrag\";\nimport {\n Direction,\n DirectionHelpers,\n OrthogonalDirection,\n OrthogonalDirectionHelpers,\n} from \"./utilities/Direction\";\nimport { SvgPlaceholder } from \"@itwin/itwinui-icons-react\";\nimport type { BeEvent } from \"@itwin/core-bentley\";\nimport { useConditionalSynchedItems } from \"./useConditionalSynchedItems\";\nimport { useTranslation } from \"../useTranslation\";\n\n/** Describes the data needed to insert a custom `React` button into an ToolbarWithOverflow.\n * @public\n * @deprecated in 4.0. Use [ToolbarCustomItem]($appui-react) instead.\n */\nexport interface CustomToolbarItem extends CustomButtonDefinition {\n /** defines the content to display in popup panel */\n panelContentNode?: React.ReactNode;\n /** If true the popup panel is mounted once and unmounted when button is unmounted. If false the\n * content node is unmounted each time the popup is closed. */\n keepContentsLoaded?: boolean;\n}\n\n/**\n * Context used by Toolbar items to know if popup panel should be hidden - via AutoHide.\n * @public\n */\nexport const ToolbarPopupAutoHideContext = React.createContext<boolean>(false);\n\n/**\n * React hook used to retrieve the ToolbarPopupAutoHideContext.\n * @public\n */\nexport function useToolbarPopupAutoHideContext() {\n return React.useContext(ToolbarPopupAutoHideContext);\n}\n\n/** Describes toolbar item.\n * @public\n * @deprecated in 4.0. Use [ToolbarItem]($appui-react) instead.\n */\nexport type ToolbarItem = ActionButton | GroupButton | CustomToolbarItem; // eslint-disable-line deprecation/deprecation\n\n/** CustomToolbarItem type guard.\n * @internal\n */\nexport function isCustomToolbarItem(\n // eslint-disable-next-line deprecation/deprecation\n item: ToolbarItem\n // eslint-disable-next-line deprecation/deprecation\n): item is CustomToolbarItem {\n return !!(item as CustomToolbarItem).isCustom && \"panelContentNode\" in item; // eslint-disable-line deprecation/deprecation\n}\n\n/** @internal */\nexport const getToolbarDirection = (\n expandsTo: Direction\n): OrthogonalDirection => {\n const orthogonalDirection =\n DirectionHelpers.getOrthogonalDirection(expandsTo);\n return OrthogonalDirectionHelpers.inverse(orthogonalDirection);\n};\n\n/** Available alignment modes of [[Toolbar]] panels.\n * @public\n */\nexport enum ToolbarPanelAlignment {\n Start,\n End,\n}\n\n/** Enumeration of Toolbar Opacity setting.\n * @public\n */\nexport enum ToolbarOpacitySetting {\n /** Use the default background, box-shadow opacity and backdrop-filter blur */\n Defaults,\n /** Alter the opacity from transparent to the defaults based on mouse proximity */\n Proximity,\n /** Use a transparent background, box-shadow opacity and backdrop-filter blur */\n Transparent,\n}\n\n/** Helpers for [[ToolbarPanelAlignment]].\n * @internal\n */\nexport class ToolbarPanelAlignmentHelpers {\n /** Class name of [[ToolbarPanelAlignment.Start]] */\n public static readonly START_CLASS_NAME = \"components-panel-alignment-start\";\n /** Class name of [[ToolbarPanelAlignment.End]] */\n public static readonly END_CLASS_NAME = \"components-panel-alignment-end\";\n\n /** @returns Class name of specified [[ToolbarPanelAlignment]] */\n public static getCssClassName(panelAlignment: ToolbarPanelAlignment): string {\n switch (panelAlignment) {\n case ToolbarPanelAlignment.Start:\n return ToolbarPanelAlignmentHelpers.START_CLASS_NAME;\n case ToolbarPanelAlignment.End:\n return ToolbarPanelAlignmentHelpers.END_CLASS_NAME;\n }\n }\n}\n\n/** @internal */\nexport interface ToolbarOverflowContextProps {\n readonly expandsTo: Direction;\n readonly direction: OrthogonalDirection;\n readonly overflowExpandsTo: Direction;\n readonly overflowDirection: OrthogonalDirection;\n readonly panelAlignment: ToolbarPanelAlignment;\n readonly useDragInteraction: boolean;\n readonly toolbarOpacitySetting: ToolbarOpacitySetting;\n readonly openPopupCount: number;\n readonly onPopupPanelOpenClose: (isOpening: boolean) => void;\n readonly overflowDisplayActive: boolean;\n readonly onItemExecuted: OnItemExecutedFunc;\n readonly onKeyDown: (e: React.KeyboardEvent) => void;\n}\n\n/**\n * Context used by Toolbar component to provide Direction to child components.\n * @internal\n */\nexport const ToolbarWithOverflowDirectionContext =\n React.createContext<ToolbarOverflowContextProps>({\n expandsTo: Direction.Bottom,\n direction: OrthogonalDirection.Horizontal,\n overflowExpandsTo: Direction.Right,\n overflowDirection: OrthogonalDirection.Vertical,\n panelAlignment: ToolbarPanelAlignment.Start,\n useDragInteraction: false,\n toolbarOpacitySetting: ToolbarOpacitySetting.Proximity,\n openPopupCount: 0,\n onPopupPanelOpenClose: /* istanbul ignore next */ (\n _isOpening: boolean\n ) => {},\n overflowDisplayActive: false,\n onItemExecuted: /* istanbul ignore next */ (_item: any) => void {},\n onKeyDown: /* istanbul ignore next */ (_e: React.KeyboardEvent) => void {},\n });\n\n/** @internal */\nfunction CustomItem({\n item,\n addGroupSeparator,\n}: {\n // eslint-disable-next-line deprecation/deprecation\n item: CustomToolbarItem;\n addGroupSeparator: boolean;\n}) {\n const { useDragInteraction } = useToolbarWithOverflowDirectionContext();\n const icon = React.useMemo(\n () =>\n (item.icon &&\n IconHelper.getIconReactNode(item.icon, item.internalData)) || (\n // istanbul ignore next\n <Icon className=\"icon\" iconSpec={<SvgPlaceholder />} />\n ),\n [item.icon, item.internalData]\n );\n const isDisabled = React.useMemo(\n () => ConditionalBooleanValue.getValue(item.isDisabled),\n [item.isDisabled]\n );\n const title = React.useMemo(\n () =>\n /* istanbul ignore next */ ConditionalStringValue.getValue(item.label) ??\n item.id,\n [item.id, item.label]\n );\n\n return (\n <PopupItem\n key={item.id}\n itemId={item.id}\n icon={icon}\n isDisabled={isDisabled}\n title={title}\n panel={item.panelContentNode}\n hideIndicator={useDragInteraction}\n badge={<Badge type={item.badgeType} />}\n addGroupSeparator={addGroupSeparator}\n keepContentsMounted={item.keepContentsLoaded}\n />\n );\n}\n\n/** @internal */\nfunction GroupPopupItem({\n item,\n addGroupSeparator,\n}: {\n item: GroupButton;\n addGroupSeparator: boolean;\n}) {\n const { useDragInteraction } = useToolbarWithOverflowDirectionContext();\n const title = ConditionalStringValue.getValue(item.label)!;\n const panel = React.useMemo(\n () => <PopupItemsPanel groupItem={item} activateOnPointerUp={false} />,\n [item]\n );\n // istanbul ignore next\n const providerId =\n \"providerId\" in item ? (item.providerId as string) : undefined;\n if (useDragInteraction) {\n return (\n <PopupItemWithDrag\n key={item.id}\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n groupItem={item}\n badge={<Badge type={item.badgeType} />}\n addGroupSeparator={addGroupSeparator}\n />\n );\n }\n return (\n <PopupItem\n key={item.id}\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n panel={panel}\n badge={<Badge type={item.badgeType} />}\n hideIndicator={useDragInteraction}\n addGroupSeparator={addGroupSeparator}\n />\n );\n}\n\n/** @internal */\nfunction ActionItem({\n item,\n addGroupSeparator,\n}: {\n item: ActionButton;\n addGroupSeparator: boolean;\n}) {\n const title = ConditionalStringValue.getValue(item.label)!;\n const { onItemExecuted } = useToolbarWithOverflowDirectionContext();\n const onExecute = React.useCallback(() => {\n item.execute();\n onItemExecuted(item);\n }, [item, onItemExecuted]);\n\n // istanbul ignore next\n const providerId =\n \"providerId\" in item ? (item.providerId as string) : undefined;\n return (\n <ToolbarButtonItem\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n key={item.id}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isActive={item.isActive}\n onClick={onExecute}\n badge={<Badge type={item.badgeType} />}\n addGroupSeparator={addGroupSeparator}\n />\n );\n}\n\n/** @internal */\nexport function ToolbarItemComponent({\n item,\n addGroupSeparator,\n}: {\n // eslint-disable-next-line deprecation/deprecation\n item: ToolbarItem;\n addGroupSeparator: boolean;\n}) {\n if (ToolbarItemUtilities.isGroupButton(item)) {\n return <GroupPopupItem item={item} addGroupSeparator={addGroupSeparator} />;\n } else if (isCustomToolbarItem(item)) {\n return <CustomItem item={item} addGroupSeparator={addGroupSeparator} />;\n } else {\n // istanbul ignore else\n if (ToolbarItemUtilities.isActionButton(item)) {\n return <ActionItem item={item} addGroupSeparator={addGroupSeparator} />;\n }\n }\n // istanbul ignore next\n return null;\n}\n\n/** @internal */\nexport function useToolbarWithOverflowDirectionContext() {\n return React.useContext(ToolbarWithOverflowDirectionContext);\n}\n\nfunction OverflowItemsContainer(p: { children: React.ReactNode }) {\n return <>{p.children}</>;\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 undefined;\n}\n\n/**\n * Recursively looks through all items and groups and removes the hidden items\n * from the working object.\n * @param items List of object to analyse\n * @returns Copy of the provided items, minus the hidden ones.\n */\nfunction filterHiddenItems<T extends CommonToolbarItem>(\n items: ReadonlyArray<T>\n): T[] {\n return items\n .filter((item) => !ConditionalBooleanValue.getValue(item.isHidden))\n .map((i) => {\n if (\"items\" in i) {\n return { ...i, items: filterHiddenItems(i.items) };\n }\n return i;\n });\n}\n\n/** Properties of [[ToolbarComponent]] component.\n * @internal\n */\nexport interface InternalToolbarComponentProps\n extends CommonProps,\n NoChildrenProps {\n /** Describes to which direction the popup panels are expanded. Defaults to: [[Direction.Bottom]] */\n expandsTo?: Direction;\n /** Describes if items that do not fit available space should move to an expandable panel. Defaults to: false */\n enableOverflow?:\n | boolean\n | {\n /** Describes to which direction the overflow popup panels are expanded if overflow is enabled. Defaults to: [[Direction.Right]] */\n overflowExpandsTo?: Direction;\n };\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 /** SyncEvents on which the conditional should listen to */\n syncUiEvent?: BeEvent<(args: { eventIds: Set<string> }) => void>;\n}\n\n/** Component that displays toolbar items.\n * @internal\n */\nexport function InternalToolbarComponent(props: InternalToolbarComponentProps) {\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 useHeight =\n expandsTo === Direction.Right || expandsTo === Direction.Left;\n const { translate } = useTranslation();\n const [isOverflowPanelOpen, setIsOverflowPanelOpen] = React.useState(false);\n const [popupPanelCount, setPopupPanelCount] = React.useState(0);\n const isMounted = React.useRef(false);\n React.useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n });\n const handlePopupPanelOpenClose = React.useCallback((isOpening: boolean) => {\n // use setTimeout to avoid warning about setting state in ToolbarWithOverflow from render method of PopupItem/PopupItemWithDrag\n setTimeout(() => {\n // istanbul ignore next\n if (!isMounted.current) return;\n setPopupPanelCount((prev) => {\n /* istanbul ignore next */\n const nextCount = isOpening ? prev + 1 : prev - 1;\n return nextCount < 0 ? /* istanbul ignore next */ 0 : nextCount;\n });\n });\n }, []);\n\n const width = React.useRef<number | undefined>(undefined);\n\n const eventSynchedItems = useConditionalSynchedItems(\n props.items,\n props.syncUiEvent\n );\n\n const availableNodes = React.useMemo<React.ReactNode>(() => {\n const filteredItems = filterHiddenItems(eventSynchedItems);\n return filteredItems.map((item, index) => {\n let addGroupSeparator = false;\n if (index > 0)\n addGroupSeparator =\n item.groupPriority !== filteredItems[index - 1].groupPriority;\n return (\n <ToolbarItemComponent\n key={item.id}\n item={item}\n addGroupSeparator={!!addGroupSeparator}\n />\n );\n });\n }, [eventSynchedItems]);\n /* overflowItemKeys - keys of items to show in overflow panel\n * handleContainerResize - handler called when container <div> is resized.\n * handleOverflowResize - handler called when determining size of overflow indicator/button.\n * handleEntryResize - handler called when determining size of each item/button. */\n const [\n overflowItemKeys,\n handleContainerResize,\n handleOverflowResize,\n handleEntryResize,\n ] = useOverflow(availableNodes, panelAlignment === ToolbarPanelAlignment.End);\n // handler called by ResizeObserver\n const handleResize = React.useCallback(\n (w: number) => {\n width.current = w;\n width.current !== undefined && handleContainerResize(width.current);\n },\n [handleContainerResize]\n );\n const resizeObserverRef = useResizeObserverSingleDimension(\n handleResize,\n useHeight\n );\n const handleClick = React.useCallback(() => {\n setIsOverflowPanelOpen((prev) => !prev);\n }, []);\n // istanbul ignore next - NEEDSWORK add complete tests\n const handleClose = React.useCallback(() => {\n setIsOverflowPanelOpen(false);\n }, []);\n\n // Not setting the ref will disable overflow management, but will keep proper refresh of items.\n const ref = props.enableOverflow ? resizeObserverRef : undefined;\n const availableItems = React.Children.toArray(availableNodes);\n const displayedItems = availableItems.reduce<\n Array<[string, React.ReactNode]>\n >((acc, child, index) => {\n const key = getChildKey(child, index);\n if (!overflowItemKeys || overflowItemKeys.indexOf(key) < 0) {\n acc.push([key, child]);\n }\n return acc;\n }, []);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const overflowPanelItems = overflowItemKeys\n ? availableItems.reduce<Array<[string, React.ReactNode]>>(\n (acc, child, index) => {\n const key = getChildKey(child, index);\n if (overflowItemKeys.indexOf(key) >= 0) {\n acc.push([key, child]);\n }\n return acc;\n },\n []\n )\n : [];\n\n const direction = getToolbarDirection(expandsTo);\n const overflowExpandsTo =\n (typeof props.enableOverflow !== \"boolean\" &&\n props.enableOverflow?.overflowExpandsTo) ||\n Direction.Right;\n const addOverflowButton = React.useCallback(\n (atStart: boolean) => {\n const overflowItems = !!atStart\n ? overflowPanelItems.reverse()\n : overflowPanelItems;\n return (\n <ToolbarItemContext.Provider\n value={{\n hasOverflow: false,\n useHeight,\n onResize: handleOverflowResize,\n }}\n >\n <ToolbarOverflowButton\n expandsTo={expandsTo}\n onClick={handleClick}\n onClose={handleClose}\n open={overflowItems.length > 0 && isOverflowPanelOpen}\n panelNode={\n <ToolbarOverflowPanel>\n <OverflowItemsContainer>\n {overflowItems.map(([key, child]) => {\n return (\n <ToolbarItemContext.Provider\n key={key}\n value={{\n hasOverflow: true,\n useHeight,\n onResize: () => {},\n }}\n >\n {\n <ItemWrapper className={getItemWrapperClass(child)}>\n {child}\n </ItemWrapper>\n }\n </ToolbarItemContext.Provider>\n );\n })}\n </OverflowItemsContainer>\n </ToolbarOverflowPanel>\n }\n title={translate(\"toolbar.overflow\")}\n />\n </ToolbarItemContext.Provider>\n );\n },\n [\n overflowPanelItems,\n useHeight,\n handleOverflowResize,\n expandsTo,\n handleClick,\n handleClose,\n isOverflowPanelOpen,\n translate,\n ]\n );\n\n const className = classnames(\n \"components-toolbar-overflow-sizer\",\n OrthogonalDirectionHelpers.getCssClassName(direction),\n props.className\n );\n\n const showOverflowAtStart =\n direction === OrthogonalDirection.Horizontal &&\n panelAlignment === ToolbarPanelAlignment.End;\n /* The ItemWrapper is used to wrap the <Item> <ExpandableItem> with a <div> that specifies a ref that the sizing logic uses to determine the\n size of the item. */\n return (\n <ToolbarWithOverflowDirectionContext.Provider\n value={{\n expandsTo,\n direction,\n overflowExpandsTo,\n panelAlignment,\n useDragInteraction,\n toolbarOpacitySetting:\n props.toolbarOpacitySetting ?? ToolbarOpacitySetting.Proximity,\n overflowDirection:\n direction === OrthogonalDirection.Horizontal\n ? OrthogonalDirection.Vertical\n : OrthogonalDirection.Horizontal,\n openPopupCount: popupPanelCount,\n onPopupPanelOpenClose: handlePopupPanelOpenClose,\n overflowDisplayActive:\n overflowPanelItems.length > 0 && isOverflowPanelOpen,\n onItemExecuted: props.onItemExecuted ? props.onItemExecuted : () => {},\n onKeyDown: props.onKeyDown\n ? props.onKeyDown\n : /* istanbul ignore next */ (_e: React.KeyboardEvent) => {},\n }}\n >\n {availableItems.length > 0 && (\n <div\n className={className}\n ref={ref}\n style={props.style}\n onKeyDown={props.onKeyDown}\n role=\"presentation\"\n >\n <ToolbarItems className=\"components-items\" direction={direction}>\n {props.enableOverflow &&\n (!overflowItemKeys || overflowItemKeys.length > 0) &&\n showOverflowAtStart &&\n addOverflowButton(true)}\n {displayedItems.map(([key, child]) => {\n const onEntryResize = handleEntryResize(key);\n return (\n <ToolbarItemContext.Provider\n key={key}\n value={{\n hasOverflow: false,\n useHeight,\n onResize: onEntryResize,\n }}\n >\n <ItemWrapper className={getItemWrapperClass(child)}>\n {child}\n </ItemWrapper>\n </ToolbarItemContext.Provider>\n );\n })}\n {props.enableOverflow &&\n (!overflowItemKeys || overflowItemKeys.length > 0) &&\n !showOverflowAtStart &&\n addOverflowButton(false)}\n </ToolbarItems>\n </div>\n )}\n </ToolbarWithOverflowDirectionContext.Provider>\n );\n}\n\n/** Returns key of a child. Must be used along with React.Children.toArray to preserve the semantics of availableItems.\n * @internal\n */\nfunction getChildKey(child: React.ReactNode, index: number) {\n // istanbul ignore else\n if (React.isValidElement(child) && child.key !== null) {\n return child.key.toString();\n }\n // istanbul ignore next\n return index.toString();\n}\n\n/** Returns a subset of toolbar item entry keys that exceed given width and should be overflowItemKeys.\n * @internal\n */\nfunction determineOverflowItems(\n size: number,\n entries: ReadonlyArray<readonly [string, number]>,\n overflowButtonSize: number,\n overflowButtonAtStart: boolean\n): string[] {\n let toolbarSize = 0;\n const buttonPadding = 2;\n if (overflowButtonAtStart && entries.length > 0) {\n let i = entries.length - 1;\n for (; i >= 0; i--) {\n const w = entries[i][1] + buttonPadding;\n const newSettingsWidth = toolbarSize + w;\n if (newSettingsWidth > size) {\n toolbarSize += overflowButtonSize + buttonPadding;\n break;\n }\n toolbarSize = newSettingsWidth;\n }\n if (i >= 0) {\n let j = i + 1;\n for (; j < entries.length; j++) {\n if (toolbarSize <= size) break;\n const w = entries[j][1] + buttonPadding;\n toolbarSize -= w;\n }\n\n return entries.slice(0, j).map((e) => e[0]);\n } else {\n return [];\n }\n } else {\n let i = 0;\n for (; i < entries.length; i++) {\n const w = entries[i][1] + buttonPadding;\n const newSettingsWidth = toolbarSize + w;\n if (newSettingsWidth > size) {\n toolbarSize += overflowButtonSize + buttonPadding;\n break;\n }\n toolbarSize = newSettingsWidth;\n }\n let j = i;\n for (; j > 0; j--) {\n if (toolbarSize <= size) break;\n const w = entries[j][1] + buttonPadding;\n toolbarSize -= w;\n }\n\n return entries.slice(j).map((e) => e[0]);\n }\n}\n\n/** Hook that returns a list of overflowItemKeys availableItems.\n * @internal\n */\nfunction useOverflow(\n availableItems: React.ReactNode,\n overflowButtonAtStart: boolean\n): [\n ReadonlyArray<string> | undefined,\n (size: number) => void,\n (size: number) => void,\n (key: string) => (size: number) => void\n] {\n const [overflowItemKeys, setOverflown] =\n React.useState<ReadonlyArray<string>>();\n const itemSizes = React.useRef(new Map<string, number | undefined>());\n const size = React.useRef<number | undefined>(undefined);\n const overflowButtonSize = React.useRef<number | undefined>(undefined);\n\n const calculateOverflow = React.useCallback(() => {\n const sizes = verifiedMapEntries(itemSizes.current);\n if (\n size.current === undefined ||\n sizes === undefined ||\n overflowButtonSize.current === undefined\n ) {\n setOverflown(undefined);\n return;\n }\n\n // Calculate overflow.\n const newOverflown = determineOverflowItems(\n size.current,\n [...sizes.entries()],\n overflowButtonSize.current,\n overflowButtonAtStart\n );\n setOverflown((prevOverflown) => {\n return eql(prevOverflown, newOverflown) ? prevOverflown : newOverflown;\n });\n }, [overflowButtonAtStart]);\n\n React.useLayoutEffect(() => {\n const newEntryWidths = new Map<string, number | undefined>();\n const array = React.Children.toArray(availableItems);\n for (let i = 0; i < array.length; i++) {\n const child = array[i];\n const key = getChildKey(child, i);\n const lastW = itemSizes.current.get(key);\n newEntryWidths.set(key, lastW);\n }\n itemSizes.current = newEntryWidths;\n calculateOverflow();\n }, [availableItems, calculateOverflow]);\n\n const handleContainerResize = React.useCallback(\n (w: number) => {\n const calculate = size.current !== w;\n size.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleOverflowResize = React.useCallback(\n (w: number) => {\n const calculate = overflowButtonSize.current !== w;\n overflowButtonSize.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleEntryResize = React.useCallback(\n (key: string) => (w: number) => {\n const oldW = itemSizes.current.get(key);\n if (oldW !== w) {\n itemSizes.current.set(key, w);\n calculateOverflow();\n }\n },\n [calculateOverflow]\n );\n\n return [\n overflowItemKeys,\n handleContainerResize,\n handleOverflowResize,\n handleEntryResize,\n ];\n}\n\n/** Interface toolbars use to define context for its items.\n * @internal\n */\nexport interface ToolbarItemContextArgs {\n readonly hasOverflow: boolean;\n readonly useHeight: boolean;\n readonly onResize: (w: number) => void;\n}\n\n/** Interface toolbars use to define context for its items.\n * @internal\n */\nexport const ToolbarItemContext = React.createContext<ToolbarItemContextArgs>({\n hasOverflow: false,\n useHeight: false,\n onResize: () => {\n // intentionally do nothing by default.\n },\n});\n\n/** @internal */\nexport function useToolItemEntryContext() {\n return React.useContext(ToolbarItemContext);\n}\n\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\n for (const [, val] of map) {\n // istanbul ignore next during unit testing\n if (val === undefined) return undefined;\n }\n return map as Map<string, T>;\n}\n\nfunction eql(prev: readonly string[] | undefined, value: readonly string[]) {\n if (!prev) return false;\n // istanbul ignore next\n if (prev.length !== value.length) return false;\n for (let i = 0; i < prev.length; i++) {\n const p = prev[i];\n const v = value[i];\n // istanbul ignore next\n if (p !== v) return false;\n }\n return true;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PopupItemWithDrag.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItemWithDrag.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAGL,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EACL,qBAAqB,EAGtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,4BAA4B;IAC5B,SAAS,EAAE,WAAW,CAAC;CACxB;AAiDD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,qBAmI9D;AAED,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,qBAAqB,GAC/B,gBAAgB,CAelB"}
1
+ {"version":3,"file":"PopupItemWithDrag.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItemWithDrag.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAGL,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EACL,qBAAqB,EAGtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,4BAA4B;IAC5B,SAAS,EAAE,WAAW,CAAC;CACxB;AAiDD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,qBAwI9D;AAED,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,qBAAqB,GAC/B,gBAAgB,CAelB"}