@nnc-digital/nnc-design-system 0.4.7 → 0.4.15
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/build/index.esm.js +36 -21
- package/build/index.esm.js.map +1 -1
- package/build/index.js +35 -20
- package/build/index.js.map +1 -1
- package/build/library/components/BinCollection/BinCollection.styles.d.ts +0 -3
- package/build/library/components/BinCollection/BinCollection.types.d.ts +2 -2
- package/package.json +1 -2
package/build/index.js
CHANGED
|
@@ -4052,12 +4052,9 @@ var ErrorTextWrapper = styled__default["default"].div(templateObject_5 || (templ
|
|
|
4052
4052
|
var DropDownSelectContainer = styled__default["default"].div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n padding-bottom: 20px;\n"], ["\n padding-bottom: 20px;\n"])));
|
|
4053
4053
|
var FormInnerContainer = styled__default["default"].div(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n justify-content: flex-start;\n"], ["\n display: flex;\n align-items: center;\n justify-content: flex-start;\n"])));
|
|
4054
4054
|
styled__default["default"].label(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n margin-right: ", ";\n"], ["\n display: flex;\n align-items: center;\n margin-right: ", ";\n"])), function (props) { return props.theme.theme_vars.spacingSizes.small; });
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
var
|
|
4058
|
-
var UPRNPageUPRNTitle = styled__default["default"].div(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n font-size: 1.5em;\n"], ["\n font-size: 1.5em;\n"])));
|
|
4059
|
-
styled__default["default"].input(templateObject_13 || (templateObject_13 = __makeTemplateObject([""], [""])));
|
|
4060
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13;
|
|
4055
|
+
styled__default["default"].div(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n display: flex;\n justify-content: left;\n margin-bottom: .5em;\n width: 100%;\n"], ["\n display: flex;\n justify-content: left;\n margin-bottom: .5em;\n width: 100%;\n"])));
|
|
4056
|
+
styled__default["default"].input(templateObject_10 || (templateObject_10 = __makeTemplateObject([""], [""])));
|
|
4057
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;
|
|
4061
4058
|
|
|
4062
4059
|
const Container$16 = styled__default["default"].div`
|
|
4063
4060
|
display: flex;
|
|
@@ -4323,14 +4320,16 @@ var Heading = function (_a) {
|
|
|
4323
4320
|
* Returns the Bin Collection Checker form component to conduct search by postcode.
|
|
4324
4321
|
*/
|
|
4325
4322
|
var BinCollection = function (_a) {
|
|
4326
|
-
var _b = _a.formError, formError = _b === void 0 ? false : _b, _c = _a.
|
|
4327
|
-
var BinCollectionApiUrl = "".concat(
|
|
4328
|
-
var CalendarEventsApiUrl = "".concat(
|
|
4323
|
+
var _b = _a.formError, formError = _b === void 0 ? false : _b, _c = _a.graphqlApiEndpoint, graphqlApiEndpoint = _c === void 0 ? process.env.NEXT_PUBLIC_DRUPAL_APP_API_BASE_URL : _c;
|
|
4324
|
+
var BinCollectionApiUrl = "".concat(graphqlApiEndpoint, "bin-collection-search/premiselist/");
|
|
4325
|
+
var CalendarEventsApiUrl = "".concat(graphqlApiEndpoint, "bin-collection-search/calendarevents/");
|
|
4329
4326
|
var themeContext = React.useContext(styled.ThemeContext);
|
|
4330
4327
|
var _d = React.useState(false), isLoading = _d[0], setIsLoading = _d[1];
|
|
4331
4328
|
var _e = React.useState(formError), isError = _e[0], setError = _e[1];
|
|
4332
4329
|
var _f = React.useState(''), errorText = _f[0], setErrorText = _f[1];
|
|
4333
4330
|
var _g = React.useState([]), addressOptions = _g[0], setAddressOptions = _g[1];
|
|
4331
|
+
var seenTitles = React.useRef(new Set());
|
|
4332
|
+
var _h = React.useState(false), noResultsFound = _h[0], setNoResultsFound = _h[1];
|
|
4334
4333
|
var handleSubmit = function (e) {
|
|
4335
4334
|
e.preventDefault();
|
|
4336
4335
|
var enteredPostcode = e.target.elements.postcode.value;
|
|
@@ -4399,7 +4398,7 @@ var BinCollection = function (_a) {
|
|
|
4399
4398
|
return acc;
|
|
4400
4399
|
}, {});
|
|
4401
4400
|
};
|
|
4402
|
-
var
|
|
4401
|
+
var _j = React.useState({}), calendarEvents = _j[0], setCalendarEvents = _j[1];
|
|
4403
4402
|
/**
|
|
4404
4403
|
* Returns an array of calendar events based on selected address for next 42 days.
|
|
4405
4404
|
*/
|
|
@@ -4412,6 +4411,12 @@ var BinCollection = function (_a) {
|
|
|
4412
4411
|
axios__default["default"].get("".concat(CalendarEventsApiUrl).concat(selectedUPRN, "/").concat(startDate, "/").concat(endDate))
|
|
4413
4412
|
.then(function (response) {
|
|
4414
4413
|
var groupedData = groupByTitle(response.data);
|
|
4414
|
+
if (Object.keys(groupedData).length === 0) {
|
|
4415
|
+
setNoResultsFound(true);
|
|
4416
|
+
}
|
|
4417
|
+
else {
|
|
4418
|
+
setNoResultsFound(false);
|
|
4419
|
+
}
|
|
4415
4420
|
setCalendarEvents(groupedData);
|
|
4416
4421
|
})
|
|
4417
4422
|
.catch(function (error) {
|
|
@@ -4424,13 +4429,15 @@ var BinCollection = function (_a) {
|
|
|
4424
4429
|
setCalendarEvents({});
|
|
4425
4430
|
setError(false);
|
|
4426
4431
|
setErrorText('');
|
|
4432
|
+
seenTitles.current.clear();
|
|
4433
|
+
setNoResultsFound(false);
|
|
4427
4434
|
};
|
|
4428
4435
|
var formatTitle = function (apiTitle) {
|
|
4429
4436
|
var mappings = [
|
|
4430
|
-
{ keyword: '
|
|
4431
|
-
{ keyword: '
|
|
4432
|
-
{ keyword: '
|
|
4433
|
-
{ keyword: '
|
|
4437
|
+
{ keyword: 'Refuse', replacement: 'General refuse bin' },
|
|
4438
|
+
{ keyword: 'Recycling', replacement: 'Recycling bin' },
|
|
4439
|
+
{ keyword: 'Garden', replacement: 'Garden bin' },
|
|
4440
|
+
{ keyword: 'Food', replacement: 'Food caddy' },
|
|
4434
4441
|
];
|
|
4435
4442
|
for (var _i = 0, mappings_1 = mappings; _i < mappings_1.length; _i++) {
|
|
4436
4443
|
var mapping = mappings_1[_i];
|
|
@@ -4438,12 +4445,15 @@ var BinCollection = function (_a) {
|
|
|
4438
4445
|
return mapping.replacement;
|
|
4439
4446
|
}
|
|
4440
4447
|
}
|
|
4441
|
-
return
|
|
4448
|
+
return null;
|
|
4442
4449
|
};
|
|
4450
|
+
React.useEffect(function () {
|
|
4451
|
+
seenTitles.current.clear();
|
|
4452
|
+
}, [calendarEvents]);
|
|
4443
4453
|
return (React__default["default"].createElement(Container$17, { "data-testid": "BinCollection" },
|
|
4444
4454
|
React__default["default"].createElement(FormWithLine, { onSubmit: handleSubmit, isError: isError, lineColour: themeContext.theme_vars.colours.grey_dark, hideLine: true },
|
|
4445
4455
|
React__default["default"].createElement(FormContainer$1, { isLoading: isLoading },
|
|
4446
|
-
React__default["default"].createElement(Heading, { level: 2, text: "Bin
|
|
4456
|
+
React__default["default"].createElement(Heading, { level: 2, text: "Bin collection checker" }),
|
|
4447
4457
|
React__default["default"].createElement(ErrorTextWrapper, null, errorText && React__default["default"].createElement(ErrorText$1, null, errorText)),
|
|
4448
4458
|
React__default["default"].createElement(FormInnerContainer, null,
|
|
4449
4459
|
React__default["default"].createElement(Input$6, { type: "text", placeholder: "Enter a postcode", name: "postcode", isErrored: isError, maxLength: 10 }),
|
|
@@ -4451,16 +4461,21 @@ var BinCollection = function (_a) {
|
|
|
4451
4461
|
React__default["default"].createElement(FormButton, { size: "large", type: "submit", "aria-label": "Submit", text: "Find" }))))),
|
|
4452
4462
|
addressOptions.length > 0 && (React__default["default"].createElement(DropDownSelectContainer, null,
|
|
4453
4463
|
React__default["default"].createElement(DropDownSelect, { onChange: handleAddressChange, id: "address", label: "Select your address", options: __spreadArray([{ title: 'Select an address', value: '' }], addressOptions, true) }))),
|
|
4464
|
+
noResultsFound && React__default["default"].createElement("p", null, "No results found."),
|
|
4454
4465
|
React__default["default"].createElement("div", null, Object.entries(calendarEvents).map(function (_a) {
|
|
4455
4466
|
var apiTitle = _a[0], dates = _a[1];
|
|
4456
4467
|
var title = formatTitle(apiTitle);
|
|
4468
|
+
// If we've seen this title before, or if title is null, we skip rendering it
|
|
4469
|
+
if (seenTitles.current.has(title) || title === null) {
|
|
4470
|
+
return null;
|
|
4471
|
+
}
|
|
4472
|
+
// Mark the title as seen
|
|
4473
|
+
seenTitles.current.add(title);
|
|
4457
4474
|
return (React__default["default"].createElement(React__default["default"].Fragment, { key: title },
|
|
4458
|
-
React__default["default"].createElement(
|
|
4459
|
-
React__default["default"].createElement(UPRNPageSectionTitle, null, title)),
|
|
4475
|
+
React__default["default"].createElement(Heading, { level: 3, text: title }),
|
|
4460
4476
|
dates
|
|
4461
4477
|
.sort(function (a, b) { return new Date(a).getTime() - new Date(b).getTime(); })
|
|
4462
|
-
.map(function (date) { return (React__default["default"].createElement(
|
|
4463
|
-
React__default["default"].createElement(UPRNPageUPRNTitle, null, date.toLocaleDateString('en-GB', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })))); })));
|
|
4478
|
+
.map(function (date) { return (React__default["default"].createElement("p", null, date.toLocaleDateString('en-GB', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }))); })));
|
|
4464
4479
|
})),
|
|
4465
4480
|
Object.keys(calendarEvents).length > 0 && (React__default["default"].createElement(FormButton, { size: "small", type: "button", "aria-label": "Reset", text: "Find a different address", onClick: resetForm }))));
|
|
4466
4481
|
};
|