@yimingliao/cms 0.0.191 → 0.0.193

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.
@@ -18,3 +18,4 @@ export { createProcessContentHtml } from '../../src/client/applications/form/pro
18
18
  export { cn } from '../../src/client/applications/shadcn/utils.js';
19
19
  import 'next/navigation';
20
20
  export { isConfirm } from '../../src/client/applications/ui/is-confirm.js';
21
+ export { buildPagination } from '../../src/client/applications/ui/build-pagination.js';
@@ -0,0 +1,65 @@
1
+ function buildPagination(input) {
2
+ const { page, pageSize, total, siblings = 2 } = input;
3
+ if (pageSize <= 0) {
4
+ throw new Error("pageSize must be greater than 0");
5
+ }
6
+ const totalPages = Math.max(1, Math.ceil(total / pageSize));
7
+ const safePage = Math.min(Math.max(1, page), totalPages);
8
+ const canPrev = safePage > 1;
9
+ const canNext = safePage < totalPages;
10
+ const items = [];
11
+ items.push({
12
+ type: "control",
13
+ control: "prev",
14
+ disabled: !canPrev,
15
+ page: safePage - 1
16
+ });
17
+ items.push({
18
+ type: "page",
19
+ page: 1,
20
+ active: safePage === 1
21
+ });
22
+ let start = Math.max(2, safePage - siblings);
23
+ let end = Math.min(totalPages - 1, safePage + siblings);
24
+ if (safePage - siblings < 2) {
25
+ end = Math.min(totalPages - 1, end + (2 - (safePage - siblings)));
26
+ }
27
+ if (safePage + siblings > totalPages - 1) {
28
+ start = Math.max(2, start - (safePage + siblings - (totalPages - 1)));
29
+ }
30
+ if (start > 2) {
31
+ items.push({ type: "ellipsis" });
32
+ }
33
+ for (let i = start; i <= end; i++) {
34
+ items.push({
35
+ type: "page",
36
+ page: i,
37
+ active: i === safePage
38
+ });
39
+ }
40
+ if (end < totalPages - 1) {
41
+ items.push({ type: "ellipsis" });
42
+ }
43
+ if (totalPages > 1) {
44
+ items.push({
45
+ type: "page",
46
+ page: totalPages,
47
+ active: safePage === totalPages
48
+ });
49
+ }
50
+ items.push({
51
+ type: "control",
52
+ control: "next",
53
+ disabled: !canNext,
54
+ page: safePage + 1
55
+ });
56
+ return {
57
+ page: safePage,
58
+ totalPages,
59
+ items,
60
+ canPrev,
61
+ canNext
62
+ };
63
+ }
64
+
65
+ export { buildPagination };
@@ -11,7 +11,7 @@ function joinUrl(...parts) {
11
11
  });
12
12
  const result = segments.join("/");
13
13
  if (result === "") return "/";
14
- return result.startsWith("/") ? result : `/${result}`;
14
+ return result;
15
15
  }
16
16
 
17
17
  export { joinUrl };
@@ -1,2 +1,2 @@
1
- export { AdminProvider, useAdmin, ThemeProvider, createSmartFetch, createRequestInterceptor, createResponseInterceptor, createFileUploadApi, createMultiFilesUploadApi, createUseCommand, createUseQuery, handleToast, type ShowToastOption, NAVBAR_HEIGHT, SIDEBAR_WIDTH, PAGE_HEADER_HEIGHT, cn, getControlMeta, usePickItems, getImgIdsFromHtmls, createProcessContentHtml, isConfirm, } from "../../src/client";
1
+ export { AdminProvider, useAdmin, ThemeProvider, createSmartFetch, createRequestInterceptor, createResponseInterceptor, createFileUploadApi, createMultiFilesUploadApi, createUseCommand, createUseQuery, handleToast, type ShowToastOption, NAVBAR_HEIGHT, SIDEBAR_WIDTH, PAGE_HEADER_HEIGHT, cn, getControlMeta, usePickItems, getImgIdsFromHtmls, createProcessContentHtml, isConfirm, buildPagination, } from "../../src/client";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../export/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,aAAa,EACb,QAAQ,EACR,aAAa,EAEb,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EAEzB,mBAAmB,EACnB,yBAAyB,EAEzB,gBAAgB,EAChB,cAAc,EAEd,WAAW,EACX,KAAK,eAAe,EAMpB,aAAa,EACb,aAAa,EACb,kBAAkB,EAKlB,EAAE,EACF,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,SAAS,GACV,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../export/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,aAAa,EACb,QAAQ,EACR,aAAa,EAEb,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EAEzB,mBAAmB,EACnB,yBAAyB,EAEzB,gBAAgB,EAChB,cAAc,EAEd,WAAW,EACX,KAAK,eAAe,EAMpB,aAAa,EACb,aAAa,EACb,kBAAkB,EAKlB,EAAE,EACF,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,SAAS,EACT,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { useDeviceInfo } from "./auth";
2
2
  export { usePickItems, getControlMeta, getImgIdsFromHtmls, createProcessContentHtml, } from "./form";
