@itwin/components-react 5.28.1 → 5.30.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 (197) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/lib/components-react/editors/BooleanEditor.d.ts +2 -0
  3. package/lib/components-react/editors/BooleanEditor.d.ts.map +1 -1
  4. package/lib/components-react/editors/BooleanEditor.js +3 -1
  5. package/lib/components-react/editors/BooleanEditor.js.map +1 -1
  6. package/lib/components-react/editors/CustomNumberEditor.d.ts +2 -0
  7. package/lib/components-react/editors/CustomNumberEditor.d.ts.map +1 -1
  8. package/lib/components-react/editors/CustomNumberEditor.js +4 -6
  9. package/lib/components-react/editors/CustomNumberEditor.js.map +1 -1
  10. package/lib/components-react/editors/DateTimeEditor.d.ts.map +1 -1
  11. package/lib/components-react/editors/DateTimeEditor.js +2 -3
  12. package/lib/components-react/editors/DateTimeEditor.js.map +1 -1
  13. package/lib/components-react/editors/EditorContainer.d.ts +5 -1
  14. package/lib/components-react/editors/EditorContainer.d.ts.map +1 -1
  15. package/lib/components-react/editors/EditorContainer.js +1 -1
  16. package/lib/components-react/editors/EditorContainer.js.map +1 -1
  17. package/lib/components-react/editors/EnumButtonGroupEditor.d.ts +2 -0
  18. package/lib/components-react/editors/EnumButtonGroupEditor.d.ts.map +1 -1
  19. package/lib/components-react/editors/EnumButtonGroupEditor.js +3 -1
  20. package/lib/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  21. package/lib/components-react/editors/EnumEditor.d.ts +2 -0
  22. package/lib/components-react/editors/EnumEditor.d.ts.map +1 -1
  23. package/lib/components-react/editors/EnumEditor.js +3 -0
  24. package/lib/components-react/editors/EnumEditor.js.map +1 -1
  25. package/lib/components-react/editors/IconEditor.d.ts +2 -0
  26. package/lib/components-react/editors/IconEditor.d.ts.map +1 -1
  27. package/lib/components-react/editors/IconEditor.js +3 -1
  28. package/lib/components-react/editors/IconEditor.js.map +1 -1
  29. package/lib/components-react/editors/ImageCheckBoxEditor.d.ts +2 -0
  30. package/lib/components-react/editors/ImageCheckBoxEditor.d.ts.map +1 -1
  31. package/lib/components-react/editors/ImageCheckBoxEditor.js +3 -3
  32. package/lib/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
  33. package/lib/components-react/editors/NumericInputEditor.d.ts +2 -0
  34. package/lib/components-react/editors/NumericInputEditor.d.ts.map +1 -1
  35. package/lib/components-react/editors/NumericInputEditor.js +4 -4
  36. package/lib/components-react/editors/NumericInputEditor.js.map +1 -1
  37. package/lib/components-react/editors/PopupButton.d.ts +2 -0
  38. package/lib/components-react/editors/PopupButton.d.ts.map +1 -1
  39. package/lib/components-react/editors/PopupButton.js +1 -1
  40. package/lib/components-react/editors/PopupButton.js.map +1 -1
  41. package/lib/components-react/editors/PropertyEditorManager.d.ts +11 -2
  42. package/lib/components-react/editors/PropertyEditorManager.d.ts.map +1 -1
  43. package/lib/components-react/editors/PropertyEditorManager.js +6 -1
  44. package/lib/components-react/editors/PropertyEditorManager.js.map +1 -1
  45. package/lib/components-react/editors/SliderEditor.d.ts +4 -1
  46. package/lib/components-react/editors/SliderEditor.d.ts.map +1 -1
  47. package/lib/components-react/editors/SliderEditor.js +7 -8
  48. package/lib/components-react/editors/SliderEditor.js.map +1 -1
  49. package/lib/components-react/editors/TextEditor.d.ts +1 -0
  50. package/lib/components-react/editors/TextEditor.d.ts.map +1 -1
  51. package/lib/components-react/editors/TextEditor.js +3 -6
  52. package/lib/components-react/editors/TextEditor.js.map +1 -1
  53. package/lib/components-react/editors/TextareaEditor.d.ts +2 -0
  54. package/lib/components-react/editors/TextareaEditor.d.ts.map +1 -1
  55. package/lib/components-react/editors/TextareaEditor.js +3 -1
  56. package/lib/components-react/editors/TextareaEditor.js.map +1 -1
  57. package/lib/components-react/editors/ToggleEditor.d.ts +2 -0
  58. package/lib/components-react/editors/ToggleEditor.d.ts.map +1 -1
  59. package/lib/components-react/editors/ToggleEditor.js +3 -1
  60. package/lib/components-react/editors/ToggleEditor.js.map +1 -1
  61. package/lib/components-react/editors/registerEditors.d.ts.map +1 -1
  62. package/lib/components-react/editors/registerEditors.js +1 -0
  63. package/lib/components-react/editors/registerEditors.js.map +1 -1
  64. package/lib/components-react/favorite/FavoritePropertyList.d.ts.map +1 -1
  65. package/lib/components-react/favorite/FavoritePropertyList.js +4 -1
  66. package/lib/components-react/favorite/FavoritePropertyList.js.map +1 -1
  67. package/lib/components-react/filter-builder/FilterBuilderRule.d.ts +1 -0
  68. package/lib/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
  69. package/lib/components-react/filter-builder/FilterBuilderRule.js +5 -3
  70. package/lib/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  71. package/lib/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +1 -0
  72. package/lib/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
  73. package/lib/components-react/filter-builder/FilterBuilderRuleGroup.js +5 -5
  74. package/lib/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  75. package/lib/components-react/filter-builder/FilterBuilderRuleValue.d.ts +45 -8
  76. package/lib/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
  77. package/lib/components-react/filter-builder/FilterBuilderRuleValue.js +17 -8
  78. package/lib/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  79. package/lib/components-react/new-editors/ConstraintUtils.d.ts +62 -0
  80. package/lib/components-react/new-editors/ConstraintUtils.d.ts.map +1 -0
  81. package/lib/components-react/new-editors/ConstraintUtils.js +49 -0
  82. package/lib/components-react/new-editors/ConstraintUtils.js.map +1 -0
  83. package/lib/components-react/new-editors/Types.d.ts +6 -0
  84. package/lib/components-react/new-editors/Types.d.ts.map +1 -1
  85. package/lib/components-react/new-editors/Types.js.map +1 -1
  86. package/lib/components-react/new-editors/UseCommittableValue.d.ts +2 -5
  87. package/lib/components-react/new-editors/UseCommittableValue.d.ts.map +1 -1
  88. package/lib/components-react/new-editors/UseCommittableValue.js +4 -1
  89. package/lib/components-react/new-editors/UseCommittableValue.js.map +1 -1
  90. package/lib/components-react/new-editors/editors/BooleanEditor.d.ts +1 -1
  91. package/lib/components-react/new-editors/editors/BooleanEditor.d.ts.map +1 -1
  92. package/lib/components-react/new-editors/editors/BooleanEditor.js +2 -2
  93. package/lib/components-react/new-editors/editors/BooleanEditor.js.map +1 -1
  94. package/lib/components-react/new-editors/editors/DateEditor.d.ts +1 -1
  95. package/lib/components-react/new-editors/editors/DateEditor.d.ts.map +1 -1
  96. package/lib/components-react/new-editors/editors/DateEditor.js +2 -2
  97. package/lib/components-react/new-editors/editors/DateEditor.js.map +1 -1
  98. package/lib/components-react/new-editors/editors/DateInput.d.ts +2 -1
  99. package/lib/components-react/new-editors/editors/DateInput.d.ts.map +1 -1
  100. package/lib/components-react/new-editors/editors/DateInput.js +2 -2
  101. package/lib/components-react/new-editors/editors/DateInput.js.map +1 -1
  102. package/lib/components-react/new-editors/editors/DateTimeEditor.d.ts +1 -1
  103. package/lib/components-react/new-editors/editors/DateTimeEditor.d.ts.map +1 -1
  104. package/lib/components-react/new-editors/editors/DateTimeEditor.js +2 -2
  105. package/lib/components-react/new-editors/editors/DateTimeEditor.js.map +1 -1
  106. package/lib/components-react/new-editors/editors/EnumEditor.d.ts +1 -1
  107. package/lib/components-react/new-editors/editors/EnumEditor.d.ts.map +1 -1
  108. package/lib/components-react/new-editors/editors/EnumEditor.js +2 -2
  109. package/lib/components-react/new-editors/editors/EnumEditor.js.map +1 -1
  110. package/lib/components-react/new-editors/editors/FallbackEditor.d.ts +1 -1
  111. package/lib/components-react/new-editors/editors/FallbackEditor.d.ts.map +1 -1
  112. package/lib/components-react/new-editors/editors/FallbackEditor.js +2 -2
  113. package/lib/components-react/new-editors/editors/FallbackEditor.js.map +1 -1
  114. package/lib/components-react/new-editors/editors/NumericEditor.d.ts +2 -2
  115. package/lib/components-react/new-editors/editors/NumericEditor.d.ts.map +1 -1
  116. package/lib/components-react/new-editors/editors/NumericEditor.js +7 -3
  117. package/lib/components-react/new-editors/editors/NumericEditor.js.map +1 -1
  118. package/lib/components-react/new-editors/editors/TextEditor.d.ts +2 -2
  119. package/lib/components-react/new-editors/editors/TextEditor.d.ts.map +1 -1
  120. package/lib/components-react/new-editors/editors/TextEditor.js +4 -2
  121. package/lib/components-react/new-editors/editors/TextEditor.js.map +1 -1
  122. package/lib/components-react/new-editors/editors/ToggleEditor.d.ts +1 -1
  123. package/lib/components-react/new-editors/editors/ToggleEditor.d.ts.map +1 -1
  124. package/lib/components-react/new-editors/editors/ToggleEditor.js +2 -2
  125. package/lib/components-react/new-editors/editors/ToggleEditor.js.map +1 -1
  126. package/lib/components-react/new-editors/editors-registry/DefaultEditors.d.ts.map +1 -1
  127. package/lib/components-react/new-editors/editors-registry/DefaultEditors.js.map +1 -1
  128. package/lib/components-react/new-editors/interop/EditorInterop.d.ts +5 -4
  129. package/lib/components-react/new-editors/interop/EditorInterop.d.ts.map +1 -1
  130. package/lib/components-react/new-editors/interop/EditorInterop.js +1 -0
  131. package/lib/components-react/new-editors/interop/EditorInterop.js.map +1 -1
  132. package/lib/components-react/new-editors/interop/Metadata.d.ts +9 -6
  133. package/lib/components-react/new-editors/interop/Metadata.d.ts.map +1 -1
  134. package/lib/components-react/new-editors/interop/Metadata.js +6 -3
  135. package/lib/components-react/new-editors/interop/Metadata.js.map +1 -1
  136. package/lib/components-react/new-editors/interop/PropertyRecordEditor.d.ts +42 -3
  137. package/lib/components-react/new-editors/interop/PropertyRecordEditor.d.ts.map +1 -1
  138. package/lib/components-react/new-editors/interop/PropertyRecordEditor.js +11 -6
  139. package/lib/components-react/new-editors/interop/PropertyRecordEditor.js.map +1 -1
  140. package/lib/components-react/new-editors/interop/old-editors/Color.js +4 -4
  141. package/lib/components-react/new-editors/interop/old-editors/Color.js.map +1 -1
  142. package/lib/components-react/new-editors/interop/old-editors/CustomNumber.d.ts +4 -3
  143. package/lib/components-react/new-editors/interop/old-editors/CustomNumber.d.ts.map +1 -1
  144. package/lib/components-react/new-editors/interop/old-editors/CustomNumber.js +11 -5
  145. package/lib/components-react/new-editors/interop/old-editors/CustomNumber.js.map +1 -1
  146. package/lib/components-react/new-editors/interop/old-editors/Enum.js +2 -2
  147. package/lib/components-react/new-editors/interop/old-editors/Enum.js.map +1 -1
  148. package/lib/components-react/new-editors/interop/old-editors/EnumButtonGroup.js +4 -4
  149. package/lib/components-react/new-editors/interop/old-editors/EnumButtonGroup.js.map +1 -1
  150. package/lib/components-react/new-editors/interop/old-editors/NumericInput.d.ts +7 -1
  151. package/lib/components-react/new-editors/interop/old-editors/NumericInput.d.ts.map +1 -1
  152. package/lib/components-react/new-editors/interop/old-editors/NumericInput.js +21 -6
  153. package/lib/components-react/new-editors/interop/old-editors/NumericInput.js.map +1 -1
  154. package/lib/components-react/new-editors/interop/old-editors/Slider.js +4 -4
  155. package/lib/components-react/new-editors/interop/old-editors/Slider.js.map +1 -1
  156. package/lib/components-react/new-editors/interop/old-editors/TextArea.d.ts.map +1 -1
  157. package/lib/components-react/new-editors/interop/old-editors/TextArea.js +4 -4
  158. package/lib/components-react/new-editors/interop/old-editors/TextArea.js.map +1 -1
  159. package/lib/components-react/new-editors/interop/old-editors/UseEditorParams.d.ts +8 -8
  160. package/lib/components-react/new-editors/interop/old-editors/UseEditorParams.d.ts.map +1 -1
  161. package/lib/components-react/new-editors/interop/old-editors/UseEditorParams.js.map +1 -1
  162. package/lib/components-react/new-editors/interop/old-editors/UseEnumMetadata.d.ts +2 -2
  163. package/lib/components-react/new-editors/interop/old-editors/UseEnumMetadata.d.ts.map +1 -1
  164. package/lib/components-react/new-editors/interop/old-editors/UseEnumMetadata.js.map +1 -1
  165. package/lib/components-react/new-editors/values/Metadata.d.ts +22 -0
  166. package/lib/components-react/new-editors/values/Metadata.d.ts.map +1 -1
  167. package/lib/components-react/new-editors/values/Metadata.js.map +1 -1
  168. package/lib/components-react/properties/renderers/NonPrimitivePropertyRenderer.d.ts.map +1 -1
  169. package/lib/components-react/properties/renderers/NonPrimitivePropertyRenderer.js +4 -1
  170. package/lib/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  171. package/lib/components-react/properties/renderers/PropertyRenderer.d.ts +45 -7
  172. package/lib/components-react/properties/renderers/PropertyRenderer.d.ts.map +1 -1
  173. package/lib/components-react/properties/renderers/PropertyRenderer.js +13 -5
  174. package/lib/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
  175. package/lib/components-react/propertygrid/component/PropertyList.d.ts +40 -10
  176. package/lib/components-react/propertygrid/component/PropertyList.d.ts.map +1 -1
  177. package/lib/components-react/propertygrid/component/PropertyList.js +7 -2
  178. package/lib/components-react/propertygrid/component/PropertyList.js.map +1 -1
  179. package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +37 -33
  180. package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts.map +1 -1
  181. package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.js +10 -4
  182. package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  183. package/lib/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts +41 -5
  184. package/lib/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts.map +1 -1
  185. package/lib/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js +6 -4
  186. package/lib/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
  187. package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +3 -1
  188. package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  189. package/lib/components-react.d.ts +2 -1
  190. package/lib/components-react.d.ts.map +1 -1
  191. package/lib/components-react.js +1 -0
  192. package/lib/components-react.js.map +1 -1
  193. package/lib/internal.d.ts +1 -1
  194. package/lib/internal.d.ts.map +1 -1
  195. package/lib/internal.js +1 -1
  196. package/lib/internal.js.map +1 -1
  197. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyRecordEditor.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/interop/PropertyRecordEditor.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,eAAe,GAEhB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AActD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,EACnC,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,YAAY,GACc;IAC1B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAC9E,IAAI,YAAY,KAAK,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QAChD,OAAO,CACL,oBAAC,gBAAgB,IACf,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,KAAK,EACnB,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACrB,QAAQ,CAAC;oBACP,cAAc;oBACd,QAAQ,EACN,QAAQ,KAAK,SAAS;wBACpB,CAAC,CAAC,EAAE,WAAW,EAAE,mBAAmB,CAAC,SAAS,EAAE;wBAChD,CAAC,CAAC,aAAa,CAAC,uBAAuB,CAAC,QAAQ,CAAC;iBACtD,CAAC,CAAC;YACL,CAAC,EACD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,CAAC,UAAU,IAAI,cAAc,CAAC,UAAU,EAChE,IAAI,EAAE,IAAI,GACV,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,oBAAC,eAAe,IACd,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI,GASL;IACC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC;QACzE,YAAY;QACZ,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,CACL,6BACE,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,cAAc;QAEnB,oBAAC,cAAc,IACb,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,GACV,CACE,CACP,CAAC;AACJ,CAAC","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 PropertyEditors\n */\n\nimport * as React from \"react\";\nimport {\n type PropertyRecord,\n PropertyValueFormat,\n} from \"@itwin/appui-abstract\";\nimport { EditorInterop } from \"./EditorInterop.js\";\nimport {\n EditorContainer,\n type PropertyUpdatedArgs,\n} from \"../../editors/EditorContainer.js\";\nimport { useCommittableValue } from \"../UseCommittableValue.js\";\nimport { EditorRenderer } from \"../EditorRenderer.js\";\nimport type { ValueMetadata } from \"../values/Metadata.js\";\nimport type { Value } from \"../values/Values.js\";\n\ninterface PropertyRecordEditorProps {\n propertyRecord: PropertyRecord;\n onCommit: (args: PropertyUpdatedArgs) => void;\n onCancel: () => void;\n onClick?: () => void;\n setFocus?: boolean;\n size?: \"small\" | \"large\";\n editorSystem?: \"legacy\" | \"new\";\n}\n\n/**\n * Editor component for editing property values represented by `PropertyRecord`.\n * @beta\n */\nexport function PropertyRecordEditor({\n propertyRecord,\n onCommit,\n onCancel,\n onClick,\n setFocus,\n size,\n editorSystem,\n}: PropertyRecordEditorProps) {\n const { metadata, value } = EditorInterop.getMetadataAndValue(propertyRecord);\n if (editorSystem === \"new\" && metadata && value) {\n return (\n <CommittingEditor\n metadata={metadata}\n initialValue={value}\n onCommit={(newValue) => {\n onCommit({\n propertyRecord,\n newValue:\n newValue === undefined\n ? { valueFormat: PropertyValueFormat.Primitive }\n : EditorInterop.convertToPrimitiveValue(newValue),\n });\n }}\n onCancel={onCancel}\n onClick={onClick}\n disabled={propertyRecord.isDisabled || propertyRecord.isReadonly}\n size={size}\n />\n );\n }\n\n return (\n <EditorContainer\n propertyRecord={propertyRecord}\n onCommit={onCommit}\n onCancel={onCancel}\n onClick={onClick}\n setFocus={setFocus}\n />\n );\n}\n\nfunction CommittingEditor({\n metadata,\n initialValue,\n onCancel,\n onCommit,\n onClick,\n disabled,\n size,\n}: {\n metadata: ValueMetadata;\n initialValue?: Value;\n onCommit: (value?: Value) => void;\n onCancel: () => void;\n onClick?: () => void;\n disabled?: boolean;\n size?: \"small\" | \"large\";\n}) {\n const { value, onChange, onKeydown, commit, cancel } = useCommittableValue({\n initialValue,\n onCommit,\n onCancel,\n });\n\n return (\n <div\n onKeyDown={onKeydown}\n onBlur={commit}\n onClick={onClick}\n role=\"presentation\"\n >\n <EditorRenderer\n metadata={metadata}\n value={value}\n onChange={onChange}\n commit={commit}\n cancel={cancel}\n disabled={disabled}\n size={size}\n />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"PropertyRecordEditor.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/interop/PropertyRecordEditor.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,eAAe,GAEhB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA+CtD;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkC,CAAC,EAClE,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI;AACJ,4DAA4D;AAC5D,YAAY,GACc,EAAE,EAAE;IAC9B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAC9E,IAAI,YAAY,KAAK,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QAChD,OAAO,CACL,oBAAC,gBAAgB,IACf,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,KAAK,EACnB,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACrB,QAAQ,CAAC;oBACP,cAAc;oBACd,QAAQ,EACN,QAAQ,KAAK,SAAS;wBACpB,CAAC,CAAC,EAAE,WAAW,EAAE,mBAAmB,CAAC,SAAS,EAAE;wBAChD,CAAC,CAAC,aAAa,CAAC,uBAAuB,CAAC,QAAQ,CAAC;iBACtD,CAAC,CAAC;YACL,CAAC,EACD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,CAAC,UAAU,IAAI,cAAc,CAAC,UAAU,EAChE,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,GAChC,CACH,CAAC;IACJ,CAAC;IAED,OAAO;IACL,4DAA4D;IAC5D,oBAAC,eAAe,IACd,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,EAAE,GAUH;IACC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC;QACzE,YAAY;QACZ,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,CACL,6BACE,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,cAAc;QAEnB,oBAAC,cAAc,IACb,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,GACN,CACE,CACP,CAAC;AACJ,CAAC","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 PropertyEditors\n */\n\nimport * as React from \"react\";\nimport {\n type PropertyRecord,\n PropertyValueFormat,\n} from \"@itwin/appui-abstract\";\nimport { EditorInterop } from \"./EditorInterop.js\";\nimport {\n EditorContainer,\n type PropertyUpdatedArgs,\n} from \"../../editors/EditorContainer.js\";\nimport { useCommittableValue } from \"../UseCommittableValue.js\";\nimport { EditorRenderer } from \"../EditorRenderer.js\";\nimport type { ValueMetadata } from \"../values/Metadata.js\";\nimport type { Value } from \"../values/Values.js\";\nimport type { WithConstraints } from \"../ConstraintUtils.js\";\n\ninterface PropertyRecordEditorBaseProps {\n propertyRecord: PropertyRecord;\n onCommit: (args: PropertyUpdatedArgs) => void;\n onCancel: () => void;\n onClick?: () => void;\n setFocus?: boolean;\n size?: \"small\" | \"large\";\n}\n\ninterface PropertyRecordEditorLegacyProps\n extends PropertyRecordEditorBaseProps {\n /**\n * @deprecated in 5.30. Use `PropertyRecordEditor` with `editorSystem=\"new\"` instead. This is provided only in case\n * there is a need to switch back to the legacy editor system.\n */\n editorSystem?: \"legacy\";\n}\n\ninterface PropertyRecordEditorNewProps extends PropertyRecordEditorBaseProps {\n editorSystem: \"new\";\n}\n\ntype PropertyRecordEditorProps =\n | PropertyRecordEditorLegacyProps\n | PropertyRecordEditorNewProps;\n\ninterface PropertyRecordEditorComponent {\n /**\n * Editor component for editing property values represented by `PropertyRecord`.\n * @beta\n */\n (props: PropertyRecordEditorNewProps): React.JSX.Element;\n /**\n * @deprecated in 5.30. Use `PropertyRecordEditor` with `editorSystem=\"new\"` instead. This is provided only in case\n * there is a need to switch back to the legacy editor system.\n * @beta\n */\n (props: PropertyRecordEditorLegacyProps): React.JSX.Element;\n /** @beta */\n (props: PropertyRecordEditorProps): React.JSX.Element;\n}\n\n/**\n * Editor component for editing property values represented by `PropertyRecord`.\n * @beta\n */\nexport const PropertyRecordEditor: PropertyRecordEditorComponent = ({\n propertyRecord,\n onCommit,\n onCancel,\n onClick,\n setFocus,\n size,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n editorSystem,\n}: PropertyRecordEditorProps) => {\n const { metadata, value } = EditorInterop.getMetadataAndValue(propertyRecord);\n if (editorSystem === \"new\" && metadata && value) {\n return (\n <CommittingEditor\n metadata={metadata}\n initialValue={value}\n onCommit={(newValue) => {\n onCommit({\n propertyRecord,\n newValue:\n newValue === undefined\n ? { valueFormat: PropertyValueFormat.Primitive }\n : EditorInterop.convertToPrimitiveValue(newValue),\n });\n }}\n onCancel={onCancel}\n onClick={onClick}\n disabled={propertyRecord.isDisabled || propertyRecord.isReadonly}\n size={size}\n id={propertyRecord.property.name}\n />\n );\n }\n\n return (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <EditorContainer\n propertyRecord={propertyRecord}\n onCommit={onCommit}\n onCancel={onCancel}\n onClick={onClick}\n setFocus={setFocus}\n />\n );\n};\n\n/** @internal */\nexport function CommittingEditor({\n metadata,\n initialValue,\n onCancel,\n onCommit,\n onClick,\n disabled,\n size,\n id,\n}: {\n metadata: WithConstraints<ValueMetadata>;\n initialValue?: Value;\n onCommit: (value?: Value) => void;\n onCancel: () => void;\n onClick?: () => void;\n disabled?: boolean;\n size?: \"small\" | \"large\";\n id?: string;\n}) {\n const { value, onChange, onKeydown, commit, cancel } = useCommittableValue({\n initialValue,\n onCommit,\n onCancel,\n });\n\n return (\n <div\n onKeyDown={onKeydown}\n onBlur={commit}\n onClick={onClick}\n role=\"presentation\"\n >\n <EditorRenderer\n metadata={metadata}\n value={value}\n onChange={onChange}\n commit={commit}\n cancel={cancel}\n disabled={disabled}\n size={size}\n id={id}\n />\n </div>\n );\n}\n"]}
