@dust-tt/sparkle 0.2.224 → 0.2.226

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.
Files changed (71) hide show
  1. package/dist/cjs/index.js +293 -153
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/esm/components/Breadcrumbs.d.ts +7 -6
  4. package/dist/esm/components/Breadcrumbs.d.ts.map +1 -1
  5. package/dist/esm/components/Breadcrumbs.js +3 -2
  6. package/dist/esm/components/Breadcrumbs.js.map +1 -1
  7. package/dist/esm/components/DataTable.d.ts +5 -2
  8. package/dist/esm/components/DataTable.d.ts.map +1 -1
  9. package/dist/esm/components/DataTable.js +50 -33
  10. package/dist/esm/components/DataTable.js.map +1 -1
  11. package/dist/esm/components/DropdownMenu.d.ts +10 -10
  12. package/dist/esm/components/DropdownMenu.d.ts.map +1 -1
  13. package/dist/esm/components/DropdownMenu.js +7 -7
  14. package/dist/esm/components/DropdownMenu.js.map +1 -1
  15. package/dist/esm/components/Item.d.ts +18 -15
  16. package/dist/esm/components/Item.d.ts.map +1 -1
  17. package/dist/esm/components/Item.js +2 -1
  18. package/dist/esm/components/Item.js.map +1 -1
  19. package/dist/esm/components/PaginatedCitationsGrid.d.ts.map +1 -1
  20. package/dist/esm/components/PaginatedCitationsGrid.js +8 -4
  21. package/dist/esm/components/PaginatedCitationsGrid.js.map +1 -1
  22. package/dist/esm/components/Pagination.d.ts +5 -4
  23. package/dist/esm/components/Pagination.d.ts.map +1 -1
  24. package/dist/esm/components/Pagination.js +35 -35
  25. package/dist/esm/components/Pagination.js.map +1 -1
  26. package/dist/esm/hooks/index.d.ts +3 -0
  27. package/dist/esm/hooks/index.d.ts.map +1 -0
  28. package/dist/esm/hooks/index.js +3 -0
  29. package/dist/esm/hooks/index.js.map +1 -0
  30. package/dist/esm/hooks/useHashParams.d.ts +18 -0
  31. package/dist/esm/hooks/useHashParams.d.ts.map +1 -0
  32. package/dist/esm/hooks/useHashParams.js +67 -0
  33. package/dist/esm/hooks/useHashParams.js.map +1 -0
  34. package/dist/esm/hooks/usePaginationFromUrl.d.ts +6 -0
  35. package/dist/esm/hooks/usePaginationFromUrl.d.ts.map +1 -0
  36. package/dist/esm/hooks/usePaginationFromUrl.js +23 -0
  37. package/dist/esm/hooks/usePaginationFromUrl.js.map +1 -0
  38. package/dist/esm/index.d.ts +1 -0
  39. package/dist/esm/index.d.ts.map +1 -1
  40. package/dist/esm/index.js +1 -0
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/stories/DataTable.stories.d.ts +2 -0
  43. package/dist/esm/stories/DataTable.stories.d.ts.map +1 -1
  44. package/dist/esm/stories/DataTable.stories.js +133 -105
  45. package/dist/esm/stories/DataTable.stories.js.map +1 -1
  46. package/dist/esm/stories/DropdownMenu.stories.d.ts.map +1 -1
  47. package/dist/esm/stories/DropdownMenu.stories.js +32 -31
  48. package/dist/esm/stories/DropdownMenu.stories.js.map +1 -1
  49. package/dist/esm/stories/Item.stories.d.ts.map +1 -1
  50. package/dist/esm/stories/Item.stories.js +8 -6
  51. package/dist/esm/stories/Item.stories.js.map +1 -1
  52. package/dist/esm/stories/Pagination.stories.d.ts +1 -0
  53. package/dist/esm/stories/Pagination.stories.d.ts.map +1 -1
  54. package/dist/esm/stories/Pagination.stories.js +25 -3
  55. package/dist/esm/stories/Pagination.stories.js.map +1 -1
  56. package/dist/sparkle.css +4 -0
  57. package/package.json +1 -1
  58. package/src/components/Breadcrumbs.tsx +11 -10
  59. package/src/components/DataTable.tsx +116 -81
  60. package/src/components/DropdownMenu.tsx +13 -13
  61. package/src/components/Item.tsx +20 -16
  62. package/src/components/PaginatedCitationsGrid.tsx +11 -6
  63. package/src/components/Pagination.tsx +48 -45
  64. package/src/hooks/index.ts +2 -0
  65. package/src/hooks/useHashParams.ts +95 -0
  66. package/src/hooks/usePaginationFromUrl.ts +36 -0
  67. package/src/index.ts +1 -0
  68. package/src/stories/DataTable.stories.tsx +200 -129
  69. package/src/stories/DropdownMenu.stories.tsx +43 -31
  70. package/src/stories/Item.stories.tsx +26 -6
  71. package/src/stories/Pagination.stories.tsx +38 -10
