@skbkontur/react-ui 4.1.1 → 4.1.2

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 (88) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/cjs/components/Checkbox/Checkbox.d.ts +5 -0
  3. package/cjs/components/Checkbox/Checkbox.js +29 -1
  4. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  5. package/cjs/components/Checkbox/Checkbox.styles.d.ts +1 -0
  6. package/cjs/components/Checkbox/Checkbox.styles.js +23 -17
  7. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  8. package/cjs/components/DateInput/DateInput.js +5 -1
  9. package/cjs/components/DateInput/DateInput.js.map +1 -1
  10. package/cjs/components/DateInput/helpers/InternalDateMediator.d.ts +2 -2
  11. package/cjs/components/DateInput/helpers/InternalDateMediator.js +7 -3
  12. package/cjs/components/DateInput/helpers/InternalDateMediator.js.map +1 -1
  13. package/cjs/components/DateInput/helpers/inputNumber.d.ts +1 -1
  14. package/cjs/components/DateInput/helpers/inputNumber.js +45 -12
  15. package/cjs/components/DateInput/helpers/inputNumber.js.map +1 -1
  16. package/cjs/components/Gapped/Gapped.js +2 -1
  17. package/cjs/components/Gapped/Gapped.js.map +1 -1
  18. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js +5 -7
  19. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js.map +1 -1
  20. package/cjs/components/PasswordInput/PasswordInput.d.ts +1 -1
  21. package/cjs/components/PasswordInput/PasswordInput.js +8 -10
  22. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  23. package/cjs/components/PasswordInput/PasswordInputIcon.js +5 -1
  24. package/cjs/components/PasswordInput/PasswordInputIcon.js.map +1 -1
  25. package/cjs/components/Select/Select.js +4 -4
  26. package/cjs/components/Select/Select.js.map +1 -1
  27. package/cjs/components/TokenInput/TokenInput.d.ts +10 -0
  28. package/cjs/components/TokenInput/TokenInput.js +17 -2
  29. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  30. package/cjs/internal/InternalMenu/InternalMenu.js +1 -5
  31. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  32. package/cjs/internal/MaskedInput/MaskedInput.js +4 -2
  33. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  34. package/cjs/internal/Menu/Menu.js +2 -5
  35. package/cjs/internal/Menu/Menu.js.map +1 -1
  36. package/cjs/lib/date/InternalDateGetter.d.ts +1 -1
  37. package/cjs/lib/date/InternalDateGetter.js +4 -1
  38. package/cjs/lib/date/InternalDateGetter.js.map +1 -1
  39. package/cjs/lib/date/InternalDateValidator.js +32 -22
  40. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  41. package/cjs/lib/date/types.d.ts +4 -0
  42. package/cjs/lib/date/types.js.map +1 -1
  43. package/cjs/lib/events/MouseDrag.js +5 -1
  44. package/cjs/lib/events/MouseDrag.js.map +1 -1
  45. package/components/Checkbox/Checkbox/Checkbox.js +29 -2
  46. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  47. package/components/Checkbox/Checkbox.d.ts +5 -0
  48. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +20 -17
  49. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  50. package/components/Checkbox/Checkbox.styles.d.ts +1 -0
  51. package/components/DateInput/DateInput/DateInput.js +9 -1
  52. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  53. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js +9 -3
  54. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js.map +1 -1
  55. package/components/DateInput/helpers/InternalDateMediator.d.ts +2 -2
  56. package/components/DateInput/helpers/inputNumber/inputNumber.js +53 -16
  57. package/components/DateInput/helpers/inputNumber/inputNumber.js.map +1 -1
  58. package/components/DateInput/helpers/inputNumber.d.ts +1 -1
  59. package/components/Gapped/Gapped/Gapped.js +2 -1
  60. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  61. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js +1 -2
  62. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js.map +1 -1
  63. package/components/PasswordInput/PasswordInput/PasswordInput.js +12 -13
  64. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  65. package/components/PasswordInput/PasswordInput.d.ts +1 -1
  66. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js +8 -3
  67. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js.map +1 -1
  68. package/components/Select/Select/Select.js +5 -3
  69. package/components/Select/Select/Select.js.map +1 -1
  70. package/components/TokenInput/TokenInput/TokenInput.js +6 -2
  71. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  72. package/components/TokenInput/TokenInput.d.ts +10 -0
  73. package/internal/InternalMenu/InternalMenu/InternalMenu.js +2 -6
  74. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  75. package/internal/MaskedInput/MaskedInput/MaskedInput.js +4 -2
  76. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  77. package/internal/Menu/Menu/Menu.js +2 -5
  78. package/internal/Menu/Menu/Menu.js.map +1 -1
  79. package/lib/date/InternalDateGetter/InternalDateGetter.js +3 -1
  80. package/lib/date/InternalDateGetter/InternalDateGetter.js.map +1 -1
  81. package/lib/date/InternalDateGetter.d.ts +1 -1
  82. package/lib/date/InternalDateValidator/InternalDateValidator.js +55 -41
  83. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  84. package/lib/date/types/types.js.map +1 -1
  85. package/lib/date/types.d.ts +4 -0
  86. package/lib/events/MouseDrag/MouseDrag.js +5 -1
  87. package/lib/events/MouseDrag/MouseDrag.js.map +1 -1
  88. package/package.json +3 -2
@@ -384,11 +384,7 @@ InternalMenu = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/
384
384
  _this.setState({ scrollState: scrollState });
385
385
  }
386
386
  };return _this;}var _proto = InternalMenu.prototype;_proto.componentDidMount = function componentDidMount() {this.setInitialSelection();this.calculateMaxHeight();};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (this.shouldRecalculateMaxHeight(prevProps)) {this.calculateMaxHeight();}if (prevProps.maxHeight !== this.props.maxHeight) {this.setState({ maxHeight: this.props.maxHeight || 'none' });}};_proto.focus = function focus() {this.focusOnRootElement();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _cx3,_this3 = this;var enableIconPadding = _react.default.Children.toArray(this.props.children).some(function (x) {return /*#__PURE__*/_react.default.isValidElement(x) && x.props.icon;});if (this.isEmpty()) {return null;}return /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)((_cx3 = {}, _cx3[_InternalMenu.styles.root(this.theme)] = true, _cx3[_InternalMenu.styles.shadow(this.theme)] = this.props.hasShadow, _cx3)), style: { width: this.props.width, maxHeight: this.state.maxHeight }, onKeyDown: this.handleKeyDown, ref: this.setRootNode, tabIndex: 0 }, this.props.header ? this.renderHeader() : null, /*#__PURE__*/_react.default.createElement(_ScrollContainer.ScrollContainer, { ref: this.refScrollContainer, maxHeight: this.props.maxHeight, preventWindowScroll: this.props.preventWindowScroll, onScrollStateChange: this.handleScrollStateChange }, _react.default.Children.map(this.props.children, function (child, index) {if (typeof child === 'string' || typeof child === 'number' || (0, _utils.isNullable)(child)) {return child;}if ( /*#__PURE__*/_react.default.isValidElement(child) && typeof child.type === 'string') {return child;}var modifiedChild = (0, _addIconPaddingIfPartOfMenu.addIconPaddingIfPartOfMenu)(child, enableIconPadding);if ((0, _isActiveElement.isActiveElement)(modifiedChild)) {var highlight = _this3.state.highlightedIndex === index;var ref = modifiedChild.ref;var originalRef = ref;if (highlight) {ref = function ref(menuItem) {return _this3.refHighlighted(originalRef, menuItem);};}return /*#__PURE__*/_react.default.cloneElement(modifiedChild, { ref: ref, state: highlight ? 'hover' : modifiedChild.props.state, onClick: _this3.select.bind(_this3, index, false), onMouseEnter: function onMouseEnter(event) {_this3.highlightItem(index);if ((0, _MenuItem.isMenuItem)(modifiedChild) && modifiedChild.props.onMouseEnter) {modifiedChild.props.onMouseEnter(event);}}, onMouseLeave: function onMouseLeave(event) {_this3.unhighlight();if ((0, _MenuItem.isMenuItem)(modifiedChild) && modifiedChild.props.onMouseLeave) {modifiedChild.props.onMouseLeave(event);}} });}return modifiedChild;})), this.props.footer ? this.renderFooter() : null);};_proto.refHighlighted = function refHighlighted(originalRef, menuItem) {this.highlighted = menuItem;if (!originalRef || typeof originalRef === 'string') {return;}if (typeof originalRef === 'function') {originalRef(menuItem);} else if (typeof originalRef === 'object') {// @ts-ignore see issue https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065
387
- originalRef.current = 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(event);}return true;}return false;};_proto.move = function move(step) {this.setState(function (state, props) {var children = childrenToArray(props.children);if (!children.some(_isActiveElement.isActiveElement)) {return null;}var index = state.highlightedIndex;do {index += step;if (!props.cyclicSelection && (index < 0 || index > children.length)) {return null;}if (index < 0) {index = children.length - 1;} else if (index > children.length) {index = 0;}var child = children[index];if ((0, _isActiveElement.isActiveElement)(child)) {return { highlightedIndex: index };}} while (index !== state.highlightedIndex);return null;}, this.scrollToSelected);};_proto.isEmpty = function isEmpty() {var children = this.props.children;return !children || !childrenToArray(children).filter(isExist).length;};return InternalMenu;}(_react.default.PureComponent), _class2.__KONTUR_REACT_UI__ = 'InternalMenu', _class2.defaultProps = { width: 'auto', maxHeight: 300, hasShadow: true, preventWindowScroll: true, cyclicSelection: true, initialSelectedItemIndex: -1 }, _temp)) || _class;exports.InternalMenu = InternalMenu;
388
-
389
- function isExist(value) {
390
- return value !== null && value !== undefined;
391
- }
387
+ originalRef.current = 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(event);}return true;}return false;};_proto.move = function move(step) {this.setState(function (state, props) {var children = childrenToArray(props.children);if (!children.some(_isActiveElement.isActiveElement)) {return null;}var index = state.highlightedIndex;do {index += step;if (!props.cyclicSelection && (index < 0 || index > children.length)) {return null;}if (index < 0) {index = children.length - 1;} else if (index > children.length) {index = 0;}var child = children[index];if ((0, _isActiveElement.isActiveElement)(child)) {return { highlightedIndex: index };}} while (index !== state.highlightedIndex);return null;}, this.scrollToSelected);};_proto.isEmpty = function isEmpty() {var children = this.props.children;return !children || !childrenToArray(children).filter(_utils.isNonNullable).length;};return InternalMenu;}(_react.default.PureComponent), _class2.__KONTUR_REACT_UI__ = 'InternalMenu', _class2.defaultProps = { width: 'auto', maxHeight: 300, hasShadow: true, preventWindowScroll: true, cyclicSelection: true, initialSelectedItemIndex: -1 }, _temp)) || _class;exports.InternalMenu = InternalMenu;
392
388
 
