Private
Public Access
1
0
Files
power-apps-codeapps-blog-part2/node_modules/@fluentui/react-tree/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.raw.js

178 lines
6.2 KiB
JavaScript

'use client';
import { makeResetStyles, makeStyles, mergeClasses } from '@griffel/react';
import { tokens, typographyStyles } from '@fluentui/react-theme';
import { useTreeContext_unstable } from '../../contexts/treeContext';
import { treeItemLevelToken } from '../../utils/tokens';
import { useTreeItemContext_unstable } from '../../contexts/treeItemContext';
export const treeItemLayoutClassNames = {
root: 'fui-TreeItemLayout',
iconBefore: 'fui-TreeItemLayout__iconBefore',
main: 'fui-TreeItemLayout__main',
iconAfter: 'fui-TreeItemLayout__iconAfter',
expandIcon: 'fui-TreeItemLayout__expandIcon',
aside: 'fui-TreeItemLayout__aside',
actions: 'fui-TreeItemLayout__actions',
selector: 'fui-TreeItemLayout__selector'
};
const useRootBaseStyles = makeResetStyles({
display: 'flex',
alignItems: 'center',
minHeight: '32px',
boxSizing: 'border-box',
gridArea: 'layout',
':hover': {
color: tokens.colorNeutralForeground2Hover,
backgroundColor: tokens.colorSubtleBackgroundHover,
// TODO: stop using treeItemLayoutClassNames.expandIcon for styling
[`& .${treeItemLayoutClassNames.expandIcon}`]: {
color: tokens.colorNeutralForeground3Hover
}
},
':active': {
color: tokens.colorNeutralForeground2Pressed,
backgroundColor: tokens.colorSubtleBackgroundPressed,
// TODO: stop using treeItemLayoutClassNames.expandIcon for styling
[`& .${treeItemLayoutClassNames.expandIcon}`]: {
color: tokens.colorNeutralForeground3Pressed
}
}
});
/**
* Styles for the root slot
*/ const useRootStyles = makeStyles({
leaf: {
paddingLeft: `calc(var(${treeItemLevelToken}, 1) * ${tokens.spacingHorizontalXXL})`
},
branch: {
paddingLeft: `calc((var(${treeItemLevelToken}, 1) - 1) * ${tokens.spacingHorizontalXXL})`
},
medium: {
...typographyStyles.body1
},
small: {
minHeight: '24px',
...typographyStyles.caption1
},
// Appearance variations
subtle: {},
'subtle-alpha': {
':hover': {
backgroundColor: tokens.colorSubtleBackgroundLightAlphaHover
},
':active': {
backgroundColor: tokens.colorSubtleBackgroundLightAlphaPressed
}
},
transparent: {
backgroundColor: tokens.colorTransparentBackground,
':hover': {
backgroundColor: tokens.colorTransparentBackgroundHover
},
':active': {
backgroundColor: tokens.colorTransparentBackgroundPressed
}
}
});
/**
* Styles for the action icon slot
*/ const useActionsBaseStyles = makeResetStyles({
display: 'flex',
marginLeft: 'auto',
position: 'relative',
zIndex: 1,
gridArea: 'aside',
padding: `0 ${tokens.spacingHorizontalS}`
});
/**
* Styles for the action icon slot
*/ const useAsideBaseStyles = makeResetStyles({
display: 'flex',
marginLeft: 'auto',
alignItems: 'center',
zIndex: 0,
gridArea: 'aside',
padding: `0 ${tokens.spacingHorizontalM}`,
gap: tokens.spacingHorizontalXS
});
/**
* Styles for the expand icon slot
*/ const useExpandIconBaseStyles = makeResetStyles({
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
minWidth: '24px',
boxSizing: 'border-box',
color: tokens.colorNeutralForeground3,
flex: `0 0 auto`,
padding: `${tokens.spacingVerticalXS} 0`
});
/**
* Styles for the content slot
*/ const useMainBaseStyles = makeResetStyles({
padding: `0 ${tokens.spacingHorizontalXXS}`
});
/**
* Styles for the before/after icon slot
*/ const useIconBaseStyles = makeResetStyles({
display: 'flex',
alignItems: 'center',
color: tokens.colorNeutralForeground2,
lineHeight: tokens.lineHeightBase500,
fontSize: tokens.fontSizeBase500
});
const useIconBeforeStyles = makeStyles({
medium: {
paddingRight: tokens.spacingHorizontalXS
},
small: {
paddingRight: tokens.spacingHorizontalXXS
}
});
const useIconAfterStyles = makeStyles({
medium: {
paddingLeft: tokens.spacingHorizontalXS
},
small: {
paddingLeft: tokens.spacingHorizontalXXS
}
});
/**
* Apply styling to the TreeItemLayout slots based on the state
*/ export const useTreeItemLayoutStyles_unstable = (state)=>{
'use no memo';
const { main, iconAfter, iconBefore, expandIcon, root, aside, actions, selector } = state;
const rootStyles = useRootStyles();
const rootBaseStyles = useRootBaseStyles();
const actionsBaseStyles = useActionsBaseStyles();
const asideBaseStyles = useAsideBaseStyles();
const mainBaseStyles = useMainBaseStyles();
const expandIconBaseStyles = useExpandIconBaseStyles();
const iconBaseStyles = useIconBaseStyles();
const iconBeforeStyles = useIconBeforeStyles();
const iconAfterStyles = useIconAfterStyles();
const size = useTreeContext_unstable((ctx)=>ctx.size);
const appearance = useTreeContext_unstable((ctx)=>ctx.appearance);
const itemType = useTreeItemContext_unstable((ctx)=>ctx.itemType);
root.className = mergeClasses(treeItemLayoutClassNames.root, rootBaseStyles, rootStyles[appearance], rootStyles[size], rootStyles[itemType], root.className);
main.className = mergeClasses(treeItemLayoutClassNames.main, mainBaseStyles, main.className);
if (expandIcon) {
expandIcon.className = mergeClasses(treeItemLayoutClassNames.expandIcon, expandIconBaseStyles, expandIcon.className);
}
if (iconBefore) {
iconBefore.className = mergeClasses(treeItemLayoutClassNames.iconBefore, iconBaseStyles, iconBeforeStyles[size], iconBefore.className);
}
if (iconAfter) {
iconAfter.className = mergeClasses(treeItemLayoutClassNames.iconAfter, iconBaseStyles, iconAfterStyles[size], iconAfter.className);
}
if (actions) {
actions.className = mergeClasses(treeItemLayoutClassNames.actions, actionsBaseStyles, actions.className);
}
if (aside) {
aside.className = mergeClasses(treeItemLayoutClassNames.aside, asideBaseStyles, aside.className);
}
if (selector) {
selector.className = mergeClasses(treeItemLayoutClassNames.selector, selector.className);
}
return state;
};