@itwin/components-react 4.1.0-dev.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/lib/cjs/components-react/UiComponents.js.map +1 -1
  3. package/lib/cjs/components-react/_target.scss +9 -9
  4. package/lib/cjs/components-react/common/DateUtils.js.map +1 -1
  5. package/lib/cjs/components-react/common/DelayedSpinner.js.map +1 -1
  6. package/lib/cjs/components-react/common/HighlightedText.js.map +1 -1
  7. package/lib/cjs/components-react/common/HighlightingComponentProps.js.map +1 -1
  8. package/lib/cjs/components-react/common/IImageLoader.js.map +1 -1
  9. package/lib/cjs/components-react/common/ImageRenderer.js.map +1 -1
  10. package/lib/cjs/components-react/common/Links.js.map +1 -1
  11. package/lib/cjs/components-react/common/PageOptions.js.map +1 -1
  12. package/lib/cjs/components-react/common/SubscriptionScheduler.js.map +1 -1
  13. package/lib/cjs/components-react/common/UseAsyncValue.js.map +1 -1
  14. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  15. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  16. package/lib/cjs/components-react/common/UseRerender.js.map +1 -1
  17. package/lib/cjs/components-react/common/countMatchesInString.js.map +1 -1
  18. package/lib/cjs/components-react/common/selection/SelectionHandler.js.map +1 -1
  19. package/lib/cjs/components-react/common/selection/SelectionModes.js.map +1 -1
  20. package/lib/cjs/components-react/converters/BooleanTypeConverter.js.map +1 -1
  21. package/lib/cjs/components-react/converters/CompositeTypeConverter.js.map +1 -1
  22. package/lib/cjs/components-react/converters/DateTimeTypeConverter.js.map +1 -1
  23. package/lib/cjs/components-react/converters/EnumTypeConverter.js.map +1 -1
  24. package/lib/cjs/components-react/converters/HexadecimalTypeConverter.js.map +1 -1
  25. package/lib/cjs/components-react/converters/NavigationPropertyTypeConverter.js.map +1 -1
  26. package/lib/cjs/components-react/converters/NumericTypeConverter.js.map +1 -1
  27. package/lib/cjs/components-react/converters/PointTypeConverter.js.map +1 -1
  28. package/lib/cjs/components-react/converters/StringTypeConverter.js.map +1 -1
  29. package/lib/cjs/components-react/converters/TypeConverter.js.map +1 -1
  30. package/lib/cjs/components-react/converters/TypeConverterManager.js.map +1 -1
  31. package/lib/cjs/components-react/converters/valuetypes/ConvertedTypes.js.map +1 -1
  32. package/lib/cjs/components-react/datepicker/DateField.js.map +1 -1
  33. package/lib/cjs/components-react/datepicker/DateField.scss +22 -22
  34. package/lib/cjs/components-react/datepicker/DatePicker.js.map +1 -1
  35. package/lib/cjs/components-react/datepicker/DatePicker.scss +176 -176
  36. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  37. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.scss +57 -57
  38. package/lib/cjs/components-react/datepicker/IntlFormatter.js.map +1 -1
  39. package/lib/cjs/components-react/datepicker/TimeField.js.map +1 -1
  40. package/lib/cjs/components-react/datepicker/TimeField.scss +76 -76
  41. package/lib/cjs/components-react/editors/BooleanEditor.js.map +1 -1
  42. package/lib/cjs/components-react/editors/BooleanEditor.scss +22 -22
  43. package/lib/cjs/components-react/editors/CustomNumberEditor.js.map +1 -1
  44. package/lib/cjs/components-react/editors/CustomNumberEditor.scss +20 -20
  45. package/lib/cjs/components-react/editors/DateTimeEditor.js.map +1 -1
  46. package/lib/cjs/components-react/editors/DateTimeEditor.scss +9 -9
  47. package/lib/cjs/components-react/editors/EditorContainer.js.map +1 -1
  48. package/lib/cjs/components-react/editors/EditorContainer.scss +6 -6
  49. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  50. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.scss +141 -141
  51. package/lib/cjs/components-react/editors/EnumEditor.js.map +1 -1
  52. package/lib/cjs/components-react/editors/EnumEditor.scss +22 -22
  53. package/lib/cjs/components-react/editors/IconEditor.js.map +1 -1
  54. package/lib/cjs/components-react/editors/IconEditor.scss +16 -16
  55. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
  56. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.scss +24 -24
  57. package/lib/cjs/components-react/editors/NumericInputEditor.js.map +1 -1
  58. package/lib/cjs/components-react/editors/NumericInputEditor.scss +16 -16
  59. package/lib/cjs/components-react/editors/PopupButton.js.map +1 -1
  60. package/lib/cjs/components-react/editors/PopupButton.scss +116 -116
  61. package/lib/cjs/components-react/editors/PropertyEditorManager.js.map +1 -1
  62. package/lib/cjs/components-react/editors/SliderEditor.js.map +1 -1
  63. package/lib/cjs/components-react/editors/SliderEditor.scss +13 -13
  64. package/lib/cjs/components-react/editors/TextEditor.js.map +1 -1
  65. package/lib/cjs/components-react/editors/TextEditor.scss +20 -20
  66. package/lib/cjs/components-react/editors/TextareaEditor.js.map +1 -1
  67. package/lib/cjs/components-react/editors/TextareaEditor.scss +14 -14
  68. package/lib/cjs/components-react/editors/ToggleEditor.js.map +1 -1
  69. package/lib/cjs/components-react/editors/ToggleEditor.scss +23 -23
  70. package/lib/cjs/components-react/editors/variables.scss +7 -7
  71. package/lib/cjs/components-react/favorite/FavoritePropertiesRenderer.js.map +1 -1
  72. package/lib/cjs/components-react/favorite/FavoritePropertyList.js.map +1 -1
  73. package/lib/cjs/components-react/filter-builder/FilterBuilder.js.map +1 -1
  74. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  75. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  76. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +38 -38
  77. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  78. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.scss +68 -68
  79. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  80. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  81. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  82. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  83. package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
  84. package/lib/cjs/components-react/filter-builder/Types.js.map +1 -1
  85. package/lib/cjs/components-react/filtering/FilteringInput.js.map +1 -1
  86. package/lib/cjs/components-react/filtering/FilteringInput.scss +58 -58
  87. package/lib/cjs/components-react/filtering/ResultSelector.js.map +1 -1
  88. package/lib/cjs/components-react/filtering/ResultSelector.scss +68 -68
  89. package/lib/cjs/components-react/iconpicker/IconPickerButton.js.map +1 -1
  90. package/lib/cjs/components-react/iconpicker/IconPickerButton.scss +75 -75
  91. package/lib/cjs/components-react/inputs/ParsedInput.js.map +1 -1
  92. package/lib/cjs/components-react/inputs/ParsedInput.scss +23 -23
  93. package/lib/cjs/components-react/properties/ItemStyle.js.map +1 -1
  94. package/lib/cjs/components-react/properties/LinkHandler.js.map +1 -1
  95. package/lib/cjs/components-react/properties/ValueRendererManager.js.map +1 -1
  96. package/lib/cjs/components-react/properties/renderers/ActionButtonList.js.map +1 -1
  97. package/lib/cjs/components-react/properties/renderers/ActionButtonList.scss +25 -25
  98. package/lib/cjs/components-react/properties/renderers/ActionButtonRenderer.js.map +1 -1
  99. package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  100. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  101. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +17 -17
  102. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  103. package/lib/cjs/components-react/properties/renderers/PropertyGridColumns.js.map +1 -1
  104. package/lib/cjs/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
  105. package/lib/cjs/components-react/properties/renderers/PropertyView.js.map +1 -1
  106. package/lib/cjs/components-react/properties/renderers/PropertyView.scss +111 -111
  107. package/lib/cjs/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.js.map +1 -1
  108. package/lib/cjs/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.js.map +1 -1
  109. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  110. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.scss +88 -88
  111. package/lib/cjs/components-react/properties/renderers/value/ArrayPropertyValueRenderer.js.map +1 -1
  112. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  113. package/lib/cjs/components-react/properties/renderers/value/MergedPropertyValueRenderer.js.map +1 -1
  114. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  115. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  116. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  117. package/lib/cjs/components-react/properties/renderers/value/StructPropertyValueRenderer.js.map +1 -1
  118. package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
  119. package/lib/cjs/components-react/properties/renderers/value/WithContextStyle.js.map +1 -1
  120. package/lib/cjs/components-react/properties/renderers/value/table/ArrayValueRenderer.js.map +1 -1
  121. package/lib/cjs/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.js.map +1 -1
  122. package/lib/cjs/components-react/properties/renderers/value/table/StructValueRenderer.js.map +1 -1
  123. package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  124. package/lib/cjs/components-react/propertygrid/PropertyDataProvider.js.map +1 -1
  125. package/lib/cjs/components-react/propertygrid/SimplePropertyDataProvider.js.map +1 -1
  126. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  127. package/lib/cjs/components-react/propertygrid/component/FlatItemNestedBorderWrapper.js.map +1 -1
  128. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  129. package/lib/cjs/components-react/propertygrid/component/PropertyGrid.scss +73 -73
  130. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  131. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  132. package/lib/cjs/components-react/propertygrid/component/PropertyList.js.map +1 -1
  133. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  134. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +101 -101
  135. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
  136. package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  137. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  138. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  139. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/LabelPropertyDataFilterer.js.map +1 -1
  140. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/PropertyCategoryLabelFilterer.js.map +1 -1
  141. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.js.map +1 -1
  142. package/lib/cjs/components-react/propertygrid/internal/PropertyGridEventHandler.js.map +1 -1
  143. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  144. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModel.js.map +1 -1
  145. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelChangeEvent.js.map +1 -1
  146. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
  147. package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
  148. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js.map +1 -1
  149. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.js.map +1 -1
  150. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js.map +1 -1
  151. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  152. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  153. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  154. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  155. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  156. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  157. package/lib/cjs/components-react/selectable-content/SelectableContent.js.map +1 -1
  158. package/lib/cjs/components-react/selectable-content/SelectableContent.scss +20 -20
  159. package/lib/cjs/components-react/toolbar/Item.js.map +1 -1
  160. package/lib/cjs/components-react/toolbar/Item.scss +91 -91
  161. package/lib/cjs/components-react/toolbar/ItemWrapper.js.map +1 -1
  162. package/lib/cjs/components-react/toolbar/ItemWrapper.scss +10 -10
  163. package/lib/cjs/components-react/toolbar/Items.js.map +1 -1
  164. package/lib/cjs/components-react/toolbar/Items.scss +96 -96
  165. package/lib/cjs/components-react/toolbar/Overflow.js.map +1 -1
  166. package/lib/cjs/components-react/toolbar/Overflow.scss +57 -57
  167. package/lib/cjs/components-react/toolbar/OverflowPanel.js.map +1 -1
  168. package/lib/cjs/components-react/toolbar/OverflowPanel.scss +37 -37
  169. package/lib/cjs/components-react/toolbar/PopupItem.js.map +1 -1
  170. package/lib/cjs/components-react/toolbar/PopupItem.scss +88 -88
  171. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  172. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  173. package/lib/cjs/components-react/toolbar/Toolbar.js.map +1 -1
  174. package/lib/cjs/components-react/toolbar/Toolbar.scss +18 -18
  175. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  176. package/lib/cjs/components-react/toolbar/_variables.scss +34 -34
  177. package/lib/cjs/components-react/toolbar/groupPanel/BackArrow.js.map +1 -1
  178. package/lib/cjs/components-react/toolbar/groupPanel/BackArrow.scss +44 -44
  179. package/lib/cjs/components-react/toolbar/groupPanel/Column.js.map +1 -1
  180. package/lib/cjs/components-react/toolbar/groupPanel/Column.scss +9 -9
  181. package/lib/cjs/components-react/toolbar/groupPanel/Columns.js.map +1 -1
  182. package/lib/cjs/components-react/toolbar/groupPanel/Columns.scss +10 -10
  183. package/lib/cjs/components-react/toolbar/groupPanel/Panel.js.map +1 -1
  184. package/lib/cjs/components-react/toolbar/groupPanel/Panel.scss +15 -15
  185. package/lib/cjs/components-react/toolbar/groupPanel/Title.js.map +1 -1
  186. package/lib/cjs/components-react/toolbar/groupPanel/Title.scss +33 -33
  187. package/lib/cjs/components-react/toolbar/groupPanel/_variables.scss +16 -16
  188. package/lib/cjs/components-react/toolbar/groupPanel/tool/Expander.js.map +1 -1
  189. package/lib/cjs/components-react/toolbar/groupPanel/tool/Expander.scss +29 -29
  190. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.js.map +1 -1
  191. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.scss +117 -117
  192. package/lib/cjs/components-react/toolbar/groupPanel/tool/_variables.scss +12 -12
  193. package/lib/cjs/components-react/toolbar/useDragInteraction.js.map +1 -1
  194. package/lib/cjs/components-react/toolbar/utilities/Direction.js.map +1 -1
  195. package/lib/cjs/components-react/tree/HighlightingEngine.js.map +1 -1
  196. package/lib/cjs/components-react/tree/HighlightingEngine.scss +7 -7
  197. package/lib/cjs/components-react/tree/ImageLoader.js.map +1 -1
  198. package/lib/cjs/components-react/tree/SimpleTreeDataProvider.js.map +1 -1
  199. package/lib/cjs/components-react/tree/TreeComponentTestId.js.map +1 -1
  200. package/lib/cjs/components-react/tree/TreeDataProvider.js.map +1 -1
  201. package/lib/cjs/components-react/tree/controlled/Observable.js.map +1 -1
  202. package/lib/cjs/components-react/tree/controlled/TreeActions.js.map +1 -1
  203. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  204. package/lib/cjs/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
  205. package/lib/cjs/components-react/tree/controlled/TreeEvents.js.map +1 -1
  206. package/lib/cjs/components-react/tree/controlled/TreeHooks.js.map +1 -1
  207. package/lib/cjs/components-react/tree/controlled/TreeModel.js.map +1 -1
  208. package/lib/cjs/components-react/tree/controlled/TreeModelSource.js.map +1 -1
  209. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  210. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  211. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.scss +102 -102
  212. package/lib/cjs/components-react/tree/controlled/component/NodeContent.js.map +1 -1
  213. package/lib/cjs/components-react/tree/controlled/component/NodeContent.scss +27 -27
  214. package/lib/cjs/components-react/tree/controlled/component/TreeNodeEditor.js.map +1 -1
  215. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.js.map +1 -1
  216. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  217. package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  218. package/lib/cjs/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
  219. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  220. package/lib/cjs/components-react.js.map +1 -1
  221. package/lib/esm/components-react/UiComponents.js.map +1 -1
  222. package/lib/esm/components-react/_target.scss +9 -9
  223. package/lib/esm/components-react/common/DateUtils.js.map +1 -1
  224. package/lib/esm/components-react/common/DelayedSpinner.js.map +1 -1
  225. package/lib/esm/components-react/common/HighlightedText.js.map +1 -1
  226. package/lib/esm/components-react/common/HighlightingComponentProps.js.map +1 -1
  227. package/lib/esm/components-react/common/IImageLoader.js.map +1 -1
  228. package/lib/esm/components-react/common/ImageRenderer.js.map +1 -1
  229. package/lib/esm/components-react/common/Links.js.map +1 -1
  230. package/lib/esm/components-react/common/PageOptions.js.map +1 -1
  231. package/lib/esm/components-react/common/SubscriptionScheduler.js.map +1 -1
  232. package/lib/esm/components-react/common/UseAsyncValue.js.map +1 -1
  233. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  234. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  235. package/lib/esm/components-react/common/UseRerender.js.map +1 -1
  236. package/lib/esm/components-react/common/countMatchesInString.js.map +1 -1
  237. package/lib/esm/components-react/common/selection/SelectionHandler.js.map +1 -1
  238. package/lib/esm/components-react/common/selection/SelectionModes.js.map +1 -1
  239. package/lib/esm/components-react/converters/BooleanTypeConverter.js.map +1 -1
  240. package/lib/esm/components-react/converters/CompositeTypeConverter.js.map +1 -1
  241. package/lib/esm/components-react/converters/DateTimeTypeConverter.js.map +1 -1
  242. package/lib/esm/components-react/converters/EnumTypeConverter.js.map +1 -1
  243. package/lib/esm/components-react/converters/HexadecimalTypeConverter.js.map +1 -1
  244. package/lib/esm/components-react/converters/NavigationPropertyTypeConverter.js.map +1 -1
  245. package/lib/esm/components-react/converters/NumericTypeConverter.js.map +1 -1
  246. package/lib/esm/components-react/converters/PointTypeConverter.js.map +1 -1
  247. package/lib/esm/components-react/converters/StringTypeConverter.js.map +1 -1
  248. package/lib/esm/components-react/converters/TypeConverter.js.map +1 -1
  249. package/lib/esm/components-react/converters/TypeConverterManager.js.map +1 -1
  250. package/lib/esm/components-react/converters/valuetypes/ConvertedTypes.js.map +1 -1
  251. package/lib/esm/components-react/datepicker/DateField.js.map +1 -1
  252. package/lib/esm/components-react/datepicker/DateField.scss +22 -22
  253. package/lib/esm/components-react/datepicker/DatePicker.js.map +1 -1
  254. package/lib/esm/components-react/datepicker/DatePicker.scss +176 -176
  255. package/lib/esm/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  256. package/lib/esm/components-react/datepicker/DatePickerPopupButton.scss +57 -57
  257. package/lib/esm/components-react/datepicker/IntlFormatter.js.map +1 -1
  258. package/lib/esm/components-react/datepicker/TimeField.js.map +1 -1
  259. package/lib/esm/components-react/datepicker/TimeField.scss +76 -76
  260. package/lib/esm/components-react/editors/BooleanEditor.js.map +1 -1
  261. package/lib/esm/components-react/editors/BooleanEditor.scss +22 -22
  262. package/lib/esm/components-react/editors/CustomNumberEditor.js.map +1 -1
  263. package/lib/esm/components-react/editors/CustomNumberEditor.scss +20 -20
  264. package/lib/esm/components-react/editors/DateTimeEditor.js.map +1 -1
  265. package/lib/esm/components-react/editors/DateTimeEditor.scss +9 -9
  266. package/lib/esm/components-react/editors/EditorContainer.js.map +1 -1
  267. package/lib/esm/components-react/editors/EditorContainer.scss +6 -6
  268. package/lib/esm/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  269. package/lib/esm/components-react/editors/EnumButtonGroupEditor.scss +141 -141
  270. package/lib/esm/components-react/editors/EnumEditor.js.map +1 -1
  271. package/lib/esm/components-react/editors/EnumEditor.scss +22 -22
  272. package/lib/esm/components-react/editors/IconEditor.js.map +1 -1
  273. package/lib/esm/components-react/editors/IconEditor.scss +16 -16
  274. package/lib/esm/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
  275. package/lib/esm/components-react/editors/ImageCheckBoxEditor.scss +24 -24
  276. package/lib/esm/components-react/editors/NumericInputEditor.js.map +1 -1
  277. package/lib/esm/components-react/editors/NumericInputEditor.scss +16 -16
  278. package/lib/esm/components-react/editors/PopupButton.js.map +1 -1
  279. package/lib/esm/components-react/editors/PopupButton.scss +116 -116
  280. package/lib/esm/components-react/editors/PropertyEditorManager.js.map +1 -1
  281. package/lib/esm/components-react/editors/SliderEditor.js.map +1 -1
  282. package/lib/esm/components-react/editors/SliderEditor.scss +13 -13
  283. package/lib/esm/components-react/editors/TextEditor.js.map +1 -1
  284. package/lib/esm/components-react/editors/TextEditor.scss +20 -20
  285. package/lib/esm/components-react/editors/TextareaEditor.js.map +1 -1
  286. package/lib/esm/components-react/editors/TextareaEditor.scss +14 -14
  287. package/lib/esm/components-react/editors/ToggleEditor.js.map +1 -1
  288. package/lib/esm/components-react/editors/ToggleEditor.scss +23 -23
  289. package/lib/esm/components-react/editors/variables.scss +7 -7
  290. package/lib/esm/components-react/favorite/FavoritePropertiesRenderer.js.map +1 -1
  291. package/lib/esm/components-react/favorite/FavoritePropertyList.js.map +1 -1
  292. package/lib/esm/components-react/filter-builder/FilterBuilder.js.map +1 -1
  293. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  294. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  295. package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +38 -38
  296. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  297. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.scss +68 -68
  298. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  299. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  300. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  301. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  302. package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
  303. package/lib/esm/components-react/filter-builder/Types.js.map +1 -1
  304. package/lib/esm/components-react/filtering/FilteringInput.js.map +1 -1
  305. package/lib/esm/components-react/filtering/FilteringInput.scss +58 -58
  306. package/lib/esm/components-react/filtering/ResultSelector.js.map +1 -1
  307. package/lib/esm/components-react/filtering/ResultSelector.scss +68 -68
  308. package/lib/esm/components-react/iconpicker/IconPickerButton.js.map +1 -1
  309. package/lib/esm/components-react/iconpicker/IconPickerButton.scss +75 -75
  310. package/lib/esm/components-react/inputs/ParsedInput.js.map +1 -1
  311. package/lib/esm/components-react/inputs/ParsedInput.scss +23 -23
  312. package/lib/esm/components-react/properties/ItemStyle.js.map +1 -1
  313. package/lib/esm/components-react/properties/LinkHandler.js.map +1 -1
  314. package/lib/esm/components-react/properties/ValueRendererManager.js.map +1 -1
  315. package/lib/esm/components-react/properties/renderers/ActionButtonList.js.map +1 -1
  316. package/lib/esm/components-react/properties/renderers/ActionButtonList.scss +25 -25
  317. package/lib/esm/components-react/properties/renderers/ActionButtonRenderer.js.map +1 -1
  318. package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  319. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  320. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +17 -17
  321. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  322. package/lib/esm/components-react/properties/renderers/PropertyGridColumns.js.map +1 -1
  323. package/lib/esm/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
  324. package/lib/esm/components-react/properties/renderers/PropertyView.js.map +1 -1
  325. package/lib/esm/components-react/properties/renderers/PropertyView.scss +111 -111
  326. package/lib/esm/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.js.map +1 -1
  327. package/lib/esm/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.js.map +1 -1
  328. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  329. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.scss +88 -88
  330. package/lib/esm/components-react/properties/renderers/value/ArrayPropertyValueRenderer.js.map +1 -1
  331. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  332. package/lib/esm/components-react/properties/renderers/value/MergedPropertyValueRenderer.js.map +1 -1
  333. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  334. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  335. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  336. package/lib/esm/components-react/properties/renderers/value/StructPropertyValueRenderer.js.map +1 -1
  337. package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
  338. package/lib/esm/components-react/properties/renderers/value/WithContextStyle.js.map +1 -1
  339. package/lib/esm/components-react/properties/renderers/value/table/ArrayValueRenderer.js.map +1 -1
  340. package/lib/esm/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.js.map +1 -1
  341. package/lib/esm/components-react/properties/renderers/value/table/StructValueRenderer.js.map +1 -1
  342. package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  343. package/lib/esm/components-react/propertygrid/PropertyDataProvider.js.map +1 -1
  344. package/lib/esm/components-react/propertygrid/SimplePropertyDataProvider.js.map +1 -1
  345. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  346. package/lib/esm/components-react/propertygrid/component/FlatItemNestedBorderWrapper.js.map +1 -1
  347. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  348. package/lib/esm/components-react/propertygrid/component/PropertyGrid.scss +73 -73
  349. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  350. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  351. package/lib/esm/components-react/propertygrid/component/PropertyList.js.map +1 -1
  352. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  353. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +101 -101
  354. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
  355. package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  356. package/lib/esm/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  357. package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  358. package/lib/esm/components-react/propertygrid/dataproviders/filterers/LabelPropertyDataFilterer.js.map +1 -1
  359. package/lib/esm/components-react/propertygrid/dataproviders/filterers/PropertyCategoryLabelFilterer.js.map +1 -1
  360. package/lib/esm/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.js.map +1 -1
  361. package/lib/esm/components-react/propertygrid/internal/PropertyGridEventHandler.js.map +1 -1
  362. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  363. package/lib/esm/components-react/propertygrid/internal/PropertyGridModel.js.map +1 -1
  364. package/lib/esm/components-react/propertygrid/internal/PropertyGridModelChangeEvent.js.map +1 -1
  365. package/lib/esm/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
  366. package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
  367. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js.map +1 -1
  368. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.js.map +1 -1
  369. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js.map +1 -1
  370. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  371. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  372. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  373. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  374. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  375. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  376. package/lib/esm/components-react/selectable-content/SelectableContent.js.map +1 -1
  377. package/lib/esm/components-react/selectable-content/SelectableContent.scss +20 -20
  378. package/lib/esm/components-react/toolbar/Item.js.map +1 -1
  379. package/lib/esm/components-react/toolbar/Item.scss +91 -91
  380. package/lib/esm/components-react/toolbar/ItemWrapper.js.map +1 -1
  381. package/lib/esm/components-react/toolbar/ItemWrapper.scss +10 -10
  382. package/lib/esm/components-react/toolbar/Items.js.map +1 -1
  383. package/lib/esm/components-react/toolbar/Items.scss +96 -96
  384. package/lib/esm/components-react/toolbar/Overflow.js.map +1 -1
  385. package/lib/esm/components-react/toolbar/Overflow.scss +57 -57
  386. package/lib/esm/components-react/toolbar/OverflowPanel.js.map +1 -1
  387. package/lib/esm/components-react/toolbar/OverflowPanel.scss +37 -37
  388. package/lib/esm/components-react/toolbar/PopupItem.js.map +1 -1
  389. package/lib/esm/components-react/toolbar/PopupItem.scss +88 -88
  390. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  391. package/lib/esm/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  392. package/lib/esm/components-react/toolbar/Toolbar.js.map +1 -1
  393. package/lib/esm/components-react/toolbar/Toolbar.scss +18 -18
  394. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  395. package/lib/esm/components-react/toolbar/_variables.scss +34 -34
  396. package/lib/esm/components-react/toolbar/groupPanel/BackArrow.js.map +1 -1
  397. package/lib/esm/components-react/toolbar/groupPanel/BackArrow.scss +44 -44
  398. package/lib/esm/components-react/toolbar/groupPanel/Column.js.map +1 -1
  399. package/lib/esm/components-react/toolbar/groupPanel/Column.scss +9 -9
  400. package/lib/esm/components-react/toolbar/groupPanel/Columns.js.map +1 -1
  401. package/lib/esm/components-react/toolbar/groupPanel/Columns.scss +10 -10
  402. package/lib/esm/components-react/toolbar/groupPanel/Panel.js.map +1 -1
  403. package/lib/esm/components-react/toolbar/groupPanel/Panel.scss +15 -15
  404. package/lib/esm/components-react/toolbar/groupPanel/Title.js.map +1 -1
  405. package/lib/esm/components-react/toolbar/groupPanel/Title.scss +33 -33
  406. package/lib/esm/components-react/toolbar/groupPanel/_variables.scss +16 -16
  407. package/lib/esm/components-react/toolbar/groupPanel/tool/Expander.js.map +1 -1
  408. package/lib/esm/components-react/toolbar/groupPanel/tool/Expander.scss +29 -29
  409. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.js.map +1 -1
  410. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.scss +117 -117
  411. package/lib/esm/components-react/toolbar/groupPanel/tool/_variables.scss +12 -12
  412. package/lib/esm/components-react/toolbar/useDragInteraction.js.map +1 -1
  413. package/lib/esm/components-react/toolbar/utilities/Direction.js.map +1 -1
  414. package/lib/esm/components-react/tree/HighlightingEngine.js.map +1 -1
  415. package/lib/esm/components-react/tree/HighlightingEngine.scss +7 -7
  416. package/lib/esm/components-react/tree/ImageLoader.js.map +1 -1
  417. package/lib/esm/components-react/tree/SimpleTreeDataProvider.js.map +1 -1
  418. package/lib/esm/components-react/tree/TreeComponentTestId.js.map +1 -1
  419. package/lib/esm/components-react/tree/TreeDataProvider.js.map +1 -1
  420. package/lib/esm/components-react/tree/controlled/Observable.js.map +1 -1
  421. package/lib/esm/components-react/tree/controlled/TreeActions.js.map +1 -1
  422. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  423. package/lib/esm/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
  424. package/lib/esm/components-react/tree/controlled/TreeEvents.js.map +1 -1
  425. package/lib/esm/components-react/tree/controlled/TreeHooks.js.map +1 -1
  426. package/lib/esm/components-react/tree/controlled/TreeModel.js.map +1 -1
  427. package/lib/esm/components-react/tree/controlled/TreeModelSource.js.map +1 -1
  428. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  429. package/lib/esm/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  430. package/lib/esm/components-react/tree/controlled/component/ControlledTree.scss +102 -102
  431. package/lib/esm/components-react/tree/controlled/component/NodeContent.js.map +1 -1
  432. package/lib/esm/components-react/tree/controlled/component/NodeContent.scss +27 -27
  433. package/lib/esm/components-react/tree/controlled/component/TreeNodeEditor.js.map +1 -1
  434. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.js.map +1 -1
  435. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  436. package/lib/esm/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  437. package/lib/esm/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
  438. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  439. package/lib/esm/components-react.js.map +1 -1
  440. package/lib/public/locales/en/UiComponents.json +139 -139
  441. package/package.json +3 -3