@@ -6,7 +6,7 @@ import * as React from "react";
6
6
  import { PropertyEditorParamTypes, StandardEditorNames, } from "@itwin/appui-abstract";
7
7
  import { ColorPalette, ColorPicker, ColorSwatch, ColorValue, IconButton, Popover, } from "@itwin/itwinui-react";
8
8
  import { createEditorSpec } from "../../Types.js";
9
- import { isOldEditorMetadata } from "../Metadata.js";
9
+ import { isPropertyRecordEditorMetadata } from "../Metadata.js";
10
10
  import { useColorEditorParams } from "./UseEditorParams.js";
11
11
  import { isNumeric } from "../../values/ValueUtilities.js";
12
12
  /* v8 ignore start */
@@ -15,14 +15,14 @@ import { isNumeric } from "../../values/ValueUtilities.js";
15
15
  * @internal
16
16
  */
17
17
  export const ColorEditorSpec = createEditorSpec({
18
- isMetadataSupported: (metadata) => isOldEditorMetadata(metadata) &&
18
+ isMetadataSupported: (metadata) => isPropertyRecordEditorMetadata(metadata) &&
19
19
  metadata.type === "number" &&
20
20
  !!metadata.params?.find((param) => param.type === PropertyEditorParamTypes.ColorData.valueOf()) &&
21
21
  metadata.preferredEditor === StandardEditorNames.ColorPicker,
22
22
  isValueSupported: isNumeric,
23
23
  Editor: ColorEditor,
24
24
  });
