@civicactions/cmsds-open-data-components 1.5.0 → 1.6.0-alpha.1

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.
@@ -14,4 +14,25 @@
14
14
  overflow: hidden;
15
15
  text-overflow: ellipsis;
16
16
  white-space: nowrap;
17
- }
17
+ }
18
+
19
+ .dc-c-resize-handle {
20
+ height: 57px;
21
+ background-color: $color-primary-darkest;
22
+ width: 10px;
23
+ min-width: 10px;
24
+ display: block;
25
+ margin-left: -10px;
26
+ // position: absolute;
27
+ // right: 0;
28
+ // top: 0;
29
+ // padding: 10px;
30
+ z-index: 1000;
31
+ border-top: 2px solid rgb(50, 58, 69);
32
+ border-bottom: 2px solid rgb(50, 58, 69);
33
+ // border-right: 1px solid rgb(50, 58, 69) !important;
34
+ &.isResizing,
35
+ &:hover {
36
+ background-color: $color-primary-darker;
37
+ }
38
+ }
@@ -4,8 +4,8 @@
4
4
  color: $color-white;
5
5
  text-decoration: none;
6
6
  &::before {
7
- font-family: 'Font Awesome 5 Pro';
8
- content: '\f0c9';
7
+ font-family: "Font Awesome 5 Pro";
8
+ content: "\f0c9";
9
9
  color: $color-white;
10
10
  font-size: 18px;
11
11
  padding-right: 10px;
@@ -26,8 +26,8 @@
26
26
  padding-left: 0;
27
27
  padding-bottom: 16px;
28
28
  &::before {
29
- font-family: 'Font Awesome 5 Pro';
30
- content: '\f00d';
29
+ font-family: "Font Awesome 5 Pro";
30
+ content: "\f00d";
31
31
  color: $color-white;
32
32
  font-size: 18px;
33
33
  padding-right: 10px;
@@ -50,7 +50,7 @@
50
50
  z-index: 500;
51
51
  height: 100%;
52
52
  width: 100%;
53
- transition: left .7s;
53
+ transition: left 0.7s;
54
54
  padding: 50px 0;
55
55
  }
56
56
 
@@ -78,21 +78,30 @@
78
78
  width: 48px;
79
79
  height: 2px;
80
80
  background: $color-primary-alt-light;
81
- content: '';
81
+ content: "";
82
82
  }
83
83
  ul {
84
84
  list-style: none;
85
85
  margin: 0;
86
86
  padding: 0;
87
87
  }
88
- a {
89
- display: block;
88
+ a,
89
+ a:hover,
90
+ a:focus,
91
+ a:visited {
92
+ display: inline-block;
90
93
  color: $color-white;
94
+ text-decoration: none;
95
+ border-bottom: 2px solid transparent;
96
+ }
97
+ a:hover,
98
+ a:active {
99
+ border-bottom: 2px solid $color-primary-alt-light;
91
100
  }
92
101
  }
93
102
  .has-submenu > button::after {
94
- font-family: 'Font Awesome 5 Pro';
95
- content: '\f105';
103
+ font-family: "Font Awesome 5 Pro";
104
+ content: "\f105";
96
105
  color: $color-white;
97
106
  font-size: 18px;
98
107
  padding-right: 10px;
@@ -106,7 +115,7 @@
106
115
  font-weight: lighter;
107
116
  }
108
117
  .has-submenu.open > button::after {
109
- content: '\f107';
118
+ content: "\f107";
110
119
  }
111
120
  .dc-c-header--mobile-links {
112
121
  button {
@@ -123,15 +132,19 @@
123
132
  z-index: 501;
124
133
  background-color: transparent;
125
134
  }
126
- .dc-c-cmsheader-menu a, button { color: $color-white;}
127
- .cms-link-container a::before { color: $color-white; }
135
+ .dc-c-cmsheader-menu a,
136
+ button {
137
+ color: $color-white;
138
+ }
139
+ .cms-link-container a::before {
140
+ color: $color-white;
141
+ }
128
142
  .dc-c-mobile-header--menu {
129
143
  left: 0;
130
144
  }
131
145
  }
132
146
 
133
147
  .cms-link-container {
134
-
135
148
  display: block;
136
149
  margin-right: 20px;
137
150
  // margin-top: -5px;
@@ -139,14 +152,14 @@
139
152
  a {
140
153
  text-decoration: none;
141
154
  border-bottom: none;
142
-
155
+
143
156
  margin-right: 20px;
144
157
  display: inline-block;
145
158
  }
146
159
  a::before {
147
- font-family: 'Font Awesome 5 Pro';
148
- content: '\f33e';
149
- color: #323A45;
160
+ font-family: "Font Awesome 5 Pro";
161
+ content: "\f33e";
162
+ color: #323a45;
150
163
  font-size: 18px;
151
164
  padding-right: 10px;
152
165
  display: inline-block;
@@ -166,12 +179,10 @@
166
179
  }
167
180
  }
