Таблица данных и постраничный список для Angular | ng-hub-ui-paginable

Таблица данных и постраничный список для Angular с серверной пагинацией, сортировкой, фильтрацией, выбором, шаблонами и CSS-переменными.

Справочник API

Вот полный контракт paginable: всё, что можно привязать, прослушать, спроецировать и тематизировать, собрано в одном месте. Подключите то, что нужно, и оформите так, как хотите — это standalone и дружит с сигналами.

Входные свойства

Настройте paginable с помощью 10 входных свойств. Привязывайте их, как любой @Input в Angular.

ИмяТипПо умолчаниюОписание
dataОбязательноT[] | Observable<T[]>Массив элементов данных для отображения в таблице или Observable, который испускает массивы данных
headersОбязательноPaginableTableHeader[]Массив конфигурации, определяющий столбцы таблицы и их свойства
paginationPaginableTablePaginationКонфигурация пагинации, включая размер страницы, текущую страницу и общее количество элементов
optionsPaginableTableOptionsОбщие параметры таблицы, включая режим выбора, состояние загрузки и адаптивное поведение
loadingbooleanПоказывает состояние загрузки с наложением spinner
errorunknown | nullDOCS.PAGINABLE.API.INPUT.ERROR.DESCRIPTION
loadingComponentPaginableStateDefault | nullDOCS.PAGINABLE.API.INPUT.LOADING_COMPONENT.DESCRIPTION
errorComponentPaginableStateDefault | nullDOCS.PAGINABLE.API.INPUT.ERROR_COMPONENT.DESCRIPTION
noResultsComponentPaginableStateDefault | nullDOCS.PAGINABLE.API.INPUT.NO_RESULTS_COMPONENT.DESCRIPTION
selectedT[]Массив текущих выбранных элементов (поддерживается двусторонняя привязка)

События

Реагируйте на то, что делает paginable, — 5 событий, к которым можно подключить вашу логику.

ИмяТипОписание
rowClickTableRowEvent<T>Вызывается при клике по строке таблицы, включает данные строки и детали события
selectionChangeT[]Вызывается при изменении выбора строк, возвращает массив выбранных элементов
sortChangePaginableTableOrdination[]Вызывается при изменении сортировки столбцов, возвращает текущую конфигурацию сортировки
filterChangeFilterChangeEventВызывается при применении или изменении фильтров
pageChangePaginationStateВызывается при изменении пагинации (номер или размер страницы)

Шаблоны

Сделайте его своим — 7 слотов шаблона позволяют проецировать собственную разметку.

ИмяОписаниеПример
*paginableTableHeaderПользовательский шаблон заголовка для определения пользовательских заголовков столбцов<ng-template *paginableTableHeader="let column">{{ column.title }}</ng-template>
*paginableTableCellПользовательский шаблон ячейки для настройки отрисовки содержимого ячейки<ng-template *paginableTableCell="let value; let row">{{ value }}</ng-template>
*paginableTableRowПользовательский шаблон строки для определения структуры всей строки<ng-template *paginableTableRow="let row"><tr>...</tr></ng-template>
*paginableTableFilterПользовательский шаблон фильтра для добавления элементов UI фильтрации<ng-template *paginableTableFilter="let column"><input type="text"></ng-template>
*paginableTableLoadingШаблон состояния загрузки для пользовательских индикаторов загрузки<ng-template *paginableTableLoading><div class="spinner"></div></ng-template>
*paginableNoResultsШаблон пустого состояния, отображаемый, когда данные недоступны<ng-template *paginableNoResults><p>No data found</p></ng-template>
*paginableTableErrorШаблон состояния ошибки для обработки ошибочных ситуаций<ng-template *paginableTableError="let error"><p>Error: {{ error }}</p></ng-template>

CSS-переменные

Тематизируйте каждый пиксель с помощью 69 CSS-переменных. Переопределите их в :root или ограничьте их областью обёртки.

DOCS.PAGINABLE.API.CSS_GROUP.TABLE_COLORS.TITLE

DOCS.PAGINABLE.API.CSS_GROUP.TABLE_COLORS.DESCRIPTION