25
- function ColorEditor({ value, metadata, onChange, commit, size, }) {
25
+ function ColorEditor({ value, metadata, onChange, commit, size, id, }) {
26
26
  const colorParams = useColorEditorParams(metadata);
27
27
  const colors = colorParams?.colorValues ?? [];
28
28
  const currentValue = value
@@ -41,7 +41,7 @@ function ColorEditor({ value, metadata, onChange, commit, size, }) {
41
41
  commit?.();
42
42
  }
43
43
  } },
44
- React.createElement(IconButton, { size: size },
44
+ React.createElement(IconButton, { id: id, size: size },
45
45
  React.createElement(ColorSwatch, { color: activeColor }))));
46
46
  }
47
47
  /* v8 ignore stop */
@@ -1 +1 @@
1
- {"version":3,"file":"Color.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/Color.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,EACV,OAAO,GACR,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,qBAAqB;AAErB;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAe,gBAAgB,CAAC;IAC1D,mBAAmB,EAAE,CAAC,QAAQ,EAAiC,EAAE,CAC/D,mBAAmB,CAAC,QAAQ,CAAC;QAC7B,QAAQ,CAAC,IAAI,KAAK,QAAQ;QAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CACrB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,wBAAwB,CAAC,SAAS,CAAC,OAAO,EAAE,CACvE;QACD,QAAQ,CAAC,eAAe,KAAK,mBAAmB,CAAC,WAAW;IAC9D,gBAAgB,EAAE,SAAS;IAC3B,MAAM,EAAE,WAAW;CACpB,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,EACnB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,IAAI,GACyC;IAC7C,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC;IAE9C,MAAM,YAAY,GAAG,KAAK;QACxB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,MAAM,WAAW,GACf,YAAY,CAAC,QAAQ,KAAK,SAAS;QACjC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC5C,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEpB,MAAM,cAAc,GAAG,CAAC,KAAiB,EAAE,EAAE;QAC3C,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,OAAO,IACN,OAAO,EACL,oBAAC,WAAW,IACV,aAAa,EAAE,WAAW,EAC1B,gBAAgB,EAAE,cAAc;YAEhC,oBAAC,YAAY,IAAC,MAAM,EAAE,UAAU,GAAI,CACxB,EAEhB,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,EAAE,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,oBAAC,UAAU,IAAC,IAAI,EAAE,IAAI;YACpB,oBAAC,WAAW,IAAC,KAAK,EAAE,WAAW,GAAI,CACxB,CACL,CACX,CAAC;AACJ,CAAC;AAED,oBAAoB","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\nimport * as React from \"react\";\nimport {\n PropertyEditorParamTypes,\n StandardEditorNames,\n} from \"@itwin/appui-abstract\";\nimport {\n ColorPalette,\n ColorPicker,\n ColorSwatch,\n ColorValue,\n IconButton,\n Popover,\n} from \"@itwin/itwinui-react\";\nimport type { EditorProps, EditorSpec } from \"../../Types.js\";\nimport { createEditorSpec } from \"../../Types.js\";\nimport type { OldEditorMetadata } from \"../Metadata.js\";\nimport { isOldEditorMetadata } from \"../Metadata.js\";\nimport type { NumericValue } from \"../../values/Values.js\";\nimport { useColorEditorParams } from \"./UseEditorParams.js\";\nimport { isNumeric } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/**\n * Editor specification for color editor.\n * @internal\n */\nexport const ColorEditorSpec: EditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is OldEditorMetadata =>\n isOldEditorMetadata(metadata) &&\n metadata.type === \"number\" &&\n !!metadata.params?.find(\n (param) => param.type === PropertyEditorParamTypes.ColorData.valueOf()\n ) &&\n metadata.preferredEditor === StandardEditorNames.ColorPicker,\n isValueSupported: isNumeric,\n Editor: ColorEditor,\n});\n\nfunction ColorEditor({\n value,\n metadata,\n onChange,\n commit,\n size,\n}: EditorProps<OldEditorMetadata, NumericValue>) {\n const colorParams = useColorEditorParams(metadata);\n const colors = colorParams?.colorValues ?? [];\n\n const currentValue = value\n ? value\n : { rawValue: colors[0], displayValue: \"\" };\n const colorsList = colors.map((color) => ColorValue.fromTbgr(color));\n const activeColor =\n currentValue.rawValue !== undefined\n ? ColorValue.fromTbgr(currentValue.rawValue)\n : colorsList[0];\n\n const onColorChanged = (color: ColorValue) => {\n onChange({ rawValue: color.toTbgr(), displayValue: \"\" });\n };\n\n return (\n <Popover\n content={\n <ColorPicker\n selectedColor={activeColor}\n onChangeComplete={onColorChanged}\n >\n <ColorPalette colors={colorsList} />\n </ColorPicker>\n }\n onVisibleChange={(visible) => {\n if (!visible) {\n commit?.();\n }\n }}\n >\n <IconButton size={size}>\n <ColorSwatch color={activeColor} />\n </IconButton>\n </Popover>\n );\n}\n\n/* v8 ignore stop */\n"]}
1
+ {"version":3,"file":"Color.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/Color.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,EACV,OAAO,GACR,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,qBAAqB;AAErB;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAe,gBAAgB,CAAC;IAC1D,mBAAmB,EAAE,CAAC,QAAQ,EAA4C,EAAE,CAC1E,8BAA8B,CAAC,QAAQ,CAAC;QACxC,QAAQ,CAAC,IAAI,KAAK,QAAQ;QAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CACrB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,wBAAwB,CAAC,SAAS,CAAC,OAAO,EAAE,CACvE;QACD,QAAQ,CAAC,eAAe,KAAK,mBAAmB,CAAC,WAAW;IAC9D,gBAAgB,EAAE,SAAS;IAC3B,MAAM,EAAE,WAAW;CACpB,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,EACnB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,EAAE,GACsD;IACxD,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC;IAE9C,MAAM,YAAY,GAAG,KAAK;QACxB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,MAAM,WAAW,GACf,YAAY,CAAC,QAAQ,KAAK,SAAS;QACjC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC5C,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEpB,MAAM,cAAc,GAAG,CAAC,KAAiB,EAAE,EAAE;QAC3C,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,OAAO,IACN,OAAO,EACL,oBAAC,WAAW,IACV,aAAa,EAAE,WAAW,EAC1B,gBAAgB,EAAE,cAAc;YAEhC,oBAAC,YAAY,IAAC,MAAM,EAAE,UAAU,GAAI,CACxB,EAEhB,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,EAAE,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,oBAAC,UAAU,IAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI;YAC5B,oBAAC,WAAW,IAAC,KAAK,EAAE,WAAW,GAAI,CACxB,CACL,CACX,CAAC;AACJ,CAAC;AAED,oBAAoB","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\nimport * as React from \"react\";\nimport {\n PropertyEditorParamTypes,\n StandardEditorNames,\n} from \"@itwin/appui-abstract\";\nimport {\n ColorPalette,\n ColorPicker,\n ColorSwatch,\n ColorValue,\n IconButton,\n Popover,\n} from \"@itwin/itwinui-react\";\nimport type { EditorProps, EditorSpec } from \"../../Types.js\";\nimport { createEditorSpec } from \"../../Types.js\";\nimport type { PropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport { isPropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport type { NumericValue } from \"../../values/Values.js\";\nimport { useColorEditorParams } from \"./UseEditorParams.js\";\nimport { isNumeric } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/**\n * Editor specification for color editor.\n * @internal\n */\nexport const ColorEditorSpec: EditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is PropertyRecordEditorMetadata =>\n isPropertyRecordEditorMetadata(metadata) &&\n metadata.type === \"number\" &&\n !!metadata.params?.find(\n (param) => param.type === PropertyEditorParamTypes.ColorData.valueOf()\n ) &&\n metadata.preferredEditor === StandardEditorNames.ColorPicker,\n isValueSupported: isNumeric,\n Editor: ColorEditor,\n});\n\nfunction ColorEditor({\n value,\n metadata,\n onChange,\n commit,\n size,\n id,\n}: EditorProps<PropertyRecordEditorMetadata, NumericValue>) {\n const colorParams = useColorEditorParams(metadata);\n const colors = colorParams?.colorValues ?? [];\n\n const currentValue = value\n ? value\n : { rawValue: colors[0], displayValue: \"\" };\n const colorsList = colors.map((color) => ColorValue.fromTbgr(color));\n const activeColor =\n currentValue.rawValue !== undefined\n ? ColorValue.fromTbgr(currentValue.rawValue)\n : colorsList[0];\n\n const onColorChanged = (color: ColorValue) => {\n onChange({ rawValue: color.toTbgr(), displayValue: \"\" });\n };\n\n return (\n <Popover\n content={\n <ColorPicker\n selectedColor={activeColor}\n onChangeComplete={onColorChanged}\n >\n <ColorPalette colors={colorsList} />\n </ColorPicker>\n }\n onVisibleChange={(visible) => {\n if (!visible) {\n commit?.();\n }\n }}\n >\n <IconButton id={id} size={size}>\n <ColorSwatch color={activeColor} />\n </IconButton>\n </Popover>\n );\n}\n\n/* v8 ignore stop */\n"]}
@@ -1,13 +1,14 @@
1
1
  import * as React from "react";
