File "index.js"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sort-select/index.js
File size: 2.5 KB
MIME-type: text/x-java
Charset: utf-8
/**
* External dependencies
*/
import PropTypes from 'prop-types';
import classNames from 'classnames';
import Label from '@woocommerce/base-components/label';
import { withInstanceId } from '@woocommerce/base-hocs/with-instance-id';
/**
* Internal dependencies
*/
import './style.scss';
/**
* Component used for 'Order by' selectors, which renders a label
* and a <select> with the options provided in the props.
*
* @param {Object} props Incoming props for the component.
* @param {string} props.className CSS class used.
* @param {string} props.instanceId Unique id for component instance.
* @param {string} props.defaultValue Default value for the select.
* @param {string} props.label Label for the select.
* @param {function():any} props.onChange Function to call on the change event.
* @param {Array} props.options Option values for the select.
* @param {string} props.screenReaderLabel Screen reader label.
* @param {boolean} props.readOnly Whether the select is read only or not.
* @param {string} props.value The selected value.
*/
const SortSelect = ( {
className,
instanceId,
defaultValue,
label,
onChange,
options,
screenReaderLabel,
readOnly,
value,
} ) => {
const selectId = `wc-block-components-sort-select__select-${ instanceId }`;
return (
<div
className={ classNames(
'wc-block-sort-select',
'wc-block-components-sort-select',
className
) }
>
<Label
label={ label }
screenReaderLabel={ screenReaderLabel }
wrapperElement="label"
wrapperProps={ {
className:
'wc-block-sort-select__label wc-block-components-sort-select__label',
htmlFor: selectId,
} }
/>
<select // eslint-disable-line jsx-a11y/no-onchange
id={ selectId }
className="wc-block-sort-select__select wc-block-components-sort-select__select"
defaultValue={ defaultValue }
onChange={ onChange }
readOnly={ readOnly }
value={ value }
>
{ options.map( ( option ) => (
<option key={ option.key } value={ option.key }>
{ option.label }
</option>
) ) }
</select>
</div>
);
};
SortSelect.propTypes = {
defaultValue: PropTypes.string,
label: PropTypes.string,
onChange: PropTypes.func,
options: PropTypes.arrayOf(
PropTypes.shape( {
key: PropTypes.string.isRequired,
label: PropTypes.string.isRequired,
} )
),
readOnly: PropTypes.bool,
screenReaderLabel: PropTypes.string,
value: PropTypes.string,
// from withInstanceId
instanceId: PropTypes.number.isRequired,
};
export default withInstanceId( SortSelect );