@itwin/imodel-components-react 4.0.0-dev.9 → 4.0.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 +156 -1
- package/README.md +2 -2
- package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts +28 -28
- package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/UiIModelComponents.js +77 -79
- package/lib/cjs/imodel-components-react/UiIModelComponents.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/AlphaSlider.d.ts +36 -36
- package/lib/cjs/imodel-components-react/color/AlphaSlider.js +190 -186
- package/lib/cjs/imodel-components-react/color/AlphaSlider.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.js +112 -107
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.scss +4 -4
- package/lib/cjs/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
- package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js +78 -74
- package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js +143 -137
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.scss +4 -5
- package/lib/cjs/imodel-components-react/color/HueSlider.d.ts +22 -22
- package/lib/cjs/imodel-components-react/color/HueSlider.js +203 -199
- package/lib/cjs/imodel-components-react/color/HueSlider.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/SaturationPicker.d.ts +20 -20
- package/lib/cjs/imodel-components-react/color/SaturationPicker.js +217 -213
- package/lib/cjs/imodel-components-react/color/SaturationPicker.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/Swatch.d.ts +22 -22
- package/lib/cjs/imodel-components-react/color/Swatch.js +64 -60
- package/lib/cjs/imodel-components-react/color/Swatch.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/Swatch.scss +1 -2
- package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
- package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js +23 -23
- package/lib/cjs/imodel-components-react/editors/ColorEditor.d.ts +44 -44
- package/lib/cjs/imodel-components-react/editors/ColorEditor.js +155 -151
- package/lib/cjs/imodel-components-react/editors/ColorEditor.js.map +1 -1
- package/lib/cjs/imodel-components-react/editors/ColorEditor.scss +1 -1
- package/lib/cjs/imodel-components-react/editors/WeightEditor.d.ts +47 -47
- package/lib/cjs/imodel-components-react/editors/WeightEditor.js +164 -160
- package/lib/cjs/imodel-components-react/editors/WeightEditor.js.map +1 -1
- package/lib/cjs/imodel-components-react/editors/WeightEditor.scss +1 -1
- package/lib/cjs/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
- package/lib/cjs/imodel-components-react/inputs/QuantityInput.js +100 -96
- package/lib/cjs/imodel-components-react/inputs/QuantityInput.js.map +1 -1
- package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
- package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js +272 -265
- package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
- package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.scss +6 -7
- package/lib/cjs/imodel-components-react/lineweight/Swatch.d.ts +33 -33
- package/lib/cjs/imodel-components-react/lineweight/Swatch.js +89 -85
- package/lib/cjs/imodel-components-react/lineweight/Swatch.js.map +1 -1
- package/lib/cjs/imodel-components-react/lineweight/Swatch.scss +1 -1
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js +163 -159
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.scss +7 -8
- package/lib/cjs/imodel-components-react/navigationaids/Cube.d.ts +45 -45
- package/lib/cjs/imodel-components-react/navigationaids/Cube.js +131 -127
- package/lib/cjs/imodel-components-react/navigationaids/Cube.js.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +154 -174
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js +631 -634
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.scss +13 -17
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js +657 -647
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.scss +4 -3
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js +103 -99
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.scss +2 -6
- package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js +57 -53
- package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
- package/lib/cjs/imodel-components-react/quantityformat/FormatSample.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js +88 -83
- package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/FormatType.js +90 -86
- package/lib/cjs/imodel-components-react/quantityformat/FormatType.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js +113 -109
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js +137 -133
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
- package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js +188 -184
- package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
- package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js +149 -145
- package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js +63 -59
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js +51 -47
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
- package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js +58 -54
- package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
- package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js +52 -48
- package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js +54 -50
- package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +62 -58
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js +51 -47
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js +60 -56
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +99 -95
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
- package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js +123 -119
- package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
- package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js +142 -143
- package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
- package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js +69 -69
- package/lib/cjs/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
- package/lib/cjs/imodel-components-react/timeline/InlineEdit.js +85 -81
- package/lib/cjs/imodel-components-react/timeline/InlineEdit.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/InlineEdit.scss +2 -2
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.js +99 -91
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.scss +9 -12
- package/lib/cjs/imodel-components-react/timeline/Scrubber.d.ts +54 -54
- package/lib/cjs/imodel-components-react/timeline/Scrubber.js +195 -191
- package/lib/cjs/imodel-components-react/timeline/Scrubber.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/Scrubber.scss +8 -15
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js +432 -424
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.scss +27 -24
- package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
- package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js +58 -54
- package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts +130 -133
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js +398 -358
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.scss +25 -11
- package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts +145 -174
- package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/interfaces.js +45 -45
- package/lib/cjs/imodel-components-react/timeline/interfaces.js.map +1 -1
- package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
- package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js +278 -274
- package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
- package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
- package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js +105 -105
- package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
- package/lib/cjs/imodel-components-react.d.ts +81 -82
- package/lib/cjs/imodel-components-react.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react.js +104 -101
- package/lib/cjs/imodel-components-react.js.map +1 -1
- package/lib/esm/imodel-components-react/UiIModelComponents.d.ts +28 -28
- package/lib/esm/imodel-components-react/UiIModelComponents.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/UiIModelComponents.js +74 -75
- package/lib/esm/imodel-components-react/UiIModelComponents.js.map +1 -1
- package/lib/esm/imodel-components-react/color/AlphaSlider.d.ts +36 -36
- package/lib/esm/imodel-components-react/color/AlphaSlider.js +160 -160
- package/lib/esm/imodel-components-react/color/AlphaSlider.js.map +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
- package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerButton.js +83 -82
- package/lib/esm/imodel-components-react/color/ColorPickerButton.js.map +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerButton.scss +4 -4
- package/lib/esm/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
- package/lib/esm/imodel-components-react/color/ColorPickerDialog.js +51 -51
- package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
- package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerPopup.js +114 -112
- package/lib/esm/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerPopup.scss +4 -5
- package/lib/esm/imodel-components-react/color/HueSlider.d.ts +22 -22
- package/lib/esm/imodel-components-react/color/HueSlider.js +173 -173
- package/lib/esm/imodel-components-react/color/SaturationPicker.d.ts +20 -20
- package/lib/esm/imodel-components-react/color/SaturationPicker.js +187 -187
- package/lib/esm/imodel-components-react/color/Swatch.d.ts +22 -22
- package/lib/esm/imodel-components-react/color/Swatch.js +34 -34
- package/lib/esm/imodel-components-react/color/Swatch.scss +1 -2
- package/lib/esm/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
- package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js +19 -19
- package/lib/esm/imodel-components-react/editors/ColorEditor.d.ts +44 -44
- package/lib/esm/imodel-components-react/editors/ColorEditor.js +124 -124
- package/lib/esm/imodel-components-react/editors/ColorEditor.scss +1 -1
- package/lib/esm/imodel-components-react/editors/WeightEditor.d.ts +47 -47
- package/lib/esm/imodel-components-react/editors/WeightEditor.js +133 -133
- package/lib/esm/imodel-components-react/editors/WeightEditor.scss +1 -1
- package/lib/esm/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
- package/lib/esm/imodel-components-react/inputs/QuantityInput.js +70 -70
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js +243 -240
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.scss +6 -7
- package/lib/esm/imodel-components-react/lineweight/Swatch.d.ts +33 -33
- package/lib/esm/imodel-components-react/lineweight/Swatch.js +59 -59
- package/lib/esm/imodel-components-react/lineweight/Swatch.scss +1 -1
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js +134 -133
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.scss +7 -8
- package/lib/esm/imodel-components-react/navigationaids/Cube.d.ts +45 -45
- package/lib/esm/imodel-components-react/navigationaids/Cube.js +100 -100
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +154 -174
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js +601 -606
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.scss +13 -17
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js +627 -620
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.scss +4 -3
- package/lib/esm/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
- package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js +76 -76
- package/lib/esm/imodel-components-react/quantityformat/FormatPanel.scss +2 -6
- package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js +30 -30
- package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
- package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/FormatSample.js +61 -60
- package/lib/esm/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/FormatType.js +63 -63
- package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js +83 -83
- package/lib/esm/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
- package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js +110 -110
- package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
- package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js +158 -158
- package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
- package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js +122 -122
- package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js +36 -36
- package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js +24 -24
- package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
- package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js +31 -31
- package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
- package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js +25 -25
- package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js +27 -27
- package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +35 -35
- package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js +24 -24
- package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js +33 -33
- package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +69 -69
- package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
- package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js +96 -96
- package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
- package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js +138 -139
- package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
- package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js +65 -65
- package/lib/esm/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
- package/lib/esm/imodel-components-react/timeline/InlineEdit.js +55 -55
- package/lib/esm/imodel-components-react/timeline/InlineEdit.scss +2 -2
- package/lib/esm/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
- package/lib/esm/imodel-components-react/timeline/PlayerButton.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/timeline/PlayerButton.js +68 -64
- package/lib/esm/imodel-components-react/timeline/PlayerButton.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/PlayerButton.scss +9 -12
- package/lib/esm/imodel-components-react/timeline/Scrubber.d.ts +54 -54
- package/lib/esm/imodel-components-react/timeline/Scrubber.js +164 -164
- package/lib/esm/imodel-components-react/timeline/Scrubber.scss +8 -15
- package/lib/esm/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
- package/lib/esm/imodel-components-react/timeline/SolarTimeline.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/timeline/SolarTimeline.js +402 -398
- package/lib/esm/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/SolarTimeline.scss +27 -24
- package/lib/esm/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
- package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js +28 -28
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts +130 -133
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.js +368 -332
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.scss +25 -11
- package/lib/esm/imodel-components-react/timeline/interfaces.d.ts +145 -174
- package/lib/esm/imodel-components-react/timeline/interfaces.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/timeline/interfaces.js +42 -42
- package/lib/esm/imodel-components-react/timeline/interfaces.js.map +1 -1
- package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
- package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/viewport/ViewportComponent.js +251 -251
- package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
- package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js +96 -95
- package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
- package/lib/esm/imodel-components-react.d.ts +81 -82
- package/lib/esm/imodel-components-react.d.ts.map +1 -1
- package/lib/esm/imodel-components-react.js +86 -87
- package/lib/esm/imodel-components-react.js.map +1 -1
- package/package.json +35 -37
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.d.ts +0 -22
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.d.ts.map +0 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js +0 -146
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js.map +0 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.scss +0 -94
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.d.ts +0 -22
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.d.ts.map +0 -1
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.js +0 -123
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.js.map +0 -1
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.scss +0 -94
|
@@ -1,159 +1,159 @@
|
|
|
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 QuantityFormat
|
|
7
|
-
*/
|
|
8
|
-
import classnames from "classnames";
|
|
9
|
-
import * as React from "react";
|
|
10
|
-
import { SpecialKey } from "@itwin/appui-abstract";
|
|
11
|
-
import { Checkbox } from "@itwin/itwinui-react";
|
|
12
|
-
import { Format, FormatTraits, FormatType, getTraitString, parseFormatType, parseScientificType, parseShowSignOption, ScientificType, scientificTypeToString, showSignOptionToString, } from "@itwin/core-quantity";
|
|
13
|
-
import { SignOptionSelector } from "./misc/SignOption";
|
|
14
|
-
import { ThousandsSeparator } from "./misc/ThousandsSeparator";
|
|
15
|
-
import { DecimalSeparatorSelector } from "./misc/DecimalSeparator";
|
|
16
|
-
import { ScientificTypeSelector } from "./misc/ScientificType";
|
|
17
|
-
import { StationSeparatorSelector } from "./misc/StationSeparatorSelector";
|
|
18
|
-
import { StationSizeSelector } from "./misc/StationSizeSelector";
|
|
19
|
-
import { UiIModelComponents } from "../UiIModelComponents";
|
|
20
|
-
/** Component use to set miscellaneous properties is a Formatted Quantity.
|
|
21
|
-
* @alpha
|
|
22
|
-
*/
|
|
23
|
-
export function MiscFormatOptions(props) {
|
|
24
|
-
var _a, _b;
|
|
25
|
-
const { formatProps, onChange, showOptions, onShowHideOptions, enableMinimumProperties } = props;
|
|
26
|
-
const handleSetFormatProps = React.useCallback((newFormatProps) => {
|
|
27
|
-
onChange && onChange(newFormatProps);
|
|
28
|
-
}, [onChange]);
|
|
29
|
-
const isFormatTraitSet = React.useCallback((trait) => {
|
|
30
|
-
return Format.isFormatTraitSetInProps(formatProps, trait);
|
|
31
|
-
}, [formatProps]);
|
|
32
|
-
const handleShowSignChange = React.useCallback((option) => {
|
|
33
|
-
const newShowSignOption = showSignOptionToString(option);
|
|
34
|
-
const newFormatProps = { ...formatProps, showSignOption: newShowSignOption };
|
|
35
|
-
handleSetFormatProps(newFormatProps);
|
|
36
|
-
}, [formatProps, handleSetFormatProps]);
|
|
37
|
-
const setFormatTrait = React.useCallback((trait, setActive) => {
|
|
38
|
-
const traitStr = getTraitString(trait);
|
|
39
|
-
let formatTraits = [traitStr];
|
|
40
|
-
if (setActive) { // setting trait
|
|
41
|
-
// istanbul ignore else
|
|
42
|
-
if (formatProps.formatTraits) {
|
|
43
|
-
const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\|/);
|
|
44
|
-
// istanbul ignore else
|
|
45
|
-
if (!traits.find((traitEntry) => traitStr === traitEntry)) {
|
|
46
|
-
formatTraits = [...traits, traitStr];
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
else { // clearing trait
|
|
51
|
-
// istanbul ignore next
|
|
52
|
-
if (!formatProps.formatTraits)
|
|
53
|
-
return;
|
|
54
|
-
const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\|/);
|
|
55
|
-
formatTraits = traits.filter((traitEntry) => traitEntry !== traitStr);
|
|
56
|
-
}
|
|
57
|
-
const newFormatProps = { ...formatProps, formatTraits };
|
|
58
|
-
handleSetFormatProps(newFormatProps);
|
|
59
|
-
}, [formatProps, handleSetFormatProps]);
|
|
60
|
-
const handleShowTrailingZeroesChange = React.useCallback((e) => {
|
|
61
|
-
setFormatTrait(FormatTraits.TrailZeroes, e.target.checked);
|
|
62
|
-
}, [setFormatTrait]);
|
|
63
|
-
const handleKeepDecimalPointChange = React.useCallback((e) => {
|
|
64
|
-
setFormatTrait(FormatTraits.KeepDecimalPoint, e.target.checked);
|
|
65
|
-
}, [setFormatTrait]);
|
|
66
|
-
const handleKeepSingleZeroChange = React.useCallback((e) => {
|
|
67
|
-
setFormatTrait(FormatTraits.KeepSingleZero, e.target.checked);
|
|
68
|
-
}, [setFormatTrait]);
|
|
69
|
-
const handleZeroEmptyChange = React.useCallback((e) => {
|
|
70
|
-
setFormatTrait(FormatTraits.ZeroEmpty, e.target.checked);
|
|
71
|
-
}, [setFormatTrait]);
|
|
72
|
-
const handleUseFractionDashChange = React.useCallback((e) => {
|
|
73
|
-
setFormatTrait(FormatTraits.FractionDash, e.target.checked);
|
|
74
|
-
}, [setFormatTrait]);
|
|
75
|
-
const handleDecimalSeparatorChange = React.useCallback((decimalSeparator) => {
|
|
76
|
-
let thousandSeparator = formatProps.thousandSeparator;
|
|
77
|
-
// make sure 1000 and decimal separator do not match
|
|
78
|
-
// istanbul ignore else
|
|
79
|
-
if (isFormatTraitSet(FormatTraits.Use1000Separator)) {
|
|
80
|
-
switch (decimalSeparator) {
|
|
81
|
-
case ".":
|
|
82
|
-
thousandSeparator = ",";
|
|
83
|
-
break;
|
|
84
|
-
case ",":
|
|
85
|
-
thousandSeparator = ".";
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const newFormatProps = { ...formatProps, thousandSeparator, decimalSeparator };
|
|
90
|
-
handleSetFormatProps(newFormatProps);
|
|
91
|
-
}, [formatProps, isFormatTraitSet, handleSetFormatProps]);
|
|
92
|
-
const handleScientificTypeChange = React.useCallback((type) => {
|
|
93
|
-
const newFormatProps = { ...formatProps, scientificType: scientificTypeToString(type) };
|
|
94
|
-
handleSetFormatProps(newFormatProps);
|
|
95
|
-
}, [formatProps, handleSetFormatProps]);
|
|
96
|
-
const handleFormatChange = React.useCallback((newFormatProps) => {
|
|
97
|
-
handleSetFormatProps(newFormatProps);
|
|
98
|
-
}, [handleSetFormatProps]);
|
|
99
|
-
const formatType = React.useMemo(() => parseFormatType(formatProps.type, "format"), [formatProps.type]);
|
|
100
|
-
const showSignOption = React.useMemo(() => { var _a; return parseShowSignOption((_a = formatProps.showSignOption) !== null && _a !== void 0 ? _a : "onlyNegative", "format"); }, [formatProps.showSignOption]);
|
|
101
|
-
const handleToggleButtonClick = React.useCallback(() => {
|
|
102
|
-
onShowHideOptions(!showOptions);
|
|
103
|
-
}, [onShowHideOptions, showOptions]);
|
|
104
|
-
const handleKeyUpOnLink = React.useCallback((e) => {
|
|
105
|
-
// istanbul ignore else
|
|
106
|
-
if (e.key === SpecialKey.Enter || e.key === SpecialKey.Space) {
|
|
107
|
-
onShowHideOptions(!showOptions);
|
|
108
|
-
e.preventDefault();
|
|
109
|
-
}
|
|
110
|
-
}, [onShowHideOptions, showOptions]);
|
|
111
|
-
const handleStationSeparatorChange = React.useCallback((value) => {
|
|
112
|
-
const newFormatProps = { ...formatProps, stationSeparator: value };
|
|
113
|
-
handleSetFormatProps(newFormatProps);
|
|
114
|
-
}, [formatProps, handleSetFormatProps]);
|
|
115
|
-
const handleStationOffsetChange = React.useCallback((value) => {
|
|
116
|
-
const newFormatProps = { ...formatProps, stationOffsetSize: value };
|
|
117
|
-
handleSetFormatProps(newFormatProps);
|
|
118
|
-
}, [formatProps, handleSetFormatProps]);
|
|
119
|
-
const signOptionLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.signOptionLabel"));
|
|
120
|
-
const stationOffsetLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.stationOffsetLabel"));
|
|
121
|
-
const stationSeparatorLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.stationSeparatorLabel"));
|
|
122
|
-
const decimalSeparatorLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.decimalSeparatorLabel"));
|
|
123
|
-
const showTrailZerosLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.showTrailZerosLabel"));
|
|
124
|
-
const keepSingleZeroLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.keepSingleZeroLabel"));
|
|
125
|
-
const zeroEmptyLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.zeroEmptyLabel"));
|
|
126
|
-
const moreLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.moreLabel"));
|
|
127
|
-
const lessLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.lessLabel"));
|
|
128
|
-
const keepDecimalPointLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.keepDecimalPointLabel"));
|
|
129
|
-
const fractionDashLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.fractionDashLabel"));
|
|
130
|
-
const scientificTypeLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.scientificTypeLabel"));
|
|
131
|
-
return (React.createElement(React.Fragment, null,
|
|
132
|
-
enableMinimumProperties && !showOptions && React.createElement("a", { onClick: handleToggleButtonClick, onKeyUp: handleKeyUpOnLink, className: "components-quantityFormat-more-less", role: "link", "data-testid": "quantityFormat-more", tabIndex: 0 }, moreLabel.current),
|
|
133
|
-
(!enableMinimumProperties || showOptions) &&
|
|
134
|
-
React.createElement(React.Fragment, null,
|
|
135
|
-
React.createElement("span", { className: "uicore-label" }, signOptionLabel.current),
|
|
136
|
-
React.createElement(SignOptionSelector, { "data-testid": "sign-option-selector", signOption: showSignOption, onChange: handleShowSignChange }),
|
|
137
|
-
React.createElement("span", { className: classnames("uicore-label", formatType !== FormatType.Station && "uicore-disabled") }, stationOffsetLabel.current),
|
|
138
|
-
React.createElement(StationSizeSelector, { "data-testid": "station-size-selector", value: ((_a = formatProps.stationOffsetSize) !== null && _a !== void 0 ? _a : 2), disabled: formatType !== FormatType.Station, onChange: handleStationOffsetChange }),
|
|
139
|
-
React.createElement("span", { className: classnames("uicore-label", formatType !== FormatType.Station && "uicore-disabled") }, stationSeparatorLabel.current),
|
|
140
|
-
React.createElement(StationSeparatorSelector, { "data-testid": "station-separator-selector", separator: (undefined !== formatProps.stationSeparator ? formatProps.stationSeparator : "+"), disabled: formatType !== FormatType.Station, onChange: handleStationSeparatorChange }),
|
|
141
|
-
React.createElement(ThousandsSeparator, { formatProps: formatProps, onChange: handleFormatChange }),
|
|
142
|
-
React.createElement("span", { className: classnames("uicore-label", formatType === FormatType.Fractional && "uicore-disabled") }, decimalSeparatorLabel.current),
|
|
143
|
-
React.createElement(DecimalSeparatorSelector, { "data-testid": "decimal-separator-selector", separator: (_b = formatProps.decimalSeparator) !== null && _b !== void 0 ? _b : ".", onChange: handleDecimalSeparatorChange, disabled: formatType === FormatType.Fractional }),
|
|
144
|
-
React.createElement("span", { className: "uicore-label" }, showTrailZerosLabel.current),
|
|
145
|
-
React.createElement(Checkbox, { "data-testid": "show-trail-zeros", checked: isFormatTraitSet(FormatTraits.TrailZeroes), onChange: handleShowTrailingZeroesChange }),
|
|
146
|
-
React.createElement("span", { className: classnames("uicore-label", formatType === FormatType.Fractional && "uicore-disabled") }, keepDecimalPointLabel.current),
|
|
147
|
-
React.createElement(Checkbox, { "data-testid": "keep-decimal-point", checked: isFormatTraitSet(FormatTraits.KeepDecimalPoint), onChange: handleKeepDecimalPointChange }),
|
|
148
|
-
React.createElement("span", { className: "uicore-label" }, keepSingleZeroLabel.current),
|
|
149
|
-
React.createElement(Checkbox, { "data-testid": "keep-single-zero", checked: isFormatTraitSet(FormatTraits.KeepSingleZero), onChange: handleKeepSingleZeroChange }),
|
|
150
|
-
React.createElement("span", { className: "uicore-label" }, zeroEmptyLabel.current),
|
|
151
|
-
React.createElement(Checkbox, { "data-testid": "zero-empty", checked: isFormatTraitSet(FormatTraits.ZeroEmpty), onChange: handleZeroEmptyChange }),
|
|
152
|
-
React.createElement("span", { className: classnames("uicore-label", formatType !== FormatType.Fractional && "uicore-disabled") }, fractionDashLabel.current),
|
|
153
|
-
React.createElement(Checkbox, { "data-testid": "fraction-dash", checked: isFormatTraitSet(FormatTraits.FractionDash), onChange: handleUseFractionDashChange, disabled: formatType !== FormatType.Fractional }),
|
|
154
|
-
React.createElement("span", { className: classnames("uicore-label", formatType !== FormatType.Scientific && "uicore-disabled") }, scientificTypeLabel.current),
|
|
155
|
-
React.createElement(ScientificTypeSelector, { "data-testid": "scientific-type-selector", type: (formatProps.scientificType && formatProps.scientificType.length > 0) ? parseScientificType(formatProps.scientificType, "custom") : ScientificType.Normalized, disabled: formatType !== FormatType.Scientific, onChange: handleScientificTypeChange }),
|
|
156
|
-
props.children,
|
|
157
|
-
enableMinimumProperties && showOptions && React.createElement("a", { onClick: handleToggleButtonClick, onKeyUp: handleKeyUpOnLink, className: "components-quantityFormat-more-less", role: "link", "data-testid": "quantityFormat-less", tabIndex: 0 }, lessLabel.current))));
|
|
158
|
-
}
|
|
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 QuantityFormat
|
|
7
|
+
*/
|
|
8
|
+
import classnames from "classnames";
|
|
9
|
+
import * as React from "react";
|
|
10
|
+
import { SpecialKey } from "@itwin/appui-abstract";
|
|
11
|
+
import { Checkbox } from "@itwin/itwinui-react";
|
|
12
|
+
import { Format, FormatTraits, FormatType, getTraitString, parseFormatType, parseScientificType, parseShowSignOption, ScientificType, scientificTypeToString, showSignOptionToString, } from "@itwin/core-quantity";
|
|
13
|
+
import { SignOptionSelector } from "./misc/SignOption";
|
|
14
|
+
import { ThousandsSeparator } from "./misc/ThousandsSeparator";
|
|
15
|
+
import { DecimalSeparatorSelector } from "./misc/DecimalSeparator";
|
|
16
|
+
import { ScientificTypeSelector } from "./misc/ScientificType";
|
|
17
|
+
import { StationSeparatorSelector } from "./misc/StationSeparatorSelector";
|
|
18
|
+
import { StationSizeSelector } from "./misc/StationSizeSelector";
|
|
19
|
+
import { UiIModelComponents } from "../UiIModelComponents";
|
|
20
|
+
/** Component use to set miscellaneous properties is a Formatted Quantity.
|
|
21
|
+
* @alpha
|
|
22
|
+
*/
|
|
23
|
+
export function MiscFormatOptions(props) {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
const { formatProps, onChange, showOptions, onShowHideOptions, enableMinimumProperties } = props;
|
|
26
|
+
const handleSetFormatProps = React.useCallback((newFormatProps) => {
|
|
27
|
+
onChange && onChange(newFormatProps);
|
|
28
|
+
}, [onChange]);
|
|
29
|
+
const isFormatTraitSet = React.useCallback((trait) => {
|
|
30
|
+
return Format.isFormatTraitSetInProps(formatProps, trait);
|
|
31
|
+
}, [formatProps]);
|
|
32
|
+
const handleShowSignChange = React.useCallback((option) => {
|
|
33
|
+
const newShowSignOption = showSignOptionToString(option);
|
|
34
|
+
const newFormatProps = { ...formatProps, showSignOption: newShowSignOption };
|
|
35
|
+
handleSetFormatProps(newFormatProps);
|
|
36
|
+
}, [formatProps, handleSetFormatProps]);
|
|
37
|
+
const setFormatTrait = React.useCallback((trait, setActive) => {
|
|
38
|
+
const traitStr = getTraitString(trait);
|
|
39
|
+
let formatTraits = [traitStr];
|
|
40
|
+
if (setActive) { // setting trait
|
|
41
|
+
// istanbul ignore else
|
|
42
|
+
if (formatProps.formatTraits) {
|
|
43
|
+
const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\|/);
|
|
44
|
+
// istanbul ignore else
|
|
45
|
+
if (!traits.find((traitEntry) => traitStr === traitEntry)) {
|
|
46
|
+
formatTraits = [...traits, traitStr];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else { // clearing trait
|
|
51
|
+
// istanbul ignore next
|
|
52
|
+
if (!formatProps.formatTraits)
|
|
53
|
+
return;
|
|
54
|
+
const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\|/);
|
|
55
|
+
formatTraits = traits.filter((traitEntry) => traitEntry !== traitStr);
|
|
56
|
+
}
|
|
57
|
+
const newFormatProps = { ...formatProps, formatTraits };
|
|
58
|
+
handleSetFormatProps(newFormatProps);
|
|
59
|
+
}, [formatProps, handleSetFormatProps]);
|
|
60
|
+
const handleShowTrailingZeroesChange = React.useCallback((e) => {
|
|
61
|
+
setFormatTrait(FormatTraits.TrailZeroes, e.target.checked);
|
|
62
|
+
}, [setFormatTrait]);
|
|
63
|
+
const handleKeepDecimalPointChange = React.useCallback((e) => {
|
|
64
|
+
setFormatTrait(FormatTraits.KeepDecimalPoint, e.target.checked);
|
|
65
|
+
}, [setFormatTrait]);
|
|
66
|
+
const handleKeepSingleZeroChange = React.useCallback((e) => {
|
|
67
|
+
setFormatTrait(FormatTraits.KeepSingleZero, e.target.checked);
|
|
68
|
+
}, [setFormatTrait]);
|
|
69
|
+
const handleZeroEmptyChange = React.useCallback((e) => {
|
|
70
|
+
setFormatTrait(FormatTraits.ZeroEmpty, e.target.checked);
|
|
71
|
+
}, [setFormatTrait]);
|
|
72
|
+
const handleUseFractionDashChange = React.useCallback((e) => {
|
|
73
|
+
setFormatTrait(FormatTraits.FractionDash, e.target.checked);
|
|
74
|
+
}, [setFormatTrait]);
|
|
75
|
+
const handleDecimalSeparatorChange = React.useCallback((decimalSeparator) => {
|
|
76
|
+
let thousandSeparator = formatProps.thousandSeparator;
|
|
77
|
+
// make sure 1000 and decimal separator do not match
|
|
78
|
+
// istanbul ignore else
|
|
79
|
+
if (isFormatTraitSet(FormatTraits.Use1000Separator)) {
|
|
80
|
+
switch (decimalSeparator) {
|
|
81
|
+
case ".":
|
|
82
|
+
thousandSeparator = ",";
|
|
83
|
+
break;
|
|
84
|
+
case ",":
|
|
85
|
+
thousandSeparator = ".";
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const newFormatProps = { ...formatProps, thousandSeparator, decimalSeparator };
|
|
90
|
+
handleSetFormatProps(newFormatProps);
|
|
91
|
+
}, [formatProps, isFormatTraitSet, handleSetFormatProps]);
|
|
92
|
+
const handleScientificTypeChange = React.useCallback((type) => {
|
|
93
|
+
const newFormatProps = { ...formatProps, scientificType: scientificTypeToString(type) };
|
|
94
|
+
handleSetFormatProps(newFormatProps);
|
|
95
|
+
}, [formatProps, handleSetFormatProps]);
|
|
96
|
+
const handleFormatChange = React.useCallback((newFormatProps) => {
|
|
97
|
+
handleSetFormatProps(newFormatProps);
|
|
98
|
+
}, [handleSetFormatProps]);
|
|
99
|
+
const formatType = React.useMemo(() => parseFormatType(formatProps.type, "format"), [formatProps.type]);
|
|
100
|
+
const showSignOption = React.useMemo(() => { var _a; return parseShowSignOption((_a = formatProps.showSignOption) !== null && _a !== void 0 ? _a : "onlyNegative", "format"); }, [formatProps.showSignOption]);
|
|
101
|
+
const handleToggleButtonClick = React.useCallback(() => {
|
|
102
|
+
onShowHideOptions(!showOptions);
|
|
103
|
+
}, [onShowHideOptions, showOptions]);
|
|
104
|
+
const handleKeyUpOnLink = React.useCallback((e) => {
|
|
105
|
+
// istanbul ignore else
|
|
106
|
+
if (e.key === SpecialKey.Enter || e.key === SpecialKey.Space) {
|
|
107
|
+
onShowHideOptions(!showOptions);
|
|
108
|
+
e.preventDefault();
|
|
109
|
+
}
|
|
110
|
+
}, [onShowHideOptions, showOptions]);
|
|
111
|
+
const handleStationSeparatorChange = React.useCallback((value) => {
|
|
112
|
+
const newFormatProps = { ...formatProps, stationSeparator: value };
|
|
113
|
+
handleSetFormatProps(newFormatProps);
|
|
114
|
+
}, [formatProps, handleSetFormatProps]);
|
|
115
|
+
const handleStationOffsetChange = React.useCallback((value) => {
|
|
116
|
+
const newFormatProps = { ...formatProps, stationOffsetSize: value };
|
|
117
|
+
handleSetFormatProps(newFormatProps);
|
|
118
|
+
}, [formatProps, handleSetFormatProps]);
|
|
119
|
+
const signOptionLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.signOptionLabel"));
|
|
120
|
+
const stationOffsetLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.stationOffsetLabel"));
|
|
121
|
+
const stationSeparatorLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.stationSeparatorLabel"));
|
|
122
|
+
const decimalSeparatorLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.decimalSeparatorLabel"));
|
|
123
|
+
const showTrailZerosLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.showTrailZerosLabel"));
|
|
124
|
+
const keepSingleZeroLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.keepSingleZeroLabel"));
|
|
125
|
+
const zeroEmptyLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.zeroEmptyLabel"));
|
|
126
|
+
const moreLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.moreLabel"));
|
|
127
|
+
const lessLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.lessLabel"));
|
|
128
|
+
const keepDecimalPointLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.keepDecimalPointLabel"));
|
|
129
|
+
const fractionDashLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.fractionDashLabel"));
|
|
130
|
+
const scientificTypeLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.scientificTypeLabel"));
|
|
131
|
+
return (React.createElement(React.Fragment, null,
|
|
132
|
+
enableMinimumProperties && !showOptions && React.createElement("a", { onClick: handleToggleButtonClick, onKeyUp: handleKeyUpOnLink, className: "components-quantityFormat-more-less", role: "link", "data-testid": "quantityFormat-more", tabIndex: 0 }, moreLabel.current),
|
|
133
|
+
(!enableMinimumProperties || showOptions) &&
|
|
134
|
+
React.createElement(React.Fragment, null,
|
|
135
|
+
React.createElement("span", { className: "uicore-label" }, signOptionLabel.current),
|
|
136
|
+
React.createElement(SignOptionSelector, { "data-testid": "sign-option-selector", signOption: showSignOption, onChange: handleShowSignChange }),
|
|
137
|
+
React.createElement("span", { className: classnames("uicore-label", formatType !== FormatType.Station && "uicore-disabled") }, stationOffsetLabel.current),
|
|
138
|
+
React.createElement(StationSizeSelector, { "data-testid": "station-size-selector", value: ((_a = formatProps.stationOffsetSize) !== null && _a !== void 0 ? _a : 2), disabled: formatType !== FormatType.Station, onChange: handleStationOffsetChange }),
|
|
139
|
+
React.createElement("span", { className: classnames("uicore-label", formatType !== FormatType.Station && "uicore-disabled") }, stationSeparatorLabel.current),
|
|
140
|
+
React.createElement(StationSeparatorSelector, { "data-testid": "station-separator-selector", separator: (undefined !== formatProps.stationSeparator ? formatProps.stationSeparator : "+"), disabled: formatType !== FormatType.Station, onChange: handleStationSeparatorChange }),
|
|
141
|
+
React.createElement(ThousandsSeparator, { formatProps: formatProps, onChange: handleFormatChange }),
|
|
142
|
+
React.createElement("span", { className: classnames("uicore-label", formatType === FormatType.Fractional && "uicore-disabled") }, decimalSeparatorLabel.current),
|
|
143
|
+
React.createElement(DecimalSeparatorSelector, { "data-testid": "decimal-separator-selector", separator: (_b = formatProps.decimalSeparator) !== null && _b !== void 0 ? _b : ".", onChange: handleDecimalSeparatorChange, disabled: formatType === FormatType.Fractional }),
|
|
144
|
+
React.createElement("span", { className: "uicore-label" }, showTrailZerosLabel.current),
|
|
145
|
+
React.createElement(Checkbox, { "data-testid": "show-trail-zeros", checked: isFormatTraitSet(FormatTraits.TrailZeroes), onChange: handleShowTrailingZeroesChange }),
|
|
146
|
+
React.createElement("span", { className: classnames("uicore-label", formatType === FormatType.Fractional && "uicore-disabled") }, keepDecimalPointLabel.current),
|
|
147
|
+
React.createElement(Checkbox, { "data-testid": "keep-decimal-point", checked: isFormatTraitSet(FormatTraits.KeepDecimalPoint), onChange: handleKeepDecimalPointChange }),
|
|
148
|
+
React.createElement("span", { className: "uicore-label" }, keepSingleZeroLabel.current),
|
|
149
|
+
React.createElement(Checkbox, { "data-testid": "keep-single-zero", checked: isFormatTraitSet(FormatTraits.KeepSingleZero), onChange: handleKeepSingleZeroChange }),
|
|
150
|
+
React.createElement("span", { className: "uicore-label" }, zeroEmptyLabel.current),
|
|
151
|
+
React.createElement(Checkbox, { "data-testid": "zero-empty", checked: isFormatTraitSet(FormatTraits.ZeroEmpty), onChange: handleZeroEmptyChange }),
|
|
152
|
+
React.createElement("span", { className: classnames("uicore-label", formatType !== FormatType.Fractional && "uicore-disabled") }, fractionDashLabel.current),
|
|
153
|
+
React.createElement(Checkbox, { "data-testid": "fraction-dash", checked: isFormatTraitSet(FormatTraits.FractionDash), onChange: handleUseFractionDashChange, disabled: formatType !== FormatType.Fractional }),
|
|
154
|
+
React.createElement("span", { className: classnames("uicore-label", formatType !== FormatType.Scientific && "uicore-disabled") }, scientificTypeLabel.current),
|
|
155
|
+
React.createElement(ScientificTypeSelector, { "data-testid": "scientific-type-selector", type: (formatProps.scientificType && formatProps.scientificType.length > 0) ? parseScientificType(formatProps.scientificType, "custom") : ScientificType.Normalized, disabled: formatType !== FormatType.Scientific, onChange: handleScientificTypeChange }),
|
|
156
|
+
props.children,
|
|
157
|
+
enableMinimumProperties && showOptions && React.createElement("a", { onClick: handleToggleButtonClick, onKeyUp: handleKeyUpOnLink, className: "components-quantityFormat-more-less", role: "link", "data-testid": "quantityFormat-less", tabIndex: 0 }, lessLabel.current))));
|
|
158
|
+
}
|
|
159
159
|
//# sourceMappingURL=MiscFormatOptions.js.map
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
/** @packageDocumentation
|
|
2
|
-
* @module QuantityFormat
|
|
3
|
-
*/
|
|
4
|
-
/// <reference types="react" />
|
|
5
|
-
import { QuantityTypeArg } from "@itwin/core-frontend";
|
|
6
|
-
import { FormatProps } from "@itwin/core-quantity";
|
|
7
|
-
import { CommonProps } from "@itwin/core-react";
|
|
8
|
-
/** Properties of [[QuantityFormatPanel]] component.
|
|
9
|
-
* @alpha
|
|
10
|
-
*/
|
|
11
|
-
export interface QuantityFormatPanelProps extends CommonProps {
|
|
12
|
-
quantityType: QuantityTypeArg;
|
|
13
|
-
onFormatChange?: (format: FormatProps) => void;
|
|
14
|
-
/** props below are to be passed on to FormatPanel */
|
|
15
|
-
showSample?: boolean;
|
|
16
|
-
initialMagnitude?: number;
|
|
17
|
-
enableMinimumProperties?: boolean;
|
|
18
|
-
}
|
|
19
|
-
/** Component to set properties that control Quantity Formatting.
|
|
20
|
-
* @alpha
|
|
21
|
-
*/
|
|
22
|
-
export declare function QuantityFormatPanel(props: QuantityFormatPanelProps): JSX.Element;
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module QuantityFormat
|
|
3
|
+
*/
|
|
4
|
+
/// <reference types="react" />
|
|
5
|
+
import { QuantityTypeArg } from "@itwin/core-frontend";
|
|
6
|
+
import { FormatProps } from "@itwin/core-quantity";
|
|
7
|
+
import { CommonProps } from "@itwin/core-react";
|
|
8
|
+
/** Properties of [[QuantityFormatPanel]] component.
|
|
9
|
+
* @alpha
|
|
10
|
+
*/
|
|
11
|
+
export interface QuantityFormatPanelProps extends CommonProps {
|
|
12
|
+
quantityType: QuantityTypeArg;
|
|
13
|
+
onFormatChange?: (format: FormatProps) => void;
|
|
14
|
+
/** props below are to be passed on to FormatPanel */
|
|
15
|
+
showSample?: boolean;
|
|
16
|
+
initialMagnitude?: number;
|
|
17
|
+
enableMinimumProperties?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** Component to set properties that control Quantity Formatting.
|
|
20
|
+
* @alpha
|
|
21
|
+
*/
|
|
22
|
+
export declare function QuantityFormatPanel(props: QuantityFormatPanelProps): JSX.Element;
|
|
23
23
|
//# sourceMappingURL=QuantityFormatPanel.d.ts.map
|
|
@@ -1,123 +1,123 @@
|
|
|
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 QuantityFormat
|
|
7
|
-
*/
|
|
8
|
-
import * as React from "react";
|
|
9
|
-
import { getQuantityTypeKey, IModelApp, isCheckboxFormatPropEditorSpec, isCustomQuantityTypeDefinition, isTextInputFormatPropEditorSpec, isTextSelectFormatPropEditorSpec, } from "@itwin/core-frontend";
|
|
10
|
-
import { Checkbox, Input, Select } from "@itwin/itwinui-react";
|
|
11
|
-
import { FormatPanel } from "./FormatPanel";
|
|
12
|
-
import { DeepCompare } from "@itwin/core-geometry";
|
|
13
|
-
function createTextInputFormatPropEditor(key, label, inProps, getString, setString, fireFormatChange) {
|
|
14
|
-
const value = getString(inProps);
|
|
15
|
-
return (React.createElement(React.Fragment, { key: `${key}` },
|
|
16
|
-
React.createElement("span", { key: `${key}-label`, className: "uicore-label" }, label),
|
|
17
|
-
React.createElement(Input, { "data-testid": `${key}-editor`, key: `${key}-editor`, value: value, size: "small", onChange: (e) => {
|
|
18
|
-
const newProps = setString(inProps, e.currentTarget.value);
|
|
19
|
-
fireFormatChange(newProps);
|
|
20
|
-
} })));
|
|
21
|
-
}
|
|
22
|
-
function createSelectFormatPropEditor(key, label, options, inProps, getString, setString, fireFormatChange) {
|
|
23
|
-
const value = getString(inProps);
|
|
24
|
-
return (React.createElement(React.Fragment, { key: `${key}` },
|
|
25
|
-
React.createElement("span", { key: `${key}-label`, className: "uicore-label" }, label),
|
|
26
|
-
React.createElement(Select, { "data-testid": `${key}-editor`, key: `${key}-editor`, value: value, options: options, size: "small", onChange: (newValue) => {
|
|
27
|
-
const newProps = setString(inProps, newValue);
|
|
28
|
-
fireFormatChange(newProps);
|
|
29
|
-
} })));
|
|
30
|
-
}
|
|
31
|
-
function createCheckboxFormatPropEditor(key, label, inProps, getBool, setBool, fireFormatChange) {
|
|
32
|
-
const isChecked = getBool(inProps);
|
|
33
|
-
return (React.createElement(React.Fragment, { key: `${key}` },
|
|
34
|
-
React.createElement("span", { key: `${key}-label`, className: "uicore-label" }, label),
|
|
35
|
-
React.createElement(Checkbox, { "data-testid": `${key}-editor`, key: `${key}-editor`, checked: isChecked, onChange: (e) => {
|
|
36
|
-
const newProps = setBool(inProps, e.target.checked);
|
|
37
|
-
fireFormatChange(newProps);
|
|
38
|
-
} })));
|
|
39
|
-
}
|
|
40
|
-
function formatAreEqual(obj1, obj2) {
|
|
41
|
-
const compare = new DeepCompare();
|
|
42
|
-
return compare.compare(obj1, obj2);
|
|
43
|
-
}
|
|
44
|
-
/** Component to set properties that control Quantity Formatting.
|
|
45
|
-
* @alpha
|
|
46
|
-
*/
|
|
47
|
-
export function QuantityFormatPanel(props) {
|
|
48
|
-
const { quantityType, onFormatChange, ...otherProps } = props;
|
|
49
|
-
const [formatProps, setFormatProps] = React.useState();
|
|
50
|
-
const initialFormatProps = React.useRef();
|
|
51
|
-
const [persistenceUnit, setPersistenceUnit] = React.useState();
|
|
52
|
-
React.useEffect(() => {
|
|
53
|
-
const newFormatProps = IModelApp.quantityFormatter.getFormatPropsByQuantityType(quantityType);
|
|
54
|
-
// istanbul ignore else
|
|
55
|
-
if (!initialFormatProps.current)
|
|
56
|
-
initialFormatProps.current = newFormatProps;
|
|
57
|
-
setFormatProps(newFormatProps);
|
|
58
|
-
const quantityTypeKey = getQuantityTypeKey(quantityType);
|
|
59
|
-
const quantityTypeDefinition = IModelApp.quantityFormatter.quantityTypesRegistry.get(quantityTypeKey);
|
|
60
|
-
// istanbul ignore else
|
|
61
|
-
if (quantityTypeDefinition)
|
|
62
|
-
setPersistenceUnit(quantityTypeDefinition.persistenceUnit);
|
|
63
|
-
else
|
|
64
|
-
throw Error(`Unable to locate a quantity type with type ${quantityType}`);
|
|
65
|
-
}, [quantityType]); // no dependencies defined as we want this to run on every render
|
|
66
|
-
// handle case where quantityType does not change but the formatProps for that quantity type has (ie after a Set or Clear)
|
|
67
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
68
|
-
React.useEffect(() => {
|
|
69
|
-
const newFormatProps = IModelApp.quantityFormatter.getFormatPropsByQuantityType(quantityType);
|
|
70
|
-
// istanbul ignore else
|
|
71
|
-
if (initialFormatProps.current && newFormatProps) {
|
|
72
|
-
if (!formatAreEqual(newFormatProps, initialFormatProps.current)) {
|
|
73
|
-
initialFormatProps.current = newFormatProps;
|
|
74
|
-
setFormatProps(newFormatProps);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}); // no dependencies defined as we want this to run on every render
|
|
78
|
-
const handleOnFormatChanged = React.useCallback(async (newProps) => {
|
|
79
|
-
setFormatProps(newProps);
|
|
80
|
-
onFormatChange && onFormatChange(newProps);
|
|
81
|
-
}, [onFormatChange]);
|
|
82
|
-
const createCustomPropEditors = React.useCallback((specs, inProps, fireFormatChange) => {
|
|
83
|
-
return specs.map((spec, index) => {
|
|
84
|
-
if (isCheckboxFormatPropEditorSpec(spec))
|
|
85
|
-
return createCheckboxFormatPropEditor(`${spec.editorType}-${index}`, spec.label, inProps, spec.getBool, spec.setBool, fireFormatChange);
|
|
86
|
-
if (isTextSelectFormatPropEditorSpec(spec))
|
|
87
|
-
return createSelectFormatPropEditor(`${spec.editorType}-${index}`, spec.label, spec.selectOptions, inProps, spec.getString, spec.setString, fireFormatChange);
|
|
88
|
-
/* istanbul ignore else */
|
|
89
|
-
if (isTextInputFormatPropEditorSpec(spec))
|
|
90
|
-
return createTextInputFormatPropEditor(`${spec.editorType}-${index}`, spec.label, inProps, spec.getString, spec.setString, fireFormatChange);
|
|
91
|
-
/* istanbul ignore next */
|
|
92
|
-
return React.createElement("div", { key: index });
|
|
93
|
-
});
|
|
94
|
-
}, []);
|
|
95
|
-
const providePrimaryChildren = React.useCallback((inProps, fireFormatChange) => {
|
|
96
|
-
const quantityTypeKey = getQuantityTypeKey(quantityType);
|
|
97
|
-
const quantityTypeDefinition = IModelApp.quantityFormatter.quantityTypesRegistry.get(quantityTypeKey);
|
|
98
|
-
if (quantityTypeDefinition && isCustomQuantityTypeDefinition(quantityTypeDefinition) &&
|
|
99
|
-
quantityTypeDefinition.isCompatibleFormatProps(inProps)) {
|
|
100
|
-
// istanbul ignore else
|
|
101
|
-
if (quantityTypeDefinition.primaryPropEditorSpecs)
|
|
102
|
-
return createCustomPropEditors(quantityTypeDefinition.primaryPropEditorSpecs, inProps, fireFormatChange);
|
|
103
|
-
}
|
|
104
|
-
return null;
|
|
105
|
-
}, [createCustomPropEditors, quantityType]);
|
|
106
|
-
const provideSecondaryChildren = React.useCallback((inProps, fireFormatChange) => {
|
|
107
|
-
const quantityTypeKey = getQuantityTypeKey(quantityType);
|
|
108
|
-
const quantityTypeDefinition = IModelApp.quantityFormatter.quantityTypesRegistry.get(quantityTypeKey);
|
|
109
|
-
if (quantityTypeDefinition && isCustomQuantityTypeDefinition(quantityTypeDefinition) &&
|
|
110
|
-
quantityTypeDefinition.isCompatibleFormatProps(inProps)) {
|
|
111
|
-
// istanbul ignore else
|
|
112
|
-
if (quantityTypeDefinition.secondaryPropEditorSpecs)
|
|
113
|
-
return createCustomPropEditors(quantityTypeDefinition.secondaryPropEditorSpecs, inProps, fireFormatChange);
|
|
114
|
-
}
|
|
115
|
-
return null;
|
|
116
|
-
}, [createCustomPropEditors, quantityType]);
|
|
117
|
-
const provideFormatSpec = React.useCallback(async (inProps, _persistenceUnit, _unitsProvider) => {
|
|
118
|
-
return IModelApp.quantityFormatter.generateFormatterSpecByType(quantityType, inProps);
|
|
119
|
-
}, [quantityType]);
|
|
120
|
-
return (React.createElement("div", { className: "components-quantityFormat-quantityPanel" }, persistenceUnit && formatProps &&
|
|
121
|
-
React.createElement(FormatPanel, { onFormatChange: handleOnFormatChanged, ...otherProps, initialFormat: formatProps, unitsProvider: IModelApp.quantityFormatter.unitsProvider, persistenceUnit: persistenceUnit, providePrimaryChildren: providePrimaryChildren, provideSecondaryChildren: provideSecondaryChildren, provideFormatSpec: provideFormatSpec })));
|
|
122
|
-
}
|
|
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 QuantityFormat
|
|
7
|
+
*/
|
|
8
|
+
import * as React from "react";
|
|
9
|
+
import { getQuantityTypeKey, IModelApp, isCheckboxFormatPropEditorSpec, isCustomQuantityTypeDefinition, isTextInputFormatPropEditorSpec, isTextSelectFormatPropEditorSpec, } from "@itwin/core-frontend";
|
|
10
|
+
import { Checkbox, Input, Select } from "@itwin/itwinui-react";
|
|
11
|
+
import { FormatPanel } from "./FormatPanel";
|
|
12
|
+
import { DeepCompare } from "@itwin/core-geometry";
|
|
13
|
+
function createTextInputFormatPropEditor(key, label, inProps, getString, setString, fireFormatChange) {
|
|
14
|
+
const value = getString(inProps);
|
|
15
|
+
return (React.createElement(React.Fragment, { key: `${key}` },
|
|
16
|
+
React.createElement("span", { key: `${key}-label`, className: "uicore-label" }, label),
|
|
17
|
+
React.createElement(Input, { "data-testid": `${key}-editor`, key: `${key}-editor`, value: value, size: "small", onChange: (e) => {
|
|
18
|
+
const newProps = setString(inProps, e.currentTarget.value);
|
|
19
|
+
fireFormatChange(newProps);
|
|
20
|
+
} })));
|
|
21
|
+
}
|
|
22
|
+
function createSelectFormatPropEditor(key, label, options, inProps, getString, setString, fireFormatChange) {
|
|
23
|
+
const value = getString(inProps);
|
|
24
|
+
return (React.createElement(React.Fragment, { key: `${key}` },
|
|
25
|
+
React.createElement("span", { key: `${key}-label`, className: "uicore-label" }, label),
|
|
26
|
+
React.createElement(Select, { "data-testid": `${key}-editor`, key: `${key}-editor`, value: value, options: options, size: "small", onChange: (newValue) => {
|
|
27
|
+
const newProps = setString(inProps, newValue);
|
|
28
|
+
fireFormatChange(newProps);
|
|
29
|
+
} })));
|
|
30
|
+
}
|
|
31
|
+
function createCheckboxFormatPropEditor(key, label, inProps, getBool, setBool, fireFormatChange) {
|
|
32
|
+
const isChecked = getBool(inProps);
|
|
33
|
+
return (React.createElement(React.Fragment, { key: `${key}` },
|
|
34
|
+
React.createElement("span", { key: `${key}-label`, className: "uicore-label" }, label),
|
|
35
|
+
React.createElement(Checkbox, { "data-testid": `${key}-editor`, key: `${key}-editor`, checked: isChecked, onChange: (e) => {
|
|
36
|
+
const newProps = setBool(inProps, e.target.checked);
|
|
37
|
+
fireFormatChange(newProps);
|
|
38
|
+
} })));
|
|
39
|
+
}
|
|
40
|
+
function formatAreEqual(obj1, obj2) {
|
|
41
|
+
const compare = new DeepCompare();
|
|
42
|
+
return compare.compare(obj1, obj2);
|
|
43
|
+
}
|
|
44
|
+
/** Component to set properties that control Quantity Formatting.
|
|
45
|
+
* @alpha
|
|
46
|
+
*/
|
|
47
|
+
export function QuantityFormatPanel(props) {
|
|
48
|
+
const { quantityType, onFormatChange, ...otherProps } = props;
|
|
49
|
+
const [formatProps, setFormatProps] = React.useState();
|
|
50
|
+
const initialFormatProps = React.useRef();
|
|
51
|
+
const [persistenceUnit, setPersistenceUnit] = React.useState();
|
|
52
|
+
React.useEffect(() => {
|
|
53
|
+
const newFormatProps = IModelApp.quantityFormatter.getFormatPropsByQuantityType(quantityType);
|
|
54
|
+
// istanbul ignore else
|
|
55
|
+
if (!initialFormatProps.current)
|
|
56
|
+
initialFormatProps.current = newFormatProps;
|
|
57
|
+
setFormatProps(newFormatProps);
|
|
58
|
+
const quantityTypeKey = getQuantityTypeKey(quantityType);
|
|
59
|
+
const quantityTypeDefinition = IModelApp.quantityFormatter.quantityTypesRegistry.get(quantityTypeKey);
|
|
60
|
+
// istanbul ignore else
|
|
61
|
+
if (quantityTypeDefinition)
|
|
62
|
+
setPersistenceUnit(quantityTypeDefinition.persistenceUnit);
|
|
63
|
+
else
|
|
64
|
+
throw Error(`Unable to locate a quantity type with type ${quantityType}`);
|
|
65
|
+
}, [quantityType]); // no dependencies defined as we want this to run on every render
|
|
66
|
+
// handle case where quantityType does not change but the formatProps for that quantity type has (ie after a Set or Clear)
|
|
67
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
68
|
+
React.useEffect(() => {
|
|
69
|
+
const newFormatProps = IModelApp.quantityFormatter.getFormatPropsByQuantityType(quantityType);
|
|
70
|
+
// istanbul ignore else
|
|
71
|
+
if (initialFormatProps.current && newFormatProps) {
|
|
72
|
+
if (!formatAreEqual(newFormatProps, initialFormatProps.current)) {
|
|
73
|
+
initialFormatProps.current = newFormatProps;
|
|
74
|
+
setFormatProps(newFormatProps);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}); // no dependencies defined as we want this to run on every render
|
|
78
|
+
const handleOnFormatChanged = React.useCallback(async (newProps) => {
|
|
79
|
+
setFormatProps(newProps);
|
|
80
|
+
onFormatChange && onFormatChange(newProps);
|
|
81
|
+
}, [onFormatChange]);
|
|
82
|
+
const createCustomPropEditors = React.useCallback((specs, inProps, fireFormatChange) => {
|
|
83
|
+
return specs.map((spec, index) => {
|
|
84
|
+
if (isCheckboxFormatPropEditorSpec(spec))
|
|
85
|
+
return createCheckboxFormatPropEditor(`${spec.editorType}-${index}`, spec.label, inProps, spec.getBool, spec.setBool, fireFormatChange);
|
|
86
|
+
if (isTextSelectFormatPropEditorSpec(spec))
|
|
87
|
+
return createSelectFormatPropEditor(`${spec.editorType}-${index}`, spec.label, spec.selectOptions, inProps, spec.getString, spec.setString, fireFormatChange);
|
|
88
|
+
/* istanbul ignore else */
|
|
89
|
+
if (isTextInputFormatPropEditorSpec(spec))
|
|
90
|
+
return createTextInputFormatPropEditor(`${spec.editorType}-${index}`, spec.label, inProps, spec.getString, spec.setString, fireFormatChange);
|
|
91
|
+
/* istanbul ignore next */
|
|
92
|
+
return React.createElement("div", { key: index });
|
|
93
|
+
});
|
|
94
|
+
}, []);
|
|
95
|
+
const providePrimaryChildren = React.useCallback((inProps, fireFormatChange) => {
|
|
96
|
+
const quantityTypeKey = getQuantityTypeKey(quantityType);
|
|
97
|
+
const quantityTypeDefinition = IModelApp.quantityFormatter.quantityTypesRegistry.get(quantityTypeKey);
|
|
98
|
+
if (quantityTypeDefinition && isCustomQuantityTypeDefinition(quantityTypeDefinition) &&
|
|
99
|
+
quantityTypeDefinition.isCompatibleFormatProps(inProps)) {
|
|
100
|
+
// istanbul ignore else
|
|
101
|
+
if (quantityTypeDefinition.primaryPropEditorSpecs)
|
|
102
|
+
return createCustomPropEditors(quantityTypeDefinition.primaryPropEditorSpecs, inProps, fireFormatChange);
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
}, [createCustomPropEditors, quantityType]);
|
|
106
|
+
const provideSecondaryChildren = React.useCallback((inProps, fireFormatChange) => {
|
|
107
|
+
const quantityTypeKey = getQuantityTypeKey(quantityType);
|
|
108
|
+
const quantityTypeDefinition = IModelApp.quantityFormatter.quantityTypesRegistry.get(quantityTypeKey);
|
|
109
|
+
if (quantityTypeDefinition && isCustomQuantityTypeDefinition(quantityTypeDefinition) &&
|
|
110
|
+
quantityTypeDefinition.isCompatibleFormatProps(inProps)) {
|
|
111
|
+
// istanbul ignore else
|
|
112
|
+
if (quantityTypeDefinition.secondaryPropEditorSpecs)
|
|
113
|
+
return createCustomPropEditors(quantityTypeDefinition.secondaryPropEditorSpecs, inProps, fireFormatChange);
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}, [createCustomPropEditors, quantityType]);
|
|
117
|
+
const provideFormatSpec = React.useCallback(async (inProps, _persistenceUnit, _unitsProvider) => {
|
|
118
|
+
return IModelApp.quantityFormatter.generateFormatterSpecByType(quantityType, inProps);
|
|
119
|
+
}, [quantityType]);
|
|
120
|
+
return (React.createElement("div", { className: "components-quantityFormat-quantityPanel" }, persistenceUnit && formatProps &&
|
|
121
|
+
React.createElement(FormatPanel, { onFormatChange: handleOnFormatChanged, ...otherProps, initialFormat: formatProps, unitsProvider: IModelApp.quantityFormatter.unitsProvider, persistenceUnit: persistenceUnit, providePrimaryChildren: providePrimaryChildren, provideSecondaryChildren: provideSecondaryChildren, provideFormatSpec: provideFormatSpec })));
|
|
122
|
+
}
|
|
123
123
|
//# sourceMappingURL=QuantityFormatPanel.js.map
|