@veeqo/transfigure 2.1.3 → 2.3.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 (110) hide show
  1. package/dist/api/types.d.ts +4 -0
  2. package/dist/components/Views/OptionsDropdown/styled.d.ts +2 -2
  3. package/dist/components/Views/PillNotifications/variants/styled.d.ts +2 -2
  4. package/dist/hooks/usePersistUnsavedChanges/usePersistUnsavedChanges.d.ts +1 -0
  5. package/dist/index100.cjs +1 -1
  6. package/dist/index100.js +20 -10
  7. package/dist/index101.cjs +1 -1
  8. package/dist/index101.js +17 -23
  9. package/dist/index102.cjs +1 -19
  10. package/dist/index102.js +24 -24
  11. package/dist/index103.cjs +19 -1
  12. package/dist/index103.js +24 -50
  13. package/dist/index104.cjs +1 -1
  14. package/dist/index104.js +12 -26
  15. package/dist/index105.cjs +1 -1
  16. package/dist/index105.js +7 -15
  17. package/dist/index107.cjs +1 -1
  18. package/dist/index107.js +48 -19
  19. package/dist/index108.cjs +1 -80
  20. package/dist/index108.js +28 -97
  21. package/dist/index109.cjs +80 -1
  22. package/dist/index109.js +98 -2
  23. package/dist/index110.cjs +1 -1
  24. package/dist/index110.js +1 -1
  25. package/dist/index111.cjs +1 -1
  26. package/dist/index111.js +1 -1
  27. package/dist/index114.cjs +1 -1
  28. package/dist/index114.js +2 -36
  29. package/dist/index117.cjs +1 -1
  30. package/dist/index117.js +36 -5
  31. package/dist/index118.cjs +1 -1
  32. package/dist/index118.js +5 -63
  33. package/dist/index119.cjs +1 -7
  34. package/dist/index119.js +63 -10
  35. package/dist/index120.cjs +7 -1
  36. package/dist/index120.js +10 -47
  37. package/dist/index121.cjs +1 -0
  38. package/dist/index121.js +49 -0
  39. package/dist/index13.cjs +1 -1
  40. package/dist/index13.js +1 -1
  41. package/dist/index17.cjs +1 -1
  42. package/dist/index17.js +1 -1
  43. package/dist/index19.cjs +1 -1
  44. package/dist/index19.js +2 -2
  45. package/dist/index20.cjs +1 -1
  46. package/dist/index20.js +1 -1
  47. package/dist/index22.cjs +1 -1
  48. package/dist/index22.js +1 -1
  49. package/dist/index30.cjs +1 -1
  50. package/dist/index30.js +1 -1
  51. package/dist/index31.cjs +1 -1
  52. package/dist/index31.js +1 -1
  53. package/dist/index34.cjs +1 -1
  54. package/dist/index34.js +1 -1
  55. package/dist/index36.cjs +1 -1
  56. package/dist/index36.js +2 -2
  57. package/dist/index39.cjs +1 -1
  58. package/dist/index39.js +1 -1
  59. package/dist/index40.cjs +1 -1
  60. package/dist/index40.js +1 -1
  61. package/dist/index41.cjs +1 -1
  62. package/dist/index41.js +1 -1
  63. package/dist/index42.cjs +1 -1
  64. package/dist/index42.js +1 -1
  65. package/dist/index47.cjs +1 -1
  66. package/dist/index47.js +2 -2
  67. package/dist/index61.cjs +1 -1
  68. package/dist/index61.js +42 -44
  69. package/dist/index68.cjs +1 -1
  70. package/dist/index68.js +41 -40
  71. package/dist/index69.cjs +1 -1
  72. package/dist/index69.js +236 -209
  73. package/dist/index79.cjs +1 -1
  74. package/dist/index79.js +1 -1
  75. package/dist/index81.cjs +1 -1
  76. package/dist/index81.js +1 -1
  77. package/dist/index85.cjs +1 -1
  78. package/dist/index85.js +1 -1
  79. package/dist/index86.cjs +1 -1
  80. package/dist/index86.js +1 -1
  81. package/dist/index88.cjs +1 -1
  82. package/dist/index88.js +7 -7
  83. package/dist/index89.cjs +1 -1
  84. package/dist/index89.js +41 -2
  85. package/dist/index90.cjs +1 -1
  86. package/dist/index90.js +9 -41
  87. package/dist/index91.cjs +1 -1
  88. package/dist/index91.js +2 -9
  89. package/dist/index92.cjs +1 -1
  90. package/dist/index92.js +13 -18
  91. package/dist/index93.cjs +104 -1
  92. package/dist/index93.js +119 -7
  93. package/dist/index94.cjs +1 -1
  94. package/dist/index94.js +68 -13
  95. package/dist/index95.cjs +1 -104
  96. package/dist/index95.js +27 -118
  97. package/dist/index96.cjs +1 -1
  98. package/dist/index96.js +2 -68
  99. package/dist/index97.cjs +1 -1
  100. package/dist/index97.js +39 -26
  101. package/dist/index98.cjs +1 -1
  102. package/dist/index98.js +11 -2
  103. package/dist/index99.cjs +1 -1
  104. package/dist/index99.js +8 -40
  105. package/dist/mobx/Filters/Filters.d.ts +12 -1
  106. package/dist/storybookHelpers/StoryWrapper.d.ts +1 -1
  107. package/dist/utils/sortUtils/index.d.ts +2 -0
  108. package/dist/utils/sortUtils/sortUtils.d.ts +11 -0
  109. package/dist/utils/sortUtils/sortUtils.test.d.ts +1 -0
  110. package/package.json +5 -5
