@pallasoft/ps-table-components 1.22.2 → 1.23.0

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 (64) hide show
  1. package/dist/components/ps-data-table.d.ts +2 -1
  2. package/dist/components/ps-data-table.js +45 -10
  3. package/dist/components/ps-table-reorder-frame.js +15 -2
  4. package/dist/components/ps-table-reorder-handle.js +1 -1
  5. package/dist/components/ps-table-sort-header.js +1 -1
  6. package/dist/components/ps-table-sortable-row.d.ts +5 -1
  7. package/dist/components/ps-table-sortable-row.js +12 -4
  8. package/dist/constants/ps-table-drop-classes.d.ts +2 -0
  9. package/dist/constants/ps-table-drop-classes.js +8 -0
  10. package/dist/constants/ps-table-drop-placement.d.ts +6 -0
  11. package/dist/constants/ps-table-drop-placement.js +8 -0
  12. package/dist/constants/ps-table-pin-classes.d.ts +16 -0
  13. package/dist/constants/ps-table-pin-classes.js +19 -0
  14. package/dist/constants/table-breakpoint.d.ts +7 -0
  15. package/dist/constants/table-breakpoint.js +13 -0
  16. package/dist/esm/components/ps-data-table.js +46 -11
  17. package/dist/esm/components/ps-table-reorder-frame.js +15 -2
  18. package/dist/esm/components/ps-table-reorder-handle.js +1 -1
  19. package/dist/esm/components/ps-table-sort-header.js +1 -1
  20. package/dist/esm/components/ps-table-sortable-row.js +12 -4
  21. package/dist/esm/constants/ps-table-drop-classes.js +5 -0
  22. package/dist/esm/constants/ps-table-drop-placement.js +5 -0
  23. package/dist/esm/constants/ps-table-pin-classes.js +16 -0
  24. package/dist/esm/constants/table-breakpoint.js +10 -0
  25. package/dist/esm/hooks/use-ps-table-overflow.js +19 -0
  26. package/dist/esm/hooks/use-ps-table-reorder.js +89 -15
  27. package/dist/esm/index.js +10 -0
  28. package/dist/esm/interfaces/table-drop.js +1 -0
  29. package/dist/esm/interfaces/table-nesting-announcements.js +1 -0
  30. package/dist/esm/interfaces/table-overflow-edges.js +1 -0
  31. package/dist/esm/interfaces/table-pin-classes.js +1 -0
  32. package/dist/esm/interfaces/table-reorder-nesting-binding.js +1 -0
  33. package/dist/esm/interfaces/table-reorder-nesting.js +1 -0
  34. package/dist/esm/services/ps-table-overflow-service.js +11 -0
  35. package/dist/esm/services/ps-table-pin-service.js +22 -0
  36. package/dist/esm/services/ps-table-reorder-service.js +38 -1
  37. package/dist/hooks/use-ps-table-overflow.d.ts +6 -0
  38. package/dist/hooks/use-ps-table-overflow.js +23 -0
  39. package/dist/hooks/use-ps-table-reorder.d.ts +6 -2
  40. package/dist/hooks/use-ps-table-reorder.js +87 -13
  41. package/dist/index.d.ts +10 -0
  42. package/dist/index.js +10 -0
  43. package/dist/interfaces/table-column.d.ts +3 -0
  44. package/dist/interfaces/table-drop.d.ts +5 -0
  45. package/dist/interfaces/table-drop.js +2 -0
  46. package/dist/interfaces/table-nesting-announcements.d.ts +5 -0
  47. package/dist/interfaces/table-nesting-announcements.js +2 -0
  48. package/dist/interfaces/table-overflow-edges.d.ts +4 -0
  49. package/dist/interfaces/table-overflow-edges.js +2 -0
  50. package/dist/interfaces/table-pin-classes.d.ts +5 -0
  51. package/dist/interfaces/table-pin-classes.js +2 -0
  52. package/dist/interfaces/table-reorder-nesting-binding.d.ts +8 -0
  53. package/dist/interfaces/table-reorder-nesting-binding.js +2 -0
  54. package/dist/interfaces/table-reorder-nesting.d.ts +8 -0
  55. package/dist/interfaces/table-reorder-nesting.js +2 -0
  56. package/dist/interfaces/table-reorder-row-props.d.ts +3 -0
  57. package/dist/interfaces/table-reorder.d.ts +4 -2
  58. package/dist/services/ps-table-overflow-service.d.ts +6 -0
  59. package/dist/services/ps-table-overflow-service.js +15 -0
  60. package/dist/services/ps-table-pin-service.d.ts +5 -0
  61. package/dist/services/ps-table-pin-service.js +26 -0
  62. package/dist/services/ps-table-reorder-service.d.ts +11 -0
  63. package/dist/services/ps-table-reorder-service.js +38 -1
  64. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -19,7 +19,9 @@ __exportStar(require("./components/ps-streamed-rows"), exports);
