• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

EcrituresNumeriques / stylo / 12925854411

23 Jan 2025 09:11AM UTC coverage: 25.831% (-4.7%) from 30.523%
12925854411

push

github

web-flow
Merge pull request #1192 from EcrituresNumeriques/feat/vite6

322 of 518 branches covered (62.16%)

Branch coverage included in aggregate %.

3448 of 14077 relevant lines covered (24.49%)

1.66 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/front/src/components/Chapter.jsx
1
import React, { useState } from 'react'
×
2
import { Link } from 'react-router-dom'
×
3
import { Check, Edit3 } from 'react-feather'
×
4

5
import { useGraphQL } from '../helpers/graphQL'
×
6
import { renameArticle as query } from './Article.graphql'
×
7
import Button from './Button'
×
8
import buttonStyles from './button.module.scss'
×
9
import styles from './chapter.module.scss'
×
10
import fieldStyles from './field.module.scss'
×
11
import Field from './Field'
×
12
import { useCurrentUser } from '../contexts/CurrentUser'
×
13
import clsx from 'clsx'
×
14

15
export default function Chapter({ article }) {
×
16
  const articleId = article._id
×
17
  const latestVersion = article.versions && article.versions[0]
×
18
  const latestArticleVersion = latestVersion && {
×
19
    message: latestVersion.message,
×
20
    major: latestVersion.version,
×
21
    minor: latestVersion.revision,
×
22
  }
×
23

24
  const [renaming, setRenaming] = useState(false)
×
25
  const [title, setTitle] = useState(article.title)
×
26
  const [tempTitle, setTempTitle] = useState(article.title)
×
27
  const activeUser = useCurrentUser()
×
28
  const runQuery = useGraphQL()
×
29

30
  const rename = async (e) => {
×
31
    e.preventDefault()
×
32
    const variables = {
×
33
      user: activeUser._id,
×
34
      article: articleId,
×
35
      title: tempTitle,
×
36
    }
×
37
    await runQuery({ query, variables })
×
38
    setTitle(tempTitle)
×
39
    setRenaming(false)
×
40
  }
×
41
  const latestArticleVersionLabel = latestArticleVersion
×
42
    ? latestArticleVersion.message || 'No label'
×
43
    : ''
×
44
  const latestVersionVersionNumber = latestArticleVersion
×
45
    ? `v${latestArticleVersion.major}.${latestArticleVersion.minor}`
×
46
    : 'latest'
×
47
  const currentArticleVersionTitle = ` (${[
×
48
    latestArticleVersionLabel,
×
49
    latestVersionVersionNumber,
×
50
  ]
×
51
    .filter((item) => item)
×
52
    .join(' ')})`
×
53
  return (
×
54
    <>
×
55
      {!renaming && (
×
56
        <p>
×
57
          <Link to={`/article/${articleId}`}>
×
58
            {title}
×
59
            {currentArticleVersionTitle}
×
60
          </Link>
×
61
          <Button
×
62
            className={[buttonStyles.icon, styles.renameButton].join(' ')}
×
63
            onClick={() => setRenaming(true)}
×
64
          >
65
            <Edit3 />
×
66
          </Button>
×
67
        </p>
×
68
      )}
69
      {renaming && renaming && (
×
70
        <form
×
71
          className={clsx(styles.renamingForm, fieldStyles.inlineFields)}
×
72
          onSubmit={(e) => rename(e)}
×
73
        >
74
          <Field
×
75
            autoFocus={true}
×
76
            type="text"
×
77
            value={tempTitle}
×
78
            onChange={(e) => setTempTitle(e.target.value)}
×
79
            placeholder="Book Title"
×
80
          />
×
81
          <Button title="Save" primary={true} onClick={(e) => rename(e)}>
×
82
            <Check /> Save
×
83
          </Button>
×
84
          <Button
×
85
            title="Cancel"
×
86
            type="button"
×
87
            onClick={() => {
×
88
              setRenaming(false)
×
89
              setTempTitle(article.title)
×
90
            }}
×
91
          >
×
92
            Cancel
93
          </Button>
×
94
        </form>
×
95
      )}
96
    </>
×
97
  )
98
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc