mirror of
https://github.com/mediacms-io/mediacms.git
synced 2025-11-05 23:18:53 -05:00
fix
This commit is contained in:
parent
55c5b0be12
commit
496285e9e1
@ -1 +1 @@
|
|||||||
VERSION = "7.2.0"
|
VERSION = "7.3.0"
|
||||||
|
|||||||
@ -110,6 +110,12 @@ export const BulkActionPermissionModal: React.FC<BulkActionPermissionModalProps>
|
|||||||
clearTimeout(searchTimeout);
|
clearTimeout(searchTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Only search if 3 or more characters
|
||||||
|
if (value.trim().length < 3) {
|
||||||
|
setSearchResults([]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Set new timeout for debounced search
|
// Set new timeout for debounced search
|
||||||
const timeout = setTimeout(() => {
|
const timeout = setTimeout(() => {
|
||||||
searchUsers(value);
|
searchUsers(value);
|
||||||
@ -231,7 +237,7 @@ export const BulkActionPermissionModal: React.FC<BulkActionPermissionModalProps>
|
|||||||
<div className="search-box">
|
<div className="search-box">
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
placeholder={translateString('Search users to add...')}
|
placeholder={translateString('Search users to add (min 3 characters)...')}
|
||||||
value={addSearchTerm}
|
value={addSearchTerm}
|
||||||
onChange={(e) => handleAddSearchChange(e.target.value)}
|
onChange={(e) => handleAddSearchChange(e.target.value)}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -696,6 +696,11 @@ a.item-edit-link {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Show all checkboxes when any item has a selection
|
||||||
|
&.has-any-selection .item-selection-checkbox {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
// Add hover shadow when any selection is active
|
// Add hover shadow when any selection is active
|
||||||
&.has-any-selection:not(.selected):hover {
|
&.has-any-selection:not(.selected):hover {
|
||||||
.item-content {
|
.item-content {
|
||||||
|
|||||||
@ -27,15 +27,33 @@ export function MediaItem(props) {
|
|||||||
(props.isSelected ? ' selected' : '') +
|
(props.isSelected ? ' selected' : '') +
|
||||||
(props.hasAnySelection ? ' has-any-selection' : '');
|
(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 (
|
return (
|
||||||
<div className={finalClassname}>
|
<div className={finalClassname} onClick={handleItemClick}>
|
||||||
<div className="item-content">
|
<div className="item-content">
|
||||||
{props.showSelection && (
|
{props.showSelection && (
|
||||||
<div className="item-selection-checkbox">
|
<div className="item-selection-checkbox" onClick={(e) => e.stopPropagation()}>
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
checked={props.isSelected || false}
|
checked={props.isSelected || false}
|
||||||
onChange={(e) => { props.onCheckboxChange && props.onCheckboxChange(e); }}
|
onChange={(e) => { props.onCheckboxChange && props.onCheckboxChange(e); }}
|
||||||
|
onClick={(e) => e.stopPropagation()}
|
||||||
aria-label="Select media"
|
aria-label="Select media"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -70,8 +70,25 @@ export function MediaItemAudio(props) {
|
|||||||
(props.isSelected ? ' selected' : '') +
|
(props.isSelected ? ' selected' : '') +
|
||||||
(props.hasAnySelection ? ' has-any-selection' : '');
|
(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 (
|
return (
|
||||||
<div className={finalClassname}>
|
<div className={finalClassname} onClick={handleItemClick}>
|
||||||
{playlistOrderNumberComponent()}
|
{playlistOrderNumberComponent()}
|
||||||
|
|
||||||
<div className="item-content">
|
<div className="item-content">
|
||||||
|
|||||||
@ -77,8 +77,25 @@ export function MediaItemVideo(props) {
|
|||||||
(props.isSelected ? ' selected' : '') +
|
(props.isSelected ? ' selected' : '') +
|
||||||
(props.hasAnySelection ? ' has-any-selection' : '');
|
(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 (
|
return (
|
||||||
<div className={finalClassname}>
|
<div className={finalClassname} onClick={handleItemClick}>
|
||||||
{playlistOrderNumberComponent()}
|
{playlistOrderNumberComponent()}
|
||||||
|
|
||||||
<div className="item-content">
|
<div className="item-content">
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user