2
2
  import type { EditorProps } from "../../Types.js";
3
- import type { OldEditorMetadata } from "../Metadata.js";
3
+ import type { PropertyRecordEditorMetadata } from "../Metadata.js";
4
4
  import type { NumericValue } from "../../values/Values.js";
5
+ import type { WithConstraints } from "../../ConstraintUtils.js";
5
6
  /** @internal */
6
7
  export declare const CustomNumberEditorSpec: import("../../Types.js").EditorSpec;
7
- interface CustomNumberEditorProps extends EditorProps<OldEditorMetadata, NumericValue> {
8
+ interface CustomNumberEditorProps extends EditorProps<WithConstraints<PropertyRecordEditorMetadata>, NumericValue> {
8
9
  decoration?: React.ReactNode;
9
10
  }
10
11
  /** @internal */
11
- export declare function CustomNumberEditor({ metadata, value, onChange, size, disabled, decoration, }: CustomNumberEditorProps): React.JSX.Element | null;
12
+ export declare function CustomNumberEditor({ metadata, value, onChange, size, disabled, decoration, id, }: CustomNumberEditorProps): React.JSX.Element | null;
12
13
  export {};
13
14
  //# sourceMappingURL=CustomNumber.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CustomNumber.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/CustomNumber.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAW3D,gBAAgB;AAChB,eAAO,MAAM,sBAAsB,qCAWjC,CAAC;AAEH,UAAU,uBACR,SAAQ,WAAW,CAAC,iBAAiB,EAAE,YAAY,CAAC;IACpD,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAED,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,UAAU,GACX,EAAE,uBAAuB,4BA2DzB"}
1
+ {"version":3,"file":"CustomNumber.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/CustomNumber.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAQ3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAOhE,gBAAgB;AAChB,eAAO,MAAM,sBAAsB,qCAWjC,CAAC;AAEH,UAAU,uBACR,SAAQ,WAAW,CACjB,eAAe,CAAC,4BAA4B,CAAC,EAC7C,YAAY,CACb;IACD,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAED,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,EAAE,GACH,EAAE,uBAAuB,4BAiEzB"}
@@ -6,14 +6,15 @@ import * as React from "react";
6
6
  import { PropertyEditorParamTypes, StandardEditorNames, } from "@itwin/appui-abstract";
7
7
  import { InputWithDecorations } from "@itwin/itwinui-react";
8
8
  import { createEditorSpec } from "../../Types.js";
9
- import { isOldEditorMetadata } from "../Metadata.js";
9
+ import { isPropertyRecordEditorMetadata } from "../Metadata.js";
10
10
  import { useCustomFormattedNumberParams, useIconEditorParams, useInputEditorSizeParams, } from "./UseEditorParams.js";
11
11
  import { findIcon } from "../IconsRegistry.js";
12
12
  import { isNumeric } from "../../values/ValueUtilities.js";
13
+ import { applyNumericConstraints, getNumericConstraints, } from "../../ConstraintUtils.js";
13
14
  /* v8 ignore start */
14
15
  /** @internal */
15
16
  export const CustomNumberEditorSpec = createEditorSpec({
16
- isMetadataSupported: (metadata) => isOldEditorMetadata(metadata) &&
17
+ isMetadataSupported: (metadata) => isPropertyRecordEditorMetadata(metadata) &&
17
18
  metadata.type === "number" &&
18
19
  !!metadata.params?.find((param) => param.type === PropertyEditorParamTypes.CustomFormattedNumber.valueOf()) &&
19
20
  metadata.preferredEditor === StandardEditorNames.NumberCustom,
@@ -21,7 +22,7 @@ export const CustomNumberEditorSpec = createEditorSpec({
21
22
  Editor: CustomNumberEditor,
22
23
  });
23
24
  /** @internal */
24
- export function CustomNumberEditor({ metadata, value, onChange, size, disabled, decoration, }) {
25
+ export function CustomNumberEditor({ metadata, value, onChange, size, disabled, decoration, id, }) {
25
26
  const formatParams = useCustomFormattedNumberParams(metadata);
26
27
  const sizeParams = useInputEditorSizeParams(metadata);
27
28
  const iconParams = useIconEditorParams(metadata);
@@ -48,7 +49,12 @@ export function CustomNumberEditor({ metadata, value, onChange, size, disabled,
48
49
  const handleChange = (e) => {
49
50
  const currentValue = e.target.value;
50
51
  const result = formatParams.parseFunction(currentValue);
51
- const parsedValue = typeof result.value === "number" ? result.value : undefined;
52
+ const parsedValue = typeof result.value === "number"
53
+ ? applyNumericConstraints({
54
+ ...getNumericConstraints(metadata.constraints),
55
+ value: result.value,
56
+ })
57
+ : undefined;
52
58
  setInputValue(currentValue);
53
59
  onChange({
54
60
  rawValue: parsedValue,
@@ -57,7 +63,7 @@ export function CustomNumberEditor({ metadata, value, onChange, size, disabled,
57
63
  };
58
64
  return (React.createElement(InputWithDecorations, { size: size },
59
65
  icon !== undefined ? (React.createElement(InputWithDecorations.Icon, null, icon)) : null,
60
- React.createElement(InputWithDecorations.Input, { ref: inputRef, style: style, disabled: disabled, onChange: handleChange, value: inputValue }),
66
+ React.createElement(InputWithDecorations.Input, { id: id, ref: inputRef, style: style, disabled: disabled, onChange: handleChange, value: inputValue }),
61
67
  decoration));
62
68
  }
63
69
  /* v8 ignore stop */
@@ -1 +1 @@
1
- {"version":3,"file":"CustomNumber.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/CustomNumber.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\nimport * as React from \"react\";\nimport {\n PropertyEditorParamTypes,\n StandardEditorNames,\n} from \"@itwin/appui-abstract\";\nimport { InputWithDecorations } from \"@itwin/itwinui-react\";\nimport type { EditorProps } from \"../../Types.js\";\nimport { createEditorSpec } from \"../../Types.js\";\nimport type { OldEditorMetadata } from \"../Metadata.js\";\nimport { isOldEditorMetadata } from \"../Metadata.js\";\nimport type { NumericValue } from \"../../values/Values.js\";\nimport {\n useCustomFormattedNumberParams,\n useIconEditorParams,\n useInputEditorSizeParams,\n} from \"./UseEditorParams.js\";\nimport { findIcon } from \"../IconsRegistry.js\";\nimport { isNumeric } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/** @internal */\nexport const CustomNumberEditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is OldEditorMetadata =>\n isOldEditorMetadata(metadata) &&\n metadata.type === \"number\" &&\n !!metadata.params?.find(\n (param) =>\n param.type === PropertyEditorParamTypes.CustomFormattedNumber.valueOf()\n ) &&\n metadata.preferredEditor === StandardEditorNames.NumberCustom,\n isValueSupported: isNumeric,\n Editor: CustomNumberEditor,\n});\n\ninterface CustomNumberEditorProps\n extends EditorProps<OldEditorMetadata, NumericValue> {\n decoration?: React.ReactNode;\n}\n\n/** @internal */\nexport function CustomNumberEditor({\n metadata,\n value,\n onChange,\n size,\n disabled,\n decoration,\n}: CustomNumberEditorProps) {\n const formatParams = useCustomFormattedNumberParams(metadata);\n const sizeParams = useInputEditorSizeParams(metadata);\n const iconParams = useIconEditorParams(metadata);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [inputValue, setInputValue] = React.useState(() => {\n return value?.rawValue !== undefined && formatParams\n ? formatParams.formatFunction(value.rawValue)\n : \"\";\n });\n\n if (!formatParams) {\n return null;\n }\n\n const style: React.CSSProperties | undefined =\n sizeParams?.size !== undefined\n ? {\n minWidth: `${sizeParams?.size * 0.75}em`,\n maxWidth:\n sizeParams?.maxSize !== undefined\n ? `${sizeParams?.maxSize * 0.75}em`\n : undefined,\n }\n : undefined;\n const icon =\n iconParams?.definition?.iconSpec !== undefined\n ? findIcon(iconParams.definition.iconSpec)\n : undefined;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const currentValue = e.target.value;\n const result = formatParams.parseFunction(currentValue);\n const parsedValue =\n typeof result.value === \"number\" ? result.value : undefined;\n\n setInputValue(currentValue);\n\n onChange({\n rawValue: parsedValue,\n displayValue: currentValue,\n });\n };\n\n return (\n <InputWithDecorations size={size}>\n {icon !== undefined ? (\n <InputWithDecorations.Icon>{icon}</InputWithDecorations.Icon>\n ) : null}\n <InputWithDecorations.Input\n ref={inputRef}\n style={style}\n disabled={disabled}\n onChange={handleChange}\n value={inputValue}\n />\n {decoration}\n </InputWithDecorations>\n );\n}\n\n/* v8 ignore stop */\n"]}
1
+ {"version":3,"file":"CustomNumber.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/CustomNumber.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\nimport * as React from \"react\";\nimport {\n PropertyEditorParamTypes,\n StandardEditorNames,\n} from \"@itwin/appui-abstract\";\nimport { InputWithDecorations } from \"@itwin/itwinui-react\";\nimport type { EditorProps } from \"../../Types.js\";\nimport { createEditorSpec } from \"../../Types.js\";\nimport type { PropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport { isPropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport type { NumericValue } from \"../../values/Values.js\";\nimport {\n useCustomFormattedNumberParams,\n useIconEditorParams,\n useInputEditorSizeParams,\n} from \"./UseEditorParams.js\";\nimport { findIcon } from \"../IconsRegistry.js\";\nimport { isNumeric } from \"../../values/ValueUtilities.js\";\nimport type { WithConstraints } from \"../../ConstraintUtils.js\";\nimport {\n applyNumericConstraints,\n getNumericConstraints,\n} from \"../../ConstraintUtils.js\";\n/* v8 ignore start */\n\n/** @internal */\nexport const CustomNumberEditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is PropertyRecordEditorMetadata =>\n isPropertyRecordEditorMetadata(metadata) &&\n metadata.type === \"number\" &&\n !!metadata.params?.find(\n (param) =>\n param.type === PropertyEditorParamTypes.CustomFormattedNumber.valueOf()\n ) &&\n metadata.preferredEditor === StandardEditorNames.NumberCustom,\n isValueSupported: isNumeric,\n Editor: CustomNumberEditor,\n});\n\ninterface CustomNumberEditorProps\n extends EditorProps<\n WithConstraints<PropertyRecordEditorMetadata>,\n NumericValue\n > {\n decoration?: React.ReactNode;\n}\n\n/** @internal */\nexport function CustomNumberEditor({\n metadata,\n value,\n onChange,\n size,\n disabled,\n decoration,\n id,\n}: CustomNumberEditorProps) {\n const formatParams = useCustomFormattedNumberParams(metadata);\n const sizeParams = useInputEditorSizeParams(metadata);\n const iconParams = useIconEditorParams(metadata);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [inputValue, setInputValue] = React.useState(() => {\n return value?.rawValue !== undefined && formatParams\n ? formatParams.formatFunction(value.rawValue)\n : \"\";\n });\n\n if (!formatParams) {\n return null;\n }\n\n const style: React.CSSProperties | undefined =\n sizeParams?.size !== undefined\n ? {\n minWidth: `${sizeParams?.size * 0.75}em`,\n maxWidth:\n sizeParams?.maxSize !== undefined\n ? `${sizeParams?.maxSize * 0.75}em`\n : undefined,\n }\n : undefined;\n const icon =\n iconParams?.definition?.iconSpec !== undefined\n ? findIcon(iconParams.definition.iconSpec)\n : undefined;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const currentValue = e.target.value;\n const result = formatParams.parseFunction(currentValue);\n const parsedValue =\n typeof result.value === \"number\"\n ? applyNumericConstraints({\n ...getNumericConstraints(metadata.constraints),\n value: result.value,\n })\n : undefined;\n\n setInputValue(currentValue);\n\n onChange({\n rawValue: parsedValue,\n displayValue: currentValue,\n });\n };\n\n return (\n <InputWithDecorations size={size}>\n {icon !== undefined ? (\n <InputWithDecorations.Icon>{icon}</InputWithDecorations.Icon>\n ) : null}\n <InputWithDecorations.Input\n id={id}\n ref={inputRef}\n style={style}\n disabled={disabled}\n onChange={handleChange}\n value={inputValue}\n />\n {decoration}\n </InputWithDecorations>\n );\n}\n\n/* v8 ignore stop */\n"]}
@@ -5,13 +5,13 @@
5
5
  import * as React from "react";
6
6
  import { createEditorSpec, } from "../../Types.js";
7
7
  import { EnumEditor as NewEnumEditor } from "../../editors/EnumEditor.js";
8
- import { isOldEditorMetadata } from "../Metadata.js";
8
+ import { isPropertyRecordEditorMetadata } from "../Metadata.js";
9
9
  import { useEnumMetadata } from "./UseEnumMetadata.js";
10
10
  import { isEnum } from "../../values/ValueUtilities.js";
11
11
  /* v8 ignore start */
12
12
  /** @internal */
13
13
  export const EnumEditorSpec = createEditorSpec({
14
- isMetadataSupported: (metadata) => isOldEditorMetadata(metadata) && metadata.type === "enum",
14
+ isMetadataSupported: (metadata) => isPropertyRecordEditorMetadata(metadata) && metadata.type === "enum",
15
15
  isValueSupported: isEnum,
16
16
  Editor: EnumEditor,
17
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Enum.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/Enum.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,gBAAgB,GAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,qBAAqB;AAErB,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAe,gBAAgB,CAAC;IACzD,mBAAmB,EAAE,CAAC,QAAQ,EAAiC,EAAE,CAC/D,mBAAmB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;IAC3D,gBAAgB,EAAE,MAAM;IACxB,MAAM,EAAE,UAAU;CACnB,CAAC,CAAC;AAEH,SAAS,UAAU,CAAC,KAAgD;IAClE,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,oBAAC,aAAa,OAAK,KAAK,EAAE,QAAQ,EAAE,WAAW,GAAI,CAAC;AAC7D,CAAC;AAED,oBAAoB","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\nimport * as React from \"react\";\nimport {\n createEditorSpec,\n type EditorProps,\n type EditorSpec,\n} from \"../../Types.js\";\nimport { EnumEditor as NewEnumEditor } from \"../../editors/EnumEditor.js\";\nimport type { OldEditorMetadata } from \"../Metadata.js\";\nimport { isOldEditorMetadata } from \"../Metadata.js\";\nimport type { EnumValue } from \"../../values/Values.js\";\nimport { useEnumMetadata } from \"./UseEnumMetadata.js\";\nimport { isEnum } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/** @internal */\nexport const EnumEditorSpec: EditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is OldEditorMetadata =>\n isOldEditorMetadata(metadata) && metadata.type === \"enum\",\n isValueSupported: isEnum,\n Editor: EnumEditor,\n});\n\nfunction EnumEditor(props: EditorProps<OldEditorMetadata, EnumValue>) {\n const newMetadata = useEnumMetadata(props.metadata);\n return <NewEnumEditor {...props} metadata={newMetadata} />;\n}\n\n/* v8 ignore stop */\n"]}
1
+ {"version":3,"file":"Enum.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/Enum.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,gBAAgB,GAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,qBAAqB;AAErB,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAe,gBAAgB,CAAC;IACzD,mBAAmB,EAAE,CAAC,QAAQ,EAA4C,EAAE,CAC1E,8BAA8B,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;IACtE,gBAAgB,EAAE,MAAM;IACxB,MAAM,EAAE,UAAU;CACnB,CAAC,CAAC;AAEH,SAAS,UAAU,CACjB,KAA2D;IAE3D,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,oBAAC,aAAa,OAAK,KAAK,EAAE,QAAQ,EAAE,WAAW,GAAI,CAAC;AAC7D,CAAC;AAED,oBAAoB","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\nimport * as React from \"react\";\nimport {\n createEditorSpec,\n type EditorProps,\n type EditorSpec,\n} from \"../../Types.js\";\nimport { EnumEditor as NewEnumEditor } from \"../../editors/EnumEditor.js\";\nimport type { PropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport { isPropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport type { EnumValue } from \"../../values/Values.js\";\nimport { useEnumMetadata } from \"./UseEnumMetadata.js\";\nimport { isEnum } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/** @internal */\nexport const EnumEditorSpec: EditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is PropertyRecordEditorMetadata =>\n isPropertyRecordEditorMetadata(metadata) && metadata.type === \"enum\",\n isValueSupported: isEnum,\n Editor: EnumEditor,\n});\n\nfunction EnumEditor(\n props: EditorProps<PropertyRecordEditorMetadata, EnumValue>\n) {\n const newMetadata = useEnumMetadata(props.metadata);\n return <NewEnumEditor {...props} metadata={newMetadata} />;\n}\n\n/* v8 ignore stop */\n"]}
@@ -5,7 +5,7 @@
5
5
  import * as React from "react";
6
6
  import { StandardEditorNames, } from "@itwin/appui-abstract";
7
7
  import { createEditorSpec } from "../../Types.js";
8
- import { isOldEditorMetadata } from "../Metadata.js";
8
+ import { isPropertyRecordEditorMetadata } from "../Metadata.js";
9
9
  import { useEnumMetadata } from "./UseEnumMetadata.js";
10
10
  import { useButtonGroupEditorParams } from "./UseEditorParams.js";
11
11
  import { ButtonGroup, IconButton } from "@itwin/itwinui-react";
@@ -14,13 +14,13 @@ import { isEnum } from "../../values/ValueUtilities.js";
14
14
  /* v8 ignore start */
15
15
  /** @internal */
16
16
  export const EnumButtonGroupEditorSpec = createEditorSpec({
17
- isMetadataSupported: (metadata) => isOldEditorMetadata(metadata) &&
17
+ isMetadataSupported: (metadata) => isPropertyRecordEditorMetadata(metadata) &&
18
18
  metadata.type === "enum" &&
19
19
  metadata.preferredEditor === StandardEditorNames.EnumButtonGroup,
20
20
  isValueSupported: isEnum,
21
21
  Editor: EnumButtonGroupEditor,
22
22
  });
23
- function EnumButtonGroupEditor({ value, onChange, commit, size, disabled, metadata, }) {
23
+ function EnumButtonGroupEditor({ value, onChange, commit, size, disabled, metadata, id, }) {
24
24
  const enumMetadata = useEnumMetadata(metadata);
25
25
  const buttonGroupParams = useButtonGroupEditorParams(metadata);
26
26
  const enumIcons = React.useMemo(() => {
@@ -30,7 +30,7 @@ function EnumButtonGroupEditor({ value, onChange, commit, size, disabled, metada
30
30
  }, [enumMetadata, buttonGroupParams]);
31
31
  const firstChoice = enumMetadata.choices[0];
32
32
  const currentValue = value ? value : { choice: firstChoice?.value ?? "" };
33
- return (React.createElement(ButtonGroup, { orientation: "horizontal" }, enumMetadata.choices.map((choice) => {
33
+ return (React.createElement(ButtonGroup, { id: id, orientation: "horizontal" }, enumMetadata.choices.map((choice) => {
34
34
  const icon = findIcon(enumIcons?.get(choice.value));
35
35
  return (React.createElement(IconButton, { key: choice.value, onClick: () => {
36
36
  onChange({ choice: choice.value });
@@ -1 +1 @@
1
- {"version":3,"file":"EnumButtonGroup.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/EnumButtonGroup.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\nimport * as React from \"react\";\nimport type { ButtonGroupEditorParams } from \"@itwin/appui-abstract\";\nimport {\n type EnumerationChoice,\n StandardEditorNames,\n} from \"@itwin/appui-abstract\";\nimport type { EditorProps, EditorSpec } from \"../../Types.js\";\nimport { createEditorSpec } from \"../../Types.js\";\nimport type { OldEditorMetadata } from \"../Metadata.js\";\nimport { isOldEditorMetadata } from \"../Metadata.js\";\nimport type { EnumValue } from \"../../values/Values.js\";\nimport { useEnumMetadata } from \"./UseEnumMetadata.js\";\nimport { useButtonGroupEditorParams } from \"./UseEditorParams.js\";\nimport { ButtonGroup, IconButton } from \"@itwin/itwinui-react\";\nimport { findIcon } from \"../IconsRegistry.js\";\nimport { isEnum } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/** @internal */\nexport const EnumButtonGroupEditorSpec: EditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is OldEditorMetadata =>\n isOldEditorMetadata(metadata) &&\n metadata.type === \"enum\" &&\n metadata.preferredEditor === StandardEditorNames.EnumButtonGroup,\n isValueSupported: isEnum,\n Editor: EnumButtonGroupEditor,\n});\n\nfunction EnumButtonGroupEditor({\n value,\n onChange,\n commit,\n size,\n disabled,\n metadata,\n}: EditorProps<OldEditorMetadata, EnumValue>) {\n const enumMetadata = useEnumMetadata(metadata);\n const buttonGroupParams = useButtonGroupEditorParams(metadata);\n\n const enumIcons = React.useMemo(() => {\n return buttonGroupParams\n ? createIconsMap(enumMetadata.choices, buttonGroupParams)\n : undefined;\n }, [enumMetadata, buttonGroupParams]);\n\n const firstChoice = enumMetadata.choices[0] as EnumerationChoice | undefined;\n const currentValue = value ? value : { choice: firstChoice?.value ?? \"\" };\n\n return (\n <ButtonGroup orientation=\"horizontal\">\n {enumMetadata.choices.map((choice) => {\n const icon = findIcon(enumIcons?.get(choice.value));\n return (\n <IconButton\n key={choice.value}\n onClick={() => {\n onChange({ choice: choice.value });\n commit?.();\n }}\n label={choice.label}\n isActive={choice.value === currentValue.choice}\n size={size}\n disabled={disabled}\n >\n {icon}\n </IconButton>\n );\n })}\n </ButtonGroup>\n );\n}\n\nfunction createIconsMap(\n choices: EnumerationChoice[],\n params: ButtonGroupEditorParams\n) {\n const icons = new Map<string | number, string>();\n for (let i = 0; i < choices.length; i++) {\n const iconDef = params.buttons[i];\n icons.set(choices[i].value, iconDef.iconSpec);\n }\n return icons;\n}\n\n/* v8 ignore stop */\n"]}
1
+ {"version":3,"file":"EnumButtonGroup.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/EnumButtonGroup.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\nimport * as React from \"react\";\nimport type { ButtonGroupEditorParams } from \"@itwin/appui-abstract\";\nimport {\n type EnumerationChoice,\n StandardEditorNames,\n} from \"@itwin/appui-abstract\";\nimport type { EditorProps, EditorSpec } from \"../../Types.js\";\nimport { createEditorSpec } from \"../../Types.js\";\nimport type { PropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport { isPropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport type { EnumValue } from \"../../values/Values.js\";\nimport { useEnumMetadata } from \"./UseEnumMetadata.js\";\nimport { useButtonGroupEditorParams } from \"./UseEditorParams.js\";\nimport { ButtonGroup, IconButton } from \"@itwin/itwinui-react\";\nimport { findIcon } from \"../IconsRegistry.js\";\nimport { isEnum } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/** @internal */\nexport const EnumButtonGroupEditorSpec: EditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is PropertyRecordEditorMetadata =>\n isPropertyRecordEditorMetadata(metadata) &&\n metadata.type === \"enum\" &&\n metadata.preferredEditor === StandardEditorNames.EnumButtonGroup,\n isValueSupported: isEnum,\n Editor: EnumButtonGroupEditor,\n});\n\nfunction EnumButtonGroupEditor({\n value,\n onChange,\n commit,\n size,\n disabled,\n metadata,\n id,\n}: EditorProps<PropertyRecordEditorMetadata, EnumValue>) {\n const enumMetadata = useEnumMetadata(metadata);\n const buttonGroupParams = useButtonGroupEditorParams(metadata);\n\n const enumIcons = React.useMemo(() => {\n return buttonGroupParams\n ? createIconsMap(enumMetadata.choices, buttonGroupParams)\n : undefined;\n }, [enumMetadata, buttonGroupParams]);\n\n const firstChoice = enumMetadata.choices[0] as EnumerationChoice | undefined;\n const currentValue = value ? value : { choice: firstChoice?.value ?? \"\" };\n\n return (\n <ButtonGroup id={id} orientation=\"horizontal\">\n {enumMetadata.choices.map((choice) => {\n const icon = findIcon(enumIcons?.get(choice.value));\n return (\n <IconButton\n key={choice.value}\n onClick={() => {\n onChange({ choice: choice.value });\n commit?.();\n }}\n label={choice.label}\n isActive={choice.value === currentValue.choice}\n size={size}\n disabled={disabled}\n >\n {icon}\n </IconButton>\n );\n })}\n </ButtonGroup>\n );\n}\n\nfunction createIconsMap(\n choices: EnumerationChoice[],\n params: ButtonGroupEditorParams\n) {\n const icons = new Map<string | number, string>();\n for (let i = 0; i < choices.length; i++) {\n const iconDef = params.buttons[i];\n icons.set(choices[i].value, iconDef.iconSpec);\n }\n return icons;\n}\n\n/* v8 ignore stop */\n"]}
@@ -1,4 +1,10 @@
1
- import type { EditorSpec } from "../../Types.js";
1
+ import * as React from "react";
2
+ import type { EditorProps, EditorSpec } from "../../Types.js";
3
+ import type { PropertyRecordEditorMetadata } from "../Metadata.js";
4
+ import type { NumericValue } from "../../values/Values.js";
5
+ import type { WithConstraints } from "../../ConstraintUtils.js";
2
6
  /** @internal */
3
7
  export declare const NumericInputEditorSpec: EditorSpec;
8
+ /** @internal */
9
+ export declare function NumericInputEditor({ metadata, value, onChange, size, disabled, id, }: EditorProps<WithConstraints<PropertyRecordEditorMetadata>, NumericValue>): React.JSX.Element;
4
10
  //# sourceMappingURL=NumericInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumericInput.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/NumericInput.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAc9D,gBAAgB;AAChB,eAAO,MAAM,sBAAsB,EAAE,UAOnC,CAAC"}
1
+ {"version":3,"file":"NumericInput.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/NumericInput.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE9D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAO3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAKhE,gBAAgB;AAChB,eAAO,MAAM,sBAAsB,EAAE,UAOnC,CAAC;AAEH,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,EAAE,GACH,EAAE,WAAW,CAAC,eAAe,CAAC,4BAA4B,CAAC,EAAE,YAAY,CAAC,qBA2D1E"}
@@ -5,22 +5,37 @@
5
5
  import * as React from "react";
6
6
  import { StandardEditorNames } from "@itwin/appui-abstract";
7
7
  import { createEditorSpec } from "../../Types.js";
8
- import { isOldEditorMetadata } from "../Metadata.js";
8
+ import { isPropertyRecordEditorMetadata } from "../Metadata.js";
9
9
  import { useInputEditorSizeParams, useRangeEditorParams, } from "./UseEditorParams.js";
10
10
  import { Input } from "@itwin/itwinui-react";
11
11
  import { isNumeric } from "../../values/ValueUtilities.js";
12
+ import { getNumericConstraints } from "../../ConstraintUtils.js";
12
13
  /* v8 ignore start */
13
14
  /** @internal */
14
15
  export const NumericInputEditorSpec = createEditorSpec({
15
- isMetadataSupported: (metadata) => isOldEditorMetadata(metadata) &&
16
+ isMetadataSupported: (metadata) => isPropertyRecordEditorMetadata(metadata) &&
16
17
  metadata.type === "number" &&
17
18
  metadata.preferredEditor === StandardEditorNames.NumericInput,
18
19
  isValueSupported: isNumeric,
19
20
  Editor: NumericInputEditor,
20
21
  });
21
- function NumericInputEditor({ metadata, value, onChange, size, disabled, }) {
22
+ /** @internal */
23
+ export function NumericInputEditor({ metadata, value, onChange, size, disabled, id, }) {
22
24
  const sizeParams = useInputEditorSizeParams(metadata);
23
25
  const rangeParams = useRangeEditorParams(metadata);
26
+ const { min: constraintMin, max: constraintMax } = getNumericConstraints(metadata.constraints);
27
+ // Larger minimum value takes precedence
28
+ const effectiveMin = rangeParams?.minimum !== undefined
29
+ ? constraintMin !== undefined
30
+ ? Math.max(rangeParams.minimum, constraintMin)
31
+ : rangeParams.minimum
32
+ : constraintMin;
33
+ // Smaller maximum value takes precedence
34
+ const effectiveMax = rangeParams?.maximum !== undefined
35
+ ? constraintMax !== undefined
36
+ ? Math.min(rangeParams.maximum, constraintMax)
37
+ : rangeParams.maximum
38
+ : constraintMax;
24
39
  const handleChange = (newValue) => {
25
40
  onChange({
26
41
  displayValue: newValue,
@@ -36,15 +51,15 @@ function NumericInputEditor({ metadata, value, onChange, size, disabled, }) {
36
51
  }
37
52
  : undefined;
38
53
  const inputProps = useNumericInput({
39
- min: rangeParams?.minimum,
40
- max: rangeParams?.maximum,
54
+ min: effectiveMin,
55
+ max: effectiveMax,
41
56
  precision: rangeParams?.precision,
42
57
  step: rangeParams?.step,
43
58
  maxLength: sizeParams?.maxLength,
44
59
  onChange: handleChange,
45
60
  value: value?.displayValue ?? "",
46
61
  });
47
- return (React.createElement(Input, { style: style, size: size, disabled: disabled, ...inputProps }));
62
+ return (React.createElement(Input, { id: id, style: style, size: size, disabled: disabled, ...inputProps }));
48
63
  }
49
64
  function useNumericInput({ min, max, step, precision, maxLength, value, onChange, }) {
50
65
  const formatValue = (val) => {
@@ -1 +1 @@
1
- {"version":3,"file":"NumericInput.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/NumericInput.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\nimport * as React from \"react\";\nimport { StandardEditorNames } from \"@itwin/appui-abstract\";\nimport type { EditorProps, EditorSpec } from \"../../Types.js\";\nimport { createEditorSpec } from \"../../Types.js\";\nimport type { OldEditorMetadata } from \"../Metadata.js\";\nimport { isOldEditorMetadata } from \"../Metadata.js\";\nimport type { NumericValue } from \"../../values/Values.js\";\nimport {\n useInputEditorSizeParams,\n useRangeEditorParams,\n} from \"./UseEditorParams.js\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport { isNumeric } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/** @internal */\nexport const NumericInputEditorSpec: EditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is OldEditorMetadata =>\n isOldEditorMetadata(metadata) &&\n metadata.type === \"number\" &&\n metadata.preferredEditor === StandardEditorNames.NumericInput,\n isValueSupported: isNumeric,\n Editor: NumericInputEditor,\n});\n\nfunction NumericInputEditor({\n metadata,\n value,\n onChange,\n size,\n disabled,\n}: EditorProps<OldEditorMetadata, NumericValue>) {\n const sizeParams = useInputEditorSizeParams(metadata);\n const rangeParams = useRangeEditorParams(metadata);\n const handleChange = (newValue: string) => {\n onChange({\n displayValue: newValue,\n rawValue: parseFloat(newValue),\n });\n };\n\n const style: React.CSSProperties | undefined =\n sizeParams?.size !== undefined\n ? {\n minWidth: `${sizeParams?.size * 0.75}em`,\n maxWidth:\n sizeParams?.maxSize !== undefined\n ? `${sizeParams?.maxSize * 0.75}em`\n : undefined,\n }\n : undefined;\n\n const inputProps = useNumericInput({\n min: rangeParams?.minimum,\n max: rangeParams?.maximum,\n precision: rangeParams?.precision,\n step: rangeParams?.step,\n maxLength: sizeParams?.maxLength,\n onChange: handleChange,\n value: value?.displayValue ?? \"\",\n });\n\n return (\n <Input style={style} size={size} disabled={disabled} {...inputProps} />\n );\n}\n\ninterface UseNumericInputProps {\n min?: number;\n max?: number;\n step?: number;\n precision?: number;\n maxLength?: number;\n value: string;\n onChange: (newValue: string) => void;\n}\n\nfunction useNumericInput({\n min,\n max,\n step,\n precision,\n maxLength,\n value,\n onChange,\n}: UseNumericInputProps) {\n const formatValue = (val: number) => {\n const appliedMin = min ?? Number.MIN_VALUE;\n const appliedMax = max ?? Number.MAX_VALUE;\n const valueInRange = Math.min(appliedMax, Math.max(appliedMin, val));\n\n return precision\n ? valueInRange.toFixed(precision)\n : valueInRange.toString();\n };\n\n const [formattedValue, setFormattedValue] = React.useState(() => {\n return value.length !== 0 ? formatValue(Number(value)) : value;\n });\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const currentValue = event.target.value;\n if (maxLength && currentValue.length > maxLength) {\n return;\n }\n setFormattedValue(currentValue);\n onChange(currentValue);\n };\n\n const handleBlur = () => {\n if (precision) {\n const newFormattedValue = formatValue(Number(formattedValue));\n if (newFormattedValue !== formattedValue) {\n setFormattedValue(newFormattedValue);\n onChange(newFormattedValue);\n }\n }\n };\n\n return {\n type: \"number\",\n min,\n max,\n step,\n value: formattedValue,\n onChange: handleChange,\n onBlur: handleBlur,\n };\n}\n\n/* v8 ignore stop */\n"]}
1
+ {"version":3,"file":"NumericInput.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/NumericInput.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\nimport * as React from \"react\";\nimport { StandardEditorNames } from \"@itwin/appui-abstract\";\nimport type { EditorProps, EditorSpec } from \"../../Types.js\";\nimport { createEditorSpec } from \"../../Types.js\";\nimport type { PropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport { isPropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport type { NumericValue } from \"../../values/Values.js\";\nimport {\n useInputEditorSizeParams,\n useRangeEditorParams,\n} from \"./UseEditorParams.js\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport { isNumeric } from \"../../values/ValueUtilities.js\";\nimport type { WithConstraints } from \"../../ConstraintUtils.js\";\nimport { getNumericConstraints } from \"../../ConstraintUtils.js\";\n\n/* v8 ignore start */\n\n/** @internal */\nexport const NumericInputEditorSpec: EditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is PropertyRecordEditorMetadata =>\n isPropertyRecordEditorMetadata(metadata) &&\n metadata.type === \"number\" &&\n metadata.preferredEditor === StandardEditorNames.NumericInput,\n isValueSupported: isNumeric,\n Editor: NumericInputEditor,\n});\n\n/** @internal */\nexport function NumericInputEditor({\n metadata,\n value,\n onChange,\n size,\n disabled,\n id,\n}: EditorProps<WithConstraints<PropertyRecordEditorMetadata>, NumericValue>) {\n const sizeParams = useInputEditorSizeParams(metadata);\n const rangeParams = useRangeEditorParams(metadata);\n const { min: constraintMin, max: constraintMax } = getNumericConstraints(\n metadata.constraints\n );\n\n // Larger minimum value takes precedence\n const effectiveMin =\n rangeParams?.minimum !== undefined\n ? constraintMin !== undefined\n ? Math.max(rangeParams.minimum, constraintMin)\n : rangeParams.minimum\n : constraintMin;\n // Smaller maximum value takes precedence\n const effectiveMax =\n rangeParams?.maximum !== undefined\n ? constraintMax !== undefined\n ? Math.min(rangeParams.maximum, constraintMax)\n : rangeParams.maximum\n : constraintMax;\n\n const handleChange = (newValue: string) => {\n onChange({\n displayValue: newValue,\n rawValue: parseFloat(newValue),\n });\n };\n\n const style: React.CSSProperties | undefined =\n sizeParams?.size !== undefined\n ? {\n minWidth: `${sizeParams?.size * 0.75}em`,\n maxWidth:\n sizeParams?.maxSize !== undefined\n ? `${sizeParams?.maxSize * 0.75}em`\n : undefined,\n }\n : undefined;\n\n const inputProps = useNumericInput({\n min: effectiveMin,\n max: effectiveMax,\n precision: rangeParams?.precision,\n step: rangeParams?.step,\n maxLength: sizeParams?.maxLength,\n onChange: handleChange,\n value: value?.displayValue ?? \"\",\n });\n\n return (\n <Input\n id={id}\n style={style}\n size={size}\n disabled={disabled}\n {...inputProps}\n />\n );\n}\n\ninterface UseNumericInputProps {\n min?: number;\n max?: number;\n step?: number;\n precision?: number;\n maxLength?: number;\n value: string;\n onChange: (newValue: string) => void;\n}\n\nfunction useNumericInput({\n min,\n max,\n step,\n precision,\n maxLength,\n value,\n onChange,\n}: UseNumericInputProps) {\n const formatValue = (val: number) => {\n const appliedMin = min ?? Number.MIN_VALUE;\n const appliedMax = max ?? Number.MAX_VALUE;\n const valueInRange = Math.min(appliedMax, Math.max(appliedMin, val));\n\n return precision\n ? valueInRange.toFixed(precision)\n : valueInRange.toString();\n };\n\n const [formattedValue, setFormattedValue] = React.useState(() => {\n return value.length !== 0 ? formatValue(Number(value)) : value;\n });\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const currentValue = event.target.value;\n if (maxLength && currentValue.length > maxLength) {\n return;\n }\n setFormattedValue(currentValue);\n onChange(currentValue);\n };\n\n const handleBlur = () => {\n if (precision) {\n const newFormattedValue = formatValue(Number(formattedValue));\n if (newFormattedValue !== formattedValue) {\n setFormattedValue(newFormattedValue);\n onChange(newFormattedValue);\n }\n }\n };\n\n return {\n type: \"number\",\n min,\n max,\n step,\n value: formattedValue,\n onChange: handleChange,\n onBlur: handleBlur,\n };\n}\n\n/* v8 ignore stop */\n"]}
@@ -4,7 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import * as React from "react";
6
6
  import { createEditorSpec } from "../../Types.js";
7
- import { isOldEditorMetadata } from "../Metadata.js";
7
+ import { isPropertyRecordEditorMetadata } from "../Metadata.js";
8
8
  import { PropertyEditorParamTypes, StandardEditorNames, } from "@itwin/appui-abstract";
9
9
  import { Button, Icon, Popover, Slider } from "@itwin/itwinui-react";
10
10
  import { useSliderEditorParams } from "./UseEditorParams.js";
@@ -13,14 +13,14 @@ import { isNumeric } from "../../values/ValueUtilities.js";
13
13
  /* v8 ignore start */
14
14
  /** @internal */
15
15
  export const SliderEditorSpec = createEditorSpec({
16
- isMetadataSupported: (metadata) => isOldEditorMetadata(metadata) &&
16
+ isMetadataSupported: (metadata) => isPropertyRecordEditorMetadata(metadata) &&
17
17
  metadata.type === "number" &&
18
18
  !!metadata.params?.find((param) => param.type === PropertyEditorParamTypes.Slider.valueOf()) &&
19
19
  metadata.preferredEditor === StandardEditorNames.Slider,
20
20
  isValueSupported: isNumeric,
21
21
  Editor: SliderEditor,
22
22
  });
23
- function SliderEditor({ metadata, value, disabled, onChange, commit, size, }) {
23
+ function SliderEditor({ metadata, value, disabled, onChange, commit, size, id, }) {
24
24
  const sliderParams = useSliderEditorParams(metadata);
25
25
  if (!sliderParams) {
26
26
  return null;
@@ -44,7 +44,7 @@ function SliderEditor({ metadata, value, disabled, onChange, commit, size, }) {
44
44
  commit?.();
45
45
  }
46
46
  }, applyBackground: true },
47
- React.createElement(Button, { style: { width: "100%" }, size: size, disabled: disabled }, currentValue)));
47
+ React.createElement(Button, { id: id, style: { width: "100%" }, size: size, disabled: disabled }, currentValue)));
48
48
  }
49
49
  function getTickLabels(sliderParams) {
50
50
  if (!sliderParams.showTicks || !sliderParams.showTickLabels) {
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/Slider.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\nimport * as React from \"react\";\nimport type { EditorProps } from \"../../Types.js\";\nimport { createEditorSpec } from \"../../Types.js\";\nimport type { OldEditorMetadata } from \"../Metadata.js\";\nimport { isOldEditorMetadata } from \"../Metadata.js\";\nimport type { NumericValue } from \"../../values/Values.js\";\nimport type { SliderEditorParams } from \"@itwin/appui-abstract\";\nimport {\n PropertyEditorParamTypes,\n StandardEditorNames,\n} from \"@itwin/appui-abstract\";\nimport { Button, Icon, Popover, Slider } from \"@itwin/itwinui-react\";\nimport { useSliderEditorParams } from \"./UseEditorParams.js\";\nimport { findIcon } from \"../IconsRegistry.js\";\nimport { isNumeric } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/** @internal */\nexport const SliderEditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is OldEditorMetadata =>\n isOldEditorMetadata(metadata) &&\n metadata.type === \"number\" &&\n !!metadata.params?.find(\n (param) => param.type === PropertyEditorParamTypes.Slider.valueOf()\n ) &&\n metadata.preferredEditor === StandardEditorNames.Slider,\n isValueSupported: isNumeric,\n Editor: SliderEditor,\n});\n\nfunction SliderEditor({\n metadata,\n value,\n disabled,\n onChange,\n commit,\n size,\n}: EditorProps<OldEditorMetadata, NumericValue>) {\n const sliderParams = useSliderEditorParams(metadata);\n if (!sliderParams) {\n return null;\n }\n\n const minLabel =\n sliderParams.showMinMax && sliderParams.minIconSpec ? (\n <Icon>{findIcon(sliderParams.minIconSpec)}</Icon>\n ) : undefined;\n const maxLabel =\n sliderParams.showMinMax && sliderParams.maxIconSpec ? (\n <Icon>{findIcon(sliderParams.maxIconSpec)}</Icon>\n ) : undefined;\n\n const handleChange = (values: ReadonlyArray<number>): void => {\n const newValue = values[0];\n onChange({ rawValue: newValue, displayValue: `${newValue}` });\n };\n\n const currentValue = value?.rawValue ?? sliderParams.minimum;\n const slider = (\n <Slider\n values={[currentValue]}\n min={sliderParams.minimum}\n max={sliderParams.maximum}\n step={sliderParams.step}\n thumbMode={\n 1 === sliderParams.mode ? \"allow-crossing\" : \"inhibit-crossing\"\n }\n trackDisplayMode={!sliderParams.reversed ? \"auto\" : \"odd-segments\"}\n minLabel={minLabel}\n maxLabel={maxLabel}\n tooltipProps={(_index, tooltipValue) => {\n return {\n placement: sliderParams.tooltipBelow ? \"bottom\" : \"top\",\n content: formatTickLabel(tooltipValue, sliderParams),\n visible: sliderParams.showTooltip,\n };\n }}\n tickLabels={getTickLabels(sliderParams)}\n onChange={handleChange}\n disabled={disabled}\n />\n );\n return (\n <Popover\n placement=\"bottom\"\n style={{ minWidth: \"300px\", padding: \"8px\" }}\n content={slider}\n onVisibleChange={(visible) => {\n if (!visible) {\n commit?.();\n }\n }}\n applyBackground={true}\n >\n <Button style={{ width: \"100%\" }} size={size} disabled={disabled}>\n {currentValue}\n </Button>\n </Popover>\n );\n}\n\nfunction getTickLabels(sliderParams: SliderEditorParams) {\n if (!sliderParams.showTicks || !sliderParams.showTickLabels) {\n return undefined;\n }\n const count = sliderParams.getTickCount ? sliderParams.getTickCount() : 0;\n if (count > 0) {\n const increment = (sliderParams.maximum - sliderParams.minimum) / count;\n return Array.from({ length: count + 1 }, (_, i) =>\n formatTickLabel(i * increment + sliderParams.minimum, sliderParams)\n );\n }\n return sliderParams\n .getTickValues?.()\n .map((val) => formatTickLabel(val, sliderParams));\n}\n\nfunction formatTickLabel(value: number, params: SliderEditorParams) {\n return params.formatTooltip ? params.formatTooltip(value) : `${value}`;\n}\n\n/* v8 ignore stop */\n"]}
1
+ {"version":3,"file":"Slider.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/Slider.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\nimport * as React from \"react\";\nimport type { EditorProps } from \"../../Types.js\";\nimport { createEditorSpec } from \"../../Types.js\";\nimport type { PropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport { isPropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport type { NumericValue } from \"../../values/Values.js\";\nimport type { SliderEditorParams } from \"@itwin/appui-abstract\";\nimport {\n PropertyEditorParamTypes,\n StandardEditorNames,\n} from \"@itwin/appui-abstract\";\nimport { Button, Icon, Popover, Slider } from \"@itwin/itwinui-react\";\nimport { useSliderEditorParams } from \"./UseEditorParams.js\";\nimport { findIcon } from \"../IconsRegistry.js\";\nimport { isNumeric } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/** @internal */\nexport const SliderEditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is PropertyRecordEditorMetadata =>\n isPropertyRecordEditorMetadata(metadata) &&\n metadata.type === \"number\" &&\n !!metadata.params?.find(\n (param) => param.type === PropertyEditorParamTypes.Slider.valueOf()\n ) &&\n metadata.preferredEditor === StandardEditorNames.Slider,\n isValueSupported: isNumeric,\n Editor: SliderEditor,\n});\n\nfunction SliderEditor({\n metadata,\n value,\n disabled,\n onChange,\n commit,\n size,\n id,\n}: EditorProps<PropertyRecordEditorMetadata, NumericValue>) {\n const sliderParams = useSliderEditorParams(metadata);\n if (!sliderParams) {\n return null;\n }\n\n const minLabel =\n sliderParams.showMinMax && sliderParams.minIconSpec ? (\n <Icon>{findIcon(sliderParams.minIconSpec)}</Icon>\n ) : undefined;\n const maxLabel =\n sliderParams.showMinMax && sliderParams.maxIconSpec ? (\n <Icon>{findIcon(sliderParams.maxIconSpec)}</Icon>\n ) : undefined;\n\n const handleChange = (values: ReadonlyArray<number>): void => {\n const newValue = values[0];\n onChange({ rawValue: newValue, displayValue: `${newValue}` });\n };\n\n const currentValue = value?.rawValue ?? sliderParams.minimum;\n const slider = (\n <Slider\n values={[currentValue]}\n min={sliderParams.minimum}\n max={sliderParams.maximum}\n step={sliderParams.step}\n thumbMode={\n 1 === sliderParams.mode ? \"allow-crossing\" : \"inhibit-crossing\"\n }\n trackDisplayMode={!sliderParams.reversed ? \"auto\" : \"odd-segments\"}\n minLabel={minLabel}\n maxLabel={maxLabel}\n tooltipProps={(_index, tooltipValue) => {\n return {\n placement: sliderParams.tooltipBelow ? \"bottom\" : \"top\",\n content: formatTickLabel(tooltipValue, sliderParams),\n visible: sliderParams.showTooltip,\n };\n }}\n tickLabels={getTickLabels(sliderParams)}\n onChange={handleChange}\n disabled={disabled}\n />\n );\n return (\n <Popover\n placement=\"bottom\"\n style={{ minWidth: \"300px\", padding: \"8px\" }}\n content={slider}\n onVisibleChange={(visible) => {\n if (!visible) {\n commit?.();\n }\n }}\n applyBackground={true}\n >\n <Button id={id} style={{ width: \"100%\" }} size={size} disabled={disabled}>\n {currentValue}\n </Button>\n </Popover>\n );\n}\n\nfunction getTickLabels(sliderParams: SliderEditorParams) {\n if (!sliderParams.showTicks || !sliderParams.showTickLabels) {\n return undefined;\n }\n const count = sliderParams.getTickCount ? sliderParams.getTickCount() : 0;\n if (count > 0) {\n const increment = (sliderParams.maximum - sliderParams.minimum) / count;\n return Array.from({ length: count + 1 }, (_, i) =>\n formatTickLabel(i * increment + sliderParams.minimum, sliderParams)\n );\n }\n return sliderParams\n .getTickValues?.()\n .map((val) => formatTickLabel(val, sliderParams));\n}\n\nfunction formatTickLabel(value: number, params: SliderEditorParams) {\n return params.formatTooltip ? params.formatTooltip(value) : `${value}`;\n}\n\n/* v8 ignore stop */\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/TextArea.tsx"],"names":[],"mappings":"AAeA,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,qCAO9B,CAAC"}
1
+ {"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/TextArea.tsx"],"names":[],"mappings":"AAgBA,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,qCAO9B,CAAC"}
@@ -5,19 +5,19 @@
5
5
  import * as React from "react";
6
6
  import { Button, Popover, Textarea } from "@itwin/itwinui-react";
7
7
  import { createEditorSpec } from "../../Types.js";
8
- import { isOldEditorMetadata } from "../Metadata.js";
8
+ import { isPropertyRecordEditorMetadata } from "../Metadata.js";
9
9
  import { StandardEditorNames } from "@itwin/appui-abstract";
10
10
  import { isText } from "../../values/ValueUtilities.js";
11
11
  /* v8 ignore start */
12
12
  /** @internal */
13
13
  export const MultilineEditorSpec = createEditorSpec({
14
- isMetadataSupported: (metadata) => isOldEditorMetadata(metadata) &&
14
+ isMetadataSupported: (metadata) => isPropertyRecordEditorMetadata(metadata) &&
15
15
  metadata.type === "string" &&
16
16
  metadata.preferredEditor === StandardEditorNames.MultiLine,
17
17
  isValueSupported: isText,
18
18
  Editor: TextAreaEditor,
19
19
  });
20
- function TextAreaEditor({ value, onChange, commit, size, disabled, }) {
20
+ function TextAreaEditor({ value, onChange, commit, size, disabled, id, }) {
21
21
  const currentValue = value ?? { value: "" };
22
22
  return (React.createElement(Popover, { placement: "bottom", content: React.createElement(Textarea, { value: currentValue.value, onChange: (e) => {
23
23
  const newValue = e.currentTarget.value;
@@ -27,7 +27,7 @@ function TextAreaEditor({ value, onChange, commit, size, disabled, }) {
27
27
  commit?.();
28
28
  }
29
29
  } },
30
- React.createElement(Button, { style: { width: "100%" }, size: size, disabled: disabled }, currentValue.value)));
30
+ React.createElement(Button, { id: id, style: { width: "100%" }, size: size, disabled: disabled }, currentValue.value)));
31
31
  }
32
32
  /* v8 ignore stop */
33
33
  //# sourceMappingURL=TextArea.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/TextArea.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAoB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAA0B,MAAM,gBAAgB,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,qBAAqB;AAErB,gBAAgB;AAChB,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;IAClD,mBAAmB,EAAE,CAAC,QAAQ,EAAiC,EAAE,CAC/D,mBAAmB,CAAC,QAAQ,CAAC;QAC7B,QAAQ,CAAC,IAAI,KAAK,QAAQ;QAC1B,QAAQ,CAAC,eAAe,KAAK,mBAAmB,CAAC,SAAS;IAC5D,gBAAgB,EAAE,MAAM;IACxB,MAAM,EAAE,cAAc;CACvB,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,QAAQ,GACkC;IAC1C,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAE5C,OAAO,CACL,oBAAC,OAAO,IACN,SAAS,EAAC,QAAQ,EAClB,OAAO,EACL,oBAAC,QAAQ,IACP,KAAK,EAAE,YAAY,CAAC,KAAK,EACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;gBACvC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChC,CAAC,GACD,EAEJ,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,EAAE,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,oBAAC,MAAM,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAC7D,YAAY,CAAC,KAAK,CACZ,CACD,CACX,CAAC;AACJ,CAAC;AAED,oBAAoB","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\nimport * as React from \"react\";\nimport { Button, Popover, Textarea } from \"@itwin/itwinui-react\";\nimport { createEditorSpec, type EditorProps } from \"../../Types.js\";\nimport { isOldEditorMetadata, type OldEditorMetadata } from \"../Metadata.js\";\nimport { type TextValue } from \"../../values/Values.js\";\nimport { StandardEditorNames } from \"@itwin/appui-abstract\";\nimport { isText } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/** @internal */\nexport const MultilineEditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is OldEditorMetadata =>\n isOldEditorMetadata(metadata) &&\n metadata.type === \"string\" &&\n metadata.preferredEditor === StandardEditorNames.MultiLine,\n isValueSupported: isText,\n Editor: TextAreaEditor,\n});\n\nfunction TextAreaEditor({\n value,\n onChange,\n commit,\n size,\n disabled,\n}: EditorProps<OldEditorMetadata, TextValue>) {\n const currentValue = value ?? { value: \"\" };\n\n return (\n <Popover\n placement=\"bottom\"\n content={\n <Textarea\n value={currentValue.value}\n onChange={(e) => {\n const newValue = e.currentTarget.value;\n onChange({ value: newValue });\n }}\n />\n }\n onVisibleChange={(visible) => {\n if (!visible) {\n commit?.();\n }\n }}\n >\n <Button style={{ width: \"100%\" }} size={size} disabled={disabled}>\n {currentValue.value}\n </Button>\n </Popover>\n );\n}\n\n/* v8 ignore stop */\n"]}
1
+ {"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../../../../../src/components-react/new-editors/interop/old-editors/TextArea.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAoB,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,qBAAqB;AAErB,gBAAgB;AAChB,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;IAClD,mBAAmB,EAAE,CAAC,QAAQ,EAA4C,EAAE,CAC1E,8BAA8B,CAAC,QAAQ,CAAC;QACxC,QAAQ,CAAC,IAAI,KAAK,QAAQ;QAC1B,QAAQ,CAAC,eAAe,KAAK,mBAAmB,CAAC,SAAS;IAC5D,gBAAgB,EAAE,MAAM;IACxB,MAAM,EAAE,cAAc;CACvB,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,EAAE,GACmD;IACrD,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAE5C,OAAO,CACL,oBAAC,OAAO,IACN,SAAS,EAAC,QAAQ,EAClB,OAAO,EACL,oBAAC,QAAQ,IACP,KAAK,EAAE,YAAY,CAAC,KAAK,EACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;gBACvC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChC,CAAC,GACD,EAEJ,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,EAAE,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,oBAAC,MAAM,IAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,IACrE,YAAY,CAAC,KAAK,CACZ,CACD,CACX,CAAC;AACJ,CAAC;AAED,oBAAoB","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\nimport * as React from \"react\";\nimport { Button, Popover, Textarea } from \"@itwin/itwinui-react\";\nimport { createEditorSpec, type EditorProps } from \"../../Types.js\";\nimport type { PropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport { isPropertyRecordEditorMetadata } from \"../Metadata.js\";\nimport { type TextValue } from \"../../values/Values.js\";\nimport { StandardEditorNames } from \"@itwin/appui-abstract\";\nimport { isText } from \"../../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/** @internal */\nexport const MultilineEditorSpec = createEditorSpec({\n isMetadataSupported: (metadata): metadata is PropertyRecordEditorMetadata =>\n isPropertyRecordEditorMetadata(metadata) &&\n metadata.type === \"string\" &&\n metadata.preferredEditor === StandardEditorNames.MultiLine,\n isValueSupported: isText,\n Editor: TextAreaEditor,\n});\n\nfunction TextAreaEditor({\n value,\n onChange,\n commit,\n size,\n disabled,\n id,\n}: EditorProps<PropertyRecordEditorMetadata, TextValue>) {\n const currentValue = value ?? { value: \"\" };\n\n return (\n <Popover\n placement=\"bottom\"\n content={\n <Textarea\n value={currentValue.value}\n onChange={(e) => {\n const newValue = e.currentTarget.value;\n onChange({ value: newValue });\n }}\n />\n }\n onVisibleChange={(visible) => {\n if (!visible) {\n commit?.();\n }\n }}\n >\n <Button id={id} style={{ width: \"100%\" }} size={size} disabled={disabled}>\n {currentValue.value}\n </Button>\n </Popover>\n );\n}\n\n/* v8 ignore stop */\n"]}