Display checkbox on card & reset when collection is changed

This commit is contained in:
Isaac Wise 2024-02-09 23:51:02 -06:00
parent b51355b406
commit eba9d3c86d
2 changed files with 20 additions and 6 deletions

View File

@ -24,13 +24,17 @@ type Props = {
flipDropdown?: boolean;
};
export default function LinkGrid({
export default function LinkCard({
link,
flipDropdown,
}: Props) {
const { collections } = useCollectionStore();
const { links, getLink } = useLinkStore();
const { links, getLink, setSelectedLinks, selectedLinks } = useLinkStore();
const handleCheckboxClick = (checkboxId: number) => {
setSelectedLinks((selectedLinks.includes(checkboxId) ? selectedLinks.filter((id) => id !== checkboxId) : [...selectedLinks, checkboxId]));
};
let shortendURL;
@ -85,6 +89,12 @@ export default function LinkGrid({
ref={ref}
className="border border-solid border-neutral-content bg-base-200 shadow-md hover:shadow-none duration-100 rounded-2xl relative"
>
<input
type="checkbox"
className="checkbox checkbox-primary my-auto ml-3 mt-3 fixed z-50 bg-white"
checked={selectedLinks.includes(link.id)}
onChange={() => handleCheckboxClick(link.id)}
/>
<Link
href={generateLinkHref(link)}
target="_blank"

View File

@ -24,7 +24,6 @@ import CardView from "@/components/LinkViews/Layouts/CardView";
// import GridView from "@/components/LinkViews/Layouts/GridView";
import ListView from "@/components/LinkViews/Layouts/ListView";
import { dropdownTriggerer } from "@/lib/client/utils";
import Link from "next/link";
import NewCollectionModal from "@/components/ModalContent/NewCollectionModal";
export default function Index() {
@ -81,6 +80,9 @@ export default function Index() {
};
fetchOwner();
// When the collection changes, reset the selected links
setSelectedLinks([]);
}, [activeCollection]);
const [editCollectionModal, setEditCollectionModal] = useState(false);
@ -294,9 +296,11 @@ export default function Index() {
onChange={() => handleSelectAll()}
checked={selectedLinks.length === links.length}
/>
{selectedLinks.length > 0 &&
<span>{selectedLinks.length} link selected</span>
}
{selectedLinks.length > 0 && (
<span>
{selectedLinks.length} {selectedLinks.length === 1 ? 'link' : 'links'} selected
</span>
)}
</div>
{selectedLinks.length > 0 && permissions &&
<div className="flex gap-3">