ПеременнаяПо умолчаниюТипОписание
--hub-table-container-bgvar(--hub-ref-color-white, #fff)color Background of the entire table container. #f8f9favar(--bs-body-bg)
--hub-table-container-colorvar(--hub-sys-text-primary, #212529)color Default text colour inside the container. #333inherit
--hub-table-bgvar(--hub-ref-color-white, #fff)color Table element background. transparent#fff
--hub-table-colorvar(--hub-sys-text-primary, #212529)color Table text colour. #495057
--hub-table-border-colorvar(--hub-sys-border-color-default, #dee2e6)color Border colour used for table, rows and cells. #ccctransparent
--hub-table-hover-bgcolor Row background on hover. rgba(0,0,0,.04)#f0f4f8
--hub-table-hover-colorcolor Row text colour on hover. inherit
--hub-table-striped-bgcolor Alternating stripe row background. rgba(0,0,0,.03)
--hub-table-striped-colorcolor Alternating stripe row text colour. inherit
--hub-table-active-bgvar(--hub-sys-state-active-bg, rgba(0,0,0,.1))color Selected/active row background. #e3f2fd
--hub-table-active-colorvar(--hub-sys-text-primary, #212529)color Selected/active row text colour. inherit

DOCS.PAGINABLE.API.CSS_GROUP.TABLE_LAYOUT.TITLE

DOCS.PAGINABLE.API.CSS_GROUP.TABLE_LAYOUT.DESCRIPTION

ПеременнаяПо умолчаниюТипОписание
--hub-table-border-radiusvar(--hub-ref-radius-md, 0.375rem)length Container corner radius. 00.5rem
--hub-table-border-widthvar(--hub-ref-border-width, 1px)length Border width. 02px
--hub-table-container-gapvar(--hub-ref-space-3, 1rem)length Gap between container regions (top bar, table, bottom bar). 0.5rem1.5rem
--hub-table-cell-padding-xvar(--hub-ref-space-3, 1rem)length Horizontal cell padding. 0.75rem1.5rem
--hub-table-cell-padding-yvar(--hub-ref-space-2, 0.5rem)length Vertical cell padding. 0.25rem0.75rem
--hub-table-cell-padding-x-smvar(--hub-ref-space-2, 0.5rem)length Horizontal cell padding in small/dense mode. 0.5rem
--hub-table-cell-padding-y-smvar(--hub-ref-space-1, 0.25rem)length Vertical cell padding in small/dense mode. 0.125rem
--hub-table-cell-vertical-alignmiddlestring Vertical alignment of cell content. topbottom

DOCS.PAGINABLE.API.CSS_GROUP.TABLE_BARS.TITLE

DOCS.PAGINABLE.API.CSS_GROUP.TABLE_BARS.DESCRIPTION

ПеременнаяПо умолчаниюТипОписание
--hub-table-top-bar-gapvar(--hub-ref-space-3, 1rem)length Gap between items in the top bar. 0.5rem
--hub-table-top-bar-justify-contentendstring Flex justify-content for the top bar. space-betweencenter
--hub-table-bottom-bar-gapvar(--hub-ref-space-3, 1rem)length Gap between items in the bottom bar. 0.5rem
--hub-table-bottom-bar-justify-contentspace-aroundstring Flex justify-content for the bottom bar. space-between
--hub-table-bottom-bar-paginator-order1number Flex order of the paginator in the bottom bar. 3
--hub-table-bottom-bar-settings-order2number Flex order of the settings control. 1
--hub-table-bottom-bar-info-order3number Flex order of the info text. 1

DOCS.PAGINABLE.API.CSS_GROUP.TABLE_SEARCH.TITLE

DOCS.PAGINABLE.API.CSS_GROUP.TABLE_SEARCH.DESCRIPTION

ПеременнаяПо умолчаниюТипОписание
--hub-table-search-border-radiuslength Search field border radius. 0.375rem9999px
--hub-table-search-input-bgcolor Search input background. #fff
--hub-table-search-input-colorcolor Search input text colour. #212529
--hub-table-search-button-bgcolor Search button background. var(--bs-primary)
--hub-table-search-button-colorcolor Search button icon/text colour. #fff

DOCS.PAGINABLE.API.CSS_GROUP.LIST_COLORS.TITLE

DOCS.PAGINABLE.API.CSS_GROUP.LIST_COLORS.DESCRIPTION

ПеременнаяПо умолчаниюТипОписание
--hub-list-bgcolor List host background. #ffftransparent
--hub-list-items-bgcolor Background of the items container. #f8f9fa
--hub-list-item-bgcolor Individual item background. #fff
--hub-list-item-colorcolor Individual item text colour. #212529
--hub-list-item-hover-bgcolor Item background on hover. rgba(0,0,0,.04)
--hub-list-item-selected-bgcolor Selected item background. #e3f2fd
--hub-list-item-selected-colorcolor Selected item text colour. inherit
--hub-list-item-border-colorcolor Item border colour. #dee2e6

DOCS.PAGINABLE.API.CSS_GROUP.LIST_LAYOUT.TITLE

DOCS.PAGINABLE.API.CSS_GROUP.LIST_LAYOUT.DESCRIPTION

ПеременнаяПо умолчаниюТипОписание
--hub-list-gaplength Gap between list items. 00.5rem
--hub-list-items-gaplength Gap inside the items wrapper. 0.25rem
--hub-list-padding-xlength Horizontal padding of the list host. 01rem
--hub-list-padding-ylength Vertical padding of the list host. 00.5rem
--hub-list-item-padding-xlength Horizontal padding of each item. 1rem1.25rem
--hub-list-item-padding-ylength Vertical padding of each item. 0.5rem0.75rem
--hub-list-border-radiuslength Container border radius. 0.375rem

DOCS.PAGINABLE.API.CSS_GROUP.LIST_CARDS.TITLE

DOCS.PAGINABLE.API.CSS_GROUP.LIST_CARDS.DESCRIPTION

ПеременнаяПо умолчаниюТипОписание
--hub-list-cards-columnsnumber Number of card columns (auto-fill when unset). 234
--hub-list-cards-min-column-widthlength Minimum column width for auto-fill grid. 200px280px
--hub-list-cards-gaplength Gap between cards. 0.75rem1.5rem
--hub-list-cards-bgcolor Card background. #fff
--hub-list-cards-border-colorcolor Card border colour. #dee2e6
--hub-list-cards-border-radiuslength Card corner radius. 0.5rem
--hub-list-cards-shadowshadow Card drop shadow. 0 2px 8px rgba(0,0,0,.1)
--hub-list-cards-hover-shadowshadow Card drop shadow on hover. 0 4px 16px rgba(0,0,0,.15)
--hub-list-cards-padding-xlength Card horizontal padding. 1rem
--hub-list-cards-padding-ylength Card vertical padding. 1rem

DOCS.PAGINABLE.API.CSS_GROUP.PAGINATOR.TITLE

DOCS.PAGINABLE.API.CSS_GROUP.PAGINATOR.DESCRIPTION

ПеременнаяПо умолчаниюТипОписание
--hub-paginator-link-bgcolor Page link background. #ffftransparent
--hub-paginator-link-colorcolor Page link text colour. var(--bs-primary)
--hub-paginator-link-border-colorcolor Page link border colour. #dee2e6
--hub-paginator-link-border-radiuslength Page link border radius. 0.375rem9999px
--hub-paginator-link-active-bgcolor Active page link background. var(--bs-primary)
--hub-paginator-link-active-colorcolor Active page link text colour. #fff
--hub-paginator-link-hover-bgcolor Hovered page link background. #f0f4f8
--hub-paginator-link-padding-xlength Page link horizontal padding. 0.625rem
--hub-paginator-link-padding-ylength Page link vertical padding. 0.375rem
--hub-paginator-font-sizelength Paginator font size. 0.875rem1rem
--hub-paginator-gaplength Gap between paginator controls. 0.25rem0.5rem
--hub-paginator-info-colorcolor Pagination info text colour. #6c757d
--hub-paginator-label-colorcolor Per-page label colour. #6c757d

Стилизация и тематизация

Примеры стилизации пока не задокументированы. В этом разделе будут рецепты кастомизации и примеры тематизации.