168
181
 
169
-
170
-
171
182
  .cms-text-container {
172
183
  display: block;
173
184
  padding-top: 28px;
174
- color: #6F757C;
185
+ color: #6f757c;
175
186
  }
176
187
 
177
188
  .dc-c-cmsheader-menu {
@@ -183,15 +194,15 @@
183
194
  a {
184
195
  margin: 3px 7px;
185
196
  padding: 0;
186
- color: #323A45;
197
+ color: #323a45;
187
198
  text-decoration: none;
188
199
  border-bottom: 1px solid;
189
200
  border-bottom-color: #eee;
190
- border-bottom-color: rgba(255,255,255,0.2);
201
+ border-bottom-color: rgba(255, 255, 255, 0.2);
191
202
  }
192
203
  a:hover,
193
204
  a:active {
194
- border-bottom: 2px solid #323A45;
205
+ border-bottom: 2px solid #323a45;
195
206
  }
196
207
  }
197
208
 
@@ -207,7 +218,7 @@
207
218
  height: 85px;
208
219
  width: 240px;
209
220
  float: left;
210
- border-right: 1px solid #D6D7D9;
221
+ border-right: 1px solid #d6d7d9;
211
222
  a {
212
223
  margin-top: 28px;
213
224
  margin-bottom: 20px;
@@ -270,9 +281,13 @@ nav.dc-c-site-menu {
270
281
  }
271
282
  }
272
283
 
273
- nav > ul li ul { display: none; }
284
+ nav > ul li ul {
285
+ display: none;
286
+ }
274
287
 
275
- nav > ul li.open ul { display: block; }
288
+ nav > ul li.open ul {
289
+ display: block;
290
+ }
276
291
  li.has-submenu {
277
292
  position: relative;
278
293
  }
@@ -304,7 +319,7 @@ li.has-submenu {
304
319
  }
305
320
 
306
321
  div.ds-c-dialog-wrap {
307
- background-color: rgba(0,113,188,0.9);
322
+ background-color: rgba(0, 113, 188, 0.9);
308
323
  }
309
324
 
