@urbanos/react-discovery-ui 2.1.43 → 2.1.45

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.
@@ -7,156 +7,190 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  require("./dataset-metadata.scss");
10
- var _reactTable = _interopRequireDefault(require("react-table"));
11
- require("react-table/react-table.css");
10
+ var _reactTable = require("@tanstack/react-table");
12
11
  var _collapsableBox = _interopRequireDefault(require("../../components/collapsable-box"));
13
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
13
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
15
- function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
16
- function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
17
- function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
18
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
19
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
20
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
21
- function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
22
- function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
23
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
24
- function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
25
- function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
26
- function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
27
- var _default = exports.default = /*#__PURE__*/function (_Component) {
28
- function _default() {
29
- _classCallCheck(this, _default);
30
- return _callSuper(this, _default, arguments);
31
- }
32
- _inherits(_default, _Component);
33
- return _createClass(_default, [{
34
- key: "render",
35
- value: function render() {
36
- var dataset = this.props.dataset;
37
- if (!this.props.dataset) {
38
- return /*#__PURE__*/_react.default.createElement("div", null);
39
- }
40
- var referenceUrls = dataset.referenceUrls || [];
41
- var data = [{
42
- Field: 'Maintainer',
43
- Value: mailto(dataset.contactEmail, dataset.contactName)
44
- }, {
45
- Field: 'Last Updated',
46
- Value: dataset.modified
47
- }, {
48
- Field: 'Data Last Ingested',
49
- Value: dataset.lastUpdatedDate
50
- }, {
51
- Field: 'Rights',
52
- Value: dataset.rights
53
- }, {
54
- Field: 'Spatial',
55
- Value: dataset.spatial
56
- }, {
57
- Field: 'Temporal',
58
- Value: dataset.temporal
59
- }, {
60
- Field: 'Release Date',
61
- Value: dataset.issuedDate
62
- }, {
63
- Field: 'Frequency',
64
- Value: dataset.publishFrequency
65
- }, {
66
- Field: 'Data Dictionary URL',
67
- Value: /*#__PURE__*/_react.default.createElement("a", {
68
- role: "link",
69
- href: dataset.describedByUrl,
70
- target: "_blank"
71
- }, dataset.describedByUrl)
72
- }, {
73
- Field: 'Data Dictionary Type',
74
- Value: dataset.describedByMimeType
75
- }, {
76
- Field: 'Collection',
77
- Value: dataset.parentDataset
78
- }, {
79
- Field: 'Language',
80
- Value: dataset.language
81
- }, {
82
- Field: 'Homepage URL',
83
- Value: /*#__PURE__*/_react.default.createElement("a", {
84
- role: "link",
85
- href: dataset.homepage,
86
- target: "_blank"
87
- }, dataset.homepage)
88
- }, {
89
- Field: 'Related Documents',
90
- Value: referenceUrls.map(function (url) {
91
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("a", {
92
- role: "link",
93
- href: url,
94
- target: "_blank"
95
- }, url));
96
- })
97
- }, {
98
- Field: 'Source URL',
99
- Value: /*#__PURE__*/_react.default.createElement("a", {
100
- role: "link",
101
- href: dataset.sourceUrl,
102
- target: "_blank"
103
- }, dataset.sourceUrl)
104
- }, {
105
- Field: 'Source Type',
106
- Value: dataset.sourceType
107
- }, {
108
- Field: 'License',
109
- Value: /*#__PURE__*/_react.default.createElement("a", {
110
- role: "link",
111
- href: dataset.license,
112
- target: "_blank"
113
- }, dataset.license)
114
- }, {
115
- Field: 'Category',
116
- Value: dataset.catagories
117
- }, {
118
- Field: 'Count - Downloads',
119
- Value: dataset.downloads
120
- }, {
121
- Field: 'Count - API Queries',
122
- Value: dataset.queries
123
- }, {
124
- Field: 'Access Level',
125
- Value: dataset.accessLevel
126
- }, {
127
- Field: 'Table Name',
128
- Value: dataset.systemName
129
- }];
130
- var columns = [{
131
- Header: 'Field',
132
- accessor: 'Field',
133
- headerClassName: 'table-header',
134
- width: 160
135
- }, {
136
- Header: 'Value',
137
- accessor: 'Value',
14
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
15
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
17
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
18
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
19
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
20
+ var MetadataTable = function MetadataTable(_ref) {
21
+ var data = _ref.data;
22
+ var columns = (0, _react.useMemo)(function () {
23
+ return [{
24
+ header: 'Field',
25
+ accessorKey: 'Field',
26
+ meta: {
138
27
  headerClassName: 'table-header'
139
- }];
140
- return /*#__PURE__*/_react.default.createElement("dataset-metadata", {
141
- class: "dataset-metadata"
142
- }, /*#__PURE__*/_react.default.createElement(_collapsableBox.default, {
143
- title: "Additional Information",
144
- expanded: true
145
- }, /*#__PURE__*/_react.default.createElement(_reactTable.default, {
146
- data: data,
147
- columns: columns,
148
- defaultPageSize: data.length,
149
- className: "-striped -highlight",
150
- showPagination: false,
151
- sortable: true,
152
- defaultSorted: [{
153
- id: 'Field',
154
- desc: false
155
- }]
156
- })));
157
- }
158
- }]);
159
- }(_react.Component);
28
+ },
29
+ size: 160
30
+ }, {
31
+ header: 'Value',
32
+ accessorKey: 'Value',
33
+ meta: {
34
+ headerClassName: 'table-header'
35
+ },
36
+ cell: function cell(info) {
37
+ var _info$getValue;
38
+ return (_info$getValue = info.getValue()) !== null && _info$getValue !== void 0 ? _info$getValue : null;
39
+ }
40
+ }];
41
+ }, []);
42
+ var _React$useState = _react.default.useState([{
43
+ id: 'Field',
44
+ desc: false
45
+ }]),
46
+ _React$useState2 = _slicedToArray(_React$useState, 2),
47
+ sorting = _React$useState2[0],
48
+ setSorting = _React$useState2[1];
49
+ var table = (0, _reactTable.useReactTable)({
50
+ data: data,
51
+ columns: columns,
52
+ state: {
53
+ sorting: sorting
54
+ },
55
+ onSortingChange: setSorting,
56
+ getCoreRowModel: (0, _reactTable.getCoreRowModel)(),
57
+ getSortedRowModel: (0, _reactTable.getSortedRowModel)()
58
+ });
59
+ return /*#__PURE__*/_react.default.createElement("table", null, /*#__PURE__*/_react.default.createElement("thead", null, table.getHeaderGroups().map(function (headerGroup) {
60
+ return /*#__PURE__*/_react.default.createElement("tr", {
61
+ key: headerGroup.id
62
+ }, headerGroup.headers.map(function (header) {
63
+ var _header$column$column;
64
+ return /*#__PURE__*/_react.default.createElement("th", {
65
+ key: header.id,
66
+ scope: "col",
67
+ className: ((_header$column$column = header.column.columnDef.meta) === null || _header$column$column === void 0 ? void 0 : _header$column$column.headerClassName) || '',
68
+ style: {
69
+ width: header.column.getSize() !== 150 ? "".concat(header.column.getSize(), "px") : undefined,
70
+ cursor: 'pointer'
71
+ },
72
+ onClick: header.column.getToggleSortingHandler(),
73
+ "aria-sort": header.column.getIsSorted() === 'asc' ? 'ascending' : header.column.getIsSorted() === 'desc' ? 'descending' : 'none',
74
+ tabIndex: 0,
75
+ onKeyDown: function onKeyDown(e) {
76
+ if (e.key === 'Enter' || e.key === ' ') header.column.getToggleSortingHandler()(e);
77
+ }
78
+ }, (0, _reactTable.flexRender)(header.column.columnDef.header, header.getContext()), header.column.getIsSorted() === 'asc' ? ' ↑' : header.column.getIsSorted() === 'desc' ? ' ↓' : '');
79
+ }));
80
+ })), /*#__PURE__*/_react.default.createElement("tbody", null, table.getRowModel().rows.map(function (row) {
81
+ return /*#__PURE__*/_react.default.createElement("tr", {
82
+ key: row.id
83
+ }, row.getVisibleCells().map(function (cell) {
84
+ return /*#__PURE__*/_react.default.createElement("td", {
85
+ key: cell.id
86
+ }, (0, _reactTable.flexRender)(cell.column.columnDef.cell, cell.getContext()));
87
+ }));
88
+ })));
89
+ };
90
+ var _default = exports.default = function _default(_ref2) {
91
+ var dataset = _ref2.dataset;
92
+ if (!dataset) return /*#__PURE__*/_react.default.createElement("div", null);
93
+ var referenceUrls = dataset.referenceUrls || [];
94
+ var data = [{
95
+ Field: 'Maintainer',
96
+ Value: mailto(dataset.contactEmail, dataset.contactName)
97
+ }, {
98
+ Field: 'Last Updated',
99
+ Value: dataset.modified
100
+ }, {
101
+ Field: 'Data Last Ingested',
102
+ Value: dataset.lastUpdatedDate
103
+ }, {
104
+ Field: 'Rights',
105
+ Value: dataset.rights
106
+ }, {
107
+ Field: 'Spatial',
108
+ Value: dataset.spatial
109
+ }, {
110
+ Field: 'Temporal',
111
+ Value: dataset.temporal
112
+ }, {
113
+ Field: 'Release Date',
114
+ Value: dataset.issuedDate
115
+ }, {
116
+ Field: 'Frequency',
117
+ Value: dataset.publishFrequency
118
+ }, {
119
+ Field: 'Data Dictionary URL',
120
+ Value: /*#__PURE__*/_react.default.createElement("a", {
121
+ role: "link",
122
+ href: dataset.describedByUrl,
123
+ target: "_blank"
124
+ }, dataset.describedByUrl)
125
+ }, {
126
+ Field: 'Data Dictionary Type',
127
+ Value: dataset.describedByMimeType
128
+ }, {
129
+ Field: 'Collection',
130
+ Value: dataset.parentDataset
131
+ }, {
132
+ Field: 'Language',
133
+ Value: dataset.language
134
+ }, {
135
+ Field: 'Homepage URL',
136
+ Value: /*#__PURE__*/_react.default.createElement("a", {
137
+ role: "link",
138
+ href: dataset.homepage,
139
+ target: "_blank"
140
+ }, dataset.homepage)
141
+ }, {
142
+ Field: 'Related Documents',
143
+ Value: referenceUrls.map(function (url) {
144
+ return /*#__PURE__*/_react.default.createElement("div", {
145
+ key: url
146
+ }, /*#__PURE__*/_react.default.createElement("a", {
147
+ role: "link",
148
+ href: url,
149
+ target: "_blank"
150
+ }, url));
151
+ })
152
+ }, {
153
+ Field: 'Source URL',
154
+ Value: /*#__PURE__*/_react.default.createElement("a", {
155
+ role: "link",
156
+ href: dataset.sourceUrl,
157
+ target: "_blank"
158
+ }, dataset.sourceUrl)
159
+ }, {
160
+ Field: 'Source Type',
161
+ Value: dataset.sourceType
162
+ }, {
163
+ Field: 'License',
164
+ Value: /*#__PURE__*/_react.default.createElement("a", {
165
+ role: "link",
166
+ href: dataset.license,
167
+ target: "_blank"
168
+ }, dataset.license)
169
+ }, {
170
+ Field: 'Category',
171
+ Value: dataset.catagories
172
+ }, {
173
+ Field: 'Count - Downloads',
174
+ Value: dataset.downloads
175
+ }, {
176
+ Field: 'Count - API Queries',
177
+ Value: dataset.queries
178
+ }, {
179
+ Field: 'Access Level',
180
+ Value: dataset.accessLevel
181
+ }, {
182
+ Field: 'Table Name',
183
+ Value: dataset.systemName
184
+ }];
185
+ return /*#__PURE__*/_react.default.createElement("dataset-metadata", {
186
+ class: "dataset-metadata"
187
+ }, /*#__PURE__*/_react.default.createElement(_collapsableBox.default, {
188
+ title: "Additional Information",
189
+ expanded: true
190
+ }, /*#__PURE__*/_react.default.createElement(MetadataTable, {
191
+ data: data
192
+ })));
193
+ };
160
194
  function mailto(email, name) {
161
195
  if (email) {
162
196
  return /*#__PURE__*/_react.default.createElement("a", {
@@ -1,24 +1,35 @@
1
- import { shallow } from 'enzyme'
1
+ import { mount } from 'enzyme'
2
2
  import DatasetMetadata from './dataset-metadata'
3
3
 
4
+ beforeEach(() => {
5
+ Object.defineProperty(window, 'matchMedia', {
6
+ writable: true,
7
+ value: jest.fn().mockImplementation(query => ({
8
+ matches: true
9
+ }))
10
+ })
11
+ })
12
+
4
13
  describe('additional info element', () => {
5
14
  test('card to render text based on props', () => {
6
- const subject = shallow(<DatasetMetadata dataset={{ spatial: 'Ohio' }} />)
7
- const table = subject.find('ReactTable')
8
- expect(table.prop('data')[4]).toEqual({ Field: 'Spatial', Value: 'Ohio' })
15
+ const subject = mount(<DatasetMetadata dataset={{ spatial: 'Ohio' }} />)
16
+ const cells = subject.find('td')
17
+ const spatialValue = cells.filterWhere(td => td.text() === 'Ohio')
18
+ expect(spatialValue.length).toBe(1)
9
19
  })
10
20
 
11
21
  test('card renders mailto link correctly', () => {
12
- const subject = shallow(<DatasetMetadata dataset={{ contactName: 'John', contactEmail: 'john@smith.com' }} />)
13
- const actual = JSON.stringify(subject.find('ReactTable').prop('data')[0])
14
- const expected = JSON.stringify({ Field: 'Maintainer', Value: <a role="link" href='mailto:john@smith.com'>John</a> })
15
- expect(actual).toEqual(expected)
22
+ const subject = mount(<DatasetMetadata dataset={{ contactName: 'John', contactEmail: 'john@smith.com' }} />)
23
+ const link = subject.find('a[href="mailto:john@smith.com"]')
24
+ expect(link.length).toBe(1)
25
+ expect(link.text()).toBe('John')
16
26
  })
17
27
 
18
28
  test('referenceUrls renders correctly', () => {
19
- const subject = shallow(<DatasetMetadata dataset={{ referenceUrls: ['https://www.google.com', 'https://www.facebook.com'] }} />)
20
- const actual = JSON.stringify(subject.find('ReactTable').prop('data')[13])
21
- const expected = JSON.stringify({ Field: 'Related Documents', Value: [<div><a role="link" href='https://www.google.com' target='_blank'>https://www.google.com</a></div>, <div><a role="link" href='https://www.facebook.com' target='_blank'>https://www.facebook.com</a></div>] })
22
- expect(actual).toEqual(expected)
29
+ const subject = mount(<DatasetMetadata dataset={{ referenceUrls: ['https://www.google.com', 'https://www.facebook.com'] }} />)
30
+ const googleLink = subject.find('a[href="https://www.google.com"]')
31
+ const facebookLink = subject.find('a[href="https://www.facebook.com"]')
32
+ expect(googleLink.length).toBe(1)
33
+ expect(facebookLink.length).toBe(1)
23
34
  })
24
35
  })
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  require("./dataset-preview.scss");
10
- require("react-table/react-table.css");
11
10
  var _collapsableBox = _interopRequireDefault(require("../../components/collapsable-box"));
12
11
  var _dataView = _interopRequireDefault(require("../data-view"));
13
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -3,7 +3,6 @@ import { shallow } from 'enzyme'
3
3
  import QueryView from './query-view'
4
4
  import QueryForm from '../../components/query-form'
5
5
  import LoadingElement from '../../components/generic-elements/loading-element'
6
- import ReactTable from 'react-table'
7
6
 
8
7
  // Currently, shallow rendering is not compatible with React hooks.
9
8
  // We've utilized a strategy found here https://blog.carbonfive.com/2019/08/05/shallow-testing-hooks-with-enzyme/
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _auth0LoginZone = _interopRequireDefault(require("../../components/auth0-login-zone"));
10
- var _reactTable = _interopRequireDefault(require("react-table"));
10
+ var _reactTable = require("@tanstack/react-table");
11
11
  var _reactModal = _interopRequireDefault(require("react-modal"));
12
12
  var _reactAriaModal = _interopRequireDefault(require("react-aria-modal"));
13
13
  var _DeleteForever = _interopRequireDefault(require("@material-ui/icons/DeleteForever"));
@@ -69,25 +69,34 @@ var UserProfileView = function UserProfileView(props) {
69
69
  }
70
70
  _reactModal.default.setAppElement('*');
71
71
  var columns = [{
72
- Header: 'Title',
73
- accessor: 'title',
74
- headerClassName: 'table-header'
72
+ header: 'Title',
73
+ accessorKey: 'title',
74
+ meta: {
75
+ headerClassName: 'table-header'
76
+ }
75
77
  }, {
76
- Header: 'Date Created',
77
- accessor: 'created',
78
- headerClassName: 'table-header'
78
+ header: 'Date Created',
79
+ accessorKey: 'created',
80
+ meta: {
81
+ headerClassName: 'table-header'
82
+ }
79
83
  }, {
80
- Header: 'Date Modified',
81
- accessor: 'updated',
82
- headerClassName: 'table-header'
84
+ header: 'Date Modified',
85
+ accessorKey: 'updated',
86
+ meta: {
87
+ headerClassName: 'table-header'
88
+ }
83
89
  }, {
84
- Header: '',
85
- accessor: 'delete',
86
- headerClassName: 'table-header',
87
- className: 'centered',
88
- width: 50,
89
- Cell: function Cell(_ref) {
90
- var original = _ref.original;
90
+ id: 'delete',
91
+ header: '',
92
+ meta: {
93
+ headerClassName: 'table-header',
94
+ className: 'centered'
95
+ },
96
+ size: 50,
97
+ enableSorting: false,
98
+ cell: function cell(_ref) {
99
+ var row = _ref.row;
91
100
  return /*#__PURE__*/_react.default.createElement("span", {
92
101
  className: "delete-icon",
93
102
  tabIndex: "0",
@@ -95,11 +104,11 @@ var UserProfileView = function UserProfileView(props) {
95
104
  role: "button",
96
105
  onKeyDownCapture: function onKeyDownCapture(event) {
97
106
  if (event.key === ' ' || event.key === 'Enter') {
98
- openDeleteModalForVisualization(original.id);
107
+ openDeleteModalForVisualization(row.original.id);
99
108
  }
100
109
  },
101
110
  onClick: function onClick() {
102
- openDeleteModalForVisualization(original.id);
111
+ openDeleteModalForVisualization(row.original.id);
103
112
  }
104
113
  }, /*#__PURE__*/_react.default.createElement(_DeleteForever.default, null));
105
114
  }
@@ -139,16 +148,86 @@ var UserProfileView = function UserProfileView(props) {
139
148
  className: "workspaces-header"
140
149
  }, "Saved Workspaces"))), /*#__PURE__*/_react.default.createElement("div", {
141
150
  id: "user-visualizations-table"
142
- }, /*#__PURE__*/_react.default.createElement(_reactTable.default, {
143
- data: visualizations,
151
+ }, /*#__PURE__*/_react.default.createElement(VisualizationsTable, {
152
+ visualizations: visualizations,
144
153
  columns: columns,
145
- defaultSorted: [{
154
+ loading: loading
155
+ }))), modal);
156
+ };
157
+ var VisualizationsTable = function VisualizationsTable(_ref2) {
158
+ var visualizations = _ref2.visualizations,
159
+ columns = _ref2.columns,
160
+ loading = _ref2.loading;
161
+ var _useState5 = (0, _react.useState)([{
146
162
  id: 'updated',
147
163
  desc: true
148
- }],
149
- loading: props.loading,
150
- defaultPageSize: 10,
151
- className: "-striped -highlight"
152
- }))), modal);
164
+ }]),
165
+ _useState6 = _slicedToArray(_useState5, 2),
166
+ sorting = _useState6[0],
167
+ setSorting = _useState6[1];
168
+ var table = (0, _reactTable.useReactTable)({
169
+ data: visualizations,
170
+ columns: columns,
171
+ state: {
172
+ sorting: sorting
173
+ },
174
+ onSortingChange: setSorting,
175
+ getCoreRowModel: (0, _reactTable.getCoreRowModel)(),
176
+ getSortedRowModel: (0, _reactTable.getSortedRowModel)(),
177
+ getPaginationRowModel: (0, _reactTable.getPaginationRowModel)(),
178
+ initialState: {
179
+ pagination: {
180
+ pageSize: 10
181
+ }
182
+ }
183
+ });
184
+ if (loading) {
185
+ return /*#__PURE__*/_react.default.createElement(_loadingElement.default, {
186
+ className: "spinner"
187
+ });
188
+ }
189
+ return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("table", null, /*#__PURE__*/_react.default.createElement("thead", null, table.getHeaderGroups().map(function (headerGroup) {
190
+ return /*#__PURE__*/_react.default.createElement("tr", {
191
+ key: headerGroup.id
192
+ }, headerGroup.headers.map(function (header) {
193
+ var _header$column$column;
194
+ return /*#__PURE__*/_react.default.createElement("th", {
195
+ key: header.id,
196
+ scope: "col",
197
+ className: ((_header$column$column = header.column.columnDef.meta) === null || _header$column$column === void 0 ? void 0 : _header$column$column.headerClassName) || '',
198
+ style: {
199
+ width: header.column.getSize() !== 150 ? "".concat(header.column.getSize(), "px") : undefined,
200
+ cursor: header.column.getCanSort() ? 'pointer' : undefined
201
+ },
202
+ onClick: header.column.getCanSort() ? header.column.getToggleSortingHandler() : undefined,
203
+ "aria-sort": header.column.getIsSorted() === 'asc' ? 'ascending' : header.column.getIsSorted() === 'desc' ? 'descending' : undefined
204
+ }, header.isPlaceholder ? null : (0, _reactTable.flexRender)(header.column.columnDef.header, header.getContext()), header.column.getIsSorted() === 'asc' ? ' ↑' : header.column.getIsSorted() === 'desc' ? ' ↓' : '');
205
+ }));
206
+ })), /*#__PURE__*/_react.default.createElement("tbody", null, table.getRowModel().rows.map(function (row, i) {
207
+ return /*#__PURE__*/_react.default.createElement("tr", {
208
+ key: row.id,
209
+ className: i % 2 === 0 ? 'striped-row' : ''
210
+ }, row.getVisibleCells().map(function (cell) {
211
+ var _cell$column$columnDe;
212
+ return /*#__PURE__*/_react.default.createElement("td", {
213
+ key: cell.id,
214
+ className: ((_cell$column$columnDe = cell.column.columnDef.meta) === null || _cell$column$columnDe === void 0 ? void 0 : _cell$column$columnDe.className) || ''
215
+ }, (0, _reactTable.flexRender)(cell.column.columnDef.cell, cell.getContext()));
216
+ }));
217
+ }))), table.getPageCount() > 1 && /*#__PURE__*/_react.default.createElement("div", {
218
+ className: "pagination"
219
+ }, /*#__PURE__*/_react.default.createElement("button", {
220
+ onClick: function onClick() {
221
+ return table.previousPage();
222
+ },
223
+ disabled: !table.getCanPreviousPage(),
224
+ "aria-label": "Previous page"
225
+ }, '<'), /*#__PURE__*/_react.default.createElement("span", null, "Page ", table.getState().pagination.pageIndex + 1, " of ", table.getPageCount()), /*#__PURE__*/_react.default.createElement("button", {
226
+ onClick: function onClick() {
227
+ return table.nextPage();
228
+ },
229
+ disabled: !table.getCanNextPage(),
230
+ "aria-label": "Next page"
231
+ }, '>')));
153
232
  };
