/** * WordPress dependencies */ import { BaseControl, SelectControl } from '@safe-wordpress/components'; import { useInstanceId } from '@safe-wordpress/compose'; import { _x } from '@safe-wordpress/i18n'; /** * External dependencies */ import clsx from 'clsx'; import { toPairs } from 'lodash'; import { ErrorText, StylizedSelectControl } from '@nab/components'; import type { SREditProps } from '@nab/types'; /** * Internal dependencies */ import './edit.scss'; import { browsersList } from './browsers'; import type { Attributes, Value } from './types'; export const Edit = ( { attributes: { condition, values }, errors, setAttributes, }: SREditProps< Attributes > ): JSX.Element => { const instanceId = useInstanceId( Edit ); const selectControlId = `nab-browser-segmentation-rule__value-${ instanceId }`; const browsersListOptions = Object.entries( browsersList ).map( ( [ value, label ] ) => ( { value, label } ) as Value ); return ( <> setAttributes( { condition: newCondition } ) } /> } >
setAttributes( { values: newValues || [] } ) } options={ browsersListOptions } />
); }; // ======= // HELPERS // ======= const CONDITION_LABEL_RECORD: Record< Attributes[ 'condition' ], string > = { 'is-equal-to': _x( 'Browser is equal to', 'text', 'nelio-ab-testing' ), 'is-not-equal-to': _x( 'Browser is not equal to', 'text', 'nelio-ab-testing' ), }; const CONDITIONS = toPairs( CONDITION_LABEL_RECORD ).map( ( [ value, label ] ) => ( { label, value, } ) );