@wordpress/block-library
Version:
Block library for the WordPress editor.
95 lines (87 loc) • 2.42 kB
JavaScript
import { createElement } from "@wordpress/element";
/**
* External dependencies
*/
import classnames from 'classnames';
/**
* WordPress dependencies
*/
import { RichText, useBlockProps, __experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles, __experimentalGetColorClassesAndStyles as getColorClassesAndStyles, __experimentalGetElementClassName } from '@wordpress/block-editor';
export default function save(_ref) {
let {
attributes
} = _ref;
const {
hasFixedLayout,
head,
body,
foot,
caption
} = attributes;
const isEmpty = !head.length && !body.length && !foot.length;
if (isEmpty) {
return null;
}
const colorProps = getColorClassesAndStyles(attributes);
const borderProps = getBorderClassesAndStyles(attributes);
const classes = classnames(colorProps.className, borderProps.className, {
'has-fixed-layout': hasFixedLayout
});
const hasCaption = !RichText.isEmpty(caption);
const Section = _ref2 => {
let {
type,
rows
} = _ref2;
if (!rows.length) {
return null;
}
const Tag = `t${type}`;
return createElement(Tag, null, rows.map((_ref3, rowIndex) => {
let {
cells
} = _ref3;
return createElement("tr", {
key: rowIndex
}, cells.map((_ref4, cellIndex) => {
let {
content,
tag,
scope,
align
} = _ref4;
const cellClasses = classnames({
[`has-text-align-${align}`]: align
});
return createElement(RichText.Content, {
className: cellClasses ? cellClasses : undefined,
"data-align": align,
tagName: tag,
value: content,
key: cellIndex,
scope: tag === 'th' ? scope : undefined
});
}));
}));
};
return createElement("figure", useBlockProps.save(), createElement("table", {
className: classes === '' ? undefined : classes,
style: { ...colorProps.style,
...borderProps.style
}
}, createElement(Section, {
type: "head",
rows: head
}), createElement(Section, {
type: "body",
rows: body
}), createElement(Section, {
type: "foot",
rows: foot
})), hasCaption && createElement(RichText.Content, {
tagName: "figcaption",
value: caption,
className: __experimentalGetElementClassName('caption')
}));
}
//# sourceMappingURL=save.js.map