@skbkontur/react-ui 4.11.0 → 4.12.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 (204) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +2 -0
  3. package/cjs/components/Autocomplete/Autocomplete.js +31 -7
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Autocomplete/locale/index.d.ts +4 -0
  6. package/cjs/components/Autocomplete/locale/index.js +11 -0
  7. package/cjs/components/Autocomplete/locale/index.js.map +1 -0
  8. package/cjs/components/Autocomplete/locale/locales/en.d.ts +2 -0
  9. package/cjs/components/Autocomplete/locale/locales/en.js +6 -0
  10. package/cjs/components/Autocomplete/locale/locales/en.js.map +1 -0
  11. package/cjs/components/Autocomplete/locale/locales/ru.d.ts +2 -0
  12. package/cjs/components/Autocomplete/locale/locales/ru.js +6 -0
  13. package/cjs/components/Autocomplete/locale/locales/ru.js.map +1 -0
  14. package/cjs/components/Autocomplete/locale/types.d.ts +5 -0
  15. package/cjs/components/Autocomplete/locale/types.js +1 -0
  16. package/cjs/components/Autocomplete/locale/types.js.map +1 -0
  17. package/cjs/components/ComboBox/ComboBox.md +42 -0
  18. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +1 -1
  19. package/cjs/components/Dropdown/Dropdown.d.ts +2 -1
  20. package/cjs/components/Dropdown/Dropdown.js +3 -1
  21. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  22. package/cjs/components/DropdownMenu/DropdownMenu.md +27 -0
  23. package/cjs/components/Hint/Hint.d.ts +0 -3
  24. package/cjs/components/Hint/Hint.js +2 -27
  25. package/cjs/components/Hint/Hint.js.map +1 -1
  26. package/cjs/components/Hint/Hint.md +29 -0
  27. package/cjs/components/Hint/Hint.styles.d.ts +0 -1
  28. package/cjs/components/Hint/Hint.styles.js +2 -10
  29. package/cjs/components/Hint/Hint.styles.js.map +1 -1
  30. package/cjs/components/MenuItem/MenuItem.js +10 -8
  31. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  32. package/cjs/components/MenuItem/MenuItem.styles.d.ts +5 -1
  33. package/cjs/components/MenuItem/MenuItem.styles.js +28 -12
  34. package/cjs/components/MenuItem/MenuItem.styles.js.map +1 -1
  35. package/cjs/components/MenuSeparator/MenuSeparator.js +12 -1
  36. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  37. package/cjs/components/MenuSeparator/MenuSeparator.styles.d.ts +1 -0
  38. package/cjs/components/MenuSeparator/MenuSeparator.styles.js +8 -1
  39. package/cjs/components/MenuSeparator/MenuSeparator.styles.js.map +1 -1
  40. package/cjs/components/Modal/Modal.js +1 -5
  41. package/cjs/components/Modal/Modal.js.map +1 -1
  42. package/cjs/components/Select/Select.d.ts +2 -1
  43. package/cjs/components/Select/Select.js +13 -8
  44. package/cjs/components/Select/Select.js.map +1 -1
  45. package/cjs/components/SidePage/SidePage.js +0 -2
  46. package/cjs/components/SidePage/SidePage.js.map +1 -1
  47. package/cjs/components/Toast/Toast.d.ts +6 -3
  48. package/cjs/components/Toast/Toast.js +15 -8
  49. package/cjs/components/Toast/Toast.js.map +1 -1
  50. package/cjs/components/Toast/Toast.md +129 -0
  51. package/cjs/components/Toast/ToastStatic.d.ts +3 -2
  52. package/cjs/components/Toast/ToastStatic.js +5 -5
  53. package/cjs/components/Toast/ToastStatic.js.map +1 -1
  54. package/cjs/components/Tooltip/Tooltip.d.ts +0 -2
  55. package/cjs/components/Tooltip/Tooltip.js +3 -23
  56. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  57. package/cjs/components/TooltipMenu/TooltipMenu.md +27 -0
  58. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -3
  59. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  60. package/cjs/internal/CustomComboBox/ComboBoxView.js +0 -1
  61. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  62. package/cjs/internal/Menu/Menu.d.ts +1 -0
  63. package/cjs/internal/Menu/Menu.js +20 -8
  64. package/cjs/internal/Menu/Menu.js.map +1 -1
  65. package/cjs/internal/Menu/Menu.styles.d.ts +2 -0
  66. package/cjs/internal/Menu/Menu.styles.js +19 -6
  67. package/cjs/internal/Menu/Menu.styles.js.map +1 -1
  68. package/cjs/internal/MenuMessage/MenuMessage.d.ts +10 -0
  69. package/cjs/internal/MenuMessage/MenuMessage.js +42 -0
  70. package/cjs/internal/MenuMessage/MenuMessage.js.map +1 -0
  71. package/cjs/internal/MenuMessage/MenuMessage.styles.d.ts +5 -0
  72. package/cjs/internal/MenuMessage/MenuMessage.styles.js +33 -0
  73. package/cjs/internal/MenuMessage/MenuMessage.styles.js.map +1 -0
  74. package/cjs/internal/MenuMessage/index.d.ts +1 -0
  75. package/cjs/internal/MenuMessage/index.js +1 -0
  76. package/cjs/internal/MenuMessage/index.js.map +1 -0
  77. package/cjs/internal/MobilePopup/MobilePopup.d.ts +13 -12
  78. package/cjs/internal/MobilePopup/MobilePopup.js +6 -60
  79. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  80. package/cjs/internal/MobilePopup/MobilePopup.styles.d.ts +3 -3
  81. package/cjs/internal/MobilePopup/MobilePopup.styles.js +22 -24
  82. package/cjs/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
  83. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +3 -4
  84. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +26 -37
  85. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  86. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +2 -4
  87. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +8 -32
  88. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
  89. package/cjs/internal/Popup/Popup.js +1 -1
  90. package/cjs/internal/Popup/Popup.js.map +1 -1
  91. package/cjs/internal/RenderLayer/RenderLayer.js +5 -1
  92. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  93. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  94. package/cjs/internal/themes/DefaultTheme.d.ts +22 -3
  95. package/cjs/internal/themes/DefaultTheme.js +52 -7
  96. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  97. package/cjs/lib/locale/LOCALECONTEXT.md +1 -0
  98. package/cjs/typings/html-props.d.ts +2 -2
  99. package/components/Autocomplete/Autocomplete/Autocomplete.js +27 -6
  100. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  101. package/components/Autocomplete/Autocomplete.d.ts +2 -0
  102. package/components/Autocomplete/locale/index/index.js +8 -0
  103. package/components/Autocomplete/locale/index/index.js.map +1 -0
  104. package/components/Autocomplete/locale/index/package.json +6 -0
  105. package/components/Autocomplete/locale/index.d.ts +4 -0
  106. package/components/Autocomplete/locale/locales/en/en.js +5 -0
  107. package/components/Autocomplete/locale/locales/en/en.js.map +1 -0
  108. package/components/Autocomplete/locale/locales/en/package.json +6 -0
  109. package/components/Autocomplete/locale/locales/en.d.ts +2 -0
  110. package/components/Autocomplete/locale/locales/ru/package.json +6 -0
  111. package/components/Autocomplete/locale/locales/ru/ru.js +5 -0
  112. package/components/Autocomplete/locale/locales/ru/ru.js.map +1 -0
  113. package/components/Autocomplete/locale/locales/ru.d.ts +2 -0
  114. package/components/Autocomplete/locale/package.json +6 -0
  115. package/components/Autocomplete/locale/types/package.json +6 -0
  116. package/components/Autocomplete/locale/types/types.js +1 -0
  117. package/components/Autocomplete/locale/types/types.js.map +1 -0
  118. package/components/Autocomplete/locale/types.d.ts +5 -0
  119. package/components/ComboBox/ComboBox.md +42 -0
  120. package/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +1 -1
  121. package/components/Dropdown/Dropdown/Dropdown.js +2 -1
  122. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  123. package/components/Dropdown/Dropdown.d.ts +2 -1
  124. package/components/DropdownMenu/DropdownMenu.md +27 -0
  125. package/components/Hint/Hint/Hint.js +7 -24
  126. package/components/Hint/Hint/Hint.js.map +1 -1
  127. package/components/Hint/Hint.d.ts +0 -3
  128. package/components/Hint/Hint.md +29 -0
  129. package/components/Hint/Hint.styles/Hint.styles.js +2 -5
  130. package/components/Hint/Hint.styles/Hint.styles.js.map +1 -1
  131. package/components/Hint/Hint.styles.d.ts +0 -1
  132. package/components/MenuItem/MenuItem/MenuItem.js +10 -8
  133. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  134. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +27 -8
  135. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
  136. package/components/MenuItem/MenuItem.styles.d.ts +5 -1
  137. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +10 -3
  138. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  139. package/components/MenuSeparator/MenuSeparator.styles/MenuSeparator.styles.js +4 -1
  140. package/components/MenuSeparator/MenuSeparator.styles/MenuSeparator.styles.js.map +1 -1
  141. package/components/MenuSeparator/MenuSeparator.styles.d.ts +1 -0
  142. package/components/Modal/Modal/Modal.js +1 -1
  143. package/components/Modal/Modal/Modal.js.map +1 -1
  144. package/components/Select/Select/Select.js +20 -21
  145. package/components/Select/Select/Select.js.map +1 -1
  146. package/components/Select/Select.d.ts +2 -1
  147. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  148. package/components/Toast/Toast/Toast.js +15 -8
  149. package/components/Toast/Toast/Toast.js.map +1 -1
  150. package/components/Toast/Toast.d.ts +6 -3
  151. package/components/Toast/Toast.md +129 -0
  152. package/components/Toast/ToastStatic/ToastStatic.js +5 -5
  153. package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
  154. package/components/Toast/ToastStatic.d.ts +3 -2
  155. package/components/Tooltip/Tooltip/Tooltip.js +5 -25
  156. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  157. package/components/Tooltip/Tooltip.d.ts +0 -2
  158. package/components/TooltipMenu/TooltipMenu.md +27 -0
  159. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +9 -15
  160. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  161. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +0 -1
  162. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  163. package/internal/Menu/Menu/Menu.js +9 -7
  164. package/internal/Menu/Menu/Menu.js.map +1 -1
  165. package/internal/Menu/Menu.d.ts +1 -0
  166. package/internal/Menu/Menu.styles/Menu.styles.js +12 -6
  167. package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
  168. package/internal/Menu/Menu.styles.d.ts +2 -0
  169. package/internal/MenuMessage/MenuMessage/MenuMessage.js +30 -0
  170. package/internal/MenuMessage/MenuMessage/MenuMessage.js.map +1 -0
  171. package/internal/MenuMessage/MenuMessage/package.json +6 -0
  172. package/internal/MenuMessage/MenuMessage.d.ts +10 -0
  173. package/internal/MenuMessage/MenuMessage.styles/MenuMessage.styles.js +23 -0
  174. package/internal/MenuMessage/MenuMessage.styles/MenuMessage.styles.js.map +1 -0
  175. package/internal/MenuMessage/MenuMessage.styles/package.json +6 -0
  176. package/internal/MenuMessage/MenuMessage.styles.d.ts +5 -0
  177. package/internal/MenuMessage/index/index.js +1 -0
  178. package/internal/MenuMessage/index/index.js.map +1 -0
  179. package/internal/MenuMessage/index/package.json +6 -0
  180. package/internal/MenuMessage/index.d.ts +1 -0
  181. package/internal/MenuMessage/package.json +6 -0
  182. package/internal/MobilePopup/MobilePopup/MobilePopup.js +23 -53
  183. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  184. package/internal/MobilePopup/MobilePopup.d.ts +13 -12
  185. package/internal/MobilePopup/MobilePopup.styles/MobilePopup.styles.js +11 -11
  186. package/internal/MobilePopup/MobilePopup.styles/MobilePopup.styles.js.map +1 -1
  187. package/internal/MobilePopup/MobilePopup.styles.d.ts +3 -3
  188. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +11 -35
  189. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  190. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +3 -4
  191. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles/MobilePopupHeader.styles.js +6 -12
  192. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles/MobilePopupHeader.styles.js.map +1 -1
  193. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +2 -4
  194. package/internal/Popup/Popup/Popup.js +1 -1
  195. package/internal/Popup/Popup/Popup.js.map +1 -1
  196. package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -2
  197. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  198. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  199. package/internal/themes/DefaultTheme/DefaultTheme.js +77 -9
  200. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  201. package/internal/themes/DefaultTheme.d.ts +22 -3
  202. package/lib/locale/LOCALECONTEXT.md +1 -0
  203. package/package.json +2 -2
  204. package/typings/html-props.d.ts +2 -2
