mirror of
https://github.com/mediacms-io/mediacms.git
synced 2025-11-22 22:37:57 -05:00
Bulk actions support
3wtv
This commit is contained in:
committed by
Markos Gogoulos
parent
2a0cb977f2
commit
a320375e16
@@ -10,7 +10,7 @@ import { MediaItem } from './MediaItem';
|
||||
export function MediaItemAudio(props) {
|
||||
const type = props.type;
|
||||
|
||||
const [titleComponent, descriptionComponent, thumbnailUrl, UnderThumbWrapper, editMediaComponent, metaComponents] =
|
||||
const [titleComponent, descriptionComponent, thumbnailUrl, UnderThumbWrapper, editMediaComponent, metaComponents, viewMediaComponent] =
|
||||
useMediaItem({ ...props, type });
|
||||
|
||||
const _MediaDurationInfo = new MediaDurationInfo();
|
||||
@@ -65,12 +65,47 @@ export function MediaItemAudio(props) {
|
||||
props.playlistOrder === props.playlistActiveItem
|
||||
);
|
||||
|
||||
const finalClassname = containerClassname +
|
||||
(props.showSelection ? ' with-selection' : '') +
|
||||
(props.isSelected ? ' selected' : '') +
|
||||
(props.hasAnySelection ? ' has-any-selection' : '');
|
||||
|
||||
const handleItemClick = (e) => {
|
||||
// If there's any selection active, clicking the item should toggle selection
|
||||
if (props.hasAnySelection && props.onCheckboxChange) {
|
||||
// Check if clicking on the checkbox itself, edit icon, or view icon
|
||||
if (e.target.closest('.item-selection-checkbox') ||
|
||||
e.target.closest('.item-edit-icon') ||
|
||||
e.target.closest('.item-view-icon')) {
|
||||
return; // Let these elements handle their own clicks
|
||||
}
|
||||
|
||||
// Prevent all other clicks and toggle selection
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
props.onCheckboxChange({ target: { checked: !props.isSelected } });
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={containerClassname}>
|
||||
<div className={finalClassname} onClick={handleItemClick}>
|
||||
{playlistOrderNumberComponent()}
|
||||
|
||||
<div className="item-content">
|
||||
{props.showSelection && (
|
||||
<div className="item-selection-checkbox" onClick={(e) => e.stopPropagation()}>
|
||||
<input
|
||||
type="checkbox"
|
||||
checked={props.isSelected || false}
|
||||
onChange={(e) => { props.onCheckboxChange && props.onCheckboxChange(e); }}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
aria-label="Select media"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{editMediaComponent()}
|
||||
{viewMediaComponent()}
|
||||
|
||||
{thumbnailComponent()}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user