@@ -1,57 +1,57 @@
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
- @import "~@itwin/core-react/lib/cjs/core-react/index";
6
-
7
- .components-date-picker-calendar-popup-button {
8
- color: var(--iui-color-text);
9
- font-size: var(--iui-font-size-1);
10
- background-color: transparent;
11
- height: 2.2em;
12
- border: none;
13
- margin-right: 2px;
14
-
15
- .datepicker-button {
16
- width: 16px;
17
- height: 16px;
18
- }
19
-
20
- svg {
21
- fill: var(--iui-color-icon);
22
- }
23
-
24
- &:hover {
25
- color: var(--iui-color-text-accent-hover);
26
- cursor: auto;
27
-
28
- svg {
29
- fill: $buic-foreground-primary-tone;
30
- }
31
- }
32
-
33
- &:focus {
34
- box-shadow: $buic-focus-boxshadow 0px 0px 0px 2px;
35
- outline: none;
36
- }
37
- }
38
-
39
- .components-date-picker-calendar-popup-panel {
40
- display: flex;
41
- flex-direction: column;
42
- background-color: $buic-background-control;
43
-
44
- .time-container {
45
- display: flex;
46
- flex-direction: row;
47
- align-items: center;
48
- justify-content: center;
49
- border-top: 2px solid var(--iui-color-border-foreground);
50
- padding-top: 8px;
51
- padding-bottom: 8px;
52
-
53
- .time-label {
54
- margin-right: 4px;
55
- }
56
- }
57
- }
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
+ @import "~@itwin/core-react/lib/cjs/core-react/index";
6
+
7
+ .components-date-picker-calendar-popup-button {
8
+ color: var(--iui-color-text);
9
+ font-size: var(--iui-font-size-1);
10
+ background-color: transparent;
11
+ height: 2.2em;
12
+ border: none;
13
+ margin-right: 2px;
14
+
15
+ .datepicker-button {
16
+ width: 16px;
17
+ height: 16px;
18
+ }
19
+
20
+ svg {
21
+ fill: var(--iui-color-icon);
22
+ }
23
+
24
+ &:hover {
25
+ color: var(--iui-color-text-accent-hover);
26
+ cursor: auto;
27
+
28
+ svg {
29
+ fill: $buic-foreground-primary-tone;
30
+ }
31
+ }
32
+
33
+ &:focus {
34
+ box-shadow: $buic-focus-boxshadow 0px 0px 0px 2px;
35
+ outline: none;
36
+ }
37
+ }
38
+
39
+ .components-date-picker-calendar-popup-panel {
40
+ display: flex;
41
+ flex-direction: column;
42
+ background-color: $buic-background-control;
43
+
44
+ .time-container {
45
+ display: flex;
46
+ flex-direction: row;
47
+ align-items: center;
48
+ justify-content: center;
49
+ border-top: 2px solid var(--iui-color-border-foreground);
50
+ padding-top: 8px;
51
+ padding-bottom: 8px;
52
+
53
+ .time-label {
54
+ margin-right: 4px;
55
+ }
56
+ }
57
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"IntlFormatter.js","sourceRoot":"","sources":["../../../../src/components-react/datepicker/IntlFormatter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH;;;;;;;GAOG;AACH,MAAM,OAAO,aAAa;IACxB,YAAoB,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;IACxD,CAAC;IAED,IAAW,SAAS;QAClB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,+DAA+D;YAC/D,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EACrD;gBACE,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS,EAAG,0BAA0B;gBAC9C,4BAA4B,CAAC,qBAAqB;aACnD,CAAC,CAAC;SACN;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEM,WAAW,CAAC,GAAS;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;CAKF","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 Date\n */\n\nimport type { DateFormatter } from \"@itwin/appui-abstract\";\n\n/**\n * A basic class that allows user to provide an Intl.DateTimeFormat\n * that can be used to format the date and time display. If no format is\n * specified a default format will be used. This default implementation does not\n * support parsing, so when used by [[DatePickerPopup]] the edit field will be readonly. If\n * a parseData function is implemented then the edit field will be editable.\n * @alpha\n */\nexport class IntlFormatter implements DateFormatter {\n constructor(private _intlFormatter?: Intl.DateTimeFormat) {\n }\n\n public get formatter(): Intl.DateTimeFormat {\n if (!this._intlFormatter) {\n // https://tc39.es/ecma402/#sec-intl-datetimeformat-constructor\n this._intlFormatter = new Intl.DateTimeFormat(undefined,\n {\n weekday: \"short\", /* \"narrow\", \"short\", \"long\" */\n year: \"numeric\", /* \"2-digit\", \"numeric\" */\n month: \"2-digit\", /* \"2-digit\", \"numeric\", \"narrow\", \"short\", \"long\" */\n day: \"2-digit\", /* \"2-digit\", \"numeric\" */\n hour: \"numeric\", /* \"2-digit\", \"numeric\" */\n hour12: true,\n minute: \"numeric\", /* \"2-digit\", \"numeric\" */\n second: \"numeric\", /* \"2-digit\", \"numeric\" */\n /* timeZoneName:\t\"short\", */ /* \"short\", \"long\" */\n });\n }\n return this._intlFormatter;\n }\n\n public formateDate(day: Date) {\n return this.formatter.format(day);\n }\n\n // The default implementation does not currently support parsing. If a derived class supports parsing then the\n // parseDate function must be implemented.\n // parseDate(dateString: string): Date|undefined {}\n}\n\n"]}
1
+ {"version":3,"file":"IntlFormatter.js","sourceRoot":"","sources":["../../../../src/components-react/datepicker/IntlFormatter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH;;;;;;;GAOG;AACH,MAAM,OAAO,aAAa;IACxB,YAAoB,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;IACxD,CAAC;IAED,IAAW,SAAS;QAClB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,+DAA+D;YAC/D,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EACrD;gBACE,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS,EAAG,0BAA0B;gBAC9C,4BAA4B,CAAC,qBAAqB;aACnD,CAAC,CAAC;SACN;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEM,WAAW,CAAC,GAAS;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;CAKF","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 Date\r\n */\r\n\r\nimport type { DateFormatter } from \"@itwin/appui-abstract\";\r\n\r\n/**\r\n * A basic class that allows user to provide an Intl.DateTimeFormat\r\n * that can be used to format the date and time display. If no format is\r\n * specified a default format will be used. This default implementation does not\r\n * support parsing, so when used by [[DatePickerPopup]] the edit field will be readonly. If\r\n * a parseData function is implemented then the edit field will be editable.\r\n * @alpha\r\n */\r\nexport class IntlFormatter implements DateFormatter {\r\n constructor(private _intlFormatter?: Intl.DateTimeFormat) {\r\n }\r\n\r\n public get formatter(): Intl.DateTimeFormat {\r\n if (!this._intlFormatter) {\r\n // https://tc39.es/ecma402/#sec-intl-datetimeformat-constructor\r\n this._intlFormatter = new Intl.DateTimeFormat(undefined,\r\n {\r\n weekday: \"short\", /* \"narrow\", \"short\", \"long\" */\r\n year: \"numeric\", /* \"2-digit\", \"numeric\" */\r\n month: \"2-digit\", /* \"2-digit\", \"numeric\", \"narrow\", \"short\", \"long\" */\r\n day: \"2-digit\", /* \"2-digit\", \"numeric\" */\r\n hour: \"numeric\", /* \"2-digit\", \"numeric\" */\r\n hour12: true,\r\n minute: \"numeric\", /* \"2-digit\", \"numeric\" */\r\n second: \"numeric\", /* \"2-digit\", \"numeric\" */\r\n /* timeZoneName:\t\"short\", */ /* \"short\", \"long\" */\r\n });\r\n }\r\n return this._intlFormatter;\r\n }\r\n\r\n public formateDate(day: Date) {\r\n return this.formatter.format(day);\r\n }\r\n\r\n // The default implementation does not currently support parsing. If a derived class supports parsing then the\r\n // parseDate function must be implemented.\r\n // parseDate(dateString: string): Date|undefined {}\r\n}\r\n\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TimeField.js","sourceRoot":"","sources":["../../../../src/components-react/datepicker/TimeField.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 Date\n */\n\nimport * as React from \"react\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport type { TimeDisplay } from \"@itwin/appui-abstract\";\nimport { SpecialKey } from \"@itwin/appui-abstract\";\nimport { UiComponents } from \"../UiComponents\";\nimport \"./TimeField.scss\";\n\n/** Interface used to hold 24 hour time in\n * hours, minutes, and seconds.\n * @internal\n */\nexport interface TimeSpec {\n hours: number;\n minutes: number;\n seconds: number;\n}\n\n/** Interface for props used by [[TimeField]] component.\n * @internal\n */\nexport interface TimeFieldProps {\n time: TimeSpec;\n timeDisplay: TimeDisplay;\n onTimeChange?: (time: TimeSpec) => void;\n readOnly?: boolean;\n}\n\nfunction getValidInt(intText: string, min: number, max: number, defaultValue: number) {\n try {\n const newValue = parseInt(intText, 10);\n if (newValue >= min && newValue <= max)\n return newValue;\n } catch (_e) {\n // istanbul ignore next\n return defaultValue;\n }\n return defaultValue;\n}\n\nfunction isSameTime(a: TimeSpec, b: TimeSpec) {\n return a.hours === b.hours && a.minutes === b.minutes && a.seconds === b.seconds;\n}\n\n/** Field used to set the Hour:Minutes:Seconds in the [[DatePicker]] Popup panel. The user may key-in the value or use up/down keys to\n * change the time.\n * @internal\n */\nexport function TimeField({ time, timeDisplay, readOnly, onTimeChange }: TimeFieldProps) {\n const initialDateRef = React.useRef(time);\n const amLabelRef = React.useRef(UiComponents.translate(\"timepicker.day-period-am\"));\n const pmLabelRef = React.useRef(UiComponents.translate(\"timepicker.day-period-pm\"));\n const [timeSpec, setTimeSpec] = React.useState(time);\n const { hours, minutes, seconds } = timeSpec;\n const showDayPeriod = -1 !== (timeDisplay as string).search(\"aa\");\n\n const getDisplayHours = React.useCallback((timeHours: number) => {\n if (!showDayPeriod) {\n return timeHours;\n }\n const outHours = (0 === timeHours) ? 12 : timeHours > 12 ? timeHours - 12 : timeHours;\n return outHours;\n }, [showDayPeriod]);\n\n // See if new initialDate props have changed since component mounted\n React.useEffect(() => {\n if (!isSameTime(time, initialDateRef.current)) {\n setTimeSpec(time);\n initialDateRef.current = time;\n }\n }, [time]);\n\n const displayHour = getDisplayHours(hours);\n const [dayPeriodText, setDayPeriodText] = React.useState(showDayPeriod ? (hours >= 12 ? pmLabelRef.current : amLabelRef.current) : undefined);\n const [hoursText, setHoursText] = React.useState(displayHour.toString().padStart(2, \"0\"));\n const [minutesText, setMinutesText] = React.useState(minutes.toString().padStart(2, \"0\"));\n const [secondsText, setSecondsText] = React.useState(seconds.toString().padStart(2, \"0\"));\n\n const updateTimeSpec = React.useCallback((newTime: TimeSpec) => {\n if (newTime.hours !== timeSpec.hours || newTime.minutes !== timeSpec.minutes || newTime.seconds !== timeSpec.seconds) {\n setTimeSpec(newTime);\n onTimeChange && onTimeChange(newTime);\n }\n }, [onTimeChange, timeSpec.hours, timeSpec.minutes, timeSpec.seconds]);\n\n const handleHoursChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setHoursText(event.currentTarget.value);\n }, []);\n\n const handleMinutesChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setMinutesText(event.currentTarget.value);\n }, []);\n const handleSecondsChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setSecondsText(event.currentTarget.value);\n }, []);\n const handleDayPeriodChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setDayPeriodText(event.currentTarget.value);\n }, []);\n\n const handleHoursOnBlur = React.useCallback(() => {\n const newHours = getValidInt(hoursText, 0, 24, hours);\n setHoursText(getDisplayHours(newHours).toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, hours: newHours });\n showDayPeriod && setDayPeriodText(newHours >= 12 ? pmLabelRef.current : amLabelRef.current);\n }, [getDisplayHours, hours, hoursText, showDayPeriod, timeSpec, updateTimeSpec]);\n const handleMinutesOnBlur = React.useCallback(() => {\n const newMinutes = getValidInt(minutesText, 0, 59, minutes);\n setMinutesText(newMinutes.toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, minutes: newMinutes });\n }, [minutes, minutesText, timeSpec, updateTimeSpec]);\n const handleSecondsOnBlur = React.useCallback(() => {\n const newSeconds = getValidInt(secondsText, 0, 59, seconds);\n setSecondsText(newSeconds.toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, seconds: newSeconds });\n }, [seconds, secondsText, timeSpec, updateTimeSpec]);\n const handleDayPeriodOnBlur = React.useCallback(() => {\n let newPeriodText: string | undefined;\n // istanbul ignore else\n if (dayPeriodText === \"AM\" || dayPeriodText === \"am\" || dayPeriodText === amLabelRef.current)\n newPeriodText = amLabelRef.current;\n else if (dayPeriodText === \"PM\" || dayPeriodText === \"pm\" || dayPeriodText === pmLabelRef.current)\n newPeriodText = pmLabelRef.current;\n\n // istanbul ignore else\n if (undefined !== newPeriodText) {\n setDayPeriodText(newPeriodText);\n if (newPeriodText === amLabelRef.current && hours > 12) {\n updateTimeSpec({ ...timeSpec, hours: hours - 12 });\n } else if (newPeriodText === pmLabelRef.current && hours <= 11) {\n updateTimeSpec({ ...timeSpec, hours: hours + 12 });\n }\n }\n\n }, [dayPeriodText, hours, timeSpec, updateTimeSpec]);\n\n const handleHoursOnKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLInputElement>) => {\n // istanbul ignore else\n if (event.key === SpecialKey.ArrowDown || event.key === SpecialKey.ArrowUp) {\n let newHours = hours + (event.key === SpecialKey.ArrowDown ? -1 : 1);\n if (newHours < 0) newHours = 24;\n if (newHours > 24 || (newHours > 23 && ((minutes + seconds) > 0))) newHours = 0;\n setHoursText(getDisplayHours(newHours).toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, hours: newHours });\n showDayPeriod && setDayPeriodText(newHours >= 12 ? pmLabelRef.current : amLabelRef.current);\n event.preventDefault();\n } else if (event.key === SpecialKey.Enter) {\n const newHours = getValidInt(hoursText, 0, 24, hours);\n setHoursText(getDisplayHours(newHours).toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, hours: newHours });\n showDayPeriod && setDayPeriodText(newHours >= 12 ? pmLabelRef.current : amLabelRef.current);\n event.preventDefault();\n }\n }, [getDisplayHours, hours, hoursText, minutes, seconds, showDayPeriod, timeSpec, updateTimeSpec]);\n\n const handleMinutesOnKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === SpecialKey.ArrowDown) {\n const newMinutes = minutes === 0 ? 59 : minutes - 1;\n setMinutesText(newMinutes.toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, minutes: newMinutes });\n event.preventDefault();\n } else if (event.key === SpecialKey.ArrowUp) {\n const newMinutes = minutes === 59 ? 0 : minutes + 1;\n setMinutesText(newMinutes.toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, minutes: newMinutes });\n event.preventDefault();\n } else if (event.key === SpecialKey.Home || event.key === SpecialKey.End) {\n const newMinutes = event.key === SpecialKey.Home ? 0 : 59;\n setMinutesText(newMinutes.toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, minutes: newMinutes });\n event.preventDefault();\n } else /* istanbul ignore next */ if (event.key === SpecialKey.Enter) {\n const newMinutes = getValidInt(minutesText, 0, 59, minutes);\n setMinutesText(newMinutes.toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, minutes: newMinutes });\n event.preventDefault();\n }\n }, [minutesText, minutes, timeSpec, updateTimeSpec]);\n\n const handleSecondsOnKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLInputElement>) => {\n // istanbul ignore else\n if (event.key === SpecialKey.ArrowDown) {\n const newSeconds = seconds === 0 ? 59 : seconds - 1;\n setSecondsText(newSeconds.toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, seconds: newSeconds });\n event.preventDefault();\n } else if (event.key === SpecialKey.ArrowUp) {\n const newSeconds = seconds === 59 ? 0 : seconds + 1;\n setSecondsText(newSeconds.toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, seconds: newSeconds });\n event.preventDefault();\n } else if (event.key === SpecialKey.Home || event.key === SpecialKey.End) {\n const newSeconds = event.key === SpecialKey.Home ? 0 : 59;\n setSecondsText(newSeconds.toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, seconds: newSeconds });\n event.preventDefault();\n } else if (event.key === SpecialKey.Enter) {\n const newSeconds = getValidInt(secondsText, 0, 59, seconds);\n setSecondsText(newSeconds.toString().padStart(2, \"0\"));\n updateTimeSpec({ ...timeSpec, seconds: newSeconds });\n event.preventDefault();\n }\n }, [seconds, secondsText, timeSpec, updateTimeSpec]);\n\n const handleDayPeriodOnKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLInputElement>) => {\n let newPeriodText: string | undefined;\n // istanbul ignore else\n if (event.key === SpecialKey.ArrowDown || event.key === SpecialKey.Home || event.key === \"a\" || event.key === \"A\") {\n newPeriodText = amLabelRef.current;\n event.preventDefault();\n } else if (event.key === SpecialKey.ArrowUp || event.key === SpecialKey.End || event.key === \"p\" || event.key === \"P\") {\n newPeriodText = pmLabelRef.current;\n event.preventDefault();\n } else if (event.key === SpecialKey.Enter) {\n if (dayPeriodText === \"AM\" || dayPeriodText === \"am\" || dayPeriodText === amLabelRef.current)\n newPeriodText = amLabelRef.current;\n else if (dayPeriodText === \"PM\" || dayPeriodText === \"pm\" || dayPeriodText === pmLabelRef.current)\n newPeriodText = pmLabelRef.current;\n event.preventDefault();\n }\n // istanbul ignore else\n if (undefined !== newPeriodText) {\n setDayPeriodText(newPeriodText);\n /* istanbul ignore else */\n if (newPeriodText === amLabelRef.current && hours > 12) {\n updateTimeSpec({ ...timeSpec, hours: hours - 12 });\n } else if (newPeriodText === pmLabelRef.current && hours <= 11) {\n updateTimeSpec({ ...timeSpec, hours: hours + 12 });\n }\n }\n }, [dayPeriodText, hours, timeSpec, updateTimeSpec]);\n\n const showSeconds = -1 !== (timeDisplay as string).search(\":ss\");\n\n return <div data-testid=\"components-time-input\" className=\"components-time\">\n <Input className=\"components-time-input\" onKeyDown={handleHoursOnKeyDown} onBlur={handleHoursOnBlur} onChange={handleHoursChange} value={hoursText} disabled={readOnly} size=\"small\" />\n <span className=\"component-time-separator\">:</span>\n <Input className=\"components-time-input\" onKeyDown={handleMinutesOnKeyDown} onBlur={handleMinutesOnBlur} onChange={handleMinutesChange} value={minutesText} disabled={readOnly} size=\"small\" />\n {showSeconds &&\n <>\n <span className=\"component-time-separator\">:</span>\n <Input className=\"components-time-input\" onKeyDown={handleSecondsOnKeyDown} onBlur={handleSecondsOnBlur} onChange={handleSecondsChange} value={secondsText} disabled={readOnly} size=\"small\" />\n </>\n }\n {dayPeriodText &&\n <Input className=\"components-time-period-input\" onKeyDown={handleDayPeriodOnKeyDown} onBlur={handleDayPeriodOnBlur} onChange={handleDayPeriodChange} value={dayPeriodText} disabled={readOnly} size=\"small\" />\n }\n </div>;\n}\n"]}
1
+ {"version":3,"file":"TimeField.js","sourceRoot":"","sources":["../../../../src/components-react/datepicker/TimeField.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 Date\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { Input } from \"@itwin/itwinui-react\";\r\nimport type { TimeDisplay } from \"@itwin/appui-abstract\";\r\nimport { SpecialKey } from \"@itwin/appui-abstract\";\r\nimport { UiComponents } from \"../UiComponents\";\r\nimport \"./TimeField.scss\";\r\n\r\n/** Interface used to hold 24 hour time in\r\n * hours, minutes, and seconds.\r\n * @internal\r\n */\r\nexport interface TimeSpec {\r\n hours: number;\r\n minutes: number;\r\n seconds: number;\r\n}\r\n\r\n/** Interface for props used by [[TimeField]] component.\r\n * @internal\r\n */\r\nexport interface TimeFieldProps {\r\n time: TimeSpec;\r\n timeDisplay: TimeDisplay;\r\n onTimeChange?: (time: TimeSpec) => void;\r\n readOnly?: boolean;\r\n}\r\n\r\nfunction getValidInt(intText: string, min: number, max: number, defaultValue: number) {\r\n try {\r\n const newValue = parseInt(intText, 10);\r\n if (newValue >= min && newValue <= max)\r\n return newValue;\r\n } catch (_e) {\r\n // istanbul ignore next\r\n return defaultValue;\r\n }\r\n return defaultValue;\r\n}\r\n\r\nfunction isSameTime(a: TimeSpec, b: TimeSpec) {\r\n return a.hours === b.hours && a.minutes === b.minutes && a.seconds === b.seconds;\r\n}\r\n\r\n/** Field used to set the Hour:Minutes:Seconds in the [[DatePicker]] Popup panel. The user may key-in the value or use up/down keys to\r\n * change the time.\r\n * @internal\r\n */\r\nexport function TimeField({ time, timeDisplay, readOnly, onTimeChange }: TimeFieldProps) {\r\n const initialDateRef = React.useRef(time);\r\n const amLabelRef = React.useRef(UiComponents.translate(\"timepicker.day-period-am\"));\r\n const pmLabelRef = React.useRef(UiComponents.translate(\"timepicker.day-period-pm\"));\r\n const [timeSpec, setTimeSpec] = React.useState(time);\r\n const { hours, minutes, seconds } = timeSpec;\r\n const showDayPeriod = -1 !== (timeDisplay as string).search(\"aa\");\r\n\r\n const getDisplayHours = React.useCallback((timeHours: number) => {\r\n if (!showDayPeriod) {\r\n return timeHours;\r\n }\r\n const outHours = (0 === timeHours) ? 12 : timeHours > 12 ? timeHours - 12 : timeHours;\r\n return outHours;\r\n }, [showDayPeriod]);\r\n\r\n // See if new initialDate props have changed since component mounted\r\n React.useEffect(() => {\r\n if (!isSameTime(time, initialDateRef.current)) {\r\n setTimeSpec(time);\r\n initialDateRef.current = time;\r\n }\r\n }, [time]);\r\n\r\n const displayHour = getDisplayHours(hours);\r\n const [dayPeriodText, setDayPeriodText] = React.useState(showDayPeriod ? (hours >= 12 ? pmLabelRef.current : amLabelRef.current) : undefined);\r\n const [hoursText, setHoursText] = React.useState(displayHour.toString().padStart(2, \"0\"));\r\n const [minutesText, setMinutesText] = React.useState(minutes.toString().padStart(2, \"0\"));\r\n const [secondsText, setSecondsText] = React.useState(seconds.toString().padStart(2, \"0\"));\r\n\r\n const updateTimeSpec = React.useCallback((newTime: TimeSpec) => {\r\n if (newTime.hours !== timeSpec.hours || newTime.minutes !== timeSpec.minutes || newTime.seconds !== timeSpec.seconds) {\r\n setTimeSpec(newTime);\r\n onTimeChange && onTimeChange(newTime);\r\n }\r\n }, [onTimeChange, timeSpec.hours, timeSpec.minutes, timeSpec.seconds]);\r\n\r\n const handleHoursChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n setHoursText(event.currentTarget.value);\r\n }, []);\r\n\r\n const handleMinutesChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n setMinutesText(event.currentTarget.value);\r\n }, []);\r\n const handleSecondsChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n setSecondsText(event.currentTarget.value);\r\n }, []);\r\n const handleDayPeriodChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n setDayPeriodText(event.currentTarget.value);\r\n }, []);\r\n\r\n const handleHoursOnBlur = React.useCallback(() => {\r\n const newHours = getValidInt(hoursText, 0, 24, hours);\r\n setHoursText(getDisplayHours(newHours).toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, hours: newHours });\r\n showDayPeriod && setDayPeriodText(newHours >= 12 ? pmLabelRef.current : amLabelRef.current);\r\n }, [getDisplayHours, hours, hoursText, showDayPeriod, timeSpec, updateTimeSpec]);\r\n const handleMinutesOnBlur = React.useCallback(() => {\r\n const newMinutes = getValidInt(minutesText, 0, 59, minutes);\r\n setMinutesText(newMinutes.toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, minutes: newMinutes });\r\n }, [minutes, minutesText, timeSpec, updateTimeSpec]);\r\n const handleSecondsOnBlur = React.useCallback(() => {\r\n const newSeconds = getValidInt(secondsText, 0, 59, seconds);\r\n setSecondsText(newSeconds.toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, seconds: newSeconds });\r\n }, [seconds, secondsText, timeSpec, updateTimeSpec]);\r\n const handleDayPeriodOnBlur = React.useCallback(() => {\r\n let newPeriodText: string | undefined;\r\n // istanbul ignore else\r\n if (dayPeriodText === \"AM\" || dayPeriodText === \"am\" || dayPeriodText === amLabelRef.current)\r\n newPeriodText = amLabelRef.current;\r\n else if (dayPeriodText === \"PM\" || dayPeriodText === \"pm\" || dayPeriodText === pmLabelRef.current)\r\n newPeriodText = pmLabelRef.current;\r\n\r\n // istanbul ignore else\r\n if (undefined !== newPeriodText) {\r\n setDayPeriodText(newPeriodText);\r\n if (newPeriodText === amLabelRef.current && hours > 12) {\r\n updateTimeSpec({ ...timeSpec, hours: hours - 12 });\r\n } else if (newPeriodText === pmLabelRef.current && hours <= 11) {\r\n updateTimeSpec({ ...timeSpec, hours: hours + 12 });\r\n }\r\n }\r\n\r\n }, [dayPeriodText, hours, timeSpec, updateTimeSpec]);\r\n\r\n const handleHoursOnKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLInputElement>) => {\r\n // istanbul ignore else\r\n if (event.key === SpecialKey.ArrowDown || event.key === SpecialKey.ArrowUp) {\r\n let newHours = hours + (event.key === SpecialKey.ArrowDown ? -1 : 1);\r\n if (newHours < 0) newHours = 24;\r\n if (newHours > 24 || (newHours > 23 && ((minutes + seconds) > 0))) newHours = 0;\r\n setHoursText(getDisplayHours(newHours).toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, hours: newHours });\r\n showDayPeriod && setDayPeriodText(newHours >= 12 ? pmLabelRef.current : amLabelRef.current);\r\n event.preventDefault();\r\n } else if (event.key === SpecialKey.Enter) {\r\n const newHours = getValidInt(hoursText, 0, 24, hours);\r\n setHoursText(getDisplayHours(newHours).toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, hours: newHours });\r\n showDayPeriod && setDayPeriodText(newHours >= 12 ? pmLabelRef.current : amLabelRef.current);\r\n event.preventDefault();\r\n }\r\n }, [getDisplayHours, hours, hoursText, minutes, seconds, showDayPeriod, timeSpec, updateTimeSpec]);\r\n\r\n const handleMinutesOnKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (event.key === SpecialKey.ArrowDown) {\r\n const newMinutes = minutes === 0 ? 59 : minutes - 1;\r\n setMinutesText(newMinutes.toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, minutes: newMinutes });\r\n event.preventDefault();\r\n } else if (event.key === SpecialKey.ArrowUp) {\r\n const newMinutes = minutes === 59 ? 0 : minutes + 1;\r\n setMinutesText(newMinutes.toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, minutes: newMinutes });\r\n event.preventDefault();\r\n } else if (event.key === SpecialKey.Home || event.key === SpecialKey.End) {\r\n const newMinutes = event.key === SpecialKey.Home ? 0 : 59;\r\n setMinutesText(newMinutes.toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, minutes: newMinutes });\r\n event.preventDefault();\r\n } else /* istanbul ignore next */ if (event.key === SpecialKey.Enter) {\r\n const newMinutes = getValidInt(minutesText, 0, 59, minutes);\r\n setMinutesText(newMinutes.toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, minutes: newMinutes });\r\n event.preventDefault();\r\n }\r\n }, [minutesText, minutes, timeSpec, updateTimeSpec]);\r\n\r\n const handleSecondsOnKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLInputElement>) => {\r\n // istanbul ignore else\r\n if (event.key === SpecialKey.ArrowDown) {\r\n const newSeconds = seconds === 0 ? 59 : seconds - 1;\r\n setSecondsText(newSeconds.toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, seconds: newSeconds });\r\n event.preventDefault();\r\n } else if (event.key === SpecialKey.ArrowUp) {\r\n const newSeconds = seconds === 59 ? 0 : seconds + 1;\r\n setSecondsText(newSeconds.toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, seconds: newSeconds });\r\n event.preventDefault();\r\n } else if (event.key === SpecialKey.Home || event.key === SpecialKey.End) {\r\n const newSeconds = event.key === SpecialKey.Home ? 0 : 59;\r\n setSecondsText(newSeconds.toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, seconds: newSeconds });\r\n event.preventDefault();\r\n } else if (event.key === SpecialKey.Enter) {\r\n const newSeconds = getValidInt(secondsText, 0, 59, seconds);\r\n setSecondsText(newSeconds.toString().padStart(2, \"0\"));\r\n updateTimeSpec({ ...timeSpec, seconds: newSeconds });\r\n event.preventDefault();\r\n }\r\n }, [seconds, secondsText, timeSpec, updateTimeSpec]);\r\n\r\n const handleDayPeriodOnKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLInputElement>) => {\r\n let newPeriodText: string | undefined;\r\n // istanbul ignore else\r\n if (event.key === SpecialKey.ArrowDown || event.key === SpecialKey.Home || event.key === \"a\" || event.key === \"A\") {\r\n newPeriodText = amLabelRef.current;\r\n event.preventDefault();\r\n } else if (event.key === SpecialKey.ArrowUp || event.key === SpecialKey.End || event.key === \"p\" || event.key === \"P\") {\r\n newPeriodText = pmLabelRef.current;\r\n event.preventDefault();\r\n } else if (event.key === SpecialKey.Enter) {\r\n if (dayPeriodText === \"AM\" || dayPeriodText === \"am\" || dayPeriodText === amLabelRef.current)\r\n newPeriodText = amLabelRef.current;\r\n else if (dayPeriodText === \"PM\" || dayPeriodText === \"pm\" || dayPeriodText === pmLabelRef.current)\r\n newPeriodText = pmLabelRef.current;\r\n event.preventDefault();\r\n }\r\n // istanbul ignore else\r\n if (undefined !== newPeriodText) {\r\n setDayPeriodText(newPeriodText);\r\n /* istanbul ignore else */\r\n if (newPeriodText === amLabelRef.current && hours > 12) {\r\n updateTimeSpec({ ...timeSpec, hours: hours - 12 });\r\n } else if (newPeriodText === pmLabelRef.current && hours <= 11) {\r\n updateTimeSpec({ ...timeSpec, hours: hours + 12 });\r\n }\r\n }\r\n }, [dayPeriodText, hours, timeSpec, updateTimeSpec]);\r\n\r\n const showSeconds = -1 !== (timeDisplay as string).search(\":ss\");\r\n\r\n return <div data-testid=\"components-time-input\" className=\"components-time\">\r\n <Input className=\"components-time-input\" onKeyDown={handleHoursOnKeyDown} onBlur={handleHoursOnBlur} onChange={handleHoursChange} value={hoursText} disabled={readOnly} size=\"small\" />\r\n <span className=\"component-time-separator\">:</span>\r\n <Input className=\"components-time-input\" onKeyDown={handleMinutesOnKeyDown} onBlur={handleMinutesOnBlur} onChange={handleMinutesChange} value={minutesText} disabled={readOnly} size=\"small\" />\r\n {showSeconds &&\r\n <>\r\n <span className=\"component-time-separator\">:</span>\r\n <Input className=\"components-time-input\" onKeyDown={handleSecondsOnKeyDown} onBlur={handleSecondsOnBlur} onChange={handleSecondsChange} value={secondsText} disabled={readOnly} size=\"small\" />\r\n </>\r\n }\r\n {dayPeriodText &&\r\n <Input className=\"components-time-period-input\" onKeyDown={handleDayPeriodOnKeyDown} onBlur={handleDayPeriodOnBlur} onChange={handleDayPeriodChange} value={dayPeriodText} disabled={readOnly} size=\"small\" />\r\n }\r\n </div>;\r\n}\r\n"]}
@@ -1,76 +1,76 @@
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
- @import "~@itwin/core-react/lib/cjs/core-react/inputs/variables";
6
- @import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
7
-
8
- .components-time {
9
- display: inline-flex;
10
- flex-direction: row;
11
- align-items: center;
12
- justify-content: flex-start;
13
- background-color: $buic-background-control;
14
- border: 1px solid var(--iui-color-border-foreground);
15
- border-radius: var(--iui-border-radius-1);
16
- box-shadow: var(--buic-inputs-boxshadow) 0px 1px 1px inset;
17
- box-sizing: border-box;
18
-
19
- &.has-error {
20
- color: var(--iui-color-text-negative);
21
- }
22
-
23
- .components-time-input {
24
- box-sizing: border-box;
25
- width: 2em;
26
- text-align: center;
27
- border: none;
28
- box-shadow: none;
29
- margin: 0;
30
-
31
- &.iui-input {
32
- padding-left: 0;
33
- padding-right: 0;
34
- }
35
-
36
- &:focus {
37
- outline: 0px;
38
- border: 1px solid var(--iui-color-border-foreground);
39
- border-radius: var(--iui-border-radius-1);
40
- border-color: var(--buic-foreground-focus-border);
41
- box-shadow: var(--buic-focus-boxshadow-gradient1) 0px 1px 1px,
42
- var(--buic-focus-boxshadow-gradient2) 0px 0px 0px 2px;
43
- z-index: 1;
44
- /* bump z-index so drop shadow in not cut off by AM/PM */
45
- }
46
- }
47
-
48
- .components-time-period-input {
49
- box-sizing: border-box;
50
- width: 3em;
51
- text-align: center;
52
- border: none;
53
- padding-left: 0;
54
- padding-right: 0;
55
- box-shadow: none;
56
- margin: 0;
57
-
58
- &:focus {
59
- outline: 0px;
60
- border: 1px solid var(--iui-color-border-foreground);
61
- border-radius: var(--iui-border-radius-1);
62
- border-color: var(--buic-foreground-focus-border);
63
- box-shadow: var(--buic-focus-boxshadow-gradient1) 0px 1px 1px,
64
- var(--buic-focus-boxshadow-gradient2) 0px 0px 0px 2px;
65
- }
66
- }
67
-
68
- .component-time-separator {
69
- margin: 0;
70
- padding: 0 1px;
71
- }
72
-
73
- .iui-input {
74
- padding: $uicore-iui-input-padding;
75
- }
76
- }
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
+ @import "~@itwin/core-react/lib/cjs/core-react/inputs/variables";
6
+ @import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
7
+
8
+ .components-time {
9
+ display: inline-flex;
10
+ flex-direction: row;
11
+ align-items: center;
12
+ justify-content: flex-start;
13
+ background-color: $buic-background-control;
14
+ border: 1px solid var(--iui-color-border-foreground);
15
+ border-radius: var(--iui-border-radius-1);
16
+ box-shadow: var(--buic-inputs-boxshadow) 0px 1px 1px inset;
17
+ box-sizing: border-box;
18
+
19
+ &.has-error {
20
+ color: var(--iui-color-text-negative);
21
+ }
22
+
23
+ .components-time-input {
24
+ box-sizing: border-box;
25
+ width: 2em;
26
+ text-align: center;
27
+ border: none;
28
+ box-shadow: none;
29
+ margin: 0;
30
+
31
+ &.iui-input {
32
+ padding-left: 0;
33
+ padding-right: 0;
34
+ }
35
+
36
+ &:focus {
37
+ outline: 0px;
38
+ border: 1px solid var(--iui-color-border-foreground);
39
+ border-radius: var(--iui-border-radius-1);
40
+ border-color: var(--buic-foreground-focus-border);
41
+ box-shadow: var(--buic-focus-boxshadow-gradient1) 0px 1px 1px,
42
+ var(--buic-focus-boxshadow-gradient2) 0px 0px 0px 2px;
43
+ z-index: 1;
44
+ /* bump z-index so drop shadow in not cut off by AM/PM */
45
+ }
46
+ }
47
+
48
+ .components-time-period-input {
49
+ box-sizing: border-box;
50
+ width: 3em;
51
+ text-align: center;
52
+ border: none;
53
+ padding-left: 0;
54
+ padding-right: 0;
55
+ box-shadow: none;
56
+ margin: 0;
57
+
58
+ &:focus {
59
+ outline: 0px;
60
+ border: 1px solid var(--iui-color-border-foreground);
61
+ border-radius: var(--iui-border-radius-1);
62
+ border-color: var(--buic-foreground-focus-border);
63
+ box-shadow: var(--buic-focus-boxshadow-gradient1) 0px 1px 1px,
64
+ var(--buic-focus-boxshadow-gradient2) 0px 0px 0px 2px;
65
+ }
66
+ }
67
+
68
+ .component-time-separator {
69
+ margin: 0;
70
+ padding: 0 1px;
71
+ }
72
+
73
+ .iui-input {
74
+ padding: $uicore-iui-input-padding;
75
+ }
76
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"BooleanEditor.js","sourceRoot":"","sources":["../../../../src/components-react/editors/BooleanEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyEditors\n */\n\nimport \"./BooleanEditor.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { PropertyValue} from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { Checkbox } from \"@itwin/itwinui-react\";\nimport type { PropertyEditorProps, TypeEditor } from \"./EditorContainer\";\nimport { PropertyEditorBase, PropertyEditorManager } from \"./PropertyEditorManager\";\n\n/** @internal */\ninterface BooleanEditorState {\n checkboxValue: boolean;\n isDisabled?: boolean;\n}\n\n/** BooleanEditor React component that is a property editor with checkbox input\n * @public\n */\nexport class BooleanEditor extends React.PureComponent<PropertyEditorProps, BooleanEditorState> implements TypeEditor {\n private _isMounted = false;\n private _inputElement = React.createRef<HTMLInputElement>();\n\n /** @internal */\n public override readonly state: Readonly<BooleanEditorState> = {\n checkboxValue: false,\n isDisabled: false,\n };\n\n public async getPropertyValue(): Promise<PropertyValue | undefined> {\n return this.getPropertyValueSync();\n }\n\n private getPropertyValueSync(): PropertyValue | undefined {\n const record = this.props.propertyRecord;\n let propertyValue: PropertyValue | undefined;\n\n // istanbul ignore else\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\n propertyValue = {\n valueFormat: PropertyValueFormat.Primitive,\n value: this.state.checkboxValue,\n displayValue: \"\",\n };\n }\n\n return propertyValue;\n }\n\n public get htmlElement(): HTMLElement | null {\n return this._inputElement.current;\n }\n\n public get hasFocus(): boolean {\n return document.activeElement === this._inputElement.current;\n }\n\n private _updateCheckboxValue = (e: React.ChangeEvent<HTMLInputElement>) => {\n // istanbul ignore else\n if (this._isMounted) {\n const checkboxValue = !!e.target.checked;\n\n this.setState({\n checkboxValue,\n }, () => {\n // istanbul ignore else\n if (this.props.propertyRecord && this.props.onCommit) {\n const propertyValue = this.getPropertyValueSync();\n // istanbul ignore else\n if (propertyValue !== undefined) {\n this.props.onCommit({ propertyRecord: this.props.propertyRecord, newValue: propertyValue });\n }\n }\n });\n }\n };\n\n /** @internal */\n public override componentDidMount() {\n this._isMounted = true;\n this.setStateFromProps();\n }\n\n /** @internal */\n public override componentWillUnmount() {\n this._isMounted = false;\n }\n\n /** @internal */\n public override componentDidUpdate(prevProps: PropertyEditorProps) {\n if (this.props.propertyRecord !== prevProps.propertyRecord) {\n this.setStateFromProps();\n }\n }\n\n private setStateFromProps() {\n const { propertyRecord } = this.props;\n let checkboxValue = false;\n let isDisabled = false;\n\n // istanbul ignore else\n if (propertyRecord && propertyRecord.value.valueFormat === PropertyValueFormat.Primitive) {\n const primitiveValue = propertyRecord.value.value;\n checkboxValue = primitiveValue as boolean;\n }\n\n // istanbul ignore else\n if (propertyRecord && propertyRecord.isDisabled)\n isDisabled = propertyRecord.isDisabled;\n\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ checkboxValue, isDisabled });\n }\n\n /** @internal */\n public override render() {\n const className = classnames(\"components-cell-editor\", \"components-boolean-editor\", this.props.className);\n const checked = this.state.checkboxValue;\n const isDisabled = !!this.state.isDisabled;\n\n return (\n <Checkbox\n ref={this._inputElement}\n onBlur={this.props.onBlur}\n className={className}\n style={this.props.style}\n checked={checked}\n onChange={this._updateCheckboxValue}\n setFocus={this.props.setFocus}\n disabled={isDisabled}\n data-testid=\"components-checkbox-editor\">\n </Checkbox>\n );\n }\n}\n\n/** Boolean Property Editor registered for the \"bool\" and \"boolean\" type names.\n * It uses the [[BooleanEditor]] React component.\n * @public\n */\nexport class BooleanPropertyEditor extends PropertyEditorBase {\n // istanbul ignore next\n public override get containerHandlesBlur(): boolean {\n return false;\n }\n\n public get reactNode(): React.ReactNode {\n return <BooleanEditor />;\n }\n}\n\nPropertyEditorManager.registerEditor(StandardTypeNames.Bool, BooleanPropertyEditor);\nPropertyEditorManager.registerEditor(StandardTypeNames.Boolean, BooleanPropertyEditor);\n"]}
1
+ {"version":3,"file":"BooleanEditor.js","sourceRoot":"","sources":["../../../../src/components-react/editors/BooleanEditor.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 PropertyEditors\r\n */\r\n\r\nimport \"./BooleanEditor.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport type { PropertyValue} from \"@itwin/appui-abstract\";\r\nimport { PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { Checkbox } from \"@itwin/itwinui-react\";\r\nimport type { PropertyEditorProps, TypeEditor } from \"./EditorContainer\";\r\nimport { PropertyEditorBase, PropertyEditorManager } from \"./PropertyEditorManager\";\r\n\r\n/** @internal */\r\ninterface BooleanEditorState {\r\n checkboxValue: boolean;\r\n isDisabled?: boolean;\r\n}\r\n\r\n/** BooleanEditor React component that is a property editor with checkbox input\r\n * @public\r\n */\r\nexport class BooleanEditor extends React.PureComponent<PropertyEditorProps, BooleanEditorState> implements TypeEditor {\r\n private _isMounted = false;\r\n private _inputElement = React.createRef<HTMLInputElement>();\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<BooleanEditorState> = {\r\n checkboxValue: false,\r\n isDisabled: false,\r\n };\r\n\r\n public async getPropertyValue(): Promise<PropertyValue | undefined> {\r\n return this.getPropertyValueSync();\r\n }\r\n\r\n private getPropertyValueSync(): PropertyValue | undefined {\r\n const record = this.props.propertyRecord;\r\n let propertyValue: PropertyValue | undefined;\r\n\r\n // istanbul ignore else\r\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\r\n propertyValue = {\r\n valueFormat: PropertyValueFormat.Primitive,\r\n value: this.state.checkboxValue,\r\n displayValue: \"\",\r\n };\r\n }\r\n\r\n return propertyValue;\r\n }\r\n\r\n public get htmlElement(): HTMLElement | null {\r\n return this._inputElement.current;\r\n }\r\n\r\n public get hasFocus(): boolean {\r\n return document.activeElement === this._inputElement.current;\r\n }\r\n\r\n private _updateCheckboxValue = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n // istanbul ignore else\r\n if (this._isMounted) {\r\n const checkboxValue = !!e.target.checked;\r\n\r\n this.setState({\r\n checkboxValue,\r\n }, () => {\r\n // istanbul ignore else\r\n if (this.props.propertyRecord && this.props.onCommit) {\r\n const propertyValue = this.getPropertyValueSync();\r\n // istanbul ignore else\r\n if (propertyValue !== undefined) {\r\n this.props.onCommit({ propertyRecord: this.props.propertyRecord, newValue: propertyValue });\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._isMounted = true;\r\n this.setStateFromProps();\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(prevProps: PropertyEditorProps) {\r\n if (this.props.propertyRecord !== prevProps.propertyRecord) {\r\n this.setStateFromProps();\r\n }\r\n }\r\n\r\n private setStateFromProps() {\r\n const { propertyRecord } = this.props;\r\n let checkboxValue = false;\r\n let isDisabled = false;\r\n\r\n // istanbul ignore else\r\n if (propertyRecord && propertyRecord.value.valueFormat === PropertyValueFormat.Primitive) {\r\n const primitiveValue = propertyRecord.value.value;\r\n checkboxValue = primitiveValue as boolean;\r\n }\r\n\r\n // istanbul ignore else\r\n if (propertyRecord && propertyRecord.isDisabled)\r\n isDisabled = propertyRecord.isDisabled;\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ checkboxValue, isDisabled });\r\n }\r\n\r\n /** @internal */\r\n public override render() {\r\n const className = classnames(\"components-cell-editor\", \"components-boolean-editor\", this.props.className);\r\n const checked = this.state.checkboxValue;\r\n const isDisabled = !!this.state.isDisabled;\r\n\r\n return (\r\n <Checkbox\r\n ref={this._inputElement}\r\n onBlur={this.props.onBlur}\r\n className={className}\r\n style={this.props.style}\r\n checked={checked}\r\n onChange={this._updateCheckboxValue}\r\n setFocus={this.props.setFocus}\r\n disabled={isDisabled}\r\n data-testid=\"components-checkbox-editor\">\r\n </Checkbox>\r\n );\r\n }\r\n}\r\n\r\n/** Boolean Property Editor registered for the \"bool\" and \"boolean\" type names.\r\n * It uses the [[BooleanEditor]] React component.\r\n * @public\r\n */\r\nexport class BooleanPropertyEditor extends PropertyEditorBase {\r\n // istanbul ignore next\r\n public override get containerHandlesBlur(): boolean {\r\n return false;\r\n }\r\n\r\n public get reactNode(): React.ReactNode {\r\n return <BooleanEditor />;\r\n }\r\n}\r\n\r\nPropertyEditorManager.registerEditor(StandardTypeNames.Bool, BooleanPropertyEditor);\r\nPropertyEditorManager.registerEditor(StandardTypeNames.Boolean, BooleanPropertyEditor);\r\n"]}
@@ -1,22 +1,22 @@
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
-
6
- $checkbox-size: calc(var(--iui-font-size-1) * 1.2);
7
-
8
- .components-boolean-editor {
9
- height: $checkbox-size;
10
- width: $checkbox-size;
11
- margin-left: 0px;
12
-
13
- &.components-cell-editor {
14
- border: none;
15
- }
16
- }
17
-
18
- .components-property-list--horizontal {
19
- .components-boolean-editor {
20
- margin-left: var(--iui-size-xs); // Clear the resizer in the PropertyGrid
21
- }
22
- }
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
+
6
+ $checkbox-size: calc(var(--iui-font-size-1) * 1.2);
7
+
8
+ .components-boolean-editor {
9
+ height: $checkbox-size;
10
+ width: $checkbox-size;
11
+ margin-left: 0px;
12
+
13
+ &.components-cell-editor {
14
+ border: none;
15
+ }
16
+ }
17
+
18
+ .components-property-list--horizontal {
19
+ .components-boolean-editor {
20
+ margin-left: var(--iui-size-xs); // Clear the resizer in the PropertyGrid
21
+ }
22
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"CustomNumberEditor.js","sourceRoot":"","sources":["../../../../src/components-react/editors/CustomNumberEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyEditors\n */\n\n// cSpell:ignore customnumber testid\n\nimport \"./CustomNumberEditor.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type {\n CustomFormattedNumberParams, IconEditorParams, InputEditorSizeParams, PrimitiveValue, PropertyEditorParams,\n PropertyRecord, PropertyValue} from \"@itwin/appui-abstract\";\nimport { MessageSeverity, PropertyEditorParamTypes, PropertyValueFormat, SpecialKey, StandardEditorNames, StandardTypeNames, UiAdmin,\n} from \"@itwin/appui-abstract\";\nimport { Icon, IconInput } from \"@itwin/core-react\";\nimport type { InputProps } from \"@itwin/itwinui-react\";\nimport { Input } from \"@itwin/itwinui-react\";\n\nimport { UiComponents } from \"../UiComponents\";\nimport type { PropertyEditorProps, TypeEditor } from \"./EditorContainer\";\nimport { PropertyEditorBase, PropertyEditorManager } from \"./PropertyEditorManager\";\n\n/** @internal */\ninterface CustomNumberEditorState {\n inputValue: string;\n size?: number;\n maxLength?: number;\n iconSpec?: string;\n}\n\n/** CustomNumberEditor is a React component that is a property editor for numbers that specify custom formatting and parsing functions.\n * @alpha\n */\nexport class CustomNumberEditor extends React.PureComponent<PropertyEditorProps, CustomNumberEditorState> implements TypeEditor {\n private _isMounted = false;\n private _formatParams: CustomFormattedNumberParams | undefined;\n private _inputElement = React.createRef<HTMLInputElement>();\n private _lastValidValue: PropertyValue | undefined;\n\n /** @internal */\n public override readonly state: Readonly<CustomNumberEditorState> = {\n inputValue: \"\",\n };\n\n public async getPropertyValue(): Promise<PropertyValue | undefined> {\n const record = this.props.propertyRecord as PropertyRecord;\n let propertyValue: PropertyValue | undefined;\n\n if (record.isReadonly) {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: (record.value as PrimitiveValue).value,\n displayValue: (record.value as PrimitiveValue).displayValue,\n };\n }\n\n // istanbul ignore else\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\n const parseResults = (this._formatParams as CustomFormattedNumberParams).parseFunction(this.state.inputValue);\n if (!parseResults.parseError && undefined !== parseResults.value) {\n const newDisplayValue = (this._formatParams as CustomFormattedNumberParams).formatFunction(parseResults.value as number);\n propertyValue = {\n valueFormat: PropertyValueFormat.Primitive,\n value: parseResults.value,\n displayValue: newDisplayValue,\n };\n this._lastValidValue = { ...propertyValue };\n // make sure the text in the input item matches the latest formatted text... this could get out if the input string say 1.5 === the display string of 1'-6\"\n // istanbul ignore else\n if (newDisplayValue !== this.state.inputValue) {\n this.setState({ inputValue: newDisplayValue });\n }\n } else {\n // istanbul ignore else\n if (this.htmlElement) {\n UiAdmin.messagePresenter.displayInputFieldMessage(this.htmlElement, MessageSeverity.Error, parseResults.parseError ? parseResults.parseError : /* istanbul ignore next */ UiComponents.translate(\"errors.unable-to-parse-quantity\"));\n this.htmlElement.focus();\n } else {\n UiAdmin.messagePresenter.displayMessage(MessageSeverity.Error, parseResults.parseError ? parseResults.parseError : /* istanbul ignore next */ UiComponents.translate(\"errors.unable-to-parse-quantity\"));\n }\n\n const displayValue = (record.value.displayValue && record.value.displayValue.length > 0) ? record.value.displayValue : /* istanbul ignore next */ (this._formatParams as CustomFormattedNumberParams).formatFunction(record.value.value as number);\n propertyValue = this._lastValidValue ? { ...this._lastValidValue } : /* istanbul ignore next */ {\n valueFormat: PropertyValueFormat.Primitive,\n value: record.value.value,\n displayValue,\n };\n }\n }\n\n return propertyValue;\n }\n\n public get htmlElement(): HTMLElement | null {\n return this._inputElement.current;\n }\n\n public get hasFocus(): boolean {\n return document.activeElement === this._inputElement.current;\n }\n\n private shouldSetFocus(): boolean {\n if (!this.props.setFocus)\n return false;\n\n const record = this.props.propertyRecord as PropertyRecord;\n const disabled = (record && !record.isDisabled) ? false : true;\n const readonly = (record && !record.isReadonly) ? false : true;\n\n return (!disabled && !readonly);\n }\n\n private _applyUpdatedValue(userInput: string) {\n const record = this.props.propertyRecord as PropertyRecord;\n const readonly = (record && !record.isReadonly) ? false : true;\n const disabled = (record && !record.isDisabled) ? false : true;\n\n if (readonly || disabled)\n return;\n\n // istanbul ignore else\n if (this._isMounted)\n this.setState({\n inputValue: userInput,\n });\n }\n\n private _updateInputValue = (e: React.ChangeEvent<HTMLInputElement>) => {\n this._applyUpdatedValue(e.target.value);\n };\n\n /** @internal */\n public override componentDidMount() {\n this._isMounted = true;\n this.setStateFromProps(); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n\n /** @internal */\n public override componentWillUnmount() {\n this._isMounted = false;\n }\n\n /** @internal */\n public override componentDidUpdate(prevProps: PropertyEditorProps) {\n if (this.props.propertyRecord !== prevProps.propertyRecord) {\n this.setStateFromProps(); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n\n private _getInitialDisplayValue(): string {\n const record = this.props.propertyRecord;\n let initialDisplayValue = \"\";\n let numberValue = 0;\n // istanbul ignore else\n if (record) {\n // istanbul ignore else\n if (record.value.valueFormat === PropertyValueFormat.Primitive) {\n const primitiveValue = record.value;\n numberValue = (undefined !== primitiveValue.value) ? primitiveValue.value as number : /* istanbul ignore next */ 0;\n // istanbul ignore else\n if (primitiveValue.displayValue)\n initialDisplayValue = primitiveValue.displayValue;\n else\n initialDisplayValue = (this._formatParams as CustomFormattedNumberParams).formatFunction(numberValue);\n }\n }\n\n return initialDisplayValue;\n }\n\n private async setStateFromProps() {\n const record = this.props.propertyRecord;\n // istanbul ignore next\n if (!record || !record.property) {\n Logger.logError(UiComponents.loggerCategory(this), \"PropertyRecord must be defined to use CustomNumberPropertyEditor\");\n // eslint-disable-next-line no-console\n // console.log(\"PropertyRecord must be defined to use CustomNumberPropertyEditor\");\n return;\n }\n // istanbul ignore else\n if (record.property && record.property.editor && record.property.editor.params) {\n this._formatParams = record.property.editor.params.find((param: PropertyEditorParams) => param.type === PropertyEditorParamTypes.CustomFormattedNumber) as CustomFormattedNumberParams;\n }\n\n if (!this._formatParams) {\n Logger.logError(UiComponents.loggerCategory(this), `CustomFormattedNumberParams must be defined for property ${record.property.name}`);\n // eslint-disable-next-line no-console\n // console.log(`CustomFormattedNumberParams must be defined for property ${record!.property!.name}`);\n return;\n }\n\n const initialDisplayValue = this._getInitialDisplayValue();\n this._lastValidValue = {\n valueFormat: PropertyValueFormat.Primitive,\n value: (record.value as PrimitiveValue).value,\n displayValue: initialDisplayValue,\n };\n let size: number | undefined;\n let maxLength: number | undefined;\n let iconSpec: string | undefined;\n\n // istanbul ignore else\n if (record.property && record.property.editor && record.property.editor.params) {\n const editorSizeParams = record.property.editor.params.find((param: PropertyEditorParams) => param.type === PropertyEditorParamTypes.InputEditorSize) as InputEditorSizeParams;\n // istanbul ignore else\n if (editorSizeParams) {\n // istanbul ignore else\n if (editorSizeParams.size)\n size = editorSizeParams.size;\n // istanbul ignore else\n if (editorSizeParams.maxLength)\n maxLength = editorSizeParams.maxLength;\n }\n\n const iconParams = record.property.editor.params.find((param: PropertyEditorParams) => param.type === PropertyEditorParamTypes.Icon) as IconEditorParams;\n if (iconParams) {\n iconSpec = iconParams.definition.iconSpec;\n }\n }\n\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ inputValue: initialDisplayValue, size, maxLength, iconSpec });\n }\n\n private _resetToLastValidDisplayValue() {\n const initialDisplayValue = (this._lastValidValue && (this._lastValidValue as PrimitiveValue).displayValue) ?? (/* istanbul ignore next */ this._getInitialDisplayValue());\n this.setState({ inputValue: initialDisplayValue });\n }\n\n private _onKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n // istanbul ignore else\n if (e.key === SpecialKey.Escape) {\n const initialDisplayValue = (this._lastValidValue && (this._lastValidValue as PrimitiveValue).displayValue) ?? (/* istanbul ignore next */ this._getInitialDisplayValue());\n if (initialDisplayValue !== this.state.inputValue) {\n e.preventDefault();\n e.stopPropagation();\n this._resetToLastValidDisplayValue();\n } else {\n // istanbul ignore else\n if (this.props.onCancel)\n this.props.onCancel();\n }\n }\n\n // istanbul ignore else\n if (e.key !== SpecialKey.Enter) {\n UiAdmin.messagePresenter.closeInputFieldMessage();\n }\n };\n\n // istanbul ignore next\n private _onFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n e.target.select();\n };\n\n /** @internal */\n public override render(): React.ReactNode {\n const minSize = this.state.size ? this.state.size : 8;\n const minWidthStyle: React.CSSProperties = {\n minWidth: `${minSize * 0.75}em`,\n };\n const record = this.props.propertyRecord as PropertyRecord;\n if (!record || !this._formatParams)\n return null;\n\n const readOnly = !record.isReadonly ? false : true;\n const disabled = !record.isDisabled ? false : true;\n\n const className = classnames(\"components-cell-editor\", \"components-customnumber-editor\", this.props.className);\n\n const inputProps: Omit<InputProps, \"size\"> = { // eslint-disable-line deprecation/deprecation\n className,\n style: this.props.style ? this.props.style : minWidthStyle,\n readOnly,\n disabled,\n maxLength: this.state.maxLength,\n value: this.state.inputValue,\n onChange: this._updateInputValue,\n onBlur: this.props.onBlur,\n onFocus: this._onFocus,\n setFocus: this.shouldSetFocus(),\n onKeyDown: this._onKeyPress,\n };\n\n let reactNode: React.ReactNode;\n if (this.state.iconSpec) {\n const icon = <Icon iconSpec={this.state.iconSpec} />;\n reactNode = (\n <IconInput\n {...inputProps}\n ref={this._inputElement}\n icon={icon}\n data-testid=\"components-customnumber-editor\"\n />\n );\n } else {\n // NEEDSWORK: still using core-react Input component because of `nativeKeyHandler` prop\n reactNode = (\n <Input\n {...inputProps}\n ref={this._inputElement}\n data-testid=\"components-customnumber-editor\"\n size=\"small\"\n />\n );\n }\n\n return reactNode;\n }\n}\n\n/** Custom Property Editor registered for the \"number\" type name and the \"number-custom\" editor name.\n * It uses the [[CustomNumberEditor]] React component.\n * @alpha\n */\nexport class CustomNumberPropertyEditor extends PropertyEditorBase {\n public get reactNode(): React.ReactNode {\n return <CustomNumberEditor />;\n }\n public override get containerHandlesEscape(): boolean {\n return false;\n }\n}\nPropertyEditorManager.registerEditor(StandardTypeNames.Number, CustomNumberPropertyEditor, StandardEditorNames.NumberCustom);\n"]}
1
+ {"version":3,"file":"CustomNumberEditor.js","sourceRoot":"","sources":["../../../../src/components-react/editors/CustomNumberEditor.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 PropertyEditors\r\n */\r\n\r\n// cSpell:ignore customnumber testid\r\n\r\nimport \"./CustomNumberEditor.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport type {\r\n CustomFormattedNumberParams, IconEditorParams, InputEditorSizeParams, PrimitiveValue, PropertyEditorParams,\r\n PropertyRecord, PropertyValue} from \"@itwin/appui-abstract\";\r\nimport { MessageSeverity, PropertyEditorParamTypes, PropertyValueFormat, SpecialKey, StandardEditorNames, StandardTypeNames, UiAdmin,\r\n} from \"@itwin/appui-abstract\";\r\nimport { Icon, IconInput } from \"@itwin/core-react\";\r\nimport type { InputProps } from \"@itwin/itwinui-react\";\r\nimport { Input } from \"@itwin/itwinui-react\";\r\n\r\nimport { UiComponents } from \"../UiComponents\";\r\nimport type { PropertyEditorProps, TypeEditor } from \"./EditorContainer\";\r\nimport { PropertyEditorBase, PropertyEditorManager } from \"./PropertyEditorManager\";\r\n\r\n/** @internal */\r\ninterface CustomNumberEditorState {\r\n inputValue: string;\r\n size?: number;\r\n maxLength?: number;\r\n iconSpec?: string;\r\n}\r\n\r\n/** CustomNumberEditor is a React component that is a property editor for numbers that specify custom formatting and parsing functions.\r\n * @alpha\r\n */\r\nexport class CustomNumberEditor extends React.PureComponent<PropertyEditorProps, CustomNumberEditorState> implements TypeEditor {\r\n private _isMounted = false;\r\n private _formatParams: CustomFormattedNumberParams | undefined;\r\n private _inputElement = React.createRef<HTMLInputElement>();\r\n private _lastValidValue: PropertyValue | undefined;\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<CustomNumberEditorState> = {\r\n inputValue: \"\",\r\n };\r\n\r\n public async getPropertyValue(): Promise<PropertyValue | undefined> {\r\n const record = this.props.propertyRecord as PropertyRecord;\r\n let propertyValue: PropertyValue | undefined;\r\n\r\n if (record.isReadonly) {\r\n return {\r\n valueFormat: PropertyValueFormat.Primitive,\r\n value: (record.value as PrimitiveValue).value,\r\n displayValue: (record.value as PrimitiveValue).displayValue,\r\n };\r\n }\r\n\r\n // istanbul ignore else\r\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\r\n const parseResults = (this._formatParams as CustomFormattedNumberParams).parseFunction(this.state.inputValue);\r\n if (!parseResults.parseError && undefined !== parseResults.value) {\r\n const newDisplayValue = (this._formatParams as CustomFormattedNumberParams).formatFunction(parseResults.value as number);\r\n propertyValue = {\r\n valueFormat: PropertyValueFormat.Primitive,\r\n value: parseResults.value,\r\n displayValue: newDisplayValue,\r\n };\r\n this._lastValidValue = { ...propertyValue };\r\n // make sure the text in the input item matches the latest formatted text... this could get out if the input string say 1.5 === the display string of 1'-6\"\r\n // istanbul ignore else\r\n if (newDisplayValue !== this.state.inputValue) {\r\n this.setState({ inputValue: newDisplayValue });\r\n }\r\n } else {\r\n // istanbul ignore else\r\n if (this.htmlElement) {\r\n UiAdmin.messagePresenter.displayInputFieldMessage(this.htmlElement, MessageSeverity.Error, parseResults.parseError ? parseResults.parseError : /* istanbul ignore next */ UiComponents.translate(\"errors.unable-to-parse-quantity\"));\r\n this.htmlElement.focus();\r\n } else {\r\n UiAdmin.messagePresenter.displayMessage(MessageSeverity.Error, parseResults.parseError ? parseResults.parseError : /* istanbul ignore next */ UiComponents.translate(\"errors.unable-to-parse-quantity\"));\r\n }\r\n\r\n const displayValue = (record.value.displayValue && record.value.displayValue.length > 0) ? record.value.displayValue : /* istanbul ignore next */ (this._formatParams as CustomFormattedNumberParams).formatFunction(record.value.value as number);\r\n propertyValue = this._lastValidValue ? { ...this._lastValidValue } : /* istanbul ignore next */ {\r\n valueFormat: PropertyValueFormat.Primitive,\r\n value: record.value.value,\r\n displayValue,\r\n };\r\n }\r\n }\r\n\r\n return propertyValue;\r\n }\r\n\r\n public get htmlElement(): HTMLElement | null {\r\n return this._inputElement.current;\r\n }\r\n\r\n public get hasFocus(): boolean {\r\n return document.activeElement === this._inputElement.current;\r\n }\r\n\r\n private shouldSetFocus(): boolean {\r\n if (!this.props.setFocus)\r\n return false;\r\n\r\n const record = this.props.propertyRecord as PropertyRecord;\r\n const disabled = (record && !record.isDisabled) ? false : true;\r\n const readonly = (record && !record.isReadonly) ? false : true;\r\n\r\n return (!disabled && !readonly);\r\n }\r\n\r\n private _applyUpdatedValue(userInput: string) {\r\n const record = this.props.propertyRecord as PropertyRecord;\r\n const readonly = (record && !record.isReadonly) ? false : true;\r\n const disabled = (record && !record.isDisabled) ? false : true;\r\n\r\n if (readonly || disabled)\r\n return;\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({\r\n inputValue: userInput,\r\n });\r\n }\r\n\r\n private _updateInputValue = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n this._applyUpdatedValue(e.target.value);\r\n };\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._isMounted = true;\r\n this.setStateFromProps(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(prevProps: PropertyEditorProps) {\r\n if (this.props.propertyRecord !== prevProps.propertyRecord) {\r\n this.setStateFromProps(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n }\r\n\r\n private _getInitialDisplayValue(): string {\r\n const record = this.props.propertyRecord;\r\n let initialDisplayValue = \"\";\r\n let numberValue = 0;\r\n // istanbul ignore else\r\n if (record) {\r\n // istanbul ignore else\r\n if (record.value.valueFormat === PropertyValueFormat.Primitive) {\r\n const primitiveValue = record.value;\r\n numberValue = (undefined !== primitiveValue.value) ? primitiveValue.value as number : /* istanbul ignore next */ 0;\r\n // istanbul ignore else\r\n if (primitiveValue.displayValue)\r\n initialDisplayValue = primitiveValue.displayValue;\r\n else\r\n initialDisplayValue = (this._formatParams as CustomFormattedNumberParams).formatFunction(numberValue);\r\n }\r\n }\r\n\r\n return initialDisplayValue;\r\n }\r\n\r\n private async setStateFromProps() {\r\n const record = this.props.propertyRecord;\r\n // istanbul ignore next\r\n if (!record || !record.property) {\r\n Logger.logError(UiComponents.loggerCategory(this), \"PropertyRecord must be defined to use CustomNumberPropertyEditor\");\r\n // eslint-disable-next-line no-console\r\n // console.log(\"PropertyRecord must be defined to use CustomNumberPropertyEditor\");\r\n return;\r\n }\r\n // istanbul ignore else\r\n if (record.property && record.property.editor && record.property.editor.params) {\r\n this._formatParams = record.property.editor.params.find((param: PropertyEditorParams) => param.type === PropertyEditorParamTypes.CustomFormattedNumber) as CustomFormattedNumberParams;\r\n }\r\n\r\n if (!this._formatParams) {\r\n Logger.logError(UiComponents.loggerCategory(this), `CustomFormattedNumberParams must be defined for property ${record.property.name}`);\r\n // eslint-disable-next-line no-console\r\n // console.log(`CustomFormattedNumberParams must be defined for property ${record!.property!.name}`);\r\n return;\r\n }\r\n\r\n const initialDisplayValue = this._getInitialDisplayValue();\r\n this._lastValidValue = {\r\n valueFormat: PropertyValueFormat.Primitive,\r\n value: (record.value as PrimitiveValue).value,\r\n displayValue: initialDisplayValue,\r\n };\r\n let size: number | undefined;\r\n let maxLength: number | undefined;\r\n let iconSpec: string | undefined;\r\n\r\n // istanbul ignore else\r\n if (record.property && record.property.editor && record.property.editor.params) {\r\n const editorSizeParams = record.property.editor.params.find((param: PropertyEditorParams) => param.type === PropertyEditorParamTypes.InputEditorSize) as InputEditorSizeParams;\r\n // istanbul ignore else\r\n if (editorSizeParams) {\r\n // istanbul ignore else\r\n if (editorSizeParams.size)\r\n size = editorSizeParams.size;\r\n // istanbul ignore else\r\n if (editorSizeParams.maxLength)\r\n maxLength = editorSizeParams.maxLength;\r\n }\r\n\r\n const iconParams = record.property.editor.params.find((param: PropertyEditorParams) => param.type === PropertyEditorParamTypes.Icon) as IconEditorParams;\r\n if (iconParams) {\r\n iconSpec = iconParams.definition.iconSpec;\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ inputValue: initialDisplayValue, size, maxLength, iconSpec });\r\n }\r\n\r\n private _resetToLastValidDisplayValue() {\r\n const initialDisplayValue = (this._lastValidValue && (this._lastValidValue as PrimitiveValue).displayValue) ?? (/* istanbul ignore next */ this._getInitialDisplayValue());\r\n this.setState({ inputValue: initialDisplayValue });\r\n }\r\n\r\n private _onKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n // istanbul ignore else\r\n if (e.key === SpecialKey.Escape) {\r\n const initialDisplayValue = (this._lastValidValue && (this._lastValidValue as PrimitiveValue).displayValue) ?? (/* istanbul ignore next */ this._getInitialDisplayValue());\r\n if (initialDisplayValue !== this.state.inputValue) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._resetToLastValidDisplayValue();\r\n } else {\r\n // istanbul ignore else\r\n if (this.props.onCancel)\r\n this.props.onCancel();\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (e.key !== SpecialKey.Enter) {\r\n UiAdmin.messagePresenter.closeInputFieldMessage();\r\n }\r\n };\r\n\r\n // istanbul ignore next\r\n private _onFocus = (e: React.FocusEvent<HTMLInputElement>) => {\r\n e.target.select();\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const minSize = this.state.size ? this.state.size : 8;\r\n const minWidthStyle: React.CSSProperties = {\r\n minWidth: `${minSize * 0.75}em`,\r\n };\r\n const record = this.props.propertyRecord as PropertyRecord;\r\n if (!record || !this._formatParams)\r\n return null;\r\n\r\n const readOnly = !record.isReadonly ? false : true;\r\n const disabled = !record.isDisabled ? false : true;\r\n\r\n const className = classnames(\"components-cell-editor\", \"components-customnumber-editor\", this.props.className);\r\n\r\n const inputProps: Omit<InputProps, \"size\"> = { // eslint-disable-line deprecation/deprecation\r\n className,\r\n style: this.props.style ? this.props.style : minWidthStyle,\r\n readOnly,\r\n disabled,\r\n maxLength: this.state.maxLength,\r\n value: this.state.inputValue,\r\n onChange: this._updateInputValue,\r\n onBlur: this.props.onBlur,\r\n onFocus: this._onFocus,\r\n setFocus: this.shouldSetFocus(),\r\n onKeyDown: this._onKeyPress,\r\n };\r\n\r\n let reactNode: React.ReactNode;\r\n if (this.state.iconSpec) {\r\n const icon = <Icon iconSpec={this.state.iconSpec} />;\r\n reactNode = (\r\n <IconInput\r\n {...inputProps}\r\n ref={this._inputElement}\r\n icon={icon}\r\n data-testid=\"components-customnumber-editor\"\r\n />\r\n );\r\n } else {\r\n // NEEDSWORK: still using core-react Input component because of `nativeKeyHandler` prop\r\n reactNode = (\r\n <Input\r\n {...inputProps}\r\n ref={this._inputElement}\r\n data-testid=\"components-customnumber-editor\"\r\n size=\"small\"\r\n />\r\n );\r\n }\r\n\r\n return reactNode;\r\n }\r\n}\r\n\r\n/** Custom Property Editor registered for the \"number\" type name and the \"number-custom\" editor name.\r\n * It uses the [[CustomNumberEditor]] React component.\r\n * @alpha\r\n */\r\nexport class CustomNumberPropertyEditor extends PropertyEditorBase {\r\n public get reactNode(): React.ReactNode {\r\n return <CustomNumberEditor />;\r\n }\r\n public override get containerHandlesEscape(): boolean {\r\n return false;\r\n }\r\n}\r\nPropertyEditorManager.registerEditor(StandardTypeNames.Number, CustomNumberPropertyEditor, StandardEditorNames.NumberCustom);\r\n"]}