@@ -1,13 +1,14 @@
1
+ import { PaginationState } from "@tanstack/react-table";
1
2
  import React from "react";
2
3
  type Size = "sm" | "xs";
3
4
  interface PaginationProps {
4
- itemsCount: number;
5
- maxItemsPerPage: number;
6
- onButtonClick: (pageNumber: number) => void;
7
5
  size?: Size;
8
6
  showDetails?: boolean;
9
7
  showPageButtons?: boolean;
8
+ rowCount: number;
9
+ pagination: PaginationState;
10
+ setPagination: (pagination: PaginationState) => void;
10
11
  }
11
- export declare function Pagination({ itemsCount, maxItemsPerPage, onButtonClick, size, showDetails, showPageButtons, }: PaginationProps): React.JSX.Element;
12
+ export declare function Pagination({ size, showDetails, showPageButtons, rowCount, pagination, setPagination, }: PaginationProps): React.JSX.Element;
12
13
  export {};
13
14
  //# sourceMappingURL=Pagination.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAQ3C,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAIxB,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,eAAe,EACf,aAAa,EACb,IAAW,EACX,WAAkB,EAClB,eAAsB,GACvB,EAAE,eAAe,qBA2FjB"}
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAsB,MAAM,OAAO,CAAC;AAO3C,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAIxB,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,eAAe,CAAC;IAC5B,aAAa,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;CACtD;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAW,EACX,WAAkB,EAClB,eAAsB,EACtB,QAAQ,EACR,UAAU,EACV,aAAa,GACd,EAAE,eAAe,qBA8FjB"}
@@ -1,39 +1,39 @@
1
- import { __read } from "tslib";
2
1
  import React, { useCallback } from "react";
3
- import { useState } from "react";
4
2
  import { ChevronLeftIcon, ChevronRightIcon } from "../icons/solid";
5
3
  import { classNames } from "../lib/utils";
6
4
  import { Button } from "./Button";
7
5
  var pagesShownInControls = 7;