package/dist/index95.cjs CHANGED
@@ -1,104 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("styled-components"),e=require("@veeqo/ui"),a=o=>o&&o.__esModule?o:{default:o},t=a(l),i=t.default.div`
2
- width: 1px;
3
- position: absolute;
4
- left: 50%;
5
- transform: translateX(-50%);
6
- border-left: 1px solid ${e.theme.colors.neutral.grey.dark};
7
- height: 100%;
8
- margin-top: 40px;
9
- `,n=t.default(e.Text)`
10
- writing-mode: vertical-rl;
11
- position: absolute;
12
- top: 50%;
13
- left: 50%;
14
- transform: translate(-50%, -50%);
15
- background: white;
16
- padding: 30px 0;
17
- text-align: center;
18
- font-size: 10px;
19
- color: ${e.theme.colors.neutral.ink.lightest};
20
- height: max-content;
21
- `,s=t.default(e.Text)`
22
- position: sticky;
23
- top: 0;
24
- background: #ffffff;
25
- padding-bottom: ${e.theme.sizes[2]};
26
- z-index: 1;
27
- `,d=t.default(e.Text)`
28
- color: ${e.theme.colors.neutral.ink.light};
29
- `,c=t.default(e.Grid)`
30
- // overflow-y: auto;
31
- position: unset;
32
- `,r=t.default(e.VisibilityOffIcon)`
33
- margin-left: auto;
34
- `,u=t.default(e.Stack)`
35
- border-radius: 4px;
36
- padding: 8px 12px;
37
- background: #ffffff;
38
- border: 1px solid ${e.theme.colors.neutral.ink.lightest};
39
- transition: all ease 200ms;
40
-
41
- ${({isHidden:o})=>o&&`
42
- ${e.Text} {
43
- color: ${e.theme.colors.neutral.ink.light};
44
- }
45
- `}
46
-
47
- &:hover {
48
- color: ${e.theme.colors.secondary.blue.base};
49
- background: ${e.theme.colors.neutral.grey.lightest};
50
- border: 1px solid ${e.theme.colors.neutral.grey.light};
51
-
52
- ${e.Text} {
53
- color: ${e.theme.colors.secondary.blue.base};
54
- }
55
-
56
- ${r} {
57
- color: ${e.theme.colors.neutral.ink.light};
58
- }
59
- }
60
-
61
- ${({isDragOverlay:o})=>o&&`
62
- color: ${e.theme.colors.secondary.blue.base};
63
- background: ${e.theme.colors.neutral.grey.lightest};
64
- border: 1px solid ${e.theme.colors.neutral.grey.light};
65
- cursor: grabbing;
66
-
67
- ${e.Text} {
68
- color: ${e.theme.colors.secondary.blue.base};
69
- }
70
- `}
71
- `,g=t.default.div`
72
- position: absolute;
73
- top: 0;
74
- left: 0;
75
- right: 0;
76
- bottom: 0;
77
- height: 100%;
78
- width: calc(100% - 2px);
79
- border-radius: 4px;
80
- border: 1px dashed ${e.theme.colors.neutral.grey.dark};
81
- background: ${e.theme.colors.neutral.grey.lightest};
82
- `,p=t.default(e.Stack)`
83
- flex: 1;
84
- padding: 0;
85
- `,h=t.default(e.Search)`
86
- input {
87
- height: 40px;
88
- box-sizing: border-box;
89
- }
90
-
91
- svg {
92
- width: 16px;
93
- }
94
- `,f=t.default.div`
95
- position: relative;
96
- min-height: 500px;
97
- `,m=t.default(e.BaseContainer)`
98
- display: flex;
99
- flex-direction: column;
100
- gap: ${e.theme.sizes.base};
101
- padding: ${e.theme.sizes.md};
102
- `,b=t.default.dialog`
103
- display: contents;
104
- `;exports.ColumnGroupsGrid=c;exports.ColumnItemWrapper=u;exports.ColumnSearch=h;exports.Container=f;exports.DetailedText=d;exports.DndDragOverlayDialog=b;exports.DraggingOverlay=g;exports.DroppableAreaStack=p;exports.HeaderContainer=m;exports.StickyText=s;exports.VerticalSeparator=i;exports.VerticalText=n;exports.VisibilityOffIcon=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("@veeqo/ui"),s=require("./index93.cjs"),o=({column:i,isHidden:n,isDragOverlay:r})=>{const a=i.title||i.tooltip;return e.jsxs(s.ColumnItemWrapper,{direction:"horizontal",spacing:"sm",alignY:"center",isHidden:n,isDragOverlay:r,children:[e.jsx(t.DragIndicatorIcon,{}),i.detailed?e.jsxs(t.Stack,{spacing:"xs",children:[e.jsxs(t.Text,{variant:"body",children:[a," (detailed)"]}),e.jsx(s.DetailedText,{variant:"hintText",children:i.detailed})]}):e.jsx(t.Text,{variant:"body",children:a}),!r&&n&&e.jsx(s.VisibilityOffIcon,{width:t.theme.sizes.base,height:t.theme.sizes.base})]})};exports.ColumnItem=o;
package/dist/index95.js CHANGED
@@ -1,121 +1,30 @@
1
- import r from "styled-components";
2
- import { Grid as l, theme as o, Text as t, BaseContainer as n, Search as s, Stack as i, VisibilityOffIcon as a } from "@veeqo/ui";
3
- const p = r.div`
4
- width: 1px;
5
- position: absolute;
6
- left: 50%;
7
- transform: translateX(-50%);
8
- border-left: 1px solid ${o.colors.neutral.grey.dark};
9
- height: 100%;
10
- margin-top: 40px;
11
- `, u = r(t)`
12
- writing-mode: vertical-rl;
13
- position: absolute;
14
- top: 50%;
15
- left: 50%;
16
- transform: translate(-50%, -50%);
17
- background: white;
18
- padding: 30px 0;
19
- text-align: center;
20
- font-size: 10px;
21
- color: ${o.colors.neutral.ink.lightest};
22
- height: max-content;
23
- `, b = r(t)`
24
- position: sticky;
25
- top: 0;
26
- background: #ffffff;
27
- padding-bottom: ${o.sizes[2]};
28
- z-index: 1;
29
- `, f = r(t)`
30
- color: ${o.colors.neutral.ink.light};
31
- `, h = r(l)`
32
- // overflow-y: auto;
33
- position: unset;
34
- `, c = r(a)`
35
- margin-left: auto;
36
- `, x = r(i)`
37
- border-radius: 4px;
38
- padding: 8px 12px;
39
- background: #ffffff;
40
- border: 1px solid ${o.colors.neutral.ink.lightest};
41
- transition: all ease 200ms;
42
-
43
- ${({ isHidden: e }) => e && `
44
- ${t} {
45
- color: ${o.colors.neutral.ink.light};
46
- }
47
- `}
48
-
49
- &:hover {
50
- color: ${o.colors.secondary.blue.base};
51
- background: ${o.colors.neutral.grey.lightest};
52
- border: 1px solid ${o.colors.neutral.grey.light};
53
-
54
- ${t} {
55
- color: ${o.colors.secondary.blue.base};
1
+ import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
+ import { DragIndicatorIcon as s, Stack as l, Text as o, theme as d } from "@veeqo/ui";
3
+ import { ColumnItemWrapper as c, DetailedText as h, VisibilityOffIcon as m } from "./index93.js";
4
+ const f = ({ column: t, isHidden: r, isDragOverlay: n }) => {
5
+ const a = t.title || t.tooltip;
6
+ return /* @__PURE__ */ i(
7
+ c,
8
+ {
9
+ direction: "horizontal",
10
+ spacing: "sm",
11
+ alignY: "center",
12
+ isHidden: r,
13
+ isDragOverlay: n,
14
+ children: [
15
+ /* @__PURE__ */ e(s, {}),
16
+ t.detailed ? /* @__PURE__ */ i(l, { spacing: "xs", children: [
17
+ /* @__PURE__ */ i(o, { variant: "body", children: [
18
+ a,
19
+ " (detailed)"
20
+ ] }),
21
+ /* @__PURE__ */ e(h, { variant: "hintText", children: t.detailed })
22
+ ] }) : /* @__PURE__ */ e(o, { variant: "body", children: a }),
23
+ !n && r && /* @__PURE__ */ e(m, { width: d.sizes.base, height: d.sizes.base })
24
+ ]
56
25
  }
57
-
58
- ${c} {
59
- color: ${o.colors.neutral.ink.light};
60
- }
61
- }
62
-
63
- ${({ isDragOverlay: e }) => e && `
64
- color: ${o.colors.secondary.blue.base};
65
- background: ${o.colors.neutral.grey.lightest};
66
- border: 1px solid ${o.colors.neutral.grey.light};
67
- cursor: grabbing;
68
-
69
- ${t} {
70
- color: ${o.colors.secondary.blue.base};
71
- }
72
- `}
73
- `, $ = r.div`
74
- position: absolute;
75
- top: 0;
76
- left: 0;
77
- right: 0;
78
- bottom: 0;
79
- height: 100%;
80
- width: calc(100% - 2px);
81
- border-radius: 4px;
82
- border: 1px dashed ${o.colors.neutral.grey.dark};
83
- background: ${o.colors.neutral.grey.lightest};
84
- `, y = r(i)`
85
- flex: 1;
86
- padding: 0;
87
- `, m = r(s)`
88
- input {
89
- height: 40px;
90
- box-sizing: border-box;
91
- }
92
-
93
- svg {
94
- width: 16px;
95
- }
96
- `, k = r.div`
97
- position: relative;
98
- min-height: 500px;
99
- `, v = r(n)`
100
- display: flex;
101
- flex-direction: column;
102
- gap: ${o.sizes.base};
103
- padding: ${o.sizes.md};
104
- `, w = r.dialog`
105
- display: contents;
106
- `;
26
+ );
27
+ };
107
28
  export {
108
- h as ColumnGroupsGrid,
109
- x as ColumnItemWrapper,
110
- m as ColumnSearch,
111
- k as Container,
112
- f as DetailedText,
113
- w as DndDragOverlayDialog,
114
- $ as DraggingOverlay,
115
- y as DroppableAreaStack,
116
- v as HeaderContainer,
117
- b as StickyText,
118
- p as VerticalSeparator,
119
- u as VerticalText,
120
- c as VisibilityOffIcon
29
+ f as ColumnItem
121
30
  };
