@itwin/components-react 5.32.0 → 5.33.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 (47) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/lib/components-react/UiComponents.json +2 -2
  3. package/lib/components-react/editors/TextEditor.d.ts.map +1 -1
  4. package/lib/components-react/editors/TextEditor.js +2 -1
  5. package/lib/components-react/editors/TextEditor.js.map +1 -1
  6. package/lib/components-react/new-editors/editors/FallbackEditor.d.ts +1 -1
  7. package/lib/components-react/new-editors/editors/FallbackEditor.d.ts.map +1 -1
  8. package/lib/components-react/new-editors/editors/FallbackEditor.js +5 -3
  9. package/lib/components-react/new-editors/editors/FallbackEditor.js.map +1 -1
  10. package/lib/components-react/new-editors/editors/NumericEditor.d.ts.map +1 -1
  11. package/lib/components-react/new-editors/editors/NumericEditor.js +10 -4
  12. package/lib/components-react/new-editors/editors/NumericEditor.js.map +1 -1
  13. package/lib/components-react/new-editors/editors/TextEditor.d.ts.map +1 -1
  14. package/lib/components-react/new-editors/editors/TextEditor.js +13 -2
  15. package/lib/components-react/new-editors/editors/TextEditor.js.map +1 -1
  16. package/lib/components-react/new-editors/interop/EditorInterop.d.ts.map +1 -1
  17. package/lib/components-react/new-editors/interop/EditorInterop.js +39 -25
  18. package/lib/components-react/new-editors/interop/EditorInterop.js.map +1 -1
  19. package/lib/components-react/new-editors/interop/PropertyRecordEditor.js +1 -1
  20. package/lib/components-react/new-editors/interop/PropertyRecordEditor.js.map +1 -1
  21. package/lib/components-react/new-editors/values/Metadata.d.ts +1 -0
  22. package/lib/components-react/new-editors/values/Metadata.d.ts.map +1 -1
  23. package/lib/components-react/new-editors/values/Metadata.js.map +1 -1
  24. package/lib/components-react/new-editors/values/ValueUtilities.d.ts +5 -0
  25. package/lib/components-react/new-editors/values/ValueUtilities.d.ts.map +1 -1
  26. package/lib/components-react/new-editors/values/ValueUtilities.js +5 -0
  27. package/lib/components-react/new-editors/values/ValueUtilities.js.map +1 -1
  28. package/lib/components-react/properties/renderers/value/MergedPropertyValueRenderer.d.ts.map +1 -1
  29. package/lib/components-react/properties/renderers/value/MergedPropertyValueRenderer.js +4 -1
  30. package/lib/components-react/properties/renderers/value/MergedPropertyValueRenderer.js.map +1 -1
  31. package/lib/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts +9 -1
  32. package/lib/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts.map +1 -1
  33. package/lib/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js +17 -4
  34. package/lib/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  35. package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +3 -1
  36. package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts.map +1 -1
  37. package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  38. package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts +3 -1
  39. package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts.map +1 -1
  40. package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +33 -4
  41. package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  42. package/lib/internal.d.ts +2 -0
  43. package/lib/internal.d.ts.map +1 -1
  44. package/lib/internal.js +2 -0
  45. package/lib/internal.js.map +1 -1
  46. package/lib/public/locales/en/UiComponents.json +2 -2
  47. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Change Log - @itwin/components-react
2
2
 
3
+ ## 5.33.0
4
+
5
+ ### Minor Changes
6
+
7
+ - be761cc: Added support for merged values in the new editors. A new `isMerged` flag was introduced on `ValueMetadata`, and the text, numeric, and fallback editors now render `--` when the value is merged.
8
+
9
+ ### Patch Changes
10
+
11
+ - @itwin/core-react@5.33.0
12
+
13
+ ## 5.32.1
14
+
15
+ ### Patch Changes
16
+
17
+ - 8579336: `Text` and `Numerical` editors now select the input value on focus. `Quantity` editor no longer clear merged values (`-- unit`) on focus.
18
+ - 6a8e093: `VirtualizedPropertyGrid` now resets the active editor back to its initial value when a commit is aborted by the consumer (`onPropertyUpdated` returns `false`). Cancelling an edit now also resets editor.
19
+ - @itwin/core-react@5.32.1
20
+
3
21
  ## 5.32.0
4
22
 
