Пользовательские реакции в Discourse

Здравствуйте,

Я внес некоторые изменения в CSS для плагина Discourse Reactions. Теперь он выглядит очень похоже на кнопки реакций в Facebook.

Вот код для 6 кнопок реакций, включая стандартную, которая на моём сайте — :heart:.

ОБЩИЕ НАСТРОЙКИ / SCSS
Разместите этот код в разделе общих стилей CSS.
Важное замечание: Вы можете изменить эмодзи над подписями, отредактировав строки content: 'Love it!', content: 'Beautiful' и т. д. Конечно, вы можете использовать любые реакции, какие захотите. Это просто подписи над реакциями.

.discourse-reactions-picker {
  .discourse-reactions-picker-container {
    width: 330px;
    height: 50px;
    max-width: calc(100vw - 2em);
    border: 1px solid var(--primary-low) !important;
    border-radius: 50px;
    .pickable-reaction {
      max-width: 100% !important;
      margin: 0 !important;
      padding: 0 !important;
    }
  }
  .pickable-reaction {
    background: transparent !important;
    .emoji {
      height: 40px;
      width: 40px;
      padding: 0 !important;
      transform: scale(0.9);
    }
    &.is-used {
      transform: scale(1.3);
      transform-origin: bottom;
      border: none !important;
    }
    &:hover {
      transform-origin: bottom;
    }
    &:hover:after {
      position: absolute;
      font-size: 10px;
      top: -15px;
      background: var(--secondary-low);
      color: var(--secondary);
      padding: 2px 5px;
      border-radius: 20px;
    }
    &:first-child {
      &:hover:after {
        content: 'Love it!';
      }
    }
    &:nth-child(2) {
      &:hover:after {
        content: 'Beautiful';
      }
    }
    &:nth-child(3) {
      &:hover:after {
        content: 'Hug';
      }
    }
    &:nth-child(4) {
      &:hover:after {
        content: 'Congrats!!';
      }
    }
    &:nth-child(5) {
      &:hover:after {
        content: 'Hmm...';
      }
    }
    &:nth-child(6) {
      &:hover:after {
        content: 'Wooow!';
      }
    }
  }
}

react-buttons


Мобильные устройства

На мобильных устройствах я установил фиксированное позиционирование для панели выбора реакций.

Это один из возможных вариантов, чтобы избежать такого странного поведения. :arrow_down:
raction-no-fixed

Выглядит это так :arrow_down:
reactions-fixed

Аналогичная ситуация происходит с панелью состояния на мобильных устройствах, которая также находилась в панели выбора реакций, поэтому здесь тоже используется фиксированное позиционирование.

МОБИЛЬНЫЕ УСТРОЙСТВА / SCSS

.discourse-reactions-picker {
  position: fixed;
  .pickable-reaction {
    &:hover:after {
      font-size: 12px;
      top: -8px;
    }
    &.is-used {
      &:hover:after {
        transform: scale(0.8);
        top: -15px;
      }
    }
  }
}

.discourse-reactions-state-panel {
  position: fixed;
}

Скрыть стандартный раздел «Кто поставил лайк»

ОБЩИЕ НАСТРОЙКИ / CSS

Я скрыл стандартный раздел «Кто поставил лайк», так как панель состояния реакций также отображает эту информацию.

.who-liked {
  display: none;
}
25 лайков

Очень нравится :love_you_gesture:

5 лайков

Круто, всё работает отлично. Спасибо, что поделились :clinking_beer_mugs::smiling_face_with_sunglasses::+1::sparkles:

4 лайка

Я установил и мне очень нравится.

Вопрос:

Можно ли убрать эту чёрную подсветку при наведении?

2 лайка

Привет, Паулина,

Я очень рад, что тебе это нравится :heart: Спасибо!

Чтобы скрыть панель списка пользователей с тёмным наведением, используй этот код :slightly_smiling_face:

.discourse-reactions-list .reactions .user-list {
  display: none;
}
4 лайка

У меня всё получилось! Мне нравится, как это выглядит, большое спасибо. :heart:

2 лайка

Привет, Дон,

Мне очень нравится твоя кастомизация. Отличная работа, спасибо! :heart:
Но у меня остался вопрос: как убрать эту чёрную подсветку при наведении?

Selection_060

3 лайка

Привет, Нео,

Спасибо :heart:

К сожалению, скрыть атрибут title с помощью CSS невозможно, но вы можете отредактировать текст js.discourse_reactions.picker.react_with на странице /admin/customize/site_texts, чтобы сделать его короче.

3 лайка

Спасибо, я закончил, теперь это выглядит лучше! :wave:

3 лайка

Это великолепно, @Don. Большое спасибо.

Я рассматриваю возможность использования этого в моей установке Discourse, но у нас сейчас две строки вариантов реакций (по шесть эмодзи в строке, всего 12 эмодзи).

Я знаю достаточно CSS, чтобы разобраться, но это действительно не моя сильная сторона.

Насколько сложно будет адаптировать этот код, чтобы он работал с такой структурой?

Очень ценю, что вы поделились этим (даже если я присоединился к вечеринке довольно поздно!).

3 лайка

Спасибо, JR :slightly_smiling_face: Я думаю, что создам из этого компонент темы, чтобы упростить его использование и адаптировать под реакции, внести некоторые исправления и т.д. Надеюсь, это поможет. Постараюсь сделать это на следующей неделе.

6 лайков

Спасибо большое, @Don! Это было бы невероятно и очень ценным дополнением. Я обязательно буду следить за этим.

3 лайка

Счастливый GIF, очень взволнованный

2 лайка

Привет,

Я создал компонент темы на основе этого. Мне кажется, так стало проще. :slightly_smiling_face:

Благодаря ранее созданному компоненту темы от @manuel Category List with Banners я легко смог добавить настройку списка к метке реакций. Спасибо :heart:

Я добавил исправления и некоторые настройки:

  1. reactions_label
    Разделяйте точкой с запятой ;
    название реакции;метка реакции
    May-29-2022 17-02-05

  2. reactions picker rounding
    Скругление углов пикера реакций (border-radius). Можно использовать px, em и т. д.
    По умолчанию: 1em.


    Если хотите сделать скругление больше или меньше, измените эту настройку.
    В предыдущей версии значение было 2em.

  3. state panel rounding
    Скругление углов панели состояния реакций (border-radius). Можно использовать px, em и т. д.

  4. user list rounding
    Скругление углов списка пользователей реакций (border-radius). Можно использовать px, em и т. д.

  5. hide user list heading
    Эта опция скрывает заголовок списка пользователей на панели. На изображении заголовок — это смайлик.

  6. hide user list
    Эта опция скрывает панель списка пользователей. Это затемнённая панель при наведении.

  7. hide who liked
    Эта опция скрывает стандартный раздел «Кто поставил лайк».

У меня есть ещё несколько планов по этому компоненту, которые я добавлю позже. :slightly_smiling_face:

17 лайков