@n3/filters-utils

Utils for working with filter values

Usage no npm install needed!

<script type="module">
  import n3FiltersUtils from 'https://cdn.skypack.dev/@n3/filters-utils';
</script>

README

@n3/filters-utils

Набор утилиты для работы со значениями фильтров.

Для работы используется массив с данными фильтров и объект с описаниями фильтров. С помощью них можно получить имена фильтров для отправки, сериализованные значения фильтров для отправки, проверку возможности сброса фильтров, а также парсинг значений для инициализации.

Установка

npm install @n3/filters-utils

или

yarn add @n3/filters-utils

Использование

Описание каждого фильтра представляется следующим объектом:

type FilterType<Payload> = {
  getNames?: (payload: Payload, getFilter: GetFilter<Payload>) => string[];
  serializeValues?: (values: Values, payload: Payload, getFilter: GetFilter<Payload>) => Values;
  serializeValuesForQueryString?: (values: Values, payload: Payload, getFilter: GetFilter<Payload>) => Values;
  checkCanReset?: (values: Values, payload: Payload, getFilter: GetFilter<Payload>) => boolean;
  parseValues?: (values: Values, payload: Payload, getFilter: GetFilter<Payload>) => Values | Promise<Values>;
  getResetTo?: (payload: Payload, getFilter: GetFilter<Payload>) => Values;
};
  • getNames: Function - необязательная, функция получения имён полей фильтра. Должна возвращать массив имён полей фильтра. По умолчанию, возвращает массив из одного элемента payload.name. Аргументы:

    • payload: Object - данные фильтра
    • getFilter: Function - получение описания фильтра по объекту данных (может быть использовано для описания вложенных структур)
  • serializeValues: Function - необязательная, функция получения значений для отправки. Должна возвращать объект значений. Аргументы:

    • appliedFilters - Object - текущие значения примененных фильтров
    • payload: Object - данные фильтра
    • getFilter: Function - получение описания фильтра по объекту данных (может быть использовано для описания вложенных структур)
  • serializeValuesForQueryString: Function - необязательная, функция получения значений для адресной строки. Должна возвращать объект значений. Аргументы:

    • appliedFilters - Object - текущие значения примененных фильтров
    • payload: Object - данные фильтра
    • getFilter: Function - получение описания фильтра по объекту данных (может быть использовано для описания вложенных структур)
  • checkCanReset: Function - необязательная, определяет, возможен ли сброс данного фильтра. Должна возвращать булево значение. По умолчанию, берёт значение из appliedFilters по ключу payload.name и проверяет его на не ложность. Аргументы:

    • appliedFilters - Object - текущие значения примененных фильтров
    • payload: Object - данные фильтра
    • getFilter: Function - получение описания фильтра по объекту данных (может быть использовано для описания вложенных структур)
  • parseValues: Function - необязательная, асинхронная функция получения значений для инициализации. Должна возвращать объект значений. Аргументы:

    • values - Object - необработанные значения фильтров, например, после парсинга значений браузерной строки
    • payload: Object - данные фильтра
    • getFilter: Function - получение описания фильтра по объекту данных (может быть использовано для описания вложенных структур)
  • getResetTo: Function - необязательная, функция получения значений фильтров после сброса. Должна возвращать объект значений. Аргументы:

    • payload: Object - данные фильтра
    • getFilter: Function - получение описания фильтра по объекту данных (может быть использовано для описания вложенных структур)

Утилиты

getFilterNames

import { getFilterNames } from '@n3/filters-utils';

Собирает имена фильтров. Аргументы:

  • filterData: Object[] - массив данных фильтров
  • getFilter: Function - получение описания фильтра по объекту данных

serializeValues

import { serializeValues } from '@n3/filters-utils';

Собирает значения фильтров для отправки. Аргументы:

  • appliedFilters - Object - текущие значения примененных фильтров
  • filterData: Object[] - массив данных фильтров
  • getFilter: Function - получение описания фильтра по объекту данных

serializeValuesForQueryString

import { serializeValues } from '@n3/filters-utils';

Собирает значения фильтров для сериализации в адресную строку. Аргументы:

  • appliedFilters - Object - текущие значения примененных фильтров
  • filterData: Object[] - массив данных фильтров
  • getFilter: Function - получение описания фильтра по объекту данных

checkCanResetFilters

import { checkCanResetFilters } from '@n3/filters-utils';

Определяет, возможен ли сброс фильтров. Аргументы:

  • appliedFilters - Object - текущие значения примененных фильтров
  • filterData: Object[] - массив данных фильтров
  • getFilter: Function - получение описания фильтра по объекту данных

parseValues

import { parseValues } from '@n3/filters-utils';

Асинхронная функция. Собирает значения фильтров для инициализации. Аргументы:

  • values - Object - необработанные значения фильтров, например, после парсинга значений браузерной строки
  • filterData: Object[] - массив данных фильтров
  • getFilter: Function - получение описания фильтра по объекту данных

getResetFiltersTo

import { getResetFiltersTo } from '@n3/filters-utils';

Собирает значения фильтров для сброса. АргументыЖ

  • filterData: Object[] - массив данных фильтров
  • getFilter: Function - получение описания фильтра по объекту данных