package/dist/index96.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),e=require("@dnd-kit/core"),S=require("@dnd-kit/sortable"),h=require("./index95.cjs"),q=require("@veeqo/ui"),C=require("./index53.cjs"),E=require("./index112.cjs"),p=require("./index113.cjs"),A=require("./index12.cjs"),b=require("./index52.cjs"),x={droppable:{strategy:e.MeasuringStrategy.Always}},M={sideEffects:e.defaultDropAnimationSideEffects({styles:{active:{opacity:"0.5"}}})},j=({items:o,setItems:s,children:a,renderDragOverlay:n})=>{const{closeModal:i,openModal:l}=C.useModal(),c=e.useSensors(e.useSensor(e.PointerSensor),e.useSensor(e.KeyboardSensor,{coordinateGetter:S.sortableKeyboardCoordinates})),{activeId:t,handleDragCancel:d,handleDragEnd:u,handleDragOver:g,handleDragStart:D}=E.useDragHandlers({items:o,setItems:s}),{collisionDetectionStrategy:y}=p.useCollisionDetectionStrategy({items:o});return r.jsx(A.ErrorBoundary,{errorComponent:r.jsx(q.Alert,{variant:"error",title:"An error occurred",rightActions:[{label:"Reload",onClick:()=>{i(),l(b.ModalId.ORDERS_TABLE_MANAGEMENT)}}]}),children:r.jsxs(e.DndContext,{sensors:c,measuring:x,collisionDetection:y,onDragStart:D,onDragOver:g,onDragEnd:u,onDragCancel:d,children:[a,r.jsx(h.DndDragOverlayDialog,{open:!0,children:r.jsx(e.DragOverlay,{dropAnimation:M,zIndex:2001,children:t&&n?n(t):null})})]})})};exports.DndContainer=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var i=(e=>(e.Hidden="hidden",e.Visible="visible",e))(i||{});exports.ColumnGroupIds=i;
package/dist/index96.js CHANGED
@@ -1,70 +1,4 @@
1
- import { jsx as r, jsxs as f } from "react/jsx-runtime";
2
- import { useSensors as u, useSensor as n, PointerSensor as y, KeyboardSensor as S, DndContext as h, MeasuringStrategy as A, DragOverlay as E, defaultDropAnimationSideEffects as C } from "@dnd-kit/core";
3
- import { sortableKeyboardCoordinates as M } from "@dnd-kit/sortable";
4
- import { DndDragOverlayDialog as v } from "./index95.js";
5
- import { Alert as b } from "@veeqo/ui";
6
- import { useModal as x } from "./index53.js";
7
- import { useDragHandlers as O } from "./index112.js";
8
- import { useCollisionDetectionStrategy as I } from "./index113.js";
9
- import { ErrorBoundary as R } from "./index12.js";
10
- import { ModalId as j } from "./index52.js";
11
- const B = {
12
- droppable: {
13
- strategy: A.Always
14
- }
15
- }, G = {
16
- sideEffects: C({
17
- styles: {
18
- active: {
19
- opacity: "0.5"
20
- }
21
- }
22
- })
23
- }, q = ({
24
- items: o,
25
- setItems: a,
26
- children: i,
27
- renderDragOverlay: e
28
- }) => {
29
- const { closeModal: s, openModal: l } = x(), d = u(
30
- n(y),
31
- n(S, {
32
- coordinateGetter: M
33
- })
34
- ), { activeId: t, handleDragCancel: c, handleDragEnd: m, handleDragOver: p, handleDragStart: D } = O({ items: o, setItems: a }), { collisionDetectionStrategy: g } = I({
35
- items: o
36
- });
37
- return /* @__PURE__ */ r(R, { errorComponent: /* @__PURE__ */ r(b, { variant: "error", title: "An error occurred", rightActions: [
38
- {
39
- label: "Reload",
40
- onClick: () => {
41
- s(), l(j.ORDERS_TABLE_MANAGEMENT);
42
- }
43
- }
44
- ] }), children: /* @__PURE__ */ f(
45
- h,
46
- {
47
- sensors: d,
48
- measuring: B,
49
- collisionDetection: g,
50
- onDragStart: D,
51
- onDragOver: p,
52
- onDragEnd: m,
53
- onDragCancel: c,
54
- children: [
55
- i,
56
- /* @__PURE__ */ r(v, { open: !0, children: /* @__PURE__ */ r(
57
- E,
58
- {
59
- dropAnimation: G,
60
- zIndex: 2001,
61
- children: t && e ? e(t) : null
62
- }
63
- ) })
64
- ]
65
- }
66
- ) });
67
- };
1
+ var i = /* @__PURE__ */ ((e) => (e.Hidden = "hidden", e.Visible = "visible", e))(i || {});
68
2
  export {
69
- q as DndContainer
3
+ i as ColumnGroupIds
70
4
  };
