@a5it/sync-ui 0.1.20 → 0.1.21

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.
@@ -9,7 +9,7 @@ export type DataTableResetProps = {
9
9
  };
10
10
  /**
11
11
  * Reset button that clears all active filters.
12
- * Only visible when at least one filter is active.
12
+ * Visible when table filters are active or URL has any query params.
13
13
  *
14
14
  * Resets:
15
15
  * - Search input
@@ -1 +1 @@
1
- {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../../src/components/data-table/filters/reset.tsx"],"names":[],"mappings":"AAQA,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,eAAe,EACf,KAAe,GAChB,EAAE,mBAAmB,kDAsCrB"}
1
+ {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../../src/components/data-table/filters/reset.tsx"],"names":[],"mappings":"AAQA,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,eAAe,EACf,KAAe,GAChB,EAAE,mBAAmB,kDAqFrB"}
@@ -1,11 +1,12 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
3
4
  import { RotateCcw } from "lucide-react";
4
5
  import { cn } from "../../../lib/utils";
5
6
  import { useDataTable } from "../provider";
6
7
  /**
7
8
  * Reset button that clears all active filters.
8
- * Only visible when at least one filter is active.
9
+ * Visible when table filters are active or URL has any query params.
9
10
  *
10
11
  * Resets:
11
12
  * - Search input
@@ -16,13 +17,51 @@ import { useDataTable } from "../provider";
16
17
  export function DataTableReset({ className, buttonClassName, label = "Reset", }) {
17
18
  const { urlState, table } = useDataTable();
18
19
  const { hasActiveFilters, resetAllFilters } = urlState;
19
- // Don't render if no filters are active
20
- if (!hasActiveFilters) {
20
+ const [hasAnyQueryParams, setHasAnyQueryParams] = React.useState(false);
21
+ const updateHasAnyQueryParams = React.useCallback(() => {
22
+ if (typeof window === "undefined") {
23
+ setHasAnyQueryParams(false);
24
+ return;
25
+ }
26
+ const params = new URLSearchParams(window.location.search);
27
+ setHasAnyQueryParams(params.toString().length > 0);
28
+ }, []);
29
+ const clearAllQueryParams = React.useCallback(() => {
30
+ if (typeof window === "undefined") {
31
+ return;
32
+ }
33
+ const { pathname, hash } = window.location;
34
+ window.history.replaceState(window.history.state, "", `${pathname}${hash}`);
35
+ if (typeof PopStateEvent === "function") {
36
+ window.dispatchEvent(new PopStateEvent("popstate"));
37
+ }
38
+ else {
39
+ window.dispatchEvent(new Event("popstate"));
40
+ }
41
+ setHasAnyQueryParams(false);
42
+ }, []);
43
+ React.useEffect(() => {
44
+ updateHasAnyQueryParams();
45
+ if (typeof window === "undefined") {
46
+ return;
47
+ }
48
+ window.addEventListener("popstate", updateHasAnyQueryParams);
49
+ return () => {
50
+ window.removeEventListener("popstate", updateHasAnyQueryParams);
51
+ };
52
+ }, [updateHasAnyQueryParams]);
53
+ React.useEffect(() => {
54
+ updateHasAnyQueryParams();
55
+ }, [hasActiveFilters, updateHasAnyQueryParams]);
56
+ // Show when table filters are active or URL has any query params.
57
+ if (!hasActiveFilters && !hasAnyQueryParams) {
21
58
  return null;
22
59
  }
23
60
  const handleReset = () => {
24
61
  // Reset URL state
25
62
  resetAllFilters();
63
+ // Ensure every query param is removed, including params not managed by urlState.
64
+ window.setTimeout(clearAllQueryParams, 0);
26
65
  // Also reset TanStack table state
27
66
  table.setSorting([]);
28
67
  table.setGlobalFilter("");
@@ -1 +1 @@
1
- {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../../src/components/data-table/filters/reset.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,SAAS,EACT,eAAe,EACf,KAAK,GAAG,OAAO,GACK;IACpB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,YAAY,EAAO,CAAC;IAChD,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;IAEvD,wCAAwC;IACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,kBAAkB;QAClB,eAAe,EAAE,CAAC;QAElB,kCAAkC;QAClC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC1B,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC9B,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,EAAE,CACX,iEAAiE,EACjE,6BAA6B,EAC7B,eAAe,CAChB,aAED,KAAC,SAAS,IAAC,SAAS,EAAC,wBAAwB,wBAAe,EAC5D,eAAM,SAAS,EAAC,qCAAqC,YAClD,KAAK,GACD,IACA,GACL,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../../src/components/data-table/filters/reset.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a5it/sync-ui",
3
- "version": "0.1.20",
3
+ "version": "0.1.21",
4
4
  "description": "Shared UI components for A5 apps.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",