5
23
  ### Patch Changes
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "general": {
3
- "true": "true",
4
- "false": "false",
3
+ "true": "True",
4
+ "false": "False",
5
5
  "loading": "loading",
6
6
  "noData": "The data required for this tree layout is not available in this iModel.",
7
7
  "length": "Length",
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../src/components-react/editors/TextEditor.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAE3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAKV,aAAa,EACd,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,KAAK,EAEV,mBAAmB,EACnB,UAAU,EACX,MAAM,sBAAsB,CAAC;AAQ9B,gBAAgB;AAChB,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,UACX,SAAQ,KAAK,CAAC,aAAa,CAAC,mBAAmB,EAAE,eAAe,CAChE,YAAW,UAAU;IAErB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAuC;IAE5D,SAAyB,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,CAGvD;IAEW,gBAAgB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAenE,IAAW,WAAW,IAAI,WAAW,GAAG,IAAI,CAE3C;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,OAAO,CAAC,QAAQ,CAOd;IAEF,OAAO,CAAC,iBAAiB,CAqBvB;IAEc,iBAAiB;IAKjB,oBAAoB;IAIpC,gBAAgB;IACA,kBAAkB,CAAC,SAAS,EAAE,mBAAmB;YAMnD,iBAAiB;IAqDf,MAAM,IAAI,KAAK,CAAC,SAAS;CA0C1C"}
1
+ {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../src/components-react/editors/TextEditor.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAE3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAKV,aAAa,EACd,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,KAAK,EAEV,mBAAmB,EACnB,UAAU,EACX,MAAM,sBAAsB,CAAC;AAS9B,gBAAgB;AAChB,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,UACX,SAAQ,KAAK,CAAC,aAAa,CAAC,mBAAmB,EAAE,eAAe,CAChE,YAAW,UAAU;IAErB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAuC;IAE5D,SAAyB,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,CAGvD;IAEW,gBAAgB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAenE,IAAW,WAAW,IAAI,WAAW,GAAG,IAAI,CAE3C;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,OAAO,CAAC,QAAQ,CAOd;IAEF,OAAO,CAAC,iBAAiB,CAqBvB;IAEc,iBAAiB;IAKjB,oBAAoB;IAIpC,gBAAgB;IACA,kBAAkB,CAAC,SAAS,EAAE,mBAAmB;YAMnD,iBAAiB;IAsDf,MAAM,IAAI,KAAK,CAAC,SAAS;CA0C1C"}
@@ -13,6 +13,7 @@ import { Icon, IconInput } from "@itwin/core-react";
13
13
  import { Input, InputWithDecorations } from "@itwin/itwinui-react";
14
14
  import { TypeConverterManager } from "../converters/TypeConverterManager.js";
15
15
  import { UiComponents } from "../UiComponents.js";
16
+ import { MERGED_VALUE } from "../new-editors/values/ValueUtilities.js";
16
17
  /** TextEditor React component that is a property editor with text input
17
18
  * @public
18
19
  * @deprecated in 5.30. This is part of the old editor system and should not be used directly. Use {@link EditorRenderer} instead.
@@ -108,7 +109,7 @@ export class TextEditor extends React.PureComponent {
108
109
  }
109
110
  if (this._isMounted)
110
111
  this.setState({
111
- inputValue: record?.isMerged && !this.hasFocus ? "--" : initialValue,
112
+ inputValue: record?.isMerged && !this.hasFocus ? MERGED_VALUE : initialValue,
112
113
  originalValue: initialValue,
113
114
  size,
114
115
  maxSize,
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.js","sourceRoot":"","sources":["../../../src/components-react/editors/TextEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyEditors\n */\n\nimport \"./TextEditor.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type {\n IconEditorParams,\n InputEditorSizeParams,\n PrimitiveValue,\n PropertyEditorParams,\n PropertyValue,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyEditorParamTypes,\n PropertyValueFormat,\n} from \"@itwin/appui-abstract\";\nimport { Icon, IconInput } from \"@itwin/core-react\";\nimport { Input, InputWithDecorations } from \"@itwin/itwinui-react\";\nimport { TypeConverterManager } from \"../converters/TypeConverterManager.js\";\nimport type {\n InternalInputEditorProps,\n PropertyEditorProps,\n TypeEditor,\n} from \"./EditorContainer.js\";\nimport { UiComponents } from \"../UiComponents.js\";\nimport { EditorRenderer } from \"../new-editors/EditorRenderer.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Input>;\n\n/** @internal */\ninterface TextEditorState {\n inputValue: string;\n originalValue: string;\n size?: number;\n maxSize?: number;\n maxLength?: number;\n iconSpec?: string;\n}\n\n/** TextEditor React component that is a property editor with text input\n * @public\n * @deprecated in 5.30. This is part of the old editor system and should not be used directly. Use {@link EditorRenderer} instead.\n */\nexport class TextEditor\n extends React.PureComponent<PropertyEditorProps, TextEditorState>\n implements TypeEditor\n{\n private _isMounted = false;\n private _inputElement = React.createRef<HTMLInputElement>();\n\n public override readonly state: Readonly<TextEditorState> = {\n inputValue: \"\",\n originalValue: \"\",\n };\n\n public async getPropertyValue(): Promise<PropertyValue | undefined> {\n const record = this.props.propertyRecord;\n let propertyValue: PropertyValue | undefined;\n\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\n propertyValue = await TypeConverterManager.getConverter(\n record.property.typename,\n record.property.converter?.name\n ).convertFromStringToPropertyValue(this.state.inputValue, record);\n (propertyValue as PrimitiveValue).displayValue = this.state.inputValue;\n }\n\n return propertyValue;\n }\n\n public get htmlElement(): HTMLElement | null {\n return this._inputElement.current;\n }\n\n public get hasFocus(): boolean {\n return document.activeElement === this._inputElement.current;\n }\n\n private _onFocus = () => {\n if (this._isMounted && this.props.propertyRecord?.isMerged) {\n this.setState((prevState) => ({\n ...prevState,\n inputValue: prevState.originalValue,\n }));\n }\n };\n\n private _updateInputValue = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (this._isMounted)\n this.setState(\n {\n inputValue: e.target.value,\n },\n async () => {\n if (\n this.props.shouldCommitOnChange &&\n this.props.onCommit &&\n this.props.propertyRecord\n ) {\n const newValue = await this.getPropertyValue();\n if (newValue)\n this.props.onCommit({\n propertyRecord: this.props.propertyRecord,\n newValue,\n });\n }\n }\n );\n };\n\n public override componentDidMount() {\n this._isMounted = true;\n void this.setStateFromProps();\n }\n\n public override componentWillUnmount() {\n this._isMounted = false;\n }\n\n /** @internal */\n public override componentDidUpdate(prevProps: PropertyEditorProps) {\n if (this.props.propertyRecord !== prevProps.propertyRecord) {\n void this.setStateFromProps();\n }\n }\n\n private async setStateFromProps() {\n const record = this.props.propertyRecord;\n let initialValue = \"\";\n\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\n const value = record.value.value;\n initialValue = await TypeConverterManager.getConverter(\n record.property.typename,\n record.property.converter?.name\n ).convertPropertyToString(record.property, value);\n }\n\n let size: number | undefined;\n let maxSize: number | undefined;\n let maxLength: number | undefined;\n let iconSpec: string | undefined;\n\n if (\n record &&\n record.property &&\n record.property.editor &&\n record.property.editor.params\n ) {\n const editorSizeParams = record.property.editor.params.find(\n (param: PropertyEditorParams) =>\n param.type === PropertyEditorParamTypes.InputEditorSize.valueOf()\n ) as InputEditorSizeParams;\n if (editorSizeParams) {\n if (editorSizeParams.size) size = editorSizeParams.size;\n if (editorSizeParams.maxSize) maxSize = editorSizeParams.maxSize;\n if (editorSizeParams.maxLength) maxLength = editorSizeParams.maxLength;\n }\n\n const iconParams = record.property.editor.params.find(\n (param: PropertyEditorParams) =>\n param.type === PropertyEditorParamTypes.Icon.valueOf()\n ) as IconEditorParams;\n if (iconParams) {\n iconSpec = iconParams.definition.iconSpec;\n }\n }\n\n if (this._isMounted)\n this.setState({\n inputValue: record?.isMerged && !this.hasFocus ? \"--\" : initialValue,\n originalValue: initialValue,\n size,\n maxSize,\n maxLength,\n iconSpec,\n });\n }\n\n public override render(): React.ReactNode {\n const { decoration } = this.props as InternalInputEditorProps;\n const className = classnames(\n \"components-cell-editor\",\n \"components-text-editor\",\n this.props.className\n );\n const minSize = this.state.size ? this.state.size : 8;\n const style: React.CSSProperties = {\n minWidth: `${minSize * 0.75}em`,\n maxWidth: this.state.maxSize\n ? `${this.state.maxSize * 0.75}em`\n : undefined,\n };\n const inputProps: InputProps = {\n type: \"text\",\n className,\n style: this.props.style ? this.props.style : style,\n readOnly: this.props.propertyRecord?.isReadonly,\n disabled: this.props.propertyRecord?.isDisabled,\n maxLength: this.state.maxLength,\n value: this.state.inputValue,\n onBlur: this.props.onBlur,\n onFocus: this._onFocus,\n onChange: this._updateInputValue,\n autoFocus: this.props.setFocus && !this.props.propertyRecord?.isDisabled,\n \"aria-label\": UiComponents.translate(\"editor.text\"),\n };\n\n const icon = this.state.iconSpec ? (\n <Icon iconSpec={this.state.iconSpec} />\n ) : undefined;\n return (\n <LockTextEditor\n {...inputProps}\n ref={this._inputElement}\n id={this.props.propertyRecord?.property.name}\n icon={icon}\n decoration={decoration}\n />\n );\n }\n}\n\ninterface LockTextEditorProps extends InputProps {\n icon?: React.ReactNode;\n decoration?: React.ReactNode;\n}\n\nconst LockTextEditor = React.forwardRef<HTMLInputElement, LockTextEditorProps>(\n function LockTextEditor(props, forwardedRef) {\n const { icon, decoration, ...rest } = props;\n if (decoration) {\n return (\n <InputWithDecorations size=\"small\">\n {icon && (\n <InputWithDecorations.Icon size=\"small\">\n {icon}\n </InputWithDecorations.Icon>\n )}\n <InputWithDecorations.Input\n {...rest}\n ref={forwardedRef}\n data-testid=\"components-text-editor\"\n size=\"small\"\n />\n {decoration}\n </InputWithDecorations>\n );\n }\n\n if (icon) {\n return (\n <IconInput\n {...rest}\n ref={forwardedRef}\n icon={icon}\n data-testid=\"components-text-editor\"\n />\n );\n }\n return (\n <Input\n {...rest}\n ref={forwardedRef}\n data-testid=\"components-text-editor\"\n size=\"small\"\n />\n );\n }\n);\n"]}
1
+ {"version":3,"file":"TextEditor.js","sourceRoot":"","sources":["../../../src/components-react/editors/TextEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyEditors\n */\n\nimport \"./TextEditor.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type {\n IconEditorParams,\n InputEditorSizeParams,\n PrimitiveValue,\n PropertyEditorParams,\n PropertyValue,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyEditorParamTypes,\n PropertyValueFormat,\n} from \"@itwin/appui-abstract\";\nimport { Icon, IconInput } from \"@itwin/core-react\";\nimport { Input, InputWithDecorations } from \"@itwin/itwinui-react\";\nimport { TypeConverterManager } from \"../converters/TypeConverterManager.js\";\nimport type {\n InternalInputEditorProps,\n PropertyEditorProps,\n TypeEditor,\n} from \"./EditorContainer.js\";\nimport { UiComponents } from \"../UiComponents.js\";\nimport { EditorRenderer } from \"../new-editors/EditorRenderer.js\";\nimport { MERGED_VALUE } from \"../new-editors/values/ValueUtilities.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Input>;\n\n/** @internal */\ninterface TextEditorState {\n inputValue: string;\n originalValue: string;\n size?: number;\n maxSize?: number;\n maxLength?: number;\n iconSpec?: string;\n}\n\n/** TextEditor React component that is a property editor with text input\n * @public\n * @deprecated in 5.30. This is part of the old editor system and should not be used directly. Use {@link EditorRenderer} instead.\n */\nexport class TextEditor\n extends React.PureComponent<PropertyEditorProps, TextEditorState>\n implements TypeEditor\n{\n private _isMounted = false;\n private _inputElement = React.createRef<HTMLInputElement>();\n\n public override readonly state: Readonly<TextEditorState> = {\n inputValue: \"\",\n originalValue: \"\",\n };\n\n public async getPropertyValue(): Promise<PropertyValue | undefined> {\n const record = this.props.propertyRecord;\n let propertyValue: PropertyValue | undefined;\n\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\n propertyValue = await TypeConverterManager.getConverter(\n record.property.typename,\n record.property.converter?.name\n ).convertFromStringToPropertyValue(this.state.inputValue, record);\n (propertyValue as PrimitiveValue).displayValue = this.state.inputValue;\n }\n\n return propertyValue;\n }\n\n public get htmlElement(): HTMLElement | null {\n return this._inputElement.current;\n }\n\n public get hasFocus(): boolean {\n return document.activeElement === this._inputElement.current;\n }\n\n private _onFocus = () => {\n if (this._isMounted && this.props.propertyRecord?.isMerged) {\n this.setState((prevState) => ({\n ...prevState,\n inputValue: prevState.originalValue,\n }));\n }\n };\n\n private _updateInputValue = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (this._isMounted)\n this.setState(\n {\n inputValue: e.target.value,\n },\n async () => {\n if (\n this.props.shouldCommitOnChange &&\n this.props.onCommit &&\n this.props.propertyRecord\n ) {\n const newValue = await this.getPropertyValue();\n if (newValue)\n this.props.onCommit({\n propertyRecord: this.props.propertyRecord,\n newValue,\n });\n }\n }\n );\n };\n\n public override componentDidMount() {\n this._isMounted = true;\n void this.setStateFromProps();\n }\n\n public override componentWillUnmount() {\n this._isMounted = false;\n }\n\n /** @internal */\n public override componentDidUpdate(prevProps: PropertyEditorProps) {\n if (this.props.propertyRecord !== prevProps.propertyRecord) {\n void this.setStateFromProps();\n }\n }\n\n private async setStateFromProps() {\n const record = this.props.propertyRecord;\n let initialValue = \"\";\n\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\n const value = record.value.value;\n initialValue = await TypeConverterManager.getConverter(\n record.property.typename,\n record.property.converter?.name\n ).convertPropertyToString(record.property, value);\n }\n\n let size: number | undefined;\n let maxSize: number | undefined;\n let maxLength: number | undefined;\n let iconSpec: string | undefined;\n\n if (\n record &&\n record.property &&\n record.property.editor &&\n record.property.editor.params\n ) {\n const editorSizeParams = record.property.editor.params.find(\n (param: PropertyEditorParams) =>\n param.type === PropertyEditorParamTypes.InputEditorSize.valueOf()\n ) as InputEditorSizeParams;\n if (editorSizeParams) {\n if (editorSizeParams.size) size = editorSizeParams.size;\n if (editorSizeParams.maxSize) maxSize = editorSizeParams.maxSize;\n if (editorSizeParams.maxLength) maxLength = editorSizeParams.maxLength;\n }\n\n const iconParams = record.property.editor.params.find(\n (param: PropertyEditorParams) =>\n param.type === PropertyEditorParamTypes.Icon.valueOf()\n ) as IconEditorParams;\n if (iconParams) {\n iconSpec = iconParams.definition.iconSpec;\n }\n }\n\n if (this._isMounted)\n this.setState({\n inputValue:\n record?.isMerged && !this.hasFocus ? MERGED_VALUE : initialValue,\n originalValue: initialValue,\n size,\n maxSize,\n maxLength,\n iconSpec,\n });\n }\n\n public override render(): React.ReactNode {\n const { decoration } = this.props as InternalInputEditorProps;\n const className = classnames(\n \"components-cell-editor\",\n \"components-text-editor\",\n this.props.className\n );\n const minSize = this.state.size ? this.state.size : 8;\n const style: React.CSSProperties = {\n minWidth: `${minSize * 0.75}em`,\n maxWidth: this.state.maxSize\n ? `${this.state.maxSize * 0.75}em`\n : undefined,\n };\n const inputProps: InputProps = {\n type: \"text\",\n className,\n style: this.props.style ? this.props.style : style,\n readOnly: this.props.propertyRecord?.isReadonly,\n disabled: this.props.propertyRecord?.isDisabled,\n maxLength: this.state.maxLength,\n value: this.state.inputValue,\n onBlur: this.props.onBlur,\n onFocus: this._onFocus,\n onChange: this._updateInputValue,\n autoFocus: this.props.setFocus && !this.props.propertyRecord?.isDisabled,\n \"aria-label\": UiComponents.translate(\"editor.text\"),\n };\n\n const icon = this.state.iconSpec ? (\n <Icon iconSpec={this.state.iconSpec} />\n ) : undefined;\n return (\n <LockTextEditor\n {...inputProps}\n ref={this._inputElement}\n id={this.props.propertyRecord?.property.name}\n icon={icon}\n decoration={decoration}\n />\n );\n }\n}\n\ninterface LockTextEditorProps extends InputProps {\n icon?: React.ReactNode;\n decoration?: React.ReactNode;\n}\n\nconst LockTextEditor = React.forwardRef<HTMLInputElement, LockTextEditorProps>(\n function LockTextEditor(props, forwardedRef) {\n const { icon, decoration, ...rest } = props;\n if (decoration) {\n return (\n <InputWithDecorations size=\"small\">\n {icon && (\n <InputWithDecorations.Icon size=\"small\">\n {icon}\n </InputWithDecorations.Icon>\n )}\n <InputWithDecorations.Input\n {...rest}\n ref={forwardedRef}\n data-testid=\"components-text-editor\"\n size=\"small\"\n />\n {decoration}\n </InputWithDecorations>\n );\n }\n\n if (icon) {\n return (\n <IconInput\n {...rest}\n ref={forwardedRef}\n icon={icon}\n data-testid=\"components-text-editor\"\n />\n );\n }\n return (\n <Input\n {...rest}\n ref={forwardedRef}\n data-testid=\"components-text-editor\"\n size=\"small\"\n />\n );\n }\n);\n"]}
@@ -4,5 +4,5 @@ import type { EditorProps } from "../Types.js";
4
4
  * Fallback editor that renders readonly value if no editor is found.