154
233
  var _default = exports.default = UserProfileView;
@@ -1,7 +1,6 @@
1
1
  import { shallow, mount } from 'enzyme'
2
2
  import UserProfileView from './user-profile-view'
3
3
  import LoadingElement from '../../components/generic-elements/loading-element'
4
- import ReactTable from 'react-table'
5
4
  import ErrorComponent from '../../components/generic-elements/error-component'
6
5
  import AriaModal from 'react-aria-modal'
7
6
  import createAuth0Client from '@auth0/auth0-spa-js'
@@ -39,14 +38,12 @@ describe('user profile view', () => {
39
38
  visualizations: visualizations,
40
39
  auth: { isAuthenticated: true },
41
40
  loadSuccess: true
42
- })
41
+ }, mount)
43
42
  })
44
43
 
45
44
  it("provides a table with the visualizations' information", () => {
46
- expect(subject.find(ReactTable)).toHaveLength(1)
47
- expect(subject.find(ReactTable).props().data).toHaveLength(2)
48
- expect(subject.find(ReactTable).props().data[0].id).toEqual('id1')
49
- expect(subject.find(ReactTable).props().data[1].id).toEqual('id2')
45
+ expect(subject.find('#user-visualizations-table table')).toHaveLength(1)
46
+ expect(subject.find('#user-visualizations-table tbody tr')).toHaveLength(2)
50
47
  })
