@addev-be/ui 0.21.6 → 0.21.7

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.
@@ -34,7 +34,7 @@ var defaultRender = function (value) { return (!value ? '' : String(value)); };
34
34
  var DataGridCell = function (_a) {
35
35
  var _b, _c;
36
36
  var row = _a.row, rowIndex = _a.rowIndex, columnKey = _a.columnKey, columnIndex = _a.columnIndex, column = _a.column, context = _a.context, style = _a.style;
37
- var _d = (0, hooks_1.useDataGridContext)(context), name = _d.name, editable = _d.editable, _e = _d.editingCell, editingCell = _e === void 0 ? [-1, -1] : _e, setEditingCell = _d.setEditingCell, onRowDoubleClick = _d.onRowDoubleClick, userSelect = _d.userSelect;
37
+ var _d = (0, hooks_1.useDataGridContext)(context), name = _d.name, editable = _d.editable, _e = _d.editingCell, editingCell = _e === void 0 ? [-1, -1] : _e, setEditingCell = _d.setEditingCell, onRowDoubleClick = _d.onRowDoubleClick, userSelect = _d.userSelect, headerColor = _d.headerColor;
38
38
  var isEditable = !!editable &&
39
39
  'editable' in column &&
40
40
  !!column.editable &&
@@ -54,6 +54,6 @@ var DataGridCell = function (_a) {
54
54
  if (isEditing) {
55
55
  return ((0, jsx_runtime_1.jsx)(DataGridEditableCell_1.DataGridEditableCell, { row: row, rowIndex: rowIndex, columnKey: columnKey, columnIndex: columnIndex, column: column, context: context, userSelect: userSelect }, "".concat(name, "-").concat(rowIndex, "-").concat(columnIndex)));
56
56
  }
57
- return ((0, jsx_runtime_1.jsx)(DataGridCellComponent, { onDoubleClick: onDoubleClick, style: style, "$userSelect": userSelect, "$color": column.color, "$textAlign": column.textAlign, children: ((_c = column.render) !== null && _c !== void 0 ? _c : defaultRender)(value, row, column) }, "".concat(name, "-").concat(rowIndex, "-").concat(columnIndex)));
57
+ return ((0, jsx_runtime_1.jsx)(DataGridCellComponent, { onDoubleClick: onDoubleClick, style: style, "$userSelect": userSelect, "$color": column.color, "$textAlign": column.textAlign, "$headerColor": headerColor, children: ((_c = column.render) !== null && _c !== void 0 ? _c : defaultRender)(value, row, column) }, "".concat(name, "-").concat(rowIndex, "-").concat(columnIndex)));
58
58
  };
59
59
  exports.DataGridCell = DataGridCell;
@@ -0,0 +1,2 @@
1
+ import { DataGridColumn, DataGridFilterValue } from '../types';
2
+ export declare const sortAvailableValues: <R>(values: unknown[], column: DataGridColumn<R>) => DataGridFilterValue[];
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortAvailableValues = void 0;
4
+ var lodash_1 = require("lodash");
5
+ var sortAvailableValues = function (values, column) {
6
+ switch (column === null || column === void 0 ? void 0 : column.type) {
7
+ case 'number':
8
+ return (0, lodash_1.uniq)(values).sort(function (a, b) { return a - b; });
9
+ case 'select':
10
+ return (0, lodash_1.uniq)(values).sort(function (a, b) {
11
+ return column.itemLabel(a).localeCompare(column.itemLabel(b));
12
+ });
13
+ default:
14
+ return (0, lodash_1.uniq)(values).sort(function (a, b) {
15
+ return a.localeCompare(b);
16
+ });
17
+ }
18
+ };
19
+ exports.sortAvailableValues = sortAvailableValues;
@@ -66,6 +66,7 @@ var ContextMenu_1 = require("../../../ui/ContextMenu");
66
66
  var FilterValuesScroller_1 = require("./FilterValuesScroller");
67
67
  var forms_1 = require("../../../forms");
68
68
  var styles_1 = require("../../../ui/ContextMenu/styles");
69
+ var helpers_2 = require("./helpers");
69
70
  var hooks_1 = require("./hooks");
70
71
  var sortAsc = {
71
72
  number: ['Trier du plus petit au plus grand', Icons_1.ArrowDown19Icon],
@@ -119,14 +120,9 @@ var DataGridFilterMenu = function (_a) {
119
120
  });
120
121
  var availableRows = (0, helpers_1.applyFilters)(rows, otherFilters);
121
122
  var values_1 = availableRows.map(function (row) { return column.filter.getter(row); });
122
- setAvailableValues(function () {
123
- var _a;
124
- return (0, lodash_1.uniq)(values_1).sort(((_a = column.filter) === null || _a === void 0 ? void 0 : _a.type) === 'number'
125
- ? function (a, b) { return a - b; }
126
- : function (a, b) { return a.localeCompare(b); });
127
- });
123
+ setAvailableValues(function () { return (0, helpers_2.sortAvailableValues)(values_1, column); });
128
124
  }
129
- }, [column.filter, column.key, filterValuesLoader, filters, rows]);
125
+ }, [column, filterValuesLoader, filters, rows]);
130
126
  var selectedValues = (0, react_1.useMemo)(function () { var _a, _b; return (_b = (_a = filters === null || filters === void 0 ? void 0 : filters[column.key]) === null || _a === void 0 ? void 0 : _a.values) !== null && _b !== void 0 ? _b : []; }, [column.key, filters]);
131
127
  var clearFilter = (0, react_1.useCallback)(function () {
132
128
  var newFilters = __assign({}, filters);
@@ -34,7 +34,7 @@ var DataGridFooter = function (_a) {
34
34
  if (!Object.keys(footers).length) {
35
35
  return null;
36
36
  }
37
- return ((0, jsx_runtime_1.jsxs)(styles.DataGridFooterRow, { "$gridTemplateColumns": gridTemplateColumns, children: [!!selectable && (0, jsx_runtime_1.jsx)(styles.HeaderSelectionCell, {}), visibleColumns.map(function (col) {
37
+ return ((0, jsx_runtime_1.jsxs)(styles.DataGridFooterRow, { "$gridTemplateColumns": gridTemplateColumns, "$headerColor": headerColor, children: [!!selectable && (0, jsx_runtime_1.jsx)(styles.HeaderSelectionCell, {}), visibleColumns.map(function (col) {
38
38
  var _a, _b, _c;
39
39
  return ((0, jsx_runtime_1.jsx)(styles.DataGridHeaderCellContainer, { style: { width: ((_a = col.width) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_COLUMN_WIDTH) + 'px' }, "$headerColor": (_b = col.color) !== null && _b !== void 0 ? _b : headerColor, children: (_c = footerFunctions === null || footerFunctions === void 0 ? void 0 : footerFunctions[col.key]) === null || _c === void 0 ? void 0 : _c.call(footerFunctions, rows, sortedRows, selectedRows) }, col.key));
40
40
  })] }));
@@ -66,6 +66,6 @@ var DataGridHeaderCell = function (_a) {
66
66
  }, []);
67
67
  var isResizing = resizingColumnKey === columnKey;
68
68
  var hasFilters = ((_b = filters[columnKey]) === null || _b === void 0 ? void 0 : _b.values.length) > 0;
69
- return ((0, jsx_runtime_1.jsxs)(styles.DataGridHeaderCellContainer, { "$headerColor": (_c = column.color) !== null && _c !== void 0 ? _c : headerColor, "$isResizing": isResizing, children: [filterDropdown, typeof column.name === 'string' ? ((0, jsx_runtime_1.jsx)("span", { children: column.name })) : ((0, jsx_runtime_1.jsx)(styles.DataGridHeaderTextContainer, { children: column.name })), !!column.filter && ((0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { size: "small", className: hasFilters ? 'danger' : '', ref: filterButtonRef, icon: Icons_1.ChevronDownIcon, color: hasFilters ? 'danger' : headerColor, onClick: onFilterButtonClicked, bordered: true })), column.resizable !== false && ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(styles.DataGridResizeGrip, { className: isResizing ? 'active' : '', "$headerColor": headerColor, onMouseDown: function (e) { return startResizing(e, columnKey); } }) }))] }));
69
+ return ((0, jsx_runtime_1.jsxs)(styles.DataGridHeaderCellContainer, { "$headerColor": (_c = column.color) !== null && _c !== void 0 ? _c : headerColor, "$isResizing": isResizing, "$hasFilterOpened": isFilterDropdownVisible || hasFilters, children: [filterDropdown, typeof column.name === 'string' ? ((0, jsx_runtime_1.jsx)("span", { children: column.name })) : ((0, jsx_runtime_1.jsx)(styles.DataGridHeaderTextContainer, { children: column.name })), !!column.filter && ((0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { size: "small", className: hasFilters ? 'danger' : '', ref: filterButtonRef, icon: Icons_1.ChevronDownIcon, color: hasFilters ? 'danger' : headerColor, onClick: onFilterButtonClicked, bordered: true })), column.resizable !== false && ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(styles.DataGridResizeGrip, { className: isResizing ? 'active' : '', "$headerColor": headerColor, onMouseDown: function (e) { return startResizing(e, columnKey); } }) }))] }));
70
70
  };
71
71
  exports.DataGridHeaderCell = DataGridHeaderCell;
@@ -134,7 +134,7 @@ var checkboxColumn = function (key, title, otherOptions) { return (__assign({ ke
134
134
  },
135
135
  }, editComponent: CheckboxEditableCell_1.CheckboxEditableCell }, otherOptions)); };