5
5
  * @internal
6
6
  */
7
- export declare function FallbackEditor({ value, size, id }: EditorProps): React.JSX.Element;
7
+ export declare function FallbackEditor({ value, size, id, metadata }: EditorProps): React.JSX.Element;
8
8
  //# sourceMappingURL=FallbackEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FallbackEditor.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/FallbackEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAa/C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,qBAE9D"}
1
+ {"version":3,"file":"FallbackEditor.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/FallbackEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAc/C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,WAAW,qBAKxE"}
@@ -4,14 +4,16 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import * as React from "react";
6
6
  import { Input } from "@itwin/itwinui-react";
7
- import { isBoolean, isDate, isEnum, isInstanceKey, isNumeric, isText, } from "../values/ValueUtilities.js";
7
+ import { isBoolean, isDate, isEnum, isInstanceKey, isNumeric, isText, MERGED_VALUE, } from "../values/ValueUtilities.js";
8
8
  /* v8 ignore start */
9
9
  /**
10
10
  * Fallback editor that renders readonly value if no editor is found.
11
11
  * @internal
12
12
  */
13
- export function FallbackEditor({ value, size, id }) {
14
- return React.createElement(Input, { id: id, readOnly: true, value: getTextValue(value), size: size });
13
+ export function FallbackEditor({ value, size, id, metadata }) {
14
+ const textValue = getTextValue(value);
15
+ const displayValue = textValue !== undefined ? textValue : metadata.isMerged ? MERGED_VALUE : "";
16
+ return React.createElement(Input, { id: id, readOnly: true, value: displayValue, size: size });
15
17
  }
16
18
  function getTextValue(value) {
17
19
  if (value === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"FallbackEditor.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/FallbackEditor.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG7C,OAAO,EACL,SAAS,EACT,MAAM,EACN,MAAM,EACN,aAAa,EACb,SAAS,EACT,MAAM,GACP,MAAM,6BAA6B,CAAC;AAErC,qBAAqB;AAErB;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAe;IAC7D,OAAO,oBAAC,KAAK,IAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,QAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;AAC5E,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,YAAY,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,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 { Input } from \"@itwin/itwinui-react\";\nimport type { EditorProps } from \"../Types.js\";\nimport type { Value } from \"../values/Values.js\";\nimport {\n isBoolean,\n isDate,\n isEnum,\n isInstanceKey,\n isNumeric,\n isText,\n} from \"../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/**\n * Fallback editor that renders readonly value if no editor is found.\n * @internal\n */\nexport function FallbackEditor({ value, size, id }: EditorProps) {\n return <Input id={id} readOnly value={getTextValue(value)} size={size} />;\n}\n\nfunction getTextValue(value?: Value) {\n if (value === undefined) {\n return value;\n }\n if (isBoolean(value)) {\n return value.value ? \"true\" : \"false\";\n }\n if (isDate(value)) {\n return value.value.toDateString();\n }\n if (isEnum(value)) {\n return value.choice;\n }\n if (isNumeric(value)) {\n return value.displayValue;\n }\n if (isText(value)) {\n return value.value;\n }\n if (isInstanceKey(value)) {\n return value.label;\n }\n return \"\";\n}\n\n/* v8 ignore stop */\n"]}
1
+ {"version":3,"file":"FallbackEditor.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/FallbackEditor.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG7C,OAAO,EACL,SAAS,EACT,MAAM,EACN,MAAM,EACN,aAAa,EACb,SAAS,EACT,MAAM,EACN,YAAY,GACb,MAAM,6BAA6B,CAAC;AAErC,qBAAqB;AAErB;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAe;IACvE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,YAAY,GAChB,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,OAAO,oBAAC,KAAK,IAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,QAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;AACrE,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,YAAY,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,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 { Input } from \"@itwin/itwinui-react\";\nimport type { EditorProps } from \"../Types.js\";\nimport type { Value } from \"../values/Values.js\";\nimport {\n isBoolean,\n isDate,\n isEnum,\n isInstanceKey,\n isNumeric,\n isText,\n MERGED_VALUE,\n} from \"../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/**\n * Fallback editor that renders readonly value if no editor is found.\n * @internal\n */\nexport function FallbackEditor({ value, size, id, metadata }: EditorProps) {\n const textValue = getTextValue(value);\n const displayValue =\n textValue !== undefined ? textValue : metadata.isMerged ? MERGED_VALUE : \"\";\n return <Input id={id} readOnly value={displayValue} size={size} />;\n}\n\nfunction getTextValue(value?: Value) {\n if (value === undefined) {\n return value;\n }\n if (isBoolean(value)) {\n return value.value ? \"true\" : \"false\";\n }\n if (isDate(value)) {\n return value.value.toDateString();\n }\n if (isEnum(value)) {\n return value.choice;\n }\n if (isNumeric(value)) {\n return value.displayValue;\n }\n if (isText(value)) {\n return value.value;\n }\n if (isInstanceKey(value)) {\n return value.label;\n }\n return \"\";\n}\n\n/* v8 ignore stop */\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NumericEditor.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/NumericEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,EAAE,GACH,EAAE,WAAW,CAAC,oBAAoB,EAAE,YAAY,CAAC,qBAsBjD"}
1
+ {"version":3,"file":"NumericEditor.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/NumericEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AASxD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,EAAE,GACH,EAAE,WAAW,CAAC,oBAAoB,EAAE,YAAY,CAAC,qBA4BjD"}
@@ -5,13 +5,17 @@
5
5
  import * as React from "react";
6
6
  import { Input } from "@itwin/itwinui-react";
7
7
  import { applyNumericConstraints, getNumericConstraints, } from "../ConstraintUtils.js";
8
+ import { MERGED_VALUE } from "../values/ValueUtilities.js";
8
9
  /* v8 ignore start */
9
10
  /**
10
11
  * Numeric value editor that renders `Input` components for changing value.
11
12
  * @internal
12
13
  */
13
14
  export function NumericEditor({ metadata, value, onChange, size, disabled, id, }) {
14
- const currentValue = getNumericValue(value);
15
+ const currentValue = getNumericValue(value, metadata.isMerged);
16
+ const handleFocus = (e) => {
17
+ e.target.select();
18
+ };
15
19
  return (React.createElement(Input, { id: id, value: currentValue.displayValue, onChange: (e) => {
16
20
  const parsedValue = parseFloat(e.target.value);
17
21
  onChange({
@@ -23,10 +27,12 @@ export function NumericEditor({ metadata, value, onChange, size, disabled, id, }
23
27
  }),
24
28
  displayValue: e.target.value,
25
29
  });
26
- }, size: size, disabled: disabled }));
30
+ }, onFocus: handleFocus, size: size, disabled: disabled }));
27
31
  }