8
6
  export function Pagination(_a) {
9
- var itemsCount = _a.itemsCount, maxItemsPerPage = _a.maxItemsPerPage, onButtonClick = _a.onButtonClick, _b = _a.size, size = _b === void 0 ? "sm" : _b, _c = _a.showDetails, showDetails = _c === void 0 ? true : _c, _d = _a.showPageButtons, showPageButtons = _d === void 0 ? true : _d;
10
- var numPages = Math.ceil(itemsCount / maxItemsPerPage);
7
+ var _b = _a.size, size = _b === void 0 ? "sm" : _b, _c = _a.showDetails, showDetails = _c === void 0 ? true : _c, _d = _a.showPageButtons, showPageButtons = _d === void 0 ? true : _d, rowCount = _a.rowCount, pagination = _a.pagination, setPagination = _a.setPagination;
8
+ // pageIndex is 0-based
9
+ var pageIndex = pagination.pageIndex, pageSize = pagination.pageSize;
10
+ var numPages = Math.ceil(rowCount / pageSize);
11
+ var canNextPage = pagination.pageIndex < numPages - 1;
12
+ var canPreviousPage = pageIndex > 0;
13
+ var nextPage = function () { return setPagination({ pageSize: pageSize, pageIndex: pageIndex + 1 }); };
14
+ var previousPage = function () {
15
+ return setPagination({ pageSize: pageSize, pageIndex: pageIndex - 1 });
16
+ };
11
17
  var controlsAreHidden = Boolean(numPages <= 1);
12
- var _e = __read(useState(1), 2), currentPage = _e[0], setCurrentPage = _e[1];
13
- var firstFileOnPageIndex = currentPage * maxItemsPerPage - maxItemsPerPage + 1;
14
- var lastFileOnPageIndex = itemsCount > currentPage * maxItemsPerPage
15
- ? currentPage * maxItemsPerPage
16
- : itemsCount;
17
- var onPaginationButtonClick = useCallback(function (pageNb) {
18
- setCurrentPage(pageNb);
19
- onButtonClick(pageNb);
20
- }, [onButtonClick, setCurrentPage]);
21
- var pageButtons = getPageButtons(currentPage, numPages, pagesShownInControls, onPaginationButtonClick, size);
18
+ var firstItemOnPageIndex = pageIndex * pageSize + 1;
19
+ var lastItemOnPageIndex = rowCount > (pageIndex + 1) * pageSize
20
+ ? (pageIndex + 1) * pageSize
21
+ : rowCount;
22
+ var onPaginationButtonClick = useCallback(function (pageIndex) {
23
+ setPagination({ pageSize: pageSize, pageIndex: pageIndex });
24
+ }, [pageIndex, setPagination]);
25
+ var pageButtons = getPageButtons(pageIndex, numPages, pagesShownInControls, onPaginationButtonClick, size);
22
26
  return (React.createElement("div", { className: classNames("s-flex s-w-full s-items-center", controlsAreHidden ? "s-justify-end" : "s-justify-between") },
23
27
  React.createElement("div", { className: classNames("s-flex", controlsAreHidden ? "s-invisible" : "s-visible", showPageButtons ? "s-gap-0" : "s-gap-2") },
24
- React.createElement(Button, { variant: "tertiary", size: size === "xs" ? "xs" : "sm", label: "previous", labelVisible: false, disabledTooltip: true, disabled: currentPage === 1 ? true : false, icon: ChevronLeftIcon, onClick: function () {
25
- onPaginationButtonClick(currentPage - 1);
26
- } }),
28
+ React.createElement(Button, { variant: "tertiary", size: size === "xs" ? "xs" : "sm", label: "previous", labelVisible: false, disabledTooltip: true, disabled: !canPreviousPage, icon: ChevronLeftIcon, onClick: previousPage }),
27
29
  React.createElement("div", { className: classNames("s-items-center", size === "xs" ? "s-gap-3 s-px-3" : "s-gap-4 s-px-4", showPageButtons ? "s-flex" : "s-hidden") }, pageButtons),
28
- React.createElement(Button, { variant: "tertiary", size: size === "xs" ? "xs" : "sm", label: "next", labelVisible: false, disabledTooltip: true, disabled: currentPage === numPages ? true : false, icon: ChevronRightIcon, onClick: function () {
29
- onPaginationButtonClick(currentPage + 1);
30
- } })),
30
+ React.createElement(Button, { variant: "tertiary", size: size === "xs" ? "xs" : "sm", label: "next", labelVisible: false, disabledTooltip: true, disabled: !canNextPage, icon: ChevronRightIcon, onClick: nextPage })),
31
31
  React.createElement("span", { className: classNames("s-text-slate-400", size === "xs" ? "s-text-xs" : "s-text-sm", showDetails ? "s-visible" : "s-collapse") }, controlsAreHidden
32
- ? "".concat(itemsCount, " items")
33
- : "Showing ".concat(firstFileOnPageIndex, "-").concat(lastFileOnPageIndex, " of ").concat(itemsCount, " items"))));
32
+ ? "".concat(rowCount, " items")
33
+ : "Showing ".concat(firstItemOnPageIndex, "-").concat(lastItemOnPageIndex, " of ").concat(rowCount, " items"))));
34
34
  }
35
35
  function renderPageNumber(pageNumber, currentPage, onPageClick, size) {
36
- return (React.createElement("button", { key: pageNumber, className: classNames("s-font-semibold s-transition-colors s-duration-100", currentPage === pageNumber ? "s-text-action-500" : "s-text-slate-400", size === "xs" ? "s-text-xs" : "s-text-sm"), onClick: function () { return onPageClick(pageNumber); } }, pageNumber));
36
+ return (React.createElement("button", { key: pageNumber, className: classNames("s-font-semibold s-transition-colors s-duration-100", currentPage === pageNumber ? "s-text-action-500" : "s-text-slate-400", size === "xs" ? "s-text-xs" : "s-text-sm"), onClick: function () { return onPageClick(pageNumber); } }, pageNumber + 1));
37
37
  }
