From 35470ffb97c4604c7c1046c0a0852d80e2abca9c Mon Sep 17 00:00:00 2001 From: philli-m <5871230+philli-m@users.noreply.github.com> Date: Mon, 31 Jul 2023 17:49:31 +0200 Subject: [PATCH 1/3] userdashboard/ModerationNotification//AIFeedback: add AI feedback component and add to the ModerationNotification small a11y improvments --- .../assets/scss/components/_alerts.scss | 2 +- .../assets/scss/components/_button.scss | 19 +++++++-- .../assets/scss/components/_header_upper.scss | 4 +- .../AiReportExplanation.jsx | 41 +++++++++++++++++++ .../ModerationFeedback.jsx | 4 +- .../ModerationNotification.jsx | 24 +++++++---- .../ModerationNotificationActionsBar.jsx | 4 +- changelog/7540.md | 7 ++++ docs/ai_report.md | 4 ++ 9 files changed, 90 insertions(+), 19 deletions(-) create mode 100644 apps/userdashboard/assets/js/a4_candy_userdashboard/AiReportExplanation.jsx create mode 100644 changelog/7540.md create mode 100644 docs/ai_report.md diff --git a/adhocracy-plus/assets/scss/components/_alerts.scss b/adhocracy-plus/assets/scss/components/_alerts.scss index 88eb507d1..657057071 100644 --- a/adhocracy-plus/assets/scss/components/_alerts.scss +++ b/adhocracy-plus/assets/scss/components/_alerts.scss @@ -27,7 +27,7 @@ $messages-margin-bottom: 25px; .alert--error, .alert--danger { - background-color: lighten($brand-danger, 50); + background-color: lighten($brand-danger, 57); color: $text-color; } diff --git a/adhocracy-plus/assets/scss/components/_button.scss b/adhocracy-plus/assets/scss/components/_button.scss index 9e5226068..5cccc88d6 100644 --- a/adhocracy-plus/assets/scss/components/_button.scss +++ b/adhocracy-plus/assets/scss/components/_button.scss @@ -92,10 +92,15 @@ &:focus, &:hover, - &:active { + &:active, + &:focus-within { background-color: transparent !important; text-decoration: underline; } + + &:focus-visible { + @include fake-focus-shadow; + } } .btn.btn--transparent--inverted { @@ -115,11 +120,19 @@ &:focus, &:hover, - &:active, + &:active { + box-shadow: none; + background-color: $bg-light; + } + + &:focus-visible { + @include fake-focus-shadow; + } + &:disabled, &.is-disabled { box-shadow: none; - background-color: $bg-light; + color: $text-muted; } // needed for toggle switch diff --git a/adhocracy-plus/assets/scss/components/_header_upper.scss b/adhocracy-plus/assets/scss/components/_header_upper.scss index 8c297f809..0b93d5278 100644 --- a/adhocracy-plus/assets/scss/components/_header_upper.scss +++ b/adhocracy-plus/assets/scss/components/_header_upper.scss @@ -33,8 +33,8 @@ } } -.header-upper__user a { - color: $body-bg !important; +.header-upper__user .navi__item a { + color: $body-bg; } .header-upper__mobile-toggle { diff --git a/apps/userdashboard/assets/js/a4_candy_userdashboard/AiReportExplanation.jsx b/apps/userdashboard/assets/js/a4_candy_userdashboard/AiReportExplanation.jsx new file mode 100644 index 000000000..1dc203fe4 --- /dev/null +++ b/apps/userdashboard/assets/js/a4_candy_userdashboard/AiReportExplanation.jsx @@ -0,0 +1,41 @@ +import React, { useState } from 'react' +import django from 'django' + +const translated = { + intro: django.gettext('This comment contains disinformation. Defakts uses an Artificial ' + + 'Intelligence to scan content for disinformation. Disinformation often shows ' + + 'certain characteristics that allow for a reliable identification.'), + ariaReadMore: django.gettext('Click to view the AI explanation for reporting this comment.'), + ariaReadLess: django.gettext('Click to hide the AI explanation for reporting this comment.'), + readMore: django.gettext('Read more'), + readLess: django.gettext('Read less') +} + +export const AiReportExplanation = ({ AiReport }) => { + const [isExpanded, setIsExpanded] = useState() + + const toggleExpand = () => { + setIsExpanded(!isExpanded) + } + + return ( +
  • + +

    + {translated.intro + ' '} + {isExpanded && AiReport + ' '} + +

    +
  • + ) +} diff --git a/apps/userdashboard/assets/js/a4_candy_userdashboard/ModerationFeedback.jsx b/apps/userdashboard/assets/js/a4_candy_userdashboard/ModerationFeedback.jsx index 40ac8775a..12fb14d4b 100644 --- a/apps/userdashboard/assets/js/a4_candy_userdashboard/ModerationFeedback.jsx +++ b/apps/userdashboard/assets/js/a4_candy_userdashboard/ModerationFeedback.jsx @@ -12,7 +12,7 @@ export const ModerationFeedback = (props) => { } return ( -
    +
  • {translated.feedbackTitle}
    @@ -68,6 +68,6 @@ export const ModerationFeedback = (props) => {

    {feedbackText}

    -
  • + ) } diff --git a/apps/userdashboard/assets/js/a4_candy_userdashboard/ModerationNotification.jsx b/apps/userdashboard/assets/js/a4_candy_userdashboard/ModerationNotification.jsx index 0c2b9c5a7..c6fab147e 100644 --- a/apps/userdashboard/assets/js/a4_candy_userdashboard/ModerationNotification.jsx +++ b/apps/userdashboard/assets/js/a4_candy_userdashboard/ModerationNotification.jsx @@ -1,6 +1,7 @@ import React, { useState } from 'react' import django from 'django' import api from './api' +import { AiReportExplanation } from './AiReportExplanation' import { ModerationFeedbackForm } from './ModerationFeedbackForm' import { ModerationFeedback } from './ModerationFeedback' import { ModerationNotificationActionsBar } from './ModerationNotificationActionsBar' @@ -21,7 +22,9 @@ const translated = { notificationRead: django.gettext('Notification successfully marked as read.'), notificationUnread: django.gettext('Notification successfully marked as unread.'), aiClassified: django.gettext('AI'), - postedComment: django.gettext('posted a {}comment{}') + postedComment: django.gettext('posted a {}comment{}'), + dummyText: django.gettext('Dummy text') + } export const ModerationNotification = (props) => { @@ -257,8 +260,8 @@ export const ModerationNotification = (props) => { return (
  • -
    -
    +
      +
    • {userImageDiv}

      @@ -291,17 +294,20 @@ export const ModerationNotification = (props) => {

    - +
  • {numReports > 0 && -
    +