UNPKG

devexpress-reporting-react

Version:

DevExpress Reporting React provides the capability to develop a reporting application to create and customize reports.

27 lines (26 loc) 1.68 kB
import React from 'react'; const getComponentOptions = (props, propTypes, defaultProps) => { const validProps = Object.keys(propTypes); const propKeys = Object.keys(props).filter(propName => validProps.indexOf(propName) !== -1 && propName !== 'children'); return propKeys.length === 0 ? void 0 : propKeys.reduce((acc, propName) => { acc[propName] = typeof props[propName] !== 'undefined' ? props[propName] : defaultProps && defaultProps[propName]; return acc; }, {}); }; const getControlOptions = (props, propTypes, defaultProps, validChildComponents) => { const controlOptions = getComponentOptions(props, propTypes, defaultProps) ?? {}; const childReactElements = React.Children.toArray(props.children) .filter(x => React.isValidElement(x)); validChildComponents && Object.keys(validChildComponents).forEach(optionsComponentkey => { const componentRecord = validChildComponents[optionsComponentkey]; const childComponent = childReactElements.find(x => x && x.type && x.type.displayName === componentRecord.component.displayName); if (childComponent) { controlOptions[optionsComponentkey] = getControlOptions(childComponent.props, componentRecord.component.propTypes, componentRecord.component.defaultProps, componentRecord.children); } }); return controlOptions; }; const getEventRaiser = (callbacks, getSender) => { return (eventName, args) => callbacks && callbacks[eventName] && callbacks[eventName].call(getSender(), { sender: getSender(), args: args, component: void 0 }); // TODO - ensure component is optional }; export default { getControlOptions, getEventRaiser };