-
Notifications
You must be signed in to change notification settings - Fork 86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
attach: _multiple #1724
Comments
Чуть подробнее раскрою, что подразумевается по рефакторингом:
Я за то, чтобы пойти на некоторое нарушение семвера здесь и сделать рефакторинг. При этом выпустить минорным релизом. При обновлении, для получения старого поведения пользователям потребуется руками добавить в аттач новый модификатор, но у меня есть сильное подозрение, что текущих пользователей это не должно затронуть (понятно, что предположение сделано практически наугад). |
@tadatuta, вам бы только семвер поломать :) Откажитесь уже от |
@blond давай не будем тут обсуждать отказ от |
я за промежуточный вариант, когда мы можем сохранить апи проблему со склонением числа файлов решать не обязательно — мы можем просто выводить списком файлы |
Для списка файлов нужно непредсказуемо много места: непонятно, как выводить — в строку или столбец, столбец над кнопкой или под? Из всех браузеров только ИЕ выводит список, но в инпуте ограниченной ширины. И такой подход кажется неудобным, из-за того, что очень сложно понять, что же выбрано (даже пересчитать файлы в таком инпуте — проблема). Если выводить файлы списком, то может захотеться добавить пофайловое удаление или показ превью, что уже выходит за рамки простейшего аттача и во многом зависит от специфики сервиса. |
Склонение числа файлов можно оставить на совести пользователя, если дать возможность в bemJson передавать специальную строку с плейсхолдером, на место которого будет подставляться количество файлов, а возможные склонения указывать, например, через запятую. |
API для второго варианта мог бы выглядеть так: {
block: 'attach',
mods: {
multiple: true,
…
},
/* Формат строки `legend`: 0 файлов, 1 файл, 2 файла, 5 файлов */
legend: 'Файлы не выбран, $1 файл, $1 файла, $1 файлов',
/* Алиас к `legend`, оставляем для обратной совместимости */
noFileText: 'Файл не выбран',
…
} Соответственно, если строка Так мы сохраняем совместимость, рефакторим аттач, избавляемся от бага с пустым спаном (для тех, у кого был указан |
А точно нужно писать прям количество выбранных файлов? |
Это способ показать, что инпут непустой (за пример взят стандартный контрол в Хроме, Сафари, ФФ). Для одиночного файла мы пишем название файла. На мой взгляд, делать длинный список имён всех выбранных файлов бессмысленно, так как пользоваться таким списком невозможно (см. как это делает IE) и для пользовтаеля оптимальнее станет отключить этот список и реализовать его самостоятельно. Т.е. мы потратим усилия на реализацию бесполезной фичи. |
Я бы сделал API ещё проще и позволил добавить любой блок в который можно передать список файлов, а там пусть пользователь сам решает что он хочет показать, может количество файлов, а может предпросмотр картинок. И в качестве примера реализовать блок который показывает имя файла или количество если их больше одного. |
Хардкодить плейсхолдер плохо, непонятно как быть с разными языками. |
@alexeyten в простейшем случае предлагает совсем отказаться от индикации того, что выбрано в аттаче. Для этого можно сделать новый блок, например, attach-simple, а на нынешний аттач отрефакторить так, что он внутри будет использовать attach-simple и уметь показывать выбранный файл (как сейчас). При таком варианте мы точно не сломаем API нынешнего attach. |
file-name.png |
Вот как раз из-за того, что всем от этого превью нужно разное, его нет большого смысла реализовывать тут. |
Можно сделать так, что |
Нам точно нужна эта возможность, про легенду для множественных файлов? На данный момент нужен блок
Может стоит на данном этапе исходить из тех требований, которые есть? Или хочется заранее предусмотреть как этот блок должен работать с легендой? |
Только для сохранения API. Но можно сделать новый блок ( |
3-й вариант: делаем новый блок — attach-button, который представляет собой кнопку и не пытается показывать ничего про файлы. На вход можно передать параметры аналогичные параметрам кнопки и multiple. Мне больше всего нравится этот вариант. |
У нас, кстати, есть |
Я против. Давайте тогда так же с Кстати Абстракции над тем как предлагает голый html — это же хорошо. Не вижу ничего плохого в том что их больше чем есть по дефолту. |
а |
Обсудили с @dfilatov лично: можно подумать над тем, чтобы переделать внутренности |
А зачем attach'у владеть таким приемником? Ну и мы получим ограничение на использование технологий для приемника — только bem. |
В целом, идея похожа на описание в комменте #1724 (comment) но, должна позволить не тащить в библиотеку (очень) неоднозначные вещи вроде
Кажется нет, никаких ограничений на то, как будет внутри работать приемник нет — главное чтобы он предоставлял для |
может всё-таки сделаем самый простой случай с множественным выбором и отображением числа файлов (можно добавить попап со списком файлов)? а разные сложности можно будет делать доопределяя блок на своём уровне |
@veged +1 |
@i2r Есть прогресс по задаче? |
Прогресса нет. Задача не актуальна. |
Есть потребность в аттаче, для которого будет работать множественное добавление файлов.
Есть два подхода к решению этой задачи.
Добавить модификатор
_multiple
, при выставлении которого вtrue
инпуту внутри кнопки будет добавлен атрибутmultiple
, а элемент с названием файла не будет отображаться совсем.При таком подходе мы сохраним обратную совместимость (+), но потеряем в гибкости настройки блока (-). С точки зрения кода, выглядеть это будет больше как костыль.
Отрефакторить блок так, чтобы можно было настраивать два момента: а) множественное выделение, б) показ/скрытие имени файла (или количества выбранных файлов для множественного выбора). Так блок получится более гибким (+), но мы потеряем обратную совместимость (-/+) (хотя, есть вариант модификатора «не показывать название файла», тогда по умолчанию будет сохранено старое поведение). Код станет логичнее: есть контрол и два модификатора.
Ещё для второго варианта непонятно, как писать «2 файла», но «5 файлов», «21 файл» (ну и поддержка других языков).
Давайте обсудим, кто что думает по этому поводу.
The text was updated successfully, but these errors were encountered: