@noctuatech/uswds 0.1.2 → 0.1.4

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.
Files changed (93) hide show
  1. package/package.json +13 -11
  2. package/src/lib/collection/collection.stories.ts +2 -2
  3. package/src/lib/combo-box/combo-box-option/combo-box-option.element.ts +4 -5
  4. package/src/lib/combo-box/combo-box.element.ts +132 -18
  5. package/src/lib/combo-box/combo-box.stories.ts +52 -60
  6. package/src/lib/combo-box/combo-box.test.ts +123 -15
  7. package/target/lib/accordion/accordion.element.js +2 -86
  8. package/target/lib/accordion/accordion.stories.js +1 -26
  9. package/target/lib/accordion/accordion.test.js +5 -72
  10. package/target/lib/alert/alert.element.js +2 -71
  11. package/target/lib/alert/alert.stories.js +1 -41
  12. package/target/lib/alert/alert.test.js +1 -9
  13. package/target/lib/button/button.element.js +2 -142
  14. package/target/lib/button/button.stories.js +1 -6
  15. package/target/lib/button/button.test.js +1 -3
  16. package/target/lib/card/card-body/card-body.element.js +1 -8
  17. package/target/lib/card/card-footer/card-footer.element.js +1 -6
  18. package/target/lib/card/card-group/card-group.element.js +1 -12
  19. package/target/lib/card/card-header/card-header.element.js +1 -16
  20. package/target/lib/card/card-media/card-media.element.js +2 -33
  21. package/target/lib/card/card.element.js +1 -32
  22. package/target/lib/card/card.stories.js +2 -107
  23. package/target/lib/card/card.test.js +1 -20
  24. package/target/lib/checkbox/checkbox-group/checkbox-group.element.js +2 -10
  25. package/target/lib/checkbox/checkbox.element.js +2 -112
  26. package/target/lib/checkbox/checkbox.stories.js +2 -43
  27. package/target/lib/checkbox/checkbox.test.js +4 -28
  28. package/target/lib/collection/collection-item/collection-item.element.js +2 -40
  29. package/target/lib/collection/collection-item/collection-item.test.js +1 -3
  30. package/target/lib/collection/collection.element.js +2 -10
  31. package/target/lib/collection/collection.stories.js +1 -63
  32. package/target/lib/collection/collection.test.js +1 -3
  33. package/target/lib/combo-box/combo-box-option/combo-box-option.element.js +4 -16
  34. package/target/lib/combo-box/combo-box-option/combo-box-option.element.js.map +1 -1
  35. package/target/lib/combo-box/combo-box.element.d.ts +8 -0
  36. package/target/lib/combo-box/combo-box.element.js +73 -64
  37. package/target/lib/combo-box/combo-box.element.js.map +1 -1
  38. package/target/lib/combo-box/combo-box.stories.js +1 -213
  39. package/target/lib/combo-box/combo-box.stories.js.map +1 -1
  40. package/target/lib/combo-box/combo-box.test.js +58 -15
  41. package/target/lib/combo-box/combo-box.test.js.map +1 -1
  42. package/target/lib/config/config.element.js +1 -5
  43. package/target/lib/config/config.test.js +1 -3
  44. package/target/lib/description/description.element.js +1 -7
  45. package/target/lib/description/description.test.js +1 -3
  46. package/target/lib/file-input/file-input-preview/file-input-preview.element.js +2 -61
  47. package/target/lib/file-input/file-input-preview/file-input-preview.test.js +5 -25
  48. package/target/lib/file-input/file-input.element.js +2 -82
  49. package/target/lib/file-input/file-input.stories.js +1 -13
  50. package/target/lib/file-input/file-input.test.js +2 -16
  51. package/target/lib/icon/icon.element.js +1 -14
  52. package/target/lib/icon/icon.stories.js +2 -13
  53. package/target/lib/input/input.element.js +2 -73
  54. package/target/lib/input/input.stories.js +2 -12
  55. package/target/lib/input/input.test.js +4 -24
  56. package/target/lib/input-mask/input-mask.element.js +1 -5
  57. package/target/lib/input-mask/input-mask.stories.js +1 -12
  58. package/target/lib/input-mask/input-mask.test.js +4 -24
  59. package/target/lib/link/link.element.js +2 -18
  60. package/target/lib/modal/modal-close/modal-close.element.js +2 -36
  61. package/target/lib/modal/modal-close/modal-close.test.js +1 -3
  62. package/target/lib/modal/modal-heading/modal-heading.element.js +2 -24
  63. package/target/lib/modal/modal-heading/modal-heading.test.js +1 -3
  64. package/target/lib/modal/modal.element.js +2 -33
  65. package/target/lib/modal/modal.stories.js +1 -18
  66. package/target/lib/modal/modal.test.js +1 -11
  67. package/target/lib/radio/radio-option/radio-option.element.js +2 -16
  68. package/target/lib/radio/radio-option/radio-option.test.js +1 -5
  69. package/target/lib/radio/radio.element.js +2 -98
  70. package/target/lib/radio/radio.stories.js +1 -26
  71. package/target/lib/radio/radio.test.js +5 -103
  72. package/target/lib/range-slider/range-slider.element.js +2 -52
  73. package/target/lib/range-slider/range-slider.test.js +3 -17
  74. package/target/lib/select/select-option/select-option.element.js +1 -5
  75. package/target/lib/select/select.element.js +2 -49
  76. package/target/lib/select/select.stories.js +1 -10
  77. package/target/lib/select/select.test.js +6 -64
  78. package/target/lib/side-nav/side-nav-item/side-nav-item.element.js +2 -67
  79. package/target/lib/side-nav/side-nav.element.js +1 -8
  80. package/target/lib/side-nav/side-nav.stories.js +1 -39
  81. package/target/lib/side-nav/side-nav.test.js +2 -78
  82. package/target/lib/step-indicator/step/step.element.js +2 -96
  83. package/target/lib/step-indicator/step-indicator.element.js +1 -9
  84. package/target/lib/step-indicator/step-indicator.stories.js +1 -21
  85. package/target/lib/step-indicator/step-indicator.test.js +1 -9
  86. package/target/lib/summary-box/summary-box.element.js +2 -14
  87. package/target/lib/summary-box/summary-box.stories.js +1 -1
  88. package/target/lib/summary-box/summary-box.test.js +1 -3
  89. package/target/lib/tag/tag.element.js +1 -22
  90. package/target/lib/tag/tag.stories.js +1 -1
  91. package/target/lib/tag/tag.test.js +1 -3
  92. package/target/lib/textarea/textarea.element.js +2 -49
  93. package/target/lib/textarea/textarea.test.js +4 -24
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noctuatech/uswds",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "type": "module",
5
5
  "workspaces": ["packages/**"],
