@gechiui/block-editor
Version:
92 lines (80 loc) • 2.92 kB
JavaScript
import { createElement } from "@gechiui/element";
/**
* External dependencies
*/
import classnames from 'classnames';
/**
* GeChiUI dependencies
*/
import { __, sprintf } from '@gechiui/i18n';
import { Fragment } from '@gechiui/element';
import { ToggleControl } from '@gechiui/components';
/**
* Internal dependencies
*/
import ResponsiveBlockControlLabel from './label';
function ResponsiveBlockControl(props) {
const {
title,
property,
toggleLabel,
onIsResponsiveChange,
renderDefaultControl,
renderResponsiveControls,
isResponsive = false,
defaultLabel = {
id: 'all',
/* translators: 'Label. Used to signify a layout property (eg: margin, padding) will apply uniformly to all screensizes.' */
label: __('全部')
},
viewports = [{
id: 'small',
label: __('小型屏幕')
}, {
id: 'medium',
label: __('中型屏幕')
}, {
id: 'large',
label: __('大型屏幕')
}]
} = props;
if (!title || !property || !renderDefaultControl) {
return null;
}
const toggleControlLabel = toggleLabel || sprintf(
/* translators: 'Toggle control label. Should the property be the same across all screen sizes or unique per screen size.'. %s property value for the control (eg: margin, padding...etc) */
__('在所有屏幕尺寸上使用相同的%s。'), property);
/* translators: 'Help text for the responsive mode toggle control.' */
const toggleHelpText = __('在对所有屏幕尺寸使用相同值或对每个屏幕尺寸使用唯一值之间进行切换。');
const defaultControl = renderDefaultControl(createElement(ResponsiveBlockControlLabel, {
property: property,
viewport: defaultLabel
}), defaultLabel);
const defaultResponsiveControls = () => {
return viewports.map(viewport => createElement(Fragment, {
key: viewport.id
}, renderDefaultControl(createElement(ResponsiveBlockControlLabel, {
property: property,
viewport: viewport
}), viewport)));
};
return createElement("fieldset", {
className: "block-editor-responsive-block-control"
}, createElement("legend", {
className: "block-editor-responsive-block-control__title"
}, title), createElement("div", {
className: "block-editor-responsive-block-control__inner"
}, createElement(ToggleControl, {
className: "block-editor-responsive-block-control__toggle",
label: toggleControlLabel,
checked: !isResponsive,
onChange: onIsResponsiveChange,
help: toggleHelpText
}), createElement("div", {
className: classnames('block-editor-responsive-block-control__group', {
'is-responsive': isResponsive
})
}, !isResponsive && defaultControl, isResponsive && (renderResponsiveControls ? renderResponsiveControls(viewports) : defaultResponsiveControls()))));
}
export default ResponsiveBlockControl;
//# sourceMappingURL=index.js.map