393
389
  function childrenToArray(children) {
394
390
  var ret = [];
@@ -1 +1 @@
1
- {"version":3,"sources":["InternalMenu.tsx"],"names":["InternalMenu","rootNode","state","highlightedIndex","maxHeight","props","scrollState","getProps","defaultProps","renderHeader","el","header","styles","fixedHeader","renderFooter","footer","fixedFooter","focusOnRootElement","focus","shouldRecalculateMaxHeight","prevProps","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","React","Children","count","calculateMaxHeight","parsedMaxHeight","window","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","setInitialSelection","i","initialSelectedItemIndex","moveDown","refScrollContainer","scrollContainer","scrollToSelected","highlighted","scrollTo","highlightItem","index","unhighlight","moveUp","move","handleKeyDown","e","onKeyDown","defaultPrevented","preventDefault","onClick","handleScrollStateChange","componentDidMount","componentDidUpdate","render","theme","renderMain","enableIconPadding","toArray","some","x","isValidElement","icon","isEmpty","root","shadow","hasShadow","width","setRootNode","preventWindowScroll","map","child","type","modifiedChild","highlight","ref","originalRef","menuItem","refHighlighted","cloneElement","select","bind","onMouseEnter","event","onMouseLeave","current","shouldHandleHref","item","childrenToArray","href","target","open","location","onItemClick","step","isActiveElement","cyclicSelection","length","filter","isExist","PureComponent","__KONTUR_REACT_UI__","value","undefined","ret","forEach","push"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isNullable } from '../../lib/utils';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { isMenuItem, MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\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 { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './InternalMenu.styles';\nimport { isActiveElement } from './isActiveElement';\nimport { addIconPaddingIfPartOfMenu } from './addIconPaddingIfPartOfMenu';\n\ninterface MenuProps {\n children?: React.ReactNode;\n hasShadow?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Циклический перебор айтемов меню (по-дефолтну включен)\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\ninterface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n}\n\n@rootNode\nexport class InternalMenu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'InternalMenu';\n\n public static defaultProps = {\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.props.maxHeight || 'none',\n scrollState: 'top',\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private getProps = createPropsGetter(InternalMenu.defaultProps);\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.props.maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\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 private renderMain() {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n if (this.isEmpty()) {\n return null;\n }\n\n return (\n <div\n className={cx({\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: this.props.hasShadow,\n })}\n style={{\n width: this.props.width,\n maxHeight: this.state.maxHeight,\n }}\n onKeyDown={this.handleKeyDown}\n ref={this.setRootNode}\n tabIndex={0}\n >\n {this.props.header ? this.renderHeader() : null}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={this.props.maxHeight}\n preventWindowScroll={this.props.preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n >\n {React.Children.map(this.props.children, (child, index) => {\n if (typeof child === 'string' || typeof child === 'number' || isNullable(child)) {\n return child;\n }\n if (React.isValidElement(child) && typeof child.type === 'string') {\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 const originalRef = ref;\n if (highlight) {\n ref = (menuItem) => this.refHighlighted(originalRef, menuItem);\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: (event) => {\n this.highlightItem(index);\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseEnter) {\n modifiedChild.props.onMouseEnter(event);\n }\n },\n onMouseLeave: (event) => {\n this.unhighlight();\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseLeave) {\n modifiedChild.props.onMouseLeave(event);\n }\n },\n });\n }\n\n return modifiedChild;\n })}\n </ScrollContainer>\n {this.props.footer ? this.renderFooter() : null}\n </div>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n ref={(el) => (this.header = el)}\n className={cx({\n [styles.header()]: true,\n [styles.fixedHeader()]: this.state.scrollState !== 'top',\n })}\n >\n {this.props.header}\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n ref={(el) => (this.footer = el)}\n className={cx({\n [styles.footer()]: true,\n [styles.fixedFooter()]: this.state.scrollState !== 'bottom',\n })}\n >\n {this.props.footer}\n </div>\n );\n };\n\n private focusOnRootElement = (): void => {\n getRootNode(this)?.focus();\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { maxHeight, header, footer, children } = this.props;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const { maxHeight } = this.props;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && typeof window !== 'undefined' && rootNode) {\n const rootElementMaxHeight = window.getComputedStyle(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.moveDown();\n }\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: string | ((instance: MenuItem | null) => void) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (!originalRef || typeof originalRef === 'string') {\n return;\n }\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n } else if (typeof originalRef === 'object') {\n // @ts-ignore see issue https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065\n originalRef.current = menuItem;\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n this.scrollContainer.scrollTo(getRootNode(this.highlighted));\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n\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 as React.MouseEvent<HTMLElement>);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick(event);\n }\n return true;\n }\n return false;\n }\n\n private highlightItem = (index: number): void => {\n this.setState({ highlightedIndex: index });\n getRootNode(this)?.focus();\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n this.setState((state, props) => {\n const children = childrenToArray(props.children);\n if (!children.some(isActiveElement)) {\n return null;\n }\n let index = state.highlightedIndex;\n do {\n index += step;\n if (!props.cyclicSelection && (index < 0 || index > children.length)) {\n return null;\n }\n\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 return { highlightedIndex: index };\n }\n } while (index !== state.highlightedIndex);\n return null;\n }, this.scrollToSelected);\n }\n\n private moveUp = () => {\n this.move(-1);\n };\n\n private moveDown = () => {\n this.move(1);\n };\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isExist).length;\n }\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(e);\n }\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(e)) {\n e.preventDefault();\n this.moveUp();\n } else if (isKeyArrowDown(e)) {\n e.preventDefault();\n this.moveDown();\n } else if (isKeyEnter(e)) {\n if (this.highlighted && this.highlighted.props.onClick) {\n this.highlighted.props.onClick(e);\n }\n }\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n}\n\nfunction isExist(value: any): value is any {\n return value !== null && value !== undefined;\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"]}
1
+ {"version":3,"sources":["InternalMenu.tsx"],"names":["InternalMenu","rootNode","state","highlightedIndex","maxHeight","props","scrollState","getProps","defaultProps","renderHeader","el","header","styles","fixedHeader","renderFooter","footer","fixedFooter","focusOnRootElement","focus","shouldRecalculateMaxHeight","prevProps","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","React","Children","count","calculateMaxHeight","parsedMaxHeight","window","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","setInitialSelection","i","initialSelectedItemIndex","moveDown","refScrollContainer","scrollContainer","scrollToSelected","highlighted","scrollTo","highlightItem","index","unhighlight","moveUp","move","handleKeyDown","e","onKeyDown","defaultPrevented","preventDefault","onClick","handleScrollStateChange","componentDidMount","componentDidUpdate","render","theme","renderMain","enableIconPadding","toArray","some","x","isValidElement","icon","isEmpty","root","shadow","hasShadow","width","setRootNode","preventWindowScroll","map","child","type","modifiedChild","highlight","ref","originalRef","menuItem","refHighlighted","cloneElement","select","bind","onMouseEnter","event","onMouseLeave","current","shouldHandleHref","item","childrenToArray","href","target","open","location","onItemClick","step","isActiveElement","cyclicSelection","length","filter","isNonNullable","PureComponent","__KONTUR_REACT_UI__","ret","forEach","push"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { isMenuItem, MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\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 { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './InternalMenu.styles';\nimport { isActiveElement } from './isActiveElement';\nimport { addIconPaddingIfPartOfMenu } from './addIconPaddingIfPartOfMenu';\n\ninterface MenuProps {\n children?: React.ReactNode;\n hasShadow?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Циклический перебор айтемов меню (по-дефолтну включен)\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\ninterface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n}\n\n@rootNode\nexport class InternalMenu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'InternalMenu';\n\n public static defaultProps = {\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.props.maxHeight || 'none',\n scrollState: 'top',\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private getProps = createPropsGetter(InternalMenu.defaultProps);\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.props.maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\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 private renderMain() {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n if (this.isEmpty()) {\n return null;\n }\n\n return (\n <div\n className={cx({\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: this.props.hasShadow,\n })}\n style={{\n width: this.props.width,\n maxHeight: this.state.maxHeight,\n }}\n onKeyDown={this.handleKeyDown}\n ref={this.setRootNode}\n tabIndex={0}\n >\n {this.props.header ? this.renderHeader() : null}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={this.props.maxHeight}\n preventWindowScroll={this.props.preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n >\n {React.Children.map(this.props.children, (child, index) => {\n if (typeof child === 'string' || typeof child === 'number' || isNullable(child)) {\n return child;\n }\n if (React.isValidElement(child) && typeof child.type === 'string') {\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 const originalRef = ref;\n if (highlight) {\n ref = (menuItem) => this.refHighlighted(originalRef, menuItem);\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: (event) => {\n this.highlightItem(index);\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseEnter) {\n modifiedChild.props.onMouseEnter(event);\n }\n },\n onMouseLeave: (event) => {\n this.unhighlight();\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseLeave) {\n modifiedChild.props.onMouseLeave(event);\n }\n },\n });\n }\n\n return modifiedChild;\n })}\n </ScrollContainer>\n {this.props.footer ? this.renderFooter() : null}\n </div>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n ref={(el) => (this.header = el)}\n className={cx({\n [styles.header()]: true,\n [styles.fixedHeader()]: this.state.scrollState !== 'top',\n })}\n >\n {this.props.header}\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n ref={(el) => (this.footer = el)}\n className={cx({\n [styles.footer()]: true,\n [styles.fixedFooter()]: this.state.scrollState !== 'bottom',\n })}\n >\n {this.props.footer}\n </div>\n );\n };\n\n private focusOnRootElement = (): void => {\n getRootNode(this)?.focus();\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { maxHeight, header, footer, children } = this.props;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const { maxHeight } = this.props;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && typeof window !== 'undefined' && rootNode) {\n const rootElementMaxHeight = window.getComputedStyle(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.moveDown();\n }\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: string | ((instance: MenuItem | null) => void) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (!originalRef || typeof originalRef === 'string') {\n return;\n }\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n } else if (typeof originalRef === 'object') {\n // @ts-ignore see issue https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065\n originalRef.current = menuItem;\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n this.scrollContainer.scrollTo(getRootNode(this.highlighted));\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n\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 as React.MouseEvent<HTMLElement>);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick(event);\n }\n return true;\n }\n return false;\n }\n\n private highlightItem = (index: number): void => {\n this.setState({ highlightedIndex: index });\n getRootNode(this)?.focus();\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n this.setState((state, props) => {\n const children = childrenToArray(props.children);\n if (!children.some(isActiveElement)) {\n return null;\n }\n let index = state.highlightedIndex;\n do {\n index += step;\n if (!props.cyclicSelection && (index < 0 || index > children.length)) {\n return null;\n }\n\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 return { highlightedIndex: index };\n }\n } while (index !== state.highlightedIndex);\n return null;\n }, this.scrollToSelected);\n }\n\n private moveUp = () => {\n this.move(-1);\n };\n\n private moveDown = () => {\n this.move(1);\n };\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(e);\n }\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(e)) {\n e.preventDefault();\n this.moveUp();\n } else if (isKeyArrowDown(e)) {\n e.preventDefault();\n this.moveDown();\n } else if (isKeyEnter(e)) {\n if (this.highlighted && this.highlighted.props.onClick) {\n this.highlighted.props.onClick(e);\n }\n }\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\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"]}
@@ -1,11 +1,11 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.MaskedInput = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
  var _reactInputMask = _interopRequireDefault(require("react-input-mask"));
3
3
 
4
+ var _utils = require("../../lib/utils");
4
5
  var _ThemeContext = require("../../lib/theming/ThemeContext");
5
6
 
6
7
  var _MaskCharLowLine = require("../MaskCharLowLine");
7
8
  var _Emotion = require("../../lib/theming/Emotion");
8
- var _utils = require("../../lib/utils");
9
9
 
10
10
  var _MaskedInput = require("./MaskedInput.styles");var _excluded = ["maskChar", "alwaysShowMask", "hasLeftIcon", "hasRightIcon", "maxLength", "onValueChange", "onUnexpectedInput", "defaultValue", "style"];var
11
11
 
@@ -126,7 +126,9 @@ MaskedInput = /*#__PURE__*/function (_React$PureComponent) {(0, _inheritsLoose2.
126
126
  getValue = function (props) {
127
127
  if ((0, _utils.isNonNullable)(props.value)) {
128
128
  return props.value.toString();
129
- } else if ((0, _utils.isNonNullable)(props.defaultValue)) {
129
+ }
130
+
131
+ if ((0, _utils.isNonNullable)(props.defaultValue)) {
130
132
  return props.defaultValue.toString();
131
133
  }
132
134
 
@@ -1 +1 @@
1
- {"version":3,"sources":["MaskedInput.tsx"],"names":["MaskedInput","props","input","reactInputMask","getValue","value","toString","defaultValue","refInput","refMaskedInput","handleChange","event","target","state","handleUnexpectedInput","setState","onValueChange","onChange","handleFocus","focused","onFocus","handleBlur","onBlur","preprocess","newState","oldState","userInput","options","visibleMaskChars","Array","mask","length","fill","maskChar","split","forEach","char","index","permanents","includes","emptyValue","join","isMaskVisible","alwaysShowMask","onUnexpectedInput","componentDidMount","forceUpdate","componentDidUpdate","prevProps","render","theme","renderMain","hasLeftIcon","hasRightIcon","maxLength","style","inputProps","leftHelper","textAlign","color","slice","leftClass","styles","inputMaskLeft","rightHelper","map","_char","i","container","inputMask","React","PureComponent","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactInputMask, { InputState, MaskOptions } from 'react-input-mask';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { MaskCharLowLine } from '../MaskCharLowLine';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isNonNullable } from '../../lib/utils';\n\nimport { styles } from './MaskedInput.styles';\n\nexport interface MaskedInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n mask: string;\n maskChar: string | null;\n formatChars?: { [key: string]: string };\n alwaysShowMask?: boolean;\n hasLeftIcon?: boolean;\n hasRightIcon?: boolean;\n onUnexpectedInput?: (value: string) => void;\n onValueChange?: (value: string) => void;\n}\n\ninterface MaskedInputState {\n value: string;\n emptyValue: string;\n focused: boolean;\n}\n\nexport class MaskedInput extends React.PureComponent<MaskedInputProps, MaskedInputState> {\n public static __KONTUR_REACT_UI__ = 'MaskedInput';\n\n public static defaultProps: Partial<MaskedInputProps> = {\n maskChar: '_',\n };\n\n public input: HTMLInputElement | null = null;\n private theme!: Theme;\n private reactInputMask: ReactInputMask | null = null;\n\n public constructor(props: MaskedInputProps) {\n super(props);\n\n this.state = {\n value: this.getValue(props),\n emptyValue: '',\n focused: false,\n };\n }\n\n public componentDidMount() {\n if (this.reactInputMask) {\n // FIXME: принудительно вызываем beforeMaskedValueChange, чтобы получить emptyValue\n this.reactInputMask.forceUpdate();\n }\n }\n\n public componentDidUpdate(prevProps: MaskedInputProps) {\n if (this.props.value !== prevProps.value) {\n this.setState({\n value: this.props.value ? this.props.value.toString() : '',\n });\n }\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 private renderMain() {\n const {\n maskChar,\n alwaysShowMask,\n hasLeftIcon,\n hasRightIcon,\n maxLength,\n onValueChange,\n onUnexpectedInput,\n defaultValue,\n style,\n ...inputProps\n } = this.props;\n const { emptyValue, value } = this.state;\n\n const leftHelper = style?.textAlign !== 'right' && (\n <span style={{ color: 'transparent' }}>{emptyValue.slice(0, value.length)}</span>\n );\n const leftClass = style?.textAlign !== 'right' && styles.inputMaskLeft();\n\n const rightHelper = emptyValue\n .slice(value.length)\n .split('')\n .map((_char, i) => (_char === '_' ? <MaskCharLowLine key={i} /> : _char));\n\n return (\n <span className={styles.container()} x-ms-format-detection=\"none\">\n <ReactInputMask\n {...inputProps}\n maskChar={null}\n beforeMaskedValueChange={this.preprocess}\n alwaysShowMask={false}\n onChange={this.handleChange}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n value={value}\n inputRef={this.refInput}\n ref={this.refMaskedInput}\n style={{ ...style }}\n />\n {this.isMaskVisible() && (\n <span className={cx(styles.inputMask(this.theme), leftClass)}>\n {leftHelper}\n {rightHelper}\n </span>\n )}\n </span>\n );\n }\n\n private getValue = (props: MaskedInputProps): string => {\n if (isNonNullable(props.value)) {\n return props.value.toString();\n } else if (isNonNullable(props.defaultValue)) {\n return props.defaultValue.toString();\n }\n\n return '';\n };\n\n private refInput = (input: HTMLInputElement | null) => {\n this.input = input;\n };\n\n private refMaskedInput = (reactInputMask: ReactInputMask) => {\n this.reactInputMask = reactInputMask;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.value === this.state.value) {\n this.handleUnexpectedInput();\n } else {\n this.setState({ value: event.target.value });\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private preprocess = (\n newState: InputState,\n oldState: InputState,\n userInput: string,\n options: MaskOptions & Pick<MaskedInputProps, 'mask'>,\n ) => {\n const visibleMaskChars = new Array(options.mask.length).fill(this.props.maskChar);\n\n if (newState.value !== oldState.value && userInput === null) {\n this.setState({\n value: newState.value,\n });\n }\n\n options.mask.split('').forEach((char: string, index: number) => {\n if (options.permanents.includes(index)) {\n visibleMaskChars[index] = char;\n }\n\n if (newState.value[index]) {\n visibleMaskChars[index] = newState.value[index];\n }\n });\n\n const emptyValue = visibleMaskChars.join('');\n\n if (this.state.emptyValue !== emptyValue) {\n this.setState({\n emptyValue,\n });\n }\n\n return newState;\n };\n\n private isMaskVisible = () => this.props.alwaysShowMask || this.state.focused;\n\n private handleUnexpectedInput = () => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(this.state.value);\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["MaskedInput.tsx"],"names":["MaskedInput","props","input","reactInputMask","getValue","value","toString","defaultValue","refInput","refMaskedInput","handleChange","event","target","state","handleUnexpectedInput","setState","onValueChange","onChange","handleFocus","focused","onFocus","handleBlur","onBlur","preprocess","newState","oldState","userInput","options","visibleMaskChars","Array","mask","length","fill","maskChar","split","forEach","char","index","permanents","includes","emptyValue","join","isMaskVisible","alwaysShowMask","onUnexpectedInput","componentDidMount","forceUpdate","componentDidUpdate","prevProps","render","theme","renderMain","hasLeftIcon","hasRightIcon","maxLength","style","inputProps","leftHelper","textAlign","color","slice","leftClass","styles","inputMaskLeft","rightHelper","map","_char","i","container","inputMask","React","PureComponent","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactInputMask, { InputState, MaskOptions } from 'react-input-mask';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { MaskCharLowLine } from '../MaskCharLowLine';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MaskedInput.styles';\n\nexport interface MaskedInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n mask: string;\n maskChar: string | null;\n formatChars?: { [key: string]: string };\n alwaysShowMask?: boolean;\n hasLeftIcon?: boolean;\n hasRightIcon?: boolean;\n onUnexpectedInput?: (value: string) => void;\n onValueChange?: (value: string) => void;\n}\n\ninterface MaskedInputState {\n value: string;\n emptyValue: string;\n focused: boolean;\n}\n\nexport class MaskedInput extends React.PureComponent<MaskedInputProps, MaskedInputState> {\n public static __KONTUR_REACT_UI__ = 'MaskedInput';\n\n public static defaultProps: Partial<MaskedInputProps> = {\n maskChar: '_',\n };\n\n public input: HTMLInputElement | null = null;\n private theme!: Theme;\n private reactInputMask: ReactInputMask | null = null;\n\n public constructor(props: MaskedInputProps) {\n super(props);\n\n this.state = {\n value: this.getValue(props),\n emptyValue: '',\n focused: false,\n };\n }\n\n public componentDidMount() {\n if (this.reactInputMask) {\n // FIXME: принудительно вызываем beforeMaskedValueChange, чтобы получить emptyValue\n this.reactInputMask.forceUpdate();\n }\n }\n\n public componentDidUpdate(prevProps: MaskedInputProps) {\n if (this.props.value !== prevProps.value) {\n this.setState({\n value: this.props.value ? this.props.value.toString() : '',\n });\n }\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 private renderMain() {\n const {\n maskChar,\n alwaysShowMask,\n hasLeftIcon,\n hasRightIcon,\n maxLength,\n onValueChange,\n onUnexpectedInput,\n defaultValue,\n style,\n ...inputProps\n } = this.props;\n const { emptyValue, value } = this.state;\n\n const leftHelper = style?.textAlign !== 'right' && (\n <span style={{ color: 'transparent' }}>{emptyValue.slice(0, value.length)}</span>\n );\n const leftClass = style?.textAlign !== 'right' && styles.inputMaskLeft();\n\n const rightHelper = emptyValue\n .slice(value.length)\n .split('')\n .map((_char, i) => (_char === '_' ? <MaskCharLowLine key={i} /> : _char));\n\n return (\n <span className={styles.container()} x-ms-format-detection=\"none\">\n <ReactInputMask\n {...inputProps}\n maskChar={null}\n beforeMaskedValueChange={this.preprocess}\n alwaysShowMask={false}\n onChange={this.handleChange}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n value={value}\n inputRef={this.refInput}\n ref={this.refMaskedInput}\n style={{ ...style }}\n />\n {this.isMaskVisible() && (\n <span className={cx(styles.inputMask(this.theme), leftClass)}>\n {leftHelper}\n {rightHelper}\n </span>\n )}\n </span>\n );\n }\n\n private getValue = (props: MaskedInputProps): string => {\n if (isNonNullable(props.value)) {\n return props.value.toString();\n }\n\n if (isNonNullable(props.defaultValue)) {\n return props.defaultValue.toString();\n }\n\n return '';\n };\n\n private refInput = (input: HTMLInputElement | null) => {\n this.input = input;\n };\n\n private refMaskedInput = (reactInputMask: ReactInputMask) => {\n this.reactInputMask = reactInputMask;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.value === this.state.value) {\n this.handleUnexpectedInput();\n } else {\n this.setState({ value: event.target.value });\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private preprocess = (\n newState: InputState,\n oldState: InputState,\n userInput: string,\n options: MaskOptions & Pick<MaskedInputProps, 'mask'>,\n ) => {\n const visibleMaskChars = new Array(options.mask.length).fill(this.props.maskChar);\n\n if (newState.value !== oldState.value && userInput === null) {\n this.setState({\n value: newState.value,\n });\n }\n\n options.mask.split('').forEach((char: string, index: number) => {\n if (options.permanents.includes(index)) {\n visibleMaskChars[index] = char;\n }\n\n if (newState.value[index]) {\n visibleMaskChars[index] = newState.value[index];\n }\n });\n\n const emptyValue = visibleMaskChars.join('');\n\n if (this.state.emptyValue !== emptyValue) {\n this.setState({\n emptyValue,\n });\n }\n\n return newState;\n };\n\n private isMaskVisible = () => this.props.alwaysShowMask || this.state.focused;\n\n private handleUnexpectedInput = () => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(this.state.value);\n }\n };\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;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 _utils = require("../../lib/utils");
3
4
  var _ScrollContainer = require("../../components/ScrollContainer");
4
5
 
5
6
 
@@ -273,14 +274,10 @@ Menu = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function
273
274
 
274
275
  isEmpty = function isEmpty() {
275
276
  var children = this.props.children;
276
- return !children || !childrenToArray(children).filter(isExist).length;
277
+ return !children || !childrenToArray(children).filter(_utils.isNonNullable).length;
277
278
  };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;
278
279
 
279
280
 
280
- function isExist(value) {
281
- return value !== null && value !== undefined;
282
- }
283
-
284
281
  function childrenToArray(children) {
285
282
  var ret = [];
286
283
  // Use forEach instead of map to avoid cloning for key unifying.
@@ -1 +1 @@
1
- {"version":3,"sources":["Menu.tsx"],"names":["Menu","rootNode","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","scrollTo","scrollToTop","scrollToBottom","setState","componentWillUnmount","render","theme","renderMain","up","move","down","enter","event","reset","hasHighlightedItem","highlightItem","isEmpty","getAlignRightClass","styles","root","shadow","hasShadow","getStyle","setRootNode","maxHeight","preventWindowScroll","disableScrollContainer","originalRef","menuItem","shouldHandleHref","item","childrenToArray","href","target","window","open","location","onItemClick","step","activeElements","filter","isActiveElement","length","indexOf","isExist","Component","__KONTUR_REACT_UI__","defaultProps","align","width","value","undefined","ret","forEach","push","maxWidth","minWidth","alignRight","isIE11","alignRightIE11","alignRightIE11FixAutoWidth"],"mappings":"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","sourcesContent":["import React, { CSSProperties } from 'react';\n\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';\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\n@rootNode\nexport class Menu extends React.Component<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n\n public static defaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n };\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\n return (\n <div\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: this.props.hasShadow,\n })}\n style={getStyle(this.props)}\n ref={this.setRootNode}\n >\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={this.props.maxHeight}\n preventWindowScroll={this.props.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 this.scrollContainer.scrollTo(getRootNode(this.highlighted));\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(isExist).length;\n }\n}\n\nfunction isExist(value: any): value is any {\n return value !== null && value !== undefined;\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":["Menu","rootNode","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","scrollTo","scrollToTop","scrollToBottom","setState","componentWillUnmount","render","theme","renderMain","up","move","down","enter","event","reset","hasHighlightedItem","highlightItem","isEmpty","getAlignRightClass","styles","root","shadow","hasShadow","getStyle","setRootNode","maxHeight","preventWindowScroll","disableScrollContainer","originalRef","menuItem","shouldHandleHref","item","childrenToArray","href","target","window","open","location","onItemClick","step","activeElements","filter","isActiveElement","length","indexOf","isNonNullable","Component","__KONTUR_REACT_UI__","defaultProps","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';\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\n@rootNode\nexport class Menu extends React.Component<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n\n public static defaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n };\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\n return (\n <div\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: this.props.hasShadow,\n })}\n style={getStyle(this.props)}\n ref={this.setRootNode}\n >\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={this.props.maxHeight}\n preventWindowScroll={this.props.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 this.scrollContainer.scrollTo(getRootNode(this.highlighted));\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"]}
@@ -6,7 +6,7 @@ export declare class InternalDateGetter {
6
6
  static getMaxDaysInMonth(month: number, year?: number): number;
7
7
  static getValueDateComponent(type: InternalDateComponentType | null, components: InternalDateComponentsRaw): InternalDateComponentRaw;
8
8
  static getDefaultMin(type: InternalDateComponentType): number;
9
- static getDefaultMax(type: InternalDateComponentType, components?: InternalDateComponents): number;
9
+ static getDefaultMax(type: InternalDateComponentType | null, components?: InternalDateComponents): number;
10
10
  static getTodayComponents(): {
11
11
  date: number;
12
12
  month: number;
@@ -48,9 +48,12 @@ InternalDateGetter = /*#__PURE__*/function () {function InternalDateGetter() {}I
48
48
  {
49
49
  if (type === _types.InternalDateComponentType.Year) {
50
50
  return components.year;
51
- } else if (type === _types.InternalDateComponentType.Month) {
51
+ }
52
+
53
+ if (type === _types.InternalDateComponentType.Month) {
52
54
  return components.month;
53
55
  }
56
+
54
57
  return components.date;
55
58
  };InternalDateGetter.
56
59
 
@@ -1 +1 @@
1
- {"version":3,"sources":["InternalDateGetter.ts"],"names":["calculateMonth","month","getIsLeapYear","year","isDividableByFour","isDividableByOneHundred","isDividableByFourHundred","InternalDateGetter","getMaxDaysInMonth","isLeapYear","calculatedMonth","getValueDateComponent","type","components","InternalDateComponentType","Year","Month","date","getDefaultMin","MIN_YEAR","MIN_MONTH","Date","MIN_DATE","getDefaultMax","MAX_YEAR","MAX_MONTH","undefined","MAX_DATE","getTodayComponents","getDate","getMonth","getFullYear","max","datesCustom","sort","a","b","toNumber","min"],"mappings":"2EAAA;;AAEA;;;;;;;AAOA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAACC,KAAD,EAAmB;AACxC,MAAIA,KAAK,IAAI,CAAb,EAAgB;AACd,WAAOA,KAAK,GAAG,CAAf;AACD;;AAED,SAAOA,KAAP;AACD,CAND;;AAQA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,IAAD,EAAkB;AACtC;AACA,MAAMC,iBAAiB,GAAGD,IAAI,GAAG,CAAP,KAAa,CAAvC;AACA,MAAME,uBAAuB,GAAGF,IAAI,GAAG,GAAP,KAAe,CAA/C;AACA,MAAMG,wBAAwB,GAAGH,IAAI,GAAG,GAAP,KAAe,CAAhD;;AAEA,SAAOC,iBAAiB,IAAIC,uBAArB,IAAgDC,wBAAvD;AACD,CAPD,C;;AASaC,kB;;;;;;;AAOGC,EAAAA,iB,GAAd,2BAAgCP,KAAhC,EAA+CE,IAA/C,EAAsE;AACpE,QAAIF,KAAK,KAAK,CAAd,EAAiB;AACf,UAAMQ,UAAU,GAAGN,IAAI,GAAGD,aAAa,CAACC,IAAD,CAAhB,GAAyB,KAAhD;;AAEA,aAAOM,UAAU,GAAG,EAAH,GAAQ,EAAzB;AACD;;AAED,QAAMC,eAAe,GAAGV,cAAc,CAACC,KAAD,CAAtC;AACA,WAAOS,eAAe,GAAG,CAAlB,KAAwB,CAAxB,GAA4B,EAA5B,GAAiC,EAAxC;AACD,G;;AAEaC,EAAAA,qB,GAAd;AACEC,EAAAA,IADF;AAEEC,EAAAA,UAFF;AAG4B;AAC1B,QAAID,IAAI,KAAKE,iCAA0BC,IAAvC,EAA6C;AAC3C,aAAOF,UAAU,CAACV,IAAlB;AACD,KAFD,MAEO,IAAIS,IAAI,KAAKE,iCAA0BE,KAAvC,EAA8C;AACnD,aAAOH,UAAU,CAACZ,KAAlB;AACD;AACD,WAAOY,UAAU,CAACI,IAAlB;AACD,G;;AAEaC,EAAAA,a,GAAd,uBAA4BN,IAA5B,EAAqE;AACnE,QAAIA,IAAI,KAAKE,iCAA0BC,IAAvC,EAA6C;AAC3C,aAAOI,mBAAP;AACD,KAFD,MAEO,IAAIP,IAAI,KAAKE,iCAA0BE,KAAvC,EAA8C;AACnD,aAAOI,oBAAP;AACD,KAFM,MAEA,IAAIR,IAAI,KAAKE,iCAA0BO,IAAvC,EAA6C;AAClD,aAAOC,mBAAP;AACD;AACD,WAAOA,mBAAP;AACD,G;;AAEaC,EAAAA,a,GAAd,uBAA4BX,IAA5B,EAA6DC,UAA7D,EAA0G;AACxG,QAAID,IAAI,KAAKE,iCAA0BC,IAAvC,EAA6C;AAC3C,aAAOS,mBAAP;AACD,KAFD,MAEO,IAAIZ,IAAI,KAAKE,iCAA0BE,KAAvC,EAA8C;AACnD,aAAOS,oBAAP;AACD,KAFM,MAEA,IAAIb,IAAI,KAAKE,iCAA0BO,IAAvC,EAA6C;AAClD,UAAIR,UAAU,KAAKa,SAAnB,EAA8B;AAC5B,eAAOC,mBAAP;AACD;AACD,UAAQxB,IAAR,GAAwBU,UAAxB,CAAQV,IAAR,CAAcF,KAAd,GAAwBY,UAAxB,CAAcZ,KAAd;AACA,aAAOE,IAAI,IAAIF,KAAR,GAAgBM,kBAAkB,CAACC,iBAAnB,CAAqCP,KAArC,EAA4CE,IAA5C,CAAhB,GAAoEwB,mBAA3E;AACD;AACD,WAAOA,mBAAP;AACD,G;;AAEaC,EAAAA,kB,GAAd,8BAAmC;AACjC,QAAMX,IAAI,GAAG,IAAII,IAAJ,EAAb;AACA,WAAO;AACLJ,MAAAA,IAAI,EAAEA,IAAI,CAACY,OAAL,EADD;AAEL5B,MAAAA,KAAK,EAAEgB,IAAI,CAACa,QAAL,KAAkB,CAFpB;AAGL3B,MAAAA,IAAI,EAAEc,IAAI,CAACc,WAAL,EAHD,EAAP;;AAKD,G,+EA/DUxB,kB,CACGyB,G,GAAM,UAACC,WAAD,UAClBA,WAAW,CAACC,IAAZ,CAAiB,UAACC,CAAD,EAAIC,CAAJ,UAAUA,CAAC,CAACC,QAAF,KAAeF,CAAC,CAACE,QAAF,EAAzB,EAAjB,EAAwD,CAAxD,CADkB,E,CADT9B,kB,CAIG+B,G,GAAM,UAACL,WAAD,UAClBA,WAAW,CAACC,IAAZ,CAAiB,UAACC,CAAD,EAAIC,CAAJ,UAAUD,CAAC,CAACE,QAAF,KAAeD,CAAC,CAACC,QAAF,EAAzB,EAAjB,EAAwD,CAAxD,CADkB,E","sourcesContent":["import { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from './constants';\nimport { InternalDate } from './InternalDate';\nimport {\n InternalDateComponentType,\n InternalDateComponentsRaw,\n InternalDateComponentRaw,\n InternalDateComponents,\n} from './types';\n\nconst calculateMonth = (month: number) => {\n if (month <= 7) {\n return month + 1;\n }\n\n return month;\n};\n\nconst getIsLeapYear = (year: number) => {\n // The year is considered leap if it's either dividable by 4, 100 or 400.\n const isDividableByFour = year % 4 === 0;\n const isDividableByOneHundred = year % 100 === 0;\n const isDividableByFourHundred = year % 400 === 0;\n\n return isDividableByFour || isDividableByOneHundred || isDividableByFourHundred;\n};\n\nexport class InternalDateGetter {\n public static max = (datesCustom: InternalDate[]): InternalDate =>\n datesCustom.sort((a, b) => b.toNumber() - a.toNumber())[0];\n\n public static min = (datesCustom: InternalDate[]): InternalDate =>\n datesCustom.sort((a, b) => a.toNumber() - b.toNumber())[0];\n\n public static getMaxDaysInMonth(month: number, year?: number): number {\n if (month === 2) {\n const isLeapYear = year ? getIsLeapYear(year) : false;\n\n return isLeapYear ? 29 : 28;\n }\n\n const calculatedMonth = calculateMonth(month);\n return calculatedMonth % 2 === 0 ? 31 : 30;\n }\n\n public static getValueDateComponent(\n type: InternalDateComponentType | null,\n components: InternalDateComponentsRaw,\n ): InternalDateComponentRaw {\n if (type === InternalDateComponentType.Year) {\n return components.year;\n } else if (type === InternalDateComponentType.Month) {\n return components.month;\n }\n return components.date;\n }\n\n public static getDefaultMin(type: InternalDateComponentType): number {\n if (type === InternalDateComponentType.Year) {\n return MIN_YEAR;\n } else if (type === InternalDateComponentType.Month) {\n return MIN_MONTH;\n } else if (type === InternalDateComponentType.Date) {\n return MIN_DATE;\n }\n return MIN_DATE;\n }\n\n public static getDefaultMax(type: InternalDateComponentType, components?: InternalDateComponents): number {\n if (type === InternalDateComponentType.Year) {\n return MAX_YEAR;\n } else if (type === InternalDateComponentType.Month) {\n return MAX_MONTH;\n } else if (type === InternalDateComponentType.Date) {\n if (components === undefined) {\n return MAX_DATE;\n }\n const { year, month } = components;\n return year && month ? InternalDateGetter.getMaxDaysInMonth(month, year) : MAX_DATE;\n }\n return MAX_DATE;\n }\n\n public static getTodayComponents() {\n const date = new Date();\n return {\n date: date.getDate(),\n month: date.getMonth() + 1,\n year: date.getFullYear(),\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["InternalDateGetter.ts"],"names":["calculateMonth","month","getIsLeapYear","year","isDividableByFour","isDividableByOneHundred","isDividableByFourHundred","InternalDateGetter","getMaxDaysInMonth","isLeapYear","calculatedMonth","getValueDateComponent","type","components","InternalDateComponentType","Year","Month","date","getDefaultMin","MIN_YEAR","MIN_MONTH","Date","MIN_DATE","getDefaultMax","MAX_YEAR","MAX_MONTH","undefined","MAX_DATE","getTodayComponents","getDate","getMonth","getFullYear","max","datesCustom","sort","a","b","toNumber","min"],"mappings":"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","sourcesContent":["import { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from './constants';\nimport { InternalDate } from './InternalDate';\nimport {\n InternalDateComponentType,\n InternalDateComponentsRaw,\n InternalDateComponentRaw,\n InternalDateComponents,\n} from './types';\n\nconst calculateMonth = (month: number) => {\n if (month <= 7) {\n return month + 1;\n }\n\n return month;\n};\n\nconst getIsLeapYear = (year: number) => {\n // The year is considered leap if it's either dividable by 4, 100 or 400.\n const isDividableByFour = year % 4 === 0;\n const isDividableByOneHundred = year % 100 === 0;\n const isDividableByFourHundred = year % 400 === 0;\n\n return isDividableByFour || isDividableByOneHundred || isDividableByFourHundred;\n};\n\nexport class InternalDateGetter {\n public static max = (datesCustom: InternalDate[]): InternalDate =>\n datesCustom.sort((a, b) => b.toNumber() - a.toNumber())[0];\n\n public static min = (datesCustom: InternalDate[]): InternalDate =>\n datesCustom.sort((a, b) => a.toNumber() - b.toNumber())[0];\n\n public static getMaxDaysInMonth(month: number, year?: number): number {\n if (month === 2) {\n const isLeapYear = year ? getIsLeapYear(year) : false;\n\n return isLeapYear ? 29 : 28;\n }\n\n const calculatedMonth = calculateMonth(month);\n return calculatedMonth % 2 === 0 ? 31 : 30;\n }\n\n public static getValueDateComponent(\n type: InternalDateComponentType | null,\n components: InternalDateComponentsRaw,\n ): InternalDateComponentRaw {\n if (type === InternalDateComponentType.Year) {\n return components.year;\n }\n\n if (type === InternalDateComponentType.Month) {\n return components.month;\n }\n\n return components.date;\n }\n\n public static getDefaultMin(type: InternalDateComponentType): number {\n if (type === InternalDateComponentType.Year) {\n return MIN_YEAR;\n } else if (type === InternalDateComponentType.Month) {\n return MIN_MONTH;\n } else if (type === InternalDateComponentType.Date) {\n return MIN_DATE;\n }\n return MIN_DATE;\n }\n\n public static getDefaultMax(type: InternalDateComponentType | null, components?: InternalDateComponents): number {\n if (type === InternalDateComponentType.Year) {\n return MAX_YEAR;\n } else if (type === InternalDateComponentType.Month) {\n return MAX_MONTH;\n } else if (type === InternalDateComponentType.Date) {\n if (components === undefined) {\n return MAX_DATE;\n }\n const { year, month } = components;\n return year && month ? InternalDateGetter.getMaxDaysInMonth(month, year) : MAX_DATE;\n }\n return MAX_DATE;\n }\n\n public static getTodayComponents() {\n const date = new Date();\n return {\n date: date.getDate(),\n month: date.getMonth() + 1,\n year: date.getFullYear(),\n };\n }\n}\n"]}
@@ -21,41 +21,51 @@ var calculateEndDate = function calculateEndDate(endDate) {
21
21
  }
22
22
 
23
23
  return Infinity;
24
+ };
25
+
26
+ var getValue = function getValue(type, _ref) {var year = _ref.year,month = _ref.month,date = _ref.date;
27
+ if (type === _types.InternalDateComponentType.Year) {
28
+ return year;
29
+ }
30
+
31
+ if (type === _types.InternalDateComponentType.Month) {
32
+ return month;
33
+ }
34
+
35
+ return date;
24
36
  };var
37
+
25
38
  InternalDateValidator = /*#__PURE__*/function () {function InternalDateValidator() {}InternalDateValidator.
26
- checkForNull = function checkForNull(_ref, type) {var year = _ref.year,month = _ref.month,date = _ref.date;
39
+ checkForNull = function checkForNull(_ref2, type) {var year = _ref2.year,month = _ref2.month,date = _ref2.date;
27
40
  if (type !== undefined) {
28
41
  if (type === _types.InternalDateComponentType.Year) {
29
42
  return year !== null;
30
- } else if (type === _types.InternalDateComponentType.Month) {
43
+ }
44
+
45
+ if (type === _types.InternalDateComponentType.Month) {
31
46
  return month !== null;
32
- } else if (type === _types.InternalDateComponentType.All) {
47
+ }
48
+
49
+ if (type === _types.InternalDateComponentType.All) {
33
50
  return year !== null && month !== null && date !== null;
34
51
  }
52
+
35
53
  return date !== null;
36
54
  }
55
+
37
56
  return !(year === null || month === null || date === null);
38
57
  };InternalDateValidator.
39
58
 
40
- checkLimits = function checkLimits(_ref2,
59
+ checkLimits = function checkLimits(_ref3,
41
60
 
42
61
  type)
43
- {var year = _ref2.year,month = _ref2.month,date = _ref2.date;
62
+ {var year = _ref3.year,month = _ref3.month,date = _ref3.date;
44
63
  if (type !== undefined) {
45
- var getValue = function getValue() {
46
- if (type === _types.InternalDateComponentType.Year) {
47
- return year;
48
- } else if (type === _types.InternalDateComponentType.Month) {
49
- return month;
50
- }
51
-
52
- return date;
53
- };
54
-
55
- var value = getValue();
64
+ var value = getValue(type, { date: date, month: month, year: year });
56
65
 
57
66
  return value >= _InternalDateGetter.InternalDateGetter.getDefaultMin(type) && value <= _InternalDateGetter.InternalDateGetter.getDefaultMax(type);
58
67
  }
68
+
59
69
  return (
60
70
  year >= _InternalDateGetter.InternalDateGetter.getDefaultMin(_types.InternalDateComponentType.Year) &&
61
71
  year <= _InternalDateGetter.InternalDateGetter.getDefaultMax(_types.InternalDateComponentType.Year) &&
@@ -66,7 +76,7 @@ InternalDateValidator = /*#__PURE__*/function () {function InternalDateValidator
66
76
 
67
77
  };InternalDateValidator.
68
78
 
69
- compareWithNativeDate = function compareWithNativeDate(_ref3) {var year = _ref3.year,month = _ref3.month,date = _ref3.date;
79
+ compareWithNativeDate = function compareWithNativeDate(_ref4) {var year = _ref4.year,month = _ref4.month,date = _ref4.date;
70
80
  var nativeDate = new Date(Date.UTC(year, month - 1, date));
71
81
  return (
72
82
  nativeDate.getUTCFullYear() === year && nativeDate.getUTCMonth() + 1 === month && nativeDate.getUTCDate() === date);
@@ -84,20 +94,20 @@ InternalDateValidator = /*#__PURE__*/function () {function InternalDateValidator
84
94
  };InternalDateValidator.
85
95
 
86
96
  checkRangePiecemeal = function checkRangePiecemeal(
87
- type, _ref4,
97
+ type, _ref5,
88
98
 
89
99
  startComponents,
90
100
  endComponents)
91
- {var year = _ref4.year,month = _ref4.month,date = _ref4.date;
101
+ {var year = _ref5.year,month = _ref5.month,date = _ref5.date;
92
102
  if (startComponents === null && endComponents === null) {
93
103
  return true;
94
104
  }
95
- var _ref5 =
105
+ var _ref6 =
96
106
 
97
107
 
98
108
 
99
- startComponents || {},_ref5$year = _ref5.year,startYear = _ref5$year === void 0 ? -Infinity : _ref5$year,_ref5$month = _ref5.month,startMonth = _ref5$month === void 0 ? -Infinity : _ref5$month,_ref5$date = _ref5.date,startDate = _ref5$date === void 0 ? -Infinity : _ref5$date;
100
- var _ref6 = endComponents || {},_ref6$year = _ref6.year,endYear = _ref6$year === void 0 ? Infinity : _ref6$year,_ref6$month = _ref6.month,endMonth = _ref6$month === void 0 ? Infinity : _ref6$month,_ref6$date = _ref6.date,endDate = _ref6$date === void 0 ? Infinity : _ref6$date;
109
+ startComponents || {},_ref6$year = _ref6.year,startYear = _ref6$year === void 0 ? -Infinity : _ref6$year,_ref6$month = _ref6.month,startMonth = _ref6$month === void 0 ? -Infinity : _ref6$month,_ref6$date = _ref6.date,startDate = _ref6$date === void 0 ? -Infinity : _ref6$date;
110
+ var _ref7 = endComponents || {},_ref7$year = _ref7.year,endYear = _ref7$year === void 0 ? Infinity : _ref7$year,_ref7$month = _ref7.month,endMonth = _ref7$month === void 0 ? Infinity : _ref7$month,_ref7$date = _ref7.date,endDate = _ref7$date === void 0 ? Infinity : _ref7$date;
101
111
 
102
112
  if (type === _types.InternalDateComponentType.Year) {
103
113
  return !(year < startYear || year > endYear);
@@ -1 +1 @@
1
- {"version":3,"sources":["InternalDateValidator.ts"],"names":["calculateStartDate","startDate","Infinity","calculateEndDate","endDate","InternalDateValidator","checkForNull","type","year","month","date","undefined","InternalDateComponentType","Year","Month","All","checkLimits","getValue","value","InternalDateGetter","getDefaultMin","getDefaultMax","Date","compareWithNativeDate","nativeDate","UTC","getUTCFullYear","getUTCMonth","getUTCDate","checkRangeFully","calculatedEndDate","calculatedStartDate","checkRangePiecemeal","startComponents","endComponents","startYear","startMonth","endYear","endMonth","testParseToNumber","Number","isNaN","parseInt","isEqualDateValues","a","b","toInternalString","isEqualDateFormats","getOrder","getSeparator"],"mappings":"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","sourcesContent":["import { InternalDate } from './InternalDate';\nimport { InternalDateGetter } from './InternalDateGetter';\nimport {\n InternalDateComponentRaw,\n InternalDateComponentsNumber,\n InternalDateComponentsRaw,\n InternalDateComponentType,\n} from './types';\n\nconst calculateStartDate = (startDate: number | null) => {\n if (startDate) {\n return startDate;\n }\n\n return -Infinity;\n};\n\nconst calculateEndDate = (endDate: number | null) => {\n if (endDate) {\n return endDate;\n }\n\n return Infinity;\n};\nexport class InternalDateValidator {\n public static checkForNull({ year, month, date }: InternalDateComponentsRaw, type?: InternalDateComponentType) {\n if (type !== undefined) {\n if (type === InternalDateComponentType.Year) {\n return year !== null;\n } else if (type === InternalDateComponentType.Month) {\n return month !== null;\n } else if (type === InternalDateComponentType.All) {\n return year !== null && month !== null && date !== null;\n }\n return date !== null;\n }\n return !(year === null || month === null || date === null);\n }\n\n public static checkLimits(\n { year, month, date }: InternalDateComponentsNumber,\n type?: InternalDateComponentType,\n ): boolean {\n if (type !== undefined) {\n const getValue = () => {\n if (type === InternalDateComponentType.Year) {\n return year;\n } else if (type === InternalDateComponentType.Month) {\n return month;\n }\n\n return date;\n };\n\n const value = getValue();\n\n return value >= InternalDateGetter.getDefaultMin(type) && value <= InternalDateGetter.getDefaultMax(type);\n }\n return (\n year >= InternalDateGetter.getDefaultMin(InternalDateComponentType.Year) &&\n year <= InternalDateGetter.getDefaultMax(InternalDateComponentType.Year) &&\n month >= InternalDateGetter.getDefaultMin(InternalDateComponentType.Month) &&\n month <= InternalDateGetter.getDefaultMax(InternalDateComponentType.Month) &&\n date >= InternalDateGetter.getDefaultMin(InternalDateComponentType.Date) &&\n date <= InternalDateGetter.getDefaultMax(InternalDateComponentType.Date)\n );\n }\n\n public static compareWithNativeDate({ year, month, date }: InternalDateComponentsNumber): boolean {\n const nativeDate: Date = new Date(Date.UTC(year, month - 1, date));\n return (\n nativeDate.getUTCFullYear() === year && nativeDate.getUTCMonth() + 1 === month && nativeDate.getUTCDate() === date\n );\n }\n\n public static checkRangeFully(date: number, startDate: number | null, endDate: number | null): boolean {\n if (startDate === null && endDate === null) {\n return true;\n }\n\n const calculatedEndDate = calculateEndDate(endDate);\n const calculatedStartDate = calculateStartDate(startDate);\n return date >= calculatedStartDate && date <= calculatedEndDate;\n }\n\n public static checkRangePiecemeal(\n type: InternalDateComponentType,\n { year, month, date }: InternalDateComponentsNumber,\n startComponents: InternalDateComponentsNumber | null,\n endComponents: InternalDateComponentsNumber | null,\n ): boolean {\n if (startComponents === null && endComponents === null) {\n return true;\n }\n const {\n year: startYear = -Infinity,\n month: startMonth = -Infinity,\n date: startDate = -Infinity,\n } = startComponents || {};\n const { year: endYear = Infinity, month: endMonth = Infinity, date: endDate = Infinity } = endComponents || {};\n\n if (type === InternalDateComponentType.Year) {\n return !(year < startYear || year > endYear);\n } else if (type === InternalDateComponentType.Month) {\n return !((year === startYear && month < startMonth) || (year === endYear && month > endMonth));\n } else if (type === InternalDateComponentType.Date) {\n return !(\n (year === startYear && month === startMonth && date < startDate) ||\n (year === endYear && month === endMonth && date > endDate)\n );\n }\n return true;\n }\n\n public static testParseToNumber(value: InternalDateComponentRaw): boolean {\n return value !== null && (typeof value === 'number' || !Number.isNaN(parseInt(value, 10)));\n }\n\n public static isEqualDateValues(a: InternalDate, b: InternalDate): boolean {\n return a.toInternalString() === b.toInternalString();\n }\n\n public static isEqualDateFormats(a: InternalDate, b: InternalDate): boolean {\n return a.getOrder() === b.getOrder() && a.getSeparator() === b.getSeparator();\n }\n}\n"]}
1
+ {"version":3,"sources":["InternalDateValidator.ts"],"names":["calculateStartDate","startDate","Infinity","calculateEndDate","endDate","getValue","type","year","month","date","InternalDateComponentType","Year","Month","InternalDateValidator","checkForNull","undefined","All","checkLimits","value","InternalDateGetter","getDefaultMin","getDefaultMax","Date","compareWithNativeDate","nativeDate","UTC","getUTCFullYear","getUTCMonth","getUTCDate","checkRangeFully","calculatedEndDate","calculatedStartDate","checkRangePiecemeal","startComponents","endComponents","startYear","startMonth","endYear","endMonth","testParseToNumber","Number","isNaN","parseInt","isEqualDateValues","a","b","toInternalString","isEqualDateFormats","getOrder","getSeparator"],"mappings":"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","sourcesContent":["import { InternalDate } from './InternalDate';\nimport { InternalDateGetter } from './InternalDateGetter';\nimport {\n InternalDateComponentRaw,\n InternalDateComponentsNumber,\n InternalDateComponentsRaw,\n InternalDateComponentType,\n} from './types';\n\nconst calculateStartDate = (startDate: number | null) => {\n if (startDate) {\n return startDate;\n }\n\n return -Infinity;\n};\n\nconst calculateEndDate = (endDate: number | null) => {\n if (endDate) {\n return endDate;\n }\n\n return Infinity;\n};\n\nconst getValue = (type: InternalDateComponentType, { year, month, date }: InternalDateComponentsNumber) => {\n if (type === InternalDateComponentType.Year) {\n return year;\n }\n\n if (type === InternalDateComponentType.Month) {\n return month;\n }\n\n return date;\n};\n\nexport class InternalDateValidator {\n public static checkForNull({ year, month, date }: InternalDateComponentsRaw, type?: InternalDateComponentType) {\n if (type !== undefined) {\n if (type === InternalDateComponentType.Year) {\n return year !== null;\n }\n\n if (type === InternalDateComponentType.Month) {\n return month !== null;\n }\n\n if (type === InternalDateComponentType.All) {\n return year !== null && month !== null && date !== null;\n }\n\n return date !== null;\n }\n\n return !(year === null || month === null || date === null);\n }\n\n public static checkLimits(\n { year, month, date }: InternalDateComponentsNumber,\n type?: InternalDateComponentType,\n ): boolean {\n if (type !== undefined) {\n const value = getValue(type, { date, month, year });\n\n return value >= InternalDateGetter.getDefaultMin(type) && value <= InternalDateGetter.getDefaultMax(type);\n }\n\n return (\n year >= InternalDateGetter.getDefaultMin(InternalDateComponentType.Year) &&\n year <= InternalDateGetter.getDefaultMax(InternalDateComponentType.Year) &&\n month >= InternalDateGetter.getDefaultMin(InternalDateComponentType.Month) &&\n month <= InternalDateGetter.getDefaultMax(InternalDateComponentType.Month) &&\n date >= InternalDateGetter.getDefaultMin(InternalDateComponentType.Date) &&\n date <= InternalDateGetter.getDefaultMax(InternalDateComponentType.Date)\n );\n }\n\n public static compareWithNativeDate({ year, month, date }: InternalDateComponentsNumber): boolean {\n const nativeDate: Date = new Date(Date.UTC(year, month - 1, date));\n return (\n nativeDate.getUTCFullYear() === year && nativeDate.getUTCMonth() + 1 === month && nativeDate.getUTCDate() === date\n );\n }\n\n public static checkRangeFully(date: number, startDate: number | null, endDate: number | null): boolean {\n if (startDate === null && endDate === null) {\n return true;\n }\n\n const calculatedEndDate = calculateEndDate(endDate);\n const calculatedStartDate = calculateStartDate(startDate);\n return date >= calculatedStartDate && date <= calculatedEndDate;\n }\n\n public static checkRangePiecemeal(\n type: InternalDateComponentType,\n { year, month, date }: InternalDateComponentsNumber,\n startComponents: InternalDateComponentsNumber | null,\n endComponents: InternalDateComponentsNumber | null,\n ): boolean {\n if (startComponents === null && endComponents === null) {\n return true;\n }\n const {\n year: startYear = -Infinity,\n month: startMonth = -Infinity,\n date: startDate = -Infinity,\n } = startComponents || {};\n const { year: endYear = Infinity, month: endMonth = Infinity, date: endDate = Infinity } = endComponents || {};\n\n if (type === InternalDateComponentType.Year) {\n return !(year < startYear || year > endYear);\n } else if (type === InternalDateComponentType.Month) {\n return !((year === startYear && month < startMonth) || (year === endYear && month > endMonth));\n } else if (type === InternalDateComponentType.Date) {\n return !(\n (year === startYear && month === startMonth && date < startDate) ||\n (year === endYear && month === endMonth && date > endDate)\n );\n }\n return true;\n }\n\n public static testParseToNumber(value: InternalDateComponentRaw): boolean {\n return value !== null && (typeof value === 'number' || !Number.isNaN(parseInt(value, 10)));\n }\n\n public static isEqualDateValues(a: InternalDate, b: InternalDate): boolean {\n return a.toInternalString() === b.toInternalString();\n }\n\n public static isEqualDateFormats(a: InternalDate, b: InternalDate): boolean {\n return a.getOrder() === b.getOrder() && a.getSeparator() === b.getSeparator();\n }\n}\n"]}
@@ -88,3 +88,7 @@ export interface InternalDateLocaleSet {
88
88
  firstDayWeek: InternalDateFirstDayWeek;
89
89
  notWorkingDays: InternalDateDayWeek[];
90
90
  }
91
+ export interface InputKeyResult {
92
+ inputMode: boolean;
93
+ changed: boolean;
94
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["types.ts"],"names":["InternalDateOrder","InternalDateSeparator","InternalDateComponentType","InternalDateValidateCheck","isInternalDateValidateCheck","value","Object","values","includes","InternalDateFirstDayWeek","InternalDateDayWeek"],"mappings":";;AAEYA,iB,0DAAAA,iB,GAAAA,iB,gBAAAA,iB,gBAAAA,iB,mBAAAA,iB,iCAAAA,iB;;;;;;AAMAC,qB,kEAAAA,qB,GAAAA,qB,gBAAAA,qB,cAAAA,qB,eAAAA,qB,mBAAAA,qB,qCAAAA,qB;;;;;;;AAOAC,yB,0EAAAA,yB,GAAAA,yB,CAAAA,yB,uBAAAA,yB,CAAAA,yB,yBAAAA,yB,CAAAA,yB,uBAAAA,yB,CAAAA,yB,qBAAAA,yB,CAAAA,yB,oCAAAA,yB,yCAAAA,yB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DAC,yB,0EAAAA,yB,GAAAA,yB,CAAAA,yB,6BAAAA,yB,CAAAA,yB,2BAAAA,yB,CAAAA,yB,2BAAAA,yB,CAAAA,yB,2BAAAA,yB,CAAAA,yB,4BAAAA,yB,yCAAAA,yB;;;;;;;;AAQL,SAASC,2BAAT,CAAqCC,KAArC,EAAyF;AAC9F,SAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6BC,MAAM,CAACC,MAAP,CAAcJ,yBAAd,EAAyCK,QAAzC,CAAkDH,KAAlD,CAApC;AACD,C;;AAEWI,wB,wEAAAA,wB,GAAAA,wB,CAAAA,wB,2BAAAA,wB,CAAAA,wB,2BAAAA,wB,CAAAA,wB,kCAAAA,wB,wCAAAA,wB;;;;;;AAMAC,mB,8DAAAA,mB,GAAAA,mB,CAAAA,mB,2BAAAA,mB,CAAAA,mB,6BAAAA,mB,CAAAA,mB,iCAAAA,mB,CAAAA,mB,+BAAAA,mB,CAAAA,mB,2BAAAA,mB,CAAAA,mB,2BAAAA,mB,CAAAA,mB,kCAAAA,mB,mCAAAA,mB","sourcesContent":["import { LangCodes } from '../locale';\n\nexport enum InternalDateOrder {\n DMY = 'DMY',\n YMD = 'YMD',\n MDY = 'MDY',\n}\n\nexport enum InternalDateSeparator {\n Slash = '/',\n Dot = '.',\n Dash = '-',\n Space = ' ',\n}\n\nexport enum InternalDateComponentType {\n Date = 0,\n Month = 1,\n Year = 2,\n All = 3,\n Separator = 4,\n}\n\nexport type InternalDateTypesOrder = [InternalDateComponentType, InternalDateComponentType, InternalDateComponentType];\nexport type InternalDateComponent = number | null;\nexport type InternalDateComponentRaw = number | string | null;\n\nexport interface InternalDateFragment {\n type: InternalDateComponentType;\n value: InternalDateComponentRaw | InternalDateSeparator;\n length: number;\n valueWithPad?: string;\n isValid?: boolean;\n}\n\nexport interface InternalDateComponents {\n year: InternalDateComponent;\n month: InternalDateComponent;\n date: InternalDateComponent;\n}\n\nexport interface InternalDateComponentsRaw {\n year: InternalDateComponentRaw;\n month: InternalDateComponentRaw;\n date: InternalDateComponentRaw;\n}\n\nexport interface InternalDateComponentsNumber {\n year: number;\n month: number;\n date: number;\n}\n\nexport interface InternalDateToFragmentsSettings {\n order?: InternalDateOrder;\n separator?: InternalDateSeparator;\n withSeparator?: boolean;\n withPad?: boolean;\n pad?: string;\n}\n\nexport interface InternalDateChangeSettings {\n isLoop?: boolean;\n isRange?: boolean;\n isCutFeb?: boolean;\n}\n\nexport interface InternalDateConstructorProps {\n order?: InternalDateOrder;\n separator?: InternalDateSeparator;\n langCode?: LangCodes;\n value?: string;\n}\n\nexport enum InternalDateValidateCheck {\n NotNull,\n Number,\n Limits,\n Native,\n Range,\n}\n\nexport function isInternalDateValidateCheck(value: unknown): value is InternalDateValidateCheck {\n return typeof value === 'number' && Object.values(InternalDateValidateCheck).includes(value);\n}\n\nexport enum InternalDateFirstDayWeek {\n Monday = 0,\n Sunday = 1,\n Saturday = 2,\n}\n\nexport enum InternalDateDayWeek {\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Sunday = 6,\n Saturday = 7,\n}\n\nexport interface InternalDateLocaleSet {\n order: InternalDateOrder;\n separator: InternalDateSeparator;\n firstDayWeek: InternalDateFirstDayWeek;\n notWorkingDays: InternalDateDayWeek[];\n}\n"]}
1
+ {"version":3,"sources":["types.ts"],"names":["InternalDateOrder","InternalDateSeparator","InternalDateComponentType","InternalDateValidateCheck","isInternalDateValidateCheck","value","Object","values","includes","InternalDateFirstDayWeek","InternalDateDayWeek"],"mappings":";;AAEYA,iB,0DAAAA,iB,GAAAA,iB,gBAAAA,iB,gBAAAA,iB,mBAAAA,iB,iCAAAA,iB;;;;;;AAMAC,qB,kEAAAA,qB,GAAAA,qB,gBAAAA,qB,cAAAA,qB,eAAAA,qB,mBAAAA,qB,qCAAAA,qB;;;;;;;AAOAC,yB,0EAAAA,yB,GAAAA,yB,CAAAA,yB,uBAAAA,yB,CAAAA,yB,yBAAAA,yB,CAAAA,yB,uBAAAA,yB,CAAAA,yB,qBAAAA,yB,CAAAA,yB,oCAAAA,yB,yCAAAA,yB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DAC,yB,0EAAAA,yB,GAAAA,yB,CAAAA,yB,6BAAAA,yB,CAAAA,yB,2BAAAA,yB,CAAAA,yB,2BAAAA,yB,CAAAA,yB,2BAAAA,yB,CAAAA,yB,4BAAAA,yB,yCAAAA,yB;;;;;;;;AAQL,SAASC,2BAAT,CAAqCC,KAArC,EAAyF;AAC9F,SAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6BC,MAAM,CAACC,MAAP,CAAcJ,yBAAd,EAAyCK,QAAzC,CAAkDH,KAAlD,CAApC;AACD,C;;AAEWI,wB,wEAAAA,wB,GAAAA,wB,CAAAA,wB,2BAAAA,wB,CAAAA,wB,2BAAAA,wB,CAAAA,wB,kCAAAA,wB,wCAAAA,wB;;;;;;AAMAC,mB,8DAAAA,mB,GAAAA,mB,CAAAA,mB,2BAAAA,mB,CAAAA,mB,6BAAAA,mB,CAAAA,mB,iCAAAA,mB,CAAAA,mB,+BAAAA,mB,CAAAA,mB,2BAAAA,mB,CAAAA,mB,2BAAAA,mB,CAAAA,mB,kCAAAA,mB,mCAAAA,mB","sourcesContent":["import { LangCodes } from '../locale';\n\nexport enum InternalDateOrder {\n DMY = 'DMY',\n YMD = 'YMD',\n MDY = 'MDY',\n}\n\nexport enum InternalDateSeparator {\n Slash = '/',\n Dot = '.',\n Dash = '-',\n Space = ' ',\n}\n\nexport enum InternalDateComponentType {\n Date = 0,\n Month = 1,\n Year = 2,\n All = 3,\n Separator = 4,\n}\n\nexport type InternalDateTypesOrder = [InternalDateComponentType, InternalDateComponentType, InternalDateComponentType];\nexport type InternalDateComponent = number | null;\nexport type InternalDateComponentRaw = number | string | null;\n\nexport interface InternalDateFragment {\n type: InternalDateComponentType;\n value: InternalDateComponentRaw | InternalDateSeparator;\n length: number;\n valueWithPad?: string;\n isValid?: boolean;\n}\n\nexport interface InternalDateComponents {\n year: InternalDateComponent;\n month: InternalDateComponent;\n date: InternalDateComponent;\n}\n\nexport interface InternalDateComponentsRaw {\n year: InternalDateComponentRaw;\n month: InternalDateComponentRaw;\n date: InternalDateComponentRaw;\n}\n\nexport interface InternalDateComponentsNumber {\n year: number;\n month: number;\n date: number;\n}\n\nexport interface InternalDateToFragmentsSettings {\n order?: InternalDateOrder;\n separator?: InternalDateSeparator;\n withSeparator?: boolean;\n withPad?: boolean;\n pad?: string;\n}\n\nexport interface InternalDateChangeSettings {\n isLoop?: boolean;\n isRange?: boolean;\n isCutFeb?: boolean;\n}\n\nexport interface InternalDateConstructorProps {\n order?: InternalDateOrder;\n separator?: InternalDateSeparator;\n langCode?: LangCodes;\n value?: string;\n}\n\nexport enum InternalDateValidateCheck {\n NotNull,\n Number,\n Limits,\n Native,\n Range,\n}\n\nexport function isInternalDateValidateCheck(value: unknown): value is InternalDateValidateCheck {\n return typeof value === 'number' && Object.values(InternalDateValidateCheck).includes(value);\n}\n\nexport enum InternalDateFirstDayWeek {\n Monday = 0,\n Sunday = 1,\n Saturday = 2,\n}\n\nexport enum InternalDateDayWeek {\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Sunday = 6,\n Saturday = 7,\n}\n\nexport interface InternalDateLocaleSet {\n order: InternalDateOrder;\n separator: InternalDateSeparator;\n firstDayWeek: InternalDateFirstDayWeek;\n notWorkingDays: InternalDateDayWeek[];\n}\n\nexport interface InputKeyResult {\n inputMode: boolean;\n changed: boolean;\n}\n"]}
@@ -149,7 +149,11 @@ function MouseDrag(elem) {var _this = this;this.clicked = false;this.dragging =
149
149
  };this.
150
150
 
151
151
  getLength = function (x2, y2) {
152
- return _this.x1 !== undefined && _this.y1 !== undefined ? Math.sqrt(Math.pow(x2 - _this.x1, 2) + Math.pow(y2 - _this.y1, 2)) : 0;
152
+ if (_this.x1 !== undefined && _this.y1 !== undefined) {
153
+ return Math.sqrt(Math.pow(x2 - _this.x1, 2) + Math.pow(y2 - _this.y1, 2));
154
+ }
155
+
156
+ return 0;
153
157
  };this.
154
158
 
155
159
  createEvent = function (type, e) {