urfu-ui-kit-react 1.10.0 → 1.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,oBAAoB,CAAC;AA4D5B,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,UAAc,EACd,UAAc,EACd,eAAe,EACf,eAAe,EACf,WAAmB,EACnB,SAAc,EACd,KAAK,EACL,SAAS,GACV,EAAE,eAAe,2CAuGjB"}
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,oBAAoB,CAAC;AA4D5B,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,UAAc,EACd,eAAe,EACf,eAAe,EACf,WAAmB,EACnB,SAAc,EACd,KAAK,EACL,SAAS,GACV,EAAE,eAAe,2CAoHjB"}
@@ -11,8 +11,8 @@ export type PaginationProps = {
11
11
  onPageChange: (page: number) => void;
12
12
  onPageSizeChange: (size: number) => void;
13
13
  /**
14
- * Ради совместимости с текущими экранами.
15
- * Если `dataLength === 0`, пагинация скрывается.
14
+ * Кол-во строк на текущей странице — гард: при `0` пагинация скрывается.
15
+ * Необязателен: если не передан, выводится из `totalItems`/`currentPage`/`pageSize`.
16
16
  */
17
17
  dataLength?: number;
18
18
  /** Окно видимых страниц (по умолчанию как в meetings). */
@@ -3,7 +3,7 @@ import "urfu-ui-kit-vanilla/src/main.css";
3
3
  import { TableProperties } from "./Table.types";
4
4
  import "./Table.less";
5
5
  export declare const Table: {
6
- ({ data, columns, borders, striped, linesNotActive, fixedHeader, headerBorders, tdStyle, thStyle, cellStyle, tdContentStyle, thContentStyle, cellContentStyle, contentForEmptyTable, messageForEmptyTable, className, allTdStyleFunction, allTdContentStyleFunction, id, draggable, resize, onDrop, maxHeight, minHeight, whereFindChecked, filterEmptyLabel, virtualizationOn, parentDataField, rowHeight, visibleRows, setFilteredTableData, withoutHeader, filterResetParam, pagination, isLoading, isLoadingPreloader, initialSkeletonRows, initialSkeletonRowHeight, preloaderHeight, }: TableProperties): import("react/jsx-runtime").JSX.Element;
6
+ ({ data, columns, borders, striped, linesNotActive, fixedHeader, headerBorders, tdStyle, thStyle, cellStyle, tdContentStyle, thContentStyle, cellContentStyle, contentForEmptyTable, messageForEmptyTable, className, allTdStyleFunction, allTdContentStyleFunction, id, draggable, resize, onDrop, maxHeight, minHeight, whereFindChecked, filterEmptyLabel, virtualizationOn, parentDataField, rowHeight, visibleRows, setFilteredTableData, withoutHeader, filterResetParam, pagination, isLoading, isLoadingPreloader, initialSkeletonRows, initialSkeletonRowHeight, preloaderHeight, sort: controlledSort, sortDir: controlledSortDir, onSortChange, managedSort, page, pageSize, mobileView, mobileCardCollapsible, mobileBreakpoint, renderMobileCard, renderMobileToolbar, mobileSortBar, mobileSortLabel, }: TableProperties): import("react/jsx-runtime").JSX.Element;
7
7
  propTypes: {
8
8
  data: PropTypes.Requireable<any[]>;
9
9
  columns: PropTypes.Requireable<any[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/components/Table/Table.tsx"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAmB,MAAM,eAAe,CAAC;AAEjE,OAAO,cAAc,CAAC;AAYtB,eAAO,MAAM,KAAK;kkBAwCf,eAAe;;;;;;;;;;;;;;;;CAizBjB,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/components/Table/Table.tsx"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAmB,MAAM,eAAe,CAAC;AAEjE,OAAO,cAAc,CAAC;AAsHtB,eAAO,MAAM,KAAK;2xBAqDf,eAAe;;;;;;;;;;;;;;;;CA+jCjB,CAAC"}
@@ -30,6 +30,32 @@ export type TableColumnsProperties = Partial<{
30
30
  roundUpTo: number;
31
31
  resizeOff: boolean;
32
32
  bitDepth: boolean;
33
+ /**
34
+ * Ключ сортировки для UNCONTROLLED-режима, если значение колонки —
35
+ * не примитив (напр. "Подразделение, должность" или числовой рейтинг).
36
+ * Если не задан — берётся row[field].
37
+ */
38
+ sortValue: (row: any) => string | number;
39
+ /** Полный кастомный компаратор колонки (важнее sortValue). */
40
+ sortComparator: (a: any, b: any) => number;
41
+ /** Эта колонка — «шапка» карточки в мобильном виде (заголовок сверху). */
42
+ mobilePrimary: boolean;
43
+ /** Не показывать колонку в карточке мобильного вида. */
44
+ mobileHidden: boolean;
45
+ /** Переопределить подпись поля в карточке (по умолчанию — title). */
46
+ mobileLabel: string;
47
+ /**
48
+ * Значение поля в карточке сворачивается (по умолчанию свёрнуто, обрезано
49
+ * в одну строку + шеврон). Тап по подписи/значению раскрывает на полный
50
+ * текст и сворачивает обратно.
51
+ */
52
+ mobileCollapsible: boolean;
53
+ /**
54
+ * Колонка «неважная» — в режиме списка (`mobileCardCollapsible`) её значение
55
+ * прячется в свёрнутые детали и показывается по тапу. Важные (не secondary,
56
+ * не primary) колонки остаются видимыми в строке.
57
+ */
58
+ mobileSecondary: boolean;
33
59
  }>;
34
60
  export type TableProperties = Partial<{
35
61
  data: any;
@@ -77,6 +103,46 @@ export type TableProperties = Partial<{
77
103
  * Если не передан — сохраняется прежнее поведение.
78
104
  */
79
105
  pagination?: PaginationProps;
106
+ /**
107
+ * Режим определяется наличием `onSortChange`:
108
+ * передан → CONTROLLED (кит только рисует иконки и эмитит событие,
109
+ * данные НЕ пересортировывает); не передан, но есть `sortOn`-колонки →
110
+ * UNCONTROLLED (кит держит своё состояние и сортирует data сам).
111
+ */
112
+ sort: string;
113
+ sortDir: "asc" | "desc";
114
+ onSortChange: (field?: string, dir?: "asc" | "desc") => void;
115
+ /**
116
+ * Таблица сама хранит состояние сортировки и сортирует `data` (self-managed).
117
+ * `onSortChange` при этом становится уведомлением (например, для сброса страницы).
118
+ * По умолчанию false — поведение прежнее (controlled, если передан onSortChange).
119
+ */
120
+ managedSort: boolean;
121
+ /** Текущая страница (1-based). Если заданы page и pageSize — таблица показывает только срез. */
122
+ page: number;
123
+ /** Размер страницы. Без page/pageSize таблица рендерит все строки (как раньше). */
124
+ pageSize: number;
125
+ /** 'off' (по умолчанию) — полная обратная совместимость. */
126
+ mobileView: "cards" | "off";
127
+ /**
128
+ * Режим списка: карточка сворачивается в одну строку — заголовок (mobilePrimary)
129
+ * + важные колонки, а «неважные» (`mobileSecondary`) прячутся в детали под тап.
130
+ * По умолчанию false (карточка показывает все поля).
131
+ */
132
+ mobileCardCollapsible: boolean;
133
+ /** Порог переключения по ШИРИНЕ КОНТЕЙНЕРА (ResizeObserver), px. По умолчанию 576. */
134
+ mobileBreakpoint: number;
135
+ /** Полностью своя вёрстка карточки. Если задан — важнее авто/хинтов. */
136
+ renderMobileCard: (row: any, index: number) => any;
137
+ /** Свой контрол сортировки/фильтра на мобайле вместо встроенного sort-bar. */
138
+ renderMobileToolbar: () => any;
139
+ /**
140
+ * Показывать встроенный sort-bar (Select по sortOn-колонкам + ↑/↓).
141
+ * По умолчанию true, если mobileView='cards' и есть sortOn-колонки.
142
+ */
143
+ mobileSortBar: boolean;
144
+ /** Подпись sort-bar. По умолчанию "Сортировка". */
145
+ mobileSortLabel: string;
80
146
  }>;
81
147
  export type SkeletonTdStyle = {
82
148
  padding?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Table.types.d.ts","sourceRoot":"","sources":["../../../src/components/Table/Table.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.types.d.ts","sourceRoot":"","sources":["../../../src/components/Table/Table.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export interface UsePaginationOptions {
2
+ /** Всего элементов (для расчёта числа страниц и клампа). */
3
+ totalItems: number;
4
+ /** Начальная страница (1-based). По умолчанию 1. */
5
+ defaultPage?: number;
6
+ /** Начальный размер страницы. По умолчанию 10. */
7
+ defaultPageSize?: number;
8
+ }
9
+ export interface UsePaginationResult {
10
+ page: number;
11
+ pageSize: number;
12
+ totalPages: number;
13
+ /** Установить страницу. */
14
+ setPage: (page: number) => void;
15
+ /** Сменить размер страницы (сбрасывает на 1-ю). */
16
+ setPageSize: (size: number) => void;
17
+ /** Сбросить на 1-ю страницу (например, при смене сортировки/фильтра). */
18
+ resetPage: () => void;
19
+ /** Вернуть срез массива для текущей страницы. */
20
+ slice: <U>(items: U[]) => U[];
21
+ /** Готовый набор пропсов для компонента Pagination. */
22
+ paginationProps: {
23
+ totalItems: number;
24
+ currentPage: number;
25
+ pageSize: number;
26
+ onPageChange: (page: number) => void;
27
+ onPageSizeChange: (size: number) => void;
28
+ };
29
+ }
30
+ /**
31
+ * Состояние пагинации (страница + размер) с типовой обвязкой: сброс на 1-ю при
32
+ * смене размера/сортировки, расчёт числа страниц, срез данных и готовые пропсы
33
+ * для компонента `Pagination`. Виджет `Pagination` остаётся отдельным.
34
+ */
35
+ export declare function usePagination({ totalItems, defaultPage, defaultPageSize, }: UsePaginationOptions): UsePaginationResult;
36
+ //# sourceMappingURL=usePagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePagination.d.ts","sourceRoot":"","sources":["../../src/hooks/usePagination.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,mDAAmD;IACnD,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,yEAAyE;IACzE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,iDAAiD;IACjD,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAC9B,uDAAuD;IACvD,eAAe,EAAE;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KAC1C,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,WAAe,EACf,eAAoB,GACrB,EAAE,oBAAoB,GAAG,mBAAmB,CAqC5C"}
@@ -0,0 +1,30 @@
1
+ import { type SortDir } from "../shared/sortRows";
2
+ export interface UseTableSortOptions<T> {
3
+ /** Начальная колонка сортировки. */
4
+ defaultField?: string;
5
+ /** Начальное направление. */
6
+ defaultDir?: SortDir;
7
+ /** Как достать значение строки для сравнения (для непримитивов). */
8
+ getValue?: (row: T, field: string) => unknown;
9
+ /** Локаль сравнения строк. По умолчанию "ru". */
10
+ locale?: string;
11
+ /** Уведомление о смене сортировки (например, сброс пагинации на 1-ю страницу). */
12
+ onChange?: (field?: string, dir?: SortDir) => void;
13
+ }
14
+ export interface UseTableSortResult<T> {
15
+ field?: string;
16
+ dir?: SortDir;
17
+ /** Установить сортировку напрямую. */
18
+ setSort: (field?: string, dir?: SortDir) => void;
19
+ /** Клик по колонке: цикл нет → asc → desc → нет. */
20
+ toggle: (field: string) => void;
21
+ /** Вернуть отсортированную копию массива по текущему состоянию. */
22
+ sortData: (rows: T[]) => T[];
23
+ }
24
+ /**
25
+ * Переиспользуемая сортировка для таблиц и списков: хранит состояние
26
+ * (поле + направление), даёт цикл переключения и функцию сортировки данных.
27
+ * Логика сравнения общая с компонентом Table (см. shared/sortRows).
28
+ */
29
+ export declare function useTableSort<T = unknown>(options?: UseTableSortOptions<T>): UseTableSortResult<T>;
30
+ //# sourceMappingURL=useTableSort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableSort.d.ts","sourceRoot":"","sources":["../../src/hooks/useTableSort.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEtE,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,sCAAsC;IACtC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,oDAAoD;IACpD,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,mEAAmE;IACnE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,OAAO,EACtC,OAAO,GAAE,mBAAmB,CAAC,CAAC,CAAM,GACnC,kBAAkB,CAAC,CAAC,CAAC,CAmBvB"}
package/dist/index.d.ts CHANGED
@@ -31,6 +31,12 @@ import { Tabs } from "./components/Tabs/Tabs";
31
31
  import { Textarea } from "./components/Textarea/Textarea";
32
32
  import { Tooltip } from "./components/Tooltip/Tooltip";
33
33
  import { TreeView } from "./components/TreeView/TreeView";
34
- export { Accordion, BreadCrumbs, Button, Calendar, Card, Checkbox, Icon, InputExpandTextarea, InputFile, InputNumber, InputText, InputTime, Menu, Message, Modal, Multiselect, NotificationProvider, Preloader, Radio, Search, SearchSelect, Select, Status, Switch, StickyActionBar, Table, Pagination, Tabs, Textarea, Tooltip, TreeView, useNotification };
34
+ import { useTableSort } from "./hooks/useTableSort";
35
+ import { usePagination } from "./hooks/usePagination";
36
+ import { sortRows, compareValues, nextSort } from "./shared/sortRows";
37
+ export { Accordion, BreadCrumbs, Button, Calendar, Card, Checkbox, Icon, InputExpandTextarea, InputFile, InputNumber, InputText, InputTime, Menu, Message, Modal, Multiselect, NotificationProvider, Preloader, Radio, Search, SearchSelect, Select, Status, Switch, StickyActionBar, Table, Pagination, Tabs, Textarea, Tooltip, TreeView, useNotification, useTableSort, usePagination, sortRows, compareValues, nextSort };
35
38
  export type { SwitchProps } from './components/Switch/Switch.types';
39
+ export type { SortDir, SortState, SortRowsOptions } from './shared/sortRows';
40
+ export type { UseTableSortOptions, UseTableSortResult } from './hooks/useTableSort';
41
+ export type { UsePaginationOptions, UsePaginationResult } from './hooks/usePagination';
36
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,CAAC;AACzC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D,OAAO,EACL,SAAS,EACT,WAAW,EACX,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,IAAI,EACJ,OAAO,EACP,KAAK,EACL,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,KAAK,EACL,MAAM,EACN,YAAY,EACZ,MAAM,EACN,MAAM,EACN,MAAM,EACN,eAAe,EACf,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,eAAe,EAChB,CAAA;AAED,YAAY,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Переиспользуемая логика сортировки таблиц/списков.
3
+ * Используется компонентом Table и хуком useTableSort, доступна и снаружи
4
+ * для нестандартных кейсов (сортировка списка без таблицы).
5
+ */
6
+ export type SortDir = "asc" | "desc";
7
+ export interface SortState {
8
+ field?: string;
9
+ dir?: SortDir;
10
+ }
11
+ export interface SortRowsOptions<T> {
12
+ /** Как достать значение строки для сравнения. По умолчанию row[field]. */
13
+ getValue?: (row: T, field: string) => unknown;
14
+ /** Локаль сравнения строк. По умолчанию "ru". */
15
+ locale?: string;
16
+ }
17
+ /**
18
+ * Сравнение двух значений: числа — численно, строки — localeCompare,
19
+ * boolean — false<true, пустые (null/undefined/"") уходят в конец.
20
+ */
21
+ export declare function compareValues(a: unknown, b: unknown, dir?: SortDir, locale?: string): number;
22
+ /** Возвращает НОВЫЙ отсортированный массив (исходный не мутируется). */
23
+ export declare function sortRows<T>(rows: T[], field: string | undefined, dir: SortDir | undefined, options?: SortRowsOptions<T>): T[];
24
+ /**
25
+ * Следующее состояние сортировки по клику на колонку.
26
+ * Цикл: нет → asc → desc → нет.
27
+ */
28
+ export declare function nextSort(current: SortState, field: string): SortState;
29
+ //# sourceMappingURL=sortRows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortRows.d.ts","sourceRoot":"","sources":["../../src/shared/sortRows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAWD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,GAAG,GAAE,OAAe,EACpB,MAAM,SAAO,GACZ,MAAM,CAsBR;AAED,wEAAwE;AACxE,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,CAAC,EAAE,EACT,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,GAAG,EAAE,OAAO,GAAG,SAAS,EACxB,OAAO,GAAE,eAAe,CAAC,CAAC,CAAM,GAC/B,CAAC,EAAE,CAOL;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAKrE"}