PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.5.0
Presto Player v4.5.0
4.5.0 4.4.1 4.4.0 4.3.3 4.3.2 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 / blocks / shared / components / EntitySearchDropdown.js
presto-player / src / admin / blocks / shared / components Last commit date
ColorPopup.js 2 months ago ColorPopup.scss 2 months ago EntitySearchDropdown.js 2 months ago EntitySearchDropdown.scss 2 months ago LoadSelect.js 5 years ago ProBadge.js 5 years ago SelectMediaDropdown.js 2 months ago SelectMediaDropdown.scss 2 months ago Tag.js 2 months ago Tag.scss 2 months ago TranscriptionLanguageSelect.js 2 months ago UrlSelect.js 2 months ago UrlSelect.scss 2 months ago VideoIcon.js 2 months ago VideoIcon.scss 2 months ago
EntitySearchDropdown.js
124 lines
1 import {
2 Spinner,
3 Button,
4 MenuGroup,
5 MenuItem,
6 Dropdown,
7 Disabled,
8 } from "@wordpress/components";
9 import { __ } from "@wordpress/i18n";
10 import { SearchControl } from "@wordpress/components";
11 import "./EntitySearchDropdown.scss";
12
13 const EntitySearchDropdown = ({
14 options,
15 isLoading,
16 hasMore,
17 search,
18 onSearch,
19 onSelect,
20 onNextPage,
21 onCreate,
22 onOpen,
23 renderItem = null,
24 ...dropdownProps
25 }) => {
26 const renderContent = () => {
27 if (isLoading && !options.length)
28 return (
29 <MenuGroup>
30 <MenuItem>
31 <Spinner />
32 </MenuItem>
33 </MenuGroup>
34 );
35 if (!options.length) {
36 return (
37 <MenuGroup>
38 <MenuItem>{__("None found.", "presto-player")}</MenuItem>
39 </MenuGroup>
40 );
41 }
42 return (
43 <>
44 {!!onCreate && (
45 <MenuGroup>
46 <MenuItem
47 icon={
48 <svg
49 xmlns="http://www.w3.org/2000/svg"
50 viewBox="0 0 20 20"
51 fill="currentColor"
52 className="presto-entity-search__icon"
53 >
54 <path d="M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z" />
55 </svg>
56 }
57 iconPosition="left"
58 onClick={onCreate}
59 >
60 {__("Add New", "presto-player")}
61 </MenuItem>
62 </MenuGroup>
63 )}
64
65 {!options.length && search ? (
66 <Disabled>
67 <MenuItem>{__("None found.", "presto-player")}</MenuItem>
68 </Disabled>
69 ) : (
70 <MenuGroup>
71 {(options || []).map((item) => {
72 if (renderItem) return renderItem({ item, onSelect });
73 return (
74 <MenuItem
75 icon={item?.icon}
76 iconPosition="left"
77 onClick={() => onSelect(item)}
78 {...item}
79 >
80 {item?.title || "Untitled"}
81 </MenuItem>
82 );
83 })}
84 </MenuGroup>
85 )}
86 {hasMore && options.length && (
87 <div className="presto-entity-search__load-more">
88 <Button
89 variant="secondary"
90 size={"small"}
91 onClick={onNextPage}
92 isBusy={isLoading}
93 >
94 {__("Load More", "presto-player")}
95 </Button>
96 </div>
97 )}
98 </>
99 );
100 };
101
102 return (
103 <div className="pp_search_dropdown_container presto-entity-search__container">
104 <Dropdown
105 onToggle={(open) => onOpen(open)}
106 renderContent={() => (
107 <div className="presto-entity-search__content">
108 <SearchControl
109 placeholder={__("Search...", "presto-player")}
110 value={search}
111 onChange={onSearch}
112 className="presto-entity-search__search"
113 />
114 {renderContent()}
115 </div>
116 )}
117 {...dropdownProps}
118 />
119 </div>
120 );
121 };
122
123 export default EntitySearchDropdown;
124