fuse-importer 0.25.1 → 0.25.3

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.
@@ -71,9 +71,14 @@ var ImporterDropzone = function () {
71
71
  return XLSX.utils.sheet_to_json(sheet, { header: 1, raw: false });
72
72
  };
73
73
  var fileData = getDataFromFile(results);
74
- var headersCount = fileData[0].length;
74
+ var filteredArray = fileData
75
+ .map(function (subArray) {
76
+ return subArray.filter(function (value) { return value || value === 0 || value === false; });
77
+ })
78
+ .filter(function (subArray) { return subArray.length > 0; });
79
+ var headersCount = filteredArray[0].length;
75
80
  if (validHeadersCount(headersCount)) {
76
- setUploadedData(fileData);
81
+ setUploadedData(filteredArray);
77
82
  }
78
83
  setIsUploading(false);
79
84
  };
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  export declare const SpreadSheetData: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps, never>;
3
3
  export declare const SpreadSheetWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps, never>;
4
- export declare const TableView: import("styled-components").StyledComponent<import("react").MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, highlightFirstRow, setSortBy, rowWidth, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, ...props }: import("../../../common/Table/TableView").TableViewProps) => JSX.Element>, import("styled-components").DefaultTheme, {}, never>;
4
+ export declare const TableView: import("styled-components").StyledComponent<import("react").MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, highlightFirstRow, setSortBy, rowWidth, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, shouldBeDraggable, ...props }: import("../../../common/Table/TableView").TableViewProps) => JSX.Element>, import("styled-components").DefaultTheme, {}, never>;
@@ -80,10 +80,12 @@ export var ImporterContextProvider = function (_a) {
80
80
  apiToken,
81
81
  ]);
82
82
  var uploadedDataHeaders = useMemo(function () {
83
- return uploadedData &&
84
- uploadedData[0].map(function (ud) {
85
- return typeof ud === "number" ? ud.toString() : ud;
86
- });
83
+ var _a;
84
+ var initialParsing = (_a = uploadedData === null || uploadedData === void 0 ? void 0 : uploadedData[0]) === null || _a === void 0 ? void 0 : _a.map(function (ud) {
85
+ return typeof ud === "number" ? ud.toString() : ud;
86
+ });
87
+ var onlyValidValues = initialParsing === null || initialParsing === void 0 ? void 0 : initialParsing.filter(function (val) { return val; });
88
+ return (onlyValidValues === null || onlyValidValues === void 0 ? void 0 : onlyValidValues.length) ? onlyValidValues : [];
87
89
  }, [uploadedData]);
