use-l5
v0.0.2
Published
Nuxt-модуль с типизированным useL5-композаблом для парсинга фильтров, синхронизации с query в роуте и сборки параметров для API/URL
Readme
use-l5
Nuxt-модуль с типизированным useL5-композаблом для парсинга фильтров, синхронизации с query в роуте и сборки параметров для API/URL.
Возможности
- типизированная схема фильтров на основе конструкторов
String/Number/Boolean - двусторонняя синхронизация с
route.query(опционально) - генерация параметров для API и URL
- базовые параметры пагинации и сортировки
Установка
npx nuxi module add use-l5или
pnpm add use-l5Настройка модуля
nuxt.config.ts:
export default defineNuxtConfig({
modules: ['use-l5'],
useL5: {
syncWithRoute: true,
urlUpdateStrategy: 'replace',
boolToNumber: true
}
})Базовое использование
import { useL5 } from '#imports'
const schema = {
q: String,
category: [String],
inStock: Boolean,
price: Number
}
const { filters, queryForApi, updateFilters, updateDefaults } = useL5(schema, {
defaults: {
category: [],
inStock: false
},
syncWithRoute: true,
urlUpdateStrategy: 'push'
})
updateFilters({ q: 'mac', category: ['laptops'] })Параметры useL5
interface Options<S> {
defaults?: Partial<InferFromL5Schema<S>>
syncWithRoute?: boolean
excludeFromSearch?: (keyof S)[]
apiIncludes?: string[]
excludeFromQueryBuilder?: (keyof S)[]
boolToNumber?: boolean
queryAliases?: Partial<Record<keyof S, string>>
transformInput?: (query: Partial<S>) => Partial<S>
transformOutput?: (filters: Filters<S>) => Record<keyof S & keyof BaseParams, unknown>
urlUpdateStrategy?: 'replace' | 'push'
}Базовые параметры (BaseParams)
Всегда доступны и участвуют в сборке запросов:
page(по умолчанию 1)limit(по умолчанию 10)sortedBy(по умолчаниюid)orderBy(по умолчаниюdesc)searchJoin(по умолчаниюand)searchFields(по умолчаниюnull)search(по умолчаниюnull)
Утилиты
Модуль автоматически добавляет импорты:
import { buildQueryForApi, parseFiltersFromQuery } from '#imports'buildQueryForApi(filters, options)— сборка параметров для APIparseFiltersFromQuery(schema, query, { defaults })— парсинг query в фильтры
Возврат useL5
interface UseL5Return<S> {
filters: Ref<Filters<S>>
queryForApi: ShallowRef<Record<string, unknown>>
updateFilters: (newFilters: Partial<Filters<S>>, options?: { urlUpdateStrategy?: 'replace' | 'push' }) => void
updateDefaults: (newDefaults: Partial<InferFromL5Schema<S>>) => void
defaultsRef: Ref<Partial<InferFromL5Schema<S>>>
}Лицензия
MIT
