Область редактирования новой темы мала для мобильных пользователей

Здравствуйте. Подскажите, пожалуйста, возможно ли по умолчанию выделять неопределённую область красной рамкой на мобильных устройствах? Какой файл или часть кода мне нужно изменить? Спасибо.

Основная проблема заключается в уровне масштабирования или размере текста на вашем телефоне и/или в браузере.

Вот как выглядит мой экран, когда я отвечаю вам на Pixel 6a (небольшой телефон!)

Вы можете скрыть панель инструментов с помощью кнопки-гамбургера.

Но… есть ещё кое-что :wink:

  • быстрое редактирование не работает в изображениях :man_facepalming: поэтому: of = if

Хотя скриншот в OP, кажется, относится к редактированию темы, поля заголовка темы, категории и тегов также занимают дополнительное пространство по сравнению с ответом.

Да, для ответов нормально, но для новой темы это мало

Также есть существующая тема ux с более подробным обсуждением, если вы хотите добавить свои мысли туда:

Вы можете скрыть панель форматирования (область в вашей красной рамке), нажав на иконку «бургер» (три горизонтальные линии) в правом верхнем углу.

Да, вы правы. Но не каждый новый пользователь об этом знает. Это может стать проблемой с точки зрения UX.

Вы можете попробовать этот небольшой скрипт. Добавьте его в тему или в новый компонент HTML на вкладке Head.

Он скрывает панель инструментов при соблюдении следующих условий:

  • Только для новых тем / редактирования первого сообщения темы / черновика темы
  • Мобильный вид
  • Если у пользователя нет сохраненных предпочтений. [1]

Код не влияет на предпочтения пользователя.

<script type="text/discourse-plugin" version="0.8">

const { on, observes } = require("discourse-common/utils/decorators");

const serviceComposer = api.container.lookup("service:composer");

function canUpdateToolbar(context) {
  return (
    // Новая тема / Редактирование первого сообщения / Черновик темы
    context._isNewTopic &&
    // Панель инструментов не скрыта
    context.showToolbar &&
    // Только мобильный вид
    context.site.mobileView &&
    // Не переопределять предпочтения пользователя
    context.keyValueStore.get("toolbar-enabled") === undefined
  );
}

function updateShowToolBar(value) {
  serviceComposer._wasToolbarEnabled = !value;
  // Скрывает панель инструментов, не сохраняя состояние в браузере пользователя.
  serviceComposer._toolbarEnabled = value;
  // Обновляет вычисляемый геттер
  serviceComposer.notifyPropertyChange("showToolbar");
}

api.modifyClass("component:composer-editor", {
  pluginId: "composer-editor-toolbar",

  @observes("composer.action")
  _composerSwitchAction() {
    // Обрабатывает ситуацию при переключении с ответа на новую тему
    // без закрытия композера.
    if (canUpdateToolbar(this)) {
      updateShowToolBar(false);
    }
  },

  @on("didInsertElement")
  _composerEditorInit() {
    this.appEvents.one(`${this.composerEventPrefix}:will-open`, () => {
      if (canUpdateToolbar(this)) {
        updateShowToolBar(false);
      }
    });

    this._super(...arguments);
  },

  @on("willDestroyElement")
  _composerClosed() {
    this._super(...arguments);

    // Восстанавливает панель инструментов, если она была скрыта вручную.
    if (serviceComposer._wasToolbarEnabled) {
      updateShowToolBar(true);
    }
  },
});
</script>

  1. Как только пользователь нажмет на переключатель, браузер запомнит состояние ↩︎

Привет, Arkshine, спасибо за твой ответ.
Я добавил это в раздел head своей темы, но это не работает.
Неправильно ли я это сделал?

Где это нужно? Нажатие на «гамбургер» делает это нативно — по крайней мере, на iPhone.

Так что если отображается недостаточно веб-сайтов, потому что вы установили слишком большой размер текста и интерфейса, то это проблема Chrome/Safari, и виноваты Google/Apple?! :rofl:

Просто измените настройки интерфейса на своём телефоне — и всё готово!

Я думаю, мы обсуждаем много повторяющейся информации из Such a tiny window to edit here on a cell phone

Давайте закроем эту тему и сосредоточимся на обсуждении там.