88
90
  useEffect(function () {
89
91
  if (!templateHeaderMatchings)
@@ -120,7 +122,7 @@ export var ImporterContextProvider = function (_a) {
120
122
  };
121
123
  useEffect(function () {
122
124
  (function () { return __awaiter(void 0, void 0, void 0, function () {
123
- var _a, organization_1, columns, importer_style_preferences, integrations_1, preview_first_time, error_1, errorMsg;
125
+ var _a, organization_1, columns, importer_style_preferences, integrations_1, preview_first_time, columnsOrderedByPosition, error_1, errorMsg;
124
126
  var _b, _c;
125
127
  return __generator(this, function (_d) {
126
128
  switch (_d.label) {
@@ -129,8 +131,9 @@ export var ImporterContextProvider = function (_a) {
129
131
  return [4 /*yield*/, fuseApi.get("/api/v1/importer/templates/".concat(templateSlug))];
130
132
  case 1:
131
133
  _a = (_d.sent()).data, organization_1 = _a.organization, columns = _a.columns, importer_style_preferences = _a.importer_style_preferences, integrations_1 = _a.integrations, preview_first_time = _a.preview_first_time;
134
+ columnsOrderedByPosition = columns.sort(function (a, b) { return a.position - b.position; });
132
135
  setOrganization(organization_1);
133
- setTemplateHeaders(columns);
136
+ setTemplateHeaders(columnsOrderedByPosition);
134
137
  setIntegrations(integrations_1);
135
138
  setPreviewFirstTime(preview_first_time);
136
139
  if (organization_1.plan && organization_1.plan.allow_style_customization) {
@@ -63,7 +63,7 @@ export var TableDataProvider = function (_a) {
63
63
  var _j = useState(null), totalPages = _j[0], setTotalPages = _j[1];
64
64
  var _k = useState(defaultSortBy), sortBy = _k[0], setSortBy = _k[1];
65
65
  var _l = useState(0), totalCount = _l[0], setTotalCount = _l[1];
66
- var _m = useState(7), pageSize = _m[0], setPageSize = _m[1];
66
+ var _m = useState(50), pageSize = _m[0], setPageSize = _m[1];
67
67
  var getData = function () { return __awaiter(void 0, void 0, void 0, function () {
68
68
  var payload, e_1;
69
69
  var _a, _b, _c;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ declare const Cell: React.MemoExoticComponent<any>;
3
+ declare const DraggableCell: React.MemoExoticComponent<any>;
4
+ export { Cell, DraggableCell };
@@ -0,0 +1,39 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { CSS } from "@dnd-kit/utilities";
14
+ import { useSortable } from "@dnd-kit/sortable";
15
+ import { Div } from "../../../styled/utils";
16
+ import { TableRow } from "./TableRow";
17
+ import React from "react";
18
+ import { areEqual } from "react-window";
19
+ var Cell = React.memo(function (_a) {
20
+ var data = _a.data, rowIndex = _a.rowIndex, style = _a.style;
21
+ var items = data.items, onRowClick = data.onRowClick, columns = data.columns, highlightFirstRow = data.highlightFirstRow, rowHeight = data.rowHeight, getItemKey = data.getItemKey;
22
+ var item = items[rowIndex];
23
+ return (_jsx(Div, __assign({ style: style }, { children: _jsx(TableRow, { columns: columns, onRowClick: onRowClick, highlightFirstRow: highlightFirstRow, h: rowHeight, row: item, indexI: rowIndex, isLast: rowIndex === items.length - 1, pRelative: true, getItemKey: getItemKey }) })));
24
+ }, areEqual);
25
+ var DraggableCell = React.memo(function (_a) {
26
+ var data = _a.data, rowIndex = _a.rowIndex, baseStyle = _a.style;
27
+ var items = data.items, onRowClick = data.onRowClick, columns = data.columns, highlightFirstRow = data.highlightFirstRow, rowHeight = data.rowHeight, getItemKey = data.getItemKey;
28
+ var item = items[rowIndex];
29
+ var _b = useSortable({
30
+ id: item.id,
31
+ }), listeners = _b.listeners, setNodeRef = _b.setNodeRef, transform = _b.transform;
32
+ var dragAndDropStyles = {
33
+ transform: CSS.Transform.toString(transform),
34
+ };
35
+ var dragAndDropHandler = __assign({}, listeners);
36
+ item.dragAndDropHandler = dragAndDropHandler;
37
+ return (_jsx(Div, __assign({ style: __assign(__assign({}, baseStyle), dragAndDropStyles), ref: setNodeRef }, { children: _jsx(TableRow, { columns: columns, onRowClick: onRowClick, highlightFirstRow: highlightFirstRow, h: rowHeight, row: item, indexI: rowIndex, isLast: rowIndex === items.length - 1, pRelative: true, getItemKey: getItemKey }) })));
38
+ }, areEqual);
39
+ export { Cell, DraggableCell };
@@ -37,5 +37,6 @@ export type TableViewProps = {
37
37
  onTableScroll?: (scrollTop: number) => void;
38
38
  onRowClick?: (row: any) => void;
39
39
  getItemKey?: (row: any) => string;
40
+ shouldBeDraggable?: boolean;
40
41
  } & DivCSSProps;
41
- export declare const TableView: React.MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, highlightFirstRow, setSortBy, rowWidth, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, ...props }: TableViewProps) => JSX.Element>;
42
+ export declare const TableView: React.MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, highlightFirstRow, setSortBy, rowWidth, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, shouldBeDraggable, ...props }: TableViewProps) => JSX.Element>;
@@ -24,16 +24,17 @@ var __rest = (this && this.__rest) || function (s, e) {
24
24
  }
25
25
  return t;
26
26
  };
27
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
27
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
28
28
  import React, { useRef, useMemo, useCallback } from "react";
29
29
  import { FixedSizeGrid as Grid, areEqual } from "react-window";
30
30
  import AutoSizer from "react-virtualized-auto-sizer";
31
31
  import styled, { css } from "styled-components";
32
+ import { SortableContext, verticalListSortingStrategy, } from "@dnd-kit/sortable";
32
33
  import { Div } from "../../../styled/utils";
33
34
  import { Spinner } from "../../Spinner";
34
35
  import { defaultTableRowHeightPx, defaultTableHeaderHeightPx } from "./common";
35
36
  import { TableHeaders } from "./TableHeaders";
36
- import { TableRow } from "./TableRow";
37
+ import { Cell, DraggableCell } from "./TableCells";
37
38
  export * from "./common";
38
39
  export * from "./TableHeaders";
39
40
  export * from "./TableRow";
@@ -56,14 +57,8 @@ var buildGridStyles = function (rowWidth) {
56
57
  gridStyles = __assign(__assign({}, gridStyles), { overflowX: "scroll" });
57
58
  return gridStyles;
58
59
  };
59
- var Cell = React.memo(function (_a) {
60
- var data = _a.data, rowIndex = _a.rowIndex, style = _a.style;
61
- var items = data.items, onRowClick = data.onRowClick, columns = data.columns, highlightFirstRow = data.highlightFirstRow, rowHeight = data.rowHeight, getItemKey = data.getItemKey;
62
- var item = items[rowIndex];
63
- return (_jsx(Div, __assign({ style: style }, { children: _jsx(TableRow, { columns: columns, onRowClick: onRowClick, highlightFirstRow: highlightFirstRow, h: rowHeight, row: item, indexI: rowIndex, isLast: rowIndex === items.length - 1, pRelative: true, getItemKey: getItemKey }) })));
64
- }, areEqual);
65
60
  export var TableView = React.memo(function (_a) {
66
- var data = _a.data, columns = _a.columns, pageSize = _a.pageSize, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.sortBy, sortBy = _c === void 0 ? { field: null, direction: null } : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.highlightFirstRow, highlightFirstRow = _e === void 0 ? false : _e, _f = _a.setSortBy, setSortBy = _f === void 0 ? null : _f, _g = _a.rowWidth, rowWidth = _g === void 0 ? 1 : _g, onSectionRendered = _a.onSectionRendered, _h = _a.tableHeadersHeight, tableHeadersHeight = _h === void 0 ? defaultTableHeaderHeightPx : _h, _j = _a.rowHeight, rowHeight = _j === void 0 ? defaultTableRowHeightPx : _j, _k = _a.h, h = _k === void 0 ? 500 : _k, _l = _a.onTableScroll, onTableScroll = _l === void 0 ? null : _l, _m = _a.getItemKey, getItemKey = _m === void 0 ? null : _m, props = __rest(_a, ["data", "columns", "pageSize", "onRowClick", "sortBy", "isLoading", "highlightFirstRow", "setSortBy", "rowWidth", "onSectionRendered", "tableHeadersHeight", "rowHeight", "h", "onTableScroll", "getItemKey"]);
61
+ var data = _a.data, columns = _a.columns, pageSize = _a.pageSize, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.sortBy, sortBy = _c === void 0 ? { field: null, direction: null } : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.highlightFirstRow, highlightFirstRow = _e === void 0 ? false : _e, _f = _a.setSortBy, setSortBy = _f === void 0 ? null : _f, _g = _a.rowWidth, rowWidth = _g === void 0 ? 1 : _g, onSectionRendered = _a.onSectionRendered, _h = _a.tableHeadersHeight, tableHeadersHeight = _h === void 0 ? defaultTableHeaderHeightPx : _h, _j = _a.rowHeight, rowHeight = _j === void 0 ? defaultTableRowHeightPx : _j, _k = _a.h, h = _k === void 0 ? 500 : _k, _l = _a.onTableScroll, onTableScroll = _l === void 0 ? null : _l, _m = _a.getItemKey, getItemKey = _m === void 0 ? null : _m, _o = _a.shouldBeDraggable, shouldBeDraggable = _o === void 0 ? false : _o, props = __rest(_a, ["data", "columns", "pageSize", "onRowClick", "sortBy", "isLoading", "highlightFirstRow", "setSortBy", "rowWidth", "onSectionRendered", "tableHeadersHeight", "rowHeight", "h", "onTableScroll", "getItemKey", "shouldBeDraggable"]);
67
62
  /*
68
63
  multiply the rowWidth by 0.95 to let the user know they can scroll
69
64
  horizontally (will display partial column on the right)
@@ -104,7 +99,7 @@ export var TableView = React.memo(function (_a) {
104
99
  }); }, [data, onRowClick, columns, highlightFirstRow, rowHeight]);
105
100
  return (_jsxs(TableViewWrapper, __assign({ "data-test-id": "table-view-wrapper", isLoading: isLoading, h: tableHeight }, props, { children: [tableHeadersUI, loadingUI, _jsx(AutoSizer, { children: function (_a) {
106
101
  var width = _a.width, height = _a.height;
107
- return (_jsx(Grid, __assign({ style: buildGridStyles(_rowWidth), width: width, columnCount: 1, itemData: itemData, onItemsRendered: onItemsRendered, onScroll: onScroll, columnWidth: Math.floor(width * _rowWidth), height: height - tableHeadersHeight, rowHeight: rowHeight, rowCount: data.length }, { children: Cell })));
102
+ return (_jsxs(_Fragment, { children: [shouldBeDraggable && (_jsx(SortableContext, __assign({ items: data, strategy: verticalListSortingStrategy }, { children: _jsx(Grid, __assign({ style: buildGridStyles(_rowWidth), width: width, columnCount: 1, itemData: itemData, onItemsRendered: onItemsRendered, onScroll: onScroll, columnWidth: Math.floor(width * _rowWidth), height: height - tableHeadersHeight, rowHeight: rowHeight, rowCount: data.length }, { children: DraggableCell })) }))), !shouldBeDraggable && (_jsx(Grid, __assign({ style: buildGridStyles(_rowWidth), width: width, columnCount: 1, itemData: itemData, onItemsRendered: onItemsRendered, onScroll: onScroll, columnWidth: Math.floor(width * _rowWidth), height: height - tableHeadersHeight, rowHeight: rowHeight, rowCount: data.length }, { children: Cell })))] }));
108
103
  } })] })));
109
104
  }, areEqual);
110
105
  var templateObject_1, templateObject_2, templateObject_3;
@@ -3,7 +3,9 @@ type Props = {
3
3
  blankState?: JSX.Element | null;
4
4
  columns: any[];
5
5
  onRowClick?: (row: any) => void;
6
+ templateSlug?: string;
7
+ shouldBeDraggable?: boolean;
6
8
  } & DivCSSProps;
7
- declare const Table: ({ columns, onRowClick, blankState, ...props }: Props) => JSX.Element;
9
+ declare const Table: ({ columns, onRowClick, blankState, templateSlug, shouldBeDraggable, ...props }: Props) => JSX.Element;
8
10
  export { Table };
9
11
  export * from "./TableDataProvider";
@@ -13,6 +13,42 @@ var __assign = (this && this.__assign) || function () {
13
13
  };
14
14
  return __assign.apply(this, arguments);
15
15
  };
16
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
23
+ });
24
+ };
25
+ var __generator = (this && this.__generator) || function (thisArg, body) {
26
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
27
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28
+ function verb(n) { return function (v) { return step([n, v]); }; }
29
+ function step(op) {
30
+ if (f) throw new TypeError("Generator is already executing.");
31
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
32
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
33
+ if (y = 0, t) op = [op[0] & 2, t.value];
34
+ switch (op[0]) {
35
+ case 0: case 1: t = op; break;
36
+ case 4: _.label++; return { value: op[1], done: false };
37
+ case 5: _.label++; y = op[1]; op = [0]; continue;
38
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
39
+ default:
40
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
41
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
42
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
43
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
44
+ if (t[2]) _.ops.pop();
45
+ _.trys.pop(); continue;
46
+ }
47
+ op = body.call(thisArg, _);
48
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
49
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
50
+ }
51
+ };
16
52
  var __rest = (this && this.__rest) || function (s, e) {
17
53
  var t = {};
18
54
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -26,19 +62,74 @@ var __rest = (this && this.__rest) || function (s, e) {
26
62
  };
27
63
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
28
64
  import styled, { css } from "styled-components";
65
+ import { DndContext, useSensors, useSensor, PointerSensor, KeyboardSensor, closestCenter, } from "@dnd-kit/core";
66
+ import { restrictToVerticalAxis, restrictToWindowEdges, } from "@dnd-kit/modifiers";
67
+ import { sortableKeyboardCoordinates } from "@dnd-kit/sortable";
29
68
  import { Div } from "../../styled/utils";
30
69
  import { Pagination } from "./Pagination";
31
70
  import { useTableContext } from "./TableDataProvider";
32
71
  import { TableView as TableViewBase } from "./TableView";
72
+ import { useReorderRows } from "./useReorderRows";
73
+ import { addToast } from "../../common/Toast";
33
74
  var TableView = styled(TableViewBase)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (p) {
34
75
  return p.withPagination && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n border-radius: 0px;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n "], ["\n border-radius: 0px;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n "])));
35
76
  });
36
77
  var Table = function (_a) {
37
- var columns = _a.columns, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.blankState, blankState = _c === void 0 ? null : _c, props = __rest(_a, ["columns", "onRowClick", "blankState"]);
38
- var _d = useTableContext(), data = _d.data, isLoading = _d.isLoading, sortBy = _d.sortBy, setSortBy = _d.setSortBy, totalPages = _d.totalPages;
78
+ var columns = _a.columns, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.blankState, blankState = _c === void 0 ? null : _c, templateSlug = _a.templateSlug, _d = _a.shouldBeDraggable, shouldBeDraggable = _d === void 0 ? false : _d, props = __rest(_a, ["columns", "onRowClick", "blankState", "templateSlug", "shouldBeDraggable"]);
79
+ var _e = useTableContext(), data = _e.data, isLoading = _e.isLoading, sortBy = _e.sortBy, setSortBy = _e.setSortBy, totalPages = _e.totalPages;
80
+ var reorderRows = useReorderRows(templateSlug).reorderRows;
39
81
  var withPagination = data.length > 0 && totalPages > 1;
82
+ var sensors = useSensors(useSensor(PointerSensor, {
83
+ activationConstraint: {
84
+ distance: 8,
85
+ },
86
+ }), useSensor(KeyboardSensor, {
87
+ coordinateGetter: sortableKeyboardCoordinates,
88
+ }));
40
89
  var paginationUI = (_jsx(_Fragment, { children: withPagination && (_jsx(Div, __assign({ dflex: true, justifyCenter: true, pb: 50 }, { children: _jsx(Pagination, {}) }))) }));
41
- return (_jsxs(Div, __assign({}, props, { children: [data.length ? (_jsx(TableView, __assign({ pageSize: data.length, withPagination: withPagination }, { isLoading: isLoading, data: data, columns: columns, sortBy: sortBy, setSortBy: setSortBy, onRowClick: onRowClick }))) : (blankState), paginationUI] })));
90
+ var handleDragEnd = function (event) { return __awaiter(void 0, void 0, void 0, function () {
91
+ var active, over, overIndex, overIndexIsFalsyButNotZero, error_1;
92
+ var _a, _b, _c;
93
+ return __generator(this, function (_d) {
94
+ switch (_d.label) {
95
+ case 0:
96
+ active = event.active, over = event.over;
97
+ overIndex = (_c = (_b = (_a = over === null || over === void 0 ? void 0 : over.data) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.sortable) === null || _c === void 0 ? void 0 : _c.index;
98
+ overIndexIsFalsyButNotZero = !overIndex && overIndex !== 0;
99
+ if (!(active === null || active === void 0 ? void 0 : active.id) || overIndexIsFalsyButNotZero || active.id === over.id) {
100
+ return [2 /*return*/];
101
+ }
102
+ _d.label = 1;
103
+ case 1:
104
+ _d.trys.push([1, 3, , 4]);
105
+ return [4 /*yield*/, reorderRows(active.id, overIndex + 1)];
106
+ case 2:
107
+ _d.sent();
108
+ return [3 /*break*/, 4];
109
+ case 3:
110
+ error_1 = _d.sent();
111
+ addToast("Failed to reorder rows", "error");
112
+ return [3 /*break*/, 4];
113
+ case 4: return [2 /*return*/];
114
+ }
115
+ });
116
+ }); };
117
+ var dndContextValues = {
118
+ sensors: shouldBeDraggable ? sensors : undefined,
119
+ collisionDetection: shouldBeDraggable ? closestCenter : undefined,
120
+ onDragEnd: shouldBeDraggable ? handleDragEnd : undefined,
121
+ modifiers: shouldBeDraggable
122
+ ? [restrictToVerticalAxis, restrictToWindowEdges]
123
+ : undefined,
124
+ };
125
+ return (_jsxs(Div, __assign({}, props, { children: [data.length ? (_jsx(DndContext, __assign({ sensors: dndContextValues.sensors, collisionDetection: dndContextValues.collisionDetection, onDragEnd: dndContextValues.onDragEnd, modifiers: dndContextValues.modifiers }, { children: _jsx(TableView, __assign({ pageSize: data.length, withPagination: withPagination, shouldBeDraggable: shouldBeDraggable }, {
126
+ isLoading: isLoading,
127
+ data: data,
128
+ columns: columns,
129
+ sortBy: sortBy,
130
+ setSortBy: setSortBy,
131
+ onRowClick: onRowClick,
132
+ })) }))) : (blankState), paginationUI] })));
42
133
  };
43
134
  export { Table };
44
135
  export * from "./TableDataProvider";
@@ -0,0 +1,4 @@
1
+ import { UniqueIdentifier } from "@dnd-kit/core";
2
+ export declare const useReorderRows: (templateSlug: string, customMessage?: string | JSX.Element) => {
3
+ reorderRows: (columnId: UniqueIdentifier, position: number) => Promise<void>;
4
+ };
@@ -0,0 +1,83 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { jsx as _jsx } from "react/jsx-runtime";
49
+ import { addToast } from "..";
50
+ import { api } from "../../api";
51
+ import { Div } from "../../styled/utils";
52
+ import { useTableContext } from "./TableDataProvider";
53
+ export var useReorderRows = function (templateSlug, customMessage) {
54
+ var getData = useTableContext().getData;
55
+ var reorderRows = function (columnId, position) { return __awaiter(void 0, void 0, void 0, function () {
56
+ var apiUrl, defaultMessage, confirmationMessage, error_1;
57
+ return __generator(this, function (_a) {
58
+ switch (_a.label) {
59
+ case 0:
60
+ apiUrl = "/api/v1/templates/".concat(templateSlug, "/columns/").concat(columnId);
61
+ defaultMessage = (_jsx(Div, __assign({ alignCenter: true }, { children: _jsx(Div, { children: "Columns reordered successfully" }) })));
62
+ confirmationMessage = (_jsx(Div, __assign({ spaceBetween: true, alignCenter: true }, { children: customMessage || defaultMessage })));
63
+ _a.label = 1;
64
+ case 1:
65
+ _a.trys.push([1, 3, , 4]);
66
+ return [4 /*yield*/, api.patch(apiUrl, {
67
+ position: position,
68
+ })];
69
+ case 2:
70
+ _a.sent();
71
+ addToast(confirmationMessage, "success");
72
+ getData();
73
+ return [3 /*break*/, 4];
74
+ case 3:
75
+ error_1 = _a.sent();
76
+ addToast("Failed to reorder rows", "error");
77
+ return [3 /*break*/, 4];
78
+ case 4: return [2 /*return*/];
79
+ }
80
+ });
81
+ }); };
82
+ return { reorderRows: reorderRows };
83
+ };
@@ -86,6 +86,7 @@ export type TemplateHeader = {
86
86
  values: string[];
87
87
  pattern: string;
88
88
  validations: FieldValidation[];
89
+ position: number;
89
90
  };
90
91
  export type Organization = {
91
92
  id: number;