PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / dashboard / components / MediaHub / BulkActions.js
presto-player / src / admin / dashboard / components / MediaHub Last commit date
test 1 month ago BulkActions.js 1 month ago MediaRow.js 1 month ago PostSettings.js 1 month ago SearchBar.js 1 month ago index.js 1 month ago
BulkActions.js
86 lines
1 import React from "react";
2 import { __ } from "@wordpress/i18n";
3 import { Container, Button } from "@bsf/force-ui";
4 import { Trash, Trash2, CheckCheck, FolderArchive } from "lucide-react";
5
6 const BulkActions = ({
7 selected = [],
8 selectedLabel,
9 onDelete,
10 onTrash,
11 onStatusChange,
12 onCancel,
13 }) => {
14 if (selected.length === 0) {
15 return null;
16 }
17
18 return (
19 <Container.Item className="flex justify-between items-center gap-2 bg-background-primary px-6 py-4 rounded-lg">
20 <span className="text-sm font-normal leading-5 text-text-secondary">
21 <span className="text-text-primary">
22 {__("Bulk actions: ", "presto-player")}
23 </span>
24 {selectedLabel || `${selected.length} ${__("media selected", "presto-player")}`}
25 </span>
26 <div className="flex items-center gap-0">
27 <Button
28 variant="ghost"
29 size="sm"
30 onClick={() => onStatusChange(selected, "publish")}
31 className="text-text-primary"
32 icon={<CheckCheck width="15" height="15" />}
33 iconPosition="left"
34 >
35 {__("Publish", "presto-player")}
36 </Button>
37 <Button
38 variant="ghost"
39 size="sm"
40 onClick={() => onStatusChange(selected, "draft")}
41 className="text-text-primary"
42 icon={<FolderArchive width="15" height="15" />}
43 iconPosition="left"
44 >
45 {__("Draft", "presto-player")}
46 </Button>
47 {onTrash && (
48 <Button
49 variant="ghost"
50 size="sm"
51 onClick={() => onTrash(selected)}
52 className="text-text-primary"
53 icon={<Trash width="15" height="15" />}
54 aria-label={__("Move to Trash", "presto-player")}
55 iconPosition="left"
56 >
57 {__("Trash", "presto-player")}
58 </Button>
59 )}
60 <Button
61 variant="ghost"
62 size="sm"
63 onClick={() => onDelete(selected)}
64 className="text-text-primary"
65 icon={<Trash2 width="15" height="15" />}
66 aria-label={__("Delete permanently", "presto-player")}
67 iconPosition="left"
68 >
69 {__("Delete", "presto-player")}
70 </Button>
71 <div className="border border-solid h-4 bg-red-400" />
72 <Button
73 variant="ghost"
74 size="sm"
75 onClick={onCancel}
76 className="text-text-primary"
77 >
78 {__("Cancel", "presto-player")}
79 </Button>
80 </div>
81 </Container.Item>
82 );
83 };
84
85 export default BulkActions;
86