67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
'use client';
|
|
import { makeStyles, mergeClasses } from '@griffel/react';
|
|
import { tokens } from '@fluentui/react-theme';
|
|
import { createCustomFocusIndicatorStyle } from '@fluentui/react-tabster';
|
|
export const tableCellClassName = 'fui-TableCell';
|
|
export const tableCellClassNames = {
|
|
root: tableCellClassName
|
|
};
|
|
const useTableLayoutStyles = makeStyles({
|
|
root: {
|
|
display: 'table-cell',
|
|
verticalAlign: 'middle'
|
|
},
|
|
medium: {
|
|
height: '44px'
|
|
},
|
|
small: {
|
|
height: '34px'
|
|
},
|
|
'extra-small': {
|
|
height: '24px'
|
|
}
|
|
});
|
|
const useFlexLayoutStyles = makeStyles({
|
|
root: {
|
|
display: 'flex',
|
|
minWidth: '0px',
|
|
alignItems: 'center',
|
|
flex: '1 1 0px'
|
|
},
|
|
medium: {
|
|
minHeight: '44px'
|
|
},
|
|
small: {
|
|
minHeight: '34px'
|
|
},
|
|
'extra-small': {
|
|
minHeight: '24px'
|
|
}
|
|
});
|
|
/**
|
|
* Styles for the root slot
|
|
*/ const useStyles = makeStyles({
|
|
root: {
|
|
position: 'relative',
|
|
padding: `0px ${tokens.spacingHorizontalS}`,
|
|
...createCustomFocusIndicatorStyle({
|
|
outline: `2px solid ${tokens.colorStrokeFocus2}`,
|
|
borderRadius: tokens.borderRadiusMedium
|
|
}, {
|
|
selector: 'focus'
|
|
})
|
|
}
|
|
});
|
|
/**
|
|
* Apply styling to the TableCell slots based on the state
|
|
*/ export const useTableCellStyles_unstable = (state)=>{
|
|
'use no memo';
|
|
const styles = useStyles();
|
|
const layoutStyles = {
|
|
table: useTableLayoutStyles(),
|
|
flex: useFlexLayoutStyles()
|
|
};
|
|
state.root.className = mergeClasses(tableCellClassNames.root, styles.root, state.noNativeElements ? layoutStyles.flex.root : layoutStyles.table.root, state.noNativeElements ? layoutStyles.flex[state.size] : layoutStyles.table[state.size], state.root.className);
|
|
return state;
|
|
};
|