@itwin/components-react 5.3.1 → 5.5.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.
- package/CHANGELOG.md +356 -13
- package/lib/components-react/UiComponents.js +1 -1
- package/lib/components-react/UiComponents.js.map +1 -1
- package/lib/components-react/common/DisposePolyfill.d.ts +5 -0
- package/lib/components-react/common/DisposePolyfill.d.ts.map +1 -0
- package/lib/components-react/common/DisposePolyfill.js +14 -0
- package/lib/components-react/common/DisposePolyfill.js.map +1 -0
- package/lib/components-react/common/ImageRenderer.js +1 -1
- package/lib/components-react/common/ImageRenderer.js.map +1 -1
- package/lib/components-react/converters/PointTypeConverter.d.ts.map +1 -1
- package/lib/components-react/converters/PointTypeConverter.js +1 -0
- package/lib/components-react/converters/PointTypeConverter.js.map +1 -1
- package/lib/components-react/editors/CustomNumberEditor.d.ts +1 -1
- package/lib/components-react/editors/CustomNumberEditor.d.ts.map +1 -1
- package/lib/components-react/editors/CustomNumberEditor.js +5 -0
- package/lib/components-react/editors/CustomNumberEditor.js.map +1 -1
- package/lib/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
- package/lib/components-react/filter-builder/FilterBuilderRule.js +2 -5
- package/lib/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
- package/lib/components-react/filter-builder/FilterBuilderRuleValue.d.ts +6 -0
- package/lib/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
- package/lib/components-react/filter-builder/FilterBuilderRuleValue.js +3 -2
- package/lib/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
- package/lib/components-react/new-editors/EditorRenderer.d.ts +19 -0
- package/lib/components-react/new-editors/EditorRenderer.d.ts.map +1 -0
- package/lib/components-react/new-editors/EditorRenderer.js +25 -0
- package/lib/components-react/new-editors/EditorRenderer.js.map +1 -0
- package/lib/components-react/new-editors/Types.d.ts +46 -0
- package/lib/components-react/new-editors/Types.d.ts.map +1 -0
- package/lib/components-react/new-editors/Types.js +20 -0
- package/lib/components-react/new-editors/Types.js.map +1 -0
- package/lib/components-react/new-editors/UseCommittableValue.d.ts +51 -0
- package/lib/components-react/new-editors/UseCommittableValue.d.ts.map +1 -0
- package/lib/components-react/new-editors/UseCommittableValue.js +85 -0
- package/lib/components-react/new-editors/UseCommittableValue.js.map +1 -0
- package/lib/components-react/new-editors/editors/BooleanEditor.d.ts +10 -0
- package/lib/components-react/new-editors/editors/BooleanEditor.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors/BooleanEditor.js +22 -0
- package/lib/components-react/new-editors/editors/BooleanEditor.js.map +1 -0
- package/lib/components-react/new-editors/editors/DateEditor.d.ts +10 -0
- package/lib/components-react/new-editors/editors/DateEditor.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors/DateEditor.js +18 -0
- package/lib/components-react/new-editors/editors/DateEditor.js.map +1 -0
- package/lib/components-react/new-editors/editors/DateInput.d.ts +15 -0
- package/lib/components-react/new-editors/editors/DateInput.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors/DateInput.js +23 -0
- package/lib/components-react/new-editors/editors/DateInput.js.map +1 -0
- package/lib/components-react/new-editors/editors/DateTimeEditor.d.ts +10 -0
- package/lib/components-react/new-editors/editors/DateTimeEditor.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors/DateTimeEditor.js +18 -0
- package/lib/components-react/new-editors/editors/DateTimeEditor.js.map +1 -0
- package/lib/components-react/new-editors/editors/EnumEditor.d.ts +10 -0
- package/lib/components-react/new-editors/editors/EnumEditor.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors/EnumEditor.js +30 -0
- package/lib/components-react/new-editors/editors/EnumEditor.js.map +1 -0
- package/lib/components-react/new-editors/editors/FallbackEditor.d.ts +8 -0
- package/lib/components-react/new-editors/editors/FallbackEditor.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors/FallbackEditor.js +41 -0
- package/lib/components-react/new-editors/editors/FallbackEditor.js.map +1 -0
- package/lib/components-react/new-editors/editors/FormattedNumericInput.d.ts +24 -0
- package/lib/components-react/new-editors/editors/FormattedNumericInput.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors/FormattedNumericInput.js +77 -0
- package/lib/components-react/new-editors/editors/FormattedNumericInput.js.map +1 -0
- package/lib/components-react/new-editors/editors/NumericEditor.d.ts +10 -0
- package/lib/components-react/new-editors/editors/NumericEditor.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors/NumericEditor.js +28 -0
- package/lib/components-react/new-editors/editors/NumericEditor.js.map +1 -0
- package/lib/components-react/new-editors/editors/TextEditor.d.ts +10 -0
- package/lib/components-react/new-editors/editors/TextEditor.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors/TextEditor.js +17 -0
- package/lib/components-react/new-editors/editors/TextEditor.js.map +1 -0
- package/lib/components-react/new-editors/editors/ToggleEditor.d.ts +10 -0
- package/lib/components-react/new-editors/editors/ToggleEditor.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors/ToggleEditor.js +22 -0
- package/lib/components-react/new-editors/editors/ToggleEditor.js.map +1 -0
- package/lib/components-react/new-editors/editors-registry/DefaultEditors.d.ts +50 -0
- package/lib/components-react/new-editors/editors-registry/DefaultEditors.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors-registry/DefaultEditors.js +117 -0
- package/lib/components-react/new-editors/editors-registry/DefaultEditors.js.map +1 -0
- package/lib/components-react/new-editors/editors-registry/EditorsRegistryContext.d.ts +12 -0
- package/lib/components-react/new-editors/editors-registry/EditorsRegistryContext.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors-registry/EditorsRegistryContext.js +14 -0
- package/lib/components-react/new-editors/editors-registry/EditorsRegistryContext.js.map +1 -0
- package/lib/components-react/new-editors/editors-registry/EditorsRegistryProvider.d.ts +15 -0
- package/lib/components-react/new-editors/editors-registry/EditorsRegistryProvider.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors-registry/EditorsRegistryProvider.js +25 -0
- package/lib/components-react/new-editors/editors-registry/EditorsRegistryProvider.js.map +1 -0
- package/lib/components-react/new-editors/editors-registry/UseEditor.d.ts +16 -0
- package/lib/components-react/new-editors/editors-registry/UseEditor.d.ts.map +1 -0
- package/lib/components-react/new-editors/editors-registry/UseEditor.js +36 -0
- package/lib/components-react/new-editors/editors-registry/UseEditor.js.map +1 -0
- package/lib/components-react/new-editors/interop/EditorInterop.d.ts +17 -0
- package/lib/components-react/new-editors/interop/EditorInterop.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/EditorInterop.js +146 -0
- package/lib/components-react/new-editors/interop/EditorInterop.js.map +1 -0
- package/lib/components-react/new-editors/interop/IconsRegistry.d.ts +6 -0
- package/lib/components-react/new-editors/interop/IconsRegistry.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/IconsRegistry.js +41 -0
- package/lib/components-react/new-editors/interop/IconsRegistry.js.map +1 -0
- package/lib/components-react/new-editors/interop/Metadata.d.ts +21 -0
- package/lib/components-react/new-editors/interop/Metadata.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/Metadata.js +13 -0
- package/lib/components-react/new-editors/interop/Metadata.js.map +1 -0
- package/lib/components-react/new-editors/interop/PropertyRecordEditor.d.ts +22 -0
- package/lib/components-react/new-editors/interop/PropertyRecordEditor.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/PropertyRecordEditor.js +41 -0
- package/lib/components-react/new-editors/interop/PropertyRecordEditor.js.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/Color.d.ts +7 -0
- package/lib/components-react/new-editors/interop/old-editors/Color.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/Color.js +48 -0
- package/lib/components-react/new-editors/interop/old-editors/Color.js.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/CustomNumber.d.ts +3 -0
- package/lib/components-react/new-editors/interop/old-editors/CustomNumber.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/CustomNumber.js +59 -0
- package/lib/components-react/new-editors/interop/old-editors/CustomNumber.js.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/Enum.d.ts +4 -0
- package/lib/components-react/new-editors/interop/old-editors/Enum.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/Enum.js +23 -0
- package/lib/components-react/new-editors/interop/old-editors/Enum.js.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/EnumButtonGroup.d.ts +4 -0
- package/lib/components-react/new-editors/interop/old-editors/EnumButtonGroup.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/EnumButtonGroup.js +50 -0
- package/lib/components-react/new-editors/interop/old-editors/EnumButtonGroup.js.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/NumericInput.d.ts +4 -0
- package/lib/components-react/new-editors/interop/old-editors/NumericInput.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/NumericInput.js +86 -0
- package/lib/components-react/new-editors/interop/old-editors/NumericInput.js.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/Slider.d.ts +3 -0
- package/lib/components-react/new-editors/interop/old-editors/Slider.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/Slider.js +66 -0
- package/lib/components-react/new-editors/interop/old-editors/Slider.js.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/TextArea.d.ts +3 -0
- package/lib/components-react/new-editors/interop/old-editors/TextArea.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/TextArea.js +33 -0
- package/lib/components-react/new-editors/interop/old-editors/TextArea.js.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/UseEditorParams.d.ts +31 -0
- package/lib/components-react/new-editors/interop/old-editors/UseEditorParams.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/UseEditorParams.js +52 -0
- package/lib/components-react/new-editors/interop/old-editors/UseEditorParams.js.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/UseEnumMetadata.d.ts +8 -0
- package/lib/components-react/new-editors/interop/old-editors/UseEnumMetadata.d.ts.map +1 -0
- package/lib/components-react/new-editors/interop/old-editors/UseEnumMetadata.js +41 -0
- package/lib/components-react/new-editors/interop/old-editors/UseEnumMetadata.js.map +1 -0
- package/lib/components-react/new-editors/values/Metadata.d.ts +35 -0
- package/lib/components-react/new-editors/values/Metadata.d.ts.map +1 -0
- package/lib/components-react/new-editors/values/Metadata.js +9 -0
- package/lib/components-react/new-editors/values/Metadata.js.map +1 -0
- package/lib/components-react/new-editors/values/ValueUtilities.d.ts +40 -0
- package/lib/components-react/new-editors/values/ValueUtilities.d.ts.map +1 -0
- package/lib/components-react/new-editors/values/ValueUtilities.js +84 -0
- package/lib/components-react/new-editors/values/ValueUtilities.js.map +1 -0
- package/lib/components-react/new-editors/values/Values.d.ts +58 -0
- package/lib/components-react/new-editors/values/Values.d.ts.map +1 -0
- package/lib/components-react/new-editors/values/Values.js +9 -0
- package/lib/components-react/new-editors/values/Values.js.map +1 -0
- package/lib/components-react/properties/IconNodeEditorParam.d.ts +16 -0
- package/lib/components-react/properties/IconNodeEditorParam.d.ts.map +1 -0
- package/lib/components-react/properties/IconNodeEditorParam.js +20 -0
- package/lib/components-react/properties/IconNodeEditorParam.js.map +1 -0
- package/lib/components-react/properties/renderers/PropertyGridColumns.d.ts.map +1 -1
- package/lib/components-react/properties/renderers/PropertyGridColumns.js +1 -1
- package/lib/components-react/properties/renderers/PropertyGridColumns.js.map +1 -1
- package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +8 -1
- package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts.map +1 -1
- package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.js +2 -1
- package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
- package/lib/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts +6 -0
- package/lib/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts.map +1 -1
- package/lib/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js +1 -1
- package/lib/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
- package/lib/components-react/propertygrid/dataproviders/FilteringDataProvider.d.ts +5 -2
- package/lib/components-react/propertygrid/dataproviders/FilteringDataProvider.d.ts.map +1 -1
- package/lib/components-react/propertygrid/dataproviders/FilteringDataProvider.js +7 -1
- package/lib/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
- package/lib/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.d.ts.map +1 -1
- package/lib/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +1 -1
- package/lib/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
- package/lib/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.d.ts.map +1 -1
- package/lib/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +1 -1
- package/lib/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
- package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts +2 -0
- package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts.map +1 -1
- package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +3 -3
- package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
- package/lib/components-react/tree/controlled/TreeEventHandler.d.ts +7 -3
- package/lib/components-react/tree/controlled/TreeEventHandler.d.ts.map +1 -1
- package/lib/components-react/tree/controlled/TreeEventHandler.js +9 -2
- package/lib/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
- package/lib/components-react.d.ts +9 -0
- package/lib/components-react.d.ts.map +1 -1
- package/lib/components-react.js +7 -0
- package/lib/components-react.js.map +1 -1
- package/lib/internal.d.ts +1 -0
- package/lib/internal.d.ts.map +1 -1
- package/lib/internal.js +1 -0
- package/lib/internal.js.map +1 -1
- package/package.json +16 -17
|
@@ -58,7 +58,7 @@ export class UiComponents {
|
|
|
58
58
|
Logger.logError(UiComponents.loggerCategory("UiComponents"), `translate: UiComponents.initialize has not been called. Returning blank string.`);
|
|
59
59
|
return "";
|
|
60
60
|
}
|
|
61
|
-
return UiComponents._localization.getLocalizedString(`${UiComponents.localizationNamespace}:${key}`);
|
|
61
|
+
return UiComponents._localization.getLocalizedString(`${UiComponents.localizationNamespace}:${String(key)}`);
|
|
62
62
|
}
|
|
63
63
|
/** @internal */
|
|
64
64
|
static loggerCategory(name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiComponents.js","sourceRoot":"","sources":["../../src/components-react/UiComponents.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;;GAGG;AACH,MAAM,OAAO,YAAY;IAIvB;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAA0B;QACvD,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,CACZ,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,EAC3C,wCAAwC,CACzC,CAAC;YACF,OAAO;QACT,CAAC;QAED,aAAa,EAAE,CAAC;QAChB,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC;QAC1C,MAAM,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAChD,YAAY,CAAC,qBAAqB,CACnC,CAAC;QAEF,4DAA4D;QAC5D,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACpD,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,0DAA0D;IACnD,MAAM,CAAC,SAAS;QACrB,IAAI,YAAY,CAAC,aAAa;YAC5B,YAAY,CAAC,aAAa,CAAC,mBAAmB,CAC5C,YAAY,CAAC,qBAAqB,CACnC,CAAC;QACJ,YAAY,CAAC,aAAa,GAAG,SAAS,CAAC;QAEvC,4DAA4D;QAC5D,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,sDAAsD;IAC/C,MAAM,KAAK,WAAW;QAC3B,OAAO,YAAY,CAAC,YAAY,CAAC;IACnC,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,qBAAqB;QACrC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,gBAAgB;IACT,MAAM,KAAK,WAAW;QAC3B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,GAAsB;QAC5C,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;YAChC,MAAM,CAAC,QAAQ,CACb,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,EAC3C,iFAAiF,CAClF,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,YAAY,CAAC,aAAa,CAAC,kBAAkB,CAClD,GAAG,YAAY,CAAC,qBAAqB,IAAI,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"UiComponents.js","sourceRoot":"","sources":["../../src/components-react/UiComponents.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;;GAGG;AACH,MAAM,OAAO,YAAY;IAIvB;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAA0B;QACvD,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,CACZ,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,EAC3C,wCAAwC,CACzC,CAAC;YACF,OAAO;QACT,CAAC;QAED,aAAa,EAAE,CAAC;QAChB,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC;QAC1C,MAAM,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAChD,YAAY,CAAC,qBAAqB,CACnC,CAAC;QAEF,4DAA4D;QAC5D,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACpD,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,0DAA0D;IACnD,MAAM,CAAC,SAAS;QACrB,IAAI,YAAY,CAAC,aAAa;YAC5B,YAAY,CAAC,aAAa,CAAC,mBAAmB,CAC5C,YAAY,CAAC,qBAAqB,CACnC,CAAC;QACJ,YAAY,CAAC,aAAa,GAAG,SAAS,CAAC;QAEvC,4DAA4D;QAC5D,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,sDAAsD;IAC/C,MAAM,KAAK,WAAW;QAC3B,OAAO,YAAY,CAAC,YAAY,CAAC;IACnC,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,qBAAqB;QACrC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,gBAAgB;IACT,MAAM,KAAK,WAAW;QAC3B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,GAAsB;QAC5C,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;YAChC,MAAM,CAAC,QAAQ,CACb,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,EAC3C,iFAAiF,CAClF,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,YAAY,CAAC,aAAa,CAAC,kBAAkB,CAClD,GAAG,YAAY,CAAC,qBAAqB,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CACvD,CAAC;IACJ,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,cAAc,CAAC,IAAY;QACvC,OAAO,GAAG,YAAY,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;IAC/C,CAAC;;AA1Ec,yBAAY,GAAG,KAAK,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 Common\n */\n\nimport { enablePatches } from \"immer\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { Localization } from \"@itwin/core-common\";\nimport { UiCore } from \"@itwin/core-react\";\n\n/**\n * Manages the localization service for the components-react package.\n * @public\n */\nexport class UiComponents {\n private static _initialized = false;\n private static _localization?: Localization;\n\n /**\n * Registers the localization service namespace for UiComponents. Also initializes UiCore.\n * @param localization The internationalization service created by the host application.\n */\n public static async initialize(localization: Localization): Promise<void> {\n if (UiComponents._initialized) {\n Logger.logInfo(\n UiComponents.loggerCategory(\"UiComponents\"),\n `UiComponents.initialize already called`\n );\n return;\n }\n\n enablePatches();\n UiComponents._localization = localization;\n await UiComponents._localization.registerNamespace(\n UiComponents.localizationNamespace\n );\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n await UiCore.initialize(UiComponents._localization);\n UiComponents._initialized = true;\n }\n\n /** Unregisters the UiComponents localization namespace */\n public static terminate() {\n if (UiComponents._localization)\n UiComponents._localization.unregisterNamespace(\n UiComponents.localizationNamespace\n );\n UiComponents._localization = undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiCore.terminate();\n UiComponents._initialized = false;\n }\n\n /** Determines if UiComponents has been initialized */\n public static get initialized(): boolean {\n return UiComponents._initialized;\n }\n\n /** The internationalization service namespace. */\n public static get localizationNamespace(): string {\n return \"UiComponents\";\n }\n\n /** @internal */\n public static get packageName(): string {\n return \"components-react\";\n }\n\n /** Calls localization.getLocalizedString with the \"UiComponents\" namespace. Do NOT include the namespace in the key.\n * @internal\n */\n public static translate(key: string | string[]): string {\n if (!UiComponents._localization) {\n Logger.logError(\n UiComponents.loggerCategory(\"UiComponents\"),\n `translate: UiComponents.initialize has not been called. Returning blank string.`\n );\n return \"\";\n }\n return UiComponents._localization.getLocalizedString(\n `${UiComponents.localizationNamespace}:${String(key)}`\n );\n }\n\n /** @internal */\n public static loggerCategory(name: string): string {\n return `${UiComponents.packageName}.${name}`;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisposePolyfill.d.ts","sourceRoot":"","sources":["../../../src/components-react/common/DisposePolyfill.ts"],"names":[],"mappings":"AAIA;;GAEG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module Common
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Polyfill for upcoming resource management feature: https://github.com/tc39/proposal-explicit-resource-management
|
|
10
|
+
*/
|
|
11
|
+
Symbol.dispose ??= Symbol("Symbol.dispose");
|
|
12
|
+
Symbol.asyncDispose ??= Symbol("Symbol.asyncDispose");
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=DisposePolyfill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisposePolyfill.js","sourceRoot":"","sources":["../../../src/components-react/common/DisposePolyfill.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH;;GAEG;AACF,MAAc,CAAC,OAAO,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACpD,MAAc,CAAC,YAAY,KAAK,MAAM,CAAC,qBAAqB,CAAC,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 Common\n */\n\n/**\n * Polyfill for upcoming resource management feature: https://github.com/tc39/proposal-explicit-resource-management\n */\n(Symbol as any).dispose ??= Symbol(\"Symbol.dispose\");\n(Symbol as any).asyncDispose ??= Symbol(\"Symbol.asyncDispose\");\n"]}
|
|
@@ -113,7 +113,7 @@ export class ImageRenderer {
|
|
|
113
113
|
default:
|
|
114
114
|
const unhandledSourceType = loadedImage.sourceType; // Compile time check that all cases are handled
|
|
115
115
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
116
|
-
throw new UiError(UiComponents.loggerCategory("ImageRenderer"), `Can't handle sourceType: "${unhandledSourceType}"`);
|
|
116
|
+
throw new UiError(UiComponents.loggerCategory("ImageRenderer"), `Can't handle sourceType: "${String(unhandledSourceType)}"`);
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageRenderer.js","sourceRoot":"","sources":["../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ImageRenderer.js","sourceRoot":"","sources":["../../../src/components-react/common/ImageRenderer.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 Common\n */\n\nimport * as React from \"react\";\nimport type { WebFontIconProps } from \"@itwin/core-react\";\nimport { Icon, WebFontIcon } from \"@itwin/core-react\";\nimport { UiComponents } from \"../UiComponents.js\";\nimport type {\n Image,\n ImageFileFormat,\n LoadedBinaryImage,\n LoadedImage,\n} from \"./IImageLoader.js\";\nimport { UiError } from \"@itwin/appui-abstract\";\n\n/** A class that renders images from data provided by an image loader\n * @internal\n */\nexport class ImageRenderer {\n private static _svgCache: Map<string, string> = new Map();\n\n private hexToBase64(hexstring: string) {\n const match = hexstring.match(/\\w{2}/g);\n if (!match) return \"\";\n\n return window.btoa(\n match\n .map((a) => {\n return String.fromCharCode(parseInt(a, 16));\n })\n .join(\"\")\n );\n }\n\n /** Render raw binary image */\n private renderBinary(data: string, format: ImageFileFormat) {\n // Convert binary to base64\n const dataAsBase64 = this.hexToBase64(data);\n return <img src={`data:image/${format};base64,${dataAsBase64}`} alt=\"\" />;\n }\n\n private isSvg(input: string): boolean {\n const parser = new DOMParser();\n const doc = parser.parseFromString(input, \"application/xml\");\n\n const errorNode = doc.querySelector(\"parsererror\");\n if (errorNode) {\n return false;\n }\n\n const rootNode = doc.documentElement.nodeName.toLowerCase();\n return \"svg\" === rootNode;\n }\n\n private convertSvgToDataUri(svg: string) {\n if (!this.isSvg(svg)) {\n return \"\";\n }\n\n const svgAsBase64 = window.btoa(svg);\n return `data:image/svg+xml;base64,${svgAsBase64}`;\n }\n\n /** Render svg string into JSX */\n private renderSvg(svg: string) {\n let svgAsDataUri = ImageRenderer._svgCache.get(svg);\n if (undefined === svgAsDataUri) {\n svgAsDataUri = this.convertSvgToDataUri(svg.trim());\n ImageRenderer._svgCache.set(svg, svgAsDataUri);\n }\n\n return (\n <div>\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <Icon iconSpec={svgAsDataUri} />\n </div>\n );\n }\n\n /** Render image from an url */\n private renderUrl(url: string) {\n return <img src={url} alt=\"\" />;\n }\n\n /** Render image as core-react icon */\n private renderCoreIcon(iconName: string) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return <WebFontIcon iconName={iconName} />;\n }\n\n /** Replaces the escaped instances of \"\\:\" with \":\" */\n private normalizeEscapedIconString(escapedIconString: string) {\n return escapedIconString.replace(/\\\\:/g, \":\");\n }\n\n /**\n * Extract class and name from icon name, if the name follows format \"{className}:{fontName}\".\n * className and fontName can be escaped using \\ if : is needed.\n */\n private extractIconClassAndName(\n iconName: string\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ): Pick<WebFontIconProps, \"iconClassName\" | \"iconName\"> {\n const matches = iconName.match(/(\\\\.|[^:])+/g);\n if (!matches || matches.length !== 2)\n return {\n iconClassName: undefined,\n iconName,\n };\n\n return {\n iconClassName: this.normalizeEscapedIconString(matches[0]),\n iconName: this.normalizeEscapedIconString(matches[1]),\n };\n }\n\n /**\n * Render image as provided webfont icon.\n * Defaults to core-react icon if iconName does not contain className.\n */\n private renderWebfontIcon(iconName: string) {\n const iconInfo = this.extractIconClassAndName(iconName);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return <WebFontIcon {...iconInfo} />;\n }\n\n /** Render image from data provided by an image loader */\n public render(loadedImage: Image): React.ReactNode {\n switch (loadedImage.sourceType) {\n case \"binary\":\n const image = loadedImage as LoadedBinaryImage;\n return this.renderBinary(image.value, image.fileFormat);\n\n case \"url\":\n return this.renderUrl((loadedImage as LoadedImage).value);\n\n case \"svg\":\n return this.renderSvg((loadedImage as LoadedImage).value);\n\n case \"core-icon\":\n return this.renderCoreIcon((loadedImage as LoadedImage).value);\n\n case \"webfont-icon\":\n return this.renderWebfontIcon((loadedImage as LoadedImage).value);\n\n default:\n const unhandledSourceType: never = loadedImage.sourceType; // Compile time check that all cases are handled\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n UiComponents.loggerCategory(\"ImageRenderer\"),\n `Can't handle sourceType: \"${String(unhandledSourceType)}\"`\n );\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointTypeConverter.d.ts","sourceRoot":"","sources":["../../../src/components-react/converters/PointTypeConverter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E;;;GAGG;AACH,8BAAsB,sBAAuB,SAAQ,aAAa;IACzD,sBAAsB,EAAE,MAAM,CAAC;gBAGpC,sBAAsB,GAAE,MAAiC;IAM3D,OAAO,CAAC,WAAW;IAOH,eAAe,CAC7B,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,GACvB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"PointTypeConverter.d.ts","sourceRoot":"","sources":["../../../src/components-react/converters/PointTypeConverter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E;;;GAGG;AACH,8BAAsB,sBAAuB,SAAQ,aAAa;IACzD,sBAAsB,EAAE,MAAM,CAAC;gBAGpC,sBAAsB,GAAE,MAAiC;IAM3D,OAAO,CAAC,WAAW;IAOH,eAAe,CAC7B,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,GACvB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BX,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAG/C,SAAS,CAAC,QAAQ,CAAC,cAAc,CAC/B,OAAO,EAAE,UAAU,CAAC,KAAK,GACxB,mBAAmB,CAAC,KAAK,GAAG,SAAS;IAExC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAChC,KAAK,EAAE,UAAU,CAAC,KAAK,GACtB,MAAM,GAAG,SAAS;IAEd,WAAW,CAChB,CAAC,EAAE,UAAU,CAAC,KAAK,EACnB,CAAC,EAAE,UAAU,CAAC,KAAK,EACnB,WAAW,CAAC,EAAE,OAAO,GACpB,MAAM;CAUV;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,sBAAsB;gBAC3C,sBAAsB,CAAC,EAAE,MAAM;IAIlD,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,SAAS;IAQtE,SAAS,CAAC,cAAc,CACtB,MAAM,EAAE,UAAU,CAAC,KAAK,GACvB,mBAAmB,CAAC,OAAO,GAAG,SAAS;CAQ3C;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,sBAAsB;gBAC3C,sBAAsB,CAAC,EAAE,MAAM;IAIlD,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,SAAS;IAYtE,SAAS,CAAC,cAAc,CACtB,MAAM,EAAE,UAAU,CAAC,KAAK,GACvB,mBAAmB,CAAC,OAAO,GAAG,SAAS;CAc3C"}
|
|
@@ -43,6 +43,7 @@ export class BasePointTypeConverter extends TypeConverter {
|
|
|
43
43
|
if (hasAsyncComponents) {
|
|
44
44
|
return Promise.all(components.map(async (c) => (isPromiseLike(c) ? c : Promise.resolve(c)))).then((c) => c.join(", "));
|
|
45
45
|
}
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
46
47
|
return components.join(", ");
|
|
47
48
|
}
|
|
48
49
|
convertFromString(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointTypeConverter.js","sourceRoot":"","sources":["../../../src/components-react/converters/PointTypeConverter.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/** @packageDocumentation\n * @module TypeConverters\n */\n\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { TypeConverter } from \"./TypeConverter.js\";\nimport { TypeConverterManager } from \"./TypeConverterManager.js\";\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes.js\";\nimport { isPromiseLike } from \"../common/UseAsyncValue.js\";\n\n/**\n * Point type converter.\n * @public\n */\nexport abstract class BasePointTypeConverter extends TypeConverter {\n public componentConverterName: string;\n\n public constructor(\n componentConverterName: string = StandardTypeNames.Double\n ) {\n super();\n this.componentConverterName = componentConverterName;\n }\n\n private formatValue(value: number | string): string | Promise<string> {\n if (typeof value === \"string\") value = parseFloat(value);\n return TypeConverterManager.getConverter(\n this.componentConverterName\n ).convertToString(value);\n }\n\n public override convertToString(\n value?: Primitives.Point\n ): string | Promise<string> {\n if (!value) return \"\";\n\n let components = new Array<string | Promise<string>>();\n if (Array.isArray(value)) {\n if (value.length === 0) return \"\";\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n components = (value as Array<string | number>).map(\n (c): string | Promise<string> => this.formatValue(c)\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n components = [this.formatValue(value.x), this.formatValue(value.y)];\n if (undefined !== (value as any).z)\n components.push(this.formatValue((value as any).z));\n }\n const hasAsyncComponents = components.some(isPromiseLike);\n if (hasAsyncComponents) {\n return Promise.all(\n components.map(async (c) => (isPromiseLike(c) ? c : Promise.resolve(c)))\n ).then((c) => c.join(\", \"));\n }\n return components.join(\", \");\n }\n\n public override convertFromString(value: string) {\n return this.constructPoint(value.split(\",\"));\n }\n protected abstract constructPoint(\n _values: Primitives.Point\n ): ConvertedPrimitives.Point | undefined;\n\n protected abstract getVectorLength(\n point: Primitives.Point\n ): number | undefined;\n\n public sortCompare(\n a: Primitives.Point,\n b: Primitives.Point,\n _ignoreCase?: boolean\n ): number {\n const aLength = this.getVectorLength(a);\n const bLength = this.getVectorLength(b);\n\n if (aLength === bLength) return 0;\n if (aLength === undefined) return -1;\n if (bLength === undefined) return 1;\n\n return aLength - bLength;\n }\n}\n\n/**\n * Point2d type converter.\n * @public\n */\nexport class Point2dTypeConverter extends BasePointTypeConverter {\n public constructor(componentConverterName?: string) {\n super(componentConverterName);\n }\n\n protected getVectorLength(point: Primitives.Point): number | undefined {\n const derivedPoint = this.constructPoint(point);\n\n if (derivedPoint === undefined) return undefined;\n\n return Math.sqrt(Math.pow(derivedPoint.x, 2) + Math.pow(derivedPoint.y, 2));\n }\n\n protected constructPoint(\n values: Primitives.Point\n ): ConvertedPrimitives.Point2d | undefined {\n if (Array.isArray(values)) {\n if (values.length !== 2 || isNaN(+values[0]) || isNaN(+values[1]))\n return undefined;\n return { x: +values[0], y: +values[1] };\n }\n return values;\n }\n}\n\n/**\n * Point3d type converter.\n * @public\n */\nexport class Point3dTypeConverter extends BasePointTypeConverter {\n public constructor(componentConverterName?: string) {\n super(componentConverterName);\n }\n\n protected getVectorLength(point: Primitives.Point): number | undefined {\n const derivedPoint = this.constructPoint(point);\n\n if (derivedPoint === undefined) return undefined;\n\n return Math.sqrt(\n Math.pow(derivedPoint.x, 2) +\n Math.pow(derivedPoint.y, 2) +\n Math.pow(derivedPoint.z, 2)\n );\n }\n\n protected constructPoint(\n values: Primitives.Point\n ): ConvertedPrimitives.Point3d | undefined {\n if (Array.isArray(values)) {\n if (\n values.length !== 3 ||\n isNaN(+values[0]) ||\n isNaN(+values[1]) ||\n isNaN(+values[2])\n )\n return undefined;\n return { x: +values[0], y: +values[1], z: +values[2] };\n }\n const z = (values as any).z;\n return { ...values, z: z ? z : 0 };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PointTypeConverter.js","sourceRoot":"","sources":["../../../src/components-react/converters/PointTypeConverter.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/** @packageDocumentation\n * @module TypeConverters\n */\n\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { TypeConverter } from \"./TypeConverter.js\";\nimport { TypeConverterManager } from \"./TypeConverterManager.js\";\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes.js\";\nimport { isPromiseLike } from \"../common/UseAsyncValue.js\";\n\n/**\n * Point type converter.\n * @public\n */\nexport abstract class BasePointTypeConverter extends TypeConverter {\n public componentConverterName: string;\n\n public constructor(\n componentConverterName: string = StandardTypeNames.Double\n ) {\n super();\n this.componentConverterName = componentConverterName;\n }\n\n private formatValue(value: number | string): string | Promise<string> {\n if (typeof value === \"string\") value = parseFloat(value);\n return TypeConverterManager.getConverter(\n this.componentConverterName\n ).convertToString(value);\n }\n\n public override convertToString(\n value?: Primitives.Point\n ): string | Promise<string> {\n if (!value) return \"\";\n\n let components = new Array<string | Promise<string>>();\n if (Array.isArray(value)) {\n if (value.length === 0) return \"\";\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n components = (value as Array<string | number>).map(\n (c): string | Promise<string> => this.formatValue(c)\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n components = [this.formatValue(value.x), this.formatValue(value.y)];\n if (undefined !== (value as any).z)\n components.push(this.formatValue((value as any).z));\n }\n const hasAsyncComponents = components.some(isPromiseLike);\n if (hasAsyncComponents) {\n return Promise.all(\n components.map(async (c) => (isPromiseLike(c) ? c : Promise.resolve(c)))\n ).then((c) => c.join(\", \"));\n }\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n return components.join(\", \");\n }\n\n public override convertFromString(value: string) {\n return this.constructPoint(value.split(\",\"));\n }\n protected abstract constructPoint(\n _values: Primitives.Point\n ): ConvertedPrimitives.Point | undefined;\n\n protected abstract getVectorLength(\n point: Primitives.Point\n ): number | undefined;\n\n public sortCompare(\n a: Primitives.Point,\n b: Primitives.Point,\n _ignoreCase?: boolean\n ): number {\n const aLength = this.getVectorLength(a);\n const bLength = this.getVectorLength(b);\n\n if (aLength === bLength) return 0;\n if (aLength === undefined) return -1;\n if (bLength === undefined) return 1;\n\n return aLength - bLength;\n }\n}\n\n/**\n * Point2d type converter.\n * @public\n */\nexport class Point2dTypeConverter extends BasePointTypeConverter {\n public constructor(componentConverterName?: string) {\n super(componentConverterName);\n }\n\n protected getVectorLength(point: Primitives.Point): number | undefined {\n const derivedPoint = this.constructPoint(point);\n\n if (derivedPoint === undefined) return undefined;\n\n return Math.sqrt(Math.pow(derivedPoint.x, 2) + Math.pow(derivedPoint.y, 2));\n }\n\n protected constructPoint(\n values: Primitives.Point\n ): ConvertedPrimitives.Point2d | undefined {\n if (Array.isArray(values)) {\n if (values.length !== 2 || isNaN(+values[0]) || isNaN(+values[1]))\n return undefined;\n return { x: +values[0], y: +values[1] };\n }\n return values;\n }\n}\n\n/**\n * Point3d type converter.\n * @public\n */\nexport class Point3dTypeConverter extends BasePointTypeConverter {\n public constructor(componentConverterName?: string) {\n super(componentConverterName);\n }\n\n protected getVectorLength(point: Primitives.Point): number | undefined {\n const derivedPoint = this.constructPoint(point);\n\n if (derivedPoint === undefined) return undefined;\n\n return Math.sqrt(\n Math.pow(derivedPoint.x, 2) +\n Math.pow(derivedPoint.y, 2) +\n Math.pow(derivedPoint.z, 2)\n );\n }\n\n protected constructPoint(\n values: Primitives.Point\n ): ConvertedPrimitives.Point3d | undefined {\n if (Array.isArray(values)) {\n if (\n values.length !== 3 ||\n isNaN(+values[0]) ||\n isNaN(+values[1]) ||\n isNaN(+values[2])\n )\n return undefined;\n return { x: +values[0], y: +values[1], z: +values[2] };\n }\n const z = (values as any).z;\n return { ...values, z: z ? z : 0 };\n }\n}\n"]}
|
|
@@ -11,7 +11,7 @@ interface CustomNumberEditorState {
|
|
|
11
11
|
inputValue: string;
|
|
12
12
|
size?: number;
|
|
13
13
|
maxLength?: number;
|
|
14
|
-
iconSpec?:
|
|
14
|
+
iconSpec?: React.ReactNode;
|
|
15
15
|
}
|
|
16
16
|
/** CustomNumberEditor is a React component that is a property editor for numbers that specify custom formatting and parsing functions.
|
|
17
17
|
* @alpha
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomNumberEditor.d.ts","sourceRoot":"","sources":["../../../src/components-react/editors/CustomNumberEditor.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,2BAA2B,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAOV,aAAa,EACd,MAAM,uBAAuB,CAAC;AAa/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"CustomNumberEditor.d.ts","sourceRoot":"","sources":["../../../src/components-react/editors/CustomNumberEditor.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,2BAA2B,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAOV,aAAa,EACd,MAAM,uBAAuB,CAAC;AAa/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,gBAAgB;AAChB,UAAU,uBAAuB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,kBACX,SAAQ,KAAK,CAAC,aAAa,CAAC,mBAAmB,EAAE,uBAAuB,CACxE,YAAW,UAAU;IAErB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,eAAe,CAA4B;IAEnD,SAAyB,KAAK,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAE/D;IAEW,gBAAgB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAoEnE,IAAW,WAAW,IAAI,WAAW,GAAG,IAAI,CAE3C;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,iBAAiB,CAEvB;IAEc,iBAAiB;IAKjB,oBAAoB;IAIpB,kBAAkB,CAAC,SAAS,EAAE,mBAAmB;IAMjE,OAAO,CAAC,uBAAuB;YAuBjB,iBAAiB;IAgF/B,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,WAAW,CAkBjB;IAEF,OAAO,CAAC,QAAQ,CAEd;IAEc,MAAM,IAAI,KAAK,CAAC,SAAS;CA0D1C;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,kBAAkB;IAChE,IAAW,SAAS,IAAI,KAAK,CAAC,SAAS,CAEtC;IACD,IAAoB,sBAAsB,IAAI,OAAO,CAEpD;CACF"}
|
|
@@ -198,6 +198,11 @@ export class CustomNumberEditor extends React.PureComponent {
|
|
|
198
198
|
if (iconParams) {
|
|
199
199
|
iconSpec = iconParams.definition.iconSpec;
|
|
200
200
|
}
|
|
201
|
+
const iconNodeParam = record.property.editor.params.find((param) => param.type ===
|
|
202
|
+
"appui-icon-node");
|
|
203
|
+
if (iconNodeParam) {
|
|
204
|
+
iconSpec = iconNodeParam.icon;
|
|
205
|
+
}
|
|
201
206
|
}
|
|
202
207
|
if (this._isMounted)
|
|
203
208
|
this.setState({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomNumberEditor.js","sourceRoot":"","sources":["../../../src/components-react/editors/CustomNumberEditor.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 \"./CustomNumberEditor.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type {\n CustomFormattedNumberParams,\n IconEditorParams,\n InputEditorSizeParams,\n PrimitiveValue,\n PropertyEditorParams,\n PropertyRecord,\n PropertyValue,\n} from \"@itwin/appui-abstract\";\nimport {\n MessageSeverity,\n PropertyEditorParamTypes,\n PropertyValueFormat,\n UiAdmin,\n} from \"@itwin/appui-abstract\";\nimport { Icon, IconInput } from \"@itwin/core-react\";\nimport { Input } from \"@itwin/itwinui-react\";\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Input>;\n\nimport { UiComponents } from \"../UiComponents.js\";\nimport type { PropertyEditorProps, TypeEditor } from \"./EditorContainer.js\";\nimport { PropertyEditorBase } from \"./PropertyEditorManager.js\";\n\n/** @internal */\ninterface CustomNumberEditorState {\n inputValue: string;\n size?: number;\n maxLength?: number;\n iconSpec?: string;\n}\n\n/** CustomNumberEditor is a React component that is a property editor for numbers that specify custom formatting and parsing functions.\n * @alpha\n */\nexport class CustomNumberEditor\n extends React.PureComponent<PropertyEditorProps, CustomNumberEditorState>\n implements TypeEditor\n{\n private _isMounted = false;\n private _formatParams: CustomFormattedNumberParams | undefined;\n private _inputElement = React.createRef<HTMLInputElement>();\n private _lastValidValue: PropertyValue | undefined;\n\n public override readonly state: Readonly<CustomNumberEditorState> = {\n inputValue: \"\",\n };\n\n public async getPropertyValue(): Promise<PropertyValue | undefined> {\n const record = this.props.propertyRecord as PropertyRecord;\n let propertyValue: PropertyValue | undefined;\n\n if (record.isReadonly) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: (record.value as PrimitiveValue).value,\n displayValue: (record.value as PrimitiveValue).displayValue,\n };\n }\n\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\n const parseResults = (\n this._formatParams as CustomFormattedNumberParams\n ).parseFunction(this.state.inputValue);\n if (!parseResults.parseError && undefined !== parseResults.value) {\n const newDisplayValue = (\n this._formatParams as CustomFormattedNumberParams\n ).formatFunction(parseResults.value as number);\n propertyValue = {\n valueFormat: PropertyValueFormat.Primitive,\n value: parseResults.value,\n displayValue: newDisplayValue,\n };\n this._lastValidValue = { ...propertyValue };\n // make sure the text in the input item matches the latest formatted text... this could get out if the input string say 1.5 === the display string of 1'-6\"\n if (newDisplayValue !== this.state.inputValue) {\n this.setState({ inputValue: newDisplayValue });\n }\n } else {\n if (this.htmlElement) {\n UiAdmin.messagePresenter.displayInputFieldMessage(\n this.htmlElement,\n MessageSeverity.Error,\n parseResults.parseError\n ? parseResults.parseError\n : UiComponents.translate(\"errors.unable-to-parse-quantity\")\n );\n this.htmlElement.focus();\n } else {\n UiAdmin.messagePresenter.displayMessage(\n MessageSeverity.Error,\n parseResults.parseError\n ? parseResults.parseError\n : UiComponents.translate(\"errors.unable-to-parse-quantity\")\n );\n }\n\n const displayValue =\n record.value.displayValue && record.value.displayValue.length > 0\n ? record.value.displayValue\n : (\n this._formatParams as CustomFormattedNumberParams\n ).formatFunction(record.value.value as number);\n propertyValue = this._lastValidValue\n ? { ...this._lastValidValue }\n : {\n valueFormat: PropertyValueFormat.Primitive,\n value: record.value.value,\n displayValue,\n };\n }\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 shouldSetFocus(): boolean {\n if (!this.props.setFocus) return false;\n\n const record = this.props.propertyRecord as PropertyRecord;\n const disabled = record && !record.isDisabled ? false : true;\n const readonly = record && !record.isReadonly ? false : true;\n\n return !disabled && !readonly;\n }\n\n private _applyUpdatedValue(userInput: string) {\n const record = this.props.propertyRecord as PropertyRecord;\n const readonly = record && !record.isReadonly ? false : true;\n const disabled = record && !record.isDisabled ? false : true;\n\n if (readonly || disabled) return;\n\n if (this._isMounted)\n this.setState({\n inputValue: userInput,\n });\n }\n\n private _updateInputValue = (e: React.ChangeEvent<HTMLInputElement>) => {\n this._applyUpdatedValue(e.target.value);\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 public override componentDidUpdate(prevProps: PropertyEditorProps) {\n if (this.props.propertyRecord !== prevProps.propertyRecord) {\n void this.setStateFromProps();\n }\n }\n\n private _getInitialDisplayValue(): string {\n const record = this.props.propertyRecord;\n let initialDisplayValue = \"\";\n let numberValue = 0;\n if (record) {\n if (record.value.valueFormat === PropertyValueFormat.Primitive) {\n const primitiveValue = record.value;\n numberValue =\n undefined !== primitiveValue.value\n ? (primitiveValue.value as number)\n : 0;\n if (primitiveValue.displayValue)\n initialDisplayValue = primitiveValue.displayValue;\n else\n initialDisplayValue = (\n this._formatParams as CustomFormattedNumberParams\n ).formatFunction(numberValue);\n }\n }\n\n return initialDisplayValue;\n }\n\n private async setStateFromProps() {\n const record = this.props.propertyRecord;\n if (!record || !record.property) {\n Logger.logError(\n UiComponents.loggerCategory(\"CustomNumberEditor\"),\n \"PropertyRecord must be defined to use CustomNumberPropertyEditor\"\n );\n return;\n }\n if (\n record.property &&\n record.property.editor &&\n record.property.editor.params\n ) {\n this._formatParams = record.property.editor.params.find(\n (param: PropertyEditorParams) =>\n param.type ===\n PropertyEditorParamTypes.CustomFormattedNumber.valueOf()\n ) as CustomFormattedNumberParams;\n }\n\n if (!this._formatParams) {\n Logger.logError(\n UiComponents.loggerCategory(\"CustomNumberEditor\"),\n `CustomFormattedNumberParams must be defined for property ${record.property.name}`\n );\n return;\n }\n\n const initialDisplayValue = this._getInitialDisplayValue();\n this._lastValidValue = {\n valueFormat: PropertyValueFormat.Primitive,\n value: (record.value as PrimitiveValue).value,\n displayValue: initialDisplayValue,\n };\n let size: number | undefined;\n let maxLength: number | undefined;\n let iconSpec: string | undefined;\n\n if (\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.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: initialDisplayValue,\n size,\n maxLength,\n iconSpec,\n });\n }\n\n private _resetToLastValidDisplayValue() {\n const initialDisplayValue =\n (this._lastValidValue &&\n (this._lastValidValue as PrimitiveValue).displayValue) ??\n this._getInitialDisplayValue();\n this.setState({ inputValue: initialDisplayValue });\n }\n\n private _onKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === Key.Escape.valueOf()) {\n const initialDisplayValue =\n (this._lastValidValue &&\n (this._lastValidValue as PrimitiveValue).displayValue) ??\n this._getInitialDisplayValue();\n if (initialDisplayValue !== this.state.inputValue) {\n e.preventDefault();\n e.stopPropagation();\n this._resetToLastValidDisplayValue();\n } else {\n if (this.props.onCancel) this.props.onCancel();\n }\n }\n\n if (e.key !== Key.Enter.valueOf()) {\n UiAdmin.messagePresenter.closeInputFieldMessage();\n }\n };\n\n private _onFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n e.target.select();\n };\n\n public override render(): React.ReactNode {\n const minSize = this.state.size ? this.state.size : 8;\n const minWidthStyle: React.CSSProperties = {\n minWidth: `${minSize * 0.75}em`,\n };\n const record = this.props.propertyRecord as PropertyRecord;\n if (!record || !this._formatParams) return null;\n\n const readOnly = !record.isReadonly ? false : true;\n const disabled = !record.isDisabled ? false : true;\n\n const className = classnames(\n \"components-cell-editor\",\n \"components-customnumber-editor\",\n this.props.className\n );\n\n const inputProps: Omit<InputProps, \"size\"> = {\n className,\n style: this.props.style ? this.props.style : minWidthStyle,\n readOnly,\n disabled,\n maxLength: this.state.maxLength,\n value: this.state.inputValue,\n onChange: this._updateInputValue,\n onBlur: this.props.onBlur,\n onFocus: this._onFocus,\n autoFocus: this.shouldSetFocus(),\n onKeyDown: this._onKeyPress,\n };\n\n let reactNode: React.ReactNode;\n if (this.state.iconSpec) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const icon = <Icon iconSpec={this.state.iconSpec} />;\n reactNode = (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <IconInput\n {...inputProps}\n ref={this._inputElement}\n icon={icon}\n data-testid=\"components-customnumber-editor\"\n />\n );\n } else {\n reactNode = (\n <Input\n {...inputProps}\n ref={this._inputElement}\n data-testid=\"components-customnumber-editor\"\n size=\"small\"\n id={this.props.propertyRecord?.property.name}\n />\n );\n }\n\n return reactNode;\n }\n}\n\n/** Custom Property Editor registered for the \"number\" type name and the \"number-custom\" editor name.\n * It uses the [[CustomNumberEditor]] React component.\n * @alpha\n */\nexport class CustomNumberPropertyEditor extends PropertyEditorBase {\n public get reactNode(): React.ReactNode {\n return <CustomNumberEditor />;\n }\n public override get containerHandlesEscape(): boolean {\n return false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CustomNumberEditor.js","sourceRoot":"","sources":["../../../src/components-react/editors/CustomNumberEditor.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 \"./CustomNumberEditor.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type {\n CustomFormattedNumberParams,\n IconEditorParams,\n InputEditorSizeParams,\n PrimitiveValue,\n PropertyEditorParams,\n PropertyRecord,\n PropertyValue,\n} from \"@itwin/appui-abstract\";\nimport {\n MessageSeverity,\n PropertyEditorParamTypes,\n PropertyValueFormat,\n UiAdmin,\n} from \"@itwin/appui-abstract\";\nimport { Icon, IconInput } from \"@itwin/core-react\";\nimport { Input } from \"@itwin/itwinui-react\";\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Input>;\n\nimport { UiComponents } from \"../UiComponents.js\";\nimport type { PropertyEditorProps, TypeEditor } from \"./EditorContainer.js\";\nimport { PropertyEditorBase } from \"./PropertyEditorManager.js\";\nimport type { IconNodeEditorParams } from \"../../internal.js\";\n\n/** @internal */\ninterface CustomNumberEditorState {\n inputValue: string;\n size?: number;\n maxLength?: number;\n iconSpec?: React.ReactNode;\n}\n\n/** CustomNumberEditor is a React component that is a property editor for numbers that specify custom formatting and parsing functions.\n * @alpha\n */\nexport class CustomNumberEditor\n extends React.PureComponent<PropertyEditorProps, CustomNumberEditorState>\n implements TypeEditor\n{\n private _isMounted = false;\n private _formatParams: CustomFormattedNumberParams | undefined;\n private _inputElement = React.createRef<HTMLInputElement>();\n private _lastValidValue: PropertyValue | undefined;\n\n public override readonly state: Readonly<CustomNumberEditorState> = {\n inputValue: \"\",\n };\n\n public async getPropertyValue(): Promise<PropertyValue | undefined> {\n const record = this.props.propertyRecord as PropertyRecord;\n let propertyValue: PropertyValue | undefined;\n\n if (record.isReadonly) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: (record.value as PrimitiveValue).value,\n displayValue: (record.value as PrimitiveValue).displayValue,\n };\n }\n\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\n const parseResults = (\n this._formatParams as CustomFormattedNumberParams\n ).parseFunction(this.state.inputValue);\n if (!parseResults.parseError && undefined !== parseResults.value) {\n const newDisplayValue = (\n this._formatParams as CustomFormattedNumberParams\n ).formatFunction(parseResults.value as number);\n propertyValue = {\n valueFormat: PropertyValueFormat.Primitive,\n value: parseResults.value,\n displayValue: newDisplayValue,\n };\n this._lastValidValue = { ...propertyValue };\n // make sure the text in the input item matches the latest formatted text... this could get out if the input string say 1.5 === the display string of 1'-6\"\n if (newDisplayValue !== this.state.inputValue) {\n this.setState({ inputValue: newDisplayValue });\n }\n } else {\n if (this.htmlElement) {\n UiAdmin.messagePresenter.displayInputFieldMessage(\n this.htmlElement,\n MessageSeverity.Error,\n parseResults.parseError\n ? parseResults.parseError\n : UiComponents.translate(\"errors.unable-to-parse-quantity\")\n );\n this.htmlElement.focus();\n } else {\n UiAdmin.messagePresenter.displayMessage(\n MessageSeverity.Error,\n parseResults.parseError\n ? parseResults.parseError\n : UiComponents.translate(\"errors.unable-to-parse-quantity\")\n );\n }\n\n const displayValue =\n record.value.displayValue && record.value.displayValue.length > 0\n ? record.value.displayValue\n : (\n this._formatParams as CustomFormattedNumberParams\n ).formatFunction(record.value.value as number);\n propertyValue = this._lastValidValue\n ? { ...this._lastValidValue }\n : {\n valueFormat: PropertyValueFormat.Primitive,\n value: record.value.value,\n displayValue,\n };\n }\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 shouldSetFocus(): boolean {\n if (!this.props.setFocus) return false;\n\n const record = this.props.propertyRecord as PropertyRecord;\n const disabled = record && !record.isDisabled ? false : true;\n const readonly = record && !record.isReadonly ? false : true;\n\n return !disabled && !readonly;\n }\n\n private _applyUpdatedValue(userInput: string) {\n const record = this.props.propertyRecord as PropertyRecord;\n const readonly = record && !record.isReadonly ? false : true;\n const disabled = record && !record.isDisabled ? false : true;\n\n if (readonly || disabled) return;\n\n if (this._isMounted)\n this.setState({\n inputValue: userInput,\n });\n }\n\n private _updateInputValue = (e: React.ChangeEvent<HTMLInputElement>) => {\n this._applyUpdatedValue(e.target.value);\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 public override componentDidUpdate(prevProps: PropertyEditorProps) {\n if (this.props.propertyRecord !== prevProps.propertyRecord) {\n void this.setStateFromProps();\n }\n }\n\n private _getInitialDisplayValue(): string {\n const record = this.props.propertyRecord;\n let initialDisplayValue = \"\";\n let numberValue = 0;\n if (record) {\n if (record.value.valueFormat === PropertyValueFormat.Primitive) {\n const primitiveValue = record.value;\n numberValue =\n undefined !== primitiveValue.value\n ? (primitiveValue.value as number)\n : 0;\n if (primitiveValue.displayValue)\n initialDisplayValue = primitiveValue.displayValue;\n else\n initialDisplayValue = (\n this._formatParams as CustomFormattedNumberParams\n ).formatFunction(numberValue);\n }\n }\n\n return initialDisplayValue;\n }\n\n private async setStateFromProps() {\n const record = this.props.propertyRecord;\n if (!record || !record.property) {\n Logger.logError(\n UiComponents.loggerCategory(\"CustomNumberEditor\"),\n \"PropertyRecord must be defined to use CustomNumberPropertyEditor\"\n );\n return;\n }\n if (\n record.property &&\n record.property.editor &&\n record.property.editor.params\n ) {\n this._formatParams = record.property.editor.params.find(\n (param: PropertyEditorParams) =>\n param.type ===\n PropertyEditorParamTypes.CustomFormattedNumber.valueOf()\n ) as CustomFormattedNumberParams;\n }\n\n if (!this._formatParams) {\n Logger.logError(\n UiComponents.loggerCategory(\"CustomNumberEditor\"),\n `CustomFormattedNumberParams must be defined for property ${record.property.name}`\n );\n return;\n }\n\n const initialDisplayValue = this._getInitialDisplayValue();\n this._lastValidValue = {\n valueFormat: PropertyValueFormat.Primitive,\n value: (record.value as PrimitiveValue).value,\n displayValue: initialDisplayValue,\n };\n let size: number | undefined;\n let maxLength: number | undefined;\n let iconSpec: React.ReactNode | undefined;\n\n if (\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.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 const iconNodeParam = record.property.editor.params.find(\n (param): param is IconNodeEditorParams =>\n param.type ===\n (\"appui-icon-node\" satisfies IconNodeEditorParams[\"type\"])\n );\n if (iconNodeParam) {\n iconSpec = iconNodeParam.icon;\n }\n }\n\n if (this._isMounted)\n this.setState({\n inputValue: initialDisplayValue,\n size,\n maxLength,\n iconSpec,\n });\n }\n\n private _resetToLastValidDisplayValue() {\n const initialDisplayValue =\n (this._lastValidValue &&\n (this._lastValidValue as PrimitiveValue).displayValue) ??\n this._getInitialDisplayValue();\n this.setState({ inputValue: initialDisplayValue });\n }\n\n private _onKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === Key.Escape.valueOf()) {\n const initialDisplayValue =\n (this._lastValidValue &&\n (this._lastValidValue as PrimitiveValue).displayValue) ??\n this._getInitialDisplayValue();\n if (initialDisplayValue !== this.state.inputValue) {\n e.preventDefault();\n e.stopPropagation();\n this._resetToLastValidDisplayValue();\n } else {\n if (this.props.onCancel) this.props.onCancel();\n }\n }\n\n if (e.key !== Key.Enter.valueOf()) {\n UiAdmin.messagePresenter.closeInputFieldMessage();\n }\n };\n\n private _onFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n e.target.select();\n };\n\n public override render(): React.ReactNode {\n const minSize = this.state.size ? this.state.size : 8;\n const minWidthStyle: React.CSSProperties = {\n minWidth: `${minSize * 0.75}em`,\n };\n const record = this.props.propertyRecord as PropertyRecord;\n if (!record || !this._formatParams) return null;\n\n const readOnly = !record.isReadonly ? false : true;\n const disabled = !record.isDisabled ? false : true;\n\n const className = classnames(\n \"components-cell-editor\",\n \"components-customnumber-editor\",\n this.props.className\n );\n\n const inputProps: Omit<InputProps, \"size\"> = {\n className,\n style: this.props.style ? this.props.style : minWidthStyle,\n readOnly,\n disabled,\n maxLength: this.state.maxLength,\n value: this.state.inputValue,\n onChange: this._updateInputValue,\n onBlur: this.props.onBlur,\n onFocus: this._onFocus,\n autoFocus: this.shouldSetFocus(),\n onKeyDown: this._onKeyPress,\n };\n\n let reactNode: React.ReactNode;\n if (this.state.iconSpec) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const icon = <Icon iconSpec={this.state.iconSpec} />;\n reactNode = (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <IconInput\n {...inputProps}\n ref={this._inputElement}\n icon={icon}\n data-testid=\"components-customnumber-editor\"\n />\n );\n } else {\n reactNode = (\n <Input\n {...inputProps}\n ref={this._inputElement}\n data-testid=\"components-customnumber-editor\"\n size=\"small\"\n id={this.props.propertyRecord?.property.name}\n />\n );\n }\n\n return reactNode;\n }\n}\n\n/** Custom Property Editor registered for the \"number\" type name and the \"number-custom\" editor name.\n * It uses the [[CustomNumberEditor]] React component.\n * @alpha\n */\nexport class CustomNumberPropertyEditor extends PropertyEditorBase {\n public get reactNode(): React.ReactNode {\n return <CustomNumberEditor />;\n }\n public override get containerHandlesEscape(): boolean {\n return false;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBuilderRule.d.ts","sourceRoot":"","sources":["../../../src/components-react/filter-builder/FilterBuilderRule.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"FilterBuilderRule.d.ts","sourceRoot":"","sources":["../../../src/components-react/filter-builder/FilterBuilderRule.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAOzE;;;GAGG;AACH,MAAM,WAAW,sCAAsC;IACrD,6DAA6D;IAC7D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,sBAAsB;IACtB,IAAI,EAAE,yBAAyB,CAAC;IAChC,oCAAoC;IACpC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,+CAA+C;IAC/C,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,sCAAsC,qBAmH9C"}
|
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import "./FilterBuilderRule.scss";
|
|
9
9
|
import * as React from "react";
|
|
10
|
-
import {
|
|
11
|
-
import { Flex, Text } from "@itwin/itwinui-react";
|
|
10
|
+
import { Flex, StatusMessage } from "@itwin/itwinui-react";
|
|
12
11
|
import { PropertyFilterBuilderContext, PropertyFilterBuilderRuleRenderingContext, } from "./FilterBuilderContext.js";
|
|
13
12
|
import { PropertyFilterBuilderRuleOperatorRenderer } from "./FilterBuilderRuleOperator.js";
|
|
14
13
|
import { PropertyFilterBuilderRuleProperty } from "./FilterBuilderRuleProperty.js";
|
|
@@ -69,9 +68,7 @@ export function PropertyFilterBuilderRuleRenderer(props) {
|
|
|
69
68
|
operator !== undefined &&
|
|
70
69
|
!isUnaryPropertyFilterBuilderOperator(operator) ? (React.createElement("div", { className: "fb-property-value" },
|
|
71
70
|
valueRenderer(property, operator),
|
|
72
|
-
rule.errorMessage ? (React.createElement(
|
|
73
|
-
React.createElement(SvgStatusError, null),
|
|
74
|
-
React.createElement(Text, null, rule.errorMessage))) : null)) : null,
|
|
71
|
+
rule.errorMessage ? (React.createElement(StatusMessage, { status: "negative" }, rule.errorMessage)) : null)) : null,
|
|
75
72
|
React.createElement(PropertyFilterBuilderToolbar, { onAddChild: handleRuleAdded, onDelete: removeRule }))));
|
|
76
73
|
}
|
|
77
74
|
//# sourceMappingURL=FilterBuilderRule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBuilderRule.js","sourceRoot":"","sources":["../../../src/components-react/filter-builder/FilterBuilderRule.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"FilterBuilderRule.js","sourceRoot":"","sources":["../../../src/components-react/filter-builder/FilterBuilderRule.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 PropertyFilterBuilder\n */\n\nimport \"./FilterBuilderRule.scss\";\nimport * as React from \"react\";\nimport type { PropertyDescription, PropertyValue } from \"@itwin/appui-abstract\";\nimport { Flex, StatusMessage } from \"@itwin/itwinui-react\";\nimport {\n PropertyFilterBuilderContext,\n PropertyFilterBuilderRuleRenderingContext,\n} from \"./FilterBuilderContext.js\";\nimport { PropertyFilterBuilderRuleOperatorRenderer } from \"./FilterBuilderRuleOperator.js\";\nimport { PropertyFilterBuilderRuleProperty } from \"./FilterBuilderRuleProperty.js\";\nimport { PropertyFilterBuilderRuleValue } from \"./FilterBuilderRuleValue.js\";\nimport type { PropertyFilterBuilderRule } from \"./FilterBuilderState.js\";\nimport {\n isUnaryPropertyFilterBuilderOperator,\n type PropertyFilterBuilderRuleOperator,\n} from \"./Operators.js\";\nimport { PropertyFilterBuilderToolbar } from \"./FilterBuilderToolbar.js\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleRenderer]] component.\n * @internal\n */\nexport interface PropertyFilterBuilderRuleRendererProps {\n /** Path from [[PropertyFilterBuilder]] root to this rule. */\n path: string[];\n /** Rule to render. */\n rule: PropertyFilterBuilderRule;\n /** Function to add rule to group */\n onRuleAdded: () => void;\n /** Boolean to allow last rule to be removed */\n allowLastRuleDelete?: boolean;\n}\n\n/**\n * Component that renders single rule in [[PropertyFilterBuilder]] component.\n * @internal\n */\nexport function PropertyFilterBuilderRuleRenderer(\n props: PropertyFilterBuilderRuleRendererProps\n) {\n const { path, rule, onRuleAdded, allowLastRuleDelete } = props;\n const { properties, actions, onRulePropertySelected } = React.useContext(\n PropertyFilterBuilderContext\n );\n const {\n ruleOperatorRenderer,\n ruleValueRenderer,\n propertyRenderer,\n isDisabled,\n } = React.useContext(PropertyFilterBuilderRuleRenderingContext);\n const { property, operator, value } = rule;\n\n const onSelectedPropertyChanged = React.useCallback(\n (newProperty?: PropertyDescription) => {\n actions.setRuleProperty(path, newProperty);\n // invoke 'onRulePropertySelected' when new property is selected. There is no way to deselect property\n // so 'newProperty' will be 'undefined' only if selected property is no longer in 'properties' list.\n if (onRulePropertySelected && newProperty)\n onRulePropertySelected(newProperty);\n },\n [path, onRulePropertySelected, actions]\n );\n\n const onRuleOperatorChange = React.useCallback(\n (newOperator: PropertyFilterBuilderRuleOperator) => {\n actions.setRuleOperator(path, newOperator);\n },\n [path, actions]\n );\n\n const onRuleValueChange = React.useCallback(\n (newValue: PropertyValue) => {\n actions.setRuleValue(path, newValue);\n },\n [path, actions]\n );\n\n const removeRule = () => actions.removeItem(path, allowLastRuleDelete);\n const handleRuleAdded = () => {\n actions.addItem([], \"RULE\");\n onRuleAdded();\n };\n\n const operatorRenderer = React.useCallback(\n (prop: PropertyDescription) => {\n if (ruleOperatorRenderer)\n return ruleOperatorRenderer({\n property: prop,\n operator,\n onChange: onRuleOperatorChange,\n });\n return (\n <PropertyFilterBuilderRuleOperatorRenderer\n property={prop}\n onChange={onRuleOperatorChange}\n operator={operator}\n />\n );\n },\n [operator, ruleOperatorRenderer, onRuleOperatorChange]\n );\n\n const valueRenderer = React.useCallback(\n (prop: PropertyDescription, op: PropertyFilterBuilderRuleOperator) => {\n if (ruleValueRenderer)\n return ruleValueRenderer({\n property: prop,\n value,\n onChange: onRuleValueChange,\n operator: op,\n });\n return (\n <PropertyFilterBuilderRuleValue\n property={prop}\n onChange={onRuleValueChange}\n value={value}\n operator={op}\n />\n );\n },\n [value, ruleValueRenderer, onRuleValueChange]\n );\n\n return (\n <div className=\"fb-component-row\">\n <Flex className=\"fb-row-container\">\n <PropertyFilterBuilderRuleProperty\n properties={properties}\n selectedProperty={rule.property}\n onSelectedPropertyChanged={onSelectedPropertyChanged}\n propertyRenderer={propertyRenderer}\n isDisabled={isDisabled}\n />\n {property !== undefined ? operatorRenderer(property) : null}\n {property !== undefined &&\n operator !== undefined &&\n !isUnaryPropertyFilterBuilderOperator(operator) ? (\n <div className=\"fb-property-value\">\n {valueRenderer(property, operator)}\n {rule.errorMessage ? (\n <StatusMessage status=\"negative\">\n {rule.errorMessage}\n </StatusMessage>\n ) : null}\n </div>\n ) : null}\n <PropertyFilterBuilderToolbar\n onAddChild={handleRuleAdded}\n onDelete={removeRule}\n />\n </Flex>\n </div>\n );\n}\n"]}
|
|
@@ -15,6 +15,12 @@ export interface PropertyFilterBuilderRuleValueProps {
|
|
|
15
15
|
property: PropertyDescription;
|
|
16
16
|
/** Callback that is invoked when value changes. */
|
|
17
17
|
onChange: (value: PropertyValue) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Specifies which editors system should be used: legacy or the new one.
|
|
20
|
+
* @default "legacy"
|
|
21
|
+
* @beta
|
|
22
|
+
*/
|
|
23
|
+
editorSystem?: "legacy" | "new";
|
|
18
24
|
}
|
|
19
25
|
/**
|
|
20
26
|
* Props for custom [[PropertyFilterBuilderRuleValue]] renderer.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBuilderRuleValue.d.ts","sourceRoot":"","sources":["../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMhF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"FilterBuilderRuleValue.d.ts","sourceRoot":"","sources":["../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMhF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAIxE;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD,+BAA+B;IAC/B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,qEAAqE;IACrE,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC;;;;OAIG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,2CACf,SAAQ,mCAAmC;IAC3C,wBAAwB;IACxB,QAAQ,EAAE,iCAAiC,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,2CAA2C,qBASnD"}
|
|
@@ -11,6 +11,7 @@ import { EditorContainer } from "../editors/EditorContainer.js";
|
|
|
11
11
|
import { Flex, Text } from "@itwin/itwinui-react";
|
|
12
12
|
import { PropertyFilterBuilderRuleRangeValue } from "./FilterBuilderRangeValue.js";
|
|
13
13
|
import { useTranslation } from "../l10n/useTranslation.js";
|
|
14
|
+
import { PropertyRecordEditor } from "../new-editors/interop/PropertyRecordEditor.js";
|
|
14
15
|
/**
|
|
15
16
|
* Component that renders [[PropertyFilterBuilderRuleRenderer]] value input.
|
|
16
17
|
* @beta
|
|
@@ -19,14 +20,14 @@ export function PropertyFilterBuilderRuleValue(props) {
|
|
|
19
20
|
const { operator, ...restProps } = props;
|
|
20
21
|
return operator === "between" || operator === "not-between" ? (React.createElement(FilterBuilderRuleRangeValueRenderer, { ...restProps })) : (React.createElement(FilterBuilderRulePrimitiveValueRenderer, { ...restProps }));
|
|
21
22
|
}
|
|
22
|
-
function FilterBuilderRulePrimitiveValueRenderer({ property, value, onChange, }) {
|
|
23
|
+
function FilterBuilderRulePrimitiveValueRenderer({ property, value, onChange, editorSystem, }) {
|
|
23
24
|
const propertyRecord = React.useMemo(() => {
|
|
24
25
|
return new PropertyRecord(value ?? { valueFormat: PropertyValueFormat.Primitive }, property);
|
|
25
26
|
}, [value, property]);
|
|
26
27
|
const onValueChange = React.useCallback(({ newValue }) => {
|
|
27
28
|
onChange(newValue);
|
|
28
29
|
}, [onChange]);
|
|
29
|
-
return (React.createElement(
|
|
30
|
+
return (React.createElement(PropertyRecordEditor, { propertyRecord: propertyRecord, onCancel: () => { }, onCommit: onValueChange, size: "small", editorSystem: editorSystem }));
|
|
30
31
|
}
|
|
31
32
|
function FilterBuilderRuleRangeValueRenderer({ property, value, onChange, }) {
|
|
32
33
|
const { translate } = useTranslation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBuilderRuleValue.js","sourceRoot":"","sources":["../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"FilterBuilderRuleValue.js","sourceRoot":"","sources":["../../../src/components-react/filter-builder/FilterBuilderRuleValue.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 PropertyFilterBuilder\n */\n\nimport * as React from \"react\";\nimport type { PropertyDescription, PropertyValue } from \"@itwin/appui-abstract\";\nimport { PropertyRecord, PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport type { PropertyUpdatedArgs } from \"../editors/EditorContainer.js\";\nimport { EditorContainer } from \"../editors/EditorContainer.js\";\nimport { Flex, Text } from \"@itwin/itwinui-react\";\nimport { PropertyFilterBuilderRuleRangeValue } from \"./FilterBuilderRangeValue.js\";\nimport type { PropertyFilterBuilderRuleOperator } from \"./Operators.js\";\nimport { useTranslation } from \"../l10n/useTranslation.js\";\nimport { PropertyRecordEditor } from \"../new-editors/interop/PropertyRecordEditor.js\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleValue]] component.\n * @beta\n */\nexport interface PropertyFilterBuilderRuleValueProps {\n /** Currently entered value. */\n value?: PropertyValue;\n /** Property used in rule to which this value will be compared to. */\n property: PropertyDescription;\n /** Callback that is invoked when value changes. */\n onChange: (value: PropertyValue) => void;\n /**\n * Specifies which editors system should be used: legacy or the new one.\n * @default \"legacy\"\n * @beta\n */\n editorSystem?: \"legacy\" | \"new\";\n}\n\n/**\n * Props for custom [[PropertyFilterBuilderRuleValue]] renderer.\n * @beta\n */\nexport interface PropertyFilterBuilderRuleValueRendererProps\n extends PropertyFilterBuilderRuleValueProps {\n /** Current operator. */\n operator: PropertyFilterBuilderRuleOperator;\n}\n\n/**\n * Component that renders [[PropertyFilterBuilderRuleRenderer]] value input.\n * @beta\n */\nexport function PropertyFilterBuilderRuleValue(\n props: PropertyFilterBuilderRuleValueRendererProps\n) {\n const { operator, ...restProps } = props;\n\n return operator === \"between\" || operator === \"not-between\" ? (\n <FilterBuilderRuleRangeValueRenderer {...restProps} />\n ) : (\n <FilterBuilderRulePrimitiveValueRenderer {...restProps} />\n );\n}\n\nfunction FilterBuilderRulePrimitiveValueRenderer({\n property,\n value,\n onChange,\n editorSystem,\n}: PropertyFilterBuilderRuleValueProps) {\n const propertyRecord = React.useMemo(() => {\n return new PropertyRecord(\n value ?? { valueFormat: PropertyValueFormat.Primitive },\n property\n );\n }, [value, property]);\n\n const onValueChange = React.useCallback(\n ({ newValue }: PropertyUpdatedArgs) => {\n onChange(newValue);\n },\n [onChange]\n );\n\n return (\n <PropertyRecordEditor\n propertyRecord={propertyRecord}\n onCancel={() => {}}\n onCommit={onValueChange}\n size=\"small\"\n editorSystem={editorSystem}\n />\n );\n}\n\nfunction FilterBuilderRuleRangeValueRenderer({\n property,\n value,\n onChange,\n}: PropertyFilterBuilderRuleValueProps) {\n const { translate } = useTranslation();\n const { from, to } = React.useMemo(() => {\n const rangeValue = PropertyFilterBuilderRuleRangeValue.parse(value);\n return {\n from: new PropertyRecord(rangeValue.from, property),\n to: new PropertyRecord(rangeValue.to, property),\n };\n }, [property, value]);\n\n const handleFromValue = React.useCallback(\n ({ newValue }: PropertyUpdatedArgs) => {\n onChange(getSerializedRangeValue(newValue, to.value));\n },\n [onChange, to]\n );\n\n const handleToValue = React.useCallback(\n ({ newValue }: PropertyUpdatedArgs) => {\n onChange(getSerializedRangeValue(from.value, newValue));\n },\n [onChange, from]\n );\n\n return (\n <Flex\n className=\"rule-value-range\"\n display=\"inline-flex\"\n flexDirection=\"row\"\n >\n <Flex.Item>\n <EditorContainer\n propertyRecord={from}\n onCancel={() => {}}\n onCommit={handleFromValue}\n setFocus={false}\n shouldCommitOnChange={false}\n />\n </Flex.Item>\n <Text>{translate(\"filterBuilder.operators.and\").toLowerCase()}</Text>\n <Flex.Item>\n <EditorContainer\n propertyRecord={to}\n onCancel={() => {}}\n onCommit={handleToValue}\n setFocus={false}\n shouldCommitOnChange={false}\n />\n </Flex.Item>\n </Flex>\n );\n}\n\nfunction getSerializedRangeValue(from: PropertyValue, to: PropertyValue) {\n return PropertyFilterBuilderRuleRangeValue.serialize({\n from:\n from.valueFormat === PropertyValueFormat.Primitive\n ? from\n : { valueFormat: PropertyValueFormat.Primitive },\n to:\n to.valueFormat === PropertyValueFormat.Primitive\n ? to\n : { valueFormat: PropertyValueFormat.Primitive },\n });\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module PropertyEditors
|
|
3
|
+
*/
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import type { EditorProps } from "./Types.js";
|
|
6
|
+
interface EditorRendererProps extends EditorProps {
|
|
7
|
+
/**
|
|
8
|
+
* Status message shown under editor. If `string` is passed it will be rendered as `negative`
|
|
9
|
+
* status message. To render different type of status message custom react component can be provided.
|
|
10
|
+
*/
|
|
11
|
+
statusMessage?: React.ReactNode | string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Editor component that renders an editor based on the metadata and value.
|
|
15
|
+
* @beta
|
|
16
|
+
*/
|
|
17
|
+
export declare function EditorRenderer({ statusMessage, ...editorProps }: EditorRendererProps): React.JSX.Element | null;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=EditorRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditorRenderer.d.ts","sourceRoot":"","sources":["../../../src/components-react/new-editors/EditorRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,UAAU,mBAAoB,SAAQ,WAAW;IAC/C;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,aAAa,EACb,GAAG,WAAW,EACf,EAAE,mBAAmB,4BAkBrB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module PropertyEditors
|
|
7
|
+
*/
|
|
8
|
+
import * as React from "react";
|
|
9
|
+
import { useEditor } from "./editors-registry/UseEditor.js";
|
|
10
|
+
import { StatusMessage } from "@itwin/itwinui-react";
|
|
11
|
+
/**
|
|
12
|
+
* Editor component that renders an editor based on the metadata and value.
|
|
13
|
+
* @beta
|
|
14
|
+
*/
|
|
15
|
+
export function EditorRenderer({ statusMessage, ...editorProps }) {
|
|
16
|
+
const { metadata, value } = editorProps;
|
|
17
|
+
const TypeEditor = useEditor(metadata, value);
|
|
18
|
+
if (!TypeEditor) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return (React.createElement(React.Fragment, null,
|
|
22
|
+
React.createElement(TypeEditor, { ...editorProps }),
|
|
23
|
+
statusMessage && typeof statusMessage === "string" ? (React.createElement(StatusMessage, { status: "negative" }, statusMessage)) : (statusMessage)));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=EditorRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditorRenderer.js","sourceRoot":"","sources":["../../../src/components-react/new-editors/EditorRenderer.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAUrD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,aAAa,EACb,GAAG,WAAW,EACM;IACpB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;IACxC,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL;QACE,oBAAC,UAAU,OAAK,WAAW,GAAI;QAC9B,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CACpD,oBAAC,aAAa,IAAC,MAAM,EAAC,UAAU,IAAE,aAAa,CAAiB,CACjE,CAAC,CAAC,CAAC,CACF,aAAa,CACd,CACA,CACJ,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 type { EditorProps } from \"./Types.js\";\nimport { useEditor } from \"./editors-registry/UseEditor.js\";\nimport { StatusMessage } from \"@itwin/itwinui-react\";\n\ninterface EditorRendererProps extends EditorProps {\n /**\n * Status message shown under editor. If `string` is passed it will be rendered as `negative`\n * status message. To render different type of status message custom react component can be provided.\n */\n statusMessage?: React.ReactNode | string;\n}\n\n/**\n * Editor component that renders an editor based on the metadata and value.\n * @beta\n */\nexport function EditorRenderer({\n statusMessage,\n ...editorProps\n}: EditorRendererProps) {\n const { metadata, value } = editorProps;\n const TypeEditor = useEditor(metadata, value);\n\n if (!TypeEditor) {\n return null;\n }\n\n return (\n <>\n <TypeEditor {...editorProps} />\n {statusMessage && typeof statusMessage === \"string\" ? (\n <StatusMessage status=\"negative\">{statusMessage}</StatusMessage>\n ) : (\n statusMessage\n )}\n </>\n );\n}\n"]}
|