19
19
  __exportStar(require("./components/ps-table-stream-status"), exports);
20
20
  __exportStar(require("./components/ps-table-group-header"), exports);
21
21
  __exportStar(require("./components/ps-table-pagination"), exports);
22
+ __exportStar(require("./constants/table-breakpoint"), exports);
22
23
  __exportStar(require("./constants/table-card-role"), exports);
24
+ __exportStar(require("./constants/ps-table-pin-classes"), exports);
23
25
  __exportStar(require("./constants/table-column-size"), exports);
24
26
  __exportStar(require("./constants/table-filter-kind"), exports);
25
27
  __exportStar(require("./interfaces/table-column"), exports);
@@ -43,6 +45,11 @@ __exportStar(require("./services/ps-table-group-service"), exports);
43
45
  __exportStar(require("./services/ps-table-query-service"), exports);
44
46
  __exportStar(require("./services/ps-table-search-service"), exports);
45
47
  __exportStar(require("./services/ps-table-scroll-service"), exports);
48
+ __exportStar(require("./services/ps-table-pin-service"), exports);
49
+ __exportStar(require("./services/ps-table-overflow-service"), exports);
50
+ __exportStar(require("./hooks/use-ps-table-overflow"), exports);
51
+ __exportStar(require("./interfaces/table-pin-classes"), exports);
52
+ __exportStar(require("./interfaces/table-overflow-edges"), exports);
46
53
  __exportStar(require("./services/ps-table-stream-service"), exports);
47
54
  __exportStar(require("./components/ps-table-export-button"), exports);
48
55
  __exportStar(require("./constants/ps-table-download-config"), exports);
@@ -52,4 +59,7 @@ __exportStar(require("./hooks/use-ps-table-page"), exports);
52
59
  __exportStar(require("./interfaces/ps-table-page-state"), exports);
53
60
  __exportStar(require("./interfaces/table-reorder"), exports);
54
61
  __exportStar(require("./interfaces/table-reorder-announcements"), exports);
62
+ __exportStar(require("./interfaces/table-reorder-nesting"), exports);
63
+ __exportStar(require("./interfaces/table-nesting-announcements"), exports);
64
+ __exportStar(require("./constants/ps-table-drop-placement"), exports);
55
65
  __exportStar(require("./services/ps-table-reorder-service"), exports);
@@ -1,4 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
+ import type { PsTableBreakpoint } from '../constants/table-breakpoint';
2
3
  import type { PsTableCardRole } from '../constants/table-card-role';
3
4
  import type { PsTableColumnSize } from '../constants/table-column-size';
4
5
  import type { PsTableColumnFilter } from './table-column-filter';
@@ -9,10 +10,12 @@ export interface PsTableColumn<RowData> {
9
10
  cardRole?: PsTableCardRole;
10
11
  filter?: PsTableColumnFilter<RowData>;
11
12
  footer?: ReactNode;
13
+ hideBelow?: PsTableBreakpoint;
12
14
  hideOnCards?: boolean;
13
15
  id: string;
14
16
  label: string;
15
17
  minWidth?: string;
18
+ pinEnd?: boolean;
16
19
  render: (row: RowData) => ReactNode;
17
20
  size?: PsTableColumnSize;
18
21
  sortValue?: (row: RowData) => string | number | null;
@@ -0,0 +1,5 @@
1
+ import type { PsTableDropPlacement } from '../constants/ps-table-drop-placement';
2
+ export interface PsTableDrop {
3
+ overId: string;
4
+ placement: PsTableDropPlacement;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export interface PsTableNestingAnnouncements {
2
+ after: (rowLabel: string, targetLabel: string) => string;
3
+ before: (rowLabel: string, targetLabel: string) => string;
4
+ into: (rowLabel: string, targetLabel: string) => string;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface PsTableOverflowEdges {
2
+ end: boolean;
3
+ start: boolean;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export interface PsTableLeadingPinClasses {
2
+ first: string;
3
+ reorder: string;
4
+ select: string;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import type { PsTableDropPlacement } from '../constants/ps-table-drop-placement';
2
+ import type { PsTableNestingAnnouncements } from './table-nesting-announcements';
3
+ export interface PsTableReorderNestingBinding {
4
+ announcements: PsTableNestingAnnouncements;
5
+ canDrag: (id: string) => boolean;
6
+ canDrop: (activeId: string, targetId: string, placement: PsTableDropPlacement) => boolean;
7
+ onMove: (activeId: string, targetId: string, placement: PsTableDropPlacement) => void;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import type { PsTableDropPlacement } from '../constants/ps-table-drop-placement';
2
+ import type { PsTableNestingAnnouncements } from './table-nesting-announcements';
3
+ export interface PsTableReorderNesting<RowData> {
4
+ announcements: PsTableNestingAnnouncements;
5
+ canDrag: (row: RowData) => boolean;
6
+ canDrop: (active: RowData, target: RowData, placement: PsTableDropPlacement) => boolean;
7
+ onMove: (active: RowData, target: RowData, placement: PsTableDropPlacement) => void;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,6 +1,9 @@
1
+ import type { PsTableDropPlacement } from '../constants/ps-table-drop-placement';
1
2
  export interface PsTableReorderRowProps {
3
+ dropPlacement: PsTableDropPlacement | null;
2
4
  handleLabel: string;
3
5
  hasHandle: boolean;
4
6
  isDisabled: boolean;
7
+ isDropTarget: boolean;
5
8
  rowId: string;
6
9
  }
@@ -1,4 +1,5 @@
1
1
  import type { PsTableReorderAnnouncements } from './table-reorder-announcements';
2
+ import type { PsTableReorderNesting } from './table-reorder-nesting';
2
3
  export interface PsTableReorder<RowData> {
3
4
  announcements: PsTableReorderAnnouncements;
4
5
  cardsReason?: string;
@@ -6,7 +7,8 @@ export interface PsTableReorder<RowData> {
6
7
  disabledReason?: string;
7
8
  enabled: boolean;
8
9
  getHandleLabel: (rowLabel: string) => string;
9
- groupKey: (row: RowData) => string;
10
+ groupKey?: (row: RowData) => string;
10
11
  instructions: string;
11
- onReorder: (groupKey: string, orderedIds: string[]) => void;
12
+ nesting?: PsTableReorderNesting<RowData>;
13
+ onReorder?: (groupKey: string, orderedIds: string[]) => void;
12
14
  }
@@ -0,0 +1,6 @@
1
+ import type { PsTableOverflowEdges } from '../interfaces/table-overflow-edges';
2
+ export declare class PsTableOverflowService {
3
+ static readonly none: PsTableOverflowEdges;
4
+ static edges(scrollLeft: number, clientWidth: number, scrollWidth: number): PsTableOverflowEdges;
5
+ static isSame(current: PsTableOverflowEdges, next: PsTableOverflowEdges): boolean;
6
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsTableOverflowService = void 0;
4
+ class PsTableOverflowService {
5
+ static edges(scrollLeft, clientWidth, scrollWidth) {
6
+ const start = Math.abs(scrollLeft) > 0.5;
7
+ const end = scrollWidth - clientWidth - Math.abs(scrollLeft) > 0.5;
8
+ return { end, start };
9
+ }
10
+ static isSame(current, next) {
11
+ return current.end === next.end && current.start === next.start;
12
+ }
13
+ }
14
+ exports.PsTableOverflowService = PsTableOverflowService;
15
+ PsTableOverflowService.none = { end: false, start: false };
@@ -0,0 +1,5 @@
1
+ import type { PsTableLeadingPinClasses } from '../interfaces/table-pin-classes';
2
+ export declare class PsTablePinService {
3
+ static leading(isPinned: boolean, hasReorder: boolean, isSelectable: boolean): PsTableLeadingPinClasses;
4
+ static end(isPinned: boolean): string;
5
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsTablePinService = void 0;
4
+ const ps_table_pin_classes_1 = require("../constants/ps-table-pin-classes");
5
+ class PsTablePinService {
6
+ static leading(isPinned, hasReorder, isSelectable) {
7
+ if (!isPinned)
8
+ return { first: '', reorder: '', select: '' };
9
+ const firstOffset = hasReorder && isSelectable
10
+ ? ps_table_pin_classes_1.PsTablePinClasses.first.both
11
+ : hasReorder
12
+ ? ps_table_pin_classes_1.PsTablePinClasses.first.reorder
13
+ : isSelectable
14
+ ? ps_table_pin_classes_1.PsTablePinClasses.first.select
15
+ : ps_table_pin_classes_1.PsTablePinClasses.first.none;
16
+ return {
17
+ first: `${ps_table_pin_classes_1.PsTablePinClasses.cell} ${ps_table_pin_classes_1.PsTablePinClasses.edge} ${firstOffset}`,
18
+ reorder: `${ps_table_pin_classes_1.PsTablePinClasses.cell} ${ps_table_pin_classes_1.PsTablePinClasses.reorder}`,
19
+ select: `${ps_table_pin_classes_1.PsTablePinClasses.cell} ${hasReorder ? ps_table_pin_classes_1.PsTablePinClasses.select.withReorder : ps_table_pin_classes_1.PsTablePinClasses.select.alone}`,
20
+ };
21
+ }
22
+ static end(isPinned) {
23
+ return isPinned ? ps_table_pin_classes_1.PsTablePinClasses.end : '';
24
+ }
25
+ }
26
+ exports.PsTablePinService = PsTablePinService;
@@ -1,11 +1,22 @@
1
1
  import type { Modifier } from '@dnd-kit/core';
2
+ import type { SortingStrategy } from '@dnd-kit/sortable';
3
+ import { PsTableDropPlacement } from '../constants/ps-table-drop-placement';
2
4
  import type { PsTableReorderApi } from '../interfaces/table-reorder-api';
3
5
  import type { PsTableReorderPlacement } from '../interfaces/table-reorder-placement';
4
6
  import type { PsTableReorderRun } from '../interfaces/table-reorder-run';
5
7
  export declare class PsTableReorderService {
8
+ static readonly edgeRatio = 0.25;
9
+ static readonly treeKey = "tree";
6
10
  static readonly plain: PsTableReorderApi;
7
11
  static runs<Item>(items: Item[], getKey: (item: Item) => string, getId: (item: Item) => string): PsTableReorderRun<Item>[];
8
12
  static placements<Item>(runs: PsTableReorderRun<Item>[], getId: (item: Item) => string): Map<string, PsTableReorderPlacement>;
9
13
  static move(ids: string[], activeId: string, overId: string): string[];
14
+ static pointerY(event: Event | null, deltaY: number): number | null;
15
+ static dropPlacement(pointerY: number | null, rect: {
16
+ height: number;
17
+ top: number;
18
+ }, fallback: PsTableDropPlacement, isAllowed: (placement: PsTableDropPlacement) => boolean): PsTableDropPlacement | null;
19
+ private static candidates;
20
+ static readonly still: SortingStrategy;
10
21
  static readonly lockToVerticalAxis: Modifier;
11
22
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PsTableReorderService = void 0;
4
+ const ps_table_drop_placement_1 = require("../constants/ps-table-drop-placement");
4
5
  class PsTableReorderService {
5
6
  static runs(items, getKey, getId) {
6
7
  const runs = [];
@@ -35,12 +36,48 @@ class PsTableReorderService {
35
36
  next.splice(to, 0, moved);
36
37
  return next;
37
38
  }
39
+ static pointerY(event, deltaY) {
40
+ if (event instanceof MouseEvent)
41
+ return event.clientY + deltaY;
42
+ if (typeof TouchEvent !== 'undefined' &&
43
+ event instanceof TouchEvent &&
44
+ event.touches.length > 0)
45
+ return event.touches[0].clientY + deltaY;
46
+ return null;
47
+ }
48
+ static dropPlacement(pointerY, rect, fallback, isAllowed) {
49
+ const allowed = PsTableReorderService.candidates(pointerY, rect, fallback).find(isAllowed);
50
+ return allowed === undefined ? null : allowed;
51
+ }
52
+ static candidates(pointerY, rect, fallback) {
53
+ if (pointerY === null || rect.height <= 0)
54
+ return [fallback];
55
+ const ratio = (pointerY - rect.top) / rect.height;
56
+ if (ratio < PsTableReorderService.edgeRatio)
57
+ return [ps_table_drop_placement_1.PsTableDropPlacement.before, ps_table_drop_placement_1.PsTableDropPlacement.into];
58
+ if (ratio > 1 - PsTableReorderService.edgeRatio)
59
+ return [ps_table_drop_placement_1.PsTableDropPlacement.after, ps_table_drop_placement_1.PsTableDropPlacement.into];
60
+ return [
61
+ ps_table_drop_placement_1.PsTableDropPlacement.into,
62
+ ratio < 0.5 ? ps_table_drop_placement_1.PsTableDropPlacement.before : ps_table_drop_placement_1.PsTableDropPlacement.after,
63
+ ];
64
+ }
38
65
  }
39
66
  exports.PsTableReorderService = PsTableReorderService;
67
+ PsTableReorderService.edgeRatio = 0.25;
68
+ PsTableReorderService.treeKey = 'tree';
40
69
  PsTableReorderService.plain = {
41
70
  Row: 'tr',
42
71
  isActive: false,
43
- rowProps: (rowId) => ({ handleLabel: '', hasHandle: false, isDisabled: true, rowId }),
72
+ rowProps: (rowId) => ({
73
+ dropPlacement: null,
74
+ handleLabel: '',
75
+ hasHandle: false,
76
+ isDisabled: true,
77
+ isDropTarget: false,
78
+ rowId,
79
+ }),
44
80
  run: (_runId, _ids, children) => children,
45
81
  };
82
+ PsTableReorderService.still = () => null;
46
83
  PsTableReorderService.lockToVerticalAxis = ({ transform }) => ({ ...transform, x: 0 });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pallasoft/ps-table-components",
3
- "version": "1.22.2",
3
+ "version": "1.23.0",
4
4
  "private": false,
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/esm/index.js",