Skip to content
Snippets Groups Projects
Select Git revision
  • facb093e4731f1aa69fdec4aa1683b21666ac5d9
  • master default protected
  • feat/new-image-formats
  • clickable-select-chevron
  • 2.20.0
  • 2.19.0
  • 2.18.0
  • 2.17.0
  • 2.16.1
  • 2.16.0
  • 2.15.0
  • 2.14.0
  • 2.13.0
  • 2.12.1
  • 2.11.0
  • 2.10.0
  • 2.9.1
  • 2.9.0
  • 2.8.0
  • 2.7.1
  • 2.7.0
  • 2.6.0
  • 2.5.2
  • 2.5.1
24 results

navbar.mustache

Blame
  • AnnouncementList.jsx 1.43 KiB
    import React from "react";
    import classNames from "classnames";
    
    import Announcement from "./Announcement";
    
    const AnnouncementList = ({
      items,
      className,
      canRunActions,
      onDelete,
      onEdit,
      onSeen,
    }) => {
      const buildHandler = (responderFn) => (announcement) => (evt) => {
        evt.preventDefault();
        responderFn(announcement);
      };
    
      const onAnnouncementEdit = buildHandler(onEdit);
      const onAnnouncementDelete = buildHandler(onDelete);
    
      const onAnnouncementSeen = (announcement) => () => {
        onSeen(announcement);
      };
    
      const getClassName = (idx) => {
        if (idx === 0) {
          return "pt-4 lg:pt-8";
        }
    
        if (idx === items.length - 1) {
          return "pb-4 lg:pb-8";
        }
    
        return "";
      };
    
      return (
        <div className={classNames("space-y-px", className)}>
          {items.map((item, idx) => (
            <Announcement
              className={getClassName(idx)}
              key={item.id}
              datetime={item.datetime}
              type={item.type}
              content={item.content}
              link={item.link}
              seen={item.seen}
              canRunActions={canRunActions}
              onEdit={onAnnouncementEdit(item)}
              onDelete={onAnnouncementDelete(item)}
              onSeen={onAnnouncementSeen(item)}
            />
          ))}
          {!items.length && (
            <p className="px-8 py-4 leading-snug text-sm md:text-base">
              Zatím žádná oznámení.
            </p>
          )}
        </div>
      );
    };
    
    export default AnnouncementList;