28
- function getNumericValue(value) {
29
- return value ? value : { rawValue: undefined, displayValue: "" };
32
+ function getNumericValue(value, isMerged) {
33
+ return value
34
+ ? value
35
+ : { rawValue: undefined, displayValue: isMerged ? MERGED_VALUE : "" };
30
36
  }
31
37
  /* v8 ignore stop */
32
38
  //# sourceMappingURL=NumericEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumericEditor.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/NumericEditor.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI7C,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,qBAAqB;AAErB;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,EAAE,GAC8C;IAChD,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,CACL,oBAAC,KAAK,IACJ,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,YAAY,CAAC,YAAY,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YACd,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC;gBACP,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;oBACjC,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,uBAAuB,CAAC;wBACtB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,WAAW,CAAC;wBAC9C,KAAK,EAAE,WAAW;qBACnB,CAAC;gBACN,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;aAC7B,CAAC,CAAC;QACL,CAAC,EACD,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAA+B;IACtD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AACnE,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 { Input } from \"@itwin/itwinui-react\";\nimport type { EditorProps } from \"../Types.js\";\nimport type { NumericValueMetadata } from \"../values/Metadata.js\";\nimport type { NumericValue } from \"../values/Values.js\";\nimport {\n applyNumericConstraints,\n getNumericConstraints,\n} from \"../ConstraintUtils.js\";\n\n/* v8 ignore start */\n\n/**\n * Numeric value editor that renders `Input` components for changing value.\n * @internal\n */\nexport function NumericEditor({\n metadata,\n value,\n onChange,\n size,\n disabled,\n id,\n}: EditorProps<NumericValueMetadata, NumericValue>) {\n const currentValue = getNumericValue(value);\n return (\n <Input\n id={id}\n value={currentValue.displayValue}\n onChange={(e) => {\n const parsedValue = parseFloat(e.target.value);\n onChange({\n rawValue: Number.isNaN(parsedValue)\n ? undefined\n : applyNumericConstraints({\n ...getNumericConstraints(metadata.constraints),\n value: parsedValue,\n }),\n displayValue: e.target.value,\n });\n }}\n size={size}\n disabled={disabled}\n />\n );\n}\n\nfunction getNumericValue(value: NumericValue | undefined): NumericValue {\n return value ? value : { rawValue: undefined, displayValue: \"\" };\n}\n\n/* v8 ignore stop */\n"]}
1
+ {"version":3,"file":"NumericEditor.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/NumericEditor.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI7C,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,qBAAqB;AAErB;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,EAAE,GAC8C;IAChD,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE/D,MAAM,WAAW,GAAG,CAAC,CAAqC,EAAE,EAAE;QAC5D,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,KAAK,IACJ,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,YAAY,CAAC,YAAY,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YACd,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC;gBACP,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;oBACjC,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,uBAAuB,CAAC;wBACtB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,WAAW,CAAC;wBAC9C,KAAK,EAAE,WAAW;qBACnB,CAAC;gBACN,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;aAC7B,CAAC,CAAC;QACL,CAAC,EACD,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,KAA+B,EAC/B,QAAkB;IAElB,OAAO,KAAK;QACV,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1E,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 { Input } from \"@itwin/itwinui-react\";\nimport type { EditorProps } from \"../Types.js\";\nimport type { NumericValueMetadata } from \"../values/Metadata.js\";\nimport type { NumericValue } from \"../values/Values.js\";\nimport {\n applyNumericConstraints,\n getNumericConstraints,\n} from \"../ConstraintUtils.js\";\nimport { MERGED_VALUE } from \"../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/**\n * Numeric value editor that renders `Input` components for changing value.\n * @internal\n */\nexport function NumericEditor({\n metadata,\n value,\n onChange,\n size,\n disabled,\n id,\n}: EditorProps<NumericValueMetadata, NumericValue>) {\n const currentValue = getNumericValue(value, metadata.isMerged);\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n e.target.select();\n };\n\n return (\n <Input\n id={id}\n value={currentValue.displayValue}\n onChange={(e) => {\n const parsedValue = parseFloat(e.target.value);\n onChange({\n rawValue: Number.isNaN(parsedValue)\n ? undefined\n : applyNumericConstraints({\n ...getNumericConstraints(metadata.constraints),\n value: parsedValue,\n }),\n displayValue: e.target.value,\n });\n }}\n onFocus={handleFocus}\n size={size}\n disabled={disabled}\n />\n );\n}\n\nfunction getNumericValue(\n value: NumericValue | undefined,\n isMerged?: boolean\n): NumericValue {\n return value\n ? value\n : { rawValue: undefined, displayValue: isMerged ? MERGED_VALUE : \"\" };\n}\n\n/* v8 ignore stop */\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/TextEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKrD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,EAAE,GACH,EAAE,WAAW,CAAC,iBAAiB,EAAE,SAAS,CAAC,qBAe3C"}
1
+ {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/TextEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAMrD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,EAAE,GACH,EAAE,WAAW,CAAC,iBAAiB,EAAE,SAAS,CAAC,qBA4B3C"}
@@ -5,15 +5,26 @@
5
5
  import * as React from "react";
6
6
  import { Input } from "@itwin/itwinui-react";
7
7
  import { getStringConstraints } from "../ConstraintUtils.js";
8
+ import { MERGED_VALUE } from "../values/ValueUtilities.js";
8
9
  /* v8 ignore start */
9
10
  /**
10
11
  * Text value editor that renders `Input` component for changing value.
11
12
  * @internal
12
13
  */
13
14
  export function TextEditor({ metadata, value, onChange, size, disabled, id, }) {
14
- const currentValue = value ? value : { value: "" };
15
15
  const { maxLength, minLength } = getStringConstraints(metadata.constraints);
16
- return (React.createElement(Input, { id: id, value: currentValue.value, onChange: (e) => onChange({ value: e.target.value }), maxLength: maxLength, minLength: minLength, size: size, disabled: disabled }));
16
+ const displayValue = value
17
+ ? value.value
18
+ : metadata.isMerged
19
+ ? MERGED_VALUE
20
+ : "";
21
+ const handleChange = (e) => {
22
+ onChange({ value: e.target.value });
23
+ };
24
+ const handleFocus = (e) => {
25
+ e.target.select();
26
+ };
27
+ return (React.createElement(Input, { id: id, value: displayValue, onChange: handleChange, onFocus: handleFocus, maxLength: maxLength, minLength: minLength, size: size, disabled: disabled }));
17
28
  }
18
29
  /* v8 ignore stop */
19
30
  //# sourceMappingURL=TextEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/TextEditor.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAqB;AAErB;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,EAAE,GACwC;IAC1C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE5E,OAAO,CACL,oBAAC,KAAK,IACJ,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,YAAY,CAAC,KAAK,EACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EACpD,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,GAClB,CACH,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 { Input } from \"@itwin/itwinui-react\";\nimport type { EditorProps } from \"../Types.js\";\nimport type { TextValueMetadata } from \"../values/Metadata.js\";\nimport type { TextValue } from \"../values/Values.js\";\nimport { getStringConstraints } from \"../ConstraintUtils.js\";\n\n/* v8 ignore start */\n\n/**\n * Text value editor that renders `Input` component for changing value.\n * @internal\n */\nexport function TextEditor({\n metadata,\n value,\n onChange,\n size,\n disabled,\n id,\n}: EditorProps<TextValueMetadata, TextValue>) {\n const currentValue = value ? value : { value: \"\" };\n const { maxLength, minLength } = getStringConstraints(metadata.constraints);\n\n return (\n <Input\n id={id}\n value={currentValue.value}\n onChange={(e) => onChange({ value: e.target.value })}\n maxLength={maxLength}\n minLength={minLength}\n size={size}\n disabled={disabled}\n />\n );\n}\n\n/* v8 ignore stop */\n"]}
1
+ {"version":3,"file":"TextEditor.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/editors/TextEditor.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,qBAAqB;AAErB;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,EAAE,GACwC;IAC1C,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,KAAK;QACxB,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,QAAQ,CAAC,QAAQ;YACnB,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,YAAY,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC9D,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,CAAqC,EAAE,EAAE;QAC5D,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,KAAK,IACJ,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,GAClB,CACH,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 { Input } from \"@itwin/itwinui-react\";\nimport type { EditorProps } from \"../Types.js\";\nimport type { TextValueMetadata } from \"../values/Metadata.js\";\nimport type { TextValue } from \"../values/Values.js\";\nimport { getStringConstraints } from \"../ConstraintUtils.js\";\nimport { MERGED_VALUE } from \"../values/ValueUtilities.js\";\n\n/* v8 ignore start */\n\n/**\n * Text value editor that renders `Input` component for changing value.\n * @internal\n */\nexport function TextEditor({\n metadata,\n value,\n onChange,\n size,\n disabled,\n id,\n}: EditorProps<TextValueMetadata, TextValue>) {\n const { maxLength, minLength } = getStringConstraints(metadata.constraints);\n const displayValue = value\n ? value.value\n : metadata.isMerged\n ? MERGED_VALUE\n : \"\";\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange({ value: e.target.value });\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n e.target.select();\n };\n\n return (\n <Input\n id={id}\n value={displayValue}\n onChange={handleChange}\n onFocus={handleFocus}\n maxLength={maxLength}\n minLength={minLength}\n size={size}\n disabled={disabled}\n />\n );\n}\n\n/* v8 ignore stop */\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"EditorInterop.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/interop/EditorInterop.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAUxE,OAAO,KAAK,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAQlE,OAAO,KAAK,EACV,6BAA6B,EAC7B,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,yBAAiB,aAAa,CAAC;IAC7B,6EAA6E;IAC7E,SAAgB,mBAAmB,CACjC,cAAc,EAAE,6BAA6B,GAC5C;QACD,QAAQ,EAAE,eAAe,CAAC,4BAA4B,CAAC,GAAG,SAAS,CAAC;QACpE,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC;KACnC,CAoGA;IAED,oEAAoE;IACpE,SAAgB,uBAAuB,CACrC,QAAQ,EAAE,cAAc,GACvB,cAAc,CAuChB;CACF"}
1
+ {"version":3,"file":"EditorInterop.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/interop/EditorInterop.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAUxE,OAAO,KAAK,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAQlE,OAAO,KAAK,EACV,6BAA6B,EAC7B,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,yBAAiB,aAAa,CAAC;IAC7B,6EAA6E;IAC7E,SAAgB,mBAAmB,CACjC,cAAc,EAAE,6BAA6B,GAC5C;QACD,QAAQ,EAAE,eAAe,CAAC,4BAA4B,CAAC,GAAG,SAAS,CAAC;QACpE,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC;KACnC,CA0HA;IAED,oEAAoE;IACpE,SAAgB,uBAAuB,CACrC,QAAQ,EAAE,cAAc,GACvB,cAAc,CAuChB;CACF"}
@@ -13,6 +13,7 @@ export var EditorInterop;
13
13
  /** Attempts to convert `PropertyRecord` into `ValueMetadata` and `Value`. */
14
14
  function getMetadataAndValue(propertyRecord) {
15
15
  const baseMetadata = {
16
+ isMerged: propertyRecord.isMerged,
16
17
  preferredEditor: propertyRecord.property.editor?.name,
17
18
  params: propertyRecord.property.editor?.params,
18
19
  extendedData: propertyRecord.extendedData,
@@ -31,9 +32,14 @@ export var EditorInterop;
31
32
  ...baseMetadata,
32
33
  type: "string",
33
34
  },
34
- value: {
35
- value: primitiveValue.value ?? "",
36
- },
35
+ value: primitiveValue.value === undefined &&
36
+ primitiveValue.displayValue === undefined
37
+ ? undefined
38
+ : {
39
+ value: primitiveValue.value ??
40
+ primitiveValue.displayValue ??
41
+ "",
42
+ },
37
43
  };
38
44
  case "dateTime":
39
45
  case "shortdate":
@@ -44,9 +50,11 @@ export var EditorInterop;
44
50
  ? "date"
45
51
  : "dateTime",
46
52
  },
47
- value: {
48
- value: primitiveValue.value ?? new Date(),
49
- },
53
+ value: primitiveValue.value !== undefined
54
+ ? {
55
+ value: primitiveValue.value,
56
+ }
57
+ : undefined,
50
58
  };
51
59
  case "boolean":
52
60
  case "bool":
@@ -55,9 +63,11 @@ export var EditorInterop;
55
63
  ...baseMetadata,
56
64
  type: "bool",
57
65
  },