136
136
  exports.checkboxColumn = checkboxColumn;
137
- var selectColumn = function (key, title, items, itemKey, itemLabel, otherOptions) { return (__assign({ key: key, type: 'select', name: title, render: function (value, row) { var _a; return (_a = itemLabel(row[key])) !== null && _a !== void 0 ? _a : ''; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : null; }, sortGetter: function (row) { var _a; return (_a = itemLabel(row[key])) !== null && _a !== void 0 ? _a : ''; }, footer: function (_, filteredRows) { return "".concat(filteredRows.length, " \u00E9l\u00E9ments"); }, filter: (0, filters_1.textFilter)(key), items: items, itemKey: itemKey, itemLabel: itemLabel, editComponent: (0, components_1.forwardRefWithName)(function (_a, ref) {
137
+ var selectColumn = function (key, title, items, itemKey, itemLabel, otherOptions) { return (__assign({ key: key, type: 'select', name: title, render: function (value, row) { var _a; return (_a = itemLabel(row[key])) !== null && _a !== void 0 ? _a : ''; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : null; }, sortGetter: function (row) { var _a; return (_a = itemLabel(row[key])) !== null && _a !== void 0 ? _a : ''; }, footer: function (_, filteredRows) { return "".concat(filteredRows.length, " \u00E9l\u00E9ments"); }, filter: __assign(__assign({}, (0, filters_1.textFilter)(key)), { renderer: function (value) { var _a; return (_a = itemLabel(value)) !== null && _a !== void 0 ? _a : ''; } }), items: items, itemKey: itemKey, itemLabel: itemLabel, editComponent: (0, components_1.forwardRefWithName)(function (_a, ref) {
138
138
  var value = _a.value, onChange = _a.onChange, onClose = _a.onClose;
139
139
  return ((0, jsx_runtime_1.jsx)(Select_1.Select, { ref: ref, items: items, itemKey: itemKey, itemLabel: itemLabel, value: value, onChange: onChange, onBlur: function () { return onClose(true); } }));
140
140
  }, 'SelectColumnEditComponent') }, otherOptions)); };
@@ -72,13 +72,13 @@ var DataGridInner = function (_a, ref) {
72
72
  var className = props.className;
73
73
  var spaceProps = (0, styled_1.extractSpaceProps)(props);
74
74
  var _b = (0, hooks_1.useDataGrid)(props, contextOverride), contextProps = _b[0], DataGridContext = _b[1];
75
- var columns = contextProps.columns, selectable = contextProps.selectable, _c = contextProps.rowHeight, rowHeight = _c === void 0 ? constants_1.DEFAULT_ROW_HEIGHT : _c, _d = contextProps.headerRowHeight, headerRowHeight = _d === void 0 ? 40 : _d, gridTemplateColumns = contextProps.gridTemplateColumns, sortedRows = contextProps.sortedRows, onVisibleRowsChange = contextProps.onVisibleRowsChange, refresh = contextProps.refresh, setSelectedKeys = contextProps.setSelectedKeys, addRows = contextProps.addRows, fixedColumnsCount = contextProps.fixedColumnsCount, resizingColumnKey = contextProps.resizingColumnKey, moveResizing = contextProps.moveResizing, endResizing = contextProps.endResizing;
75
+ var columns = contextProps.columns, selectable = contextProps.selectable, _c = contextProps.rowHeight, rowHeight = _c === void 0 ? constants_1.DEFAULT_ROW_HEIGHT : _c, _d = contextProps.headerRowHeight, headerRowHeight = _d === void 0 ? 40 : _d, gridTemplateColumns = contextProps.gridTemplateColumns, sortedRows = contextProps.sortedRows, onVisibleRowsChange = contextProps.onVisibleRowsChange, refresh = contextProps.refresh, setSelectedKeys = contextProps.setSelectedKeys, addRows = contextProps.addRows, fixedColumnsCount = contextProps.fixedColumnsCount, resizingColumnKey = contextProps.resizingColumnKey, moveResizing = contextProps.moveResizing, endResizing = contextProps.endResizing, footerFunctions = contextProps.footerFunctions;
76
76
  (0, react_1.useImperativeHandle)(ref, function () { return ({
77
77
  refresh: refresh !== null && refresh !== void 0 ? refresh : (function () { }),
78
78
  setSelectedKeys: setSelectedKeys,
79
79
  addRows: addRows,
80
80
  }); }, [addRows, refresh, setSelectedKeys]);
81
- var hasFooter = Object.values(columns).some(function (col) { return col.footer; });
81
+ var hasFooter = footerFunctions && Object.values(footerFunctions).length > 0;
82
82
  var fixedColumnWidths = (0, react_1.useMemo)(function () { return __spreadArray(__spreadArray([], (selectable ? [constants_1.SELECTION_CELL_WIDTH] : []), true), Object.values(columns)
83
83
  .slice(0, fixedColumnsCount !== null && fixedColumnsCount !== void 0 ? fixedColumnsCount : 0)
84
84
  .map(function (col) { var _a; return (_a = col.width) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_COLUMN_WIDTH; }), true); }, [columns, fixedColumnsCount, selectable]);
@@ -8,6 +8,7 @@ export declare const DataGridResizeGrip: import("styled-components/dist/types").
8
8
  type DataGridHeaderCellContainerProps = {
9
9
  $isResizing?: boolean;
10
10
  $headerColor?: ThemeColor;
11
+ $hasFilterOpened?: boolean;
11
12
  };
12
13
  export declare const DataGridHeaderCellContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, DataGridHeaderCellContainerProps>> & string;
13
14
  export declare const DataGridHeaderTextContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
@@ -33,24 +33,29 @@ var styled_1 = require("../../../helpers/styled");
33
33
  var styled_components_1 = __importStar(require("styled-components"));
34
34
  var styles_1 = require("../VirtualScroller/styles");
35
35
  exports.DataGridWrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n overflow: hidden;\n width: 100%;\n height: 100%;\n\n ", "\n"], ["\n display: flex;\n flex-direction: column;\n overflow: hidden;\n width: 100%;\n height: 100%;\n\n ", "\n"])), styled_1.space);
36
- exports.DataGridResizeGrip = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n position: absolute;\n top: 0;\n right: 0;\n width: var(--space-1);\n height: 100%;\n\n ", "\n\n cursor: col-resize;\n display: none;\n"], ["\n position: absolute;\n top: 0;\n right: 0;\n width: var(--space-1);\n height: 100%;\n\n ", "\n\n cursor: col-resize;\n display: none;\n"])), function (_a) {
37
- var $headerColor = _a.$headerColor;
38
- return $headerColor
39
- ? (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background-color: var(--color-", "-400);\n &:hover,\n &.active {\n background-color: var(--color-", "-500);\n }\n "], ["\n background-color: var(--color-", "-400);\n &:hover,\n &.active {\n background-color: var(--color-", "-500);\n }\n "])), $headerColor, $headerColor) : (0, styled_components_1.css)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background-color: var(--color-base-400);\n &:hover,\n &.active {\n background-color: var(--color-base-500);\n }\n "], ["\n background-color: var(--color-base-400);\n &:hover,\n &.active {\n background-color: var(--color-base-500);\n }\n "])));
36
+ exports.DataGridResizeGrip = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: absolute;\n top: 0;\n right: 0;\n width: var(--space-1);\n height: 100%;\n\n ", "\n\n cursor: col-resize;\n display: none;\n"], ["\n position: absolute;\n top: 0;\n right: 0;\n width: var(--space-1);\n height: 100%;\n\n ", "\n\n cursor: col-resize;\n display: none;\n"])), function (_a) {
37
+ var _b = _a.$headerColor, $headerColor = _b === void 0 ? 'base' : _b;
38
+ return (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background-color: var(--color-", "-400);\n &:hover,\n &.active {\n background-color: var(--color-", "-500);\n }\n "], ["\n background-color: var(--color-", "-400);\n &:hover,\n &.active {\n background-color: var(--color-", "-500);\n }\n "])), $headerColor, $headerColor);
40
39
  });
41
- exports.DataGridHeaderCellContainer = styled_components_1.default.div(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n font-weight: var(--font-bold);\n gap: var(--space-1);\n height: 100%;\n user-select: none;\n line-height: 1.5rem;\n padding: 0 var(--space-3);\n position: relative;\n\n z-index: ", ";\n\n ", "\n\n &:hover {\n ", " {\n display: block;\n }\n }\n\n & > span {\n display: inline-block;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n flex: 1;\n font-weight: bold;\n }\n"], ["\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n font-weight: var(--font-bold);\n gap: var(--space-1);\n height: 100%;\n user-select: none;\n line-height: 1.5rem;\n padding: 0 var(--space-3);\n position: relative;\n\n z-index: ", ";\n\n ", "\n\n &:hover {\n ", " {\n display: block;\n }\n }\n\n & > span {\n display: inline-block;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n flex: 1;\n font-weight: bold;\n }\n"])), function (_a) {
40
+ exports.DataGridHeaderCellContainer = styled_components_1.default.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n font-weight: bold;\n gap: var(--space-1);\n height: 100%;\n user-select: none;\n line-height: 1.5rem;\n padding: 0 var(--space-3);\n position: relative;\n box-sizing: border-box;\n\n z-index: ", ";\n\n ", "\n\n button {\n display: ", ";\n }\n\n &:hover {\n ", " {\n display: block;\n }\n button {\n display: flex;\n }\n }\n\n & > span {\n display: inline-block;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n flex: 1;\n font-weight: bold;\n }\n"], ["\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n font-weight: bold;\n gap: var(--space-1);\n height: 100%;\n user-select: none;\n line-height: 1.5rem;\n padding: 0 var(--space-3);\n position: relative;\n box-sizing: border-box;\n\n z-index: ", ";\n\n ", "\n\n button {\n display: ", ";\n }\n\n &:hover {\n ", " {\n display: block;\n }\n button {\n display: flex;\n }\n }\n\n & > span {\n display: inline-block;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n flex: 1;\n font-weight: bold;\n }\n"])), function (_a) {
42
41
  var $isResizing = _a.$isResizing;
43
42
  return ($isResizing ? 1 : 0);
44
43
  }, function (_a) {
45
- var $headerColor = _a.$headerColor;
44
+ var _b = _a.$headerColor, $headerColor = _b === void 0 ? 'base' : _b;
46
45
  return $headerColor
47
- ? (0, styled_components_1.css)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n background-color: var(--color-", "-200);\n color: var(--color-", "-950);\n &:hover {\n background-color: var(--color-", "-300);\n }\n\n & > button {\n background-color: var(--color-", "-400);\n border-color: var(--color-", "-500);\n &:hover {\n background-color: var(--color-", "-500);\n border-color: var(--color-", "-600);\n }\n }\n & > button.danger {\n background-color: var(--color-red-400);\n border-color: var(--color-red-500);\n &:hover {\n background-color: var(--color-red-500);\n border-color: var(--color-red-600);\n }\n }\n "], ["\n background-color: var(--color-", "-200);\n color: var(--color-", "-950);\n &:hover {\n background-color: var(--color-", "-300);\n }\n\n & > button {\n background-color: var(--color-", "-400);\n border-color: var(--color-", "-500);\n &:hover {\n background-color: var(--color-", "-500);\n border-color: var(--color-", "-600);\n }\n }\n & > button.danger {\n background-color: var(--color-red-400);\n border-color: var(--color-red-500);\n &:hover {\n background-color: var(--color-red-500);\n border-color: var(--color-red-600);\n }\n }\n "])), $headerColor, $headerColor, $headerColor, $headerColor, $headerColor, $headerColor, $headerColor) : (0, styled_components_1.css)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n background-color: var(--color-base-200);\n color: var(--color-text-950);\n &:hover {\n background-color: var(--color-base-300);\n }\n "], ["\n background-color: var(--color-base-200);\n color: var(--color-text-950);\n &:hover {\n background-color: var(--color-base-300);\n }\n "])));
46
+ ? (0, styled_components_1.css)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n background-color: var(--color-", "-200);\n color: var(--color-", "-950);\n &:hover {\n background-color: var(--color-", "-300);\n }\n\n & > button {\n background-color: var(--color-", "-400);\n border-color: var(--color-", "-500);\n &:hover {\n background-color: var(--color-", "-500);\n border-color: var(--color-", "-600);\n }\n }\n & > button.danger {\n background-color: var(--color-red-400);\n border-color: var(--color-red-500);\n &:hover {\n background-color: var(--color-red-500);\n border-color: var(--color-red-600);\n }\n }\n "], ["\n background-color: var(--color-", "-200);\n color: var(--color-", "-950);\n &:hover {\n background-color: var(--color-", "-300);\n }\n\n & > button {\n background-color: var(--color-", "-400);\n border-color: var(--color-", "-500);\n &:hover {\n background-color: var(--color-", "-500);\n border-color: var(--color-", "-600);\n }\n }\n & > button.danger {\n background-color: var(--color-red-400);\n border-color: var(--color-red-500);\n &:hover {\n background-color: var(--color-red-500);\n border-color: var(--color-red-600);\n }\n }\n "])), $headerColor, $headerColor, $headerColor, $headerColor, $headerColor, $headerColor, $headerColor) : (0, styled_components_1.css)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n background-color: var(--color-base-200);\n color: var(--color-text-950);\n &:hover {\n background-color: var(--color-base-300);\n }\n "], ["\n background-color: var(--color-base-200);\n color: var(--color-text-950);\n &:hover {\n background-color: var(--color-base-300);\n }\n "])));
47
+ }, function (_a) {
48
+ var $hasFilterOpened = _a.$hasFilterOpened;
49
+ return ($hasFilterOpened ? 'flex' : 'none');
48
50
  }, exports.DataGridResizeGrip);
