diff --git a/packages/@react-spectrum/s2/src/TableView.tsx b/packages/@react-spectrum/s2/src/TableView.tsx index b7af9870fc1..c9fd46ae849 100644 --- a/packages/@react-spectrum/s2/src/TableView.tsx +++ b/packages/@react-spectrum/s2/src/TableView.tsx @@ -562,7 +562,7 @@ export const Column = forwardRef(function Column(props: ColumnProps, ref: DOMRef {children} ) : ( - + {children} ) @@ -577,7 +577,14 @@ const columnContentWrapper = style({ minWidth: 0, display: 'flex', alignItems: 'center', - width: 'full' + width: 'full', + justifyContent: { + align: { + default: 'start', + center: 'center', + end: 'end' + } + } }); const sortIcon = style({ @@ -594,13 +601,13 @@ const sortIcon = style({ } }); -interface ColumnContentProps extends Pick, Pick {} +interface ColumnContentProps extends Pick, Pick {} function ColumnContents(props: ColumnContentProps) { - let {allowsSorting, sortDirection, children} = props; + let {align, allowsSorting, sortDirection, children} = props; return ( -
+
{allowsSorting && ( )} - + {children}
diff --git a/packages/@react-spectrum/s2/stories/TableView.stories.tsx b/packages/@react-spectrum/s2/stories/TableView.stories.tsx index c637a16981f..e32ff026983 100644 --- a/packages/@react-spectrum/s2/stories/TableView.stories.tsx +++ b/packages/@react-spectrum/s2/stories/TableView.stories.tsx @@ -439,11 +439,28 @@ let alignColumns = [ ]; const TextAlign = (args: TableViewProps): ReactElement => { + let [items, setItems] = useState(sortItems); + let [sortDescriptor, setSortDescriptor] = useState(undefined); + let onSortChange = (sortDescriptor: SortDescriptor) => { + let {direction = 'ascending', column = 'name'} = sortDescriptor; + + let sorted = items.slice().sort((a, b) => { + let cmp = a[column] < b[column] ? -1 : 1; + if (direction === 'descending') { + cmp *= -1; + } + return cmp; + }); + + setItems(sorted); + setSortDescriptor(sortDescriptor); + }; + return ( - + {(column) => ( - {column.name} + {column.name} )}