@skbkontur/react-ui 6.0.4 → 6.0.6

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 (78) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/components/ComboBox/ComboBox.d.ts +2 -0
  3. package/components/ComboBox/ComboBox.js.map +1 -1
  4. package/components/Dropdown/Dropdown.d.ts +2 -0
  5. package/components/Dropdown/Dropdown.js +1 -0
  6. package/components/Dropdown/Dropdown.js.map +1 -1
  7. package/components/DropdownMenu/DropdownMenu.d.ts +16 -15
  8. package/components/DropdownMenu/DropdownMenu.js +3 -1
  9. package/components/DropdownMenu/DropdownMenu.js.map +1 -1
  10. package/components/FileUploader/FileUploader.d.ts +28 -30
  11. package/components/FileUploader/FileUploader.js.map +1 -1
  12. package/components/FileUploader/FileUploader.styles.d.ts +0 -1
  13. package/components/FileUploader/FileUploader.styles.js +4 -4
  14. package/components/FileUploader/FileUploader.styles.js.map +1 -1
  15. package/components/FileUploader/FileUploaderControlProvider.d.ts +4 -0
  16. package/components/FileUploader/FileUploaderControlProvider.js.map +1 -1
  17. package/components/FileUploader/FileUploaderFile.d.ts +19 -11
  18. package/components/FileUploader/FileUploaderFile.js +1 -1
  19. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  20. package/components/Group/Group.d.ts +2 -4
  21. package/components/Group/Group.js +1 -3
  22. package/components/Group/Group.js.map +1 -1
  23. package/components/MenuFooter/MenuFooter.d.ts +4 -8
  24. package/components/MenuFooter/MenuFooter.js +1 -5
  25. package/components/MenuFooter/MenuFooter.js.map +1 -1
  26. package/components/MenuHeader/MenuHeader.d.ts +4 -8
  27. package/components/MenuHeader/MenuHeader.js +1 -5
  28. package/components/MenuHeader/MenuHeader.js.map +1 -1
  29. package/components/MenuItem/MenuItem.d.ts +11 -13
  30. package/components/MenuItem/MenuItem.js +1 -3
  31. package/components/MenuItem/MenuItem.js.map +1 -1
  32. package/components/MenuSeparator/MenuSeparator.d.ts +1 -3
  33. package/components/MenuSeparator/MenuSeparator.js +1 -3
  34. package/components/MenuSeparator/MenuSeparator.js.map +1 -1
  35. package/components/Modal/ModalFooter.d.ts +1 -1
  36. package/components/Modal/ModalFooter.js.map +1 -1
  37. package/components/ResponsiveLayout/ResponsiveLayout.d.ts +2 -2
  38. package/components/ResponsiveLayout/ResponsiveLayout.js +1 -1
  39. package/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  40. package/components/ScrollContainer/ScrollBar.d.ts +4 -4
  41. package/components/ScrollContainer/ScrollBar.js.map +1 -1
  42. package/components/ScrollContainer/ScrollContainer.d.ts +17 -12
  43. package/components/ScrollContainer/ScrollContainer.js +6 -1
  44. package/components/ScrollContainer/ScrollContainer.js.map +1 -1
  45. package/components/Select/Select.d.ts +2 -0
  46. package/components/Select/Select.js +2 -2
  47. package/components/Select/Select.js.map +1 -1
  48. package/components/SidePage/SidePage.d.ts +19 -20
  49. package/components/SidePage/SidePage.js +5 -6
  50. package/components/SidePage/SidePage.js.map +1 -1
  51. package/components/SidePage/SidePageBody.d.ts +1 -1
  52. package/components/SidePage/SidePageBody.js +1 -1
  53. package/components/SidePage/SidePageBody.js.map +1 -1
  54. package/components/SidePage/SidePageContainer.d.ts +1 -1
  55. package/components/SidePage/SidePageContainer.js +1 -1
  56. package/components/SidePage/SidePageContainer.js.map +1 -1
  57. package/components/SidePage/SidePageFooter.d.ts +4 -4
  58. package/components/SidePage/SidePageFooter.js +1 -1
  59. package/components/SidePage/SidePageFooter.js.map +1 -1
  60. package/components/SidePage/SidePageHeader.d.ts +5 -4
  61. package/components/SidePage/SidePageHeader.js +1 -1
  62. package/components/SidePage/SidePageHeader.js.map +1 -1
  63. package/components/Sticky/Sticky.d.ts +8 -4
  64. package/components/Sticky/Sticky.js +5 -1
  65. package/components/Sticky/Sticky.js.map +1 -1
  66. package/components/TooltipMenu/TooltipMenu.d.ts +13 -19
  67. package/components/TooltipMenu/TooltipMenu.js +2 -8
  68. package/components/TooltipMenu/TooltipMenu.js.map +1 -1
  69. package/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
  70. package/internal/CustomComboBox/ComboBoxMenu.js +2 -2
  71. package/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  72. package/internal/CustomComboBox/ComboBoxView.d.ts +1 -0
  73. package/internal/CustomComboBox/ComboBoxView.js +2 -2
  74. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  75. package/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  76. package/internal/CustomComboBox/CustomComboBox.js +1 -0
  77. package/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  78. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollBar.js","sourceRoot":"","sources":["../../../components/ScrollContainer/ScrollBar.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React from 'react';\n\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { defaultScrollbarState, scrollSizeParametersNames } from './ScrollContainer.constants.js';\nimport { getScrollSizeParams } from './ScrollContainer.helpers.js';\nimport type { ScrollContainerProps } from './ScrollContainer.js';\nimport { getStyles, globalClasses } from './ScrollContainer.styles.js';\n\nexport type ScrollAxis = 'x' | 'y';\nexport type ScrollBarScrollState = 'begin' | 'middle' | 'end';\n\nexport interface ScrollBarState {\n active: boolean;\n hover: boolean;\n scrollingByMouseDrag: boolean;\n size: number; // in percentages\n pos: number; // in percentages\n scrollState: ScrollBarScrollState;\n}\n\nexport interface ScrollBarProps {\n /** Инвертирует цвет скроллбара. */\n invert: boolean;\n\n /** Задает ось скроллбара. */\n axis: ScrollAxis;\n\n /** Задает HTML-атрибут class. */\n className?: string;\n\n /** Задает функцию, которая вызывается при скролле. */\n onScroll?: (axis: ScrollAxis, state: ScrollBarScrollState, prevState: ScrollBarScrollState) => void;\n\n /** Задает отступ от края экрана. */\n offset: ScrollContainerProps['offsetY'] | ScrollContainerProps['offsetX'];\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n\n /** Определяет, виден ли скроллбар. */\n isVisible: boolean;\n}\n\n@withRenderEnvironment\nexport class ScrollBar extends React.Component<ScrollBarProps, ScrollBarState> {\n private inner: Nullable<HTMLElement>;\n private containerRef = React.createRef<HTMLDivElement>();\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n\n public node: Nullable<HTMLElement>;\n public state: ScrollBarState = {\n ...defaultScrollbarState,\n };\n\n public componentDidMount() {\n this.reflow();\n }\n\n public componentDidUpdate() {\n this.reflow();\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\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 state = this.state;\n const props = this.props;\n\n if (!state.active) {\n return null;\n }\n\n const { customScrollPos, customScrollSize } = scrollSizeParametersNames[this.props.axis];\n\n const classNames = this.cx(props.className, this.styles.scrollBar(this.theme), this.scrollBarStyles, {\n [this.styles.scrollBarInvert(this.theme)]: props.invert,\n [this.styles.visibleScrollBar()]: props.isVisible,\n });\n\n const inlineStyles: React.CSSProperties = {\n [customScrollPos]: `${state.pos}%`,\n [customScrollSize]: `${state.size}%`,\n };\n\n return (\n <div ref={this.containerRef} className={this.scrollBarContainerClassNames} style={props.offset}>\n <div\n ref={this.refScroll}\n style={inlineStyles}\n className={classNames}\n onMouseDown={this.handleScrollMouseDown}\n data-tid={`ScrollContainer__ScrollBar-${props.axis}`}\n />\n </div>\n );\n };\n\n public reflow = (): void => {\n if (!this.inner) {\n return;\n }\n\n const props = this.props;\n const state = this.state;\n\n const { scrollSize, scrollPos, scrollActive } = getScrollSizeParams(this.inner, props.axis);\n\n if (!scrollActive && !state.active) {\n return;\n }\n\n if (state.active !== scrollActive || state.size !== scrollSize || state.pos !== scrollPos) {\n const scrollState = this.getImmediateScrollState();\n\n if (state.pos !== scrollPos) {\n this.props.onScroll?.(props.axis, scrollState, state.scrollState);\n }\n\n this.setState({\n ...this.state,\n active: scrollActive,\n size: scrollSize,\n pos: scrollPos,\n scrollState,\n });\n }\n };\n\n public setInnerElement = (inner: Nullable<HTMLElement>): void => {\n this.inner = inner;\n this.reflow();\n };\n\n public setHover(hover: boolean): void {\n if (this.state.active && this.state.hover !== hover) {\n this.setState({ ...this.state, hover });\n }\n }\n\n public getHover(): boolean {\n return this.state.hover;\n }\n\n public get scrollBarState(): ScrollBarScrollState {\n return this.state.scrollState;\n }\n\n private get scrollBarStyles() {\n const state = this.state;\n\n if (this.props.axis === 'x') {\n return this.cx(this.styles.scrollBarX(this.theme), globalClasses.scrollbarX, {\n [this.styles.scrollBarXHover(this.theme)]: state.hover || state.scrollingByMouseDrag,\n });\n }\n\n return this.cx(this.styles.scrollBarY(this.theme), globalClasses.scrollbarY, {\n [this.styles.scrollBarYHover(this.theme)]: state.hover || state.scrollingByMouseDrag,\n });\n }\n\n private get scrollBarContainerClassNames() {\n const { axis } = this.props;\n\n if (axis === 'x') {\n return this.cx(globalClasses.scrollbarContainerX, this.styles.scrollBarContainerX(this.theme));\n }\n\n return this.cx(globalClasses.scrollbarContainerY, this.styles.scrollBarContainerY());\n }\n\n private refScroll = (element: HTMLElement | null) => {\n const handleScrollWheel = (event: Event) => this.handleScrollWheel(event, this.props.axis);\n\n if (!this.node && element) {\n element.addEventListener('wheel', handleScrollWheel, { passive: false });\n }\n if (this.node && !element) {\n this.node.removeEventListener('wheel', handleScrollWheel);\n }\n this.node = element;\n };\n\n private handleScrollMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.inner) {\n return;\n }\n\n const { offset, size, pos, coord } = scrollSizeParametersNames[this.props.axis];\n\n const initialCoord = event[coord];\n const target = this.globalObject.document;\n const initialScrollPos = this.inner[pos];\n const state = this.state;\n\n const mouseMove = (mouseMoveEvent: MouseEvent) => {\n if (!this.inner || !this.containerRef.current) {\n return;\n }\n\n const remainingScrollingContent = this.inner[size] - this.inner[offset];\n const remainingScrollingSpace = (this.containerRef.current[offset] / 100) * (100 - state.size);\n\n const ratio = remainingScrollingContent / remainingScrollingSpace;\n const delta = (mouseMoveEvent[coord] - initialCoord) * ratio;\n\n this.inner[pos] = initialScrollPos + delta;\n\n if (mouseMoveEvent.preventDefault) {\n mouseMoveEvent.preventDefault();\n }\n\n if (Object.prototype.hasOwnProperty.call(mouseMoveEvent, 'returnValue')) {\n (\n mouseMoveEvent as MouseEvent & {\n returnValue: boolean;\n }\n ).returnValue = false;\n }\n };\n\n const mouseUp = () => {\n target?.removeEventListener('mousemove', mouseMove);\n target?.removeEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrollingByMouseDrag: false });\n };\n\n target?.addEventListener('mousemove', mouseMove);\n target?.addEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrollingByMouseDrag: true });\n\n event.preventDefault();\n };\n\n private handleScrollWheel = (event: Event, axis: ScrollAxis) => {\n if (!this.inner || !isInstanceOf(event, this.globalObject.WheelEvent) || (axis === 'x' && !event.shiftKey)) {\n return;\n }\n\n const { offset, size, pos } = scrollSizeParametersNames[axis];\n\n const scrollSize = this.inner[size];\n const scrollPos = this.inner[pos];\n const offsetHeight = this.inner[offset];\n\n if (event.deltaY > 0 && scrollSize <= scrollPos + offsetHeight) {\n return;\n }\n if (event.deltaY < 0 && scrollPos <= 0) {\n return;\n }\n\n this.inner[pos] += event.deltaY;\n\n event.preventDefault();\n };\n\n private getImmediateScrollState = (): ScrollBarScrollState => {\n const { pos, size, clientSize } = scrollSizeParametersNames[this.props.axis];\n\n if (!this.inner || this.inner[pos] === 0) {\n return 'begin';\n }\n // Zoom in Chrome causes problems\n // https://github.com/skbkontur/retail-ui/pull/2705#issue-806286945\n const maxScrollPos = this.inner[size] - this.inner[clientSize];\n if (Math.abs(maxScrollPos - this.inner[pos]) <= 1) {\n return 'end';\n }\n\n return 'middle';\n };\n}\n"]}
1
+ {"version":3,"file":"ScrollBar.js","sourceRoot":"","sources":["../../../components/ScrollContainer/ScrollBar.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAsCvE;IAA+B,6BAA+C;IAA9E;;QAEU,kBAAY,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QAQlD,WAAK,gBACP,qBAAqB,EACxB;QAuBM,gBAAU,GAAG;;YACnB,IAAM,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC;YACzB,IAAM,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC;YAEzB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC;YAEK,IAAA,KAAwC,yBAAyB,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAhF,eAAe,qBAAA,EAAE,gBAAgB,sBAA+C,CAAC;YAEzF,IAAM,UAAU,GAAG,KAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,EAAE,KAAI,CAAC,eAAe;gBACjG,GAAC,KAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAK,CAAC,MAAM;gBACvD,GAAC,KAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAG,KAAK,CAAC,SAAS;oBACjD,CAAC;YAEH,IAAM,YAAY;gBAChB,GAAC,eAAe,IAAG,UAAG,KAAK,CAAC,GAAG,MAAG;gBAClC,GAAC,gBAAgB,IAAG,UAAG,KAAK,CAAC,IAAI,MAAG;mBACrC,CAAC;YAEF,OAAO,CACL,6BAAK,GAAG,EAAE,KAAI,CAAC,YAAY,EAAE,SAAS,EAAE,KAAI,CAAC,4BAA4B,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM;gBAC5F,6BACE,GAAG,EAAE,KAAI,CAAC,SAAS,EACnB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,KAAI,CAAC,qBAAqB,cAC7B,qCAA8B,KAAK,CAAC,IAAI,CAAE,GACpD,CACE,CACP,CAAC;QACJ,CAAC,CAAC;QAEK,YAAM,GAAG;;YACd,IAAI,CAAC,KAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,IAAM,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC;YACzB,IAAM,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC;YAEnB,IAAA,KAA0C,mBAAmB,CAAC,KAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAnF,UAAU,gBAAA,EAAE,SAAS,eAAA,EAAE,YAAY,kBAAgD,CAAC;YAE5F,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC1F,IAAM,WAAW,GAAG,KAAI,CAAC,uBAAuB,EAAE,CAAC;gBAEnD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,QAAQ,mDAAG,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;gBACpE,CAAC;gBAED,KAAI,CAAC,QAAQ,uBACR,KAAI,CAAC,KAAK,KACb,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,SAAS,EACd,WAAW,aAAA,IACX,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEK,qBAAe,GAAG,UAAC,KAA4B;YACpD,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,KAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC;QAwCM,eAAS,GAAG,UAAC,OAA2B;YAC9C,IAAM,iBAAiB,GAAG,UAAC,KAAY,IAAK,OAAA,KAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAA9C,CAA8C,CAAC;YAE3F,IAAI,CAAC,KAAI,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,KAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC1B,KAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;YAC5D,CAAC;YACD,KAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACtB,CAAC,CAAC;QAEM,2BAAqB,GAAG,UAAC,KAAuC;YACtE,IAAI,CAAC,KAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YAEK,IAAA,KAA+B,yBAAyB,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAvE,MAAM,YAAA,EAAE,IAAI,UAAA,EAAE,GAAG,SAAA,EAAE,KAAK,WAA+C,CAAC;YAEhF,IAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAClC,IAAM,MAAM,GAAG,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC1C,IAAM,gBAAgB,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,IAAM,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC;YAEzB,IAAM,SAAS,GAAG,UAAC,cAA0B;gBAC3C,IAAI,CAAC,KAAI,CAAC,KAAK,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC9C,OAAO;gBACT,CAAC;gBAED,IAAM,yBAAyB,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACxE,IAAM,uBAAuB,GAAG,CAAC,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE/F,IAAM,KAAK,GAAG,yBAAyB,GAAG,uBAAuB,CAAC;gBAClE,IAAM,KAAK,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,GAAG,KAAK,CAAC;gBAE7D,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,KAAK,CAAC;gBAE3C,IAAI,cAAc,CAAC,cAAc,EAAE,CAAC;oBAClC,cAAc,CAAC,cAAc,EAAE,CAAC;gBAClC,CAAC;gBAED,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE,CAAC;oBAEtE,cAGD,CAAC,WAAW,GAAG,KAAK,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC;YAEF,IAAM,OAAO,GAAG;gBACd,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBACpD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAChD,KAAI,CAAC,QAAQ,uBAAM,KAAI,CAAC,KAAK,KAAE,oBAAoB,EAAE,KAAK,IAAG,CAAC;YAChE,CAAC,CAAC;YAEF,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACjD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC7C,KAAI,CAAC,QAAQ,uBAAM,KAAI,CAAC,KAAK,KAAE,oBAAoB,EAAE,IAAI,IAAG,CAAC;YAE7D,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC,CAAC;QAEM,uBAAiB,GAAG,UAAC,KAAY,EAAE,IAAgB;YACzD,IAAI,CAAC,KAAI,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3G,OAAO;YACT,CAAC;YAEK,IAAA,KAAwB,yBAAyB,CAAC,IAAI,CAAC,EAArD,MAAM,YAAA,EAAE,IAAI,UAAA,EAAE,GAAG,SAAoC,CAAC;YAE9D,IAAM,UAAU,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,IAAM,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAM,YAAY,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAExC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,IAAI,SAAS,GAAG,YAAY,EAAE,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;YAEhC,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC,CAAC;QAEM,6BAAuB,GAAG;YAC1B,IAAA,KAA4B,yBAAyB,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAApE,GAAG,SAAA,EAAE,IAAI,UAAA,EAAE,UAAU,gBAA+C,CAAC;YAE7E,IAAI,CAAC,KAAI,CAAC,KAAK,IAAI,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,iCAAiC;YACjC,mEAAmE;YACnE,IAAM,YAAY,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;;IACJ,CAAC;IArOQ,qCAAiB,GAAxB;QACE,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEM,sCAAkB,GAAzB;QACE,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEM,0BAAM,GAAb;QAAA,iBAWC;QAVC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,KAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC,CACqB,CACzB,CAAC;IACJ,CAAC;IAuEM,4BAAQ,GAAf,UAAgB,KAAc;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACpD,IAAI,CAAC,QAAQ,uBAAM,IAAI,CAAC,KAAK,KAAE,KAAK,OAAA,IAAG,CAAC;QAC1C,CAAC;IACH,CAAC;IAEM,4BAAQ,GAAf;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,sBAAW,qCAAc;aAAzB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAChC,CAAC;;;OAAA;IAED,sBAAY,sCAAe;aAA3B;;YACE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAEzB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,UAAU;oBACzE,GAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,oBAAoB;wBACpF,CAAC;YACL,CAAC;YAED,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,UAAU;gBACzE,GAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,oBAAoB;oBACpF,CAAC;QACL,CAAC;;;OAAA;IAED,sBAAY,mDAA4B;aAAxC;YACU,IAAA,IAAI,GAAK,IAAI,CAAC,KAAK,KAAf,CAAgB;YAE5B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACjG,CAAC;YAED,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACvF,CAAC;;;OAAA;IA5IU,SAAS;QADrB,qBAAqB;OACT,SAAS,CAmPrB;IAAD,gBAAC;CAAA,AAnPD,CAA+B,KAAK,CAAC,SAAS,GAmP7C;SAnPY,SAAS","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React from 'react';\n\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { defaultScrollbarState, scrollSizeParametersNames } from './ScrollContainer.constants.js';\nimport { getScrollSizeParams } from './ScrollContainer.helpers.js';\nimport type { ScrollContainerProps } from './ScrollContainer.js';\nimport { getStyles, globalClasses } from './ScrollContainer.styles.js';\n\nexport type ScrollAxis = 'x' | 'y';\nexport type ScrollBarScrollState = 'begin' | 'middle' | 'end';\n\nexport interface ScrollBarState {\n active: boolean;\n hover: boolean;\n scrollingByMouseDrag: boolean;\n size: number; // in percentages\n pos: number; // in percentages\n scrollState: ScrollBarScrollState;\n}\n\nexport interface ScrollBarProps {\n /** Инвертирует цвет полосы прокрутки. */\n invert: boolean;\n\n /** Ось полосы прокрутки. */\n axis: ScrollAxis;\n\n /** Задает HTML-атрибут class. */\n className?: string;\n\n /** Задает функцию, которая вызывается при скролле. */\n onScroll?: (axis: ScrollAxis, state: ScrollBarScrollState, prevState: ScrollBarScrollState) => void;\n\n /** Отступ от края экрана. */\n offset: ScrollContainerProps['offsetY'] | ScrollContainerProps['offsetX'];\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n\n /** Определяет, видна ли полоса прокрутки. */\n isVisible: boolean;\n}\n\n@withRenderEnvironment\nexport class ScrollBar extends React.Component<ScrollBarProps, ScrollBarState> {\n private inner: Nullable<HTMLElement>;\n private containerRef = React.createRef<HTMLDivElement>();\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n\n public node: Nullable<HTMLElement>;\n public state: ScrollBarState = {\n ...defaultScrollbarState,\n };\n\n public componentDidMount() {\n this.reflow();\n }\n\n public componentDidUpdate() {\n this.reflow();\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\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 state = this.state;\n const props = this.props;\n\n if (!state.active) {\n return null;\n }\n\n const { customScrollPos, customScrollSize } = scrollSizeParametersNames[this.props.axis];\n\n const classNames = this.cx(props.className, this.styles.scrollBar(this.theme), this.scrollBarStyles, {\n [this.styles.scrollBarInvert(this.theme)]: props.invert,\n [this.styles.visibleScrollBar()]: props.isVisible,\n });\n\n const inlineStyles: React.CSSProperties = {\n [customScrollPos]: `${state.pos}%`,\n [customScrollSize]: `${state.size}%`,\n };\n\n return (\n <div ref={this.containerRef} className={this.scrollBarContainerClassNames} style={props.offset}>\n <div\n ref={this.refScroll}\n style={inlineStyles}\n className={classNames}\n onMouseDown={this.handleScrollMouseDown}\n data-tid={`ScrollContainer__ScrollBar-${props.axis}`}\n />\n </div>\n );\n };\n\n public reflow = (): void => {\n if (!this.inner) {\n return;\n }\n\n const props = this.props;\n const state = this.state;\n\n const { scrollSize, scrollPos, scrollActive } = getScrollSizeParams(this.inner, props.axis);\n\n if (!scrollActive && !state.active) {\n return;\n }\n\n if (state.active !== scrollActive || state.size !== scrollSize || state.pos !== scrollPos) {\n const scrollState = this.getImmediateScrollState();\n\n if (state.pos !== scrollPos) {\n this.props.onScroll?.(props.axis, scrollState, state.scrollState);\n }\n\n this.setState({\n ...this.state,\n active: scrollActive,\n size: scrollSize,\n pos: scrollPos,\n scrollState,\n });\n }\n };\n\n public setInnerElement = (inner: Nullable<HTMLElement>): void => {\n this.inner = inner;\n this.reflow();\n };\n\n public setHover(hover: boolean): void {\n if (this.state.active && this.state.hover !== hover) {\n this.setState({ ...this.state, hover });\n }\n }\n\n public getHover(): boolean {\n return this.state.hover;\n }\n\n public get scrollBarState(): ScrollBarScrollState {\n return this.state.scrollState;\n }\n\n private get scrollBarStyles() {\n const state = this.state;\n\n if (this.props.axis === 'x') {\n return this.cx(this.styles.scrollBarX(this.theme), globalClasses.scrollbarX, {\n [this.styles.scrollBarXHover(this.theme)]: state.hover || state.scrollingByMouseDrag,\n });\n }\n\n return this.cx(this.styles.scrollBarY(this.theme), globalClasses.scrollbarY, {\n [this.styles.scrollBarYHover(this.theme)]: state.hover || state.scrollingByMouseDrag,\n });\n }\n\n private get scrollBarContainerClassNames() {\n const { axis } = this.props;\n\n if (axis === 'x') {\n return this.cx(globalClasses.scrollbarContainerX, this.styles.scrollBarContainerX(this.theme));\n }\n\n return this.cx(globalClasses.scrollbarContainerY, this.styles.scrollBarContainerY());\n }\n\n private refScroll = (element: HTMLElement | null) => {\n const handleScrollWheel = (event: Event) => this.handleScrollWheel(event, this.props.axis);\n\n if (!this.node && element) {\n element.addEventListener('wheel', handleScrollWheel, { passive: false });\n }\n if (this.node && !element) {\n this.node.removeEventListener('wheel', handleScrollWheel);\n }\n this.node = element;\n };\n\n private handleScrollMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.inner) {\n return;\n }\n\n const { offset, size, pos, coord } = scrollSizeParametersNames[this.props.axis];\n\n const initialCoord = event[coord];\n const target = this.globalObject.document;\n const initialScrollPos = this.inner[pos];\n const state = this.state;\n\n const mouseMove = (mouseMoveEvent: MouseEvent) => {\n if (!this.inner || !this.containerRef.current) {\n return;\n }\n\n const remainingScrollingContent = this.inner[size] - this.inner[offset];\n const remainingScrollingSpace = (this.containerRef.current[offset] / 100) * (100 - state.size);\n\n const ratio = remainingScrollingContent / remainingScrollingSpace;\n const delta = (mouseMoveEvent[coord] - initialCoord) * ratio;\n\n this.inner[pos] = initialScrollPos + delta;\n\n if (mouseMoveEvent.preventDefault) {\n mouseMoveEvent.preventDefault();\n }\n\n if (Object.prototype.hasOwnProperty.call(mouseMoveEvent, 'returnValue')) {\n (\n mouseMoveEvent as MouseEvent & {\n returnValue: boolean;\n }\n ).returnValue = false;\n }\n };\n\n const mouseUp = () => {\n target?.removeEventListener('mousemove', mouseMove);\n target?.removeEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrollingByMouseDrag: false });\n };\n\n target?.addEventListener('mousemove', mouseMove);\n target?.addEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrollingByMouseDrag: true });\n\n event.preventDefault();\n };\n\n private handleScrollWheel = (event: Event, axis: ScrollAxis) => {\n if (!this.inner || !isInstanceOf(event, this.globalObject.WheelEvent) || (axis === 'x' && !event.shiftKey)) {\n return;\n }\n\n const { offset, size, pos } = scrollSizeParametersNames[axis];\n\n const scrollSize = this.inner[size];\n const scrollPos = this.inner[pos];\n const offsetHeight = this.inner[offset];\n\n if (event.deltaY > 0 && scrollSize <= scrollPos + offsetHeight) {\n return;\n }\n if (event.deltaY < 0 && scrollPos <= 0) {\n return;\n }\n\n this.inner[pos] += event.deltaY;\n\n event.preventDefault();\n };\n\n private getImmediateScrollState = (): ScrollBarScrollState => {\n const { pos, size, clientSize } = scrollSizeParametersNames[this.props.axis];\n\n if (!this.inner || this.inner[pos] === 0) {\n return 'begin';\n }\n // Zoom in Chrome causes problems\n // https://github.com/skbkontur/retail-ui/pull/2705#issue-806286945\n const maxScrollPos = this.inner[size] - this.inner[clientSize];\n if (Math.abs(maxScrollPos - this.inner[pos]) <= 1) {\n return 'end';\n }\n\n return 'middle';\n };\n}\n"]}
@@ -9,34 +9,34 @@ export type ScrollBehaviour = 'auto' | 'smooth';
9
9
  type OffsetCSSPropsY = 'top' | 'right' | 'bottom';
10
10
  type OffsetCSSPropsX = 'right' | 'bottom' | 'left';
11
11
  export interface ScrollContainerProps extends CommonProps {
12
- /** Инвертирует цвет скроллбара.
12
+ /** Инвертирует цвет полосы прокрутки.
13
13
  * @default false */
14
14
  invert?: boolean;
15
- /** Задает максимальную высоту. */
15
+ /** Максимальная высота скролл-контейнера. */
16
16
  maxHeight?: React.CSSProperties['maxHeight'];
17
- /** Задает максимальную ширину. */
17
+ /** Максимальная ширина скролл-контейнера. */
18
18
  maxWidth?: React.CSSProperties['maxWidth'];
19
19
  /** Отключает скролл окна, когда меню открыто.
20
20
  * @default false */
21
21
  preventWindowScroll?: boolean;
22
- /** Задает поведение скролла. (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)
22
+ /** Поведение скролла. (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)
23
23
  * @default 'auto' */
24
24
  scrollBehaviour?: ScrollBehaviour;
25
- /** Задает функцию, которая вызывается при скроле по горизонтали. */
25
+ /** Событие скролла по горизонтали. */
26
26
  onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;
27
- /** Задает функцию, которая вызывается при скроле по вертикали. */
27
+ /** Событие скролла по вертикали. */
28
28
  onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;
29
- /** Задает функцию, которая вызывается при скроле. */
29
+ /** Событие скролла. */
30
30
  onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;
31
31
  /** Отключает кастомный скролл. */
32
32
  disabled?: boolean;
33
- /** Задает смещение вертикального скроллбара. */
33
+ /** Смещение вертикальной полосы прокрутки. */
34
34
  offsetY?: Partial<Record<OffsetCSSPropsY, React.CSSProperties[OffsetCSSPropsY]>>;
35
- /** Задает смещение горизонтального скроллбара. */
35
+ /** Смещение горизонтальной полосы прокрутки. */
36
36
  offsetX?: Partial<Record<OffsetCSSPropsX, React.CSSProperties[OffsetCSSPropsX]>>;
37
- /** Определяет, нужно ли показывать скроллбар. */
37
+ /** Определяет, нужно ли показывать полосу прокрутки. */
38
38
  showScrollBar?: 'always' | 'scroll' | 'hover' | 'never';
39
- /** Устанавливает задержку в миллисекундах перед скрытием скроллбара.
39
+ /** Устанавливает задержку в миллисекундах перед скрытием полосы прокрутки.
40
40
  * Работает только при hideScrollBar = true или showScrollBar = 'scroll' | 'hover'. */
41
41
  hideScrollBarDelay?: number;
42
42
  /** Отключает анимацию. */
@@ -54,7 +54,7 @@ interface ScrollContainerState {
54
54
  isHovered: boolean;
55
55
  }
56
56
  /**
57
- * `ScrollContainer` используется для создания контейнера с кастомными полосами прокрутки, который обеспечивает прокрутку содержимого по горизонтали или вертикали.
57
+ * Контейнер с кастомными полосами прокрутки при скролле.
58
58
  */
59
59
  export declare class ScrollContainer extends React.Component<ScrollContainerProps, ScrollContainerState> {
60
60
  static __KONTUR_REACT_UI__: string;
@@ -76,23 +76,28 @@ export declare class ScrollContainer extends React.Component<ScrollContainerProp
76
76
  componentDidUpdate(prevProps: ScrollContainerProps): void;
77
77
  render(): React.ReactNode;
78
78
  /**
79
+ * Прокручивает контейнер так, чтобы указанный элемент оказался в видимой области.
79
80
  * @public
80
81
  * @param {Element} element
81
82
  */
82
83
  scrollTo(element: Nullable<HTMLElement>): void;
83
84
  /**
85
+ * Прокручивает содержимое контейнера к верхнему краю.
84
86
  * @public
85
87
  */
86
88
  scrollToTop(): void;
87
89
  /**
90
+ * Прокручивает содержимое контейнера к нижнему краю (максимальной вертикальной позиции).
88
91
  * @public
89
92
  */
90
93
  scrollToBottom(): void;
91
94
  /**
95
+ * Прокручивает содержимое контейнера к левому краю.
92
96
  * @public
93
97
  */
94
98
  scrollToLeft(): void;
95
99
  /**
100
+ * Прокручивает содержимое контейнера к правому краю (максимальной горизонтальной позиции).
96
101
  * @public
97
102
  */
98
103
  scrollToRight(): void;
@@ -50,7 +50,7 @@ export var ScrollContainerDataTids = {
50
50
  inner: 'ScrollContainer__inner',
51
51
  };
52
52
  /**
53
- * `ScrollContainer` используется для создания контейнера с кастомными полосами прокрутки, который обеспечивает прокрутку содержимого по горизонтали или вертикали.
53
+ * Контейнер с кастомными полосами прокрутки при скролле.
54
54
  */
55
55
  var ScrollContainer = /** @class */ (function (_super) {
56
56
  __extends(ScrollContainer, _super);
@@ -235,6 +235,7 @@ var ScrollContainer = /** @class */ (function (_super) {
235
235
  React.createElement("div", { style: innerStyle, ref: this.refInner, className: this.cx(this.styles.inner(), globalClasses.inner), "data-tid": ScrollContainerDataTids.inner, onScroll: this.handleNativeScroll }, props.children))));
236
236
  };
237
237
  /**
238
+ * Прокручивает контейнер так, чтобы указанный элемент оказался в видимой области.
238
239
  * @public
239
240
  * @param {Element} element
240
241
  */
@@ -246,6 +247,7 @@ var ScrollContainer = /** @class */ (function (_super) {
246
247
  this.inner.scrollTop = getScrollYOffset(element, this.inner);
247
248
  };
248
249
  /**
250
+ * Прокручивает содержимое контейнера к верхнему краю.
249
251
  * @public
250
252
  */
251
253
  ScrollContainer.prototype.scrollToTop = function () {
@@ -255,6 +257,7 @@ var ScrollContainer = /** @class */ (function (_super) {
255
257
  this.inner.scrollTop = 0;
256
258
  };
257
259
  /**
260
+ * Прокручивает содержимое контейнера к нижнему краю (максимальной вертикальной позиции).
258
261
  * @public
259
262
  */
260
263
  ScrollContainer.prototype.scrollToBottom = function () {
@@ -264,6 +267,7 @@ var ScrollContainer = /** @class */ (function (_super) {
264
267
  this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;
265
268
  };
266
269
  /**
270
+ * Прокручивает содержимое контейнера к левому краю.
267
271
  * @public
268
272
  */
269
273
  ScrollContainer.prototype.scrollToLeft = function () {
@@ -273,6 +277,7 @@ var ScrollContainer = /** @class */ (function (_super) {
273
277
  this.inner.scrollLeft = 0;
274
278
  };
275
279
  /**
280
+ * Прокручивает содержимое контейнера к правому краю (максимальной горизонтальной позиции).
276
281
  * @public
277
282
  */
278
283
  ScrollContainer.prototype.scrollToRight = function () {
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollContainer.js","sourceRoot":"","sources":["../../../components/ScrollContainer/ScrollContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport debounce from 'lodash.debounce';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport * as LayoutEvents from '../../lib/LayoutEvents.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { ScrollAxis, ScrollBarScrollState } from './ScrollBar.js';\nimport { ScrollBar } from './ScrollBar.js';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants.js';\nimport {\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n getScrollYOffset,\n} from './ScrollContainer.helpers.js';\nimport { getStyles, globalClasses } from './ScrollContainer.styles.js';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\ntype OffsetCSSPropsY = 'top' | 'right' | 'bottom';\ntype OffsetCSSPropsX = 'right' | 'bottom' | 'left';\n\nexport interface ScrollContainerProps extends CommonProps {\n /** Инвертирует цвет скроллбара.\n * @default false */\n invert?: boolean;\n\n /** Задает максимальную высоту. */\n maxHeight?: React.CSSProperties['maxHeight'];\n\n /** Задает максимальную ширину. */\n maxWidth?: React.CSSProperties['maxWidth'];\n\n /** Отключает скролл окна, когда меню открыто.\n * @default false */\n preventWindowScroll?: boolean;\n\n /** Задает поведение скролла. (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto' */\n scrollBehaviour?: ScrollBehaviour;\n\n /** Задает функцию, которая вызывается при скроле по горизонтали. */\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n\n /** Задает функцию, которая вызывается при скроле по вертикали. */\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n\n /** Задает функцию, которая вызывается при скроле. */\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n\n /** Отключает кастомный скролл. */\n disabled?: boolean;\n\n /** Задает смещение вертикального скроллбара. */\n offsetY?: Partial<Record<OffsetCSSPropsY, React.CSSProperties[OffsetCSSPropsY]>>;\n\n /** Задает смещение горизонтального скроллбара. */\n offsetX?: Partial<Record<OffsetCSSPropsX, React.CSSProperties[OffsetCSSPropsX]>>;\n\n /** Определяет, нужно ли показывать скроллбар. */\n showScrollBar?: 'always' | 'scroll' | 'hover' | 'never';\n\n /** Устанавливает задержку в миллисекундах перед скрытием скроллбара.\n * Работает только при hideScrollBar = true или showScrollBar = 'scroll' | 'hover'. */\n hideScrollBarDelay?: number;\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n scrollRef?: React.Ref<HTMLDivElement | null>;\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' | 'disableAnimations' | 'hideScrollBarDelay' | 'showScrollBar'\n >\n>;\n\ninterface ScrollContainerState {\n isScrollBarXVisible: boolean;\n isScrollBarYVisible: boolean;\n isHovered: boolean;\n}\n\n/**\n * `ScrollContainer` используется для создания контейнера с кастомными полосами прокрутки, который обеспечивает прокрутку содержимого по горизонтали или вертикали.\n */\n@withRenderEnvironment\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps, ScrollContainerState> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n public static displayName = 'ScrollContainer';\n\n public inner: Nullable<HTMLElement>;\n\n public static defaultProps: DefaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n disableAnimations: isTestEnv,\n hideScrollBarDelay: 500,\n showScrollBar: 'always',\n };\n\n private getProps = createPropsGetter(ScrollContainer.defaultProps);\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private initialIsScrollBarVisible = 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 if (prevProps.showScrollBar !== this.props.showScrollBar) {\n if (this.props.showScrollBar === 'always') {\n this.setState({ isScrollBarXVisible: true, isScrollBarYVisible: true });\n } else if (this.props.showScrollBar === 'never') {\n this.setState({ isScrollBarXVisible: false, isScrollBarYVisible: false });\n }\n }\n }\n\n public render(): React.ReactNode {\n this.styles = getStyles(this.emotion);\n\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={this.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={this.cx(this.styles.inner(), globalClasses.inner)}\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>): void {\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(): void {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * @public\n */\n public scrollToBottom(): void {\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(): void {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * @public\n */\n public scrollToRight(): void {\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): boolean {\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.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 { showScrollBar } = this.getProps();\n 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 if (this.props.scrollRef) {\n callChildRef(this.props.scrollRef, element);\n }\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, this.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 this.getProps().showScrollBar === 'hover' &&\n !this.state.isHovered &&\n this.setState({ isScrollBarXVisible: true, isScrollBarYVisible: true, isHovered: true });\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"]}
1
+ {"version":3,"file":"ScrollContainer.js","sourceRoot":"","sources":["../../../components/ScrollContainer/ScrollContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport debounce from 'lodash.debounce';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport * as LayoutEvents from '../../lib/LayoutEvents.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { ScrollAxis, ScrollBarScrollState } from './ScrollBar.js';\nimport { ScrollBar } from './ScrollBar.js';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants.js';\nimport {\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n getScrollYOffset,\n} from './ScrollContainer.helpers.js';\nimport { getStyles, globalClasses } from './ScrollContainer.styles.js';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\ntype OffsetCSSPropsY = 'top' | 'right' | 'bottom';\ntype OffsetCSSPropsX = 'right' | 'bottom' | 'left';\n\nexport interface ScrollContainerProps extends CommonProps {\n /** Инвертирует цвет полосы прокрутки.\n * @default false */\n invert?: boolean;\n\n /** Максимальная высота скролл-контейнера. */\n maxHeight?: React.CSSProperties['maxHeight'];\n\n /** Максимальная ширина скролл-контейнера. */\n maxWidth?: React.CSSProperties['maxWidth'];\n\n /** Отключает скролл окна, когда меню открыто.\n * @default false */\n preventWindowScroll?: boolean;\n\n /** Поведение скролла. (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto' */\n scrollBehaviour?: ScrollBehaviour;\n\n /** Событие скролла по горизонтали. */\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n\n /** Событие скролла по вертикали. */\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n\n /** Событие скролла. */\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n\n /** Отключает кастомный скролл. */\n disabled?: boolean;\n\n /** Смещение вертикальной полосы прокрутки. */\n offsetY?: Partial<Record<OffsetCSSPropsY, React.CSSProperties[OffsetCSSPropsY]>>;\n\n /** Смещение горизонтальной полосы прокрутки. */\n offsetX?: Partial<Record<OffsetCSSPropsX, React.CSSProperties[OffsetCSSPropsX]>>;\n\n /** Определяет, нужно ли показывать полосу прокрутки. */\n showScrollBar?: 'always' | 'scroll' | 'hover' | 'never';\n\n /** Устанавливает задержку в миллисекундах перед скрытием полосы прокрутки.\n * Работает только при hideScrollBar = true или showScrollBar = 'scroll' | 'hover'. */\n hideScrollBarDelay?: number;\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n scrollRef?: React.Ref<HTMLDivElement | null>;\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' | 'disableAnimations' | 'hideScrollBarDelay' | 'showScrollBar'\n >\n>;\n\ninterface ScrollContainerState {\n isScrollBarXVisible: boolean;\n isScrollBarYVisible: boolean;\n isHovered: boolean;\n}\n\n/**\n * Контейнер с кастомными полосами прокрутки при скролле.\n */\n@withRenderEnvironment\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps, ScrollContainerState> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n public static displayName = 'ScrollContainer';\n\n public inner: Nullable<HTMLElement>;\n\n public static defaultProps: DefaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n disableAnimations: isTestEnv,\n hideScrollBarDelay: 500,\n showScrollBar: 'always',\n };\n\n private getProps = createPropsGetter(ScrollContainer.defaultProps);\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private initialIsScrollBarVisible = 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 if (prevProps.showScrollBar !== this.props.showScrollBar) {\n if (this.props.showScrollBar === 'always') {\n this.setState({ isScrollBarXVisible: true, isScrollBarYVisible: true });\n } else if (this.props.showScrollBar === 'never') {\n this.setState({ isScrollBarXVisible: false, isScrollBarYVisible: false });\n }\n }\n }\n\n public render(): React.ReactNode {\n this.styles = getStyles(this.emotion);\n\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={this.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={this.cx(this.styles.inner(), globalClasses.inner)}\n data-tid={ScrollContainerDataTids.inner}\n onScroll={this.handleNativeScroll}\n >\n {props.children}\n </div>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Прокручивает контейнер так, чтобы указанный элемент оказался в видимой области.\n * @public\n * @param {Element} element\n */\n public scrollTo(element: Nullable<HTMLElement>): void {\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 * Прокручивает содержимое контейнера к верхнему краю.\n * @public\n */\n public scrollToTop(): void {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * Прокручивает содержимое контейнера к нижнему краю (максимальной вертикальной позиции).\n * @public\n */\n public scrollToBottom(): void {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;\n }\n\n /**\n * Прокручивает содержимое контейнера к левому краю.\n * @public\n */\n public scrollToLeft(): void {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * Прокручивает содержимое контейнера к правому краю (максимальной горизонтальной позиции).\n * @public\n */\n public scrollToRight(): void {\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): boolean {\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.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 { showScrollBar } = this.getProps();\n 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 if (this.props.scrollRef) {\n callChildRef(this.props.scrollRef, element);\n }\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, this.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 this.getProps().showScrollBar === 'hover' &&\n !this.state.isHovered &&\n this.setState({ isScrollBarXVisible: true, isScrollBarYVisible: true, isHovered: true });\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"]}
@@ -130,6 +130,8 @@ export interface SelectProps<TValue, TItem> extends CommonProps, Pick<AriaAttrib
130
130
  onBlur?: React.FocusEventHandler<HTMLElement>;
131
131
  /** Текст заголовка списка в мобильной версии. */
132
132
  mobileMenuHeaderText?: string;
133
+ /** Отключает выравнивание текста элементов в списке относительно иконок в других элементах. */
134
+ preventIconsOffset?: boolean;
133
135
  }
134
136
  export interface SelectState<TValue> {
135
137
  opened: boolean;
@@ -381,9 +381,9 @@ var Select = /** @class */ (function (_super) {
381
381
  Select.prototype.renderMenu = function () {
382
382
  var search = this.props.search ? this.getSearch() : null;
383
383
  var value = this.getValue();
384
- var _a = this.getProps(), menuWidth = _a.menuWidth, menuPos = _a.menuPos, menuAlign = _a.menuAlign, positions = _a.positions;
384
+ var _a = this.getProps(), menuWidth = _a.menuWidth, menuPos = _a.menuPos, menuAlign = _a.menuAlign, positions = _a.positions, preventIconsOffset = _a.preventIconsOffset;
385
385
  return (React.createElement(Popup, { opened: true, hasShadow: true, id: this.menuId, "data-tid": SelectDataTids.menu, positions: positions !== null && positions !== void 0 ? positions : getMenuPositions(menuPos, menuAlign), anchorElement: this.popupGetParent(), priority: ZIndex.priorities.PopupMenu, disablePortal: this.props.disablePortal, margin: parseInt(this.theme.menuOffsetY) - 1, width: menuWidth, minWidth: menuWidth === undefined ? '100%' : undefined, popupOffset: this.props.menuOffset },
386
- React.createElement(Menu, { hasMargin: false, ref: this.refMenu, onItemClick: this.close, maxHeight: this.props.maxMenuHeight, align: menuAlign },
386
+ React.createElement(Menu, { hasMargin: false, ref: this.refMenu, onItemClick: this.close, maxHeight: this.props.maxMenuHeight, align: menuAlign, preventIconsOffset: preventIconsOffset },
387
387
  search,
388
388
  this.getMenuItems(value))));
389
389
  };