Для определения iPhone год назад использовал bowser. https://www.npmjs.com/package/bowser
Читать полностью…Не забывайте, что сейчас бывают ноутбуки и Windows/Linux планшеты с touchscreen. Может лучше проверять userAgent? https://developer.mozilla.org/en-US/docs/Web/API/Navigator/userAgent
Читать полностью…Класс! Спасибо, а то я уже думал пакет какой-нибудь ставить для определения мобилка/десктоп.
Пока правда не понимаю как мне определить на этапе рендера touch device или нет. Потому как мне нужно же передать или не передавать multiple в компонент заранее.
Спасибо Никита. После 5 часов гугления и попыток решить проблему, она решилась блин простым убиранием multiple... Это конечно мега жестко.
Причем также заработал корректно выбор и из галереи и с Гугл диска... 🌚
Теперь думаю как определять мобилки и оставлять мультивыбор на PC/Mac и выключать на мобилках
Ну это еще не самая страшная проблема. Некоторые мобильные ОС открывают сразу галерею для выбора файла, а не просто файловый менеджер. И аппка не видит файлов выбраных в галерее. Видит только их менеджера. Это прям очень плохой пользовательский опыт. Хотелось бы найти решение
Читать полностью…Спасибо. Я читал эту доку. Может что пропустил, но не могу там найти решение своей проблемы
Читать полностью…Ребят вопрос может не совсем про Svelte, но я уже всю голову сломал, гуглю третий час и не нахожу решения. У меня в приложении есть обычный <input type="file" ... > и он работает как нужно в браузере. Я могу выбрать один или несколько файлов, получить объект FileList и спокойно обработать/загрузить файлы. Но когда тестирую приложение на Android устройстве (iOS не пробовал) появляется нативный диалог выбора файла. И он работает только если я выбираю 1 файл и только из браузера файлов. Если я выбираю 2 или более файла или выбираю файл используя Галерею или Google Drive я не получаю списка файлов вообще.
Подскажите пожалуйста решение если сталкивались
Было бы здорово сделать так
<SuperForm
{всякие пропсы}><div class="hidden md:block">
<Carousel>
{snippet}
</Carousel>
</div><div class="md:hidden block">
<div class="flex w-full space-x-6">
<
{snippet}
</div>
</div>/SuperForm
>
Но тогда в самом сниппете будет ошибка, потому что form будет undefined, ведь мы задаем его внутри Superform
Если я засуну элементы в суперформу, а суперформу в сниппет, то не будет работать карусель, потому что для нее один элемент это одна страница.
Два дива - две страницы, а суперформа это элемент <form> внутри которого уже и находятся нужные мне <div> с инпутами
У меня есть компонент суперформы(изображение 1). Когда я создаю экземпляр компонента, внутри него находится либо
1. Компонент Карусель (пакет svelte-карусель), внутри которого два дива с элементами формы(изображение2)
2. Элемент див, внутри которого два дива с элементами формы(изображение3)
Застрял совсем. Не знаю как исправить бездумное копирование элементов формы. Подскажите пожалуйста, кто понимает
Пакеты/либы в основном на этом и основаны. Парсят UserAgent. Так что да, наверное так надежнее
Читать полностью…Так событие то триггерится когда юзер кликает/тапает. А мне нужно уже при загрузке страницы знать передавать multiple или нет
Читать полностью…Недавно делал эту задачу с кастомным выпадающим списком. Советую использовать определение при нажатии на компонент, а нажатие определять с помощью on:pointerdown={onPointer
}
UPD: то есть смысл в том, чтобы делать это только по клику, а не всегда. Удобно.
Чтобы лучше работало, для инпута советую сделать контейнер
https://caniuse.com/input-file-multiple выбор нескольких файлов в мобильных браузерах не прям хорошо поддерживается
Читать полностью…хм, вообще если честно, сколько сайтов перелазил, но нигде не видел, чтобы был выбор нескольких файлов с мобилки, всегда прикреплялся только один даже если была возможность выбрать несколько. Возможно это не решаемо для мобилок
Читать полностью…https://developer.mozilla.org/ru/docs/Web/API/File_API/Using_files_from_web_applications
тут вроде все есть
я вижу повторяющийся код (содержимое карусели) - решение вынести в снипет. Или я не так понимают твою проблему?
Читать полностью…Потому что контролы должны быть внутри компонента Superform, они оттуда берут let:form
Читать полностью…в 5ом свелте это решилось бы через снипеты, а так либо вынести в компонент либо оставить как есть
Читать полностью…думаю между этими "гайдами" и SSR есть связь, так как чтобы рендерить не для анонимов нужно реализовать аутентификацию по куке.
Читать полностью…