@@ -8,6 +8,7 @@ var _Spinner = require("../../components/Spinner");
8
8
 
9
9
  var _MenuSeparator = require("../../components/MenuSeparator");
10
10
  var _createPropsGetter = require("../../lib/createPropsGetter");
11
+ var _MenuMessage = require("../MenuMessage");
11
12
 
12
13
  var _CustomComboBoxTypes = require("./CustomComboBoxTypes");
13
14
  var _locale = require("./locale");var _dec, _class, _class2, _temp;
@@ -157,8 +158,6 @@ ComboBoxMenu = (_dec = (0, _decorators.locale)('ComboBox', _locale.CustomComboBo
157
158
 
158
159
 
159
160
 
160
-
161
-
162
161
 
163
162
 
164
163
 
@@ -189,4 +188,4 @@ ComboBoxMenu = (_dec = (0, _decorators.locale)('ComboBox', _locale.CustomComboBo
189
188
  function (state) {return renderItem(item, state);}));
190
189
 
191
190
 
192
- };return _this;}var _proto = ComboBoxMenu.prototype;_proto.render = function render() {var _this$props2 = this.props,opened = _this$props2.opened,items = _this$props2.items,totalCount = _this$props2.totalCount,loading = _this$props2.loading,refMenu = _this$props2.refMenu,_this$props2$renderNo = _this$props2.renderNotFound,renderNotFound = _this$props2$renderNo === void 0 ? function () {return notFound;} : _this$props2$renderNo,renderTotalCount = _this$props2.renderTotalCount,maxMenuHeight = _this$props2.maxMenuHeight,isMobile = _this$props2.isMobile;var requestStatus = this.getProps().requestStatus;var _this$locale = this.locale,notFound = _this$locale.notFound,errorNetworkButton = _this$locale.errorNetworkButton,errorNetworkMessage = _this$locale.errorNetworkMessage;if (!opened) {return null;}var renderAddButton = null;if (this.props.renderAddButton) {renderAddButton = this.props.renderAddButton();}var maxHeight = isMobile ? 'auto' : maxMenuHeight;if (loading && (!items || !items.length)) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile, "data-tid": ComboBoxMenuDataTids.loading }, /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { disabled: true, isMobile: isMobile }, /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { type: "mini", dimmed: true })));}if (items === null && requestStatus === _CustomComboBoxTypes.ComboBoxRequestStatus.Failed) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { ref: refMenu, maxHeight: maxHeight, disableScrollContainer: isMobile, "data-tid": ComboBoxMenuDataTids.failed }, /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { disabled: true, key: "message", isMobile: isMobile }, /*#__PURE__*/_react.default.createElement("div", { style: { maxWidth: 300, whiteSpace: 'normal' } }, errorNetworkMessage)), /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { link: true, onClick: this.getProps().repeatRequest, key: "retry", isMobile: isMobile }, errorNetworkButton));}if (((0, _utils.isNullable)(items) || items.length === 0) && renderNotFound) {var notFoundValue = renderNotFound();if (renderAddButton) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, renderAddButton);}if (notFoundValue) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { "data-tid": ComboBoxMenuDataTids.notFound, disabled: true, isMobile: isMobile }, notFoundValue));}return null;}var total = null;var renderedItems = items && items.map(this.renderItem);var menuItems = renderedItems == null ? void 0 : renderedItems.filter(function (item) {return (0, _MenuItem.isMenuItem)(item);});var countItems = menuItems == null ? void 0 : menuItems.length;if (countItems && renderTotalCount && totalCount && countItems < totalCount) {total = /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { disabled: true, key: "total", isMobile: isMobile }, /*#__PURE__*/_react.default.createElement("div", { style: { fontSize: 12 } }, renderTotalCount(countItems, totalCount)));}return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { "data-tid": ComboBoxMenuDataTids.items, ref: refMenu, maxHeight: maxHeight, disableScrollContainer: isMobile }, renderedItems, total, renderAddButton && [/*#__PURE__*/_react.default.createElement(_MenuSeparator.MenuSeparator, { key: "separator" }), renderAddButton]);};return ComboBoxMenu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'ComboBoxMenu', _class2.defaultProps = { repeatRequest: function repeatRequest() {return undefined;}, requestStatus: _CustomComboBoxTypes.ComboBoxRequestStatus.Unknown }, _temp)) || _class);exports.ComboBoxMenu = ComboBoxMenu;
191
+ };return _this;}var _proto = ComboBoxMenu.prototype;_proto.render = function render() {var _this$props2 = this.props,opened = _this$props2.opened,items = _this$props2.items,totalCount = _this$props2.totalCount,loading = _this$props2.loading,refMenu = _this$props2.refMenu,_this$props2$renderNo = _this$props2.renderNotFound,renderNotFound = _this$props2$renderNo === void 0 ? function () {return notFound;} : _this$props2$renderNo,renderTotalCount = _this$props2.renderTotalCount,maxMenuHeight = _this$props2.maxMenuHeight,isMobile = _this$props2.isMobile;var requestStatus = this.getProps().requestStatus;var _this$locale = this.locale,notFound = _this$locale.notFound,errorNetworkButton = _this$locale.errorNetworkButton,errorNetworkMessage = _this$locale.errorNetworkMessage;if (!opened) {return null;}var renderAddButton = null;if (this.props.renderAddButton) {renderAddButton = this.props.renderAddButton();}var maxHeight = isMobile ? 'auto' : maxMenuHeight;if (loading && (!items || !items.length)) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile, "data-tid": ComboBoxMenuDataTids.loading }, /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { as: "div" }, /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { type: "mini", dimmed: true })));}if (items === null && requestStatus === _CustomComboBoxTypes.ComboBoxRequestStatus.Failed) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { ref: refMenu, maxHeight: maxHeight, disableScrollContainer: isMobile, "data-tid": ComboBoxMenuDataTids.failed }, /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { key: "message" }, /*#__PURE__*/_react.default.createElement("div", { style: { maxWidth: 300, whiteSpace: 'normal' } }, errorNetworkMessage)), /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { link: true, onClick: this.getProps().repeatRequest, key: "retry", isMobile: isMobile }, errorNetworkButton));}if (((0, _utils.isNullable)(items) || items.length === 0) && renderNotFound) {var notFoundValue = renderNotFound();if (renderAddButton) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, renderAddButton);}if (notFoundValue) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { "data-tid": ComboBoxMenuDataTids.notFound }, notFoundValue));}return null;}var total = null;var renderedItems = items && items.map(this.renderItem);var menuItems = renderedItems == null ? void 0 : renderedItems.filter(function (item) {return (0, _MenuItem.isMenuItem)(item);});var countItems = menuItems == null ? void 0 : menuItems.length;if (countItems && renderTotalCount && totalCount && countItems < totalCount) {total = /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { key: "total" }, /*#__PURE__*/_react.default.createElement("div", { style: { fontSize: 12 } }, renderTotalCount(countItems, totalCount)));}return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { "data-tid": ComboBoxMenuDataTids.items, ref: refMenu, maxHeight: maxHeight, disableScrollContainer: isMobile }, renderedItems, total, renderAddButton && [/*#__PURE__*/_react.default.createElement(_MenuSeparator.MenuSeparator, { key: "separator" }), renderAddButton]);};return ComboBoxMenu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'ComboBoxMenu', _class2.defaultProps = { repeatRequest: function repeatRequest() {return undefined;}, requestStatus: _CustomComboBoxTypes.ComboBoxRequestStatus.Unknown }, _temp)) || _class);exports.ComboBoxMenu = ComboBoxMenu;
@@ -1 +1 @@
1
- {"version":3,"sources":["ComboBoxMenu.tsx"],"names":["ComboBoxMenuDataTids","loading","failed","notFound","items","item","ComboBoxMenu","CustomComboBoxLocaleHelper","getProps","defaultProps","renderItem","index","props","onValueChange","itemWrapper","React","isValidElement","element","Object","assign","key","onClick","cloneElement","isMobile","state","render","opened","totalCount","refMenu","renderNotFound","renderTotalCount","maxMenuHeight","requestStatus","locale","errorNetworkButton","errorNetworkMessage","renderAddButton","maxHeight","length","ComboBoxRequestStatus","Failed","maxWidth","whiteSpace","repeatRequest","notFoundValue","total","renderedItems","map","menuItems","filter","countItems","fontSize","Component","__KONTUR_REACT_UI__","undefined","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isFunction, isNullable } from '../../lib/utils';\nimport { locale } from '../../lib/locale/decorators';\nimport { Menu } from '../Menu';\nimport { isMenuItem, MenuItem, MenuItemState } from '../../components/MenuItem';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { ComboBoxLocale, CustomComboBoxLocaleHelper } from './locale';\n\nexport interface ComboBoxMenuProps<T> {\n opened?: boolean;\n items?: Nullable<T[]>;\n totalCount?: number;\n loading?: boolean;\n maxMenuHeight?: number | string;\n refMenu?: (menu: Nullable<Menu>) => void;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n onValueChange: (value: T) => any;\n renderAddButton?: () => React.ReactNode;\n caption?: React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n isMobile?: boolean;\n}\n\nexport const ComboBoxMenuDataTids = {\n loading: 'ComboBoxMenu__loading',\n failed: 'ComboBoxMenu__failed',\n notFound: 'ComboBoxMenu__notFound',\n items: 'ComboBoxMenu__items',\n item: 'ComboBoxMenu__item',\n} as const;\n\ntype DefaultProps<T> = Required<Pick<ComboBoxMenuProps<T>, 'repeatRequest' | 'requestStatus'>>;\n\n@locale('ComboBox', CustomComboBoxLocaleHelper)\nexport class ComboBoxMenu<T> extends React.Component<ComboBoxMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxMenu';\n\n public static defaultProps: DefaultProps<unknown> = {\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n };\n\n private getProps = createPropsGetter(ComboBoxMenu.defaultProps);\n\n private readonly locale!: ComboBoxLocale;\n\n public render() {\n const {\n opened,\n items,\n totalCount,\n loading,\n refMenu,\n renderNotFound = () => notFound,\n renderTotalCount,\n maxMenuHeight,\n isMobile,\n } = this.props;\n\n const requestStatus = this.getProps().requestStatus;\n\n const { notFound, errorNetworkButton, errorNetworkMessage } = this.locale;\n\n if (!opened) {\n return null;\n }\n\n let renderAddButton = null;\n if (this.props.renderAddButton) {\n renderAddButton = this.props.renderAddButton();\n }\n\n const maxHeight = isMobile ? 'auto' : maxMenuHeight;\n\n if (loading && (!items || !items.length)) {\n return (\n <Menu\n maxHeight={maxHeight}\n ref={refMenu}\n disableScrollContainer={isMobile}\n data-tid={ComboBoxMenuDataTids.loading}\n >\n <MenuItem disabled isMobile={isMobile}>\n <Spinner type=\"mini\" dimmed />\n </MenuItem>\n </Menu>\n );\n }\n\n if (items === null && requestStatus === ComboBoxRequestStatus.Failed) {\n return (\n <Menu\n ref={refMenu}\n maxHeight={maxHeight}\n disableScrollContainer={isMobile}\n data-tid={ComboBoxMenuDataTids.failed}\n >\n <MenuItem disabled key=\"message\" isMobile={isMobile}>\n <div style={{ maxWidth: 300, whiteSpace: 'normal' }}>{errorNetworkMessage}</div>\n </MenuItem>\n <MenuItem link onClick={this.getProps().repeatRequest} key=\"retry\" isMobile={isMobile}>\n {errorNetworkButton}\n </MenuItem>\n </Menu>\n );\n }\n\n if ((isNullable(items) || items.length === 0) && renderNotFound) {\n const notFoundValue = renderNotFound();\n if (renderAddButton) {\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n {renderAddButton}\n </Menu>\n );\n }\n\n if (notFoundValue) {\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n <MenuItem data-tid={ComboBoxMenuDataTids.notFound} disabled isMobile={isMobile}>\n {notFoundValue}\n </MenuItem>\n </Menu>\n );\n }\n\n return null;\n }\n\n let total = null;\n const renderedItems = items && items.map(this.renderItem);\n const menuItems = renderedItems?.filter((item) => {\n return isMenuItem(item);\n });\n const countItems = menuItems?.length;\n\n if (countItems && renderTotalCount && totalCount && countItems < totalCount) {\n total = (\n <MenuItem disabled key=\"total\" isMobile={isMobile}>\n <div style={{ fontSize: 12 }}>{renderTotalCount(countItems, totalCount)}</div>\n </MenuItem>\n );\n }\n\n return (\n <Menu data-tid={ComboBoxMenuDataTids.items} ref={refMenu} maxHeight={maxHeight} disableScrollContainer={isMobile}>\n {renderedItems}\n {total}\n {renderAddButton && [<MenuSeparator key=\"separator\" />, renderAddButton]}\n </Menu>\n );\n }\n\n private renderItem = (item: T, index: number): React.ReactNode => {\n // NOTE this is undesireable feature, better\n // to remove it from further versions\n const { renderItem, onValueChange, itemWrapper } = this.props;\n if (isFunction(item) || React.isValidElement(item)) {\n const element = isFunction(item) ? item() : item;\n const props = Object.assign(\n {\n key: index,\n onClick: () => onValueChange(element.props),\n },\n element.props,\n );\n return React.cloneElement(element, props);\n }\n\n return (\n <MenuItem\n component={itemWrapper?.(item)}\n data-tid={ComboBoxMenuDataTids.item}\n onClick={() => onValueChange(item)}\n key={index}\n isMobile={this.props.isMobile}\n >\n {(state) => renderItem(item, state)}\n </MenuItem>\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["ComboBoxMenu.tsx"],"names":["ComboBoxMenuDataTids","loading","failed","notFound","items","item","ComboBoxMenu","CustomComboBoxLocaleHelper","getProps","defaultProps","renderItem","index","props","onValueChange","itemWrapper","React","isValidElement","element","Object","assign","key","onClick","cloneElement","isMobile","state","render","opened","totalCount","refMenu","renderNotFound","renderTotalCount","maxMenuHeight","requestStatus","locale","errorNetworkButton","errorNetworkMessage","renderAddButton","maxHeight","length","ComboBoxRequestStatus","Failed","maxWidth","whiteSpace","repeatRequest","notFoundValue","total","renderedItems","map","menuItems","filter","countItems","fontSize","Component","__KONTUR_REACT_UI__","undefined","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isFunction, isNullable } from '../../lib/utils';\nimport { locale } from '../../lib/locale/decorators';\nimport { Menu } from '../Menu';\nimport { isMenuItem, MenuItem, MenuItemState } from '../../components/MenuItem';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { MenuMessage } from '../MenuMessage';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { ComboBoxLocale, CustomComboBoxLocaleHelper } from './locale';\n\nexport interface ComboBoxMenuProps<T> {\n opened?: boolean;\n items?: Nullable<T[]>;\n totalCount?: number;\n loading?: boolean;\n maxMenuHeight?: number | string;\n refMenu?: (menu: Nullable<Menu>) => void;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n onValueChange: (value: T) => any;\n renderAddButton?: () => React.ReactNode;\n caption?: React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n isMobile?: boolean;\n}\n\nexport const ComboBoxMenuDataTids = {\n loading: 'ComboBoxMenu__loading',\n failed: 'ComboBoxMenu__failed',\n notFound: 'ComboBoxMenu__notFound',\n items: 'ComboBoxMenu__items',\n item: 'ComboBoxMenu__item',\n} as const;\n\ntype DefaultProps<T> = Required<Pick<ComboBoxMenuProps<T>, 'repeatRequest' | 'requestStatus'>>;\n\n@locale('ComboBox', CustomComboBoxLocaleHelper)\nexport class ComboBoxMenu<T> extends React.Component<ComboBoxMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxMenu';\n\n public static defaultProps: DefaultProps<unknown> = {\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n };\n\n private getProps = createPropsGetter(ComboBoxMenu.defaultProps);\n\n private readonly locale!: ComboBoxLocale;\n\n public render() {\n const {\n opened,\n items,\n totalCount,\n loading,\n refMenu,\n renderNotFound = () => notFound,\n renderTotalCount,\n maxMenuHeight,\n isMobile,\n } = this.props;\n\n const requestStatus = this.getProps().requestStatus;\n\n const { notFound, errorNetworkButton, errorNetworkMessage } = this.locale;\n\n if (!opened) {\n return null;\n }\n\n let renderAddButton = null;\n if (this.props.renderAddButton) {\n renderAddButton = this.props.renderAddButton();\n }\n\n const maxHeight = isMobile ? 'auto' : maxMenuHeight;\n\n if (loading && (!items || !items.length)) {\n return (\n <Menu\n maxHeight={maxHeight}\n ref={refMenu}\n disableScrollContainer={isMobile}\n data-tid={ComboBoxMenuDataTids.loading}\n >\n <MenuMessage as=\"div\">\n <Spinner type=\"mini\" dimmed />\n </MenuMessage>\n </Menu>\n );\n }\n\n if (items === null && requestStatus === ComboBoxRequestStatus.Failed) {\n return (\n <Menu\n ref={refMenu}\n maxHeight={maxHeight}\n disableScrollContainer={isMobile}\n data-tid={ComboBoxMenuDataTids.failed}\n >\n <MenuMessage key=\"message\">\n <div style={{ maxWidth: 300, whiteSpace: 'normal' }}>{errorNetworkMessage}</div>\n </MenuMessage>\n <MenuItem link onClick={this.getProps().repeatRequest} key=\"retry\" isMobile={isMobile}>\n {errorNetworkButton}\n </MenuItem>\n </Menu>\n );\n }\n\n if ((isNullable(items) || items.length === 0) && renderNotFound) {\n const notFoundValue = renderNotFound();\n if (renderAddButton) {\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n {renderAddButton}\n </Menu>\n );\n }\n\n if (notFoundValue) {\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n <MenuMessage data-tid={ComboBoxMenuDataTids.notFound}>{notFoundValue}</MenuMessage>\n </Menu>\n );\n }\n\n return null;\n }\n\n let total = null;\n const renderedItems = items && items.map(this.renderItem);\n const menuItems = renderedItems?.filter((item) => {\n return isMenuItem(item);\n });\n const countItems = menuItems?.length;\n\n if (countItems && renderTotalCount && totalCount && countItems < totalCount) {\n total = (\n <MenuMessage key=\"total\">\n <div style={{ fontSize: 12 }}>{renderTotalCount(countItems, totalCount)}</div>\n </MenuMessage>\n );\n }\n\n return (\n <Menu data-tid={ComboBoxMenuDataTids.items} ref={refMenu} maxHeight={maxHeight} disableScrollContainer={isMobile}>\n {renderedItems}\n {total}\n {renderAddButton && [<MenuSeparator key=\"separator\" />, renderAddButton]}\n </Menu>\n );\n }\n\n private renderItem = (item: T, index: number): React.ReactNode => {\n // NOTE this is undesireable feature, better\n // to remove it from further versions\n const { renderItem, onValueChange, itemWrapper } = this.props;\n if (isFunction(item) || React.isValidElement(item)) {\n const element = isFunction(item) ? item() : item;\n const props = Object.assign(\n {\n key: index,\n onClick: () => onValueChange(element.props),\n },\n element.props,\n );\n return React.cloneElement(element, props);\n }\n\n return (\n <MenuItem\n component={itemWrapper?.(item)}\n data-tid={ComboBoxMenuDataTids.item}\n onClick={() => onValueChange(item)}\n key={index}\n isMobile={this.props.isMobile}\n >\n {(state) => renderItem(item, state)}\n </MenuItem>\n );\n };\n}\n"]}
@@ -238,7 +238,6 @@ ComboBoxView = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNode)
238
238
  return /*#__PURE__*/(
239
239
  _react.default.createElement(_MobilePopup.MobilePopup, {
240
240
  headerChildComponent: /*#__PURE__*/_react.default.createElement(_Input.Input, (0, _extends2.default)({ ref: _this.refMobileInput }, inputProps)),
241
- useFullHeight: true,
242
241
  onCloseRequest: _this.handleCloseMobile,
243
242
  opened: _this.state.isMobileOpened },
244
243
 
@@ -1 +1 @@
1
- {"version":3,"sources":["ComboBoxView.tsx"],"names":["ComboBoxView","responsiveLayout","rootNode","getProps","defaultProps","mobileInput","dropdownContainerRef","React","createRef","state","isMobileOpened","getComboBoxMenu","props","items","loading","opened","refMenu","maxMenuHeight","renderTotalCount","renderNotFound","totalCount","repeatRequest","requestStatus","renderItem","itemWrapper","handleItemSelect","renderAddButton","isMobileLayout","renderMenu","menuAlign","menuPos","getParent","disablePortal","renderMobileMenu","rightIcon","length","renderSpinner","inputProps","autoFocus","width","onFocus","onValueChange","onInputValueChange","value","textValue","placeholder","refMobileInput","handleCloseMobile","setState","onInputBlur","handleFocusMobile","focus","item","refInput","input","styles","spinnerWrapper","getRightIcon","drawArrow","rightIconWrapper","componentDidMount","current","position","componentDidUpdate","prevProps","editing","render","onMouseEnter","onMouseLeave","onMouseOver","onClickOutside","onFocusOutside","isMobile","renderInput","CustomComboBoxDataTids","comboBoxView","root","setRootNode","align","borderless","disabled","error","onInputFocus","onInputClick","onInputKeyDown","warning","refInputLikeText","leftIcon","inputMode","renderValue","size","maxLength","undefined","Component","__KONTUR_REACT_UI__","ComboBoxRequestStatus","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { DropdownContainer, DropdownContainerProps } from '../DropdownContainer';\nimport { Input, InputIconType, InputProps } from '../../components/Input';\nimport { InputLikeText } from '../InputLikeText';\nimport { Menu } from '../Menu';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { RenderLayer } from '../RenderLayer';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ArrowChevronDownIcon } from '../icons/16px';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../MobilePopup';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, getRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\nimport { CustomComboBoxDataTids } from './CustomComboBox';\n\ninterface ComboBoxViewProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n editing?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n items?: Nullable<T[]>;\n loading?: boolean;\n menuAlign?: 'left' | 'right';\n opened?: boolean;\n drawArrow?: boolean;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n textValue?: string;\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: string | number;\n maxLength?: number;\n maxMenuHeight?: number | string;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n\n onValueChange?: (value: T) => void;\n onClickOutside?: (e: Event) => void;\n onFocus?: () => void;\n onFocusOutside?: () => void;\n onInputBlur?: () => void;\n onInputValueChange?: (value: string) => void;\n onInputFocus?: () => void;\n onInputClick?: () => void;\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderValue?: (item: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n refInput?: (input: Nullable<Input>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\n}\n\ninterface ComboBoxViewState {\n isMobileOpened: boolean;\n}\n\ntype DefaultProps<T> = Required<\n Pick<\n ComboBoxViewProps<T>,\n | 'renderItem'\n | 'renderValue'\n | 'renderAddButton'\n | 'repeatRequest'\n | 'requestStatus'\n | 'onClickOutside'\n | 'onFocusOutside'\n | 'size'\n | 'width'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>, ComboBoxViewState> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n\n public static defaultProps: DefaultProps<unknown> = {\n renderItem: (item: any) => item,\n renderValue: (item: any) => item,\n renderAddButton: () => null,\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n onClickOutside: () => {\n /**/\n },\n onFocusOutside: () => {\n /**/\n },\n size: 'small',\n width: 250,\n };\n\n private getProps = createPropsGetter(ComboBoxView.defaultProps);\n\n private input: Nullable<Input>;\n private setRootNode!: TSetRootNode;\n private mobileInput: Nullable<Input> = null;\n private isMobileLayout!: boolean;\n private dropdownContainerRef = React.createRef<DropdownContainer>();\n\n public componentDidMount() {\n if (this.props.autoFocus && this.props.onFocus) {\n this.props.onFocus();\n }\n this.props.opened && this.dropdownContainerRef.current?.position();\n }\n\n public state: ComboBoxViewState = {\n isMobileOpened: false,\n };\n\n public componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n const { onMouseEnter, onMouseLeave, onMouseOver, opened } = this.props;\n const { onClickOutside, onFocusOutside, width } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n\n const input = this.renderInput();\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n data-tid={CustomComboBoxDataTids.comboBoxView}\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n ref={this.setRootNode}\n >\n {input}\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getComboBoxMenu = () => {\n const { items, loading, opened, refMenu, maxMenuHeight, renderTotalCount, renderNotFound, totalCount } = this.props;\n\n const { repeatRequest, requestStatus, renderItem, itemWrapper } = this.getProps();\n return (\n <ComboBoxMenu\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={this.handleItemSelect}\n opened={opened}\n refMenu={refMenu}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n itemWrapper={itemWrapper}\n renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n isMobile={this.isMobileLayout}\n />\n );\n };\n\n private renderMenu = () => {\n const { menuAlign, opened, menuPos } = this.props;\n\n return (\n opened && (\n <DropdownContainer\n menuPos={menuPos}\n align={menuAlign}\n getParent={this.getParent}\n offsetY={1}\n disablePortal={this.props.disablePortal}\n ref={this.dropdownContainerRef}\n >\n {this.getComboBoxMenu()}\n </DropdownContainer>\n )\n );\n };\n\n private renderMobileMenu = () => {\n let rightIcon = null;\n\n const { loading, items } = this.props;\n if (loading && items && !!items.length) {\n rightIcon = this.renderSpinner();\n }\n\n const inputProps: InputProps = {\n autoFocus: true,\n width: '100%',\n onFocus: this.props.onFocus,\n onValueChange: this.props.onInputValueChange,\n value: this.props.textValue,\n placeholder: this.props.placeholder,\n rightIcon,\n };\n\n return (\n <MobilePopup\n headerChildComponent={<Input ref={this.refMobileInput} {...inputProps} />}\n useFullHeight\n onCloseRequest={this.handleCloseMobile}\n opened={this.state.isMobileOpened}\n >\n {this.getComboBoxMenu()}\n </MobilePopup>\n );\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n if (this.props.onInputBlur) {\n this.props.onInputBlur();\n }\n };\n\n private getParent = () => {\n return getRootNode(this);\n };\n\n private renderAddButton = (): React.ReactNode => {\n return this.getProps().renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\n const isMobile = this.isMobileLayout;\n\n const {\n align,\n borderless,\n disabled,\n editing,\n error,\n onFocus,\n onInputBlur,\n onInputValueChange,\n onInputFocus,\n onInputClick,\n onInputKeyDown,\n placeholder,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n } = this.props;\n\n const { renderValue, size } = this.getProps();\n\n const rightIcon = this.getRightIcon();\n\n if (editing) {\n return (\n <Input\n align={align}\n borderless={borderless}\n disabled={disabled}\n error={error}\n maxLength={this.props.maxLength}\n onBlur={isMobile ? undefined : onInputBlur}\n onValueChange={onInputValueChange}\n onFocus={isMobile ? this.handleFocusMobile : onInputFocus}\n onClick={isMobile ? this.handleFocusMobile : onInputClick}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n value={textValue || ''}\n onKeyDown={onInputKeyDown}\n placeholder={placeholder}\n width=\"100%\"\n size={size}\n ref={this.refInput}\n warning={warning}\n inputMode={inputMode}\n />\n );\n }\n\n return (\n <InputLikeText\n align={align}\n borderless={borderless}\n error={error}\n onFocus={onFocus}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n disabled={disabled}\n warning={warning}\n placeholder={placeholder}\n size={size}\n width=\"100%\"\n ref={refInputLikeText}\n >\n {isNonNullable(value) && renderValue ? renderValue(value) : null}\n </InputLikeText>\n );\n }\n\n private handleFocusMobile = () => {\n this.setState({\n isMobileOpened: true,\n });\n\n if (this.mobileInput) {\n this.mobileInput.focus();\n }\n };\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\n }\n\n if (this.isMobileLayout) {\n this.handleCloseMobile();\n }\n };\n\n private refInput = (input: Nullable<Input>) => {\n if (this.props.refInput) {\n this.props.refInput(input);\n }\n this.input = input;\n };\n\n private renderSpinner = () => (\n <span className={styles.spinnerWrapper()}>\n <Spinner type=\"mini\" caption=\"\" dimmed />\n </span>\n );\n\n private getRightIcon = () => {\n const { loading, items, drawArrow, rightIcon } = this.props;\n\n if (loading && items && !!items.length) {\n return this.renderSpinner();\n }\n\n if (rightIcon || drawArrow) {\n return <span className={styles.rightIconWrapper()}>{rightIcon ?? <ArrowChevronDownIcon />}</span>;\n }\n\n return null;\n };\n\n private refMobileInput = (input: Nullable<Input>) => {\n this.mobileInput = input;\n };\n}\n"]}
1
+ {"version":3,"sources":["ComboBoxView.tsx"],"names":["ComboBoxView","responsiveLayout","rootNode","getProps","defaultProps","mobileInput","dropdownContainerRef","React","createRef","state","isMobileOpened","getComboBoxMenu","props","items","loading","opened","refMenu","maxMenuHeight","renderTotalCount","renderNotFound","totalCount","repeatRequest","requestStatus","renderItem","itemWrapper","handleItemSelect","renderAddButton","isMobileLayout","renderMenu","menuAlign","menuPos","getParent","disablePortal","renderMobileMenu","rightIcon","length","renderSpinner","inputProps","autoFocus","width","onFocus","onValueChange","onInputValueChange","value","textValue","placeholder","refMobileInput","handleCloseMobile","setState","onInputBlur","handleFocusMobile","focus","item","refInput","input","styles","spinnerWrapper","getRightIcon","drawArrow","rightIconWrapper","componentDidMount","current","position","componentDidUpdate","prevProps","editing","render","onMouseEnter","onMouseLeave","onMouseOver","onClickOutside","onFocusOutside","isMobile","renderInput","CustomComboBoxDataTids","comboBoxView","root","setRootNode","align","borderless","disabled","error","onInputFocus","onInputClick","onInputKeyDown","warning","refInputLikeText","leftIcon","inputMode","renderValue","size","maxLength","undefined","Component","__KONTUR_REACT_UI__","ComboBoxRequestStatus","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { DropdownContainer, DropdownContainerProps } from '../DropdownContainer';\nimport { Input, InputIconType, InputProps } from '../../components/Input';\nimport { InputLikeText } from '../InputLikeText';\nimport { Menu } from '../Menu';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { RenderLayer } from '../RenderLayer';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ArrowChevronDownIcon } from '../icons/16px';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../MobilePopup';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, getRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\nimport { CustomComboBoxDataTids } from './CustomComboBox';\n\ninterface ComboBoxViewProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n editing?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n items?: Nullable<T[]>;\n loading?: boolean;\n menuAlign?: 'left' | 'right';\n opened?: boolean;\n drawArrow?: boolean;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n textValue?: string;\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: string | number;\n maxLength?: number;\n maxMenuHeight?: number | string;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n\n onValueChange?: (value: T) => void;\n onClickOutside?: (e: Event) => void;\n onFocus?: () => void;\n onFocusOutside?: () => void;\n onInputBlur?: () => void;\n onInputValueChange?: (value: string) => void;\n onInputFocus?: () => void;\n onInputClick?: () => void;\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderValue?: (item: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n refInput?: (input: Nullable<Input>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\n}\n\ninterface ComboBoxViewState {\n isMobileOpened: boolean;\n}\n\ntype DefaultProps<T> = Required<\n Pick<\n ComboBoxViewProps<T>,\n | 'renderItem'\n | 'renderValue'\n | 'renderAddButton'\n | 'repeatRequest'\n | 'requestStatus'\n | 'onClickOutside'\n | 'onFocusOutside'\n | 'size'\n | 'width'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>, ComboBoxViewState> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n\n public static defaultProps: DefaultProps<unknown> = {\n renderItem: (item: any) => item,\n renderValue: (item: any) => item,\n renderAddButton: () => null,\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n onClickOutside: () => {\n /**/\n },\n onFocusOutside: () => {\n /**/\n },\n size: 'small',\n width: 250,\n };\n\n private getProps = createPropsGetter(ComboBoxView.defaultProps);\n\n private input: Nullable<Input>;\n private setRootNode!: TSetRootNode;\n private mobileInput: Nullable<Input> = null;\n private isMobileLayout!: boolean;\n private dropdownContainerRef = React.createRef<DropdownContainer>();\n\n public componentDidMount() {\n if (this.props.autoFocus && this.props.onFocus) {\n this.props.onFocus();\n }\n this.props.opened && this.dropdownContainerRef.current?.position();\n }\n\n public state: ComboBoxViewState = {\n isMobileOpened: false,\n };\n\n public componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n const { onMouseEnter, onMouseLeave, onMouseOver, opened } = this.props;\n const { onClickOutside, onFocusOutside, width } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n\n const input = this.renderInput();\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n data-tid={CustomComboBoxDataTids.comboBoxView}\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n ref={this.setRootNode}\n >\n {input}\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getComboBoxMenu = () => {\n const { items, loading, opened, refMenu, maxMenuHeight, renderTotalCount, renderNotFound, totalCount } = this.props;\n\n const { repeatRequest, requestStatus, renderItem, itemWrapper } = this.getProps();\n return (\n <ComboBoxMenu\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={this.handleItemSelect}\n opened={opened}\n refMenu={refMenu}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n itemWrapper={itemWrapper}\n renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n isMobile={this.isMobileLayout}\n />\n );\n };\n\n private renderMenu = () => {\n const { menuAlign, opened, menuPos } = this.props;\n\n return (\n opened && (\n <DropdownContainer\n menuPos={menuPos}\n align={menuAlign}\n getParent={this.getParent}\n offsetY={1}\n disablePortal={this.props.disablePortal}\n ref={this.dropdownContainerRef}\n >\n {this.getComboBoxMenu()}\n </DropdownContainer>\n )\n );\n };\n\n private renderMobileMenu = () => {\n let rightIcon = null;\n\n const { loading, items } = this.props;\n if (loading && items && !!items.length) {\n rightIcon = this.renderSpinner();\n }\n\n const inputProps: InputProps = {\n autoFocus: true,\n width: '100%',\n onFocus: this.props.onFocus,\n onValueChange: this.props.onInputValueChange,\n value: this.props.textValue,\n placeholder: this.props.placeholder,\n rightIcon,\n };\n\n return (\n <MobilePopup\n headerChildComponent={<Input ref={this.refMobileInput} {...inputProps} />}\n onCloseRequest={this.handleCloseMobile}\n opened={this.state.isMobileOpened}\n >\n {this.getComboBoxMenu()}\n </MobilePopup>\n );\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n if (this.props.onInputBlur) {\n this.props.onInputBlur();\n }\n };\n\n private getParent = () => {\n return getRootNode(this);\n };\n\n private renderAddButton = (): React.ReactNode => {\n return this.getProps().renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\n const isMobile = this.isMobileLayout;\n\n const {\n align,\n borderless,\n disabled,\n editing,\n error,\n onFocus,\n onInputBlur,\n onInputValueChange,\n onInputFocus,\n onInputClick,\n onInputKeyDown,\n placeholder,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n } = this.props;\n\n const { renderValue, size } = this.getProps();\n\n const rightIcon = this.getRightIcon();\n\n if (editing) {\n return (\n <Input\n align={align}\n borderless={borderless}\n disabled={disabled}\n error={error}\n maxLength={this.props.maxLength}\n onBlur={isMobile ? undefined : onInputBlur}\n onValueChange={onInputValueChange}\n onFocus={isMobile ? this.handleFocusMobile : onInputFocus}\n onClick={isMobile ? this.handleFocusMobile : onInputClick}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n value={textValue || ''}\n onKeyDown={onInputKeyDown}\n placeholder={placeholder}\n width=\"100%\"\n size={size}\n ref={this.refInput}\n warning={warning}\n inputMode={inputMode}\n />\n );\n }\n\n return (\n <InputLikeText\n align={align}\n borderless={borderless}\n error={error}\n onFocus={onFocus}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n disabled={disabled}\n warning={warning}\n placeholder={placeholder}\n size={size}\n width=\"100%\"\n ref={refInputLikeText}\n >\n {isNonNullable(value) && renderValue ? renderValue(value) : null}\n </InputLikeText>\n );\n }\n\n private handleFocusMobile = () => {\n this.setState({\n isMobileOpened: true,\n });\n\n if (this.mobileInput) {\n this.mobileInput.focus();\n }\n };\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\n }\n\n if (this.isMobileLayout) {\n this.handleCloseMobile();\n }\n };\n\n private refInput = (input: Nullable<Input>) => {\n if (this.props.refInput) {\n this.props.refInput(input);\n }\n this.input = input;\n };\n\n private renderSpinner = () => (\n <span className={styles.spinnerWrapper()}>\n <Spinner type=\"mini\" caption=\"\" dimmed />\n </span>\n );\n\n private getRightIcon = () => {\n const { loading, items, drawArrow, rightIcon } = this.props;\n\n if (loading && items && !!items.length) {\n return this.renderSpinner();\n }\n\n if (rightIcon || drawArrow) {\n return <span className={styles.rightIconWrapper()}>{rightIcon ?? <ArrowChevronDownIcon />}</span>;\n }\n\n return null;\n };\n\n private refMobileInput = (input: Nullable<Input>) => {\n this.mobileInput = input;\n };\n}\n"]}
@@ -28,6 +28,7 @@ export declare class Menu extends React.Component<MenuProps, MenuState> {
28
28
  };
29
29
  private theme;
30
30
  private scrollContainer;
31
+ private isMobileLayout;
31
32
  private highlighted;
32
33
  private unmounted;
33
34
  private setRootNode;
@@ -1,5 +1,6 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.MenuDataTids = exports.Menu = void 0;var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
 
3
+ var _decorator = require("../../components/ResponsiveLayout/decorator");
3
4
  var _utils = require("../../lib/utils");
4
5
  var _ScrollContainer = require("../../components/ScrollContainer");
5
6
 
@@ -40,7 +41,8 @@ var MenuDataTids = {
40
41
 
41
42
 
42
43
 
43
- Menu = (0, _rootNode2.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Menu, _React$Component);function Menu() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
44
+
45
+ Menu = (0, _decorator.responsiveLayout)(_class = (0, _rootNode2.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Menu, _React$Component);function Menu() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
44
46
 
45
47
 
46
48
 
@@ -60,6 +62,7 @@ Menu = (0, _rootNode2.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
60
62
 
61
63
 
62
64
 
65
+
63
66
  unmounted = false;_this.
64
67
 
65
68
 
@@ -135,6 +138,15 @@ Menu = (0, _rootNode2.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
135
138
 
136
139
 
137
140
 
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
138
150
 
139
151
 
140
152
 
@@ -256,7 +268,7 @@ Menu = (0, _rootNode2.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
256
268
  * @public
257
269
  */;_proto.reset = function reset() {this.setState({ highlightedIndex: -1 });} /**
258
270
  * @public
259
- */;_proto.hasHighlightedItem = function hasHighlightedItem() {return this.state.highlightedIndex !== -1;};_proto.highlightItem = function highlightItem(index) {this.highlight(index);};_proto.renderMain = function renderMain() {var _cx;if (this.isEmpty()) {return null;}var _this$getProps = this.getProps(),hasShadow = _this$getProps.hasShadow,maxHeight = _this$getProps.maxHeight,preventWindowScroll = _this$getProps.preventWindowScroll;return /*#__PURE__*/_react.default.createElement("div", { "data-tid": MenuDataTids.root, className: (0, _Emotion.cx)(getAlignRightClass(this.props), (_cx = {}, _cx[_Menu.styles.root(this.theme)] = true, _cx[_Menu.styles.shadow(this.theme)] = hasShadow, _cx)), style: getStyle(this.props), ref: this.setRootNode }, /*#__PURE__*/_react.default.createElement(_ScrollContainer.ScrollContainer, { ref: this.refScrollContainer, maxHeight: maxHeight, preventWindowScroll: preventWindowScroll, disabled: this.props.disableScrollContainer }, /*#__PURE__*/_react.default.createElement("div", { className: _Menu.styles.scrollContainer(this.theme) }, this.getChildList())));};_proto.refHighlighted = function refHighlighted(originalRef, menuItem) {this.highlighted = menuItem;if (typeof originalRef === 'function') {originalRef(menuItem);}};_proto.select = function select(index, shouldHandleHref, event) {var item = childrenToArray(this.props.children)[index];if ((0, _isActiveElement.isActiveElement)(item)) {if (shouldHandleHref && item.props.href) {if (item.props.target) {window.open(item.props.href, item.props.target);} else {location.href = item.props.href;}}if (item.props.onClick) {item.props.onClick(event);}if (this.props.onItemClick) {this.props.onItemClick();}return true;}return false;};_proto.move = function move(step) {var _this3 = this;if (this.unmounted) {// NOTE workaround, because `ComboBox` call `process.nextTick` in reducer
271
+ */;_proto.hasHighlightedItem = function hasHighlightedItem() {return this.state.highlightedIndex !== -1;};_proto.highlightItem = function highlightItem(index) {this.highlight(index);};_proto.renderMain = function renderMain() {var _cx, _cx2;if (this.isEmpty()) {return null;}var _this$getProps = this.getProps(),hasShadow = _this$getProps.hasShadow,maxHeight = _this$getProps.maxHeight,preventWindowScroll = _this$getProps.preventWindowScroll;var isMobile = this.isMobileLayout;return /*#__PURE__*/_react.default.createElement("div", { "data-tid": MenuDataTids.root, className: (0, _Emotion.cx)(getAlignRightClass(this.props), (_cx = {}, _cx[_Menu.styles.root(this.theme)] = true, _cx[_Menu.styles.rootMobile(this.theme)] = isMobile, _cx[_Menu.styles.shadow(this.theme)] = hasShadow && !isMobile, _cx)), style: getStyle(this.props), ref: this.setRootNode }, /*#__PURE__*/_react.default.createElement(_ScrollContainer.ScrollContainer, { ref: this.refScrollContainer, maxHeight: maxHeight, preventWindowScroll: preventWindowScroll, disabled: this.props.disableScrollContainer }, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)((_cx2 = {}, _cx2[_Menu.styles.scrollContainer(this.theme)] = true, _cx2[_Menu.styles.scrollContainerMobile(this.theme)] = isMobile, _cx2)) }, this.getChildList())));};_proto.refHighlighted = function refHighlighted(originalRef, menuItem) {this.highlighted = menuItem;if (typeof originalRef === 'function') {originalRef(menuItem);}};_proto.select = function select(index, shouldHandleHref, event) {var item = childrenToArray(this.props.children)[index];if ((0, _isActiveElement.isActiveElement)(item)) {if (shouldHandleHref && item.props.href) {if (item.props.target) {window.open(item.props.href, item.props.target);} else {location.href = item.props.href;}}if (item.props.onClick) {item.props.onClick(event);}if (this.props.onItemClick) {this.props.onItemClick();}return true;}return false;};_proto.move = function move(step) {var _this3 = this;if (this.unmounted) {// NOTE workaround, because `ComboBox` call `process.nextTick` in reducer
260
272
  return;}var children = childrenToArray(this.props.children);var activeElements = children.filter(_isActiveElement.isActiveElement);if (!activeElements.length) {return;
261
273
  }
262
274
  var index = this.state.highlightedIndex;var _loop = function _loop() {
@@ -290,7 +302,7 @@ Menu = (0, _rootNode2.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
290
302
  isEmpty = function isEmpty() {
291
303
  var children = this.props.children;
292
304
  return !children || !childrenToArray(children).filter(_utils.isNonNullable).length;
293
- };return Menu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Menu', _class2.defaultProps = { align: 'left', width: 'auto', maxHeight: 300, hasShadow: true, preventWindowScroll: true }, _temp)) || _class;exports.Menu = Menu;
305
+ };return Menu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Menu', _class2.defaultProps = { align: 'left', width: 'auto', maxHeight: 300, hasShadow: true, preventWindowScroll: true }, _temp)) || _class) || _class;exports.Menu = Menu;
294
306
 
295
307
 
296
308
  function childrenToArray(children) {
@@ -318,11 +330,11 @@ var getStyle = function getStyle(props) {
318
330
  };
319
331
 
320
332
  var getAlignRightClass = function getAlignRightClass(props) {
321
- if (props.align === 'right') {var _cx2;
322
- return (0, _Emotion.cx)((_cx2 = {}, _cx2[
323
- _Menu.styles.alignRight()] = !_client.isIE11, _cx2[
324
- _Menu.styles.alignRightIE11()] = _client.isIE11, _cx2[
325
- _Menu.styles.alignRightIE11FixAutoWidth()] = _client.isIE11 && props.width === 'auto', _cx2));
333
+ if (props.align === 'right') {var _cx3;
334
+ return (0, _Emotion.cx)((_cx3 = {}, _cx3[
335
+ _Menu.styles.alignRight()] = !_client.isIE11, _cx3[
336
+ _Menu.styles.alignRightIE11()] = _client.isIE11, _cx3[
337
+ _Menu.styles.alignRightIE11FixAutoWidth()] = _client.isIE11 && props.width === 'auto', _cx3));
326
338
 
327
339
  }
328
340
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Menu.tsx"],"names":["MenuDataTids","root","Menu","rootNode","getProps","defaultProps","state","highlightedIndex","unmounted","getChildList","enableIconPadding","React","Children","toArray","props","children","some","x","isValidElement","icon","map","child","index","modifiedChild","highlight","ref","refHighlighted","bind","cloneElement","onClick","select","onMouseEnter","onMouseLeave","unhighlight","refScrollContainer","scrollContainer","scrollToSelected","highlighted","HTMLElement","scrollTo","scrollToTop","scrollToBottom","setState","componentWillUnmount","render","theme","renderMain","up","move","down","enter","event","reset","hasHighlightedItem","highlightItem","isEmpty","hasShadow","maxHeight","preventWindowScroll","getAlignRightClass","styles","shadow","getStyle","setRootNode","disableScrollContainer","originalRef","menuItem","shouldHandleHref","item","childrenToArray","href","target","window","open","location","onItemClick","step","activeElements","filter","isActiveElement","length","indexOf","isNonNullable","Component","__KONTUR_REACT_UI__","align","width","ret","forEach","push","maxWidth","minWidth","alignRight","isIE11","alignRightIE11","alignRightIE11FixAutoWidth"],"mappings":"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","sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { ScrollContainer } from '../../components/ScrollContainer';\nimport { MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { addIconPaddingIfPartOfMenu } from '../InternalMenu/addIconPaddingIfPartOfMenu';\nimport { isIE11 } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Menu.styles';\nimport { isActiveElement } from './isActiveElement';\n\nexport interface MenuProps {\n children: React.ReactNode;\n hasShadow?: boolean;\n maxHeight?: number | string;\n onItemClick?: () => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n}\n\nexport interface MenuState {\n highlightedIndex: number;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<Pick<MenuProps, 'align' | 'width' | 'maxHeight' | 'hasShadow' | 'preventWindowScroll'>>;\n\n@rootNode\nexport class Menu extends React.Component<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state = {\n highlightedIndex: -1,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private unmounted = false;\n private setRootNode!: TSetRootNode;\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n return this.select(this.state.highlightedIndex, true, event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.setState({ highlightedIndex: -1 });\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return this.state.highlightedIndex !== -1;\n }\n\n public highlightItem(index: number) {\n this.highlight(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasShadow, maxHeight, preventWindowScroll } = this.getProps();\n\n return (\n <div\n data-tid={MenuDataTids.root}\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: hasShadow,\n })}\n style={getStyle(this.props)}\n ref={this.setRootNode}\n >\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n disabled={this.props.disableScrollContainer}\n >\n <div className={styles.scrollContainer(this.theme)}>{this.getChildList()}</div>\n </ScrollContainer>\n </div>\n );\n }\n\n private getChildList = () => {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n return React.Children.map(this.props.children, (child, index) => {\n if (!child) {\n return child;\n }\n\n if (typeof child === 'string' || typeof child === 'number') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n if (highlight && typeof modifiedChild.ref !== 'string') {\n ref = this.refHighlighted.bind(this, modifiedChild.ref);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: this.highlight.bind(this, index),\n onMouseLeave: this.unhighlight,\n });\n }\n\n return modifiedChild;\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: ((menuItem: MenuItem | null) => any) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n const rootNode = getRootNode(this.highlighted);\n // TODO: Remove this check once IF-647 is resolved\n if (rootNode instanceof HTMLElement) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick();\n }\n return true;\n }\n return false;\n }\n\n private highlight = (index: number) => {\n this.setState({ highlightedIndex: index });\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n\n const children = childrenToArray(this.props.children);\n const activeElements = children.filter(isActiveElement);\n if (!activeElements.length) {\n return;\n }\n let index = this.state.highlightedIndex;\n do {\n index += step;\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n this.setState({ highlightedIndex: index }, () => {\n switch (activeElements.indexOf(child)) {\n case 0:\n this.scrollToTop();\n break;\n case activeElements.length - 1:\n this.scrollToBottom();\n break;\n default:\n this.scrollToSelected();\n }\n });\n return;\n }\n } while (index !== this.state.highlightedIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: props.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: props.maxHeight,\n };\n};\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"]}
1
+ {"version":3,"sources":["Menu.tsx"],"names":["MenuDataTids","root","Menu","responsiveLayout","rootNode","getProps","defaultProps","state","highlightedIndex","unmounted","getChildList","enableIconPadding","React","Children","toArray","props","children","some","x","isValidElement","icon","map","child","index","modifiedChild","highlight","ref","refHighlighted","bind","cloneElement","onClick","select","onMouseEnter","onMouseLeave","unhighlight","refScrollContainer","scrollContainer","scrollToSelected","highlighted","HTMLElement","scrollTo","scrollToTop","scrollToBottom","setState","componentWillUnmount","render","theme","renderMain","up","move","down","enter","event","reset","hasHighlightedItem","highlightItem","isEmpty","hasShadow","maxHeight","preventWindowScroll","isMobile","isMobileLayout","getAlignRightClass","styles","rootMobile","shadow","getStyle","setRootNode","disableScrollContainer","scrollContainerMobile","originalRef","menuItem","shouldHandleHref","item","childrenToArray","href","target","window","open","location","onItemClick","step","activeElements","filter","isActiveElement","length","indexOf","isNonNullable","Component","__KONTUR_REACT_UI__","align","width","ret","forEach","push","maxWidth","minWidth","alignRight","isIE11","alignRightIE11","alignRightIE11FixAutoWidth"],"mappings":"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","sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable } from '../../lib/utils';\nimport { ScrollContainer } from '../../components/ScrollContainer';\nimport { MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { addIconPaddingIfPartOfMenu } from '../InternalMenu/addIconPaddingIfPartOfMenu';\nimport { isIE11 } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Menu.styles';\nimport { isActiveElement } from './isActiveElement';\n\nexport interface MenuProps {\n children: React.ReactNode;\n hasShadow?: boolean;\n maxHeight?: number | string;\n onItemClick?: () => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n}\n\nexport interface MenuState {\n highlightedIndex: number;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<Pick<MenuProps, 'align' | 'width' | 'maxHeight' | 'hasShadow' | 'preventWindowScroll'>>;\n\n@responsiveLayout\n@rootNode\nexport class Menu extends React.Component<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state = {\n highlightedIndex: -1,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private highlighted: Nullable<MenuItem>;\n private unmounted = false;\n private setRootNode!: TSetRootNode;\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n return this.select(this.state.highlightedIndex, true, event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.setState({ highlightedIndex: -1 });\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return this.state.highlightedIndex !== -1;\n }\n\n public highlightItem(index: number) {\n this.highlight(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasShadow, maxHeight, preventWindowScroll } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n return (\n <div\n data-tid={MenuDataTids.root}\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.shadow(this.theme)]: hasShadow && !isMobile,\n })}\n style={getStyle(this.props)}\n ref={this.setRootNode}\n >\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n disabled={this.props.disableScrollContainer}\n >\n <div\n className={cx({\n [styles.scrollContainer(this.theme)]: true,\n [styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n >\n {this.getChildList()}\n </div>\n </ScrollContainer>\n </div>\n );\n }\n\n private getChildList = () => {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n return React.Children.map(this.props.children, (child, index) => {\n if (!child) {\n return child;\n }\n\n if (typeof child === 'string' || typeof child === 'number') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n if (highlight && typeof modifiedChild.ref !== 'string') {\n ref = this.refHighlighted.bind(this, modifiedChild.ref);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: this.highlight.bind(this, index),\n onMouseLeave: this.unhighlight,\n });\n }\n\n return modifiedChild;\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: ((menuItem: MenuItem | null) => any) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n const rootNode = getRootNode(this.highlighted);\n // TODO: Remove this check once IF-647 is resolved\n if (rootNode instanceof HTMLElement) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick();\n }\n return true;\n }\n return false;\n }\n\n private highlight = (index: number) => {\n this.setState({ highlightedIndex: index });\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n\n const children = childrenToArray(this.props.children);\n const activeElements = children.filter(isActiveElement);\n if (!activeElements.length) {\n return;\n }\n let index = this.state.highlightedIndex;\n do {\n index += step;\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n this.setState({ highlightedIndex: index }, () => {\n switch (activeElements.indexOf(child)) {\n case 0:\n this.scrollToTop();\n break;\n case activeElements.length - 1:\n this.scrollToBottom();\n break;\n default:\n this.scrollToSelected();\n }\n });\n return;\n }\n } while (index !== this.state.highlightedIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: props.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: props.maxHeight,\n };\n};\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"]}
@@ -1,9 +1,11 @@
1
1
  import { Theme } from '../../lib/theming/Theme';
2
2
  export declare const styles: {
3
3
  root(t: Theme): string;
4
+ rootMobile(t: Theme): string;
4
5
  alignRight(): string;
5
6
  alignRightIE11(): string;
6
7
  alignRightIE11FixAutoWidth(): string;
7
8
  scrollContainer(t: Theme): string;
9
+ scrollContainerMobile(t: Theme): string;
8
10
  shadow(t: Theme): string;
9
11
  };
@@ -1,4 +1,4 @@
1
- "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.styles = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.styles = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
2
2
 
3
3
 
4
4
  var styles = (0, _Emotion.memoizeStyle)({
@@ -14,34 +14,47 @@ var styles = (0, _Emotion.memoizeStyle)({
14
14
 
15
15
  },
16
16
 
17
+ rootMobile: function rootMobile(t) {
18
+ return (0, _Emotion.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n border-radius: 0;\n padding: 0 ", ";\n "])),
19
+
20
+ t.mobileMenuPaddingX);
21
+
22
+ },
23
+
17
24
  alignRight: function alignRight() {
18
- return (0, _Emotion.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n flex: 1 1 100%;\n "])));
25
+ return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n flex: 1 1 100%;\n "])));
19
26
 
20
27
 
21
28
  },
22
29
 
23
30
  alignRightIE11: function alignRightIE11() {
24
- return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n float: right;\n width: 100%;\n "])));
31
+ return (0, _Emotion.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["\n float: right;\n width: 100%;\n "])));
25
32
 
26
33
 
27
34
 
28
35
  },
29
36
 
30
37
  alignRightIE11FixAutoWidth: function alignRightIE11FixAutoWidth() {
31
- return (0, _Emotion.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["\n box-sizing: border-box !important; // override root styles\n overflow: hidden !important; // override root styles\n "])));
38
+ return (0, _Emotion.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["\n box-sizing: border-box !important; // override root styles\n overflow: hidden !important; // override root styles\n "])));
32
39
 
33
40
 
34
41
 
35
42
  },
36
43
 
37
44
  scrollContainer: function scrollContainer(t) {
38
- return (0, _Emotion.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["\n padding: ", " 0;\n "])),
45
+ return (0, _Emotion.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteralLoose2.default)(["\n padding: ", " 0;\n "])),
39
46
  t.menuPaddingY);
40
47
 
41
48
  },
42
49
 
50
+ scrollContainerMobile: function scrollContainerMobile(t) {
51
+ return (0, _Emotion.css)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteralLoose2.default)(["\n padding: ", " 0;\n "])),
52
+ t.mobileMenuPaddingY);
53
+
54
+ },
55
+
43
56
  shadow: function shadow(t) {
44
- return (0, _Emotion.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteralLoose2.default)(["\n border: ", ";\n box-shadow: ", ";\n "])),
57
+ return (0, _Emotion.css)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteralLoose2.default)(["\n border: ", ";\n box-shadow: ", ";\n "])),
45
58
  t.menuBorder,
46
59
  t.menuShadow);