38
38
  function renderEllipses(size) {
39
39
  return (React.createElement("span", { className: classNames("s-text-sm s-font-semibold s-text-slate-400", size === "xs" ? "s-text-xs" : "s-text-sm") }, "..."));
@@ -42,7 +42,7 @@ function getPageButtons(currentPage, totalPages, slots, onPageClick, size) {
42
42
  var pagination = [];
43
43
  // If total pages are less than or equal to slots, show all pages
44
44
  if (totalPages <= slots) {
45
- for (var i = 1; i <= totalPages; i++) {
45
+ for (var i = 0; i < totalPages; i++) {
46
46
  pagination.push(renderPageNumber(i, currentPage, onPageClick, size));
47
47
  }
48
48
  return pagination;
@@ -50,24 +50,24 @@ function getPageButtons(currentPage, totalPages, slots, onPageClick, size) {
50
50
  var remainingSlots = slots - 2; // slots excluding first and last page
51
51
  var halfSlots = Math.floor(remainingSlots / 2);
52
52
  // Ensure current page is within bounds
53
- currentPage = Math.max(1, Math.min(currentPage, totalPages));
54
- pagination.push(renderPageNumber(1, currentPage, onPageClick, size)); // Always show the first page
53
+ currentPage = Math.max(0, Math.min(currentPage, totalPages - 1));
54
+ pagination.push(renderPageNumber(0, currentPage, onPageClick, size)); // Always show the first page
55
55
  // Determine the range of pages to display
56
56
  var start, end;
57
- if (currentPage <= halfSlots + 2) {
58
- start = 2;
59
- end = remainingSlots;
57
+ if (currentPage <= halfSlots + 1) {
58
+ start = 1;
59
+ end = remainingSlots - 1;
60
60
  }
61
- else if (currentPage >= totalPages - halfSlots - 1) {
62
- start = totalPages - remainingSlots + 1;
63
- end = totalPages - 1;
61
+ else if (currentPage >= totalPages - halfSlots - 2) {
62
+ start = totalPages - remainingSlots;
63
+ end = totalPages - 2;
64
64
  }
65
65
  else {
66
66
  start = currentPage - halfSlots + 1;
67
67
  end = currentPage + halfSlots - 1;
68
68
  }
69
69
  // Add ellipsis if there is a gap between the first page and the start of the range
70
- if (start > 2) {
70
+ if (start > 1) {
71
71
  pagination.push(renderEllipses(size));
72
72
  }
73
73
  // Add the range of pages
@@ -75,10 +75,10 @@ function getPageButtons(currentPage, totalPages, slots, onPageClick, size) {
75
75
  pagination.push(renderPageNumber(i, currentPage, onPageClick, size));
76
76
  }
77
77
  // Add ellipsis if there is a gap between the end of the range and the last page
78
- if (end < totalPages - 1) {
78
+ if (end < totalPages - 2) {
79
79
  pagination.push(renderEllipses(size));
80
80
  }
81
- pagination.push(renderPageNumber(totalPages, currentPage, onPageClick, size)); // Always show the last page
81
+ pagination.push(renderPageNumber(totalPages - 1, currentPage, onPageClick, size)); // Always show the last page
82
82
  return pagination;
83
83
  }
84
84
  //# sourceMappingURL=Pagination.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../src/components/Pagination.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../src/components/Pagination.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./useHashParams";
2
+ export * from "./usePaginationFromUrl";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./useHashParams";
2
+ export * from "./usePaginationFromUrl";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Original code from : https://www.npmjs.com/package/use-hash-param
3
+ * ISC License
4
+ */
5
+ type Updater = (prevValue?: string) => string;
6
+ type SetterOptions = {
7
+ history: "replace" | "push";
8
+ };
9
+ type Setter = (value?: string | Updater, options?: SetterOptions) => void;
10
+ /**
11
+ * @param key The parameter-name to use from the hash-string query string.
12
+ * @param defaultValue A default value to use if the parameter is not specified and on the server.
13
+ * @returns A two-tuple, the first element is the selected param value (either extracted from the hash param or the default value).
14
+ * The second element is a setter function to change the param value.
15
+ */
16
+ export declare const useHashParam: (key: string, defaultValue?: string) => [string | undefined, Setter];
17
+ export {};
18
+ //# sourceMappingURL=useHashParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHashParams.d.ts","sourceRoot":"","sources":["../../../src/hooks/useHashParams.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6CH,KAAK,OAAO,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAC9C,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,SAAS,GAAG,MAAM,CAAC;CAC7B,CAAC;AACF,KAAK,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;AAE1E;;;;;GAKG;AAEH,eAAO,MAAM,YAAY,QAClB,MAAM,iBACI,MAAM,KACpB,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CA8B7B,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Original code from : https://www.npmjs.com/package/use-hash-param
3
+ * ISC License
4
+ */
5
+ import { __read } from "tslib";
6
+ import { useCallback, useEffect, useState } from "react";
7
+ var getHashSearchParams = function (location) {
8
+ var hash = location.hash.slice(1);
9
+ var _a = __read(hash.split("?"), 2), prefix = _a[0], query = _a[1];
10
+ return [prefix, new URLSearchParams(query)];
11
+ };
12
+ var getHashParam = function (key, defaultValue) {
13
+ var _a;
14
+ if (typeof window === "undefined") {
15
+ return defaultValue;
16
+ }
17
+ var _b = __read(getHashSearchParams(window.location), 2), searchParams = _b[1];
18
+ return (_a = searchParams.get(key)) !== null && _a !== void 0 ? _a : defaultValue;
19
+ };
20
+ var setHashParam = function (key, value, shouldReplaceState) {
21
+ if (typeof window !== "undefined") {
22
+ var _a = __read(getHashSearchParams(window.location), 2), prefix = _a[0], searchParams = _a[1];
23
+ if (typeof value === "undefined" || value === "") {
24
+ searchParams.delete(key);
25
+ }
26
+ else {
27
+ searchParams.set(key, value);
28
+ }
29
+ var search = searchParams.toString();
30
+ var hash = search ? "".concat(prefix, "?").concat(search) : prefix;
31
+ if (shouldReplaceState && "replaceState" in history) {
32
+ history.replaceState(null, "", "#".concat(hash));
33
+ }
34
+ else {
35
+ window.location.hash = hash;
36
+ }
37
+ }
38
+ };
39
+ /**
40
+ * @param key The parameter-name to use from the hash-string query string.
41
+ * @param defaultValue A default value to use if the parameter is not specified and on the server.
42
+ * @returns A two-tuple, the first element is the selected param value (either extracted from the hash param or the default value).
43
+ * The second element is a setter function to change the param value.
44
+ */
45
+ export var useHashParam = function (key, defaultValue) {
46
+ var _a = __read(useState(function () {
47
+ return getHashParam(key, defaultValue);
48
+ }), 2), innerValue = _a[0], setInnerValue = _a[1];
49
+ useEffect(function () {
50
+ var handleHashChange = function () {
51
+ return setInnerValue(getHashParam(key, defaultValue));
52
+ };
53
+ handleHashChange();
54
+ window.addEventListener("hashchange", handleHashChange);
55
+ return function () { return window.removeEventListener("hashchange", handleHashChange); };
56
+ }, [key]);
57
+ var setValue = useCallback(function (newValue, options) {
58
+ if (options === void 0) { options = { history: "replace" }; }
59
+ var newInnerValue = typeof newValue === "function"
60
+ ? newValue(getHashParam(key, defaultValue))
61
+ : newValue;
62
+ setInnerValue(newInnerValue);
63
+ setHashParam(key, newInnerValue, options.history === "replace");
64
+ }, [key]);
65
+ return [innerValue || defaultValue, setValue];
66
+ };
67
+ //# sourceMappingURL=useHashParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHashParams.js","sourceRoot":"","sources":["../../../src/hooks/useHashParams.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { PaginationState } from "@tanstack/react-table";
2
+ export declare const usePaginationFromUrl: (urlPrefix?: string, initialPageSize?: number) => {
3
+ pagination: PaginationState;
4
+ setPagination: (newValue: PaginationState) => void;
5
+ };
6
+ //# sourceMappingURL=usePaginationFromUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePaginationFromUrl.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePaginationFromUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAOxD,eAAO,MAAM,oBAAoB,eACnB,MAAM;;8BAgBiB,eAAe;CAWnD,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { __read } from "tslib";
2
+ import { useMemo } from "react";
3
+ import { useHashParam } from "../hooks/useHashParams";
4
+ var defaultPageSize = 25;
5
+ export var usePaginationFromUrl = function (urlPrefix, initialPageSize) {
6
+ if (initialPageSize === void 0) { initialPageSize = defaultPageSize; }
7
+ var _a = __read(useHashParam(urlPrefix ? "".concat(urlPrefix, "PageIndex") : "pageIndex"), 2), pageIndexParam = _a[0], setPageIndexParam = _a[1];
8
+ var _b = __read(useHashParam(urlPrefix ? "".concat(urlPrefix, "PageSize") : "pageSize"), 2), pageSizeParam = _b[0], setPageSizeParam = _b[1];
9
+ var pageIndex = pageIndexParam ? parseInt(pageIndexParam) : 0;
10
+ var pageSize = pageSizeParam ? parseInt(pageSizeParam) : initialPageSize;
11
+ var res = useMemo(function () {
12
+ var pagination = { pageIndex: pageIndex, pageSize: pageSize };
13
+ var setPagination = function (newValue) {
14
+ if (newValue.pageIndex !== pageIndex || newValue.pageSize !== pageSize) {
15
+ setPageIndexParam(newValue.pageIndex.toString());
16
+ setPageSizeParam(newValue.pageSize.toString());
17
+ }
18
+ };
19
+ return { pagination: pagination, setPagination: setPagination };
20
+ }, [pageIndex, pageSize, urlPrefix]);
21
+ return res;
22
+ };
23
+ //# sourceMappingURL=usePaginationFromUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePaginationFromUrl.js","sourceRoot":"","sources":["../../../src/hooks/usePaginationFromUrl.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,IAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAClC,SAAkB,EAClB,eAAiC;IAAjC,gCAAA,EAAA,iCAAiC;IAE3B,IAAA,KAAA,OAAsC,YAAY,CACtD,SAAS,CAAC,CAAC,CAAC,UAAG,SAAS,cAAW,CAAC,CAAC,CAAC,WAAW,CAClD,IAAA,EAFM,cAAc,QAAA,EAAE,iBAAiB,QAEvC,CAAC;IACI,IAAA,KAAA,OAAoC,YAAY,CACpD,SAAS,CAAC,CAAC,CAAC,UAAG,SAAS,aAAU,CAAC,CAAC,CAAC,UAAU,CAChD,IAAA,EAFM,aAAa,QAAA,EAAE,gBAAgB,QAErC,CAAC;IAEF,IAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IAE3E,IAAM,GAAG,GAAG,OAAO,CAAC;QAClB,IAAM,UAAU,GAAoB,EAAE,SAAS,WAAA,EAAE,QAAQ,UAAA,EAAE,CAAC;QAE5D,IAAM,aAAa,GAAG,UAAC,QAAyB;YAC9C,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACvE,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjD,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,EAAE,UAAU,YAAA,EAAE,aAAa,eAAA,EAAE,CAAC;IACvC,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAErC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from "./components";
2
2
  export { SparkleContext } from "./context";
3
+ export * from "./hooks";
3
4
  export * from "./icons";
4
5
  export * from "./lib";
5
6
  export * from "./logo";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./components";
2
2
  export { SparkleContext } from "./context";
3
+ export * from "./hooks";
3
4
  export * from "./icons";
4
5
  export * from "./lib";
5
6
  export * from "./logo";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
@@ -6,4 +6,6 @@ declare const meta: {
6
6
  };
7
7
  export default meta;
8
8
  export declare const DataTableExample: () => React.JSX.Element;
9
+ export declare const DataTablePaginatedExample: () => React.JSX.Element;
10
+ export declare const DataTablePaginatedServerSideExample: () => React.JSX.Element;
9
11
  //# sourceMappingURL=DataTable.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/DataTable.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,SAAS,EAAc,MAAM,uBAAuB,CAAC;AAE9D,QAAA,MAAM,IAAI;;;CAGwB,CAAC;AAEnC,eAAe,IAAI,CAAC;AAiBpB,eAAO,MAAM,gBAAgB,yBA4I5B,CAAC"}
1
+ {"version":3,"file":"DataTable.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/DataTable.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAKvC,OAAO,EAAE,SAAS,EAAc,MAAM,uBAAuB,CAAC;AAE9D,QAAA,MAAM,IAAI;;;CAGwB,CAAC;AAEnC,eAAe,IAAI,CAAC;AA+IpB,eAAO,MAAM,gBAAgB,yBAmB5B,CAAC;AAEF,eAAO,MAAM,yBAAyB,yBA2BrC,CAAC;AAEF,eAAO,MAAM,mCAAmC,yBAkC/C,CAAC"}
@@ -1,115 +1,143 @@
1
- import React from "react";
1
+ import { __read } from "tslib";
2
+ import React, { useMemo } from "react";
3
+ import { Input } from "../components/Input";
2
4
  import { DataTable, FolderIcon } from "../index_with_tw_base";
3
5
  var meta = {
4
6
  title: "Components/DataTable",
5
7
  component: DataTable,
6
8
  };
7
9
  export default meta;
10
+ var data = [
11
+ {
12
+ name: "Soupinou with tooltip on avatar",
13
+ usedBy: 100,
14
+ addedBy: "User1",
15
+ lastUpdated: "July 8, 2023",
16
+ size: "32kb",
17
+ avatarUrl: "https://avatars.githubusercontent.com/u/138893015?s=200&v=4",
18
+ avatarTooltipLabel: "Meow",
19
+ roundedAvatar: true,
20
+ onClick: function () { return console.log("hehe"); },
21
+ },
22
+ {
23
+ name: "Marketing",
24
+ description: "(23 items)",
25
+ usedBy: 8,
26
+ addedBy: "User1",
27
+ lastUpdated: "July 8, 2023",
28
+ size: "32kb",
29
+ avatarUrl: "https://dust.tt/static/droidavatar/Droid_Lime_3.jpg",
30
+ roundedAvatar: true,
31
+ onClick: function () { return alert("Marketing clicked"); },
32
+ },
33
+ {
34
+ name: "Design",
35
+ usedBy: 2,
36
+ addedBy: "User2",
37
+ lastUpdated: "2023-07-09",
38
+ size: "64kb",
39
+ icon: FolderIcon,
40
+ moreMenuItems: [
41
+ {
42
+ label: "Edit (disabled)",
43
+ onClick: function () { return alert("Design menu clicked"); },
44
+ disabled: true,
45
+ },
46
+ ],
47
+ onClick: function () { return alert("Design clicked"); },
48
+ },
49
+ {
50
+ name: "design",
51
+ usedBy: 3,
52
+ addedBy: "User21",
53
+ lastUpdated: "2023-07-09",
54
+ size: "64kb",
55
+ icon: FolderIcon,
56
+ moreMenuItems: [
57
+ {
58
+ label: "Edit",
59
+ onClick: function () { return alert("Design menu clicked"); },
60
+ },
61
+ ],
62
+ },
63
+ {
64
+ name: "Development",
65
+ usedBy: 5,
66
+ addedBy: "User3",
67
+ lastUpdated: "2023-07-07",
68
+ size: "128kb",
69
+ },
70
+ {
71
+ name: "Sales",
72
+ usedBy: 10,
73
+ addedBy: "User4",
74
+ lastUpdated: "2023-07-10",
75
+ size: "16kb",
76
+ },
77
+ {
78
+ name: "HR",
79
+ usedBy: 3,
80
+ addedBy: "User5",
81
+ lastUpdated: "2023-07-06",
82
+ size: "48kb",
83
+ },
84
+ ];
85
+ var columns = [
86
+ {
87
+ accessorKey: "name",
88
+ header: "Name",
89
+ sortingFn: "text",
90
+ cell: function (info) { return (React.createElement(DataTable.CellContent, { avatarUrl: info.row.original.avatarUrl, avatarTooltipLabel: info.row.original.avatarTooltipLabel, icon: info.row.original.icon, description: info.row.original.description, roundedAvatar: info.row.original.roundedAvatar }, info.row.original.name)); },
91
+ },
92
+ {
93
+ accessorKey: "usedBy",
94
+ header: "Used by",
95
+ cell: function (info) { return (React.createElement(DataTable.CellContent, null, info.row.original.usedBy)); },
96
+ },
97
+ {
98
+ accessorKey: "addedBy",
99
+ header: "Added by",
100
+ cell: function (info) { return (React.createElement(DataTable.CellContent, null, info.row.original.addedBy)); },
101
+ },
102
+ {
103
+ accessorKey: "lastUpdated",
104
+ header: "Last updated",
105
+ cell: function (info) { return (React.createElement(DataTable.CellContent, null, info.row.original.lastUpdated)); },
106
+ enableSorting: false,
107
+ },
108
+ {
109
+ accessorKey: "size",
110
+ header: "Size",
111
+ cell: function (info) { return (React.createElement(DataTable.CellContent, null, info.row.original.size)); },
112
+ },
113
+ ];
8
114
  export var DataTableExample = function () {
9
- var data = [
10
- {
11
- name: "Soupinou with tooltip on avatar",
12
- usedBy: 100,
13
- addedBy: "User1",
14
- lastUpdated: "July 8, 2023",
15
- size: "32kb",
16
- avatarUrl: "https://avatars.githubusercontent.com/u/138893015?s=200&v=4",
17
- avatarTooltipLabel: "Meow",
18
- roundedAvatar: true,
19
- onClick: function () { return console.log("hehe"); },
20
- },
21
- {
22
- name: "Marketing",
23
- description: "(23 items)",
24
- usedBy: 8,
25
- addedBy: "User1",
26
- lastUpdated: "July 8, 2023",
27
- size: "32kb",
28
- avatarUrl: "https://dust.tt/static/droidavatar/Droid_Lime_3.jpg",
29
- roundedAvatar: true,
30
- onClick: function () { return console.log("hehe"); },
31
- },
32
- {
33
- name: "Design",
34
- usedBy: 2,
35
- addedBy: "User2",
36
- lastUpdated: "2023-07-09",
37
- size: "64kb",
38
- icon: FolderIcon,
39
- moreMenuItems: [
40
- {
41
- label: "Edit (disabled)",
42
- onClick: function () { return console.log("Edit"); },
43
- disabled: true,
44
- },
45
- ],
46
- },
47
- {
48
- name: "design",
49
- usedBy: 3,
50
- addedBy: "User21",
51
- lastUpdated: "2023-07-09",
52
- size: "64kb",
53
- icon: FolderIcon,
54
- moreMenuItems: [
55
- {
56
- label: "Edit",
57
- onClick: function () { return console.log("Edit"); },
58
- },
59
- ],
60
- },
61
- {
62
- name: "Development",
63
- usedBy: 5,
64
- addedBy: "User3",
65
- lastUpdated: "2023-07-07",
66
- size: "128kb",
67
- },
68
- {
69
- name: "Sales",
70
- usedBy: 10,
71
- addedBy: "User4",
72
- lastUpdated: "2023-07-10",
73
- size: "16kb",
74
- },
75
- {
76
- name: "HR",
77
- usedBy: 3,
78
- addedBy: "User5",
79
- lastUpdated: "2023-07-06",
80
- size: "48kb",
81
- },
82
- ];
83
- var columns = [
84
- {
85
- accessorKey: "name",
86
- header: "Name",
87
- sortingFn: "text",
88
- cell: function (info) { return (React.createElement(DataTable.CellContent, { avatarUrl: info.row.original.avatarUrl, avatarTooltipLabel: info.row.original.avatarTooltipLabel, icon: info.row.original.icon, description: info.row.original.description, roundedAvatar: info.row.original.roundedAvatar }, info.row.original.name)); },
89
- },
90
- {
91
- accessorKey: "usedBy",
92
- header: "Used by",
93
- cell: function (info) { return (React.createElement(DataTable.CellContent, null, info.row.original.usedBy)); },
94
- },
95
- {
96
- accessorKey: "addedBy",
97
- header: "Added by",
98
- cell: function (info) { return (React.createElement(DataTable.CellContent, null, info.row.original.addedBy)); },
99
- },
100
- {
101
- accessorKey: "lastUpdated",
102
- header: "Last updated",
103
- cell: function (info) { return (React.createElement(DataTable.CellContent, null, info.row.original.lastUpdated)); },
104
- enableSorting: false,
105
- },
106
- {
107
- accessorKey: "size",
108
- header: "Size",
109
- cell: function (info) { return (React.createElement(DataTable.CellContent, null, info.row.original.size)); },
110
- },
111
- ];
115
+ var _a = __read(React.useState(""), 2), filter = _a[0], setFilter = _a[1];
112
116
  return (React.createElement("div", { className: "s-w-full s-max-w-4xl s-overflow-x-auto" },
113
- React.createElement(DataTable, { data: data, columns: columns, initialColumnOrder: [{ id: "name", desc: false }], columnsBreakpoints: { lastUpdated: "sm" } })));
117
+ React.createElement(Input, { name: "filter", placeholder: "Filter", value: filter, onChange: function (v) { return setFilter(v); } }),
118
+ React.createElement(DataTable, { data: data, filter: filter, filterColumn: "name", columns: columns })));
119
+ };
120
+ export var DataTablePaginatedExample = function () {
121
+ var _a = __read(React.useState({
122
+ pageIndex: 0,
123
+ pageSize: 2,
124
+ }), 2), pagination = _a[0], setPagination = _a[1];
125
+ var _b = __read(React.useState(""), 2), filter = _b[0], setFilter = _b[1];
126
+ return (React.createElement("div", { className: "s-w-full s-max-w-4xl s-overflow-x-auto" },
127
+ React.createElement(Input, { name: "filter", placeholder: "Filter", value: filter, onChange: function (v) { return setFilter(v); } }),
128
+ React.createElement(DataTable, { data: data, filter: filter, filterColumn: "name", pagination: pagination, setPagination: setPagination, columns: columns, initialColumnOrder: [{ id: "name", desc: false }], columnsBreakpoints: { lastUpdated: "sm" } })));
129
+ };
130
+ export var DataTablePaginatedServerSideExample = function () {
131
+ var _a = __read(React.useState({
132
+ pageIndex: 0,
133
+ pageSize: 2,
134
+ }), 2), pagination = _a[0], setPagination = _a[1];
135
+ var _b = __read(React.useState(""), 2), filter = _b[0], setFilter = _b[1];
136
+ var rows = useMemo(function () {
137
+ return data.slice(pagination.pageIndex * pagination.pageSize, (pagination.pageIndex + 1) * pagination.pageSize);
138
+ }, [data, pagination]);
139
+ return (React.createElement("div", { className: "s-w-full s-max-w-4xl s-overflow-x-auto" },
140
+ React.createElement(Input, { name: "filter", placeholder: "Filter", value: filter, onChange: function (v) { return setFilter(v); } }),
141
+ React.createElement(DataTable, { data: rows, totalRowCount: data.length, filter: filter, filterColumn: "name", pagination: pagination, setPagination: setPagination, columns: columns, initialColumnOrder: [{ id: "name", desc: false }], columnsBreakpoints: { lastUpdated: "sm" } })));
114
142
  };
115
143
  //# sourceMappingURL=DataTable.stories.js.map