luna-one 3.1.587 → 3.1.589
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +7 -0
- package/dist/luna/components/FilterSection/FilterSection.js +8 -12
- package/dist/luna/components/FilterSection/FilterSection.scss +7 -4
- package/dist/luna/components/FilterSection/FilterSectionMethods.js +48 -42
- package/dist/luna/components/ResourceGrid/ResourceGrid.js +127 -0
- package/dist/luna/components/ResourceGrid/ResourceGrid.scss +35 -0
- package/dist/luna/components/ResourceGrid/ResourceGridMethods.js +104 -0
- package/dist/luna/other-organisms/NavBar/NavBar.js +5 -5
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -328,6 +328,12 @@ Object.defineProperty(exports, "PullQuote", {
|
|
|
328
328
|
return _PullQuote["default"];
|
|
329
329
|
}
|
|
330
330
|
});
|
|
331
|
+
Object.defineProperty(exports, "ResourceGrid", {
|
|
332
|
+
enumerable: true,
|
|
333
|
+
get: function get() {
|
|
334
|
+
return _ResourceGrid["default"];
|
|
335
|
+
}
|
|
336
|
+
});
|
|
331
337
|
Object.defineProperty(exports, "ScrollInPlace", {
|
|
332
338
|
enumerable: true,
|
|
333
339
|
get: function get() {
|
|
@@ -587,6 +593,7 @@ var _Accordion = _interopRequireDefault(require("./luna/featurettes/Accordion/Ac
|
|
|
587
593
|
var _x = _interopRequireDefault(require("./luna/components/2x2/2x2"));
|
|
588
594
|
var _LinkList = _interopRequireDefault(require("./luna/components/LinkList/LinkList"));
|
|
589
595
|
var _DataPoint = _interopRequireDefault(require("./luna/components/DataPoint/DataPoint"));
|
|
596
|
+
var _ResourceGrid = _interopRequireDefault(require("./luna/components/ResourceGrid/ResourceGrid"));
|
|
590
597
|
var _FullBackgroundHero = _interopRequireDefault(require("./luna/heroes/FullBackgroundHero/FullBackgroundHero"));
|
|
591
598
|
var _InPageJumpNav = _interopRequireDefault(require("./luna/components/InPageJumpNav/InPageJumpNav"));
|
|
592
599
|
var _HTMLEmbed = _interopRequireDefault(require("./luna/components/HTMLEmbed/HTMLEmbed"));
|
|
@@ -28,10 +28,7 @@ var FilterSection = function FilterSection(_ref) {
|
|
|
28
28
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
29
29
|
openFilterDropdown = _useState2[0],
|
|
30
30
|
setOpenFilterDropdown = _useState2[1]; // controls which filter dropdown is open
|
|
31
|
-
|
|
32
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
33
|
-
activeFilterChips = _useState4[0],
|
|
34
|
-
setActiveFilterChips = _useState4[1];
|
|
31
|
+
|
|
35
32
|
var filterDropdownClickHandler = function filterDropdownClickHandler(e, filter) {
|
|
36
33
|
var _e$target;
|
|
37
34
|
if (!(e !== null && e !== void 0 && (_e$target = e.target) !== null && _e$target !== void 0 && _e$target.classList.contains('ter-checkbox__label')) && openFilterDropdown === filter) {
|
|
@@ -59,27 +56,26 @@ var FilterSection = function FilterSection(_ref) {
|
|
|
59
56
|
query = ((_document = document) === null || _document === void 0 ? void 0 : _document.querySelectorAll(".ter-filter-section__filter-placeholder").length) > 0;
|
|
60
57
|
}
|
|
61
58
|
(0, _useClickListener["default"])(handleCloseDropdown, query);
|
|
62
|
-
(0, _react.useEffect)(function () {
|
|
63
|
-
setActiveFilterChips(activeFilters);
|
|
64
|
-
}, [activeFilters]);
|
|
65
59
|
return /*#__PURE__*/_react["default"].createElement("section", {
|
|
66
60
|
className: "ter-filter-section"
|
|
67
|
-
}, introSection && /*#__PURE__*/_react["default"].createElement("
|
|
61
|
+
}, introSection && /*#__PURE__*/_react["default"].createElement("div", {
|
|
62
|
+
className: "ter-filter-section__intro"
|
|
63
|
+
}, introSection), (allFilters === null || allFilters === void 0 ? void 0 : allFilters.length) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
68
64
|
className: "ter-filter-section__title"
|
|
69
65
|
}, /*#__PURE__*/_react["default"].createElement("h4", null, filtersTitle)), /*#__PURE__*/_react["default"].createElement("div", {
|
|
70
66
|
className: "ter-filter-section__outer "
|
|
71
67
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
72
68
|
className: "ter-filter-section__filters"
|
|
73
|
-
}, (0, _FilterSectionMethods.renderFiltersSection)(allFilters, filterDropdownClickHandler, filterOptionClickHandler, openFilterDropdown, activeFilters), /*#__PURE__*/_react["default"].createElement("div", {
|
|
69
|
+
}, (0, _FilterSectionMethods.renderFiltersSection)(allFilters, filterDropdownClickHandler, filterOptionClickHandler, openFilterDropdown, activeFilters), (activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.length) > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
74
70
|
className: "ter-filter-section__clear"
|
|
75
|
-
},
|
|
71
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
76
72
|
className: "ter-filter-section__clear-button",
|
|
77
73
|
onClick: function onClick(e) {
|
|
78
74
|
return clearAllFiltersHandler(e);
|
|
79
75
|
}
|
|
80
|
-
}, "Clear all filters")))), (
|
|
76
|
+
}, "Clear all filters")))), (activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.length) > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
81
77
|
className: "ter-filter-section__chips"
|
|
82
|
-
}, (0, _FilterSectionMethods.renderActiveFilters)(
|
|
78
|
+
}, (0, _FilterSectionMethods.renderActiveFilters)(activeFilters, removeActiveFilterHandler))));
|
|
83
79
|
};
|
|
84
80
|
var _default = FilterSection;
|
|
85
81
|
exports["default"] = _default;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
@import "../../../global-styles/terra.scss";
|
|
2
2
|
|
|
3
3
|
.ter-filter-section {
|
|
4
|
+
&__intro {
|
|
5
|
+
max-width: 650px;
|
|
6
|
+
margin-bottom: 48px;
|
|
7
|
+
}
|
|
4
8
|
&__title {
|
|
5
9
|
font-size: $body-font-size;
|
|
6
10
|
text-transform: uppercase;
|
|
@@ -31,10 +35,12 @@
|
|
|
31
35
|
}
|
|
32
36
|
}
|
|
33
37
|
&-wrapper {
|
|
34
|
-
max-width: 220px;
|
|
35
38
|
width: 100%;
|
|
36
39
|
position: relative;
|
|
37
40
|
margin-bottom: 15px;
|
|
41
|
+
@media screen and (min-width: $breakpoint-xs) {
|
|
42
|
+
max-width: 220px;
|
|
43
|
+
}
|
|
38
44
|
}
|
|
39
45
|
&-title {
|
|
40
46
|
font-weight: 500;
|
|
@@ -119,9 +125,6 @@
|
|
|
119
125
|
}
|
|
120
126
|
}
|
|
121
127
|
}
|
|
122
|
-
&__filter-wrapper:last-of-type {
|
|
123
|
-
margin-right: 24px;
|
|
124
|
-
}
|
|
125
128
|
&__chevron {
|
|
126
129
|
margin-right: 24px;
|
|
127
130
|
&--open {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.renderFiltersSection = exports.renderActiveFilters = void 0;
|
|
8
|
-
var _react =
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _terraOne = require("terra-one");
|
|
10
10
|
var renderActiveFilters = function renderActiveFilters(activeFilters, removeActiveFilterHandler) {
|
|
11
11
|
return activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.map(function (filter, i) {
|
|
@@ -13,7 +13,7 @@ var renderActiveFilters = function renderActiveFilters(activeFilters, removeActi
|
|
|
13
13
|
key: i,
|
|
14
14
|
isSelected: false,
|
|
15
15
|
removeChipClickHandler: function removeChipClickHandler(e) {
|
|
16
|
-
return removeActiveFilterHandler(e, filter
|
|
16
|
+
return removeActiveFilterHandler(e, filter);
|
|
17
17
|
},
|
|
18
18
|
label: filter === null || filter === void 0 ? void 0 : filter.name
|
|
19
19
|
});
|
|
@@ -21,51 +21,57 @@ var renderActiveFilters = function renderActiveFilters(activeFilters, removeActi
|
|
|
21
21
|
};
|
|
22
22
|
exports.renderActiveFilters = renderActiveFilters;
|
|
23
23
|
var renderFiltersSection = function renderFiltersSection(allFilters, filterDropdownClickHandler, filterOptionClickHandler, openFilterDropdown, activeFilters) {
|
|
24
|
+
var filterIsChecked = function filterIsChecked(activeFilters, option) {
|
|
25
|
+
return activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.some(function (filter) {
|
|
26
|
+
return (filter === null || filter === void 0 ? void 0 : filter.id) === (option === null || option === void 0 ? void 0 : option.id);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
24
29
|
return allFilters === null || allFilters === void 0 ? void 0 : allFilters.map(function (filter, i) {
|
|
25
30
|
var _filter$options;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
className: "ter-filter-section__filter-wrapper"
|
|
29
|
-
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
30
|
-
className: "ter-filter-section__filter-title"
|
|
31
|
-
}, filter === null || filter === void 0 ? void 0 : filter.name), /*#__PURE__*/_react["default"].createElement("div", {
|
|
32
|
-
className: "ter-filter-section__filter-placeholder",
|
|
33
|
-
onClick: function onClick(e) {
|
|
34
|
-
return filterDropdownClickHandler(e, filter === null || filter === void 0 ? void 0 : filter.id);
|
|
35
|
-
}
|
|
36
|
-
}, /*#__PURE__*/_react["default"].createElement("svg", {
|
|
37
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
38
|
-
width: "16",
|
|
39
|
-
height: "11",
|
|
40
|
-
fill: "currentColor",
|
|
41
|
-
className: "ter-filter-section__chevron ".concat(openFilterDropdown === (filter === null || filter === void 0 ? void 0 : filter.id) ? 'ter-filter-section__chevron--open' : '')
|
|
42
|
-
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
43
|
-
fill: "currentColor",
|
|
44
|
-
d: "M1.88.453 8 6.56 14.12.453 16 2.333l-8 8-8-8L1.88.453Z"
|
|
45
|
-
})), /*#__PURE__*/_react["default"].createElement("span", null, "Select")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
46
|
-
className: "ter-filter-section__filter-list ".concat(openFilterDropdown === (filter === null || filter === void 0 ? void 0 : filter.id) ? 'ter-filter-section__filter-list--open' : '')
|
|
47
|
-
}, filter === null || filter === void 0 ? void 0 : (_filter$options = filter.options) === null || _filter$options === void 0 ? void 0 : _filter$options.map(function (option, i) {
|
|
48
|
-
var isChecked = activeFilters.some(function (filter) {
|
|
49
|
-
return (filter === null || filter === void 0 ? void 0 : filter.id) === (option === null || option === void 0 ? void 0 : option.id);
|
|
50
|
-
});
|
|
51
|
-
var optionAttributes = {
|
|
52
|
-
label: option === null || option === void 0 ? void 0 : option.name,
|
|
53
|
-
name: option === null || option === void 0 ? void 0 : option.name,
|
|
54
|
-
inputClass: "ter-filter-section__filter-checkbox",
|
|
55
|
-
labelClass: "ter-filter-section__filter-label",
|
|
56
|
-
overrideChecked: isChecked
|
|
57
|
-
};
|
|
31
|
+
if ((filter === null || filter === void 0 ? void 0 : (_filter$options = filter.options) === null || _filter$options === void 0 ? void 0 : _filter$options.length) > 0) {
|
|
32
|
+
var _filter$options2;
|
|
58
33
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
59
|
-
className: "ter-filter-section__filter-option",
|
|
60
34
|
key: i,
|
|
61
|
-
"
|
|
62
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
35
|
+
className: "ter-filter-section__filter-wrapper"
|
|
36
|
+
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
37
|
+
className: "ter-filter-section__filter-title"
|
|
38
|
+
}, filter === null || filter === void 0 ? void 0 : filter.name), /*#__PURE__*/_react["default"].createElement("div", {
|
|
39
|
+
className: "ter-filter-section__filter-placeholder",
|
|
40
|
+
onClick: function onClick(e) {
|
|
41
|
+
return filterDropdownClickHandler(e, filter === null || filter === void 0 ? void 0 : filter.id);
|
|
66
42
|
}
|
|
43
|
+
}, /*#__PURE__*/_react["default"].createElement("svg", {
|
|
44
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
45
|
+
width: "16",
|
|
46
|
+
height: "11",
|
|
47
|
+
fill: "currentColor",
|
|
48
|
+
className: "ter-filter-section__chevron ".concat(openFilterDropdown === (filter === null || filter === void 0 ? void 0 : filter.id) ? 'ter-filter-section__chevron--open' : '')
|
|
49
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
50
|
+
fill: "currentColor",
|
|
51
|
+
d: "M1.88.453 8 6.56 14.12.453 16 2.333l-8 8-8-8L1.88.453Z"
|
|
52
|
+
})), /*#__PURE__*/_react["default"].createElement("span", null, "Select")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
53
|
+
className: "ter-filter-section__filter-list ".concat(openFilterDropdown === (filter === null || filter === void 0 ? void 0 : filter.id) ? 'ter-filter-section__filter-list--open' : '')
|
|
54
|
+
}, filter === null || filter === void 0 ? void 0 : (_filter$options2 = filter.options) === null || _filter$options2 === void 0 ? void 0 : _filter$options2.map(function (option, i) {
|
|
55
|
+
var optionAttributes = {
|
|
56
|
+
label: option === null || option === void 0 ? void 0 : option.name,
|
|
57
|
+
name: option === null || option === void 0 ? void 0 : option.name,
|
|
58
|
+
inputClass: "ter-filter-section__filter-checkbox",
|
|
59
|
+
labelClass: "ter-filter-section__filter-label",
|
|
60
|
+
overrideChecked: filterIsChecked(activeFilters, option)
|
|
61
|
+
};
|
|
62
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
63
|
+
className: "ter-filter-section__filter-option",
|
|
64
|
+
key: i,
|
|
65
|
+
"aria-label": option === null || option === void 0 ? void 0 : option.name
|
|
66
|
+
}, /*#__PURE__*/_react["default"].createElement(_terraOne.Checkbox, Object.assign({}, optionAttributes, {
|
|
67
|
+
handleChange: function handleChange(e) {
|
|
68
|
+
return filterOptionClickHandler(e, option);
|
|
69
|
+
}
|
|
70
|
+
})));
|
|
67
71
|
})));
|
|
68
|
-
}
|
|
72
|
+
} else {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
69
75
|
});
|
|
70
76
|
};
|
|
71
77
|
exports.renderFiltersSection = renderFiltersSection;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
require("./ResourceGrid.scss");
|
|
13
|
+
var _ResourceGridMethods = require("./ResourceGridMethods");
|
|
14
|
+
var _FilterSection = _interopRequireDefault(require("../FilterSection/FilterSection"));
|
|
15
|
+
var ResourceGrid = function ResourceGrid(_ref) {
|
|
16
|
+
var content = _ref.content;
|
|
17
|
+
var cards = content.cards,
|
|
18
|
+
allFilters = content.allFilters,
|
|
19
|
+
filtersTitle = content.filtersTitle,
|
|
20
|
+
introSection = content.introSection;
|
|
21
|
+
|
|
22
|
+
// max number of cards per page
|
|
23
|
+
var cardsPerPage = 9;
|
|
24
|
+
var _useState = (0, _react.useState)(cardsPerPage),
|
|
25
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
26
|
+
numCardsVisible = _useState2[0],
|
|
27
|
+
setNumCardsVisible = _useState2[1];
|
|
28
|
+
|
|
29
|
+
// array of currently applied filters + reducer functions for filter operations
|
|
30
|
+
var _useReducer = (0, _react.useReducer)(activeFilterReducer, [], createInitialState),
|
|
31
|
+
_useReducer2 = (0, _slicedToArray2["default"])(_useReducer, 2),
|
|
32
|
+
activeFilters = _useReducer2[0],
|
|
33
|
+
setActiveFiltersDispatch = _useReducer2[1];
|
|
34
|
+
|
|
35
|
+
// filtered and paginated cards
|
|
36
|
+
var _useState3 = (0, _react.useState)(cards),
|
|
37
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
38
|
+
paginatedCards = _useState4[0],
|
|
39
|
+
setPaginatedCards = _useState4[1];
|
|
40
|
+
var _useState5 = (0, _react.useState)(true),
|
|
41
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
42
|
+
displayLoadMoreButton = _useState6[0],
|
|
43
|
+
setDisplayLoadMoreButton = _useState6[1];
|
|
44
|
+
|
|
45
|
+
// set initial state for filter list to empty array, so no filtering happens by default
|
|
46
|
+
function createInitialState() {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
(0, _react.useEffect)(function () {
|
|
50
|
+
var resourceCards = (0, _ResourceGridMethods.filterResourceCards)(cards, activeFilters);
|
|
51
|
+
if ((resourceCards === null || resourceCards === void 0 ? void 0 : resourceCards.length) > numCardsVisible) {
|
|
52
|
+
setPaginatedCards(resourceCards === null || resourceCards === void 0 ? void 0 : resourceCards.slice(0, numCardsVisible));
|
|
53
|
+
// if more than 9 cards are returned, paginate them to 9
|
|
54
|
+
setDisplayLoadMoreButton(true);
|
|
55
|
+
} else {
|
|
56
|
+
setPaginatedCards(resourceCards);
|
|
57
|
+
setDisplayLoadMoreButton(false);
|
|
58
|
+
}
|
|
59
|
+
}, [activeFilters, numCardsVisible]);
|
|
60
|
+
(0, _react.useEffect)(function () {
|
|
61
|
+
// each time filters change, re-paginate the cards a maximum of 9
|
|
62
|
+
setNumCardsVisible(9);
|
|
63
|
+
}, [activeFilters]);
|
|
64
|
+
function activeFilterReducer(state, action) {
|
|
65
|
+
if (action.type === 'add_filter') {
|
|
66
|
+
// if there's current filters, merge new filter into state array
|
|
67
|
+
if (state != undefined) {
|
|
68
|
+
return [].concat((0, _toConsumableArray2["default"])(state), [action.filter]);
|
|
69
|
+
}
|
|
70
|
+
// otherwise set the first filter
|
|
71
|
+
return [action.filter];
|
|
72
|
+
} else if (action.type === 'remove_filter') {
|
|
73
|
+
// filter out clicked filter from activeFilters array
|
|
74
|
+
return (0, _toConsumableArray2["default"])(state.filter(function (filter) {
|
|
75
|
+
return filter.id != action.filter.id;
|
|
76
|
+
}));
|
|
77
|
+
} else if (action.type === 'clear_filters') {
|
|
78
|
+
// override state array with blank array (default value)
|
|
79
|
+
return createInitialState();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
var loadMoreCards = function loadMoreCards(e) {
|
|
83
|
+
// adds another 9 cards to the list
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
setNumCardsVisible(numCardsVisible + cardsPerPage);
|
|
86
|
+
};
|
|
87
|
+
var filterOptionClickHandler = function filterOptionClickHandler(e, filter) {
|
|
88
|
+
if (activeFilters !== null && activeFilters !== void 0 && activeFilters.includes(filter)) {
|
|
89
|
+
removeActiveFilterHandler(e, filter);
|
|
90
|
+
} else {
|
|
91
|
+
setActiveFiltersDispatch({
|
|
92
|
+
activeFilters: activeFilters,
|
|
93
|
+
type: 'add_filter',
|
|
94
|
+
filter: filter
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
var removeActiveFilterHandler = function removeActiveFilterHandler(e, filter) {
|
|
99
|
+
setActiveFiltersDispatch({
|
|
100
|
+
activeFilters: activeFilters,
|
|
101
|
+
type: 'remove_filter',
|
|
102
|
+
filter: filter
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
var clearAllFiltersHandler = function clearAllFiltersHandler() {
|
|
106
|
+
setActiveFiltersDispatch({
|
|
107
|
+
activeFilters: activeFilters,
|
|
108
|
+
type: 'clear_filters'
|
|
109
|
+
});
|
|
110
|
+
setNumCardsVisible(9);
|
|
111
|
+
};
|
|
112
|
+
return /*#__PURE__*/_react["default"].createElement("section", {
|
|
113
|
+
className: "luna-resource-grid--wrapper"
|
|
114
|
+
}, /*#__PURE__*/_react["default"].createElement(_FilterSection["default"], {
|
|
115
|
+
content: {
|
|
116
|
+
introSection: introSection,
|
|
117
|
+
allFilters: allFilters,
|
|
118
|
+
filtersTitle: filtersTitle,
|
|
119
|
+
filterOptionClickHandler: filterOptionClickHandler,
|
|
120
|
+
activeFilters: activeFilters,
|
|
121
|
+
clearAllFiltersHandler: clearAllFiltersHandler,
|
|
122
|
+
removeActiveFilterHandler: removeActiveFilterHandler
|
|
123
|
+
}
|
|
124
|
+
}), (0, _ResourceGridMethods.renderResourceGrid)(paginatedCards), (0, _ResourceGridMethods.renderLoadMoreSection)(loadMoreCards, displayLoadMoreButton));
|
|
125
|
+
};
|
|
126
|
+
var _default = ResourceGrid;
|
|
127
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
@import "../../../global-styles/terra.scss";
|
|
2
|
+
.luna-resource-grid {
|
|
3
|
+
display: grid;
|
|
4
|
+
grid-template-columns: 1fr;
|
|
5
|
+
row-gap: 45px;
|
|
6
|
+
grid-gap: 32px;
|
|
7
|
+
padding: 80px 0;
|
|
8
|
+
justify-items: center;
|
|
9
|
+
|
|
10
|
+
@media screen and (max-width: $breakpoint-md) {
|
|
11
|
+
padding: 40px 0 ;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.ter-bounded-card {
|
|
15
|
+
width: 100%;
|
|
16
|
+
max-width: 350px;
|
|
17
|
+
&__header {
|
|
18
|
+
flex: 1;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&__load-more {
|
|
23
|
+
display: flex;
|
|
24
|
+
justify-content: center;
|
|
25
|
+
padding-bottom: 80px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@media screen and (min-width: $breakpoint-xs){
|
|
29
|
+
grid-template-columns: repeat(2, 1fr);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@media screen and (min-width: $breakpoint-md){
|
|
33
|
+
grid-template-columns: repeat(3, 1fr);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.renderResourceGrid = exports.renderLoadMoreSection = exports.filterResourceCards = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _terraOne = require("terra-one");
|
|
11
|
+
// Images Sizes here are the same when used in Bounded Cards to preserve the 3:2 image ratio
|
|
12
|
+
var resourceGridImageSizes = {
|
|
13
|
+
desktop: {
|
|
14
|
+
width: 272,
|
|
15
|
+
height: 181,
|
|
16
|
+
ratio: {
|
|
17
|
+
width: 3,
|
|
18
|
+
height: 2
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
tablet: {
|
|
22
|
+
width: 272,
|
|
23
|
+
height: 181,
|
|
24
|
+
ratio: {
|
|
25
|
+
width: 3,
|
|
26
|
+
height: 2
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
mobile: {
|
|
30
|
+
width: 525,
|
|
31
|
+
height: 350,
|
|
32
|
+
ratio: {
|
|
33
|
+
width: 3,
|
|
34
|
+
height: 2
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var renderLoadMoreSection = function renderLoadMoreSection(loadMoreCards, displayLoadMoreButton) {
|
|
39
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
40
|
+
className: "luna-resource-grid__load-more"
|
|
41
|
+
}, displayLoadMoreButton && /*#__PURE__*/_react["default"].createElement(_terraOne.Button, {
|
|
42
|
+
key: "button-load-more",
|
|
43
|
+
onClick: function onClick(e) {
|
|
44
|
+
return loadMoreCards(e);
|
|
45
|
+
}
|
|
46
|
+
}, "Load more"));
|
|
47
|
+
};
|
|
48
|
+
exports.renderLoadMoreSection = renderLoadMoreSection;
|
|
49
|
+
var renderResourceGrid = function renderResourceGrid(resourceCards) {
|
|
50
|
+
if (resourceCards && (resourceCards === null || resourceCards === void 0 ? void 0 : resourceCards.length) > 0) {
|
|
51
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
52
|
+
className: "luna-resource-grid"
|
|
53
|
+
}, resourceCards.map(function (resourceCard, index) {
|
|
54
|
+
var ResourceCardContent = {
|
|
55
|
+
image: resourceCard === null || resourceCard === void 0 ? void 0 : resourceCard.image,
|
|
56
|
+
eyebrow: resourceCard === null || resourceCard === void 0 ? void 0 : resourceCard.eyebrow,
|
|
57
|
+
header: resourceCard === null || resourceCard === void 0 ? void 0 : resourceCard.header,
|
|
58
|
+
cardLink: resourceCard === null || resourceCard === void 0 ? void 0 : resourceCard.cardLink,
|
|
59
|
+
imageSizes: resourceGridImageSizes
|
|
60
|
+
};
|
|
61
|
+
return /*#__PURE__*/_react["default"].createElement(_terraOne.BoundedCard, {
|
|
62
|
+
key: index,
|
|
63
|
+
content: ResourceCardContent
|
|
64
|
+
});
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
exports.renderResourceGrid = renderResourceGrid;
|
|
69
|
+
var filterResourceCards = function filterResourceCards(cards, activeFilters) {
|
|
70
|
+
if (!cards || (cards === null || cards === void 0 ? void 0 : cards.length) === 0) {
|
|
71
|
+
// if no cards, don't render anything
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
if (activeFilters.length < 1 || activeFilters === null) {
|
|
75
|
+
// if no filters are set, just return all cards (default view)
|
|
76
|
+
return cards;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// create shallow array of filter values for comparison
|
|
80
|
+
var activeCardFilters = (0, _toConsumableArray2["default"])(activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.map(function (filter) {
|
|
81
|
+
return filter === null || filter === void 0 ? void 0 : filter.value;
|
|
82
|
+
}));
|
|
83
|
+
var matchingCards = [];
|
|
84
|
+
cards === null || cards === void 0 ? void 0 : cards.map(function (card) {
|
|
85
|
+
var _card$cardTags;
|
|
86
|
+
// create shallow array of card tag values for comparison
|
|
87
|
+
var cardTagValues = card === null || card === void 0 ? void 0 : (_card$cardTags = card.cardTags) === null || _card$cardTags === void 0 ? void 0 : _card$cardTags.map(function (tag) {
|
|
88
|
+
return tag === null || tag === void 0 ? void 0 : tag.value;
|
|
89
|
+
});
|
|
90
|
+
var matchesAllTags = activeCardFilters === null || activeCardFilters === void 0 ? void 0 : activeCardFilters.every(function (filter) {
|
|
91
|
+
// check if a card has all matching tags
|
|
92
|
+
if (cardTagValues !== null && cardTagValues !== void 0 && cardTagValues.includes(filter)) {
|
|
93
|
+
return true;
|
|
94
|
+
} else {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
if (matchesAllTags === true) {
|
|
99
|
+
matchingCards === null || matchingCards === void 0 ? void 0 : matchingCards.push(card);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
return matchingCards;
|
|
103
|
+
};
|
|
104
|
+
exports.filterResourceCards = filterResourceCards;
|
|
@@ -414,13 +414,13 @@ var NavBar = function NavBar(props) {
|
|
|
414
414
|
globalSearch: globalSearch,
|
|
415
415
|
setGlobalSearch: setGlobalSearch,
|
|
416
416
|
waffleMenu: true
|
|
417
|
-
}, (sectorFlyoutData === null || sectorFlyoutData === void 0 ? void 0 : sectorFlyoutData.
|
|
417
|
+
}, (sectorFlyoutData === null || sectorFlyoutData === void 0 ? void 0 : sectorFlyoutData.login) && /*#__PURE__*/_react["default"].createElement("span", {
|
|
418
|
+
className: "ter-navbar-top__pipe"
|
|
419
|
+
}, "|"), (sectorFlyoutData === null || sectorFlyoutData === void 0 ? void 0 : sectorFlyoutData.authenticated) && /*#__PURE__*/_react["default"].createElement(_WaffleMenu["default"], {
|
|
418
420
|
links: waffleMenu === null || waffleMenu === void 0 ? void 0 : waffleMenu.links,
|
|
419
421
|
cta: waffleMenu === null || waffleMenu === void 0 ? void 0 : waffleMenu.cta,
|
|
420
422
|
Link: Link
|
|
421
|
-
}), (sectorFlyoutData === null || sectorFlyoutData === void 0 ? void 0 : sectorFlyoutData.login) && /*#__PURE__*/_react["default"].createElement(
|
|
422
|
-
className: "ter-navbar-top__pipe"
|
|
423
|
-
}, "|"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
423
|
+
}), (sectorFlyoutData === null || sectorFlyoutData === void 0 ? void 0 : sectorFlyoutData.login) && /*#__PURE__*/_react["default"].createElement("button", {
|
|
424
424
|
type: "button",
|
|
425
425
|
className: "ter-utility-nav__my-account",
|
|
426
426
|
onClick: function onClick() {
|
|
@@ -432,7 +432,7 @@ var NavBar = function NavBar(props) {
|
|
|
432
432
|
width: "21",
|
|
433
433
|
height: "21",
|
|
434
434
|
alt: ""
|
|
435
|
-
})))
|
|
435
|
+
}))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
436
436
|
className: "luna-layout__navigation-padding ".concat(menuBarTheme ? "luna-layout__navigation-padding--".concat(menuBarTheme) : "")
|
|
437
437
|
}, !disableMenus && /*#__PURE__*/_react["default"].createElement("div", {
|
|
438
438
|
className: "ter-navbar__wrapper \n ".concat(menuBarTheme ? "ter-navbar__wrapper--".concat(menuBarTheme) : "", "\n ").concat(displayIcons ? "ter-navbar__wrapper--with-icons" : "", "\n ").concat(displayIcons && menuBarTheme ? "ter-navbar__wrapper--with-icons--".concat(menuBarTheme) : "", "\n ")
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "luna-one",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.589",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"react": "^18.2.0",
|
|
6
6
|
"react-dom": "^18.2.0",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"react-player": "^2.11.2",
|
|
50
50
|
"react-scroll": "^1.8.9",
|
|
51
51
|
"smoothscroll-polyfill": "^0.4.4",
|
|
52
|
-
"terra-one": "^3.0.
|
|
52
|
+
"terra-one": "^3.0.196"
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
55
55
|
"start": "start-storybook -p 9009 -s public",
|