@adaptabletools/adaptable-cjs
Version:
Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
35 lines (34 loc) • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ThemeSelector = void 0;
const tslib_1 = require("tslib");
const React = tslib_1.__importStar(require("react"));
const react_redux_1 = require("react-redux");
const Select_1 = require("../../components/Select");
const ThemeRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/ThemeRedux"));
const ModuleConstants_1 = require("../../Utilities/Constants/ModuleConstants");
const AdaptableContext_1 = require("../AdaptableContext");
const ThemeSelector = (props) => {
const adaptable = (0, AdaptableContext_1.useAdaptable)();
const dispatch = (0, react_redux_1.useDispatch)();
const availableThemes = adaptable.api.themeApi.getThemes();
const currentTheme = (0, react_redux_1.useSelector)((state) => state.Theme.CurrentTheme);
const disabled = adaptable.api.entitlementApi.getEntitlementAccessLevelForModule(ModuleConstants_1.ThemeModuleId) === 'ReadOnly';
const optionThemes = availableThemes.map((theme) => {
if (typeof theme === 'string') {
// protection against old state, which could be string
theme = {
Name: theme,
Description: theme,
};
}
return {
value: theme.Name,
label: theme.Description,
};
});
return (React.createElement(Select_1.Select, { "aria-label": "Select Theme", "data-name": "select-theme-dropdown", searchable: false, options: optionThemes, value: currentTheme, disabled: disabled, size: props.size, onChange: (themeName) => {
dispatch(ThemeRedux.ThemeSelect(themeName));
} }));
};
exports.ThemeSelector = ThemeSelector;