47
60
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Menu.styles.ts"],"names":["styles","root","t","css","menuBgDefault","menuBorderRadius","menuPaddingX","menuOffsetY","alignRight","alignRightIE11","alignRightIE11FixAutoWidth","scrollContainer","menuPaddingY","shadow","menuBorder","menuShadow"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,eAAOC,YAAP;AACgBD,IAAAA,CAAC,CAACE,aADlB;AAEmBF,IAAAA,CAAC,CAACG,gBAFrB;;;AAKeH,IAAAA,CAAC,CAACI,YALjB;AAMYJ,IAAAA,CAAC,CAACK,WANd;AAOmBL,IAAAA,CAAC,CAACG,gBAPrB;;AASD,GAXgC;;AAajCG,EAAAA,UAbiC,wBAapB;AACX,eAAOL,YAAP;;;AAGD,GAjBgC;;AAmBjCM,EAAAA,cAnBiC,4BAmBhB;AACf,eAAON,YAAP;;;;AAID,GAxBgC;;AA0BjCO,EAAAA,0BA1BiC,wCA0BJ;AAC3B,eAAOP,YAAP;;;;AAID,GA/BgC;;AAiCjCQ,EAAAA,eAjCiC,2BAiCjBT,CAjCiB,EAiCP;AACxB,eAAOC,YAAP;AACaD,IAAAA,CAAC,CAACU,YADf;;AAGD,GArCgC;;AAuCjCC,EAAAA,MAvCiC,kBAuC1BX,CAvC0B,EAuChB;AACf,eAAOC,YAAP;AACYD,IAAAA,CAAC,CAACY,UADd;AAEgBZ,IAAAA,CAAC,CAACa,UAFlB;;AAID,GA5CgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n background: ${t.menuBgDefault};\n border-radius: ${t.menuBorderRadius};\n box-sizing: content-box;\n overflow: auto;\n padding: 0 ${t.menuPaddingX};\n margin: ${t.menuOffsetY} 0;\n border-radius: ${t.menuBorderRadius};\n `;\n },\n\n alignRight() {\n return css`\n flex: 1 1 100%;\n `;\n },\n\n alignRightIE11() {\n return css`\n float: right;\n width: 100%;\n `;\n },\n\n alignRightIE11FixAutoWidth() {\n return css`\n box-sizing: border-box !important; // override root styles\n overflow: hidden !important; // override root styles\n `;\n },\n\n scrollContainer(t: Theme) {\n return css`\n padding: ${t.menuPaddingY} 0;\n `;\n },\n\n shadow(t: Theme) {\n return css`\n border: ${t.menuBorder};\n box-shadow: ${t.menuShadow};\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["Menu.styles.ts"],"names":["styles","root","t","css","menuBgDefault","menuBorderRadius","menuPaddingX","menuOffsetY","rootMobile","mobileMenuPaddingX","alignRight","alignRightIE11","alignRightIE11FixAutoWidth","scrollContainer","menuPaddingY","scrollContainerMobile","mobileMenuPaddingY","shadow","menuBorder","menuShadow"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,eAAOC,YAAP;AACgBD,IAAAA,CAAC,CAACE,aADlB;AAEmBF,IAAAA,CAAC,CAACG,gBAFrB;;;AAKeH,IAAAA,CAAC,CAACI,YALjB;AAMYJ,IAAAA,CAAC,CAACK,WANd;AAOmBL,IAAAA,CAAC,CAACG,gBAPrB;;AASD,GAXgC;;AAajCG,EAAAA,UAbiC,sBAatBN,CAbsB,EAaZ;AACnB,eAAOC,YAAP;;AAEeD,IAAAA,CAAC,CAACO,kBAFjB;;AAID,GAlBgC;;AAoBjCC,EAAAA,UApBiC,wBAoBpB;AACX,eAAOP,YAAP;;;AAGD,GAxBgC;;AA0BjCQ,EAAAA,cA1BiC,4BA0BhB;AACf,eAAOR,YAAP;;;;AAID,GA/BgC;;AAiCjCS,EAAAA,0BAjCiC,wCAiCJ;AAC3B,eAAOT,YAAP;;;;AAID,GAtCgC;;AAwCjCU,EAAAA,eAxCiC,2BAwCjBX,CAxCiB,EAwCP;AACxB,eAAOC,YAAP;AACaD,IAAAA,CAAC,CAACY,YADf;;AAGD,GA5CgC;;AA8CjCC,EAAAA,qBA9CiC,iCA8CXb,CA9CW,EA8CD;AAC9B,eAAOC,YAAP;AACaD,IAAAA,CAAC,CAACc,kBADf;;AAGD,GAlDgC;;AAoDjCC,EAAAA,MApDiC,kBAoD1Bf,CApD0B,EAoDhB;AACf,eAAOC,YAAP;AACYD,IAAAA,CAAC,CAACgB,UADd;AAEgBhB,IAAAA,CAAC,CAACiB,UAFlB;;AAID,GAzDgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n background: ${t.menuBgDefault};\n border-radius: ${t.menuBorderRadius};\n box-sizing: content-box;\n overflow: auto;\n padding: 0 ${t.menuPaddingX};\n margin: ${t.menuOffsetY} 0;\n border-radius: ${t.menuBorderRadius};\n `;\n },\n\n rootMobile(t: Theme) {\n return css`\n border-radius: 0;\n padding: 0 ${t.mobileMenuPaddingX};\n `;\n },\n\n alignRight() {\n return css`\n flex: 1 1 100%;\n `;\n },\n\n alignRightIE11() {\n return css`\n float: right;\n width: 100%;\n `;\n },\n\n alignRightIE11FixAutoWidth() {\n return css`\n box-sizing: border-box !important; // override root styles\n overflow: hidden !important; // override root styles\n `;\n },\n\n scrollContainer(t: Theme) {\n return css`\n padding: ${t.menuPaddingY} 0;\n `;\n },\n\n scrollContainerMobile(t: Theme) {\n return css`\n padding: ${t.mobileMenuPaddingY} 0;\n `;\n },\n\n shadow(t: Theme) {\n return css`\n border: ${t.menuBorder};\n box-shadow: ${t.menuShadow};\n `;\n },\n});\n"]}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { CommonProps } from '../CommonWrapper';
3
+ export interface MenuMessageProps extends CommonProps {
4
+ children: React.ReactNode;
5
+ as?: keyof JSX.IntrinsicElements;
6
+ }
7
+ export declare const MenuMessageDataTids: {
8
+ readonly root: "MenuMessage__root";
9
+ };
10
+ export declare const MenuMessage: import("../../lib/forwardRefAndName").ReactUIComponentWithRef<HTMLParagraphElement, MenuMessageProps>;
@@ -0,0 +1,42 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.MenuMessageDataTids = exports.MenuMessage = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _react = _interopRequireWildcard(require("react"));
2
+
3
+ var _forwardRefAndName = require("../../lib/forwardRefAndName");
4
+ var _ResponsiveLayout = require("../../components/ResponsiveLayout");
5
+ var _Emotion = require("../../lib/theming/Emotion");
6
+ var _ThemeContext = require("../../lib/theming/ThemeContext");
7
+
8
+
9
+ var _MenuMessage = require("./MenuMessage.styles");var _excluded = ["children", "className", "as"];function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
10
+
11
+
12
+
13
+
14
+
15
+
16
+ var MenuMessageDataTids = {
17
+ root: 'MenuMessage__root' };exports.MenuMessageDataTids = MenuMessageDataTids;
18
+
19
+
20
+ var MenuMessage = (0, _forwardRefAndName.forwardRefAndName)(
21
+ 'MenuMessage',
22
+ function (_ref) {var _cx;var children = _ref.children,className = _ref.className,_ref$as = _ref.as,Tag = _ref$as === void 0 ? 'p' : _ref$as,rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
23
+ var _useResponsiveLayout = (0, _ResponsiveLayout.useResponsiveLayout)(),isMobile = _useResponsiveLayout.isMobile;
24
+
25
+ var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);
26
+
27
+ return /*#__PURE__*/(
28
+ _react.default.createElement(Tag, (0, _extends2.default)({
29
+ "data-tid": MenuMessageDataTids.root,
30
+ className: (0, _Emotion.cx)((_cx = {}, _cx[
31
+
32
+ _MenuMessage.styles.root(theme)] = true, _cx[
33
+ _MenuMessage.styles.rootMobile(theme)] = isMobile, _cx),
34
+
35
+ className) },
36
+
37
+ rest),
38
+
39
+ children));
40
+
41
+
42
+ });exports.MenuMessage = MenuMessage;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["MenuMessage.tsx"],"names":["MenuMessageDataTids","root","MenuMessage","children","className","as","Tag","rest","isMobile","theme","ThemeContext","styles","rootMobile"],"mappings":"qYAAA;;AAEA;AACA;AACA;AACA;;;AAGA,mD;;;;;;;AAOO,IAAMA,mBAAmB,GAAG;AACjCC,EAAAA,IAAI,EAAE,mBAD2B,EAA5B,C;;;AAIA,IAAMC,WAAW,GAAG;AACzB,aADyB;AAEzB,gBAAqD,aAAlDC,QAAkD,QAAlDA,QAAkD,CAAxCC,SAAwC,QAAxCA,SAAwC,gBAA7BC,EAA6B,CAAzBC,GAAyB,wBAAnB,GAAmB,WAAXC,IAAW;AACnD,6BAAqB,4CAArB,CAAQC,QAAR,wBAAQA,QAAR;;AAEA,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;;AAEA;AACE,iCAAC,GAAD;AACE,kBAAUV,mBAAmB,CAACC,IADhC;AAEE,MAAA,SAAS,EAAE;;AAENU,0BAAOV,IAAP,CAAYQ,KAAZ,CAFM,IAEe,IAFf;AAGNE,0BAAOC,UAAP,CAAkBH,KAAlB,CAHM,IAGqBD,QAHrB;;AAKTJ,MAAAA,SALS,CAFb;;AASMG,IAAAA,IATN;;AAWGJ,IAAAA,QAXH,CADF;;;AAeD,CAtBwB,CAApB,C","sourcesContent":["import React, { useContext } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { useResponsiveLayout } from '../../components/ResponsiveLayout';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps } from '../CommonWrapper';\n\nimport { styles } from './MenuMessage.styles';\n\nexport interface MenuMessageProps extends CommonProps {\n children: React.ReactNode;\n as?: keyof JSX.IntrinsicElements;\n}\n\nexport const MenuMessageDataTids = {\n root: 'MenuMessage__root',\n} as const;\n\nexport const MenuMessage = forwardRefAndName<HTMLParagraphElement, MenuMessageProps>(\n 'MenuMessage',\n ({ children, className, as: Tag = 'p', ...rest }) => {\n const { isMobile } = useResponsiveLayout();\n\n const theme = useContext(ThemeContext);\n\n return (\n <Tag\n data-tid={MenuMessageDataTids.root}\n className={cx(\n {\n [styles.root(theme)]: true,\n [styles.rootMobile(theme)]: isMobile,\n },\n className,\n )}\n {...rest}\n >\n {children}\n </Tag>\n );\n },\n);\n"]}
@@ -0,0 +1,5 @@
1
+ import { Theme } from '../../lib/theming/Theme';
2
+ export declare const styles: {
3
+ root(t: Theme): string;
4
+ rootMobile(t: Theme): string;
5
+ };
@@ -0,0 +1,33 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.styles = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));
2
+ var _Emotion = require("../../lib/theming/Emotion");
3
+ var _MenuItem = require("../../components/MenuItem/MenuItem.styles");var _templateObject, _templateObject2;
4
+
5
+ var styles = (0, _Emotion.memoizeStyle)({
6
+ root: function root(t) {
7
+ var _getMenuItemPaddings = (0, _MenuItem.getMenuItemPaddings)({
8
+ menuItemLegacyPaddingX: t.menuItemLegacyPaddingX,
9
+ menuItemPaddingX: t.menuMessagePaddingX,
10
+ menuItemLegacyPaddingY: t.menuItemLegacyPaddingY,
11
+ menuItemPaddingY: t.menuMessagePaddingY }),paddingX = _getMenuItemPaddings.paddingX,paddingY = _getMenuItemPaddings.paddingY;
12
+
13
+
14
+ return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n margin: 0;\n padding: 0;\n\n display: ", ";\n line-height: ", ";\n font-size: ", ";\n padding: ", " ", " ", " ", ";\n color: ", ";\n background: ", ";\n "])),
15
+
16
+
17
+
18
+ t.menuMessageDisplay,
19
+ t.menuMessageLineHeight,
20
+ t.menuMessageFontSize,
21
+ t.menuMessagePaddingY, paddingX, paddingY, t.menuMessagePaddingX,
22
+ t.menuMessageTextColor,
23
+ t.menuMessageBg);
24
+
25
+ },
26
+
27
+ rootMobile: function rootMobile(t) {
28
+ return (0, _Emotion.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "])),
29
+ t.menuMessageFontSizeMobile,
30
+ t.menuMessageLineHeightMobile,
31
+ t.menuMessagePaddingMobile);
32
+
33
+ } });exports.styles = styles;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["MenuMessage.styles.ts"],"names":["styles","root","t","menuItemLegacyPaddingX","menuItemPaddingX","menuMessagePaddingX","menuItemLegacyPaddingY","menuItemPaddingY","menuMessagePaddingY","paddingX","paddingY","css","menuMessageDisplay","menuMessageLineHeight","menuMessageFontSize","menuMessageTextColor","menuMessageBg","rootMobile","menuMessageFontSizeMobile","menuMessageLineHeightMobile","menuMessagePaddingMobile"],"mappings":";AACA;AACA,qE;;AAEO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,+BAA+B,mCAAoB;AACjDC,MAAAA,sBAAsB,EAAED,CAAC,CAACC,sBADuB;AAEjDC,MAAAA,gBAAgB,EAAEF,CAAC,CAACG,mBAF6B;AAGjDC,MAAAA,sBAAsB,EAAEJ,CAAC,CAACI,sBAHuB;AAIjDC,MAAAA,gBAAgB,EAAEL,CAAC,CAACM,mBAJ6B,EAApB,CAA/B,CAAQC,QAAR,wBAAQA,QAAR,CAAkBC,QAAlB,wBAAkBA,QAAlB;;;AAOA,eAAOC,YAAP;;;;AAIaT,IAAAA,CAAC,CAACU,kBAJf;AAKiBV,IAAAA,CAAC,CAACW,qBALnB;AAMeX,IAAAA,CAAC,CAACY,mBANjB;AAOaZ,IAAAA,CAAC,CAACM,mBAPf,EAOsCC,QAPtC,EAOkDC,QAPlD,EAO8DR,CAAC,CAACG,mBAPhE;AAQWH,IAAAA,CAAC,CAACa,oBARb;AASgBb,IAAAA,CAAC,CAACc,aATlB;;AAWD,GApBgC;;AAsBjCC,EAAAA,UAtBiC,sBAsBtBf,CAtBsB,EAsBZ;AACnB,eAAOS,YAAP;AACeT,IAAAA,CAAC,CAACgB,yBADjB;AAEiBhB,IAAAA,CAAC,CAACiB,2BAFnB;AAGajB,IAAAA,CAAC,CAACkB,wBAHf;;AAKD,GA5BgC,EAAb,CAAf,C","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { getMenuItemPaddings } from '../../components/MenuItem/MenuItem.styles';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const { paddingX, paddingY } = getMenuItemPaddings({\n menuItemLegacyPaddingX: t.menuItemLegacyPaddingX,\n menuItemPaddingX: t.menuMessagePaddingX,\n menuItemLegacyPaddingY: t.menuItemLegacyPaddingY,\n menuItemPaddingY: t.menuMessagePaddingY,\n });\n\n return css`\n margin: 0;\n padding: 0;\n\n display: ${t.menuMessageDisplay};\n line-height: ${t.menuMessageLineHeight};\n font-size: ${t.menuMessageFontSize};\n padding: ${t.menuMessagePaddingY} ${paddingX} ${paddingY} ${t.menuMessagePaddingX};\n color: ${t.menuMessageTextColor};\n background: ${t.menuMessageBg};\n `;\n },\n\n rootMobile(t: Theme) {\n return css`\n font-size: ${t.menuMessageFontSizeMobile};\n line-height: ${t.menuMessageLineHeightMobile};\n padding: ${t.menuMessagePaddingMobile};\n `;\n },\n});\n"]}
@@ -0,0 +1 @@
1
+ export * from './MenuMessage';