@jobber/components 2.86.3-pre.5 → 2.86.3-pre.9

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.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,17 @@ menu: Changelog
8
8
  All notable changes to this project will be documented in this file.
9
9
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
10
10
 
11
+ # [2.87.0](https://github.com/GetJobber/atlantis/compare/@jobber/components@2.86.2...@jobber/components@2.87.0) (2022-11-02)
12
+
13
+
14
+ ### Features
15
+
16
+ * **components:** Data table component ([#925](https://github.com/GetJobber/atlantis/issues/925)) ([777f4dc](https://github.com/GetJobber/atlantis/commit/777f4dce695e0c28880db77483e6d77903b7b484))
17
+
18
+
19
+
20
+
21
+
11
22
  ## [2.86.2](https://github.com/GetJobber/atlantis/compare/@jobber/components@2.86.1...@jobber/components@2.86.2) (2022-11-01)
12
23
 
13
24
  **Note:** Version bump only for package @jobber/components
package/DataTable.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./dist/DataTable";
package/DataTable.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true,
5
+ });
6
+
7
+ var DataTable = require("./dist/DataTable");
8
+
9
+ Object.keys(DataTable).forEach(function(key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ Object.defineProperty(exports, key, {
12
+ enumerable: true,
13
+ get: function get() {
14
+ return DataTable[key];
15
+ },
16
+ });
17
+ });
@@ -0,0 +1,7 @@
1
+ import { Row, Table } from "@tanstack/react-table";
2
+ interface BodyProps<T> {
3
+ table: Table<T>;
4
+ onRowClick?: (row: Row<T>) => void;
5
+ }
6
+ export declare function Body<T extends object>({ table, onRowClick }: BodyProps<T>): JSX.Element;
7
+ export {};
@@ -0,0 +1,48 @@
1
+ import { ColumnDef, Row } from "@tanstack/react-table";
2
+ import { Pagination, Sorting } from "./types";
3
+ export interface DataTableProps<T> {
4
+ /**
5
+ * The actual data that will be used for the table.
6
+ * Typescript should infer T from typeof data.
7
+ *
8
+ */
9
+ data: T[];
10
+ /**
11
+ * Should follow the @tanstack/react-table [ColumnDef](https://tanstack.com/table/v8/docs/guide/column-defs).
12
+ * [createColumnHelper](https://tanstack.com/table/v8/docs/guide/column-defs#column-helpers) is also exposed to make it more convenient
13
+ * to create columns.
14
+ */
15
+ columns: ColumnDef<T>[];
16
+ /**
17
+ * Enables pagination, mostly follows:
18
+ * https://tanstack.com/table/v8/docs/api/features/pagination
19
+ *
20
+ */
21
+ pagination?: Pagination;
22
+ /**
23
+ * Enables sorting, mostly follows:
24
+ * https://tanstack.com/table/v8/docs/api/features/sorting#table-options
25
+ *
26
+ */
27
+ sorting?: Sorting;
28
+ /**
29
+ * This will force the table to have the specified hight
30
+ *
31
+ */
32
+ height?: number;
33
+ /**
34
+ * When set to true makes the header sticky while scrolling vertically
35
+ *
36
+ */
37
+ stickyHeader?: boolean;
38
+ /**
39
+ * Pins the firstColumn when scrolling horizontally
40
+ *
41
+ */
42
+ pinFirstColumn?: boolean;
43
+ /**
44
+ * Enables row click action. The provided callback will be executed when the row is clicked.
45
+ */
46
+ onRowClick?: (row: Row<T>) => void;
47
+ }
48
+ export declare function DataTable<T extends object>({ data, columns, pagination, sorting, height, stickyHeader, pinFirstColumn, onRowClick, }: DataTableProps<T>): JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { Table } from "@tanstack/react-table";
2
+ interface FooterProps<T> {
3
+ table: Table<T>;
4
+ itemsPerPage?: number[];
5
+ totalItems: number;
6
+ }
7
+ export declare function Footer<T extends object>({ table, itemsPerPage, totalItems, }: FooterProps<T>): JSX.Element;
8
+ export {};
@@ -0,0 +1,10 @@
1
+ import { Row, Table } from "@tanstack/react-table";
2
+ import { Sorting } from "./types";
3
+ interface HeaderProps<T> {
4
+ table: Table<T>;
5
+ stickyHeader?: boolean;
6
+ sorting?: Sorting;
7
+ onRowClick?: (row: Row<T>) => void;
8
+ }
9
+ export declare function Header<T extends object>({ table, stickyHeader, sorting, onRowClick, }: HeaderProps<T>): JSX.Element;
10
+ export {};
@@ -0,0 +1,6 @@
1
+ import { ColumnDef } from "@tanstack/react-table";
2
+ import { Pagination, Sorting } from "./types";
3
+ export declare function createTableSettings<T>(data: T[], columns: ColumnDef<T>[], options?: {
4
+ pagination?: Pagination;
5
+ sorting?: Sorting;
6
+ }): any;
@@ -0,0 +1,3 @@
1
+ export { DataTable } from "./DataTable";
2
+ export * from "./types";
3
+ export { Row, ColumnDef, createColumnHelper, PaginationState, SortingState, } from "@tanstack/react-table";
@@ -0,0 +1,190 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactTable = require('@tanstack/react-table');
6
+ var classnames = require('classnames');
7
+ var React = require('react');
8
+ var styleInject_es = require('../style-inject.es-dcee06b6.js');
9
+ var tslib_es6 = require('../tslib.es6-5b50eb8e.js');
10
+ var Option = require('../Option-076ef1e3.js');
11
+ var Button = require('../Button-739af4d8.js');
12
+ var Icon = require('../Icon-d5ad1a6d.js');
13
+ require('../FormField-05b0b30b.js');
14
+ require('uuid');
15
+ require('react-hook-form');
16
+ require('../Text-3bf41a36.js');
17
+ require('../Typography-b9663407.js');
18
+ require('../InputValidation-c7f91798.js');
19
+ require('framer-motion');
20
+ require('../Spinner-18d3dee6.js');
21
+ require('react-router-dom');
22
+ require('@jobber/design');
23
+
24
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
25
+
26
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
27
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
28
+
29
+ var css$1 = "._1gVnBnwO8rEyN5yXaSAnJz {\n border: var(--border-base) solid var(--color-border);\n border-radius: var(--radius-base);\n}\n\n._2FsiaQmYMKjm0oAa_Dm7Jv {\n overflow: auto;\n}\n\n._2EflglZd2SRwkv61KFJrg9 {\n width: 100%;\n border-collapse: collapse;\n text-align: left;\n}\n\n._2EflglZd2SRwkv61KFJrg9 thead tr th {\n padding: var(--space-base);\n border-bottom: var(--border-base) solid var(--color-border);\n color: var(--color-heading);\n white-space: nowrap;\n}\n\n._2EflglZd2SRwkv61KFJrg9 thead tr th :first-child {\n display: -ms-flexbox;\n display: flex;\n}\n\n._2EflglZd2SRwkv61KFJrg9 tbody tr {\n border-bottom: var(--border-base) solid var(--color-border);\n}\n\n._2EflglZd2SRwkv61KFJrg9 tbody tr:last-child {\n border-bottom: none;\n}\n\n._2EflglZd2SRwkv61KFJrg9 tbody tr td {\n padding: var(--space-base);\n}\n\n.QRm47JXl1pWi9jKv7PNPG thead tr th:first-child,\n.QRm47JXl1pWi9jKv7PNPG tbody tr td:first-child {\n position: sticky;\n left: 0;\n z-index: 1;\n height: calc(var(--space-largest) + var(--space-smaller));\n background-color: var(--color-white);\n}\n\n.QRm47JXl1pWi9jKv7PNPG th:first-child::after,\n.QRm47JXl1pWi9jKv7PNPG td:first-child::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n right: calc(-1 * var(--space-small));\n width: var(--space-small);\n height: 100%;\n background: linear-gradient(\n 90deg,\n rgba(var(--color-black--rgb), 0.1) 0%,\n rgba(var(--color-black--rgb), 0) 80%\n );\n}\n\n._3VxR0m_2LtggJeSToEDE2y {\n position: sticky;\n top: 0;\n right: 0;\n left: 0;\n z-index: 2;\n box-shadow: var(--shadow-base);\n background-color: var(--color-white);\n}\n\n._1RROVWbMjf1ZfuVpquC4OS:first-child:hover {\n background: var(--color-surface--hover);\n cursor: pointer;\n}\n\n._2uM74VHCeNJuZjyD_SPXR3:hover {\n background: var(--color-surface--hover);\n cursor: pointer;\n}\n\n._3P5HGvBjzojCSGgtBjPjJi:hover,\n._3P5HGvBjzojCSGgtBjPjJi:hover :first-child {\n background: var(--color-surface--background);\n cursor: pointer;\n}\n";
30
+ var styles$1 = {"dataTableContainer":"_1gVnBnwO8rEyN5yXaSAnJz","tableContainer":"_2FsiaQmYMKjm0oAa_Dm7Jv","table":"_2EflglZd2SRwkv61KFJrg9","pinFirstColumn":"QRm47JXl1pWi9jKv7PNPG","stickyHeader":"_3VxR0m_2LtggJeSToEDE2y","pinFirstHeaderSortable":"_1RROVWbMjf1ZfuVpquC4OS","sortableColumn":"_2uM74VHCeNJuZjyD_SPXR3","clickableRow":"_3P5HGvBjzojCSGgtBjPjJi"};
31
+ styleInject_es.styleInject(css$1);
32
+
33
+ function Body(_a) {
34
+ var _b;
35
+ var table = _a.table, onRowClick = _a.onRowClick;
36
+ var bodyRowClasses = classnames__default["default"]((_b = {}, _b[styles$1.clickableRow] = !!onRowClick, _b));
37
+ var handleRowClick = React.useCallback(function (row) { return function () {
38
+ if (onRowClick == undefined)
39
+ return;
40
+ onRowClick(row);
41
+ }; }, [onRowClick]);
42
+ return (React__default["default"].createElement("tbody", null, table.getRowModel().rows.map(function (row) {
43
+ return (React__default["default"].createElement("tr", { key: row.id, onClick: handleRowClick(row), className: bodyRowClasses }, row.getVisibleCells().map(function (cell) {
44
+ return (React__default["default"].createElement("td", { key: cell.id }, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext())));
45
+ })));
46
+ })));
47
+ }
48
+
49
+ function createTableSettings(data, columns, options) {
50
+ var _a;
51
+ var _b = getPaginationSettings(options === null || options === void 0 ? void 0 : options.pagination), paginationState = _b.state, restPaginationSettings = tslib_es6.__rest(_b, ["state"]);
52
+ var _c = getSortingSettings(options === null || options === void 0 ? void 0 : options.sorting), sortingState = _c.state, restSortingSettings = tslib_es6.__rest(_c, ["state"]);
53
+ var initialPatinationState;
54
+ if ((_a = options === null || options === void 0 ? void 0 : options.pagination) === null || _a === void 0 ? void 0 : _a.itemsPerPage) {
55
+ initialPatinationState = {
56
+ pageIndex: 0,
57
+ pageSize: options.pagination.itemsPerPage[0],
58
+ };
59
+ }
60
+ var tableSettings = tslib_es6.__assign(tslib_es6.__assign(tslib_es6.__assign({ data: data,
61
+ columns: columns, state: tslib_es6.__assign(tslib_es6.__assign({}, paginationState), sortingState), getCoreRowModel: reactTable.getCoreRowModel() }, restPaginationSettings), restSortingSettings), { initialState: {
62
+ pagination: initialPatinationState,
63
+ } });
64
+ return tableSettings;
65
+ }
66
+ function getPaginationSettings(pagination) {
67
+ var paginationSettings = {};
68
+ if (!pagination) {
69
+ return paginationSettings;
70
+ }
71
+ var manualPagination = pagination.manualPagination;
72
+ paginationSettings.manualPagination = manualPagination;
73
+ if (manualPagination) {
74
+ var state = pagination.state, pageCount = pagination.pageCount, onPaginationChange = pagination.onPaginationChange;
75
+ paginationSettings.state = { pagination: state };
76
+ paginationSettings.pageCount = pageCount;
77
+ paginationSettings.onPaginationChange = onPaginationChange;
78
+ }
79
+ else {
80
+ paginationSettings.getPaginationRowModel = reactTable.getPaginationRowModel();
81
+ }
82
+ return paginationSettings;
83
+ }
84
+ function getSortingSettings(sorting) {
85
+ var sortingSettings = {};
86
+ if (!sorting)
87
+ return sortingSettings;
88
+ var manualSorting = sorting.manualSorting;
89
+ sortingSettings.manualSorting = manualSorting;
90
+ if (manualSorting) {
91
+ var onSortingChange = sorting.onSortingChange, state = sorting.state, enableSortingRemoval = sorting.enableSortingRemoval;
92
+ sortingSettings.state = { sorting: state };
93
+ sortingSettings.onSortingChange = onSortingChange;
94
+ sortingSettings.enableSortingRemoval = enableSortingRemoval !== null && enableSortingRemoval !== void 0 ? enableSortingRemoval : true;
95
+ }
96
+ else {
97
+ sortingSettings.getSortedRowModel = reactTable.getSortedRowModel();
98
+ }
99
+ return sortingSettings;
100
+ }
101
+
102
+ var css = ".xOgYLdnq9RzYdm2Qq5iqC {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n min-height: calc(var(--space-smaller) + var(--space-largest));\n padding: var(--space-small) var(--space-base);\n border-top: var(--border-base) solid var(--color-border);\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n}\n\n._5tzeLx9ms3KlKYLww3zz2 {\n -ms-flex: 9999;\n flex: 9999;\n white-space: nowrap;\n}\n\n.A-j9vM1Jh_lwiUvFWTrJD {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n grid-gap: var(--space-base);\n grid-gap: var(--space-base);\n gap: var(--space-base);\n -ms-flex: 1;\n flex: 1;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n min-width: -webkit-fit-content;\n min-width: -moz-fit-content;\n min-width: fit-content;\n}\n\n._1NDStXNYtxDXtO-D6fhMq7 {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n min-width: calc(3 * var(--space-largest) + var(--space-small));\n}\n\n._2jptOEeMFsy02Ak4RJ2Txr {\n min-width: calc(var(--space-extravagant) + var(--space-smaller));\n}\n\n._1hior9YLNayoFJtpVbcrzk {\n display: -ms-flexbox;\n display: flex;\n grid-gap: var(--space-large);\n grid-gap: var(--space-large);\n gap: var(--space-large);\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center\n}\n\n@media (max-width: 639px) {\n\n._1hior9YLNayoFJtpVbcrzk {\n grid-gap: var(--space-base);\n grid-gap: var(--space-base);\n gap: var(--space-base)\n}\n }\n\n@media (max-width: 639px) {\n\n._1hior9YLNayoFJtpVbcrzk {\n grid-gap: var(--space-base);\n grid-gap: var(--space-base);\n gap: var(--space-base)\n}\n }\n\n@media (--handhelds) {\n\n._1hior9YLNayoFJtpVbcrzk {\n grid-gap: var(--space-base);\n grid-gap: var(--space-base);\n gap: var(--space-base)\n}\n }\n";
103
+ var styles = {"pagination":"xOgYLdnq9RzYdm2Qq5iqC","paginationInfo":"_5tzeLx9ms3KlKYLww3zz2","paginationNav":"A-j9vM1Jh_lwiUvFWTrJD","paginationSelect":"_1NDStXNYtxDXtO-D6fhMq7","paginationSelectLabel":"_2jptOEeMFsy02Ak4RJ2Txr","paginationButtons":"_1hior9YLNayoFJtpVbcrzk"};
104
+ styleInject_es.styleInject(css);
105
+
106
+ function Footer(_a) {
107
+ var table = _a.table, itemsPerPage = _a.itemsPerPage, totalItems = _a.totalItems;
108
+ var _b = table.getState().pagination, pageIndex = _b.pageIndex, pageSize = _b.pageSize;
109
+ var totalRows = totalItems;
110
+ var firstPosition = pageIndex * pageSize + 1;
111
+ var secondPosition = Math.min(totalRows, pageSize * (pageIndex + 1));
112
+ var defaultItemsPerPageOptions = React.useMemo(function () { return ["10", "20", "30", "40", "50"]; }, []);
113
+ var itemsPerPageOptions = React.useMemo(function () { var _a; return (_a = itemsPerPage === null || itemsPerPage === void 0 ? void 0 : itemsPerPage.map(function (item) { return String(item); })) !== null && _a !== void 0 ? _a : defaultItemsPerPageOptions; }, [itemsPerPage]);
114
+ return (React__default["default"].createElement("div", { className: styles.pagination },
115
+ React__default["default"].createElement("div", { className: styles.paginationInfo }, "Showing " + firstPosition + "-" + secondPosition + " of " + totalRows + " items"),
116
+ React__default["default"].createElement("div", { className: styles.paginationNav },
117
+ React__default["default"].createElement("div", { className: styles.paginationSelect },
118
+ React__default["default"].createElement(Option.Select, { value: table.getState().pagination.pageSize, onChange: function (value) {
119
+ table.setPageSize(Number(value));
120
+ } }, itemsPerPageOptions.map(function (numOfPages) { return (React__default["default"].createElement(Option.SelectOption, { key: numOfPages, value: numOfPages }, numOfPages)); })),
121
+ React__default["default"].createElement("span", { className: styles.paginationSelectLabel }, "per page")),
122
+ React__default["default"].createElement("div", { className: styles.paginationButtons },
123
+ React__default["default"].createElement(Button.Button, { type: "secondary", variation: "subtle", icon: "arrowLeft", ariaLabel: "arrowLeft", onClick: function () { return table.previousPage(); }, disabled: !table.getCanPreviousPage() }),
124
+ React__default["default"].createElement(Button.Button, { type: "secondary", variation: "subtle", icon: "arrowRight", ariaLabel: "arrowRight", onClick: function () { return table.nextPage(); }, disabled: !table.getCanNextPage() })))));
125
+ }
126
+
127
+ function Header(_a) {
128
+ var _b;
129
+ var table = _a.table, stickyHeader = _a.stickyHeader, sorting = _a.sorting, onRowClick = _a.onRowClick;
130
+ var stickyClass = classnames__default["default"]((_b = {}, _b[styles$1.stickyHeader] = stickyHeader, _b));
131
+ return (React__default["default"].createElement("thead", { className: stickyClass }, table.getHeaderGroups().map(function (headerGroup) { return (React__default["default"].createElement("tr", { key: headerGroup.id }, headerGroup.headers.map(function (header) {
132
+ var _a;
133
+ var _b;
134
+ return (React__default["default"].createElement("th", { key: header.id, colSpan: header.colSpan, className: sorting && header.column.getCanSort()
135
+ ? classnames__default["default"](styles$1.sortableColumn, (_a = {},
136
+ _a[styles$1.pinFirstHeaderSortable] = !!onRowClick,
137
+ _a))
138
+ : "", onClick: sorting ? header.column.getToggleSortingHandler() : undefined }, header.isPlaceholder ? null : (React__default["default"].createElement("div", null,
139
+ reactTable.flexRender(header.column.columnDef.header, header.getContext()), (_b = {
140
+ asc: React__default["default"].createElement(Icon.Icon, { name: "longArrowUp", color: "green" }),
141
+ desc: React__default["default"].createElement(Icon.Icon, { name: "longArrowDown", color: "green" }),
142
+ }[header.column.getIsSorted()]) !== null && _b !== void 0 ? _b : (React__default["default"].createElement("svg", { style: {
143
+ width: "var(--space-large)",
144
+ height: "var(--space-large)",
145
+ } }))))));
146
+ }))); })));
147
+ }
148
+
149
+ function DataTable(_a) {
150
+ var _b;
151
+ var data = _a.data, columns = _a.columns, pagination = _a.pagination, sorting = _a.sorting, height = _a.height, stickyHeader = _a.stickyHeader, pinFirstColumn = _a.pinFirstColumn, onRowClick = _a.onRowClick;
152
+ var tableSettings = createTableSettings(data, columns, {
153
+ pagination: pagination,
154
+ sorting: sorting,
155
+ });
156
+ var tableClasses = classnames__default["default"](styles$1.table, (_b = {},
157
+ _b[styles$1.pinFirstColumn] = pinFirstColumn,
158
+ _b));
159
+ var table = reactTable.useReactTable(tableSettings);
160
+ return (React__default["default"].createElement("div", { className: styles$1.dataTableContainer },
161
+ React__default["default"].createElement("div", { className: styles$1.tableContainer, style: { height: height } },
162
+ React__default["default"].createElement("table", { className: tableClasses },
163
+ React__default["default"].createElement(Header, { table: table, sorting: sorting, onRowClick: onRowClick, stickyHeader: stickyHeader }),
164
+ React__default["default"].createElement(Body, { table: table, onRowClick: onRowClick }))),
165
+ pagination && (React__default["default"].createElement(Footer, { table: table, itemsPerPage: pagination.itemsPerPage, totalItems: pagination.manualPagination
166
+ ? pagination.totalItems
167
+ : table.getCoreRowModel().rows.length }))));
168
+ }
169
+
170
+ Object.defineProperty(exports, 'ColumnDef', {
171
+ enumerable: true,
172
+ get: function () { return reactTable.ColumnDef; }
173
+ });
174
+ Object.defineProperty(exports, 'PaginationState', {
175
+ enumerable: true,
176
+ get: function () { return reactTable.PaginationState; }
177
+ });
178
+ Object.defineProperty(exports, 'Row', {
179
+ enumerable: true,
180
+ get: function () { return reactTable.Row; }
181
+ });
182
+ Object.defineProperty(exports, 'SortingState', {
183
+ enumerable: true,
184
+ get: function () { return reactTable.SortingState; }
185
+ });
186
+ Object.defineProperty(exports, 'createColumnHelper', {
187
+ enumerable: true,
188
+ get: function () { return reactTable.createColumnHelper; }
189
+ });
190
+ exports.DataTable = DataTable;
@@ -0,0 +1 @@
1
+ export * from "./mocks";
@@ -0,0 +1,11 @@
1
+ import { ColumnDef } from "@tanstack/react-table";
2
+ interface Data {
3
+ name: string;
4
+ house: string;
5
+ region: string;
6
+ sigil: string;
7
+ isAlive: string;
8
+ }
9
+ export declare const data: Data[];
10
+ export declare const columns: ColumnDef<Data>[];
11
+ export {};
@@ -0,0 +1,83 @@
1
+ import { PaginationState, SortingState } from "@tanstack/react-table";
2
+ import { Dispatch, SetStateAction } from "react";
3
+ export interface ManualPagination {
4
+ /**
5
+ * When manually controlled represents the current pagination state of the table.
6
+ *
7
+ * @type {PaginationState}
8
+ */
9
+ state: PaginationState;
10
+ /**
11
+ * When manually controlling pagination, you should supply a total pageCount value to the table if you know it.
12
+ * If you do not know how many pages there are, you can set this to -1. (Or should we error?)
13
+ *
14
+ * @type {number}
15
+ */
16
+ pageCount: number;
17
+ /**
18
+ * If this function is provided, it will be called when the pagination state changes and you will be expected
19
+ * to manage the state yourself. You can pass the managed state back to the table via the state option.
20
+ */
21
+ onPaginationChange: Dispatch<SetStateAction<PaginationState>>;
22
+ /**
23
+ * Enables manual pagination. If this option is set to true,
24
+ * the table will not automatically paginate and instead will expect you
25
+ * to manually paginate the rows before passing them to the table.
26
+ *
27
+ * @type {boolean}
28
+ */
29
+ manualPagination: true;
30
+ /**
31
+ * The options to control the pagination
32
+ *
33
+ * @type {number[]}
34
+ * @memberof Pagination
35
+ */
36
+ itemsPerPage?: number[];
37
+ /**
38
+ * When manual pagination is enable the total numbers of
39
+ * records in the table should be provided.
40
+ *
41
+ * @type {number}
42
+ * @memberof Pagination
43
+ */
44
+ totalItems: number;
45
+ }
46
+ export interface DefaultPagination {
47
+ manualPagination: false;
48
+ itemsPerPage?: number[];
49
+ }
50
+ export declare type Pagination = DefaultPagination | ManualPagination;
51
+ export interface ManualSorting {
52
+ /**
53
+ * Represents the current sorting state of the table.
54
+ *
55
+ * @type {SortingState}
56
+ */
57
+ state: SortingState;
58
+ /**
59
+ * Enables manual sorting for the table.
60
+ *
61
+ * @type {boolean}
62
+ */
63
+ manualSorting: true;
64
+ /**
65
+ * This overrides the default internal state management,
66
+ * so you will need to persist the state change either fully or partially outside of the table.
67
+ */
68
+ onSortingChange: Dispatch<SetStateAction<SortingState>>;
69
+ /**
70
+ * Enables/Disables the ability to remove sorting for the table.
71
+ *
72
+ */
73
+ enableSortingRemoval?: boolean;
74
+ }
75
+ export interface DefaultSorting {
76
+ /**
77
+ * Enables manual sorting for the table.
78
+ *
79
+ * @type {boolean}
80
+ */
81
+ manualSorting: false;
82
+ }
83
+ export declare type Sorting = DefaultSorting | ManualSorting;
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('./tslib.es6-5b50eb8e.js');
4
+ var React = require('react');
5
+ var FormField = require('./FormField-05b0b30b.js');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
+
11
+ function Select(props) {
12
+ return React__default["default"].createElement(FormField.FormField, tslib_es6.__assign({ type: "select" }, props));
13
+ }
14
+
15
+ function SelectOption(_a) {
16
+ var children = _a.children, disabled = _a.disabled, value = _a.value;
17
+ return (React__default["default"].createElement("option", { disabled: disabled, value: value }, children));
18
+ }
19
+
20
+ exports.Select = Select;
21
+ exports.SelectOption = SelectOption;
@@ -2,9 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib_es6 = require('../tslib.es6-5b50eb8e.js');
6
- var React = require('react');
7
- var FormField = require('../FormField-05b0b30b.js');
5
+ var Option = require('../Option-076ef1e3.js');
6
+ require('../tslib.es6-5b50eb8e.js');
7
+ require('react');
8
+ require('../FormField-05b0b30b.js');
8
9
  require('uuid');
