@skbkontur/react-ui 4.18.0 → 4.19.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/cjs/components/Button/Button.styles.d.ts +1 -1
  2. package/cjs/components/Button/Button.styles.js +10 -3
  3. package/cjs/components/Button/Button.styles.js.map +1 -1
  4. package/cjs/components/Button/ButtonIcon.js +1 -4
  5. package/cjs/components/Button/ButtonIcon.js.map +1 -1
  6. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +1 -2
  7. package/cjs/components/GlobalLoader/GlobalLoader.js +7 -11
  8. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  9. package/cjs/components/Input/InputLayout/InputLayout.styles.js +7 -2
  10. package/cjs/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
  11. package/cjs/components/Input/InputLayout/InputLayoutAside.js +1 -7
  12. package/cjs/components/Input/InputLayout/InputLayoutAside.js.map +1 -1
  13. package/cjs/components/PasswordInput/PasswordInput.js +1 -0
  14. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  15. package/cjs/components/ScrollContainer/ScrollBar.d.ts +4 -7
  16. package/cjs/components/ScrollContainer/ScrollBar.js +7 -39
  17. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  18. package/cjs/components/ScrollContainer/ScrollContainer.constants.js +1 -2
  19. package/cjs/components/ScrollContainer/ScrollContainer.constants.js.map +1 -1
  20. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +19 -3
  21. package/cjs/components/ScrollContainer/ScrollContainer.js +92 -19
  22. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  23. package/cjs/components/ScrollContainer/ScrollContainer.md +29 -2
  24. package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +0 -4
  25. package/cjs/components/ScrollContainer/ScrollContainer.styles.js +8 -30
  26. package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
  27. package/cjs/components/TokenInput/TokenInput.d.ts +2 -0
  28. package/cjs/components/TokenInput/TokenInput.js +37 -5
  29. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  30. package/cjs/index.d.ts +2 -1
  31. package/cjs/index.js +2 -1
  32. package/cjs/index.js.map +1 -1
  33. package/cjs/internal/icons2022/BaseIcon.js +3 -7
  34. package/cjs/internal/icons2022/BaseIcon.js.map +1 -1
  35. package/cjs/internal/icons2022/BaseIcon.styles.d.ts +3 -0
  36. package/cjs/internal/icons2022/BaseIcon.styles.js +14 -0
  37. package/cjs/internal/icons2022/BaseIcon.styles.js.map +1 -0
  38. package/cjs/internal/themes/Theme2022Dark.d.ts +1 -1
  39. package/cjs/internal/themes/Theme2022Dark.js +4 -2
  40. package/cjs/internal/themes/Theme2022Dark.js.map +1 -1
  41. package/cjs/lib/chars.d.ts +1 -1
  42. package/cjs/lib/chars.js +2 -2
  43. package/cjs/lib/chars.js.map +1 -1
  44. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +50 -0
  45. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +4 -0
  46. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.js +5 -0
  47. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.js.map +1 -0
  48. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +6 -0
  49. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +12 -0
  50. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -0
  51. package/cjs/lib/featureFlagsContext/index.d.ts +2 -0
  52. package/cjs/lib/featureFlagsContext/index.js +3 -0
  53. package/cjs/lib/featureFlagsContext/index.js.map +1 -0
  54. package/components/Button/Button.styles/Button.styles.js +5 -2
  55. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  56. package/components/Button/Button.styles.d.ts +1 -1
  57. package/components/Button/ButtonIcon/ButtonIcon.js +2 -4
  58. package/components/Button/ButtonIcon/ButtonIcon.js.map +1 -1
  59. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +20 -25
  60. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  61. package/components/GlobalLoader/GlobalLoader.d.ts +1 -2
  62. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js +2 -1
  63. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js.map +1 -1
  64. package/components/Input/InputLayout/InputLayoutAside/InputLayoutAside.js +1 -2
  65. package/components/Input/InputLayout/InputLayoutAside/InputLayoutAside.js.map +1 -1
  66. package/components/PasswordInput/PasswordInput/PasswordInput.js +1 -0
  67. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  68. package/components/ScrollContainer/ScrollBar/ScrollBar.js +9 -44
  69. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  70. package/components/ScrollContainer/ScrollBar.d.ts +4 -7
  71. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +96 -21
  72. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  73. package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js +1 -2
  74. package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js.map +1 -1
  75. package/components/ScrollContainer/ScrollContainer.d.ts +19 -3
  76. package/components/ScrollContainer/ScrollContainer.md +29 -2
  77. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +6 -18
  78. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
  79. package/components/ScrollContainer/ScrollContainer.styles.d.ts +0 -4
  80. package/components/TokenInput/TokenInput/TokenInput.js +40 -5
  81. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  82. package/components/TokenInput/TokenInput.d.ts +2 -0
  83. package/index.d.ts +2 -1
  84. package/index.js +2 -1
  85. package/index.js.map +1 -1
  86. package/internal/icons2022/BaseIcon/BaseIcon.js +3 -6
  87. package/internal/icons2022/BaseIcon/BaseIcon.js.map +1 -1
  88. package/internal/icons2022/BaseIcon.styles/BaseIcon.styles.js +11 -0
  89. package/internal/icons2022/BaseIcon.styles/BaseIcon.styles.js.map +1 -0
  90. package/internal/icons2022/BaseIcon.styles/package.json +6 -0
  91. package/internal/icons2022/BaseIcon.styles.d.ts +3 -0
  92. package/internal/themes/Theme2022Dark/Theme2022Dark.js +5 -1
  93. package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -1
  94. package/internal/themes/Theme2022Dark.d.ts +1 -1
  95. package/lib/chars/chars.js +1 -1
  96. package/lib/chars/chars.js.map +1 -1
  97. package/lib/chars.d.ts +1 -1
  98. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +50 -0
  99. package/lib/featureFlagsContext/FeatureFlagsHelpers/FeatureFlagsHelpers.js +5 -0
  100. package/lib/featureFlagsContext/FeatureFlagsHelpers/FeatureFlagsHelpers.js.map +1 -0
  101. package/lib/featureFlagsContext/FeatureFlagsHelpers/package.json +6 -0
  102. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +4 -0
  103. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +6 -0
  104. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -0
  105. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/package.json +6 -0
  106. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +6 -0
  107. package/lib/featureFlagsContext/index/index.js +2 -0
  108. package/lib/featureFlagsContext/index/index.js.map +1 -0
  109. package/lib/featureFlagsContext/index/package.json +6 -0
  110. package/lib/featureFlagsContext/index.d.ts +2 -0
  111. package/lib/featureFlagsContext/package.json +6 -0
  112. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollContainer.tsx"],"names":["ScrollContainerDataTids","root","inner","ScrollContainer","rootNode","getProps","defaultProps","render","props","disabled","children","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","setRootNode","styles","handleMouseMove","handleMouseLeave","refInner","globalClasses","isIE11","innerIE11","handleNativeScroll","axis","refScrollBar","refScrollBarX","refScrollBarY","offsetY","offsetX","invert","hideScrollBar","disableAnimations","hideScrollBarDelay","offset","handleScrollStateChange","scrollState","scrollY","scrollX","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","event","reflow","onScroll","preventDefault","LayoutEvents","emit","globalObject","WheelEvent","shiftKey","hasScrollBar","scrollSizeParametersNames","pos","size","deltaY","right","currentTarget","pageX","bottom","pageY","setHover","updateInnerElement","setInnerElement","componentDidMount","componentDidUpdate","prevProps","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","oneOfType","string","number","oneOf","func","isTestEnv"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isInstanceOf } from '@skbkontur/global-object';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTestEnv } from '../../lib/currentEnvironment';\n\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n getScrollYOffset,\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n} from './ScrollContainer.helpers';\nimport { ScrollAxis, ScrollBar, ScrollBarScrollState } from './ScrollBar';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollContainerScrollState = ScrollContainerScrollStateY; // deprecated\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\ntype OffsetCSSPropsY = 'top' | 'right' | 'bottom';\ntype OffsetCSSPropsX = 'right' | 'bottom' | 'left';\n\nexport interface ScrollContainerProps extends CommonProps {\n /**\n * Инвертировать цвет скроллбара\n * @default false\n */\n invert?: boolean;\n maxHeight?: React.CSSProperties['maxHeight'];\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * @default false\n */\n preventWindowScroll?: boolean;\n /**\n * Поведение скролла (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto'\n */\n scrollBehaviour?: ScrollBehaviour;\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n onScrollStateChange?: (scrollYState: ScrollContainerScrollState) => void; // deprecated\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n /**\n * Отключение кастомного скролла\n */\n disabled?: boolean;\n /**\n * Смещение вертикального скроллбара\n */\n offsetY?: Partial<Record<OffsetCSSPropsY, React.CSSProperties[OffsetCSSPropsY]>>;\n /**\n * Смещение горизонтального скроллбара\n */\n offsetX?: Partial<Record<OffsetCSSPropsX, React.CSSProperties[OffsetCSSPropsX]>>;\n /**\n * Скрывать скроллбар при отсутствии активности пользователя\n */\n hideScrollBar?: boolean;\n /**\n * Задержка перед скрытием скроллбара, ms. Работает только если `hideScrollBar = true`\n */\n hideScrollBarDelay?: number;\n /**\n * Отключить анимации\n */\n disableAnimations?: boolean;\n}\n\nexport const ScrollContainerDataTids = {\n root: 'ScrollContainer__root',\n inner: 'ScrollContainer__inner',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n ScrollContainerProps,\n 'invert' | 'scrollBehaviour' | 'preventWindowScroll' | 'hideScrollBar' | 'disableAnimations' | 'hideScrollBarDelay'\n >\n>;\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n\n public inner: Nullable<HTMLElement>;\n\n public static propTypes = {\n invert: PropTypes.bool,\n maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n scrollBehaviour: PropTypes.oneOf(['auto', 'smooth']),\n preventWindowScroll: PropTypes.bool,\n onScrollStateChange: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n hideScrollBar: false,\n disableAnimations: isTestEnv,\n hideScrollBarDelay: 500,\n };\n\n private getProps = createPropsGetter(ScrollContainer.defaultProps);\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.updateInnerElement();\n }\n\n public componentDidUpdate(prevProps: ScrollContainerProps) {\n const preventWindowScroll = this.getProps().preventWindowScroll;\n if (this.inner) {\n if (prevProps.preventWindowScroll && !preventWindowScroll) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n if (!prevProps.preventWindowScroll && preventWindowScroll) {\n this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n }\n\n if (prevProps.disabled !== this.props.disabled && !this.props.disabled) {\n this.updateInnerElement();\n }\n }\n\n public render = () => {\n const props = this.props;\n\n if (this.props.disabled) {\n return this.props.children;\n }\n\n const innerStyle: React.CSSProperties = {\n scrollBehavior: this.getProps().scrollBehaviour,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth,\n };\n\n const scrollbarY = this.renderScrollbar('y');\n const scrollbarX = this.renderScrollbar('x');\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={ScrollContainerDataTids.root}\n className={styles.root()}\n onMouseMove={this.handleMouseMove}\n onMouseLeave={this.handleMouseLeave}\n >\n {scrollbarY}\n {scrollbarX}\n <div\n style={innerStyle}\n ref={this.refInner}\n className={cx(styles.inner(), globalClasses.inner, isIE11 && styles.innerIE11())}\n data-tid={ScrollContainerDataTids.inner}\n onScroll={this.handleNativeScroll}\n >\n {props.children}\n </div>\n </div>\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n * @param {Element} element\n */\n public scrollTo(element: Nullable<HTMLElement>) {\n if (!element || !this.inner) {\n return;\n }\n\n this.inner.scrollLeft = element.offsetLeft;\n this.inner.scrollTop = getScrollYOffset(element, this.inner);\n }\n\n /**\n * @public\n */\n public scrollToTop() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * @public\n */\n public scrollToBottom() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;\n }\n\n /**\n * @public\n */\n public scrollToLeft() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * @public\n */\n public scrollToRight() {\n if (!this.inner) {\n return;\n }\n\n this.inner.scrollLeft = this.inner.scrollWidth - this.inner.offsetWidth;\n }\n\n public hasScrollBar(axis: ScrollAxis) {\n if (!this.inner) {\n return false;\n }\n\n return axis === 'x'\n ? this.inner.offsetWidth < this.inner.scrollWidth\n : this.inner.offsetHeight < this.inner.scrollHeight;\n }\n\n private renderScrollbar = (axis: ScrollAxis) => {\n const refScrollBar = axis === 'x' ? this.refScrollBarX : this.refScrollBarY;\n const { offsetY, offsetX, invert, hideScrollBar, disableAnimations, hideScrollBarDelay } = this.getProps();\n\n const offset = axis === 'x' ? offsetX : offsetY;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={invert}\n onScrollStateChange={this.handleScrollStateChange}\n offset={offset}\n hideScrollBar={hideScrollBar}\n disableAnimations={disableAnimations}\n hideScrollBarDelay={hideScrollBarDelay}\n />\n );\n };\n\n private handleScrollStateChange = (scrollState: ScrollBarScrollState, axis: ScrollAxis) => {\n if (!this.scrollY || !this.scrollX) {\n return;\n }\n\n if (axis === 'x') {\n const scrollXState = convertScrollbarXScrollState(scrollState);\n\n this.props.onScrollStateChangeX?.(scrollXState);\n return;\n }\n\n const scrollYState = convertScrollbarYScrollState(scrollState);\n\n this.props.onScrollStateChange?.(scrollYState);\n this.props.onScrollStateChangeY?.(scrollYState);\n };\n\n private refScrollBarY = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollY = scrollbar;\n };\n\n private refScrollBarX = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollX = scrollbar;\n };\n\n private refInner = (element: HTMLElement | null) => {\n if (!this.inner && element && this.getProps().preventWindowScroll) {\n element.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n if (this.inner && !element) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n this.inner = element;\n };\n\n private handleNativeScroll = (event: React.UIEvent<HTMLDivElement>) => {\n this.scrollY?.reflow(event);\n this.scrollX?.reflow(event);\n\n this.props.onScroll?.(event);\n if (this.getProps().preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n\n const axis: ScrollAxis = event.shiftKey ? 'x' : 'y';\n\n if (this.hasScrollBar(axis)) {\n const { pos, size, offset } = scrollSizeParametersNames[axis];\n\n if (event.deltaY > 0 && this.inner[size] <= this.inner[pos] + this.inner[offset]) {\n event.preventDefault();\n return false;\n }\n if (event.deltaY < 0 && this.inner[pos] <= 0) {\n event.preventDefault();\n return false;\n }\n }\n };\n\n private handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const right = getDOMRect(event.currentTarget).right - event.pageX;\n const bottom = getDOMRect(event.currentTarget).bottom - event.pageY;\n\n this.scrollY?.setHover(right <= 12);\n this.scrollX?.setHover(right >= 12 && bottom <= 12);\n };\n\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n };\n\n private updateInnerElement = () => {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\n };\n}\n"]}
