@nnc-digital/nnc-design-system 0.4.15 → 0.4.17

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.js CHANGED
@@ -4049,7 +4049,7 @@ var FormContainer$1 = styled__default["default"].div(templateObject_4 || (templa
4049
4049
  return props.isLoading && "\n opacity: 0.5; \n pointer-events: none;\n ";
4050
4050
  });
4051
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"])));
4052
+ var DropDownSelectContainer = styled__default["default"].div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n padding-bottom: 20px;\n width: 90%;\n"], ["\n padding-bottom: 20px;\n width: 90%;\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
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"])));
@@ -4342,14 +4342,23 @@ var BinCollection = function (_a) {
4342
4342
  fetchAddresses(enteredPostcode);
4343
4343
  }
4344
4344
  };
4345
+ var formatUKPostcode = function (postcode) {
4346
+ // Remove existing spaces and convert to uppercase
4347
+ var cleaned = postcode.replace(/\s/g, '').toUpperCase();
4348
+ // Add space before the last 3 characters
4349
+ var formatted = cleaned.slice(0, -3) + " " + cleaned.slice(-3);
4350
+ return formatted;
4351
+ };
4345
4352
  /**
4346
4353
  * Returns an array of address options based on the entered postcode.
4347
4354
  */
4348
4355
  var fetchAddresses = function (postcode) { return __awaiter(void 0, void 0, void 0, function () {
4349
4356
  return __generator(this, function (_a) {
4357
+ setCalendarEvents({});
4350
4358
  setError(false);
4351
4359
  setErrorText('');
4352
4360
  setIsLoading(true);
4361
+ postcode = formatUKPostcode(postcode);
4353
4362
  axios__default["default"].get("".concat(BinCollectionApiUrl).concat(postcode))
4354
4363
  .then(function (response) {
4355
4364
  setIsLoading(false);
@@ -4433,16 +4442,51 @@ var BinCollection = function (_a) {
4433
4442
  setNoResultsFound(false);
4434
4443
  };
4435
4444
  var formatTitle = function (apiTitle) {
4445
+ console.log(apiTitle);
4436
4446
  var mappings = [
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' },
4447
+ {
4448
+ keyword: 'Refuse',
4449
+ replacement: 'General refuse bin',
4450
+ allowedValues: [
4451
+ 'Refuse bin 1100l', 'Refuse bin 140l', 'Refuse bin 180l',
4452
+ 'Refuse bin 240l', 'Refuse bin 360l', 'Refuse bin 660l',
4453
+ 'Refuse Chamberlain', 'Refuse Palladin', 'Authorised bin (larger h/hold) 120l',
4454
+ 'Authorised bin (larger h/hold) 140l', 'Authorised bin (larger h/hold) 180l',
4455
+ 'Authorised bin (offensive) 140l', 'Authorised bin (offensive) 180l', 'Authorised bin (offensive) 240l',
4456
+ ]
4457
+ },
4458
+ {
4459
+ keyword: 'Recycling',
4460
+ replacement: 'Recycling bin',
4461
+ allowedValues: [
4462
+ 'Recycling 1100l', 'Recycling 140l', 'Recycling 180l',
4463
+ 'Recycling 240l', 'Recycling bin 1100l'
4464
+ ]
4465
+ },
4466
+ {
4467
+ keyword: 'Garden',
4468
+ replacement: 'Garden bin',
4469
+ allowedValues: [
4470
+ 'Garden 140l', 'Garden 180l', 'Garden 240l'
4471
+ ]
4472
+ },
4473
+ {
4474
+ keyword: 'Food',
4475
+ replacement: 'Food caddy',
4476
+ allowedValues: [
4477
+ 'Communal food bin (exterior) 180L',
4478
+ 'Food Caddy (exterior) 23l',
4479
+ 'Food Caddy (indoor) 5l'
4480
+ ]
4481
+ },
4441
4482
  ];
4442
4483
  for (var _i = 0, mappings_1 = mappings; _i < mappings_1.length; _i++) {
4443
4484
  var mapping = mappings_1[_i];
4444
- if (apiTitle.includes(mapping.keyword)) {
4445
- return mapping.replacement;
4485
+ for (var _a = 0, _b = mapping.allowedValues; _a < _b.length; _a++) {
4486
+ var value = _b[_a];
4487
+ if (apiTitle.includes(value)) {
4488
+ return mapping.replacement;
4489
+ }
4446
4490
  }
4447
4491
  }
4448
4492
  return null;
@@ -4462,21 +4506,23 @@ var BinCollection = function (_a) {
4462
4506
  addressOptions.length > 0 && (React__default["default"].createElement(DropDownSelectContainer, null,
4463
4507
  React__default["default"].createElement(DropDownSelect, { onChange: handleAddressChange, id: "address", label: "Select your address", options: __spreadArray([{ title: 'Select an address', value: '' }], addressOptions, true) }))),
4464
4508
  noResultsFound && React__default["default"].createElement("p", null, "No results found."),
4465
- React__default["default"].createElement("div", null, Object.entries(calendarEvents).map(function (_a) {
4466
- var apiTitle = _a[0], dates = _a[1];
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;
4509
+ React__default["default"].createElement("div", null, (function () {
4510
+ var order = ['General refuse bin', 'Recycling bin', 'Garden bin', 'Food caddy'];
4511
+ var uniqueTitles = Array.from(new Set(Object.keys(calendarEvents).map(function (apiTitle) { return formatTitle(apiTitle); }).filter(function (title) { return title !== null; })));
4512
+ var sortedTitles = uniqueTitles.sort(function (a, b) { return order.indexOf(a) - order.indexOf(b); });
4513
+ var noResultsFound = sortedTitles.length === 0;
4514
+ {
4515
+ noResultsFound && React__default["default"].createElement("p", null, "No results found.");
4471
4516
  }
4472
- // Mark the title as seen
4473
- seenTitles.current.add(title);
4474
- return (React__default["default"].createElement(React__default["default"].Fragment, { key: title },
4475
- React__default["default"].createElement(Heading, { level: 3, text: title }),
4476
- dates
4477
- .sort(function (a, b) { return new Date(a).getTime() - new Date(b).getTime(); })
4478
- .map(function (date) { return (React__default["default"].createElement("p", null, date.toLocaleDateString('en-GB', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }))); })));
4479
- })),
4517
+ return sortedTitles.map(function (title, index) {
4518
+ var apiTitlesForThisType = Object.keys(calendarEvents).filter(function (apiTitle) { return formatTitle(apiTitle) === title; });
4519
+ return (React__default["default"].createElement(React__default["default"].Fragment, { key: "".concat(title, "-").concat(index) },
4520
+ React__default["default"].createElement(Heading, { level: 3, text: title }),
4521
+ apiTitlesForThisType.flatMap(function (apiTitle) { return calendarEvents[apiTitle]; })
4522
+ .sort(function (a, b) { return new Date(a).getTime() - new Date(b).getTime(); })
4523
+ .map(function (date) { return (React__default["default"].createElement("p", null, date.toLocaleDateString('en-GB', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }))); })));
4524
+ });
4525
+ })()),
4480
4526
  Object.keys(calendarEvents).length > 0 && (React__default["default"].createElement(FormButton, { size: "small", type: "button", "aria-label": "Reset", text: "Find a different address", onClick: resetForm }))));
4481
4527
  };
4482
4528
 
@@ -23211,8 +23257,9 @@ const AccessibleLinks = styled__default["default"].a`
23211
23257
 
23212
23258
  var AccessibleLink = function (_a) {
23213
23259
  var _b = _a.AccessibleLinksArray, AccessibleLinksArray = _b === void 0 ? null : _b;
23214
- return (React__default["default"].createElement(React__default["default"].Fragment, null, AccessibleLinksArray && AccessibleLinksArray.map(function (link, i) {
23215
- return React__default["default"].createElement(AccessibleLinks, { key: 'accessible-link-' + i, href: link.url }, link.title);
23260
+ return (React__default["default"].createElement("ul", null, AccessibleLinksArray && AccessibleLinksArray.map(function (link, i) {
23261
+ return React__default["default"].createElement("li", { key: 'accessible-link-li-' + i },
23262
+ React__default["default"].createElement(AccessibleLinks, { key: 'accessible-link-' + i, href: link.url }, link.title));
23216
23263
  })));
23217
23264
  };
23218
23265
 
@@ -23285,10 +23332,10 @@ const InnerContainer$1 = styled__default["default"].div`
23285
23332
  const BannerContentContainer = styled__default["default"].div`
23286
23333
  flex-grow: 1;
23287
23334
  padding-right: ${(props) => props.theme.theme_vars.spacingSizes.medium};
23335
+ font-weight: bold;
23288
23336
  `;
23289
23337
 
23290
23338
  const BannerTitle = styled__default["default"].p`
23291
- font-weight: bold;
23292
23339
  margin-bottom: ${(props) => props.theme.theme_vars.spacingSizes.small};
23293
23340
  `;
23294
23341
 
@@ -23304,6 +23351,7 @@ const HideLink = styled__default["default"].button`
23304
23351
  background: none;
23305
23352
  cursor: pointer;
23306
23353
  flex-grow: 0;
23354
+ font-weight: bold;
23307
23355
 
23308
23356
  &:focus {
23309
23357
  outline: none;