@nnc-digital/nnc-design-system 0.4.6 → 0.4.14
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 +42 -25
- package/build/index.esm.js.map +1 -1
- package/build/index.js +41 -24
- package/build/index.js.map +1 -1
- package/build/library/components/BinCollection/BinCollection.styles.d.ts +1 -3
- package/build/library/components/BinCollection/BinCollection.types.d.ts +2 -2
- package/package.json +1 -2
package/build/index.js
CHANGED
|
@@ -4048,15 +4048,13 @@ var BinCollectionButtonStyles = styled__default["default"].div(templateObject_3
|
|
|
4048
4048
|
var FormContainer$1 = styled__default["default"].div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n ", "\n"], ["\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n ", "\n"])), function (props) {
|
|
4049
4049
|
return props.isLoading && "\n opacity: 0.5; \n pointer-events: none;\n ";
|
|
4050
4050
|
});
|
|
4051
|
-
var
|
|
4052
|
-
var
|
|
4053
|
-
styled__default["default"].
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
var
|
|
4058
|
-
styled__default["default"].input(templateObject_12 || (templateObject_12 = __makeTemplateObject([""], [""])));
|
|
4059
|
-
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;
|
|
4051
|
+
var ErrorTextWrapper = styled__default["default"].div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: block;\n width: 100%;\n"], ["\n display: block;\n width: 100%;\n"])));
|
|
4052
|
+
var DropDownSelectContainer = styled__default["default"].div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n padding-bottom: 20px;\n"], ["\n padding-bottom: 20px;\n"])));
|
|
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
|
+
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
|
+
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;
|
|
4060
4058
|
|
|
4061
4059
|
const Container$16 = styled__default["default"].div`
|
|
4062
4060
|
display: flex;
|
|
@@ -4322,14 +4320,15 @@ var Heading = function (_a) {
|
|
|
4322
4320
|
* Returns the Bin Collection Checker form component to conduct search by postcode.
|
|
4323
4321
|
*/
|
|
4324
4322
|
var BinCollection = function (_a) {
|
|
4325
|
-
var _b = _a.formError, formError = _b === void 0 ? false : _b, _c = _a.
|
|
4326
|
-
var BinCollectionApiUrl = "".concat(
|
|
4327
|
-
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/");
|
|
4328
4326
|
var themeContext = React.useContext(styled.ThemeContext);
|
|
4329
4327
|
var _d = React.useState(false), isLoading = _d[0], setIsLoading = _d[1];
|
|
4330
4328
|
var _e = React.useState(formError), isError = _e[0], setError = _e[1];
|
|
4331
4329
|
var _f = React.useState(''), errorText = _f[0], setErrorText = _f[1];
|
|
4332
4330
|
var _g = React.useState([]), addressOptions = _g[0], setAddressOptions = _g[1];
|
|
4331
|
+
var seenTitles = React.useRef(new Set());
|
|
4333
4332
|
var handleSubmit = function (e) {
|
|
4334
4333
|
e.preventDefault();
|
|
4335
4334
|
var enteredPostcode = e.target.elements.postcode.value;
|
|
@@ -4347,13 +4346,22 @@ var BinCollection = function (_a) {
|
|
|
4347
4346
|
*/
|
|
4348
4347
|
var fetchAddresses = function (postcode) { return __awaiter(void 0, void 0, void 0, function () {
|
|
4349
4348
|
return __generator(this, function (_a) {
|
|
4349
|
+
setError(false);
|
|
4350
|
+
setErrorText('');
|
|
4351
|
+
setIsLoading(true);
|
|
4350
4352
|
axios__default["default"].get("".concat(BinCollectionApiUrl).concat(postcode))
|
|
4351
4353
|
.then(function (response) {
|
|
4352
4354
|
setIsLoading(false);
|
|
4355
|
+
// Check if there are any addresses returned
|
|
4356
|
+
if (response.data.data.length === 0) {
|
|
4357
|
+
setError(true);
|
|
4358
|
+
setErrorText('No addresses found for the provided postcode.');
|
|
4359
|
+
return;
|
|
4360
|
+
}
|
|
4353
4361
|
// Transform the response data into the expected format
|
|
4354
4362
|
var transformedAddresses = response.data.data.map(function (item) { return ({
|
|
4355
4363
|
value: item.UPRN,
|
|
4356
|
-
title: "".concat(item.Address
|
|
4364
|
+
title: "".concat(item.Address)
|
|
4357
4365
|
}); });
|
|
4358
4366
|
setAddressOptions(transformedAddresses);
|
|
4359
4367
|
})
|
|
@@ -4414,13 +4422,14 @@ var BinCollection = function (_a) {
|
|
|
4414
4422
|
setCalendarEvents({});
|
|
4415
4423
|
setError(false);
|
|
4416
4424
|
setErrorText('');
|
|
4425
|
+
seenTitles.current.clear();
|
|
4417
4426
|
};
|
|
4418
4427
|
var formatTitle = function (apiTitle) {
|
|
4419
4428
|
var mappings = [
|
|
4420
|
-
{ keyword: '
|
|
4421
|
-
{ keyword: '
|
|
4422
|
-
{ keyword: '
|
|
4423
|
-
{ keyword: '
|
|
4429
|
+
{ keyword: 'Refuse', replacement: 'General refuse bin' },
|
|
4430
|
+
{ keyword: 'Recycling', replacement: 'Recycling bin' },
|
|
4431
|
+
{ keyword: 'Garden', replacement: 'Garden bin' },
|
|
4432
|
+
{ keyword: 'Food', replacement: 'Food caddy' },
|
|
4424
4433
|
];
|
|
4425
4434
|
for (var _i = 0, mappings_1 = mappings; _i < mappings_1.length; _i++) {
|
|
4426
4435
|
var mapping = mappings_1[_i];
|
|
@@ -4428,14 +4437,18 @@ var BinCollection = function (_a) {
|
|
|
4428
4437
|
return mapping.replacement;
|
|
4429
4438
|
}
|
|
4430
4439
|
}
|
|
4431
|
-
return
|
|
4440
|
+
return null;
|
|
4432
4441
|
};
|
|
4442
|
+
React.useEffect(function () {
|
|
4443
|
+
seenTitles.current.clear();
|
|
4444
|
+
}, [calendarEvents]);
|
|
4433
4445
|
return (React__default["default"].createElement(Container$17, { "data-testid": "BinCollection" },
|
|
4434
4446
|
React__default["default"].createElement(FormWithLine, { onSubmit: handleSubmit, isError: isError, lineColour: themeContext.theme_vars.colours.grey_dark, hideLine: true },
|
|
4435
4447
|
React__default["default"].createElement(FormContainer$1, { isLoading: isLoading },
|
|
4436
|
-
React__default["default"].createElement(Heading, { level: 2, text: "Bin
|
|
4448
|
+
React__default["default"].createElement(Heading, { level: 2, text: "Bin collection checker" }),
|
|
4449
|
+
React__default["default"].createElement(ErrorTextWrapper, null, errorText && React__default["default"].createElement(ErrorText$1, null, errorText)),
|
|
4437
4450
|
React__default["default"].createElement(FormInnerContainer, null,
|
|
4438
|
-
React__default["default"].createElement(Input$6, { type: "text", placeholder: "Enter a postcode", name: "postcode",
|
|
4451
|
+
React__default["default"].createElement(Input$6, { type: "text", placeholder: "Enter a postcode", name: "postcode", isErrored: isError, maxLength: 10 }),
|
|
4439
4452
|
React__default["default"].createElement(BinCollectionButtonStyles, null,
|
|
4440
4453
|
React__default["default"].createElement(FormButton, { size: "large", type: "submit", "aria-label": "Submit", text: "Find" }))))),
|
|
4441
4454
|
addressOptions.length > 0 && (React__default["default"].createElement(DropDownSelectContainer, null,
|
|
@@ -4443,13 +4456,17 @@ var BinCollection = function (_a) {
|
|
|
4443
4456
|
React__default["default"].createElement("div", null, Object.entries(calendarEvents).map(function (_a) {
|
|
4444
4457
|
var apiTitle = _a[0], dates = _a[1];
|
|
4445
4458
|
var title = formatTitle(apiTitle);
|
|
4459
|
+
// If we've seen this title before, or if title is null, we skip rendering it
|
|
4460
|
+
if (seenTitles.current.has(title) || title === null) {
|
|
4461
|
+
return null;
|
|
4462
|
+
}
|
|
4463
|
+
// Mark the title as seen
|
|
4464
|
+
seenTitles.current.add(title);
|
|
4446
4465
|
return (React__default["default"].createElement(React__default["default"].Fragment, { key: title },
|
|
4447
|
-
React__default["default"].createElement(
|
|
4448
|
-
React__default["default"].createElement(UPRNPageSectionTitle, null, title)),
|
|
4466
|
+
React__default["default"].createElement(Heading, { level: 3, text: title }),
|
|
4449
4467
|
dates
|
|
4450
4468
|
.sort(function (a, b) { return new Date(a).getTime() - new Date(b).getTime(); })
|
|
4451
|
-
.map(function (date) { return (React__default["default"].createElement(
|
|
4452
|
-
React__default["default"].createElement(UPRNPageUPRNTitle, null, date.toLocaleDateString('en-GB', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })))); })));
|
|
4469
|
+
.map(function (date) { return (React__default["default"].createElement("p", null, date.toLocaleDateString('en-GB', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }))); })));
|
|
4453
4470
|
})),
|
|
4454
4471
|
Object.keys(calendarEvents).length > 0 && (React__default["default"].createElement(FormButton, { size: "small", type: "button", "aria-label": "Reset", text: "Find a different address", onClick: resetForm }))));
|
|
4455
4472
|
};
|