@gechiui/block-editor
Version:
59 lines (55 loc) • 1.53 kB
JavaScript
/**
* GeChiUI dependencies
*/
import { store as blocksStore } from '@gechiui/blocks';
import { useMemo, useCallback } from '@gechiui/element';
import { __ } from '@gechiui/i18n';
import { SelectControl } from '@gechiui/components';
import { useSelect } from '@gechiui/data';
/**
* Internal dependencies
*/
import { store as blockEditorStore } from '../../store';
export default function DefaultStylePicker( { blockName } ) {
const {
preferredStyle,
onUpdatePreferredStyleVariations,
styles,
} = useSelect(
( select ) => {
const settings = select( blockEditorStore ).getSettings();
const preferredStyleVariations =
settings.__experimentalPreferredStyleVariations;
return {
preferredStyle: preferredStyleVariations?.value?.[ blockName ],
onUpdatePreferredStyleVariations:
preferredStyleVariations?.onChange ?? null,
styles: select( blocksStore ).getBlockStyles( blockName ),
};
},
[ blockName ]
);
const selectOptions = useMemo(
() => [
{ label: __( '未设置' ), value: '' },
...styles.map( ( { label, name } ) => ( { label, value: name } ) ),
],
[ styles ]
);
const selectOnChange = useCallback(
( blockStyle ) => {
onUpdatePreferredStyleVariations( blockName, blockStyle );
},
[ blockName, onUpdatePreferredStyleVariations ]
);
return (
onUpdatePreferredStyleVariations && (
<SelectControl
options={ selectOptions }
value={ preferredStyle || '' }
label={ __( '默认样式' ) }
onChange={ selectOnChange }
/>
)
);
}