Fix CSS bug causing ProjectCard links to flicker (#2375)
on Microsoft desktop apps running old versions of Edge
This commit is contained in:
		@ -70,9 +70,9 @@ function ProjectCard({
 | 
			
		||||
      className="group relative min-h-[5em] p-1 rounded-sm border border-chalkboard-20 dark:border-chalkboard-80 hover:!border-primary"
 | 
			
		||||
    >
 | 
			
		||||
      {isEditing ? (
 | 
			
		||||
        <form onSubmit={handleSave} className="flex gap-2 items-center">
 | 
			
		||||
        <form onSubmit={handleSave} className="flex items-center gap-2">
 | 
			
		||||
          <input
 | 
			
		||||
            className="dark:bg-chalkboard-80 dark:border-chalkboard-40 min-w-0 p-1 focus:outline-none"
 | 
			
		||||
            className="min-w-0 p-1 dark:bg-chalkboard-80 dark:border-chalkboard-40 focus:outline-none"
 | 
			
		||||
            type="text"
 | 
			
		||||
            id="newProjectName"
 | 
			
		||||
            name="newProjectName"
 | 
			
		||||
@ -81,7 +81,7 @@ function ProjectCard({
 | 
			
		||||
            defaultValue={project.name}
 | 
			
		||||
            ref={inputRef}
 | 
			
		||||
          />
 | 
			
		||||
          <div className="flex gap-1 items-center">
 | 
			
		||||
          <div className="flex items-center gap-1">
 | 
			
		||||
            <ActionButton
 | 
			
		||||
              Element="button"
 | 
			
		||||
              type="submit"
 | 
			
		||||
@ -117,78 +117,76 @@ function ProjectCard({
 | 
			
		||||
        </form>
 | 
			
		||||
      ) : (
 | 
			
		||||
        <>
 | 
			
		||||
          <div className="p-1 flex flex-col h-full gap-2">
 | 
			
		||||
            <Link
 | 
			
		||||
              className="flex-1 !no-underline !text-chalkboard-110 dark:!text-chalkboard-10 after:content-[''] after:absolute after:inset-0"
 | 
			
		||||
              to={`${paths.FILE}/${encodeURIComponent(project.path)}`}
 | 
			
		||||
              data-testid="project-link"
 | 
			
		||||
            >
 | 
			
		||||
              {project.name?.replace(FILE_EXT, '')}
 | 
			
		||||
            </Link>
 | 
			
		||||
            <span className="text-chalkboard-60 text-xs">
 | 
			
		||||
          <Link
 | 
			
		||||
            className="relative z-0 flex flex-col h-full gap-2 p-1 !no-underline !text-chalkboard-110 dark:!text-chalkboard-10"
 | 
			
		||||
            to={`${paths.FILE}/${encodeURIComponent(project.path)}`}
 | 
			
		||||
            data-testid="project-link"
 | 
			
		||||
          >
 | 
			
		||||
            <div className="flex-1">{project.name?.replace(FILE_EXT, '')}</div>
 | 
			
		||||
            <span className="text-xs text-chalkboard-60">
 | 
			
		||||
              {numberOfFiles} file{numberOfFiles === 1 ? '' : 's'}{' '}
 | 
			
		||||
              {numberOfFolders > 0 &&
 | 
			
		||||
                `/ ${numberOfFolders} folder${
 | 
			
		||||
                  numberOfFolders === 1 ? '' : 's'
 | 
			
		||||
                }`}
 | 
			
		||||
            </span>
 | 
			
		||||
            <span className="text-chalkboard-60 text-xs">
 | 
			
		||||
            <span className="text-xs text-chalkboard-60">
 | 
			
		||||
              Edited{' '}
 | 
			
		||||
              {project.metadata && project.metadata?.modified
 | 
			
		||||
                ? getDisplayedTime(project.metadata.modified)
 | 
			
		||||
                : 'never'}
 | 
			
		||||
            </span>
 | 
			
		||||
            <div className="absolute z-10 bottom-2 right-2 flex gap-1 items-center opacity-0 group-hover:opacity-100 group-focus-within:opacity-100">
 | 
			
		||||
              <ActionButton
 | 
			
		||||
                Element="button"
 | 
			
		||||
                iconStart={{
 | 
			
		||||
                  icon: faPenAlt,
 | 
			
		||||
                  className: 'p-1',
 | 
			
		||||
                  iconClassName: 'dark:!text-chalkboard-20',
 | 
			
		||||
                  bgClassName: '!bg-transparent',
 | 
			
		||||
                  size: 'xs',
 | 
			
		||||
                }}
 | 
			
		||||
                onClick={(e) => {
 | 
			
		||||
                  e.stopPropagation()
 | 
			
		||||
                  e.nativeEvent.stopPropagation()
 | 
			
		||||
                  setIsEditing(true)
 | 
			
		||||
                }}
 | 
			
		||||
                className="!p-0"
 | 
			
		||||
              >
 | 
			
		||||
                <Tooltip position="left" delay={1000}>
 | 
			
		||||
                  Rename project
 | 
			
		||||
                </Tooltip>
 | 
			
		||||
              </ActionButton>
 | 
			
		||||
              <ActionButton
 | 
			
		||||
                Element="button"
 | 
			
		||||
                iconStart={{
 | 
			
		||||
                  icon: faTrashAlt,
 | 
			
		||||
                  className: 'p-1',
 | 
			
		||||
                  size: 'xs',
 | 
			
		||||
                  bgClassName: '!bg-transparent',
 | 
			
		||||
                  iconClassName: '!text-destroy-70',
 | 
			
		||||
                }}
 | 
			
		||||
                className="!p-0 hover:border-destroy-40 dark:hover:border-destroy-40"
 | 
			
		||||
                onClick={(e) => {
 | 
			
		||||
                  e.stopPropagation()
 | 
			
		||||
                  e.nativeEvent.stopPropagation()
 | 
			
		||||
                  setIsConfirmingDelete(true)
 | 
			
		||||
                }}
 | 
			
		||||
              >
 | 
			
		||||
                <Tooltip position="left" delay={1000}>
 | 
			
		||||
                  Delete project
 | 
			
		||||
                </Tooltip>
 | 
			
		||||
              </ActionButton>
 | 
			
		||||
            </div>
 | 
			
		||||
          </Link>
 | 
			
		||||
          <div className="absolute z-10 flex items-center gap-1 opacity-0 bottom-2 right-2 group-hover:opacity-100 group-focus-within:opacity-100">
 | 
			
		||||
            <ActionButton
 | 
			
		||||
              Element="button"
 | 
			
		||||
              iconStart={{
 | 
			
		||||
                icon: faPenAlt,
 | 
			
		||||
                className: 'p-1',
 | 
			
		||||
                iconClassName: 'dark:!text-chalkboard-20',
 | 
			
		||||
                bgClassName: '!bg-transparent',
 | 
			
		||||
                size: 'xs',
 | 
			
		||||
              }}
 | 
			
		||||
              onClick={(e) => {
 | 
			
		||||
                e.stopPropagation()
 | 
			
		||||
                e.nativeEvent.stopPropagation()
 | 
			
		||||
                setIsEditing(true)
 | 
			
		||||
              }}
 | 
			
		||||
              className="!p-0"
 | 
			
		||||
            >
 | 
			
		||||
              <Tooltip position="left" delay={1000}>
 | 
			
		||||
                Rename project
 | 
			
		||||
              </Tooltip>
 | 
			
		||||
            </ActionButton>
 | 
			
		||||
            <ActionButton
 | 
			
		||||
              Element="button"
 | 
			
		||||
              iconStart={{
 | 
			
		||||
                icon: faTrashAlt,
 | 
			
		||||
                className: 'p-1',
 | 
			
		||||
                size: 'xs',
 | 
			
		||||
                bgClassName: '!bg-transparent',
 | 
			
		||||
                iconClassName: '!text-destroy-70',
 | 
			
		||||
              }}
 | 
			
		||||
              className="!p-0 hover:border-destroy-40 dark:hover:border-destroy-40"
 | 
			
		||||
              onClick={(e) => {
 | 
			
		||||
                e.stopPropagation()
 | 
			
		||||
                e.nativeEvent.stopPropagation()
 | 
			
		||||
                setIsConfirmingDelete(true)
 | 
			
		||||
              }}
 | 
			
		||||
            >
 | 
			
		||||
              <Tooltip position="left" delay={1000}>
 | 
			
		||||
                Delete project
 | 
			
		||||
              </Tooltip>
 | 
			
		||||
            </ActionButton>
 | 
			
		||||
          </div>
 | 
			
		||||
          <Dialog
 | 
			
		||||
            open={isConfirmingDelete}
 | 
			
		||||
            onClose={() => setIsConfirmingDelete(false)}
 | 
			
		||||
            className="relative z-50"
 | 
			
		||||
          >
 | 
			
		||||
            <div className="fixed inset-0 bg-chalkboard-110/80 grid place-content-center">
 | 
			
		||||
              <Dialog.Panel className="rounded p-4 bg-chalkboard-10 dark:bg-chalkboard-100 border border-destroy-80 max-w-2xl">
 | 
			
		||||
                <Dialog.Title as="h2" className="text-2xl font-bold mb-4">
 | 
			
		||||
            <div className="fixed inset-0 grid bg-chalkboard-110/80 place-content-center">
 | 
			
		||||
              <Dialog.Panel className="max-w-2xl p-4 border rounded bg-chalkboard-10 dark:bg-chalkboard-100 border-destroy-80">
 | 
			
		||||
                <Dialog.Title as="h2" className="mb-4 text-2xl font-bold">
 | 
			
		||||
                  Delete File
 | 
			
		||||
                </Dialog.Title>
 | 
			
		||||
                <Dialog.Description>
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user