51
48
  })
52
49
 
@@ -57,7 +54,7 @@ describe('user profile view', () => {
57
54
 
58
55
  it('shows an error message', () => {
59
56
  expect(subject.find(ErrorComponent)).toHaveLength(1)
60
- expect(subject.find(ReactTable)).toHaveLength(0)
57
+ expect(subject.find('#user-visualizations-table')).toHaveLength(0)
61
58
  })
62
59
  })
63
60
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@urbanos/react-discovery-ui",
3
- "version": "2.1.43",
3
+ "version": "2.1.45",
4
4
  "description": "React component for dataset discovery UI",
5
5
  "main": "./lib/ReactDiscoveryUI.js",
6
6
  "repository": {
@@ -22,6 +22,7 @@
22
22
  "@babel/runtime": "^7.26.7",
23
23
  "@material-ui/core": "^4.12.4",
24
24
  "@material-ui/icons": "^4.11.3",
25
+ "@tanstack/react-table": "^8.21.3",
25
26
  "@testing-library/jest-dom": "^5.17.0",
26
27
  "@testing-library/react": "^12.1.5",
27
28
  "@trendmicro/react-dropdown": "^1.4.0",
@@ -62,7 +63,6 @@
62
63
  "react-share": "^2.4.0",
63
64
  "react-simple-code-editor": "^0.11.3",
64
65
  "react-svg-inline": "^2.1.1",
65
- "react-table": "~6.10.3",
66
66
  "react-tooltip": "3.11.1",
67
67
  "redux": "^4.2.1",
68
68
  "redux-saga": "^0.16.2",