49
51
  exports.DataGridHeaderCellContainer.displayName = 'DataGridHeaderCellContainer';
50
- exports.DataGridHeaderTextContainer = styled_components_1.default.div(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n display: flex;\n flex: 1;\n line-height: 1rem;\n align-items: center;\n font-size: var(--text-md);\n max-height: 100%;\n"], ["\n display: flex;\n flex: 1;\n line-height: 1rem;\n align-items: center;\n font-size: var(--text-md);\n max-height: 100%;\n"])));
51
- exports.dataGridCellCss = (0, styled_components_1.css)(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 var(--space-3);\n overflow: hidden;\n text-overflow: ellipsis;\n user-select: ", ";\n white-space: nowrap;\n border-right: 1px solid var(--color-base-200);\n border-bottom: 1px solid var(--color-base-200);\n background-color: ", ";\n text-align: ", ";\n"], ["\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 var(--space-3);\n overflow: hidden;\n text-overflow: ellipsis;\n user-select: ", ";\n white-space: nowrap;\n border-right: 1px solid var(--color-base-200);\n border-bottom: 1px solid var(--color-base-200);\n background-color: ", ";\n text-align: ", ";\n"])), function (_a) {
52
+ exports.DataGridHeaderTextContainer = styled_components_1.default.div(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n display: flex;\n flex: 1;\n line-height: 1rem;\n align-items: center;\n font-size: var(--text-md);\n max-height: 100%;\n"], ["\n display: flex;\n flex: 1;\n line-height: 1rem;\n align-items: center;\n font-size: var(--text-md);\n max-height: 100%;\n"])));
53
+ exports.dataGridCellCss = (0, styled_components_1.css)(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 var(--space-3);\n overflow: hidden;\n text-overflow: ellipsis;\n user-select: ", ";\n white-space: nowrap;\n ", "\n background-color: ", ";\n text-align: ", ";\n"], ["\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 var(--space-3);\n overflow: hidden;\n text-overflow: ellipsis;\n user-select: ", ";\n white-space: nowrap;\n ", "\n background-color: ", ";\n text-align: ", ";\n"])), function (_a) {
52
54
  var $userSelect = _a.$userSelect;
53
55
  return ($userSelect ? 'text' : 'none');
56
+ }, function (_a) {
57
+ var _b = _a.$headerColor, $headerColor = _b === void 0 ? 'base' : _b;
58
+ return (0, styled_components_1.css)(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n border-right: 1px solid var(--color-", "-200);\n border-bottom: 1px solid var(--color-", "-200);\n &:first-child {\n border-left: 1px solid var(--color-", "-300);\n }\n &:last-child {\n border-right: 1px solid var(--color-", "-300);\n }\n "], ["\n border-right: 1px solid var(--color-", "-200);\n border-bottom: 1px solid var(--color-", "-200);\n &:first-child {\n border-left: 1px solid var(--color-", "-300);\n }\n &:last-child {\n border-right: 1px solid var(--color-", "-300);\n }\n "])), $headerColor, $headerColor, $headerColor, $headerColor);
54
59
  }, function (_a) {
55
60
  var _b = _a.$color, $color = _b === void 0 ? 'base' : _b;
56
61
  return "var(--color-".concat($color, "-50)");
@@ -60,7 +65,7 @@ exports.dataGridCellCss = (0, styled_components_1.css)(templateObject_9 || (temp
60
65
  });
61
66
  exports.DataGridCell = styled_components_1.default.div(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), exports.dataGridCellCss);
62
67
  exports.DataGridCell.displayName = 'DataGridCell';
63
- exports.DataGridHeaderTitle = styled_components_1.default.div(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n white-space: normal;\n font-weight: var(--font-bold);\n color: var(--color-text-800);\n height: auto;\n"], ["\n white-space: normal;\n font-weight: var(--font-bold);\n color: var(--color-text-800);\n height: auto;\n"])));
68
+ exports.DataGridHeaderTitle = styled_components_1.default.div(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n white-space: normal;\n font-weight: bold;\n color: var(--color-text-800);\n height: auto;\n"], ["\n white-space: normal;\n font-weight: bold;\n color: var(--color-text-800);\n height: auto;\n"])));
64
69
  exports.DataGridToolsRow = styled_components_1.default.div(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n grid-column-start: 1;\n grid-column-end: -1;\n grid-row: 1;\n display: flex;\n gap: var(--space-2);\n padding: var(--space-2);\n position: sticky;\n top: 0;\n z-index: 10;\n align-items: flex-end;\n"], ["\n grid-column-start: 1;\n grid-column-end: -1;\n grid-row: 1;\n display: flex;\n gap: var(--space-2);\n padding: var(--space-2);\n position: sticky;\n top: 0;\n z-index: 10;\n align-items: flex-end;\n"])));
65
70
  exports.DataGridToolsRowHeaderContent = styled_components_1.default.div(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n flex: 1;\n"], ["\n flex: 1;\n"])));
66
71
  exports.DataGridToolsRowButtonsContainer = styled_components_1.default.div(templateObject_14 || (templateObject_14 = __makeTemplateObject(["\n flex-shrink: 0;\n display: flex;\n gap: var(--space-1);\n align-items: center;\n padding: 0 var(--space-1);\n position: sticky;\n left: 0;\n"], ["\n flex-shrink: 0;\n display: flex;\n gap: var(--space-1);\n align-items: center;\n padding: 0 var(--space-1);\n position: sticky;\n left: 0;\n"])));
@@ -86,7 +91,7 @@ exports.DataGridContainer = styled_components_1.default.div(templateObject_15 ||
86
91
  : "calc(".concat($fixedColumnWidths
87
92
  .slice(0, i)
88
93
  .map(function (w) { return (typeof w === 'number' ? "".concat(w, "px") : w); })
89
- .join(' + '), ")"), ";\n background-color: var(--color-base-200);\n z-index: 1;\n }"); });
94
+ .join(' + '), ")"), ";\n z-index: 1;\n }"); });
90
95
  }, function (_a) {
91
96
  var _b = _a.$fixedColumnWidths, $fixedColumnWidths = _b === void 0 ? [] : _b;
92
97
  return $fixedColumnWidths.map(function (width, i) { return "\n ".concat(exports.DataGridCell, ":nth-child(").concat(i + 1, ") {\n position: sticky;\n left: ").concat(i === 0
@@ -97,14 +102,14 @@ exports.DataGridContainer = styled_components_1.default.div(templateObject_15 ||
97
102
  .join(' + '), ")"), ";\n background-color: var(--color-base-50);\n z-index: 1;\n }"); });
98
103
  }, styles_1.VirtualScrollerFiller);