9
10
  require('react-hook-form');
10
11
  require('../style-inject.es-dcee06b6.js');
@@ -19,18 +20,7 @@ require('../InputValidation-c7f91798.js');
19
20
  require('framer-motion');
20
21
  require('../Spinner-18d3dee6.js');
21
22
 
22
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
23
23
 
24
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
25
24
 
26
- function Select(props) {
27
- return React__default["default"].createElement(FormField.FormField, tslib_es6.__assign({ type: "select" }, props));
28
- }
29
-
30
- function SelectOption(_a) {
31
- var children = _a.children, disabled = _a.disabled, value = _a.value;
32
- return (React__default["default"].createElement("option", { disabled: disabled, value: value }, children));
33
- }
34
-
35
- exports.Option = SelectOption;
36
- exports.Select = Select;
25
+ exports.Option = Option.SelectOption;
26
+ exports.Select = Option.Select;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "2.86.3-pre.5+db9e1968",
3
+ "version": "2.86.3-pre.9+ff7e68fe",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,11 +17,12 @@
17
17
  "dist/*"
18
18
  ],
19
19
  "dependencies": {
20
- "@jobber/design": "^0.26.0",
20
+ "@jobber/design": "^0.26.1-pre.13+ff7e68fe",
21
21
  "@jobber/formatters": "^0.2.0",
22
22
  "@jobber/hooks": "^1.12.1",
23
23
  "@popperjs/core": "^2.0.6",
24
24
  "@std-proposal/temporal": "0.0.1",
25
+ "@tanstack/react-table": "8.5.13",
25
26
  "@types/color": "^3.0.1",
26
27
  "@types/lodash": "^4.14.136",
27
28
  "@types/react-datepicker": "^4.3.2",
@@ -83,5 +84,5 @@
83
84
  "> 1%",
84
85
  "IE 10"
85
86
  ],
86
- "gitHead": "db9e1968193ef414f1bfc72f93c47f7d3bd43072"
87
+ "gitHead": "ff7e68fe208d8a29224d79eb5409debe2fe1e027"
87
88
  }