6
6
  "main": "./target/lib.js",
@@ -29,7 +29,7 @@
29
29
  "dependencies": ["tsc", "build_testing_library"]
30
30
  },
31
31
  "build": {
32
- "dependencies": ["build_storybook", "build_website"]
32
+ "dependencies": ["tsc", "build_storybook", "minify_html_literals"]
33
33
  },
34
34
  "preview": {
35
35
  "command": "eleventy --serve --incremental",
@@ -42,11 +42,7 @@
42
42
  ]
43
43
  },
44
44
  "build_storybook": {
45
- "command": "storybook build -o _site/storybook"
46
- },
47
- "build_website": {
48
- "command": "eleventy --pathprefix=uswds",
49
- "dependencies": ["tsc", "copy_icons"]
45
+ "command": "storybook build"
50
46
  },
51
47
  "build_testing_library": {
52
48
  "command": "./scripts/build_testing_library.sh",
@@ -57,21 +53,26 @@
57
53
  "command": "tsc --build --pretty",
58
54
  "clean": "if-file-deleted",
59
55
  "files": ["src/**", "tsconfig.json"],
60
- "output": ["target/**"]
56
+ "output": ["target/**", "tsconfig.tsbuildinfo"]
61
57
  },
62
58
  "copy_icons": {
63
59
  "command": "./scripts/copy_usa_icons.sh",
64
60
  "files": ["node_modules/@uswds/uswds/dist/img/usa-icons/**"],
65
61
  "output": ["assets/usa-icon/**"]
62
+ },
63
+ "minify_html_literals": {
64
+ "command": "./scripts/minify_html_literals.js",
65
+ "files": ["target/**/*.js"],
66
+ "dependencies": ["tsc"]
66
67
  }
67
68
  },
68
69
  "author": "",
69
70
  "license": "ISC",
70
71
  "description": "",
71
72
  "dependencies": {
72
- "@joist/di": "^4.0.0",
73
- "@joist/element": "^4.0.0",
74
- "@joist/observable": "^4.0.0",
73
+ "@joist/di": "^4.2.1-next.0",
74
+ "@joist/element": "^4.2.1-next.0",
75
+ "@joist/observable": "^4.2.1-next.0",
75
76
  "tslib": "2.8.1"
76
77
  },
