@helpdice/ui 1.5.5 → 1.5.8

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.
@@ -3,7 +3,9 @@ import { TableAbstractColumn, TableDataItemBase } from './table-types';
3
3
  interface Props<TableDataItem extends TableDataItemBase> {
4
4
  width: number;
5
5
  columns: Array<TableAbstractColumn<TableDataItem>>;
6
+ onFilters?: (filters: any) => void;
6
7
  stickyHeader: boolean;
8
+ showFilters?: boolean;
7
9
  className?: string;
8
10
  }
9
11
  type NativeAttrs = Omit<React.HTMLAttributes<any>, keyof Props<any>>;
@@ -9,6 +9,7 @@ interface Props<TableDataItem extends TableDataItemBase> {
9
9
  onRow?: TableOnRowClick<TableDataItem>;
10
10
  onCell?: TableOnCellClick<TableDataItem>;
11
11
  onChange?: TableOnChange<TableDataItem>;
12
+ onFilters?: (filters: any) => void;
12
13
  onSelected?: (selected: any[]) => void;
13
14
  onPageChange?: (page: number, start: number, end: number) => void;
14
15
  className?: string;
@@ -174,7 +174,7 @@ function DataTable(_ref) {
174
174
  accessor = col.filter,
175
175
  options = col.options;
176
176
  var filterName = (_String4 = String(col === null || col === void 0 ? void 0 : col.name)) === null || _String4 === void 0 ? void 0 : _String4.replace(' ', '_').toLowerCase();
177
- var unq_accessor = _.uniqueId(filterName);
177
+ // const unq_accessor = _.uniqueId(filterName);
178
178
  // if (Header === 'actions') {
179
179
  // return (
180
180
  // <th style={{ margin: '3px' }} data-column={Header} key={unq_accessor}>
@@ -186,10 +186,10 @@ function DataTable(_ref) {
186
186
  style: {
187
187
  padding: '3px'
188
188
  },
189
- "data-column": Header,
190
- key: unq_accessor
191
- }, accessor === 'fixed' && /*#__PURE__*/React.createElement(Select, {
192
- key: filterName,
189
+ "data-column": Header
190
+ }, accessor === 'fixed' && /*#__PURE__*/React.createElement(Select
191
+ // key={filterName}
192
+ , {
193
193
  name: filterName,
194
194
  value: (_filterValues$filterN = filterValues[filterName]) !== null && _filterValues$filterN !== void 0 ? _filterValues$filterN : 'All',
195
195
  onChange: function onChange(newValue) {
@@ -203,8 +203,8 @@ function DataTable(_ref) {
203
203
  }, option.name);
204
204
  }) : null), accessor === 'date' && /*#__PURE__*/React.createElement(Input
205
205
  // id={`filter-date-${filterName}`}
206
+ // key={filterName}
206
207
  , {
207
- key: filterName,
208
208
  htmlType: "date",
209
209
  name: filterName,
210
210
  value: filterValues[filterName],
@@ -213,8 +213,8 @@ function DataTable(_ref) {
213
213
  }
214
214
  }), accessor === 'search' && /*#__PURE__*/React.createElement(Input
215
215
  // id={`filter-search-${filterName}`}
216
+ // key={filterName}
216
217
  , {
217
- key: filterName,
218
218
  htmlType: "text",
219
219
  autoComplete: "off"
220
220
  // ref={filterRefs.current[filterName]} // Dynamically set ref}
@@ -234,14 +234,15 @@ function DataTable(_ref) {
234
234
  });
235
235
  };
236
236
  var content = function content() {
237
- return /*#__PURE__*/React.createElement(React.Fragment, null, cols.map(function (option, index) {
237
+ return /*#__PURE__*/React.createElement(React.Fragment, null, cols.map(function (option, _index) {
238
238
  var _String5;
239
- var colunqid = _.uniqueId("".concat(option.name, "-").concat(index));
239
+ // const colunqid = _.uniqueId(`${option.name}-${index}`);
240
240
  var dataName = (_String5 = String(option.name)) === null || _String5 === void 0 ? void 0 : _String5.replace(' ', '_').toLowerCase();
241
241
  var isSelected = !hideColumn.includes(dataName);
242
242
  return /*#__PURE__*/React.createElement(Popover.Item, {
243
- selected: isSelected,
244
- key: colunqid,
243
+ selected: isSelected
244
+ // key={colunqid}
245
+ ,
245
246
  onClick: function onClick(e) {
246
247
  return handleHideColumnClick(e, option.name);
247
248
  }
@@ -341,18 +342,18 @@ function DataTable(_ref) {
341
342
  scale: 2 / 3,
342
343
  px: 0.6,
343
344
  iconRight: /*#__PURE__*/React.createElement(Refresh, null)
344
- })) : null, onFilters && filter ? /*#__PURE__*/React.createElement(Tooltip, {
345
+ })) : null, onFilters && filter ? /*#__PURE__*/React.createElement(Popover, {
346
+ hideArrow: true,
347
+ disableItemsAutoClose: true,
348
+ placement: "bottomEnd",
349
+ child: filterContent
350
+ }, /*#__PURE__*/React.createElement(Tooltip, {
345
351
  text: "Filters",
346
352
  placement: "bottomEnd",
347
353
  font: 0.8,
348
354
  px: 0.6,
349
355
  py: 0.4,
350
356
  type: "dark"
351
- }, /*#__PURE__*/React.createElement(Popover, {
352
- hideArrow: true,
353
- disableItemsAutoClose: true,
354
- placement: "bottomEnd",
355
- child: filterContent
356
357
  }, /*#__PURE__*/React.createElement(Button, {
357
358
  htmlType: "button",
358
359
  onClick: handleShowFilter,
@@ -426,6 +427,9 @@ function DataTable(_ref) {
426
427
  _onPageChange(page, start, end);
427
428
  }
428
429
  },
430
+ onFilters: function onFilters(filters) {
431
+ console.log(filters);
432
+ },
429
433
  onRow: onRowClick,
430
434
  rowDraggable: rowDraggable,
431
435
  showFilters: openFilter,
@@ -437,12 +441,11 @@ function DataTable(_ref) {
437
441
  borderCollapse: 'collapse',
438
442
  overflow: 'auto'
439
443
  }
440
- }, COLUMNS.map(function (column, index) {
444
+ }, COLUMNS.map(function (column) {
441
445
  return /*#__PURE__*/React.createElement(Table.Column, {
442
446
  style: column === null || column === void 0 ? void 0 : column.style,
443
447
  options: column === null || column === void 0 ? void 0 : column.options,
444
448
  fontSize: column === null || column === void 0 ? void 0 : column.fontSize,
445
- key: "".concat(column.id, "-").concat(index),
446
449
  prop: column.id,
447
450
  label: column.name,
448
451
  filter: column === null || column === void 0 ? void 0 : column.filter,
@@ -3,7 +3,9 @@ import { TableAbstractColumn, TableDataItemBase } from './table-types';
3
3
  interface Props<TableDataItem extends TableDataItemBase> {
4
4
  width: number;
5
5
  columns: Array<TableAbstractColumn<TableDataItem>>;
6
+ onFilters?: (filters: any) => void;
6
7
  stickyHeader: boolean;
8
+ showFilters?: boolean;
7
9
  className?: string;
8
10
  }
9
11
  type NativeAttrs = Omit<React.HTMLAttributes<any>, keyof Props<any>>;
@@ -1,7 +1,12 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
4
  import _JSXStyle from "../styled-jsx.es.js";
3
5
  import React, { useMemo } from 'react';
4
6
  import useTheme from '../use-theme';
7
+ import Input from '../input';
8
+ import Select from '../select';
9
+ import Button from '../button';
5
10
  var makeColgroup = function makeColgroup(width, columns) {
6
11
  var unsetWidthCount = columns.filter(function (c) {
7
12
  return !c.width;
@@ -20,9 +25,15 @@ var makeColgroup = function makeColgroup(width, columns) {
20
25
  };
21
26
  var TableHead = function TableHead(props) {
22
27
  var theme = useTheme();
28
+ var _React$useState = React.useState({}),
29
+ _React$useState2 = _slicedToArray(_React$useState, 2),
30
+ filters = _React$useState2[0],
31
+ setFilters = _React$useState2[1];
23
32
  var _ref = props,
24
33
  columns = _ref.columns,
25
34
  width = _ref.width,
35
+ onFilters = _ref.onFilters,
36
+ showFilters = _ref.showFilters,
26
37
  stickyHeader = _ref.stickyHeader;
27
38
  var isScalableWidth = useMemo(function () {
28
39
  return columns.find(function (item) {
@@ -33,6 +44,82 @@ var TableHead = function TableHead(props) {
33
44
  if (!isScalableWidth) return /*#__PURE__*/React.createElement("colgroup", null);
34
45
  return makeColgroup(width, columns);
35
46
  }, [isScalableWidth, width]);
47
+ var handleFilterChange = function handleFilterChange(name, value) {
48
+ setFilters(function (prevFilters) {
49
+ var updatedFilters = _extends({}, prevFilters, _defineProperty({}, name, value));
50
+ return updatedFilters;
51
+ });
52
+ };
53
+ var applyFilters = function applyFilters() {
54
+ if (onFilters) {
55
+ onFilters(filters);
56
+ }
57
+ };
58
+ var generateFilterInputs = function generateFilterInputs() {
59
+ return columns.map(function (col) {
60
+ var _String, _filters$filterName;
61
+ var Header = col.label,
62
+ accessor = col.filter,
63
+ options = col.options;
64
+ var filterName = (_String = String(col === null || col === void 0 ? void 0 : col.label)) === null || _String === void 0 ? void 0 : _String.replace(' ', '_').toLowerCase();
65
+ // const unq_accessor = _.uniqueId(filterName);
66
+ // if (Header === 'actions') {
67
+ // return (
68
+ // <th style={{ margin: '3px' }} data-column={Header} key={unq_accessor}>
69
+ // <Button onClick={applyFilters} auto px={0.6} scale={2 / 3}>Apply</Button>
70
+ // </th>
71
+ // )
72
+ // }
73
+ return /*#__PURE__*/React.createElement("th", {
74
+ style: {
75
+ padding: '3px'
76
+ },
77
+ "data-column": Header
78
+ }, accessor === 'fixed' && /*#__PURE__*/React.createElement(Select
79
+ // key={unq_accessor}
80
+ // name={filterName}
81
+ , {
82
+ value: (_filters$filterName = filters[filterName]) !== null && _filters$filterName !== void 0 ? _filters$filterName : 'All',
83
+ onChange: function onChange(newValue) {
84
+ return handleFilterChange(filterName, newValue);
85
+ }
86
+ }, /*#__PURE__*/React.createElement(Select.Option, {
87
+ value: "All"
88
+ }, "All ", Header), options ? options.map(function (option) {
89
+ return /*#__PURE__*/React.createElement(Select.Option, {
90
+ value: option.value
91
+ }, option.name);
92
+ }) : null), accessor === 'date' && /*#__PURE__*/React.createElement(Input
93
+ // id={`filter-date-${filterName}`}
94
+ , {
95
+ htmlType: "date"
96
+ // name={filterName}
97
+ ,
98
+ value: filters[filterName],
99
+ onChange: function onChange(e) {
100
+ return handleFilterChange(filterName, e.target.value);
101
+ }
102
+ }), accessor === 'search' && /*#__PURE__*/React.createElement(Input
103
+ // id={`filter-search-${filterName}`}
104
+ , {
105
+ htmlType: "text",
106
+ autoComplete: "off"
107
+ // ref={filterRefs.current[filterName]} // Dynamically set ref}
108
+ // name={filterName}
109
+ ,
110
+ style: {
111
+ height: 30,
112
+ minWidth: 160
113
+ },
114
+ value: filters[filterName],
115
+ onChange: function onChange(e) {
116
+ return handleFilterChange(filterName, e.target.value);
117
+ },
118
+ placeholder: "Search...",
119
+ fullWidth: true
120
+ }));
121
+ });
122
+ };
36
123
  return /*#__PURE__*/React.createElement(React.Fragment, null, colgroup, /*#__PURE__*/React.createElement("thead", {
37
124
  className: _JSXStyle.dynamic([["2156261549", [stickyHeader && "\n position: sticky;\n top: 0;\n z-index: 1;\n ", theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]]])
38
125
  }, /*#__PURE__*/React.createElement("tr", {
@@ -40,10 +127,9 @@ var TableHead = function TableHead(props) {
40
127
  backgroundColor: '#fff'
41
128
  },
42
129
  className: _JSXStyle.dynamic([["2156261549", [stickyHeader && "\n position: sticky;\n top: 0;\n z-index: 1;\n ", theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]]])
43
- }, columns.map(function (column, index) {
44
- var _String;
45
- var dataName = (_String = String(column === null || column === void 0 ? void 0 : column.label)) === null || _String === void 0 ? void 0 : _String.replace(' ', '_').toLowerCase();
46
- console.log('Column Hide:', dataName);
130
+ }, columns.map(function (column, _index) {
131
+ var _String2;
132
+ var dataName = (_String2 = String(column === null || column === void 0 ? void 0 : column.label)) === null || _String2 === void 0 ? void 0 : _String2.replace(' ', '_').toLowerCase();
47
133
  return /*#__PURE__*/React.createElement("th", {
48
134
  style: _extends({
49
135
  // textAlign: `${column?.align} !important`,
@@ -53,7 +139,6 @@ var TableHead = function TableHead(props) {
53
139
  color: "".concat(column !== null && column !== void 0 && column.color ? column === null || column === void 0 ? void 0 : column.color : '#333'),
54
140
  whiteSpace: column !== null && column !== void 0 && column.noWrap ? 'nowrap' : 'normal'
55
141
  }, column === null || column === void 0 ? void 0 : column.style),
56
- key: "table-th-".concat(column.prop.toString(), "-").concat(index),
57
142
  "data-column": dataName,
58
143
  className: _JSXStyle.dynamic([["2156261549", [stickyHeader && "\n position: sticky;\n top: 0;\n z-index: 1;\n ", theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]]]) + " " + (column.className || "")
59
144
  }, /*#__PURE__*/React.createElement("div", {
@@ -66,7 +151,15 @@ var TableHead = function TableHead(props) {
66
151
  },
67
152
  className: _JSXStyle.dynamic([["2156261549", [stickyHeader && "\n position: sticky;\n top: 0;\n z-index: 1;\n ", theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]]])
68
153
  }, column.text)));
69
- }))), /*#__PURE__*/React.createElement(_JSXStyle, {
154
+ })), showFilters && /*#__PURE__*/React.createElement("tr", {
155
+ className: _JSXStyle.dynamic([["2156261549", [stickyHeader && "\n position: sticky;\n top: 0;\n z-index: 1;\n ", theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]]])
156
+ }, generateFilterInputs(), /*#__PURE__*/React.createElement("th", {
157
+ className: _JSXStyle.dynamic([["2156261549", [stickyHeader && "\n position: sticky;\n top: 0;\n z-index: 1;\n ", theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]]])
158
+ }, /*#__PURE__*/React.createElement(Button, {
159
+ onClick: function onClick() {
160
+ return applyFilters();
161
+ }
162
+ }, "Apply")))), /*#__PURE__*/React.createElement(_JSXStyle, {
70
163
  id: "2156261549",
71
164
  dynamic: [stickyHeader && "\n position: sticky;\n top: 0;\n z-index: 1;\n ", theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]
72
165
  }, "thead.__jsx-style-dynamic-selector{border-collapse:separate;border-spacing:0;background-color:#fff;font-size:inherit;".concat(stickyHeader && "\n position: sticky;\n top: 0;\n z-index: 1;\n ", ";}th.__jsx-style-dynamic-selector{padding:0 0.5em;font-size:calc(0.75 * var(--table-font-size));font-weight:normal;text-align:left;-webkit-letter-spacing:0;-moz-letter-spacing:0;-ms-letter-spacing:0;letter-spacing:0;vertical-align:middle;min-height:calc(2.5 * var(--table-font-size));color:").concat(theme.palette.accents_5, ";background:").concat(theme.palette.accents_1, ";border-bottom:1px solid ").concat(theme.palette.border, ";border-top:1px solid ").concat(theme.palette.border, ";border-radius:0;}th.__jsx-style-dynamic-selector:nth-child(1){border-bottom:1px solid ").concat(theme.palette.border, ";border-left:1px solid ").concat(theme.palette.border, ";border-top:1px solid ").concat(theme.palette.border, ";border-top-left-radius:").concat(theme.layout.radius, ";border-bottom-left-radius:").concat(theme.layout.radius, ";}th.__jsx-style-dynamic-selector:last-child{border-bottom:1px solid ").concat(theme.palette.border, ";border-right:1px solid ").concat(theme.palette.border, ";border-top:1px solid ").concat(theme.palette.border, ";border-top-right-radius:").concat(theme.layout.radius, ";border-bottom-right-radius:").concat(theme.layout.radius, ";}.thead-box.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-align:center;min-height:calc(2.5 * var(--table-font-size));text-transform:uppercase;}")));
@@ -9,6 +9,7 @@ interface Props<TableDataItem extends TableDataItemBase> {
9
9
  onRow?: TableOnRowClick<TableDataItem>;
10
10
  onCell?: TableOnCellClick<TableDataItem>;
11
11
  onChange?: TableOnChange<TableDataItem>;
12
+ onFilters?: (filters: any) => void;
12
13
  onSelected?: (selected: any[]) => void;
13
14
  onPageChange?: (page: number, start: number, end: number) => void;
14
15
  className?: string;
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
- var _excluded = ["children", "data", "initialData", "hover", "emptyText", "rowDraggable", "readOnly", "cursorPagination", "previousCursor", "nextCursor", "hasMore", "onNextPage", "onPreviousPage", "onRow", "onCell", "onChange", "onPageChange", "showFilters", "stickyHeader", "onSelected", "dataLength", "viewLength", "className", "rowClassName"];
5
+ var _excluded = ["children", "data", "initialData", "hover", "emptyText", "rowDraggable", "readOnly", "cursorPagination", "previousCursor", "nextCursor", "hasMore", "onNextPage", "onPreviousPage", "onRow", "onCell", "onChange", "onFilters", "onPageChange", "showFilters", "stickyHeader", "onSelected", "dataLength", "viewLength", "className", "rowClassName"];
6
6
  import _JSXStyle from "../styled-jsx.es.js";
7
7
  /* "use client" */
8
8
 
@@ -44,6 +44,7 @@ function TableComponent(tableProps) {
44
44
  onRow = _ref.onRow,
45
45
  onCell = _ref.onCell,
46
46
  onChange = _ref.onChange,
47
+ onFilters = _ref.onFilters,
47
48
  onPageChange = _ref.onPageChange,
48
49
  _ref$showFilters = _ref.showFilters,
49
50
  showFilters = _ref$showFilters === void 0 ? false : _ref$showFilters,
@@ -118,6 +119,8 @@ function TableComponent(tableProps) {
118
119
  className: _JSXStyle.dynamic([["1971279331", [SCALES.font(1), SCALES.width(1, '100%'), SCALES.height(1, 'auto'), SCALES.pt(0), SCALES.pr(0), SCALES.pb(0), SCALES.pl(0), SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0)]]]) + " " + (props && props.className != null && props.className || className || "")
119
120
  }), /*#__PURE__*/React.createElement(TableHead, {
120
121
  stickyHeader: stickyHeader,
122
+ onFilters: onFilters,
123
+ showFilters: showFilters,
121
124
  columns: columns,
122
125
  width: width
123
126
  }), /*#__PURE__*/React.createElement(TableBody, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helpdice/ui",
3
- "version": "1.5.5",
3
+ "version": "1.5.8",
4
4
  "main": "dist/index.js",
5
5
  "types": "esm/index.d.ts",
6
6
  "unpkg": "dist/index.min.js",