3
3
  export { cn, useIsMobile } from "./shadcn";
4
- export { useCountdown, useParentPathname, isConfirm } from "./ui";
4
+ export { useCountdown, useParentPathname, isConfirm, buildPagination, } from "./ui";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/client/applications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/client/applications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,eAAe,GAChB,MAAM,MAAM,CAAC"}
@@ -0,0 +1,26 @@
1
+ type PaginationItem = {
2
+ type: "page";
3
+ page: number;
4
+ active: boolean;
5
+ } | {
6
+ type: "ellipsis";
7
+ } | {
8
+ type: "control";
9
+ control: "prev" | "next";
10
+ disabled: boolean;
11
+ page: number;
12
+ };
13
+ export declare function buildPagination(input: {
14
+ page: number;
15
+ pageSize: number;
16
+ total: number;
17
+ siblings?: number;
18
+ }): {
19
+ page: number;
20
+ totalPages: number;
21
+ items: PaginationItem[];
22
+ canPrev: boolean;
23
+ canNext: boolean;
24
+ };
25
+ export {};
26
+ //# sourceMappingURL=build-pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-pagination.d.ts","sourceRoot":"","sources":["../../../../../../src/client/applications/ui/build-pagination.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GACf;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;CAClB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEN,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG;IACF,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB,CAkFA"}
@@ -1,4 +1,5 @@
1
1
  export { useCountdown } from "./use-count-down";
2
2
  export { useParentPathname } from "./use-parent-pathname";
3
3
  export { isConfirm } from "./is-confirm";
4
+ export { buildPagination } from "./build-pagination";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/client/applications/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/client/applications/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export { AdminProvider, useAdmin, ThemeProvider, createSmartFetch, createRequestInterceptor, createResponseInterceptor, createFileUploadApi, createMultiFilesUploadApi, createUseCommand, createUseQuery, handleToast, type ShowToastOption, } from "./infrastructure";
2
2
  export { NAVBAR_HEIGHT, SIDEBAR_WIDTH, PAGE_HEADER_HEIGHT, } from "./interfaces";
3
- export { cn, getControlMeta, usePickItems, getImgIdsFromHtmls, createProcessContentHtml, isConfirm, } from "./applications";
3
+ export { cn, getControlMeta, usePickItems, getImgIdsFromHtmls, createProcessContentHtml, isConfirm, buildPagination, } from "./applications";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,aAAa,EACb,QAAQ,EACR,aAAa,EAEb,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EAEzB,mBAAmB,EACnB,yBAAyB,EAEzB,gBAAgB,EAChB,cAAc,EAEd,WAAW,EACX,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAEL,aAAa,EACb,aAAa,EACb,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAKtB,OAAO,EACL,EAAE,EACF,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,SAAS,GACV,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,aAAa,EACb,QAAQ,EACR,aAAa,EAEb,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EAEzB,mBAAmB,EACnB,yBAAyB,EAEzB,gBAAgB,EAChB,cAAc,EAEd,WAAW,EACX,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAEL,aAAa,EACb,aAAa,EACb,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAKtB,OAAO,EACL,EAAE,EACF,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,SAAS,EACT,eAAe,GAChB,MAAM,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yimingliao/cms",
3
- "version": "0.0.191",
3
+ "version": "0.0.193",
4
4
  "author": "Yiming Liao",
5
5
  "license": "MIT",
6
6
  "type": "module",