77
78
  "devDependencies": {
@@ -92,6 +93,7 @@
92
93
  "js-beautify": "^1.15.1",
93
94
  "lint-staged": "^15.2.2",
94
95
  "lit": "^3.2.1",
96
+ "minify-literals": "^1.0.10",
95
97
  "mocha": "^11.0.0",
96
98
  "plop": "^4.0.1",
97
99
  "storybook": "^8.6.0",
@@ -25,7 +25,7 @@ const meta = {
25
25
  </usa-collection-item>
26
26
 
27
27
  <usa-collection-item>
28
- <img height="80" width="80" src="/assets/img/gog-logo.png" slot="img"/>
28
+ <img height="80" width="80" src="./img/gog-logo.png" slot="img"/>
29
29
 
30
30
  <h4 slot="heading">
31
31
  <usa-link href="#">Gears of Government President's Award winners</usa-link>
@@ -55,7 +55,7 @@ const meta = {
55
55
  </usa-collection-item>
56
56
 
57
57
  <usa-collection-item>
58
- <img height="52" width="80" src="/assets/img/wosb1.jpg" slot="img"/>
58
+ <img height="52" width="80" src="./img/wosb1.jpg" slot="img"/>
59
59
 
60
60
  <h4 slot="heading">
61
61
  <usa-link href="#">Women-owned small business dashboard</usa-link>
@@ -9,9 +9,7 @@ declare global {
9
9
  }
10
10
  }
11
11
 
12
- const template = document.createElement("template");
13
-
14
- template.innerHTML = /*html*/ `
12
+ const listTemplate = html`
15
13
  <li tabindex="-1" role="option">
16
14
  <slot></slot>
17
15
  </li>
@@ -38,7 +36,7 @@ export class USAComboBoxOptionElement extends HTMLElement {
38
36
  @attr()
39
37
  accessor value = "";
40
38
 
41
- #listItem = template.content.cloneNode(true) as HTMLLIElement;
39
+ #listItem = listTemplate.createNode() as HTMLElement;
42
40
  #li = query("li", this.#listItem);
43
41
  #slot = query("slot", this.#listItem);
44
42
  #ctx = inject(COMBO_BOX_CTX);
@@ -47,7 +45,8 @@ export class USAComboBoxOptionElement extends HTMLElement {
47
45
  const value = this.value.split(" ").join("-").toLocaleLowerCase();
48
46
 
49
47
  this.#li().dataset.value = this.value;
50
- this.#slot().name = value;
48
+
49
+ this.#slot({ name: value });
51
50
 
52
51
  this.slot = value;
53
52
  }
@@ -1,5 +1,13 @@
1
1
  import { injectable } from "@joist/di";
2
- import { css, element, html, listen, query } from "@joist/element";
2
+ import {
3
+ attr,
4
+ attrChanged,
5
+ css,
6
+ element,
7
+ html,
8
+ listen,
9
+ query,
10
+ } from "@joist/element";
3
11
 
4
12
  import { COMBO_BOX_CTX, type ComboBoxContainer } from "./context.js";
5
13
 
@@ -17,26 +25,50 @@ declare global {
17
25
  tagName: "usa-combo-box",
18
26
  shadowDom: [
19
27
  css`
28
+ * {
29
+ box-sizing: border-box
30
+ }
31
+
20
32
  :host {
21
33
  --usa-combo-max-height: 12.5em;
22
34
 
23
35
  display: block;
24
36
  max-width: 30rem;
25
37
  position: relative;
38
+ margin-bottom: 1.5rem;
39
+ }
40
+
41
+ input {
42
+ border-width: 1px;
43
+ border-color: #5c5c5c;
44
+ border-style: solid;
45
+ border-radius: 0;
46
+ color: #1b1b1b;
47
+ display: block;
48
+ height: 2.5rem;
49
+ line-height: 1.3;
50
+ font-size: 1.06rem;
51
+ margin-top: 0.5rem;
52
+ padding: 0.5rem;
53
+ width: 100%;
54
+ padding-right: 2.8rem;
55
+ }
56
+
57
+ input:not(:disabled):focus {
58
+ outline: 0.25rem solid #2491ff;
59
+ outline-offset: 0;
26
60
  }
27
61
 
28
62
  ul {
29
63
  padding: 0;
30
64
  position: absolute;
31
65
  bottom: 0;
32
- left: 0;
33
- right: 0;
66
+ width: 100%;
34
67
  transform: translateY(100%);
35
68
  margin: 0;
36
69
  border: 1px solid rgb(92, 92, 92);
37
70
  max-height: var(--usa-combo-max-height);
38
71
  overflow-y: scroll;
39
- overflow-x: visible;
40
72
  z-index: 1001;
41
73
  }
42
74
 
@@ -60,10 +92,44 @@ declare global {
60
92
  outline: 0.25rem solid #2491ff;
61
93
  outline-offset: -0.25rem;
62
94
  }
95
+
96
+ .usa-combo-box-icon {
97
+ display: block;
98
+ position: absolute;
99
+ bottom: 0rem;
100
+ right: 0.5rem;
101
+ cursor: pointer;
102
+ }
103
+
104
+ .usa-combo-box-icon .line {
105
+ width: 1px;
106
+ top: 0.3rem;
107
+ bottom: 0.5rem;
108
+ left: -0.3rem;
109
+ position: absolute;
110
+ background-color: #c6cace;
111
+ }
63
112
  `,
64
113
  html`
65
- <slot name="input"></slot>
66
- <ul tabindex="-1" role="listbox"></ul>
114
+ <label>
115
+ <slot name="label"></slot>
116
+
117
+ <input
118
+ tabindex="0"
119
+ role="combobox"
120
+ autocomplete="off"
121
+ aria-controls="combo-box-list"
122
+ aria-expanded="false"
123
+ />
124
+
125
+ <div class="usa-combo-box-icon">
126
+ <div class="line"></div>
127
+
128
+ <usa-icon icon="expand_more"></usa-icon>
129
+ </div>
130
+ </label>
131
+
132
+ <ul tabindex="-1" role="listbox" id="combo-box-list"></ul>
67
133
  `,
68
134
  ],
69
135
  })
@@ -71,10 +137,43 @@ export class USAComboBoxElement
71
137
  extends HTMLElement
72
138
  implements ComboBoxContainer
73
139
  {
140
+ static formAssociated = true;
141
+
142
+ @attr()
143
+ accessor name = "";
144
+
145
+ @attr()
146
+ accessor required = false;
147
+
148
+ @attr()
149
+ accessor value = "";
150
+
151
+ @attr()
152
+ accessor placeholder = "";
153
+
74
154
  list = query("ul");
75
- input = query<HTMLInputElement>('[slot="input"]', this);
155
+ input = query("input");
76
156
  currentItemEl: Element | null = null;
157
+
77
158
  #allListItems = new Set<HTMLLIElement>();
159
+ #internals = this.attachInternals();
160
+
161
+ attributeChangedCallback() {
162
+ this.input({
163
+ name: this.name,
164
+ placeholder: this.placeholder,
165
+ required: this.required,
166
+ });
167
+ }
168
+
169
+ @attrChanged("value", "required")
170
+ onValueChanged() {
171
+ this.#syncFormState();
172
+ }
173
+
174
+ connectedCallback() {
175
+ this.#syncFormState();
176
+ }
78
177
 
79
178
  listItems() {
80
179
  return this.list().querySelectorAll("li");
@@ -94,6 +193,8 @@ export class USAComboBoxElement
94
193
 
95
194
  const list = this.list();
96
195
 
196
+ this.input({ ariaExpanded: "true" });
197
+
97
198
  const fragment = document.createDocumentFragment();
98
199
 
99
200
  for (const item of this.#allListItems) {
@@ -103,7 +204,7 @@ export class USAComboBoxElement
103
204
  list.replaceChildren(fragment);
104
205
  }
105
206
 
106
- @listen("input", (host) => host)
207
+ @listen("input")
107
208
  async onInput() {
108
209
  const input = this.input();
109
210
  const list = this.list();
@@ -131,6 +232,8 @@ export class USAComboBoxElement
131
232
  if (!this.contains(document.activeElement)) {
132
233
  this.list({ innerHTML: "" });
133
234
  this.currentItemEl = null;
235
+
236
+ this.input({ ariaExpanded: "false" });
134
237
  }
135
238
  }, 0);
136
239
  }
@@ -192,13 +295,11 @@ export class USAComboBoxElement
192
295
 
193
296
  const value = target.dataset.value || "";
194
297
 
195
- this.input({
196
- value,
197
- selectionStart: value.length,
198
- selectionEnd: value.length,
199
- }).focus();
298
+ this.input().focus();
200
299
 
201
300
  this.list({ innerHTML: "" });
301
+
302
+ this.value = value;
202
303
  }
203
304
 
204
305
  @listen("click")
@@ -207,16 +308,29 @@ export class USAComboBoxElement
207
308
  const value = e.target.getAttribute("value");
208
309
 
209
310
  if (value) {
210
- this.input({
211
- value,
212
- selectionStart: value.length,
213
- selectionEnd: value.length,
214
- }).focus();
311
+ this.input().focus();
215
312
 
216
313
  this.list({ innerHTML: "" });
217
314
 
218
315
  this.currentItemEl = null;
316
+
317
+ this.value = value;
219
318
  }
220
319
  }
