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 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
- var _useState3 = (0, _react.useState)(activeFilters),
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("p", null, introSection), allFilters && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
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
- }, activeFilters && /*#__PURE__*/_react["default"].createElement("button", {
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")))), (activeFilterChips === null || activeFilterChips === void 0 ? void 0 : activeFilterChips.length) > 0 && /*#__PURE__*/_react["default"].createElement("div", {
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)(activeFilterChips, removeActiveFilterHandler))));
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 _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
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 = _interopRequireDefault(require("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.id);
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
- return /*#__PURE__*/_react["default"].createElement("div", {
27
- key: i,
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
- "aria-label": option === null || option === void 0 ? void 0 : option.name
62
- }, /*#__PURE__*/_react["default"].createElement(_terraOne.Checkbox, Object.assign({}, optionAttributes, {
63
- checked: true,
64
- handleChange: function handleChange(e) {
65
- return filterOptionClickHandler(e, option === null || option === void 0 ? void 0 : option.id);
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.authenticated) && /*#__PURE__*/_react["default"].createElement(_WaffleMenu["default"], {
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(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", {
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
- })))), /*#__PURE__*/_react["default"].createElement("div", {
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.587",
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.194"
52
+ "terra-one": "^3.0.196"
53
53
  },
54
54
  "scripts": {
55
55
  "start": "start-storybook -p 9009 -s public",