58
- value: {
59
- value: primitiveValue.value ?? false,
60
- },
66
+ value: primitiveValue.value !== undefined
67
+ ? {
68
+ value: primitiveValue.value,
69
+ }
70
+ : undefined,
61
71
  };
62
72
  case "float":
63
73
  case "double":
@@ -69,15 +79,15 @@ export var EditorInterop;
69
79
  ...baseMetadata,
70
80
  type: "number",
71
81
  },
72
- value: {
73
- rawValue: primitiveValue.value,
74
- displayValue: primitiveValue.displayValue
75
- ? primitiveValue.displayValue
76
- : primitiveValue.value !== undefined
77
- ? `${primitiveValue.value}`
78
- : "",
79
- roundingError: primitiveValue.roundingError,
80
- },
82
+ value: primitiveValue.value === undefined &&
83
+ primitiveValue.displayValue === undefined
84
+ ? undefined
85
+ : {
86
+ rawValue: primitiveValue.value,
87
+ displayValue: primitiveValue.displayValue ??
88
+ `${primitiveValue.value ?? ""}`,
89
+ roundingError: primitiveValue.roundingError,
90
+ },
81
91
  };
82
92
  case "enum":
83
93
  return {
@@ -85,9 +95,11 @@ export var EditorInterop;
85
95
  ...baseMetadata,
86
96
  type: "enum",
87
97
  },
