FilePond
Подсказали красивый
15K+ звезд, много плагинов,, правда, довольно увесистый - 100Кб+
На
Вот, кстати, один из вариантов использовать динамические импорты/роуты - в мобильной версии
#lib
Подсказали красивый
file uploader
компонент15K+ звезд, много плагинов,, правда, довольно увесистый - 100Кб+
На
JS
. Подключается монтированием к элементу.<script setup lang="ts">
import * as FilePond from "filepond";
import FilePondPluginFileValidateType from "filepond-plugin-file-validate-type";
import { onMounted, ref, useTemplateRef } from "vue";
import "filepond/dist/filepond.min.css";
const fileInput = useTemplateRef("fileInput");
FilePond.registerPlugin(FilePondPluginFileValidateType);
onMounted(() => {
FilePond.setOptions({
acceptedFileTypes: ["image/*", "application/pdf"],
server: "api/upload/",
});
FilePond.create(fileInput.value);
});
</script>
<template>
<div class="analysis-view">
<h2>Analysis upload</h2>
<p></p>
<input
ref="fileInput"
type="file"
class="filepond"
name="filepond"
multiple
data-allow-reorder="true"
data-max-file-size="3MB"
data-max-files="3"
/>
</div>
</template>
Вот, кстати, один из вариантов использовать динамические импорты/роуты - в мобильной версии
drag-n-drop
не нужен, поэтому можно обойтись более простым file input
и сэкономить на бандле.#lib
pqina.nl
Easy File Uploading With JavaScript | FilePond
A JavaScript library that can upload anything you throw at it, optimizes images for faster uploads, and offers a great, accessible, silky smooth user experience.
Для реализации своих
Их
В данном случае содержимое тултипа является ребенком элемента, на котором его надо показать. Возможны другие варианты реализации, включая кастомную директиву.
Обертывать в
#lib #tooltip #dropdown
tooltip
-ов и "выпадашек", наверное, самым оптимальный вариантом является использование современной и минималистичной библиотеки Floating UIИх
Vue
адаптер мне не подошел. Вот простой вариант своего тултипа на их чистом js
пакете.В данном случае содержимое тултипа является ребенком элемента, на котором его надо показать. Возможны другие варианты реализации, включая кастомную директиву.
Обертывать в
Tooltip
компонент то, на чем его надо показать, имхо, извращение.<script setup lang="ts">
import { computePosition, flip, offset, shift } from "@floating-ui/dom";
import { onMounted, ref, useTemplateRef } from "vue";
const popover = useTemplateRef("popover");
onMounted(() => {
popover.value.showPopover();
computePosition(popover.value.parentElement, popover.value, {
placement: "left",
middleware: [flip(), shift({ padding: 5 }), offset(10)],
}).then(({ x, y }) => {
Object.assign(popover.value.style, {
left: `${x}px`,
top: `${y}px`,
});
});
});
</script>
<template>
<div
ref="popover"
class="popover"
popover
role="tooltip"
>
<div class="tooltip-body">Hello</div>
</div>
</template>
<style scoped>
.popover {
position: fixed;
width: max-content;
top: 0;
left: 0;
margin: 0;
padding: 1em;
text-align: left;
border: 1px solid var(--bbl-c-border);
border-radius: 5px;
max-width: 400px;
box-shadow:
0 14px 44px rgba(0, 0, 0, 0.12),
0 3px 9px rgba(0, 0, 0, 0.12);
border-color: #bbb;
}
</style>
#lib #tooltip #dropdown
Floating-Ui
Floating UI - Create tooltips, popovers, dropdowns, and more
A JavaScript library to position floating elements and create interactions for them.
Иногда при создании своих
Например, минималистичный BeerCSS
#css #lib #ui
UI
компонент не обязательно использовать громоздкие Vue
библиотеки, достаточно стилизации CSS
фреймворка. Например, минималистичный BeerCSS
CSS
фреймворки подходят как минимум для прототипирования и вдохновения. Также их можно использовать с unstyled
компонентами, типа Radix Vue
#css #lib #ui
Beercss
Beer CSS - Build material design interfaces in record time, without stress for devs 🍺💛.
The first CSS framework based on Material Design 3. Latest M3 Expressive already. 10x smaller than others CSS frameworks based on Material Design. Translates Material Design to HTML semantic standard. Ready to use with any JS framework. Highly focused on…
Мы уже писали об Ark UI библиотеке
На днях видный член
Выглядит очень хорошей альтернативой
Попробовал на своем проекте. Сперва заменил FilePond на
Ну и правильный
#ui #lib #headless #arkui
На днях видный член
vuejs core team
и VitePress
maintainer Divyansh Singh
назвал их лучшей альтернативой React Aria во Vue
экосистемеUnstyled
, хорошая поддержка A11y
. Vue
версия еще неполная. Документация скудная, не для вкатунов. Нужно думать. Основана библиотека на zag.js, документацию можно смотреть там.Выглядит очень хорошей альтернативой
radix/reka/shadcn|vue
, только без встроенных tailwind
-ов, vueuse
-ов, unjs
-ов, tanstack
-ов и других скрытых зависимостей и обмана типа "copy-paste и всё".Попробовал на своем проекте. Сперва заменил FilePond на
FileUpload
- (-100Kb; +30Kb). Стало значительно красивей и намного кастомизируемей (стили генерил AI
). Затем добавил Tabs
(+20Кб). Затем - Combobox
с тэгами и выпадающим меню, которое во многих UI
библиотеках тащит 200-400Кб из-за позиционирования - (+70Кб). В общем, вполне экономично и удобно для создания своего небольшого UI kit
с требованиями к A11y
.Ну и правильный
DatePicker
можно собрать.#ui #lib #headless #arkui
Уже писали год назад об этом каталоге
https://ui-libs.vercel.app/
С тех пор там немного прибавилось библиотек и функционала
#ui #lib
UI
библиотекhttps://ui-libs.vercel.app/
С тех пор там немного прибавилось библиотек и функционала
#ui #lib
UI Lib Picker
🎨 Pick the Right UI Library for your Vue 3 or Nuxt 3 Project
Еще одна
proxima-vue
В альфа версии, но кода много
#ui #lib
UI
библиотека на Vue 3
от нашего соотечественника для ознакомленияproxima-vue
В альфа версии, но кода много
#ui #lib
proxima.wiki
UI Component Library for Vue 3 and Nuxt
Написал vite-plugin-json-md
Заменяет в
Удобен при
Обрабатывает как инлайн вставки
#lib #i18n #markdown
Заменяет в
JSON
/JSON5
файлах markdown
на сконвертированный HTML
Удобен при
i18n
(интернационализации), когда текст перевода лежит в json
файлах, но иногда бывает на странице сложное форматирование и разбивать по ключам очень хаотично. Можно записать тогда через markdown
.Обрабатывает как инлайн вставки
markdown
, так и ссылки на внешние md
файлы#lib #i18n #markdown
npm
npm: vite-plugin-json-md
Vite plugin for processing markdown in JSON files. Latest version: 0.7.2, last published: 3 months ago. Start using vite-plugin-json-md in your project by running `npm i vite-plugin-json-md`. There is 1 other project in the npm registry using vite-plugin…
Переделал прошлый плагин, сделал его удобней и опиньонейтед - полностью под конкретный случай
vite-plugin-i18n-json-md - берет
В конфиге указывается входная директория, выходная и локали.
Переводы удобно держать в небольших файлах и переводить через
#vite #i18n #lib
i18n
vite-plugin-i18n-json-md - берет
JSON*
файлы из директории локали, конвертирует markdown
, если он там есть, объединяет всё в один и выводит в стандартный для i18n
json
, либо же в json5
или js
формате. По желанию - минификация.В конфиге указывается входная директория, выходная и локали.
import { i18nJsonMdPlugin } from "vite-plugin-i18n-json-md";
export default defineConfig({
plugins: [
vue(),
i18nJsonMdPlugin({
sourceDir: "src/app/locales",
outputDir: "src/assets/i18n",
locales: ["en", "ru", "gr"],
mode: "dev",
outputFormat: "json",
}),
],
Переводы удобно держать в небольших файлах и переводить через
AI
- как целиком, так и автокомплитом. Добавил ключ с переводом в один файл, переходишь в аналогичный файл в другой локали - а он уже предлагает в нужном месте с нужным переводом вставить строку. Молодец.#vite #i18n #lib
В мой vite-plugin-html-injection сделали первый
Приятно, чёрт возьми.
Теперь во фрагментах можно использовать
#vite #plugin #lib
PR
Приятно, чёрт возьми.
Теперь во фрагментах можно использовать
Vite env
переменные, типа %VITE_API_URL%, которые будут заменены на их значения.#vite #plugin #lib
GitHub
vite-plugin-html-injection/README.ru.md at 281d582012f6c086893c72dcd144e7d74e7155da · altrusl/vite-plugin-html-injection
Vite plugin for injecting html, js, css code snippets into index.html - altrusl/vite-plugin-html-injection
Выпустил
Для чего он нужен?
1. Просите
2. Просите
3. Результат в текстовом виде в
Список поддерживаемых типов диаграмм (несколько десятков) здесь
#ai #lib #vitepress
v1.0.0
плагина vitepress-plugin-diagramsДля чего он нужен?
1. Просите
AI
добавить в проект VitePress
документацию2. Просите
AI
изучить кодовую базу какого-нибудь модуля (TimelineChart
в данном случае) и сгенерировать несколько диаграмм, описывающих его структуру и потоки данных3. Результат в текстовом виде в
markdown
файлах и сразу на экране. Никаких расширений IDE
ставить не нужно.Список поддерживаемых типов диаграмм (несколько десятков) здесь
#ai #lib #vitepress
Media is too big
VIEW IN TELEGRAM
Подписчик поделился самописным расширением для VS Code — помогает быстро и безболезненно менеджерить локализацию в vue-i18n. Добавлять ключи, переводить на все языки (через AI), быстро обновлять существующие фразы... Короче, просто зацените демку.
Сейчас на стадии сбора фидбека и различных юз-кейсов. Кому интересно потыкать раннюю версию (бесплатно ofc), тут можно заполнить небольшую форму: https://tally.so/r/mDMv5b
Просит потестировать и покритиковать в комментариях
Лично я использую всегда самописную реализацию
#vscode #extension #i18n #lib
Сейчас на стадии сбора фидбека и различных юз-кейсов. Кому интересно потыкать раннюю версию (бесплатно ofc), тут можно заполнить небольшую форму: https://tally.so/r/mDMv5b
Просит потестировать и покритиковать в комментариях
Лично я использую всегда самописную реализацию
i18n
, но расширение выглядит очень круто и использует AI
именно так, как его надо использовать - незаметно, под капотом, значительно расширяя функционал приложения и сильно улучшая UX/DX
. Мне такого не хватает, потому что приходится вручную ходить по json
файлам и добавлять новый ключ, пусть даже и автокомплит это быстро делает за тебя.#vscode #extension #i18n #lib
Хорошая библиотека
Долго мучился с расположением при динамично меняющемся таргет элементе - все как-то через одно место криво работало. Решил поставить
Немного радует, что довольно часто обновляется и фиксят баги.
P.S. Ререндеринг через `:key` - плохая практика. Последний вариант.
#lib #arkui
Ark-ui
, но с особенностями. Особенно у "выпадашки" HoverCard
(для меню которая)Долго мучился с расположением при динамично меняющемся таргет элементе - все как-то через одно место криво работало. Решил поставить
:key
на HoverCard
и инкрементить его при апдейтах - и всё сразу заработало как надо. Ну, ё-моё...Немного радует, что довольно часто обновляется и фиксят баги.
P.S. Ререндеринг через `:key` - плохая практика. Последний вариант.
#lib #arkui