package/dist/index97.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("@veeqo/ui"),s=require("./index95.cjs"),o=({column:i,isHidden:n,isDragOverlay:r})=>{const a=i.title||i.tooltip;return e.jsxs(s.ColumnItemWrapper,{direction:"horizontal",spacing:"sm",alignY:"center",isHidden:n,isDragOverlay:r,children:[e.jsx(t.DragIndicatorIcon,{}),i.detailed?e.jsxs(t.Stack,{spacing:"xs",children:[e.jsxs(t.Text,{variant:"body",children:[a," (detailed)"]}),e.jsx(s.DetailedText,{variant:"hintText",children:i.detailed})]}):e.jsx(t.Text,{variant:"body",children:a}),!r&&n&&e.jsx(s.VisibilityOffIcon,{width:t.theme.sizes.base,height:t.theme.sizes.base})]})};exports.ColumnItem=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("react"),f=require("./index63.cjs"),y=require("./index62.cjs"),g=require("./index53.cjs"),h=require("./index61.cjs"),p=require("./index5.cjs"),w=({pinnedLeftColumnIds:r,pinnedRightColumnIds:a})=>{const{Filters:{activeViewId:t},Notifications:{notify:e}}=y.useStores(),{closeModal:i}=g.useModal(),{mutate:c}=f.useViews(),{getActiveViewInAPIFormat:l}=h.usePersistUnsavedChanges(),[m,o]=C.useState(!1);return{saveColumns:async({visibleColumns:n})=>{if(t)try{if(o(!0),n.length<1){e({type:"error",text:"You must have at least one visible column."});return}const u=[...r,...n,...a],{arg:d,currentView:s}=l(),v={...d,columns:{...s==null?void 0:s.columns,columnIds:u}};await p.patchCustomView(t,{attributes:v}),await c(),i(),e({type:"success",text:"Columns updated successfully"})}catch{e({type:"error",text:"Failed to save columns"})}finally{o(!1)}},isSavingColumns:m}};exports.usePersistColumns=w;
package/dist/index97.js CHANGED
@@ -1,30 +1,43 @@
1
- import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
- import { DragIndicatorIcon as s, Stack as l, Text as o, theme as d } from "@veeqo/ui";
3
- import { ColumnItemWrapper as c, DetailedText as h, VisibilityOffIcon as m } from "./index95.js";
4
- const f = ({ column: t, isHidden: r, isDragOverlay: n }) => {
5
- const a = t.title || t.tooltip;
6
- return /* @__PURE__ */ i(
7
- c,
8
- {
9
- direction: "horizontal",
10
- spacing: "sm",
11
- alignY: "center",
12
- isHidden: r,
13
- isDragOverlay: n,
14
- children: [
15
- /* @__PURE__ */ e(s, {}),
16
- t.detailed ? /* @__PURE__ */ i(l, { spacing: "xs", children: [
17
- /* @__PURE__ */ i(o, { variant: "body", children: [
18
- a,
19
- " (detailed)"
20
- ] }),
21
- /* @__PURE__ */ e(h, { variant: "hintText", children: t.detailed })
22
- ] }) : /* @__PURE__ */ e(o, { variant: "body", children: a }),
23
- !n && r && /* @__PURE__ */ e(m, { width: d.sizes.base, height: d.sizes.base })
24
- ]
1
+ import { useState as d } from "react";
2
+ import { useViews as v } from "./index63.js";
3
+ import { useStores as y } from "./index62.js";
4
+ import { useModal as C } from "./index53.js";
5
+ import { usePersistUnsavedChanges as g } from "./index61.js";
6
+ import { patchCustomView as h } from "./index5.js";
7
+ const b = ({ pinnedLeftColumnIds: a, pinnedRightColumnIds: i }) => {
8
+ const {
9
+ Filters: {
10
+ activeViewId: e
11
+ },
12
+ Notifications: {
13
+ notify: t
25
14
  }
26
- );
15
+ } = y(), { closeModal: u } = C(), { mutate: m } = v(), { getActiveViewInAPIFormat: c } = g(), [l, o] = d(!1);
16
+ return {
17
+ saveColumns: async ({ visibleColumns: n }) => {
18
+ if (e)
19
+ try {
20
+ if (o(!0), n.length < 1) {
21
+ t({ type: "error", text: "You must have at least one visible column." });
22
+ return;
23
+ }
24
+ const r = [...a, ...n, ...i], { arg: f, currentView: s } = c(), p = {
25
+ ...f,
26
+ columns: {
27
+ ...s == null ? void 0 : s.columns,
28
+ columnIds: r
29
+ }
30
+ };
31
+ await h(e, { attributes: p }), await m(), u(), t({ type: "success", text: "Columns updated successfully" });
32
+ } catch {
33
+ t({ type: "error", text: "Failed to save columns" });
34
+ } finally {
35
+ o(!1);
36
+ }
37
+ },
38
+ isSavingColumns: l
39
+ };
27
40
  };
28
41
  export {
29
- f as ColumnItem
42
+ b as usePersistColumns
30
43
  };
package/dist/index98.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var i=(e=>(e.Hidden="hidden",e.Visible="visible",e))(i||{});exports.ColumnGroupIds=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=(t,r)=>{if(!r)return t;const i=r.toLowerCase();return t.filter(e=>{var s,a;return((s=e==null?void 0:e.title)==null?void 0:s.toLowerCase().includes(i))||((a=e==null?void 0:e.id)==null?void 0:a.toLowerCase().includes(i))})};exports.filterColumnsBySearch=d;
package/dist/index98.js CHANGED
@@ -1,4 +1,13 @@
1
- var i = /* @__PURE__ */ ((e) => (e.Hidden = "hidden", e.Visible = "visible", e))(i || {});
1
+ const a = (t, r) => {
2
+ if (!r) return t;
3
+ const i = r.toLowerCase();
4
+ return t.filter(
5
+ (e) => {
6
+ var s, C;
7
+ return ((s = e == null ? void 0 : e.title) == null ? void 0 : s.toLowerCase().includes(i)) || ((C = e == null ? void 0 : e.id) == null ? void 0 : C.toLowerCase().includes(i));
8
+ }
9
+ );
10
+ };
2
11
  export {
3
- i as ColumnGroupIds
12
+ a as filterColumnsBySearch
4
13
  };
package/dist/index99.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("react"),f=require("./index63.cjs"),y=require("./index62.cjs"),g=require("./index53.cjs"),h=require("./index61.cjs"),p=require("./index5.cjs"),w=({pinnedLeftColumnIds:r,pinnedRightColumnIds:a})=>{const{Filters:{activeViewId:t},Notifications:{notify:e}}=y.useStores(),{closeModal:i}=g.useModal(),{mutate:c}=f.useViews(),{getActiveViewInAPIFormat:l}=h.usePersistUnsavedChanges(),[m,o]=C.useState(!1);return{saveColumns:async({visibleColumns:n})=>{if(t)try{if(o(!0),n.length<1){e({type:"error",text:"You must have at least one visible column."});return}const u=[...r,...n,...a],{arg:d,currentView:s}=l(),v={...d,columns:{...s==null?void 0:s.columns,columnIds:u}};await p.patchCustomView(t,{attributes:v}),await c(),i(),e({type:"success",text:"Columns updated successfully"})}catch{e({type:"error",text:"Failed to save columns"})}finally{o(!1)}},isSavingColumns:m}};exports.usePersistColumns=w;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=r=>{if(!r)return{columnId:"",direction:"asc"};if(r.startsWith("-")){const t=r.slice(1);return t?{columnId:t,direction:"desc"}:{columnId:"",direction:"asc"}}return{columnId:r,direction:"asc"}};exports.parseSortString=e;
package/dist/index99.js CHANGED
@@ -1,43 +1,11 @@
1
- import { useState as d } from "react";
2
- import { useViews as v } from "./index63.js";
3
- import { useStores as y } from "./index62.js";
4
- import { useModal as C } from "./index53.js";
5
- import { usePersistUnsavedChanges as g } from "./index61.js";
6
- import { patchCustomView as h } from "./index5.js";
7
- const b = ({ pinnedLeftColumnIds: a, pinnedRightColumnIds: i }) => {
8
- const {
9
- Filters: {
10
- activeViewId: e
11
- },
12
- Notifications: {
13
- notify: t
14
- }
15
- } = y(), { closeModal: u } = C(), { mutate: m } = v(), { getActiveViewInAPIFormat: c } = g(), [l, o] = d(!1);
16
- return {
17
- saveColumns: async ({ visibleColumns: n }) => {
18
- if (e)
19
- try {
20
- if (o(!0), n.length < 1) {
21
- t({ type: "error", text: "You must have at least one visible column." });
22
- return;
23
- }
24
- const r = [...a, ...n, ...i], { arg: f, currentView: s } = c(), p = {
25
- ...f,
26
- columns: {
27
- ...s == null ? void 0 : s.columns,
28
- columnIds: r
29
- }
30
- };
31
- await h(e, { attributes: p }), await m(), u(), t({ type: "success", text: "Columns updated successfully" });
32
- } catch {
33
- t({ type: "error", text: "Failed to save columns" });
34
- } finally {
35
- o(!1);
36
- }
37
- },
38
- isSavingColumns: l
39
- };
1
+ const i = (c) => {
2
+ if (!c) return { columnId: "", direction: "asc" };
3
+ if (c.startsWith("-")) {
4
+ const n = c.slice(1);
5
+ return n ? { columnId: n, direction: "desc" } : { columnId: "", direction: "asc" };
6
+ }
7
+ return { columnId: c, direction: "asc" };
40
8
  };
41
9
  export {
42
- b as usePersistColumns
10
+ i as parseSortString
43
11
  };
@@ -2,6 +2,7 @@ import { DateValue } from 'react-aria-components';
2
2
  import { TransformedView } from '../../types';
3
3
  import { RangeFilter } from '../RangeFilter/RangeFilter';
4
4
  import { NumberRangeFilter } from '../NumberRangeFilter/NumberRangeFilter';
5
+ import { Table } from '../Table/Table';
5
6
  import { FilterType } from '../../constants/dateConstants';
6
7
  export declare class Filters {
7
8
  defaultPageSize: number;
@@ -16,8 +17,18 @@ export declare class Filters {
16
17
  dateRangeFilters: Map<string, RangeFilter>;
17
18
  numberRangeFilters: Map<string, NumberRangeFilter>;
18
19
  activeViewId: string | undefined;
20
+ defaultSortState: Table['sortState'];
21
+ tableStore: Table | undefined;
19
22
  isFiltersDropdownVisible: boolean;
20
- constructor();
23
+ /**
24
+ * @param tableStore - Optional reference to the Table store for sort state
25
+ * tracking in custom views. Sort state lives on Table (for the UI table
26
+ * component) but needs to participate in view persistence (owned by Filters).
27
+ * Filters reads Table.sortState for comparison and writes to it via setSortState
28
+ * on view initialisation and discard. This store-to-store coupling is intentional but
29
+ * should not be treated as a pattern to follow — keep stores decoupled wherever possible.
30
+ */
31
+ constructor(tableStore?: Table);
21
32
  initDefaultFilterMaps: () => void;
22
33
  updateUrl: (pushToHistory?: boolean) => void;
23
34
  setCurrentPage: (count: number) => void;
@@ -6,9 +6,9 @@ type Props = {
6
6
  initialViewId?: string;
7
7
  showNotifications?: boolean;
8
8
  };
9
+ export declare const table: Table;
9
10
  export declare const filters: Filters;
10
11
  export declare const views: Views;
11
12
  export declare const notifications: Notifications;
12
- export declare const table: Table;
13
13
  export declare const StoryWrapper: ({ children, initialFilters, initialArrayFilters, initialViewId, }: Props) => JSX.Element;
14
14
  export {};
@@ -0,0 +1,2 @@
1
+ export { parseSortString } from './sortUtils';
2
+ export type { SortState } from './sortUtils';
@@ -0,0 +1,11 @@
1
+ export type SortState = {
2
+ columnId: string;
3
+ direction: 'asc' | 'desc';
4
+ };
5
+ /**
6
+ * Parses a MONOLITH-format sort string into a SortState object.
7
+ * - undefined/empty → { columnId: '', direction: 'asc' }
8
+ * - "-columnId" → { columnId: 'columnId', direction: 'desc' }
9
+ * - "columnId" → { columnId: 'columnId', direction: 'asc' }
10
+ */
11
+ export declare const parseSortString: (sort: string | undefined) => SortState;
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veeqo/transfigure",
3
- "version": "2.1.3",
3
+ "version": "2.3.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "main": "dist/index.cjs",
@@ -38,9 +38,9 @@
38
38
  "@material-ui/core": "^4.11.0",
39
39
  "@tanstack/react-table": "^8.21.2",
40
40
  "@veeqo/components": "6.1.1",
41
- "@veeqo/ui": "13.10.0",
41
+ "@veeqo/ui": "14.0.3",
42
42
  "ajv-keywords": "^5.1.0",
43
- "axios": "^1.6.2",
43
+ "axios": "^1.15.0",
44
44
  "framer-motion": "^6.5.1",
45
45
  "kitsu-core": "^8.3.1",
46
46
  "lodash": "^4.17.19",
@@ -93,7 +93,7 @@
93
93
  "@typescript-eslint/eslint-plugin": "^8.37.0",
94
94
  "@typescript-eslint/parser": "^8.37.0",
95
95
  "@veeqo/components": "6.1.1",
96
- "@veeqo/ui": "13.10.0",
96
+ "@veeqo/ui": "14.0.3",
97
97
  "qs": "^6.10.3",
98
98
  "@vitejs/plugin-react": "^4.3.4",
99
99
  "@vitest/browser": "^3.1.2",
@@ -101,7 +101,7 @@
101
101
  "@vitest/ui": "^3.1.2",
102
102
  "ajv": "^8.17.1",
103
103
  "ajv-keywords": "^5.1.0",
104
- "axios": "^1.6.2",
104
+ "axios": "^1.15.0",
105
105
  "babel-plugin-styled-components": "^2.1.4",
106
106
  "eslint": "^9.21.0",
107
107
  "eslint-plugin-import": "^2.32.0",