File "sort-select.js"
Full Path: /home/warrior1/public_html/wp-content/plugins/elementor/app/modules/kit-library/assets/js/components/sort-select.js
File size: 2.27 KB
MIME-type: text/x-java
Charset: utf-8
import { Select, Button } from '@elementor/app-ui';
import { useState, useEffect } from 'react';
import './sort-select.scss';
export default function SortSelect( props ) {
const getSelectedOptionDetails = ( value ) => {
return props.options.find( ( option ) => option.value === value );
};
const [ selectedSortBy, setSelectedSortBy ] = useState( getSelectedOptionDetails( props.value.by ) );
useEffect( () => {
props.onChange( { by: selectedSortBy.value, direction: selectedSortBy.defaultOrder ?? props.value.direction } );
}, [ selectedSortBy ] );
return (
<div className="eps-sort-select">
<div className="eps-sort-select__select-wrapper">
<Select
options={ props.options }
value={ props.value.by }
onChange={ ( e ) => {
const value = e.target.value;
setSelectedSortBy( getSelectedOptionDetails( value ) );
props.onChangeSortValue?.( value );
} }
className="eps-sort-select__select"
onClick={ () => {
props.onChange( {
by: props.value.by,
direction: props.value.direction,
} );
props.onSortSelectOpen?.();
} }
/>
</div>
{
! selectedSortBy.orderDisabled &&
<Button
text={ 'asc' === props.value.direction ? __( 'Sort Descending', 'elementor' ) : __( 'Sort Ascending', 'elementor' ) }
hideText={ true }
icon={ 'asc' === props.value.direction ? 'eicon-arrow-up' : 'eicon-arrow-down' }
className="eps-sort-select__button"
onClick={ () => {
const direction = props.value.direction && 'asc' === props.value.direction ? 'desc' : 'asc';
if ( props.onChangeSortDirection ) {
props.onChangeSortDirection( direction );
}
props.onChange( {
by: props.value.by,
direction,
} );
} }
/>
}
</div>
);
}
SortSelect.propTypes = {
options: PropTypes.arrayOf( PropTypes.shape( {
label: PropTypes.string.isRequired,
value: PropTypes.oneOfType( [ PropTypes.string, PropTypes.number ] ).isRequired,
} ) ).isRequired,
value: PropTypes.shape( {
direction: PropTypes.oneOf( [ 'asc', 'desc' ] ).isRequired,
by: PropTypes.string.isRequired,
} ).isRequired,
onChange: PropTypes.func.isRequired,
onChangeSortValue: PropTypes.func,
onSortSelectOpen: PropTypes.func,
onChangeSortDirection: PropTypes.func,
};