strapi-plugin-content-manager
Version:
A powerful UI to easily manage your data.
50 lines (41 loc) • 1.38 kB
JavaScript
import { useMemo } from 'react';
import { get } from 'lodash';
import { useContentManagerEditViewDataManager } from 'strapi-helper-plugin';
function useSelect(name) {
const {
addComponentToDynamicZone,
createActionAllowedFields,
isCreatingEntry,
formErrors,
modifiedData,
moveComponentUp,
moveComponentDown,
removeComponentFromDynamicZone,
readActionAllowedFields,
updateActionAllowedFields,
} = useContentManagerEditViewDataManager();
const dynamicDisplayedComponents = useMemo(
() => get(modifiedData, [name], []).map(data => data.__component),
[modifiedData, name]
);
const isFieldAllowed = useMemo(() => {
const allowedFields = isCreatingEntry ? createActionAllowedFields : updateActionAllowedFields;
return allowedFields.includes(name);
}, [name, isCreatingEntry, createActionAllowedFields, updateActionAllowedFields]);
const isFieldReadable = useMemo(() => {
const allowedFields = isCreatingEntry ? [] : readActionAllowedFields;
return allowedFields.includes(name);
}, [name, isCreatingEntry, readActionAllowedFields]);
return {
addComponentToDynamicZone,
formErrors,
isCreatingEntry,
isFieldAllowed,
isFieldReadable,
moveComponentUp,
moveComponentDown,
removeComponentFromDynamicZone,
dynamicDisplayedComponents,
};
}
export default useSelect;