Боковая панель вместо модального окна: у каждой панели свой адрес

общие расходы

В большинстве приложений для расходов есть маленький, но постоянный налог, и со временем вы перестаёте замечать, что его платите.

Вы идёте по списку из сорока расходов после поездки и сверяете каждый с банковской выпиской. Нажимаете на один. Приложение уводит вас на другой экран. Вы проверяете сумму, жмёте «Назад» — и снова оказываетесь в начале списка, на сорок строк выше, чем были, и уже не помните, какую строку только что проверили. Умножьте это на сорок.

Решение — не более быстрая страница. Решение — вообще никуда не уходить.

Что на самом деле должен уметь просмотр деталей

Когда вы открываете счёт из списка, должны выполняться сразу четыре условия, а большинство реализаций справляются с двумя:

  1. Вы не теряете место. Список остаётся где был и прокручен так же, а открытая строка выделена, чтобы было видно, где вы.

  2. «Назад» делает очевидное. Закрывает то, что вы открыли, а не уводит с экрана.

  3. У того, что вы смотрите, есть адрес. Обновили страницу — оно на месте. Отправили адрес кому-то — он видит то же, что и вы.

  4. По цепочке можно пройти. В счёте есть человек, у человека есть другие счета. Пройти по этой цепочке можно, не вылетая из списка, который вы читали.

Модальное окно даёт первые два, и то плохо, а третье — никогда. Отдельная страница даёт третье и жертвует первым. Нужно и то и другое, и чтобы получить оба, надо перестать считать «что сейчас открыто» тем, что приложение помнит про себя и никому не показывает.

Положите это в адресную строку

В HiBill всё, что открыто в боковой панели, записывается в URL страницы: транзакция — как ?peek=, человек — как ?person=. Ничего хитрого здесь нет. Просто открытая панель — часть того, где вы находитесь, а где вы находитесь, должна показывать адресная строка.

Всё приятное следует из одного этого решения само собой:

  • Обновление страницы её сохраняет. Не реконструкция и не догадка, а тот же счёт в том же списке на том же месте прокрутки.

  • Ссылка — это ссылка. Скопируйте адрес, отправьте тому, с кем делили перелёт, — и у него откроется ровно тот счёт, на который смотрели вы. Правила доступа при этом не меняются: тот, кого нет в транзакции, по-прежнему ничего не увидит, — так что, чтобы отправить счёт человеку без аккаунта, есть другой способ — поделиться транзакцией по публичной ссылке.

  • «Назад» значит назад. А не «уйти со страницы». Браузер и так хранит историю всего, что вы открывали, поэтому кнопка «Назад» идёт по ней обратно, по одному счёту, и уводит со страницы, только когда история закончится.

Из-за последнего пункта у панели есть и своя кнопка Назад — в самом начале шапки панели. Она не делает ничего сверх того, что делает «Назад» в браузере. Она нужна потому, что на ноутбуке рука лежит на тачпаде, панель — справа, и заставлять человека тянуться к кнопкам браузера, чтобы отменить то, что он сделал в приложении, — маленькая невежливость.

Транзакция, открытая в боковой панели рядом со списком «Активность»

Как пройти по цепочке, не уходя из списка

Четвёртое требование — самое интересное.

Откройте ужин из ленты активности. В разделении четыре имени. Нажмите на одно — и панель не закроется и не отправит вас куда-то ещё, а покажет этого человека: его баланс и ваши общие транзакции. Нажмите на одну из них — и в панели откроется этот счёт.

Страница Max Keller в боковой панели рядом со списком «Люди»

Можно пройти по цепочке на три-четыре шага — счёт, кто-то из его участников, другой счёт этого человека, — а список, с которого вы начали, ни разу не сдвинется. Потом «Назад», «Назад», «Назад» — и вы ровно там, где были, уже с ответом на вопрос, ради которого всё затевали. Вот и вся функция. Остальное — отделка.

Впрочем, отделка того стоит. Когда открыта транзакция, в шапке панели есть стрелки к предыдущей и следующей: они идут по списку, из которого вы её открыли, в том порядке, в каком он показан. Клавиши ↑ и ↓ делают то же самое. Просмотр расходов за месяц сводится к тому, чтобы держать клавишу и читать, — таким просмотр и должен быть. А на компьютере левый край панели — это ручка, за которую её можно растянуть: 520 пикселей — в самый раз для ужина в две строки и мало для чека на тридцать позиций. Вашу ширину приложение запомнит до следующего раза.

Почему не модальное окно

С модальным окном работы было бы меньше. Мы от него отказались по двум причинам.

Модальное окно убивает список. Он затемнён, не прокручивается и не нажимается. Но список — это контекст: часто хочется сравнить открытый счёт с тремя соседними или прокрутить дальше и открыть что-то ещё. Здесь затемнения нет. Список под панелью остаётся живым, и нажатие на него не захлопывает панель.

Модальное окно перехватывает клавиатуру. Escape в модальном окне может значить только что-то одно, и обычно это «выбросить всё». В панели Escape, пока вы пишете комментарий, выводит вас из поля, а панель закрывается только вторым нажатием. Escape в фильтре на странице за панелью панель вообще не трогает. Мелкие правила, но именно они отличают клавиатуру, которая помогает, от клавиатуры, с которой страшно работать.

Модальное окно уместно в одном месте — на телефоне, где двум вещам рядом не поместиться. Поэтому на телефоне панель занимает весь экран, но адрес всё так же хранит то, что открыто, — значит, ссылка, отправленная с телефона, откроет то же самое у кого-то на ноутбуке.

Посмотрите сами

Это уже работает у всех: на главной, в ленте активности, в разделе «Люди» и в истории на двоих на странице человека. Нажмите на что угодно.

Как всё устроено, подробно описано в статье о транзакциях и людях в боковой панели, а если вы здесь впервые, обзор пошире — в статье о том, как работает HiBill.

Читайте также