@knowmax/genericlist-fluentuiv9
Version:
Knowmax Generic list with basic CRUD support with Fluent V9 user interface implementation.
38 lines (37 loc) • 1.4 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { useCallback, useState, useEffect } from 'react';
import { observer } from 'mobx-react-lite';
import { ToggleButton, makeStyles } from '@fluentui/react-components';
import { ChevronRight24Regular } from '@fluentui/react-icons';
const useClasses = makeStyles({
root: {
'& .toggle-icon': {
transformOrigin: 'center',
transition: 'transform 200ms cubic-bezier(0.4, 0, 0.2, 1)'
},
'&[aria-pressed="true"] .toggle-icon': {
transform: 'rotate(90deg)'
},
'&[aria-pressed="false"] .toggle-icon': {
transform: 'rotate(0deg)'
}
}
});
/** Toggle button.
* @param Initial or updated value. True means open, false closed.
* @param onToggle Callback after user toggles.
*/
export const ToggleOpenButton = observer(({ value = false, disabled, onToggle }) => {
const [open, setOpen] = useState(value);
const classes = useClasses();
useEffect(() => {
setOpen(value);
}, [value]);
const toggle = useCallback(() => {
if (onToggle) {
onToggle();
}
setOpen(o => !o);
}, [setOpen]);
return _jsx(ToggleButton, { appearance: 'transparent', className: classes.root, disabled: disabled, checked: open, icon: _jsx(ChevronRight24Regular, { className: "toggle-icon" }), onClick: toggle });
});