1
+ {"version":3,"sources":["ScrollContainer.tsx"],"names":["ScrollContainerDataTids","root","inner","ScrollContainer","rootNode","getProps","defaultProps","initialIsScrollBarVisible","hideScrollBar","showScrollBar","state","isScrollBarXVisible","isScrollBarYVisible","isHovered","render","props","disabled","children","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","setRootNode","styles","handleMouseEnter","handleMouseMove","handleMouseLeave","refInner","globalClasses","isIE11","innerIE11","handleNativeScroll","axis","offsetY","offsetX","invert","disableAnimations","isAxisX","refScrollBar","refScrollBarX","refScrollBarY","offset","isVisible","handleScroll","handleScrollStateChange","scrollState","scrollY","scrollX","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","prevScrollState","showScrollBarOnMouseWheel","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","event","reflow","onScroll","preventDefault","LayoutEvents","emit","isScrollBarVisible","setState","isScrollBarXHovered","getHover","isScrollBarYHovered","hideScrollBarDelay","globalObject","WheelEvent","shiftKey","hasScrollBar","scrollSizeParametersNames","pos","size","deltaY","right","currentTarget","pageX","bottom","pageY","setHover","updateInnerElement","setInnerElement","componentDidMount","componentDidUpdate","prevProps","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","oneOfType","string","number","oneOf","func","isTestEnv"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isInstanceOf } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTestEnv } from '../../lib/currentEnvironment';\n\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n getScrollYOffset,\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n} from './ScrollContainer.helpers';\nimport { ScrollAxis, ScrollBar, ScrollBarScrollState } from './ScrollBar';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollContainerScrollState = ScrollContainerScrollStateY; // deprecated\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\ntype OffsetCSSPropsY = 'top' | 'right' | 'bottom';\ntype OffsetCSSPropsX = 'right' | 'bottom' | 'left';\n\nexport interface ScrollContainerProps extends CommonProps {\n /**\n * Инвертировать цвет скроллбара\n * @default false\n */\n invert?: boolean;\n maxHeight?: React.CSSProperties['maxHeight'];\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * @default false\n */\n preventWindowScroll?: boolean;\n /**\n * Поведение скролла (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto'\n */\n scrollBehaviour?: ScrollBehaviour;\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n onScrollStateChange?: (scrollYState: ScrollContainerScrollState) => void; // deprecated\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n /**\n * Отключение кастомного скролла\n */\n disabled?: boolean;\n /**\n * Смещение вертикального скроллбара\n */\n offsetY?: Partial<Record<OffsetCSSPropsY, React.CSSProperties[OffsetCSSPropsY]>>;\n /**\n * Смещение горизонтального скроллбара\n */\n offsetX?: Partial<Record<OffsetCSSPropsX, React.CSSProperties[OffsetCSSPropsX]>>;\n /**\n * Скрывать скроллбар при отсутствии активности пользователя\n * @deprecated use showScrollBar\n */\n hideScrollBar?: boolean;\n /**\n * Показывать скроллбар\n */\n showScrollBar?: 'always' | 'scroll' | 'hover';\n /**\n * Задержка перед скрытием скроллбара, ms. Работает только если `hideScrollBar = true` или `showScrollBar = 'scroll' | 'hover'`\n */\n hideScrollBarDelay?: number;\n /**\n * Отключить анимации\n */\n disableAnimations?: boolean;\n}\n\nexport const ScrollContainerDataTids = {\n root: 'ScrollContainer__root',\n inner: 'ScrollContainer__inner',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n ScrollContainerProps,\n | 'invert'\n | 'scrollBehaviour'\n | 'preventWindowScroll'\n | 'hideScrollBar'\n | 'disableAnimations'\n | 'hideScrollBarDelay'\n | 'showScrollBar'\n >\n>;\n\ninterface ScrollContainerState {\n isScrollBarXVisible: boolean;\n isScrollBarYVisible: boolean;\n isHovered: boolean;\n}\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps, ScrollContainerState> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n\n public inner: Nullable<HTMLElement>;\n\n public static propTypes = {\n invert: PropTypes.bool,\n maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n scrollBehaviour: PropTypes.oneOf(['auto', 'smooth']),\n preventWindowScroll: PropTypes.bool,\n onScrollStateChange: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n hideScrollBar: false,\n disableAnimations: isTestEnv,\n hideScrollBarDelay: 500,\n showScrollBar: 'always',\n };\n\n private getProps = createPropsGetter(ScrollContainer.defaultProps);\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private setRootNode!: TSetRootNode;\n private initialIsScrollBarVisible = !this.getProps().hideScrollBar && this.getProps().showScrollBar === 'always';\n\n public state: ScrollContainerState = {\n isScrollBarXVisible: this.initialIsScrollBarVisible,\n isScrollBarYVisible: this.initialIsScrollBarVisible,\n isHovered: false,\n };\n\n public componentDidMount() {\n this.updateInnerElement();\n }\n\n public componentDidUpdate(prevProps: ScrollContainerProps) {\n const preventWindowScroll = this.getProps().preventWindowScroll;\n if (this.inner) {\n if (prevProps.preventWindowScroll && !preventWindowScroll) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n if (!prevProps.preventWindowScroll && preventWindowScroll) {\n this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n }\n\n if (prevProps.disabled !== this.props.disabled && !this.props.disabled) {\n this.updateInnerElement();\n }\n }\n\n public render = () => {\n const props = this.props;\n\n if (this.props.disabled) {\n return this.props.children;\n }\n\n const innerStyle: React.CSSProperties = {\n scrollBehavior: this.getProps().scrollBehaviour,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth,\n };\n\n const scrollbarY = this.renderScrollbar('y');\n const scrollbarX = this.renderScrollbar('x');\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={ScrollContainerDataTids.root}\n className={styles.root()}\n onMouseEnter={this.handleMouseEnter}\n onMouseMove={this.handleMouseMove}\n onMouseLeave={this.handleMouseLeave}\n >\n {scrollbarY}\n {scrollbarX}\n <div\n style={innerStyle}\n ref={this.refInner}\n className={cx(styles.inner(), globalClasses.inner, isIE11 && styles.innerIE11())}\n data-tid={ScrollContainerDataTids.inner}\n onScroll={this.handleNativeScroll}\n >\n {props.children}\n </div>\n </div>\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n * @param {Element} element\n */\n public scrollTo(element: Nullable<HTMLElement>) {\n if (!element || !this.inner) {\n return;\n }\n\n this.inner.scrollLeft = element.offsetLeft;\n this.inner.scrollTop = getScrollYOffset(element, this.inner);\n }\n\n /**\n * @public\n */\n public scrollToTop() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * @public\n */\n public scrollToBottom() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;\n }\n\n /**\n * @public\n */\n public scrollToLeft() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * @public\n */\n public scrollToRight() {\n if (!this.inner) {\n return;\n }\n\n this.inner.scrollLeft = this.inner.scrollWidth - this.inner.offsetWidth;\n }\n\n public hasScrollBar(axis: ScrollAxis) {\n if (!this.inner) {\n return false;\n }\n\n return axis === 'x'\n ? this.inner.offsetWidth < this.inner.scrollWidth\n : this.inner.offsetHeight < this.inner.scrollHeight;\n }\n\n private renderScrollbar = (axis: ScrollAxis) => {\n const { offsetY, offsetX, invert, disableAnimations } = this.getProps();\n const isAxisX = axis === 'x';\n const refScrollBar = isAxisX ? this.refScrollBarX : this.refScrollBarY;\n const offset = isAxisX ? offsetX : offsetY;\n const isVisible = isAxisX ? this.state.isScrollBarXVisible : this.state.isScrollBarYVisible;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={invert}\n onScroll={this.handleScroll}\n offset={offset}\n disableAnimations={disableAnimations}\n isVisible={isVisible}\n />\n );\n };\n\n private handleScrollStateChange = (scrollState: ScrollBarScrollState, axis: ScrollAxis) => {\n if (!this.scrollY || !this.scrollX) {\n return;\n }\n\n if (axis === 'x') {\n const scrollXState = convertScrollbarXScrollState(scrollState);\n\n this.props.onScrollStateChangeX?.(scrollXState);\n return;\n }\n\n const scrollYState = convertScrollbarYScrollState(scrollState);\n\n this.props.onScrollStateChange?.(scrollYState);\n this.props.onScrollStateChangeY?.(scrollYState);\n };\n\n private handleScroll = (\n axis: ScrollAxis,\n scrollState: ScrollBarScrollState,\n prevScrollState: ScrollBarScrollState,\n ) => {\n if (scrollState !== prevScrollState) {\n this.handleScrollStateChange(scrollState, axis);\n }\n const { hideScrollBar, showScrollBar } = this.getProps();\n (hideScrollBar || showScrollBar === 'scroll') && this.showScrollBarOnMouseWheel(axis);\n };\n\n private refScrollBarY = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollY = scrollbar;\n };\n\n private refScrollBarX = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollX = scrollbar;\n };\n\n private refInner = (element: HTMLElement | null) => {\n if (!this.inner && element && this.getProps().preventWindowScroll) {\n element.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n if (this.inner && !element) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n this.inner = element;\n };\n\n private handleNativeScroll = (event: React.UIEvent<HTMLDivElement>) => {\n this.scrollY?.reflow();\n this.scrollX?.reflow();\n\n this.props.onScroll?.(event);\n if (this.getProps().preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private showScrollBarOnMouseWheel = (axis: ScrollAxis) => {\n const isScrollBarVisible = axis === 'x' ? this.state.isScrollBarXVisible : this.state.isScrollBarYVisible;\n if (!isScrollBarVisible) {\n axis === 'x' ? this.setState({ isScrollBarXVisible: true }) : this.setState({ isScrollBarYVisible: true });\n }\n this.hideScrollBar(axis);\n };\n\n private readonly hideScrollBar = debounce((axis: ScrollAxis | 'both') => {\n if (this.state.isHovered) {\n return;\n }\n const isScrollBarXHovered = this.scrollX?.getHover();\n const isScrollBarYHovered = this.scrollY?.getHover();\n if (axis === 'both') {\n !isScrollBarXHovered && !isScrollBarYHovered\n ? this.setState({ isScrollBarXVisible: false, isScrollBarYVisible: false })\n : this.hideScrollBar('both');\n } else if (axis === 'x') {\n !isScrollBarXHovered ? this.setState({ isScrollBarXVisible: false }) : this.hideScrollBar('x');\n } else {\n !isScrollBarYHovered ? this.setState({ isScrollBarYVisible: false }) : this.hideScrollBar('y');\n }\n }, this.getProps().hideScrollBarDelay);\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n\n const axis: ScrollAxis = event.shiftKey ? 'x' : 'y';\n\n if (this.hasScrollBar(axis)) {\n const { pos, size, offset } = scrollSizeParametersNames[axis];\n\n if (event.deltaY > 0 && this.inner[size] <= this.inner[pos] + this.inner[offset]) {\n event.preventDefault();\n return false;\n }\n if (event.deltaY < 0 && this.inner[pos] <= 0) {\n event.preventDefault();\n return false;\n }\n }\n };\n\n private handleMouseEnter = () => {\n this.getProps().showScrollBar === 'hover' &&\n this.setState({ isScrollBarXVisible: true, isScrollBarYVisible: true, isHovered: true });\n };\n\n private handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const right = getDOMRect(event.currentTarget).right - event.pageX;\n const bottom = getDOMRect(event.currentTarget).bottom - event.pageY;\n\n this.scrollY?.setHover(right <= 12);\n this.scrollX?.setHover(right >= 12 && bottom <= 12);\n };\n\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n if (this.getProps().showScrollBar === 'hover') {\n this.setState({ isHovered: false });\n this.hideScrollBar('both');\n }\n };\n\n private updateInnerElement = () => {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\n };\n}\n"]}
@@ -171,7 +171,7 @@ const offsetY = {
171
171
  </div>
172
172
  ```
173
173
 
174
- Проп `hideScrollBar` скрывает скроллбар при отсутствии активности пользователя. Задержку на скрытие скроллбара можно регулировать пропом `hideScrollBarDelay` (по умолчанию 500ms)
174
+ Проп `showScrollBar` со значением `scroll` скрывает скроллбар при отсутствии активности пользователя. Задержку на скрытие скроллбара можно регулировать пропом `hideScrollBarDelay` (по умолчанию 500ms)
175
175
 
176
176
  ```jsx harmony
177
177
  var divStyle = {
@@ -184,7 +184,7 @@ var divStyle = {
184
184
  width: 200,
185
185
  };
186
186
  <div style={divStyle}>
187
- <ScrollContainer hideScrollBar={true}>
187
+ <ScrollContainer showScrollBar={'scroll'}>
188
188
  {Array(30).fill(null).map((_,i) => (
189
189
  <div key={i}>
190
190
  {i}
@@ -193,3 +193,30 @@ var divStyle = {
193
193
  </ScrollContainer>
194
194
  </div>
195
195
  ```
196
+
197
+ Проп `showScrollBar` со значением `hover` позволяет показывать скроллбар только когда курсор находится над скролл контейнером
198
+
199
+ ```jsx harmony
200
+ var divStyle = {
201
+ display: 'inline-block',
202
+ border: '1px solid #f99',
203
+ height: 200,
204
+ margin: 1,
205
+ position: 'relative',
206
+ verticalAlign: 'top',
207
+ width: 200,
208
+ };
209
+
210
+
211
+ <span>
212
+ <div style={divStyle}>
213
+ <ScrollContainer showScrollBar={'hover'}>
214
+ {Array(30).fill(null).map((_,i) => (
215
+ <div key={i}>
216
+ {i}
217
+ </div>
218
+ ))}
219
+ </ScrollContainer>
220
+ </div>
221
+ </span>
222
+ ```
@@ -19,8 +19,4 @@ export declare const styles: {
19
19
  scrollBarContainerX(t: Theme): string;
20
20
  scrollBarX(t: Theme): string;
21
21
  scrollBarXHover(t: Theme): string;
22
- transition(): string;
23
- transitionActive(): string;
24
- transitionLeave(): string;
25
- transitionLeaveActive(): string;
26
22
  };
@@ -1,4 +1,4 @@
1
- "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.styles = exports.globalClasses = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16;
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.styles = exports.globalClasses = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
2
2
 
3
3
 
4
4
  var globalClasses = (0, _Emotion.prefix)('scroll-container')({
@@ -19,7 +19,7 @@ var styles = (0, _Emotion.memoizeStyle)({
19
19
  },
20
20
 
21
21
  inner: function inner() {
22
- return (0, _Emotion.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n position: relative;\n overflow: scroll;\n max-height: 100%;\n max-width: 100%;\n\n /* Hide scrobars without losing functionality */\n scrollbar-width: none;\n -ms-overflow-style: none;\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n "])));
22
+ return (0, _Emotion.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n position: relative;\n overflow: scroll;\n height: 100%;\n width: 100%;\n\n /* Hide scrobars without losing functionality */\n scrollbar-width: none;\n -ms-overflow-style: none;\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n "])));
23
23
 
24
24
 
25
25
 
@@ -46,17 +46,19 @@ var styles = (0, _Emotion.memoizeStyle)({
46
46
  },
47
47
 
48
48
  scrollBar: function scrollBar(t) {
49
- return (0, _Emotion.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["\n position: absolute;\n z-index: 200;\n border-radius: 5px;\n background: ", ";\n opacity: 0;\n "])),
49
+ return (0, _Emotion.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["\n position: absolute;\n z-index: 200;\n border-radius: 5px;\n background: ", ";\n opacity: 0;\n transition: opacity 0.3s ease-out, width 0.2s, height 0.2s;\n "])),
50
50
 
51
51
 
52
52
 
53
53
  t.scrollContainerScrollBarColor);
54
54
 
55
55
 
56
+
56
57
  },
57
58
 
58
59
  visibleScrollBar: function visibleScrollBar() {
59
- return (0, _Emotion.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["\n opacity: 1;\n "])));
60
+ return (0, _Emotion.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["\n opacity: 1;\n transition: opacity 0.1s ease-out, width 0.2s, height 0.2s;\n "])));
61
+
60
62
 
61
63
 
62
64
  },
@@ -79,8 +81,7 @@ var styles = (0, _Emotion.memoizeStyle)({
79
81
  },
80
82
 
81
83
  scrollBarY: function scrollBarY(t) {
82
- return (0, _Emotion.css)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteralLoose2.default)(["\n right: 0;\n transition: width 0.2s;\n width: ", ";\n "])),
83
-
84
+ return (0, _Emotion.css)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteralLoose2.default)(["\n right: 0;\n width: ", ";\n "])),
84
85
 
85
86
  t.scrollContainerScrollBarSize);
86
87
 
@@ -116,8 +117,7 @@ var styles = (0, _Emotion.memoizeStyle)({
116
117
  },
117
118
 
118
119
  scrollBarX: function scrollBarX(t) {
119
- return (0, _Emotion.css)(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteralLoose2.default)(["\n bottom: 0;\n transition: height 0.2s;\n height: ", ";\n "])),
120
-
120
+ return (0, _Emotion.css)(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteralLoose2.default)(["\n bottom: 0;\n height: ", ";\n "])),
121
121
 
122
122
  t.scrollContainerScrollBarSize);
123
123
 
@@ -127,26 +127,4 @@ var styles = (0, _Emotion.memoizeStyle)({
127
127
  return (0, _Emotion.css)(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteralLoose2.default)(["\n height: ", ";\n "])),
128
128
  t.scrollContainerScrollBarHoverSize);
129
129
 
130
- },
131
- transition: function transition() {
132
- return (0, _Emotion.css)(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteralLoose2.default)(["\n opacity: 0 !important; //override scrollBar opacity\n "])));
133
-
134
-
135
- },
136
- transitionActive: function transitionActive() {
137
- return (0, _Emotion.css)(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteralLoose2.default)(["\n transition: opacity 100ms ease-out !important; //override scrollBarX and scrollBarY transition\n opacity: 1 !important; //override scrollBar opacity\n "])));
138
-
139
-
140
-
141
- },
142
- transitionLeave: function transitionLeave() {
143
- return (0, _Emotion.css)(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteralLoose2.default)(["\n opacity: 1 !important; //override scrollBar opacity\n "])));
144
-
145
-
146
- },
147
- transitionLeaveActive: function transitionLeaveActive() {
148
- return (0, _Emotion.css)(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteralLoose2.default)(["\n opacity: 0 !important; //override scrollBar opacity\n transition: opacity 300ms ease-out !important; //override scrollBarX and scrollBarY transition\n "])));
149
-
150
-
151
-
152
130
  } });exports.styles = styles;
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollContainer.styles.ts"],"names":["globalClasses","scrollbarX","scrollbarY","scrollbarContainerX","scrollbarContainerY","inner","styles","root","css","innerIE11","scrollBar","t","scrollContainerScrollBarColor","visibleScrollBar","scrollBarInvert","scrollContainerScrollBarInvertColor","scrollBarContainerY","scrollBarY","scrollContainerScrollBarSize","scrollBarYHover","scrollContainerScrollBarHoverSize","scrollBarContainerX","scrollBarX","scrollBarXHover","transition","transitionActive","transitionLeave","transitionLeaveActive"],"mappings":"oSAAA,oD;;;AAGO,IAAMA,aAAa,GAAG,qBAAO,kBAAP,EAA2B;AACtDC,EAAAA,UAAU,EAAE,aAD0C;AAEtDC,EAAAA,UAAU,EAAE,aAF0C;AAGtDC,EAAAA,mBAAmB,EAAE,uBAHiC;AAItDC,EAAAA,mBAAmB,EAAE,uBAJiC;AAKtDC,EAAAA,KAAK,EAAE,OAL+C,EAA3B,CAAtB,C;;;AAQA,IAAMC,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,kBAC1B;AACL,eAAOC,YAAP;;;;;AAKD,GAPgC;;AASjCH,EAAAA,KATiC,mBASzB;AACN,eAAOG,YAAP;;;;;;;;;;;;;;AAcD,GAxBgC;;AA0BjCC,EAAAA,SA1BiC,uBA0BrB;AACV,eAAOD,YAAP;;;;;;;AAOD,GAlCgC;;AAoCjCE,EAAAA,SApCiC,qBAoCvBC,CApCuB,EAoCb;AAClB,eAAOH,YAAP;;;;AAIgBG,IAAAA,CAAC,CAACC,6BAJlB;;;AAOD,GA5CgC;;AA8CjCC,EAAAA,gBA9CiC,8BA8Cd;AACjB,eAAOL,YAAP;;;AAGD,GAlDgC;;AAoDjCM,EAAAA,eApDiC,2BAoDjBH,CApDiB,EAoDP;AACxB,eAAOH,YAAP;;AAEgBG,IAAAA,CAAC,CAACI,mCAFlB;;AAID,GAzDgC;;AA2DjCC,EAAAA,mBA3DiC,iCA2DX;AACpB,eAAOR,YAAP;;;;;;;AAOD,GAnEgC;;AAqEjCS,EAAAA,UArEiC,sBAqEtBN,CArEsB,EAqEZ;AACnB,eAAOH,YAAP;;;AAGWG,IAAAA,CAAC,CAACO,4BAHb;;AAKD,GA3EgC;;AA6EjCC,EAAAA,eA7EiC,2BA6EjBR,CA7EiB,EA6EP;AACxB,eAAOH,YAAP;AACWG,IAAAA,CAAC,CAACS,iCADb;;AAGD,GAjFgC;;AAmFjCC,EAAAA,mBAnFiC,+BAmFbV,CAnFa,EAmFH;AAC5B,eAAOH,YAAP;;;;;;;AAOKR,IAAAA,aAAa,CAACI,mBAPnB;AAQyBO,IAAAA,CAAC,CAACS,iCAR3B;;;AAWSpB,IAAAA,aAAa,CAACK,KAXvB;;;;;AAgBqBM,IAAAA,CAAC,CAACS,iCAhBvB;;;;AAoBD,GAxGgC;;AA0GjCE,EAAAA,UA1GiC,sBA0GtBX,CA1GsB,EA0GZ;AACnB,eAAOH,YAAP;;;AAGYG,IAAAA,CAAC,CAACO,4BAHd;;AAKD,GAhHgC;;AAkHjCK,EAAAA,eAlHiC,2BAkHjBZ,CAlHiB,EAkHP;AACxB,eAAOH,YAAP;AACYG,IAAAA,CAAC,CAACS,iCADd;;AAGD,GAtHgC;AAuHjCI,EAAAA,UAvHiC,wBAuHpB;AACX,eAAOhB,YAAP;;;AAGD,GA3HgC;AA4HjCiB,EAAAA,gBA5HiC,8BA4Hd;AACjB,eAAOjB,YAAP;;;;AAID,GAjIgC;AAkIjCkB,EAAAA,eAlIiC,6BAkIf;AAChB,eAAOlB,YAAP;;;AAGD,GAtIgC;AAuIjCmB,EAAAA,qBAvIiC,mCAuIT;AACtB,eAAOnB,YAAP;;;;AAID,GA5IgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('scroll-container')({\n scrollbarX: 'scrollbar-x',\n scrollbarY: 'scrollbar-y',\n scrollbarContainerX: 'scrollbar-container-x',\n scrollbarContainerY: 'scrollbar-container-y',\n inner: 'inner',\n});\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n height: 100%;\n overflow: hidden;\n position: relative;\n `;\n },\n\n inner() {\n return css`\n position: relative;\n overflow: scroll;\n max-height: 100%;\n max-width: 100%;\n\n /* Hide scrobars without losing functionality */\n scrollbar-width: none;\n -ms-overflow-style: none;\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n `;\n },\n\n innerIE11() {\n return css`\n /* IE sometimes enabled scroll: http://codepen.io/anon/pen/RRrLNX */\n margin-bottom: -1px;\n padding-bottom: 1px;\n margin-right: -1px;\n padding-right: 1px;\n `;\n },\n\n scrollBar(t: Theme) {\n return css`\n position: absolute;\n z-index: 200;\n border-radius: 5px;\n background: ${t.scrollContainerScrollBarColor};\n opacity: 0;\n `;\n },\n\n visibleScrollBar() {\n return css`\n opacity: 1;\n `;\n },\n\n scrollBarInvert(t: Theme) {\n return css`\n background: #ccc;\n background: ${t.scrollContainerScrollBarInvertColor};\n `;\n },\n\n scrollBarContainerY() {\n return css`\n position: absolute;\n right: 2px;\n top: 1px;\n bottom: 1px;\n width: 0;\n `;\n },\n\n scrollBarY(t: Theme) {\n return css`\n right: 0;\n transition: width 0.2s;\n width: ${t.scrollContainerScrollBarSize};\n `;\n },\n\n scrollBarYHover(t: Theme) {\n return css`\n width: ${t.scrollContainerScrollBarHoverSize};\n `;\n },\n\n scrollBarContainerX(t: Theme) {\n return css`\n position: absolute;\n right: 1px;\n bottom: 1px;\n left: 1px;\n height: 0;\n\n .${globalClasses.scrollbarContainerY} ~ & {\n margin-right: calc(${t.scrollContainerScrollBarHoverSize} + 3px) !important;\n }\n\n & ~ .${globalClasses.inner} {\n &::after {\n content: ' ';\n width: 100%;\n display: block;\n height: calc(${t.scrollContainerScrollBarHoverSize} + 2px);\n }\n }\n `;\n },\n\n scrollBarX(t: Theme) {\n return css`\n bottom: 0;\n transition: height 0.2s;\n height: ${t.scrollContainerScrollBarSize};\n `;\n },\n\n scrollBarXHover(t: Theme) {\n return css`\n height: ${t.scrollContainerScrollBarHoverSize};\n `;\n },\n transition() {\n return css`\n opacity: 0 !important; //override scrollBar opacity\n `;\n },\n transitionActive() {\n return css`\n transition: opacity 100ms ease-out !important; //override scrollBarX and scrollBarY transition\n opacity: 1 !important; //override scrollBar opacity\n `;\n },\n transitionLeave() {\n return css`\n opacity: 1 !important; //override scrollBar opacity\n `;\n },\n transitionLeaveActive() {\n return css`\n opacity: 0 !important; //override scrollBar opacity\n transition: opacity 300ms ease-out !important; //override scrollBarX and scrollBarY transition\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["ScrollContainer.styles.ts"],"names":["globalClasses","scrollbarX","scrollbarY","scrollbarContainerX","scrollbarContainerY","inner","styles","root","css","innerIE11","scrollBar","t","scrollContainerScrollBarColor","visibleScrollBar","scrollBarInvert","scrollContainerScrollBarInvertColor","scrollBarContainerY","scrollBarY","scrollContainerScrollBarSize","scrollBarYHover","scrollContainerScrollBarHoverSize","scrollBarContainerX","scrollBarX","scrollBarXHover"],"mappings":"oSAAA,oD;;;AAGO,IAAMA,aAAa,GAAG,qBAAO,kBAAP,EAA2B;AACtDC,EAAAA,UAAU,EAAE,aAD0C;AAEtDC,EAAAA,UAAU,EAAE,aAF0C;AAGtDC,EAAAA,mBAAmB,EAAE,uBAHiC;AAItDC,EAAAA,mBAAmB,EAAE,uBAJiC;AAKtDC,EAAAA,KAAK,EAAE,OAL+C,EAA3B,CAAtB,C;;;AAQA,IAAMC,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,kBAC1B;AACL,eAAOC,YAAP;;;;;AAKD,GAPgC;;AASjCH,EAAAA,KATiC,mBASzB;AACN,eAAOG,YAAP;;;;;;;;;;;;;;AAcD,GAxBgC;;AA0BjCC,EAAAA,SA1BiC,uBA0BrB;AACV,eAAOD,YAAP;;;;;;;AAOD,GAlCgC;;AAoCjCE,EAAAA,SApCiC,qBAoCvBC,CApCuB,EAoCb;AAClB,eAAOH,YAAP;;;;AAIgBG,IAAAA,CAAC,CAACC,6BAJlB;;;;AAQD,GA7CgC;;AA+CjCC,EAAAA,gBA/CiC,8BA+Cd;AACjB,eAAOL,YAAP;;;;AAID,GApDgC;;AAsDjCM,EAAAA,eAtDiC,2BAsDjBH,CAtDiB,EAsDP;AACxB,eAAOH,YAAP;;AAEgBG,IAAAA,CAAC,CAACI,mCAFlB;;AAID,GA3DgC;;AA6DjCC,EAAAA,mBA7DiC,iCA6DX;AACpB,eAAOR,YAAP;;;;;;;AAOD,GArEgC;;AAuEjCS,EAAAA,UAvEiC,sBAuEtBN,CAvEsB,EAuEZ;AACnB,eAAOH,YAAP;;AAEWG,IAAAA,CAAC,CAACO,4BAFb;;AAID,GA5EgC;;AA8EjCC,EAAAA,eA9EiC,2BA8EjBR,CA9EiB,EA8EP;AACxB,eAAOH,YAAP;AACWG,IAAAA,CAAC,CAACS,iCADb;;AAGD,GAlFgC;;AAoFjCC,EAAAA,mBApFiC,+BAoFbV,CApFa,EAoFH;AAC5B,eAAOH,YAAP;;;;;;;AAOKR,IAAAA,aAAa,CAACI,mBAPnB;AAQyBO,IAAAA,CAAC,CAACS,iCAR3B;;;AAWSpB,IAAAA,aAAa,CAACK,KAXvB;;;;;AAgBqBM,IAAAA,CAAC,CAACS,iCAhBvB;;;;AAoBD,GAzGgC;;AA2GjCE,EAAAA,UA3GiC,sBA2GtBX,CA3GsB,EA2GZ;AACnB,eAAOH,YAAP;;AAEYG,IAAAA,CAAC,CAACO,4BAFd;;AAID,GAhHgC;;AAkHjCK,EAAAA,eAlHiC,2BAkHjBZ,CAlHiB,EAkHP;AACxB,eAAOH,YAAP;AACYG,IAAAA,CAAC,CAACS,iCADd;;AAGD,GAtHgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('scroll-container')({\n scrollbarX: 'scrollbar-x',\n scrollbarY: 'scrollbar-y',\n scrollbarContainerX: 'scrollbar-container-x',\n scrollbarContainerY: 'scrollbar-container-y',\n inner: 'inner',\n});\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n height: 100%;\n overflow: hidden;\n position: relative;\n `;\n },\n\n inner() {\n return css`\n position: relative;\n overflow: scroll;\n height: 100%;\n width: 100%;\n\n /* Hide scrobars without losing functionality */\n scrollbar-width: none;\n -ms-overflow-style: none;\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n `;\n },\n\n innerIE11() {\n return css`\n /* IE sometimes enabled scroll: http://codepen.io/anon/pen/RRrLNX */\n margin-bottom: -1px;\n padding-bottom: 1px;\n margin-right: -1px;\n padding-right: 1px;\n `;\n },\n\n scrollBar(t: Theme) {\n return css`\n position: absolute;\n z-index: 200;\n border-radius: 5px;\n background: ${t.scrollContainerScrollBarColor};\n opacity: 0;\n transition: opacity 0.3s ease-out, width 0.2s, height 0.2s;\n `;\n },\n\n visibleScrollBar() {\n return css`\n opacity: 1;\n transition: opacity 0.1s ease-out, width 0.2s, height 0.2s;\n `;\n },\n\n scrollBarInvert(t: Theme) {\n return css`\n background: #ccc;\n background: ${t.scrollContainerScrollBarInvertColor};\n `;\n },\n\n scrollBarContainerY() {\n return css`\n position: absolute;\n right: 2px;\n top: 1px;\n bottom: 1px;\n width: 0;\n `;\n },\n\n scrollBarY(t: Theme) {\n return css`\n right: 0;\n width: ${t.scrollContainerScrollBarSize};\n `;\n },\n\n scrollBarYHover(t: Theme) {\n return css`\n width: ${t.scrollContainerScrollBarHoverSize};\n `;\n },\n\n scrollBarContainerX(t: Theme) {\n return css`\n position: absolute;\n right: 1px;\n bottom: 1px;\n left: 1px;\n height: 0;\n\n .${globalClasses.scrollbarContainerY} ~ & {\n margin-right: calc(${t.scrollContainerScrollBarHoverSize} + 3px) !important;\n }\n\n & ~ .${globalClasses.inner} {\n &::after {\n content: ' ';\n width: 100%;\n display: block;\n height: calc(${t.scrollContainerScrollBarHoverSize} + 2px);\n }\n }\n `;\n },\n\n scrollBarX(t: Theme) {\n return css`\n bottom: 0;\n height: ${t.scrollContainerScrollBarSize};\n `;\n },\n\n scrollBarXHover(t: Theme) {\n return css`\n height: ${t.scrollContainerScrollBarHoverSize};\n `;\n },\n});\n"]}
@@ -176,12 +176,14 @@ declare type DefaultProps<T> = Required<Pick<TokenInputProps<T>, 'selectedItems'
176
176
  export declare class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {
177
177
  static __KONTUR_REACT_UI__: string;
178
178
  static defaultProps: DefaultProps<any>;
179
+ private getDelimiters;
179
180
  private getProps;
180
181
  state: TokenInputState<T>;
181
182
  private readonly textareaId;
182
183
  private rootId;
183
184
  private readonly locale;
184
185
  private theme;
186
+ private featureFlags;
185
187
  private input;
186
188
  private tokensInputMenu;
187
189
  private textHelper;
@@ -38,12 +38,19 @@ var _Emotion = require("../../lib/theming/Emotion");
38
38
  var _rootNode = require("../../lib/rootNode");
39
39
  var _createPropsGetter = require("../../lib/createPropsGetter");
40
40
  var _uidUtils = require("../../lib/uidUtils");
41
+ var _featureFlagsContext = require("../../lib/featureFlagsContext");
42
+
43
+
44
+
45
+
41
46
 
42
47
  var _locale = require("./locale");
43
48
  var _TokenInput = require("./TokenInput.styles");
44
49
  var _TokenInputReducer = require("./TokenInputReducer");
45
50
  var _TokenInputMenu = require("./TokenInputMenu");
46
- var _TextWidthHelper = require("./TextWidthHelper");var _dec, _class, _class2, _temp;function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}var
51
+ var _TextWidthHelper = require("./TextWidthHelper");var _dec, _class, _class2, _temp;function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
52
+
53
+ var TEMP_FAKE_FLAG = 'TEMP_FAKE_FLAG';var
47
54
 
48
55
  TokenInputType;exports.TokenInputType = TokenInputType;(function (TokenInputType) {TokenInputType[TokenInputType["WithReference"] = 0] = "WithReference";TokenInputType[TokenInputType["WithoutReference"] = 1] = "WithoutReference";TokenInputType[TokenInputType["Combined"] = 2] = "Combined";})(TokenInputType || (exports.TokenInputType = TokenInputType = {}));
49
56
 
@@ -283,7 +290,23 @@ TokenInput = (_dec = (0, _decorators.locale)('TokenInput', _locale.TokenInputLoc
283
290
 
284
291
 
285
292
 
286
- getProps = (0, _createPropsGetter.createPropsGetter)(TokenInput.defaultProps);_this.
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
287
310
 
288
311
  state = DefaultState;_this.
289
312
 
@@ -291,6 +314,7 @@ TokenInput = (_dec = (0, _decorators.locale)('TokenInput', _locale.TokenInputLoc
291
314
  rootId = _Popup.PopupIds.root + (0, _utils.getRandomID)();_this.
292
315
 
293
316
 
317
+
294
318
  input = null;_this.
295
319
  tokensInputMenu = null;_this.
296
320
  textHelper = null;_this.
@@ -486,6 +510,13 @@ TokenInput = (_dec = (0, _decorators.locale)('TokenInput', _locale.TokenInputLoc
486
510
 
487
511
 
488
512
 
513
+
514
+
515
+
516
+
517
+
518
+
519
+
489
520
 
490
521
 
491
522
 
@@ -1150,11 +1181,11 @@ TokenInput = (_dec = (0, _decorators.locale)('TokenInput', _locale.TokenInputLoc
1150
1181
  }
1151
1182
 
1152
1183
  return availableIndex;
1153
- };return _this;}var _proto = TokenInput.prototype;_proto.componentDidMount = function componentDidMount() {var _globalObject$documen;this.updateInputTextWidth();(_globalObject$documen = _globalObject.globalObject.document) == null ? void 0 : _globalObject$documen.addEventListener('copy', this.handleCopy);if (this.props.autoFocus) {this.focusInput();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {if (prevState.inputValue !== this.state.inputValue) {this.updateInputTextWidth();}if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });}if (prevProps.selectedItems.length !== this.getProps().selectedItems.length) {LayoutEvents.emit();this.memoizedTokens.clear();}if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);}};_proto.componentWillUnmount = function componentWillUnmount() {var _globalObject$documen2;(_globalObject$documen2 = _globalObject.globalObject.document) == null ? void 0 : _globalObject$documen2.removeEventListener('copy', this.handleCopy);} /**
1184
+ };return _this;}var _proto = TokenInput.prototype;_proto.getDelimiters = function getDelimiters() {var _this$props$delimiter;var delimiters = (_this$props$delimiter = this.props.delimiters) != null ? _this$props$delimiter : [];if (delimiters.every(function (delimiter) {return delimiter !== TEMP_FAKE_FLAG;})) {return delimiters;}if (this.featureFlags.tokenInputRemoveWhitespaceFromDefaultDelimiters) {return delimiters.filter(function (delimiter) {return delimiter !== ' ' && delimiter !== TEMP_FAKE_FLAG;});}return delimiters.filter(function (delimiter) {return delimiter !== TEMP_FAKE_FLAG;});};_proto.getProps = function getProps() {var propsGetter = (0, _createPropsGetter.createPropsGetter)(TokenInput.defaultProps);var propsWithOldDelimiters = propsGetter.apply(this);return (0, _extends2.default)({}, propsWithOldDelimiters, { delimiters: this.getDelimiters() });};_proto.componentDidMount = function componentDidMount() {var _globalObject$documen;this.updateInputTextWidth();(_globalObject$documen = _globalObject.globalObject.document) == null ? void 0 : _globalObject$documen.addEventListener('copy', this.handleCopy);if (this.props.autoFocus) {this.focusInput();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {if (prevState.inputValue !== this.state.inputValue) {this.updateInputTextWidth();}if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });}if (prevProps.selectedItems.length !== this.getProps().selectedItems.length) {LayoutEvents.emit();this.memoizedTokens.clear();}if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);}};_proto.componentWillUnmount = function componentWillUnmount() {var _globalObject$documen2;(_globalObject$documen2 = _globalObject.globalObject.document) == null ? void 0 : _globalObject$documen2.removeEventListener('copy', this.handleCopy);} /**
1154
1185
  * @public
1155
1186
  */;_proto.focus = function focus() {var _this$input8;(_this$input8 = this.input) == null ? void 0 : _this$input8.focus();} /**
1156
1187
  * @public
1157
- */;_proto.blur = function blur() {var _this$input9;(_this$input9 = this.input) == null ? void 0 : _this$input9.blur();};_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 _cx, _cx2, _cx3;if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {throw Error('Missed getItems for type ' + this.type);}var _this$props2 = this.props,maxMenuHeight = _this$props2.maxMenuHeight,error = _this$props2.error,warning = _this$props2.warning,disabled = _this$props2.disabled,placeholder = _this$props2.placeholder,renderNotFound = _this$props2.renderNotFound,hideMenuIfEmptyInputValue = _this$props2.hideMenuIfEmptyInputValue,inputMode = _this$props2.inputMode,renderTotalCount = _this$props2.renderTotalCount,totalCount = _this$props2.totalCount,ariaDescribedby = _this$props2['aria-describedby'],ariaLabel = _this$props2['aria-label'];var _this$getProps8 = this.getProps(),selectedItems = _this$getProps8.selectedItems,width = _this$getProps8.width,onMouseEnter = _this$getProps8.onMouseEnter,onMouseLeave = _this$getProps8.onMouseLeave,menuWidth = _this$getProps8.menuWidth,menuAlign = _this$getProps8.menuAlign,renderItem = _this$getProps8.renderItem;var _this$state3 = this.state,activeTokens = _this$state3.activeTokens,inFocus = _this$state3.inFocus,inputValueWidth = _this$state3.inputValueWidth,inputValue = _this$state3.inputValue,reservedInputValue = _this$state3.reservedInputValue,autocompleteItems = _this$state3.autocompleteItems,loading = _this$state3.loading,inputValueHeight = _this$state3.inputValueHeight;var showMenu = this.type !== TokenInputType.WithoutReference && this.isCursorVisible && activeTokens.length === 0 && (inputValue !== '' || !hideMenuIfEmptyInputValue);var theme = this.theme;var lineHeight = parseInt(theme.tokenInputLineHeight, 10) || 0;var inputInlineStyles = { // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости
1188
+ */;_proto.blur = function blur() {var _this$input9;(_this$input9 = this.input) == null ? void 0 : _this$input9.blur();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_featureFlagsContext.ReactUIFeatureFlagsContext.Consumer, null, function (flags) {_this2.featureFlags = (0, _featureFlagsContext.getFullReactUIFlagsContext)(flags);return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});});};_proto.renderMain = function renderMain() {var _cx, _cx2, _cx3;if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {throw Error('Missed getItems for type ' + this.type);}var _this$props2 = this.props,maxMenuHeight = _this$props2.maxMenuHeight,error = _this$props2.error,warning = _this$props2.warning,disabled = _this$props2.disabled,placeholder = _this$props2.placeholder,renderNotFound = _this$props2.renderNotFound,hideMenuIfEmptyInputValue = _this$props2.hideMenuIfEmptyInputValue,inputMode = _this$props2.inputMode,renderTotalCount = _this$props2.renderTotalCount,totalCount = _this$props2.totalCount,ariaDescribedby = _this$props2['aria-describedby'],ariaLabel = _this$props2['aria-label'];var _this$getProps8 = this.getProps(),selectedItems = _this$getProps8.selectedItems,width = _this$getProps8.width,onMouseEnter = _this$getProps8.onMouseEnter,onMouseLeave = _this$getProps8.onMouseLeave,menuWidth = _this$getProps8.menuWidth,menuAlign = _this$getProps8.menuAlign,renderItem = _this$getProps8.renderItem;var _this$state3 = this.state,activeTokens = _this$state3.activeTokens,inFocus = _this$state3.inFocus,inputValueWidth = _this$state3.inputValueWidth,inputValue = _this$state3.inputValue,reservedInputValue = _this$state3.reservedInputValue,autocompleteItems = _this$state3.autocompleteItems,loading = _this$state3.loading,inputValueHeight = _this$state3.inputValueHeight;var showMenu = this.type !== TokenInputType.WithoutReference && this.isCursorVisible && activeTokens.length === 0 && (inputValue !== '' || !hideMenuIfEmptyInputValue);var theme = this.theme;var lineHeight = parseInt(theme.tokenInputLineHeight, 10) || 0;var inputInlineStyles = { // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости
1158
1189
  width: inputValueWidth, height: Math.max(lineHeight, inputValueHeight), // input растягивается на всю ширину чтобы placeholder не обрезался
1159
1190
  flex: selectedItems && selectedItems.length === 0 ? 1 : undefined, // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее
1160
1191
  caretColor: this.isCursorVisible ? undefined : 'transparent' };var labelClassName = (0, _Emotion.cx)(_TokenInput.styles.label(theme), (_cx = {}, _cx[_TokenInput.styles.hovering(this.theme)] = !inFocus && !disabled && !warning && !error, _cx[_TokenInput.styles.labelDisabled(theme)] = !!disabled, _cx[_TokenInput.styles.labelFocused(theme)] = !!inFocus, _cx[_TokenInput.styles.error(theme)] = !!error, _cx[_TokenInput.styles.warning(theme)] = !!warning, _cx));var inputClassName = (0, _Emotion.cx)(_TokenInput.styles.input(theme), (_cx2 = {}, _cx2[_TokenInput.styles.inputDisabled(theme)] = !!disabled, _cx2[_TokenInput.styles.inputEditing(theme)] = this.isEditingMode, _cx2));return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { "data-tid": TokenInputDataTids.root, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave }, /*#__PURE__*/_react.default.createElement("label", { ref: this.wrapperRef, style: { width: width }, className: labelClassName, onMouseDown: this.handleWrapperMouseDown, onMouseUp: this.handleWrapperMouseUp, htmlFor: this.textareaId, "aria-controls": this.rootId, "data-tid": TokenInputDataTids.label }, /*#__PURE__*/_react.default.createElement(_TextWidthHelper.TextWidthHelper, { ref: this.textHelperRef, classHelp: (0, _Emotion.cx)(_TokenInput.styles.helperText(theme), (_cx3 = {}, _cx3[_TokenInput.styles.helperTextEditing(theme)] = this.isEditingMode, _cx3)), text: inputValue, theme: this.theme }), this.renderTokensStart(), /*#__PURE__*/_react.default.createElement("textarea", { id: this.textareaId, ref: this.inputRef, value: inputValue, style: inputInlineStyles, spellCheck: false, disabled: disabled, className: inputClassName, placeholder: selectedItems.length > 0 ? undefined : placeholder, onFocus: this.handleInputFocus, onBlur: this.handleInputBlur, onChange: this.handleChangeInputValue, onKeyDown: this.handleKeyDown, onPaste: this.handleInputPaste, inputMode: inputMode, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby }), showMenu && /*#__PURE__*/_react.default.createElement(_TokenInputMenu.TokenInputMenu, { popupMenuId: this.rootId, ref: this.tokensInputMenuRef, items: autocompleteItems, loading: loading, opened: showMenu, maxMenuHeight: maxMenuHeight, anchorElement: menuAlign === 'cursor' ? this.input : this.wrapper, renderNotFound: renderNotFound, renderItem: renderItem, onValueChange: this.selectItem, renderAddButton: this.renderAddButton, menuWidth: menuWidth, menuAlign: menuAlign, renderTotalCount: renderTotalCount, totalCount: totalCount }), this.renderTokensEnd(), this.isEditingMode ? /*#__PURE__*/_react.default.createElement("span", { className: _TokenInput.styles.reservedInput(theme) }, reservedInputValue) : null)));} /**
@@ -1162,4 +1193,5 @@ TokenInput = (_dec = (0, _decorators.locale)('TokenInput', _locale.TokenInputLoc
1162
1193
  * @public
1163
1194
  */;_proto.reset = function reset() {this.dispatch({ type: 'RESET' });};_proto.isCursorVisibleForState = function isCursorVisibleForState(state) {return state.inFocus && (state.inputValue !== '' || state.activeTokens.length === 0);};_proto.updateInputTextWidth = function updateInputTextWidth() {if (this.textHelper) {// в IE текст иногда не помещается в input
1164
1195
  // из-за округления, поэтому округляем явно
1165
- var inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));var inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);}};_proto.moveFocusToLastToken = function moveFocusToLastToken() {var items = this.getProps().selectedItems;if (this.state.inputValue === '' && items && items.length > 0) {this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });}};(0, _createClass2.default)(TokenInput, [{ key: "showAddItemHint", get: function get() {var items = this.state.autocompleteItems;var value = this.getProps().valueToItem(this.state.inputValue);if (items && this.hasValueInItems(items, value)) {return false;}var selectedItems = this.getProps().selectedItems;if (selectedItems && this.hasValueInItems(selectedItems, value)) {return false;}if (this.type === TokenInputType.Combined && this.state.inputValue !== '') {return true;}} }, { key: "type", get: function get() {return this.props.type ? this.props.type : TokenInputType.WithReference;} }, { key: "menuRef", get: function get() {return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();} }, { key: "isCursorVisible", get: function get() {return this.isCursorVisibleForState(this.state);} }, { key: "isEditingMode", get: function get() {return this.state.editingTokenIndex > -1;} }, { key: "isInputChanged", get: function get() {if (this.isEditingMode) {return this.isTokenValueChanged;}return this.isInputValueChanged;} }, { key: "isInputValueChanged", get: function get() {var inputValue = this.state.inputValue;return inputValue !== '';} }, { key: "isTokenValueChanged", get: function get() {var _this$state4 = this.state,inputValue = _this$state4.inputValue,editingTokenIndex = _this$state4.editingTokenIndex;var _this$getProps9 = this.getProps(),valueToString = _this$getProps9.valueToString,selectedItems = _this$getProps9.selectedItems;if (this.isEditingMode) {return valueToString(selectedItems[editingTokenIndex]) !== inputValue;}return false;} }]);return TokenInput;}(_react.default.PureComponent), _class2.__KONTUR_REACT_UI__ = 'TokenInput', _class2.defaultProps = { selectedItems: [], delimiters: [',', ' '], renderItem: identity, renderValue: identity, valueToString: identity, valueToItem: function valueToItem(item) {return item;}, toKey: defaultToKey, onValueChange: function onValueChange() {return void 0;}, width: 250, onBlur: _utils.emptyHandler, onFocus: _utils.emptyHandler, onMouseEnter: _utils.emptyHandler, onMouseLeave: _utils.emptyHandler, menuWidth: 'auto', menuAlign: 'cursor' }, _temp)) || _class) || _class);exports.TokenInput = TokenInput;
1196
+ var inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));var inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);}};_proto.moveFocusToLastToken = function moveFocusToLastToken() {var items = this.getProps().selectedItems;if (this.state.inputValue === '' && items && items.length > 0) {this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });}};(0, _createClass2.default)(TokenInput, [{ key: "showAddItemHint", get: function get() {var items = this.state.autocompleteItems;var value = this.getProps().valueToItem(this.state.inputValue);if (items && this.hasValueInItems(items, value)) {return false;}var selectedItems = this.getProps().selectedItems;if (selectedItems && this.hasValueInItems(selectedItems, value)) {return false;}if (this.type === TokenInputType.Combined && this.state.inputValue !== '') {return true;}} }, { key: "type", get: function get() {return this.props.type ? this.props.type : TokenInputType.WithReference;} }, { key: "menuRef", get: function get() {return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();} }, { key: "isCursorVisible", get: function get() {return this.isCursorVisibleForState(this.state);} }, { key: "isEditingMode", get: function get() {return this.state.editingTokenIndex > -1;} }, { key: "isInputChanged", get: function get() {if (this.isEditingMode) {return this.isTokenValueChanged;}return this.isInputValueChanged;} }, { key: "isInputValueChanged", get: function get() {var inputValue = this.state.inputValue;return inputValue !== '';} }, { key: "isTokenValueChanged", get: function get() {var _this$state4 = this.state,inputValue = _this$state4.inputValue,editingTokenIndex = _this$state4.editingTokenIndex;var _this$getProps9 = this.getProps(),valueToString = _this$getProps9.valueToString,selectedItems = _this$getProps9.selectedItems;if (this.isEditingMode) {return valueToString(selectedItems[editingTokenIndex]) !== inputValue;}return false;} }]);return TokenInput;}(_react.default.PureComponent), _class2.__KONTUR_REACT_UI__ = 'TokenInput', _class2.defaultProps = { selectedItems: [], // TEMP_FAKE_FLAG помогает узнать, остались ли разделители дефолтными или пользователь передал их равными дефолтным.
1197
+ delimiters: [',', ' ', TEMP_FAKE_FLAG], renderItem: identity, renderValue: identity, valueToString: identity, valueToItem: function valueToItem(item) {return item;}, toKey: defaultToKey, onValueChange: function onValueChange() {return void 0;}, width: 250, onBlur: _utils.emptyHandler, onFocus: _utils.emptyHandler, onMouseEnter: _utils.emptyHandler, onMouseLeave: _utils.emptyHandler, menuWidth: 'auto', menuAlign: 'cursor' }, _temp)) || _class) || _class);exports.TokenInput = TokenInput;