310
325
  div.ds-c-dialog {
@@ -325,8 +340,8 @@ div.ds-c-dialog button {
325
340
  top: 24px;
326
341
  right: 24px;
327
342
  &::after {
328
- font-family: 'Font Awesome 5 Pro';
329
- content: '\f00d';
343
+ font-family: "Font Awesome 5 Pro";
344
+ content: "\f00d";
330
345
  height: 22px;
331
346
  font-size: 20px;
332
347
  line-height: 20px;
@@ -342,8 +357,8 @@ div.ds-c-dialog button {
342
357
 
343
358
  .dc-c-search-modal--button {
344
359
  &::before {
345
- font-family: 'Font Awesome 5 Pro';
346
- content: '\f002';
360
+ font-family: "Font Awesome 5 Pro";
361
+ content: "\f002";
347
362
  color: $color-white;
348
363
  font-size: 18px;
349
364
  padding-right: 10px;
@@ -357,4 +372,3 @@ div.ds-c-dialog button {
357
372
  font-weight: lighter;
358
373
  }
359
374
  }
360
-
@@ -16,6 +16,10 @@ var _dataCatalogServices = require("@civicactions/data-catalog-services");
16
16
 
17
17
  var _designSystem = require("@cmsgov/design-system");
18
18
 
19
+ function calculateMaxWidth(previewSize) {
20
+ return Math.floor(previewSize * 0.84);
21
+ }
22
+
19
23
  function prepareColumns(columns, schema) {
20
24
  return columns.map(function (column) {
21
25
  return {
@@ -38,7 +42,7 @@ function DefaultColumnFilter(_ref) {
38
42
  },
39
43
  labelClassName: "ds-u-visibility--screen-reader",
40
44
  name: accessor,
41
- value: filterValue || ''
45
+ value: filterValue || ""
42
46
  });
43
47
  }
44
48
 
@@ -48,26 +52,38 @@ var ResourcePreview = function ResourcePreview(_ref2) {
48
52
  options = _ref2.options,
49
53
  resource = _ref2.resource,
50
54
  customColumns = _ref2.customColumns,
51
- truncateCellHeader = _ref2.truncateCellHeader;
55
+ truncateCellHeader = _ref2.truncateCellHeader,
56
+ columnSettings = _ref2.columnSettings;
57
+
58
+ var previewContainer = _react["default"].useRef(null);
59
+
60
+ var columnDefaults = {
61
+ width: 200,
62
+ maxWidth: previewContainer.current ? calculateMaxWidth(previewContainer.current.offsetWidth) : 300,
63
+ minWidth: 50
64
+ };
65
+ console.log(previewContainer.current ? previewContainer.current.offsetWidth : "loading", columnDefaults);
52
66
  var tableClasses = {
53
- tableContainerClassName: 'dc-c-table-container',
54
- headerCellClassName: 'ds-u-border--dark ds-u-padding--2 ds-u-border-y--2 ds-u-border-right--1 ds-u-font-weight--bold dc-c-table-header-cell',
55
- headerGroupClassName: 'dc-c-table-header-group',
67
+ tableContainerClassName: "dc-c-table-container",
68
+ headerCellClassName: "ds-u-border--dark ds-u-padding--2 ds-u-border-y--2 ds-u-font-weight--bold dc-c-table-header-cell",
69
+ headerGroupClassName: "dc-c-table-header-group",
56
70
  headerCellTextClassName: "".concat(truncateCellHeader ? "dc-truncate" : "", " ds-u-display--inline-block"),
57
- cellEvenRowClassName: 'ds-u-fill--gray-lightest',
71
+ cellEvenRowClassName: "ds-u-fill--gray-lightest",
58
72
  cellClassName: "".concat(tablePadding, " dc-truncate ds-u-padding-x--1"),
59
- filterTitleClassName: 'ds-u-font-weight--bold ds-u-padding-left--2 ds-u-fill--gray-lightest ds-u-display--block',
60
- headerFilterClassName: 'ds-u-padding-top--1 ds-u-fill--gray-lightest',
61
- headerFilterCellClassName: 'ds-u-padding-x--1 ds-u-padding-bottom--0 ds-u-border-bottom--0 ds-u-fill--gray-lightest',
62
- columnIsSortedClassName: 'dc-c-sort dc-c-sort--default',
63
- columnIsSortedAscClassName: 'dc-c-sort dc-c-sort--asc',
64
- columnIsSortedDecClassName: 'dc-c-sort dc-c-sort--desc',
65
- tableColumnResizer: 'dc-c-resize-handle',
66
- tableColumnIsResizing: 'isResizing'
73
+ filterTitleClassName: "ds-u-font-weight--bold ds-u-padding-left--2 ds-u-fill--gray-lightest ds-u-display--block",
74
+ headerFilterClassName: "ds-u-padding-top--1 ds-u-fill--gray-lightest",
75
+ headerFilterCellClassName: "ds-u-padding-x--1 ds-u-padding-bottom--0 ds-u-border-bottom--0 ds-u-fill--gray-lightest",
76
+ columnIsSortedClassName: "dc-c-sort dc-c-sort--default",
77
+ columnIsSortedAscClassName: "dc-c-sort dc-c-sort--asc",
78
+ columnIsSortedDecClassName: "dc-c-sort dc-c-sort--desc",
79
+ tableColumnResizer: "dc-c-resize-handle",
80
+ tableColumnIsResizing: "isResizing"
67
81
  };
68
82
  return /*#__PURE__*/_react["default"].createElement("div", {
83
+ ref: previewContainer,
84
+ id: "resource-preview",
69
85
  className: "ds-u-overflow--auto ds-u-border-x--1 ds-u-border-bottom--1"
70
- }, /*#__PURE__*/_react["default"].createElement(_dataCatalogComponents.DataTable, {
86
+ }, previewContainer.current && /*#__PURE__*/_react["default"].createElement(_dataCatalogComponents.DataTable, {
71
87
  filterTitle: "Filter columns",
72
88
  data: resource.values,
73
89
  columns: customColumns ? customColumns : prepareColumns(resource.columns, resource.schema[id]),
@@ -82,11 +98,7 @@ var ResourcePreview = function ResourcePreview(_ref2) {
82
98
  sortTransform: _dataCatalogServices.transformTableSortToQuerySort,
83
99
  tableClasses: tableClasses,
84
100
  className: "dc-c-datatable",
85
- columnDefaults: {
86
- width: 200,
87
- maxWidth: 300,
88
- minWidth: 50
89
- },
101
+ columnDefaults: columnDefaults,
90
102
  customColumnFilter: DefaultColumnFilter,
91
103
  options: options,
92
104
  CustomLoadingComponent: /*#__PURE__*/_react["default"].createElement("div", {
@@ -102,7 +114,7 @@ var ResourcePreview = function ResourcePreview(_ref2) {
102
114
 
103
115
  ResourcePreview.defaultProps = {
104
116
  options: {
105
- layout: 'flex',
117
+ layout: "flex",
106
118
  columnFilter: false,
107
119
  columnSort: true,
108
120
  columnResize: true
@@ -47,15 +47,16 @@ var DatasetBody = function DatasetBody(_ref) {
47
47
  var id = _ref.id,
48
48
  dataset = _ref.dataset,
49
49
  additionalParams = _ref.additionalParams,
50
- customColumns = _ref.customColumns;
50
+ customColumns = _ref.customColumns,
51
+ columnSettings = _ref.columnSettings;
51
52
  var apiDocs = (0, _react.useRef)();
52
53
 
53
- var _useState = (0, _react.useState)('ds-u-padding-y--1'),
54
+ var _useState = (0, _react.useState)("ds-u-padding-y--1"),
54
55
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
55
56
  tablePadding = _useState2[0],
56
57
  setTablePadding = _useState2[1];
57
58
 
58
- var _useState3 = (0, _react.useState)(''),
59
+ var _useState3 = (0, _react.useState)(""),
59
60
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
60
61
  fileFormat = _useState4[0],
61
62
  setFileFormat = _useState4[1];
@@ -67,18 +68,18 @@ var DatasetBody = function DatasetBody(_ref) {
67
68
  distribution = distribution_array[0];
68
69
  }
69
70
 
70
- var resource = (0, _dataCatalogServices.useDatastore)('', process.env.REACT_APP_ROOT_URL, {
71
+ var resource = (0, _dataCatalogServices.useDatastore)("", process.env.REACT_APP_ROOT_URL, {
71
72
  limit: 10,
72
73
  manual: true
73
74
  }, additionalParams);
74
75
  (0, _react.useEffect)(function () {
75
76
  if (distribution.identifier) {
76
- var localFileFormat = '';
77
+ var localFileFormat = "";
77
78
 
78
79
  if (distribution.data.format) {
79
80
  localFileFormat = distribution.data.format.toUpperCase();
80
81
  } else if (distribution.data.mediaType) {
81
- var mediaType = distribution.data.mediaType.split('/');
82
+ var mediaType = distribution.data.mediaType.split("/");
82
83
 
83
84
  if (mediaType.length && mediaType[1]) {
84
85
  localFileFormat = mediaType[1].toUpperCase();
@@ -129,25 +130,32 @@ var DatasetBody = function DatasetBody(_ref) {
129
130
  id: distribution.identifier,
130
131
  tablePadding: tablePadding,
131
132
  resource: resource,
132
- customColumns: (0, _functions.buildCustomColHeaders)(customColumns, resource.columns, resource.schema[distribution_array[0].identifier])
133
+ customColumns: (0, _functions.buildCustomColHeaders)(customColumns, resource.columns, resource.schema[distribution_array[0].identifier]),
134
+ columnSettings: columnSettings,
135
+ options: {
136
+ layout: "flex",
137
+ columnFilter: false,
138
+ columnSort: true,
139
+ columnResize: true
140
+ }
133
141
  }), /*#__PURE__*/_react["default"].createElement(_ResourceFooter["default"], {
134
142
  resource: resource
135
143
  }), /*#__PURE__*/_react["default"].createElement(_ResourceInformation["default"], {
136
144
  resource: resource
137
- })) : /*#__PURE__*/_react["default"].createElement(Spinner, null)) : '', dataset.identifier && /*#__PURE__*/_react["default"].createElement(_DatasetAdditionalInformation["default"], {
145
+ })) : /*#__PURE__*/_react["default"].createElement(Spinner, null)) : "", dataset.identifier && /*#__PURE__*/_react["default"].createElement(_DatasetAdditionalInformation["default"], {
138
146
  datasetInfo: dataset
139
147
  }), Object.keys(distribution).length && fileFormat === "CSV" && dataset.identifier ? /*#__PURE__*/_react["default"].createElement("div", {
140
148
  ref: apiDocs
141
149
  }, /*#__PURE__*/_react["default"].createElement("h2", null, "Try the API"), /*#__PURE__*/_react["default"].createElement(_swaggerUiReact["default"], {
142
- url: "".concat(process.env.REACT_APP_ROOT_URL, "/metastore/schemas/dataset/items/").concat(dataset.identifier, "/docs").concat(additionalParams && additionalParams.ACA ? '?ACA=' + additionalParams.ACA + '&redirect=false' : ''),
143
- docExpansion: 'list',
150
+ url: "".concat(process.env.REACT_APP_ROOT_URL, "/metastore/schemas/dataset/items/").concat(dataset.identifier, "/docs").concat(additionalParams && additionalParams.ACA ? "?ACA=" + additionalParams.ACA + "&redirect=false" : ""),
151
+ docExpansion: "list",
144
152
  defaultModelsExpandDepth: -1
145
- })) : ''), /*#__PURE__*/_react["default"].createElement("div", {
153
+ })) : ""), /*#__PURE__*/_react["default"].createElement("div", {
146
154
  className: "ds-l-md-col--3 ds-l-sm-col--12"
147
155
  }, Object.keys(distribution).length ? /*#__PURE__*/_react["default"].createElement(_DatasetDownloads["default"], {
148
156
  downloadURL: distribution.data.downloadURL,
149
157
  type: fileFormat
150
- }) : '', /*#__PURE__*/_react["default"].createElement(_DatasetTags["default"], {
158
+ }) : "", /*#__PURE__*/_react["default"].createElement(_DatasetTags["default"], {
151
159
  keywords: dataset.keyword
152
160
  }), Object.keys(distribution).length && fileFormat === "CSV" ? /*#__PURE__*/_react["default"].createElement("div", {
153
161
  className: "dc-c-dataset-tags ds-u-margin-bottom--3 ds-u-padding--2 ds-u-border ds-u-border--1"
@@ -157,11 +165,11 @@ var DatasetBody = function DatasetBody(_ref) {
157
165
  variation: "transparent",
158
166
  onClick: function onClick() {
159
167
  return window.scrollTo({
160
- behavior: 'smooth',
168
+ behavior: "smooth",
161
169
  top: apiDocs.current.offsetTop
162
170
  });
163
171
  }
164
- }, "Scroll to dataset API")) : '')));
172
+ }, "Scroll to dataset API")) : "")));
165
173
  };
166
174
 
167
175
  DatasetBody.propTypes = {
@@ -28,7 +28,8 @@ var Dataset = function Dataset(_ref) {
28
28
  rootUrl = _ref.rootUrl,
29
29
  additionalParams = _ref.additionalParams,
30
30
  customColumns = _ref.customColumns,
31
- setDatasetTitle = _ref.setDatasetTitle;
31
+ setDatasetTitle = _ref.setDatasetTitle,
32
+ columnSettings = _ref.columnSettings;
32
33
  var metastore = (0, _dataCatalogServices.useMetastoreDataset)(id, rootUrl, additionalParams);
33
34
  var dataset = metastore.dataset;
34
35
  var title = dataset.title ? dataset.title : "";
@@ -54,7 +55,8 @@ var Dataset = function Dataset(_ref) {
54
55
  id: id,
55
56
  dataset: dataset,
56
57
  additionalParams: additionalParams,
57
- customColumns: customColumns ? customColumns : []
58
+ customColumns: customColumns ? customColumns : [],
59
+ columnSettings: columnSettings
58
60
  }));
59
61
  };
60
62
 
@@ -37,6 +37,12 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
37
37
 
38
38
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
39
39
 
40
+ var defaultSort = {
41
+ modified: "desc",
42
+ title: "asc",
43
+ "default": "modified"
44
+ };
45
+
40
46
  function updateUrl(selectedFacets, fulltext, sort) {
41
47
  var newParams = _objectSpread({}, selectedFacets);
42
48
 
@@ -59,13 +65,13 @@ function selectedFacetsMessage(facets, alternateTitles) {
59
65
  var keys = Object.keys(facets);
60
66
  keys.forEach(function (k) {
61
67
  if (facets[k].length) {
62
- message.push("".concat(alternateTitles[k], ": ").concat(facets[k].join(', ')));
68
+ message.push("".concat(alternateTitles[k], ": ").concat(facets[k].join(", ")));
63
69
  }
64
70
  });
65
- return message.join(' & ');
71
+ return message.join(" & ");
66
72
  }
67
73
 
68
- function transformUrlParamsToSearchObject(searchParams, facetList) {
74
+ function transformUrlParamsToSearchObject(searchParams, facetList, sortOptions) {
69
75
  var params = _qs["default"].parse(searchParams, {
70
76
  ignoreQueryPrefix: true
71
77
  });
@@ -77,8 +83,8 @@ function transformUrlParamsToSearchObject(searchParams, facetList) {
77
83
  return {
78
84
  selectedFacets: selectedFacets,
79
85
  fulltext: params.fulltext,
80
- sort: !params.sort ? "modified" : params.sort,
81
- sortOrder: !params.sort || params.sort === "modified" ? "desc" : "asc"
86
+ sort: !params.sort ? sortOptions["default"] : params.sort,
87
+ sortOrder: !params.sort ? sortOptions[sortOptions["default"]] : sortOptions[params.sort]
82
88
  };
83
89
  }
84
90
 
@@ -91,14 +97,17 @@ var DatasetSearch = function DatasetSearch(_ref) {
91
97
  fulltextLabelClassName = _ref.fulltextLabelClassName,
92
98
  fulltextPlaceholder = _ref.fulltextPlaceholder,
93
99
  formClassName = _ref.formClassName,
94
- additionalParams = _ref.additionalParams;
100
+ additionalParams = _ref.additionalParams,
101
+ sortOptions = _ref.sortOptions;
102
+
103
+ var sortOpt = _objectSpread(_objectSpread({}, defaultSort), sortOptions);
95
104
 
96
105
  var _useState = (0, _react.useState)(null),
97
106
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
98
107
  currentResultNumbers = _useState2[0],
99
108
  setCurrentResultNumbers = _useState2[1];
100
109
 
101
- var _useSearchAPI = (0, _dataCatalogServices.useSearchAPI)(rootUrl, _objectSpread({}, transformUrlParamsToSearchObject(location.search, ['theme', 'keyword'])), additionalParams),
110
+ var _useSearchAPI = (0, _dataCatalogServices.useSearchAPI)(rootUrl, _objectSpread({}, transformUrlParamsToSearchObject(location.search, ["theme", "keyword"], sortOpt)), additionalParams),
102
111
  fulltext = _useSearchAPI.fulltext,
103
112
  selectedFacets = _useSearchAPI.selectedFacets,
104
113
  loading = _useSearchAPI.loading,
@@ -119,7 +128,7 @@ var DatasetSearch = function DatasetSearch(_ref) {
119
128
  theme = _separateFacets.theme,
120
129
  keyword = _separateFacets.keyword;
121
130
 
122
- var _useState3 = (0, _react.useState)(''),
131
+ var _useState3 = (0, _react.useState)(""),
123
132
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
124
133
  filterText = _useState4[0],
125
134
  setFilterText = _useState4[1];
@@ -133,7 +142,7 @@ var DatasetSearch = function DatasetSearch(_ref) {
133
142
  _react["default"].useEffect(function () {
134
143
  var url = new URL(window.location);
135
144
  var searchParams = updateUrl(selectedFacets, fulltext, sort);
136
- window.history.pushState({}, '', "".concat(url.origin).concat(url.pathname).concat(searchParams));
145
+ window.history.pushState({}, "", "".concat(url.origin).concat(url.pathname).concat(searchParams));
137
146
  }, [fulltext, selectedFacets, sort]);
138
147
 
139
148
  (0, _react.useEffect)(function () {
@@ -153,12 +162,7 @@ var DatasetSearch = function DatasetSearch(_ref) {
153
162
  }
154
163
 
155
164
  function updateSort(value) {
156
- if (value === 'modified') {
157
- setSortOrder('desc');
158
- } else if (value === 'title') {
159
- setSortOrder('asc');
160
- }
161
-
165
+ setSortOrder(sortOpt[value]);
162
166
  setSort(value);
163
167
  }
164
168
 
@@ -201,11 +205,11 @@ var DatasetSearch = function DatasetSearch(_ref) {
201
205
  className: "ds-u-display--flex ds-u-justify-content--between ds-u-align-items--end"
202
206
  }, /*#__PURE__*/_react["default"].createElement("div", null, currentResultNumbers && /*#__PURE__*/_react["default"].createElement("p", {
203
207
  className: "ds-u-margin-y--0"
204
- }, "Showing ", currentResultNumbers.startingNumber, " - ", currentResultNumbers.endingNumber, " of ", currentResultNumbers.total, " datasets"), /*#__PURE__*/_react["default"].createElement("p", {
208
+ }, "Showing ", currentResultNumbers.startingNumber, " -", " ", currentResultNumbers.endingNumber, " of", " ", currentResultNumbers.total, " datasets"), /*#__PURE__*/_react["default"].createElement("p", {
205
209
  className: "ds-u-margin-y--0"
206
210
  }, selectedFacetsMessage(selectedFacets, {
207
- theme: 'Categories',
208
- keyword: 'Tags'
211
+ theme: "Categories",
212
+ keyword: "Tags"
209
213
  }))), /*#__PURE__*/_react["default"].createElement(_designSystem.Button, {
210
214
  className: "ds-u-padding--0 dc-c-clear-filters",
211
215
  variation: "transparent",
@@ -231,11 +235,11 @@ var DatasetSearch = function DatasetSearch(_ref) {
231
235
  className: "ds-u-padding--2 ds-u-margin-bottom--4 ds-u-border--1"
232
236
  }, /*#__PURE__*/_react["default"].createElement(_designSystem.Dropdown, {
233
237
  options: [{
234
- label: 'Recently Updated',
235
- value: 'modified'
238
+ label: "Recently Updated",
239
+ value: "modified"
236
240
  }, {
237
- label: 'Alphabetical',
238
- value: 'title'
241
+ label: "Alphabetical",
242
+ value: "title"
239
243
  }],
240
244
  value: sort,
241
245
  label: "Sort by",
@@ -50,9 +50,10 @@ var FilteredResourceBody = function FilteredResourceBody(_ref) {
50
50
  location = _ref.location,
51
51
  apiDocPage = _ref.apiDocPage,
52
52
  additionalParams = _ref.additionalParams,
53
- customColumns = _ref.customColumns;
53
+ customColumns = _ref.customColumns,
54
+ columnSettings = _ref.columnSettings;
54
55
 
55
- var _React$useState = _react["default"].useState('ds-u-padding-y--1'),
56
+ var _React$useState = _react["default"].useState("ds-u-padding-y--1"),
56
57
  _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
57
58
  tablePadding = _React$useState2[0],
58
59
  setTablePadding = _React$useState2[1];
@@ -79,7 +80,7 @@ var FilteredResourceBody = function FilteredResourceBody(_ref) {
79
80
  })) : {
80
81
  conditions: []
81
82
  };
82
- var resource = (0, _dataCatalogServices.useDatastore)('', process.env.REACT_APP_ROOT_URL, _objectSpread(_objectSpread({}, options), {}, {
83
+ var resource = (0, _dataCatalogServices.useDatastore)("", process.env.REACT_APP_ROOT_URL, _objectSpread(_objectSpread({}, options), {}, {
83
84
  limit: 25,
84
85
  manual: true
85
86
  }), additionalParams);
@@ -151,7 +152,7 @@ var FilteredResourceBody = function FilteredResourceBody(_ref) {
151
152
  className: "ds-u-text-align--left ds-u-font-weight--normal",
152
153
  onClick: function onClick() {
153
154
  return window.scrollTo({
154
- behavior: 'smooth',
155
+ behavior: "smooth",
155
156
  top: apiDocs.current.offsetTop
156
157
  });
157
158
  }
@@ -171,7 +172,14 @@ var FilteredResourceBody = function FilteredResourceBody(_ref) {
171
172
  id: distribution.identifier,
172
173
  tablePadding: tablePadding,
173
174
  resource: resource,
174
- customColumns: (0, _functions.buildCustomColHeaders)(customColumns, resource.columns, resource.schema[distribution_array[distIndex].identifier])
175
+ customColumns: (0, _functions.buildCustomColHeaders)(customColumns, resource.columns, resource.schema[distribution_array[distIndex].identifier]),
176
+ columnSettings: columnSettings,
177
+ options: {
178
+ layout: "flex",
179
+ columnFilter: false,
180
+ columnSort: true,
181
+ columnResize: true
182
+ }
175
183
  }), /*#__PURE__*/_react["default"].createElement(_ResourceFooter["default"], {
176
184
  resource: resource
177
185
  }), filtersOpen && /*#__PURE__*/_react["default"].createElement(_ResourceFilter["default"], {
@@ -183,14 +191,14 @@ var FilteredResourceBody = function FilteredResourceBody(_ref) {
183
191
  })) : /*#__PURE__*/_react["default"].createElement(_designSystem.Spinner, null), dataset.identifier && /*#__PURE__*/_react["default"].createElement("div", {
184
192
  ref: apiDocs
185
193
  }, /*#__PURE__*/_react["default"].createElement("h2", null, "Try the API"), /*#__PURE__*/_react["default"].createElement(_swaggerUiReact["default"], {
186
- url: "".concat(process.env.REACT_APP_ROOT_URL, "/metastore/schemas/dataset/items/").concat(dataset.identifier, "/docs").concat(additionalParams && additionalParams.ACA ? '?ACA=' + additionalParams.ACA + '&redirect=false' : ''),
187
- docExpansion: 'list',
194
+ url: "".concat(process.env.REACT_APP_ROOT_URL, "/metastore/schemas/dataset/items/").concat(dataset.identifier, "/docs").concat(additionalParams && additionalParams.ACA ? "?ACA=" + additionalParams.ACA + "&redirect=false" : ""),
195
+ docExpansion: "list",
188
196
  defaultModelsExpandDepth: -1
189
197
  }))));
190
198
  };
191
199
 
192
200
  FilteredResourceBody.defaultProps = {
193
- apiDocPage: '/api'
201
+ apiDocPage: "/api"
194
202
  };
195
203
  var _default = FilteredResourceBody;
196
204
  exports["default"] = _default;
@@ -30,7 +30,8 @@ var FilteredResource = function FilteredResource(_ref) {
30
30
  apiDocPage = _ref.apiDocPage,
31
31
  additionalParams = _ref.additionalParams,
32
32
  customColumns = _ref.customColumns,
33
- setDatasetTitle = _ref.setDatasetTitle;
33
+ setDatasetTitle = _ref.setDatasetTitle,
34
+ columnSettings = _ref.columnSettings;
34
35
 
35
36
  var _useState = (0, _react.useState)(false),
36
37
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -81,7 +82,8 @@ var FilteredResource = function FilteredResource(_ref) {
81
82
  location: location,
82
83
  apiDocPage: apiDocPage,
83
84
  additionalParams: additionalParams,
84
- customColumns: customColumns ? customColumns : []
85
+ customColumns: customColumns ? customColumns : [],
86
+ columnSettings: columnSettings
85
87
  })));
86
88
  };
87
89
 
@@ -70,7 +70,7 @@ var MobileHeader = function MobileHeader(_ref) {
70
70
 
71
71
  function handleClick(event) {
72
72
  // Links are wrapped in spans, this checks if the parent is an A, also check if in the search modal.
73
- if (event.target.parentElement.nodeName === 'A' || event.target.closest('.dc-c-search-dialog')) {
73
+ if (event.target.parentElement.nodeName === "A" || event.target.closest(".dc-c-search-dialog")) {
74
74
  setMenuOpen(false);
75
75
  }
76
76
  }
@@ -95,10 +95,10 @@ var MobileHeader = function MobileHeader(_ref) {
95
95
  };
96
96
  }, [menu.current, menuOpen]);
97
97
  return /*#__PURE__*/_react["default"].createElement("header", {
98
- className: "dc-c-header dc-c-mobile-header ".concat(menuOpen ? 'menu-open' : ''),
98
+ className: "dc-c-header dc-c-mobile-header ".concat(menuOpen ? "menu-open" : ""),
99
99
  "aria-label": "Site header"
100
100
  }, includeTopNav && /*#__PURE__*/_react["default"].createElement("div", {
101
- className: "dc-c-cmsheader ds-u-display--flex ds-u-padding-x--1 ds-u-align-items--center ".concat(mobile ? 'ds-u-justify-content--center' : 'ds-u-justify-content--between')
101
+ className: "dc-c-cmsheader ds-u-display--flex ds-u-padding-x--1 ds-u-align-items--center ".concat(mobile ? "ds-u-justify-content--center" : "ds-u-justify-content--between")
102
102
  }, /*#__PURE__*/_react["default"].createElement("div", {
103
103
  className: "cms-link-container"
104
104
  }, /*#__PURE__*/_react["default"].createElement("a", {
@@ -161,7 +161,6 @@ var MobileHeader = function MobileHeader(_ref) {
161
161
  }, customSearch ? customSearch : /*#__PURE__*/_react["default"].createElement(_SearchModal["default"], {
162
162
  searchFunc: function searchFunc(e) {
163
163
  e.preventDefault();
164
- console.log(e.target.value);
165
164
  },
166
165
  searchModalText: searchModalText,
167
166
  buttonSize: "small"
@@ -178,18 +177,18 @@ var MobileHeader = function MobileHeader(_ref) {
178
177
  links: links.topnav,
179
178
  menuName: "CMS Main Header",
180
179
  menuId: "cms-mobile-header",
181
- linkClasses: "ds-u-margin-left--1 ds-u-padding-bottom--2",
180
+ linkClasses: "ds-u-margin-left--1 ds-u-margin-bottom--2",
182
181
  menuClasses: "dc-c-header--links ds-u-font-size--small"
183
182
  }))));
184
183
  };
185
184
 
186
185
  MobileHeader.defaultProps = {
187
186
  org: {
188
- tagline: 'The Centers for Medicare and Medicaid Services',
189
- url: 'https://cms.gov',
190
- urlTitle: 'CMS.gov Centers for Medicare &amp; Medicaid Services',
187
+ tagline: "The Centers for Medicare and Medicaid Services",
188
+ url: "https://cms.gov",
189
+ urlTitle: "CMS.gov Centers for Medicare &amp; Medicaid Services",
191
190
  logo: _CMSGovLogoO["default"],
192
- logoAltText: 'CMS.gov Centers for Medicare &amp; Medicaid Services',
191
+ logoAltText: "CMS.gov Centers for Medicare &amp; Medicaid Services",
193
192
  inverseLogo: _CMSgov2xWhiteO["default"]
194
193
  },
195
194
  includeTopNav: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@civicactions/cmsds-open-data-components",
3
- "version": "1.5.0",
3
+ "version": "1.6.0-alpha.1",
4
4
  "description": "Components for the open data catalog frontend using CMS Design System",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {