@itwin/imodel-components-react 4.0.0-dev.2 → 4.0.0-dev.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/CHANGELOG.md +91 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts +28 -28
  4. package/lib/cjs/imodel-components-react/UiIModelComponents.js +79 -79
  5. package/lib/cjs/imodel-components-react/UiIModelComponents.js.map +1 -1
  6. package/lib/cjs/imodel-components-react/color/AlphaSlider.d.ts +36 -36
  7. package/lib/cjs/imodel-components-react/color/AlphaSlider.js +186 -186
  8. package/lib/cjs/imodel-components-react/color/AlphaSlider.js.map +1 -1
  9. package/lib/cjs/imodel-components-react/color/AlphaSlider.scss +63 -63
  10. package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
  11. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js +107 -107
  12. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  13. package/lib/cjs/imodel-components-react/color/ColorPickerButton.scss +92 -90
  14. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
  15. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js +74 -74
  16. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
  17. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.d.ts +21 -21
  18. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js +145 -145
  19. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
  20. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.scss +93 -93
  21. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
  22. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js +137 -137
  23. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  24. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.scss +64 -63
  25. package/lib/cjs/imodel-components-react/color/HueSlider.d.ts +22 -22
  26. package/lib/cjs/imodel-components-react/color/HueSlider.js +199 -199
  27. package/lib/cjs/imodel-components-react/color/HueSlider.js.map +1 -1
  28. package/lib/cjs/imodel-components-react/color/HueSlider.scss +61 -61
  29. package/lib/cjs/imodel-components-react/color/SaturationPicker.d.ts +20 -20
  30. package/lib/cjs/imodel-components-react/color/SaturationPicker.js +213 -213
  31. package/lib/cjs/imodel-components-react/color/SaturationPicker.js.map +1 -1
  32. package/lib/cjs/imodel-components-react/color/SaturationPicker.scss +35 -35
  33. package/lib/cjs/imodel-components-react/color/Swatch.d.ts +22 -22
  34. package/lib/cjs/imodel-components-react/color/Swatch.js +60 -60
  35. package/lib/cjs/imodel-components-react/color/Swatch.js.map +1 -1
  36. package/lib/cjs/imodel-components-react/color/Swatch.scss +24 -23
  37. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
  38. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js +23 -23
  39. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js.map +1 -1
  40. package/lib/cjs/imodel-components-react/editors/ColorEditor.d.ts +44 -44
  41. package/lib/cjs/imodel-components-react/editors/ColorEditor.js +151 -151
  42. package/lib/cjs/imodel-components-react/editors/ColorEditor.js.map +1 -1
  43. package/lib/cjs/imodel-components-react/editors/ColorEditor.scss +19 -18
  44. package/lib/cjs/imodel-components-react/editors/WeightEditor.d.ts +47 -47
  45. package/lib/cjs/imodel-components-react/editors/WeightEditor.js +160 -160
  46. package/lib/cjs/imodel-components-react/editors/WeightEditor.js.map +1 -1
  47. package/lib/cjs/imodel-components-react/editors/WeightEditor.scss +17 -16
  48. package/lib/cjs/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
  49. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js +96 -96
  50. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js.map +1 -1
  51. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
  52. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js +265 -265
  53. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  54. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.scss +107 -107
  55. package/lib/cjs/imodel-components-react/lineweight/Swatch.d.ts +33 -33
  56. package/lib/cjs/imodel-components-react/lineweight/Swatch.js +85 -85
  57. package/lib/cjs/imodel-components-react/lineweight/Swatch.js.map +1 -1
  58. package/lib/cjs/imodel-components-react/lineweight/Swatch.scss +49 -48
  59. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
  60. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js +159 -159
  61. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  62. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.scss +53 -52
  63. package/lib/cjs/imodel-components-react/navigationaids/Cube.d.ts +45 -45
  64. package/lib/cjs/imodel-components-react/navigationaids/Cube.js +127 -127
  65. package/lib/cjs/imodel-components-react/navigationaids/Cube.js.map +1 -1
  66. package/lib/cjs/imodel-components-react/navigationaids/Cube.scss +19 -19
  67. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +174 -174
  68. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
  69. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js +634 -634
  70. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  71. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.scss +181 -182
  72. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
  73. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js +647 -647
  74. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  75. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.scss +134 -134
  76. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
  77. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js +99 -99
  78. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
  79. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.scss +65 -63
  80. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
  81. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js +53 -53
  82. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
  83. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
  84. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js +83 -83
  85. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
  86. package/lib/cjs/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
  87. package/lib/cjs/imodel-components-react/quantityformat/FormatType.js +86 -86
  88. package/lib/cjs/imodel-components-react/quantityformat/FormatType.js.map +1 -1
  89. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
  90. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js +109 -109
  91. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
  92. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
  93. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js +133 -133
  94. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
  95. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
  96. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js +184 -184
  97. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
  98. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
  99. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts.map +1 -1
  100. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js +154 -145
  101. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  102. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
  103. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js +59 -59
  104. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
  105. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
  106. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js +47 -47
  107. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
  108. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
  109. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js +54 -54
  110. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
  111. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
  112. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js +48 -48
  113. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
  114. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
  115. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js +50 -50
  116. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
  117. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
  118. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +58 -58
  119. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
  120. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
  121. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js +47 -47
  122. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
  123. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
  124. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js +56 -56
  125. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
  126. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
  127. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +95 -95
  128. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
  129. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
  130. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js +119 -119
  131. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
  132. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
  133. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js +143 -143
  134. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
  135. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
  136. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js +69 -69
  137. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -1
  138. package/lib/cjs/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
  139. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js +81 -81
  140. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js.map +1 -1
  141. package/lib/cjs/imodel-components-react/timeline/InlineEdit.scss +26 -26
  142. package/lib/cjs/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
  143. package/lib/cjs/imodel-components-react/timeline/PlayerButton.js +91 -91
  144. package/lib/cjs/imodel-components-react/timeline/PlayerButton.js.map +1 -1
  145. package/lib/cjs/imodel-components-react/timeline/PlayerButton.scss +26 -31
  146. package/lib/cjs/imodel-components-react/timeline/Scrubber.d.ts +54 -54
  147. package/lib/cjs/imodel-components-react/timeline/Scrubber.js +191 -191
  148. package/lib/cjs/imodel-components-react/timeline/Scrubber.js.map +1 -1
  149. package/lib/cjs/imodel-components-react/timeline/Scrubber.scss +107 -112
  150. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
  151. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js +424 -424
  152. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
  153. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.scss +358 -356
  154. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
  155. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js +54 -54
  156. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
  157. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.scss +39 -39
  158. package/lib/cjs/imodel-components-react/timeline/Timeline.scss +164 -164
  159. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts +133 -133
  160. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js +358 -358
  161. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
  162. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.scss +164 -164
  163. package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts +174 -174
  164. package/lib/cjs/imodel-components-react/timeline/interfaces.js +45 -45
  165. package/lib/cjs/imodel-components-react/timeline/interfaces.js.map +1 -1
  166. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
  167. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js +274 -274
  168. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
  169. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
  170. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js +105 -105
  171. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  172. package/lib/cjs/imodel-components-react.d.ts +82 -82
  173. package/lib/cjs/imodel-components-react.js +101 -101
  174. package/lib/cjs/imodel-components-react.js.map +1 -1
  175. package/lib/esm/imodel-components-react/UiIModelComponents.d.ts +28 -28
  176. package/lib/esm/imodel-components-react/UiIModelComponents.js +75 -75
  177. package/lib/esm/imodel-components-react/UiIModelComponents.js.map +1 -1
  178. package/lib/esm/imodel-components-react/color/AlphaSlider.d.ts +36 -36
  179. package/lib/esm/imodel-components-react/color/AlphaSlider.js +160 -160
  180. package/lib/esm/imodel-components-react/color/AlphaSlider.js.map +1 -1
  181. package/lib/esm/imodel-components-react/color/AlphaSlider.scss +63 -63
  182. package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
  183. package/lib/esm/imodel-components-react/color/ColorPickerButton.js +82 -82
  184. package/lib/esm/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  185. package/lib/esm/imodel-components-react/color/ColorPickerButton.scss +92 -90
  186. package/lib/esm/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
  187. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js +51 -51
  188. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
  189. package/lib/esm/imodel-components-react/color/ColorPickerPanel.d.ts +21 -21
  190. package/lib/esm/imodel-components-react/color/ColorPickerPanel.js +122 -122
  191. package/lib/esm/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
  192. package/lib/esm/imodel-components-react/color/ColorPickerPanel.scss +93 -93
  193. package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
  194. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js +112 -112
  195. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  196. package/lib/esm/imodel-components-react/color/ColorPickerPopup.scss +64 -63
  197. package/lib/esm/imodel-components-react/color/HueSlider.d.ts +22 -22
  198. package/lib/esm/imodel-components-react/color/HueSlider.js +173 -173
  199. package/lib/esm/imodel-components-react/color/HueSlider.js.map +1 -1
  200. package/lib/esm/imodel-components-react/color/HueSlider.scss +61 -61
  201. package/lib/esm/imodel-components-react/color/SaturationPicker.d.ts +20 -20
  202. package/lib/esm/imodel-components-react/color/SaturationPicker.js +187 -187
  203. package/lib/esm/imodel-components-react/color/SaturationPicker.js.map +1 -1
  204. package/lib/esm/imodel-components-react/color/SaturationPicker.scss +35 -35
  205. package/lib/esm/imodel-components-react/color/Swatch.d.ts +22 -22
  206. package/lib/esm/imodel-components-react/color/Swatch.js +34 -34
  207. package/lib/esm/imodel-components-react/color/Swatch.js.map +1 -1
  208. package/lib/esm/imodel-components-react/color/Swatch.scss +24 -23
  209. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
  210. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js +19 -19
  211. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js.map +1 -1
  212. package/lib/esm/imodel-components-react/editors/ColorEditor.d.ts +44 -44
  213. package/lib/esm/imodel-components-react/editors/ColorEditor.js +124 -124
  214. package/lib/esm/imodel-components-react/editors/ColorEditor.js.map +1 -1
  215. package/lib/esm/imodel-components-react/editors/ColorEditor.scss +19 -18
  216. package/lib/esm/imodel-components-react/editors/WeightEditor.d.ts +47 -47
  217. package/lib/esm/imodel-components-react/editors/WeightEditor.js +133 -133
  218. package/lib/esm/imodel-components-react/editors/WeightEditor.js.map +1 -1
  219. package/lib/esm/imodel-components-react/editors/WeightEditor.scss +17 -16
  220. package/lib/esm/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
  221. package/lib/esm/imodel-components-react/inputs/QuantityInput.js +70 -70
  222. package/lib/esm/imodel-components-react/inputs/QuantityInput.js.map +1 -1
  223. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
  224. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js +240 -240
  225. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  226. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.scss +107 -107
  227. package/lib/esm/imodel-components-react/lineweight/Swatch.d.ts +33 -33
  228. package/lib/esm/imodel-components-react/lineweight/Swatch.js +59 -59
  229. package/lib/esm/imodel-components-react/lineweight/Swatch.js.map +1 -1
  230. package/lib/esm/imodel-components-react/lineweight/Swatch.scss +49 -48
  231. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
  232. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js +133 -133
  233. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  234. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.scss +53 -52
  235. package/lib/esm/imodel-components-react/navigationaids/Cube.d.ts +45 -45
  236. package/lib/esm/imodel-components-react/navigationaids/Cube.js +100 -100
  237. package/lib/esm/imodel-components-react/navigationaids/Cube.js.map +1 -1
  238. package/lib/esm/imodel-components-react/navigationaids/Cube.scss +19 -19
  239. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +174 -174
  240. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
  241. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js +606 -606
  242. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  243. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.scss +181 -182
  244. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
  245. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js +620 -620
  246. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  247. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.scss +134 -134
  248. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
  249. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js +76 -76
  250. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
  251. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.scss +65 -63
  252. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
  253. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js +30 -30
  254. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
  255. package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
  256. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js +60 -60
  257. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
  258. package/lib/esm/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
  259. package/lib/esm/imodel-components-react/quantityformat/FormatType.js +63 -63
  260. package/lib/esm/imodel-components-react/quantityformat/FormatType.js.map +1 -1
  261. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
  262. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js +83 -83
  263. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
  264. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
  265. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js +110 -110
  266. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
  267. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
  268. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js +158 -158
  269. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
  270. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
  271. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts.map +1 -1
  272. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js +131 -122
  273. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  274. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
  275. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js +36 -36
  276. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
  277. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
  278. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js +24 -24
  279. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
  280. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
  281. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js +31 -31
  282. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
  283. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
  284. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js +25 -25
  285. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
  286. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
  287. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js +27 -27
  288. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
  289. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
  290. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +35 -35
  291. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
  292. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
  293. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js +24 -24
  294. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
  295. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
  296. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js +33 -33
  297. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
  298. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
  299. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +69 -69
  300. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
  301. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
  302. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js +96 -96
  303. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
  304. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
  305. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js +139 -139
  306. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
  307. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
  308. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js +65 -65
  309. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -1
  310. package/lib/esm/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
  311. package/lib/esm/imodel-components-react/timeline/InlineEdit.js +55 -55
  312. package/lib/esm/imodel-components-react/timeline/InlineEdit.js.map +1 -1
  313. package/lib/esm/imodel-components-react/timeline/InlineEdit.scss +26 -26
  314. package/lib/esm/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
  315. package/lib/esm/imodel-components-react/timeline/PlayerButton.js +64 -64
  316. package/lib/esm/imodel-components-react/timeline/PlayerButton.js.map +1 -1
  317. package/lib/esm/imodel-components-react/timeline/PlayerButton.scss +26 -31
  318. package/lib/esm/imodel-components-react/timeline/Scrubber.d.ts +54 -54
  319. package/lib/esm/imodel-components-react/timeline/Scrubber.js +164 -164
  320. package/lib/esm/imodel-components-react/timeline/Scrubber.js.map +1 -1
  321. package/lib/esm/imodel-components-react/timeline/Scrubber.scss +107 -112
  322. package/lib/esm/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
  323. package/lib/esm/imodel-components-react/timeline/SolarTimeline.js +398 -398
  324. package/lib/esm/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
  325. package/lib/esm/imodel-components-react/timeline/SolarTimeline.scss +358 -356
  326. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
  327. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js +28 -28
  328. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
  329. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.scss +39 -39
  330. package/lib/esm/imodel-components-react/timeline/Timeline.scss +164 -164
  331. package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts +133 -133
  332. package/lib/esm/imodel-components-react/timeline/TimelineComponent.js +332 -332
  333. package/lib/esm/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
  334. package/lib/esm/imodel-components-react/timeline/TimelineComponent.scss +164 -164
  335. package/lib/esm/imodel-components-react/timeline/interfaces.d.ts +174 -174
  336. package/lib/esm/imodel-components-react/timeline/interfaces.js +42 -42
  337. package/lib/esm/imodel-components-react/timeline/interfaces.js.map +1 -1
  338. package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
  339. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js +251 -251
  340. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
  341. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
  342. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js +95 -95
  343. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  344. package/lib/esm/imodel-components-react.d.ts +82 -82
  345. package/lib/esm/imodel-components-react.js +87 -87
  346. package/lib/esm/imodel-components-react.js.map +1 -1
  347. package/lib/public/locales/en/UiIModelComponents.json +139 -139
  348. package/package.json +34 -26
@@ -1,61 +1,61 @@
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 { SpecialKey } from "@itwin/appui-abstract";
10
- import { WebFontIcon } from "@itwin/core-react";
11
- import { Input } from "@itwin/itwinui-react";
12
- import { UiIModelComponents } from "../UiIModelComponents";
13
- /** Component to show the persistence value and formatted value given a FormatterSpec.
14
- * @alpha
15
- */
16
- export function FormatSample(props) {
17
- const { initialMagnitude, formatSpec, hideLabels } = props;
18
- const initialValue = initialMagnitude !== null && initialMagnitude !== void 0 ? initialMagnitude : 0;
19
- const [magnitude, setMagnitude] = React.useState(initialValue);
20
- const [sampleValue, setSampleValue] = React.useState(initialValue.toString());
21
- React.useEffect(() => {
22
- const value = initialMagnitude !== null && initialMagnitude !== void 0 ? initialMagnitude : 0;
23
- setMagnitude(value);
24
- setSampleValue(value.toString());
25
- }, [initialMagnitude]);
26
- const handleOnValueBlur = React.useCallback(() => {
27
- let newValue = Number.parseFloat(sampleValue);
28
- if (Number.isNaN(newValue))
29
- newValue = 0;
30
- setMagnitude(newValue);
31
- setSampleValue(newValue.toString());
32
- }, [sampleValue]);
33
- const handleOnValueChange = React.useCallback((event) => {
34
- setSampleValue(event.target.value);
35
- }, []);
36
- const handleKeyDown = React.useCallback((e) => {
37
- // istanbul ignore else
38
- if (e.key === SpecialKey.Enter) {
39
- let newValue = Number.parseFloat(sampleValue);
40
- if (Number.isNaN(newValue))
41
- newValue = 0;
42
- setMagnitude(newValue);
43
- setSampleValue(newValue.toString());
44
- e.preventDefault();
45
- }
46
- }, [sampleValue]);
47
- const activePersistenceUnitLabel = formatSpec ? formatSpec.persistenceUnit.label : "";
48
- const formattedValue = formatSpec ? formatSpec.applyFormatting(magnitude) : "";
49
- const valueLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.value"));
50
- const formattedLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.formatted"));
51
- return (React.createElement(React.Fragment, null,
52
- !hideLabels && React.createElement("span", { className: "uicore-label" }, valueLabel.current),
53
- React.createElement("span", { className: "components-inline" },
54
- React.createElement(Input, { "data-testid": "format-sample-input", className: "components-quantity-persistence-input", value: sampleValue, onChange: handleOnValueChange, onKeyDown: handleKeyDown, onBlur: handleOnValueBlur, size: "small" }),
55
- activePersistenceUnitLabel),
56
- !hideLabels && React.createElement("span", { className: "uicore-label" }, formattedLabel.current),
57
- React.createElement("span", null,
58
- hideLabels && (formattedValue.length > 0) && React.createElement(WebFontIcon, { iconName: "icon-progress-forward-2" }),
59
- React.createElement("span", { "data-testid": "format-sample-formatted", className: "uicore-label components-quantity-formatted-sample" }, formattedValue))));
60
- }
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 { SpecialKey } from "@itwin/appui-abstract";
10
+ import { WebFontIcon } from "@itwin/core-react";
11
+ import { Input } from "@itwin/itwinui-react";
12
+ import { UiIModelComponents } from "../UiIModelComponents";
13
+ /** Component to show the persistence value and formatted value given a FormatterSpec.
14
+ * @alpha
15
+ */
16
+ export function FormatSample(props) {
17
+ const { initialMagnitude, formatSpec, hideLabels } = props;
18
+ const initialValue = initialMagnitude !== null && initialMagnitude !== void 0 ? initialMagnitude : 0;
19
+ const [magnitude, setMagnitude] = React.useState(initialValue);
20
+ const [sampleValue, setSampleValue] = React.useState(initialValue.toString());
21
+ React.useEffect(() => {
22
+ const value = initialMagnitude !== null && initialMagnitude !== void 0 ? initialMagnitude : 0;
23
+ setMagnitude(value);
24
+ setSampleValue(value.toString());
25
+ }, [initialMagnitude]);
26
+ const handleOnValueBlur = React.useCallback(() => {
27
+ let newValue = Number.parseFloat(sampleValue);
28
+ if (Number.isNaN(newValue))
29
+ newValue = 0;
30
+ setMagnitude(newValue);
31
+ setSampleValue(newValue.toString());
32
+ }, [sampleValue]);
33
+ const handleOnValueChange = React.useCallback((event) => {
34
+ setSampleValue(event.target.value);
35
+ }, []);
36
+ const handleKeyDown = React.useCallback((e) => {
37
+ // istanbul ignore else
38
+ if (e.key === SpecialKey.Enter) {
39
+ let newValue = Number.parseFloat(sampleValue);
40
+ if (Number.isNaN(newValue))
41
+ newValue = 0;
42
+ setMagnitude(newValue);
43
+ setSampleValue(newValue.toString());
44
+ e.preventDefault();
45
+ }
46
+ }, [sampleValue]);
47
+ const activePersistenceUnitLabel = formatSpec ? formatSpec.persistenceUnit.label : "";
48
+ const formattedValue = formatSpec ? formatSpec.applyFormatting(magnitude) : "";
49
+ const valueLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.value"));
50
+ const formattedLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.formatted"));
51
+ return (React.createElement(React.Fragment, null,
52
+ !hideLabels && React.createElement("span", { className: "uicore-label" }, valueLabel.current),
53
+ React.createElement("span", { className: "components-inline" },
54
+ React.createElement(Input, { "data-testid": "format-sample-input", className: "components-quantity-persistence-input", value: sampleValue, onChange: handleOnValueChange, onKeyDown: handleKeyDown, onBlur: handleOnValueBlur, size: "small" }),
55
+ activePersistenceUnitLabel),
56
+ !hideLabels && React.createElement("span", { className: "uicore-label" }, formattedLabel.current),
57
+ React.createElement("span", null,
58
+ hideLabels && (formattedValue.length > 0) && React.createElement(WebFontIcon, { iconName: "icon-progress-forward-2" }),
59
+ React.createElement("span", { "data-testid": "format-sample-formatted", className: "uicore-label components-quantity-formatted-sample" }, formattedValue))));
60
+ }
61
61
  //# sourceMappingURL=FormatSample.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormatSample.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatSample.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 QuantityFormat\n */\n\nimport * as React from \"react\";\nimport { FormatterSpec } from \"@itwin/core-quantity\";\nimport { SpecialKey } from \"@itwin/appui-abstract\";\nimport { CommonProps, WebFontIcon } from \"@itwin/core-react\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport { UiIModelComponents } from \"../UiIModelComponents\";\n\n/** Properties of [[FormatSample]] component.\n * @alpha\n */\nexport interface FormatSampleProps extends CommonProps {\n formatSpec?: FormatterSpec;\n initialMagnitude?: number;\n hideLabels?: boolean;\n}\n\n/** Component to show the persistence value and formatted value given a FormatterSpec.\n * @alpha\n */\nexport function FormatSample(props: FormatSampleProps) {\n const { initialMagnitude, formatSpec, hideLabels } = props;\n const initialValue = initialMagnitude ?? 0;\n const [magnitude, setMagnitude] = React.useState(initialValue);\n const [sampleValue, setSampleValue] = React.useState(initialValue.toString());\n\n React.useEffect(() => {\n const value = initialMagnitude ?? 0;\n setMagnitude(value);\n setSampleValue(value.toString());\n }, [initialMagnitude]);\n\n const handleOnValueBlur = React.useCallback(() => {\n let newValue = Number.parseFloat(sampleValue);\n if (Number.isNaN(newValue))\n newValue = 0;\n setMagnitude(newValue);\n setSampleValue(newValue.toString());\n }, [sampleValue]);\n\n const handleOnValueChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setSampleValue(event.target.value);\n }, []);\n\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent<HTMLInputElement>) => {\n // istanbul ignore else\n if (e.key === SpecialKey.Enter) {\n let newValue = Number.parseFloat(sampleValue);\n if (Number.isNaN(newValue))\n newValue = 0;\n setMagnitude(newValue);\n setSampleValue(newValue.toString());\n e.preventDefault();\n }\n }, [sampleValue]);\n\n const activePersistenceUnitLabel = formatSpec ? formatSpec.persistenceUnit.label : \"\";\n const formattedValue = formatSpec ? formatSpec.applyFormatting(magnitude) : \"\";\n\n const valueLabel = React.useRef(UiIModelComponents.translate(\"QuantityFormat.labels.value\"));\n const formattedLabel = React.useRef(UiIModelComponents.translate(\"QuantityFormat.labels.formatted\"));\n\n return (\n <>\n {!hideLabels && <span className={\"uicore-label\"}>{valueLabel.current}</span>}\n <span className=\"components-inline\">\n <Input data-testid=\"format-sample-input\" className={\"components-quantity-persistence-input\"} value={sampleValue} onChange={handleOnValueChange} onKeyDown={handleKeyDown} onBlur={handleOnValueBlur} size=\"small\" />{activePersistenceUnitLabel}\n </span>\n {!hideLabels && <span className={\"uicore-label\"}>{formattedLabel.current}</span>}\n <span>\n {hideLabels && (formattedValue.length > 0) && <WebFontIcon iconName=\"icon-progress-forward-2\" />}\n <span data-testid=\"format-sample-formatted\" className={\"uicore-label components-quantity-formatted-sample\"}>{formattedValue}</span>\n </span>\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"FormatSample.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatSample.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module QuantityFormat\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { FormatterSpec } from \"@itwin/core-quantity\";\r\nimport { SpecialKey } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, WebFontIcon } from \"@itwin/core-react\";\r\nimport { Input } from \"@itwin/itwinui-react\";\r\nimport { UiIModelComponents } from \"../UiIModelComponents\";\r\n\r\n/** Properties of [[FormatSample]] component.\r\n * @alpha\r\n */\r\nexport interface FormatSampleProps extends CommonProps {\r\n formatSpec?: FormatterSpec;\r\n initialMagnitude?: number;\r\n hideLabels?: boolean;\r\n}\r\n\r\n/** Component to show the persistence value and formatted value given a FormatterSpec.\r\n * @alpha\r\n */\r\nexport function FormatSample(props: FormatSampleProps) {\r\n const { initialMagnitude, formatSpec, hideLabels } = props;\r\n const initialValue = initialMagnitude ?? 0;\r\n const [magnitude, setMagnitude] = React.useState(initialValue);\r\n const [sampleValue, setSampleValue] = React.useState(initialValue.toString());\r\n\r\n React.useEffect(() => {\r\n const value = initialMagnitude ?? 0;\r\n setMagnitude(value);\r\n setSampleValue(value.toString());\r\n }, [initialMagnitude]);\r\n\r\n const handleOnValueBlur = React.useCallback(() => {\r\n let newValue = Number.parseFloat(sampleValue);\r\n if (Number.isNaN(newValue))\r\n newValue = 0;\r\n setMagnitude(newValue);\r\n setSampleValue(newValue.toString());\r\n }, [sampleValue]);\r\n\r\n const handleOnValueChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n setSampleValue(event.target.value);\r\n }, []);\r\n\r\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent<HTMLInputElement>) => {\r\n // istanbul ignore else\r\n if (e.key === SpecialKey.Enter) {\r\n let newValue = Number.parseFloat(sampleValue);\r\n if (Number.isNaN(newValue))\r\n newValue = 0;\r\n setMagnitude(newValue);\r\n setSampleValue(newValue.toString());\r\n e.preventDefault();\r\n }\r\n }, [sampleValue]);\r\n\r\n const activePersistenceUnitLabel = formatSpec ? formatSpec.persistenceUnit.label : \"\";\r\n const formattedValue = formatSpec ? formatSpec.applyFormatting(magnitude) : \"\";\r\n\r\n const valueLabel = React.useRef(UiIModelComponents.translate(\"QuantityFormat.labels.value\"));\r\n const formattedLabel = React.useRef(UiIModelComponents.translate(\"QuantityFormat.labels.formatted\"));\r\n\r\n return (\r\n <>\r\n {!hideLabels && <span className={\"uicore-label\"}>{valueLabel.current}</span>}\r\n <span className=\"components-inline\">\r\n <Input data-testid=\"format-sample-input\" className={\"components-quantity-persistence-input\"} value={sampleValue} onChange={handleOnValueChange} onKeyDown={handleKeyDown} onBlur={handleOnValueBlur} size=\"small\" />{activePersistenceUnitLabel}\r\n </span>\r\n {!hideLabels && <span className={\"uicore-label\"}>{formattedLabel.current}</span>}\r\n <span>\r\n {hideLabels && (formattedValue.length > 0) && <WebFontIcon iconName=\"icon-progress-forward-2\" />}\r\n <span data-testid=\"format-sample-formatted\" className={\"uicore-label components-quantity-formatted-sample\"}>{formattedValue}</span>\r\n </span>\r\n </>\r\n );\r\n}\r\n"]}
@@ -1,18 +1,18 @@
1
- /** @packageDocumentation
2
- * @module QuantityFormat
3
- */
4
- /// <reference types="react" />
5
- import { CommonProps } from "@itwin/core-react";
6
- import { FormatProps } from "@itwin/core-quantity";
7
- /** Properties of [[FormatTypeOptionProps]] component.
8
- * @alpha
9
- */
10
- export interface FormatTypeOptionProps extends CommonProps {
11
- formatProps: FormatProps;
12
- onChange?: (format: FormatProps) => void;
13
- }
14
- /** Component to set the Quantity Format type.
15
- * @alpha
16
- */
17
- export declare function FormatTypeOption(props: FormatTypeOptionProps): JSX.Element;
1
+ /** @packageDocumentation
2
+ * @module QuantityFormat
3
+ */
4
+ /// <reference types="react" />
5
+ import { CommonProps } from "@itwin/core-react";
6
+ import { FormatProps } from "@itwin/core-quantity";
7
+ /** Properties of [[FormatTypeOptionProps]] component.
8
+ * @alpha
9
+ */
10
+ export interface FormatTypeOptionProps extends CommonProps {
11
+ formatProps: FormatProps;
12
+ onChange?: (format: FormatProps) => void;
13
+ }
14
+ /** Component to set the Quantity Format type.
15
+ * @alpha
16
+ */
17
+ export declare function FormatTypeOption(props: FormatTypeOptionProps): JSX.Element;
18
18
  //# sourceMappingURL=FormatType.d.ts.map
@@ -1,64 +1,64 @@
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 { UiIModelComponents } from "../UiIModelComponents";
10
- import { DecimalPrecision, FormatType, formatTypeToString, FractionalPrecision, parseFormatType, ScientificType, scientificTypeToString, } from "@itwin/core-quantity";
11
- import { Select } from "@itwin/itwinui-react";
12
- /** Component to select the format type.
13
- * @alpha
14
- */
15
- function FormatTypeSelector(props) {
16
- const { type, onChange, ...otherProps } = props;
17
- const formatOptions = React.useRef([
18
- { value: FormatType.Decimal, label: UiIModelComponents.translate("QuantityFormat.decimal") },
19
- { value: FormatType.Scientific, label: UiIModelComponents.translate("QuantityFormat.scientific") },
20
- { value: FormatType.Station, label: UiIModelComponents.translate("QuantityFormat.station") },
21
- { value: FormatType.Fractional, label: UiIModelComponents.translate("QuantityFormat.fractional") },
22
- ]);
23
- const handleOnChange = React.useCallback((newValue) => {
24
- onChange && onChange(newValue);
25
- }, [onChange]);
26
- return (React.createElement(Select, { options: formatOptions.current, value: type, onChange: handleOnChange, size: "small", ...otherProps }));
27
- }
28
- /** Component to set the Quantity Format type.
29
- * @alpha
30
- */
31
- export function FormatTypeOption(props) {
32
- const { formatProps, onChange } = props;
33
- const handleFormatTypeChange = React.useCallback((newType) => {
34
- var _a;
35
- const type = formatTypeToString(newType);
36
- let precision;
37
- let stationOffsetSize;
38
- let scientificType;
39
- switch (newType) { // type must be decimal, fractional, scientific, or station
40
- case FormatType.Scientific:
41
- precision = DecimalPrecision.Six;
42
- scientificType = scientificTypeToString(ScientificType.Normalized);
43
- break;
44
- case FormatType.Decimal:
45
- precision = DecimalPrecision.Four;
46
- break;
47
- case FormatType.Station:
48
- precision = DecimalPrecision.Two;
49
- stationOffsetSize = ((_a = formatProps.composite) === null || _a === void 0 ? void 0 : _a.units[0].name.toLocaleLowerCase().endsWith("m")) ? 3 : 2;
50
- break;
51
- case FormatType.Fractional:
52
- precision = FractionalPrecision.Eight;
53
- break;
54
- }
55
- const newFormatProps = { ...formatProps, type, precision, scientificType, stationOffsetSize };
56
- onChange && onChange(newFormatProps);
57
- }, [formatProps, onChange]);
58
- const formatType = parseFormatType(formatProps.type, "format");
59
- const label = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.type"));
60
- return (React.createElement(React.Fragment, null,
61
- React.createElement("span", { className: "uicore-label.current" }, label.current),
62
- React.createElement(FormatTypeSelector, { "data-testid": "format-type-selector", type: formatType, onChange: handleFormatTypeChange })));
63
- }
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 { UiIModelComponents } from "../UiIModelComponents";
10
+ import { DecimalPrecision, FormatType, formatTypeToString, FractionalPrecision, parseFormatType, ScientificType, scientificTypeToString, } from "@itwin/core-quantity";
11
+ import { Select } from "@itwin/itwinui-react";
12
+ /** Component to select the format type.
13
+ * @alpha
14
+ */
15
+ function FormatTypeSelector(props) {
16
+ const { type, onChange, ...otherProps } = props;
17
+ const formatOptions = React.useRef([
18
+ { value: FormatType.Decimal, label: UiIModelComponents.translate("QuantityFormat.decimal") },
19
+ { value: FormatType.Scientific, label: UiIModelComponents.translate("QuantityFormat.scientific") },
20
+ { value: FormatType.Station, label: UiIModelComponents.translate("QuantityFormat.station") },
21
+ { value: FormatType.Fractional, label: UiIModelComponents.translate("QuantityFormat.fractional") },
22
+ ]);
23
+ const handleOnChange = React.useCallback((newValue) => {
24
+ onChange && onChange(newValue);
25
+ }, [onChange]);
26
+ return (React.createElement(Select, { options: formatOptions.current, value: type, onChange: handleOnChange, size: "small", ...otherProps }));
27
+ }
28
+ /** Component to set the Quantity Format type.
29
+ * @alpha
30
+ */
31
+ export function FormatTypeOption(props) {
32
+ const { formatProps, onChange } = props;
33
+ const handleFormatTypeChange = React.useCallback((newType) => {
34
+ var _a;
35
+ const type = formatTypeToString(newType);
36
+ let precision;
37
+ let stationOffsetSize;
38
+ let scientificType;
39
+ switch (newType) { // type must be decimal, fractional, scientific, or station
40
+ case FormatType.Scientific:
41
+ precision = DecimalPrecision.Six;
42
+ scientificType = scientificTypeToString(ScientificType.Normalized);
43
+ break;
44
+ case FormatType.Decimal:
45
+ precision = DecimalPrecision.Four;
46
+ break;
47
+ case FormatType.Station:
48
+ precision = DecimalPrecision.Two;
49
+ stationOffsetSize = ((_a = formatProps.composite) === null || _a === void 0 ? void 0 : _a.units[0].name.toLocaleLowerCase().endsWith("m")) ? 3 : 2;
50
+ break;
51
+ case FormatType.Fractional:
52
+ precision = FractionalPrecision.Eight;
53
+ break;
54
+ }
55
+ const newFormatProps = { ...formatProps, type, precision, scientificType, stationOffsetSize };
56
+ onChange && onChange(newFormatProps);
57
+ }, [formatProps, onChange]);
58
+ const formatType = parseFormatType(formatProps.type, "format");
59
+ const label = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.type"));
60
+ return (React.createElement(React.Fragment, null,
61
+ React.createElement("span", { className: "uicore-label.current" }, label.current),
62
+ React.createElement(FormatTypeSelector, { "data-testid": "format-type-selector", type: formatType, onChange: handleFormatTypeChange })));
63
+ }
64
64
  //# sourceMappingURL=FormatType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormatType.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatType.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 QuantityFormat\n */\n\nimport * as React from \"react\";\nimport { CommonProps } from \"@itwin/core-react\";\nimport { UiIModelComponents } from \"../UiIModelComponents\";\nimport { DecimalPrecision, FormatProps, FormatType, formatTypeToString, FractionalPrecision, parseFormatType,\n ScientificType, scientificTypeToString,\n} from \"@itwin/core-quantity\";\nimport { Select, SelectOption } from \"@itwin/itwinui-react\";\n\n/** Properties of [[FormatTypeSelector]] component.\n * @alpha\n */\ninterface FormatTypeSelectorProps extends CommonProps {\n type: FormatType;\n onChange: (value: FormatType) => void;\n}\n\n/** Component to select the format type.\n * @alpha\n */\nfunction FormatTypeSelector(props: FormatTypeSelectorProps) {\n const { type, onChange, ...otherProps } = props;\n const formatOptions = React.useRef<SelectOption<FormatType>[]>([\n { value: FormatType.Decimal, label: UiIModelComponents.translate(\"QuantityFormat.decimal\") },\n { value: FormatType.Scientific, label: UiIModelComponents.translate(\"QuantityFormat.scientific\") },\n { value: FormatType.Station, label: UiIModelComponents.translate(\"QuantityFormat.station\") },\n { value: FormatType.Fractional, label: UiIModelComponents.translate(\"QuantityFormat.fractional\") },\n ]);\n\n const handleOnChange = React.useCallback((newValue: FormatType) => {\n onChange && onChange(newValue);\n }, [onChange]);\n\n return (\n <Select options={formatOptions.current} value={type} onChange={handleOnChange} size=\"small\" {...otherProps} />\n );\n}\n\n/** Properties of [[FormatTypeOptionProps]] component.\n * @alpha\n */\nexport interface FormatTypeOptionProps extends CommonProps {\n formatProps: FormatProps;\n onChange?: (format: FormatProps) => void;\n}\n\n/** Component to set the Quantity Format type.\n * @alpha\n */\nexport function FormatTypeOption(props: FormatTypeOptionProps) {\n const { formatProps, onChange } = props;\n const handleFormatTypeChange = React.useCallback((newType: FormatType) => {\n const type = formatTypeToString(newType);\n let precision: number | undefined;\n let stationOffsetSize: number | undefined;\n let scientificType: string | undefined;\n switch (newType) { // type must be decimal, fractional, scientific, or station\n case FormatType.Scientific:\n precision = DecimalPrecision.Six;\n scientificType = scientificTypeToString(ScientificType.Normalized);\n break;\n case FormatType.Decimal:\n precision = DecimalPrecision.Four;\n break;\n case FormatType.Station:\n precision = DecimalPrecision.Two;\n stationOffsetSize = formatProps.composite?.units[0].name.toLocaleLowerCase().endsWith(\"m\") ? 3 : 2;\n break;\n case FormatType.Fractional:\n precision = FractionalPrecision.Eight;\n break;\n }\n const newFormatProps = { ...formatProps, type, precision, scientificType, stationOffsetSize };\n onChange && onChange(newFormatProps);\n }, [formatProps, onChange]);\n\n const formatType = parseFormatType(formatProps.type, \"format\");\n const label = React.useRef(UiIModelComponents.translate(\"QuantityFormat.labels.type\"));\n\n return (\n <>\n <span className={\"uicore-label.current\"}>{label.current}</span>\n <FormatTypeSelector data-testid=\"format-type-selector\" type={formatType} onChange={handleFormatTypeChange} />\n </>\n );\n}\n\n"]}
1
+ {"version":3,"file":"FormatType.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatType.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module QuantityFormat\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\nimport { UiIModelComponents } from \"../UiIModelComponents\";\r\nimport { DecimalPrecision, FormatProps, FormatType, formatTypeToString, FractionalPrecision, parseFormatType,\r\n ScientificType, scientificTypeToString,\r\n} from \"@itwin/core-quantity\";\r\nimport { Select, SelectOption } from \"@itwin/itwinui-react\";\r\n\r\n/** Properties of [[FormatTypeSelector]] component.\r\n * @alpha\r\n */\r\ninterface FormatTypeSelectorProps extends CommonProps {\r\n type: FormatType;\r\n onChange: (value: FormatType) => void;\r\n}\r\n\r\n/** Component to select the format type.\r\n * @alpha\r\n */\r\nfunction FormatTypeSelector(props: FormatTypeSelectorProps) {\r\n const { type, onChange, ...otherProps } = props;\r\n const formatOptions = React.useRef<SelectOption<FormatType>[]>([\r\n { value: FormatType.Decimal, label: UiIModelComponents.translate(\"QuantityFormat.decimal\") },\r\n { value: FormatType.Scientific, label: UiIModelComponents.translate(\"QuantityFormat.scientific\") },\r\n { value: FormatType.Station, label: UiIModelComponents.translate(\"QuantityFormat.station\") },\r\n { value: FormatType.Fractional, label: UiIModelComponents.translate(\"QuantityFormat.fractional\") },\r\n ]);\r\n\r\n const handleOnChange = React.useCallback((newValue: FormatType) => {\r\n onChange && onChange(newValue);\r\n }, [onChange]);\r\n\r\n return (\r\n <Select options={formatOptions.current} value={type} onChange={handleOnChange} size=\"small\" {...otherProps} />\r\n );\r\n}\r\n\r\n/** Properties of [[FormatTypeOptionProps]] component.\r\n * @alpha\r\n */\r\nexport interface FormatTypeOptionProps extends CommonProps {\r\n formatProps: FormatProps;\r\n onChange?: (format: FormatProps) => void;\r\n}\r\n\r\n/** Component to set the Quantity Format type.\r\n * @alpha\r\n */\r\nexport function FormatTypeOption(props: FormatTypeOptionProps) {\r\n const { formatProps, onChange } = props;\r\n const handleFormatTypeChange = React.useCallback((newType: FormatType) => {\r\n const type = formatTypeToString(newType);\r\n let precision: number | undefined;\r\n let stationOffsetSize: number | undefined;\r\n let scientificType: string | undefined;\r\n switch (newType) { // type must be decimal, fractional, scientific, or station\r\n case FormatType.Scientific:\r\n precision = DecimalPrecision.Six;\r\n scientificType = scientificTypeToString(ScientificType.Normalized);\r\n break;\r\n case FormatType.Decimal:\r\n precision = DecimalPrecision.Four;\r\n break;\r\n case FormatType.Station:\r\n precision = DecimalPrecision.Two;\r\n stationOffsetSize = formatProps.composite?.units[0].name.toLocaleLowerCase().endsWith(\"m\") ? 3 : 2;\r\n break;\r\n case FormatType.Fractional:\r\n precision = FractionalPrecision.Eight;\r\n break;\r\n }\r\n const newFormatProps = { ...formatProps, type, precision, scientificType, stationOffsetSize };\r\n onChange && onChange(newFormatProps);\r\n }, [formatProps, onChange]);\r\n\r\n const formatType = parseFormatType(formatProps.type, \"format\");\r\n const label = React.useRef(UiIModelComponents.translate(\"QuantityFormat.labels.type\"));\r\n\r\n return (\r\n <>\r\n <span className={\"uicore-label.current\"}>{label.current}</span>\r\n <FormatTypeSelector data-testid=\"format-type-selector\" type={formatType} onChange={handleFormatTypeChange} />\r\n </>\r\n );\r\n}\r\n\r\n"]}
@@ -1,18 +1,18 @@
1
- /** @packageDocumentation
2
- * @module QuantityFormat
3
- */
4
- /// <reference types="react" />
5
- import { CommonProps } from "@itwin/core-react";
6
- import { FormatProps } from "@itwin/core-quantity";
7
- /** Properties of [[FormatUnitLabel]] component.
8
- * @alpha
9
- */
10
- export interface FormatUnitLabelProps extends CommonProps {
11
- formatProps: FormatProps;
12
- onUnitLabelChange?: (format: FormatProps) => void;
13
- }
14
- /** Component to set the label separator definition in a Quantity Format and if it the label is to be displayed.
15
- * @alpha
16
- */
17
- export declare function FormatUnitLabel(props: FormatUnitLabelProps): JSX.Element;
1
+ /** @packageDocumentation
2
+ * @module QuantityFormat
3
+ */
4
+ /// <reference types="react" />
5
+ import { CommonProps } from "@itwin/core-react";
6
+ import { FormatProps } from "@itwin/core-quantity";
7
+ /** Properties of [[FormatUnitLabel]] component.
8
+ * @alpha
9
+ */
10
+ export interface FormatUnitLabelProps extends CommonProps {
11
+ formatProps: FormatProps;
12
+ onUnitLabelChange?: (format: FormatProps) => void;
13
+ }
14
+ /** Component to set the label separator definition in a Quantity Format and if it the label is to be displayed.
15
+ * @alpha
16
+ */
17
+ export declare function FormatUnitLabel(props: FormatUnitLabelProps): JSX.Element;
18
18
  //# sourceMappingURL=FormatUnitLabel.d.ts.map
