@nnc-digital/nnc-design-system 0.4.29 → 0.4.31

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
@@ -4043,18 +4043,19 @@ var Button$4 = function (_a) {
4043
4043
  };
4044
4044
 
4045
4045
  var Container$17 = styled__default["default"].div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n"], ["\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n"])));
4046
- styled__default["default"].label(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: block;\n margin-bottom: 15px;\n"], ["\n display: block;\n margin-bottom: 15px;\n"])));
4047
- var BinCollectionButtonStyles = styled__default["default"].div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n button {\n margin: 10px 10px 36px 10px;\n }\n"], ["\n button {\n margin: 10px 10px 36px 10px;\n }\n"])));
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) {
4046
+ var Label$5 = styled__default["default"].label(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: block;\n margin-bottom: 15px;\n"], ["\n display: block;\n margin-bottom: 15px;\n"])));
4047
+ var VisuallyHiddenLabel = styled__default["default"](Label$5)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n border: 0;\n white-space: nowrap;\n"], ["\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n border: 0;\n white-space: nowrap;\n"])));
4048
+ var BinCollectionButtonStyles = styled__default["default"].div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n button {\n margin: 10px 10px 12px 10px;\n }\n"], ["\n button {\n margin: 10px 10px 12px 10px;\n }\n"])));
4049
+ var FormContainer$1 = styled__default["default"].div(templateObject_5 || (templateObject_5 = __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
4050
  return props.isLoading && "\n opacity: 0.5; \n pointer-events: none;\n ";
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 width: 90%;\n"], ["\n padding-bottom: 20px;\n width: 90%;\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;
4052
+ var ErrorTextWrapper = styled__default["default"].div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n display: block;\n width: 100%;\n"], ["\n display: block;\n width: 100%;\n"])));
4053
+ var DropDownSelectContainer = styled__default["default"].div(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n padding-bottom: 20px;\n width: 90%;\n"], ["\n padding-bottom: 20px;\n width: 90%;\n"])));
4054
+ var FormInnerContainer = styled__default["default"].div(templateObject_8 || (templateObject_8 = __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"])));
4055
+ styled__default["default"].label(templateObject_9 || (templateObject_9 = __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; });
4056
+ styled__default["default"].div(templateObject_10 || (templateObject_10 = __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"])));
4057
+ styled__default["default"].input(templateObject_11 || (templateObject_11 = __makeTemplateObject([""], [""])));
4058
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11;
4058
4059
 
4059
4060
  const Container$16 = styled__default["default"].div`
4060
4061
  display: flex;
@@ -4100,17 +4101,6 @@ var FormWithLine = function (_a) {
4100
4101
  children)));
4101
4102
  };
4102
4103
 
4103
- /**
4104
- * Primary UI component for user interaction
4105
- * If value is set then treat as controlled component
4106
- */
4107
- var Input$6 = function (_a) {
4108
- var _b = _a.type, type = _b === void 0 ? 'text' : _b, _c = _a.placeholder, placeholder = _c === void 0 ? '' : _c, _d = _a.isErrored, isErrored = _d === void 0 ? false : _d, errorText = _a.errorText, name = _a.name, maxLength = _a.maxLength, defaultValue = _a.defaultValue, onChange = _a.onChange, id = _a.id, value = _a.value;
4109
- return (React__default["default"].createElement(React__default["default"].Fragment, null,
4110
- errorText && React__default["default"].createElement(ErrorText$1, null, errorText),
4111
- typeof value !== 'undefined' ? (React__default["default"].createElement(StyledInput, { onChange: onChange, type: type, placeholder: placeholder, name: name, isErrored: isErrored, maxLength: maxLength, value: value, id: id })) : (React__default["default"].createElement(StyledInput, { onChange: onChange, type: type, placeholder: placeholder, name: name, isErrored: isErrored, maxLength: maxLength, defaultValue: defaultValue, id: id }))));
4112
- };
4113
-
4114
4104
  const StyledButton = styled__default["default"].button`
4115
4105
  font-weight: 700;
4116
4106
  border: none;
@@ -4368,12 +4358,25 @@ var BinCollection = function (_a) {
4368
4358
  setErrorText('No addresses found for the provided postcode.');
4369
4359
  return;
4370
4360
  }
4371
- // Transform the response data into the expected format
4372
- var transformedAddresses = response.data.data.map(function (item) { return ({
4373
- value: item.UPRN,
4374
- title: "".concat(item.Address)
4375
- }); });
4376
- setAddressOptions(transformedAddresses);
4361
+ // Separate numeric and named addresses
4362
+ var numericAddresses = [];
4363
+ var namedAddresses = [];
4364
+ response.data.data.forEach(function (item) {
4365
+ var address = "".concat(item.Address);
4366
+ if (/^\d/.test(address)) { // Address starts with a number
4367
+ numericAddresses.push({ value: item.UPRN, title: address });
4368
+ }
4369
+ else {
4370
+ namedAddresses.push({ value: item.UPRN, title: address });
4371
+ }
4372
+ });
4373
+ // Sort numeric addresses by the whole number
4374
+ numericAddresses.sort(function (a, b) { return parseInt(a.title, 10) - parseInt(b.title, 10); });
4375
+ // Sort named addresses alphabetically
4376
+ namedAddresses.sort(function (a, b) { return a.title.localeCompare(b.title); });
4377
+ // Combine the sorted arrays
4378
+ var sortedAddresses = numericAddresses.concat(namedAddresses);
4379
+ setAddressOptions(sortedAddresses);
4377
4380
  })
4378
4381
  .catch(function (error) {
4379
4382
  setIsLoading(false);
@@ -4506,7 +4509,8 @@ var BinCollection = function (_a) {
4506
4509
  React__default["default"].createElement(Heading, { level: 2, text: "Bin collection checker" }),
4507
4510
  React__default["default"].createElement(ErrorTextWrapper, null, errorText && React__default["default"].createElement(ErrorText$1, null, errorText)),
4508
4511
  React__default["default"].createElement(FormInnerContainer, null,
4509
- React__default["default"].createElement(Input$6, { type: "text", placeholder: "Enter a postcode", name: "postcode", isErrored: isError, maxLength: 10 }),
4512
+ React__default["default"].createElement(VisuallyHiddenLabel, { id: "postcode-label", htmlFor: "postcode-input" }, "Enter a postcode"),
4513
+ React__default["default"].createElement(StyledTextInput, { type: "text", placeholder: "Enter a postcode", name: "postcode", id: "postcode-input", isErrored: isError, "aria-labelledby": "postcode-label", autoComplete: "postal-code" }),
4510
4514
  React__default["default"].createElement(BinCollectionButtonStyles, null,
4511
4515
  React__default["default"].createElement(FormButton, { size: "large", type: "submit", "aria-label": "Submit", text: "Find" }))))),
4512
4516
  addressOptions.length > 0 && (React__default["default"].createElement(DropDownSelectContainer, null,
@@ -13870,10 +13874,10 @@ let pico$1 = picocolors.exports;
13870
13874
 
13871
13875
  let tokenizer$1 = tokenize;
13872
13876
 
13873
- let Input$5;
13877
+ let Input$6;
13874
13878
 
13875
13879
  function registerInput(dependant) {
13876
- Input$5 = dependant;
13880
+ Input$6 = dependant;
13877
13881
  }
13878
13882
 
13879
13883
  const HIGHLIGHT_THEME = {
@@ -13914,7 +13918,7 @@ function getTokenType([type, value], processor) {
13914
13918
  }
13915
13919
 
13916
13920
  function terminalHighlight$2(css) {
13917
- let processor = tokenizer$1(new Input$5(css), { ignoreErrors: true });
13921
+ let processor = tokenizer$1(new Input$6(css), { ignoreErrors: true });
13918
13922
  let result = '';
13919
13923
  while (!processor.endOfFile()) {
13920
13924
  let token = processor.nextToken();
@@ -18301,7 +18305,7 @@ let fromOffsetCache = Symbol('fromOffsetCache');
18301
18305
  let sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);
18302
18306
  let pathAvailable$1 = Boolean(resolve$1 && isAbsolute);
18303
18307
 
18304
- class Input$4 {
18308
+ class Input$5 {
18305
18309
  constructor(css, opts = {}) {
18306
18310
  if (
18307
18311
  css === null ||
@@ -18527,18 +18531,18 @@ class Input$4 {
18527
18531
  }
18528
18532
  }
18529
18533
 
18530
- var input = Input$4;
18531
- Input$4.default = Input$4;
18534
+ var input = Input$5;
18535
+ Input$5.default = Input$5;
18532
18536
 
18533
18537
  if (terminalHighlight && terminalHighlight.registerInput) {
18534
- terminalHighlight.registerInput(Input$4);
18538
+ terminalHighlight.registerInput(Input$5);
18535
18539
  }
18536
18540
 
18537
18541
  let { SourceMapConsumer, SourceMapGenerator } = sourceMap;
18538
18542
  let { dirname, resolve, relative, sep } = require$$2__default["default"];
18539
18543
  let { pathToFileURL } = require$$1__default$1["default"];
18540
18544
 
18541
- let Input$3 = input;
18545
+ let Input$4 = input;
18542
18546
 
18543
18547
  let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);
18544
18548
  let pathAvailable = Boolean(dirname && resolve && relative && sep);
@@ -18573,7 +18577,7 @@ class MapGenerator$2 {
18573
18577
  }
18574
18578
  });
18575
18579
  } else {
18576
- let input = new Input$3(this.css, this.opts);
18580
+ let input = new Input$4(this.css, this.opts);
18577
18581
  if (input.map) this.previousMaps.push(input.map);
18578
18582
  }
18579
18583
  }
@@ -20213,10 +20217,10 @@ var parser = Parser$1;
20213
20217
 
20214
20218
  let Container$P = container;
20215
20219
  let Parser = parser;
20216
- let Input$2 = input;
20220
+ let Input$3 = input;
20217
20221
 
20218
20222
  function parse$3(css, opts) {
20219
- let input = new Input$2(css, opts);
20223
+ let input = new Input$3(css, opts);
20220
20224
  let parser = new Parser(input);
20221
20225
  try {
20222
20226
  parser.parse();
@@ -21005,7 +21009,7 @@ let Declaration$1 = declaration;
21005
21009
  let PreviousMap = previousMap;
21006
21010
  let Comment$1 = comment;
21007
21011
  let AtRule$1 = atRule;
21008
- let Input$1 = input;
21012
+ let Input$2 = input;
21009
21013
  let Root$1 = root;
21010
21014
  let Rule$1 = rule;
21011
21015
 
@@ -21016,7 +21020,7 @@ function fromJSON$1(json, inputs) {
21016
21020
  if (ownInputs) {
21017
21021
  inputs = [];
21018
21022
  for (let input of ownInputs) {
21019
- let inputHydrated = { ...input, __proto__: Input$1.prototype };
21023
+ let inputHydrated = { ...input, __proto__: Input$2.prototype };
21020
21024
  if (inputHydrated.map) {
21021
21025
  inputHydrated.map = {
21022
21026
  ...inputHydrated.map,
@@ -21066,7 +21070,7 @@ let Warning = warning;
21066
21070
  let Comment = comment;
21067
21071
  let AtRule = atRule;
21068
21072
  let Result$1 = result;
21069
- let Input = input;
21073
+ let Input$1 = input;
21070
21074
  let parse = parse_1;
21071
21075
  let list = list_1;
21072
21076
  let Rule = rule;
@@ -21144,7 +21148,7 @@ postcss.Comment = Comment;
21144
21148
  postcss.Warning = Warning;
21145
21149
  postcss.AtRule = AtRule;
21146
21150
  postcss.Result = Result$1;
21147
- postcss.Input = Input;
21151
+ postcss.Input = Input$1;
21148
21152
  postcss.Rule = Rule;
21149
21153
  postcss.Root = Root;
21150
21154
  postcss.Node = Node;
@@ -23498,6 +23502,17 @@ const SubmitButton = styled__default["default"].input`
23498
23502
  }
23499
23503
  `;
23500
23504
 
23505
+ /**
23506
+ * Primary UI component for user interaction
23507
+ * If value is set then treat as controlled component
23508
+ */
23509
+ var Input = function (_a) {
23510
+ var _b = _a.type, type = _b === void 0 ? 'text' : _b, _c = _a.placeholder, placeholder = _c === void 0 ? '' : _c, _d = _a.isErrored, isErrored = _d === void 0 ? false : _d, errorText = _a.errorText, name = _a.name, maxLength = _a.maxLength, defaultValue = _a.defaultValue, onChange = _a.onChange, id = _a.id, value = _a.value;
23511
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
23512
+ errorText && React__default["default"].createElement(ErrorText$1, null, errorText),
23513
+ typeof value !== 'undefined' ? (React__default["default"].createElement(StyledInput, { onChange: onChange, type: type, placeholder: placeholder, name: name, isErrored: isErrored, maxLength: maxLength, value: value, id: id })) : (React__default["default"].createElement(StyledInput, { onChange: onChange, type: type, placeholder: placeholder, name: name, isErrored: isErrored, maxLength: maxLength, defaultValue: defaultValue, id: id }))));
23514
+ };
23515
+
23501
23516
  var CustomSearch = function (_a) {
23502
23517
  var method = _a.method, path = _a.path, label = _a.label, _b = _a.hasHiddenLabel, hasHiddenLabel = _b === void 0 ? true : _b, fieldName = _a.fieldName, placeholder = _a.placeholder, searchText = _a.searchText, id = _a.id;
23503
23518
  if (!id) {
@@ -23508,7 +23523,7 @@ var CustomSearch = function (_a) {
23508
23523
  React__default["default"].createElement("div", { role: "search" },
23509
23524
  React__default["default"].createElement(Label$3, { htmlFor: id, hasHiddenLabel: hasHiddenLabel }, label),
23510
23525
  React__default["default"].createElement(InputWrapper$1, null,
23511
- React__default["default"].createElement(Input$6, { name: fieldName, placeholder: placeholder, id: id }),
23526
+ React__default["default"].createElement(Input, { name: fieldName, placeholder: placeholder, id: id }),
23512
23527
  React__default["default"].createElement(SubmitButton, { type: "submit", value: searchText }))))));
23513
23528
  };
23514
23529
 
@@ -28073,7 +28088,7 @@ var PostCodeSearch = function (_a) {
28073
28088
  React__default["default"].createElement(Label$2, { htmlFor: "postcode" },
28074
28089
  "Enter your postcode",
28075
28090
  React__default["default"].createElement(HintText, { text: themeContext.cardinal_name === 'north' ? 'For example NN16 0AP' : 'For example NN1 1DE' }),
28076
- React__default["default"].createElement(Input$6, { type: "text", placeholder: "Enter a postcode", name: "postcode", errorText: errorText, isErrored: isError, maxLength: 10 })),
28091
+ React__default["default"].createElement(Input, { type: "text", placeholder: "Enter a postcode", name: "postcode", errorText: errorText, isErrored: isError, maxLength: 10 })),
28077
28092
  React__default["default"].createElement(FormButton, { type: "submit", "aria-label": "Submit", text: "Find" })))) : (React__default["default"].createElement(PostcodeResult, null,
28078
28093
  React__default["default"].createElement(Line, null),
28079
28094
  isMultiple ? (React__default["default"].createElement("div", { className: "result" },
@@ -30331,13 +30346,13 @@ var DirectoryServiceList = function (_a) {
30331
30346
  React__default["default"].createElement(Column, { small: "full", medium: "one-half", large: "one-third" },
30332
30347
  React__default["default"].createElement(Label$1, { htmlFor: "directorySearch" }, "What are you looking for?"),
30333
30348
  React__default["default"].createElement(HintText, { text: "Enter a search word or phrase" }),
30334
- React__default["default"].createElement(Input$6, { name: "directorySearch", type: "text", defaultValue: searchTerm, id: "directorySearch", onChange: function (e) {
30349
+ React__default["default"].createElement(Input, { name: "directorySearch", type: "text", defaultValue: searchTerm, id: "directorySearch", onChange: function (e) {
30335
30350
  setSearchTerm(e.target.value);
30336
30351
  } })),
30337
30352
  React__default["default"].createElement(Column, { small: "full", medium: "one-half", large: "one-third" },
30338
30353
  React__default["default"].createElement(Label$1, { htmlFor: "postcode" }, "Postcode (optional)"),
30339
30354
  React__default["default"].createElement(HintText, { text: "Enter a postcode" }),
30340
- React__default["default"].createElement(Input$6, { name: "postcode", type: "text", defaultValue: postcodeSearch, id: "postcode", onChange: function (e) { return setPostcodeSearch(e.target.value); } })),
30355
+ React__default["default"].createElement(Input, { name: "postcode", type: "text", defaultValue: postcodeSearch, id: "postcode", onChange: function (e) { return setPostcodeSearch(e.target.value); } })),
30341
30356
  React__default["default"].createElement(Column, { small: "full", medium: "one-half", large: "one-third" },
30342
30357
  React__default["default"].createElement(ButtonContainer$1, null,
30343
30358
  React__default["default"].createElement(Button$1, { onClick: submitSearch, type: "submit" },
@@ -30371,10 +30386,10 @@ var DirectoryServiceList = function (_a) {
30371
30386
  React__default["default"].createElement(Row$1, null,
30372
30387
  React__default["default"].createElement(Column, { small: "full", medium: "one-half", large: "one-half" },
30373
30388
  React__default["default"].createElement(Label$1, { htmlFor: "minimum_age" }, "From"),
30374
- React__default["default"].createElement(Input$6, { name: "minimum_age", onChange: function (e) { return handleAgeChange(e, 'minimumAge'); }, value: ageInMonths && typeof minimumAge === 'number' ? minimumAge / 12 : minimumAge, id: "minimum_age", type: "number" })),
30389
+ React__default["default"].createElement(Input, { name: "minimum_age", onChange: function (e) { return handleAgeChange(e, 'minimumAge'); }, value: ageInMonths && typeof minimumAge === 'number' ? minimumAge / 12 : minimumAge, id: "minimum_age", type: "number" })),
30375
30390
  React__default["default"].createElement(Column, { small: "full", medium: "one-half", large: "one-half" },
30376
30391
  React__default["default"].createElement(Label$1, { htmlFor: "maximum_age" }, "To"),
30377
- React__default["default"].createElement(Input$6, { name: "maximum_age", onChange: function (e) { return handleAgeChange(e, 'maximumAge'); }, value: ageInMonths && typeof maximumAge === 'number' ? maximumAge / 12 : maximumAge, id: "maximum_age", type: "number" })))))), categories === null || categories === void 0 ? void 0 :
30392
+ React__default["default"].createElement(Input, { name: "maximum_age", onChange: function (e) { return handleAgeChange(e, 'maximumAge'); }, value: ageInMonths && typeof maximumAge === 'number' ? maximumAge / 12 : maximumAge, id: "maximum_age", type: "number" })))))), categories === null || categories === void 0 ? void 0 :
30378
30393
  categories.map(function (category, categoryIndex) { return (React__default["default"].createElement(Column, { small: "full", medium: "full", large: "full", key: category.label },
30379
30394
  React__default["default"].createElement(Fieldset$1, null,
30380
30395
  React__default["default"].createElement(Legend$1, null,
@@ -32107,7 +32122,7 @@ var DirectoryDocumentList = function (_a) {
32107
32122
  React__default["default"].createElement(Column, { small: "full", medium: "one-half", large: "one-third" },
32108
32123
  React__default["default"].createElement(Label, { htmlFor: "directorySearch" }, "What are you looking for?"),
32109
32124
  React__default["default"].createElement(HintText, { text: "Enter a search word or phrase" }),
32110
- React__default["default"].createElement(Input$6, { name: "directorySearch", type: "text", defaultValue: searchTerm, id: "directorySearch", onChange: function (e) {
32125
+ React__default["default"].createElement(Input, { name: "directorySearch", type: "text", defaultValue: searchTerm, id: "directorySearch", onChange: function (e) {
32111
32126
  setSearchTerm(e.target.value);
32112
32127
  } })),
32113
32128
  React__default["default"].createElement(Column, { small: "full", medium: "one-half", large: "one-third" },