@clickhouse/click-ui 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/click-ui.css +362 -0
- package/dist/cjs/components/Assets/Icons/Horizontal-Loading.cjs +13 -49
- package/dist/cjs/components/Assets/Icons/Horizontal-Loading.cjs.map +1 -1
- package/dist/cjs/components/Assets/Icons/Loaders.css +94 -0
- package/dist/cjs/components/Assets/Icons/Loaders.module.css.cjs +13 -0
- package/dist/cjs/components/Assets/Icons/Loaders.module.css.cjs.map +1 -0
- package/dist/cjs/components/Assets/Icons/Loading-Animated.cjs +8 -12
- package/dist/cjs/components/Assets/Icons/Loading-Animated.cjs.map +1 -1
- package/dist/cjs/components/Assets/Icons/Loading.cjs +13 -6
- package/dist/cjs/components/Assets/Icons/Loading.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DateRangePicker.cjs +12 -2
- package/dist/cjs/components/DatePicker/DateRangePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/index.cjs +1 -3
- package/dist/cjs/components/DatePicker/index.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/utils.cjs +3 -0
- package/dist/cjs/components/DatePicker/utils.cjs.map +1 -1
- package/dist/cjs/components/Grid/Cell.cjs +1 -3
- package/dist/cjs/components/Grid/Cell.cjs.map +1 -1
- package/dist/cjs/components/Grid/ColumnResizer.cjs +18 -15
- package/dist/cjs/components/Grid/ColumnResizer.cjs.map +1 -1
- package/dist/cjs/components/Grid/ColumnResizer.css +22 -0
- package/dist/cjs/components/Grid/ColumnResizer.module.css.cjs +11 -0
- package/dist/cjs/components/Grid/ColumnResizer.module.css.cjs.map +1 -0
- package/dist/cjs/components/Grid/Grid.css +34 -0
- package/dist/cjs/components/Grid/Grid.module.css.cjs +21 -0
- package/dist/cjs/components/Grid/Grid.module.css.cjs.map +1 -0
- package/dist/cjs/components/Grid/Header.cjs +22 -43
- package/dist/cjs/components/Grid/Header.cjs.map +1 -1
- package/dist/cjs/components/Grid/Header.css +44 -0
- package/dist/cjs/components/Grid/Header.module.css.cjs +19 -0
- package/dist/cjs/components/Grid/Header.module.css.cjs.map +1 -0
- package/dist/cjs/components/Grid/RowNumberColumn.cjs +12 -29
- package/dist/cjs/components/Grid/RowNumberColumn.cjs.map +1 -1
- package/dist/cjs/components/Grid/RowNumberColumn.css +22 -0
- package/dist/cjs/components/Grid/RowNumberColumn.module.css.cjs +12 -0
- package/dist/cjs/components/Grid/RowNumberColumn.module.css.cjs.map +1 -0
- package/dist/cjs/components/Grid/StyledCell.cjs +84 -56
- package/dist/cjs/components/Grid/StyledCell.cjs.map +1 -1
- package/dist/cjs/components/Grid/StyledCell.css +146 -0
- package/dist/cjs/components/Grid/StyledCell.module.css.cjs +47 -0
- package/dist/cjs/components/Grid/StyledCell.module.css.cjs.map +1 -0
- package/dist/cjs/components/Grid/index.cjs +30 -30
- package/dist/cjs/components/Grid/index.cjs.map +1 -1
- package/dist/esm/click-ui.css +362 -0
- package/dist/esm/components/Assets/Icons/Horizontal-Loading.js +13 -49
- package/dist/esm/components/Assets/Icons/Horizontal-Loading.js.map +1 -1
- package/dist/esm/components/Assets/Icons/Loaders.css +94 -0
- package/dist/esm/components/Assets/Icons/Loaders.module.css.js +8 -0
- package/dist/esm/components/Assets/Icons/Loaders.module.css.js.map +1 -0
- package/dist/esm/components/Assets/Icons/Loading-Animated.js +9 -13
- package/dist/esm/components/Assets/Icons/Loading-Animated.js.map +1 -1
- package/dist/esm/components/Assets/Icons/Loading.js +13 -6
- package/dist/esm/components/Assets/Icons/Loading.js.map +1 -1
- package/dist/esm/components/Assets/Icons/system/IconsLight.js +2 -2
- package/dist/esm/components/Assets/Icons/system/IconsLight.js.map +1 -1
- package/dist/esm/components/DatePicker/DateRangePicker.js +14 -4
- package/dist/esm/components/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/index.js +2 -4
- package/dist/esm/components/DatePicker/index.js.map +1 -1
- package/dist/esm/components/DatePicker/utils.js +3 -1
- package/dist/esm/components/DatePicker/utils.js.map +1 -1
- package/dist/esm/components/Grid/Cell.js +1 -3
- package/dist/esm/components/Grid/Cell.js.map +1 -1
- package/dist/esm/components/Grid/ColumnResizer.css +22 -0
- package/dist/esm/components/Grid/ColumnResizer.js +18 -15
- package/dist/esm/components/Grid/ColumnResizer.js.map +1 -1
- package/dist/esm/components/Grid/ColumnResizer.module.css.js +7 -0
- package/dist/esm/components/Grid/ColumnResizer.module.css.js.map +1 -0
- package/dist/esm/components/Grid/Grid.css +34 -0
- package/dist/esm/components/Grid/Grid.module.css.js +13 -0
- package/dist/esm/components/Grid/Grid.module.css.js.map +1 -0
- package/dist/esm/components/Grid/Header.css +44 -0
- package/dist/esm/components/Grid/Header.js +22 -43
- package/dist/esm/components/Grid/Header.js.map +1 -1
- package/dist/esm/components/Grid/Header.module.css.js +13 -0
- package/dist/esm/components/Grid/Header.module.css.js.map +1 -0
- package/dist/esm/components/Grid/RowNumberColumn.css +22 -0
- package/dist/esm/components/Grid/RowNumberColumn.js +12 -29
- package/dist/esm/components/Grid/RowNumberColumn.js.map +1 -1
- package/dist/esm/components/Grid/RowNumberColumn.module.css.js +8 -0
- package/dist/esm/components/Grid/RowNumberColumn.module.css.js.map +1 -0
- package/dist/esm/components/Grid/StyledCell.css +146 -0
- package/dist/esm/components/Grid/StyledCell.js +84 -56
- package/dist/esm/components/Grid/StyledCell.js.map +1 -1
- package/dist/esm/components/Grid/StyledCell.module.css.js +32 -0
- package/dist/esm/components/Grid/StyledCell.module.css.js.map +1 -0
- package/dist/esm/components/Grid/index.js +30 -30
- package/dist/esm/components/Grid/index.js.map +1 -1
- package/dist/types/components/Assets/Icons/Horizontal-Loading.d.ts +2 -3
- package/dist/types/components/Assets/Icons/Loading-Animated.d.ts +2 -3
- package/dist/types/components/Assets/Icons/Loading.d.ts +2 -4
- package/dist/types/components/DatePicker/DateRangePicker.d.ts +2 -1
- package/dist/types/components/DatePicker/utils.d.ts +1 -0
- package/dist/types/components/Grid/RowNumberColumn.d.ts +1 -2
- package/dist/types/components/Grid/StyledCell.d.ts +10 -5
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/components/Grid/Grid.tsx"],"sourcesContent":["import {\n HTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n PointerEventHandler,\n ReactElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n GridOnScrollProps,\n VariableSizeGrid,\n GridOnItemsRenderedProps,\n GridChildComponentProps,\n} from 'react-window';\nimport AutoSizer, { Size } from 'react-virtualized-auto-sizer';\nimport RowNumberColumn from './RowNumberColumn';\nimport Header from './Header';\nimport { styled } from 'styled-components';\nimport {\n GetResizerPositionFn,\n GridContextMenuItemProps,\n GridProps,\n ItemDataType,\n ResizerPosition,\n RoundedType,\n SelectedRegion,\n SelectionAction,\n SelectionFocus,\n onSelectFn,\n} from './types';\nimport { useSelectionActions } from './useSelectionActions';\nimport { mergeRefs } from '@/utils/mergeRefs';\nimport { Cell } from './Cell';\nimport { ContextMenu } from '@/components/ContextMenu';\nimport { createToast } from '@/components/Toast/toastEmitter';\nimport copyGridElements from './copyGridElements';\nimport useColumns from './useColumns';\nimport useResizingState from './useResizingState';\n\nconst NO_BUTTONS_PRESSED = 0;\nconst LEFT_BUTTON_PRESSED = 1;\nconst RIGHT_BUTTON_PRESSED = 2;\n\nconst GridContainer = styled.div`\n display: flex;\n flex-direction: column-reverse;\n user-select: none;\n overflow-anchor: none;\n`;\n\nconst getRenderedCursor = (children: ReactElement[]) =>\n children.reduce(\n ([minRow, maxRow, minColumn, maxColumn], { props: { columnIndex, rowIndex } }) => {\n if (rowIndex < minRow) {\n minRow = rowIndex;\n }\n if (rowIndex > maxRow) {\n maxRow = rowIndex;\n }\n if (columnIndex < minColumn) {\n minColumn = columnIndex;\n }\n if (columnIndex > maxColumn) {\n maxColumn = columnIndex;\n }\n\n return [minRow, maxRow, minColumn, maxColumn];\n },\n [\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n ]\n );\n\nconst GridDataContainer = styled.div<{ $top: number; $left: number }>`\n position: absolute;\n top: 0;\n left: 0;\n ${({ $top, $left }) => `\n margin-top: ${$top}px;\n margin-left: ${$left}px;\n `}\n`;\n\nconst ContextMenuTrigger = styled.div<{\n $height?: number;\n $rounded: RoundedType;\n $showBorder: boolean;\n}>`\n outline: none;\n overflow: hidden;\n height: ${({ $height }) => ($height ? `${$height}px` : '100%')};\n width: 100%;\n background: ${({ theme }) => theme.click.grid.body.cell.color.background.default};\n border-radius: ${({ theme, $rounded }) => theme.click.grid.radii[$rounded]};\n ${({ $showBorder, theme }) =>\n $showBorder &&\n `border: 1px solid ${theme.click.grid.header.cell.color.stroke.default}`};\n`;\n\ninterface InnerElementTypeTypes extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement[];\n}\n\nconst OuterElementType = forwardRef<HTMLDivElement>((props, ref) => (\n <div\n ref={ref}\n data-testid=\"grid-outer-element\"\n tabIndex={0}\n {...props}\n />\n));\n\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(\n (\n {\n autoFocus,\n autoHeight = false,\n rowStart = 0,\n showRowNumber = true,\n rounded = 'none',\n showHeader = true,\n focus: focusProp,\n useIsScrolling = true,\n rowHeight = 33,\n columnCount,\n columnWidth: columnWidthProp,\n onSelect: onSelectProp,\n headerHeight = 33,\n rowCount,\n cell,\n onColumnResize: onColumnResizeProp,\n onFocusChange: onFocusChangeProp,\n getMenuOptions,\n onKeyDown: onKeyDownProp,\n selection: selectionProp,\n showToast,\n onMouseDown: onMouseDownProp,\n onMouseMove: onMouseMoveProp,\n showBorder = false,\n onCopy: onCopyProp,\n onCopyCallback,\n onContextMenu: onContextMenuProp,\n forwardedGridRef,\n onItemsRendered: onItemsRenderedProp,\n rowAutoHeight,\n ...props\n },\n forwardedRef\n ) => {\n const [focus, setFocus] = useState<SelectionFocus>(\n focusProp ?? {\n row: rowStart,\n column: 0,\n }\n );\n const [selection, setSelection] = useState<SelectedRegion>(\n selectionProp ?? {\n type: 'empty',\n }\n );\n\n const defaultOnCopy: () => Promise<void> = useCallback(async () => {\n try {\n await copyGridElements({\n cell,\n selection,\n focus: focusProp ?? focus,\n rowCount,\n columnCount,\n outerRef: outerRef,\n });\n\n if (onCopyCallback) {\n onCopyCallback(true);\n }\n if (showToast) {\n createToast({\n title: 'Copied successfully',\n description: 'Now you can paste the content',\n type: 'success',\n });\n }\n } catch (e) {\n console.error(e);\n\n if (onCopyCallback) {\n onCopyCallback(false);\n }\n\n if (showToast) {\n createToast({\n title: 'Failed to copy',\n description: 'Encountered an error while copying. Try again after sometime',\n type: 'danger',\n });\n }\n }\n }, [\n cell,\n columnCount,\n focus,\n focusProp,\n rowCount,\n selection,\n showToast,\n onCopyCallback,\n ]);\n\n const customOnCopy: () => Promise<void> = useMemo(() => {\n const result = async () => {\n if (onCopyProp) {\n await onCopyProp(selection, focus);\n }\n };\n return result;\n }, [onCopyProp, selection, focus]);\n\n const onCopy: () => Promise<void> =\n typeof onCopyProp === 'function' ? customOnCopy : defaultOnCopy;\n\n const defaultMenuOptions = [\n {\n label: 'Copy',\n onSelect: onCopy,\n },\n ];\n\n const [menuOptions, setMenuOptions] =\n useState<GridContextMenuItemProps[]>(defaultMenuOptions);\n const [contextMenuOpen, setContextMenuOpen] = useState(false);\n const [scrolledVertical, setScrolledVertical] = useState(false);\n const [scrolledHorizontal, setScrolledHorizontal] = useState(false);\n const dragState = useRef<number | false>(false);\n const gridRef = useRef<VariableSizeGrid>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const outerRef = useRef<HTMLDivElement>(null);\n const elementBorderRef = useRef({\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n scrollBarWidth: 0,\n scrollBarHeight: 0,\n width: 0,\n height: 0,\n });\n const onCellSelect: onSelectFn = useCallback(\n (action, selection, focus) => {\n setSelection(selection);\n if (typeof onSelectProp === 'function') {\n onSelectProp(action, selection, focus);\n }\n },\n [onSelectProp]\n );\n const resizingState = useResizingState();\n\n const [rowHeights, setRowHeights] = useState<{ [key: number]: number }>({});\n\n const getRowHeight = useCallback(\n (index: number) => {\n if (rowAutoHeight && rowHeights[index] !== undefined) {\n return rowHeights[index] + rowHeight;\n }\n return rowHeight;\n },\n [rowHeight, rowAutoHeight, rowHeights]\n );\n\n const updateRowHeight = useCallback(\n (rowIndex: number, height: number) => {\n if (!rowAutoHeight) {\n return;\n }\n\n setRowHeights(prevRowHeights => {\n if (height > (prevRowHeights[rowIndex] || 0) && gridRef.current) {\n const newRowHeights = { ...prevRowHeights, [rowIndex]: height };\n gridRef.current.resetAfterRowIndex(rowIndex);\n return newRowHeights;\n }\n return prevRowHeights;\n });\n },\n [rowAutoHeight, gridRef]\n );\n\n const onFocusChange = useCallback(\n (row: number, column: number) => {\n setFocus(focus => ({\n row: row ?? focusProp?.row ?? focus.row,\n column: column ?? focusProp?.column ?? focus.column,\n }));\n if (typeof onFocusChangeProp === 'function') {\n onFocusChangeProp(row, column);\n }\n },\n [onFocusChangeProp, focusProp]\n );\n\n const rowNumberWidth = ((rowStart + rowCount).toString().length + 2) * 8 + 3; // 128 includes 8px left and right padding and (8px + 8px + 8x(1ch) * rowcount) and 3 is for avoiding ellipsis\n\n const { getColumnHorizontalPosition, onColumnResize, columnWidth, initColumnSize } =\n useColumns({\n columnCount,\n columnWidth: columnWidthProp,\n outerGridRef: outerRef,\n gridRef,\n onColumnResize: onColumnResizeProp,\n });\n\n const scrollGridTo = useCallback(\n async ({ row, column }: { row?: number; column?: number }) => {\n if (!outerRef.current || !gridRef.current) {\n return;\n }\n\n const rowIndex = row ?? 0;\n const columnIndex = column ?? 0;\n let element = outerRef.current?.querySelector<HTMLElement>(\n `[data-row=\"${rowIndex}\"][data-column=\"${columnIndex}\"]`\n );\n if (!element) {\n return;\n }\n\n const { scrollTop, scrollLeft } = outerRef.current;\n // this is for the test to perform correctly\n if (typeof element?.scrollIntoView === 'function') {\n element?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n // This is for the element to be available after the scroll.\n await new Promise(requestAnimationFrame);\n }\n element = outerRef.current?.querySelector<HTMLElement>(\n `[data-row=\"${rowIndex}\"][data-column=\"${columnIndex}\"]`\n );\n if (!element) {\n return;\n }\n if (scrollLeft > element.offsetLeft || scrollTop > element.offsetTop) {\n outerRef.current?.scrollBy(\n scrollLeft > element.offsetLeft ? -rowNumberWidth : 0,\n scrollTop > element.offsetTop ? -headerHeight : 0\n );\n }\n },\n [headerHeight, rowNumberWidth]\n );\n\n const getFixedResizerLeftPosition = useCallback(\n (clientX: number, width: number, columnIndex: number): string | number => {\n const columnPosition = getColumnHorizontalPosition(columnIndex);\n const columnLeft = columnPosition + width;\n const { width: containerWidth, left, scrollBarWidth } = elementBorderRef.current;\n const scrollLeft = outerRef.current?.scrollLeft ?? 0;\n if (clientX + rowNumberWidth - left > containerWidth + scrollBarWidth) {\n return scrollLeft + containerWidth - scrollBarWidth - 4;\n }\n\n if (width < 50) {\n //50 is the minWidth for the column\n return columnPosition + rowNumberWidth + 50;\n }\n\n return columnLeft + rowNumberWidth - 4;\n },\n [getColumnHorizontalPosition, rowNumberWidth]\n );\n\n const getResizerPosition: GetResizerPositionFn = useCallback(\n (clientX, width, columnIndex) => {\n const result: ResizerPosition = {\n left: `${getFixedResizerLeftPosition(clientX, width, columnIndex)}px`,\n };\n\n if (outerRef.current) {\n result.top = `${outerRef.current.scrollTop}px`;\n }\n return result;\n },\n [getFixedResizerLeftPosition]\n );\n\n const clearSelectionAndFocus = useCallback(\n (force: boolean) => {\n setSelection(selection => {\n if (selection.type === 'columns' && !force) {\n return selection;\n } else {\n return { type: 'empty' };\n }\n });\n const newFocus = focusProp ?? focus;\n onFocusChange(newFocus.row, newFocus.column);\n scrollGridTo(newFocus);\n },\n [focus, focusProp, onFocusChange, scrollGridTo]\n );\n\n useEffect(() => {\n clearSelectionAndFocus(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [rowStart]);\n\n const { getSelectionType, onSelection, mouseMoveCellSelect, moveSelection } =\n useSelectionActions({\n onCellSelect,\n focus: focusProp ?? focus,\n columnCount,\n rowCount,\n onFocusChange,\n scrollGridTo,\n selection: selectionProp ?? selection,\n rowStart,\n });\n\n const data: ItemDataType = {\n showRowNumber,\n cell,\n rowCount,\n columnCount,\n showHeader,\n focus: focusProp ?? focus,\n getSelectionType,\n rowHeight,\n headerHeight,\n rowNumberWidth,\n rowStart,\n rowAutoHeight,\n updateRowHeight,\n getRowHeight,\n };\n\n const InnerElementType = forwardRef<HTMLDivElement, InnerElementTypeTypes>(\n ({ children, ...containerProps }, ref) => {\n const [minRow, maxRow, minColumn, maxColumn] = getRenderedCursor(children);\n return (\n <GridContainer\n {...containerProps}\n className={`sticky-grid__container grid-outer ${props.className ?? ''}`}\n >\n <GridDataContainer\n $top={showHeader ? headerHeight : 0}\n $left={showRowNumber ? rowNumberWidth : 0}\n ref={ref}\n >\n {children}\n </GridDataContainer>\n {showRowNumber && (\n <RowNumberColumn\n scrolledHorizontal={scrolledHorizontal}\n minRow={minRow}\n maxRow={maxRow}\n rowHeight={rowHeight}\n headerHeight={headerHeight}\n rowWidth={rowNumberWidth}\n rowCount={rowCount}\n getSelectionType={getSelectionType}\n showHeader={showHeader}\n rowStart={rowStart}\n showBorder={showBorder}\n rowAutoHeight={rowAutoHeight}\n />\n )}\n\n {showHeader && (\n <Header\n scrolledVertical={scrolledVertical}\n scrolledHorizontal={scrolledHorizontal}\n showRowNumber={showRowNumber}\n minColumn={minColumn}\n maxColumn={maxColumn}\n height={headerHeight}\n getColumnWidth={columnWidth}\n cell={cell}\n rowNumberWidth={rowNumberWidth}\n getSelectionType={getSelectionType}\n columnCount={columnCount}\n onColumnResize={onColumnResize}\n getColumnHorizontalPosition={getColumnHorizontalPosition}\n getResizerPosition={getResizerPosition}\n showBorder={showBorder}\n resizingState={resizingState}\n />\n )}\n </GridContainer>\n );\n }\n );\n useEffect(() => {\n if (autoFocus) {\n containerRef.current?.focus();\n }\n }, [autoFocus]);\n\n const onMouseDown: MouseEventHandler<HTMLDivElement> = useCallback(\n e => {\n containerRef.current?.focus();\n if (typeof onMouseDownProp === 'function' && e.buttons === LEFT_BUTTON_PRESSED) {\n onMouseDownProp(e);\n }\n const target = (e.target as HTMLElement).closest(\n '[data-grid-row][data-grid-column]'\n ) as HTMLElement;\n if (\n !target ||\n target.dataset.gridRow === undefined ||\n target.dataset.gridColumn === undefined\n ) {\n return;\n }\n\n if (e.buttons === RIGHT_BUTTON_PRESSED && target.dataset.selected === 'true') {\n return;\n }\n\n const { gridRow: rowIndexString, gridColumn: columnIndexString } = target.dataset;\n const row = parseInt(rowIndexString);\n const column = parseInt(columnIndexString);\n if (row === -1 && column === -1) {\n onSelection({ type: 'all' });\n return;\n }\n const shiftKeyPressed = e.shiftKey;\n\n if (row === -1) {\n onSelection({\n type: shiftKeyPressed ? 'shiftColumnSelection' : 'columnSelection',\n column,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(rowStart, column);\n }\n return;\n }\n if (column === -1) {\n onSelection({\n type: shiftKeyPressed ? 'shiftRowSelection' : 'rowSelection',\n row,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(row, 0);\n }\n return;\n }\n onSelection({\n type: shiftKeyPressed ? 'shiftSelection' : 'normal',\n row,\n column,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(row, column);\n }\n },\n [onFocusChange, onMouseDownProp, onSelection, rowStart]\n );\n\n const onPointerDown: PointerEventHandler<HTMLDivElement> = useCallback(e => {\n dragState.current = e.pointerId;\n }, []);\n\n const setPointerCapture: PointerEventHandler<HTMLDivElement> = useCallback(e => {\n if (e.buttons === NO_BUTTONS_PRESSED || dragState.current === false) {\n return;\n }\n\n containerRef.current?.setPointerCapture(dragState.current);\n }, []);\n\n const onPointerUp: PointerEventHandler<HTMLDivElement> = useCallback(\n e => {\n if (containerRef.current) {\n containerRef.current.releasePointerCapture(e.pointerId);\n if (!contextMenuOpen) {\n containerRef.current.focus();\n }\n }\n\n dragState.current = false;\n const newFocus = focusProp ?? focus;\n onFocusChange(newFocus.row, newFocus.column);\n },\n [contextMenuOpen, focus, focusProp, onFocusChange]\n );\n\n const onMouseMove: MouseEventHandler<HTMLDivElement> = useCallback(\n async e => {\n e.preventDefault();\n e.stopPropagation();\n if (typeof onMouseMoveProp === 'function') {\n onMouseMoveProp(e);\n }\n if (\n dragState.current === false ||\n e.buttons === NO_BUTTONS_PRESSED ||\n !containerRef.current ||\n !outerRef.current\n ) {\n return;\n }\n\n containerRef.current.setPointerCapture(dragState.current);\n let verticalSign = 0,\n horizontalSign = 0,\n x = e.clientX,\n y = e.clientY;\n if (\n elementBorderRef.current.left >= e.clientX ||\n e.clientX >=\n elementBorderRef.current.right - elementBorderRef.current.scrollBarWidth\n ) {\n const scrollHorizontalDirection =\n e.clientX <= elementBorderRef.current.left ? 'left' : 'right';\n if (\n (scrollHorizontalDirection === 'left' && e.movementX < 0) ||\n (scrollHorizontalDirection === 'right' && e.movementX > 0)\n ) {\n horizontalSign = scrollHorizontalDirection === 'left' ? -1 : 1;\n }\n x =\n scrollHorizontalDirection === 'left'\n ? elementBorderRef.current.left + rowNumberWidth + 10\n : elementBorderRef.current.right -\n elementBorderRef.current.scrollBarWidth -\n 10;\n }\n\n if (\n elementBorderRef.current.top >= e.clientY ||\n e.clientY >=\n elementBorderRef.current.bottom - elementBorderRef.current.scrollBarHeight\n ) {\n const scrollVerticalDirection =\n e.clientY <= elementBorderRef.current.top ? 'top' : 'bottom';\n if (\n (scrollVerticalDirection === 'top' && e.movementY < 0) ||\n (scrollVerticalDirection === 'bottom' && e.movementY > 0)\n ) {\n verticalSign = scrollVerticalDirection === 'top' ? -1 : 1;\n }\n y =\n scrollVerticalDirection === 'top'\n ? elementBorderRef.current.top + headerHeight + 10\n : elementBorderRef.current.bottom -\n elementBorderRef.current.scrollBarHeight -\n 10;\n }\n\n await new Promise(requestAnimationFrame);\n const cell = document.elementFromPoint(x, y) as HTMLElement | null;\n\n if (!cell) {\n return;\n }\n\n const { gridRow, gridColumn } = cell.dataset;\n if (!gridRow || !gridColumn) {\n return;\n }\n const rowIndex = Number(gridRow) + verticalSign;\n const columnIndex = Number(gridColumn) + horizontalSign;\n\n mouseMoveCellSelect(rowIndex, columnIndex);\n },\n [headerHeight, mouseMoveCellSelect, onMouseMoveProp, rowNumberWidth]\n );\n\n const onScroll = ({ scrollLeft, scrollTop }: GridOnScrollProps) => {\n setScrolledVertical(scrollTop > 0);\n setScrolledHorizontal(scrollLeft > 0);\n };\n\n const onResize = useCallback(\n ({ height, width }: Size) => {\n setTimeout(() => {\n if (!outerRef.current) {\n return;\n }\n\n const { top, bottom, left, right } =\n outerRef.current.getBoundingClientRect() ?? {};\n elementBorderRef.current = {\n top,\n bottom,\n left,\n right,\n scrollBarWidth: width - outerRef.current.clientWidth,\n scrollBarHeight: height - outerRef.current.clientHeight,\n width,\n height,\n };\n initColumnSize(outerRef.current.clientWidth - rowNumberWidth);\n }, 0);\n },\n [initColumnSize, rowNumberWidth]\n );\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(\n async e => {\n if (typeof onKeyDownProp === 'function') {\n onKeyDownProp(e);\n }\n if (!e.defaultPrevented) {\n e.preventDefault();\n e.stopPropagation();\n }\n const moveAnchor = e.shiftKey;\n const { row, column } = focusProp ?? focus;\n\n const applyAction = (action: SelectionAction | null): void => {\n if (action) {\n onSelection({ ...action, event: 'keypress' });\n }\n if (action?.type === 'normal') {\n onFocusChange(action.row, action.column);\n }\n };\n if ((e.ctrlKey || e.metaKey) && e.key === 'c') {\n onCopy();\n return;\n }\n\n switch (e.key) {\n case 'ArrowLeft':\n applyAction(moveSelection(-1, 0, moveAnchor, 'keypress'));\n break;\n case 'ArrowRight':\n applyAction(moveSelection(1, 0, moveAnchor, 'keypress'));\n break;\n case 'ArrowUp':\n applyAction(moveSelection(0, -1, moveAnchor, 'keypress'));\n break;\n case 'ArrowDown':\n applyAction(moveSelection(0, 1, moveAnchor, 'keypress'));\n break;\n case 'Enter':\n onSelection({\n type: 'normal',\n row,\n column,\n event: 'keypress',\n });\n onFocusChange(row, column);\n break;\n case 'Escape':\n clearSelectionAndFocus(true);\n break;\n }\n containerRef.current?.focus();\n },\n [\n onKeyDownProp,\n focusProp,\n focus,\n onSelection,\n onFocusChange,\n onCopy,\n moveSelection,\n clearSelectionAndFocus,\n ]\n );\n const onContextMenu: MouseEventHandler<HTMLDivElement> = e => {\n onMouseDown(e);\n\n if (typeof onContextMenuProp === 'function') {\n onContextMenuProp(e);\n }\n if (typeof getMenuOptions === 'function') {\n const newOptions = getMenuOptions(selection, focusProp ?? focus);\n setMenuOptions([...defaultMenuOptions, ...newOptions]);\n }\n };\n\n const lastItemsRenderedProps = useRef<GridOnItemsRenderedProps>();\n const lastRowStart = useRef(rowStart);\n\n const onItemsRendered = useCallback(\n (props: GridOnItemsRenderedProps) => {\n lastItemsRenderedProps.current = props;\n return onItemsRenderedProp?.({\n ...props,\n visibleRowStartIndex: props.visibleRowStartIndex + rowStart,\n visibleRowStopIndex: props.visibleRowStopIndex + rowStart,\n overscanRowStartIndex: props.overscanRowStartIndex + rowStart,\n overscanRowStopIndex: props.overscanRowStopIndex + rowStart,\n });\n },\n [onItemsRenderedProp, rowStart]\n );\n\n // handles the case where rowStart changes, make sure to inform caller\n // of the new visible rows.\n useEffect(() => {\n if (lastItemsRenderedProps.current && rowStart !== lastRowStart.current) {\n onItemsRendered(lastItemsRenderedProps.current);\n lastRowStart.current = rowStart;\n }\n }, [rowStart, onItemsRendered]);\n\n const CellWithWidth = (\n args: GridChildComponentProps<ItemDataType>\n ): React.JSX.Element => {\n const width = columnWidth(args.columnIndex);\n return (\n <Cell\n {...args}\n width={width}\n />\n );\n };\n\n // Handles the case when rowCount/columnCount changes, rerenders styles\n useEffect(() => {\n if (gridRef.current) {\n gridRef.current.resetAfterRowIndex(0);\n }\n }, [rowCount, columnCount]);\n\n return (\n <ContextMenu\n modal={false}\n onOpenChange={setContextMenuOpen}\n >\n <ContextMenuTrigger\n as={ContextMenu.Trigger}\n ref={mergeRefs([forwardedRef, containerRef])}\n tabIndex={0}\n onMouseDown={onMouseDown}\n onMouseMove={onMouseMove}\n onKeyDown={onKeyDown}\n onPointerDown={onPointerDown}\n onPointerUp={onPointerUp}\n onPointerLeave={setPointerCapture}\n onPointerEnter={setPointerCapture}\n onContextMenu={onContextMenu}\n $rounded={rounded}\n $height={\n autoHeight\n ? rowCount * rowHeight +\n (showHeader ? headerHeight : 0) +\n elementBorderRef.current.scrollBarHeight\n : undefined\n }\n $showBorder={showBorder}\n >\n <AutoSizer onResize={onResize}>\n {({ height, width }) => (\n <VariableSizeGrid\n ref={forwardedGridRef ? mergeRefs([forwardedGridRef, gridRef]) : gridRef}\n height={height}\n width={width}\n columnCount={columnCount}\n rowHeight={getRowHeight}\n useIsScrolling={useIsScrolling}\n innerElementType={InnerElementType}\n itemData={data}\n initialScrollTop={\n focus.row < rowStart\n ? focus.row * rowHeight\n : (focus.row - rowStart) * rowHeight\n }\n initialScrollLeft={getColumnHorizontalPosition(focus.column)}\n columnWidth={columnWidth}\n rowCount={rowCount}\n onScroll={onScroll}\n outerRef={outerRef}\n outerElementType={OuterElementType}\n onItemsRendered={onItemsRendered}\n {...props}\n >\n {CellWithWidth}\n </VariableSizeGrid>\n )}\n </AutoSizer>\n </ContextMenuTrigger>\n <ContextMenu.Content>\n {menuOptions.map((option, index) => (\n <ContextMenu.Item\n key={`grid-${index}`}\n onSelect={option.onSelect}\n >\n {option.label}\n </ContextMenu.Item>\n ))}\n </ContextMenu.Content>\n </ContextMenu>\n );\n }\n);\n"],"names":["NO_BUTTONS_PRESSED","LEFT_BUTTON_PRESSED","RIGHT_BUTTON_PRESSED","GridContainer","styled","div","withConfig","componentId","getRenderedCursor","children","reduce","minRow","maxRow","minColumn","maxColumn","props","columnIndex","rowIndex","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","GridDataContainer","$top","$left","ContextMenuTrigger","$height","theme","click","grid","body","cell","color","background","default","$rounded","radii","$showBorder","header","stroke","OuterElementType","forwardRef","ref","jsx","Grid","autoFocus","autoHeight","rowStart","showRowNumber","rounded","showHeader","focus","focusProp","useIsScrolling","rowHeight","columnCount","columnWidth","columnWidthProp","onSelect","onSelectProp","headerHeight","rowCount","onColumnResize","onColumnResizeProp","onFocusChange","onFocusChangeProp","getMenuOptions","onKeyDown","onKeyDownProp","selection","selectionProp","showToast","onMouseDown","onMouseDownProp","onMouseMove","onMouseMoveProp","showBorder","onCopy","onCopyProp","onCopyCallback","onContextMenu","onContextMenuProp","forwardedGridRef","onItemsRendered","onItemsRenderedProp","rowAutoHeight","forwardedRef","setFocus","useState","row","column","setSelection","type","defaultOnCopy","useCallback","copyGridElements","outerRef","createToast","title","description","e","console","error","customOnCopy","useMemo","result","defaultMenuOptions","label","menuOptions","setMenuOptions","contextMenuOpen","setContextMenuOpen","scrolledVertical","setScrolledVertical","scrolledHorizontal","setScrolledHorizontal","dragState","useRef","gridRef","containerRef","elementBorderRef","top","bottom","left","right","scrollBarWidth","scrollBarHeight","width","height","onCellSelect","action","resizingState","useResizingState","rowHeights","setRowHeights","getRowHeight","index","undefined","updateRowHeight","prevRowHeights","current","newRowHeights","resetAfterRowIndex","rowNumberWidth","toString","length","getColumnHorizontalPosition","initColumnSize","useColumns","outerGridRef","scrollGridTo","element","querySelector","scrollTop","scrollLeft","scrollIntoView","block","inline","Promise","requestAnimationFrame","offsetLeft","offsetTop","scrollBy","getFixedResizerLeftPosition","clientX","columnPosition","columnLeft","containerWidth","getResizerPosition","clearSelectionAndFocus","force","newFocus","useEffect","getSelectionType","onSelection","mouseMoveCellSelect","moveSelection","useSelectionActions","data","InnerElementType","containerProps","jsxs","className","RowNumberColumn","Header","buttons","target","closest","dataset","gridRow","gridColumn","selected","rowIndexString","columnIndexString","parseInt","shiftKeyPressed","shiftKey","event","onPointerDown","pointerId","setPointerCapture","onPointerUp","releasePointerCapture","preventDefault","stopPropagation","verticalSign","horizontalSign","x","y","clientY","scrollHorizontalDirection","movementX","scrollVerticalDirection","movementY","document","elementFromPoint","onScroll","onResize","setTimeout","getBoundingClientRect","clientWidth","clientHeight","defaultPrevented","moveAnchor","applyAction","ctrlKey","metaKey","key","newOptions","lastItemsRenderedProps","lastRowStart","visibleRowStartIndex","visibleRowStopIndex","overscanRowStartIndex","overscanRowStopIndex","CellWithWidth","args","Cell","ContextMenu","Trigger","mergeRefs","AutoSizer","VariableSizeGrid","map","option"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/Grid/Grid.tsx"],"sourcesContent":["import {\n CSSProperties,\n HTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n PointerEventHandler,\n ReactElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n GridOnScrollProps,\n VariableSizeGrid,\n GridOnItemsRenderedProps,\n GridChildComponentProps,\n} from 'react-window';\nimport AutoSizer, { Size } from 'react-virtualized-auto-sizer';\nimport RowNumberColumn from './RowNumberColumn';\nimport Header from './Header';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './Grid.module.css';\nimport {\n GetResizerPositionFn,\n GridContextMenuItemProps,\n GridProps,\n ItemDataType,\n ResizerPosition,\n RoundedType,\n SelectedRegion,\n SelectionAction,\n SelectionFocus,\n onSelectFn,\n} from './types';\nimport { useSelectionActions } from './useSelectionActions';\nimport { mergeRefs } from '@/utils/mergeRefs';\nimport { Cell } from './Cell';\nimport { ContextMenu } from '@/components/ContextMenu';\nimport { createToast } from '@/components/Toast/toastEmitter';\nimport copyGridElements from './copyGridElements';\nimport useColumns from './useColumns';\nimport useResizingState from './useResizingState';\n\nconst gridVariants = cva(styles['grid'], {\n variants: {\n bordered: { true: styles['grid_bordered'] },\n },\n});\n\nconst NO_BUTTONS_PRESSED = 0;\nconst LEFT_BUTTON_PRESSED = 1;\nconst RIGHT_BUTTON_PRESSED = 2;\n\nconst getRenderedCursor = (children: ReactElement[]) =>\n children.reduce(\n ([minRow, maxRow, minColumn, maxColumn], { props: { columnIndex, rowIndex } }) => {\n if (rowIndex < minRow) {\n minRow = rowIndex;\n }\n if (rowIndex > maxRow) {\n maxRow = rowIndex;\n }\n if (columnIndex < minColumn) {\n minColumn = columnIndex;\n }\n if (columnIndex > maxColumn) {\n maxColumn = columnIndex;\n }\n\n return [minRow, maxRow, minColumn, maxColumn];\n },\n [\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n ]\n );\n\nconst roundedRadii: Record<RoundedType, string> = {\n none: 'var(--click-grid-radii-none)',\n lg: 'var(--click-grid-radii-lg)',\n md: 'var(--click-grid-radii-md)',\n sm: 'var(--click-grid-radii-sm)',\n};\n\ninterface InnerElementTypeTypes extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement[];\n}\n\nconst OuterElementType = forwardRef<HTMLDivElement>((props, ref) => (\n <div\n ref={ref}\n data-testid=\"grid-outer-element\"\n tabIndex={0}\n {...props}\n />\n));\n\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(\n (\n {\n autoFocus,\n autoHeight = false,\n rowStart = 0,\n showRowNumber = true,\n rounded = 'none',\n showHeader = true,\n focus: focusProp,\n useIsScrolling = true,\n rowHeight = 33,\n columnCount,\n columnWidth: columnWidthProp,\n onSelect: onSelectProp,\n headerHeight = 33,\n rowCount,\n cell,\n onColumnResize: onColumnResizeProp,\n onFocusChange: onFocusChangeProp,\n getMenuOptions,\n onKeyDown: onKeyDownProp,\n selection: selectionProp,\n showToast,\n onMouseDown: onMouseDownProp,\n onMouseMove: onMouseMoveProp,\n showBorder = false,\n onCopy: onCopyProp,\n onCopyCallback,\n onContextMenu: onContextMenuProp,\n forwardedGridRef,\n onItemsRendered: onItemsRenderedProp,\n rowAutoHeight,\n ...props\n },\n forwardedRef\n ) => {\n const [focus, setFocus] = useState<SelectionFocus>(\n focusProp ?? {\n row: rowStart,\n column: 0,\n }\n );\n const [selection, setSelection] = useState<SelectedRegion>(\n selectionProp ?? {\n type: 'empty',\n }\n );\n\n const defaultOnCopy: () => Promise<void> = useCallback(async () => {\n try {\n await copyGridElements({\n cell,\n selection,\n focus: focusProp ?? focus,\n rowCount,\n columnCount,\n outerRef: outerRef,\n });\n\n if (onCopyCallback) {\n onCopyCallback(true);\n }\n if (showToast) {\n createToast({\n title: 'Copied successfully',\n description: 'Now you can paste the content',\n type: 'success',\n });\n }\n } catch (e) {\n console.error(e);\n\n if (onCopyCallback) {\n onCopyCallback(false);\n }\n\n if (showToast) {\n createToast({\n title: 'Failed to copy',\n description: 'Encountered an error while copying. Try again after sometime',\n type: 'danger',\n });\n }\n }\n }, [\n cell,\n columnCount,\n focus,\n focusProp,\n rowCount,\n selection,\n showToast,\n onCopyCallback,\n ]);\n\n const customOnCopy: () => Promise<void> = useMemo(() => {\n const result = async () => {\n if (onCopyProp) {\n await onCopyProp(selection, focus);\n }\n };\n return result;\n }, [onCopyProp, selection, focus]);\n\n const onCopy: () => Promise<void> =\n typeof onCopyProp === 'function' ? customOnCopy : defaultOnCopy;\n\n const defaultMenuOptions = [\n {\n label: 'Copy',\n onSelect: onCopy,\n },\n ];\n\n const [menuOptions, setMenuOptions] =\n useState<GridContextMenuItemProps[]>(defaultMenuOptions);\n const [contextMenuOpen, setContextMenuOpen] = useState(false);\n const [scrolledVertical, setScrolledVertical] = useState(false);\n const [scrolledHorizontal, setScrolledHorizontal] = useState(false);\n const dragState = useRef<number | false>(false);\n const gridRef = useRef<VariableSizeGrid>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const outerRef = useRef<HTMLDivElement>(null);\n const elementBorderRef = useRef({\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n scrollBarWidth: 0,\n scrollBarHeight: 0,\n width: 0,\n height: 0,\n });\n const onCellSelect: onSelectFn = useCallback(\n (action, selection, focus) => {\n setSelection(selection);\n if (typeof onSelectProp === 'function') {\n onSelectProp(action, selection, focus);\n }\n },\n [onSelectProp]\n );\n const resizingState = useResizingState();\n\n const [rowHeights, setRowHeights] = useState<{ [key: number]: number }>({});\n\n const getRowHeight = useCallback(\n (index: number) => {\n if (rowAutoHeight && rowHeights[index] !== undefined) {\n return rowHeights[index] + rowHeight;\n }\n return rowHeight;\n },\n [rowHeight, rowAutoHeight, rowHeights]\n );\n\n const updateRowHeight = useCallback(\n (rowIndex: number, height: number) => {\n if (!rowAutoHeight) {\n return;\n }\n\n setRowHeights(prevRowHeights => {\n if (height > (prevRowHeights[rowIndex] || 0) && gridRef.current) {\n const newRowHeights = { ...prevRowHeights, [rowIndex]: height };\n gridRef.current.resetAfterRowIndex(rowIndex);\n return newRowHeights;\n }\n return prevRowHeights;\n });\n },\n [rowAutoHeight, gridRef]\n );\n\n const onFocusChange = useCallback(\n (row: number, column: number) => {\n setFocus(focus => ({\n row: row ?? focusProp?.row ?? focus.row,\n column: column ?? focusProp?.column ?? focus.column,\n }));\n if (typeof onFocusChangeProp === 'function') {\n onFocusChangeProp(row, column);\n }\n },\n [onFocusChangeProp, focusProp]\n );\n\n const rowNumberWidth = ((rowStart + rowCount).toString().length + 2) * 8 + 3; // 128 includes 8px left and right padding and (8px + 8px + 8x(1ch) * rowcount) and 3 is for avoiding ellipsis\n\n const { getColumnHorizontalPosition, onColumnResize, columnWidth, initColumnSize } =\n useColumns({\n columnCount,\n columnWidth: columnWidthProp,\n outerGridRef: outerRef,\n gridRef,\n onColumnResize: onColumnResizeProp,\n });\n\n const scrollGridTo = useCallback(\n async ({ row, column }: { row?: number; column?: number }) => {\n if (!outerRef.current || !gridRef.current) {\n return;\n }\n\n const rowIndex = row ?? 0;\n const columnIndex = column ?? 0;\n let element = outerRef.current?.querySelector<HTMLElement>(\n `[data-row=\"${rowIndex}\"][data-column=\"${columnIndex}\"]`\n );\n if (!element) {\n return;\n }\n\n const { scrollTop, scrollLeft } = outerRef.current;\n // this is for the test to perform correctly\n if (typeof element?.scrollIntoView === 'function') {\n element?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n // This is for the element to be available after the scroll.\n await new Promise(requestAnimationFrame);\n }\n element = outerRef.current?.querySelector<HTMLElement>(\n `[data-row=\"${rowIndex}\"][data-column=\"${columnIndex}\"]`\n );\n if (!element) {\n return;\n }\n if (scrollLeft > element.offsetLeft || scrollTop > element.offsetTop) {\n outerRef.current?.scrollBy(\n scrollLeft > element.offsetLeft ? -rowNumberWidth : 0,\n scrollTop > element.offsetTop ? -headerHeight : 0\n );\n }\n },\n [headerHeight, rowNumberWidth]\n );\n\n const getFixedResizerLeftPosition = useCallback(\n (clientX: number, width: number, columnIndex: number): string | number => {\n const columnPosition = getColumnHorizontalPosition(columnIndex);\n const columnLeft = columnPosition + width;\n const { width: containerWidth, left, scrollBarWidth } = elementBorderRef.current;\n const scrollLeft = outerRef.current?.scrollLeft ?? 0;\n if (clientX + rowNumberWidth - left > containerWidth + scrollBarWidth) {\n return scrollLeft + containerWidth - scrollBarWidth - 4;\n }\n\n if (width < 50) {\n //50 is the minWidth for the column\n return columnPosition + rowNumberWidth + 50;\n }\n\n return columnLeft + rowNumberWidth - 4;\n },\n [getColumnHorizontalPosition, rowNumberWidth]\n );\n\n const getResizerPosition: GetResizerPositionFn = useCallback(\n (clientX, width, columnIndex) => {\n const result: ResizerPosition = {\n left: `${getFixedResizerLeftPosition(clientX, width, columnIndex)}px`,\n };\n\n if (outerRef.current) {\n result.top = `${outerRef.current.scrollTop}px`;\n }\n return result;\n },\n [getFixedResizerLeftPosition]\n );\n\n const clearSelectionAndFocus = useCallback(\n (force: boolean) => {\n setSelection(selection => {\n if (selection.type === 'columns' && !force) {\n return selection;\n } else {\n return { type: 'empty' };\n }\n });\n const newFocus = focusProp ?? focus;\n onFocusChange(newFocus.row, newFocus.column);\n scrollGridTo(newFocus);\n },\n [focus, focusProp, onFocusChange, scrollGridTo]\n );\n\n useEffect(() => {\n clearSelectionAndFocus(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [rowStart]);\n\n const { getSelectionType, onSelection, mouseMoveCellSelect, moveSelection } =\n useSelectionActions({\n onCellSelect,\n focus: focusProp ?? focus,\n columnCount,\n rowCount,\n onFocusChange,\n scrollGridTo,\n selection: selectionProp ?? selection,\n rowStart,\n });\n\n const data: ItemDataType = {\n showRowNumber,\n cell,\n rowCount,\n columnCount,\n showHeader,\n focus: focusProp ?? focus,\n getSelectionType,\n rowHeight,\n headerHeight,\n rowNumberWidth,\n rowStart,\n rowAutoHeight,\n updateRowHeight,\n getRowHeight,\n };\n\n const InnerElementType = forwardRef<HTMLDivElement, InnerElementTypeTypes>(\n ({ children, ...containerProps }, ref) => {\n const [minRow, maxRow, minColumn, maxColumn] = getRenderedCursor(children);\n return (\n <div\n {...containerProps}\n className={cn(\n styles['grid__inner'],\n `sticky-grid__container grid-outer ${props.className ?? ''}`\n )}\n >\n <div\n className={styles['grid__data']}\n style={\n {\n '--grid-data-top': `${showHeader ? headerHeight : 0}px`,\n '--grid-data-left': `${showRowNumber ? rowNumberWidth : 0}px`,\n } as CSSProperties\n }\n ref={ref}\n >\n {children}\n </div>\n {showRowNumber && (\n <RowNumberColumn\n scrolledHorizontal={scrolledHorizontal}\n minRow={minRow}\n maxRow={maxRow}\n rowHeight={rowHeight}\n headerHeight={headerHeight}\n rowWidth={rowNumberWidth}\n rowCount={rowCount}\n getSelectionType={getSelectionType}\n rowStart={rowStart}\n showBorder={showBorder}\n rowAutoHeight={rowAutoHeight}\n />\n )}\n\n {showHeader && (\n <Header\n scrolledVertical={scrolledVertical}\n scrolledHorizontal={scrolledHorizontal}\n showRowNumber={showRowNumber}\n minColumn={minColumn}\n maxColumn={maxColumn}\n height={headerHeight}\n getColumnWidth={columnWidth}\n cell={cell}\n rowNumberWidth={rowNumberWidth}\n getSelectionType={getSelectionType}\n columnCount={columnCount}\n onColumnResize={onColumnResize}\n getColumnHorizontalPosition={getColumnHorizontalPosition}\n getResizerPosition={getResizerPosition}\n showBorder={showBorder}\n resizingState={resizingState}\n />\n )}\n </div>\n );\n }\n );\n useEffect(() => {\n if (autoFocus) {\n containerRef.current?.focus();\n }\n }, [autoFocus]);\n\n const onMouseDown: MouseEventHandler<HTMLDivElement> = useCallback(\n e => {\n containerRef.current?.focus();\n if (typeof onMouseDownProp === 'function' && e.buttons === LEFT_BUTTON_PRESSED) {\n onMouseDownProp(e);\n }\n const target = (e.target as HTMLElement).closest(\n '[data-grid-row][data-grid-column]'\n ) as HTMLElement;\n if (\n !target ||\n target.dataset.gridRow === undefined ||\n target.dataset.gridColumn === undefined\n ) {\n return;\n }\n\n if (e.buttons === RIGHT_BUTTON_PRESSED && target.dataset.selected === 'true') {\n return;\n }\n\n const { gridRow: rowIndexString, gridColumn: columnIndexString } = target.dataset;\n const row = parseInt(rowIndexString);\n const column = parseInt(columnIndexString);\n if (row === -1 && column === -1) {\n onSelection({ type: 'all' });\n return;\n }\n const shiftKeyPressed = e.shiftKey;\n\n if (row === -1) {\n onSelection({\n type: shiftKeyPressed ? 'shiftColumnSelection' : 'columnSelection',\n column,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(rowStart, column);\n }\n return;\n }\n if (column === -1) {\n onSelection({\n type: shiftKeyPressed ? 'shiftRowSelection' : 'rowSelection',\n row,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(row, 0);\n }\n return;\n }\n onSelection({\n type: shiftKeyPressed ? 'shiftSelection' : 'normal',\n row,\n column,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(row, column);\n }\n },\n [onFocusChange, onMouseDownProp, onSelection, rowStart]\n );\n\n const onPointerDown: PointerEventHandler<HTMLDivElement> = useCallback(e => {\n dragState.current = e.pointerId;\n }, []);\n\n const setPointerCapture: PointerEventHandler<HTMLDivElement> = useCallback(e => {\n if (e.buttons === NO_BUTTONS_PRESSED || dragState.current === false) {\n return;\n }\n\n containerRef.current?.setPointerCapture(dragState.current);\n }, []);\n\n const onPointerUp: PointerEventHandler<HTMLDivElement> = useCallback(\n e => {\n if (containerRef.current) {\n containerRef.current.releasePointerCapture(e.pointerId);\n if (!contextMenuOpen) {\n containerRef.current.focus();\n }\n }\n\n dragState.current = false;\n const newFocus = focusProp ?? focus;\n onFocusChange(newFocus.row, newFocus.column);\n },\n [contextMenuOpen, focus, focusProp, onFocusChange]\n );\n\n const onMouseMove: MouseEventHandler<HTMLDivElement> = useCallback(\n async e => {\n e.preventDefault();\n e.stopPropagation();\n if (typeof onMouseMoveProp === 'function') {\n onMouseMoveProp(e);\n }\n if (\n dragState.current === false ||\n e.buttons === NO_BUTTONS_PRESSED ||\n !containerRef.current ||\n !outerRef.current\n ) {\n return;\n }\n\n containerRef.current.setPointerCapture(dragState.current);\n let verticalSign = 0,\n horizontalSign = 0,\n x = e.clientX,\n y = e.clientY;\n if (\n elementBorderRef.current.left >= e.clientX ||\n e.clientX >=\n elementBorderRef.current.right - elementBorderRef.current.scrollBarWidth\n ) {\n const scrollHorizontalDirection =\n e.clientX <= elementBorderRef.current.left ? 'left' : 'right';\n if (\n (scrollHorizontalDirection === 'left' && e.movementX < 0) ||\n (scrollHorizontalDirection === 'right' && e.movementX > 0)\n ) {\n horizontalSign = scrollHorizontalDirection === 'left' ? -1 : 1;\n }\n x =\n scrollHorizontalDirection === 'left'\n ? elementBorderRef.current.left + rowNumberWidth + 10\n : elementBorderRef.current.right -\n elementBorderRef.current.scrollBarWidth -\n 10;\n }\n\n if (\n elementBorderRef.current.top >= e.clientY ||\n e.clientY >=\n elementBorderRef.current.bottom - elementBorderRef.current.scrollBarHeight\n ) {\n const scrollVerticalDirection =\n e.clientY <= elementBorderRef.current.top ? 'top' : 'bottom';\n if (\n (scrollVerticalDirection === 'top' && e.movementY < 0) ||\n (scrollVerticalDirection === 'bottom' && e.movementY > 0)\n ) {\n verticalSign = scrollVerticalDirection === 'top' ? -1 : 1;\n }\n y =\n scrollVerticalDirection === 'top'\n ? elementBorderRef.current.top + headerHeight + 10\n : elementBorderRef.current.bottom -\n elementBorderRef.current.scrollBarHeight -\n 10;\n }\n\n await new Promise(requestAnimationFrame);\n const cell = document.elementFromPoint(x, y) as HTMLElement | null;\n\n if (!cell) {\n return;\n }\n\n const { gridRow, gridColumn } = cell.dataset;\n if (!gridRow || !gridColumn) {\n return;\n }\n const rowIndex = Number(gridRow) + verticalSign;\n const columnIndex = Number(gridColumn) + horizontalSign;\n\n mouseMoveCellSelect(rowIndex, columnIndex);\n },\n [headerHeight, mouseMoveCellSelect, onMouseMoveProp, rowNumberWidth]\n );\n\n const onScroll = ({ scrollLeft, scrollTop }: GridOnScrollProps) => {\n setScrolledVertical(scrollTop > 0);\n setScrolledHorizontal(scrollLeft > 0);\n };\n\n const onResize = useCallback(\n ({ height, width }: Size) => {\n setTimeout(() => {\n if (!outerRef.current) {\n return;\n }\n\n const { top, bottom, left, right } =\n outerRef.current.getBoundingClientRect() ?? {};\n elementBorderRef.current = {\n top,\n bottom,\n left,\n right,\n scrollBarWidth: width - outerRef.current.clientWidth,\n scrollBarHeight: height - outerRef.current.clientHeight,\n width,\n height,\n };\n initColumnSize(outerRef.current.clientWidth - rowNumberWidth);\n }, 0);\n },\n [initColumnSize, rowNumberWidth]\n );\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(\n async e => {\n if (typeof onKeyDownProp === 'function') {\n onKeyDownProp(e);\n }\n if (!e.defaultPrevented) {\n e.preventDefault();\n e.stopPropagation();\n }\n const moveAnchor = e.shiftKey;\n const { row, column } = focusProp ?? focus;\n\n const applyAction = (action: SelectionAction | null): void => {\n if (action) {\n onSelection({ ...action, event: 'keypress' });\n }\n if (action?.type === 'normal') {\n onFocusChange(action.row, action.column);\n }\n };\n if ((e.ctrlKey || e.metaKey) && e.key === 'c') {\n onCopy();\n return;\n }\n\n switch (e.key) {\n case 'ArrowLeft':\n applyAction(moveSelection(-1, 0, moveAnchor, 'keypress'));\n break;\n case 'ArrowRight':\n applyAction(moveSelection(1, 0, moveAnchor, 'keypress'));\n break;\n case 'ArrowUp':\n applyAction(moveSelection(0, -1, moveAnchor, 'keypress'));\n break;\n case 'ArrowDown':\n applyAction(moveSelection(0, 1, moveAnchor, 'keypress'));\n break;\n case 'Enter':\n onSelection({\n type: 'normal',\n row,\n column,\n event: 'keypress',\n });\n onFocusChange(row, column);\n break;\n case 'Escape':\n clearSelectionAndFocus(true);\n break;\n }\n containerRef.current?.focus();\n },\n [\n onKeyDownProp,\n focusProp,\n focus,\n onSelection,\n onFocusChange,\n onCopy,\n moveSelection,\n clearSelectionAndFocus,\n ]\n );\n const onContextMenu: MouseEventHandler<HTMLDivElement> = e => {\n onMouseDown(e);\n\n if (typeof onContextMenuProp === 'function') {\n onContextMenuProp(e);\n }\n if (typeof getMenuOptions === 'function') {\n const newOptions = getMenuOptions(selection, focusProp ?? focus);\n setMenuOptions([...defaultMenuOptions, ...newOptions]);\n }\n };\n\n const lastItemsRenderedProps = useRef<GridOnItemsRenderedProps>();\n const lastRowStart = useRef(rowStart);\n\n const onItemsRendered = useCallback(\n (props: GridOnItemsRenderedProps) => {\n lastItemsRenderedProps.current = props;\n return onItemsRenderedProp?.({\n ...props,\n visibleRowStartIndex: props.visibleRowStartIndex + rowStart,\n visibleRowStopIndex: props.visibleRowStopIndex + rowStart,\n overscanRowStartIndex: props.overscanRowStartIndex + rowStart,\n overscanRowStopIndex: props.overscanRowStopIndex + rowStart,\n });\n },\n [onItemsRenderedProp, rowStart]\n );\n\n // handles the case where rowStart changes, make sure to inform caller\n // of the new visible rows.\n useEffect(() => {\n if (lastItemsRenderedProps.current && rowStart !== lastRowStart.current) {\n onItemsRendered(lastItemsRenderedProps.current);\n lastRowStart.current = rowStart;\n }\n }, [rowStart, onItemsRendered]);\n\n const CellWithWidth = (\n args: GridChildComponentProps<ItemDataType>\n ): React.JSX.Element => {\n const width = columnWidth(args.columnIndex);\n return (\n <Cell\n {...args}\n width={width}\n />\n );\n };\n\n // Handles the case when rowCount/columnCount changes, rerenders styles\n useEffect(() => {\n if (gridRef.current) {\n gridRef.current.resetAfterRowIndex(0);\n }\n }, [rowCount, columnCount]);\n\n const contextMenuTriggerHeight = autoHeight\n ? rowCount * rowHeight +\n (showHeader ? headerHeight : 0) +\n elementBorderRef.current.scrollBarHeight\n : undefined;\n\n return (\n <ContextMenu\n modal={false}\n onOpenChange={setContextMenuOpen}\n >\n <ContextMenu.Trigger\n className={gridVariants({ bordered: showBorder })}\n style={\n {\n '--grid-radius': roundedRadii[rounded],\n '--grid-height': contextMenuTriggerHeight\n ? `${contextMenuTriggerHeight}px`\n : '100%',\n } as CSSProperties\n }\n ref={mergeRefs([forwardedRef, containerRef])}\n tabIndex={0}\n onMouseDown={onMouseDown}\n onMouseMove={onMouseMove}\n onKeyDown={onKeyDown}\n onPointerDown={onPointerDown}\n onPointerUp={onPointerUp}\n onPointerLeave={setPointerCapture}\n onPointerEnter={setPointerCapture}\n onContextMenu={onContextMenu}\n >\n <AutoSizer onResize={onResize}>\n {({ height, width }) => (\n <VariableSizeGrid\n ref={forwardedGridRef ? mergeRefs([forwardedGridRef, gridRef]) : gridRef}\n height={height}\n width={width}\n columnCount={columnCount}\n rowHeight={getRowHeight}\n useIsScrolling={useIsScrolling}\n innerElementType={InnerElementType}\n itemData={data}\n initialScrollTop={\n focus.row < rowStart\n ? focus.row * rowHeight\n : (focus.row - rowStart) * rowHeight\n }\n initialScrollLeft={getColumnHorizontalPosition(focus.column)}\n columnWidth={columnWidth}\n rowCount={rowCount}\n onScroll={onScroll}\n outerRef={outerRef}\n outerElementType={OuterElementType}\n onItemsRendered={onItemsRendered}\n {...props}\n >\n {CellWithWidth}\n </VariableSizeGrid>\n )}\n </AutoSizer>\n </ContextMenu.Trigger>\n <ContextMenu.Content>\n {menuOptions.map((option, index) => (\n <ContextMenu.Item\n key={`grid-${index}`}\n onSelect={option.onSelect}\n >\n {option.label}\n </ContextMenu.Item>\n ))}\n </ContextMenu.Content>\n </ContextMenu>\n );\n }\n);\n"],"names":["gridVariants","cva","styles","variants","bordered","true","NO_BUTTONS_PRESSED","LEFT_BUTTON_PRESSED","RIGHT_BUTTON_PRESSED","getRenderedCursor","children","reduce","minRow","maxRow","minColumn","maxColumn","props","columnIndex","rowIndex","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","roundedRadii","none","lg","md","sm","OuterElementType","forwardRef","ref","jsx","Grid","autoFocus","autoHeight","rowStart","showRowNumber","rounded","showHeader","focus","focusProp","useIsScrolling","rowHeight","columnCount","columnWidth","columnWidthProp","onSelect","onSelectProp","headerHeight","rowCount","cell","onColumnResize","onColumnResizeProp","onFocusChange","onFocusChangeProp","getMenuOptions","onKeyDown","onKeyDownProp","selection","selectionProp","showToast","onMouseDown","onMouseDownProp","onMouseMove","onMouseMoveProp","showBorder","onCopy","onCopyProp","onCopyCallback","onContextMenu","onContextMenuProp","forwardedGridRef","onItemsRendered","onItemsRenderedProp","rowAutoHeight","forwardedRef","setFocus","useState","row","column","setSelection","type","defaultOnCopy","useCallback","copyGridElements","outerRef","createToast","title","description","e","console","error","customOnCopy","useMemo","result","defaultMenuOptions","label","menuOptions","setMenuOptions","contextMenuOpen","setContextMenuOpen","scrolledVertical","setScrolledVertical","scrolledHorizontal","setScrolledHorizontal","dragState","useRef","gridRef","containerRef","elementBorderRef","top","bottom","left","right","scrollBarWidth","scrollBarHeight","width","height","onCellSelect","action","resizingState","useResizingState","rowHeights","setRowHeights","getRowHeight","index","undefined","updateRowHeight","prevRowHeights","current","newRowHeights","resetAfterRowIndex","rowNumberWidth","toString","length","getColumnHorizontalPosition","initColumnSize","useColumns","outerGridRef","scrollGridTo","element","querySelector","scrollTop","scrollLeft","scrollIntoView","block","inline","Promise","requestAnimationFrame","offsetLeft","offsetTop","scrollBy","getFixedResizerLeftPosition","clientX","columnPosition","columnLeft","containerWidth","getResizerPosition","clearSelectionAndFocus","force","newFocus","useEffect","getSelectionType","onSelection","mouseMoveCellSelect","moveSelection","useSelectionActions","data","InnerElementType","containerProps","jsxs","cn","className","RowNumberColumn","Header","buttons","target","closest","dataset","gridRow","gridColumn","selected","rowIndexString","columnIndexString","parseInt","shiftKeyPressed","shiftKey","event","onPointerDown","pointerId","setPointerCapture","onPointerUp","releasePointerCapture","preventDefault","stopPropagation","verticalSign","horizontalSign","x","y","clientY","scrollHorizontalDirection","movementX","scrollVerticalDirection","movementY","document","elementFromPoint","onScroll","onResize","setTimeout","getBoundingClientRect","clientWidth","clientHeight","defaultPrevented","moveAnchor","applyAction","ctrlKey","metaKey","key","newOptions","lastItemsRenderedProps","lastRowStart","visibleRowStartIndex","visibleRowStopIndex","overscanRowStartIndex","overscanRowStopIndex","CellWithWidth","args","Cell","contextMenuTriggerHeight","ContextMenu","mergeRefs","AutoSizer","VariableSizeGrid","map","option"],"mappings":"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"}
|
package/dist/esm/click-ui.css
CHANGED
|
@@ -446,6 +446,100 @@
|
|
|
446
446
|
color: var(--click-field-color-label-disabled);
|
|
447
447
|
font: var(--click-field-typography-label-disabled);
|
|
448
448
|
}
|
|
449
|
+
.loading__5BGdj {
|
|
450
|
+
transform: scaleX(-1);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
.loading-animated__hAN7V {
|
|
454
|
+
animation: loaders-spin__bMTqx 1s infinite linear;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
.horizontal-loading__3ooCL circle {
|
|
458
|
+
animation-duration: 1.5s;
|
|
459
|
+
animation-iteration-count: infinite;
|
|
460
|
+
animation-name: horizontal-loading__3ooCL;
|
|
461
|
+
animation-timing-function: linear;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
.horizontal-loading__3ooCL circle:nth-child(1) {
|
|
465
|
+
animation-name: loaders-horizontal-circle-1__GJ-tO;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
.horizontal-loading__3ooCL circle:nth-child(2) {
|
|
469
|
+
animation-name: loaders-horizontal-circle-2__QOcb2;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
.horizontal-loading__3ooCL circle:nth-child(3) {
|
|
473
|
+
animation-name: loaders-horizontal-circle-3__R51yU;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
@keyframes loaders-spin__bMTqx {
|
|
477
|
+
from {
|
|
478
|
+
transform: rotate(0deg) scaleX(-1);
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
to {
|
|
482
|
+
transform: rotate(360deg) scaleX(-1);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
@keyframes loaders-horizontal-circle-1__GJ-tO {
|
|
487
|
+
0 {
|
|
488
|
+
r: 0;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
30% {
|
|
492
|
+
r: 1.5;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
60% {
|
|
496
|
+
r: 0;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
100% {
|
|
500
|
+
r: 0;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
@keyframes loaders-horizontal-circle-2__QOcb2 {
|
|
505
|
+
0 {
|
|
506
|
+
r: 0;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
20% {
|
|
510
|
+
r: 0;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
40% {
|
|
514
|
+
r: 1.5;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
80% {
|
|
518
|
+
r: 0;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
100% {
|
|
522
|
+
r: 0;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
@keyframes loaders-horizontal-circle-3__R51yU {
|
|
527
|
+
0 {
|
|
528
|
+
r: 0;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
40% {
|
|
532
|
+
r: 0;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
80% {
|
|
536
|
+
r: 1.5;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
100% {
|
|
540
|
+
r: 0;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
449
543
|
/* Kept at zero specificity via :where() so that modifier classes (e.g.
|
|
450
544
|
.container_padding_md) and downstream styled-components overrides on a
|
|
451
545
|
styled(Container) both win without needing a specificity hack — Container is
|
|
@@ -3892,6 +3986,274 @@ div:active + .topbadge__E79OZ {
|
|
|
3892
3986
|
color: var(--click-dialog-color-description-default);
|
|
3893
3987
|
font: var(--click-dialog-typography-description-default);
|
|
3894
3988
|
}
|
|
3989
|
+
.row-number-column__n-aQm {
|
|
3990
|
+
position: sticky;
|
|
3991
|
+
top: var(--row-number-column-top);
|
|
3992
|
+
left: 0;
|
|
3993
|
+
width: var(--row-number-column-width);
|
|
3994
|
+
height: 100%;
|
|
3995
|
+
}
|
|
3996
|
+
|
|
3997
|
+
.row-number-column_scrolled-horizontal__L9fAB {
|
|
3998
|
+
box-shadow: 0 0 0 1px var(--click-grid-header-cell-color-stroke-default);
|
|
3999
|
+
}
|
|
4000
|
+
|
|
4001
|
+
.row-number-column__cell__00w03 {
|
|
4002
|
+
position: absolute;
|
|
4003
|
+
top: var(--row-number-cell-top);
|
|
4004
|
+
left: 0;
|
|
4005
|
+
width: 100%;
|
|
4006
|
+
height: var(--row-number-cell-height);
|
|
4007
|
+
overflow: hidden;
|
|
4008
|
+
white-space: nowrap;
|
|
4009
|
+
text-overflow: ellipsis;
|
|
4010
|
+
}
|
|
4011
|
+
/* stylelint-disable custom-property-pattern -- design tokens use camelCase (e.g. selectDirect) */
|
|
4012
|
+
|
|
4013
|
+
/*
|
|
4014
|
+
* The original styled-component dispatches background / text colour / border
|
|
4015
|
+
* colour off `$type` (body|header) and `$selectionType`, and toggles individual
|
|
4016
|
+
* borders / a `::before` overlay off boolean flags. Colours are aliased to local
|
|
4017
|
+
* custom properties (set by the type + selection modifiers) so the shared border
|
|
4018
|
+
* / overlay rules can reference them once.
|
|
4019
|
+
*/
|
|
4020
|
+
|
|
4021
|
+
.cell__OXAxg {
|
|
4022
|
+
display: block;
|
|
4023
|
+
box-sizing: border-box;
|
|
4024
|
+
width: 100%;
|
|
4025
|
+
padding: var(--cell-space-y) var(--cell-space-x);
|
|
4026
|
+
overflow: hidden;
|
|
4027
|
+
border-top: 1px solid var(--cell-stroke-default);
|
|
4028
|
+
border-left: 1px solid var(--cell-stroke-default);
|
|
4029
|
+
background: var(--cell-background);
|
|
4030
|
+
color: var(--cell-color);
|
|
4031
|
+
font: var(--click-grid-cell-text-default);
|
|
4032
|
+
text-align: left;
|
|
4033
|
+
white-space: nowrap;
|
|
4034
|
+
cursor: default;
|
|
4035
|
+
text-overflow: ellipsis;
|
|
4036
|
+
}
|
|
4037
|
+
|
|
4038
|
+
.cell__OXAxg[data-align='right'] {
|
|
4039
|
+
text-align: right;
|
|
4040
|
+
}
|
|
4041
|
+
|
|
4042
|
+
.cell_type_body__SohuF {
|
|
4043
|
+
--cell-stroke-default: var(--click-grid-body-cell-color-stroke-default);
|
|
4044
|
+
--cell-stroke-select-direct: var(--click-grid-body-cell-color-stroke-selectDirect);
|
|
4045
|
+
--cell-stroke-last: var(--click-grid-body-cell-color-stroke-default);
|
|
4046
|
+
--cell-space-y: var(--click-grid-body-cell-space-y);
|
|
4047
|
+
--cell-space-x: var(--click-grid-body-cell-space-x);
|
|
4048
|
+
--cell-background: var(--click-grid-body-cell-color-background-default);
|
|
4049
|
+
--cell-color: var(--click-grid-body-cell-color-text-default);
|
|
4050
|
+
}
|
|
4051
|
+
|
|
4052
|
+
.cell_type_body__SohuF.cell_selection_indirect__6e6yy {
|
|
4053
|
+
--cell-stroke-last: var(--click-grid-body-cell-color-stroke-selectIndirect);
|
|
4054
|
+
--cell-background: var(--click-grid-body-cell-color-background-selectIndirect);
|
|
4055
|
+
--cell-color: var(--click-grid-body-cell-color-text-selectIndirect);
|
|
4056
|
+
}
|
|
4057
|
+
|
|
4058
|
+
.cell_type_body__SohuF.cell_selection_direct__QEL9m {
|
|
4059
|
+
--cell-stroke-last: var(--click-grid-body-cell-color-stroke-selectDirect);
|
|
4060
|
+
--cell-background: var(--click-grid-body-cell-color-background-selectDirect);
|
|
4061
|
+
--cell-color: var(--click-grid-body-cell-color-text-selectDirect);
|
|
4062
|
+
}
|
|
4063
|
+
|
|
4064
|
+
.cell_type_header__3tsr- {
|
|
4065
|
+
--cell-stroke-default: var(--click-grid-header-cell-color-stroke-default);
|
|
4066
|
+
--cell-stroke-select-direct: var(--click-grid-header-cell-color-stroke-selectDirect);
|
|
4067
|
+
--cell-stroke-last: var(--click-grid-header-cell-color-stroke-default);
|
|
4068
|
+
--cell-space-y: var(--click-grid-header-cell-space-y);
|
|
4069
|
+
--cell-space-x: var(--click-grid-header-cell-space-x);
|
|
4070
|
+
--cell-background: var(--click-grid-header-cell-color-background-default);
|
|
4071
|
+
--cell-color: var(--click-grid-header-cell-color-title-default);
|
|
4072
|
+
}
|
|
4073
|
+
|
|
4074
|
+
.cell_type_header__3tsr-.cell_selection_indirect__6e6yy {
|
|
4075
|
+
--cell-stroke-last: var(--click-grid-header-cell-color-stroke-selectIndirect);
|
|
4076
|
+
--cell-background: var(--click-grid-header-cell-color-background-selectIndirect);
|
|
4077
|
+
--cell-color: var(--click-grid-header-cell-color-title-selectIndirect);
|
|
4078
|
+
}
|
|
4079
|
+
|
|
4080
|
+
.cell_type_header__3tsr-.cell_selection_direct__QEL9m {
|
|
4081
|
+
--cell-stroke-last: var(--click-grid-header-cell-color-stroke-selectDirect);
|
|
4082
|
+
--cell-background: var(--click-grid-header-cell-color-background-selectDirect);
|
|
4083
|
+
--cell-color: var(--click-grid-header-cell-color-title-selectDirect);
|
|
4084
|
+
}
|
|
4085
|
+
|
|
4086
|
+
/* header cell with no border removes top/left edges on the corner cells */
|
|
4087
|
+
.cell_type_header__3tsr-.cell_no-border__9gXDK[data-grid-row='-1'] {
|
|
4088
|
+
border-top: none;
|
|
4089
|
+
}
|
|
4090
|
+
|
|
4091
|
+
.cell_type_header__3tsr-.cell_no-border__9gXDK[data-grid-column='-1'] {
|
|
4092
|
+
border-left: none;
|
|
4093
|
+
}
|
|
4094
|
+
|
|
4095
|
+
/* a focused cell draws its last-edge borders with the select-direct stroke */
|
|
4096
|
+
.cell_focused__cmh-b {
|
|
4097
|
+
box-shadow: inset 0 0 0 1px var(--cell-stroke-select-direct);
|
|
4098
|
+
}
|
|
4099
|
+
|
|
4100
|
+
/*
|
|
4101
|
+
* Focus must win the last-edge stroke colour over any selection state. The
|
|
4102
|
+
* original styled-component resolved the last-row / last-column border colour
|
|
4103
|
+
* inline as `stroke[$isFocused ? 'selectDirect' : $selectionType]`, so focus
|
|
4104
|
+
* always overrode the selection stroke. The `.cell_type_*.cell_selection_*`
|
|
4105
|
+
* rules above set `--cell-stroke-last` at (0,2,0) specificity, so the focus
|
|
4106
|
+
* override is qualified with the type class to match that specificity and,
|
|
4107
|
+
* coming later in source order, take precedence. `.cell_focused` always
|
|
4108
|
+
* co-occurs with a type class.
|
|
4109
|
+
*/
|
|
4110
|
+
.cell_type_body__SohuF.cell_focused__cmh-b,
|
|
4111
|
+
.cell_type_header__3tsr-.cell_focused__cmh-b {
|
|
4112
|
+
--cell-stroke-last: var(--cell-stroke-select-direct);
|
|
4113
|
+
}
|
|
4114
|
+
|
|
4115
|
+
/* only the last row/column draw the closing border, colored by focus/selection */
|
|
4116
|
+
.cell_last-row__DoJdk {
|
|
4117
|
+
border-bottom: 1px solid var(--cell-stroke-last);
|
|
4118
|
+
}
|
|
4119
|
+
|
|
4120
|
+
.cell_last-column__LgKM7 {
|
|
4121
|
+
border-right: 1px solid var(--cell-stroke-last);
|
|
4122
|
+
}
|
|
4123
|
+
|
|
4124
|
+
/* rowAutoHeight resets the entire border last, overriding every rule above */
|
|
4125
|
+
.cell_row-auto-height__yzQUR {
|
|
4126
|
+
min-height: auto;
|
|
4127
|
+
overflow-y: auto;
|
|
4128
|
+
border: none;
|
|
4129
|
+
}
|
|
4130
|
+
|
|
4131
|
+
/* selection / focus overlay drawn on top of the cell so adjacent borders meet */
|
|
4132
|
+
.cell__overlay__U9XGO::before {
|
|
4133
|
+
content: '';
|
|
4134
|
+
position: absolute;
|
|
4135
|
+
inset: 0;
|
|
4136
|
+
}
|
|
4137
|
+
|
|
4138
|
+
.cell__overlay_selected_top__OMUJB::before {
|
|
4139
|
+
border-top: 1px solid var(--cell-stroke-select-direct);
|
|
4140
|
+
}
|
|
4141
|
+
|
|
4142
|
+
.cell__overlay_selected_left__MiimG::before {
|
|
4143
|
+
border-left: 1px solid var(--cell-stroke-select-direct);
|
|
4144
|
+
}
|
|
4145
|
+
|
|
4146
|
+
.cell__overlay_selected_bottom__2ra9F::before {
|
|
4147
|
+
border-bottom: 1px solid var(--cell-stroke-select-direct);
|
|
4148
|
+
}
|
|
4149
|
+
|
|
4150
|
+
.cell__overlay_selected_right__Dt-g5::before {
|
|
4151
|
+
border-right: 1px solid var(--cell-stroke-select-direct);
|
|
4152
|
+
}
|
|
4153
|
+
|
|
4154
|
+
.cell__overlay_row-auto-height__teKk1::before {
|
|
4155
|
+
border: none;
|
|
4156
|
+
}
|
|
4157
|
+
/* stylelint-disable custom-property-pattern -- design tokens use camelCase (e.g. selectDirect) */
|
|
4158
|
+
|
|
4159
|
+
.header__hXzAE {
|
|
4160
|
+
display: flex;
|
|
4161
|
+
position: sticky;
|
|
4162
|
+
top: 0;
|
|
4163
|
+
left: 0;
|
|
4164
|
+
height: var(--header-height);
|
|
4165
|
+
flex-direction: row;
|
|
4166
|
+
}
|
|
4167
|
+
|
|
4168
|
+
.header_scrolled-vertical__mIp2- {
|
|
4169
|
+
box-shadow: 0 0 0 1px var(--click-grid-header-cell-color-stroke-default);
|
|
4170
|
+
}
|
|
4171
|
+
|
|
4172
|
+
.header__scroll-area__Nok8G {
|
|
4173
|
+
position: relative;
|
|
4174
|
+
left: var(--header-scroll-area-left);
|
|
4175
|
+
}
|
|
4176
|
+
|
|
4177
|
+
.header__cell__ZCE9p {
|
|
4178
|
+
display: flex;
|
|
4179
|
+
position: absolute;
|
|
4180
|
+
left: var(--header-cell-left);
|
|
4181
|
+
width: var(--header-cell-width);
|
|
4182
|
+
height: var(--header-cell-height);
|
|
4183
|
+
}
|
|
4184
|
+
|
|
4185
|
+
.header__cell__ZCE9p:hover [data-resize] {
|
|
4186
|
+
background: var(--click-grid-header-cell-color-stroke-selectDirect);
|
|
4187
|
+
}
|
|
4188
|
+
|
|
4189
|
+
/* the sticky "select all" corner extends a header cell (styled(HeaderCellContainer)) */
|
|
4190
|
+
.header__row-column__ceu5w {
|
|
4191
|
+
position: sticky;
|
|
4192
|
+
top: 0;
|
|
4193
|
+
left: 0;
|
|
4194
|
+
width: var(--header-cell-width);
|
|
4195
|
+
text-align: right;
|
|
4196
|
+
}
|
|
4197
|
+
|
|
4198
|
+
.header__row-column_scrolled-horizontal__QZO4p {
|
|
4199
|
+
box-shadow: 0 0 0 1px var(--click-grid-header-cell-color-stroke-default);
|
|
4200
|
+
}
|
|
4201
|
+
/* stylelint-disable custom-property-pattern -- design tokens use camelCase (e.g. selectDirect) */
|
|
4202
|
+
|
|
4203
|
+
.column-resizer__8f12T {
|
|
4204
|
+
position: absolute;
|
|
4205
|
+
z-index: 1;
|
|
4206
|
+
top: 0;
|
|
4207
|
+
left: calc(100% - 4px);
|
|
4208
|
+
width: 4px;
|
|
4209
|
+
height: var(--column-resizer-height);
|
|
4210
|
+
overflow: auto;
|
|
4211
|
+
cursor: col-resize;
|
|
4212
|
+
}
|
|
4213
|
+
|
|
4214
|
+
.column-resizer__8f12T:hover,
|
|
4215
|
+
.column-resizer__8f12T:active {
|
|
4216
|
+
background: var(--click-grid-header-cell-color-stroke-selectDirect);
|
|
4217
|
+
}
|
|
4218
|
+
|
|
4219
|
+
.column-resizer_pressed__JGAln {
|
|
4220
|
+
position: fixed;
|
|
4221
|
+
height: 100%;
|
|
4222
|
+
}
|
|
4223
|
+
/*
|
|
4224
|
+
* `.grid` is the Grid's outer container. It is rendered as the ContextMenu.Trigger
|
|
4225
|
+
* (the root element the whole grid mounts into), which is why the trigger carries
|
|
4226
|
+
* the grid's own box styling rather than a context-menu-specific class.
|
|
4227
|
+
*/
|
|
4228
|
+
.grid__h49fk {
|
|
4229
|
+
width: 100%;
|
|
4230
|
+
height: var(--grid-height, 100%);
|
|
4231
|
+
overflow: hidden;
|
|
4232
|
+
border-radius: var(--grid-radius);
|
|
4233
|
+
background: var(--click-grid-body-cell-color-background-default);
|
|
4234
|
+
outline: none;
|
|
4235
|
+
}
|
|
4236
|
+
|
|
4237
|
+
.grid_bordered__kFqF5 {
|
|
4238
|
+
border: 1px solid var(--click-grid-header-cell-color-stroke-default);
|
|
4239
|
+
}
|
|
4240
|
+
|
|
4241
|
+
/* react-window's inner element that lays out the scrolling cell grid */
|
|
4242
|
+
.grid__inner__IZhj9 {
|
|
4243
|
+
display: flex;
|
|
4244
|
+
flex-direction: column-reverse;
|
|
4245
|
+
/* stylelint-disable-next-line plugin/no-unsupported-browser-features -- the original styled rule used overflow-anchor */
|
|
4246
|
+
overflow-anchor: none;
|
|
4247
|
+
user-select: none;
|
|
4248
|
+
}
|
|
4249
|
+
|
|
4250
|
+
.grid__data__Mn4TK {
|
|
4251
|
+
position: absolute;
|
|
4252
|
+
top: 0;
|
|
4253
|
+
left: 0;
|
|
4254
|
+
margin-top: var(--grid-data-top, 0);
|
|
4255
|
+
margin-left: var(--grid-data-left, 0);
|
|
4256
|
+
}
|
|
3895
4257
|
/* stylelint-disable custom-property-pattern -- design tokens use camelCase (e.g. genericMenu) */
|
|
3896
4258
|
|
|
3897
4259
|
.trigger__4-zK2:focus-visible {
|