@@ -1,84 +1,84 @@
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 { Format, FormatTraits, getTraitString } from "@itwin/core-quantity";
11
- import { Checkbox, Select } from "@itwin/itwinui-react";
12
- import { UiIModelComponents } from "../UiIModelComponents";
13
- function UomSeparatorSelector(props) {
14
- const { separator, onChange, ...otherProps } = props;
15
- const uomDefaultEntries = React.useRef([
16
- { value: "", label: UiIModelComponents.translate("QuantityFormat.none") },
17
- { value: " ", label: UiIModelComponents.translate("QuantityFormat.space") },
18
- { value: "-", label: UiIModelComponents.translate("QuantityFormat.dash") },
19
- ]);
20
- const handleOnChange = React.useCallback((newValue) => {
21
- onChange && onChange(newValue);
22
- }, [onChange]);
23
- const separatorOptions = React.useMemo(() => {
24
- const completeListOfEntries = [];
25
- // istanbul ignore next (only used if format already has a character that does not match standard options)
26
- if (undefined === uomDefaultEntries.current.find((option) => option.value === separator)) {
27
- completeListOfEntries.push({ value: separator, label: separator });
28
- }
29
- completeListOfEntries.push(...uomDefaultEntries.current);
30
- return completeListOfEntries;
31
- }, [separator]);
32
- return (React.createElement(Select, { options: separatorOptions, value: separator, onChange: handleOnChange, size: "small", ...otherProps }));
33
- }
34
- /** Component to set the label separator definition in a Quantity Format and if it the label is to be displayed.
35
- * @alpha
36
- */
37
- export function FormatUnitLabel(props) {
38
- var _a;
39
- const { formatProps, onUnitLabelChange } = props;
40
- const handleSetFormatProps = React.useCallback((newProps) => {
41
- onUnitLabelChange && onUnitLabelChange(newProps);
42
- }, [onUnitLabelChange]);
43
- const isFormatTraitSet = React.useCallback((trait) => {
44
- return Format.isFormatTraitSetInProps(formatProps, trait);
45
- }, [formatProps]);
46
- const setFormatTrait = React.useCallback((trait, setActive) => {
47
- const traitStr = getTraitString(trait);
48
- let formatTraits = [traitStr];
49
- if (setActive) { // setting trait
50
- // istanbul ignore else
51
- if (formatProps.formatTraits) {
52
- const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\|/);
53
- // istanbul ignore else
54
- if (!traits.find((traitEntry) => traitStr === traitEntry)) {
55
- formatTraits = [...traits, traitStr];
56
- }
57
- }
58
- }
59
- else { // clearing trait
60
- // istanbul ignore next
61
- if (!formatProps.formatTraits)
62
- return;
63
- const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\|/);
64
- formatTraits = traits.filter((traitEntry) => traitEntry !== traitStr);
65
- }
66
- const newFormatProps = { ...formatProps, formatTraits };
67
- handleSetFormatProps(newFormatProps);
68
- }, [formatProps, handleSetFormatProps]);
69
- const handleUomSeparatorChange = React.useCallback((newSeparator) => {
70
- const newFormatProps = { ...formatProps, uomSeparator: newSeparator };
71
- handleSetFormatProps(newFormatProps);
72
- }, [formatProps, handleSetFormatProps]);
73
- const handleShowUnitLabelChange = React.useCallback((e) => {
74
- setFormatTrait(FormatTraits.ShowUnitLabel, e.target.checked);
75
- }, [setFormatTrait]);
76
- const appendUnitLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.appendUnitLabel"));
77
- const labelSeparator = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.labelSeparator"));
78
- return (React.createElement(React.Fragment, null,
79
- React.createElement("span", { className: "uicore-label" }, appendUnitLabel.current),
80
- React.createElement(Checkbox, { "data-testid": "show-unit-label-checkbox", checked: isFormatTraitSet(FormatTraits.ShowUnitLabel), onChange: handleShowUnitLabelChange }),
81
- React.createElement("span", { className: classnames("uicore-label", !isFormatTraitSet(FormatTraits.ShowUnitLabel) && "uicore-disabled") }, labelSeparator.current),
82
- React.createElement(UomSeparatorSelector, { "data-testid": "uom-separator-select", separator: (_a = formatProps.uomSeparator) !== null && _a !== void 0 ? _a : "", onChange: handleUomSeparatorChange, disabled: !isFormatTraitSet(FormatTraits.ShowUnitLabel) })));
83
- }
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 { Format, FormatTraits, getTraitString } from "@itwin/core-quantity";
11
+ import { Checkbox, Select } from "@itwin/itwinui-react";
12
+ import { UiIModelComponents } from "../UiIModelComponents";
13
+ function UomSeparatorSelector(props) {
14
+ const { separator, onChange, ...otherProps } = props;
15
+ const uomDefaultEntries = React.useRef([
16
+ { value: "", label: UiIModelComponents.translate("QuantityFormat.none") },
17
+ { value: " ", label: UiIModelComponents.translate("QuantityFormat.space") },
18
+ { value: "-", label: UiIModelComponents.translate("QuantityFormat.dash") },
19
+ ]);
20
+ const handleOnChange = React.useCallback((newValue) => {
21
+ onChange && onChange(newValue);
22
+ }, [onChange]);
23
+ const separatorOptions = React.useMemo(() => {
24
+ const completeListOfEntries = [];
25
+ // istanbul ignore next (only used if format already has a character that does not match standard options)
26
+ if (undefined === uomDefaultEntries.current.find((option) => option.value === separator)) {
27
+ completeListOfEntries.push({ value: separator, label: separator });
28
+ }
29
+ completeListOfEntries.push(...uomDefaultEntries.current);
30
+ return completeListOfEntries;
31
+ }, [separator]);
32
+ return (React.createElement(Select, { options: separatorOptions, value: separator, onChange: handleOnChange, size: "small", ...otherProps }));
33
+ }
34
+ /** Component to set the label separator definition in a Quantity Format and if it the label is to be displayed.
35
+ * @alpha
36
+ */
37
+ export function FormatUnitLabel(props) {
38
+ var _a;
39
+ const { formatProps, onUnitLabelChange } = props;
40
+ const handleSetFormatProps = React.useCallback((newProps) => {
41
+ onUnitLabelChange && onUnitLabelChange(newProps);
42
+ }, [onUnitLabelChange]);
43
+ const isFormatTraitSet = React.useCallback((trait) => {
44
+ return Format.isFormatTraitSetInProps(formatProps, trait);
45
+ }, [formatProps]);
46
+ const setFormatTrait = React.useCallback((trait, setActive) => {
47
+ const traitStr = getTraitString(trait);
48
+ let formatTraits = [traitStr];
49
+ if (setActive) { // setting trait
50
+ // istanbul ignore else
51
+ if (formatProps.formatTraits) {
52
+ const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\|/);
53
+ // istanbul ignore else
54
+ if (!traits.find((traitEntry) => traitStr === traitEntry)) {
55
+ formatTraits = [...traits, traitStr];
56
+ }
57
+ }
58
+ }
59
+ else { // clearing trait
60
+ // istanbul ignore next
61
+ if (!formatProps.formatTraits)
62
+ return;
63
+ const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\|/);
64
+ formatTraits = traits.filter((traitEntry) => traitEntry !== traitStr);
65
+ }
66
+ const newFormatProps = { ...formatProps, formatTraits };
67
+ handleSetFormatProps(newFormatProps);
68
+ }, [formatProps, handleSetFormatProps]);
69
+ const handleUomSeparatorChange = React.useCallback((newSeparator) => {
70
+ const newFormatProps = { ...formatProps, uomSeparator: newSeparator };
71
+ handleSetFormatProps(newFormatProps);
72
+ }, [formatProps, handleSetFormatProps]);
73
+ const handleShowUnitLabelChange = React.useCallback((e) => {
74
+ setFormatTrait(FormatTraits.ShowUnitLabel, e.target.checked);
75
+ }, [setFormatTrait]);
76
+ const appendUnitLabel = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.appendUnitLabel"));
77
+ const labelSeparator = React.useRef(UiIModelComponents.translate("QuantityFormat.labels.labelSeparator"));
78
+ return (React.createElement(React.Fragment, null,
79
+ React.createElement("span", { className: "uicore-label" }, appendUnitLabel.current),
80
+ React.createElement(Checkbox, { "data-testid": "show-unit-label-checkbox", checked: isFormatTraitSet(FormatTraits.ShowUnitLabel), onChange: handleShowUnitLabelChange }),
81
+ React.createElement("span", { className: classnames("uicore-label", !isFormatTraitSet(FormatTraits.ShowUnitLabel) && "uicore-disabled") }, labelSeparator.current),
82
+ React.createElement(UomSeparatorSelector, { "data-testid": "uom-separator-select", separator: (_a = formatProps.uomSeparator) !== null && _a !== void 0 ? _a : "", onChange: handleUomSeparatorChange, disabled: !isFormatTraitSet(FormatTraits.ShowUnitLabel) })));
83
+ }
84
84
  //# sourceMappingURL=FormatUnitLabel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormatUnitLabel.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatUnitLabel.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 QuantityFormat\n */\n\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { CommonProps } from \"@itwin/core-react\";\nimport { Format, FormatProps, FormatTraits, getTraitString } from \"@itwin/core-quantity\";\nimport { Checkbox, Select, SelectOption } from \"@itwin/itwinui-react\";\nimport { UiIModelComponents } from \"../UiIModelComponents\";\n\ninterface UomSeparatorSelectorProps extends CommonProps {\n separator: string;\n disabled?: boolean;\n onChange: (value: string) => void;\n}\n\nfunction UomSeparatorSelector(props: UomSeparatorSelectorProps) {\n const { separator, onChange, ...otherProps } = props;\n const uomDefaultEntries = React.useRef<SelectOption<string>[]>([\n { value: \"\", label: UiIModelComponents.translate(\"QuantityFormat.none\") },\n { value: \" \", label: UiIModelComponents.translate(\"QuantityFormat.space\") },\n { value: \"-\", label: UiIModelComponents.translate(\"QuantityFormat.dash\") },\n ]);\n\n const handleOnChange = React.useCallback((newValue: string) => {\n onChange && onChange(newValue);\n }, [onChange]);\n\n const separatorOptions = React.useMemo(() => {\n const completeListOfEntries: SelectOption<string>[] = [];\n // istanbul ignore next (only used if format already has a character that does not match standard options)\n if (undefined === uomDefaultEntries.current.find((option) => option.value === separator)) {\n completeListOfEntries.push({ value: separator, label: separator });\n }\n completeListOfEntries.push(...uomDefaultEntries.current);\n return completeListOfEntries;\n }, [separator]);\n\n return (\n <Select options={separatorOptions} value={separator} onChange={handleOnChange} size=\"small\" {...otherProps} />\n );\n}\n\n/** Properties of [[FormatUnitLabel]] component.\n * @alpha\n */\nexport interface FormatUnitLabelProps extends CommonProps {\n formatProps: FormatProps;\n onUnitLabelChange?: (format: FormatProps) => void;\n}\n\n/** Component to set the label separator definition in a Quantity Format and if it the label is to be displayed.\n * @alpha\n */\nexport function FormatUnitLabel(props: FormatUnitLabelProps) {\n const { formatProps, onUnitLabelChange } = props;\n\n const handleSetFormatProps = React.useCallback((newProps: FormatProps) => {\n onUnitLabelChange && onUnitLabelChange(newProps);\n }, [onUnitLabelChange]);\n\n const isFormatTraitSet = React.useCallback((trait: FormatTraits) => {\n return Format.isFormatTraitSetInProps(formatProps, trait);\n }, [formatProps]);\n\n const setFormatTrait = React.useCallback((trait: FormatTraits, setActive: boolean) => {\n const traitStr = getTraitString(trait);\n let formatTraits: string[] = [traitStr];\n if (setActive) {// setting trait\n // istanbul ignore else\n if (formatProps.formatTraits) {\n const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\\|/);\n // istanbul ignore else\n if (!traits.find((traitEntry) => traitStr === traitEntry)) {\n formatTraits = [...traits, traitStr];\n }\n }\n } else {// clearing trait\n // istanbul ignore next\n if (!formatProps.formatTraits)\n return;\n const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\\|/);\n formatTraits = traits.filter((traitEntry) => traitEntry !== traitStr);\n }\n const newFormatProps = { ...formatProps, formatTraits };\n handleSetFormatProps(newFormatProps);\n }, [formatProps, handleSetFormatProps]);\n\n const handleUomSeparatorChange = React.useCallback((newSeparator: string) => {\n const newFormatProps = { ...formatProps, uomSeparator: newSeparator };\n handleSetFormatProps(newFormatProps);\n }, [formatProps, handleSetFormatProps]);\n\n const handleShowUnitLabelChange = React.useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setFormatTrait(FormatTraits.ShowUnitLabel, e.target.checked);\n }, [setFormatTrait]);\n\n const appendUnitLabel = React.useRef(UiIModelComponents.translate(\"QuantityFormat.labels.appendUnitLabel\"));\n const labelSeparator = React.useRef(UiIModelComponents.translate(\"QuantityFormat.labels.labelSeparator\"));\n\n return (\n <>\n <span className={\"uicore-label\"}>{appendUnitLabel.current}</span>\n <Checkbox data-testid=\"show-unit-label-checkbox\" checked={isFormatTraitSet(FormatTraits.ShowUnitLabel)} onChange={handleShowUnitLabelChange} />\n <span className={classnames(\"uicore-label\", !isFormatTraitSet(FormatTraits.ShowUnitLabel) && \"uicore-disabled\")}>{labelSeparator.current}</span>\n <UomSeparatorSelector data-testid=\"uom-separator-select\" separator={formatProps.uomSeparator ?? \"\"} onChange={handleUomSeparatorChange} disabled={!isFormatTraitSet(FormatTraits.ShowUnitLabel)} />\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"FormatUnitLabel.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatUnitLabel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module QuantityFormat\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\nimport { Format, FormatProps, FormatTraits, getTraitString } from \"@itwin/core-quantity\";\r\nimport { Checkbox, Select, SelectOption } from \"@itwin/itwinui-react\";\r\nimport { UiIModelComponents } from \"../UiIModelComponents\";\r\n\r\ninterface UomSeparatorSelectorProps extends CommonProps {\r\n separator: string;\r\n disabled?: boolean;\r\n onChange: (value: string) => void;\r\n}\r\n\r\nfunction UomSeparatorSelector(props: UomSeparatorSelectorProps) {\r\n const { separator, onChange, ...otherProps } = props;\r\n const uomDefaultEntries = React.useRef<SelectOption<string>[]>([\r\n { value: \"\", label: UiIModelComponents.translate(\"QuantityFormat.none\") },\r\n { value: \" \", label: UiIModelComponents.translate(\"QuantityFormat.space\") },\r\n { value: \"-\", label: UiIModelComponents.translate(\"QuantityFormat.dash\") },\r\n ]);\r\n\r\n const handleOnChange = React.useCallback((newValue: string) => {\r\n onChange && onChange(newValue);\r\n }, [onChange]);\r\n\r\n const separatorOptions = React.useMemo(() => {\r\n const completeListOfEntries: SelectOption<string>[] = [];\r\n // istanbul ignore next (only used if format already has a character that does not match standard options)\r\n if (undefined === uomDefaultEntries.current.find((option) => option.value === separator)) {\r\n completeListOfEntries.push({ value: separator, label: separator });\r\n }\r\n completeListOfEntries.push(...uomDefaultEntries.current);\r\n return completeListOfEntries;\r\n }, [separator]);\r\n\r\n return (\r\n <Select options={separatorOptions} value={separator} onChange={handleOnChange} size=\"small\" {...otherProps} />\r\n );\r\n}\r\n\r\n/** Properties of [[FormatUnitLabel]] component.\r\n * @alpha\r\n */\r\nexport interface FormatUnitLabelProps extends CommonProps {\r\n formatProps: FormatProps;\r\n onUnitLabelChange?: (format: FormatProps) => void;\r\n}\r\n\r\n/** Component to set the label separator definition in a Quantity Format and if it the label is to be displayed.\r\n * @alpha\r\n */\r\nexport function FormatUnitLabel(props: FormatUnitLabelProps) {\r\n const { formatProps, onUnitLabelChange } = props;\r\n\r\n const handleSetFormatProps = React.useCallback((newProps: FormatProps) => {\r\n onUnitLabelChange && onUnitLabelChange(newProps);\r\n }, [onUnitLabelChange]);\r\n\r\n const isFormatTraitSet = React.useCallback((trait: FormatTraits) => {\r\n return Format.isFormatTraitSetInProps(formatProps, trait);\r\n }, [formatProps]);\r\n\r\n const setFormatTrait = React.useCallback((trait: FormatTraits, setActive: boolean) => {\r\n const traitStr = getTraitString(trait);\r\n let formatTraits: string[] = [traitStr];\r\n if (setActive) {// setting trait\r\n // istanbul ignore else\r\n if (formatProps.formatTraits) {\r\n const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\\|/);\r\n // istanbul ignore else\r\n if (!traits.find((traitEntry) => traitStr === traitEntry)) {\r\n formatTraits = [...traits, traitStr];\r\n }\r\n }\r\n } else {// clearing trait\r\n // istanbul ignore next\r\n if (!formatProps.formatTraits)\r\n return;\r\n const traits = Array.isArray(formatProps.formatTraits) ? formatProps.formatTraits : /* istanbul ignore next */ formatProps.formatTraits.split(/,|;|\\|/);\r\n formatTraits = traits.filter((traitEntry) => traitEntry !== traitStr);\r\n }\r\n const newFormatProps = { ...formatProps, formatTraits };\r\n handleSetFormatProps(newFormatProps);\r\n }, [formatProps, handleSetFormatProps]);\r\n\r\n const handleUomSeparatorChange = React.useCallback((newSeparator: string) => {\r\n const newFormatProps = { ...formatProps, uomSeparator: newSeparator };\r\n handleSetFormatProps(newFormatProps);\r\n }, [formatProps, handleSetFormatProps]);\r\n\r\n const handleShowUnitLabelChange = React.useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n setFormatTrait(FormatTraits.ShowUnitLabel, e.target.checked);\r\n }, [setFormatTrait]);\r\n\r\n const appendUnitLabel = React.useRef(UiIModelComponents.translate(\"QuantityFormat.labels.appendUnitLabel\"));\r\n const labelSeparator = React.useRef(UiIModelComponents.translate(\"QuantityFormat.labels.labelSeparator\"));\r\n\r\n return (\r\n <>\r\n <span className={\"uicore-label\"}>{appendUnitLabel.current}</span>\r\n <Checkbox data-testid=\"show-unit-label-checkbox\" checked={isFormatTraitSet(FormatTraits.ShowUnitLabel)} onChange={handleShowUnitLabelChange} />\r\n <span className={classnames(\"uicore-label\", !isFormatTraitSet(FormatTraits.ShowUnitLabel) && \"uicore-disabled\")}>{labelSeparator.current}</span>\r\n <UomSeparatorSelector data-testid=\"uom-separator-select\" separator={formatProps.uomSeparator ?? \"\"} onChange={handleUomSeparatorChange} disabled={!isFormatTraitSet(FormatTraits.ShowUnitLabel)} />\r\n </>\r\n );\r\n}\r\n"]}