Skip to content

Commit

Permalink
[DataTable]: disable column focus and hover if isReadonly provided in…
Browse files Browse the repository at this point in the history
… rowOptions
  • Loading branch information
AlekseyManetov committed Jul 29, 2024
1 parent e31790c commit 88d6cdd
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 7 deletions.
5 changes: 4 additions & 1 deletion uui-components/src/table/DataTableCell.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export function DataTableCell<TItem, TId, TCellValue>(props: DataTableCellProps<
const ref = React.useRef<HTMLDivElement>();
const editorRef = React.useRef<HTMLElement>();
const isEditable = !!props.onValueChange;
const isReadonly = props.isReadonly ?? props.rowProps.isReadonly;

const tableFocusContext = useContext<DataTableFocusContextState<TId>>(DataTableFocusContext);

Expand Down Expand Up @@ -67,6 +68,7 @@ export function DataTableCell<TItem, TId, TCellValue>(props: DataTableCellProps<
content = props.renderUnknown(props);
} else if (isEditable) {
const onFocus = () => {
if (isReadonly) return;
props.rowProps.onSelect?.(props.rowProps);
setState((currentState) => ({ ...currentState, inFocus: true }));
tableFocusContext?.dataTableFocusManager
Expand All @@ -80,7 +82,7 @@ export function DataTableCell<TItem, TId, TCellValue>(props: DataTableCellProps<
onValueChange: props.onValueChange,
isDisabled: props.isDisabled ?? props.rowProps.isDisabled,
isInvalid: props.isInvalid ?? props.rowProps.isInvalid,
isReadonly: props.isReadonly ?? props.rowProps.isReadonly,
isReadonly: isReadonly,
isRequired: props.isRequired ?? props.rowProps.isRequired,
validationMessage: props.validationMessage ?? props.rowProps.validationMessage,
onFocus,
Expand All @@ -99,6 +101,7 @@ export function DataTableCell<TItem, TId, TCellValue>(props: DataTableCellProps<
rowIndex={ row.index }
columnIndex={ props.index }
isInvalid={ props.isInvalid ?? props.rowProps.isInvalid }
isReadonly={ isReadonly }
validationMessage={ props.validationMessage ?? props.rowProps.validationMessage }
/>
</div>
Expand Down
10 changes: 6 additions & 4 deletions uui-components/src/table/DataTableCellOverlay.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,12 @@
}

:global(.uui-table-cell):hover & {
&:not(:global(.uui-table-cell-selection-in-progress)):not(:global(.uui-focus)) {
z-index: 1;
visibility: visible;
border-color: var(--uui-dt-cell-border-hover);
&:not(&:global(.uui-readonly)) {
&:not(:global(.uui-table-cell-selection-in-progress)):not(:global(.uui-focus)) {
z-index: 1;
visibility: visible;
border-color: var(--uui-dt-cell-border-hover);
}
}
}

Expand Down
5 changes: 3 additions & 2 deletions uui-components/src/table/DataTableCellOverlay.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import React, { useCallback } from 'react';
import {
blurFocusedElement, cx, ICanBeInvalid, IHasCX, TooltipCoreProps, uuiMod, IHasValidationMessage,
blurFocusedElement, cx, ICanBeInvalid, IHasCX, TooltipCoreProps, uuiMod, IHasValidationMessage, ICanBeReadonly,
} from '@epam/uui-core';
import css from './DataTableCellOverlay.module.scss';
import { DataTableSelectionContext } from './tableCellsSelection';
import { PointerEventHandler, useContext } from 'react';

export interface DataTableCellOverlayProps extends IHasCX, ICanBeInvalid, IHasValidationMessage {
export interface DataTableCellOverlayProps extends IHasCX, ICanBeInvalid, IHasValidationMessage, ICanBeReadonly {
inFocus: boolean;
columnIndex: number;
rowIndex: number;
Expand Down Expand Up @@ -81,6 +81,7 @@ export function DataTableCellOverlay(props: DataTableCellOverlayProps) {
borderClassNames,
props.inFocus && uuiMod.focus,
props.isInvalid && uuiMod.invalid,
props.isReadonly && uuiMod.readonly,
) }
>
{showMarker && (
Expand Down

0 comments on commit 88d6cdd

Please sign in to comment.