88
- value: {
89
- choice: primitiveValue.value,
90
- },
98
+ value: primitiveValue.value !== undefined
99
+ ? {
100
+ choice: primitiveValue.value,
101
+ }
102
+ : undefined,
91
103
  };
92
104
  case "navigation":
93
105
  return {
@@ -95,10 +107,12 @@ export var EditorInterop;
95
107
  ...baseMetadata,
96
108
  type: "instanceKey",
97
109
  },
98
- value: {
99
- key: primitiveValue.value,
100
- label: primitiveValue.displayValue ?? "",
101
- },
110
+ value: primitiveValue.value !== undefined
111
+ ? {
112
+ key: primitiveValue.value,
113
+ label: primitiveValue.displayValue ?? "",
114
+ }
115
+ : undefined,
102
116
  };
103
117
  }
104
118
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"EditorInterop.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/interop/EditorInterop.ts"],"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 type { Primitives, PrimitiveValue } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport type {\n BooleanValue,\n DateValue,\n EnumValue,\n InstanceKeyValue,\n NumericValue,\n TextValue,\n} from \"../values/Values.js\";\nimport type { Value as NewEditorValue } from \"../values/Values.js\";\nimport type { PropertyRecordEditorMetadata } from \"./Metadata.js\";\nimport {\n isBoolean,\n isDate,\n isEnum,\n isNumeric,\n isText,\n} from \"../values/ValueUtilities.js\";\nimport type {\n PropertyRecordWithConstraints,\n WithConstraints,\n} from \"../ConstraintUtils.js\";\n\n/**\n * Interop utilities for converting between old and new editor values.\n * @internal\n */\nexport namespace EditorInterop {\n /** Attempts to convert `PropertyRecord` into `ValueMetadata` and `Value`. */\n export function getMetadataAndValue(\n propertyRecord: PropertyRecordWithConstraints\n ): {\n metadata: WithConstraints<PropertyRecordEditorMetadata> | undefined;\n value: NewEditorValue | undefined;\n } {\n const baseMetadata: Omit<\n WithConstraints<PropertyRecordEditorMetadata>,\n \"type\"\n > = {\n preferredEditor: propertyRecord.property.editor?.name,\n params: propertyRecord.property.editor?.params,\n extendedData: propertyRecord.extendedData,\n enum: propertyRecord.property.enum,\n typename: propertyRecord.property.typename,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n quantityType: propertyRecord.property.quantityType,\n constraints: propertyRecord.property.constraints,\n };\n\n const primitiveValue = propertyRecord.value as PrimitiveValue;\n switch (propertyRecord.property.typename) {\n case \"text\":\n case \"string\":\n return {\n metadata: {\n ...baseMetadata,\n type: \"string\",\n },\n value: {\n value: (primitiveValue.value as string) ?? \"\",\n } satisfies TextValue,\n };\n case \"dateTime\":\n case \"shortdate\":\n return {\n metadata: {\n ...baseMetadata,\n type:\n propertyRecord.property.typename === \"shortdate\"\n ? \"date\"\n : \"dateTime\",\n },\n value: {\n value: (primitiveValue.value as Date) ?? new Date(),\n } satisfies DateValue,\n };\n case \"boolean\":\n case \"bool\":\n return {\n metadata: {\n ...baseMetadata,\n type: \"bool\",\n },\n value: {\n value: (primitiveValue.value as boolean) ?? false,\n } satisfies BooleanValue,\n };\n case \"float\":\n case \"double\":\n case \"int\":\n case \"integer\":\n case \"number\":\n return {\n metadata: {\n ...baseMetadata,\n type: \"number\",\n },\n value: {\n rawValue: primitiveValue.value as number,\n displayValue: primitiveValue.displayValue\n ? primitiveValue.displayValue\n : primitiveValue.value !== undefined\n ? `${primitiveValue.value as number}`\n : \"\",\n roundingError: primitiveValue.roundingError,\n } satisfies NumericValue,\n };\n case \"enum\":\n return {\n metadata: {\n ...baseMetadata,\n type: \"enum\",\n },\n value: {\n choice: primitiveValue.value as number | string,\n } satisfies EnumValue,\n };\n case \"navigation\":\n return {\n metadata: {\n ...baseMetadata,\n type: \"instanceKey\",\n },\n value: {\n key: primitiveValue.value as Primitives.InstanceKey,\n label: primitiveValue.displayValue ?? \"\",\n } satisfies InstanceKeyValue,\n };\n }\n\n return {\n metadata: undefined,\n value: undefined,\n };\n }\n\n /** Converts new editors system `Value` into old `PrimitiveValue` */\n export function convertToPrimitiveValue(\n newValue: NewEditorValue\n ): PrimitiveValue {\n if (isText(newValue)) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: newValue.value,\n displayValue: newValue.value,\n };\n }\n if (isNumeric(newValue)) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: newValue.rawValue,\n displayValue: newValue.displayValue,\n roundingError: newValue.roundingError,\n };\n }\n if (isBoolean(newValue)) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: newValue.value,\n displayValue: newValue.value.toString(),\n };\n }\n if (isDate(newValue)) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: newValue.value,\n displayValue: newValue.value.toString(),\n };\n }\n\n if (isEnum(newValue)) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: newValue.choice,\n };\n }\n\n throw new Error(\"Unsupported value type\");\n }\n}\n"]}
1
+ {"version":3,"file":"EditorInterop.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/interop/EditorInterop.ts"],"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 type { Primitives, PrimitiveValue } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport type {\n BooleanValue,\n DateValue,\n EnumValue,\n InstanceKeyValue,\n NumericValue,\n TextValue,\n} from \"../values/Values.js\";\nimport type { Value as NewEditorValue } from \"../values/Values.js\";\nimport type { PropertyRecordEditorMetadata } from \"./Metadata.js\";\nimport {\n isBoolean,\n isDate,\n isEnum,\n isNumeric,\n isText,\n} from \"../values/ValueUtilities.js\";\nimport type {\n PropertyRecordWithConstraints,\n WithConstraints,\n} from \"../ConstraintUtils.js\";\n\n/**\n * Interop utilities for converting between old and new editor values.\n * @internal\n */\nexport namespace EditorInterop {\n /** Attempts to convert `PropertyRecord` into `ValueMetadata` and `Value`. */\n export function getMetadataAndValue(\n propertyRecord: PropertyRecordWithConstraints\n ): {\n metadata: WithConstraints<PropertyRecordEditorMetadata> | undefined;\n value: NewEditorValue | undefined;\n } {\n const baseMetadata: Omit<\n WithConstraints<PropertyRecordEditorMetadata>,\n \"type\"\n > = {\n isMerged: propertyRecord.isMerged,\n preferredEditor: propertyRecord.property.editor?.name,\n params: propertyRecord.property.editor?.params,\n extendedData: propertyRecord.extendedData,\n enum: propertyRecord.property.enum,\n typename: propertyRecord.property.typename,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n quantityType: propertyRecord.property.quantityType,\n constraints: propertyRecord.property.constraints,\n };\n\n const primitiveValue = propertyRecord.value as PrimitiveValue;\n switch (propertyRecord.property.typename) {\n case \"text\":\n case \"string\":\n return {\n metadata: {\n ...baseMetadata,\n type: \"string\",\n },\n value:\n primitiveValue.value === undefined &&\n primitiveValue.displayValue === undefined\n ? undefined\n : ({\n value:\n (primitiveValue.value as string) ??\n primitiveValue.displayValue ??\n \"\",\n } satisfies TextValue),\n };\n case \"dateTime\":\n case \"shortdate\":\n return {\n metadata: {\n ...baseMetadata,\n type:\n propertyRecord.property.typename === \"shortdate\"\n ? \"date\"\n : \"dateTime\",\n },\n value:\n primitiveValue.value !== undefined\n ? ({\n value: primitiveValue.value as Date,\n } satisfies DateValue)\n : undefined,\n };\n case \"boolean\":\n case \"bool\":\n return {\n metadata: {\n ...baseMetadata,\n type: \"bool\",\n },\n value:\n primitiveValue.value !== undefined\n ? ({\n value: primitiveValue.value as boolean,\n } satisfies BooleanValue)\n : undefined,\n };\n case \"float\":\n case \"double\":\n case \"int\":\n case \"integer\":\n case \"number\":\n return {\n metadata: {\n ...baseMetadata,\n type: \"number\",\n },\n value:\n primitiveValue.value === undefined &&\n primitiveValue.displayValue === undefined\n ? undefined\n : ({\n rawValue: primitiveValue.value as number,\n displayValue:\n primitiveValue.displayValue ??\n `${(primitiveValue.value as number) ?? \"\"}`,\n roundingError: primitiveValue.roundingError,\n } satisfies NumericValue),\n };\n case \"enum\":\n return {\n metadata: {\n ...baseMetadata,\n type: \"enum\",\n },\n value:\n primitiveValue.value !== undefined\n ? ({\n choice: primitiveValue.value as number | string,\n } satisfies EnumValue)\n : undefined,\n };\n case \"navigation\":\n return {\n metadata: {\n ...baseMetadata,\n type: \"instanceKey\",\n },\n value:\n primitiveValue.value !== undefined\n ? ({\n key: primitiveValue.value as Primitives.InstanceKey,\n label: primitiveValue.displayValue ?? \"\",\n } satisfies InstanceKeyValue)\n : undefined,\n };\n }\n\n return {\n metadata: undefined,\n value: undefined,\n };\n }\n\n /** Converts new editors system `Value` into old `PrimitiveValue` */\n export function convertToPrimitiveValue(\n newValue: NewEditorValue\n ): PrimitiveValue {\n if (isText(newValue)) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: newValue.value,\n displayValue: newValue.value,\n };\n }\n if (isNumeric(newValue)) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: newValue.rawValue,\n displayValue: newValue.displayValue,\n roundingError: newValue.roundingError,\n };\n }\n if (isBoolean(newValue)) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: newValue.value,\n displayValue: newValue.value.toString(),\n };\n }\n if (isDate(newValue)) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: newValue.value,\n displayValue: newValue.value.toString(),\n };\n }\n\n if (isEnum(newValue)) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: newValue.choice,\n };\n }\n\n throw new Error(\"Unsupported value type\");\n }\n}\n"]}
@@ -19,7 +19,7 @@ export const PropertyRecordEditor = ({ propertyRecord, onCommit, onCancel, onCli
19
19
  // eslint-disable-next-line @typescript-eslint/no-deprecated
20
20
  editorSystem, }) => {
21
21
  const { metadata, value } = EditorInterop.getMetadataAndValue(propertyRecord);
22
- if (editorSystem === "new" && metadata && value) {
22
+ if (editorSystem === "new" && metadata) {
23
23
  return (React.createElement(CommittingEditor, { metadata: metadata, initialValue: value, onCommit: (newValue) => {
24
24
  onCommit({
25
25
  propertyRecord,
@@ -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;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"]}
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,EAAE,CAAC;QACvC,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) {\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"]}
@@ -14,6 +14,7 @@ export interface ValueMetadata {
14
14
  type: ValueType;
15
15
  preferredEditor?: string;
16
16
  isNullable?: boolean;
17
+ isMerged?: boolean;
17
18
  }
18
19
  /**
19
20
  * Type definition for available enum choice that can be supplied for editing enum values.
@@ -1 +1 @@
1
- {"version":3,"file":"Metadata.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/values/Metadata.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GACN,aAAa,GACb,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE"}
1
+ {"version":3,"file":"Metadata.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/values/Metadata.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GACN,aAAa,GACb,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE"}
@@ -1 +1 @@
1
- {"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/values/Metadata.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG","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\n/**\n * Value types supported by editor system.\n * @beta\n */\nexport type ValueType =\n | \"string\"\n | \"number\"\n | \"bool\"\n | \"date\"\n | \"dateTime\"\n | \"enum\"\n | \"instanceKey\"\n | (string & {});\n\n/**\n * Additional metadata that is used along side value.\n * @beta\n */\nexport interface ValueMetadata {\n type: ValueType;\n preferredEditor?: string;\n isNullable?: boolean;\n}\n\n/**\n * Type definition for available enum choice that can be supplied for editing enum values.\n * @beta\n */\nexport interface EnumChoice {\n value: number | string;\n label: string;\n}\n\n/**\n * Additional metadata that is used along side enum value to determine applicable editor.\n * @beta\n */\nexport interface EnumValueMetadata extends ValueMetadata {\n type: \"enum\";\n choices: EnumChoice[];\n isStrict: boolean;\n}\n\n/**\n * Additional metadata that is used along side numeric value to determine applicable editor and constraints.\n * @beta\n */\nexport interface NumericValueMetadata extends ValueMetadata {\n type: \"number\";\n constraints?: { minimumValue?: number; maximumValue?: number };\n}\n\n/**\n * Additional metadata that is used along side text value to determine applicable editor and constraints.\n * @internal\n */\nexport interface TextValueMetadata extends ValueMetadata {\n type: \"string\";\n constraints?: { minimumLength?: number; maximumLength?: number };\n}\n"]}
1
+ {"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../../../src/components-react/new-editors/values/Metadata.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG","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\n/**\n * Value types supported by editor system.\n * @beta\n */\nexport type ValueType =\n | \"string\"\n | \"number\"\n | \"bool\"\n | \"date\"\n | \"dateTime\"\n | \"enum\"\n | \"instanceKey\"\n | (string & {});\n\n/**\n * Additional metadata that is used along side value.\n * @beta\n */\nexport interface ValueMetadata {\n type: ValueType;\n preferredEditor?: string;\n isNullable?: boolean;\n isMerged?: boolean;\n}\n\n/**\n * Type definition for available enum choice that can be supplied for editing enum values.\n * @beta\n */\nexport interface EnumChoice {\n value: number | string;\n label: string;\n}\n\n/**\n * Additional metadata that is used along side enum value to determine applicable editor.\n * @beta\n */\nexport interface EnumValueMetadata extends ValueMetadata {\n type: \"enum\";\n choices: EnumChoice[];\n isStrict: boolean;\n}\n\n/**\n * Additional metadata that is used along side numeric value to determine applicable editor and constraints.\n * @beta\n */\nexport interface NumericValueMetadata extends ValueMetadata {\n type: \"number\";\n constraints?: { minimumValue?: number; maximumValue?: number };\n}\n\n/**\n * Additional metadata that is used along side text value to determine applicable editor and constraints.\n * @internal\n */\nexport interface TextValueMetadata extends ValueMetadata {\n type: \"string\";\n constraints?: { minimumLength?: number; maximumLength?: number };\n}\n"]}
@@ -2,6 +2,11 @@
2
2
  * @module PropertyEditors
3
3
  */
4
4
  import type { BooleanValue, DateValue, EnumValue, InstanceKeyValue, NumericValue, TextValue, Value } from "./Values.js";
5
+ /**
6
+ * Display value for merged properties. This value is used when multiple properties are selected and their values are different.
7
+ * @beta
8
+ */
9
+ export declare const MERGED_VALUE = "--";
5
10
  /**
6
11
  * Type guard for text value.
7
12
  * @beta
@@ -1 +1 @@
1
- {"version":3,"file":"ValueUtilities.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/values/ValueUtilities.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,KAAK,EACN,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,SAAS,CAEvD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,YAAY,CAE7D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,YAAY,CAE7D;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,SAAS,CAEvD;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,SAAS,CAEvD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,gBAAgB,CAErE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,KAAK,GAAG,SAAS,EACtB,GAAG,EAAE,KAAK,GAAG,SAAS,GACrB,OAAO,CA8BT"}
1
+ {"version":3,"file":"ValueUtilities.d.ts","sourceRoot":"","sources":["../../../../src/components-react/new-editors/values/ValueUtilities.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,KAAK,EACN,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,SAAS,CAEvD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,YAAY,CAE7D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,YAAY,CAE7D;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,SAAS,CAEvD;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,SAAS,CAEvD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,gBAAgB,CAErE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,KAAK,GAAG,SAAS,EACtB,GAAG,EAAE,KAAK,GAAG,SAAS,GACrB,OAAO,CA8BT"}
@@ -5,6 +5,11 @@
5
5
  /** @packageDocumentation
6
6
  * @module PropertyEditors
7
7
  */
8
+ /**
9
+ * Display value for merged properties. This value is used when multiple properties are selected and their values are different.
10
+ * @beta
11
+ */
12
+ export const MERGED_VALUE = "--";
8
13
  /**
9
14
  * Type guard for text value.
10
15
  * @beta