@hh.ru/magritte-ui-picker-wheel 2.1.16 → 2.1.18
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.
- package/PickerWheel.js +1 -1
- package/PickerWheel.js.map +1 -1
- package/UncontrolledPickerWheel.js.map +1 -1
- package/index.css +24 -24
- package/itemsFromRange.js.map +1 -1
- package/package.json +8 -8
package/PickerWheel.js
CHANGED
|
@@ -6,7 +6,7 @@ import { initScrollHandlers } from '@hh.ru/magritte-internal-custom-scroll';
|
|
|
6
6
|
import { BottomSheetContext } from '@hh.ru/magritte-ui-bottom-sheet';
|
|
7
7
|
import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
|
|
8
8
|
|
|
9
|
-
var styles = {"picker-wheel":"magritte-picker-wheel___VaPvG_2-1-
|
|
9
|
+
var styles = {"picker-wheel":"magritte-picker-wheel___VaPvG_2-1-18","pickerWheel":"magritte-picker-wheel___VaPvG_2-1-18","selected-item-background":"magritte-selected-item-background___UnBPm_2-1-18","selectedItemBackground":"magritte-selected-item-background___UnBPm_2-1-18","columns":"magritte-columns___I7bCB_2-1-18","touch-events-overlay":"magritte-touch-events-overlay___c3YOp_2-1-18","touchEventsOverlay":"magritte-touch-events-overlay___c3YOp_2-1-18","fixed-height":"magritte-fixed-height___BLw9W_2-1-18","fixedHeight":"magritte-fixed-height___BLw9W_2-1-18","column-wrapper":"magritte-column-wrapper___yRwai_2-1-18","columnWrapper":"magritte-column-wrapper___yRwai_2-1-18","column-position-wrapper":"magritte-column-position-wrapper___wQTIu_2-1-18","columnPositionWrapper":"magritte-column-position-wrapper___wQTIu_2-1-18","wide-column-wrapper":"magritte-wide-column-wrapper___nvecx_2-1-18","wideColumnWrapper":"magritte-wide-column-wrapper___nvecx_2-1-18","full-width-column-wrapper":"magritte-full-width-column-wrapper___oxhh1_2-1-18","fullWidthColumnWrapper":"magritte-full-width-column-wrapper___oxhh1_2-1-18","column":"magritte-column___IMYca_2-1-18","item":"magritte-item___4RQVs_2-1-18","align-left":"magritte-align-left___PXJt0_2-1-18","alignLeft":"magritte-align-left___PXJt0_2-1-18","align-right":"magritte-align-right___0yc2S_2-1-18","alignRight":"magritte-align-right___0yc2S_2-1-18","disabled":"magritte-disabled___d3ukm_2-1-18","selected":"magritte-selected___Nar3H_2-1-18"};
|
|
10
10
|
|
|
11
11
|
const FIXED_HEIGHT_ITEMS = 7;
|
|
12
12
|
const ITEM_HEIGHT = 48;
|
package/PickerWheel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickerWheel.js","sources":["../src/PickerWheel.tsx"],"sourcesContent":["import { useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport classnames from 'classnames';\n\nimport { initScrollHandlers, ScrollGestureEvent } from '@hh.ru/magritte-internal-custom-scroll';\nimport { BottomSheetContext } from '@hh.ru/magritte-ui-bottom-sheet';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { PickerWheelColumn, PickerWheelComponent } from '@hh.ru/magritte-ui-picker-wheel/types';\n\nimport styles from './picker-wheel.less';\n\nconst FIXED_HEIGHT_ITEMS = 7;\nconst ITEM_HEIGHT = 48;\nconst COLUMN_WIDTH = 64;\nconst WIDE_COLUMN_WIDTH = 105;\nconst SELECTED_ITEM_SCALE = 22 / 18;\n\n/**\n * Превращает массив точек в массив интервалов\n * [0, 50, 100, 200] => [{ left: 0, right: 50 }, { left: 50, right: 100 }, { left: 100, right: 200 }]\n */\nconst makeIntervalsFromPoints = (...points: Array<number>) => {\n return points\n .flatMap((point, index) => {\n if (index !== 0 && index !== points.length - 1) {\n return [point, point];\n }\n return point;\n })\n .reduce(\n (intervals, point, index) => {\n if (index % 2 === 0) {\n return [...intervals, { left: point }];\n }\n const interval = { ...intervals[intervals.length - 1], right: point };\n return [...intervals.slice(0, intervals.length - 1), interval];\n },\n [] as Array<{ left: number; right?: number }>\n ) as Array<{ left: number; right: number }>;\n};\n\n/**\n * Генерирует горизонтальные границы в пикселях относительно контейнера, в которых колонки должны реагировать на скролл\n */\nconst makeScrollAreas = (\n columnCount: number,\n containerWidth: number,\n showDelimiter?: boolean\n): Array<{ left: number; right: number }> => {\n switch (columnCount) {\n case 1:\n return makeIntervalsFromPoints(0, containerWidth);\n case 2:\n return makeIntervalsFromPoints(0, containerWidth / 2, containerWidth);\n case 3:\n return makeIntervalsFromPoints(\n 0,\n (containerWidth - WIDE_COLUMN_WIDTH) / 2,\n (containerWidth + WIDE_COLUMN_WIDTH) / 2,\n containerWidth\n );\n case 4:\n if (showDelimiter) {\n return makeIntervalsFromPoints(\n 0,\n containerWidth / 2 - COLUMN_WIDTH * 1.5,\n containerWidth / 2,\n containerWidth / 2 + COLUMN_WIDTH * 1.5,\n containerWidth\n );\n }\n return makeIntervalsFromPoints(\n 0,\n containerWidth / 2 - COLUMN_WIDTH,\n containerWidth / 2,\n containerWidth / 2 + COLUMN_WIDTH,\n containerWidth\n );\n default:\n throw new Error('Unexpected column count');\n }\n};\n\nconst floorToOdd = (value: number) => (value % 2 !== 1 ? value - 1 : value);\n\nconst range = (start: number, end: number) => {\n return [...Array(end - start).keys()].map((_, index) => index + start);\n};\n\nconst translateY = (value: number) => `translate3d(0, ${value}px, 0)`;\n\ninterface ColumnState {\n circular?: boolean;\n /**\n * Если колонка не зациклена (circular), всегда 1\n * Если зациклена, то это количество копий колонки, которое нужно отрендерить, чтобы заполнить контейнер целиком\n */\n cloneCount: number;\n disabledItems: Set<number>;\n /** Количество айтемов колонки, копируется из props.columns чтобы не нужно было добавлять props.columns в зависимости */\n itemCount: number;\n /** translateY для эмуляции скролла */\n translateY: number;\n /** Количество видимых айтемов, всегда нечетное */\n visibleItemCount: number | null;\n columnElement: HTMLDivElement | null;\n columnElementCallback: React.RefCallback<HTMLDivElement | null>;\n columnWrapper: HTMLDivElement | null;\n columnWrapperCallback: React.RefCallback<HTMLDivElement | null>;\n itemElements: Map<number, HTMLDivElement | null>;\n itemElementCallbacks: Pick<Map<number, React.RefCallback<HTMLDivElement | null>>, 'get'>;\n}\n\ninterface PickerWheelState {\n activeColumnIndex: number | null;\n animations: Array<{ renderedKey: number; itemIndex: number }>;\n containerMetrics: DOMRect | null;\n columns: Array<ColumnState>;\n scrollAreas: Array<{ left: number; right: number }> | null;\n scrollDirection: 'up' | 'down' | null;\n}\n\nconst makeInitialState = (columns: Array<PickerWheelColumn>): PickerWheelState => {\n return {\n activeColumnIndex: null,\n animations: [],\n containerMetrics: null,\n columns: columns.map((column) => {\n const itemElementCallbacks: Map<number, React.RefCallback<HTMLDivElement | null>> = new Map();\n const columnState: ColumnState = {\n circular: column.circular,\n cloneCount: 1,\n disabledItems: new Set(),\n itemCount: column.items.length,\n translateY: 0,\n visibleItemCount: null,\n columnElement: null,\n columnElementCallback: (element) => (columnState.columnElement = element),\n columnWrapper: null,\n columnWrapperCallback: (element) => (columnState.columnWrapper = element),\n itemElements: new Map(),\n itemElementCallbacks: {\n get: (itemIndex: number) => {\n if (!itemElementCallbacks.has(itemIndex)) {\n itemElementCallbacks.set(itemIndex, (element) => {\n columnState.itemElements.set(itemIndex, element);\n });\n }\n return itemElementCallbacks.get(itemIndex);\n },\n },\n };\n return columnState;\n }),\n scrollAreas: null,\n scrollDirection: null,\n };\n};\n\nexport const PickerWheel: PickerWheelComponent = ({\n columns,\n fixedHeight,\n onChange,\n selectedIndexes,\n showDelimiter,\n}) => {\n if (columns.length !== selectedIndexes.length) {\n throw new Error('selectedIndexes.length does not match columns.length');\n }\n\n const stateRef = useRef<PickerWheelState>(makeInitialState(columns));\n if (\n columns.length !== stateRef.current.columns.length ||\n columns.some((column, columnIndex) => {\n return (\n column.items.length !== stateRef.current.columns[columnIndex].itemCount ||\n column.circular !== stateRef.current.columns[columnIndex].circular\n );\n })\n ) {\n stateRef.current = makeInitialState(columns);\n }\n columns.forEach(\n (column, columnIndex) =>\n (stateRef.current.columns[columnIndex].disabledItems = new Set(\n column.items.reduce(\n (result, item, itemIndex) => (item.disabled ? [...result, itemIndex] : result),\n [] as Array<number>\n )\n ))\n );\n\n const bottomSheetContext = useContext(BottomSheetContext);\n const containerRef = useRef<HTMLDivElement>(null);\n const isFixedHeight = (bottomSheetContext !== null && bottomSheetContext.height !== 'full-screen') || fixedHeight;\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const selectedIndexesRef = useRef(selectedIndexes);\n selectedIndexesRef.current = selectedIndexes;\n const [_, setStateKey] = useState(0);\n const [touchActionActive, setTouchActionActive] = useState(false);\n const visible = useBreakpoint().isMobile;\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return void 0;\n }\n\n // вычисляем колонку, которую пользователь начал скроллить\n const setActiveColumn = (clientX: number) => {\n const containerMetrics = stateRef.current.containerMetrics;\n if (containerMetrics !== null) {\n stateRef.current.activeColumnIndex =\n stateRef.current.scrollAreas?.findIndex((interval) => {\n const relativeX = clientX - containerMetrics.left;\n return relativeX >= interval.left && relativeX <= interval.right;\n }) ?? null;\n }\n };\n\n const handleTouchStart = (event: TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n event.changedTouches.length === 1 && setActiveColumn(event.changedTouches[0].clientX);\n };\n\n const handleTouchMove = (event: TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const handleWheel = (event: WheelEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n setActiveColumn(event.clientX);\n };\n\n container.addEventListener('touchstart', handleTouchStart, { passive: false });\n container.addEventListener('touchmove', handleTouchMove, { passive: false });\n container.addEventListener('wheel', handleWheel, { passive: false });\n return () => {\n container.removeEventListener('touchstart', handleTouchStart);\n container.removeEventListener('touchmove', handleTouchMove);\n container.removeEventListener('wheel', handleWheel);\n };\n }, []);\n\n useEffect(() => {\n const handleScroll = (event: ScrollGestureEvent) => {\n if (stateRef.current.activeColumnIndex !== null && stateRef.current.containerMetrics !== null) {\n const columnIndex = stateRef.current.activeColumnIndex;\n const columnState = stateRef.current?.columns[columnIndex];\n const { columnElement, columnWrapper } = columnState;\n if (!columnState || !columnState.visibleItemCount || !columnElement || !columnWrapper) {\n return;\n }\n\n stateRef.current.scrollDirection = event.delta > 0 ? 'up' : 'down';\n columnState.translateY += event.delta;\n\n // бесконечный скролл\n if (columnState.circular) {\n // скролл вверх\n // верхний край колонки близко к верхнему краю враппера\n if (\n event.delta > 0 &&\n stateRef.current.containerMetrics.height / 2 + columnState.translateY > -100\n ) {\n columnState.translateY -= columnState.itemCount * ITEM_HEIGHT;\n }\n\n // скролл вниз\n // нижний край колонки близко к нижнему краю враппера\n if (\n event.delta < 0 &&\n columnState.cloneCount * columnState.itemCount * ITEM_HEIGHT +\n columnState.translateY -\n stateRef.current.containerMetrics.height / 2 <\n 100\n ) {\n columnState.translateY += columnState.itemCount * ITEM_HEIGHT;\n }\n }\n\n // скролл ограничен — делаем чтобы колонку было нельзя проскроллить за допустимые границы\n if (!columnState.circular) {\n // скролл вверх\n if (event.delta > 0) {\n // translateY, когда колонка проскроллена в самый верх (выбран первый айтем)\n const minAllowedTranslateY = 0;\n columnState.translateY = Math.min(columnState.translateY, minAllowedTranslateY);\n }\n\n // скролл вниз\n if (event.delta < 0) {\n // translateY, когда колонка проскроллена в самый низ (выбран последний айтем)\n const maxAllowedTranslateY = (columnState.itemCount - 1) * ITEM_HEIGHT;\n columnState.translateY = Math.max(columnState.translateY, -maxAllowedTranslateY);\n }\n }\n\n // анимация увеличения ближайшего к центру айтема\n const selectedItemIndex = Math.round(-columnState.translateY / ITEM_HEIGHT);\n if (columnState.itemElements.has(selectedItemIndex)) {\n const halfItemHeight = ITEM_HEIGHT / 2;\n (columnState.itemElements.get(selectedItemIndex) as HTMLElement).style.transform =\n `scale(${1 + (SELECTED_ITEM_SCALE - 1) * Math.abs((Math.abs(columnState.translateY % ITEM_HEIGHT) - halfItemHeight) / halfItemHeight)})`;\n }\n\n columnElement.style.transform = translateY(columnState.translateY);\n setTouchActionActive(true);\n }\n };\n\n const handleScrollEnd = () => {\n if (stateRef.current.activeColumnIndex !== null) {\n const columnIndex = stateRef.current.activeColumnIndex;\n const columnState = stateRef.current?.columns[columnIndex];\n const { columnElement, columnWrapper } = columnState;\n if (!columnState || !columnElement || !columnWrapper) {\n return;\n }\n\n // если колонка зациклена, у нее могут быть отрендерены клоны для бесконечного скролла\n // поэтому нужно взять остаток от деления на количество айтемов в колонке\n const _selectedItemIndex =\n Math.round(Math.abs(columnState.translateY) / ITEM_HEIGHT) % columnState.itemCount;\n let selectedItemIndex = _selectedItemIndex;\n // если выбранный айтем disabled, ищем ближайший не disabled в направлении скролла\n if (columnState.disabledItems.has(selectedItemIndex)) {\n do {\n if (stateRef.current.scrollDirection === 'up') {\n selectedItemIndex -= 1;\n if (selectedItemIndex < 0) {\n selectedItemIndex = columnState.itemCount - 1;\n }\n } else if (stateRef.current.scrollDirection === 'down') {\n selectedItemIndex += 1;\n if (selectedItemIndex > columnState.itemCount - 1) {\n selectedItemIndex = 0;\n }\n } else {\n break;\n }\n } while (\n columnState.disabledItems.has(selectedItemIndex) &&\n selectedItemIndex !== _selectedItemIndex\n );\n }\n\n const _selectedIndexes = [...selectedIndexesRef.current];\n _selectedIndexes[columnIndex] = selectedItemIndex;\n onChangeRef.current?.(_selectedIndexes);\n\n stateRef.current.activeColumnIndex = null;\n stateRef.current.scrollDirection = null;\n setTouchActionActive(false);\n }\n };\n\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n return initScrollHandlers({\n axis: 'vertical',\n wrapperRef: containerRef,\n onTouchMove: handleScroll,\n onTouchEnd: handleScrollEnd,\n onWheelMove: (event) => {\n handleScroll(event);\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(handleScrollEnd, 50);\n },\n });\n }, [setTouchActionActive]);\n\n const recalcLayoutMetrics = useCallback(() => {\n if (!containerRef.current) {\n return;\n }\n\n stateRef.current.containerMetrics = containerRef.current.getBoundingClientRect();\n stateRef.current.scrollAreas = makeScrollAreas(\n stateRef.current.columns.length,\n stateRef.current.containerMetrics.width,\n showDelimiter\n );\n\n const containerHeight = stateRef.current.containerMetrics.height;\n stateRef.current.columns.forEach((columnState) => {\n const { columnElement, columnWrapper } = columnState;\n if (!columnElement || !columnWrapper) {\n return;\n }\n\n if (columnState.circular) {\n const cloneCount =\n Math.max(Math.ceil(containerHeight / (columnState.itemCount * ITEM_HEIGHT)), 1) * 2 + 1;\n if (columnState.cloneCount !== cloneCount) {\n columnState.cloneCount = cloneCount;\n columnState.translateY -=\n Math.floor(columnState.cloneCount / 2) * columnState.itemCount * ITEM_HEIGHT;\n columnElement.style.transform = translateY(columnState.translateY);\n setStateKey((stateKey) => stateKey + 1);\n }\n }\n\n columnState.visibleItemCount = Math.min(\n columnState.circular ? columnState.itemCount : columnState.itemCount * 2 - 1,\n floorToOdd(Math.floor(containerHeight / ITEM_HEIGHT)),\n fixedHeight ? FIXED_HEIGHT_ITEMS : Infinity\n );\n const gradientStartPoint = (containerHeight - columnState.visibleItemCount * ITEM_HEIGHT) / 2;\n const gradientEndPoint = containerHeight / 2 + (columnState.visibleItemCount * ITEM_HEIGHT) / 2;\n columnWrapper.style.maskImage = `linear-gradient(\n to bottom,\n transparent ${gradientStartPoint}px,\n #000 ${gradientStartPoint + 60}px,\n #000 ${gradientEndPoint - 60}px,\n transparent ${gradientEndPoint}px\n )`;\n });\n }, [fixedHeight, showDelimiter, setStateKey]);\n\n useLayoutEffect(() => {\n if (stateRef.current.containerMetrics !== null) {\n recalcLayoutMetrics();\n }\n }, [recalcLayoutMetrics]);\n\n useLayoutEffect(() => {\n if (stateRef.current.containerMetrics === null) {\n recalcLayoutMetrics();\n }\n });\n\n // Скроллим к initial значению либо округляем позицию скролла до ближайшего айтема после завершения анимации инерции скролла\n useEffect(() => {\n stateRef.current.columns.forEach((columnState, columnIndex) => {\n const { columnElement, columnWrapper } = columnState;\n if (!columnElement || !columnWrapper) {\n return;\n }\n\n columnState.translateY =\n -(Math.floor(columnState.cloneCount / 2) * columnState.itemCount * ITEM_HEIGHT) -\n selectedIndexes[columnIndex] * ITEM_HEIGHT;\n columnElement.style.transform = translateY(columnState.translateY);\n\n columnState.itemElements.forEach((itemElement) => {\n if (itemElement !== null) {\n itemElement.style.transform = ``;\n }\n });\n });\n }, [selectedIndexes]);\n\n if (!visible) {\n return null;\n }\n\n const renderColumns = (startIndex: number, endIndex: number) => {\n return range(startIndex, endIndex).map((columnIndex) => {\n const columnState = stateRef.current.columns[columnIndex];\n return (\n <div\n className={classnames(styles.columnWrapper, {\n [styles.wideColumnWrapper]: columns.length < 4 && columns.length > 1,\n [styles.fullWidthColumnWrapper]: columns.length === 1,\n })}\n key={`${columns.length}-${columnIndex}`}\n ref={columnState.columnWrapperCallback}\n >\n <div className={styles.columnPositionWrapper}>\n <div className={styles.column} ref={columnState.columnElementCallback}>\n {[...Array(columnState.cloneCount).keys()].flatMap((columnCloneIndex) =>\n columns[columnIndex].items.map((item, itemIndex) => (\n <div\n className={classnames(styles.item, {\n [styles.alignLeft]: columns[columnIndex].align === 'left',\n [styles.alignRight]: columns[columnIndex].align === 'right',\n [styles.disabled]: item.disabled,\n [styles.selected]:\n itemIndex === selectedIndexes[columnIndex] &&\n (!touchActionActive ||\n columnIndex !== stateRef.current.activeColumnIndex),\n })}\n key={`${columnCloneIndex}-${columns[columnIndex].items.length}-${item.key ?? item.text}`}\n ref={columnState.itemElementCallbacks?.get(\n columnCloneIndex * columnState.itemCount + itemIndex\n )}\n >\n {item.text}\n </div>\n ))\n )}\n </div>\n </div>\n </div>\n );\n });\n };\n\n if (showDelimiter && columns.length % 2 === 0) {\n return (\n <div className={classnames(styles.pickerWheel, { [styles.fixedHeight]: isFixedHeight })} ref={containerRef}>\n <div className={styles.selectedItemBackground} />\n <div className={classnames(styles.columns)}>\n {renderColumns(0, columns.length / 2)}\n <div className={styles.columnWrapper}>\n <div className={styles.columnPositionWrapper}>\n <div className={styles.column}>\n <div className={classnames(styles.item, styles.selected)}>–</div>\n </div>\n </div>\n </div>\n {renderColumns(columns.length / 2, columns.length)}\n </div>\n <div className={styles.touchEventsOverlay} />\n </div>\n );\n }\n\n return (\n <div className={classnames(styles.pickerWheel, { [styles.fixedHeight]: isFixedHeight })} ref={containerRef}>\n <div className={styles.selectedItemBackground} />\n <div className={classnames(styles.columns)}>{renderColumns(0, columns.length)}</div>\n <div className={styles.touchEventsOverlay} />\n </div>\n );\n};\n\nPickerWheel.isFullHeightBottomSheetContent = true;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PickerWheel.js","sources":["src/PickerWheel.tsx"],"sourcesContent":["import { useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport classnames from 'classnames';\n\nimport { initScrollHandlers, ScrollGestureEvent } from '@hh.ru/magritte-internal-custom-scroll';\nimport { BottomSheetContext } from '@hh.ru/magritte-ui-bottom-sheet';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { PickerWheelColumn, PickerWheelComponent } from '@hh.ru/magritte-ui-picker-wheel/types';\n\nimport styles from './picker-wheel.less';\n\nconst FIXED_HEIGHT_ITEMS = 7;\nconst ITEM_HEIGHT = 48;\nconst COLUMN_WIDTH = 64;\nconst WIDE_COLUMN_WIDTH = 105;\nconst SELECTED_ITEM_SCALE = 22 / 18;\n\n/**\n * Превращает массив точек в массив интервалов\n * [0, 50, 100, 200] => [{ left: 0, right: 50 }, { left: 50, right: 100 }, { left: 100, right: 200 }]\n */\nconst makeIntervalsFromPoints = (...points: Array<number>) => {\n return points\n .flatMap((point, index) => {\n if (index !== 0 && index !== points.length - 1) {\n return [point, point];\n }\n return point;\n })\n .reduce(\n (intervals, point, index) => {\n if (index % 2 === 0) {\n return [...intervals, { left: point }];\n }\n const interval = { ...intervals[intervals.length - 1], right: point };\n return [...intervals.slice(0, intervals.length - 1), interval];\n },\n [] as Array<{ left: number; right?: number }>\n ) as Array<{ left: number; right: number }>;\n};\n\n/**\n * Генерирует горизонтальные границы в пикселях относительно контейнера, в которых колонки должны реагировать на скролл\n */\nconst makeScrollAreas = (\n columnCount: number,\n containerWidth: number,\n showDelimiter?: boolean\n): Array<{ left: number; right: number }> => {\n switch (columnCount) {\n case 1:\n return makeIntervalsFromPoints(0, containerWidth);\n case 2:\n return makeIntervalsFromPoints(0, containerWidth / 2, containerWidth);\n case 3:\n return makeIntervalsFromPoints(\n 0,\n (containerWidth - WIDE_COLUMN_WIDTH) / 2,\n (containerWidth + WIDE_COLUMN_WIDTH) / 2,\n containerWidth\n );\n case 4:\n if (showDelimiter) {\n return makeIntervalsFromPoints(\n 0,\n containerWidth / 2 - COLUMN_WIDTH * 1.5,\n containerWidth / 2,\n containerWidth / 2 + COLUMN_WIDTH * 1.5,\n containerWidth\n );\n }\n return makeIntervalsFromPoints(\n 0,\n containerWidth / 2 - COLUMN_WIDTH,\n containerWidth / 2,\n containerWidth / 2 + COLUMN_WIDTH,\n containerWidth\n );\n default:\n throw new Error('Unexpected column count');\n }\n};\n\nconst floorToOdd = (value: number) => (value % 2 !== 1 ? value - 1 : value);\n\nconst range = (start: number, end: number) => {\n return [...Array(end - start).keys()].map((_, index) => index + start);\n};\n\nconst translateY = (value: number) => `translate3d(0, ${value}px, 0)`;\n\ninterface ColumnState {\n circular?: boolean;\n /**\n * Если колонка не зациклена (circular), всегда 1\n * Если зациклена, то это количество копий колонки, которое нужно отрендерить, чтобы заполнить контейнер целиком\n */\n cloneCount: number;\n disabledItems: Set<number>;\n /** Количество айтемов колонки, копируется из props.columns чтобы не нужно было добавлять props.columns в зависимости */\n itemCount: number;\n /** translateY для эмуляции скролла */\n translateY: number;\n /** Количество видимых айтемов, всегда нечетное */\n visibleItemCount: number | null;\n columnElement: HTMLDivElement | null;\n columnElementCallback: React.RefCallback<HTMLDivElement | null>;\n columnWrapper: HTMLDivElement | null;\n columnWrapperCallback: React.RefCallback<HTMLDivElement | null>;\n itemElements: Map<number, HTMLDivElement | null>;\n itemElementCallbacks: Pick<Map<number, React.RefCallback<HTMLDivElement | null>>, 'get'>;\n}\n\ninterface PickerWheelState {\n activeColumnIndex: number | null;\n animations: Array<{ renderedKey: number; itemIndex: number }>;\n containerMetrics: DOMRect | null;\n columns: Array<ColumnState>;\n scrollAreas: Array<{ left: number; right: number }> | null;\n scrollDirection: 'up' | 'down' | null;\n}\n\nconst makeInitialState = (columns: Array<PickerWheelColumn>): PickerWheelState => {\n return {\n activeColumnIndex: null,\n animations: [],\n containerMetrics: null,\n columns: columns.map((column) => {\n const itemElementCallbacks: Map<number, React.RefCallback<HTMLDivElement | null>> = new Map();\n const columnState: ColumnState = {\n circular: column.circular,\n cloneCount: 1,\n disabledItems: new Set(),\n itemCount: column.items.length,\n translateY: 0,\n visibleItemCount: null,\n columnElement: null,\n columnElementCallback: (element) => (columnState.columnElement = element),\n columnWrapper: null,\n columnWrapperCallback: (element) => (columnState.columnWrapper = element),\n itemElements: new Map(),\n itemElementCallbacks: {\n get: (itemIndex: number) => {\n if (!itemElementCallbacks.has(itemIndex)) {\n itemElementCallbacks.set(itemIndex, (element) => {\n columnState.itemElements.set(itemIndex, element);\n });\n }\n return itemElementCallbacks.get(itemIndex);\n },\n },\n };\n return columnState;\n }),\n scrollAreas: null,\n scrollDirection: null,\n };\n};\n\nexport const PickerWheel: PickerWheelComponent = ({\n columns,\n fixedHeight,\n onChange,\n selectedIndexes,\n showDelimiter,\n}) => {\n if (columns.length !== selectedIndexes.length) {\n throw new Error('selectedIndexes.length does not match columns.length');\n }\n\n const stateRef = useRef<PickerWheelState>(makeInitialState(columns));\n if (\n columns.length !== stateRef.current.columns.length ||\n columns.some((column, columnIndex) => {\n return (\n column.items.length !== stateRef.current.columns[columnIndex].itemCount ||\n column.circular !== stateRef.current.columns[columnIndex].circular\n );\n })\n ) {\n stateRef.current = makeInitialState(columns);\n }\n columns.forEach(\n (column, columnIndex) =>\n (stateRef.current.columns[columnIndex].disabledItems = new Set(\n column.items.reduce(\n (result, item, itemIndex) => (item.disabled ? [...result, itemIndex] : result),\n [] as Array<number>\n )\n ))\n );\n\n const bottomSheetContext = useContext(BottomSheetContext);\n const containerRef = useRef<HTMLDivElement>(null);\n const isFixedHeight = (bottomSheetContext !== null && bottomSheetContext.height !== 'full-screen') || fixedHeight;\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const selectedIndexesRef = useRef(selectedIndexes);\n selectedIndexesRef.current = selectedIndexes;\n const [_, setStateKey] = useState(0);\n const [touchActionActive, setTouchActionActive] = useState(false);\n const visible = useBreakpoint().isMobile;\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return void 0;\n }\n\n // вычисляем колонку, которую пользователь начал скроллить\n const setActiveColumn = (clientX: number) => {\n const containerMetrics = stateRef.current.containerMetrics;\n if (containerMetrics !== null) {\n stateRef.current.activeColumnIndex =\n stateRef.current.scrollAreas?.findIndex((interval) => {\n const relativeX = clientX - containerMetrics.left;\n return relativeX >= interval.left && relativeX <= interval.right;\n }) ?? null;\n }\n };\n\n const handleTouchStart = (event: TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n event.changedTouches.length === 1 && setActiveColumn(event.changedTouches[0].clientX);\n };\n\n const handleTouchMove = (event: TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const handleWheel = (event: WheelEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n setActiveColumn(event.clientX);\n };\n\n container.addEventListener('touchstart', handleTouchStart, { passive: false });\n container.addEventListener('touchmove', handleTouchMove, { passive: false });\n container.addEventListener('wheel', handleWheel, { passive: false });\n return () => {\n container.removeEventListener('touchstart', handleTouchStart);\n container.removeEventListener('touchmove', handleTouchMove);\n container.removeEventListener('wheel', handleWheel);\n };\n }, []);\n\n useEffect(() => {\n const handleScroll = (event: ScrollGestureEvent) => {\n if (stateRef.current.activeColumnIndex !== null && stateRef.current.containerMetrics !== null) {\n const columnIndex = stateRef.current.activeColumnIndex;\n const columnState = stateRef.current?.columns[columnIndex];\n const { columnElement, columnWrapper } = columnState;\n if (!columnState || !columnState.visibleItemCount || !columnElement || !columnWrapper) {\n return;\n }\n\n stateRef.current.scrollDirection = event.delta > 0 ? 'up' : 'down';\n columnState.translateY += event.delta;\n\n // бесконечный скролл\n if (columnState.circular) {\n // скролл вверх\n // верхний край колонки близко к верхнему краю враппера\n if (\n event.delta > 0 &&\n stateRef.current.containerMetrics.height / 2 + columnState.translateY > -100\n ) {\n columnState.translateY -= columnState.itemCount * ITEM_HEIGHT;\n }\n\n // скролл вниз\n // нижний край колонки близко к нижнему краю враппера\n if (\n event.delta < 0 &&\n columnState.cloneCount * columnState.itemCount * ITEM_HEIGHT +\n columnState.translateY -\n stateRef.current.containerMetrics.height / 2 <\n 100\n ) {\n columnState.translateY += columnState.itemCount * ITEM_HEIGHT;\n }\n }\n\n // скролл ограничен — делаем чтобы колонку было нельзя проскроллить за допустимые границы\n if (!columnState.circular) {\n // скролл вверх\n if (event.delta > 0) {\n // translateY, когда колонка проскроллена в самый верх (выбран первый айтем)\n const minAllowedTranslateY = 0;\n columnState.translateY = Math.min(columnState.translateY, minAllowedTranslateY);\n }\n\n // скролл вниз\n if (event.delta < 0) {\n // translateY, когда колонка проскроллена в самый низ (выбран последний айтем)\n const maxAllowedTranslateY = (columnState.itemCount - 1) * ITEM_HEIGHT;\n columnState.translateY = Math.max(columnState.translateY, -maxAllowedTranslateY);\n }\n }\n\n // анимация увеличения ближайшего к центру айтема\n const selectedItemIndex = Math.round(-columnState.translateY / ITEM_HEIGHT);\n if (columnState.itemElements.has(selectedItemIndex)) {\n const halfItemHeight = ITEM_HEIGHT / 2;\n (columnState.itemElements.get(selectedItemIndex) as HTMLElement).style.transform =\n `scale(${1 + (SELECTED_ITEM_SCALE - 1) * Math.abs((Math.abs(columnState.translateY % ITEM_HEIGHT) - halfItemHeight) / halfItemHeight)})`;\n }\n\n columnElement.style.transform = translateY(columnState.translateY);\n setTouchActionActive(true);\n }\n };\n\n const handleScrollEnd = () => {\n if (stateRef.current.activeColumnIndex !== null) {\n const columnIndex = stateRef.current.activeColumnIndex;\n const columnState = stateRef.current?.columns[columnIndex];\n const { columnElement, columnWrapper } = columnState;\n if (!columnState || !columnElement || !columnWrapper) {\n return;\n }\n\n // если колонка зациклена, у нее могут быть отрендерены клоны для бесконечного скролла\n // поэтому нужно взять остаток от деления на количество айтемов в колонке\n const _selectedItemIndex =\n Math.round(Math.abs(columnState.translateY) / ITEM_HEIGHT) % columnState.itemCount;\n let selectedItemIndex = _selectedItemIndex;\n // если выбранный айтем disabled, ищем ближайший не disabled в направлении скролла\n if (columnState.disabledItems.has(selectedItemIndex)) {\n do {\n if (stateRef.current.scrollDirection === 'up') {\n selectedItemIndex -= 1;\n if (selectedItemIndex < 0) {\n selectedItemIndex = columnState.itemCount - 1;\n }\n } else if (stateRef.current.scrollDirection === 'down') {\n selectedItemIndex += 1;\n if (selectedItemIndex > columnState.itemCount - 1) {\n selectedItemIndex = 0;\n }\n } else {\n break;\n }\n } while (\n columnState.disabledItems.has(selectedItemIndex) &&\n selectedItemIndex !== _selectedItemIndex\n );\n }\n\n const _selectedIndexes = [...selectedIndexesRef.current];\n _selectedIndexes[columnIndex] = selectedItemIndex;\n onChangeRef.current?.(_selectedIndexes);\n\n stateRef.current.activeColumnIndex = null;\n stateRef.current.scrollDirection = null;\n setTouchActionActive(false);\n }\n };\n\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n return initScrollHandlers({\n axis: 'vertical',\n wrapperRef: containerRef,\n onTouchMove: handleScroll,\n onTouchEnd: handleScrollEnd,\n onWheelMove: (event) => {\n handleScroll(event);\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(handleScrollEnd, 50);\n },\n });\n }, [setTouchActionActive]);\n\n const recalcLayoutMetrics = useCallback(() => {\n if (!containerRef.current) {\n return;\n }\n\n stateRef.current.containerMetrics = containerRef.current.getBoundingClientRect();\n stateRef.current.scrollAreas = makeScrollAreas(\n stateRef.current.columns.length,\n stateRef.current.containerMetrics.width,\n showDelimiter\n );\n\n const containerHeight = stateRef.current.containerMetrics.height;\n stateRef.current.columns.forEach((columnState) => {\n const { columnElement, columnWrapper } = columnState;\n if (!columnElement || !columnWrapper) {\n return;\n }\n\n if (columnState.circular) {\n const cloneCount =\n Math.max(Math.ceil(containerHeight / (columnState.itemCount * ITEM_HEIGHT)), 1) * 2 + 1;\n if (columnState.cloneCount !== cloneCount) {\n columnState.cloneCount = cloneCount;\n columnState.translateY -=\n Math.floor(columnState.cloneCount / 2) * columnState.itemCount * ITEM_HEIGHT;\n columnElement.style.transform = translateY(columnState.translateY);\n setStateKey((stateKey) => stateKey + 1);\n }\n }\n\n columnState.visibleItemCount = Math.min(\n columnState.circular ? columnState.itemCount : columnState.itemCount * 2 - 1,\n floorToOdd(Math.floor(containerHeight / ITEM_HEIGHT)),\n fixedHeight ? FIXED_HEIGHT_ITEMS : Infinity\n );\n const gradientStartPoint = (containerHeight - columnState.visibleItemCount * ITEM_HEIGHT) / 2;\n const gradientEndPoint = containerHeight / 2 + (columnState.visibleItemCount * ITEM_HEIGHT) / 2;\n columnWrapper.style.maskImage = `linear-gradient(\n to bottom,\n transparent ${gradientStartPoint}px,\n #000 ${gradientStartPoint + 60}px,\n #000 ${gradientEndPoint - 60}px,\n transparent ${gradientEndPoint}px\n )`;\n });\n }, [fixedHeight, showDelimiter, setStateKey]);\n\n useLayoutEffect(() => {\n if (stateRef.current.containerMetrics !== null) {\n recalcLayoutMetrics();\n }\n }, [recalcLayoutMetrics]);\n\n useLayoutEffect(() => {\n if (stateRef.current.containerMetrics === null) {\n recalcLayoutMetrics();\n }\n });\n\n // Скроллим к initial значению либо округляем позицию скролла до ближайшего айтема после завершения анимации инерции скролла\n useEffect(() => {\n stateRef.current.columns.forEach((columnState, columnIndex) => {\n const { columnElement, columnWrapper } = columnState;\n if (!columnElement || !columnWrapper) {\n return;\n }\n\n columnState.translateY =\n -(Math.floor(columnState.cloneCount / 2) * columnState.itemCount * ITEM_HEIGHT) -\n selectedIndexes[columnIndex] * ITEM_HEIGHT;\n columnElement.style.transform = translateY(columnState.translateY);\n\n columnState.itemElements.forEach((itemElement) => {\n if (itemElement !== null) {\n itemElement.style.transform = ``;\n }\n });\n });\n }, [selectedIndexes]);\n\n if (!visible) {\n return null;\n }\n\n const renderColumns = (startIndex: number, endIndex: number) => {\n return range(startIndex, endIndex).map((columnIndex) => {\n const columnState = stateRef.current.columns[columnIndex];\n return (\n <div\n className={classnames(styles.columnWrapper, {\n [styles.wideColumnWrapper]: columns.length < 4 && columns.length > 1,\n [styles.fullWidthColumnWrapper]: columns.length === 1,\n })}\n key={`${columns.length}-${columnIndex}`}\n ref={columnState.columnWrapperCallback}\n >\n <div className={styles.columnPositionWrapper}>\n <div className={styles.column} ref={columnState.columnElementCallback}>\n {[...Array(columnState.cloneCount).keys()].flatMap((columnCloneIndex) =>\n columns[columnIndex].items.map((item, itemIndex) => (\n <div\n className={classnames(styles.item, {\n [styles.alignLeft]: columns[columnIndex].align === 'left',\n [styles.alignRight]: columns[columnIndex].align === 'right',\n [styles.disabled]: item.disabled,\n [styles.selected]:\n itemIndex === selectedIndexes[columnIndex] &&\n (!touchActionActive ||\n columnIndex !== stateRef.current.activeColumnIndex),\n })}\n key={`${columnCloneIndex}-${columns[columnIndex].items.length}-${item.key ?? item.text}`}\n ref={columnState.itemElementCallbacks?.get(\n columnCloneIndex * columnState.itemCount + itemIndex\n )}\n >\n {item.text}\n </div>\n ))\n )}\n </div>\n </div>\n </div>\n );\n });\n };\n\n if (showDelimiter && columns.length % 2 === 0) {\n return (\n <div className={classnames(styles.pickerWheel, { [styles.fixedHeight]: isFixedHeight })} ref={containerRef}>\n <div className={styles.selectedItemBackground} />\n <div className={classnames(styles.columns)}>\n {renderColumns(0, columns.length / 2)}\n <div className={styles.columnWrapper}>\n <div className={styles.columnPositionWrapper}>\n <div className={styles.column}>\n <div className={classnames(styles.item, styles.selected)}>–</div>\n </div>\n </div>\n </div>\n {renderColumns(columns.length / 2, columns.length)}\n </div>\n <div className={styles.touchEventsOverlay} />\n </div>\n );\n }\n\n return (\n <div className={classnames(styles.pickerWheel, { [styles.fixedHeight]: isFixedHeight })} ref={containerRef}>\n <div className={styles.selectedItemBackground} />\n <div className={classnames(styles.columns)}>{renderColumns(0, columns.length)}</div>\n <div className={styles.touchEventsOverlay} />\n </div>\n );\n};\n\nPickerWheel.isFullHeightBottomSheetContent = true;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UncontrolledPickerWheel.js","sources":["
|
|
1
|
+
{"version":3,"file":"UncontrolledPickerWheel.js","sources":["src/UncontrolledPickerWheel.tsx"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nimport { PickerWheel } from '@hh.ru/magritte-ui-picker-wheel/PickerWheel';\nimport { PickerWheelComponent } from '@hh.ru/magritte-ui-picker-wheel/types';\n\nexport const UncontrolledPickerWheel: PickerWheelComponent = ({\n selectedIndexes: initialSelectedIndexes,\n onChange,\n ...props\n}) => {\n const [selectedIndexes, setSelectedIndexes] = useState(initialSelectedIndexes);\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const handleChange = useCallback(\n (value: Array<number>) => {\n onChangeRef.current?.(value);\n setSelectedIndexes(value);\n },\n [setSelectedIndexes]\n );\n\n return <PickerWheel selectedIndexes={selectedIndexes} onChange={handleChange} {...props} />;\n};\n\nUncontrolledPickerWheel.isFullHeightBottomSheetContent = true;\n"],"names":["_jsx"],"mappings":";;;;;;;;AAKa,MAAA,uBAAuB,GAAyB,CAAC,EAC1D,eAAe,EAAE,sBAAsB,EACvC,QAAQ,EACR,GAAG,KAAK,EACX,KAAI;IACD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AAC/E,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrC,IAAA,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;AAE/B,IAAA,MAAM,YAAY,GAAG,WAAW,CAC5B,CAAC,KAAoB,KAAI;AACrB,QAAA,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QAC7B,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAC,EACD,CAAC,kBAAkB,CAAC,CACvB,CAAC;AAEF,IAAA,OAAOA,GAAC,CAAA,WAAW,EAAC,EAAA,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAM,GAAA,KAAK,GAAI,CAAC;AAChG,EAAE;AAEF,uBAAuB,CAAC,8BAA8B,GAAG,IAAI;;;;"}
|
package/index.css
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
1
|
:root{
|
|
2
|
-
--magritte-color-text-primary-v24-4-
|
|
3
|
-
--magritte-color-text-state-primary-disabled-v24-4-
|
|
4
|
-
--magritte-color-component-time-picker-background-selection-v24-4-
|
|
2
|
+
--magritte-color-text-primary-v24-4-1:#000000;
|
|
3
|
+
--magritte-color-text-state-primary-disabled-v24-4-1:#0000007a;
|
|
4
|
+
--magritte-color-component-time-picker-background-selection-v24-4-1:#F1F4F9;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
.magritte-night-theme{
|
|
8
|
-
--magritte-color-text-primary-v24-4-
|
|
9
|
-
--magritte-color-text-state-primary-disabled-v24-4-
|
|
10
|
-
--magritte-color-component-time-picker-background-selection-v24-4-
|
|
8
|
+
--magritte-color-text-primary-v24-4-1:#ffffff;
|
|
9
|
+
--magritte-color-text-state-primary-disabled-v24-4-1:#ababab7a;
|
|
10
|
+
--magritte-color-component-time-picker-background-selection-v24-4-1:#262626;
|
|
11
11
|
}
|
|
12
|
-
.magritte-picker-wheel___VaPvG_2-1-
|
|
12
|
+
.magritte-picker-wheel___VaPvG_2-1-18{
|
|
13
13
|
position:relative;
|
|
14
14
|
height:100%;
|
|
15
15
|
}
|
|
16
|
-
.magritte-selected-item-background___UnBPm_2-1-
|
|
16
|
+
.magritte-selected-item-background___UnBPm_2-1-18{
|
|
17
17
|
position:absolute;
|
|
18
18
|
inset:calc(50% - 48px / 2) 0;
|
|
19
|
-
background-color:var(--magritte-color-component-time-picker-background-selection-v24-4-
|
|
19
|
+
background-color:var(--magritte-color-component-time-picker-background-selection-v24-4-1);
|
|
20
20
|
}
|
|
21
|
-
.magritte-columns___I7bCB_2-1-
|
|
21
|
+
.magritte-columns___I7bCB_2-1-18{
|
|
22
22
|
position:relative;
|
|
23
23
|
height:100%;
|
|
24
24
|
display:flex;
|
|
25
25
|
align-items:stretch;
|
|
26
26
|
justify-content:center;
|
|
27
27
|
}
|
|
28
|
-
.magritte-touch-events-overlay___c3YOp_2-1-
|
|
28
|
+
.magritte-touch-events-overlay___c3YOp_2-1-18{
|
|
29
29
|
position:absolute;
|
|
30
30
|
inset:0;
|
|
31
31
|
}
|
|
32
|
-
.magritte-fixed-height___BLw9W_2-1-
|
|
32
|
+
.magritte-fixed-height___BLw9W_2-1-18{
|
|
33
33
|
height:336px;
|
|
34
34
|
}
|
|
35
|
-
.magritte-column-wrapper___yRwai_2-1-
|
|
35
|
+
.magritte-column-wrapper___yRwai_2-1-18{
|
|
36
36
|
flex:0 0 64px;
|
|
37
37
|
position:relative;
|
|
38
38
|
}
|
|
39
|
-
.magritte-column-position-wrapper___wQTIu_2-1-
|
|
39
|
+
.magritte-column-position-wrapper___wQTIu_2-1-18{
|
|
40
40
|
position:relative;
|
|
41
41
|
top:50%;
|
|
42
42
|
margin-top:-24px;
|
|
43
43
|
}
|
|
44
|
-
.magritte-wide-column-wrapper___nvecx_2-1-
|
|
44
|
+
.magritte-wide-column-wrapper___nvecx_2-1-18{
|
|
45
45
|
flex:0 0 105px;
|
|
46
46
|
}
|
|
47
|
-
.magritte-full-width-column-wrapper___oxhh1_2-1-
|
|
47
|
+
.magritte-full-width-column-wrapper___oxhh1_2-1-18{
|
|
48
48
|
flex:0 0 100%;
|
|
49
49
|
}
|
|
50
|
-
.magritte-column___IMYca_2-1-
|
|
50
|
+
.magritte-column___IMYca_2-1-18{
|
|
51
51
|
will-change:transform;
|
|
52
52
|
transform:translate3d(0, 0, 0);
|
|
53
53
|
}
|
|
54
|
-
.magritte-item___4RQVs_2-1-
|
|
54
|
+
.magritte-item___4RQVs_2-1-18{
|
|
55
55
|
font-family:"hh sans";
|
|
56
56
|
font-weight:400;
|
|
57
57
|
line-height:26px;
|
|
@@ -60,25 +60,25 @@
|
|
|
60
60
|
text-indent:0px;
|
|
61
61
|
text-transform:none;
|
|
62
62
|
text-decoration:none;
|
|
63
|
-
color:var(--magritte-color-text-primary-v24-4-
|
|
63
|
+
color:var(--magritte-color-text-primary-v24-4-1);
|
|
64
64
|
height:18px;
|
|
65
65
|
line-height:18px;
|
|
66
66
|
padding:calc((48px - 18px) / 2) 0;
|
|
67
67
|
text-align:center;
|
|
68
68
|
transform-origin:center center;
|
|
69
69
|
}
|
|
70
|
-
.magritte-item___4RQVs_2-1-
|
|
70
|
+
.magritte-item___4RQVs_2-1-18.magritte-align-left___PXJt0_2-1-18{
|
|
71
71
|
text-align:left;
|
|
72
72
|
transform-origin:left center;
|
|
73
73
|
}
|
|
74
|
-
.magritte-item___4RQVs_2-1-
|
|
74
|
+
.magritte-item___4RQVs_2-1-18.magritte-align-right___0yc2S_2-1-18{
|
|
75
75
|
text-align:right;
|
|
76
76
|
transform-origin:right center;
|
|
77
77
|
}
|
|
78
|
-
.magritte-item___4RQVs_2-1-
|
|
79
|
-
color:var(--magritte-color-text-state-primary-disabled-v24-4-
|
|
78
|
+
.magritte-item___4RQVs_2-1-18.magritte-disabled___d3ukm_2-1-18{
|
|
79
|
+
color:var(--magritte-color-text-state-primary-disabled-v24-4-1);
|
|
80
80
|
}
|
|
81
|
-
.magritte-item___4RQVs_2-1-
|
|
81
|
+
.magritte-item___4RQVs_2-1-18.magritte-selected___Nar3H_2-1-18{
|
|
82
82
|
font-weight:500;
|
|
83
83
|
height:22px;
|
|
84
84
|
line-height:22px;
|
package/itemsFromRange.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itemsFromRange.js","sources":["
|
|
1
|
+
{"version":3,"file":"itemsFromRange.js","sources":["src/itemsFromRange.ts"],"sourcesContent":["import { PickerWheelItem } from '@hh.ru/magritte-ui-picker-wheel/types';\n\nexport const itemsFromRange = (start: number, end: number, discreteness: number = 1): Array<PickerWheelItem> => {\n const result = [];\n for (let i = start; discreteness > 0 ? i <= end : i > discreteness; i += discreteness) {\n result.push({ text: `${i}` });\n }\n return result;\n};\n"],"names":[],"mappings":"AAEO,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,YAAA,GAAuB,CAAC,KAA4B;IAC3G,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,YAAY,EAAE;QACnF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAA,EAAG,CAAC,CAAA,CAAE,EAAE,CAAC,CAAC;KACjC;AACD,IAAA,OAAO,MAAM,CAAC;AAClB;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hh.ru/magritte-ui-picker-wheel",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.18",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"sideEffects": [
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
"watch": "yarn root:watch $(pwd)"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@hh.ru/magritte-design-tokens": "24.4.
|
|
23
|
-
"@hh.ru/magritte-internal-custom-scroll": "2.1.
|
|
24
|
-
"@hh.ru/magritte-types": "5.0.
|
|
25
|
-
"@hh.ru/magritte-ui-bottom-sheet": "9.2.
|
|
26
|
-
"@hh.ru/magritte-ui-breakpoint": "6.0.
|
|
27
|
-
"@hh.ru/magritte-ui-typography": "4.5.
|
|
22
|
+
"@hh.ru/magritte-design-tokens": "24.4.1",
|
|
23
|
+
"@hh.ru/magritte-internal-custom-scroll": "2.1.1",
|
|
24
|
+
"@hh.ru/magritte-types": "5.0.6",
|
|
25
|
+
"@hh.ru/magritte-ui-bottom-sheet": "9.2.14",
|
|
26
|
+
"@hh.ru/magritte-ui-breakpoint": "6.0.8",
|
|
27
|
+
"@hh.ru/magritte-ui-typography": "4.5.2"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"classnames": ">=2.3.2",
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"publishConfig": {
|
|
34
34
|
"access": "public"
|
|
35
35
|
},
|
|
36
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "9a088ded46caac9429f3e9fadaf055300b36990e"
|
|
37
37
|
}
|