99
104
  exports.DataGridContainer.displayName = 'DataGridContainer';
100
- var dataGridHeaderOrFooterRowCss = (0, styled_components_1.css)(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n display: grid;\n grid-template-rows: ", ";\n z-index: 10;\n position: sticky;\n align-items: center;\n\n ", "\n\n ", ":first-child {\n border-left: 1px solid var(--color-base-300);\n }\n ", ":last-child {\n border-left: 1px solid var(--color-base-300);\n }\n"], ["\n display: grid;\n grid-template-rows: ", ";\n z-index: 10;\n position: sticky;\n align-items: center;\n\n ", "\n\n ", ":first-child {\n border-left: 1px solid var(--color-base-300);\n }\n ", ":last-child {\n border-left: 1px solid var(--color-base-300);\n }\n"])), function (_a) {
105
+ var dataGridHeaderOrFooterRowCss = (0, styled_components_1.css)(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n display: grid;\n grid-template-rows: ", ";\n z-index: 10;\n position: sticky;\n align-items: center;\n\n ", "\n"], ["\n display: grid;\n grid-template-rows: ", ";\n z-index: 10;\n position: sticky;\n align-items: center;\n\n ", "\n"])), function (_a) {
101
106
  var _b = _a.$headerRowHeight, $headerRowHeight = _b === void 0 ? constants_1.DEFAULT_HEADER_ROW_HEIGHT : _b;
102
107
  return "".concat($headerRowHeight, "px");
103
108
  }, function (_a) {
104
- var $headerColor = _a.$headerColor;
109
+ var _b = _a.$headerColor, $headerColor = _b === void 0 ? 'base' : _b;
105
110
  return $headerColor
106
- ? (0, styled_components_1.css)(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n background-color: var(--color-", "-100);\n color: var(--color-", "-900);\n "], ["\n background-color: var(--color-", "-100);\n color: var(--color-", "-900);\n "])), $headerColor, $headerColor) : (0, styled_components_1.css)(templateObject_17 || (templateObject_17 = __makeTemplateObject(["\n background-color: var(--color-base-200);\n color: var(--color-text-800);\n "], ["\n background-color: var(--color-base-200);\n color: var(--color-text-800);\n "])));
107
- }, exports.DataGridHeaderCellContainer, exports.DataGridHeaderCellContainer);
111
+ ? (0, styled_components_1.css)(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n background-color: var(--color-", "-100);\n color: var(--color-", "-900);\n ", ":first-child {\n border-left: 1px solid var(--color-", "-300);\n }\n ", ":last-child {\n border-right: 1px solid var(--color-", "-300);\n }\n "], ["\n background-color: var(--color-", "-100);\n color: var(--color-", "-900);\n ", ":first-child {\n border-left: 1px solid var(--color-", "-300);\n }\n ", ":last-child {\n border-right: 1px solid var(--color-", "-300);\n }\n "])), $headerColor, $headerColor, exports.DataGridHeaderCellContainer, $headerColor, exports.DataGridHeaderCellContainer, $headerColor) : (0, styled_components_1.css)(templateObject_17 || (templateObject_17 = __makeTemplateObject(["\n background-color: var(--color-base-200);\n color: var(--color-text-800);\n ", ":first-child {\n border-left: 1px solid var(--color-base-300);\n }\n ", ":last-child {\n border-right: 1px solid var(--color-base-300);\n }\n "], ["\n background-color: var(--color-base-200);\n color: var(--color-text-800);\n ", ":first-child {\n border-left: 1px solid var(--color-base-300);\n }\n ", ":last-child {\n border-right: 1px solid var(--color-base-300);\n }\n "])), exports.DataGridHeaderCellContainer, exports.DataGridHeaderCellContainer);
112
+ });
108
113
  exports.DataGridHeaderRow = styled_components_1.default.div.attrs(function (_a) {
109
114
  var $gridTemplateColumns = _a.$gridTemplateColumns;
110
115
  return ({
@@ -112,7 +117,10 @@ exports.DataGridHeaderRow = styled_components_1.default.div.attrs(function (_a)
112
117
  gridTemplateColumns: $gridTemplateColumns,
113
118
  },
114
119
  });
115
- })(templateObject_19 || (templateObject_19 = __makeTemplateObject(["\n ", "\n border-top: 1px solid var(--color-base-300);\n top: 0;\n"], ["\n ", "\n border-top: 1px solid var(--color-base-300);\n top: 0;\n"])), dataGridHeaderOrFooterRowCss);
120
+ })(templateObject_19 || (templateObject_19 = __makeTemplateObject(["\n ", "\n top: 0;\n border-top: 1px solid\n var(--color-", "-300);\n"], ["\n ", "\n top: 0;\n border-top: 1px solid\n var(--color-", "-300);\n"])), dataGridHeaderOrFooterRowCss, function (_a) {
121
+ var _b = _a.$headerColor, $headerColor = _b === void 0 ? 'base' : _b;
122
+ return $headerColor;
123
+ });
116
124
  exports.DataGridHeaderRow.displayName = 'DataGridHeaderRow';