221
320
  }
321
+
322
+ #syncFormState() {
323
+ const input = this.input({ value: this.value });
324
+
325
+ this.#internals.setValidity({});
326
+ this.#internals.setFormValue(this.value);
327
+
328
+ if (input.validationMessage) {
329
+ this.#internals.setValidity(
330
+ { customError: true },
331
+ input.validationMessage,
332
+ input,
333
+ );
334
+ }
335
+ }
222
336
  }
@@ -9,215 +9,207 @@ const meta = {
9
9
  tags: ["autodocs"],
10
10
  render() {
11
11
  return html`
12
- <usa-combo-box>
13
- <usa-input
14
- placeholder="Select a state"
15
- name="state"
16
- slot="input"
17
- autocomplete="off"
18
- detail="sfx">
19
- States
20
- <usa-icon slot="detail" icon="expand_more"></usa-icon>
21
- </usa-input>
12
+ <usa-combo-box placeholder="Select a state" name="state">
13
+ <span slot="label">States</span>
22
14
 
23
15
  <usa-combo-box-option value="Alabama">
24
- <img src="/assets/flags/alabama.svg" alt="Alabama" height="20" /> Alabama
16
+ <img loading="lazy" src="./flags/alabama.svg" alt="Alabama" height="20" /> Alabama
25
17
  </usa-combo-box-option>
26
18
 
27
19
  <usa-combo-box-option value="Alaska">
28
- <img src="/assets/flags/alaska.svg" alt="Alaska" height="20" /> Alaska
20
+ <img loading="lazy" src="./flags/alaska.svg" alt="Alaska" height="20" /> Alaska
29
21
  </usa-combo-box-option>
30
22
 
31
23
  <usa-combo-box-option value="Arizona">
32
- <img src="/assets/flags/arizona.svg" alt="Arizona" height="20" /> Arizona
24
+ <img loading="lazy" src="./flags/arizona.svg" alt="Arizona" height="20" /> Arizona
33
25
  </usa-combo-box-option>
34
26
 
35
27
  <usa-combo-box-option value="Arkansas">
36
- <img src="/assets/flags/arkansas.svg" alt="Arkansas" height="20" /> Arkansas
28
+ <img loading="lazy" src="./flags/arkansas.svg" alt="Arkansas" height="20" /> Arkansas
37
29
  </usa-combo-box-option>
38
30
 
39
31
  <usa-combo-box-option value="California">
40
- <img src="/assets/flags/california.svg" alt="California" height="20" /> California
32
+ <img loading="lazy" src="./flags/california.svg" alt="California" height="20" /> California
41
33
  </usa-combo-box-option>
42
34
 
43
35
  <usa-combo-box-option value="Colorado">
44
- <img src="/assets/flags/colorado.svg" alt="Colorado" height="20" /> Colorado
36
+ <img loading="lazy" src="./flags/colorado.svg" alt="Colorado" height="20" /> Colorado
45
37
  </usa-combo-box-option>
46
38
 
47
39
  <usa-combo-box-option value="Connecticut">
48
- <img src="/assets/flags/connecticut.svg" alt="Connecticut" height="20" /> Connecticut
40
+ <img loading="lazy" src="./flags/connecticut.svg" alt="Connecticut" height="20" /> Connecticut
49
41
  </usa-combo-box-option>
50
42
 
51
43
  <usa-combo-box-option value="Delaware">
52
- <img src="/assets/flags/delaware.svg" alt="Delaware" height="20" /> Delaware
44
+ <img loading="lazy" src="./flags/delaware.svg" alt="Delaware" height="20" /> Delaware
53
45
  </usa-combo-box-option>
54
46
 
55
47
  <usa-combo-box-option value="Florida">
56
- <img src="/assets/flags/florida.svg" alt="Florida" height="20" /> Florida
48
+ <img loading="lazy" src="./flags/florida.svg" alt="Florida" height="20" /> Florida
57
49
  </usa-combo-box-option>
58
50
 
59
51
  <usa-combo-box-option value="Georgia">
60
- <img src="/assets/flags/georgia.svg" alt="Georgia" height="20" /> Georgia
52
+ <img loading="lazy" src="./flags/georgia.svg" alt="Georgia" height="20" /> Georgia
61
53
  </usa-combo-box-option>
62
54
 
63
55
  <usa-combo-box-option value="Hawaii">
64
- <img src="/assets/flags/hawaii.svg" alt="Hawaii" height="20" /> Hawaii
56
+ <img loading="lazy" src="./flags/hawaii.svg" alt="Hawaii" height="20" /> Hawaii
65
57
  </usa-combo-box-option>
66
58
 
67
59
  <usa-combo-box-option value="Idaho">
68
- <img src="/assets/flags/idaho.svg" alt="Idaho" height="20" /> Idaho
60
+ <img loading="lazy" src="./flags/idaho.svg" alt="Idaho" height="20" /> Idaho
69
61
  </usa-combo-box-option>
70
62
 
71
63
  <usa-combo-box-option value="Illinois">
72
- <img src="/assets/flags/illinois.svg" alt="Illinois" height="20" /> Illinois
64
+ <img loading="lazy" src="./flags/illinois.svg" alt="Illinois" height="20" /> Illinois
73
65
  </usa-combo-box-option>
74
66
 
75
67
  <usa-combo-box-option value="Indiana">
76
- <img src="/assets/flags/indiana.svg" alt="Indiana" height="20" /> Indiana
68
+ <img loading="lazy" src="./flags/indiana.svg" alt="Indiana" height="20" /> Indiana
77
69
  </usa-combo-box-option>
78
70
 
79
71
  <usa-combo-box-option value="Iowa">
80
- <img src="/assets/flags/iowa.svg" alt="Iowa" height="20" /> Iowa
72
+ <img loading="lazy" src="./flags/iowa.svg" alt="Iowa" height="20" /> Iowa
81
73
  </usa-combo-box-option>
82
74
 
83
75
  <usa-combo-box-option value="Kansas">
84
- <img src="/assets/flags/kansas.svg" alt="Kansas" height="20" /> Kansas
76
+ <img loading="lazy" src="./flags/kansas.svg" alt="Kansas" height="20" /> Kansas
85
77
  </usa-combo-box-option>
86
78
 
87
79
  <usa-combo-box-option value="Kentucky">
88
- <img src="/assets/flags/kentucky.svg" alt="Kentucky" height="20" /> Kentucky
80
+ <img loading="lazy" src="./flags/kentucky.svg" alt="Kentucky" height="20" /> Kentucky
89
81
  </usa-combo-box-option>
90
82
 
91
83
  <usa-combo-box-option value="Louisiana">
92
- <img src="/assets/flags/louisiana.svg" alt="Louisiana" height="20" /> Louisiana
84
+ <img loading="lazy" src="./flags/louisiana.svg" alt="Louisiana" height="20" /> Louisiana
93
85
  </usa-combo-box-option>
94
86
 
95
87
  <usa-combo-box-option value="Maine">
96
- <img src="/assets/flags/maine.svg" alt="Maine" height="20" /> Maine
88
+ <img loading="lazy" src="./flags/maine.svg" alt="Maine" height="20" /> Maine
97
89
  </usa-combo-box-option>
98
90
 
99
91
  <usa-combo-box-option value="Maryland">
100
- <img src="/assets/flags/maryland.svg" alt="Maryland" height="20" /> Maryland
92
+ <img loading="lazy" src="./flags/maryland.svg" alt="Maryland" height="20" /> Maryland
101
93
  </usa-combo-box-option>
102
94
 
103
95
  <usa-combo-box-option value="Massachusetts">
104
- <img src="/assets/flags/massachusetts.svg" alt="Massachusetts" height="20" /> Massachusetts
96
+ <img loading="lazy" src="./flags/massachusetts.svg" alt="Massachusetts" height="20" /> Massachusetts
105
97
  </usa-combo-box-option>
106
98
 
107
99
  <usa-combo-box-option value="Michigan">
108
- <img src="/assets/flags/michigan.svg" alt="Michigan" height="20" /> Michigan
100
+ <img loading="lazy" src="./flags/michigan.svg" alt="Michigan" height="20" /> Michigan
109
101
  </usa-combo-box-option>
110
102
 
111
103
  <usa-combo-box-option value="Minnesota">
112
- <img src="/assets/flags/minnesota.svg" alt="Minnesota" height="20" /> Minnesota
104
+ <img loading="lazy" src="./flags/minnesota.svg" alt="Minnesota" height="20" /> Minnesota
113
105
  </usa-combo-box-option>
114
106
 
115
107
  <usa-combo-box-option value="Mississippi">
116
- <img src="/assets/flags/mississippi.svg" alt="Mississippi" height="20" /> Mississippi
108
+ <img loading="lazy" src="./flags/mississippi.svg" alt="Mississippi" height="20" /> Mississippi
117
109
  </usa-combo-box-option>
118
110
 
119
111
  <usa-combo-box-option value="Missouri">
120
- <img src="/assets/flags/missouri.svg" alt="Missouri" height="20" /> Missouri
112
+ <img loading="lazy" src="./flags/missouri.svg" alt="Missouri" height="20" /> Missouri
121
113
  </usa-combo-box-option>
122
114
 
123
115
  <usa-combo-box-option value="Montana">
124
- <img src="/assets/flags/montana.svg" alt="Montana" height="20" /> Montana
116
+ <img loading="lazy" src="./flags/montana.svg" alt="Montana" height="20" /> Montana
125
117
  </usa-combo-box-option>
126
118
 
127
119
  <usa-combo-box-option value="Nebraska">
128
- <img src="/assets/flags/nebraska.svg" alt="Nebraska" height="20" /> Nebraska
120
+ <img loading="lazy" src="./flags/nebraska.svg" alt="Nebraska" height="20" /> Nebraska
129
121
  </usa-combo-box-option>
130
122
 
131
123
  <usa-combo-box-option value="Nevada">
132
- <img src="/assets/flags/nevada.svg" alt="Nevada" height="20" /> Nevada
124
+ <img loading="lazy" src="./flags/nevada.svg" alt="Nevada" height="20" /> Nevada
133
125
  </usa-combo-box-option>
134
126
 
135
127
  <usa-combo-box-option value="New Hampshire">
136
- <img src="/assets/flags/new_hampshire.svg" alt="New Hampshire" height="20" /> New Hampshire
128
+ <img loading="lazy" src="./flags/new_hampshire.svg" alt="New Hampshire" height="20" /> New Hampshire
137
129
  </usa-combo-box-option>
138
130
 
139
131
  <usa-combo-box-option value="New Jersey">
140
- <img src="/assets/flags/new_jersey.svg" alt="New Jersey" height="20" /> New Jersey
132
+ <img loading="lazy" src="./flags/new_jersey.svg" alt="New Jersey" height="20" /> New Jersey
141
133
  </usa-combo-box-option>
142
134
 
143
135
  <usa-combo-box-option value="New Mexico">
144
- <img src="/assets/flags/new_mexico.svg" alt="New Mexico" height="20" /> New Mexico
136
+ <img loading="lazy" src="./flags/new_mexico.svg" alt="New Mexico" height="20" /> New Mexico
145
137
  </usa-combo-box-option>
146
138
 
147
139
  <usa-combo-box-option value="New York">
148
- <img src="/assets/flags/new_york.svg" alt="New York" height="20" /> New York
140
+ <img loading="lazy" src="./flags/new_york.svg" alt="New York" height="20" /> New York
149
141
  </usa-combo-box-option>
150
142
 
151
143
  <usa-combo-box-option value="North Carolina">
152
- <img src="/assets/flags/north_carolina.svg" alt="North Carolina" height="20" /> North Carolina
144
+ <img loading="lazy" src="./flags/north_carolina.svg" alt="North Carolina" height="20" /> North Carolina
153
145
  </usa-combo-box-option>
154
146
 
155
147
  <usa-combo-box-option value="North Dakota">
156
- <img src="/assets/flags/north_dakota.svg" alt="North Dakota" height="20" /> North Dakota
148
+ <img loading="lazy" src="./flags/north_dakota.svg" alt="North Dakota" height="20" /> North Dakota
157
149
  </usa-combo-box-option>
158
150
 
159
151
  <usa-combo-box-option value="Ohio">
160
- <img src="/assets/flags/ohio.svg" alt="Ohio" height="20" /> Ohio
152
+ <img loading="lazy" src="./flags/ohio.svg" alt="Ohio" height="20" /> Ohio
161
153
  </usa-combo-box-option>
162
154
 
163
155
  <usa-combo-box-option value="Oklahoma">
164
- <img src="/assets/flags/oklahoma.svg" alt="Oklahoma" height="20" /> Oklahoma
156
+ <img loading="lazy" src="./flags/oklahoma.svg" alt="Oklahoma" height="20" /> Oklahoma
165
157
  </usa-combo-box-option>
166
158
 
167
159
  <usa-combo-box-option value="Oregon">
168
- <img src="/assets/flags/oregon.svg" alt="Oregon" height="20" /> Oregon
160
+ <img loading="lazy" src="./flags/oregon.svg" alt="Oregon" height="20" /> Oregon
169
161
  </usa-combo-box-option>
170
162
 
171
163
  <usa-combo-box-option value="Pennsylvania">
172
- <img src="/assets/flags/pennsylvania.svg" alt="Pennsylvania" height="20" /> Pennsylvania
164
+ <img loading="lazy" src="./flags/pennsylvania.svg" alt="Pennsylvania" height="20" /> Pennsylvania
173
165
  </usa-combo-box-option>
174
166
 
175
167
  <usa-combo-box-option value="Rhode Island">
176
- <img src="/assets/flags/rhode_island.svg" alt="Rhode Island" height="20" /> Rhode Island
168
+ <img loading="lazy" src="./flags/rhode_island.svg" alt="Rhode Island" height="20" /> Rhode Island
177
169
  </usa-combo-box-option>
178
170
 
179
171
  <usa-combo-box-option value="South Carolina">
180
- <img src="/assets/flags/south_carolina.svg" alt="South Carolina" height="20" /> South Carolina
172
+ <img loading="lazy" src="./flags/south_carolina.svg" alt="South Carolina" height="20" /> South Carolina
181
173
  </usa-combo-box-option>
182
174
 
183
175
  <usa-combo-box-option value="South Dakota">
184
- <img src="/assets/flags/south_dakota.svg" alt="South Dakota" height="20" /> South Dakota
176
+ <img loading="lazy" src="./flags/south_dakota.svg" alt="South Dakota" height="20" /> South Dakota
185
177
  </usa-combo-box-option>
186
178
 
187
179
  <usa-combo-box-option value="Tennessee">
188
- <img src="/assets/flags/tennessee.svg" alt="Tennessee" height="20" /> Tennessee
180
+ <img loading="lazy" src="./flags/tennessee.svg" alt="Tennessee" height="20" /> Tennessee
189
181
  </usa-combo-box-option>
190
182
 
191
183
  <usa-combo-box-option value="Texas">
192
- <img src="/assets/flags/texas.svg" alt="Texas" height="20" /> Texas
184
+ <img loading="lazy" src="./flags/texas.svg" alt="Texas" height="20" /> Texas
193
185
  </usa-combo-box-option>
194
186
 
195
187
  <usa-combo-box-option value="Utah">
196
- <img src="/assets/flags/utah.svg" alt="Utah" height="20" /> Utah
188
+ <img loading="lazy" src="./flags/utah.svg" alt="Utah" height="20" /> Utah
197
189
  </usa-combo-box-option>
198
190
 
199
191
  <usa-combo-box-option value="Vermont">
200
- <img src="/assets/flags/vermont.svg" alt="Vermont" height="20" /> Vermont
192
+ <img loading="lazy" src="./flags/vermont.svg" alt="Vermont" height="20" /> Vermont
201
193
  </usa-combo-box-option>
202
194
 
203
195
  <usa-combo-box-option value="Virginia">
204
- <img src="/assets/flags/virginia.svg" alt="Virginia" height="20" /> Virginia
196
+ <img loading="lazy" src="./flags/virginia.svg" alt="Virginia" height="20" /> Virginia
205
197
  </usa-combo-box-option>
206
198
 
207
199
  <usa-combo-box-option value="Washington">
208
- <img src="/assets/flags/washington.svg" alt="Washington" height="20" /> Washington
200
+ <img loading="lazy" src="./flags/washington.svg" alt="Washington" height="20" /> Washington
209
201
  </usa-combo-box-option>
210
202
 
211
203
  <usa-combo-box-option value="West Virginia">
212
- <img src="/assets/flags/west_virginia.svg" alt="West Virginia" height="20" /> West Virginia
204
+ <img loading="lazy" src="./flags/west_virginia.svg" alt="West Virginia" height="20" /> West Virginia
213
205
  </usa-combo-box-option>
214
206
 
215
207
  <usa-combo-box-option value="Wisconsin">
216
- <img src="/assets/flags/wisconsin.svg" alt="Wisconsin" height="20" /> Wisconsin
208
+ <img loading="lazy" src="./flags/wisconsin.svg" alt="Wisconsin" height="20" /> Wisconsin
217
209
  </usa-combo-box-option>
218
210
 
219
211
  <usa-combo-box-option value="Wyoming">
220
- <img src="/assets/flags/wyoming.svg" alt="Wyoming" height="20" /> Wyoming
212
+ <img loading="lazy" src="./flags/wyoming.svg" alt="Wyoming" height="20" /> Wyoming
221
213
  </usa-combo-box-option>
222
214
  </usa-combo-box>
223
215
  `;