1
0

getColumns.tsx 955 B

12345678910111213141516171819202122232425262728293031323334
  1. import React from 'react';
  2. import Column from './Column';
  3. import { get, omit } from 'lodash';
  4. import { ColumnProps } from './interface';
  5. /**
  6. * Convert jsx children into object columns
  7. * @param {Node} children
  8. * @returns
  9. */
  10. export default function getColumns(children: React.ReactNode) {
  11. if (children) {
  12. const columns: ColumnProps[] = [];
  13. React.Children.forEach(children, child => {
  14. if (React.isValidElement(child) && (child.type === Column || get(child, 'type.name') === Column.name)) {
  15. const col = omit(child.props, ['children']);
  16. if (Array.isArray(child.props.children) && child.props.children.length) {
  17. col.children = getColumns(child.props.children);
  18. }
  19. columns.push({
  20. key: child.key,
  21. ...col,
  22. });
  23. }
  24. });
  25. return columns;
  26. }
  27. return [];
  28. }