117
125
  exports.DataGridFooterRow = styled_components_1.default.div.attrs(function (_a) {
118
126
  var $gridTemplateColumns = _a.$gridTemplateColumns;
@@ -121,9 +129,15 @@ exports.DataGridFooterRow = styled_components_1.default.div.attrs(function (_a)
121
129
  gridTemplateColumns: $gridTemplateColumns,
122
130
  },
123
131
  });
124
- })(templateObject_20 || (templateObject_20 = __makeTemplateObject(["\n ", "\n border-bottom: 1px solid var(--color-base-300);\n bottom: 0;\n"], ["\n ", "\n border-bottom: 1px solid var(--color-base-300);\n bottom: 0;\n"])), dataGridHeaderOrFooterRowCss);
132
+ })(templateObject_20 || (templateObject_20 = __makeTemplateObject(["\n ", "\n border-top: 1px solid var(--color-", "-300);\n border-bottom: 1px solid\n var(--color-", "-300);\n bottom: 0;\n"], ["\n ", "\n border-top: 1px solid var(--color-", "-300);\n border-bottom: 1px solid\n var(--color-", "-300);\n bottom: 0;\n"])), dataGridHeaderOrFooterRowCss, function (_a) {
133
+ var _b = _a.$headerColor, $headerColor = _b === void 0 ? 'base' : _b;
134
+ return $headerColor;
135
+ }, function (_a) {
136
+ var _b = _a.$headerColor, $headerColor = _b === void 0 ? 'base' : _b;
137
+ return $headerColor;
138
+ });
125
139
  exports.DataGridFooterRow.displayName = 'DataGridFooterRow';
