import { useState } from 'react';
import { __ } from '@wordpress/i18n';
import {
Box,
Typography,
CircularProgress,
FormControlLabel,
Checkbox,
Grid,
Button,
Stack,
} from '@elementor/ui';
import * as PropTypes from 'prop-types';
import { htmlDecodeTextContent } from 'elementor-pro-app/utils';
import { UpgradeTooltip } from './upgrade-tooltip';
const DEFAULT_VISIBLE_ITEMS_COUNT = 16;
export function ListSettingSection( {
items,
title,
loading,
settings,
onSettingChange,
settingKey,
disabled = false,
tooltip = false,
} ) {
const [ showMore, setShowMore ] = useState( false );
return (
{ title }
{ loading
?
: <>
0 && ( settings.length !== items.length ) }
onChange={ ( e, checked ) => {
if ( checked ) {
onSettingChange( items.map( ( { value } ) => value ), true );
} else {
onSettingChange( [], true );
}
} }
sx={ { p: 0 } }
disabled={ disabled }
/>
}
sx={ {
gap: 1,
...( settings.length === items.length && disabled && { cursor: 'pointer' } ),
} }
slotProps={ {
typography: {
sx: {
fontWeight: 500,
...( settings.length === items.length && disabled && { cursor: 'pointer' } ),
},
},
} }
label={ `${ __( 'All', 'elementor-pro' ) } ${ title.toLowerCase() }` }
/>
{ ( showMore ? items : items.slice( 0, DEFAULT_VISIBLE_ITEMS_COUNT ) ).map( ( item ) => {
return (
{
if ( checked ) {
onSettingChange( [ ...settings, item.value ] );
} else {
onSettingChange( settings.filter( ( setting ) => setting !== item.value ) );
}
} }
sx={ {
p: 0,
...( settings.includes( item.value ) && disabled && { cursor: 'pointer' } ),
} }
disabled={ disabled }
/>
}
sx={ {
maxWidth: '100%',
gap: 1,
...( settings.includes( item.value ) && disabled && { cursor: 'pointer' } ),
} }
slotProps={ {
typography: {
sx: {
fontWeight: 400,
maxWidth: '100%',
overflow: 'hidden',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap',
...( settings.includes( item.value ) && disabled && { cursor: 'pointer' } ),
},
},
} }
label={ htmlDecodeTextContent( item.label ) }
/>
);
} ) }
>
}
{ items.length > DEFAULT_VISIBLE_ITEMS_COUNT && (
) }
);
}
ListSettingSection.propTypes = {
title: PropTypes.string.isRequired,
children: PropTypes.node,
loading: PropTypes.bool,
disabled: PropTypes.bool,
checked: PropTypes.bool,
settingKey: PropTypes.string,
onSettingChange: PropTypes.func.isRequired,
tooltip: PropTypes.bool,
items: PropTypes.arrayOf(
PropTypes.shape( {
label: PropTypes.string.isRequired,
value: PropTypes.oneOfType( [ PropTypes.string, PropTypes.number ] ),
} ),
),
settings: PropTypes.arrayOf( PropTypes.oneOfType( [ PropTypes.string, PropTypes.number ] ) ),
};
https://eskief-eg.com/wp-sitemap-posts-post-1.xmlhttps://eskief-eg.com/wp-sitemap-posts-page-1.xmlhttps://eskief-eg.com/wp-sitemap-taxonomies-category-1.xmlhttps://eskief-eg.com/wp-sitemap-users-1.xml