@addev-be/ui 2.4.3 → 2.4.5
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.
- package/assets/icons/table.svg +1 -1
- package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.d.ts +14 -0
- package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.js +76 -0
- package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.d.ts +22 -0
- package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.js +156 -0
- package/dist/components/data/AdvancedRequestDataGrid/helpers/index.d.ts +2 -0
- package/dist/components/data/AdvancedRequestDataGrid/helpers/index.js +18 -0
- package/dist/components/data/AdvancedRequestDataGrid/index.d.ts +2 -0
- package/dist/components/data/AdvancedRequestDataGrid/index.js +215 -0
- package/dist/components/data/AdvancedRequestDataGrid/types.d.ts +21 -0
- package/dist/components/data/AdvancedRequestDataGrid/types.js +2 -0
- package/dist/components/data/DataGrid/DataGridEditableCell.d.ts +2 -0
- package/dist/components/data/DataGrid/DataGridEditableCell.js +27 -0
- package/dist/components/data/DataGrid/helpers/columns.d.ts +3 -3
- package/dist/components/data/DataGrid/helpers/columns.js +6 -6
- package/dist/helpers/styled/index.d.ts +1 -0
- package/dist/helpers/styled/index.js +17 -0
- package/dist/services/requests/printing.d.ts +2 -0
- package/dist/services/requests/printing.js +8 -0
- package/dist/services/types/printing.d.ts +8 -0
- package/dist/services/types/printing.js +2 -0
- package/package.json +2 -2
- package/src/components/data/DataGrid/DataGridFilterMenu/helpers.ts +23 -23
- package/src/components/data/DataGrid/helpers/columns.tsx +9 -9
- package/src/components/ui/Avatar/styles.ts +61 -61
- package/src/components/ui/TabsView/index.ts +3 -3
- package/src/providers/TrackingProvider/hooks.ts +14 -14
package/assets/icons/table.svg
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M48 264V160H232V264H48zm0 48H232V432H64c-8.8 0-16-7.2-16-16V312zM280 432V312H464V416c0 8.8-7.2 16-16 16H280zM464 264H280V160H464V264zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"/></svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M48 264V160H232V264H48zm0 48H232V432H64c-8.8 0-16-7.2-16-16V312zM280 432V312H464V416c0 8.8-7.2 16-16 16H280zM464 264H280V160H464V264zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"/></svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AdvancedRequestDTO, ConditionDTO, FieldDTO, OrderByDTO } from '../../../../services/advancedRequests';
|
|
2
|
+
import { AdvancedRequestDataGridColumns, AdvancedRequestDataGridFilters } from '../types';
|
|
3
|
+
export declare const getAdvancedRequestDto: <R>({ type, columns, conditions, orderBy, start, length, getTotal, idField, }: {
|
|
4
|
+
type: string;
|
|
5
|
+
columns: AdvancedRequestDataGridColumns<R>;
|
|
6
|
+
conditions?: ConditionDTO[];
|
|
7
|
+
orderBy?: OrderByDTO[];
|
|
8
|
+
start?: number;
|
|
9
|
+
length?: number;
|
|
10
|
+
getTotal?: boolean;
|
|
11
|
+
idField?: FieldDTO | null;
|
|
12
|
+
}) => AdvancedRequestDTO;
|
|
13
|
+
export declare const convertFiltersToConditions: <R>(filters: AdvancedRequestDataGridFilters, columns: AdvancedRequestDataGridColumns<R>) => Record<string, ConditionDTO>;
|
|
14
|
+
export declare const parseJsonObjectFields: <R>(rows: any[], columns: AdvancedRequestDataGridColumns<R>, parser?: (row: any) => R) => R[];
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
var __assign = (this && this.__assign) || function () {
|
|
4
|
+
__assign = Object.assign || function(t) {
|
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
+
s = arguments[i];
|
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
+
t[p] = s[p];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
return __assign.apply(this, arguments);
|
|
13
|
+
};
|
|
14
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
15
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
16
|
+
if (ar || !(i in from)) {
|
|
17
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
18
|
+
ar[i] = from[i];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
22
|
+
};
|
|
23
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
24
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
25
|
+
};
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.parseJsonObjectFields = exports.convertFiltersToConditions = exports.getAdvancedRequestDto = void 0;
|
|
28
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
29
|
+
var getAdvancedRequestDto = function (_a) {
|
|
30
|
+
var type = _a.type, columns = _a.columns, _b = _a.conditions, conditions = _b === void 0 ? [] : _b, _c = _a.orderBy, orderBy = _c === void 0 ? [] : _c, _d = _a.start, start = _d === void 0 ? 0 : _d, _e = _a.length, length = _e === void 0 ? 100 : _e, _f = _a.getTotal, getTotal = _f === void 0 ? false : _f, _g = _a.idField, idField = _g === void 0 ? { fieldName: 'Id' } : _g;
|
|
31
|
+
return ({
|
|
32
|
+
fields: __spreadArray(__spreadArray([], (idField === null ? [] : [idField]), true), Object.keys(columns).map(function (key) {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
return columns[key].field
|
|
35
|
+
? __assign(__assign({}, columns[key].field), { fieldName: (_b = (_a = columns[key].field) === null || _a === void 0 ? void 0 : _a.fieldName) !== null && _b !== void 0 ? _b : key, fieldAlias: key }) : {
|
|
36
|
+
fieldName: key,
|
|
37
|
+
fieldAlias: key,
|
|
38
|
+
};
|
|
39
|
+
}), true),
|
|
40
|
+
conditions: conditions,
|
|
41
|
+
orderBy: orderBy,
|
|
42
|
+
type: type,
|
|
43
|
+
start: start,
|
|
44
|
+
length: length,
|
|
45
|
+
getTotal: getTotal,
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
exports.getAdvancedRequestDto = getAdvancedRequestDto;
|
|
49
|
+
var convertFiltersToConditions = function (filters, columns) {
|
|
50
|
+
return lodash_1.default.mapValues(filters, function (filter, columnKey) {
|
|
51
|
+
var _a, _b, _c, _d, _e;
|
|
52
|
+
return ({
|
|
53
|
+
field: (_e = (_c = (_a = columns[columnKey].filterField) !== null && _a !== void 0 ? _a : (_b = columns[columnKey].field) === null || _b === void 0 ? void 0 : _b.fieldAlias) !== null && _c !== void 0 ? _c : (_d = columns[columnKey].field) === null || _d === void 0 ? void 0 : _d.fieldName) !== null && _e !== void 0 ? _e : columnKey,
|
|
54
|
+
operator: filter.operator,
|
|
55
|
+
value: ['inArray', 'inRange'].includes(filter.operator)
|
|
56
|
+
? filter.values
|
|
57
|
+
: lodash_1.default.castArray(filter.values)[0],
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
exports.convertFiltersToConditions = convertFiltersToConditions;
|
|
62
|
+
var parseJsonObjectFields = function (rows, columns, parser) {
|
|
63
|
+
var jsonColumns = Object.keys(columns).filter(function (key) { var _a; return ((_a = columns[key].field) === null || _a === void 0 ? void 0 : _a.operator) === 'jsonObject'; });
|
|
64
|
+
var parsedRows = jsonColumns.length === 0
|
|
65
|
+
? rows
|
|
66
|
+
: rows.map(function (row) {
|
|
67
|
+
var parsedRow = __assign({}, row);
|
|
68
|
+
jsonColumns.forEach(function (key) {
|
|
69
|
+
var _a;
|
|
70
|
+
parsedRow[key] = JSON.parse((_a = parsedRow[key]) !== null && _a !== void 0 ? _a : '{}');
|
|
71
|
+
});
|
|
72
|
+
return parsedRow;
|
|
73
|
+
});
|
|
74
|
+
return parser ? parsedRows.map(parser) : parsedRows;
|
|
75
|
+
};
|
|
76
|
+
exports.parseJsonObjectFields = parseJsonObjectFields;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AdvancedRequestDataGridColumn, AdvancedRequestDataGridColumns } from '../types';
|
|
2
|
+
import { FieldDTO } from '../../../../services/advancedRequests';
|
|
3
|
+
export declare const withGroupBy: <R extends Record<string, any>>(columns: AdvancedRequestDataGridColumns<R>) => AdvancedRequestDataGridColumns<R>;
|
|
4
|
+
export declare const advancedTextColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<AdvancedRequestDataGridColumn<R>>) => AdvancedRequestDataGridColumns<R>;
|
|
5
|
+
/**
|
|
6
|
+
* Creates a column with a composed value from multiple fields,
|
|
7
|
+
* and filtered by a text filter on the first field
|
|
8
|
+
*/
|
|
9
|
+
export declare const advancedComposedColumn: <R extends Record<string, any>>(key: string, title: string, fields: string[], options?: Partial<AdvancedRequestDataGridColumn<R>>) => AdvancedRequestDataGridColumns<R>;
|
|
10
|
+
export declare const advancedMailColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<AdvancedRequestDataGridColumn<R>>) => AdvancedRequestDataGridColumns<R>;
|
|
11
|
+
export declare const advancedPhoneColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<AdvancedRequestDataGridColumn<R>>) => AdvancedRequestDataGridColumns<R>;
|
|
12
|
+
export declare const advancedDateColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<AdvancedRequestDataGridColumn<R>>) => AdvancedRequestDataGridColumns<R>;
|
|
13
|
+
export declare const advancedMonthColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<AdvancedRequestDataGridColumn<R>>) => AdvancedRequestDataGridColumns<R>;
|
|
14
|
+
export declare const advancedNumberColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, options?: Partial<AdvancedRequestDataGridColumn<R>>) => AdvancedRequestDataGridColumns<R>;
|
|
15
|
+
export declare const advancedMoneyColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, options?: Partial<AdvancedRequestDataGridColumn<R>>) => AdvancedRequestDataGridColumns<R>;
|
|
16
|
+
export declare const advancedPercentageColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<AdvancedRequestDataGridColumn<R>>) => AdvancedRequestDataGridColumns<R>;
|
|
17
|
+
export declare const advancedCheckboxColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<AdvancedRequestDataGridColumn<R>>) => AdvancedRequestDataGridColumns<R>;
|
|
18
|
+
export declare const advancedColorColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<AdvancedRequestDataGridColumn<R>>) => AdvancedRequestDataGridColumns<R>;
|
|
19
|
+
export declare const getColumnField: <R>(columns: AdvancedRequestDataGridColumns<R>, columnKey: string) => FieldDTO;
|
|
20
|
+
export declare const getColumnSortField: <R>(columns: AdvancedRequestDataGridColumns<R>, columnKey: string) => FieldDTO;
|
|
21
|
+
export declare const getFirstColumnField: <R>(columns: AdvancedRequestDataGridColumns<R>) => FieldDTO;
|
|
22
|
+
export declare const getFirstColumnSortField: <R>(columns: AdvancedRequestDataGridColumns<R>) => FieldDTO;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.getFirstColumnSortField = exports.getFirstColumnField = exports.getColumnSortField = exports.getColumnField = exports.advancedColorColumn = exports.advancedCheckboxColumn = exports.advancedPercentageColumn = exports.advancedMoneyColumn = exports.advancedNumberColumn = exports.advancedMonthColumn = exports.advancedDateColumn = exports.advancedPhoneColumn = exports.advancedMailColumn = exports.advancedComposedColumn = exports.advancedTextColumn = exports.withGroupBy = void 0;
|
|
18
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
19
|
+
var numbers_1 = require("../../../../helpers/numbers");
|
|
20
|
+
var helpers_1 = require("../../DataGrid/helpers");
|
|
21
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
22
|
+
var moment_1 = __importDefault(require("moment"));
|
|
23
|
+
var withGroupBy = function (columns) {
|
|
24
|
+
return lodash_1.default.mapValues(columns, function (column, key) {
|
|
25
|
+
var _a;
|
|
26
|
+
return (__assign(__assign({}, column), { field: __assign(__assign({}, ((_a = column.field) !== null && _a !== void 0 ? _a : { fieldName: key })), { groupBy: true }) }));
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
exports.withGroupBy = withGroupBy;
|
|
30
|
+
var advancedTextColumn = function (key, title, options) {
|
|
31
|
+
var _a;
|
|
32
|
+
return (_a = {},
|
|
33
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
34
|
+
_a);
|
|
35
|
+
};
|
|
36
|
+
exports.advancedTextColumn = advancedTextColumn;
|
|
37
|
+
/**
|
|
38
|
+
* Creates a column with a composed value from multiple fields,
|
|
39
|
+
* and filtered by a text filter on the first field
|
|
40
|
+
*/
|
|
41
|
+
var advancedComposedColumn = function (key, title, fields, options) {
|
|
42
|
+
var _a;
|
|
43
|
+
return (_a = {},
|
|
44
|
+
_a[key] = __assign({ field: {
|
|
45
|
+
fieldAlias: key,
|
|
46
|
+
operator: 'jsonObject',
|
|
47
|
+
operands: fields.flatMap(function (field) { return [
|
|
48
|
+
{ constantValue: field },
|
|
49
|
+
{ fieldName: field },
|
|
50
|
+
]; }),
|
|
51
|
+
}, name: title, render: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(fields[0])), { getter: function (value) { var _a; return (_a = value[fields[0]]) !== null && _a !== void 0 ? _a : 0; } }), filterField: fields[0], sortField: fields[0] }, options),
|
|
52
|
+
_a);
|
|
53
|
+
};
|
|
54
|
+
exports.advancedComposedColumn = advancedComposedColumn;
|
|
55
|
+
var advancedMailColumn = function (key, title, options) {
|
|
56
|
+
var _a;
|
|
57
|
+
return (_a = {},
|
|
58
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (0, jsx_runtime_1.jsx)("a", { href: "mailto:".concat(row[key]), children: (_a = row[key]) !== null && _a !== void 0 ? _a : '' }); }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
59
|
+
_a);
|
|
60
|
+
};
|
|
61
|
+
exports.advancedMailColumn = advancedMailColumn;
|
|
62
|
+
var advancedPhoneColumn = function (key, title, options) {
|
|
63
|
+
var _a;
|
|
64
|
+
return (_a = {},
|
|
65
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (0, jsx_runtime_1.jsx)("a", { href: "tel:".concat(row[key]), children: (_a = row[key]) !== null && _a !== void 0 ? _a : '' }); }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
66
|
+
_a);
|
|
67
|
+
};
|
|
68
|
+
exports.advancedPhoneColumn = advancedPhoneColumn;
|
|
69
|
+
var advancedDateColumn = function (key, title, options) {
|
|
70
|
+
var _a;
|
|
71
|
+
return (_a = {},
|
|
72
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (_a = (0, moment_1.default)(row[key]).format('DD/MM/YYYY')) !== null && _a !== void 0 ? _a : ''; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
73
|
+
_a);
|
|
74
|
+
};
|
|
75
|
+
exports.advancedDateColumn = advancedDateColumn;
|
|
76
|
+
var advancedMonthColumn = function (key, title, options) {
|
|
77
|
+
var _a;
|
|
78
|
+
return (_a = {},
|
|
79
|
+
_a[key] = __assign({ name: title, render: function (row) { return (row[key] ? "".concat(row[key], " mois ") : ''); }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
80
|
+
_a);
|
|
81
|
+
};
|
|
82
|
+
exports.advancedMonthColumn = advancedMonthColumn;
|
|
83
|
+
var advancedNumberColumn = function (key, title, decimals, options) {
|
|
84
|
+
var _a;
|
|
85
|
+
if (decimals === void 0) { decimals = 2; }
|
|
86
|
+
return (_a = {},
|
|
87
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (_a = (0, numbers_1.formatNumber)(row[key], decimals)) !== null && _a !== void 0 ? _a : ''; }, excelFormatter: function () { return '#'; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.numberFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : 0; } }) }, options),
|
|
88
|
+
_a);
|
|
89
|
+
};
|
|
90
|
+
exports.advancedNumberColumn = advancedNumberColumn;
|
|
91
|
+
var advancedMoneyColumn = function (key, title, decimals, options) {
|
|
92
|
+
var _a;
|
|
93
|
+
if (decimals === void 0) { decimals = 2; }
|
|
94
|
+
return (_a = {},
|
|
95
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (_a = (0, numbers_1.formatMoney)(row[key], decimals)) !== null && _a !== void 0 ? _a : ''; }, excelFormatter: function () { return '#0.00'; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.numberFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : 0; } }) }, options),
|
|
96
|
+
_a);
|
|
97
|
+
};
|
|
98
|
+
exports.advancedMoneyColumn = advancedMoneyColumn;
|
|
99
|
+
var advancedPercentageColumn = function (key, title, options) {
|
|
100
|
+
var _a;
|
|
101
|
+
return (_a = {},
|
|
102
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (_a = (0, numbers_1.formatPercentage)(row[key])) !== null && _a !== void 0 ? _a : ''; }, excelFormatter: function () { return '#0.00'; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.numberFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : 0; } }) }, options),
|
|
103
|
+
_a);
|
|
104
|
+
};
|
|
105
|
+
exports.advancedPercentageColumn = advancedPercentageColumn;
|
|
106
|
+
var advancedCheckboxColumn = function (key, title, options) {
|
|
107
|
+
var _a;
|
|
108
|
+
return (_a = {},
|
|
109
|
+
_a[key] = __assign({ name: title, render: function (row) { return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: row[key], readOnly: true }), (0, jsx_runtime_1.jsx)("span", { children: row[key] ? ' Oui' : ' Non' })] })); }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.numberFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : 0; } }) }, options),
|
|
110
|
+
_a);
|
|
111
|
+
};
|
|
112
|
+
exports.advancedCheckboxColumn = advancedCheckboxColumn;
|
|
113
|
+
var advancedColorColumn = function (key, title, options) {
|
|
114
|
+
var _a;
|
|
115
|
+
return (_a = {},
|
|
116
|
+
_a[key] = __assign({ name: title, render: function (row) {
|
|
117
|
+
var _a;
|
|
118
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { backgroundColor: row[key] }, children: (_a = row[key]) !== null && _a !== void 0 ? _a : '' }));
|
|
119
|
+
}, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
120
|
+
_a);
|
|
121
|
+
};
|
|
122
|
+
exports.advancedColorColumn = advancedColorColumn;
|
|
123
|
+
var getColumnField = function (columns, columnKey) {
|
|
124
|
+
var _a, _b;
|
|
125
|
+
return columns[columnKey].field
|
|
126
|
+
? {
|
|
127
|
+
fieldName: (_b = (_a = columns[columnKey].field) === null || _a === void 0 ? void 0 : _a.fieldName) !== null && _b !== void 0 ? _b : columnKey,
|
|
128
|
+
fieldAlias: columnKey,
|
|
129
|
+
}
|
|
130
|
+
: {
|
|
131
|
+
fieldName: columnKey,
|
|
132
|
+
fieldAlias: columnKey,
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
exports.getColumnField = getColumnField;
|
|
136
|
+
var getColumnSortField = function (columns, columnKey) {
|
|
137
|
+
var _a;
|
|
138
|
+
return columns[columnKey].sortField
|
|
139
|
+
? {
|
|
140
|
+
fieldName: (_a = columns[columnKey].sortField) !== null && _a !== void 0 ? _a : columnKey,
|
|
141
|
+
fieldAlias: columnKey,
|
|
142
|
+
}
|
|
143
|
+
: {
|
|
144
|
+
fieldName: columnKey,
|
|
145
|
+
fieldAlias: columnKey,
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
exports.getColumnSortField = getColumnSortField;
|
|
149
|
+
var getFirstColumnField = function (columns) {
|
|
150
|
+
return (0, exports.getColumnField)(columns, Object.keys(columns)[0]);
|
|
151
|
+
};
|
|
152
|
+
exports.getFirstColumnField = getFirstColumnField;
|
|
153
|
+
var getFirstColumnSortField = function (columns) {
|
|
154
|
+
return (0, exports.getColumnSortField)(columns, Object.keys(columns)[0]);
|
|
155
|
+
};
|
|
156
|
+
exports.getFirstColumnSortField = getFirstColumnSortField;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./advancedRequests"), exports);
|
|
18
|
+
__exportStar(require("./columns"), exports);
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
|
+
var t = {};
|
|
38
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
39
|
+
t[p] = s[p];
|
|
40
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
41
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
42
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
43
|
+
t[p[i]] = s[p[i]];
|
|
44
|
+
}
|
|
45
|
+
return t;
|
|
46
|
+
};
|
|
47
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
48
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
49
|
+
if (ar || !(i in from)) {
|
|
50
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
51
|
+
ar[i] = from[i];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
55
|
+
};
|
|
56
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57
|
+
exports.AdvancedRequestDataGrid = void 0;
|
|
58
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
59
|
+
var advancedRequests_1 = require("../../../services/advancedRequests");
|
|
60
|
+
var lodash_1 = __importStar(require("lodash"));
|
|
61
|
+
var helpers_1 = require("./helpers");
|
|
62
|
+
var react_1 = require("react");
|
|
63
|
+
var DataGrid_1 = require("../DataGrid");
|
|
64
|
+
var AdvancedRequestDataGrid = function (_a) {
|
|
65
|
+
var onSelectionChangeFromProps = _a.onSelectionChange, idField = _a.idField, props = __rest(_a, ["onSelectionChange", "idField"]);
|
|
66
|
+
var currentRows = (0, react_1.useRef)([]);
|
|
67
|
+
var _b = (0, react_1.useState)([]), rows = _b[0], setRows = _b[1];
|
|
68
|
+
var _c = (0, react_1.useState)(0), start = _c[0], setStart = _c[1];
|
|
69
|
+
var _d = (0, react_1.useState)(50), length = _d[0], setLength = _d[1];
|
|
70
|
+
var _e = (0, react_1.useState)(-1), total = _e[0], setTotal = _e[1];
|
|
71
|
+
var advancedRequest = (0, advancedRequests_1.useAdvancedRequestHandler)();
|
|
72
|
+
var idAdvancedRequest = (0, advancedRequests_1.useAdvancedRequestHandler)();
|
|
73
|
+
var _f = (0, react_1.useState)({}), conditions = _f[0], setConditions = _f[1];
|
|
74
|
+
var _g = (0, react_1.useState)([]), orderBy = _g[0], setOrderBy = _g[1];
|
|
75
|
+
var refresh = (0, react_1.useCallback)(function () {
|
|
76
|
+
setRows([]);
|
|
77
|
+
setStart(0);
|
|
78
|
+
setLength(50);
|
|
79
|
+
setTotal(-1);
|
|
80
|
+
}, []);
|
|
81
|
+
var onFiltersChanged = (0, react_1.useCallback)(function (filters) {
|
|
82
|
+
var newConditions = (0, helpers_1.convertFiltersToConditions)(filters, props.columns);
|
|
83
|
+
setTotal(-1);
|
|
84
|
+
setConditions(newConditions);
|
|
85
|
+
}, [props.columns]);
|
|
86
|
+
var onSortsChanged = (0, react_1.useCallback)(function (sorts) {
|
|
87
|
+
refresh();
|
|
88
|
+
setOrderBy(Object.entries(sorts).map(function (_a) {
|
|
89
|
+
var columnKey = _a[0], direction = _a[1];
|
|
90
|
+
return ({
|
|
91
|
+
field: (0, helpers_1.getColumnSortField)(props.columns, columnKey),
|
|
92
|
+
direction: direction.toUpperCase(),
|
|
93
|
+
});
|
|
94
|
+
}));
|
|
95
|
+
}, [props.columns, refresh]);
|
|
96
|
+
var loadRows = (0, react_1.useRef)((0, lodash_1.debounce)(function (columns, conditions, orderBy, start, length, idField, getTotal) {
|
|
97
|
+
if (getTotal === void 0) { getTotal = false; }
|
|
98
|
+
advancedRequest((0, helpers_1.getAdvancedRequestDto)({
|
|
99
|
+
type: props.type,
|
|
100
|
+
columns: columns,
|
|
101
|
+
conditions: conditions,
|
|
102
|
+
orderBy: orderBy,
|
|
103
|
+
start: start,
|
|
104
|
+
length: length,
|
|
105
|
+
getTotal: getTotal,
|
|
106
|
+
idField: idField,
|
|
107
|
+
})).then(function (response) {
|
|
108
|
+
var _a;
|
|
109
|
+
var _b;
|
|
110
|
+
if (getTotal) {
|
|
111
|
+
currentRows.current = Array(response.count).fill(null);
|
|
112
|
+
if (getTotal)
|
|
113
|
+
setTotal((_b = response.count) !== null && _b !== void 0 ? _b : 0);
|
|
114
|
+
}
|
|
115
|
+
var parsedRows = (0, helpers_1.parseJsonObjectFields)(response.data, columns, props.parser);
|
|
116
|
+
(_a = currentRows.current).splice.apply(_a, __spreadArray([start, length], parsedRows, false));
|
|
117
|
+
setRows(__spreadArray([], currentRows.current, true));
|
|
118
|
+
});
|
|
119
|
+
}, 100));
|
|
120
|
+
var loadFilterValues = (0, react_1.useCallback)(function (columnKey) {
|
|
121
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
122
|
+
return advancedRequest({
|
|
123
|
+
fields: [
|
|
124
|
+
(_a = props.columns[columnKey].field) !== null && _a !== void 0 ? _a : {
|
|
125
|
+
fieldName: columnKey,
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
conditions: __spreadArray(__spreadArray([], ((_b = props.conditions) !== null && _b !== void 0 ? _b : []), true), Object.values(lodash_1.default.pickBy(conditions, function (_, key) { return key !== columnKey; })), true).filter(function (condition) { return condition.field !== columnKey; }),
|
|
129
|
+
orderBy: [
|
|
130
|
+
{
|
|
131
|
+
field: (_g = (_e = (_c = props.columns[columnKey].filterField) !== null && _c !== void 0 ? _c : (_d = props.columns[columnKey].field) === null || _d === void 0 ? void 0 : _d.fieldAlias) !== null && _e !== void 0 ? _e : (_f = props.columns[columnKey].field) === null || _f === void 0 ? void 0 : _f.fieldName) !== null && _g !== void 0 ? _g : columnKey,
|
|
132
|
+
direction: 'ASC',
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
type: props.type,
|
|
136
|
+
getTotal: false,
|
|
137
|
+
unique: true,
|
|
138
|
+
}).then(function (response) {
|
|
139
|
+
return response.data.map(function (row) { var _a, _b, _c; return (_c = (_b = (_a = props.columns[columnKey].filter) === null || _a === void 0 ? void 0 : _a.getter) === null || _b === void 0 ? void 0 : _b.call(_a, row)) !== null && _c !== void 0 ? _c : null; });
|
|
140
|
+
});
|
|
141
|
+
}, [advancedRequest, conditions, props.columns, props.conditions, props.type]);
|
|
142
|
+
(0, react_1.useEffect)(function () {
|
|
143
|
+
var _a, _b;
|
|
144
|
+
return loadRows.current(props.columns, __spreadArray(__spreadArray([], ((_a = props.conditions) !== null && _a !== void 0 ? _a : []), true), ((_b = Object.values(conditions)) !== null && _b !== void 0 ? _b : []), true), orderBy, start, length, idField, total < 0);
|
|
145
|
+
}, [
|
|
146
|
+
props.columns,
|
|
147
|
+
conditions,
|
|
148
|
+
orderBy,
|
|
149
|
+
start,
|
|
150
|
+
length,
|
|
151
|
+
total,
|
|
152
|
+
props.conditions,
|
|
153
|
+
idField,
|
|
154
|
+
]);
|
|
155
|
+
var loadCopyRows = (0, react_1.useCallback)(function () {
|
|
156
|
+
var _a, _b;
|
|
157
|
+
return advancedRequest((0, helpers_1.getAdvancedRequestDto)({
|
|
158
|
+
type: props.type,
|
|
159
|
+
columns: props.columns,
|
|
160
|
+
conditions: __spreadArray(__spreadArray([], ((_a = props.conditions) !== null && _a !== void 0 ? _a : []), true), ((_b = Object.values(conditions)) !== null && _b !== void 0 ? _b : []), true),
|
|
161
|
+
orderBy: orderBy,
|
|
162
|
+
start: 0,
|
|
163
|
+
length: total,
|
|
164
|
+
idField: idField,
|
|
165
|
+
})).then(function (response) {
|
|
166
|
+
return (0, helpers_1.parseJsonObjectFields)(response.data, props.columns, props.parser);
|
|
167
|
+
});
|
|
168
|
+
}, [
|
|
169
|
+
advancedRequest,
|
|
170
|
+
conditions,
|
|
171
|
+
idField,
|
|
172
|
+
orderBy,
|
|
173
|
+
props.columns,
|
|
174
|
+
props.conditions,
|
|
175
|
+
props.parser,
|
|
176
|
+
props.type,
|
|
177
|
+
total,
|
|
178
|
+
]);
|
|
179
|
+
var loadAllIds = (0, react_1.useCallback)(function () {
|
|
180
|
+
var _a, _b;
|
|
181
|
+
return idAdvancedRequest((0, helpers_1.getAdvancedRequestDto)({
|
|
182
|
+
type: props.type,
|
|
183
|
+
columns: {
|
|
184
|
+
Id: {
|
|
185
|
+
name: 'Id',
|
|
186
|
+
field: idField !== null && idField !== void 0 ? idField : { fieldName: 'Id' },
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
conditions: __spreadArray(__spreadArray([], ((_a = props.conditions) !== null && _a !== void 0 ? _a : []), true), ((_b = Object.values(conditions)) !== null && _b !== void 0 ? _b : []), true),
|
|
190
|
+
orderBy: orderBy,
|
|
191
|
+
start: 0,
|
|
192
|
+
length: total,
|
|
193
|
+
idField: null,
|
|
194
|
+
})).then(function (response) { return response.data.map(function (row) { return row['Id']; }); });
|
|
195
|
+
}, [
|
|
196
|
+
conditions,
|
|
197
|
+
idAdvancedRequest,
|
|
198
|
+
idField,
|
|
199
|
+
orderBy,
|
|
200
|
+
props.conditions,
|
|
201
|
+
props.type,
|
|
202
|
+
total,
|
|
203
|
+
]);
|
|
204
|
+
var onVisibleRowsChanged = (0, react_1.useCallback)(function (newStart, newLength) {
|
|
205
|
+
if (newStart !== start || newLength !== length) {
|
|
206
|
+
setStart(newStart);
|
|
207
|
+
setLength(newLength);
|
|
208
|
+
}
|
|
209
|
+
}, [length, start]);
|
|
210
|
+
var onSelectionChange = (0, react_1.useCallback)(function (selectedKeys) {
|
|
211
|
+
onSelectionChangeFromProps === null || onSelectionChangeFromProps === void 0 ? void 0 : onSelectionChangeFromProps(selectedKeys);
|
|
212
|
+
}, [onSelectionChangeFromProps]);
|
|
213
|
+
return ((0, jsx_runtime_1.jsx)(DataGrid_1.DataGrid, __assign({ onVisibleRowsChange: onVisibleRowsChanged, filter: false, sort: false, onFiltersChanged: onFiltersChanged, onSortsChanged: onSortsChanged, filterValuesLoader: loadFilterValues, rows: rows, loadCopyRows: loadCopyRows, refresh: refresh, onSelectionChange: onSelectionChange, getAllIds: loadAllIds }, props)));
|
|
214
|
+
};
|
|
215
|
+
exports.AdvancedRequestDataGrid = AdvancedRequestDataGrid;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AdvancedRequestRow, ConditionDTO, FieldDTO, OrderByDTO } from '../../../services/advancedRequests';
|
|
2
|
+
import { DataGridColumn, DataGridFilter, DataGridFilterType, DataGridProps } from '../DataGrid/types';
|
|
3
|
+
export type AdvancedRequestDataGridFilter<T extends DataGridFilterType = DataGridFilterType> = DataGridFilter<T> & {
|
|
4
|
+
field?: FieldDTO;
|
|
5
|
+
};
|
|
6
|
+
export type AdvancedRequestDataGridFilters = Record<string, AdvancedRequestDataGridFilter>;
|
|
7
|
+
export type AdvancedRequestDataGridColumn<R> = DataGridColumn<R> & {
|
|
8
|
+
filter?: AdvancedRequestDataGridFilter;
|
|
9
|
+
field?: FieldDTO;
|
|
10
|
+
filterField?: string;
|
|
11
|
+
sortField?: string;
|
|
12
|
+
};
|
|
13
|
+
export type AdvancedRequestDataGridColumns<R> = Record<string, AdvancedRequestDataGridColumn<R>>;
|
|
14
|
+
export type AdvancedRequestDataGridProps<R> = Omit<DataGridProps<R>, 'rows' | 'columns'> & {
|
|
15
|
+
columns: AdvancedRequestDataGridColumns<R>;
|
|
16
|
+
type: string;
|
|
17
|
+
orderBy?: OrderByDTO[];
|
|
18
|
+
conditions?: ConditionDTO[];
|
|
19
|
+
idField?: FieldDTO | null;
|
|
20
|
+
parser?: (row: AdvancedRequestRow<R>) => R;
|
|
21
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataGridEditableCell = void 0;
|
|
4
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-unnecessary-type-constraint */
|
|
7
|
+
var react_1 = require("react");
|
|
8
|
+
var hooks_1 = require("./hooks");
|
|
9
|
+
var DataGridEditableCell = function (_a) {
|
|
10
|
+
var row = _a.row, columnKey = _a.columnKey, column = _a.column, context = _a.context;
|
|
11
|
+
var _b = (0, hooks_1.useDataGridContext)(context), onCellEdited = _b.onCellEdited, setEditingCell = _b.setEditingCell;
|
|
12
|
+
var _c = (0, react_1.useState)(column.getter
|
|
13
|
+
? column.getter(row)
|
|
14
|
+
: column.propertyName
|
|
15
|
+
? String(row[column.propertyName])
|
|
16
|
+
: ''), value = _c[0], setValue = _c[1];
|
|
17
|
+
var onClose = (0, react_1.useCallback)(function () {
|
|
18
|
+
onCellEdited === null || onCellEdited === void 0 ? void 0 : onCellEdited(row, columnKey, value);
|
|
19
|
+
setEditingCell([-1, -1]);
|
|
20
|
+
}, [columnKey, onCellEdited, row, setEditingCell, value]);
|
|
21
|
+
return ((0, jsx_runtime_1.jsxs)("td", { children: [(0, jsx_runtime_1.jsx)("input", { type: "text",
|
|
22
|
+
// className="relative z-10 block text-normal w-full border-0 py-1.5 text-gray-900 ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-sky-600 sm:text-sm sm:leading-6"
|
|
23
|
+
value: String(value), onChange: function (e) { return setValue(e.target.value); } }), (0, jsx_runtime_1.jsx)("div", {
|
|
24
|
+
// className="fixed inset-0 bg-black bg-opacity-10"
|
|
25
|
+
onClick: onClose })] }, columnKey));
|
|
26
|
+
};
|
|
27
|
+
exports.DataGridEditableCell = DataGridEditableCell;
|
|
@@ -9,9 +9,9 @@ export declare const phoneColumn: <R extends Record<string, any>>(key: string, t
|
|
|
9
9
|
export declare const dateColumn: <R extends Record<string, any>>(key: string, title: string, options?: DeepPartial<SqlRequestDataGridTextColumn<R>>, otherOptions?: Partial<DataGridDateColumn<R>>) => DataGridDateColumn<R>;
|
|
10
10
|
export declare const dateTimeColumn: <R extends Record<string, any>>(key: string, title: string, options?: DeepPartial<SqlRequestDataGridTextColumn<R>>, otherOptions?: Partial<DataGridDateColumn<R>>) => DataGridDateColumn<R>;
|
|
11
11
|
export declare const monthColumn: <R extends Record<string, any>>(key: string, title: string, options?: DeepPartial<SqlRequestDataGridTextColumn<R>>, otherOptions?: Partial<DataGridTextColumn<R>>) => DataGridTextColumn<R>;
|
|
12
|
-
export declare const numberColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, options?: DeepPartial<SqlRequestDataGridTextColumn<R
|
|
13
|
-
export declare const moneyColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, currency?: string | ((row: R) => string), options?: DeepPartial<SqlRequestDataGridTextColumn<R
|
|
14
|
-
export declare const percentageColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, options?: DeepPartial<SqlRequestDataGridTextColumn<R
|
|
12
|
+
export declare const numberColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, options?: DeepPartial<SqlRequestDataGridTextColumn<R>> & Partial<DataGridNumberColumn<R>>) => DataGridNumberColumn<R>;
|
|
13
|
+
export declare const moneyColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, currency?: string | ((row: R) => string), options?: DeepPartial<SqlRequestDataGridTextColumn<R>> & Partial<DataGridNumberColumn<R>>) => DataGridNumberColumn<R>;
|
|
14
|
+
export declare const percentageColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, options?: DeepPartial<SqlRequestDataGridTextColumn<R>> & Partial<DataGridNumberColumn<R>>) => DataGridNumberColumn<R>;
|
|
15
15
|
export declare const checkboxColumn: <R extends Record<string, any>>(key: string, title: string, options?: DeepPartial<DataGridCheckboxColumn<R>>) => SqlRequestDataGridCheckboxColumn<R>;
|
|
16
16
|
export declare const selectColumn: <R extends Record<string, any>, T>(key: string, title: string, items: T[], itemKey: (item: T | null) => string, itemLabel: (item: T | null) => string, otherOptions?: Partial<DataGridSelectColumn<R, T>>) => DataGridSelectColumn<R, T>;
|
|
17
17
|
export declare const colorColumn: <R extends Record<string, any>>(key: string, title: string, otherOptions?: Partial<DataGridColorColumn<R>>) => DataGridColorColumn<R>;
|
|
@@ -65,7 +65,7 @@ var dateTimeColumn = function (key, title, options, otherOptions) { return (__as
|
|
|
65
65
|
exports.dateTimeColumn = dateTimeColumn;
|
|
66
66
|
var monthColumn = function (key, title, options, otherOptions) { return (__assign({ key: key, type: 'text', name: title, render: function (value) { return ((0, jsx_runtime_1.jsx)(typography_1.StyledTypography, __assign({}, options === null || options === void 0 ? void 0 : options.typography, { children: value + 'Mois' }))); }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, footer: function (_, filteredRows) { return "".concat(filteredRows.length, " \u00E9l\u00E9ments"); }, filter: (0, filters_1.textFilter)(key) }, otherOptions)); };
|
|
67
67
|
exports.monthColumn = monthColumn;
|
|
68
|
-
var numberColumn = function (key, title, decimals, options
|
|
68
|
+
var numberColumn = function (key, title, decimals, options) {
|
|
69
69
|
if (decimals === void 0) { decimals = 2; }
|
|
70
70
|
var column = __assign({ key: key, type: 'number', name: title, render: function (value) { return ((0, jsx_runtime_1.jsx)(typography_1.StyledTypography, __assign({}, options === null || options === void 0 ? void 0 : options.typography, { children: (0, numbers_1.formatNumber)(value, decimals) }))); }, excelOptions: {
|
|
71
71
|
formatter: function () { return (0, exports.buildExcelFormat)(decimals); },
|
|
@@ -88,11 +88,11 @@ var numberColumn = function (key, title, decimals, options, otherOptions) {
|
|
|
88
88
|
}, filter: __assign(__assign({}, (0, filters_1.numberFilter)(key)), { renderer: function (value) { var _a; return (_a = (0, numbers_1.formatNumber)(value, decimals)) !== null && _a !== void 0 ? _a : ''; } }), editComponent: (0, components_1.withDisplayName)(function (_a) {
|
|
89
89
|
var ref = _a.ref, otherProps = __rest(_a, ["ref"]);
|
|
90
90
|
return ((0, jsx_runtime_1.jsx)(NumberEditableCell_1.NumberEditableCell, __assign({ ref: ref, decimals: column.decimals, currency: column.currency }, otherProps)));
|
|
91
|
-
}, 'NumberColumnEditComponent') },
|
|
91
|
+
}, 'NumberColumnEditComponent') }, options);
|
|
92
92
|
return column;
|
|
93
93
|
};
|
|
94
94
|
exports.numberColumn = numberColumn;
|
|
95
|
-
var moneyColumn = function (key, title, decimals, currency, options
|
|
95
|
+
var moneyColumn = function (key, title, decimals, currency, options) {
|
|
96
96
|
if (decimals === void 0) { decimals = 2; }
|
|
97
97
|
if (currency === void 0) { currency = '€'; }
|
|
98
98
|
var column = __assign({ key: key, type: 'number', name: title, render: typeof currency === 'function'
|
|
@@ -115,11 +115,11 @@ var moneyColumn = function (key, title, decimals, currency, options, otherOption
|
|
|
115
115
|
min: function (_, filteredRows) {
|
|
116
116
|
return (0, numbers_1.formatMoney)(Math.min.apply(Math, filteredRows.map(function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : 0; })), decimals);
|
|
117
117
|
},
|
|
118
|
-
} },
|
|
118
|
+
} }, options);
|
|
119
119
|
return column;
|
|
120
120
|
};
|
|
121
121
|
exports.moneyColumn = moneyColumn;
|
|
122
|
-
var percentageColumn = function (key, title, decimals, options
|
|
122
|
+
var percentageColumn = function (key, title, decimals, options) {
|
|
123
123
|
if (decimals === void 0) { decimals = 2; }
|
|
124
124
|
var column = __assign({ key: key, type: 'number', name: title, render: function (value) { return ((0, jsx_runtime_1.jsx)(typography_1.StyledTypography, __assign({}, options === null || options === void 0 ? void 0 : options.typography, { children: (0, numbers_1.formatPercentage)(value) }))); }, excelOptions: {
|
|
125
125
|
formatter: function () { return (0, exports.buildExcelFormat)(decimals, '%'); },
|
|
@@ -139,7 +139,7 @@ var percentageColumn = function (key, title, decimals, options, otherOptions) {
|
|
|
139
139
|
sum: function (_, filteredRows) {
|
|
140
140
|
return (0, numbers_1.formatNumber)(filteredRows.reduce(function (acc, row) { var _a; return acc + ((_a = row[key]) !== null && _a !== void 0 ? _a : 0); }, 0), decimals);
|
|
141
141
|
},
|
|
142
|
-
} },
|
|
142
|
+
} }, options);
|
|
143
143
|
return column;
|
|
144
144
|
};
|
|
145
145
|
exports.percentageColumn = percentageColumn;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './space';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./space"), exports);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.usePrintModelRequestHandler = void 0;
|
|
4
|
+
var hooks_1 = require("../hooks");
|
|
5
|
+
var usePrintModelRequestHandler = function () {
|
|
6
|
+
return (0, hooks_1.useWebSocketRequestHandler)('PrintQuestModel');
|
|
7
|
+
};
|
|
8
|
+
exports.usePrintModelRequestHandler = usePrintModelRequestHandler;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@addev-be/ui",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"watch": "tsc -b --watch",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"update-version": "../../node/update-version.mjs"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@addev-be/framework-utils": "^2.4.
|
|
23
|
+
"@addev-be/framework-utils": "^2.4.5",
|
|
24
24
|
"@types/lodash": "^4.17.20",
|
|
25
25
|
"@types/react": "^19.1.13",
|
|
26
26
|
"@types/react-dom": "^19.1.9",
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { DataGridColumn, DataGridFilterValue } from '../types';
|
|
2
|
-
|
|
3
|
-
import { uniq } from 'lodash';
|
|
4
|
-
|
|
5
|
-
export const sortAvailableValues = <R>(
|
|
6
|
-
values: unknown[],
|
|
7
|
-
column: DataGridColumn<R>
|
|
8
|
-
): DataGridFilterValue[] => {
|
|
9
|
-
switch (column?.type) {
|
|
10
|
-
case 'number':
|
|
11
|
-
return uniq(values).sort(
|
|
12
|
-
(a, b) => (a as number) - (b as number)
|
|
13
|
-
) as number[];
|
|
14
|
-
case 'select':
|
|
15
|
-
return uniq(values).sort((a, b) =>
|
|
16
|
-
column.itemLabel(a).localeCompare(column.itemLabel(b))
|
|
17
|
-
) as string[];
|
|
18
|
-
default:
|
|
19
|
-
return uniq(values).sort((a, b) =>
|
|
20
|
-
(a as string).localeCompare(b as string)
|
|
21
|
-
) as string[];
|
|
22
|
-
}
|
|
23
|
-
};
|
|
1
|
+
import { DataGridColumn, DataGridFilterValue } from '../types';
|
|
2
|
+
|
|
3
|
+
import { uniq } from 'lodash';
|
|
4
|
+
|
|
5
|
+
export const sortAvailableValues = <R>(
|
|
6
|
+
values: unknown[],
|
|
7
|
+
column: DataGridColumn<R>
|
|
8
|
+
): DataGridFilterValue[] => {
|
|
9
|
+
switch (column?.type) {
|
|
10
|
+
case 'number':
|
|
11
|
+
return uniq(values).sort(
|
|
12
|
+
(a, b) => (a as number) - (b as number)
|
|
13
|
+
) as number[];
|
|
14
|
+
case 'select':
|
|
15
|
+
return uniq(values).sort((a, b) =>
|
|
16
|
+
column.itemLabel(a).localeCompare(column.itemLabel(b))
|
|
17
|
+
) as string[];
|
|
18
|
+
default:
|
|
19
|
+
return uniq(values).sort((a, b) =>
|
|
20
|
+
(a as string).localeCompare(b as string)
|
|
21
|
+
) as string[];
|
|
22
|
+
}
|
|
23
|
+
};
|
|
@@ -193,8 +193,8 @@ export const numberColumn = <R extends Record<string, any>>(
|
|
|
193
193
|
key: string,
|
|
194
194
|
title: string,
|
|
195
195
|
decimals = 2,
|
|
196
|
-
options?: DeepPartial<SqlRequestDataGridTextColumn<R
|
|
197
|
-
|
|
196
|
+
options?: DeepPartial<SqlRequestDataGridTextColumn<R>> &
|
|
197
|
+
Partial<DataGridNumberColumn<R>>
|
|
198
198
|
): DataGridNumberColumn<R> => {
|
|
199
199
|
const column: DataGridNumberColumn<R> = {
|
|
200
200
|
key,
|
|
@@ -250,7 +250,7 @@ export const numberColumn = <R extends Record<string, any>>(
|
|
|
250
250
|
),
|
|
251
251
|
'NumberColumnEditComponent'
|
|
252
252
|
),
|
|
253
|
-
...
|
|
253
|
+
...options,
|
|
254
254
|
};
|
|
255
255
|
return column;
|
|
256
256
|
};
|
|
@@ -260,8 +260,8 @@ export const moneyColumn = <R extends Record<string, any>>(
|
|
|
260
260
|
title: string,
|
|
261
261
|
decimals = 2,
|
|
262
262
|
currency: string | ((row: R) => string) = '€',
|
|
263
|
-
options?: DeepPartial<SqlRequestDataGridTextColumn<R
|
|
264
|
-
|
|
263
|
+
options?: DeepPartial<SqlRequestDataGridTextColumn<R>> &
|
|
264
|
+
Partial<DataGridNumberColumn<R>>
|
|
265
265
|
): DataGridNumberColumn<R> => {
|
|
266
266
|
const column: DataGridNumberColumn<R> = {
|
|
267
267
|
key,
|
|
@@ -313,7 +313,7 @@ export const moneyColumn = <R extends Record<string, any>>(
|
|
|
313
313
|
decimals
|
|
314
314
|
),
|
|
315
315
|
},
|
|
316
|
-
...
|
|
316
|
+
...options,
|
|
317
317
|
};
|
|
318
318
|
return column;
|
|
319
319
|
};
|
|
@@ -322,8 +322,8 @@ export const percentageColumn = <R extends Record<string, any>>(
|
|
|
322
322
|
key: string,
|
|
323
323
|
title: string,
|
|
324
324
|
decimals = 2,
|
|
325
|
-
options?: DeepPartial<SqlRequestDataGridTextColumn<R
|
|
326
|
-
|
|
325
|
+
options?: DeepPartial<SqlRequestDataGridTextColumn<R>> &
|
|
326
|
+
Partial<DataGridNumberColumn<R>>
|
|
327
327
|
): DataGridNumberColumn<R> => {
|
|
328
328
|
const column: DataGridNumberColumn<R> = {
|
|
329
329
|
key,
|
|
@@ -365,7 +365,7 @@ export const percentageColumn = <R extends Record<string, any>>(
|
|
|
365
365
|
decimals
|
|
366
366
|
),
|
|
367
367
|
},
|
|
368
|
-
...
|
|
368
|
+
...options,
|
|
369
369
|
};
|
|
370
370
|
return column;
|
|
371
371
|
};
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import styled, { css } from 'styled-components';
|
|
2
|
-
|
|
3
|
-
export type AvatarContainerProps = {
|
|
4
|
-
size: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
const stylesMap: Record<
|
|
8
|
-
AvatarContainerProps['size'],
|
|
9
|
-
ReturnType<typeof css>
|
|
10
|
-
> = {
|
|
11
|
-
xs: css`
|
|
12
|
-
width: var(--size-6);
|
|
13
|
-
height: var(--size-6);
|
|
14
|
-
min-width: var(--size-6);
|
|
15
|
-
min-height: var(--size-6);
|
|
16
|
-
font-size: var(--text-xs);
|
|
17
|
-
line-height: var(--text-xs);
|
|
18
|
-
`,
|
|
19
|
-
sm: css`
|
|
20
|
-
width: var(--size-8);
|
|
21
|
-
height: var(--size-8);
|
|
22
|
-
min-width: var(--size-8);
|
|
23
|
-
min-height: var(--size-8);
|
|
24
|
-
font-size: var(--text-sm);
|
|
25
|
-
line-height: var(--text-sm);
|
|
26
|
-
`,
|
|
27
|
-
md: css`
|
|
28
|
-
width: var(--size-10);
|
|
29
|
-
height: var(--size-10);
|
|
30
|
-
min-width: var(--size-10);
|
|
31
|
-
min-height: var(--size-10);
|
|
32
|
-
font-size: var(--text-md);
|
|
33
|
-
line-height: var(--text-md);
|
|
34
|
-
`,
|
|
35
|
-
lg: css`
|
|
36
|
-
width: var(--size-12);
|
|
37
|
-
height: var(--size-12);
|
|
38
|
-
min-width: var(--size-12);
|
|
39
|
-
min-height: var(--size-12);
|
|
40
|
-
font-size: var(--text-lg);
|
|
41
|
-
line-height: var(--text-lg);
|
|
42
|
-
`,
|
|
43
|
-
xl: css`
|
|
44
|
-
width: var(--size-14);
|
|
45
|
-
height: var(--size-14);
|
|
46
|
-
min-width: var(--size-14);
|
|
47
|
-
min-height: var(--size-14);
|
|
48
|
-
font-size: var(--text-2xl);
|
|
49
|
-
line-height: var(--text-2xl);
|
|
50
|
-
`,
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
export const AvatarContainer = styled.div<AvatarContainerProps>`
|
|
54
|
-
display: inline-flex;
|
|
55
|
-
align-items: center;
|
|
56
|
-
justify-content: center;
|
|
57
|
-
border-radius: var(--rounded-full);
|
|
58
|
-
user-select: none;
|
|
59
|
-
|
|
60
|
-
${({ size }) => stylesMap[size]}
|
|
61
|
-
`;
|
|
1
|
+
import styled, { css } from 'styled-components';
|
|
2
|
+
|
|
3
|
+
export type AvatarContainerProps = {
|
|
4
|
+
size: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
const stylesMap: Record<
|
|
8
|
+
AvatarContainerProps['size'],
|
|
9
|
+
ReturnType<typeof css>
|
|
10
|
+
> = {
|
|
11
|
+
xs: css`
|
|
12
|
+
width: var(--size-6);
|
|
13
|
+
height: var(--size-6);
|
|
14
|
+
min-width: var(--size-6);
|
|
15
|
+
min-height: var(--size-6);
|
|
16
|
+
font-size: var(--text-xs);
|
|
17
|
+
line-height: var(--text-xs);
|
|
18
|
+
`,
|
|
19
|
+
sm: css`
|
|
20
|
+
width: var(--size-8);
|
|
21
|
+
height: var(--size-8);
|
|
22
|
+
min-width: var(--size-8);
|
|
23
|
+
min-height: var(--size-8);
|
|
24
|
+
font-size: var(--text-sm);
|
|
25
|
+
line-height: var(--text-sm);
|
|
26
|
+
`,
|
|
27
|
+
md: css`
|
|
28
|
+
width: var(--size-10);
|
|
29
|
+
height: var(--size-10);
|
|
30
|
+
min-width: var(--size-10);
|
|
31
|
+
min-height: var(--size-10);
|
|
32
|
+
font-size: var(--text-md);
|
|
33
|
+
line-height: var(--text-md);
|
|
34
|
+
`,
|
|
35
|
+
lg: css`
|
|
36
|
+
width: var(--size-12);
|
|
37
|
+
height: var(--size-12);
|
|
38
|
+
min-width: var(--size-12);
|
|
39
|
+
min-height: var(--size-12);
|
|
40
|
+
font-size: var(--text-lg);
|
|
41
|
+
line-height: var(--text-lg);
|
|
42
|
+
`,
|
|
43
|
+
xl: css`
|
|
44
|
+
width: var(--size-14);
|
|
45
|
+
height: var(--size-14);
|
|
46
|
+
min-width: var(--size-14);
|
|
47
|
+
min-height: var(--size-14);
|
|
48
|
+
font-size: var(--text-2xl);
|
|
49
|
+
line-height: var(--text-2xl);
|
|
50
|
+
`,
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export const AvatarContainer = styled.div<AvatarContainerProps>`
|
|
54
|
+
display: inline-flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
justify-content: center;
|
|
57
|
+
border-radius: var(--rounded-full);
|
|
58
|
+
user-select: none;
|
|
59
|
+
|
|
60
|
+
${({ size }) => stylesMap[size]}
|
|
61
|
+
`;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './types';
|
|
2
|
-
export * from './TabsView';
|
|
3
|
-
export * from './TabsList';
|
|
1
|
+
export * from './types';
|
|
2
|
+
export * from './TabsView';
|
|
3
|
+
export * from './TabsList';
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { useContext, useEffect } from 'react';
|
|
2
|
-
|
|
3
|
-
import { TrackingContext } from '.';
|
|
4
|
-
import { useLocation } from 'react-router-dom';
|
|
5
|
-
|
|
6
|
-
export const useLocationTracking = () => {
|
|
7
|
-
const { sendEvent } = useContext(TrackingContext);
|
|
8
|
-
const { pathname, search } = useLocation();
|
|
9
|
-
const pathWithSearch = `${pathname}${search}`;
|
|
10
|
-
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
sendEvent('PageView', { path: pathWithSearch });
|
|
13
|
-
}, [pathWithSearch, sendEvent]);
|
|
14
|
-
};
|
|
1
|
+
import { useContext, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
import { TrackingContext } from '.';
|
|
4
|
+
import { useLocation } from 'react-router-dom';
|
|
5
|
+
|
|
6
|
+
export const useLocationTracking = () => {
|
|
7
|
+
const { sendEvent } = useContext(TrackingContext);
|
|
8
|
+
const { pathname, search } = useLocation();
|
|
9
|
+
const pathWithSearch = `${pathname}${search}`;
|
|
10
|
+
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
sendEvent('PageView', { path: pathWithSearch });
|
|
13
|
+
}, [pathWithSearch, sendEvent]);
|
|
14
|
+
};
|