126
- exports.DataGridRow = styled_components_1.default.div(templateObject_22 || (templateObject_22 = __makeTemplateObject(["\n display: contents;\n\n ", ":first-child {\n border-left: 1px solid var(--color-base-300);\n }\n ", ":last-child {\n border-left: 1px solid var(--color-base-300);\n }\n\n &:hover > ", " {\n background-color: var(--color-blue-100);\n }\n\n ", "\n"], ["\n display: contents;\n\n ", ":first-child {\n border-left: 1px solid var(--color-base-300);\n }\n ", ":last-child {\n border-left: 1px solid var(--color-base-300);\n }\n\n &:hover > ", " {\n background-color: var(--color-blue-100);\n }\n\n ", "\n"])), exports.DataGridCell, exports.DataGridCell, exports.DataGridCell, function (_a) {
140
+ exports.DataGridRow = styled_components_1.default.div(templateObject_22 || (templateObject_22 = __makeTemplateObject(["\n display: contents;\n\n &:last-child > ", " {\n border-bottom: none;\n }\n\n &:hover > ", " {\n background-color: var(--color-blue-100);\n }\n\n ", "\n"], ["\n display: contents;\n\n &:last-child > ", " {\n border-bottom: none;\n }\n\n &:hover > ", " {\n background-color: var(--color-blue-100);\n }\n\n ", "\n"])), exports.DataGridCell, exports.DataGridCell, function (_a) {
127
141
  var $edited = _a.$edited;
128
142
  return $edited && (0, styled_components_1.css)(templateObject_21 || (templateObject_21 = __makeTemplateObject(["\n & > ", ", & > ", " {\n background-color: var(--color-warning-100);\n color: var(--color-warning-900);\n }\n &:hover > ", ", &:hover > ", " {\n background-color: var(--color-blue-100);\n }\n "], ["\n & > ", ", & > ", " {\n background-color: var(--color-warning-100);\n color: var(--color-warning-900);\n }\n &:hover > ", ", &:hover > ", " {\n background-color: var(--color-blue-100);\n }\n "])), exports.DataGridCell, exports.SelectionCell, exports.DataGridCell, exports.SelectionCell);
129
143
  });
@@ -9,6 +9,7 @@ export type DataGridCellFCProps = {
9
9
  $color?: ThemeColor;
10
10
  $textAlign?: 'left' | 'right' | 'center';
11
11
  $userSelect?: boolean;
12
+ $headerColor?: ThemeColor;
12
13
  };
13
14
  export type DataGridCellFC = FC<DataGridCellFCProps>;
14
15
  export type DataGridFooterPredefinedFunction = 'average' | 'avg' | 'count' | 'max' | 'min' | 'sum';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@addev-be/ui",
3
- "version": "0.21.6",
3
+ "version": "0.21.7",
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": "^0.21.6",
23
+ "@addev-be/framework-utils": "^0.21.7",
24
24
  "@types/lodash": "^4",
25
25
  "@types/react": "^18.3.3",
26
26
  "@types/react-dom": "^18.3.0",
@@ -26,6 +26,7 @@ export const DataGridCell = <R, T>({
26
26
  setEditingCell,
27
27
  onRowDoubleClick,
28
28
  userSelect,
29
+ headerColor,
29
30
  } = useDataGridContext(context);
30
31
  const isEditable =
31
32
  !!editable &&
@@ -72,6 +73,7 @@ export const DataGridCell = <R, T>({
72
73
  $userSelect={userSelect}
73
74
  $color={column.color}
74
75
  $textAlign={column.textAlign}
76
+ $headerColor={headerColor}
75
77
  >
76
78
  {(column.render ?? defaultRender)(value, row, column)}
77
79
  </DataGridCellComponent>
@@ -0,0 +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
+ };
@@ -33,7 +33,7 @@ import {
33
33
  defaultRendererAndFormatter,
34
34
  getDateGroups,
35
35
  } from '../helpers';
36
- import { intersection, uniq, without } from 'lodash';
36
+ import { intersection, without } from 'lodash';
37
37
  import {
38
38
  useCallback,
39
39
  useContext,
@@ -47,6 +47,7 @@ import { ContextMenu } from '../../../ui/ContextMenu';
47
47
  import { FilterValuesScroller } from './FilterValuesScroller';
48
48
  import { Input } from '../../../forms';
49
49
  import { MenuContainer } from '../../../ui/ContextMenu/styles';
50
+ import { sortAvailableValues } from './helpers';
50
51
  import { useFilterModal } from './hooks';
51
52
 
52
53
  type FilterValuesProps<R> = {
@@ -120,15 +121,9 @@ export const DataGridFilterMenu = <R,>({
120
121
  .map(([, filter]) => filter);
121
122
  const availableRows = applyFilters(rows, otherFilters);
122
123
  const values = availableRows.map((row) => column.filter!.getter(row));
123
- setAvailableValues(() =>
124
- uniq(values).sort(
125
- column.filter?.type === 'number'
126
- ? (a, b) => (a as number) - (b as number)
127
- : (a, b) => (a as string).localeCompare(b as string)
128
- )
129
- );
124
+ setAvailableValues(() => sortAvailableValues(values, column));
130
125
  }
131
- }, [column.filter, column.key, filterValuesLoader, filters, rows]);
126
+ }, [column, filterValuesLoader, filters, rows]);
132
127
 
133
128
  const selectedValues = useMemo(
134
129
  () => filters?.[column.key]?.values ?? [],
@@ -26,7 +26,10 @@ export const DataGridFooter = <R,>({
26
26
  }
27
27
 
28
28
  return (
29
- <styles.DataGridFooterRow $gridTemplateColumns={gridTemplateColumns}>
29
+ <styles.DataGridFooterRow
30
+ $gridTemplateColumns={gridTemplateColumns}
31
+ $headerColor={headerColor}
32
+ >
30
33
  {!!selectable && <styles.HeaderSelectionCell />}
31
34
  {visibleColumns.map((col) => (
32
35
  <styles.DataGridHeaderCellContainer
@@ -76,6 +76,7 @@ export const DataGridHeaderCell = <R,>({
76
76
  <styles.DataGridHeaderCellContainer
77
77
  $headerColor={column.color ?? headerColor}
78
78
  $isResizing={isResizing}
79
+ $hasFilterOpened={isFilterDropdownVisible || hasFilters}
79
80
  >
80
81
  {filterDropdown}
81
82
 
@@ -351,7 +351,10 @@ export const selectColumn = <R extends Record<string, any>, T>(
351
351
  getter: (row) => row[key] ?? null,
352
352
  sortGetter: (row) => itemLabel(row[key]) ?? '',
353
353
  footer: (_, filteredRows) => `${filteredRows.length} éléments`,
354
- filter: textFilter(key),
354
+ filter: {
355
+ ...textFilter(key),
356
+ renderer: (value) => itemLabel(value) ?? '',
357
+ },
355
358
  items,
356
359
  itemKey,
357
360
  itemLabel,
@@ -51,6 +51,7 @@ export const DataGridInner = <R,>(
51
51
  resizingColumnKey,
52
52
  moveResizing,
53
53
  endResizing,
54
+ footerFunctions,
54
55
  } = contextProps;
55
56
 
56
57
  useImperativeHandle(
@@ -63,7 +64,8 @@ export const DataGridInner = <R,>(
63
64
  [addRows, refresh, setSelectedKeys]
64
65
  );
65
66
 
66
- const hasFooter = Object.values(columns).some((col) => col.footer);
67
+ const hasFooter =
68
+ footerFunctions && Object.values(footerFunctions).length > 0;
67
69
  const fixedColumnWidths = useMemo(
68
70
  () => [
69
71
  ...(selectable ? [SELECTION_CELL_WIDTH] : []),
@@ -29,22 +29,13 @@ export const DataGridResizeGrip = styled.div<{ $headerColor?: ThemeColor }>`
29
29
  width: var(--space-1);
30
30
  height: 100%;
31
31
 
32
- ${({ $headerColor }) =>
33
- $headerColor
34
- ? css`
35
- background-color: var(--color-${$headerColor}-400);
36
- &:hover,
37
- &.active {
38
- background-color: var(--color-${$headerColor}-500);
39
- }
40
- `
41
- : css`
42
- background-color: var(--color-base-400);
43
- &:hover,
44
- &.active {
45
- background-color: var(--color-base-500);
46
- }
47
- `}
32
+ ${({ $headerColor = 'base' }) => css`
33
+ background-color: var(--color-${$headerColor}-400);
34
+ &:hover,
35
+ &.active {
36
+ background-color: var(--color-${$headerColor}-500);
37
+ }
38
+ `}
48
39
 
49
40
  cursor: col-resize;
50
41
  display: none;
@@ -53,23 +44,25 @@ export const DataGridResizeGrip = styled.div<{ $headerColor?: ThemeColor }>`
53
44
  type DataGridHeaderCellContainerProps = {
54
45
  $isResizing?: boolean;
55
46
  $headerColor?: ThemeColor;
47
+ $hasFilterOpened?: boolean;
56
48
  };
57
49
 
58
50
  export const DataGridHeaderCellContainer = styled.div<DataGridHeaderCellContainerProps>`
59
51
  align-items: center;
60
52
  display: flex;
61
53
  flex-wrap: nowrap;
62
- font-weight: var(--font-bold);
54
+ font-weight: bold;
63
55
  gap: var(--space-1);
64
56
  height: 100%;
65
57
  user-select: none;
66
58
  line-height: 1.5rem;
67
59
  padding: 0 var(--space-3);
68
60
  position: relative;
61
+ box-sizing: border-box;
69
62
 
70
63
  z-index: ${({ $isResizing }) => ($isResizing ? 1 : 0)};
71
64
 
72
- ${({ $headerColor }) =>
65
+ ${({ $headerColor = 'base' }) =>
73
66
  $headerColor
74
67
  ? css`
75
68
  background-color: var(--color-${$headerColor}-200);
@@ -103,10 +96,17 @@ export const DataGridHeaderCellContainer = styled.div<DataGridHeaderCellContaine
103
96
  }
104
97
  `}
105
98
 
99
+ button {
100
+ display: ${({ $hasFilterOpened }) => ($hasFilterOpened ? 'flex' : 'none')};
101
+ }
102
+
106
103
  &:hover {
107
104
  ${DataGridResizeGrip} {
108
105
  display: block;
109
106
  }
107
+ button {
108
+ display: flex;
109
+ }
110
110
  }
111
111
 
112
112
  & > span {
@@ -138,8 +138,16 @@ export const dataGridCellCss = css<DataGridCellFCProps>`
138
138
  text-overflow: ellipsis;
139
139
  user-select: ${({ $userSelect }) => ($userSelect ? 'text' : 'none')};
140
140
  white-space: nowrap;
141
- border-right: 1px solid var(--color-base-200);
142
- border-bottom: 1px solid var(--color-base-200);
141
+ ${({ $headerColor = 'base' }) => css`
142
+ border-right: 1px solid var(--color-${$headerColor}-200);
143
+ border-bottom: 1px solid var(--color-${$headerColor}-200);
144
+ &:first-child {
145
+ border-left: 1px solid var(--color-${$headerColor}-300);
146
+ }
147
+ &:last-child {
148
+ border-right: 1px solid var(--color-${$headerColor}-300);
149
+ }
150
+ `}
143
151
  background-color: ${({ $color = 'base' }) => `var(--color-${$color}-50)`};
144
152
  text-align: ${({ $textAlign = 'left' }) => $textAlign};
145
153
  `;
@@ -151,7 +159,7 @@ DataGridCell.displayName = 'DataGridCell';
151
159
 
152
160
  export const DataGridHeaderTitle = styled.div`
153
161
  white-space: normal;
154
- font-weight: var(--font-bold);
162
+ font-weight: bold;
155
163
  color: var(--color-text-800);
156
164
  height: auto;
157
165
  `;
@@ -234,7 +242,6 @@ export const DataGridContainer = styled.div<{
234
242
  .map((w) => (typeof w === 'number' ? `${w}px` : w))
235
243
  .join(' + ')})`
236
244
  };
237
- background-color: var(--color-base-200);
238
245
  z-index: 1;
239
246
  }`
240
247
  )}
@@ -282,23 +289,28 @@ const dataGridHeaderOrFooterRowCss = css<DataGridHeaderOrFooterRowProps>`
282
289
  position: sticky;
283
290
  align-items: center;
284
291
 
285
- ${({ $headerColor }) =>
292
+ ${({ $headerColor = 'base' }) =>
286
293
  $headerColor
287
294
  ? css`
288
295
  background-color: var(--color-${$headerColor}-100);
289
296
  color: var(--color-${$headerColor}-900);
297
+ ${DataGridHeaderCellContainer}:first-child {
298
+ border-left: 1px solid var(--color-${$headerColor}-300);
299
+ }
300
+ ${DataGridHeaderCellContainer}:last-child {
301
+ border-right: 1px solid var(--color-${$headerColor}-300);
302
+ }
290
303
  `
291
304
  : css`
292
305
  background-color: var(--color-base-200);
293
306
  color: var(--color-text-800);
307
+ ${DataGridHeaderCellContainer}:first-child {
308
+ border-left: 1px solid var(--color-base-300);
309
+ }
310
+ ${DataGridHeaderCellContainer}:last-child {
311
+ border-right: 1px solid var(--color-base-300);
312
+ }
294
313
  `}
295
-
296
- ${DataGridHeaderCellContainer}:first-child {
297
- border-left: 1px solid var(--color-base-300);
298
- }
299
- ${DataGridHeaderCellContainer}:last-child {
300
- border-left: 1px solid var(--color-base-300);
301
- }
302
314
  `;
303
315
 
304
316
  export const DataGridHeaderRow = styled.div.attrs<DataGridHeaderOrFooterRowProps>(
@@ -309,8 +321,9 @@ export const DataGridHeaderRow = styled.div.attrs<DataGridHeaderOrFooterRowProps
309
321
  })
310
322
  )`
311
323
  ${dataGridHeaderOrFooterRowCss}
312
- border-top: 1px solid var(--color-base-300);
313
324
  top: 0;
325
+ border-top: 1px solid
326
+ var(--color-${({ $headerColor = 'base' }) => $headerColor}-300);
314
327
  `;
315
328
  DataGridHeaderRow.displayName = 'DataGridHeaderRow';
316
329
 
@@ -322,7 +335,10 @@ export const DataGridFooterRow = styled.div.attrs<DataGridHeaderOrFooterRowProps
322
335
  })
323
336
  )`
324
337
  ${dataGridHeaderOrFooterRowCss}
325
- border-bottom: 1px solid var(--color-base-300);
338
+ border-top: 1px solid var(--color-${({ $headerColor = 'base' }) =>
339
+ $headerColor}-300);
340
+ border-bottom: 1px solid
341
+ var(--color-${({ $headerColor = 'base' }) => $headerColor}-300);
326
342
  bottom: 0;
327
343
  `;
328
344
  DataGridFooterRow.displayName = 'DataGridFooterRow';
@@ -334,11 +350,8 @@ type DataGridRowProps = {
334
350
  export const DataGridRow = styled.div<DataGridRowProps>`
335
351
  display: contents;
336
352
 
337
- ${DataGridCell}:first-child {
338
- border-left: 1px solid var(--color-base-300);
339
- }
340
- ${DataGridCell}:last-child {
341
- border-left: 1px solid var(--color-base-300);
353
+ &:last-child > ${DataGridCell} {
354
+ border-bottom: none;
342
355
  }
343
356
 
344
357
  &:hover > ${DataGridCell} {
@@ -23,6 +23,7 @@ export type DataGridCellFCProps = {
23
23
  $color?: ThemeColor;
24
24
  $textAlign?: 'left' | 'right' | 'center';
25
25
  $userSelect?: boolean;
26
+ $headerColor?: ThemeColor;
26
27
  };
27
28
 
28
29
  export type DataGridCellFC = FC<DataGridCellFCProps>;
@@ -1 +1 @@
1
- {"root":["./src/icons.tsx","./src/index.ts","./src/typings.d.ts","./src/components/index.ts","./src/components/auth/loginform.tsx","./src/components/auth/loginpage.tsx","./src/components/auth/passwordrecoveryform.tsx","./src/components/auth/passwordresetform.tsx","./src/components/auth/index.ts","./src/components/auth/styles.ts","./src/components/data/index.ts","./src/components/data/datagrid/datagridcell.tsx","./src/components/data/datagrid/datagridfooter.tsx","./src/components/data/datagrid/datagridheader.tsx","./src/components/data/datagrid/datagridheadercell.tsx","./src/components/data/datagrid/datagridrowtemplate.tsx","./src/components/data/datagrid/datagridtoolbar.tsx","./src/components/data/datagrid/constants.ts","./src/components/data/datagrid/index.tsx","./src/components/data/datagrid/styles.ts","./src/components/data/datagrid/types.ts","./src/components/data/datagrid/datagridcolumnsmodal/helpers.ts","./src/components/data/datagrid/datagridcolumnsmodal/hooks.tsx","./src/components/data/datagrid/datagridcolumnsmodal/index.tsx","./src/components/data/datagrid/datagridcolumnsmodal/styles.ts","./src/components/data/datagrid/datagrideditablecell/checkboxeditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/dateeditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/numbereditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/texteditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/index.tsx","./src/components/data/datagrid/datagrideditablecell/styles.ts","./src/components/data/datagrid/datagrideditablecell/types.ts","./src/components/data/datagrid/datagridfiltermenu/filtervaluesscroller.tsx","./src/components/data/datagrid/datagridfiltermenu/hooks.tsx","./src/components/data/datagrid/datagridfiltermenu/index.tsx","./src/components/data/datagrid/datagridfiltermenu/styles.ts","./src/components/data/datagrid/filtermodalcontent/index.tsx","./src/components/data/datagrid/filtermodalcontent/styles.ts","./src/components/data/datagrid/helpers/columns.tsx","./src/components/data/datagrid/helpers/filters.ts","./src/components/data/datagrid/helpers/index.ts","./src/components/data/datagrid/hooks/index.ts","./src/components/data/datagrid/hooks/usedatagrid.tsx","./src/components/data/datagrid/hooks/usedatagridchangedrows.ts","./src/components/data/datagrid/hooks/usedatagridcopy.ts","./src/components/data/datagrid/hooks/usedatagridsettings.ts","./src/components/data/datagrid/hooks/userefreshmodal.tsx","./src/components/data/sqlrequestdatagrid/sqlrequestforeignlisteditablecell.tsx","./src/components/data/sqlrequestdatagrid/index.tsx","./src/components/data/sqlrequestdatagrid/styles.ts","./src/components/data/sqlrequestdatagrid/types.ts","./src/components/data/sqlrequestdatagrid/helpers/columns.tsx","./src/components/data/sqlrequestdatagrid/helpers/index.ts","./src/components/data/sqlrequestdatagrid/helpers/sqlrequests.ts","./src/components/data/sqlrequestforeignlist/index.tsx","./src/components/data/sqlrequestforeignlist/styles.ts","./src/components/data/sqlrequestforeignlist/types.ts","./src/components/data/sqlrequestgrid/index.tsx","./src/components/data/sqlrequestgrid/styles.ts","./src/components/data/sqlrequestgrid/types.ts","./src/components/data/sqlrequestgrid/filters/filterssidebar.tsx","./src/components/data/sqlrequestgrid/filters/styles.ts","./src/components/data/sqlrequestgrid/helpers/index.ts","./src/components/data/sqlrequestgrid/helpers/sqlrequests.ts","./src/components/data/virtualscroller/hooks.ts","./src/components/data/virtualscroller/index.tsx","./src/components/data/virtualscroller/styles.ts","./src/components/data/virtualscroller/types.ts","./src/components/forms/autotextarea.tsx","./src/components/forms/button.tsx","./src/components/forms/iconbutton.tsx","./src/components/forms/indeterminatecheckbox.tsx","./src/components/forms/numberinput.tsx","./src/components/forms/select.tsx","./src/components/forms/verticallabel.tsx","./src/components/forms/index.ts","./src/components/forms/styles.ts","./src/components/forms/form/checkbox.tsx","./src/components/forms/form/formgroup.tsx","./src/components/forms/form/input.tsx","./src/components/forms/form/row.tsx","./src/components/forms/form/select.tsx","./src/components/forms/form/textarea.tsx","./src/components/forms/form/index.tsx","./src/components/forms/form/styles.ts","./src/components/layout/columns.ts","./src/components/layout/flexbox.ts","./src/components/layout/index.ts","./src/components/layout/dropdown/index.tsx","./src/components/layout/dropdown/styles.ts","./src/components/layout/grid/index.tsx","./src/components/layout/grid/styles.ts","./src/components/layout/loading/index.tsx","./src/components/layout/loading/styles.ts","./src/components/layout/masonry/index.tsx","./src/components/layout/masonry/styles.ts","./src/components/layout/modal/index.tsx","./src/components/layout/modal/styles.ts","./src/components/search/highlightedtext.tsx","./src/components/search/quicksearchbar.tsx","./src/components/search/quicksearchresults.tsx","./src/components/search/index.ts","./src/components/search/styles.ts","./src/components/search/types.ts","./src/components/ui/ellipsis.tsx","./src/components/ui/label.tsx","./src/components/ui/index.ts","./src/components/ui/avatar/index.tsx","./src/components/ui/avatar/styles.ts","./src/components/ui/card/index.tsx","./src/components/ui/card/styles.ts","./src/components/ui/contextmenu/index.tsx","./src/components/ui/contextmenu/styles.ts","./src/components/ui/message/index.tsx","./src/components/ui/message/styles.ts","./src/components/ui/tabsview/tabslist.tsx","./src/components/ui/tabsview/tabsview.tsx","./src/components/ui/tabsview/index.ts","./src/components/ui/tabsview/styles.ts","./src/components/ui/tabsview/types.ts","./src/config/index.ts","./src/helpers/components.ts","./src/helpers/dates.ts","./src/helpers/getscrollbarsize.ts","./src/helpers/index.ts","./src/helpers/numbers.ts","./src/helpers/responsive.ts","./src/helpers/text.ts","./src/helpers/styled/index.ts","./src/helpers/styled/space.ts","./src/hooks/index.ts","./src/hooks/usecontainermediaquery.ts","./src/hooks/useelementsize.ts","./src/hooks/usemediaquery.ts","./src/hooks/usemediaqueryforwidth.ts","./src/hooks/usemutablestate.ts","./src/hooks/useshowarchived.ts","./src/hooks/usewindowsize.ts","./src/providers/hooks.ts","./src/providers/index.ts","./src/providers/authenticationprovider/helpers.ts","./src/providers/authenticationprovider/index.tsx","./src/providers/loadingprovider/index.tsx","./src/providers/portalsprovider/index.tsx","./src/providers/portalsprovider/styles.ts","./src/providers/settingsprovider/index.tsx","./src/providers/themeprovider/themeprovider.ts","./src/providers/themeprovider/defaulttheme.ts","./src/providers/themeprovider/helpers.ts","./src/providers/themeprovider/index.ts","./src/providers/themeprovider/types.ts","./src/providers/trackingprovider/hooks.ts","./src/providers/trackingprovider/index.tsx","./src/providers/uiproviders/index.tsx","./src/providers/uiproviders/styles.ts","./src/services/httpservice.ts","./src/services/websocketservice.ts","./src/services/advancedrequests.ts","./src/services/base.ts","./src/services/globalsearch.ts","./src/services/hooks.ts","./src/services/index.ts","./src/services/smartqueries.ts","./src/services/smartrequests.ts","./src/services/sqlrequests.ts","./src/services/updatesqlrequests.ts","./src/services/requests/auth.ts","./src/services/requests/generic.ts","./src/services/requests/tracking.ts","./src/services/requests/userprofiles.ts","./src/services/requests/users.ts","./src/services/types/auth.ts","./src/services/types/base.ts","./src/services/types/generic.ts","./src/services/types/tracking.ts","./src/services/types/userprofiles.ts","./src/services/types/users.ts"],"version":"5.6.2"}
1
+ {"root":["./src/icons.tsx","./src/index.ts","./src/typings.d.ts","./src/components/index.ts","./src/components/auth/loginform.tsx","./src/components/auth/loginpage.tsx","./src/components/auth/passwordrecoveryform.tsx","./src/components/auth/passwordresetform.tsx","./src/components/auth/index.ts","./src/components/auth/styles.ts","./src/components/data/index.ts","./src/components/data/datagrid/datagridcell.tsx","./src/components/data/datagrid/datagridfooter.tsx","./src/components/data/datagrid/datagridheader.tsx","./src/components/data/datagrid/datagridheadercell.tsx","./src/components/data/datagrid/datagridrowtemplate.tsx","./src/components/data/datagrid/datagridtoolbar.tsx","./src/components/data/datagrid/constants.ts","./src/components/data/datagrid/index.tsx","./src/components/data/datagrid/styles.ts","./src/components/data/datagrid/types.ts","./src/components/data/datagrid/datagridcolumnsmodal/helpers.ts","./src/components/data/datagrid/datagridcolumnsmodal/hooks.tsx","./src/components/data/datagrid/datagridcolumnsmodal/index.tsx","./src/components/data/datagrid/datagridcolumnsmodal/styles.ts","./src/components/data/datagrid/datagrideditablecell/checkboxeditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/dateeditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/numbereditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/texteditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/index.tsx","./src/components/data/datagrid/datagrideditablecell/styles.ts","./src/components/data/datagrid/datagrideditablecell/types.ts","./src/components/data/datagrid/datagridfiltermenu/filtervaluesscroller.tsx","./src/components/data/datagrid/datagridfiltermenu/helpers.ts","./src/components/data/datagrid/datagridfiltermenu/hooks.tsx","./src/components/data/datagrid/datagridfiltermenu/index.tsx","./src/components/data/datagrid/datagridfiltermenu/styles.ts","./src/components/data/datagrid/filtermodalcontent/index.tsx","./src/components/data/datagrid/filtermodalcontent/styles.ts","./src/components/data/datagrid/helpers/columns.tsx","./src/components/data/datagrid/helpers/filters.ts","./src/components/data/datagrid/helpers/index.ts","./src/components/data/datagrid/hooks/index.ts","./src/components/data/datagrid/hooks/usedatagrid.tsx","./src/components/data/datagrid/hooks/usedatagridchangedrows.ts","./src/components/data/datagrid/hooks/usedatagridcopy.ts","./src/components/data/datagrid/hooks/usedatagridsettings.ts","./src/components/data/datagrid/hooks/userefreshmodal.tsx","./src/components/data/sqlrequestdatagrid/sqlrequestforeignlisteditablecell.tsx","./src/components/data/sqlrequestdatagrid/index.tsx","./src/components/data/sqlrequestdatagrid/styles.ts","./src/components/data/sqlrequestdatagrid/types.ts","./src/components/data/sqlrequestdatagrid/helpers/columns.tsx","./src/components/data/sqlrequestdatagrid/helpers/index.ts","./src/components/data/sqlrequestdatagrid/helpers/sqlrequests.ts","./src/components/data/sqlrequestforeignlist/index.tsx","./src/components/data/sqlrequestforeignlist/styles.ts","./src/components/data/sqlrequestforeignlist/types.ts","./src/components/data/sqlrequestgrid/index.tsx","./src/components/data/sqlrequestgrid/styles.ts","./src/components/data/sqlrequestgrid/types.ts","./src/components/data/sqlrequestgrid/filters/filterssidebar.tsx","./src/components/data/sqlrequestgrid/filters/styles.ts","./src/components/data/sqlrequestgrid/helpers/index.ts","./src/components/data/sqlrequestgrid/helpers/sqlrequests.ts","./src/components/data/virtualscroller/hooks.ts","./src/components/data/virtualscroller/index.tsx","./src/components/data/virtualscroller/styles.ts","./src/components/data/virtualscroller/types.ts","./src/components/forms/autotextarea.tsx","./src/components/forms/button.tsx","./src/components/forms/iconbutton.tsx","./src/components/forms/indeterminatecheckbox.tsx","./src/components/forms/numberinput.tsx","./src/components/forms/select.tsx","./src/components/forms/verticallabel.tsx","./src/components/forms/index.ts","./src/components/forms/styles.ts","./src/components/forms/form/checkbox.tsx","./src/components/forms/form/formgroup.tsx","./src/components/forms/form/input.tsx","./src/components/forms/form/row.tsx","./src/components/forms/form/select.tsx","./src/components/forms/form/textarea.tsx","./src/components/forms/form/index.tsx","./src/components/forms/form/styles.ts","./src/components/layout/columns.ts","./src/components/layout/flexbox.ts","./src/components/layout/index.ts","./src/components/layout/dropdown/index.tsx","./src/components/layout/dropdown/styles.ts","./src/components/layout/grid/index.tsx","./src/components/layout/grid/styles.ts","./src/components/layout/loading/index.tsx","./src/components/layout/loading/styles.ts","./src/components/layout/masonry/index.tsx","./src/components/layout/masonry/styles.ts","./src/components/layout/modal/index.tsx","./src/components/layout/modal/styles.ts","./src/components/search/highlightedtext.tsx","./src/components/search/quicksearchbar.tsx","./src/components/search/quicksearchresults.tsx","./src/components/search/index.ts","./src/components/search/styles.ts","./src/components/search/types.ts","./src/components/ui/ellipsis.tsx","./src/components/ui/label.tsx","./src/components/ui/index.ts","./src/components/ui/avatar/index.tsx","./src/components/ui/avatar/styles.ts","./src/components/ui/card/index.tsx","./src/components/ui/card/styles.ts","./src/components/ui/contextmenu/index.tsx","./src/components/ui/contextmenu/styles.ts","./src/components/ui/message/index.tsx","./src/components/ui/message/styles.ts","./src/components/ui/tabsview/tabslist.tsx","./src/components/ui/tabsview/tabsview.tsx","./src/components/ui/tabsview/index.ts","./src/components/ui/tabsview/styles.ts","./src/components/ui/tabsview/types.ts","./src/config/index.ts","./src/helpers/components.ts","./src/helpers/dates.ts","./src/helpers/getscrollbarsize.ts","./src/helpers/index.ts","./src/helpers/numbers.ts","./src/helpers/responsive.ts","./src/helpers/text.ts","./src/helpers/styled/index.ts","./src/helpers/styled/space.ts","./src/hooks/index.ts","./src/hooks/usecontainermediaquery.ts","./src/hooks/useelementsize.ts","./src/hooks/usemediaquery.ts","./src/hooks/usemediaqueryforwidth.ts","./src/hooks/usemutablestate.ts","./src/hooks/useshowarchived.ts","./src/hooks/usewindowsize.ts","./src/providers/hooks.ts","./src/providers/index.ts","./src/providers/authenticationprovider/helpers.ts","./src/providers/authenticationprovider/index.tsx","./src/providers/loadingprovider/index.tsx","./src/providers/portalsprovider/index.tsx","./src/providers/portalsprovider/styles.ts","./src/providers/settingsprovider/index.tsx","./src/providers/themeprovider/themeprovider.ts","./src/providers/themeprovider/defaulttheme.ts","./src/providers/themeprovider/helpers.ts","./src/providers/themeprovider/index.ts","./src/providers/themeprovider/types.ts","./src/providers/trackingprovider/hooks.ts","./src/providers/trackingprovider/index.tsx","./src/providers/uiproviders/index.tsx","./src/providers/uiproviders/styles.ts","./src/services/httpservice.ts","./src/services/websocketservice.ts","./src/services/advancedrequests.ts","./src/services/base.ts","./src/services/globalsearch.ts","./src/services/hooks.ts","./src/services/index.ts","./src/services/smartqueries.ts","./src/services/smartrequests.ts","./src/services/sqlrequests.ts","./src/services/updatesqlrequests.ts","./src/services/requests/auth.ts","./src/services/requests/generic.ts","./src/services/requests/tracking.ts","./src/services/requests/userprofiles.ts","./src/services/requests/users.ts","./src/services/types/auth.ts","./src/services/types/base.ts","./src/services/types/generic.ts","./src/services/types/tracking.ts","./src/services/types/userprofiles.ts","./src/services/types/users.ts"],"version":"5.6.2"}