import * as React from '@wordpress/element'; import { SelectControl } from '@wordpress/components'; import { useDispatch, useSelect } from '@wordpress/data'; import { sortBy } from 'lodash'; import { css } from '@neliosoft/inlexa/css'; import { _x } from '@neliosoft/inlexa/i18n'; import type { Language } from '@neliosoft/inlexa/types'; import { STORE } from '@wpinlexa/gutenberg/data'; // TODO. export const LanguageSelector = () => { const { language, setLanguage } = useLanguage(); const options = sortBy( Object.keys( LANGUAGES ).map( ( code: Language ) => ( { value: code, label: LANGUAGES[ code ](), } ) ), 'label' ); return (
{ _x( 'Analysis Language:', 'text', 'inlexa' ) }
); }; // ======= // HELPERS // ======= const useLanguage = () => { const language = useSelect( ( select ) => select( STORE ).getLanguage() ); const { setLanguage } = useDispatch( STORE ); return { language, setLanguage, }; }; const LANGUAGES: Record< Language, () => string > = { ca: () => _x( 'Catalan', 'text (lang)', 'inlexa' ), es: () => _x( 'Spanish', 'text (lang)', 'inlexa' ), }; // ======= // STYLES // ======= const WRAPPER = css( { alignItems: 'center', display: 'flex', flexDirection: 'column', marginTop: '2em', } ); const SELECT = css( { '& select': { display: 'inline-block', width: 'auto', }, '& .components-input-control__backdrop': { border: 'none !important', }, } );